﻿

$(document).ready(function () {

    $.simpleStringify = function (item) {
        var type = $.type(item);
        if (type === 'function' || type === 'regexp' || type === 'undefined') {
            return 'undefined';
        }
        else if (type === 'null') {
            return 'null';
        }
        else if (type === 'boolean') {
            return item ? 'true' : 'false';
        }
        else if (type === 'number') {
            return isNaN(item) ? 'NaN' : '' + item;
        }
        else if (type === 'string') {
            return "'" + item.replace("'", "\\'") + "'";
        }
        else if (type === 'date') {
            return 'new Date(' + item.getMilliseconds() + ')';
        }
        else if (type === 'array') {
            var arrayString = '[';
            for (var i = 0; i < item.length; i++) {
                if (i > 0) {
                    arrayString += ',';
                }
                arrayString += $.simpleStringify(item[i]);
            }
            return arrayString + ']';
        }
        else {
            var mapString = '{';
            var addComma = false;
            for (var key in item) {
                if (addComma) {
                    mapString += ',';
                }
                mapString += $.simpleStringify(key) + ':' + $.simpleStringify(item[key]);
                addComma = true;
            }
            return mapString + '}';
        }
    };

    $.pageMethod = function (url, data, success, error) {
        $.ajax({
            async: false,
            cache: false,
            type: "POST",
            url: url,
            data: data,
            dataType: "json",
            contentType: 'application/json; charset=utf-8',
            processData: false,
            success: success,
            error: error ? error : function (msg) {
                alert('An error has occurred while attempting to communicate with the server.');
            }
        });
    };

    $.server = {
        _call: function (webMethod, data) {
            var result = { Success: false, Data: undefined };
            $.pageMethod('Services/Utility.asmx/' + webMethod, $.simpleStringify(data),
			function (response) {
			    result.Success = true;
			    result.Data = response.d;
			},
			function (xhr, status, error) {
			    result.Data = xhr;
			    result.Reason = status;
			    result.ServerMessage = error;
			}
		);
            return result;
        },
        GetSessionValue: function (sessionName) {
            return this._call('GetSessionValue', { sessionName: sessionName });
        },
        SetSessionValue: function (sessionName, sessionValue) {
            return this._call('SetSessionValue', { sessionName: sessionName, sessionValue: sessionValue });
        },
        GetFindLocationBox: function (boxName) {
            return this._call('GetFindLocationBox', { boxName: boxName });
        },
        SetFindLocationBox: function (city, state, zip, facilityType) {
            return this._call('SetFindLocationBox', { city: city, state: state, zip: zip, facilityType: facilityType });
        }
    };
    $(".facilityFind").focus(function () {
        $(this).val('');
    });
    $(".facility-find-menu").focus(function () {
        $(this).val('');
    });
    $(".txtNavSearch").focus(function () {
        $(this).val('');
    });
    $(".repair-pal-transfer").click(function () {
        var $zipCode = $("#rp_zc");
        var reZip = new RegExp(/(^\d{5}$)|(^\d{5}-\d{4}$)/);
        var zip = $zipCode.val();
        if (zip.length >= 5) {
            zip = zip.substring(0, 5);
            zip = parseInt(zip);
            if (!isNaN(zip)) {
                if (reZip.test(zip)) {
                    var result = $.server.SetFindLocationBox("", "", zip, "Mechanical Center");
                }
            }
        }

    });
    $(".navFindLocation").click(function () {
        $("#findloc").fadeIn("slow");
        $("#finder").addClass("active");
        $('#navigation li.secondLast').addClass('no-border');
        var result = $.server.GetFindLocationBox("FacilitySearchCriteria");
        if (result.Success) {
            var $city = $(".txtCity1");
            var $state = $(".ddState1");
            var $zip = $(".txtZipCode1");
            var $autoCareStore = $(".rbAutoCareStores1 input[type='radio']:checked");
            if (result.Data[0] == "") {
                $city.val("City");
            } else {
                $city.val(result.Data[0]);
            }

            $state.val(result.Data[1]);
            if (result.Data[2] == "") {
                $zip.val("Zip Code");
            } else {
                $zip.val(result.Data[2]);
            }
            $autoCareStore.val(result.Data[3]);

        }
    });

    $("#findloc a#close").click(function () {
        $("#findloc").fadeOut("fast");
        $("#finder").removeClass("active");
        $('#navigation li.secondLast').removeClass('no-border');
    });
    $(".find-a-center-click-1").live('click', function (e) {
        submitSearch("1");
        return false;
    });
    $(".find-a-center-click-2").live('click', function (e) {
        submitSearch("2");
        return false;
    });
    $(".find-a-center-click-3").live('click', function (e) {

        submitSearchSpecial("3");

        return false;
    });
    $(".find-a-center-click-4").live('click', function (e) {
        submitSearch("4");
        return false;
    });
    $(".find-a-center-click-5").live('click', function (e) {
        submitSearch("5");
        return false;
    });
    $(".find-a-center-click-6").live('click', function (e) {
        submitSearchFinance("6");
        return false;
    });
    $(".find-a-center-click-7").live('click', function (e) {
        submitSearchEstimator("2");
        return false;
    });
    function submitSearch(containerNumber) {
        // var $easyPayfindCenterLink = $('.calloutRight.easyPay');

        // if ($easyPayfindCenterLink[0] == null) {
        var url = getURL("store-finder.aspx", containerNumber);
        // } else {
        //    var url = getURL("financing.aspx", containerNumber);
        // }

        window.location.href = url;
    }
    function submitSearchSpecial(containerNumber) {
        var url = getURL("Specials.aspx", containerNumber);
        window.location.href = url;
    }
    function submitSearchFinance(containerNumber) {
        var url = getURL("financing.aspx", containerNumber);
        window.location.href = url;
    }
    function submitSearchEstimator(containerNumber) {
        var url = getURL("estimator.aspx", containerNumber);
        window.location.href = url;
    }

});

function getURL(urlAddress, containerNumber) {
    var reZip = new RegExp(/(^\d{5}$)|(^\d{5}-\d{4}$)/);
    var url = "";
    var i = 0;
   
        var $zip = $(".txtZipCode" + containerNumber);
        var $address = $(".txtAddress" + containerNumber);
        var $city = $(".txtCity" + containerNumber);
        var $state = $(".ddState" + containerNumber);
        var $autoCareStore ="";
        if (containerNumber == "4" || containerNumber == "5") {
            $autoCareStore = $(".ddStoreType" + containerNumber);
        } else {
        $autoCareStore = $(".rbAutoCareStores" + containerNumber + " input[type='radio']:checked");
        }
        var zip = $zip.val();
        var address = $address.val();
        var city = $city.val();
        var state = $state.val();
        var autoCareStore = $autoCareStore.val();
        i++;
        if (!reZip.test(zip)) {
            zip = "";
        }

        if (state == "not selected") {
            state = ""
        }

        if (city == "City") {
            city = "";
        }

        if (address == "Address") {
            address = "";
        }

        var result = $.server.SetFindLocationBox(city, state, zip, autoCareStore);
        
        if (zip + state + city + address + autoCareStore != "") {
            url = urlAddress + '?zip=' + zip + '&address=' + address + '&city=' + city + '&state=' + state + '&storetype=' + autoCareStore;
        }
    return url;
}
