function filterInput(e) {
   // Get the regular expression to test against for this particular object
   regAllow = (e)?eval(e.allow):eval(event.srcElement.allow);
   if (event.keyCode == 13) {
 // Do nothing, i.e. allow.
 } else {
 // Check for valid input, if invalid, cancel this event.
 if (!String.fromCharCode(event.keyCode).match(regAllow)) event.returnValue=false;
 }
 }

function strtrim(b)
{
	if(isEmpty(b))
		return b;
	var i=0;
	while(b.charAt(i)==" ")
	{
		i++;
	}
	b=b.substring(i,b.length);
	len=b.length-1;
	while(b.charAt(len)==" ")
	{
		len--;
	}
	b=b.substring(0,len+1);
	return b;
}

//function to check valid zip code
function isZIP(s)
{
    if (isCharsInBag (s, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789") == false)
    {
        return false;
    }
    return true;
}

//function to check valid Telephone,. Fax no. etc
function isPhone(s)
{
	if(s.length < 5 || s.length > 16)
		return false;
	if (isCharsInBag (s, "- +()0123456789") == false)
    {
        return false;
    }
	if(s.indexOf('+') > 0)
	{
		return false;
	}
    return true;
}

//function to check valid US Telephone,. Fax no. etc
function isUsPhone(s1,s2,s3,t)
{
		phone_area=strtrim(s1.value);
		phone_extension=strtrim(s2.value);
		phone_number=strtrim(s3.value);

		if(phone_area.length != 3)
		{
			alert("Please enter valid '" +t +" Area'");
			s1.focus();
			s1.select();
			return false;
		}
		if(is_NaN(phone_area))
		{
			alert("'" +t +" Area' must be numeric");
			s1.select();
			return false;
		}
		if(phone_extension.length != 3)
		{
			alert("Please enter valid '" +t +" Extension'");
			s2.focus();
			s2.select();
			return false;
		}
		if(is_NaN(phone_extension))
		{
			alert("'" +t +" Extension' must be numeric");
			s2.focus();
			s2.select();
			return false;
		}
		if(phone_number.length != 4)
		{
			alert("Please enter valid '" +t +" Number'");
			s3.focus();
			s3.select();
			return false;
		}
		if(is_NaN(phone_number))
		{
			alert("'" +t +" Number' must be numeric");
			s3.focus();
			s3.select();
			return false;
		}
		return true;
}

//function to check valid numeric value without decimal
function is_NaN(s)
{
	if (isCharsInBag (s, "0123456789") == false)
    {
        return true;
    }
    return false;
}

//function to check valid numeric value with decimal
function is_Postive_Number(s)
{
	if (isCharsInBag (s, "0123456789.") == false)
    {
        return false;
    }
    return true;
}

function isEmpty(s)
{
	return ((s == null) || (s.length == 0))
}

//function to check valid email id
function isEmail(s)
{
	if (isCharsInBag (s, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_.-@") == false)
    {
        return false;
    }
	if(s.charAt(0) == '@' || s.charAt(0) == '.')
	{
		return false;
	}
	else if(s.charAt(s.length-1) == '@' || s.charAt(s.length-1) == '.')
	{
		return false;
	}
	else if(s.indexOf('@.') != -1 || s.indexOf('.@') != -1 || s.indexOf('..') != -1)
	{
		return false;
	}

	var i;
	var found1=false;
	var found2=false;
	var count1=0;
	for (i = 0; i < s.length; i++)
	{   
		// Check that current character isn't whitespace.
		if(s.charAt(i)== ' ') {found1=true;found2=true;count1=2;}
		if(s.charAt(i)== '@') {found1=true;count1++;}
		if(s.charAt(i)== '.') {found2=true;}
	}
	if(found1==true && found2==true)
	{	
		if(count1 > 1)
			return false;
		else
		    return true;
	}
	else
	{
		return false;
	}
	return true;
}

function isDate(strdate) 
{ 
	// alert(strdate)
	var datedelimiter = '/';
	var datesplit = strdate.split(datedelimiter)
	if (datesplit.length > 3) {return false;}
	var month = 0; 
	month = datesplit[0];
	if (month < 1 || month >12 ) {return false;}
	if (isNaN(datesplit[0])) 
	{
		return false;
	}
	else if (isNaN(datesplit[1])) 
	{
		return false;
	}
	else if (isNaN(datesplit[2])) 
	{
		return false;
	}
	else 
	{
		//var year = parseInt(datesplit[2],10);
        var yearLn = (datesplit[2].length);
		var year= datesplit[2];
	    if (yearLn==1){return false;}
		if (yearLn==3){return false;}
	    if (year<1){return false;}
	    if (yearLn==2)
		{
			year = '20'+ year
		}
		//var year = year;
		// alert(year)
	    if(year<2000) {return false;}
		if(year>2999) {return false;}

	    // var year = (datesplit[2],10);
		var day = parseInt(datesplit[1],10);
		if(day<0){return false;}
		if (day>31){return false;}
	    if ((day > 30) && ((month == 4) || (month == 6) || (month == 9) || (month == 11))) {return false;}
		if (month == 2)
		{
			// This calculates the basic leap year no matter the format, i.e. 2000 or 00. 
			var leap = ((year/4) == parseInt(year/4))
			if (leap) 
			{
				if (day > 29) {return false;}
			}
			else
			{
				if (day > 28) {return false;}
			}
		}
	}
    return true;
}

function isbigdateTime(StDate, StTime, EdDate, EdTime)
{
	//alert('start' + StTime + 'end' + EdTime)
	//var DTDelimiter = ' ';
	var DateDelimiter='/';
	var TimeDelimiter=':';
	
	//Split start date and time.
	//var StDTSplit = StDateTime.split(DTDelimiter);
	//if (StDTSplit.length>2){return false;}
	//var StDate=StDTSplit[0];
	//var StTime=StDTSplit[1];
	var StDSplit = StDate.split(DateDelimiter);//Splite date into MM/DD/YYYY
	//alert(StDSplit.length)
	if (StDSplit.length>3){return false;}
	var StMM=parseInt(StDSplit[0]);
	var StDD=parseInt(StDSplit[1]);
	var StYY=parseInt(StDSplit[2]);
	var StTSplit = StTime.split(TimeDelimiter);//Splite time into H:M
	if (StTSplit.length>2){return false;}
	var StH=StTSplit[0];
	var StM=StTSplit[1];
	//alert('StMM' + StMM + '  StDD' + StDD + '  StYY' + StYY + '  StH' + StH + '  StM' 
	//+ StM);
	
	//Split end date and time.
	//var EdDTSplit = EdDateTime.split(DTDelimiter);
	//if (EdDTSplit.length>2){return false;}
	//var EdDate=EdDTSplit[0];
	//var EdTime=EdDTSplit[1];
	var EdDSplit = EdDate.split(DateDelimiter);//Splite date into MM/DD/YYYY
	if (EdDSplit.length>3){return false;}
	
	var EdMM=parseInt(EdDSplit[0]);
	var EdDD=parseInt(EdDSplit[1]);
	var EdYY=parseInt(EdDSplit[2]);
	var EdTSplit = EdTime.split(TimeDelimiter);//Splite time into H:M
	//alert(EdTSplit.length)
	if (EdTSplit.length>2){return false;}
	var EdH=EdTSplit[0];
	var EdM=EdTSplit[1];
	//alert('time'+ EdH)
	//alert('EdMM' + EdMM + '  EdDD' + EdDD + '  EdYY' + EdYY + '  EdH' + EdH + '  EdM' 
	//+ EdM);
	
	if(StYY>EdYY)
	{
	    form1.txtDateEnd.focus()
		return false;
	}
	else if(StYY==EdYY && StMM>EdMM){return false;}	
	else if(StYY==EdYY && StMM==EdMM && StDD>EdDD){return false;}	
	else if(StYY==EdYY && StMM==EdMM && StDD==EdDD && StH>EdH)
	{
		//alert("time HH")
		form1.selEndTime.focus(); 
		return false;
	}
	else if(StYY==EdYY && StMM==EdMM && StDD==EdDD && StH==EdH && StM>=EdM)
	{
		//alert("time MM")
		form1.selEndTime.focus(); 
		//form.selEndTime.focus();
		return false;
	}
	return true;	
}

function openWindow(width,height,URL,title)
{
	window.open(URL,'',"height=" + height + ",width=" + width + ",status=yes,toolbar=no,scrollbars=yes,menubar=no,location=no");
}

function isURL(argvalue)
{
	if (isCharsInBag (argvalue, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_.-~/\\:?&% ") == false)
    {
        return false;
    }
	if(argvalue.indexOf("http://")<0 && argvalue.indexOf("https://")<0)
	{
		return false;
	}

	if (argvalue.indexOf(" ") != -1)
		return false;
	else if (argvalue == "http://")
	    return false;
	else if (argvalue.indexOf("http://") > 0)
		return false;
	argvalue = argvalue.substring(7, argvalue.length);

	if (argvalue.indexOf(".") == -1)
		return false;
	else if (argvalue.indexOf(".") == 0)
	    return false;
	else if (argvalue.charAt(argvalue.length - 1) == ".")
	    return false;
	else if (argvalue.lastIndexOf(".") > argvalue.length - 3)
	    return false;
	
	if (argvalue.indexOf("/") != -1) 
	{
		argvalue = argvalue.substring(0, argvalue.indexOf("/"));
		if (argvalue.charAt(argvalue.length - 1) == ".")
		{
			return false;
		}			
	}

	if (argvalue.indexOf(":") != -1) 
	{
		if (argvalue.indexOf(":") == (argvalue.length - 1))
		{
			return false;
		}
	    else if (argvalue.charAt(argvalue.indexOf(":") + 1) == ".")
		{
			return false;
			argvalue = argvalue.substring(0, argvalue.indexOf(":"));
			if (argvalue.charAt(argvalue.length - 1) == ".")
			{
				return false;
			}
		}
	}
	return true;
}

function isCharsInBag (s, bag)
{
    var i;
    // Search through string's characters one by one.
    // If character is in bag, append to returnString.
 
    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) return false;
    }
    return true;
}

function isValidUsZip(zip)
{
	if(zip.length != 5 && zip.length != 10)
		return false;
	for(x=0;x<zip.length;x++)
	{
		chr = zip.charAt(x);
		if(x == 5)
		{
			if(chr != '-')
				return false;
		}
		else if(isCharsInBag (chr, "0123456789") == false)
		{
			return false;
		}
	}
	return true;
}

// FOR PASSWORD, CONFIRMATION CODE, USER ID
function is_Alpha_Numeric(s)
{
    if (isCharsInBag (s, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 _-") == false)
    {
        return false;
    }
    return true;
}

// FOR TEXT AREA FIELDS
function isAlphaNumeric(s)
{
    if (isCharsInBag (s, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ,_.-&$%!()\r\n'") == false)
    {
        return false;
    }
    return true;
}

// FOR TEXT AREA FIELDS
function isAlphaNumericText(s)
{
    if (isCharsInBag (s, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ,_.-&$%!'()\r\n") == false)
    {
        return false;
    }
    return true;
}

// FOR ADDRESS
function isAlphaNum(s)
{
    if (isCharsInBag (s, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ,_.-#'") == false)
    {
        return false;
    }
    return true;
}

// FOR Overseas CITY, ADDRESS
function isAlphaNumOver(s)
{
    if (isCharsInBag (s, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ,_.-#'()][") == false)
    {
        return false;
    }
    return true;
}



// FOR PERSON NAME, CITY AND STATE
function isAlphabets(s)
{
    if (isCharsInBag (s, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ '") == false)
    {
        return false;
    }
    return true;
}

// FOR BUSINESS NAME & CATEGORY NAME
function isValid(s)
{
    if (isCharsInBag (s, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 _.-&/'") == false)
    {
        return false;
    }
    return true;
}

function textCounter(field,cntfield,maxlimit) 
{
	if (field.value.length > maxlimit) // if too long...trim it!
		field.value = field.value.substring(0, maxlimit);
		// otherwise, update 'characters left' counter
	else
		cntfield.value = maxlimit - field.value.length;
}

// FOR PASSWORD, CONFIRMATION CODE, USER ID
function is_Alpha_Digits(s)
{
    if (isCharsInBag (s, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789") == false)
    {
        return false;
    }
    return true;
}


function isValidCC(type, ccnum) 
{
	if (type == "Visa") 
	{
		// Visa: length 16, prefix 4, dashes optional.
		var re = /^4\d{3}-?\d{4}-?\d{4}-?(\d{4}|\d{1})$/;
	}
	else if (type == "MasterCard") 
	{
		// Mastercard: length 16, prefix 51-55, dashes optional.
		var re = /^5[1-5]\d{2}-?\d{4}-?\d{4}-?\d{4}$/;
	} 
	else if (type == "Discover") 
	{
		// Discover: length 16, prefix 6011, dashes optional.
		var re = /^6011-?\d{4}-?\d{4}-?\d{4}$/;
	}
	else if (type == "American Express") 
	{
		// American Express: length 15, prefix 34 or 37.
		var re = /^3[4,7]\d{13}$/;
	}
	else if (type == "Diners") 
	{
		// Diners: length 14, prefix 30, 36, or 38.
		var re = /^3[0,6,8]\d{12}$/;
	}

	if (re.test(ccnum)) 
		return true;
	else
		return false;

	/*
	// Checksum ("Mod 10")
	// Add even digits in even length strings or odd digits in odd length strings.
	var checksum = 0;
	for (var i=(2-(ccnum.length % 2)); i<=ccnum.length; i+=2) {
		  checksum += parseInt(ccnum.charAt(i-1));
	}
	// Analyze odd digits in even length strings or even digits in odd length strings.
	for (var i=(ccnum.length % 2) + 1; i<ccnum.length; i+=2) {
	   var digit = parseInt(ccnum.charAt(i-1)) * 2;
		if (digit < 10) { checksum += digit; } else { checksum += (digit-9); }
	}
	if ((checksum % 10) == 0) return true; else return false;
	*/
}

function isFutureDate(year, month) 
{
	if (is_NaN(year+""))
		return false;
	if (is_NaN(month+""))
		return false;
	today = new Date();
	expiry = new Date(year, month);
	if (today.getTime() > expiry.getTime())
		return false;
	else
		return true;
}