//EasiTrak alphanumeric data type
function ATypePress()
{
    var key, keychar;
	if (window.event)
		key = window.event.keyCode;
	else if (event)
		key = event.which;
	else
		return true;
		
	keychar = String.fromCharCode(key);
	//8=backspace
	if ((key == null) || (key == 0) || (key == 8))
		return true;
	else if ((key==9) || (key==10) || (key==13))   //tab, linefered, and carriage return key
	{
		return false;
	}
	else if (!isATypePattern(keychar))
    {
	    alert('\"' + keychar + '\" is an illegal character.');
        return false
    }
	else
		return true;
}
function textKeyPress(fieldId, maxLen)
{
    var field = document.getElementById(fieldId);
    if (field.value.length > maxLen)
    {
        return false;
    }
    else
    {
        return ATypePress();
    }
}

function isATypePattern(vText)
{
    var pattern = /^(~|!|#|\$|%|\^|\*|&|@|\(|\)|_|\+|\`|\-|\\|\/|=|:|;|\?|,|\.|\'|\"|\[|\]|\||\w| )*$/;
    return pattern.test(vText);
}
function isAtype(fieldId, maxLen)
{ 
    var vField = document.getElementById(fieldId);
    var vText = Trim(vField.value);
    
    //Take out empty species
    //Check the maximum number of characters
    if (vText.length > maxLen)
    {
        alert("The total number of characters must be less then or equal to " + maxLen);
        vField.focus();
        return false;
    }
    
    if (!isATypePattern(vText))
    {
        alert('All illegal characters including \"{, }, <, > and line return\" are not allowable');
        vField.focus();
        return false
    }
    
//    var vArray = new Array("{", "}", "<", ">", "\n");
//    //Check illegal characters
//    for (var i = 0; i < vArray.length; i++)
//    {
//        if (vText.indexOf(vArray[i]) >= 0)
//        {
//            alert("All illegal characters including \"{, }, <, >, and line return\" are not allowable");
//            vField.focus();
//            return false;
//        }
//    }

    vField.value = vText.toUpperCase();
    return true;
}

//check the street number and street name those all in the one text box
function isNumberStreet(fieldId, maxNumberLen, maxStreetLen)
{
    var vField = document.getElementById(fieldId);
    var vText = vField.value;
    var vArray = new Array("{", "}", "<", ">", "\n");
    //Check illegal characters
    for (var i = 0; i < vArray.length; i++)
    {
        if (vText.indexOf(vArray[i]) >= 0)
        {
            alert("All illegal characters including \"{, }, <, >, and line return\" are not allowable");
            vField.focus();
            return false;
        }
    }
    //Take out empty species
    vText = Trim(vText);
    //Check the maximum number of characters
    var iPos = getNumPos(vText);
    if (iPos > maxNumberLen)
    {
        alert("The total digits of street number must be less then or equal to " + maxNumberLen);
        vField.focus();
        return false;
    }
    if (vText.length - iPos > maxStreetLen)
    {
        alert("The characters number of street name must be less then or equal to " + maxStreetLen);
        vField.focus();
        return false;
    }

    vField.value = vText.toUpperCase();
    return true;
}

function LTrim(str)
{
    if (str == null){return null;}
    for (var i=0; str.charAt(i)==" "; i++);
    return str.substring(i, str.length);
}
function RTrim(str)
{
    if (str == null){return null;}
    for (var i=str.length-1; str.charAt(i)==" "; i--);
    return str.substring(0, i+1);
}
function Trim(str)
{
    return LTrim(RTrim(str));
}

function isAdigit(num) 
{
	if (num.length>1)
	{
		return false;
	}
	var string="1234567890";
	if (string.indexOf(num)!=-1)
	{
		return true;
	}
	return false;
}

function getNumPos(val)
{
	if (val==null || val==0)
	{
	    return 0;
	}
	var i;
	for(i=0;i<val.length;i++)
	{
		if(!isAdigit(val.charAt(i)))
		{
			return i;
		}
	}
	return i;
}

function numberAddressKeyPress(fieldId, numMax, maxLen)
{
    var field = document.getElementById(fieldId);
	if (ATypePress())
	{
		var val = field.value;
		var lenNum = getNumPos(val);
		var lenNumAllow = lenNum<numMax?lenNum:numMax;
		if ((val.length - lenNumAllow) > maxLen)
		{
		    field.value = val.substring(0, maxLen);
		}
	    return true;
	}
	else
	{
		return false;
	}
}

function toUpperCase(fieldId)
{
    var field = document.getElementById(fieldId);
    var vText = field.value;
    field.value = vText.toUpperCase();
}

function startNonDigit(fieldId, fieldNoId)
{
    var node = document.getElementById(fieldId);
    var nodeNo = document.getElementById(fieldNoId);
    var vText = node.value;
    if (vText.length > 0)
    {
        return true;
    }
    else
    {
	    var key, keychar;
	    if (window.event)
		    key = window.event.keyCode;
	    else if (event)
		    key = event.which;
	    else
		    return true;
    		
	    keychar = String.fromCharCode(key);
	    //8=backspace, 9=tab
	    if ((key == null) || (key == 0) || (key == 8) || (key == 9))
		    return true;
		else if (key == 32) //Empty space
		    return false;
	    else if (("0123456789").indexOf(keychar) > -1)
	    {
	        alert("Please enter the number into the street number text box.");
	        nodeNo.focus();
		    return false;
		}
	    else
		    return true;
    }
}

//Limit key press for digit value
function digitKeyPress()
{
	var key, keychar;
	if (window.event)
		key = window.event.keyCode;
	else if (event)
		key = event.which;
	else
		return true;
		
	keychar = String.fromCharCode(key);
	//8=backspace, 9=tab
	if ((key == null) || (key == 0) || (key == 8) || (key == 9))
		return true;
	else if (("0123456789").indexOf(keychar) > -1)
		return true;
	else
		return false;
}

//Limit key press for number value
function numberKeyPress()
{
	var key, keychar;
	if (window.event)
		key = window.event.keyCode;
	else if (event)
		key = event.which;
	else
		return true;
		
	keychar = String.fromCharCode(key);
	//8=backspace, 9=tab
	if ((key == null) || (key == 0) || (key == 8) || (key == 9))
		return true;
	else if (("0123456789.").indexOf(keychar) > -1)
		return true;
	else
		return false;
}

function isDigits(fieldId)
{
    var field = document.getElementById(fieldId);
	var val = field.value;
	var pattern = /^\d*$/;
	var patterValidate = pattern.test(val);
	
	//If is the patten valid
	if (patterValidate == false) 
	{
		alert ("It is not correct digits.");
		field.focus();
		return false;
	}
	else
	{
		return true;
	}
}

// check to see if input is number
function isNumber(fieldId)
{
    var field = document.getElementById(fieldId);
	var val = field.value;
	if (isNaN(val))
	{
		alert ("Please enter the correct number.");
		field.focus();
		return false;
	}
	else
	{
		return true;
	}
}

function NumberWithin(fieldId, min, max)
{
    if (isNumber(fieldId))
    {
        var field = document.getElementById(fieldId);
        var val = field.value
        if (val > max || val < min)
        {
		    alert ("The value must >= " + min + " and <= " + max);
		    field.focus();
		    return false;
        }
        else
        {
            return true;
        }
    }
    else
    {
        return false;
    }
}

//Used for GM quantity and density fields
function NumberWithinOr(fieldId, min, max, option)
{
    var field = document.getElementById(fieldId);
    if (isNumber(fieldId))
    {
        var val = field.value
        if (val == option)
        {
            return true;
        }
        else if (val > max || val < min)
        {
		    alert ("The value must >= " + min + " and <= " + max + " or equal " + option);
		    field.focus();
		    return false;
        }
        else
        {
            return true;
        }
    }
    else
    {
        field.focus();
        return false;
    }
}

function checkValueRange(fieldId, minValue, maxValue)
{
    checkMinValue(fieldId, minValue);
    checkMaxValue(fieldId, maxValue);
}
function checkMaxValue(fieldId, maxValue)
{
    var field = document.getElementById(fieldId);
	var val = field.value;
	if (val > maxValue)
	{
	    field.value = maxValue;
	}
}
function checkMinValue(fieldId, minValue)
{
    var field = document.getElementById(fieldId);
	var val = field.value;
	if (val < minValue)
	{
	    field.value = minValue;
	}
}

function moneyRegExp(field)
{
    var patter = /^\d+(\.\d{2})?$/;
    var node = document.getElementById(field);
    var vText = node.value;
    if (patter.test(vText) == false)
    {
    	alert ("The invalid currency value.");
		node.focus();
		return false;
    }
    else
    {
        return true;
    }
}

//Limit key press for digit value
function SSNKeyPress()
{
	var key, keychar;
	if (window.event)
		key = window.event.keyCode;
	else if (event)
		key = event.which;
	else
		return true;
		
	keychar = String.fromCharCode(key);
	//8=backspace, 9=tab
	if ((key == null) || (key == 0) || (key == 8) || (key == 9))
		return true;
	else if (("0123456789-").indexOf(keychar) > -1)
		return true;
	else
		return false;
}

function isSSN(fieldId)
{
    var patter = /^(\d{3})-?(\d{2})-?(\d{4})$/;
    var node = document.getElementById(fieldId);
    var vText = node.value;
    if (vText == "")
        return true;
    else if (patter.test(vText) == false)
    {
    	alert ("The invalid SSN value.");
		node.focus();
		return false;
    }
    else
    {
        if (vText.charAt(3) != "-")
            vText = vText.substring(0, 3) + "-" + vText.substring(3, vText.length);
        if (vText.charAt(6) != "-")
            vText = vText.substring(0, 6) + "-" + vText.substring(6, vText.length);
            
        node.value = vText;
        return true;
    }
}

function isEmail(fieldId)
{
    var patter = /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
//    var patter = /^([a-zA-Z][a-zA-Z1-9._-]*)@([a-zA-Z1-9._-]+)\.([a-zA-Z]{2}[a-zA-Z]?)$/;
    var node = document.getElementById(fieldId);
    var vText = node.value;
    if (vText == "")
        return true;
    else if (patter.test(vText) == false)
    {
    	alert ("The invalid email value.");
		node.focus();
		return false;
    }
    else
    {
        return true;
    }
}

function isHour(fieldId)
{
    var patter1 = /^([0-1][0-9])$/;
    var patter2 = /^(2[0-3])$/;
    var node = document.getElementById(fieldId);
    var vText = node.value;
    if (vText == "")
        return true;
    else if ((patter1.test(vText) == false) && (patter2.test(vText) == false))
    {
    	alert ("The invalid hour value.");
		node.focus();
		return false;
    }
    else
    {
        return true;
    }
}
function isMinute(fieldId)
{
    var patter = /^([0-5][0-9])$/;
    var node = document.getElementById(fieldId);
    var vText = node.value;
    if (vText == "")
        return true;
    else if (patter.test(vText) == false)
    {
    	alert ("The invalid minute value.");
		node.focus();
		return false;
    }
    else
    {
        return true;
    }
}
    
//Limit key press for digit value
function phoneKeyPress()
{
	var key, keychar;
	if (window.event)
		key = window.event.keyCode;
	else if (event)
		key = event.which;
	else
		return true;
		
	keychar = String.fromCharCode(key);
	//8=backspace, 9=tab
	if ((key == null) || (key == 0) || (key == 8) || (key == 9))
		return true;
	else if (("0123456789()-").indexOf(keychar) > -1)
		return true;
	else
		return false;
}

//function zipKeyPress()
//{
//	var key, keychar;
//	if (window.event)
//		key = window.event.keyCode;
//	else if (event)
//		key = event.which;
//	else
//		return true;
//		
//	keychar = String.fromCharCode(key);
//	//8=backspace, 9=tab
//	if ((key == null) || (key == 0) || (key == 8) || (key == 9))
//		return true;
//	else if (("0123456789-").indexOf(keychar) > -1)
//		return true;
//	else
//		return false;
//}
function zipKeyPress(countryId)
{
    var vCountry = document.getElementById(countryId).value;
    if (vCountry == "UNITED STATES")
    {
        return digitKeyPress();
    }
    else
    {
        return ATypePress();
    }
}


//Limit key press for digit value
function notEnterKeyPress()
{
	var key, keychar;
	if (window.event)
		key = window.event.keyCode;
	else if (event)
		key = event.which;
	else
		return true;
		
	keychar = String.fromCharCode(key);
	if ((key == 13) || (key == 27))
		return false;
	else
		return true;
}

