﻿var errorText_postcode = "Please enter a valid postcode";
var errorText_firstname = "Please enter your first name";
var errorText_lastname = "Please enter your last name";
var errorText_email = "Please enter a valid email address";
var errorText_telno = "Please enter your telephone number";
var errorText_companyname = "Please enter your company name";
var errorText_noofpeople = "Please enter the number of people";


function Quote() {

    document.getElementById("button").setAttribute("disabled", "true");
    
    var firstnameValid = ValidateFirstName();
    var lastnameValid = ValidateLastName();
    var telephoneValid = ValidateTelephone();
    var emailValid = ValidateEmail();
    var postcodeValid = ValidatePostcode();

    if (firstnameValid == false || lastnameValid == false || telephoneValid == false || emailValid == false || postcodeValid == false) {
        document.getElementById("button").removeAttribute("disabled");
        return false;
    }

    var productOutlook;
    if (document.getElementById('chk-outlook').status == true || document.getElementById('chk-outlook').checked == true) {
        productOutlook = "1"; //"Yes";
    }
    else {
        productOutlook = "0"; //"No";
    }

    var productKlix450;
    if (document.getElementById('chk-450').status == true || document.getElementById('chk-450').checked == true) {
        productKlix450 = "1"; //"Yes";
    }
    else {
        productKlix450 = "0"; //"No";
    }

    var productMARSGSnack;
    if (document.getElementById('chk-marsgsnack').status == true || document.getElementById('chk-marsgsnack').checked == true) {
        productMARSGSnack = "1"; //"Yes";
    }
    else {
        productMARSGSnack = "0"; //"No";
    }

    var productChameleon;
    if (document.getElementById('chk-chameleon').status == true || document.getElementById('chk-chameleon').checked == true) {
        productChameleon = "1"; //"Yes";
    }
    else {
        productChameleon = "0"; //"No";
    }

    var productNotSure;
    if (document.getElementById('chk-notsure').status == true || document.getElementById('chk-notsure').checked == true) {
        productNotSure = "1"; //"Yes";
    }
    else {
        productNotSure = "0"; //"No";
    }

    xmlhttpPost("/PageTemplates/FormProcessing.aspx?" +
                "FormType=Quote" +
                "&FirstName=" + escape(document.getElementById('firstname').value) +
                "&LastName=" + escape(document.getElementById('lastname').value) +
                "&TelephoneNumber=" + escape(document.getElementById('telephone').value) +
                "&Email=" + escape(document.getElementById('email').value) +
                "&NoOfPeople=" + escape(document.getElementById('noofpeople').value) +
                "&CompanyName=" + escape(document.getElementById('company').value) +
                "&Postcode=" + escape(document.getElementById('postcode').value) +
                "&Enquiry=" + escape(document.getElementById('enquiry').value) +
                "&InterestedInOutlook=" + escape(productOutlook) +
                "&InterestedInKlix450=" + escape(productKlix450) +
                "&InterestedInMarsGSnack=" + escape(productMARSGSnack) +
                "&InterestedInCocaColaRedChameleon=" + escape(productChameleon) +
                "&NotSureWhichProduct=" + escape(productNotSure) );

    return false;
}

function xmlhttpPost(strURL) {
    var xmlHttpReq = false;
    var self = this;
    // Mozilla/Safari
    if (window.XMLHttpRequest) {
        self.xmlHttpReq = new XMLHttpRequest();
    }
    // IE
    else if (window.ActiveXObject) {
        self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    self.xmlHttpReq.open('GET', strURL, true);
    self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    self.xmlHttpReq.onreadystatechange = function() {
        if (self.xmlHttpReq.readyState == 4) {
            updatepage(self.xmlHttpReq.responseText);
        }
    }
    self.xmlHttpReq.send(null);
}


function updatepage(str) {
    window.location = str;
}

function ValidatePostcode() {
    if (document.getElementById('postcode').value != "" && IsValidPostcode(document.getElementById('postcode').value)) {
        document.getElementById('ErrPostcode').style.display = "none";
        document.getElementById('ErrPostcode').innerHTML = "";
        return true;
    }
    else {
        document.getElementById('ErrPostcode').style.display = "";
        document.getElementById('ErrPostcode').innerHTML = errorText_postcode;
        return false;
    }
}

function ValidateFirstName() {
    if (document.getElementById('firstname').value != "") {
        document.getElementById('ErrFirstName').style.display = "none";
        document.getElementById('ErrFirstName').innerHTML = "";
        return true;
    }
    else {
        document.getElementById('ErrFirstName').style.display = "";
        document.getElementById('ErrFirstName').innerHTML = errorText_firstname;
        return false;
    }
}

function ValidateLastName() {
    if (document.getElementById('lastname').value != "") {
        document.getElementById('ErrLastName').style.display = "none";
        document.getElementById('ErrLastName').innerHTML = "";
        return true;
    }
    else {
        document.getElementById('ErrLastName').style.display = "";
        document.getElementById('ErrLastName').innerHTML = errorText_lastname;
        return false;
    }
}

function ValidateEmail() {
    var email = document.getElementById('email').value;
    if ((email.indexOf("@") > 1) && //  must contain @, and it must not be the first character
          (email.lastIndexOf(".") > email.indexOf("@")) &&  // last dot must be after the @
          (email.indexOf("@") != email.length) &&  // @ must not be the last character
          (email.indexOf("..") < 0) && // two periods in a row is not valid
          (email.indexOf(".") != email.length) &&  // . must not be the last character
          (AllValidEmailChars(email))) // all characters must be valid
    {
        document.getElementById('ErrEmail').style.display = "none";
        document.getElementById('ErrEmail').innerHTML = "";
        return true;
    }
    else {
//        if (email == "") {
//            document.getElementById('ErrEmail').style.display = "none";
//            document.getElementById('ErrEmail').innerHTML = "";
//            return true;
//        }
//        else {
            document.getElementById('ErrEmail').style.display = "";
            document.getElementById('ErrEmail').innerHTML = errorText_email;
            return false;
        //}
    }
}

function ValidateTelephone() {
    if (document.getElementById('telephone').value != "") {
        document.getElementById('ErrTelNo').style.display = "none";
        document.getElementById('ErrTelNo').innerHTML = "";
        return true;
    }
    else {
        document.getElementById('ErrTelNo').style.display = "";
        document.getElementById('ErrTelNo').innerHTML = errorText_telno;
        return false;
    }
}

function ValidateCompanyName() {
    if (document.getElementById('company').value != "") {
        document.getElementById('ErrCompanyName').style.display = "none";
        document.getElementById('ErrCompanyName').innerHTML = "";
        return true;
    }
    else {
        document.getElementById('ErrCompanyName').style.display = "";
        document.getElementById('ErrCompanyName').innerHTML = errorText_companyname;
        return false;
    }
}

function ValidateNoOfPeople() {
    if (document.getElementById('noofpeople').value != "") {
        document.getElementById('ErrNoOfPeople').style.display = "none";
        document.getElementById('ErrNoOfPeople').innerHTML = "";
        return true;
    }
    else {
        document.getElementById('ErrNoOfPeople').style.display = "";
        document.getElementById('ErrNoOfPeople').innerHTML = errorText_noofpeople;
        return false;
    }
}

function AllValidEmailChars(email) {
    var isValid = true;
    var validchars = "abcdefghijklmnopqrstuvwxyz0123456789@.-_";
    for (var i = 0; i < email.length; i++) {
        var letter = email.charAt(i).toLowerCase();
        if (validchars.indexOf(letter) != -1) {
            continue;
        }
        else {
            isValid = false;
            break;
        }
    }
    return isValid;
}

function IsValidPostcode(postcode) {
    var test = postcode;
    var size = test.length;
    test = test.toUpperCase(); //Change to uppercase

    while (test.slice(0, 1) == " ") //Strip leading spaces
    {
        test = test.substr(1, size - 1);
        size = test.length;
    }
    while (test.slice(size - 1, size) == " ") //Strip trailing spaces
    {
        test = test.substr(0, size - 1);
        size = test.length;
    }
    if (size < 6 || size > 8) { //Code length rule-->
        return false;
    }
    if (!(isNaN(test.charAt(0)))) { //leftmost character must be alpha character rule
        return false;
    }
    if (isNaN(test.charAt(size - 3))) { //first character of inward code must be numeric rule
        return false;
    }
    if (!(isNaN(test.charAt(size - 2)))) { //second character of inward code must be alpha rule
        return false;
    }
    if (!(isNaN(test.charAt(size - 1)))) { //third character of inward code must be alpha rule
        return false;
    }
    //if (!(test.charAt(size-4) == " ")){ //space in position length-3 rule
    //    return false;
    //}
    //count1 = test.indexOf(" ");count2 = test.lastIndexOf(" ");
    //if (count1 != count2){//only one space rule
    //    return false;
    //}
    return true;
}


