/*	 * Javascript Input Validation files. 
	 * This file contains validations for all 
	 * regular input field.
	 * Use only the functions with
	 * 'validate_[field type]' word. Other
	 * functions are secondary functions.

*/


//Validation of Text (First/Last name, description etc...)
function validate_text(frmSample,field,field_name,min_length,max_length){	
         with(frmSample){
			if (field.value == "") {
						alert("Please enter "+field_name);
						field.focus();
						return false;
						}

			if (field.value.length < min_length){
						alert(field_name+" should not be less than "+min_length);
						field.focus();
						return false;
						}
			if (field.value.length > max_length){
						alert(field_name+" should not be more than "+max_length);
						field.focus();
						return false;
						}
					}
				}//end of text validation!
//Validation of User Name

		function validate_user_name(frmSample,field,min_length,max_length){	
			with(frmSample){
				if (field.value == "") {
					alert("YOU DIDN'T ENTER A USERNAME");
					field.focus();
					return false;
					}

				if ((field.value.length < min_length) || (field.value.length > max_length)){
					alert("THE UESRNAME IS THE WRONG LENGH: " + field.value);
					field.focus();
					return false;
					}
				var illegalChars = /\W/;
				if (illegalChars.test(field.value)){
			        alert("THE USERNAME CONTAINS ILLEGAL CHARACTERS: " + field.value);
					field.focus();
					return false;
					}
				}

			}//end of user name validation!
//Validation of Password

		function validate_password(frmSample,field,min_length,max_length){
			with (frmSample){
				if (field.value == ""){
		    		alert("YOU DIN'T ENTER YOUR PASSWORD");
					field.focus();
					return false;
					}
				var illegalChars = /[\W_]/;
				if ((field.value.length < min_length) || (field.value.length > max_length)){
					alert("THE PASSWORD IS THE WRONG LENGTH");
					field.focus();
					return false;
				}else if (illegalChars.test(field.value)){
					alert("THE PASSWORD CONTAINS ILLEGAL CHARACTERS");
					field.focus();
					return false;
					}
				}
			}//end of password validation!
//Validation of Number
		function isNumber(s){
			var i;
				for (i = 0; i < s.length; i++){   
			     var c = s.charAt(i); //alert(c);
					if ((c < "0") || (c > "9"))
						return false;
					}
				return true;
				}
		function stringFilter (input,filteredValues) {
				s = input;
				var i;
				var returnString = "";
					for (i = 0; i < s.length; i++) {  // Search through string and append to unfiltered values to returnString.
						var c = s.charAt(i);
						if (filteredValues.indexOf(c) == -1) returnString += c;
					}
				return returnString;
			}
			
		function validate_number(frmSample,field,field_name,min_length,max_length){	
				var number = stringFilter(field.value,",");
					with(frmSample){
						if (number == ""){
							alert("Please enter " + field_name);
							field.focus();
							return false;
							}
						if ((number.length<min_length)||(number.length>max_length)){
							alert(field_name + " is of wrong length");
							field.focus();
							return false;
							}

		if(isNumber(number)==false){
							alert(field_name + " contains illegal characters");
							field.focus();
							return false;
							}
//alert(parseInt(field.value));

		if(parseInt(field.value)<=0) {
							alert(field_name + " should be greater than 0");
							field.focus();
							return false;
							}
					}
				return true
			}//end of number validation
//Validation of Date

var dtCh= "/";
var minYear=1900;
var maxYear=2100;
		function isInteger(s){
			var i;
			for (i = 0; i < s.length; i++){   
		    	var c = s.charAt(i);
			if (((c < "0") || (c > "9")))
				return false;
			}
		return true;
		}
		function stripCharsInBag(s, bag){
			var i;  
			var 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){
			    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,date_format){
				var daysInMonth = DaysArray(12);
					if(date_format=='mm/dd/yyyy'){
						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)
					}
					if(date_format=='dd/mm/yyyy'){
						var pos1=dtStr.indexOf(dtCh)
						var pos2=dtStr.indexOf(dtCh,pos1+1)
						var strDay=dtStr.substring(0,pos1)
						var strMonth=dtStr.substring(pos1+1,pos2)
						var strYear=dtStr.substring(pos2+1)
					}
					if(date_format=='yyyy/mm/dd'){
						var pos1=dtStr.indexOf(dtCh);
						var pos2=dtStr.indexOf(dtCh,pos1+1);
						var strYear=dtStr.substring(0,pos1);
						var strMonth=dtStr.substring(pos1+1,pos2);
						var strDay=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: "+date_format+"- "+ dtStr);
		return false;
	}
	if (strMonth.length<1 || month<1 || month>12){
		alert("PLEASE ENTER A VALID MONTH: " + strMonth);
		return false;
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
				alert("PLEASE ENTER A VALID DAY: " + strDay);
				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: " + dtStr);
		return false;
	}
	return true;
}
function validate_date(frmSample,field,format){
	with(frmSample){
		if(field.value==''){
				alert("YOU DIDN'T ENTER A DATE");
				field.focus();
				return false;
			}
			if (isDate(field.value,format)==false){
				field.focus();
				return false;
			}
		}
	return true;
}//end of date validation
//Validation of Email Address
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){
		   alert("Invalid e-mail ID");
		   return false;
		}
		if (lat==-1 || lat==0 || lat==(lstr-1)){
		   alert("Invalid e-mail ID");
		   return false;
		}
		if (ldot==-1 || ldot==0 || ldot==(lstr-1)){
		    alert("Invalid e-mail ID");
		    return false;
		}
		if (str.indexOf(at,(lat+1))!=-1){
		   alert("Invalid e-mail ID");
		   return false;
		}
		if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		   alert("Invalid e-mail ID");
		    return false;
		}
		if (str.indexOf(dot,(lat+2))==-1){
		   alert("Invalid e-mail ID");
		    return false;
		}
		if (str.indexOf(" ")!=-1){
		   alert("Invalid e-mail ID");
		   return false;
		}
		var splits = Array();
		splits = str.split(".");
		if (splits[splits.length-1].length<2){
			alert("Please enter valid email address");
			return false;
		}
 		return true;
}
function validate_email(frmSample,field,max_length,not_null){
	with(frmSample){
		if(not_null)
			if ((field.value==null)||(field.value=="")){
				alert("Please enter your e-mail ID");
				field.focus();
				return false;
			}
		if (field.value.length>max_length){
			alert("e-mail ID is more than max length (" + max_length + ")");
			field.focus();
			return false
		}
		if (field.value)
			if (eCheck(field.value)==false){
				field.focus();
				return false;
			}
	}
	return true;
}//end of email validation
//Validation of Website
function wCheck(str){
		var i;
		var worldwideweb="www";
		var lw=str.indexOf(worldwideweb);
		if(lw==-1){
			alert("Please enter valid website");
			return false;
		}
		var dot=".";
		if(str.indexOf(dot)!=3){
			alert("Please enter valid website");
			return false;
		}
		var splits = Array();
		splits = str.split(".");
		if(splits.length<3){
			alert("Please enter valid website");
			return false;
		}		
		if (splits[splits.length-1].length<2){
			alert("Please enter valid website");
			return false;
		}		
 		return true;
}
var url = '';
function validate_website(frmSample,field,max_length){
	with(frmSample){		
		if(field.value.indexOf("http://")==0)
			url = field.value.substring(field.value.indexOf("http://")+7,field.value.length); 
		else
			url = field.value;
		if ((url==null)||(url=="")){
			alert("Please enter your website url");
			field.focus();
			return false;
		}
		if (url.length > max_length){
		    alert("URL is more than max length("+max_length+")");
			field.focus();
			return false;
		}
		if (wCheck(url)==false){
			field.focus();
			return false;
		}
	}
	return true;
}//end of website validation
//Validation of Amount
function aCheck(str){
	var dot=".";
	var ldot=str.indexOf(dot);
	if(ldot!=-1){
		var lstr=str.length;
		var ddotpos=lstr-3;
		if(ldot<ddotpos){
			alert("PLEASE ENTER TWO DIGITS AFTER DECIMAL PLACES: " + str);
			return false;
		}
	}
	return isNumber(str);
	function isNumber(s){
		var i;
		var c;
	    for (i = 0; i < ldot-1; i++){
	        c = s.charAt(i);
	        if ((c < "0") || (c > "9")){
				alert("THE AMOUNT CONTAINS ILLEGAL CHARACTERS: " + s);
				return false;
			}
    	}
		for (i=ldot+1; i<lstr; i++){
			c = s.charAt(i);
	        if ((c < "0") || (c > "9")){
				alert("THE AMOUNT CONTAINS ILLEGAL CHARACTERS: " + s);
				return false;
			}
		}
	    return true;
	}
	return true;
}
function validate_amount(frmSample,field,max_length){
	with(frmSample){
		if (field.value == ""){
		    alert("YOU DIDN'T ENTER THE AMOUNT");
			field.focus();
			return false;
		}
		if (field.value.length>max_length){
			alert("AMOUNT IS MORE THAN MAX LENGTH" + field.value);
			field.focus();
			return false;
		}
		if (aCheck(field.value)==false){
			field.focus();
			return false;
		}
	}
	return true;
}//end of amount validation
//Validation of Phone/Fax No. Validation
function validate_phone(frmSample,field,max_digits,not_null){
	var digits = "0123456789";
	var phoneNumberDelimiters = "()- ";
	var validWorldPhoneChars = phoneNumberDelimiters + "+";
	var minDigitsInIPhoneNumber = 8;
	var openingbrace = "(";
	var lob = field.value.indexOf(openingbrace);
	var closingbrace = ")";
	var lcb = field.value.indexOf(closingbrace);
	var dash = "-";
	var ldash = field.value.indexOf(dash);
	if(field.value)
		if (lob==(field.value.length-1) || lcb==0 || ldash==0 || ldash==(field.value.length-1)){
			alert("Please enter valid Phone/Fax no.");
			field.focus();
			return false;
		}
	with(frmSample){
		if(not_null)
			if (field.value == ""){
				alert("Please enter Phone/Fax no.");
				field.focus();
				return false;
			}
		if (field.value.length>max_digits){
			alert("Phone/Fax no. should not be mor the max length (" + max_digits + ")");
			field.focus();
			return false;
		}
		if(field.value)
			if (checkInternationalPhone(field.value)==false){
				alert("Invalid Phone/Fax no.");
				field.focus();
				return false;
			}
		}
	function isInteger(s){
		var i;
	    for (i = 0; i < s.length; i++){
	        var c = s.charAt(i);
	        if (((c < "0") || (c > "9"))) return false;
	    }
	    return true;
	}
	function stripCharsInBag(s, bag){
		var i;
	    var returnString = "";
	    for (i = 0; i < s.length; i++){
	        var c = s.charAt(i);
	        if (bag.indexOf(c) == -1) returnString += c;
	    }
	    return returnString;
	}
	function checkInternationalPhone(strPhone){
		s=stripCharsInBag(strPhone,validWorldPhoneChars);
		return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
	}
	return true;
}//end of phone validation
//Validation of File Type
function validate_file_ext(frmSample,field,not_null,ext1,ext2,ext3,ext4,ext5,ext6,ext7,ext8,ext9,ext10){
	var str = ext1
	if(ext2!=undefined)		str += ', ' + ext2
	if(ext3!=undefined)		str += ', ' + ext3
	if(ext4!=undefined)		str += ', ' + ext4
	if(ext5!=undefined)		str += ', ' + ext5
	if(ext6!=undefined)		str += ' , ' + ext6
	if(ext7!=undefined)		str += ' , ' + ext7
	if(ext8!=undefined)		str += ' , ' + ext8
	if(ext9!=undefined)		str += ' , ' + ext9
	if(ext10!=undefined)	str += ' , ' + ext10
	with (frmSample){
		if(not_null)
			if (field.value == ""){
				alert("You didn't enter any File Name");
				field.focus();
				return false;
			}
		if(field.value){
			if(filterFileType(field,ext1)==false && filterFileType(field,ext2)==false
				&& filterFileType(field,ext3)==false && filterFileType(field,ext4)==false
				&& filterFileType(field,ext5)==false && filterFileType(field,ext6)==false
				&& filterFileType(field,ext7)==false && filterFileType(field,ext8)==false
				&& filterFileType(field,ext9)==false && filterFileType(field,ext10)==false)
			{
				alert("Please submit " + str + " files only\n" + field.value)
				field.focus();
				return false
			}
		}
	}
	function filterFileType(fieldName,ext){
		if (fieldName.value.indexOf('.' + ext)==-1){
			return false;
		}
		return true;
	}
}//end of file type validation
//Validation of drop down list
function validate_dropdown(frmSample,field,field_name){
	with(frmSample){
		if (field.value == ""){
		    alert("Please select "+field_name+"");
			field.focus();
			return false;
		}
	}
	return true;
}//end of drop down list validation
function radio_button_checker(frmSample,field,fieldname){
	// set var radio_choice to false
	var radio_choice = false;
	with(frmSample){
		// Loop from zero to the one minus the number of radio button selections
		for (counter = 0; counter < field.length; counter++){
			// If a radio button has been selected it will return true
			// (If not it will return false)
			if (field[counter].checked)
				radio_choice = true; 
		}
	}
	if (!radio_choice){
		// If there were no selections made display an alert box 
		alert("Please select a "+ fieldname);
		return (false);
	}
	return (true);
}
