// Newsletter Sign up Script
function validateEmail(formObject, fieldObject, fieldValue) {
    var reEmail = new RegExp("^([^()<>@,;:\\\\\".\\s\\x00-\\x1F\\x7F\\[\\]]+|\"([^\\\\\"\\x0D]|\\\\.)*\")(\\.([^()<>@,;:\\\\\".\\s\\x00-\\x1F\\x7F\\[\\]]+|\"([^\\\\\"\\x0D]|\\\\.)*\"))*@[^()<>@,;:\\\\\".\\s\\x00-\\x1F\\x7F\\[\\]]+(\\.[^()<>@,;:\\\\\".\\s\\x00-\\x1F\\x7F\\[\\]]+)*\\.[^()<>@,;:\\\\\".\\s\\x00-\\x1F\\x7F\\[\\]]{2,4}$");
    return reEmail.test(fieldValue);
}

function hasValue(obj, obj_type) {
    if(!obj) return false;
    if (obj_type == "TEXT" || obj_type == "PASSWORD") {
        return (obj.value.length != 0);
    } else if (obj_type == "SELECT") {
        for (i=0; i < obj.length; i++)
            if (obj.options[i].selected && obj.options[i].value != "") 
                return true;
        return false;
    } else if (obj_type == "SINGLE_VALUE_RADIO" || obj_type == "SINGLE_VALUE_CHECKBOX") {
        return obj.checked;
    } else if (obj_type == "RADIO" || obj_type == "CHECKBOX") {
        for (i=0; i < obj.length; i++)
            if (obj[i].checked)
                return true;
        return false;	
    }
}

var debounceVal = true;
function debounce() {
    if(!debounceVal) return false;
    debounceVal = false; window.setTimeout("debounceVal=true;", 1000); return true;
}

function prettify(formfield, type) {
    var s = trim(formfield.value);
    if(type) {
        type = type.toUpperCase();
        if(type == "TITLECASE") s = smartTitleCase(s);
        else if(type == "LOWERCASE") s = s.toLowerCase();
        else if(type == "UPPERCASE") s = s.toUpperCase();
    }
    formfield.value = s;
}

function trim(str) {
    var reTrim1 = /^\s+/; var reTrim2 = /\s+$/;
    return str.replace(reTrim1, "").replace(reTrim2, "");
}

function smartTitleCase(str) {
    str = titleCase1(str);
    if(str == str.toUpperCase()) str = titleCase2(str);
    return str;
}
function titleCase1(str) {
    var atBoundary=true; var retval = "";
    for(var i=0; i<str.length; i++) {
        var c = str.charAt(i); retval += (atBoundary)?c.toUpperCase():c; atBoundary = !/\b/.test(c);
    } return retval;
}
function titleCase2(str) {
    var atBoundary=true; var retval = "";
    for(var i=0; i<str.length; i++) {
        var c = str.charAt(i); retval += (atBoundary)?c:c.toLowerCase(); atBoundary = !/\b/.test(c);
    } return retval;
}


function  validateMainform(formObject){
    var missingFields = [];
    if(!hasValue(formObject.firstname, "TEXT" ))
        missingFields[missingFields.length] = "First Name";
    if(!hasValue(formObject.lastname, "TEXT" ))
        missingFields[missingFields.length] = "Last Name";
    if(!hasValue(formObject.email, "TEXT"))
        missingFields[missingFields.length] = "E-Mail Address";
    else if(!validateEmail(formObject, formObject.email, formObject.email.value))
        missingFields[missingFields.length] = "E-Mail Address (not valid)";
    if(	!hasValue(formObject.dob_month, "TEXT") || isNaN(parseInt(formObject.dob_month.value,10)) || 
        !hasValue(formObject.dob_day,   "TEXT") || isNaN(parseInt(formObject.dob_day.value,  10)) ||
        !hasValue(formObject.dob_year,  "TEXT") || isNaN(parseInt(formObject.dob_year.value, 10)) )
        missingFields[missingFields.length] = "Birth Date (required for legal reasons)";

    if(missingFields.length>0) {
        var strError = "The following required fields are missing or invalid:     \n";
        for(var i=0; i<missingFields.length; i++)
            strError += "     "+missingFields[i] + "\n";
        alert(strError);
        return false;
    }
    return debounce();
}


/*
<!--- THIS STUFF GOES IN THE VALIDATION SCRIPT ABOVE ----
if(!hasValue(formObject.address, "TEXT"))
    missingFields[missingFields.length] = "Address";
if(!hasValue(formObject.city, "TEXT"))
    missingFields[missingFields.length] = "City";
if(!hasValue(formObject.state, "TEXT"))
    missingFields[missingFields.length] = "State";
if(!hasValue(formObject.zipcode, "TEXT"))
    missingFields[missingFields.length] = "ZIP Code";
if(!hasValue(formObject.phone, "TEXT"))
    missingFields[missingFields.length] = "Phone";
--->
*/