

var ISREQUIRED			= 1;   
var ISSELECTIONREQUIRED	= 2;   
var ISALPHANUMERIC		= 4;   
var ISALPHA				= 8;	
var ISMAXLENGTH			= 16;  
var ISMINLENGTH			= 32;  
var ISNAMETYPE			= 64;  
var ISNUMERIC			= 128; 
var ISDATE				= 256; 
var ISURL				= 512; 
var ISEMAIL				= 1024;
var ISPASSWORD			= 2048;

function validateField(field, validations){
	

	var temp,temp1;
	var validate = 1;
	var flag=true;
	for (var icounter = 0; icounter <= 11; icounter++) {
		temp1 = validate << icounter;
		temp = validations & temp1 ;

		if (temp != 0) {
			switch (icounter) {
				case 0  :	if(!validatorRequired(field)) flag = false;
							break;
				case 1 	:	if(!validatorSelectionRequired(field)) flag = false;
							break;
				case 2 	:	if(!validatorAlphaNumeric(field)) flag = false;
							break;
				case 3 	:	if(!validatorAlpha(field)) flag = false;
							break;
				case 4 	:	if(!validatorMaxLength(field)) flag = false;
							break;
				case 5 	:	if(!validatorMinLength(field)) flag = false;
							break;
				case 6 	:	if(!validatorNameType(field))	flag = false;
							break;
				case 7 	:	if(!validatorNumeric(field)) flag = false;
							break;
				case 8  :	if(!validatorDate(field)) flag = false;
							break;
				case 9  :	if(!validatorURLFormat(field)) flag = false;
							break;
				case 10 :	if(!validatorEmailFormat(field)) flag = false;
							break;
				case 11 :	if(!validatorPassword(field)) flag = false;
							break;
				case 12	:	if(!validatorSelectionRequired1(field)) flag = false;
							break;
				default :
			}
		}
	}
	return flag;
}

function validatorAlpha(string){

	for (var i = 0; i < string.length; i++)
	 {
		var ch= string.charCodeAt(i)
		if(!((ch >= 65 && ch <= 90) || (ch >= 97 && ch <= 122)))
			return false;
	 }
	 return true;
}

function validatorAlphaNumeric(string) {

	for (var i = 0; i < string.length; i++)
	 {
		var ch= string.charCodeAt(i);
		if(ch==39)
			return false;
		if(!((ch >= 65 && ch <= 90) || (ch >= 97 && ch <= 122) || ch == 32 || ch == 43 || (ch >= 48 && ch <= 57)|| ch == 46))
			return false;
	 }
	 return true;
}


function isValidDate(dateStr) 
{

		// Checks for the following valid date formats:
		// MM/DD/YYYY 

		var datePat = /^(\d{2})(\/)(\d{2})\2(\d{4})$/; // requires 4 digit year
		var matchArray = dateStr.match(datePat); // is the format ok?
		if (matchArray == null) 
		{
			alert("Enter the date in mm/dd/yyyy format.")
			return false;
		}

		month = matchArray[1]; // parse date into variables
		day = matchArray[3];
		year = matchArray[4];
		
		if (month < 1 || month > 12) 
		{ // check month range
			alert("Month must be between 1 and 12.");
			return false;
		}

		if (day < 1 || day > 31)
		{
			alert("Day must be between 1 and 31.");
			return false;
		}

		if ((month==4 || month==6 || month==9 || month==11) && day==31) 
		{
			alert("Month # "+month+" doesn't have 31 days!")
			return false;
		}

		if (month == 2)
		{ // check for february 29th
			var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
			if (day>29 || (day==29 && !isleap))
			{
				alert("February " + year + " doesn't have " + day + " days!");
				return false;
			}
		}
return true;
}


function validatorDate(string) {
		var day;
		var month;
		var year;
		var token = "";
		if (string.indexOf("/")> 0) { token = "/"; } else { token = "-"; }
		var firsts= string.indexOf(token);
		var seconds = string.lastIndexOf(token);
		month = string.substr(0,firsts);
		day   = string.substr(firsts+1,string.lastIndexOf(token)-firsts-1);
		year  = string.substr(seconds+1,string.length-seconds-1);
		if (month<1 || month>12) return false;
		if (day<1 || day>31) return false;
		if (year<2000|| year>2009) return false;
		
		if (month==4 || month==6 || month==9 || month==11)
			if (day==31) return false;

		if (month==2){
			if (day>29) return false;
			if (day==29 && year%4!=0) return false;
		}
		return true;		
}

/*
function validatorEmailFormat(string){
	var emailPat = "^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$";
	var matchArray = string.match(emailPat);
	if (matchArray == null)
		return false;
	return true;
}
function validatorEmailFormat(string){
	var newString = string.match(/\b(^(\S+@).+((\.com)|(\.net)|(\.edu)|(\.mil)|(\.gov)|(\.org)|(\..{2,2}))$)\b/gi)
	if (!newString) 
	 return false;
 return true;
}*/


function validatorEmailFormat(email) {
        if(email.length==0)
            return true;
	valid = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.@-_[]";
	for(i=0; i < email.length ;i++)
	{
		if(valid.indexOf(email.charAt(i))<0)
		{ 
			return false;
		}	
	} 

	if (document.images) 
	{
		reg1 = /(@.*@)|(\.\.)|(^\.)|(^@)|(@$)|(\.$)|(@\.)/;
		reg2 = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
		if (!email.match(reg1) && email.match(reg2)) {
			return (-1);		
                }
	} 

}


function validatorNameType(string) {
 	 for (var i = 0; i < string.length; i++)
	 {
		var ch= string.charCodeAt(i)
		if(!((ch >= 65 && ch <= 90) || (ch >= 97 && ch <= 122) || ch==39 || ch==45 || ch==32 || ch==46))
			return false;
	 }
	 return true;
}

function validatorNumeric(string){
	for (var i = 0; i < string.length; i++)
	 {
		var ch= string.charCodeAt(i)
		if(!(ch >= 48 && ch <= 57))
			return false;
	 }
	 return true;
}

function validatorPassword(string){
		var result = false;
		var hasLetter = false;
		var hasDigit = false;
		for(var i = 0; i < string.length; i++) {
			var ch= string.charCodeAt(i);
			if((ch >= 65 && ch <= 90) || (ch >= 97 && ch <= 122))
				hasLetter = true;
			if(ch >= 48 && ch <= 57)
				hasDigit = true;
		}
		result = hasLetter & hasDigit;
		if ( (string.length < 6) || (string.length > 10 ) ) 
			return false;
		return result;
}

function validatorRequired(string){
	if ((string == "") || ((string.split(" ").length-1)==string.length))
		return false;
	return true;
}

function validatorSelectionRequired(string){
	if (string=="0")
		return false;
	return true;
}

function validatorSelectionRequired1(string){
	if (string=="-1")
		return false;
	return true;
}

function validatorURLFormat(string){
		var dot    = '.';
		var  dotPos = string.indexOf(dot);
		var secondDotPos = string.indexOf(dot,(dotPos+2)); 
		var len = string.length;
		if (len==0) return false;
		if ( ( secondDotPos == -1 ) | (len==(secondDotPos+1) ) ) 
			return false; 
		return true;
}

function validatorMaxLength(string){
	var len = string.length;
	if(len>30) {
		return false
	} else {
		return true;
	}
}

function validatorMinLength(string){
	return true;
}

function validatorFirstName(string) {
        var atleast1Letter = 0;
 	 for (var i = 0; i < string.length; i++)
	 {
		var ch= string.charCodeAt(i)
                //-- 32 = space, 34 = double quote, 42 = asterisk
		if (ch==32 || ch==34 || ch==42)
                    return false;
                if (atleast1Letter == 0) {
                    if ((ch >= 65 && ch <= 90) || (ch >= 97 && ch <= 122))
                        atleast1Letter = 1;
                }
	 }
        if (atleast1Letter == 1)
            return true;
        else 
            return false;
}

function validatorLastName(string) {
        var atleast1Letter = 0;
 	 for (var i = 0; i < string.length; i++)
	 {
		var ch= string.charCodeAt(i)
                //-- 32 = space, 34 = double quote, 42 = asterisk, 48-57 = numbers
		if (ch==32 || ch==34 || ch==42 || (ch >= 48 && ch <= 57))
                    return false;
                if (atleast1Letter == 0) {
                    if ((ch >= 65 && ch <= 90) || (ch >= 97 && ch <= 122))
                        atleast1Letter = 1;
                }
	 }
        if (atleast1Letter == 1)
            return true;
        else 
            return false;
}

function validatorAddress(string) {
        var atleast1Letter = 0;
 	 for (var i = 0; i < string.length; i++)
	 {
		var ch= string.charCodeAt(i)
                //-- 34 = double quote
		if (ch==34)
                    return false;
                if (atleast1Letter == 0) {
                    if ((ch >= 65 && ch <= 90) || (ch >= 97 && ch <= 122))
                        atleast1Letter = 1;
                }
	 }
        if (atleast1Letter == 1)
            return true;
        else 
            return false;
}

function validatorCity(string) {
        var atleast1Letter = 0;
 	 for (var i = 0; i < string.length; i++)
	 {
		var ch= string.charCodeAt(i)
                //34 = double quote
		if (ch==34)
                    return false;
                if (atleast1Letter == 0) {
                    if ((ch >= 65 && ch <= 90) || (ch >= 97 && ch <= 122))
                        atleast1Letter = 1;
                }
	 }
        if (atleast1Letter == 1)
            return true;
        else 
            return false;
}

function validatorZip(string) {
   /* var valid = "0123456789-";
    var hyphencount = 0;

    if (string.length!=5 && string.length!=10) {
    //alert("Please enter your 5 digit or 5 digit+4 zip code.");
    return false;
    }
    for (var i=0; i < string.length; i++) {
    temp = "" + string.substring(i, i+1);
    if (temp == "-") hyphencount++;
    if (valid.indexOf(temp) == "-1") {
    //alert("Invalid characters in your zip code.  Please try again.");
    return false;
    }
    if ((hyphencount > 1) || ((string.length==10) && ""+string.charAt(5)!="-")) {
    //alert("The hyphen character should be used with a properly formatted 5 digit+four zip code, like '12345-6789'.   Please try again.");
    return false;
       }
    }*/
    return true;
}

function validatorPhone(string)
{
    /*To validate a phone number, first we want to clear out any spacer
    characters, such as parentheses, dashes, spaces, and dots. We can do this
    with a regular expression and the replace() method, replacing anything that
    matches our regular expression with a null string. Having done that, we look
    at what we have left with the isNaN() function (which checks to see if a
    given input is Not A Number), to test if it's an integer or not. If it
    contains anything other than digits, we reject it.*/
    var stripped = trimString(string);
    stripped = string.replace(/[\(\)\.\-\ ]/g, '');
    //strip out acceptable non-numeric characters
    if (isNaN(parseInt(stripped))) {
       //error = "The phone number contains illegal characters.";
       return "REG_001";
    }
    //Then we count the length of the number. It should have exactly ten digits — any more or less, and we reject it.
    //alert(stripped.length);
    if (!(stripped.length == 10))
    {
        //alert(stripped.length);
		//error = "The phone number is the wrong length. Make sure you included an area code.\n";
        return "REG_002";
    } 
    
    return true;
}
