//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 = vField.value.replace(/^\s+|\s+$/g,""); //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.value = vText.SUBSTRING(1, maxLen);
        vField.focus();
        return false;
    }
    
    if (!isATypePattern(vText))
    {
        alert('All illegal characters including \"{, }, <, > and line return\" are not allowable');
        vField.value = "";
        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 = vText.replace(/^\s+|\s+$/g,""); //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.value = "";
        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.value = "";
        vField.focus();
        return false;
    }

    vField.value = vText.toUpperCase();
    return true;
}

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 (!isDigitPattern(keychar))
		return false;		
	else 
		return true;
}

//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 isAdigit(num) 
{
	if (num.length>1)
	{
		return false;
	}
	var string="1234567890";
	if (string.indexOf(num)!=-1)
	{
		return true;
	}
	return false;
}
function isDigitPattern(vText)
{
    var pattern = pattern = /^\d*$/;
    return pattern.test(vText);
}
function isDigits(fieldId)
{
    var field = document.getElementById(fieldId);
	var val = field.value;
	
	//If is the patten valid
	if (!isDigitPattern(val))
	{
		alert ("It is not correct digits number.");
		field.value = "";
		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 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;
    }
}
    
function isPhone(fieldId)
{
    var pattern = /^(\(|\)|\-|[0-9]| )*$/;
    var node = document.getElementById(fieldId);
    var vText = node.value;
    if (vText == "")
        return true;
    else if (patter.test(vText) == false)
    {
    	alert (vText + " is an invalid phone number.");
    	node.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(countryId)
{
    var vCountry = document.getElementById(countryId);
    if (vCountry==null || vCountry.value == "" || vCountry.value == "US" || vCountry.value == "UNITED STATES")
    {
        return digitKeyPress();
    }
    else
    {
        return ATypePress();
    }
}
function isZip(countryId, fieldId)
{
    var vCountry = document.getElementById(countryId);
    if (vCountry==null || vCountry.value == "" || vCountry.value == "US" || vCountry.value == "UNITED STATES")
    {
        return isDigits(fieldId);
    }
    else
    {
        return isAtype(fieldId, 8);
    }
}
//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;
}

