﻿
$(document).ready(function() {
    $("input:radio").addClass("radio");
    $("input:checkbox").addClass("checkbox");

    //prepare the "tick"
    $("img[src*=images/tick_bw.gif]").each(function() {
        $(this).attr("alt", "Required field");
        $(this).addClass("tick");
    })

    //allocate functions to buttons
    $("#btnDriverAddress").bind("click", function(event)
    { event.preventDefault(); showDriverQuickAddress(this); return false; });

    $("#btnClear").bind("click", function(event)
    { event.preventDefault(); clearForm(); return false; });
    $("#btnSubmit").bind("click", function(event)
    { event.preventDefault(); submitForm(); return false; });
});


function submitForm() {
    //var txtRegistrationNumber = $get('txtRegistrationNumber').value;
    //var txtMake = $get('txtMake').value;
    //var txtModel = $get('txtModel').value;
    var txtRegistrationNumber = $("[id*=txtRegistrationNumber]").val();
    var txtMake = $("[id*=txtMake]").val();
    var txtModel = $("[id*=txtModel]").val();

    //var txtDateOfIncident = $get('txtDateOfIncident').value;
    //var txtTimeOfIncident = $get('txtTimeOfIncident').value;
    var txtDateOfIncident = $('[id*=txtDateOfIncident]');
    var txtTimeOfIncident = $('[id*=txtTimeOfIncident]');

    var txtDriverName = $("[id*=txtDriverName]").val();
    var txtContactAddress1 = $("[id*=txtContactAddress1]").val();
    var txtContactAddress2 = $("[id*=txtContactAddress2]").val();
    var txtContactAddress3 = $("[id*=txtContactAddress3]").val();
    var txtContactTown = $("[id*=txtContactTown]").val();
    var txtContactCounty = $("[id*=txtContactCounty]").val();
    var txtContactPostcode = $("[id*=txtContactPostcode]").val();
    var txtCompanyName = $("[id*=txtCompanyName]").val();

    var txtTelephoneNumber = $("[id*=txtTelephoneNumber]").val();
    var txtMobileNumber = $("[id*=txtMobileNumber]").val();
    var txtEmailAddress = $("[id*=txtEmailAddress]").val();
    var txtPreferredRepairPostCode = $("[id*=txtPreferredRepairPostCode]").val();

//    var chkDamageFO = $get('chkDamageFO').value;
//    var chkDamageFOQ = $get('chkDamageFOQ').value;
//    var chkDamageROQ = $get('chkDamageROQ').value;
//    var chkDamageRO = $get('chkDamageRO').value;
//    var chkDamageF = $get('chkDamageF').value;
//    var chkDamageR = $get('chkDamageR').value;
//    var chkDamageFN = $get('chkDamageFN').value;
//    var chkDamageFNQ = $get('chkDamageFNQ').value;
//    var chkDamageRNQ = $get('chkDamageRNQ').value;
//    var chkDamageRN = $get('chkDamageRN').value;
//    var txtFurtherDamage = $get('txtFurtherDamage').value;

    var chkDamageFO = ( $("#chkDamageFO").is(":checked") ) ? $("#chkDamageFO").val() : "" ;
    var chkDamageFOQ = ( $("#chkDamageFOQ").is(":checked") ) ? $("#chkDamageFOQ").val() : "" ;
    var chkDamageROQ = ( $("#chkDamageROQ").is(":checked") ) ? $("#chkDamageROQ").val() : "" ;
    var chkDamageRO = ( $("#chkDamageRO").is(":checked") ) ? $("#chkDamageRO").val() : "" ;
    var chkDamageF = ( $("#chkDamageF").is(":checked") ) ? $("#chkDamageF").val() : "" ;
    var chkDamageR = ( $("#chkDamageR").is(":checked") ) ? $("#chkDamageR").val() : "" ;
    var chkDamageFN = ( $("#chkDamageFN").is(":checked") ) ? $("#chkDamageFN").val() : "" ;
    var chkDamageFNQ = ( $("#chkDamageFNQ").is(":checked") ) ? $("#chkDamageFNQ").val() : "" ;
    var chkDamageRNQ = ( $("#chkDamageRNQ").is(":checked") ) ? $("#chkDamageRNQ").val() : "" ;
    var chkDamageRN = ($("#chkDamageRN").is(":checked")) ? $("#chkDamageRN").val() : "";
    
    var txtFurtherDamage = $("[id*=txtFurtherDamage]").val();


    var buff = new StringBuffer();

    if (txtRegistrationNumber == "")
        buff.append("Missing Vehicle Registration\r\n");

    //    if (!isTime(txtTimeOfIncident))
    //        buff.append("Invalid time entered for Time of Incident\r\n");

    if (txtDriverName == "")
        buff.append("Missing Driver Name\r\n");

    if (txtContactAddress1 == "")
        buff.append("Missing Driver Address\r\n");

    if (txtContactPostcode == "")
        buff.append("Missing Driver Address Postcode\r\n");

    if (txtCompanyName == "")
        buff.append("Missing Company Name\r\n");

    if (txtTelephoneNumber == "")
        buff.append("Missing Telephone Number\r\n");

    if (txtEmailAddress == "")
        buff.append("Missing Email Address\r\n");
    else if (!isValidEmail(txtEmailAddress))
        buff.append("Invalid Email Address Entered\r\n");

    var todaysDate = new Date();
    todaysDate.setHours(0, 0, 0, 0);
    if (txtDateOfIncident.val() == "")
        buff.append("Missing Date of Incident\r\n");
    else {
        if (txtDateOfIncident.val() != "") {
            var incDateElements = txtDateOfIncident.val().split("/");
            var century = (incDateElements[2].length == 2) ? ((incDateElements[2] < '50') ? "20" : "19") : "";
            txtDateOfIncident.val(incDateElements[0] + '/' + incDateElements[1] + '/' + century + incDateElements[2]);
        }
        incidentDate = convertToValidDate(txtDateOfIncident.val());
        if (incidentDate == null)
            buff.append("Invalid Date Entered for Date of Incident\r\n");
        else if (incidentDate > todaysDate)
            buff.append("Date of Incident cannot be in the future\r\n");
    }

    if (txtTimeOfIncident.val() == "")
        buff.append("Missing Time of Incident (hh:mm)\r\n");
    else if (isValidTime(txtTimeOfIncident.val()) == false)
        buff.append("Invalid Time of Incident (hh:mm)\r\n");
    else if (incidentDate != null) {

        // establish the time difference
        var curDateTime = new Date();
        var selDate = txtDateOfIncident.val().split("/");
        var selDateTime = selDate[1] + '-' + selDate[0] + '-' + selDate[2] + ' ' + txtTimeOfIncident.val() + ':00';
        //var delDateTime = new Date(selDate[1] + '-' + selDate[0] + '-' + selDate[2] + ' ' + txtTimeOfIncident.val() + ':00');
        var timeArray = txtTimeOfIncident.val().split(":");
        var delDateTime = new Date(selDate[2], (selDate[1]-1), selDate[0], timeArray[0], timeArray[1]);
        //************ Change to date/time comparrison ******//
        var elapsedTime = delDateTime.getTime() - curDateTime.getTime();

        if (isNaN(elapsedTime)) {
            buff.append("Invalid Date / Time Entered for Incident\r\n");
        }
        if (delDateTime > curDateTime) {
            buff.append("Incident Date / Time is in the future\r\n");
        }
    }

    if (buff.length() > 0)
        alert(String.format('INVALID DETAILS!\nYour request contains the following error(s):\n\n{0}\n\rPlease correct your details and try again.\r\nThank You.', buff.toString()));

    else {
        SalesAndMarketingSite.Services.UserService.SubmitAccidentClaim(txtRegistrationNumber, txtMake, txtModel, incidentDate,
                                                            txtTimeOfIncident.val(), txtDriverName, txtContactAddress1, txtContactAddress2,
                                                            txtContactAddress3, txtContactTown, txtContactCounty, txtContactPostcode,
                                                            txtCompanyName, txtTelephoneNumber, txtMobileNumber, txtEmailAddress,
                                                            txtPreferredRepairPostCode, chkDamageFO, chkDamageFOQ, chkDamageROQ,
                                                            chkDamageRO, chkDamageF, chkDamageR, chkDamageFN, chkDamageFNQ,
                                                            chkDamageRNQ, chkDamageRN, txtFurtherDamage,
                                                            onCompletedSubmitAccidentClaim, onFailed);
    }
}

function onCompletedSubmitAccidentClaim() {
    document.location = '/pages/thankyou.aspx';
}

function showDriverQuickAddress(obj) {
    QuickAddress.show(obj,
        $('[id*=txtContactPostcode]').val(),
        $('[id*=txtContactAddress1]').val(),
        $('[id*=txtContactAddress3]').val(),
        $('[id*=txtContactTown]').val(),
        getDriverQuickAddress);
}

function getDriverQuickAddress(formattedAddress) {
    $('[id*=txtContactAddress1]').val(formattedAddress.line1);
    $('[id*=txtContactAddress2]').val(formattedAddress.line2);
    $('[id*=txtContactAddress3]').val(formattedAddress.line3);
    $('[id*=txtContactTown]').val(formattedAddress.town);
    $('[id*=txtContactCounty]').val(formattedAddress.county);
    $('[id*=txtContactPostcode]').val(formattedAddress.postcode);
}

function isValidTime(value) {

    var isValid = false;

    if (value == '') {
        isValid = true;
    }
    else {
        var re = /^\d{1,2}:\d{2}([ap]m)?$/;
        if (value.match(re))
            isValid = true;
        else
            isValid = false;
    }
    return isValid;
}
