
//=== FORM VALIDATION FUNCTIONS ===============================================
/*
	HOW TO USE : 

*/

function trim(str)
{
	return str.replace(/^\s+|\s+$/g, '');
}

function isNumeric(sText)
{
	var ValidChars = "0123456789";
	var IsNumber=true;
	var Char;
 
	for (i = 0; i < sText.length && IsNumber == true; i++) 
	{ 
		Char = sText.charAt(i); 
		if (ValidChars.indexOf(Char) == -1) 
		{ IsNumber = false; }
	}
	return IsNumber;
}

   
function formValidateNumeric( elem, elemImg, minLen, maxLen, required, styleOK, styleERR, errMsg, formSubmit )
{
	var numericExpression = /^[0-9-\s]+$/;
	if ( elem.value.match( numericExpression ) )
	{
		if ( ( elem.value.length > minLen ) && ( elem.value.length < maxLen ) )
		{ eval( "elem.className = '"+styleOK+"'" ); return formSubmit; }
		else { eval( "elem.className = '"+styleOK+"'" ); return formSubmit; }
	}
	else
	{
		if ( required ) { eval( "elem.className = '"+styleOK+"'" ); alert( errMsg ); return false; }
		else { eval( "elem.className = '"+styleOK+"'" ); return formSubmit; }
	}
}

function formValidateAlpha( elem, elemImg, minLen, maxLen, required, styleOK, styleERR, errMsg, formSubmit )
{
	var alphaExp = /^[a-zA-Z-'\s]+$/;
	if ( elem.value.match( alphaExp ) )
	{
		if ( ( elem.value.length > minLen ) && ( elem.value.length < maxLen ) )
		{  return formSubmit; }
		else { return false; }
	}
	else
	{
		if ( required ) { return false; }
		else { return formSubmit; }
	}
}

function formValidateNotEmpty( elem, elemImg, minLen, maxLen, required, styleOK, styleERR, errMsg, formSubmit )
{
	if ( elem.value.length != 0 )
	{
		if ( ( elem.value.length > minLen ) && ( elem.value.length < maxLen ) )
		{  return formSubmit; }
		else { return false; }
	}
	else
	{
		if ( required ) { return false; }
		else { return formSubmit; }
	}
}

function consecutiveNumbers( numberString )
{
	var retval = false;
	var consecutiveExp = /000000/;
	if (numberString.match( consecutiveExp )) { retval = true; }
	consecutiveExp = /111111/;
	if (numberString.match( consecutiveExp )) { retval = true; }
	consecutiveExp = /222222/;
	if (numberString.match( consecutiveExp )) { retval = true; }
	consecutiveExp = /333333/;
	if (numberString.match( consecutiveExp )) { retval = true; }
	consecutiveExp = /444444/;
	if (numberString.match( consecutiveExp )) { retval = true; }
	consecutiveExp = /555555/;
	if (numberString.match( consecutiveExp )) { retval = true; }
	consecutiveExp = /666666/;
	if (numberString.match( consecutiveExp )) { retval = true; }
	consecutiveExp = /777777/;
	if (numberString.match( consecutiveExp )) { retval = true; }
	consecutiveExp = /888888/;
	if (numberString.match( consecutiveExp )) { retval = true; }
	consecutiveExp = /999999/;
	if (numberString.match( consecutiveExp )) { retval = true; }
	return retval;
}

function formValidateAlphaNumeric( elem, elemImg, minLen, maxLen, required, styleOK, styleERR, errMsg, formSubmit )
{
	var alphaExp = /^[0-9a-zA-Z-\s\/]+$/;
	if ( elem.value.match( alphaExp ) )
	{
		if ( ( elem.value.length > minLen ) && ( elem.value.length < maxLen ) )
		{
			eval( "elem.className = '"+styleOK+"'" );
			return formSubmit; 
		}
		else
		{
			eval( "elem.className = '"+styleERR+"'" );
			alert( errMsg );
			return false;
		}
	}
	else
	{
		if ( required )
		{
			eval( "elem.className = '"+styleERR+"'" );
			alert( errMsg );
			return false;
		}
		else
		{
			eval( "elem.className = '"+styleOK+"'" );
			return formSubmit; 
		}
	}
}

function formValidateMobileNumber( elem, elemImg, minLen, maxLen, required, styleOK, styleERR, errMsg, formSubmit )
{
	var alphaExp = /^[0-9a-zA-Z-\s\/]+$/;
	var mobilePrefixExp = /\b04/;
	if ( elem.value.match( alphaExp ) )
	{
	if ( ( elem.value.length > minLen ) && ( elem.value.length < maxLen ) && ( consecutiveNumbers(elem.value) == false ) && ( elem.value.match(mobilePrefixExp) == '04' ) && (isNumeric(elem.value) == true) )
		{ return formSubmit; }
		else { return false; }
	}
	else
	{
		if ( required ) { return false; }
		else { return formSubmit;  }
	}

}

function formValidatePhoneNumber( phoneElem, phoneElemImg, phoneACElem, required, StyleOK, styleERR, errMsg,formSubmit )
{
	var isEmptyPhoneNumber = false;
	var isEmptyPhoneAC = false;
	var isValidPhoneNumber = true;
	var isValidPhoneAC = true;
	var isBothEmpty = false;
	if ( phoneElem.value == '') { isEmptyPhoneNumber = true; }
	if ( phoneACElem.value == '') { isEmptyPhoneAC = true; }
	if ( isEmptyPhoneNumber && isEmptyPhoneAC ) { isBothEmpty = true; }
	if ( phoneElem.value.length != 8 ) { isValidPhoneNumber = false;  }
	if ( isNumeric(phoneElem.value) == false ) {isValidPhoneNumber = false;  } // match numeric
	if ( consecutiveNumbers(phoneElem.value) == true ) {isValidPhoneNumber = false;  }
	if ( phoneACElem.value == '') { isEmptyPhoneAC = true; }
	if ( phoneACElem.value.length != 2) { isValidPhoneAC = false; }
	if ( phoneACElem.value.charAt(0) != '0' ) { isValidPhoneAC = false; } // area code must start with '0'

	if ( ((isValidPhoneNumber == true) && (isValidPhoneAC == true)) || (isBothEmpty == true) )
	{ return formSubmit; }
	else { return false; }
}

function formValidateEmail( elem, elemImg, required, styleOK, styleERR, errMsg, formSubmit )
{
	var emailExp = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/;
	if( elem.value.match( emailExp ) )
	{ eval( "elem.className = '"+styleOK+"'" ); return formSubmit; }
	else
	{
		if ( required ) { eval( "elem.className = '"+styleERR+"'" ); return false; }
		else { eval( "elem.className = '"+styleOK+"'" ); return formSubmit; }
	}
}

function formValidatePrice( elem, elemImg, minLen, maxLen, required, styleOK, styleERR, errMsg )
{
	var numericExpression = /^$([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(\.[0-9]{1,2})?/; // /^\$?\-?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/;
	if ( elem.value.match( numericExpression ) )
	{
		if ( ( elem.value.length > minLen ) && ( elem.value.length < maxLen ) )
		{ return formSubmit; }
		else { return false; }
	}
	else
	{
		if ( required ) { return false; }
		else { return formSubmit; }
	}
}

function formValidatesSelect( elem, elemImg, defaultOption, required, styleOK, styleERR, errMsg, formSubmit )
{
	if ( required )
	{
		if ( elem.selectedIndex == defaultOption ) { eval( "elem.className = '"+styleERR+"'" ); alert( errMsg ); return false; }
		else { eval( "elem.className = '"+styleOK+"'" ); return formSubmit; }
	}
	else { eval( "elem.className = '"+styleOK+"'" ); return formSubmit; }
}

function formValidatesChecked( elem, elemImg, defaultOption, required, styleOK, styleERR, errMsg, formSubmit )
{
	if ( required )
	{
		if ( !elem.checked ) { return false; }
		else { return formSubmit; }
	}
	else { return formSubmit; }
}
