/**
 *  Removes leading and trailing spaces from the passed string. Also removes
 *  consecutive spaces and replaces it with one space. If something besides
 *  a string is passed in (null, custom object, etc.) then return the input.
 */
function trim(inputString) {
   if (typeof inputString != "string") { return inputString; }
   var retValue = inputString;
   var ch = retValue.substring(0, 1);
   while (ch == " ") { // Check for spaces at the beginning of the string
      retValue = retValue.substring(1, retValue.length);
      ch = retValue.substring(0, 1);
   }
   ch = retValue.substring(retValue.length-1, retValue.length);
   while (ch == " ") { // Check for spaces at the end of the string
      retValue = retValue.substring(0, retValue.length-1);
      ch = retValue.substring(retValue.length-1, retValue.length);
   }
   while (retValue.indexOf("  ") != -1) { // Note that there are two spaces in the string - look for multiple spaces within the string
      retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length); // Again, there are two spaces in each of the strings
   }
   return retValue; // Return the trimmed string back to the user
} // Ends the "trim" function

function numberOnly(key){
	if (key>=48 && key<=57 || key == 46) {
		return true;
	} else {
		return false;
	}
}

function numberOnly2(key){
	if ((key>=48 && key<=57) || key == 45 || key == 46 ) {
		return true;
	} else {
		return false;
	}
}

function checkValidDate(dateStr) {
    // dateStr must be of format month day year with either slashes
    // or dashes separating the parts. Some minor changes would have
    // to be made to use day month year or another format.
    // This function returns True if the date is valid.
    var slash1 = dateStr.indexOf("-");
    // if no slashes or dashes, invalid date
    if (slash1 == -1) { return false; }
    //var dateMonth = dateStr.substring(0, slash1);
    //var dateMonthAndYear = dateStr.substring(slash1+1, dateStr.length);
    var dateYear = dateStr.substring(0, slash1);
    var dateMonthAndDay = dateStr.substring(slash1+1, dateStr.length);
    var slash2 = dateMonthAndDay.indexOf("-");
    // if not a second slash or dash, invalid date
    if (slash2 == -1) { return false; }
    //var dateDay = dateMonthAndYear.substring(0, slash2);
    //var dateYear = dateMonthAndYear.substring(slash2+1, dateMonthAndYear.length);
    var dateMonth = dateMonthAndDay.substring(0, slash2);
    var dateDay = dateMonthAndDay.substring(slash2+1, dateMonthAndDay.length);
    if ( (dateMonth == "") || (dateDay == "") || (dateYear == "") ) { return false; }
    if ( (dateMonth.length != 2) || (dateDay.length != 2) || (dateYear.length != 4) ) { return false; }
    // if any non-digits in the month, invalid date
    for (var x=0; x < dateMonth.length; x++) {
        var digit = dateMonth.substring(x, x+1);
        if ((digit < "0") || (digit > "9")) { return false; }
    }
    // convert the text month to a number
    var numMonth = 0;
    for (var x=0; x < dateMonth.length; x++) {
        digit = dateMonth.substring(x, x+1);
        numMonth *= 10;
        numMonth += parseInt(digit);
    }
    if ((numMonth <= 0) || (numMonth > 12)) { return false; }
    // if any non-digits in the day, invalid date
    for (var x=0; x < dateDay.length; x++) {
        digit = dateDay.substring(x, x+1);
        if ((digit < "0") || (digit > "9")) { return false; }
    }
    // convert the text day to a number
    var numDay = 0;
    for (var x=0; x < dateDay.length; x++) {
        digit = dateDay.substring(x, x+1);
        numDay *= 10;
        numDay += parseInt(digit);
    }
    if ((numDay <= 0) || (numDay > 31)) { return false; }
    // February can't be greater than 29 (leap year calculation comes later)
    if ((numMonth == 2) && (numDay > 29)) { return false; }
    // check for months with only 30 days
    if ((numMonth == 4) || (numMonth == 6) || (numMonth == 9) || (numMonth == 11)) {
        if (numDay > 30) { return false; }
    }
    // if any non-digits in the year, invalid date
    for (var x=0; x < dateYear.length; x++) {
        digit = dateYear.substring(x, x+1);
        if ((digit < "0") || (digit > "9")) { return false; }
    }
    // convert the text year to a number
    var numYear = 0;
    for (var x=0; x < dateYear.length; x++) {
        digit = dateYear.substring(x, x+1);
        numYear *= 10;
        numYear += parseInt(digit);
    }
    // Year must be a 2-digit year or a 4-digit year
    if ( (dateYear.length != 2) && (dateYear.length != 4) ) { return false; }
    // if 2-digit year, use 50 as a pivot date
    if ( (numYear < 50) && (dateYear.length == 2) ) { numYear += 2000; }
    if ( (numYear < 100) && (dateYear.length == 2) ) { numYear += 1900; }
    if ((numYear <= 0) || (numYear > 9999)) { return false; }
    // check for leap year if the month and day is Feb 29
    if ((numMonth == 2) && (numDay == 29)) {
        var div4 = numYear % 4;
        var div100 = numYear % 100;
        var div400 = numYear % 400;
        // if not divisible by 4, then not a leap year so Feb 29 is invalid
        if (div4 != 0) { return false; }
        // at this point, year is divisible by 4. So if year is divisible by
        // 100 and not 400, then it's not a leap year so Feb 29 is invalid
        if ((div100 == 0) && (div400 != 0)) { return false; }
    }
    // date is valid
    return true;
}

function checkSsn(s){
    var c, n, i;
    var t= "ABCDEFGHJKLMNPQRSTUVXYWZIO";

    c= s.substring(0,1);
    c= t.indexOf(c.toUpperCase());
    if((s.length!= 10) || (c<0)) return false;

    n= parseInt(c/10)+ c%10*9+ 1;
    for(i=1; i<9; i++) n= n+ parseInt(s.substring(i,i+1))* (9-i);
    n= (10- (n% 10))% 10;
    if(n!= parseInt(s.substring(9,10))) return false;

    return true;
}

function checkUnno(value) {
    var sum = 0;
    xArray = new Array(8);
    yArray = new Array(8);
    if(!/[0-9]{8}/.test(value)){
        return false;
    }
    for(i=0; i<8; i++){
        xArray[i] = parseFloat(value.charAt(i));
    }
    yArray[0] = xArray[0]*1;
    yArray[1] = xArray[1]*2;
    yArray[2] = xArray[2]*1;
    yArray[3] = xArray[3]*2;
    yArray[4] = xArray[4]*1;
    yArray[5] = xArray[5]*2;
    yArray[6] = xArray[6]*4;
    yArray[7] = xArray[7]*1;
    for(i=0; i<8; i++){
        if(yArray[i] >= 10){
            var j;
            j = yArray[i]%10;
            yArray[i] = (yArray[i]-j)/10+j;
        }
        sum += yArray[i];
    }
    if(sum%10 == 0){
        return true;
    } else if(xArray[6] == 7){
        if((sum+1)%10 != 0){
            return false;
        }
        return true;
    } else {
        return false;
    }
    return true;
}

// Original JavaScript code by Duncan Crombie: dcrombie@chirp.com.au
// Please acknowledge use of this code by including this header.

// CONSTANTS
var separator = ",";  // use comma as 000's separator
var decpoint = ".";  // use period as decimal point
var percent = "%";
var currency = "$";  // use dollar sign for currency

function formatNumber(number, format, print) {  // use: formatNumber(number, "format")
    if (print) document.write("formatNumber(" + number + ", \"" + format + "\")<br>");

    if (number - 0 != number) return null;  // if number is NaN return null
    var useSeparator = format.indexOf(separator) != -1;  // use separators in number
    var usePercent = format.indexOf(percent) != -1;  // convert output to percentage
    var useCurrency = format.indexOf(currency) != -1;  // use currency format
    var isNegative = (number < 0);
    number = Math.abs (number);
    if (usePercent) number *= 100;
    format = strip(format, separator + percent + currency);  // remove key characters
    number = "" + number;  // convert number input to string

     // split input value into LHS and RHS using decpoint as divider
    var dec = number.indexOf(decpoint) != -1;
    var nleftEnd = (dec) ? number.substring(0, number.indexOf(".")) : number;
    var nrightEnd = (dec) ? number.substring(number.indexOf(".") + 1) : "";

     // split format string into LHS and RHS using decpoint as divider
    dec = format.indexOf(decpoint) != -1;
    var sleftEnd = (dec) ? format.substring(0, format.indexOf(".")) : format;
    var srightEnd = (dec) ? format.substring(format.indexOf(".") + 1) : "";

     // adjust decimal places by cropping or adding zeros to LHS of number
    if (srightEnd.length < nrightEnd.length) {
        var nextChar = nrightEnd.charAt(srightEnd.length) - 0;
        nrightEnd = nrightEnd.substring(0, srightEnd.length);
        if (nextChar >= 5) nrightEnd = "" + ((nrightEnd - 0) + 1);  // round up

 // patch provided by Patti Marcoux 1999/08/06
        while (srightEnd.length > nrightEnd.length) {
            nrightEnd = "0" + nrightEnd;
        }

        if (srightEnd.length < nrightEnd.length) {
            nrightEnd = nrightEnd.substring(1);
            nleftEnd = (nleftEnd - 0) + 1;
        }
    } else {
        for (var i=nrightEnd.length; srightEnd.length > nrightEnd.length; i++) {
            if (srightEnd.charAt(i) == "0") nrightEnd += "0";  // append zero to RHS of number
            else break;
        }
    }

     // adjust leading zeros
    sleftEnd = strip(sleftEnd, "#");  // remove hashes from LHS of format
    while (sleftEnd.length > nleftEnd.length) {
        nleftEnd = "0" + nleftEnd;  // prepend zero to LHS of number
    }

    if (useSeparator) nleftEnd = separate(nleftEnd, separator);  // add separator
    var output = nleftEnd + ((nrightEnd != "") ? "." + nrightEnd : "");  // combine parts
    output = ((useCurrency) ? currency : "") + output + ((usePercent) ? percent : "");
    if (isNegative) {
        // patch suggested by Tom Denn 25/4/2001
        output = (useCurrency) ? "(" + output + ")" : "-" + output;
    }
    return output;
}

function strip(input, chars) {  // strip all characters in 'chars' from input
    var output = "";  // initialise output string
    for (var i=0; i < input.length; i++)
        if (chars.indexOf(input.charAt(i)) == -1)
            output += input.charAt(i);
    return output;
}

function separate(input, separator) {  // format input using 'separator' to mark 000's
    input = "" + input;
    var output = "";  // initialise output string
    for (var i=0; i < input.length; i++) {
        if (i != 0 && (input.length - i) % 3 == 0) output += separator;
            output += input.charAt(i);
    }
    return output;
}

function checkMail(email) {
	var rege = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9])+$/;
	if (email.length == 0 || rege.exec(email) == null) return false;
	return true;
}

function friendlyPrint(sURL, divId) {
	if (sURL == null) {
		sURL = "print.jsp"
	}
	if (divId != null) {
		sURL = sURL + "?divId=" + divId;
	}
	openWindow(sURL, 800, 600);
}

function openWindow(sURL, width, height) {
	var left = 0;
	if (width != null && width != 0) { 
		left = (screen.width - width) / 2;
	}
	var top = 0;
	if (height != null && height != 0) {
		top = (screen.height - height) / 2; 
	}
	var popupWin = window.open(sURL, "popupWin", "left=" + left + ", top=" + top + ", width=" + width + ", height=" + height + ", toolbar=no, menubar=no, scrollbars=yes, resizable=yes, location=no, status=no", false);
	if (popupWin.opener == null) popupWin.opener = self;
	popupWin.focus();    
	return popupWin;
}

function setDateFormat(obj) {
	var date = obj.value;
    if (date.length == 8 && date.search(/^\d+(\.\d+)?$/) != -1) {
    	obj.value = date.substring(0, 4)+"-"+date.substring(4, 6)+"-"+date.substring(6);
    }
}

function showZipCodeWindow(url){
	openWindow(url, 300, 400);
}

function checkPasswd(passwd) {
	var rege1 = /[0-9]/;
	var rege2 = /[a-zA-Z]/;
	if (passwd.length < 6 || rege1.exec(passwd) == null || rege2.exec(passwd) == null) return false;
	return true;
}

