///////////////////////////////////////////////////////////////////////////////////
//
//		File:	UserValidation.js
//				Copyright (c) 2003 Catfish Software Inc.
//				All rights reserved.
//
//		Desc:   To perform the Cilent side input validations For validating User Details
//
//		Auth:	PBSI
//		Date:	09/24/03
//
///////////////////////////////////////////////////////////////////////////////////
//		Modification History
//---------------------------------------------------------------------------------
//		Date:		Author:				Description:
//		--------	---------------		-------------------------------------------
//		09/24/03	PBSI				Initial implementation
//
///////////////////////////////////////////////////////////////////////////////////
//		To Do:
//---------------------------------------------------------------------------------
///////////////////////////////////////////////////////////////////////////////////
//

//<!--
function funTrimString(objStr)
{	
	if(objStr.value.charCodeAt(0)==32)
	{
		objStr.value = objStr.value.substr(1,objStr.value.length);
		funTrimString(objStr);
	}
	else if(objStr.value.charCodeAt(objStr.value.length-1)==32)
	{
		objStr.value = objStr.value.substr(0,objStr.value.length-1);
		funTrimString(objStr);
	}
}


// Declaring valid date character, minimum year and maximum year
		var dtCh = "/";
		//var minYear = 1900;
		var curDt = new Date();
		//var maxYear = curDt.getFullYear();
		
		function isInteger(s){
			var i;
		    for (i = 0; i < s.length; i++){   
	        // Check that current character is number.
	        	var c = s.charAt(i);
		        if (((c < "0") || (c > "9"))) return false;
	    	}
    // All characters are numbers.
    		return true;
		}

		function stripCharsInBag(s, bag){
			var i;
		    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
		    for (i = 0; i < s.length; i++){   
	        var c = s.charAt(i);
	        if (bag.indexOf(c) == -1) returnString += c;
		    }
		    return returnString;
		}

		function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    		return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
		}

		function DaysArray(n) {
			for (var i = 1; i <= n; i++) {
				this[i] = 31;
				if (i==4 || i==6 || i==9 || i==11) {this[i] = 30;}
				if (i==2) {this[i] = 29;}
		   } 
		   return this;
		}

//Check the date format in mm/dd/yyyy
	function isDate(dtStr){
			var daysInMonth = DaysArray(12);
			var pos1=dtStr.indexOf(dtCh);
			var pos2=dtStr.indexOf(dtCh,pos1+1);
			var strMonth=dtStr.substring(0,pos1);
			var strDay=dtStr.substring(pos1+1,pos2);
			var strYear=dtStr.substring(pos2+1);
			strYr=strYear;
			if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
			if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
			for (var i = 1; i <= 3; i++) {
				if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
			}
			month=parseInt(strMonth);
			day=parseInt(strDay);
			year=parseInt(strYr);
			if (pos1==-1 || pos2==-1){
				alert("The date format should be : mm/dd/yyyy");
			return false;
		}
		if (strMonth.length<1 || month<1 || month>12){
			alert("Please enter a valid month");
			return false;
		}
		if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		alert("Please enter a valid day");
		return false;
		}
		if (strYear.length != 4 || year==0  ){
		alert("Please enter a valid 4 digit year");
		return false;
		}
		if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		alert("Please enter a valid date");
		return false;
		}
	return true;
	}

//Function for doing the Number validation
function CheckNumber(strNumber)
{
	var strGoodChars = "0123456789";	
	for (i = 0; i <= strNumber.length -1; i++)
	{
		if (strGoodChars.indexOf(strNumber.charAt(i)) == -1)
		{			
			return false;
		} // End if statement
		
	} // End for loop
	
	return true;//passes the test
}
//Function for Validating MinLength
function chkMinLength(fieldName,strValue,minLength) 
	{
		str = new String(strValue);
		len = str.length;
		if (len < minLength) {
			alert('The minimum length of ' + fieldName + ' should be ' + minLength + '.');
			return false;
		}
		return true;
}


//function for validating Emails
function echeck(str) 
{
	var at="@"
	var dot="."
	var lat=str.indexOf(at)
	var lstr=str.length
	var ldot=str.indexOf(dot)
	if (str.indexOf(at)==-1)
	   return false	

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr)	
	   return false
	
	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr)	
	    return false	

	 if (str.indexOf(at,(lat+1))!=-1)
	    return false

	 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot)
	    return false

	 if (str.indexOf(dot,(lat+2))==-1)
	    return false
		
	 if (str.indexOf(" ")!=-1)
	    return false

 	 return true					
}

//Validate the fields before submitting the form
	function funValidate(frmObj,intID) {		
	
	funTrimString(frmObj.txtFirstName);
	if (frmObj.txtFirstName.value == "")
	{
		alert("Please fill the First Name");		
		frmObj.txtFirstName.focus();
		return false;
	}
	
	funTrimString(frmObj.txtLastName);
	if (frmObj.txtLastName.value == "")
	{
		alert("Please fill the Last Name");		
		frmObj.txtLastName.focus();
		return false;
	}
	funTrimString(frmObj.txtMemberSince);
	
	if (frmObj.txtMemberSince.value == "")
	{
		alert("Please fill Member Since");		
		frmObj.txtMemberSince.focus();
		return false;
	}
	
	funTrimString(frmObj.txtAddress1);
	funTrimString(frmObj.txtAddress2);
	funTrimString(frmObj.txtCity);
	funTrimString(frmObj.txtZip);
	
	funTrimString(frmObj.txtUserName);
	if (frmObj.txtUserName.value == "")
	{
		alert("Please fill Email");		
		frmObj.txtUserName.focus();
		return false;
	}
	
	
	//funTrimString(frmObj.txtPassword);
	//if (frmObj.txtPassword.value == "")
	//{
	//	alert("Please fill Password");		
	//	frmObj.txtPassword.focus();
	//	return false;
	//}
	
		
	//funTrimString(frmObj.txtPhone);
	
	funTrimString(frmObj.txtPhone1);	
	if (frmObj.txtPhone1.value == "")
	{
		alert("Please fill Phone Number");		
		frmObj.txtPhone1.focus();
		return false;
	}
	if(CheckNumber(frmObj.txtPhone1.value)==false)
		{
			alert('Invalid State Code')
			frmObj.txtPhone1.focus()
			return false
		}
	
	if(!chkMinLength('State Code',(frmObj.txtPhone1.value),3)) {
		frmObj.txtPhone1.focus();
		return false;
	}		
		
	funTrimString(frmObj.txtPhone2);
	if (frmObj.txtPhone2.value == "")
	{
		alert("Please fill Phone Number");		
		frmObj.txtPhone2.focus();
		return false;
	}
	
	if (CheckNumber(frmObj.txtPhone2.value)==false)
	{
		alert("Invalid Area Code");		
		frmObj.txtPhone2.focus();
		return false;
	}
	
	if(!chkMinLength('Area Code',(frmObj.txtPhone2.value),3)) {
		frmObj.txtPhone2.focus();
		return false;
	}	
	
		
	funTrimString(frmObj.txtPhone3);
	if (frmObj.txtPhone3.value == "")
	{
		alert("Please fill Phone Number");
		frmObj.txtPhone3.focus();
		return false;
	}
	if (CheckNumber(frmObj.txtPhone3.value)==false)	
	{
		alert("Invalid Phone Number");		
		frmObj.txtPhone3.focus();
		return false;
	}
	if(!chkMinLength('Phone Number',(frmObj.txtPhone3.value),4)) {
		frmObj.txtPhone3.focus();
		return false;
	}
	
	
	funTrimString(frmObj.txtTitle);
	funTrimString(frmObj.txtBirthday);
	
	
	funTrimString(frmObj.txtEquipment);
	if (frmObj.txtEquipment.value == "")
	{
		alert("Please fill Euipment");		
		frmObj.txtEquipment.focus();
		return false;
	}
	
	funTrimString(frmObj.txtExpiryDate);
	if (frmObj.txtExpiryDate.value == "")
	{
		alert("Please fill the Expiry Date");		
		frmObj.txtExpiryDate.focus();
		return false;
	}
	
	if (isInteger(frmObj.txtMemberSince.value)==false)
	{
		alert('Enter valid Year (ex:1977)')
		frmObj.txtMemberSince.focus();
		return false;
	}
	
	if(frmObj.txtMemberSince.value.length!=4)
	{
		alert('Enter valid Year (ex:1977)')
		frmObj.txtMemberSince.focus()
		return false
	}
		
	if(intID.length == 0)
	{		
		if(echeck(frmObj.txtUserName.value)==false)
		{	
			alert("Please enter valid Email "+ "\n")
			frmObj.txtUserName.focus()
			return false
		}
	}
	
	
	if (isDate(frmObj.txtExpiryDate.value ) == false)
	{		
		frmObj.txtExpiryDate.focus();
		return false;
	}
	
	return true;
}	
//-->

//validating the fields before submmitting when search button is clicked
function funSearch(frmObj) 
{
	funTrimString(frmObj.txtFirst);
	funTrimString(frmObj.txtLast);

	funTrimString(frmObj.txtEmail);
	if ((frmObj.txtEmail.value!="") && (echeck(frmObj.txtEmail.value)==false))
	{		
		alert("Please enter valid Email."+ "\n")
		frmObj.txtEmail.focus();
		return false;
	}
	
	funTrimString(frmObj.txtExpiresFromDate);
	if ((frmObj.txtExpiresFromDate.value!="") && (isDate(frmObj.txtExpiresFromDate.value)==false))
	{
		frmObj.txtExpiresFromDate.focus();
		return false;
	}
	
	funTrimString(frmObj.txtExpiresToDate);
	if ((frmObj.txtExpiresToDate.value!="") && (isDate(frmObj.txtExpiresToDate.value)==false))
	{
		frmObj.txtExpiresToDate.focus();
		return false;
	}
	
	if ((frmObj.txtExpiresToDate.value!="") && (frmObj.txtExpiresFromDate.value==""))
	{
		alert('Please Enter Expires From Date')
		frmObj.txtExpiresFromDate.focus();
		return false;
	}
	
	if ((frmObj.txtExpiresFromDate.value!="") && (frmObj.txtExpiresToDate.value==""))
	{
		alert('Please Enter Expires To Date')
		frmObj.txtExpiresToDate.focus();
		return false;
	}
	
	fromDate=new Date(frmObj.txtExpiresFromDate.value)
	toDate=new Date(frmObj.txtExpiresToDate.value)
			
	//alert(toDate<fromDate)
	if(toDate<fromDate)
	{
		alert("'ToDate' Should be greater than 'FromDate'")
		frmObj.txtExpiresToDate.focus();
		return false;
	}	
	
	return true;
}


function fnApprove(frmObj)
{
	frmObj.method = "post"
	frmObj.action="UserDetails.asp?Mode=Approve"
	frmObj.submit()
}

function fnReject(frmObj)
{
	frmObj.method = "post"
	frmObj.action="UserDetails.asp?Mode=Reject"
	frmObj.submit()
}