

var ck_zipcode = /^[0-9-\s]{5,11}$/;
var ck_name = /^[A-Za-z\-\s]{3,50}$/;
var ck_email = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
var ck_phone = /^[0-9-()\s-+]{10,25}$/;
var ck_phone_ext = /^[0-9]{1,10}$/;

function validate_form(form){
var zip_from = form.zip_from.value;
var zip_to = form.zip_to.value;
var name = form.name.value;
var email = form.email.value;
var phone = form.phone.value;
var phone2 = form.phone2.value;
var DD = form.day.value;
var MM = form.month.value;
var YY = form.year.value;
var ext = form.ext.value;
var errors = [];




if (!ck_zipcode.test(zip_from)) {
errors[errors.length] = "valid pickup zipcode";
}

if (!ck_zipcode.test(zip_to)) {
errors[errors.length] = "valid delivery zipcode";
}

if (!ck_name.test(name)) {
errors[errors.length] = "valid full name";
}

if (!ck_email.test(email)) {
errors[errors.length] = "valid e-mail address";
}

if (!ck_phone.test(phone)) {
errors[errors.length] = "valid telephone number";
}

if( phone2 == ""){
}
else{
if (!ck_phone.test(phone2)) {
errors[errors.length] = "valid additional telephone number";
}
}

if( ext == ""){
}
else{
if (!ck_phone_ext.test(ext)) {
errors[errors.length] = "valid telephone extention";
}
}

//date check
if( MM == "" || YY == "" || DD == ""){
    errors[errors.length] = "valid date";
}
else{
    var InputDate = new Date();
    var CurrentDate = new Date();

    InputDate.setDate(DD);
    InputDate.setMonth(MM-1);
    InputDate.setFullYear(YY);

    if(InputDate < CurrentDate){
        errors[errors.length] = "date entered has already passed"
    }
    else{
    var SixMonthsAheadDateTime = new Date();
    SixMonthsAheadDateTime.setDate(SixMonthsAheadDateTime.getDate()+180);

    if(SixMonthsAheadDateTime < InputDate){
        errors[errors.length] = "we only accept dates that are within 6 months"
    }
    }
}
//end of date check


if (errors.length > 0) {
reportErrors(errors);
return false;
}
return true;
}


function reportErrors(errors){
 var msg = "Please Enter Valid Data for:\n";
 for (var i = 0; i<errors.length; i++) {
  var numError = i + 1;
  msg += "\n" + numError + ". " + errors[i];
 }
 alert(msg);
}