/*
===============================================================
*            This Javascript form validation library is intended to be used in moveourhome.com
*
*            Written by Medi Permonohadi (for the most part) on 072900 revised on 08/02/00
*			 revised by Scott Van Horn on 8/8/2000
*            E-mail validation is obtained from Netscape developer web site
*
 *
meddie --- share what you know, learn what you don't
================================================================
*/

var errMsgHead = "===== MoveOurHome Error Message =====" + "\r";
var errMsg = "";
var isValid =true;
var reEmail = /^.+\@.+\..+$/

// *********** Function to validate email address *****************

function validateEmail(email, errMessage)	{
	//email = trim(email)
	if (isEmail(email) == false) { isValid = false ; errMsg += "\r" + "Invalid " + errMessage + " Email Address" ;}
	return isEmail(email);
}


function isEmail(email) {

	// This string does not allow for dashes and underscores in the email addresses before "@" sign 
	//***** var emailReg = "^[\\w-_\.]*[\\w-_\.]\@[\\w]+[\.]+[\\w]+[\\w]$";

	var emailReg = "^[\\w-\.]*[\\w\.]\@[\\w-\.]+[\.]+[\\w]+[\\w]$";
	var regex = new RegExp(emailReg);
	return regex.test(email);
}

function validateEmailList(emailList) {
	aryEmails = emailList.split(",");
	
	
	for (var i= 0; i<=aryEmails.length -1; i++)	{
		
		if (!validateEmail(aryEmails[i], "")) {
			isValid = false;
			return(false);
		};
	}
	return(true);
}
	
	
// *******************************************************

/*

*************** Function to validate form field ******************

formName = Name of the form in the HTML page
fieldName = Name of the form field to be validated
validateType = 0 is letter validation
validateType = 1 is number validation
If it's number validation, min & max are the allowed value range
If it's letter validation, min & max are the allowed number of text length
errMessage = field name in plain english
Returns true if valid, false otherwise

*********************************************************
*/


function validateText(formName, fieldName, validateType, min, max, errMessage)	{

	var field = eval('document.' + formName + "." + fieldName);
	var fieldValue = field.value;
	var fieldValueLength = fieldValue.length;
	
	switch (validateType)	{
		case 0 :
			
			if (!isAlphanumeric (fieldValue))	{ isValid = false ; errMsg += "\r" + errMessage + " value is : " + "invalid string";}
			if (fieldValueLength < min || fieldValueLength > max)	{ isValid = false ; errMsg += "\r" + errMessage + " must be between  : " + min + " and " + max  + " chars";}
			
		break ;
		case 1 :

			if (!isInteger (fieldValue))	{ isValid = false ; errMsg += "\r" + errMessage + " value is : " + "invalid number";}
			if (fieldValueLength < min || fieldValueLength > max)	{ isValid = false ; errMsg += "\r" + errMessage + " value must be between  : " + min + " and " + max ;}
			
		break;
		case 2 :

			if (!isInteger (fieldValue))	{ isValid = false ; errMsg += "\r" + errMessage + " value is : " + "invalid number";}
			if (fieldValueLength < min || fieldValueLength > max)	{ isValid = false ; errMsg += "\r" + errMessage + " value must be 1 or more" ;}
			
		break;
	}
	return isValid;
}


function isInteger (s)	{
	for (i = 0; i < s.length; i++)	{
		var c = s.charAt(i);
		if (!isDigit(c)) return false;
    }
    return true;
}


function isAlphabetic (s)	
{
// Acceptable range:  A-Z Or a-z or " "
    for (i = 0; i < s.length; i++)	{
		var c = s.charAt(i);
		if (!isLetter(c))	return false;
    }
    return true;
}

function isValidPhoneNumber (s)	
{
// Acceptable range 0-9,(,)," ",-

    for (i = 0; i < s.length; i++)	{
		var c = s.charAt(i);
		if (!isPhoneDigit(c))	return false;
    }
    return true;
}


function isWordWithNoSpaces (s)	
{
// Acceptable range A-Z Or a-z. 

    for (i = 0; i < s.length; i++)	{
		var c = s.charAt(i);
		if (!isChar(c))	return false;
    }
    return true;
}

function isValidZipCode(s)	
{
	var RetVal;
	
	RetVal = false;
	
// At least 5 characters, no more than 10
// check for only allowable characters
	if ( ( s.length == 5 ) || ( s.length == 10 ) )
	{
		RetVal = true;
	
		for (i = 0; i < s.length; i++)
		{
			var c = s.charAt(i);
			
			if ( i == 5 && c != '-' )
			{	
				RetVal = false;
				break;
			}
			
			else if ( i != 5 && !isZipChar(c))
			{
				RetVal = false;
				break;
			}
		}
	}
	
	else RetVal = false;

    return RetVal;
}


function isAlphanumeric (s)	
{
	for (i = 0; i < s.length; i++)	{
		var c = s.charAt(i);
        if (! (isLetter(c) || isDigit(c) ) )	return false;
    }
    return true;
}


function isChar (c)
{
// senthil 10/20/00 - check for valid character only (A-Z or a-z). 
	return ( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")) );
}

function isPhoneDigit (c){
// senthil 10/20/00 - check for valid phone char : 0-9,),(," ",-
	return ((c >= 0) && (c <= 9) || (c == " ") || (c == ")" ) || (c == "(") || (c=="-") );
}

function isZipChar(c){
// senthil 10/20/00 - check for valid ZIP CODE char : 0-9," ", "-"
	return ((c >= 0) && (c <= 9));
}

function isLetter (c)	{
	return ( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")) || (c == " ") );
}


function isDigit (c)	{
	return ((c >= 0) && (c <= 9)|| (c == ".") );
}

function charInString (c, s)	{
	for (i = 0; i < s.length; i++)	{
		if (s.charAt(i) == c) return true;
    }
    return false;
}

function isEqual(firstString, secondString)	{
	if (firstString != secondString)	return false;
	return true;
}


/*
*************** Function to validate date input ******************

formName = Name of the form in the HTML page
fieldName = Name of the date field to be validated
datePart = Accepted value are 1 to check month, 2 to check day, 3 to check year
errMessage = field name in plain english
Returns true if valid, false otherwise

*********************************************************
*/


var today = new Date();
var now = today.getDate();
var month = today.getMonth();
var year = today.getYear();

function validateDate(formName, fieldName, datePart, errMessage)	{

	var field = eval('document.' + formName + "." + fieldName);
	var frmDate = field.value;

	// Real Number
	if (!isInteger (frmDate))	{ isValid = false ; errMsg += "\r" + "Invalid " + errMessage;}
	
	else	{
	
		switch (datePart) {
		case 1 :	// Month
			if (frmDate < 1 || frmDate > 12)	{
				isValid = false;
				errMsg += "\r" + "Invalid " + errMessage;
			}
		break ;
		case 2 :	// Day
			if (frmDate < 1 || frmDate > 31)	{
				isValid = false;
				errMsg += "\r" + "Invalid " + errMessage;
			}
		break;
		case 3 :	// Year

//			if (frmDate.length <= 2)
			frmDate = eval(parseInt(frmDate,10) + 2000) ;

			if (frmDate < year || frmDate > 2036)	{
				isValid = false;
				errMsg += "\r" + "Invalid " + errMessage + " " + frmDate;
			}
		break; 
		case 4 :	// mohp366 year
			if (frmDate.length == 4)	{
				frmDate = eval(parseInt(frmDate)) ;
			
				if (frmDate < 1930 || frmDate > 2036)	{
					isValid = false;
					errMsg += "\r" + "Invalid " + errMessage;
				}
			}
			else	{
				isValid = false;
				errMsg += "\r" + "Invalid " + errMessage + " (yyyy)";
			}
		break; 
		}
	}
	return isValid;
}

/*
 *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
 Purpose	:	NEW JAVA SCRIPT FUNCTIONS TO VALIDATE 
			DATE VALUES
 Developer	:	Senthil
 Date		: 	10/29/00
 *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
*/

function intCheckValue(item, min, max) {
/*Purpose: This function checks whether the given 'item' value is an valid integer 
  and its between 'min' and 'max' patameter supplied values*/
  
	if ( (item == '') || (isNaN(item)) || (parseInt(item,10) < min) || (parseInt(item,10) > max) ) {
		return false;
	}
	return true;
}


function validDateValue(MM,DD,YY)
{
/*Purpose:  Check for valid date related values (range) and returns true or false */


var mmCheck = intCheckValue(MM,1,12);  // valid months from 1 to 12
var ddCheck = intCheckValue(DD,1,31);  // valid days from 1 to 31
var yyCheck = intCheckValue(YY,0,36);  // valid year from 2000 to 2036

	if(ddCheck == true && mmCheck == true && yyCheck == true)
	return true;

	// not a valid date
	return false;

}