function form_val() {
    var emailfilter = /^\w+[\+\.\w-]*@([\w-]+\.)*\w+[\w-]*\.([a-z]{2,4}|\d+)$/i;
    var phoneRE = /^\d\d\d\-\d\d\d-\d\d\d\d$/;
    var status = true;
    var errmsg = "";
    if (document.contact_form.firstname.value == '' || document.contact_form.email.value == '' || document.contact_form.phonenumber.value == '') {
        errmsg = errmsg + ('Please fill out all necessary fields.\n');
        status = false;
    }
    if (!document.contact_form.email.value == '') {
        var returnval = emailfilter.test(document.contact_form.email.value);
        if (returnval == false) {
            errmsg = errmsg + ("Please enter a valid email address.\n");
            status = false;
        }
    }
    if (!document.contact_form.phonenumber.value == '') {
        var phoneval = phoneRE.test(document.contact_form.phonenumber.value);
        if (phoneval == false) {
            errmsg = errmsg + ("Phone Number should be of the format XXX-XXX-XXXX.\n");
            status = false;
        }
    }
    if (errmsg.length != "") {
        alert(errmsg);
    }
    return status;
}

function contact_val() {
	
	//alert(document.contactform.FirstName.value);
	
    var emailfilter = /^\w+[\+\.\w-]*@([\w-]+\.)*\w+[\w-]*\.([a-z]{2,4}|\d+)$/i;
    var phoneRE = /^\d\d\d\-\d\d\d-\d\d\d\d$/;
    var status = true;
    var errmsg = "";
    if (document.contactform.FirstName.value == '' 
    		|| document.contactform.LastName.value == '' 
    		|| document.contactform.Email.value == '' 
    		|| document.contactform.Phone.value == '') {
        errmsg = errmsg + ('Please fill out all required fields.\n');
        status = false;
    }
    if (!document.contactform.Email.value == '') {
        var returnval = emailfilter.test(document.contactform.Email.value);
        if (returnval == false) {
            errmsg = errmsg + ("Please enter a valid email address.\n");
            status = false;
        }
    }
     if (!document.contactform.Phone.value == '') {
        var phoneval = phoneRE.test(document.contactform.Phone.value);
        if (phoneval == false) {
            errmsg = errmsg + ("Phone Number should be of the format XXX-XXX-XXXX.\n");
            status = false;
        }
    }
     
     if (!document.contactform.IAccept.checked)
    {
    	 errmsg = errmsg + ("You must agree to the Terms and Conditions.\n");
    	 status = false;
    }
     
     /*
     //alert(document.contactform.IAccept.checked);

    if (!document.contactform.StartDate.value == '') {
        var dateValue = document.contactform.StartDate.value;
        if (!isAValidDate(dateValue)) {
            errmsg = errmsg + ("Date of service is not a valid date, or is in the past.\n");
            status = false;
        }
    }
    if (!document.contactform.ReturnDate.value == '') {
        var dateValue = document.contactform.ReturnDate.value;
        if (!isAValidDate(dateValue)) {
            errmsg = errmsg + ("Return date is not a valid date, or is in the past.\n");
            status = false;
        }
    }
    */

        if (document.contactform.NameOnCard.value == '') {
            errmsg = errmsg + ("Name on card is required.\n");
            status = false;
        }
        if (document.contactform.CardType.value == '') {
            errmsg = errmsg + ("Card type is required.\n");
            status = false;
        }
        if (document.contactform.CardNumber.value == '') {
            errmsg = errmsg + ("Card number is required.\n");
            status = false;
        }
        if (document.contactform.Expiration.value == '') {
            errmsg = errmsg + ("Expiration is invalid.\n");
            status = false;
        } else {
            if (!validateExpiration(document.contactform.Expiration.value)) {
                errmsg = errmsg + ("Expiration is invalid.\n");
                status = false;
            }
        }
        if (document.contactform.CID.value == '') {
            errmsg = errmsg + ("Security ID number is required.\n");
            status = false;
        }

        if (document.contactform.BillingLine1.value == '') {
            errmsg = errmsg + ("Billing Address is required.\n");
            status = false;
        }

        if (document.contactform.BillingCity.value == '') {
            errmsg = errmsg + ("Billing City is required.\n");
            status = false;
        }

        if (document.contactform.BillingState.value == '') {
            errmsg = errmsg + ("Billing State is required.\n");
            status = false;
        }

        if (document.contactform.BillingZipCode.value == '') {
            errmsg = errmsg + ("Billing Zip Code is required.\n");
            status = false;
        }

       
   
    if (document.contactform.res_securimage_code.value == '')
    {
    	 errmsg = errmsg + ("Please enter the verification code.\n");
    	 status = false;
    }    

    if (errmsg.length > 0) {
        alert(errmsg);
    }
    return status;
}

function validateExpiration(date) {
    //--------------------------------------------------------------------------
    // Name: D2()
    // Role: Used to guarantee 2 digit numeric values
    //--------------------------------------------------------------------------
    function D2(val) {
        return (val < 10) ? '0' + val : val;
    }

    //--------------------------------------------------------------------------
    // Verify date format: dd/mm/yyyy
    //--------------------------------------------------------------------------
    var before = date.toString();
    //  alert( 'before: ' + before );
    if (before.match(/^(\d{2})\/(\d{4})$/)) {
        var values = date.toString().split('/');
        var month = values[0];
        var year = values[1];
        if (month > 12) {
            return false;
        }
        return true;
    } else {
        return false;
    }
    return false;
}

//----------------------------------------------------------------------------
// Name: valiDate()
// Role: Verify that specified user input is a valid, and acceptable date.
//----------------------------------------------------------------------------
function valiDate(date) {
    //--------------------------------------------------------------------------
    // Name: D2()
    // Role: Used to guarantee 2 digit numeric values
    //--------------------------------------------------------------------------
    function D2(val) {
        return (val < 10) ? '0' + val : val;
    }

    //--------------------------------------------------------------------------
    // Verify date format: dd/mm/yyyy
    //--------------------------------------------------------------------------
    var before = date.toString();
    //  alert( 'before: ' + before );
    if (before.match(/^(\d{2})\/(\d{2})\/(\d{4})$/)) {
        // assumes an input in the UK format: DD/MM/YYY
        dateElements = date.split("/");
        var generatedDate = new Date(dateElements[2], dateElements[0] - 1, dateElements[1]);
        var today = new Date();
        if (generatedDate < today) {
            return false;
        } else {
            return true;
        }
    } else {
        return false;
    }
    return false;
}

var dtCh = "/";
var minYear = 1900;
var maxYear = 2100;

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++) {
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary(year) {
    // February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ((!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28);
}
function DaysArray(n) {
    for (var i = 1; i <= n; i++) {
        this[i] = 31
        if (i == 4 || i == 6 || i == 9 || i == 11) { this[i] = 30 }
        if (i == 2) { this[i] = 29 }
    }
    return this
}

function isAValidDate(dtStr) {
    var daysInMonth = DaysArray(12)
    var pos1 = dtStr.indexOf(dtCh)
    var pos2 = dtStr.indexOf(dtCh, pos1 + 1)
    var strMonth = dtStr.substring(0, pos1)
    var strDay = dtStr.substring(pos1 + 1, pos2)
    var strYear = dtStr.substring(pos2 + 1)
    strYr = strYear
    if (strDay.charAt(0) == "0" && strDay.length > 1) strDay = strDay.substring(1)
    if (strMonth.charAt(0) == "0" && strMonth.length > 1) strMonth = strMonth.substring(1)
    for (var i = 1; i <= 3; i++) {
        if (strYr.charAt(0) == "0" && strYr.length > 1) strYr = strYr.substring(1)
    }
    month = parseInt(strMonth)
    day = parseInt(strDay)
    year = parseInt(strYr)
    var today = new Date().setDate(new Date().getDate() - 1);
    var generatedDate = new Date(year, month - 1, day);
    if (generatedDate < today) {
        return false;
    }
    if (pos1 == -1 || pos2 == -1) {
        return false
    }
    if (strMonth.length < 1 || month < 1 || month > 12) {
        return false
    }
    if (strDay.length < 1 || day < 1 || day > 31 || (month == 2 && day > daysInFebruary(year)) || day > daysInMonth[month]) {
        return false
    }
    if (strYear.length != 4 || year == 0 || year < minYear || year > maxYear) {
        return false
    }
    if (dtStr.indexOf(dtCh, pos2 + 1) != -1 || isInteger(stripCharsInBag(dtStr, dtCh)) == false) {
        return false
    }
    return true
}

