/*chirag*

Following are the keywords for validation

validateblank:-for checking of blanlk, tag should not be left blank

validatemail:-Checking for mail

validatedate:-Validation for date

HOW TO USE
pass parameter to function chkForm()
parameter should 
first parameter should be name of form eg 'myform'
second should be tag for which you wnat to do validation eg 'myinput'
third parameter is type of validaation u want to done eg "validatemail"
fourth is message test you want to show if error found
FOR DOING VALIDATION ON MORE THAT ONE THAG
same as about after finishing for first tag start same for second tag by puting comma and continu
same way more than one validation can be dont on same input tag
example 
<form name="myform" action="" method="post" onsubmit="return chkForm('myform','myname','validatedate','Please Enter Correct Date','myname','validateblank','Please Enter Some Value')">
please not return keyword is important while calling the onsubit, otherwise it would subit the form after an alert
AVAILABLE FUNCTION IN THIS FILE
1. validateblank
This parameter checks for the blank, if balnk is found it returns an error message
2.validatepass
This parameter validates the password and confirm password fields, i.e it checks whether both the value enter in this two fields is same or not, if it is not same reutrns an error alert, to use this function you must pass the field name of both the fields (password and confirm password) with concatinating them by "+" eg. passwrod1+password2
3. validateemail 
This parameter validates the email address 
4.validateemail
This parameter validates zip code
5.validatesymbol
This parameter checks for special characters
6.validatenumber
This parameter validates number, if there is any number value in given data, alerts a message
 
//CHIRAG//
*/


//functin for validating date
var dtCh= "/";
var minYear=1900;
var maxYear=2100;
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
}
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 || year<minYear || year>maxYear){
		alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		alert("Please enter a valid date")
		return false
	}
return true
}

//end of date validation

function chkForm (frm) {
 //alert(chkForm.arguments.length);
 for (var i=1; i<chkForm.arguments.length; i++){
  fld=chkForm.arguments[i];
  //alert(fld);
    i++;
  type=chkForm.arguments[i];
	//alert(type);
    i++;
   txt=chkForm.arguments[i];
//   alert(txt);
 //alert(i);
    switch (type) {
     case 'validateblank' : 
	{       
			if(document.forms[frm].elements[fld].value == ""){
			alert(txt);
			document.forms[frm].elements[fld].focus();
			return false;
			}
	 }
     break;
//password scripts starts here
  case 'validatepass' : 
	 {
			var splitme=fld.split("+");
			var fld1=splitme[0];
			var fld2=splitme[1];
			var pass1=document.forms[frm].elements[fld1].value
			var pass2=document.forms[frm].elements[fld2].value
			if(pass2==null || pass2==null)
			{
				alert("To Verify Password Pass Both Fileds Name Concatenated with '_'");
				return false;
			}
			if(pass2!=pass1)
			{
			alert(txt);
			return false;
			}
	 }
	 break;
//password scripts ends here	 
     case 'validateemail' : 
	 {
		if((document.forms[frm].elements[fld].value.indexOf("@")==-1) || (document.forms[frm].elements[fld].value.indexOf(".")==-1) || (document.forms[frm].elements[fld].value.length<=5) ){
			alert(txt);
			document.forms[frm].elements[fld].focus();
			return false;
			}
	 }
	 break;
//Zip validation function starts here
     case 'validateemail' : 
	 {
		if ((document.forms[frm].elements[fld].value=="") || (document.forms[frm].elements[fld].length!=5)) {
			alert(txt);
			document.forms[frm].elements[fld].focus();
			return false;
			}			
	 }
	 break;
     case 'validatedate' : 
	 {
	 if (isDate(document.forms[frm].elements[fld].value)==false){
	 	alert(txt);
		document.forms[frm].elements[fld].focus();
		return false;
		}
	 }
	 break;

// symbols validations like <>/?*&//	 
	 case 'validatesymbol' :
	 {
	 chk1 = "!@#$%^*()-+=|\~`{}[]: <>?/,";
	 chk3="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	for(j=0;j!=document.forms[frm].elements[fld].value.length;j++)
	 {
	ch1= document.forms[frm].elements[fld].value.charAt(j);
	ch2= document.forms[frm].elements[fld].value.charAt(0);
	rtn1=chk1.indexOf(ch1);
	rtn3=chk3.indexOf(ch2);
		if(rtn3 < 0)
			{
				alert(txt);
				document.forms[frm].elements[fld].focus();
				return false;
				break;
		 	}
			else if(rtn1!=-1)
			{
				alert(txt);
				document.forms[frm].elements[fld].focus();
				return false;
				break;	
			}
		}
	 } 
	  break;
	 case 'validatenumber':
	 {
	 chk1="!@#$%^*()-+=|\~`{}[]: <>?/,abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	 chk3="0123456789";
	for(k=0;k!=document.forms[frm].elements[fld].value.length;k++)
	{
	ch1= document.forms[frm].elements[fld].value.charAt(k);
	ch2= document.forms[frm].elements[fld].value.charAt(0);
	rtn1=chk1.indexOf(ch1);
	rtn3=chk3.indexOf(ch2);
		if(rtn3 < 0)
		{
			alert(txt);
			document.forms[frm].elements[fld].focus();
			return false;
			break;
	 	}
		else if(rtn1!=-1)
		{
			alert(txt);
			document.forms[frm].elements[fld].focus();
			return false;
			break;	
		}
	  }
 }

break;	
	 default:
	 return false;
}

}
}


function MM_goToURL() { //v3.0
  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}
//

function changeClient(x)
	{
		str = "";
		var tempArray = new Array();
		var j;

		j=0;
		for(i=0;i< unitArray.length;i++)
		{
			arr = unitArray[i].split("_");
			if(arr[1]==x)
			{
				tempArray[j++] = unitArray[i];
			}
		}
		return tempArray;
	}	
	function displayUnitCombo(x,frm,sel)
	{
		var unitData;
		
		unitData = new Array();
		unitData = changeClient(x);
		frm.unitcombo.length = 0;
		for(i=0;i<unitData.length;i++)
		{
			arr = unitData[i].split("_");
			frm.unitcombo.length++;
			frm.unitcombo[frm.unitcombo.length-1].value	=	arr[0];
			frm.unitcombo[frm.unitcombo.length-1].text 	=	arr[2];
			if(sel == arr[0])
				frm.unitcombo[frm.unitcombo.length-1].selected = true;

		}
	}
	function chval(x)
	{
		document.frm.textfield.value=x;
	}	
	function checkValue()
	{
		displayUnitCombo(document.nfm1.client.value,nfm1);
		for(k=0;k<document.forms.length;k++)
		{
			if(document.forms[k].name.indexOf("frm")!=-1 || document.forms[k].name.indexOf("frm")==0)
			{
				//alert(document.forms.length);
				displayUnitCombo(document.forms[k].client.value,document.forms[k],document.forms[k].parentid.value);
			}
		}
	}
	
