﻿/// <reference path="jquery-1.3.2.js" />
/// <reference path="dss-common.js" />
var currentStep = 1;
var maxStep = 1;
var ticketReady = false;
var lookupModelsUrl;
var lookupZipUrl;
var cityStateLookupUrl;
var findZipUrl;
var checkImg;
var manufacturers;
var acMatchContains = false;
var donorLookupUrl;
var donorArray;
var postUrl;
var submitScript;
var submitInstructions;
var hasScrolled = false;
var liiUrl = '';
var preZip = "";
var preHomePhone = "";
var preLastName = "";
var ticketSaved = false;
var logReferralUrl = "";
var iconLock; var iconUnlock;

function pageInit() {
    /// <summary>
    /// Does all initialization for jQuery
    /// </summary>
    iconLock = rootDir + "Images/icon_lock.png";
    iconUnlock = rootDir + "Images/icon_unlock.png";
    $(".donorRight .privacyIcon").attr("src", iconLock);
    $("#privacyPopup").css("background-image", "url(" + rootDir + "Images/graybox_shadow.png)");
    
    $("#accordion").accordion({
        autoHeight: false,
        icons: { header: 'ui-icon-none', headerSelected: 'ui-icon-none' },
        change: accordionChange
    });
    $("#VehicleTicket_VehicleManufacturer").autocomplete(manufacturers, {
        matchContains: acMatchContains,
        minChars: 0,
        max: 50,
        formatItem: function(row, i, max) { return row.Manufacturer; },
        formatMatch: function(row, i, max) { return row.Manufacturer; },
        formatResult: function(row) { return row.Manufacturer; }
    }).result(function(event, item) {
        $.getJSON(lookupModelsUrl + "/" + item.Manufacturer_id, loadModels);
    });
    $("#confirmDialog").dialog({
        autoOpen: false,
        modal: true,
        title: "Confirm Vehicle Donation",
        width: 400,
        buttons: {
            "Save Ticket": function() {
                $(this).dialog("close");
                ticketReady = true;
                submitTicketAjax();
            },
            "Continue Editing": function() { $(this).dialog("close"); }
        }
    });
    $("#busyDialog").dialog({
        autoOpen: false,
        modal: true,
        closeOnEscape: false,
        dialogClass: "alert",
        draggable: false,
        resizable: false
    });
    $("#findZipDialog").findZip({
        zipField: $("#VehicleTicket_Zip"),
        Url: findZipUrl
    });

    $("#busyDialog button").click(function() { $("#busyDialog").dialog("close"); });

    $("#clearLink").click(clearLinkClick);
    $("#clearLink").hide();
    $("#step1Next").click(step1NextClick);
    $("#step2Next").click(step2NextClick);
    $("#step3Next").click(step3NextClick);
    $("#step4Next").click(step4NextClick);
    $("#step5Next").click(step5NextClick);
    $("#submitTicket").click(submitTicketClick);
    $("#privacyPopup input:checkbox").click(setPrivacyIcons);
    $("#VehicleTicket_AddressLine2").keydown(function(e) {
        if (e.which == 9) {
            $("#VehicleTicket_CrossStreet").focus();
            return false;
        }
    });
    $(".warning").prev().change(function() {
        var txt = $(this).val();

        if (txt.length > 0) {
            $(this).next(".warning").hide();
        } else {
            $(this).next(".warning").css("display", "inline");
        }
    });
    $("#VehicleTicket_Zip").keypress(function(e) { if (e.which == 13) { step1NextClick(); return false; } });
    $("#otherVehicleType").keypress(function(e) { if (e.which == 13) { step2NextClick(); return false; } });

    $(document).keydown(function(e) {
        if (e.keyCode == 13 && e.ctrlKey) {
            switch (currentStep) {
                case 1:
                    step1NextClick();
                    break;
                case 2:
                    step2NextClick();
                    break;
                case 3:
                    step3NextClick();
                    break;
                case 4:
                    step4NextClick();
                    break;
                case 5:
                    step5NextClick();
                    break;
                case 6:
                    submitTicketClick();
                    break;
            }
            return false;
        }
    });
    $(".busy").hide();
    $("#step1header").show();
    $("form").submit(function() { return (ticketReady & (currentStep == 6)); });
    $("#VehicleTicket_VehicleType").change(vehicleTypeChange);
    $("#VehicleTicket_Zip").focus();
    $("#VehicleTicket_DayPhone").blur(function() {
        var phn = $(this).val();
        if (phn && phn.length > 0) {
            phn = formatPhone(phn);
            $(this).val(phn);
        }
    });
    $("#VehicleTicket_HomePhone").blur(function() {
        var phn = $(this).val();
        if (phn && phn.length > 0) {
            phn = formatPhone(phn);
            $(this).val(phn);
        }
    });

    if (preZip.length == 5) {
        $("#VehicleTicket_Zip").val(preZip);
        step1NextClick();
    }
    window.onbeforeunload = function(e) {
        if (isCallIncomplete()) {
            var ret = "You have already begun to enter a ticket.  Are you sure you want to discard ticket information and end this call?";
            if (e) e.returnValue = ret;
            return ret;
        }
    };
}
function isCallIncomplete() {
    if (!ticketSaved && $("#VehicleTicket_Zip").val().length > 0 && $("#VehicleTicket_Pickup_id").val().length == 0)
        return true;
    else
        return false;
}
function showFindZip() { $("#findZipDialog").findZip(); }
function loadModels(models) {
    $("#VehicleTicket_VehicleStyle").unautocomplete();
    $("#VehicleTicket_VehicleStyle").autocomplete(models, {
        max: 50,
        matchContains: acMatchContains,
        minChars: 0
    });
}

function step1NextClick() {
    var zipVal = $("#VehicleTicket_Zip").val();
    if (!isValidZip(zipVal)) {
        alert("Please enter a valid 5-digit zip code.");
        return;
    }
    $("#zipCopyField").val(zipVal);
    $("#step1Busy").css("display", "inline");
    $.getJSON(lookupZipUrl, { zip: zipVal, allowClosest: true }, loadRoutes);
}
function loadRoutes(routeInfo) {
    $("#step1Busy").hide();
    var zipVal = $("#VehicleTicket_Zip").val();
    if (routeInfo.NotServiced) {
        alert(routeInfo.WarningMessage);
        $.post(logReferralUrl, { Zip: zipVal, PickupSize: 0, Referred: true, ToStore: false, IsDonorRequest: true });
    } else if (routeInfo.Territory_id == 0) {
        alert('Pickups not available for this zip code');
    }
    else {
        $("#step1header img").show();
        $("#step1headerlabel").text("Zip Code: " + zipVal);
        $("#VehicleTicket_Territory_id").val(routeInfo.Territory_id);
        $("#VehicleTicket_ARC_id").val(routeInfo.ARC_id);
        if (routeInfo.ZipCity && routeInfo.ZipCity.length > 0) {
            $("#VehicleTicket_City").val(routeInfo.ZipCity);
            $("#VehicleTicket_State").val(routeInfo.ZipState);
            if (preHomePhone == null || preHomePhone.length == 0) 
                $("#homePhone").val(routeInfo.ZipAreaCode);
        } else {
            $("#homePhone").val("");
            $.getJSON(cityStateLookupUrl, { zip: zipVal }, cityStateCallback);
        }
        var arcVal = routeInfo.ArcName + "<br />" +
                    formatPhone(routeInfo.AreaCode + routeInfo.Phone);
        $("#arcDisplay").html(arcVal);
        $("#arcInfo").show();
        setStep(1);
    }
}

function cityStateCallback(results) {
    if (results) {
        $("#VehicleTicket_City").val(results.city);
        $("#VehicleTicket_State").val(results.state);
    }
}
function vehicleTypeChange() {
    var typeName = $("#VehicleTicket_VehicleType :selected").text();
    if (typeName == "(Other)") {
        $("#otherVehicleType").css("display", "inline");
        $("#otherVehicleType").focus();
    } else {
        $("#otherVehicleType").hide();
    }
}
function step2NextClick() {
    var typeName = $("#VehicleTicket_VehicleType :selected").text();
    if (typeName == "(Other)") {
        typeName = $("#otherVehicleType").val();
        if (typeName.length == 0) {
            alert("Please enter the type of vehicle donation.");
            $("#otherVehicleType").focus();
            return false;
        }
    }
    $("#VehicleTicket_VehicleTypeName").val(typeName);
    $("#step2header img").show();
    $("#step2headerlabel").text("Type: " + typeName);

    setStep(2);
}

function step3NextClick() {
    $("#step3body .warning").css("display", "none");
    var isError = false;
    isError = isError | isFieldMissing("VehicleTicket_VehicleManufacturer");
    isError = isError | isFieldMissing("VehicleTicket_VehicleStyle");
    isError = isError | isFieldMissing("VehicleTicket_VehicleYear");
    var yr = parseInt($("#VehicleTicket_VehicleYear").val());
    if (isNaN(yr)) {
        $("#VehicleTicket_VehicleYear + span").css("display", "inline");
        isError = true;
    }
    else if (yr != 0) {
        var d = new Date();
        var maxYear = d.getFullYear() + 1;
        if (yr < 100) {
            yr += 2000;
            if (yr > maxYear) yr -= 100;
            $("#VehicleTicket_VehicleYear").val(yr.toString());
        }
        else if (yr < 1900 || yr > maxYear) {
            $("#VehicleTicket_VehicleYear + span").css("display", "inline");
            isError = true;
        }
    }
    isError = isError | isFieldMissing("VehicleTicket_VehicleColor");
    // isError = isError | isFieldMissing("VehicleTicket_AdditionalInfo");

    if (!isError) {
        $("#step3header img").show();
        $("#step3headerlabel").text("Vehicle Information: " +
                    (yr != 0 ? $("#VehicleTicket_VehicleYear").val() + " " : "") +
                    $("#VehicleTicket_VehicleManufacturer").val() + " " +
                    $("#VehicleTicket_VehicleStyle").val());
        setStep(3);
    }
}

function step4NextClick() {
    $("#step4header img").show();
    var notes = $("#VehicleTicket_VehiclePickupNotes").val();
    if (notes && notes.length > 0)
        notes = '; "' + notes + '"';
    else
        notes = "";
        
    $("#step4headerlabel").text("Pickup Notes: " 
        + $("#VehicleTicket_ContactPreference :selected").text()
        + notes);
    setStep(4);
}

function loadDonor(donor) {
    $("#step5Busy").hide();
    $("#step5header img").show();
    var homePhone = $("#homePhone").val();
    $("#step5headerlabel").text("Telephone Number: " + homePhone);
    if (donor.Donor_id > 0) {
        $("#VehicleTicket_Donor_id").val(donor.Donor_id);
        $("#VehicleTicket_FirstName").val(donor.FirstName);
        $("#VehicleTicket_LastName").val(donor.LastName);
        $("#VehicleTicket_HomePhone").val(formatPhone(donor.HomePhone));
        $("#VehicleTicket_HomeExtension").val(donor.HomeExtension);
        $("#VehicleTicket_DayPhone").val(formatPhone(donor.DayPhone));
        $("#VehicleTicket_DayExtension").val(donor.DayExtension);
        $("#VehicleTicket_AddressLine1").val(donor.AddressLine1);
        $("#VehicleTicket_AddressLine2").val(donor.AddressLine2 == null ? "" : donor.AddressLine2);
        $("#VehicleTicket_City").val(donor.City);
        $("#VehicleTicket_State").val(donor.State);
        $("#VehicleTicket_CrossStreet").val(donor.CrossStreet);
        $("#VehicleTicket_OtherInfo").val(donor.OtherInfo);
        $("#VehicleTicket_Email").val(donor.Email == null ? "" : donor.Email);
        $("#ConfirmEmail").val(donor.Email == null ? "" : donor.Email);
        $("#VehicleTicket_IsBusiness").attr("checked", donor.IsBusiness);
        $("#VehicleTicket_NoSolicitation").attr("checked", donor.NoSolicitation);
        $("#VehicleTicket_NoServiceReminders").attr("checked", donor.NoServiceReminders);
        $("#VehicleTicket_DoNotEmail").attr("checked", donor.DoNotEmail);
        // $("#clearLink").show();
    }
    else {
        $("input.donor").val("");
        $("fieldset.cr2tab").val("");
        $("#Donor_id").val("0");
        $("#VehicleTicket_HomePhone").val(homePhone);
        $("#VehicleTicket_DayPhone").val(homePhone);
        $("#VehicleTicket_IsBusiness").attr("checked", false);
        $("#VehicleTicket_NoSolicitation").attr("checked", false);
        $("#VehicleTicket_NoServiceReminders").attr("checked", false);
        $("#VehicleTicket_DoNotEmail").attr("checked", false);
        $("#VehicleTicket_OtherInfo").val("");
        var lastName = $("#LastName").val();
        lastName = formatProperCase(lastName);
        if (lastName && lastName.length > 0) $("#VehicleTicket_LastName").val(lastName);
        // $("#clearLink").hide();
    }
    setStep(5);
    setPrivacyIcons();
    $("#step6body .warning").css("display", "none");
}
function setPrivacyIcons() {
    var lockPhone = false; var lockEmail = false;

    lockEmail = ($("#VehicleTicket_DoNotEmail").attr("checked") == true);
    lockPhone = ($("#VehicleTicket_NoSolicitation").attr("checked") == true) & ($("#VehicleTicket_NoServiceReminders").attr("checked") == true);
    $("#VehicleTicket_HomePhone ~ img").attr("src", lockPhone ? iconLock : iconUnlock);
    $("#VehicleTicket_DayPhone ~ img").attr("src", lockPhone ? iconLock : iconUnlock);
    $("#VehicleTicket_Email ~ img").attr("src", lockEmail ? iconLock : iconUnlock);
}
function submitTicketClick() {
    var isError = false;
    $("#step6body .warning").css("display", "none");
    isError = isError | isFieldMissing("VehicleTicket_FirstName");
    isError = isError | isFieldMissing("VehicleTicket_LastName");
    if (isFieldMissing("VehicleTicket_DayPhone") || !isValidPhone($("#VehicleTicket_DayPhone").val())) {
        isError = true;
        $("#VehicleTicket_DayPhone + span").css("display", "inline");
    }
    else {
        $("#VehicleTicket_DayPhone").val(formatPhone($("#VehicleTicket_DayPhone").val()));
    }
    isError = isError | isFieldMissing("VehicleTicket_AddressLine1");
    isError = isError | isFieldMissing("VehicleTicket_CrossStreet");
    
    if (isError) return false;

    if (!isValidEmail("#VehicleTicket_Email", "#ConfirmEmail")) return false;
    
    var line2 = $("#VehicleTicket_AddressLine2").val();
    var confirmHtml = "";

    if (submitScript.length > 0)
        confirmHtml += "<div class='script'>" + submitScript + "</div>";

    if (submitInstructions.length > 0)
        confirmHtml += "<div class='instructions'>" + submitInstructions + "</div>";

    confirmHtml += "<div class='confirmText'><p><span style='font-weight:bold'>Location</span>:<br />" +
                $("#VehicleTicket_FirstName").val() + " " + $("#VehicleTicket_LastName").val() + "<br />" +
                $("#VehicleTicket_AddressLine1").val() + "<br />";

    if (line2 != null && line2.length > 0)
        confirmHtml += line2 + "<br />";

    confirmHtml +=
                $("#VehicleTicket_City").val() + " " + $("#VehicleTicket_State").val() + " " + $("#VehicleTicket_Zip").val() + "<br />" +
                $("#VehicleTicket_DayPhone").val() + "</p>" +
                "<p><span style='font-weight:bold'>Vehicle</span>: " + $("#VehicleTicket_VehicleYear :selected").text() + " " + $("#VehicleTicket_VehicleManufacturer").val() + " " + $("#VehicleTicket_VehicleStyle").val() + "</p>" +
                "<p><span style='font-weight:bold'>Instructions</span>: " + $("#VehicleTicket_VehiclePickupNotes").val() + "</p></div>";

    $("#confirmDialog").html(confirmHtml);
    $("#confirmDialog").dialog("open");
}

function submitTicketAjax() {
    $("#confirmDialog").dialog("close");
    $("#busyDialog .busy").show();
    $("#busyDialog .error").hide();
    $("#busyDialog").dialog("open");
    $.post(postUrl, $("form").serialize(), submitTicketReturn, "json");
}

function clearLinkClick() {
    $("#VehicleTicket_Donor_id").val('');
    $("#VehicleTicket_FirstName").val('');
    $("#VehicleTicket_LastName").val('');
    $("#VehicleTicket_DayPhone").val('');
    $("#VehicleTicket_HomePhone").val('');
    $("#VehicleTicket_AddressLine1").val('');
    $("#VehicleTicket_AddressLine2").val('');
    $("#VehicleTicket_CrossStreet").val('');
    $("#VehicleTicket_OtherInfo").val('');
    $("#VehicleTicket_Email").val('');
    $("#ConfirmEmail").val('');
    $("#VehicleTicket_IsBusiness").attr("checked", false);
    $("#VehicleTicket_NoSolicitation").attr("checked", false);
}
function setStep(stepId) {
    var stepName = "#step" + (stepId + 1) + "header";

    $(stepName).show();

    $("#accordion").accordion("activate", stepId);
}
function accordionChange(event, ui) {
    if (ui.newHeader[0] == $("#step1header")[0]) {
        $("#VehicleTicket_Zip").focus();
        currentStep = 1;
    } else if (ui.newHeader[0] == $("#step2header")[0]) {
        $("#VehicleTicket_VehicleType").focus();
        currentStep = 2;
    } else if (ui.newHeader[0] == $("#step3header")[0]) {
        $("#VehicleTicket_VehicleManufacturer").focus();
        currentStep = 3;
    } else if (ui.newHeader[0] == $("#step4header")[0]) {
        $("#VehicleTicket_VehiclePickupNotes").focus();
        currentStep = 4;
    } else if (ui.newHeader[0] == $("#step5header")[0]) {
        $("#homePhone").focus();
        $("#homePhone").setCursorPosition($("#homePhone").val().length);
        currentStep = 5;
    } else if (ui.newHeader[0] == $("#step6header")[0]) {
        $("#VehicleTicket_DayPhone").focus();
        $("#VehicleTicket_DayPhone").get(0).select();
        if (!hasScrolled) {
            var docHeight = $("#submitTicket").height() + $("#submitTicket").offset().top;
            var winHeight = $(window).height();
            if (winHeight < docHeight) window.scrollTo(0, docHeight);
        }
        currentStep = 6;
    }

    maxStep = Math.max(currentStep, maxStep);
    if (currentStep < maxStep) {
        for (var i = currentStep + 1; i <= maxStep; i++) {
            // $("#step" + i + "header").attr("disabled", "disabled");
            $("#step" + i + "header").hide();
        }
    }
}

$(pageInit);