$(document).ready(function() {
    //if this is pre checked from server simulate a click on client to display manadatories
    if ($('#inputInterest').val() != '') {
        InputInterestOnChange();
    }

    if ($.Params.get('request') == 'booking' || $.Params.get('request') == 'quote' || $.Params.get('dealerID') > 0) {
        $('#inputInterest').val('MegaBus');
        InputInterestOnChange();
        
        //$.Params.get get query string requires jquer.querystring.js
        if ($.Params.get('request') == 'booking') {
            $('#inputPrefDate').click();
            $('#datepicker_container').show('slow');
        }
    }

    $('#Submit').click(function() { return ValidatContactForm() });
    $('#datepicker').datepicker({ inline: true, minDate: +1, maxDate: '+3m', dateFormat: 'yy-mm-dd' });

    $("#inputInterest").change(InputInterestOnChange);
    $("#prefstoreState").change(PrefstoreStateOnChange);

    $('select[name=inputvehiclemakeid]').change(function() { loadYears($(this).val()) });
    $('select[name=inputvehicleyear]').change(function() { loadModel($(this).val()) });

    $('#inputPrefStore').click(function() {
        if ($(this).attr('checked')) {
            $('#prefstore_container').show('slow');
        }
        else {
            $('#prefstore_container').hide('slow');
        }
    });

    $('#inputPrefDate').click(function() {
        if ($(this).attr('checked')) {
            $('#datepicker_container').show('slow');
        }
        else {
            $('#datepicker_container').hide('slow');
        }
    });

    PrefstoreStateOnChange();

    if ($.Params.get('dealerID') > 0) {
        $('#inputPrefStore').click();
        $('#prefstore_container').show('slow');
    } 


});

var notify_wait_img = "<span id='waitimg'>&nbsp;&nbsp;<img src='/images/loading.gif' width='60px' alt='loading...' /></span>";   

function InputInterestOnChange() {
    ResetForm();
    var selected = $("#inputInterest option:selected").val();
    if (selected == 'CC')
        HandleCcOption();
    else if (selected == 'MegaBus')
        HandleMegaBusOption();
}

function PrefstoreStateOnChange() {
    var selected = $("#prefstoreState option:selected").val();
    var url = '/?ACTION=GET_STORES_JSON&ddrState=' + selected;
    $('#ddrStore')[0].options.length = 0; //reset select drop down and add first option
    $('#ddrStore').hide(); //reset select drop down and add first option
    $('#ddrStore').after(notify_wait_img);
    $.get(url, function(data) { UpdateStores(data) });
}

function HandleCcOption() {
    $('#ccFields').show('slow');
    $('#inputCcType').attr('disabled', '');
    $('#vehicleDetails').show('slow');

}

function HandleMegaBusOption() {
     $('#vehicleDetails').show('slow');
     $('#prefStoreDetails').show('slow');
     $('#inputPrefStore').attr('disabled', '');
     $('#bookingDetails').show('slow');
     $('#inputPrefDate').attr('disabled', '');
 }

function ResetForm() {
    $('#inputCcType').attr('disabled', 'true');
    $('#ccFields').hide('slow');
    $('#vehicleDetails').hide('slow');
    
    $('#prefStoreDetails').hide('slow');
    $('#inputPrefStore').attr('checked', '');
    $('#prefstore_container').hide('slow');
    
    $('#bookingDetails').hide('slow');
    $('#inputPrefDate').attr('checked', '');
    $('#datepicker_container').hide('slow');
    
}

function UpdateStores(data) {
    $('#ddrStore').append($("<option></option>").attr("value", "").text("Please select"));
    if (data.length > 2)//empty array has two []
    {
        var obj = $.evalJSON(data); //evaluvate json data to js object
        $.each(obj, function(key, value) {
        $('#ddrStore').append($("<option></option>").attr("value", value.DealerID).text(' ' + value.Name));
        });
        
        if ($.Params.get('dealerID') > 0) {
            $('#ddrStore').val($.Params.get('dealerID'))
        } 
    }
    else {
        $('#ddrStore').append($("<option></option>").attr("value", "").text("No stores found"));
    }


    setTimeout("$('#waitimg').remove();$('#ddrStore').show();", 400);
}

function loadYears(makeid) {
    $('#waitimg').remove();
    if (makeid > 0) {
        $('#vehicleyears').show();
        $('#vehiclemodel').hide();
        var url = '/?ACTION=GET_VEHICLE_YEARS_JSON&makeid=' + makeid;
        $('select[name=inputvehicleyear]')[0].options.length = 0; //reset select drop down and add first option
        $('select[name=inputvehicleyear]').hide(); //reset select drop down and add first option
        $('select[name=inputvehicleyear]').after(notify_wait_img);
        $.get(url, function(data) { updateYears(data) });
    }
    else {
        $('#vehicleyears').hide();
        $('#vehiclemodel').hide();
    }
}

function updateYears(data) {
    $('select[name=inputvehicleyear]').append($("<option></option>").attr("value", "").text("Please select"));

    if (data.length > 2)//empty array has two []
    {
        var obj = $.evalJSON(data); //evaluvate json data to js object
        $.each(obj, function(key, value) {
            $('select[name=inputvehicleyear]').append($("<option></option>").attr("value", value).text(' '+value));
        });
    }
    else {
        $('select[name=inputvehicleyear]').append($("<option></option>").attr("value", "").text("No years found"));
    }

    setTimeout("$('#waitimg').remove();$('select[name=inputvehicleyear]').show();", 400);

    //$('.testjq').html(data);
}

function loadModel(year) {
    $('#waitimg').remove();
    $('#vehiclemodel').show();
    var makeid = $('select[name=inputvehiclemakeid]').val()
    var url = '/?ACTION=GET_VEHICLE_MODEL_JSON&makeid=' + makeid + '&year=' + year;
    $('select[name=inputvehicleid]')[0].options.length = 0; //reset select drop down and add first option
    $('select[name=inputvehicleid]').hide(); //reset select drop down and add first option
    $('select[name=inputvehicleid]').after(notify_wait_img);

    $.get(url, function(data) { updateModels(data) });
}

function updateModels(data) {
    $('select[name=inputvehicleid]')[0].options.length = 0; //reset select drop down and add first option
    $('select[name=inputvehicleid]').append($("<option></option>").attr("value", "").text("Please select"));

    if (data.length > 0)//empty json obj has two []
    {
        var obj = $.evalJSON(data); //evaluvate json data to js object
        $.each(obj, function(key, value) {
            var text = value.Name + " " + value.StartDateTime;
            if (value.EndDateTime > 0) {
                text += " - " + value.EndDateTime;
            }

            $('select[name=inputvehicleid]').append($("<option></option>").attr("value", value.VehicleID).text(text));
        });
    }
    else {
        $('select[name=inputvehicleid]').append($("<option></option>").attr("value", "").text("No models found"));
    }

    setTimeout("$('#waitimg').remove();$('select[name=inputvehicleid]').show();", 400);

    //$('.testjq').html(data);
}
var test    = true;
var errMsgs = "";


function ValidatContactForm() {
    errMsgs = "";
    test    = true;

    if ($("#inputInterest option:selected").val() == '')//contact interest method
        errorCtrl($('#inputInterestErr')); 
    else errorHide($('#inputInterestErr'));  

    if ($("#inputInterest option:selected").val() == 'CC' && $('#inputCcType option:selected').val() == '')
        errorCtrl($('#inputCcTypeErr'));
    else errorHide($('#inputCcTypeErr'));  
   
    if ($('#inputTitle').val() == '') errorCtrl($('#inputTitleErr')); else errorHide($('#inputTitleErr')); //title
    if ($('#inputFname').val() == '') errorCtrl($('#inputFnameErr')); else errorHide($('#inputFnameErr')); //fname
    if ($('#inputLname').val() == '') errorCtrl($('#inputLnameErr')); else errorHide($('#inputLnameErr')); //Lname

    //inputPostcode
    var pcFormatRegEx = /([0-9]{4})/;
    if (!pcFormatRegEx.test($('#inputPostcode').val())) errorCtrl($('#inputPostcodeErr')); else errorHide($('#inputPostcodeErr'));
    //state
    if ($('#inputState option:selected').val() == '') errorCtrl($('#inputStateErr')); else errorHide($('#inputStateErr'));
    //phone
    var phoneFormatRegEx = /^([0-9\s+-]){8,}$/;
    if ($('#inputPhone').val() == '' || !phoneFormatRegEx.test($('#inputPhone').val())) errorCtrl($('#inputPhoneErr')); else errorHide($('#inputPhoneErr'));
    //email
    var emailFormatRegEx = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
    if ($('#inputEmail').val() == '' && !emailFormatRegEx.test($('#inputEmail').val())) errorCtrl($('#inputEmailErr')); else errorHide($('#inputEmailErr'));
    //pref store
    if ($('#inputPrefStore').attr('checked') == true && $('#ddrStore option:selected').val() == '') errorCtrl($('#inputPrefStoreErr')); else errorHide($('#inputPrefStoreErr'));
    //pref booking
    var bookingFormatRegEx = /^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})$/;
    if ($('#inputPrefDate').attr('checked') == true && !bookingFormatRegEx.test($('#datepicker').val())) errorCtrl($('#datepickerErr')); else errorHide($('#datepickerErr'));
    
    //vehicle
    if ($("#inputInterest option:selected").val() == 'MegaBus' || $("#inputInterest option:selected").val() == 'CC') {
        //vmake
        if ($('#inputvehiclemakeid option:selected').val() == '') errorCtrl($('#inputMakeErr')); else errorHide($('#inputMakeErr'));
        //vyear
        if ($('#inputvehicleyear option:selected').val() == '') errorCtrl($('#inputvehicleyearErr')); else errorHide($('#inputvehicleyearErr'));
        //vmodel
        if ($('#inputvehicleid option:selected').val() == '') errorCtrl($('#inputvehicleidErr')); else errorHide($('#inputvehicleidErr'));
        //rego
        if ($('#inputRego').val() == '') errorCtrl($('#inputRegoErr')); else errorHide($('#inputRegoErr'));
    }

    if (test) {
        document.getElementById('buttonClicked').value = 1;
        submitAjaxForm(document.forms.ContactForm, 'contact-status.html?ACTION=UPDATE_CONTACT_NEW', 'margin_box', 'contact-status.html');
        return false;
    }
    else {
        alert(errMsgs);
        return false;
    }
}

function errorCtrl(obj) {
    obj.css('color', 'red');
    errMsgs += obj.attr('lang') + '\n';
    test = false;
}

function errorHide(obj) {
    obj.css('color', 'black');
}
