function isEmpty(s){ return ((s == null) || (s.length == 0)) }
function isWhitespace(s){
	var i;
	var whitespace = " \t\n\r";
	if (isEmpty(s)) return true;
	for (i = 0; i < s.length; i++){
		var c = s.charAt(i);
		if (whitespace.indexOf(c) == -1) return false;
	} return true
}

function IsNumber(FieldID)
{
	FieldValue = document.getElementById(FieldID).value;
	var checkOK = "0123456789";
	var allValid = true;
	var decPoints = 0;
	var allNum = "";
	for (i = 0;  i < FieldValue.length;  i++)
	{
		ch = FieldValue.charAt(i);
		for (j = 0;  j < checkOK.length;  j++)
		if (ch == checkOK.charAt(j))
			break;
		if (j == checkOK.length)
		{
		allValid = false;
		break;
		}
		allNum += ch;
	}
	return allValid;
}

function IsValidValue(FieldID,UserMsg)
{
	var FieldValue = document.getElementById(FieldID).value;
	for(i=0;i<FieldValue.length;i++)
	{
		if(!((FieldValue.charCodeAt(i) >= 97 && FieldValue.charCodeAt(i) <= 122) ||
			(FieldValue.charCodeAt(i) >= 65 && FieldValue.charCodeAt(i) <= 90) || FieldValue.match('[_\-]') ||
			(FieldValue.charCodeAt(i) >= 48 && FieldValue.charCodeAt(i) <= 57)))
		{
			alert(UserMsg);
    	 	document.getElementById(FieldID).focus();
	    	return false;
		}            
	} 
	return true;
	
}

function ValidateEmail(FieldID)
{
	FieldValue = document.getElementById(FieldID).value;
	var ReturnValue = true;
	var checkTLD=1;

	var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;

	var emailPat=/^(.+)@(.+)$/;

	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";

	var validChars="\[^\\s" + specialChars + "\]";

	var quotedUser="(\"[^\"]*\")";

	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;

	var atom=validChars + '+';

	var word="(" + atom + "|" + quotedUser + ")";

	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");

	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");

	var matchArray=FieldValue.match(emailPat);

	if (matchArray==null) ReturnValue = false;
	else
	{
		var user=matchArray[1];
		var domain=matchArray[2];

		for (i=0; i<user.length; i++) 
		{
			if (user.charCodeAt(i)>127) 
			{
				ReturnValue = false;
			}
		}
		for (i=0; i<domain.length; i++)
		{
			if (domain.charCodeAt(i)>127)
			{
				ReturnValue = false;
			}
		}

		// See if "user" is valid 

		if (user.match(userPat)==null) 
		{
			ReturnValue = false;
		}

		var IPArray=domain.match(ipDomainPat);
		if (IPArray!=null)
		{
			for (var i=1;i<=4;i++) 
			{
				if (IPArray[i]>255) 
				{
					ReturnValue = false;
				}
			}
		}

		var atomPat=new RegExp("^" + atom + "$");
		var domArr=domain.split(".");
		var len=domArr.length;
		for (i=0;i<len;i++) 
		{
			if (domArr[i].search(atomPat)==-1)
			{
				ReturnValue = false;
			}
		}

		if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1)
		{
			ReturnValue = false;
		}

		if (len<2) 
		{
			ReturnValue = false;
		}
	}
	return ReturnValue;
}

//check required field value
function CheckRequired(FieldID,UserMsg)
{
	FieldValue = document.getElementById(FieldID).value;
	if (FieldValue == "")
	{	
		alert(UserMsg);
		document.getElementById(FieldID).focus();
		return false;
	}
	return true;
}
//compair 2 fields values
function CompairFields(FieldID1,FieldID2,UserMsg)
{
	FieldValue1 = document.getElementById(FieldID1).value;
	FieldValue2 = document.getElementById(FieldID2).value;
	if (FieldValue1 != FieldValue2)
	{
		alert(UserMsg);
		document.getElementById(FieldID1).focus();
		return false;
	}
	return true;
}
//compair field with certain value limit
function CompairFieldValue(FieldID1,ValueLimit,UserMsg)
{
	FieldValue1 = document.getElementById(FieldID1).value;
	
	if (FieldValue1.length < ValueLimit)
	{
		alert(UserMsg);
		document.getElementById(FieldID1).focus();
		return false;
	}
	return true;
}