﻿//++++++++++++++++++++++++++++++++++++++++
// DOCUMENT READY
//++++++++++++++++++++++++++++++++++++++++
$(document).ready(function() {

    SetPriorityLabels();
    //SetExpansionStates();
    SetEventHandlers();
    $("#productList").sortable({
        update: function(e, ui) {
            var orderList = $("#productList").sortable("toArray");
            var orderListString = orderList.join(",");
            $("#productOrder").attr("value", orderListString);
            var cb = $(ui.item).children().filter(":first").children().filter(":first").children().filter(":first").children().filter(":first").children().filter(":first");
            var cbPersistence = cb.next();
            if (cbPersistence.attr("value") == "true")
                cb.attr("checked", true);
            else
                cb.attr("checked", false);
        },
        start: function(e, ui) {

    },
        stop: function(e, ui){
        pageTracker._trackEvent('WhereToBuy', 'Drag And Drop', 'Prioritization')
        },
        axis: "y",
        containment: $("#productSearchSection")
    });
    $("#productsLabel").tooltip({ showURL: false, left: -500, extraClass: "prioritizeListTooltip", track: false });
    $("#prioritizationHelp").tooltip({ showURL: false, left: -500, extraClass: "prioritizeListTooltip", track: false });
    $("#prioritizeButton").tooltip({ showURL: false, track: false });

});

//++++++++++++++++++++++++++++++++++++++++
// SET EVENT HANDLERS
//++++++++++++++++++++++++++++++++++++++++
function SetEventHandlers() {
    $("#prioritizeButton").click(PrioritizeButtonClick);

    $("#prioritizeCloseButton").click(function(e) {
        pageTracker._trackEvent('WhereToBuy', 'Link Click', 'Prioritization Cancel')
        $.unblockUI();
    });

    $("#prioritizeUpButton").click(PrioritizeUpButtonClick);

    $("#prioritizeDownButton").click(PrioritizeDownButtonClick);

    $("#prioritizeSubmitButton").click(PrioritySubmitButtonClick);

    $("#emailButton").click(EmailButtonClick);

    $("#sendEmailButton").click(SendEmailButtonClick);

    $("#cancelEmailButton").click(function(e) {
        $.unblockUI();
        return false;
    });

    $("#printButton").click(PrintButtonClick);

    //$("#contactUsButton").click(function(e) {
    //    $.blockUI({ message: $("#contactUsDialog") });
    //    return false;
    //});

    $("#contactCloseButton").click(function(e) {
        $.unblockUI();
        return false;
    });

    $("#testTableCloseButton").click(function(e) {
        $.unblockUI();
        return false;
    });

    $("#SearchButton").click(SearchButtonClick);

    $("#addEmailAddressButton").click(AddEmailButtonClick);

    $("#removeEmailAddressButton").click(RemoveEmailButtonClick);

    $(".productCheckBox").click(function() {
        $(this).next().attr("value", this.checked);

    });    $("#contactUsButton").click(ContactUsButtonClick);    $("#contactUsButton2").click(ContactUsButtonClick);    $("#cancelContactUsButton").click(CancelContactUsButtonClick);    $("#submitContactUsButton").click(SubmitContactUsButtonClick);    $("#prioritizationHelp").bind("mouseenter", function() {
        pageTracker._trackEvent('WhereToBuy', 'Link Hover', 'Prioritization Help')
    });

    $("#prioritizationHelp").click(function() {
        pageTracker._trackEvent('WhereToBuy', 'Link Click', 'Prioritization Help')
    });

    $("#canadaLink").click(function() {
        pageTracker._trackEvent('WhereToBuy', 'Link Click', 'Canada')
    });

    $(".infolink").click(function() {
        pageTracker._trackEvent('WhereToBuy', 'Link Click', 'Product Information')
    });
}

//++++++++++++++++++++++++++++++++++++++++
// CANCEL CONTACT US BUTTON CLICK
//++++++++++++++++++++++++++++++++++++++++
function CancelContactUsButtonClick(e){
    $.unblockUI();
}

//++++++++++++++++++++++++++++++++++++++++
// SUBMIT CONTACT US BUTTON CLICK
//++++++++++++++++++++++++++++++++++++++++
function SubmitContactUsButtonClick(e){
    var fname = $("#contactUsFnameTB").val();
    var lname = $("#contactUsLnameTB").val();
    var zipcode = $("#contactUsZipcodeTB").val();
    var email = $("#contactUsEmailTB").val();
    var confirmEmail = $("#contactUsConfirmEmailTB").val();
    var occupation = $("#contactUsOccupationDropDown>option:selected").val();
    var timeframe = $("#timeframeDropDown>option:selected").val();
    var howCanWeHelp = escape($("#contactUsHowCanWeHelpTB").val());
    
    
    var errorMessage = "";
    if(fname == "")
    {
        errorMessage += "* Please enter your first name\n";
    }
    if(lname == "")
    {
        errorMessage += "* Please enter your last name\n";
    }
    if(zipcode == "")
    {
        errorMessage += "* Please enter your zipcode\n";
    }
    if(email == "")
    {
        errorMessage += "* Please enter your email\n";
    }
    if(confirmEmail == "")
    {
        errorMessage += "* Please confirm your email\n";
    }
    if(email != "" && confirmEmail != "" && email != confirmEmail)
    {
        errorMessage += "* Please re-confirm your email\n";
    }
    if(occupation == "")
    {
        errorMessage += "* Please select your occupation\n";
    }
    if(timeframe == "")
    {
        errorMessage += "* Please select your timeframe to purchase\n";
    }
    if(howCanWeHelp == "")
    {
        errorMessage += "* Please tell us how we may assist you";
    }
    if(errorMessage == "")
    {
        PageMethod(
            "SubmitContactUsForm",
            ["fname", fname, "lname", lname, "zipcode", zipcode, "email", email, "occupation", occupation, "timeframeToPurchase", timeframe, "howCanWeHelp", howCanWeHelp],
            function(xhr) { // success
                alert("Your message was sent successfully");
                $.unblockUI();
            },
            function(xhr) { // error
                alert("An error occured while sending the email");
                $.unblockUI();
            }
        );
    }
    else
        alert(errorMessage);
}

function OnSubmitContactFormSuccess(){
    
}

function OnSubmitContactFormError(xhr){
    alert(xhr.status);
                    $.unblockUI();
}

//++++++++++++++++++++++++++++++++++++++++
// CONTACT US BUTTON CLICK
//++++++++++++++++++++++++++++++++++++++++
function ContactUsButtonClick(e) {
    $("#contactUsFnameTB").val("");
    $("#contactUsLnameTB").val("");
    $("#contactUsZipcodeTB").val($("#zipCodeTextBox").val());
    $("#contactUsEmailTB").val("");
    $("#contactUsConfirmEmailTB").val("");
    $("#contactUsOccupationDropDown").val($("#occupationDropDown>option:selected").val());
    $("#contactUsHowCanWeHelpTB").val("");
    $("#timeframeDropDown").val("");
    
    $.blockUI({
        message: $("#contactUsDialog"),
        css: {
            textAlign: "left",
            width: "400px",
            top: 100,
            left: $(window).width() / 2 - 200
        }
    });
}

//++++++++++++++++++++++++++++++++++++++++
// EMAIL BUTTON CLICK
//++++++++++++++++++++++++++++++++++++++++
function EmailButtonClick(e) {
    var checkedEmailBoxes = $(".printEmailCheckBox:checked");
    if (checkedEmailBoxes.length > 0) {
        $.blockUI({
            message: $("#emailDialog"),
            css: {
                textAlign: "left",
                width: "400px",
                top: 100,
                left: $(window).width() / 2 - 200
            }
        });
        if(checkedEmailBoxes.length > 1)
            pageTracker._trackEvent('WhereToBuy', 'Link Click', 'Emailing Multiple Items')
    }
    else {
        alert("Please make a selection first");
    }
    return false;
}

//++++++++++++++++++++++++++++++++++++++++
// PRIORITY SUBMIT BUTTON CLICK
//++++++++++++++++++++++++++++++++++++++++
function PrioritySubmitButtonClick(e) {
    var index = 0;
    $("#prioritizeList option").reverse().each(function() {
        var productid = "productid" + $(this).attr("value");
        $("#" + productid).prependTo("#productList");
        var cb = $("#" + productid).children().filter(":first").children().filter(":first").children().filter(":first").children().filter(":first").children().filter(":first");
        var cbPersistence = cb.next();
        if (cbPersistence.attr("value") == "true")
            cb.attr("checked", true);
        else
            cb.attr("checked", false);
    });
    pageTracker._trackEvent('WhereToBuy', 'Link Click', 'Prioritization Submit')
    $.unblockUI(); 
}

//++++++++++++++++++++++++++++++++++++++++
// REMOVE EMAIL BUTTON CLICK
//++++++++++++++++++++++++++++++++++++++++
function RemoveEmailButtonClick(e){
    var selectedOption = $("#emailAddressList > option:selected");
    $(selectedOption).remove();
}

//++++++++++++++++++++++++++++++++++++++++
// ADD EMAIL BUTTON CLICK
//++++++++++++++++++++++++++++++++++++++++
function AddEmailButtonClick(e){
    var emailAddress = $("#emailTextBox").fieldValue()[0];
    var filter = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
    if (filter.test(emailAddress)) {
        var newEmailAddressOption = $("<option>" + emailAddress + "</option>");
        $("#emailAddressList").append(newEmailAddressOption);
        $("#emailTextBox").clearFields();
    }
    else {
        alert("Please enter a valid email address.");
    }
}

//++++++++++++++++++++++++++++++++++++++++
// SEND EMAIL BUTTON CLICK
//++++++++++++++++++++++++++++++++++++++++
function SendEmailButtonClick(e) {
    pageTracker._trackPageview("/wheretobuy/email");
    $.unblockUI({ fadeOut: 0 });
   
   var html = "<html><body><p>Thank you for visiting JELD-WEN Windows and Doors.  Your dealer selection(s) is below.</p><table cellpadding='8'>";
   html += "<thead><tr><th align='left'>Dealer</th><th align='left'>Distance</th><th align='left'>Product lines carried</th></tr></thead><tbody>";
   $(".printEmailCheckBox:checked").each(function() {
        var parentRow = $(this).parent().parent();
        var dealerCell = parentRow.children()[1];
        var distanceCell = parentRow.children()[2];
        var productsCell = parentRow.children()[3];
       html += "<tr>" ;
       html += "<td valign='top'>" + $(dealerCell).html().replace(/<span>/g,"<font>").replace(/<\/span>/g,"</font>") + "</td>";
       html += "<td valign='top'>" + $(distanceCell).html() + "</td>";
       html += "<td valign='top'>" + $(productsCell).html() + "</td>";
       html += "</tr>";
   });
   html += "</tbody></table></body></html>";
   
   var emailAddresses = "";
   $("#emailAddressList option").each(function(){
        emailAddresses += $(this).text() + ",";
   });
    if(emailAddresses != "")
        emailAddresses = emailAddresses.substring(0, emailAddresses.length-1); 
    
    $.blockUI( { message: $("#emailSendingDialog") } ); 
    $.ajax({
        type: "POST",
        url: "Default.aspx/SendEmail",
        data: "{html:\"" + escape(html) + "\", emailAddresses: \"" + emailAddresses + "\"}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(xhr, status) {
       $.unblockUI({ fadeOut: 0 }); 
            alert("Email message sent successfully!");
        },
       error: function(xhr, status) {
       $.unblockUI({ fadeOut: 0 });
            alert("An error occured while sending your message.  Please try again.");
       } 
    });
    return false;
}

//++++++++++++++++++++++++++++++++++++++++
// PRINT BUTTON CLICK
//++++++++++++++++++++++++++++++++++++++++
function PrintButtonClick(e) {
    var checkedPrintBoxes = $(".printEmailCheckBox:checked");
    if (checkedPrintBoxes.length > 0) {
        window.print();
        pageTracker._trackPageview("/wheretobuy/print");
        if(checkedPrintBoxes.length > 1)
            pageTracker._trackEvent('WhereToBuy', 'Link Click', 'Printing Multiple Items')
    }
    else {
        alert("Please make a selection first.");
    }  
    return false;  
}

function moveUp(selectId) {
    var selectList = document.getElementById(selectId);
    var selectOptions = selectList.getElementsByTagName('option');
    for (var i = 1; i < selectOptions.length; i++) {
        var opt = selectOptions[i];
        if (opt.selected) {
            selectList.removeChild(opt);
            selectList.insertBefore(opt, selectOptions[i - 1]);
        }
    }
}

function moveDown(selectId) {
    var selectList = document.getElementById(selectId);
    var selectOptions = selectList.getElementsByTagName('option');
    for (var i = selectOptions.length - 2; i >= 0; i--) {
        var opt = selectOptions[i];
        if (opt.selected) {
            var nextOpt = selectOptions[i + 1];
            opt = selectList.removeChild(opt);
            nextOpt = selectList.replaceChild(opt, nextOpt);
            selectList.insertBefore(nextOpt, opt);
        }
    }
}

//++++++++++++++++++++++++++++++++++++++++
// PRIORITIZE DOWN BUTTON CLICK
//++++++++++++++++++++++++++++++++++++++++
function PrioritizeDownButtonClick(e) {
    var index = 0;
    var total = $("#prioritizeList > option").size();
    var $options = $("#prioritizeList > option");
    var $products = $("#productList table");

    moveDown("prioritizeList");
}

//++++++++++++++++++++++++++++++++++++++++
// PRIORITIZE UP BUTTON CLICK
//++++++++++++++++++++++++++++++++++++++++
function PrioritizeUpButtonClick(e) {
    var index = 0;
    var total = $("#prioritizeList > option").size();
    var $options = $("#prioritizeList > option");
    var $products = $("#productList table");

    moveUp("prioritizeList");
}

//++++++++++++++++++++++++++++++++++++++++
// PRIORITIZE BUTTON CLICK
//++++++++++++++++++++++++++++++++++++++++
function PrioritizeButtonClick(e) {
    pageTracker._trackEvent('WhereToBuy', 'Link Click', 'Prioritization')
    var $prioritizeList = $("#prioritizeList");
    var optionsHtml = "";
    var total = $(".productCheckBox:checked").size();

    // make the prioritize select box larger enough to hold all of the product items that where checked
    $prioritizeList.attr("size", total);

    // create the html for the <option> items that will be inserted into the prioritize select box
    $(".productCheckBox:checked").each(function(e) {
        optionsHtml += "<option value='" + $(this).attr("value") + "'>" + $($(this).parent().next().children()[0]).text() + "</option>";
    });

    // insert the <option> items into the prioritize select box
    $prioritizeList.html(optionsHtml);

    if(total >= 2)
    {
    // display the prioritize modal dialog
    $.blockUI({
        message: $("#prioritizeDialog"),
        css: {
            textAlign: "left",
            width: "400px",
            left: ($(window).width() - 400) / 2,
            top: "100px"
        }
    });
    }
    else
    {
        alert("Please select a minimum of two products to prioritize");
    }
    return false;
}

//++++++++++++++++++++++++++++++++++++++++
// SEARCH BUTTON CLICK
//++++++++++++++++++++++++++++++++++++++++
function SearchButtonClick(e) {
    try {
        var zipcodeRegex  = /^\d{5}/;
        var zipcodeVal = $("#zipCodeTextBox").fieldValue()[0];
        var occupationVal = $("#occupationDropDown").fieldValue()[0];
        var regionVal = $("#regionDropDown").fieldValue()[0];
        var distanceVal = $("#rangeDropDown").fieldValue()[0];
        var productVal = "";
        $(".productCheckBox:checked").each(function() {
            productVal += $(this).fieldValue()[0] + ",";
        });
        if (productVal.length > 0)
            productVal = productVal.substring(0, productVal.length - 1);
        if (zipcodeVal != '' && zipcodeRegex.test(zipcodeVal) && occupationVal != '' && distanceVal != '') 
        {
            if($(".productCheckBox:checked").length > 0)
            {
            // construct the querystring that will be passed to the JELD-WEN dealer webservice
            var qs = "?zip=" + zipcodeVal + "&distance=" + distanceVal + "&occupationName=" + occupationVal + "&collectionId=" + productVal;
            //alert(qs);
            $.blockUI({ 
                message: $("#resultsLoadingDialog")
            });
            // make an AJAX call to the JELD-WEN dealer webservice
            $.ajax({
                type: "POST",
                url: "Default.aspx/GetDealerHtml",
                data: "{querystring:\"" + qs + "\"}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: OnSearchSuccess,
                error: function(xhr) {
                    alert(xhr.status);
                    $.unblockUI();
                }
            });
            pageTracker._trackPageview("/wheretobuy/selectedproducts/" + escape(productVal));
            pageTracker._trackPageview("/wheretobuy/occupation/" + escape(occupationVal) + ".html");

            ntptEventTag("ev=WhereToBuy/Occupation/" + escape(occupationVal));
            }
            else
            {
                alert("Please select at least one product");
            }
            
        }
    }
    catch (e) {
        $.unblockUI(); 
        alert(e);
    }
    return false;
}

//++++++++++++++++++++++++++++++++++++++++
// ON SEARCH SUCCESS
//++++++++++++++++++++++++++++++++++++++++
function OnSearchSuccess(msg) {
    $("#resultsPanel").html(msg.d);

    $(".resultRowPanel:odd").each(function(e) {
        $(this).css("background-color", "#f5f5f5");
    });

    $("#introImage").hide();

    if (msg.d.search(/no results/i) == -1) {
        $("#pager").show();
        $("#pager2").show();
    }
    else {
        $("#pager").hide();
        $("#pager2").hide();
    }

    $("#infoPanel").hide();
    $("#infoPanel2").show();

    $("#resultTable")
                           .tablesorter({ widthFixed: true })
                           .tablesorterPager({ container: $("#pager,#pager2"), positionFixed: false, size: 4 });
    //.tablesorterPager({ container: $("#pager2"), positionFixed: false, size: 4 });

    $(".resultRowPanel table").each(function(e) {
        var tbody = $(this).children()[0];
        if ($(tbody).children().length > 1) {
            var children = $(tbody).children();
            var firstRow = children[0];
            for (var i = 1; i < children.length; ++i) {
                var row = children[i];
                $(row).addClass("hiddenResult");
            }
            var dealerCell = $(firstRow).children()[1];
            var showLocationAnchor = $("<img class='toggleImg' src='images/toggleopen-small.gif' /><a class=\"toggleOtherLocationsButton collapsed\" href=\"javascript:void(0);\">Show other locations</a>");
            var resultRowPanel = $(this).parent();
            $(resultRowPanel).prepend(showLocationAnchor);
        }
    });

    $(".printEmailCheckBox").click(function() {
        if (this.checked) {
            $(this).parent().parent().addClass("selectedDealer");
            $(this).parent().parent().removeClass("notPrintable");
        }
        else {
            $(this).parent().parent().removeClass("selectedDealer");
            $(this).parent().parent().addClass("notPrintable");
        }
    });

    $(".toggleOtherLocationsButton").click(ToggleOtherLocationsButtonClick);
    $.unblockUI();
    $(".websitelink").click(function() {
        pageTracker._trackEvent('WhereToBuy', 'Link Click', 'Dealer Website');
    });
    $(".viewmaplink").click(function() {
        pageTracker._trackEvent('WhereToBuy', 'Link Click', 'View Map');
    });
    $("#prevTopLink,#prevBottomLink").click(TrackPrevButton);
    $("#nextTopLink,#nextBottomLink").click(TrackNextButton);
}

function TrackNextButton() {
    pageTracker._trackEvent('WhereToBuy', 'Link Click', 'Next Results');
}

function TrackPrevButton() {
    pageTracker._trackEvent('WhereToBuy', 'Link Click', 'Prev Results');
}


//++++++++++++++++++++++++++++++++++++++++
// TOGGLE OTHER LOCATIONS BUTTON
//++++++++++++++++++++++++++++++++++++++++
function ToggleOtherLocationsButtonClick(e) {
    if ($(this).hasClass("collapsed")) {
        $(this).removeClass("collapsed");
        $(this).html("Hide other locations");
       $(this).next().children().filter(":first").children().filter(":first").siblings().removeClass("hiddenResult");
       $(this).next().children().filter(":first").children().filter(":first").siblings().addClass("resultRow");
       $(this).prev().attr("src", "images/toggleclose-small.gif");
    }
    else {
        $(this).addClass("collapsed");
        $(this).html("Show other locations");
       $(this).next().children().filter(":first").children().filter(":first").siblings().removeClass("resultRow");
       $(this).next().children().filter(":first").children().filter(":first").siblings().addClass("hiddenResult");
       $(this).prev().attr("src", "images/toggleopen-small.gif");
    }
}

//++++++++++++++++++++++++++++++++++++++++
// SET EXPANSION STATES
//++++++++++++++++++++++++++++++++++++++++
function SetExpansionStates()
{
    var $basicSearchExpandedState = $("#basicSearchExpandedState");
    var $productTypesExpandedState = $("#productTypesExpandedState");
    var $additionalServicesExpandedState = $("#additionalServicesExpandedState");
    
    if($basicSearchExpandedState.attr("value") == "1")
    {
        $("#basicSearchSection").show();
        $("#basicSearchToggleImage").attr("src", "images/minus.png");
    }
    else
    {
        $("#basicSearchSection").hide();
        $("#basicSearchToggleImage").attr("src", "images/plus.png");
    }
    
    if($productTypesExpandedState.attr("value") == "1")
    {
        $("#productSearchSection").show();
        $("#productSearchToggleImage").attr("src", "images/minus.png");
    }
    else
    {
        $("#productSearchSection").hide();
        $("#productSearchToggleImage").attr("src", "images/plus.png");
    }
}

//++++++++++++++++++++++++++++++++++++++++
// SET PRIORITIY LABELS
//++++++++++++++++++++++++++++++++++++++++
function SetPriorityLabels()
{
    var index = 1;
    $(".priorityLabel").each(function(e) {
        $(this).text(index);
        index++; 
   }) ;
}

//++++++++++++++++++++++++++++++++++++++++
// SET PRODUCT ORDER VARIABLE
//++++++++++++++++++++++++++++++++++++++++
function SetProductOrder()
{
    var $productOrderVar = $("#productOrder");
    $productOrderVar.attr("value", "");
    
    // retrieve all product checkboxes, loop through them and create a comma seperated list of their values, and store
    // in a hidden input variable
    $("#productList :checkbox").each(function(e) {
        $productOrderVar.attr("value", $productOrderVar.attr("value") + $(this).attr("value") + "," );
    });
}


