/* check that the contents of 'field' contains only characters from
     'alphabet'.  Returns true if it does, false if there are any characters
     in 'field's value which are not present in 'alphabet'.
*/
function checkAlphabet(str, alphabet) {
    var l = str.length;
    for (var i = 0; i < l; i++) {
    if (alphabet.indexOf(str.charAt(i)) < 0) {
        return false;
    }
    }

    return true;
}

function checkIntegerStr(str) {
    var digits = "0123456789";

    return checkAlphabet(str, digits);
}


function checkInteger(field) {
    return checkIntegerStr(field.value);
}

function validateInteger(field, hName, message) {
    if (field.type == "hidden")
        return true;

    if (!checkInteger(field)) {
    showFieldError(field, hName, message);
    return false;
    }

    return true;
}

function canonicalizeZip( field ) {
    if (field && field.type == "hidden")
        return true;

    // don't operate on blank data
    if ( field == null || typeof( field.value ) == "undefined" ||
         field.value.length == 0 )
        return true;

    // parse out all the non-numbers
    var s = "";
    var digits = "0123456789";
    for ( i=0 ; i<field.value.length ; i++ ) {
        // only copy digits
        if ( digits.indexOf( field.value.charAt( i ) ) == -1 )
            continue;

        // copy digit
        s = s + field.value.charAt( i );
    }

    // now check the length
    if ( s.length != 5  && s.length != 9) {
        alert("Please enter a valid zip code (format: ##### or #####-####).");
	  field.focus();
        return false;
    }

    // format
    if ( s.length > 5 )
         s = s.substring(0, 5) + "-" + s.substring(5);

    // reset the field
    field.value = s;

    return true;
}

function canonicalizePhone( country, field ) {

    if (country != "United States") return true;

    if (field && field.type == "hidden")
        return true;

    // don't operate on blank data
    if ( field == null || typeof( field.value ) == "undefined" || field.value.length == 0 )
        return true;

    // parse out all the non-numbers
    var s = "";
    var digits = "0123456789";
    for ( i=0 ; i<field.value.length ; i++ ) {

        // check for leading '1' or '0'
        if ( i == 0 && ( field.value.charAt( i ) == "1" ||
            field.value.charAt( i ) == "0" ) )
            continue;

        // only copy digits
        if ( digits.indexOf( field.value.charAt( i ) ) == -1 )
            continue;

        // copy digit
        s = s + field.value.charAt( i );
    }

    // now check the length
    if ( s.length != 10 ) {
        alert("Please enter a valid phone number, including an area code (format: ###-###-####).");
	  field.focus();
        return false;
    }

    // format
    var f = s.substr( 0, 3 ) + "-" + s.substr( 3, 3 ) + "-" + s.substr( 6, 4 );

    // reset the field
    field.value = f;

    return true;
}

function removeChars(str, charset) {
    var l = str.length;
    for (var i = 0; i < l; i++) {
    var index = charset.indexOf(str.charAt(i));
    if (index >= 0) {
        str = str.substring(0, i) + str.substring(i+1);
        l--;
        i--;
    }
    }

    return str;
}

function canonicalizeInteger(field) {
    if (field && field.type == "hidden")
      return true;

    var intDigits = "0123456789";

    var val = field.value;

    if (!checkAlphabet(val, intDigits)) {
        alert("Please enter a valid integer value.");
        field.focus();
        return false;
    }

    var str = removeChars(val, ', ');

    field.value = str;

    return true;
}

function checkemail(field)
{
    var s_email = field.value;

    if (s_email.length==0)
    {
        return true;
    }

    if ((s_email.length < 6) ||
       (s_email.indexOf('@',0) < 1) ||
       (s_email.lastIndexOf('@') != s_email.indexOf('@',0)) ||
       (s_email.lastIndexOf('@') > (s_email.length - 5)) ||
       (s_email.lastIndexOf('.') > (s_email.length - 3)) ||
       (s_email.lastIndexOf('.') < (s_email.length - 4)) ||
       (s_email.indexOf('..',0) > -1) ||
       (s_email.indexOf('@.',0) > -1) ||
       (s_email.indexOf('.@',0) > -1) ||
       (s_email.indexOf(',',0) > -1))
    {
        alert("Please enter a valid e-mail address (format: name@domain.com).");
	  field.focus();
        return false;
    }
    return true;
}

