//Checks for an @ symbol and one . 
function ValidateEmail(lsFieldName, sError)
{
  value = lsFieldName.value
  err = false
  monkey = value.indexOf("@")
  dot = value.indexOf( ".", monkey )
  if ( monkey==-1 ) { err=true }
  if ( dot==-1 ) { err=true }
  if ( err )
   {
   alert(sError);
   lsFieldName.focus();
      return 0;
   }
}

//Checks to see if there is a value and no leading spaces
function ValidateBlankField(lsField, sError, sLSError)
{
	var lsFieldValue = lsField.value;
													
	if(lsFieldValue.length == 0)	{	
		alert(sError);
	    lsField.focus()
		return 0;				    
	}
	//check for leading spaces
	if(lsFieldValue.charAt(0) == " "){
		alert(sLSError);
		lsField.focus()
		return 0;
	}
	return 1;
}

//Validates a date in the format mm/dd/yyyy format		
function ValidateDate(date){
					
	var sDate = date.value;
	var delim1 = sDate.indexOf("/");
	var delim2 = sDate.lastIndexOf("/");
	var	mm = sDate.substring(0,delim1)	//extract month
	var dd = sDate.substring(delim1 + 1,delim2) //extract day
	var yyyy = sDate.substring(delim2 + 1, sDate.length) //extract year	
							
	if (isNaN(mm) || isNaN(dd) || isNaN(yyyy)){
		return false;
		}
	if (yyyy.length != 4){
		return false;
		}	
	if (mm < 1 || mm > 12){
		return false;
		}
	//Basic month check, no month has more than 31 days.
	if (dd < 1 || dd > 31){
		return false;
		}	
	if (delim1 != 2 && delim1 != 1){
		return false;
		}
	if (delim2 != 5 && delim2 != 4 && delim2 != 3){
		return false;
		}
	//Check number of days in specific month.
	if (dd < 1 || dd > getNumberOfDaysOfMonth(mm, yyyy)){
		return false;
		}			
	return true;
}

function getNumberOfDaysOfMonth(monthNo, p_year) {
	/* 
	Check for leap year ..
	1.Years evenly divisible by four are normally leap years, except for... 
	2.Years also evenly divisible by 100 are not leap years, except for... 
	3.Years also evenly divisible by 400 are leap years. 
	*/
	var aDaysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
	var aDaysInMonthLeapYear = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
	if ((p_year % 4) == 0) {
		if ((p_year % 100) == 0 && (p_year % 400) != 0){
			return aDaysInMonth[monthNo - 1];
	        }
		return aDaysInMonthLeapYear[monthNo - 1];
	    } 
	else {
		return aDaysInMonth[monthNo - 1];
		}
}
		

//Validate Numeric or String Fields
function ValidateField(lsFieldName,lsFieldType,sNumericError,sNumericField)
{	
	var lsFieldValue=lsFieldName.value;
   	var lsFlag =0;
	var lsFlag1=0;
								
	if(lsFieldType == "Number")
	{
		if(isNaN(lsFieldValue))
		{	alert(sNumericError);
			lsFieldName.value=0;
			lsFieldName.focus(); 	
			return 0;
		}
		for(i=0; i< lsFieldValue.length;i++)
		{ if (lsFieldValue.charAt(i) =="e" || lsFieldValue.charAt(i) =="E" )
			{alert(sNumericField);
			lsFieldName.value=0;
			lsFieldName.focus(); 	
			return 0;
			}
		}
		if(lsFieldValue.length==0)
			lsFieldName.value=0;
	}	
								
	if(lsFieldType =="Str")
	{var str="";
	 var j=0	
	 for(var i=0; i< lsFieldValue.length;i++)
		{if((lsFieldValue.charAt(i) =="'") ||(lsFieldValue.charAt(i) == "\""))
			{
										  
			str= str+lsFieldValue.substring(j,i)+"`"
			j=i+1
									
			}
		}
									
	 	lsFieldName.value=str +lsFieldValue.substring(j)
										
	}	
}

function CheckNonAlphaNumerics(sValue)
{
	var sNonAlphaNumerics = "~!@#$%^&()-_+={}|[]\\:;,./?";
	var sChar;
	for(i=0;i<sValue.length;i++)
	{
		sChar = sValue.charAt(i);
		//if string contains a nonalphanumeric character return true
		if(sNonAlphaNumerics.indexOf(sChar, 0) >= 0)
			return true;				
	}
	return false;
}		

//makes sure a field is a number within min/max range and rounds value
function ValIntegerRange(sNum, sError, sMin, sMax)
{
	if (isNaN(sNum.value)){
		alert(sError);
		sNum.focus();
		return false;
	}	
					
	if (sNum.value > sMax || sNum.value < sMin){
		alert(sError);
		sNum.focus();
		return false;
	}	
				
	//round the number - no decimals allowed
	sNum.value = Math.round(sNum.value);
	return true;
}
//Direct page to page
function goTo(loc)
{		
	document.frmParent.action = loc;
	document.frmParent.submit();
}	
function goToHideButton(loc, spanName){
		var htmlstring = hideLinks(spanName);  //hide the span
		goTo(loc);	//call the goTo
}
function goToHideButtons(loc, spanName1, spanName2) {
    var htmlstring1 = hideLinks(spanName1);  //hide the span
    var htmlstring2 = hideLinks(spanName2);  //hide the span
    goTo(loc); //call the goTo
}
//Cleanup white space on data input.
function trim(str)
{
   return str.replace(/^\s*|\s*$/g,"");
}

// Validate money in the format $10.00 or 10.00
function ValidateMoney(sNum) {
    var regExp = /^[$|0-9][0-9]*\.[0-9]{0,2}$/
    if (sNum.search(regExp) == -1) {
        return false;
    }
    return true;
}
