function isEmailAddr(email)
{
  var result = false;
  var theStr = new String(email);
  var index = theStr.indexOf("@");
  if (index > 0)
  {
    var pindex = theStr.indexOf(".",index);
    if ((pindex > index+1) && (theStr.length > pindex+1))
	result = true;
  }
  return result;
}

function validRequired(formField,fieldLabel)
{
	var result = true;
	var formElementID = document.getElementById(formField);
	
	if (formElementID.value == "") {
		alert('Please enter a value for "' + fieldLabel +'".');
		formElementID.focus();
		result = false;
		formElementID.className='FormError';
	}
	else {
		formElementID.className='';
	}
	return result;
}

function isAgreementChecked(formField,fieldLabel)
{
	var result = true;
	var formElementID = document.getElementById(formField);
	
	if (formElementID.checked == false) {
		alert('You must agree to "' + fieldLabel +'".');
		formElementID.focus();
		result = false;
		formElementID.className='FormError';
	}
	else {
		formElementID.className='';
	}
	return result;
}

function inValidCharSet(str,charset)
{
	var result = true;
	// Note: doesn't use regular expressions to avoid early Mac browser bugs	
	for (var i=0;i<str.length;i++)
		if (charset.indexOf(str.substr(i,1))<0)
		{
			result = false;
			break;
		}	
	return result;
}

function allDigits(str)
{
	return inValidCharSet(str,"0123456789");
}

function validEmail(formField,fieldLabel,required)
{
	var result = true;
	var formElementID = document.getElementById(formField);
	
	if (required && !validRequired(formField,fieldLabel))
		result = false;

	if (result && ((formElementID.value.length < 3) || !isEmailAddr(formElementID.value)) ) {
		alert("Please enter an e-mail address in the form: yourname@yourdomain.com");
		formElementID.focus();
		result = false;
		formElementID.className='FormError';
	}
	else {
		formElementID.className='';
	}
  return result;

}

function validNumCharacters(formField,fieldLabel,minChar,maxChar) 
{
	var result = true;
	var formElementID = document.getElementById(formField);

	if (formElementID.value.length < minChar) {
		alert('Help! Please re-enter a value for "' + fieldLabel +'". It must have "' + minChar +'" characters or more.');
		formElementID.focus();
		result = false;
		formElementID.className='FormError';
	}
	else {
		formElementID.className='';
	}
	
	if (formElementID.value.length > maxChar) {
		alert('Help! Please re-enter a value for "' + fieldLabel +'". It must have "' + maxChar +'" characters or less.');
		formElementID.focus();
		result = false;
		formElementID.className='FormError';
	}
	else {
		formElementID.className='';
	}

return result;
}

function validNum(formField,fieldLabel,required)
{
	var result = true;
	
	if (required && !validRequired(formField,fieldLabel))
		result = false;
		
	var ValidChars = "0123456789.";   
	var Char;
 
	for (i = 0; i < formField.value.length && result == true; i++) { 
		Char = formField.value.charAt(i); 
		if (ValidChars.indexOf(Char) == -1) {
	  		alert('Please enter a number for the "' + fieldLabel +'" field.');
			formField.focus();
			result = false;
			formField.className='FormError';
		}
	}
	return result;
}

function validNumRange(formField,fieldLabel,minValue,maxValue)
{
	var result = true;
	var formElementID = document.getElementById(formField);
	
	if (formElementID.value < minValue) {
		alert('The value for "' + fieldLabel +'" must be greater then or equal to ' + minValue +'.');
		result = false;
		formElementID.className='FormError';
	}
	else {
		formElementID.className='';
	}
	
	if (formElementID.value > maxValue) {
		alert('The value for "' + fieldLabel +'" must be less then or equal to ' + maxValue +'.');
		result = false;
		formElementID.className='FormError';
	}
	else {
		formElementID.className='';
	}

   return result;
}

function validInt(formField,fieldLabel,required)
{
	var result = true;
	var formElementID = document.getElementById(formField);

	if (required && !validRequired(formField,fieldLabel))
		result = false;
		formElementID.className='FormError';
  
 	if (result)
 	{
		var digits = "0123456789";
		var origstr = formElementID.value;
		var crunchedstr = "";
		var i;
		
		for (i=0;i<origstr.length;i++) 
			if (digits.indexOf(origstr.charAt(i))>=0)
				crunchedstr += origstr.charAt(i);
 		var num = parseInt(crunchedstr,10);
 		if (isNaN(num))
 		{
 			alert('Please enter a number for the "' + fieldLabel +'" field.');
			formElementID.focus();		
			result = false;
			formElementID.className='FormError';
		} else {
			if (num != formElementID.value) {
				formElementID.value = num;
			}
		}
	} 	
	return result;
}

function round2(num)
{
//	alert("round2("+num+")");
	if (isNaN(num))
		return ("0.00");
	var newnum = Math.round(num*100)/100;
	var s = ""+newnum; // converts to string
	if (s.indexOf(Intl_DecimalChar) < 0) {
		s = s+Intl_DecimalChar+"00";
	} else {
		if (s.length - s.indexOf(Intl_DecimalChar) < 3) {
			s=s+"0";
		}
	}
//	alert("round2("+num+") = "+s+" len:"+s.length+" s.Dot:"+s.indexOf(Intl_DecimalChar));
	return(s);
}

function extractFloat(str)
{
//	alert("extractFloat("+str+")");
	var digits = "0123456789"+Intl_DecimalChar;
	var crunchedstr = "";
	var i;
	
	for (i=0;i<str.length;i++) 
		if (digits.indexOf(str.charAt(i))>=0)
			crunchedstr += str.charAt(i);
//	alert("extractFloat("+str+") = :"+crunchedstr+":");
	if (crunchedstr.len < 1)
		return(0.0);
	return(parseFloat(crunchedstr));
}

function validDate(formField,fieldLabel,required)
{
	var result = true;
	var formElementID = document.getElementById(formField);

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result)
 	{
 		var elems = formElementID.value.split("/");
  		result = (elems.length == 3); // should be three components
 		
 		if (result)
 		{
			var month, day, year;
 			month = parseInt(parseFloat(elems[0]));
  			day = parseInt(parseFloat(elems[1]));
 			year = parseInt(parseFloat(elems[2]));
			
			result = allDigits(month) && (month > 0) && (month < 13);
					 allDigits(day) && (day > 0) && (day < 32);
					 allDigits(year) && ((year.length == 2)||(year.length == 4));					 
 		}
 		
  		if (!result) {
	 		alert('Please enter a date in the format MM/DD/YYYY for "' + fieldLabel +'".');
 			formElementID.focus();
			result = false;
			formElementID.className='FormError';
		}
		else {
		formElementID.className='';
		}
	} 	
	return result;
}

function confirmMatch(formField1, formField2, fieldLabel1, fieldLabel2)
{
	var result = true;
	var formElementID1 = document.getElementById(formField1);
	var formElementID2 = document.getElementById(formField2);
	
	if (formElementID1.value != formElementID2.value)
	{
		alert('Your entries for "' + fieldLabel1 +'" and "' + fieldLabel2 +'" must match.');
		formElementID1.value = "";
		formElementID2.value = "";
		formElementID1.focus();
		result = false;
		formElementID1.className='FormError';
		formElementID2.className='FormError';
	}
	else {
		formElementID1.className='';
		formElementID2.className='';
	}
	return result;
}

function LockButton (buttonID) {
	var SubmitButton = document.getElementById(buttonID);
	SubmitButton.disabled=true;
}

function textareaLength(formField,fieldLabel,maxChar)
{
	var formElementID = document.getElementById(formField);
	var strInput = formElementID.value;
	
	if (strInput.length > maxChar) {
	alert('Sorry, you are over the limit of '+maxChar+' characters'); 
	formElementID.value = strInput.substring(0,maxChar);
	formElementID.focus()
	}
}


function disable_enable(ButtonID)
{
	var buttonID = document.getElementById(ButtonID);
	buttonID.disabled = true;
	return true;
}