/*<script type="text/javascript" src="/path/validate.js"></script>
<form method="post" onsubmit="return autocheck(this)">
...
<input type="text" name="sent" onblur="fixRecentDate(this,2000)"/>
<input type="text" name="when" onblur="fixTime(this)"/>
<input type="text" name="phone" onblur="requireValue(this)*fixPhone(this,'509')"/>
<input type="text" name="money" onblur="fixMoney(this)"/>
...
</form>*/
function hide(arg)
{
 if(arg!='')
 {
	 var elements=new Array();
     elements=arg.split(',');
	 //alert('Hide->'+elements);
     for (i=0;i<elements.length;i++)
     { 
	     document.getElementById(eval("elements[i]")).style.display='none'; 
	 }
 }
}
 
function show(arg)
{
 if(arg!='')
 {
	 var elements=new Array();
     elements=arg.split(',');
	 //alert('Show->'+elements);
	 for (i=0;i<elements.length;i++)
     {
         document.getElementById(eval("elements[i]")).style.display='inline';
     }
 }
}

function formFocus(frm)
{ // convenient way to start the form onLoad
	if(!document.forms.length) return;
	var els= ( frm || document.forms[0] ).elements;
	for(var i= 0; i < els.length; i++)
		if(els[i].type != 'hidden') { try { els[i].focus(); return; } catch(e){} }
}

function formChanged(frm)
{ // determine whether any form fields have changed
	if(!document.forms.length) return;
	var els= ( frm || document.forms[0] ).elements;
	for(var i= 0; i < els.length; i++)
		switch(els[i].type)
		{
			case 'text': 
			case 'textarea': 
			case 'password': 
			case 'hidden':
			case 'file':
				if(els[i].defaultValue!=els[i].value)
				{ error= 'The '+fieldname(els[i])+' field has changed.'; return true; } 
				break;
			case 'checkbox':
				if(els[i].defaultChecked!=els[i].checked)
				{ error= 'The '+fieldname(els[i])+' checkbox has changed.'; return true; }
				break;
			case 'select-one':
				for(var j= 1; j < els[i].options.length; j++)
					if(els[i].options[j].defaultSelected!=els[i].options[j].selected)
					{ error= 'The '+fieldname(els[i])+' selection has changed.'; return true; }
				break;
			case 'select-multiple':
				for(var j= 0; j < els[i].options.length; j++)
					if(els[i].options[j].defaultSelected!=els[i].options[j].selected)
					{ error= 'The '+fieldname(els[i])+' selections have changed.'; return true; }
				break;
			case 'radio':
				if(els[i].length)
					for(var j= 0; j < els[i].length; j++)
						if(els[i][j].defaultChecked!=els[i][j].checked)
						{ error= 'The '+fieldname(els[i])+' choice has changed.'; return true; }
				break;
		}
	return false;
}

function fieldname(fld)
{ // get the field label text or name
	if(fld.id && document.getElementsByTagName)
	{
		for(var i= 0, lbl= document.getElementsByTagName('LABEL'); i < lbl.length; i++)
			if(lbl[i].htmlFor==fld.id) return lbl[i].nodeValue||lbl[i].textContent||lbl[i].innerText;
		for(var i= 0, lbl= document.getElementsByTagName('label'); i < lbl.length; i++)
			if(lbl[i].htmlFor==fld.id) return lbl[i].nodeValue||lbl[i].textContent||lbl[i].innerText;
	}
	return fld.name||fld.type;
}

/************************************************Function to trim the leading spaces*************************************************************/
 
function Trim(TRIM_VALUE){
if(TRIM_VALUE.length < 1){
return"";
}
TRIM_VALUE = RTrim(TRIM_VALUE);
TRIM_VALUE = LTrim(TRIM_VALUE);
if(TRIM_VALUE==""){
return "";
}
else{
return TRIM_VALUE;
}
} //End Function
 
function RTrim(VALUE){
var w_space = String.fromCharCode(32);
var v_length = VALUE.length;
var strTemp = "";
if(v_length < 0){
return"";
}
var iTemp = v_length -1;
 
while(iTemp > -1){
if(VALUE.charAt(iTemp) == w_space){
}
else{
strTemp = VALUE.substring(0,iTemp +1);
break;
}
iTemp = iTemp-1;
 
} //End While
return strTemp;
 
} //End Function
 
function LTrim(VALUE){
var w_space = String.fromCharCode(32);
if(v_length < 1){
return"";
}
var v_length = VALUE.length;
var strTemp = "";
 
var iTemp = 0;
 
while(iTemp < v_length){
if(VALUE.charAt(iTemp) == w_space){
}
else{
strTemp = VALUE.substring(iTemp,v_length);
break;
}
iTemp = iTemp + 1;
} //End While
return strTemp;
} //End Function


function requireValue(id, str)
{ // disallow a blank field
	fld = window.document.getElementById(id);
	if(fld.disabled) return true;
	if(!(fld.offsetWidth == undefined || fld.offsetWidth > 0)) return true;
	var val = Trim(fld.value);
	if(!val.length)
	{ error= str; return false; }
	return true;
}

function requireChecked(id, str)
{ // require a checkbox to be checked
	
	fld= window.document.getElementById(id);
	
	if(fld.disabled) return true;
	
	if(!fld.checked)
	{ error= 'The '+str+' checkbox must be checked.'; return false; }
	return true;
}



function calculateChecked(name, maxnum, minnum, str)
{ // require a checkbox to be checked
	fld = document.getElementsByName(name);
	if(fld.disabled) return true;
	var total = 0;
	for(i = 0; i < fld.length; i++)
	{
		if(fld[i].checked)
		{
			total++;
		}
	}
	if(total > maxnum)
	{
		error= 'My friends describe me#Please only choose 5 options';
		return false;
	}
	if(total < minnum)
	{
		error= 'Please select at least one option to describe yourself!';
		return false;
	}
	return true;
}

function requireConfirmation(id1,id,str)
{ // require fields to match

	fld= window.document.getElementById(id1);
	confirmfld= window.document.getElementById(id);
	if(fld.disabled) return true;
	if(fld.value != confirmfld.value)
	{ error= str; return false; }
	return true;
}


function requireRadio(radios)
{ // require at least one radio in this group to be checked
	if(!radios.length) return true; // invalid parameter
	var visible= false, enabled= false;
	for(var i= 0; i < radios.length; i++)
	{
		if(!enabled) enabled= !radios[i].disabled;
		if(radios[i].checked) return true;
		else if(typeof(radios[i].offsetWidth) == 'undefined' || radios[i].offsetWidth > 0) visible= true;
	}
	if(!visible||!enabled) return true; // no visible/enabled options in this group
	error = 'You must select one of the '+radios[0].name+' Option.';
	return false;
}

function requireLength(id,min,max,str)
{ // set minimum and/or maximum field lengths

	fld= window.document.getElementById(id);
	if(!fld.value.length||fld.disabled) return true; // blank fields are the domain of requireValue 
	var len= fld.value.length;
	if(min > -1 && len < min)
	{ error= 'The '+str+' must be at least '+min+' characters long.'; return false; }
	if(max > -1 && len > max)
	{ error= 'The '+str+' must not be greater than '+max+' characters long.'; return false; }
	return true;
}

function requireLang(lang1, lang2, lang3, str)
{
	lan1 = window.document.getElementById(lang1);
	lan2 = window.document.getElementById(lang2);
	lan3 = window.document.getElementById(lang3);
	
	if((lan1.checked == false) && (lan2.checked == false) && (lan3.checked == false))
	{ error= 'Please Select Read, Write or Speak option for ' + str + "."; return false; }
	return true;
}

function dependants(enabled,elements)
{ // convenience function to enable/disable dependant fields, passed in as an array 
	if(!elements.length) return true;
	for(var i= 0; i < elements.length; i++)
		elements[i].disabled= !enabled;
}

function allowChars(fld,chars)
{ // provide a string of acceptable chars for a field
	if(fld.disabled) return true;
	for(var i= 0; i < fld.value.length; i++)
	{
		if(chars.indexOf(fld.value.charAt(i)) == -1)
			if(fld.value.charAt(i) == " ")
				{ error= 'The '+fieldname(fld)+' field may not contain spaces.'; return false; }
			else
				{ error= 'The '+fieldname(fld)+' field may not contain "'+fld.value.charAt(i)+'" characters.'; return false; }
	}
	return true;
}

function disallowChars(fld,chars)
{ // provide a string of unacceptable chars for a field
	if(fld.disabled) return true;
	for(var i= 0; i < fld.value.length; i++)
	{
		if(chars.indexOf(fld.value.charAt(i)) != -1)
		{ error= 'The '+fieldname(fld)+' field may not contain "'+fld.value.charAt(i)+'" characters.'; return false; }
	}
	return true;
}

/* image check */
function isValidImage(id)
{
	//alert(id);
	var imgpath = document.getElementById(id).value;
	
	if(imgpath != "")
	{	
		var arr1 = new Array;	
		arr1 = imgpath.split("\\");	
		var len = arr1.length;	
		var img1 = arr1[len-1];	
		var filext = img1.substring(img1.lastIndexOf(".")+1);
	// Checking Extension
		if(filext == "jpg" || filext == "jpeg" || filext == "JPG" || filext == "JPEG" || filext == "gif" || filext == "bmp" || filext == "BMP" || filext == "GIF" || filext == "PNG" || filext == "png")
		{
			return true;	
		}
		else
		{
			return false;	
		}

	}
}



function checkEmail(id, str)
{ // simple email check

	fld= window.document.getElementById(id);
	
	if(!fld.value.length || fld.disabled) return true; // blank fields are the domain of requireValue 
	var phony= /@(\w+\.)*example\.(com|net|org)$/i;
	if(phony.test(fld.value))
	{ error= 'Please Enter your E-Mail Address in the '+str+' field.'; return false; }
	var emailfmt= /^\w+([.-]\w+)*@\w+([.-]\w+)*\.\w{2,8}$/;
	if(!emailfmt.test(fld.value))
	{ error= 'The '+str+' must contain a valid E-Mail Address.'; return false; }
	return true;
}

function checkIntRange(fld,minVal,maxVal,sep)
{
	if(!fixInt(fld)) return false;
	var val= parseInt(fld.value);
	if(val < minVal) { error= 'The '+fieldname(fld)+' field must be no less than '+minVal+'.'; return false; }
	if(val > maxVal) { error= 'The '+fieldname(fld)+' field must be no greater than than '+maxVal+'.'; return false; }
	return true;
}

function checkFloatRange(fld,minVal,maxVal,sep)
{
	if(!fixFloat(fld)) return false;
	var val= parseFloat(fld.value);
	if(val < minVal) { error= 'The '+fieldname(fld)+' field must be no less than '+minVal+'.'; return false; }
	if(val > maxVal) { error= 'The '+fieldname(fld)+' field must be no greater than than '+maxVal+'.'; return false; }
	return true;
}

function fixInt(id,sep,str)
{ // integer check/complainer 

	fld = window.document.getElementById(id);
	if(!fld.value.length||fld.disabled) return true; // blank fields are the domain of requireValue 
	var val= fld.value;
	if(typeof(sep)!='undefined') val= val.replace(new RegExp(sep,'g'),'');
	//val= parseInt(val);
	if(isNaN(val))
	{ // parse error 
		error = str + ' Must Contain Numeric Values Only.';
		return false;
	}
	fld.value= val;
	return true;
}

function fixAlpha(id,sep,str)
{ // integer check/complainer
	fld = window.document.getElementById(id);
	var val= fld.value;

	if(!val.length||fld.disabled) return true; // blank fields are the domain of requireValue
	if(!(fld.offsetWidth == undefined || fld.offsetWidth > 0)) return true;
	var fieldContainsANumber = false;
	var temp;
	if (val.length > 0)
	{
		for (i=0; i < val.length; i++)
		{
			temp = val.charAt(i);
            if(/[a-zA-Z]/.test(temp))
			{
			}
			else
			{
				fieldContainsANumber = true;
			}
		}
	}
	if(fieldContainsANumber)
	{
		error= str + ' Must Contain Alphabetic Values Only.';
		return false;
	}
	return true;
}

function fixAlphaNum(id,str)
{ // integer check/complainer
	fld = window.document.getElementById(id);
	var val= fld.value;

	if(!val.length||fld.disabled) return true; // blank fields are the domain of requireValue
	if(!(fld.offsetWidth == undefined || fld.offsetWidth > 0)) return true;
	var fieldContainsANumber = false;
	var temp;
	if (val.length > 0)
	{
		for (i=0; i < val.length; i++)
		{
			temp = val.charAt(i);
            if(/[0-9a-zA-Z]/.test(temp))
			{
			}
			else
			{
				fieldContainsANumber = true;
			}
		}
	}
	if(fieldContainsANumber)
	{
		error= str + ' Must Contain Alphanumeric Values Only.';
		return false;
	}
	return true;
}

function passwordChanged(password, id)
{
	var strength = document.getElementById(id);
	var strongRegex = new RegExp("^(?=.{8,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\W).*$", "g");
	var mediumRegex = new RegExp("^(?=.{7,})(((?=.*[A-Z])(?=.*[a-z]))|((?=.*[A-Z])(?=.*[0-9]))|((?=.*[a-z])(?=.*[0-9]))).*$", "g");
	var enoughRegex = new RegExp("(?=.{6,}).*", "g");

	var pwd = document.getElementById(password);
	if (pwd.value.length==0)
	{
		strength.innerHTML = '';
	}
	else if (false == enoughRegex.test(pwd.value))
	{
		strength.innerHTML = 'Too Short';
	}
	else if (mediumRegex.test(pwd.value))
	{
		strength.innerHTML = '<span style="color:green">Strong!</span>';
	}
	else if (strongRegex.test(pwd.value))
	{
		strength.innerHTML = '<span style="color:green">Strong!</span>';
	}
	else
	{
		strength.innerHTML = '<span style="color:red">Weak!</span>';
	}
}

function fixFloat(fld,sep)
{ // decimal number check/complainer 
	if(!fld.value.length||fld.disabled) return true; // blank fields are the domain of requireValue 
	var val= fld.value;
	if(typeof(sep)!='undefined') val= val.replace(new RegExp(sep,'g'),'');
	val= parseFloat(fld.value);
	if(isNaN(val))
	{ // parse error 
		error= 'The '+fieldname(fld)+' field must contain a number.';
		return false;
	}
	fld.value= val;
	return true;
}

function fixFixed(fld,dec,sep)
{ // fixed decimal fields 
	if(!fld.value.length||fld.disabled) return true; // blank fields are the domain of requireValue 
	var val= fld.value;
	if(typeof(sep)!='undefined') val= val.replace(new RegExp(sep,'g'),'');
	val= parseFloat(fld.value);
	if(isNaN(val))
	{ // parse error 
		error= 'The '+fieldname(fld)+' field must contain a number.';
		return false;
	}
	var sign= ( val < 0 ? '-': '' );
	val= Number(Math.round(Math.abs(val)*Math.pow(10,dec))).toString();
	while(val.length < dec) val= '0'+val;
	var len= val.length;
	val= sign + ( len == dec ? '0' : val.substring(0,len-dec) ) + '.' + val.substring(len-dec,len+1);
	fld.value= val;
	return true;
}
// Age Calculater
function displayage(yr, mon, day)
{
	var one_day=1000*60*60*24
	var one_month=1000*60*60*24*30
	var one_year=1000*60*60*24*30*12

	today=new Date()
	var pastdate=new Date(yr, mon-1, day)

	var countunit="years"
	var decimals=0
	var rounding="rounddown"

	finalunit=(countunit=="days")? one_day : (countunit=="months")? one_month : one_year
	decimals=(decimals<=0)? 1 : decimals*10

	yearspast=today.getFullYear()-yr-1
	tail=(today.getMonth()>mon-1 || today.getMonth()==mon-1 && today.getDate()>=day)? 1 : 0
	pastdate.setFullYear(today.getFullYear())
	pastdate2=new Date(today.getFullYear()-1, mon-1, day)
	//tail=(tail==1)? tail+Math.floor((today.getTime()-pastdate.getTime())/(finalunit)*decimals)/decimals : Math.floor((today.getTime()-pastdate2.getTime())/(finalunit)*decimals)/decimals
	var temp = yearspast+tail;
	return temp;
}

function fixDate(id,id2,str)
{ // tenacious date correction

	fld= window.document.getElementById(id);
	fld2= window.document.getElementById(id2);
	
	if(!fld.value.length||fld.disabled) return true; // blank fields are the domain of requireValue 
	
	var	no_of_days = new Array(12);

	no_of_days[01] = 31;
	no_of_days[02] = 28;
	no_of_days[03] = 31;
	no_of_days[04] = 30;
	no_of_days[05] = 31;
	no_of_days[06] = 30;
	no_of_days[07] = 31;
	no_of_days[08] = 31;
	no_of_days[09] = 30;
	no_of_days[10] = 31;
	no_of_days[11] = 30;
	no_of_days[12] = 31;
	
	var date_b = fld.value;
	var month_b = parseInt(fld2.value);
	if(date_b > no_of_days[month_b])
	{
		error = str;
		return false;
	}
	return true;
}

function requirePercentage(id1, id2, str)
{
	fld = window.document.getElementById(id1);
	fld1 = window.document.getElementById(id2);

	if(fld1.value == "002")
	{
		if(fld.value > 100 )
		{
			error = "Marks Obtained should be less than 100 in " + str;
			fld.focus();
			return false;
		}
		else if(isNaN(fld.value))
		{
			error= 'Marks Obtained in '+ str +' Must Contain Numeric Values Only.';
			fld.focus();
			return false;
		}
	}
	else if(fld1.value == "003")
	{
		if(fld.value.length > 1 )
		{
			error= 'The Marks obtained in Grade must not be greater than 1 Character.';
			fld.focus();
			return false;
		}
		else if(isNaN(fld.value) == false)
		{
			error= 'Marks Obtained in Grade Must Contain Alphabetic Values Only.';
			fld.focus();
			return false;
		}
	}
	return true;
}

//Function to Stop Future date in the calender
function fixTime(id,str) 
{ // tenacious time correction 

	fld = window.document.getElementById(id);

	if(!fld.value.length||fld.disabled) return true; // blank fields are the domain of requireValue 
	var eff_date1 = fld.value;
	var eff_date = eff_date1.substr(5,2)+'/'+eff_date1.substr(8,2)+'/'+eff_date1.substr(0,4);   
	var now = new Date(eff_date);
	var today = new Date();
	if(now > today)
	{
		error = str;
		return false;
	}
}

function fixTime24(fld) 
{ // tenacious time correction 
	if(!fld.value.length||fld.disabled) return true; // blank fields are the domain of requireValue 
	var hour= 0; 
	var mins= 0;
	val= fld.value;
	var dt= new Date('1/1/2000 ' + val);
	if(('9'+val) == parseInt('9'+val))
	{ hour= val; }
	else if(dt.valueOf())
	{ hour= dt.getHours(); mins= dt.getMinutes(); }
	else
	{
		val= val.replace(/\D+/g,':');
		hour= parseInt(val);
		mins= parseInt(val.substring(val.indexOf(':')+1,20));
		if(isNaN(hour)) hour= 0;
		if(isNaN(mins)) mins= 0;
		if(val.indexOf('pm') > -1) hour+= 12;
	}
	hour%= 24;
	mins%= 60;
	if(mins < 10) mins= '0' + mins;
	fld.value= hour + ':' + mins;
	return true;
}

function nameContains(name,str)
{ // Check for nontrivial inclusion 
	// OK, *some* trivial cases must be handled...
	if(name == str || name.toLowerCase() == str.toLowerCase()) return true;
	var nlen= name.length;
	var slen= str.length;
	var endat= nlen - slen;
	// too small to fit?
	if(nlen > str) return false;
	if(name.toLowerCase() == name || name.toUpperCase() == name)
	{ // all lower/upper case name? underscores separate
		if(name.indexOf('_') == -1) return false;
		str= str.toLowerCase();
		if( name.indexOf(str+'_') == 0 ||
			name.indexOf('_'+str+'_') > -1 ||
			name.substring(endat-1,nlen+1) == ('_'+str) )
			return true;
	}
	else
	{ // proper case name? uppercase starts new words 
		var sep= name.substring(slen,slen+1);
		if( name.indexOf(str) == 0 && sep == sep.toUpperCase() ) return true;
		if( name.indexOf(str.toLowerCase()) == 0 && sep == sep.toUpperCase() ) return true;
		var sep= name.substring(endat-1,endat);
		if( name.substring(endat,nlen+1) == str ) return true;
		for(var index= name.indexOf(str); index > -1; index= name.indexOf(str,index+1))
		{ // for each occurence of the word, is it followed by a non-lowercase char? 
			endat= index+slen;
			sep= name.substring(endat,endat+1);
			if(sep == sep.toUpperCase()) return true;
		}
	}
	return false;
}

function autocheckByName(frm) 
{ 
// uses names of form elements to determine type 
	for(var index= 0; index < frm.elements.length; index++)
	{
		var el= frm.elements[index];
		if(!el.type) continue;
		if(el.type == 'text' || el.type == 'password')
		{ // text fields 
			if(( el.name.substring(0,1) == el.name.substring(0,1).toUpperCase() || 
				nameContains(el.name,'Required')) && el.value.length == 0)
			{ alert('The '+fieldname(el)+' field cannot be left blank.'); el.focus(); return false; }
			if(nameContains(el.name,'Date') && !fixDate(el))
			{ alert(error); el.focus(); return false; }
			if(nameContains(el.name,'Time24') && !fixTime24(el))
			{ alert(error); el.focus(); return false; }
			if(nameContains(el.name,'Time') && !fixTime(el))
			{ alert(error); el.focus(); return false; }
			if(nameContains(el.name,'SSN') && !fixSSN(el))
			{ alert(error); el.focus(); return false; }
			if(nameContains(el.name,'CC') && !fixCreditCard(el))
			{ alert(error); el.focus(); return false; }
			if(nameContains(el.name,'Email') && !checkEmail(el))
			{ alert(error); el.focus(); return false; }
			if( ( nameContains(el.name,'Phone') ||
				nameContains(el.name,'Fax') || 
				nameContains(el.name,'Pager') ) &&
				!fixPhone(el))
			{ alert(error); el.focus(); return false; }
		}
		// handle required select and select-multiple 
		else if(el.type.substring(0,3) == 'sel' && 
			(el.name.substring(0,1) == el.name.substring(0,1).toUpperCase() || 
			nameContains(el.name,'Required')) && el.selectedIndex == -1)
		{ alert(error); el.focus(); return false; }
		// handle required checkbox
		else if(el.type == 'checkbox' && 
			(el.name.substring(0,1) == el.name.substring(0,1).toUpperCase() || 
			nameContains(el.name,'Required')) && !requireChecked(el))
		{ alert(error); el.focus(); return false; }
		else if(el.type == 'radio' && !requireRadio(frm[el.name]))
		{ frm.elements[index].focus(); jAlert(error,'Alert Box');  return false; }
	}
	for(var index= 0; index < frm.elements.length; index++)
		if(frm.elements[index].type == 'submit') frm.elements[index].disabled= false;
	return true;
}

function isMemberOf(elem,classname)
{ // checks to see if elem is a member of the (style) class 
	// trivial cases first: no membership or simple equality
	if(!elem.className)
		return false
	else if(elem.className == classname)
		return true;
	else if(elem.className.indexOf(' ') > -1)
	{ // multiple class names; use split, if avail 
		if(parseInt(navigator.appVersion) >= 4)
		{
			var names= elem.className.split(' ');
			for(var index= 0; index < names.length; index++)
				if(names[index] == classname)
					return true;
		}
		// older browsers can fake it 
		// WARNING: "fine" can be found in "oldRefined"
		else if(elem.className.indexOf(classname) > -1)
			return true;
	}
	return false;
}

function checkClass(el)
{ // validate the field, based on class membership
	if(el.type == 'text' || el.type == 'password')
	{ // text fields 
		if(isMemberOf(el,'required') && !requireValue(el)) return false;
		if(isMemberOf(el,'date') && !fixDate(el)) return false;
		if(isMemberOf(el,'time') && !fixTime(el)) return false;
		if(isMemberOf(el,'time24') && !fixTime24(el)) return false;
		if(isMemberOf(el,'ssn') && !fixSSN(el)) return false;
		if(isMemberOf(el,'cc') && !fixCreditCard(el)) return false;
		if(isMemberOf(el,'phone') && !fixPhone(el)) return false;
		if(isMemberOf(el,'money') && !fixMoney(el)) return false;
		if(isMemberOf(el,'int') && !fixInt(el)) return false;
		if(isMemberOf(el,'float') && !fixFloat(el)) return false;
		if(isMemberOf(el,'email') && !checkEmail(el)) return false;		
	} // handle required select and select-multiple 
	else if(el.type == 'checkbox' && 
		isMemberOf(el,'required') && !requireChecked(el)) return false;
	else if(el.type.substring(0,3) == 'sel' && 
		isMemberOf(el,'required') && el.selectedIndex == -1) return false;
	return true;
}

function autocheckByClass(frm) 
{ // uses the CSS class of form elements to determine type 
	for(var index= 0; index < frm.elements.length; index++)
	{
		var el= frm.elements[index];
		if(!el.type) continue;
		if(el.type == 'radio' && !requireRadio(frm[el.name]))
		{ alert(error); frm.elements[index].focus(); return false; }
		else if(!checkClass(frm.elements[index])) 
		{ alert(error); frm.elements[index].focus(); return false; }
	}
	for(var index= 0; index < frm.elements.length; index++)
		if(frm.elements[index].type == 'submit') frm.elements[index].disabled= false;
	return true;
}

function autocheckByBlur(id)
{ // uses the onBlur handler of form elements to check value 

	frm = window.document.getElementById(id);
	error= '';
	for(var index= 0; index < frm.elements.length; index++)
	{
		var el= frm.elements[index];
		if(!el.type) continue;
		if(el.type == 'radio' && !requireRadio(frm[el.name]))
		{ alert(error);
			var enabled = el.enabled;
			if(frm.elements[index] == enabled)
			{
				frm.elements[index].focus();
			}
			else
			{frm.elements[index+1].focus();}
			return false;
		}
		else if(el.type != 'hidden' && el.name && el.onblur)
		{
			el.onblur();
			if(error) {
				//el.focus(); 			
			var errorArr=error.split('#');
			if(errorArr.length>1)
			{
				jAlert(errorArr[1],errorArr[0]);  
			}
			else
				jAlert(error,'Alert Box');  
			
			return false; }
		}
	}
	for(var index= 0; index < frm.elements.length; index++)
		if(frm.elements[index].type == 'submit') frm.elements[index].disabled= false;
	return true;
}

function canCheckByBlur(id)
{ // determines whether programmatic invocation of form element onblur is available

	frm = window.document.getElementById(id);
	for(var index= 0; index < frm.elements.length; index++)
	{
		var el= frm.elements[index];
		if(!el.type) continue;
		if(el.type != 'hidden' && el.name && typeof(el.onblur)=='function') return true;
	}
	return false;
}

function autocheck(frm, errorId)
{ // uses the best available method to check form values 
	var bchar= navigator.appName.substring(0,1);
	
	if(isMemberOf(frm,'autocheck'))
	{ 
	return autocheckByClass(frm); }
	else if(canCheckByBlur(frm))
	{ 
	return autocheckByBlur(frm); }
	else
	{ 
	return autocheckByName(frm); }
}
/*********************************************************************/
function make_blank(id, str, cssName)
{
	fld = window.document.getElementById(id);
	if(fld.value == str)
	{
		fld.value='';
		fld.setAttribute("class", cssName);
		fld.focus();
	}
	else if(fld.value == '')
	{
		cssName = cssName+'Head';
		fld.value = str;
		fld.setAttribute("class", cssName);
	}
}
function make_blank_this(id, str)
{
	fld = window.document.getElementById(id);
	if(fld.value == str)
	{
		fld.value='';
		fld.focus();
	}
	else if(fld.value == '')
	{
		fld.value = str;
	}
}
