function trim(s) {
	return s.replace( /^\s*/, "" ).replace( /\s*$/, "" );
 }

 function checkEmail(emailStr) {
 	if (emailStr.length == 0) {
        	return true;
        }
        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=emailStr.match(emailPat);
        if (matchArray == null) {
        	return false;
        }
        var user=matchArray[1];
        var domain=matchArray[2];
        if (user.match(userPat) == null) {
        	return false;
        }
        var IPArray = domain.match(ipDomainPat);
        if (IPArray != null) {
        	for (var i = 1; i <= 4; i++) {
                	if (IPArray[i] > 255) {
                         return false;
                      	}
                }
                return true;
        }
        var domainArray=domain.match(domainPat);
        if (domainArray == null) {
        	return false;
        }
        var atomPat=new RegExp(atom,"g");
        var domArr=domain.match(atomPat);
        var len=domArr.length;
        if ((domArr[domArr.length-1].length < 2) ||
        	(domArr[domArr.length-1].length > 3)) {
                return false;
        }
        if (len < 2) {
        	return false;
        }
        return true;
}

function validateEmail(object){
    if(checkEmail(object.value)==false){
        alert("Please enter a valid email address");
        return false;
    }
    return true;
}

function validateRequired(object,errorMsg){
    if(object.value==null || trim(object.value)==""){
        alert(errorMsg);
        return false;
    }
    return true;
}
//
function validateRequiredNoMsg(object){
    if(object.value==null || trim(object.value)==""){
        return false;
    }
    return true;
}
function isAllDigits(argvalue) {
	argvalue = argvalue.toString();
        var validChars = "0123456789";
        var startFrom = 0;
        if (argvalue.substring(0, 2) == "0x") {
        	validChars = "0123456789abcdefABCDEF";
                   startFrom = 2;
        } else if (argvalue.charAt(0) == "-") {
        	startFrom = 1;
        }
        for (var n = startFrom; n < argvalue.length; n++) {
        	if (validChars.indexOf(argvalue.substring(n, n+1)) == -1) return false;
        }
        return true;
}
function isAllPositiveDigits(argvalue) {
	argvalue = argvalue.toString();
        var validChars = "0123456789";
        var startFrom = 0;
        if (argvalue.substring(0, 2) == "0x") {
        	validChars = "0123456789abcdefABCDEF";
                   startFrom = 2;
        } else if (argvalue.charAt(0) == "0") {
        	validChars = "01234567";
                startFrom = 1;
        }
        for (var n = startFrom; n < argvalue.length; n++) {
        	if (validChars.indexOf(argvalue.substring(n, n+1)) == -1) return false;
        }
        return true;
}
function validateInteger(object,errorMsg){
    var value=trim(object.value);
    var bValid=true;
    if (value.length > 0) {
    	if (!isAllDigits(value)) {
        	bValid=false;
        } else {
        	var iValue = parseInt(value);
                if (isNaN(iValue) || !(iValue >= -2147483648 && iValue <= 2147483647)) {
                        bValid = false;
                }
        }
        if(bValid==false){
            alert(object.name + " has to be a integer.");
        }
        return bValid;
    }
}

function validatePositiveInteger(object,errorMsg){
    var value=trim(object.value);
    var bValid=true;
    if (value.length > 0) {
    	if (!isAllDigits(value)) {
        	bValid=false;
        } else {
        	var iValue = parseInt(value);
                if (isNaN(iValue) || (iValue > 2147483647) || (iValue<=0)) {
                        bValid = false;
                }
        }
        if(bValid==false){
            alert(errorMsg);
        }
        return bValid;
    }
}
function validatePositiveIntegerAllowZero(object,errorMsg){
    var value=trim(object.value);
    var bValid=true;
	if (value.length > 0) {
    	if (!isAllDigits(value)) {
        	bValid=false;
        } else {
        	var iValue = parseInt(value);
                if (isNaN(iValue) || (iValue > 2147483647) || (iValue<0)) {
                        bValid = false;
                }
        }
        if(bValid==false){
            alert(errorMsg);
        }
        return bValid;
    }
}

function validatePositiveNumber(object,errorMsg){
    var value=trim(object.value);
    var bValid=true;
    if (value.length > 0) {
    	if (!isAllPositiveDigits(value)) {
        	bValid=false;
        }
        if(bValid==false){
            alert(errorMsg);
        }
        return bValid;
    }
}

function validateRealNumber(object,errorMsg){
    var value=trim(object.value);
    var bValid=true;
    if (value.length > 0) {
    	if (!isAllPositiveDigits(value)) {
        	bValid=false;
        } else {
                if (isNaN(value)) {
                        bValid = false;
                }
        }
        if(bValid==false){
            alert(errorMsg);
        }
        return bValid;
    }
}

// Validate float number
function validateFloat(argValue, errorMsg) {
    var value = argValue.value;
    var bValid = true;

    if (value.length > 0) {
	// remove '.' before checking digits
        var tempArray = value.split('.');
        var joinedString= tempArray.join('');
        if (!isAllDigits(joinedString)) {
            bValid = false;
        } else {
            var iValue = parseFloat(value);
            if (isNaN(iValue)) {
		bValid = false;
            }
        }
    }

    if(bValid==false){
        alert(errorMsg);
    }
    return bValid;
}


// encodeText
function encodeText(input) {
  	if (input == "") {
            return input;
        }

        input = input.replace(/&/g, "&amp;");
	input = input.replace(/</g, "&lt;");
	input = input.replace(/>/g, "&gt;");
	input = input.replace(/\"/g, "&quot;");
	input = input.replace(/\'/g, "&#039;");

	return input
} // encodeText(input)


// decodeText
function decodeText(input) {
  	if (input == "") {
            return input;
        }

        input = input.replace(/&amp;/g, "&");
	input = input.replace(/&#038;/g, "&");
	input = input.replace(/&lt;/g, "<");
	input = input.replace(/&#060;/g, "<");
	input = input.replace(/&gt;/g, ">");
	input = input.replace(/&#062;/g, ">");
	input = input.replace(/&quot;/g, "\"");
	input = input.replace(/&#034;/g, "\"");
	input = input.replace(/&#039;/g, "\'");

	return input
} // decodeText(input)

//compare 2 days
  function compareLessDate(strDate1,strDate2)
   {

	var arrDate1=strDate1.split("/");
	var arrDate2=strDate2.split("/");
        if(arrDate1[2]>arrDate2[2] ){//from year > to year => wrong
        	return false;
        }
        if(arrDate1[2]<arrDate2[2] ){//from year > to year => wrong
        	return true;
        }
        if(arrDate1[2]==arrDate2[2] ){//from year = to year
        	if(arrDate1[0]>arrDate2[0] ){//from month > to month => wrong
        		return false;
        	}
        	if(arrDate1[0]<arrDate2[0] ){//from month > to month => true
        		return true;
        	}
        	if(arrDate1[0]==arrDate2[0] ){//from month = to month =>
        		if(arrDate1[1]<=arrDate2[1] ){//from month > to month => true
        			return true;
	        	}else{
                            return false;
                        }
        	}
        }
}

function openNewWindow(appPath, fileName, size){
    if (helpBox != null && !helpBox.closed) {
        helpBox.close();
    }
    if (size == 1) {
        size = "width=500,height=140";
    }
    else
    {
        size = "width=400,height=100";
    }
    helpBox = window.open(appPath + "/jsp/" + fileName ,"_blank","scrollbars=yes,resizable=no," + size + ",location=no,menubar=no,status=no,titlebar=no,toolbar=no");
}

function isDecimalNumber(argValue, errorMsg) {
    var value = trim(argValue.value);
    var bValid = true;

    for (i = 0; i < value.length; i++) {
        if (value.charAt(i) < '0' || value.charAt(i) > '9') {
            bValid = false;
            break;
        }
    }

    if (bValid == false) {
        alert(errorMsg);
    }

    return bValid;
}

function isHidden(argValue) {
    var value = trim(argValue.value);
    var bValid = true;

    for (i = 0; i < value.length; i++) {
        if (value.charAt(i) != 'x' && value.charAt(i) != 'X') {
            bValid = false;
            break;
        }
    }

    return bValid;
}

/* Support for registering Web EDI service - Begin */

function onclickRegisterWebEDI(fieldName1, fieldName2) {
    var myForm = document.forms[0];
    var myField1 = eval("myForm." + fieldName1);
    var myField2 = eval("myForm." + fieldName2);

	if (myField1.checked)
	{
		myField2.disabled = false;
	}
	else {
		myField2.value = "";
		myField2.disabled = true;
	}
}

/* Support for registering Web EDI service - End */
/* Script for check valid phone number */
function isInteger(s)
{   var i;
    for (i = 0; i < s.length; i++)
    {
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}
function stripCharsInBag(s, bag)
{   var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++)
    {
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

/* /Script for check valid phone number */
function digitValidation(entered, digit, alertbox)
{
    with (entered)
    {
                    var value = trim(entered.value);
                    var bValid = true;
                    for (i = 0; i < value.length; i++) {
                            if (value.charAt(i) < '0' || value.charAt(i) > '9') {
                                    bValid = false;
                                    break;
                            }
                    }

                    if ((parseFloat(digit)<=digit && value.length<digit) || (parseFloat(digit)<=digit && value.length>digit) || bValid==false)
        {
            if (alertbox!="") {alert(alertbox);} return false;
        }
        else {return true;}
    }
}

/**
 * Reference: http://www.ling.nwu.edu/~sburke/pub/luhn_lib.pl
 */
function luhnCheck(cardNumber) {
    if (isLuhnNum(cardNumber)) {
        var no_digit = cardNumber.length;
        var oddoeven = no_digit & 1;
        var sum = 0;
        for (var count = 0; count < no_digit; count++) {
            var digit = parseInt(cardNumber.charAt(count));
            if (!((count & 1) ^ oddoeven)) {
                digit *= 2;
                if (digit > 9) digit -= 9;
            };
            sum += digit;
        };
        if (sum == 0) return false;
        if (sum % 10 == 0) return true;
    };
    return false;
}

function isLuhnNum(argvalue) {
    argvalue = argvalue.toString();
    if (argvalue.length == 0) {
        return false;
    }
    for (var n = 0; n < argvalue.length; n++) {
        if ((argvalue.substring(n, n+1) < "0") ||
            (argvalue.substring(n,n+1) > "9")) {
            return false;
        }
    }
    return true;
}


function verifyIP (IPvalue) {
    errorString = "";
    theName = "IPaddress";

    var ipPattern = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
    var ipArray = IPvalue.match(ipPattern);

    if (IPvalue == "0.0.0.0")
    	errorString = errorString + theName + ': '+IPvalue+' is a special IP address and cannot be used here.';
    else if (IPvalue == "255.255.255.255")
	errorString = errorString + theName + ': '+IPvalue+' is a special IP address and cannot be used here.';
    if (ipArray == null)
	errorString = errorString + theName + ': '+IPvalue+' is not a valid IP address.';
    else {
	for (i = 0; i < 4; i++) {
	    thisSegment = ipArray[i];
            if (thisSegment > 255) {
		errorString = errorString + theName + ': '+IPvalue+' is not a valid IP address.';
		i = 4;
            }
            if ((i == 0) && (thisSegment > 255)) {
		errorString = errorString + theName + ': '+IPvalue+' is a special IP address and cannot be used here.';
		i = 4;
            }
	}
    }
    extensionLength = 3;

    if (errorString == "")
    	return true;
    else {
	alert (errorString);
        return false;
    }

}

