var $this, newInterval, cartInterval, cartData, selectedVehicle, currentLocation, hasCart;
cartData = null;

function getLocation() {
    var locationIsIp = document.domain.match(/\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/g);
    var locationIs = document.domain.match(/\.([A-Za-z]+)\.([A-Za-z]+)$/g);
    if (locationIsIp) currentLocation = locationIsIp.toString();
    if (locationIs) currentLocation = locationIs.toString();
    return currentLocation;
}
currentLocation = getLocation();

function updatetotal() {
    var totalprice = 0;
    var itemCount = 0;
    if (cartData) {
        for (var i = 0; i < cartData.LineItems.length; i++) {
            totalprice += cartData.LineItems[i].UnitPrice * cartData.LineItems[i].Quantity;
            itemCount += cartData.LineItems[i].Quantity;
        }
    }
    if (itemCount === 1) {
        $(".cart_info span:eq(1),.cart .cart_info span:eq(1)").text("item in cart");
    } else {
        $(".cart_info span:eq(1),.cart .cart_info span:eq(1)").text("items in cart");
    }
    $(".cart_info .items").text(itemCount);
    $(".cart_info .price").text("$" + totalprice.toFixed(2));
    $("#your_cart .cart_info:first *").show();
    $("#your_cart").removeClass("empty");
}

jQuery.fn.EnforceZipCode = function () {
    return this.each(function () {
        $(this).keydown(function (e) {
            var key = e.charCode || e.keyCode || 0;
            // allow backspace, tab, delete, arrows, numbers and keypad numbers ONLY
            return (
            key == 8 || key == 9 || key == 46 || key == 109 || (key >= 37 && key <= 40) || (key >= 48 && key <= 57) || (key >= 96 && key <= 105));
        });
    });
};

function renderCart(showAfter) {
    
    $("#your_cart > div").css({
        opacity: 1
    });

    clearInterval(cartInterval, newInterval);

    var newHTML = '<a href="/cart/" class="cart_info"><span class="items">0</span> <span>items in cart</span> <span class="price"></span></a>';

    var items = "";
    for (var i = 0; i < cartData.LineItems.length; i++) {
        var lineItem = cartData.LineItems[i];
        var product = lineItem.Product;
        var quantityDisplay = ((lineItem.Quantity > 1) ? " (" + lineItem.Quantity + ")" : "");
        newHTML += "<a href=\"/product/details/" + product.Permalink + "\" class=\"product clearfix\" style=\"background-color:#efefef\">" + "<img src=\"" + assetServer + "image/product/" + product.Permalink + "/size/small/sequence/1\" width=\"50\" height=\"38\" alt=\"" + product.MarketingProductName + "\">" + "<div>" + "<h3>" + lineItem.ProductNameDisplay + quantityDisplay + "</h3>" + "<h4>" + lineItem.UnitPriceDisplay + "</h4>" + "</div>" + "</a>";
        items = cartData.LineItems[0].Quantity;
    }

    newHTML += '<a href="/cart/" class="btn goto_cart">Goto cart</a>';

    if (items === 1) {
        $(newHTML).find(".cart_info span:eq(1)").text("item in cart");
    } else {
        $(newHTML).find("cart_info span:eq(1)").text("items in cart");
    }

    $("div.cart").html(newHTML);

    updatetotal();

    if (showAfter) {
        var position = $("#your_cart").position().left - 10;

        $("div.cart").css({
            left: position
        });

        $("div.cart").stop().fadeIn(100, function () {
            $this = this;
            newInterval = setTimeout(function () {
                $(".new", $this).stop().animate({
                    backgroundColor: "#efefef"
                }, 800).removeClass("new");
            }, 1000);
            cartInterval = setTimeout(function () {
                if (!$("#your_cart").hasClass("hovering")) {
                    $("div.cart").stop().fadeOut(350, function () {
                        $(this).attr("style", "");
                    });
                }
            }, 2500);
        }, 0);
    }
    return false;
}

function getQuery(obj) {
    var query = window.location.search.substring(1);
    var vars = query.split("&");
    for (var i = 0; i < vars.length; i++) {
        var pair = vars[i].split("=");
        if (pair[0] == obj) {
            return pair[1];
        }
    }
}

function noFitMessage() {
    $("<div>", {
        id: "no_fit_message",
        css: {
            display: "none"
        },
		html: "<h2>We don't have a fit</h2>" + 
		"<p>We cannot fit your vehicle with a top of car rack system but you can always have one custom installed. One of our certified custom installers can permanently install a rack for you on most any roof top.</p>" +
		"<a href='http://yakima.com/download/Yakima_Installers.pdf' target='_blank' class='red bold'>Yakima custom installer list &rsaquo; </a>" +
		"<a href='http://yakima.custhelp.com/ci/documents/detail/2/NoFit/' target='_blank' class='red bold'>Be notified when this vehicle has been fitted &rsaquo; </a>"
    }).appendTo("body");
	
    $("<a>", {
        href: "#",
        "class": "exit",
        html: "<img src='/img/btn-exit.png' width='44' height='44' alt='Exit'>",
        css: {
            position: "absolute",
            top: 0,
            right: 0,
            display: "block"
        }
    }).appendTo("#no_fit_message");
	
	
	$("#no_fit_message").modal({
        overlayClose: true,
        opacity: 60,
        maxHeight: 350,
        containerId: "no_fit_container",
        close: true,
		 onShow: function () {
             $(".exit").click(function () {
                 $.modal.close();
                 return false;
             });
             $(document).keyup(function (e) {
                 if (e.keyCode === 27) $.modal.close();
             });
		 	
		 }
	});
};

function createFitGuide(vehicle) {
    if ($("#change_vehicle").length) {
        $("#change_vehicle").remove();
    }
    if (vehicle) {
        selectedVehicle = vehicle;
    }
    $("<div>", {
        id: "change_vehicle",
        css: {
            display: "none"
        }
    }).appendTo("body");
    $("<div>", {
        "class": "loading"
    }).appendTo("#change_vehicle");
    $("<div>", {
        "class": "vehicle_info",
        css: {
            display: "none"
        }
    }).appendTo("#change_vehicle");
    $("<h2>", {
        text: "Tell us about your vehicle"
    }).appendTo("#change_vehicle .vehicle_info");
    $("<p>", {
        text: "With just a little bit of information about your ride, we will only show your products that fit your car."
    }).appendTo("#change_vehicle .vehicle_info");
    $("<select>", {
        id: "vehicle_make",
        html: "<option selected>Select vehicle</option>",
                "data-name":"make",
                "class": "required",
                style: "top: 9px;height:27px;cursor:pointer;"
    }).appendTo("#change_vehicle .vehicle_info");
    $("<select>", {
        id: "vehicle_year",
        disabled: "disabled",
        html: "<option selected>Select vehicle year</option>",
                "data-name":"year",
                "class": "required",
                style: "top: 9px;height:27px;cursor:pointer;"
    }).appendTo("#change_vehicle .vehicle_info");
    $("<select>", {
        id: "vehicle_model",
        disabled: "disabled",
        html: "<option selected>Select vehicle model</option>",
                "data-name":"model",
                "class": "required",
                style: "top: 9px;height:27px;cursor:pointer;"
    }).appendTo("#change_vehicle .vehicle_info");
    $("<select>", {
        id: "factory_option",
        disabled: "disabled",
        html: "<option selected>Any factory options?</option>",
                "data-name":"factory options",
                "class": "required",
                style: "top: 9px;height:27px;cursor:pointer;"
    }).appendTo("#change_vehicle .vehicle_info");
    $("<select>", {
        id: "hitch",
        disabled: "disabled",
        html: "<option selected>Have a hitch?</option><option >No</option><option value='YesOneAndAQuarterInch'>Yes - 1/4\"</option> <option value='YesTwoInch'>Yes - 2\"</option>",
            style: "top: 9px;height:27px;cursor:pointer;"
    }).appendTo("#change_vehicle .vehicle_info");
    $("<div>", {
        id: "cta",
        "class": "clearfix"
    }).appendTo("#change_vehicle .vehicle_info");
    $("<a>", {
        href: "#",
        id: "vehicle_submit",
        "class": "btn go_m",
        text: "Go"
    }).appendTo("#change_vehicle .vehicle_info");
    $("<span>", {
        text: "or "
    }).appendTo("#change_vehicle .vehicle_info");
    $("<a>", {
        href: "/vehicle/clearVehicle",
        "class": "remove",
        text: "Remove Vehicle",
        click: function() {
                    document.cookie = "yakima-vehicle=;expires=1/9/2012;path=/;"
				}
    }).appendTo("#change_vehicle .vehicle_info");
    $("<a>", {
        href: "#",
        "class": "exit",
        html: "<img src='/img/btn-exit.png' width='44' height='44' alt='Exit'>",
        css: {
            position: "absolute",
            top: 0,
            right: 0,
            display: "block"
        }
    }).appendTo("#change_vehicle .vehicle_info");
    $("#change_vehicle").modal({
        overlayClose: true,
        opacity: 60,
        position: ["15%"],
        maxHeight: 350,
        containerId: "change_vehicle_container",
        close: false,
        onShow: function () {
            $("#change_vehicle select, #change_vehicle :checkbox, #change_vehicle :input").uniform();
            $(".cancel,#simplemodal-overlay,.exit").click(function () {
                $.modal.close();
                return false;
            });
            $(document).keyup(function (e) {
                if (e.keyCode === 27) $.modal.close();
            });
            var makes;
            var serviceUrl = '/Vehicle/Makes';
            $.ajax({
                type: "POST",
                url: serviceUrl,
                success: function (msg) {
                    makes = msg;
                    $("#change_vehicle .loading").animate({
                        height: $("#change_vehicle div.vehicle_info").outerHeight()
                    }, 500, function () {
                        $(this).hide(0);
                        $("#change_vehicle div.vehicle_info").fadeIn(500);
                    });
                    for (var i = 0; i < makes.length; i++) {
                        var make = makes[i];
                        $("<option>", {
                            value: make.MakeName,
                            text: make.MakeName
                        }).appendTo("#change_vehicle #vehicle_make");
                    }
                    $("#change_vehicle #vehicle_make").removeAttr("disabled").removeClass("disabled");
                    $("#change_vehicle #vehicle_make option:eq(0)").attr("selected", "selected");
                    if (selectedVehicle) {
                        $("#change_vehicle #uniform-vehicle_make span:first").text(selectedVehicle);
                        $("#change_vehicle #vehicle_make option[value='" + selectedVehicle + "']").attr("selected", "selected");
                        for (var n = 0; n < makes.length; n++) {
                            var make = makes[n];
                            if (make.MakeName == $("#change_vehicle #vehicle_make option:selected").html()) {
                                $("#change_vehicle #vehicle_year").html();
                                for (var i = make.EndYear; i >= make.BeginYear; i--) {
                                    $("#change_vehicle #vehicle_year").append($("<option/>").val(i).html(i));
                                }
                                $("#change_vehicle #vehicle_year").removeAttr("disabled").parent().removeClass("disabled");
                                break;
                            }
                        }
                        $.uniform.update("#change_vehicle #vehicle_make");
                    };
                }
            });
            $("#change_vehicle #vehicle_make").bind("change", function (e) {
                $("#change_vehicle #vehicle_year").html("<option selected>Select vehicle year</option>");
                for (var n = 0; n < makes.length; n++) {
                    var make = makes[n];
                    if (make.MakeName == $("#change_vehicle #vehicle_make option:selected").html()) {
                        for (var i = make.EndYear; i >= make.BeginYear; i--) {
                            $("#change_vehicle #vehicle_year").append($("<option/>").val(i).html(i));
                        }
                        $("#change_vehicle #vehicle_year").removeAttr("disabled").parent().removeClass("disabled");
                        break;
                    }
                }
            });
            $("#change_vehicle #vehicle_year").bind("change", function (e) {
                var serviceUrl = '/Vehicle/Models';
                $.ajax({
                    type: "POST",
                    url: serviceUrl,
                    data: "makeName=" + $("#change_vehicle #vehicle_make option:selected").html() + "&year=" + $("#change_vehicle #vehicle_year option:selected").html(),
                    success: function (msg) {
                        var models = msg;
                        $("#change_vehicle #vehicle_model").html("<option selected>Select vehicle model</option>");
                        for (var i = 0; i < models.length; i++) {
                            var model = models[i];
                            $("#change_vehicle #vehicle_model").append($("<option/>").val(model.VehicleId).html(model.Model));
                        }
                        $("#change_vehicle #vehicle_model").removeAttr("disabled").parent().removeClass("disabled");
                    }
                });
            });
            $("#change_vehicle #vehicle_model").bind("change", function (e) {
                var serviceUrl = '/Vehicle/FactoryOptions';
                $.ajax({
                    type: "POST",
                    url: serviceUrl,
                    data: "year=" + $("#change_vehicle #vehicle_year option:selected").html() + "&vehicleId=" + $("#change_vehicle #vehicle_model option:selected").val(),
                    success: function (msg) {
                        var factoryOptions = msg;
                        $("#change_vehicle #factory_option").html("<option selected>Any factory options?</option>");

                                                if ($("#change_vehicle #factory_option").val()) {
                                                    $("#change_vehicle #factory_option option").attr("selected", false);
                                                    $("#change_vehicle #factory_option option:eq(0)").attr("selected", true);
                                                }
                                                
                        if (factoryOptions.length > 0) {
                            for (var i = 0; i < factoryOptions.length; i++) {
                                var option = factoryOptions[i];
                                $("#change_vehicle #factory_option").append($("<option/>").val(option.FactoryOptionId).html(option.ExternalName));
                            }
                            $("#change_vehicle #factory_option").show();
                            $("#change_vehicle #factory_option").removeAttr("disabled").parent().removeClass("disabled");
                        } else {
                            $("#change_vehicle #factory_option").html("<option value='0'>No available factory options</option>");
                        }
                        $("#change_vehicle #factory_option").change(function () {
                            $("#change_vehicle #hitch").removeAttr("disabled").parent().removeClass("disabled");
                        });
                                                if ($("#change_vehicle #factory_option option").length === 2) {
                                                    $("#change_vehicle  #factory_option").val(1);
                                                    $.uniform.update("#change_vehicle #factory_option");
                                                } else {
                                                    $.uniform.update("#change_vehicle #factory_option");
                                                }
                    }
                });
            });
            $("#change_vehicle #vehicle_submit").click(function(e) {
                e.preventDefault();
                                if ( $("#change_vehicle #vehicle_make").val() !== "Select vehicle" && $("#change_vehicle #vehicle_year").val() !== "Select vehicle year" && $("#change_vehicle #vehicle_model").val() !== "Select vehicle model" && $("#change_vehicle #factory_option").val() !== "Any factory options?" ) {
                              $.ajax({
                                  type: "POST",
                                  url: "/Vehicle/SetVehicle",
                                    data: "makeName=" + $("#change_vehicle #vehicle_make option:selected").html() +  "&year=" + $("#change_vehicle #vehicle_year option:selected").val() + "&vehicleId=" + $("#change_vehicle #vehicle_model option:selected").val() + "&factoryoptionId=" + $("#change_vehicle #factory_option option:selected").val(),
                                  success: function ( data ) {
                                                if (window.location.pathname === "/") {
                                                    window.location = "/shop/";
                                                } else {
                                                    window.location = window.location.pathname;
                                                }
                                  }
                              });
                                } else {
                                    var invalid = "";
                                    $.each($("#change_vehicle select.required"), function(i) {
                                        var $this = $(this);
                                        var option = $("option:selected").index();
                                        
                                        if ( option === 0 ) {
                                            invalid += $this.attr("data-name") + ", ";
                                        }
                                    });
                                    alert("Please select your vehicle " + invalid.replace(/,\s+$/,"") + ".");
                                }
            });
        }
    });
}

function resetFitGuide() {
    $("#vehicle_year option:eq(0)").attr("selected", true);
    $("#vehicle_model option:eq(0)").attr("selected", true);
    $("#factory_option option:eq(0)").attr("selected", true);
    
    $("#uniform-vehicle_year").addClass("disabled");
    $("#uniform-vehicle_year select").attr("disabled","disabled");
    
    $("#uniform-vehicle_model").addClass("disabled");
    $("#uniform-vehicle_model select").attr("disabled","disabled");
    
    $("#uniform-factory_option").addClass("disabled");
    $("#uniform-factory_option select").attr("disabled","disabled");
    
    $.uniform.update("#vehicle_year,#vehicle_model,#factory_option");
}

function resetfitGuidePromo() {
	 $("#qs_vehicle_make option:eq(0)").attr("selected", true);
    $("#qs_vehicle_year option:eq(0)").attr("selected", true);
    $("#qs_vehicle_model option:eq(0)").attr("selected", true);
    $("#qs_factory_option option:eq(0)").attr("selected", true);
    
    $("#uniform-qs_vehicle_year").addClass("disabled");
    $("#uniform-qs_vehicle_year select").attr("disabled","disabled");
    
    $("#uniform-qs_vehicle_model").addClass("disabled");
    $("#uniform-qs_vehicle_model select").attr("disabled","disabled");
    
    $("#uniform-qs_factory_option").addClass("disabled");
    $("#uniform-qs_factory_option select").attr("disabled","disabled");
    
    $.uniform.update("#qs_vehicle_make,#qs_vehicle_year,#qs_vehicle_model,#qs_factory_option");
}


function fitGuidePromo() {		
        var make = $.Deferred();
        var year = $.Deferred();
        var model = $.Deferred();
        
        var storedVehicle = $.parseJSON( $.jCookie("yakima-vehicle") );
        
        $("#qs_vehicle_make").change(function() {
            
            $.uniform.update("#qs_vehicle_make");
            
            resetFitGuide();

            // Create year select
            $("#qs_vehicle_year > *").remove();
            
            $("<option>",{
                value: "",
                text: "Select vehicle year",
                "data-name": "Year"
}).appendTo("#qs_vehicle_year");

$("#qs_vehicle_year").removeAttr("disabled");

$("#qs_vehicle_year").parents("div").removeClass("disabled");
            
            var yearRange = $("option:selected",this).attr("data-range");
            yearRange = yearRange.split("-");
            
            var startingYear = yearRange[0]*1;
            var endingYear = yearRange[1]*1;

            for (var year = endingYear; year >= startingYear; year--) {
        $("<option>",{
                    value: year,
                    text: year
    }).appendTo("#qs_vehicle_year");
      }
            
            if (storedVehicle) {		
                make.resolve();	
            }
        });

        if (storedVehicle) {
            $("#qs_vehicle_make").val( storedVehicle.Make );
            $("#qs_vehicle_make").trigger("change");
        }

        $("#qs_vehicle_year").change(function () {

            // Reset selects
            $("#qs_vehicle_model option:eq(0),#qs_factory_option option:eq(0)").attr("selected", true);

            $.uniform.update("#qs_vehicle_year,#qs_vehicle_model,#qs_factory_option");

            // Create models select
            $.ajax({
                type: "POST",
                url: "/Vehicle/Models",
                data: "makeName=" + $("#qs_vehicle_make option:selected").val() + "&year=" + $("#qs_vehicle_year option:selected").val(),
                success: function (models) {
                    // Create year select
                    $("#qs_vehicle_model > *").remove();

                    $("<option>", {
                        value: "",
                        html: "Select vehicle model",
                        "data-name": "Model"
                    }).appendTo("#qs_vehicle_model");

                    $("#qs_vehicle_model").removeAttr("disabled");

                    $("#qs_vehicle_model").parents("div").removeClass("disabled");

                    $.each(models, function (i, model) {
                        $("<option>", {
                            value: model.VehicleId,
                            text: model.Model
                        }).appendTo("#qs_vehicle_model");
                    });

                    if (storedVehicle) {
                        year.resolve("year");
                    }
                }
            });
        });


$("#qs_vehicle_model").change(function () {
            
            // Reset selects
    $("#qs_factory_option option:eq(0)").attr("selected", true);
            $("#uniform-factory_option").addClass("disabled");
            $("#uniform-factory_option select").attr("disabled","disabled");

            $.uniform.update("#qs_vehicle_model,#qs_factory_option");
            
            // Create models select
            $.ajax({
          type: "POST",
          url: "/Vehicle/FactoryOptions",
          data: "year=" + $("#qs_vehicle_year option:selected").html() + "&vehicleId=" + $("#qs_vehicle_model option:selected").val(),
          success: function (options) {
            
							
              if ($("qs_#factory_option").val()) {
                  $("#qs_factory_option option").attr("selected", false);
                  $("#qs_factory_option option:eq(0)").attr("selected", true);
                        }
                        
                        $("<option>",{
                            value: "",
                            html: "Any factory options?",
                            "data-name": "Factory options"
                        }).appendTo("#factory_option");

            $("#qs_factory_option").removeAttr("disabled");

            $("#qs_factory_option").parents("div").removeClass("disabled");
                 
						if (!options.length) {
							noFitMessage();
							resetfitGuidePromo();
						};
								        
                $.each(options, function(i, option) {
											 
                            $("<option>",{
                                value: option.FactoryOptionId,
                                text: option.MobileName
                }).appendTo("#qs_factory_option");
                });

if ($("#qs_factory_option option").length === 2) {
    $("#qs_factory_option").val(1);
    $.uniform.update("#qs_factory_option");
                        } else {
    $.uniform.update("#qs_factory_option");
                        }
                        
                        if (storedVehicle) {
                            model.resolve("model");
                        }
                        
          }
      });
        });


$("#qs_factory_option").change(function () {
            $(this).parent().find("span").text($("option:selected",this).text());
        });
        
        // Get fit results
        $("#quick_start .go").click(function(e) {
            e.preventDefault();
            if ($("#qs_vehicle_make").val() && $("#qs_vehicle_year").val() && $("#qs_vehicle_model").val() && $("#qs_factory_option").val()) {
                
          $.ajax({
              type: "POST",
              url: "/Vehicle/SetVehicle",
              data: "makeName=" + $("#qs_vehicle_make option:selected").html() + "&year=" + $("#qs_vehicle_year option:selected").val() + "&vehicleId=" + $("#qs_vehicle_model option:selected").val() + "&factoryoptionId=" + $("#qs_factory_option option:selected").val(),
              success: function ( data ) {
                            window.location = "/shop/";
              }
          });

            } else {
                var invalid = "";
                $.each($("#quick_start select"), function(i) {
                    
                    $option = $("option:selected",this);
                    
                    if ( !$option.val() ) {
                        invalid += $option.attr("data-name") + ", ";
                    }
                });

                alert("Please select your vehicle " + invalid.replace(/,\s+$/,"") + ".");
            }
        });
        
        $.when( make ).then(function(status){
            $("#qs_vehicle_year").val(storedVehicle.Year);
            $("#qs_vehicle_year").trigger("change");
        });
        
        $.when( year ).then(function(status){
            $("#qs_vehicle_model").val(storedVehicle.ModelId);
            $("#qs_vehicle_model").trigger("change");
        });
        
				$.when( model ).then(function(status){
            $("#qs_factory_option").val(storedVehicle.FactoryId);
            $("#qs_factory_option").trigger("change");
        });
}

$(function () {

    /*
    Set up analytics
    */
    $("a").gaTrack({
        trackAttribute: 'data-ga-track',
        categoryAttribute: 'data-ga-category',
        actionAttribute: 'data-ga-action',
        trackDownloads: true,
        trackExits: true
    });

    /*
    search
    */
    $("#search_box .search").click(function () {
        $("#search-form").submit();
        return false;
    }); /* end */
    /* redirect to m.yakima.com if on mobile */
    /* replaced webkit detect with server side */
    
    $("#configurator, a.fit-my-car").click(function () {
        $("a[rel*=yakima_configurator]").trigger("click");
        return false;
    });
    $("a[rel*=yakima_configurator]").facebox({
        loadingImage: "/configurator/yakima_configurator_loading.gif",
        closeImage: "/configurator/yakima_configurator_close.png"
    });
/*
            Load configurator
        */
    if (getQuery("fitmycar") || getQuery('load') == 'fit') {
        $("a[rel*=yakima_configurator]").trigger("click");
    }
/*
    Global - Dropdowns
    */

    function addMega() {
        $(this).addClass("hovering");
        $("div", this).fadeIn(0);
    }

    function removeMega() {
        $(this).removeClass("hovering");
        $("div", this).fadeOut(0);
    }
    var megaConfig = {
        interval: 50,
        sensitivity: 5,
        over: addMega,
        timeout: 100,
        out: removeMega
    };
    $("li.mega,div.mega").hoverIntent(megaConfig); /* end */
    $.preLoadImages("/img/navigation.png", "/img/btn.png", "/img/sprite.png", "/img/add_it_adding.gif");
/*
    Global - Search input
    */
    $("#search_box label,#sign_up label,#local label,#shop_search div label,#sweepstakes_sign_up label").inFieldLabels({
        fadeDuration: 100,
        fadeOpacity: 0
    }); /* end */
/*
    homepage billboard
    */
    $("#billboard #slides").slides({
        preload: true,
        preloadImage: "/img/billboard_loading.gif",
        play: 10000,
        pause: 8000,
        slideSpeed: 900,
        fadeSpeed: 900,
        generatePagination: true,
        generateNextPrev: false,
        effect: 'fade',
        crossfade: true
    });
/*
        Category pages
        */
    $("#fit_guide #select_vehicle").bind("change", function () {
        createFitGuide($("#fit_guide #select_vehicle option:selected").val());
    });
    $("#fit_guide .go").click(function() {
                if ( $(this).attr("href") === "#" ) {
                    createFitGuide($("#fit_guide #select_vehicle option:selected").val());
            return false;
                }
    });
/*
    Product Detail - Tabs
    */
    $("#tabbed").tabbed(); /* end */
/*
    Product Detail - Expandable boxes
    */
    $("#product_addons").expanded(); /* end */
/*
    Product Detail - Equalizes height of product boxes
    */
    $(".equalize").equalHeights(true); /* end */
/*
    Product Detail - Product Slideshow
    */
/*
    if ($("#product_images .images img").length > 1) {
        $("#product_images").faded({
            speed: 500,
            crossfade: true,
            bigtarget: true,
            sequentialloading: false,
            loadingimg: "/img/loading.gif",
            autoplay: 5000,
            autorestart: 15000,
            autopagination: false,
            positionoffset: 4
        });
    }*/
    if ($("#product_images .images img").length === 1) {
        $("#product_images .images img").css({
            "display": "block"
        });
        $("#product_images .pagination").hide();
    } /* end */
/*
    Product listing page - Description overlay
    */

    function addDescription() {
        $(this).addClass("over");
        $(".description", this).fadeIn(100);
    }

    function removeDescription() {
        $(this).removeClass("over");
        $(".description", this).fadeOut(250);
    }
    var description = {
        interval: 20,
        sensitivity: 2,
        over: addDescription,
        timeout: 100,
        out: removeDescription
    };
    $(".product .image,.accessory .image").hoverIntent(description);
    // sets height of all .product to max height
    var height = [];
    var products = $("#products .products .product");
    for (var i = 0; i < products.length; i++) {
        height.push($(products[i]).outerHeight());
    };
    var largest = Math.max.apply(Math, height);
    $("#products .products .product").css({
        height: largest
    });
    var aheight = [];
    var aproducts = $("#products .accessories .accessory");
    for (var i = 0; i < aproducts.length; i++) {
        aheight.push($(aproducts[i]).outerHeight());
    };
    var alargest = Math.max.apply(Math, aheight);
    $("#products .accessories .accessory").css({
        height: alargest
    }); /* end */
/*
    Change Vehicle Modal
    */
    $(".change").click(function () {
        createFitGuide();
        return false;
    }); /* end */
    /* newsletter sign up*/
    $("#enter_email_adress").keyup(function (e) {
        if (e.keyCode == 13 || e.keyCode == 10) {
            $("#sign_up .sign_up").click();
        }
    });
    $("#sign_up .sign_up").click(function (e) {
        e.preventDefault();
        var html = "<div id=\"sign_up_info\">" + "<div>" + "	<p>By providing this info, you are giving us permission to send you periodic emails with the latest product and promotional info. You will have the opportunity to opt-out at any time.</p>" + "<div class=\"clearfix inputs\">" + "	<p><label for=\"email\">Email</label>" + "	<input type=\"text\" name=\"email\" value=\"\" id=\"email\"></p>" + "	<p><label for=\"full_name\">Full Name</label>" + "	<input type=\"text\" name=\"full_name\" value=\"\" id=\"full_name\"></p>" + "	<p><label for=\"zip_code\">Zip Code</label>" + "	<input type=\"text\" name=\"zip_code\" value=\"" + postalCode + "\" id=\"zip_code\"></p>" + "</div>" + "<div class=\"checkboxes clearfix\">" + "<div class=\"left\">" + "<div>" + "	<input type=\"checkbox\" name=\"interested_in\" value=\"biking\" id=\"biking\">" + "	<label for=\"biking\">Biking</label>" + "</div>" + "	<input type=\"checkbox\" name=\"interested_in\" value=\"water sports\" id=\"water_sports\">" + "	<label for=\"water_sports\">Water Sports</label>" + "</div>" + "<div class=\"right\">" + "	<input type=\"checkbox\" name=\"interested_in\" value=\"snow sports\" id=\"snow_sports\">" + "	<label for=\"snow_sports\">Snow Sports</label>" + "	<input type=\"checkbox\" name=\"interested_in\" value=\"camping\" id=\"camping\">" + "	<label for=\"camping\">Camping</label>" + "</div>" + "</div>" + "	<a class=\"btn sign_up\" href=\"#\">Sign up</a>" + "	or <a href=\"#\" class=\"cancel\">cancel</a>" + "</div>" + "</div>";
        $("#sign_up_info").modal({
            overlayClose: true,
            opacity: 60,
            position: ["15%"],
            minHeight: 333,
            containerId: "sign_up_container",
            close: false,
            onShow: function () {
                $(".simplemodal-wrap").append(html);
                $(":checkbox").uniform();
                $(".cancel,#simplemodal-overlay").click(function () {
                    $.modal.close();
                    return false;
                });
                $(document).keyup(function (e) {
                    if (e.keyCode === 27) $.modal.close();
                });
                $("#sign_up_info label").inFieldLabels({
                    fadeDuration: 100,
                    fadeOpacity: 0
                });
                $("#sign_up_info #email").val($("#enter_email_adress").val()).focus();
                $("#sign_up_info .sign_up").click(function () {
                    var interestedIn = '';
                    if ($("#biking").val().length > 0) {
                        interestedIn += 'biking;';
                    }
                    if ($("#water_sports").val().length > 0) {
                        interestedIn += 'water sports;';
                    }
                    if ($("#snow_sports").val().length > 0) {
                        interestedIn += 'snow sports;';
                    }
                    if ($("#camping").val().length > 0) {
                        interestedIn += 'camping;';
                    }
                    $.ajax({
                        type: "POST",
                        url: "/Home/NewsletterSignup",
                        data: "email=" + $("#email").val() + "&fullName=" + $("#full_name").val() + "&postalCode=" + $("#zip_code").val() + "&interestedIn=" + interestedIn,
                        success: function (msg) {
                            $("#sign_up_info div").hide(0);
                            var confirmation = $("<p/>", {
                                text: "You're all signed up to receive the monthly Yakima Rack Chronicle email.",
                                css: {
                                    marginTop: "20px",
                                    textAlign: "center",
                                    fontSize: "1.4em"
                                }
                            }).appendTo("#sign_up_info");
                            var exit = $("<a/>", {
                                href: "#",
                                text: "close",
                                "class": "btn close",
                                click: function () {
                                    $.modal.close();
                                    return false;
                                },
                                css: {
                                    marginBottom: "20px"
                                }
                            }).appendTo("#sign_up_info");
                            newInterval = setTimeout(function () {
                                $("#sign_up_info").fadeOut(500, function () {
                                    $.modal.close();
                                });
                            }, 4000);
                        }
                    });
                    return false;
                });
            }
        });
    }); /* end */
/*
    uniform
    */
    $(":radio, :checkbox").uniform(); /* end */

        $("select").each(function() {
            if ( !$(this).attr("multiple") && !$(this).hasClass("nouniform") ) {
                $(this).uniform();
            }
            
        })

        if ( $("body#home").length ) {
            fitGuidePromo();
        }
        
        /*
    cart
    */
    updatetotal();
    if (hasCart) {
        function showCart() {
            var position = $("#your_cart").position().left - 10;
            $("div.cart").css({
                left: position
            });
            $(this).addClass("hovering");
            $("div.cart", this).fadeIn(100);
            if ($.browser.msie && $.browser.version < 8) {
                $("div.cart").css({
                    width: $(".cart .product").outerWidth()
                });
            }
        }

        function hideCart() {
            $(this).removeClass("hovering");
            $("div.cart", this).fadeOut(200);
        }
        var cartConfig = {
            interval: 50,
            sensitivity: 5,
            over: showCart,
            timeout: 400,
            out: hideCart
        };
        $("#your_cart").hoverIntent(cartConfig);
        $("#your_cart a.product:last").css({
            border: "none"
        });
    }
    if (!hasCart) {
        $("#your_cart .cart_info:first *").hide();
        $("#your_cart").addClass("empty");
    }
/*
    end cart
    */
    var currentvehicle = $("#your_vehicle a").text();
    var vehiclename = $("#your_vehicle a span").text();
    var newwidth = 5 * vehiclename.length;
    if (newwidth < 71) {
        $("#your_vehicle a").css({
            width: 71
        });
    }

    function showChange() {
        $(this).addClass("hovering");
        currentvehicle = $("#your_vehicle a").text();
        if (currentvehicle != "Select your vehicle") {
            $("#your_vehicle span").fadeOut(100, function () {
                $(this).text("Change/Remove").fadeIn(100);
            });
        };
    }

    function hideChange() {
        $(this).removeClass("hovering");
        if (currentvehicle != "Select your vehicle") {
            $("#your_vehicle span").fadeOut(100, function () {
                $(this).text(currentvehicle).fadeIn(100);
            });
        }
    }
    var changeConfig = {
        interval: 50,
        sensitivity: 5,
        over: showChange,
        timeout: 400,
        out: hideChange
    };
    $("#your_vehicle a").css({
        width: $("#your_vehicle").width() - 27
    });
    $("#your_vehicle a").hoverIntent(changeConfig);
/*
    Compare
    */
    if ($(".compare").length) {
        setupCompare();
    } /* end */
    if ($(".dealers").length) {
        $(".dealers .dealer").fitted();
        reorder(".dealers");
    }
    $(".clickable,#content .category,.search-results,#options div,div.sparetime,div.sparejoe,div.mast_style,div.tray_style,#truck_solutions div,.accessories .accessory").fitted();
    $("div.sidebar ul li:last a").css({
        "border": "none"
    });
/*
    fixes flicker of sprites in ie 6
    */
    if ($.browser.msie && $.browser.version < 7) {
        try {
            document.execCommand('BackgroundImageCache', false, true);
        } catch (e) {}
    }
    if (!$.browser.msie) {
        $("img.sparetime").css({
            opacity: 0
        });
        $("img.sparetime").delay(800).animate({
            top: 105,
            opacity: 1
        }, "slow", "easeOutBounce");
    } else {
        $("img.sparetime").css({
            display: "block",
            top: 105
        });
    }
    if (!$.browser.msie) {
        $("img.flipside").css({
            opacity: 0
        });
        $("img.flipside").delay(800).animate({
            top: 65,
            opacity: 1
        }, "slow", "easeOutBounce");
    } else {
        $("img.flipside").css({
            display: "block",
            top: 65
        });
    }
    if (!$.browser.msie) {
        $("img.beddyjo").css({
            opacity: 0
        });
        $("img.beddyjo").delay(800).animate({
            top: 218,
            opacity: 1
        }, "slow", "easeOutBounce");
    } else {
        $("img.beddyjo").css({
            display: "block",
            top: 218
        });
    }
    if (!$.browser.msie) {
        $("img.flipside_side").css({
            opacity: 0
        });
        $("img.flipside_side").delay(800).animate({
            top: 40,
            opacity: 1
        }, "slow", "easeOutBounce");
    } else {
        $("img.flipside_side").css({
            display: "block",
            top: 40
        });
    }
    if (!$.browser.msie) {
        $("img.holdup").css({
            opacity: 0
        });
        $("img.holdup").delay(800).animate({
            top: 305,
            opacity: 1
        }, "slow", "easeOutBounce");
    } else {
        $("img.holdup").css({
            display: "block",
            top: 305
        });
    }
    if (!$.browser.msie) {
        $("img.quickback").css({
            opacity: 0
        });
        $("img.quickback").delay(800).animate({
            top: 50,
            opacity: 1
        }, "slow", "easeOutBounce");
    } else {
        $("img.quickback").css({
            display: "block",
            top: 50
        });
    }
    if (!$.browser.msie) {
        $("img.bedhead").css({
            opacity: 0
        });
        $("img.bedhead").delay(800).animate({
            top: 140,
            opacity: 1
        }, "slow", "easeOutBounce");
    } else {
        $("img.bedhead").css({
            display: "block",
            top: 140
        });
    }
    $(".watch_video").click(function () {
        var videosrc = $(this).parent().attr("href");
        if (!videosrc) {
            videosrc = $(this).attr("href");
        }
        var myDiv = $("<div/>", {
            id: "video",
            html: $("<a/>", {
                href: videosrc,
                id: "player",
                style: "display:block;width:400px;height:266px",
                html: $("<img/>", {
                    src: "/img/click_to_play.png",
                    style: "display:block;width:400px;height:266px"
                })
            })
        }).modal({
            containerId: "video_container",
            overlayClose: true,
            opacity: 35,
            autoPosition: true,
            close: true,
            zIndex: 5000,
            positiontype: "absolute",
            onShow: function () {
                $(".cancel,#simplemodal-overlay").click(function () {
                    $.modal.close();
                    return false;
                });
                $(document).keyup(function (e) {
                    if (e.keyCode === 27) $.modal.close();
                });
                $f("player", "/flash/flowplayer-3.1.5.swf", {
                    canvas: {
                        backgroundColor: "#F3F3F3"
                    },
                    plugins: {
                        controls: {
                            borderRadius: '5',
                            timeBgColor: '#000000',
                            buttonOverColor: '#af0c00',
                            durationColor: '#ffffff',
                            sliderColor: '#000000',
                            bufferColor: '#af0c00',
                            volumeSliderGradient: 'none',
                            backgroundColor: '#000',
                            timeColor: '#ffffff',
                            progressGradient: 'low',
                            tooltipColor: '#af0c00',
                            progressColor: '#af0c00',
                            backgroundGradient: [0.2, 0, 0, 0, 0],
                            volumeSliderColor: '#af0c00',
                            buttonColor: '#af0c00',
                            bufferGradient: 'none',
                            tooltipTextColor: '#ffffff',
                            sliderGradient: 'none',
                            height: 21,
                            opacity: 1.0
                        }
                    }
                });
                $("a.simplemodal-close").show(0);
            }
        });
        return false;
    });
    $(".video_demonstration,.whispbar_video").click(function () {
        var videosrc = $(this).attr("href");
        var myDiv = $("<div/>", {
            id: "video",
            html: $("<a/>", {
                href: videosrc,
                id: "player2",
                style: "display:block;width:400px;height:266px",
                html: $("<img/>", {
                    src: "/img/click_to_play.png",
                    style: "display:block;width:400px;height:266px"
                })
            })
        }).modal({
            containerId: "video_container",
            overlayClose: true,
            opacity: 35,
            autoPosition: true,
            close: true,
            zIndex: 5000,
            positiontype: "absolute",
            onShow: function () {
                $(".cancel,#simplemodal-overlay").click(function () {
                    $.modal.close();
                    return false;
                });
                $(document).keyup(function (e) {
                    if (e.keyCode === 27) $.modal.close();
                });
                $f("player2", {
                    src: '/flash/flowplayer-3.1.5.swf',
                    wmode: 'transparent'
                }, {
                    canvas: {
                        backgroundColor: "#F3F3F3"
                    },
                    plugins: {
                        controls: {
                            borderRadius: '5',
                            timeBgColor: '#000000',
                            buttonOverColor: '#af0c00',
                            durationColor: '#ffffff',
                            sliderColor: '#000000',
                            bufferColor: '#af0c00',
                            volumeSliderGradient: 'none',
                            backgroundColor: '#000',
                            timeColor: '#ffffff',
                            progressGradient: 'low',
                            tooltipColor: '#af0c00',
                            progressColor: '#af0c00',
                            backgroundGradient: [0.2, 0, 0, 0, 0],
                            volumeSliderColor: '#af0c00',
                            buttonColor: '#af0c00',
                            bufferGradient: 'none',
                            tooltipTextColor: '#ffffff',
                            sliderGradient: 'none',
                            height: 21,
                            opacity: 1.0
                        }
                    }
                });
                $("a.simplemodal-close").show(0);
            }
        });
        return false;
    });

		$("#brand_video").click(function () {
        var videosrc = $(this).parent().attr("href");
        if (!videosrc) {
            videosrc = $(this).attr("href");
        }
        var myDiv = $("<div/>", {
            id: "video",
						css: {
							width:860,
							height:484
						},
            html: $("<a/>", {
                href: videosrc,
                id: "player",
                style: "display:block;width:860px;height:484px",
                html: $("<img/>", {
                    src: "/img/play-brand-video.jpg",
                    style: "display:block;width:860px;height:484px"
                })
            })
        }).modal({
            containerId: "video_container_brand",
						minWidth: 860,
						minHeight: 484,
            overlayClose: true,
            opacity: 35,
            autoPosition: true,
            close: true,
            zIndex: 5000,
            positiontype: "absolute",
            onShow: function () {
                $(".cancel,#simplemodal-overlay").click(function () {
                    $.modal.close();
                    return false;
                });
                $(document).keyup(function (e) {
                    if (e.keyCode === 27) $.modal.close();
                });
                $f("player", {
									src: "/flash/flowplayer-3.1.5.swf",
									wmode: "transparent"
									},
									{
                    canvas: {
                        backgroundColor: "#F3F3F3"
                    },
                    plugins: {
                        controls: {
                            borderRadius: '5',
                            timeBgColor: '#000000',
                            buttonOverColor: '#af0c00',
                            durationColor: '#ffffff',
                            sliderColor: '#000000',
                            bufferColor: '#af0c00',
                            volumeSliderGradient: 'none',
                            backgroundColor: '#000',
                            timeColor: '#ffffff',
                            progressGradient: 'low',
                            tooltipColor: '#af0c00',
                            progressColor: '#af0c00',
                            backgroundGradient: [0.2, 0, 0, 0, 0],
                            volumeSliderColor: '#af0c00',
                            buttonColor: '#af0c00',
                            bufferGradient: 'none',
                            tooltipTextColor: '#ffffff',
                            sliderGradient: 'none',
                            height: 21,
                            opacity: 1.0
                        }
                    }
                });
                $("a.simplemodal-close").show(0);
            }
        });
        return false;
    });


    // adjust star rating
    if ($(".pr-snippet-stars").length) {
        $(".pr-snippet-stars > div").each(function () {
            var style = $(this).attr("style");
            style = style.split(" ");
            style = style[2].replace("px", "");
            style = style.replace("-", "");
            style = style.replace(";", "");
            $(this).attr("style", "background-position: 0px -" + (parseInt(style, 0) - 1) + "px;");
        });
    }
    $("div.info_content").css({
        opacity: 0,
        zIndex: -1
    });

    function showInfo() {
        $(this).addClass("hovering");
        $("div.info_content").css({
            zIndex: 150
        });
        $("div.info_content").animate({
            top: -60,
            opacity: 1
        }, 150, "easeInQuad");
    }

    function hideInfo() {
        $(this).removeClass("hovering");
        $("div.info_content").animate({
            //   top: -84,
            opacity: 0
        }, 150, "easeOutQuad", function () {
            $(this).css({
                top: -84,
                zIndex: -1
            });
        });
    }
    var infoConfig = {
        interval: 50,
        sensitivity: 5,
        over: showInfo,
        timeout: 100,
        out: hideInfo
    };
    $("img.info").hoverIntent(infoConfig);
/*
    Google Analytics tracking of downloadable files
    */
    $("a").click(function () {
        var href = $(this).attr("href");
        if (href != null && href.match(/\.(doc|pdf|xls|ppt|zip|txt|vsd|vxd|js|css|rar|exe|wma|mov|avi|wmv|mp3)$/)) {
            if (window.console) {
                console.log("Download tracked: ", href);
            }
            pageTracker._trackPageview(href);
        }
    });
    $(".press-room a").each(function () {
        $(this).text($(this).text().toLowerCase().toTitleCase());
    });
    if ($(".video_demo").length) {
        $f("player", "/flash/flowplayer-3.1.5.swf", {
            canvas: {
                backgroundColor: "#F3F3F3"
            },
            plugins: {
                controls: {
                    borderRadius: '5',
                    timeBgColor: '#000000',
                    buttonOverColor: '#af0c00',
                    durationColor: '#ffffff',
                    sliderColor: '#000000',
                    bufferColor: '#af0c00',
                    volumeSliderGradient: 'none',
                    backgroundColor: '#000',
                    timeColor: '#ffffff',
                    progressGradient: 'low',
                    tooltipColor: '#af0c00',
                    progressColor: '#af0c00',
                    backgroundGradient: [0.2, 0, 0, 0, 0],
                    volumeSliderColor: '#af0c00',
                    buttonColor: '#af0c00',
                    bufferGradient: 'none',
                    tooltipTextColor: '#ffffff',
                    sliderGradient: 'none',
                    height: 21,
                    opacity: 1.0
                }
            }
        });
    }
    // sweepstakes
    $(".sweepstakes .go_black").click(function () {
        var emailaddress = $("#sweepstakes_email_adress").val();
        window.location = "/road-warriors/sweepstakes/?email=" + emailaddress;
    });
    $("#sweepstakes_email_adress").keyup(function (e) {
        if (e.keyCode == 13 || e.keyCode == 10) {
            $(".sweepstakes .go_black").click();
        }
    });
    if ($("#sweepstakes_email").length) {
        $("#sweepstakes_email").val(getQuery("email"));
    }
    $(".add_line").click(function () {
        $(this).parent().fadeOut(100, function () {
            $(".address_line_2").slideDown(200);
        });
        return false;
    });
    $(".add_email").click(function () {
        $(this).parent().fadeOut(100, function () {
            $(".email_ship").slideDown(200);
        });
        return false;
    });
    //	
    //	$(".continue_checkout,.place_order").click(function(){
    //		$(this).parents("form").submit();
    //		return false;
    //	});
/*
    if ($("#purchase #direct").length) {
        $("#purchase > div").addClass("thirds").css({"display":"block"});
    } else {
        $("#purchase > div").css({"display":"block"});
    }*/
    $("#pickupDate").datepicker({
        minDate: '+1',
        maxDate: '+14',
        beforeShowDay: $.datepicker.noWeekends
    });
    $('table tr.tr0:odd').css('background-color', '#f5f5f5');
/*
    Colorado Promo Page
    */
    $(".promo_box.one_b").click(function () {
        $("#season_pass").fadeOut().slideUp("easeInOutQuad", function () {
            $("#lift_ticket").slideDown("easeInOutQuad");
        });
    });
    $(".promo_box.two_b").click(function () {
        $("#lift_ticket").fadeOut().slideUp("easeInOutQuad", function () {
            $("#season_pass").slideDown("easeInOutQuad");
        });
    });
    $("p.rebate_details").click(function () {
        $("#rebate_info").modal({
            containerCss: {
                width: 500,
                height: 400
            },
            onShow: function () {
                var exit = $("<a/>", {
                    href: "#",
                    text: "close",
                    className: "btn close",
                    click: function () {
                        $.modal.close();
                        return false;
                    },
                    css: {
                        marginBottom: "20px"
                    }
                }).appendTo("#rebate_info");
            }
        });
    });
    $("p.cargobox_rebate_details").click(function () {
        $("#cargobox_rebate").modal({
            containerCss: {
                width: 500,
                height: 400
            },
            onShow: function () {
                var exit = $("<a/>", {
                    href: "#",
                    text: "close",
                    className: "btn close",
                    click: function () {
                        $.modal.close();
                        return false;
                    },
                    css: {
                        marginBottom: "20px"
                    }
                }).appendTo("#cargobox_rebate");
            }
        });
    });
});
/*
    end doc load
*/

function urlizeString(urlChunk) {
    return urlChunk.toString().replace(' ', '-').toLowerCase();
}

function loadProductSelector(products) {
    if (products && products.length > 0) {
        var catProdHtml = '<ul><li>';
        for (var i = 0; i < products.length; i++) {
            var catProd = products[i];
            if (i > 0 && i % catProductCount == 0) {
                catProdHtml += '</li><li>';
            }
            catProdHtml += '<div class="product">';
            catProdHtml += '    <a href="/shop/' + urlizeString(category) + '/' + urlizeString(subCategory) + '/' + catProd.Permalink + '">';
            catProdHtml += '         <img src="' + assetServer + 'image/product/' + catProd.Permalink + '/size/small/sequence/1" width="80" height="60" alt="' + catProd.MarketingProductName + '"/>';
            catProdHtml += '        <p>' + catProd.MarketingProductName + '</p>';
            if (catProd.PartnerPrice != null && catProd.PartnerPrice > 0) {
                catProdHtml += '        <p class="price"><span style="text-decoration:line-through">' + catProd.PriceDisplay + '</span> ' + catProd.PartnerPriceDisplay + '</p>';
            } else {
                catProdHtml += '        <p class="price">' + catProd.PriceDisplay + '</p>';
            }
            catProdHtml += '    </a>';
            if (catProd.ShowCompare) {
                catProdHtml += '    <input type="checkbox" name="' + catProd.MarketingProductName + '" value="" id="' + catProd.Permalink + '"><a href="#" class="btn compare">Compare</a>';
            }
            catProdHtml += '</div>';
        }
        catProdHtml += '</li></ul>';
        $("#selector").html(catProdHtml);
        $("#toggle").css("display", "block");
                /*
        Product detail - Product Selector
        */
        var sliderheight = $("#product_selector").outerHeight() + 36;
        var toggleheight = 23;
        $("#product_selector").css({
            marginTop: -sliderheight + toggleheight
        });
        $("#selector").css({
            "display": "block"
        });
        $("#toggle a").toggle(

        function () {
            $("#product_selector #your_vehicle_content").fadeIn(400);
            $("#product_selector").animate({
                marginTop: -36
            }, 400, function () {
                $("#product_selector").addClass("shown");
                $("#toggle a").text("Hide these options");
            });
        }, function () {
            $("#product_selector #your_vehicle_content").fadeOut(400);
            $("#product_selector").animate({
                marginTop: -sliderheight + toggleheight
            }, 400, function () {
                $("#product_selector").removeClass("shown");
                $("#toggle a").text("Show more options");
            });
        });
        $("#selector").easySlider({
            auto: false,
            continuous: false
        });
        $("#selector").css({
            width: 900
        }); /* end */
    }
}

function reorder(element, callback) {
    function randOrd() {
        return (Math.round(Math.random()) - 0.5);
    }
    return ($(this).each(function () {
        var $this = $(element);
        var $children = $this.children();
        var childCount = $children.length;
        if (childCount > 1) {
            $children.hide();
            var indices = new Array();
            for (i = 0; i < childCount; i++) {
                indices[indices.length] = i;
            }
            indices = indices.sort(randOrd);
            $.each(indices, function (j, k) {
                var $child = $children.eq(k);
                var $clone = $child.clone(true);
                $clone.show().appendTo($this);
                if (callback !== undefined) {
                    callback($child, $clone);
                }
                $child.remove();
            });
        }
    }));
};
$.extend({
    compareProducts: function () {
        var compare = [];
        $("#compare").modal({
            containerId: "compare_container",
            overlayClose: true,
            opacity: 35,
            autoPosition: true,
            maxHeight: 333,
            close: true,
            zIndex: 5000,
            positiontype: "absolute",
            onShow: function () {
                $(".cancel,#simplemodal-overlay").click(function () {
                    $.modal.close();
                    return false;
                });
                $(document).keyup(function (e) {
                    if (e.keyCode === 27) $.modal.close();
                });
                var products = $("input:checked");
                for (var i = 0; i < products.length; i++) {
                    compare.push($(products[i]).attr("id").toLowerCase());
                };
                var html = $("<div/>", {
                    id: "compare",
                    html: $("<table/>", {
                        border: 0,
                        cellspacing: 0,
                        cellpadding: 0,
                        html: $("<tr/>", {
                            html: $("<th/>", {
                                html: "<img src=\"/img/yakima-product-comparison.png\" width=\"306\" height=\"56\" class=\"product_comparison\" alt=\"Yakima Product Comparison\">"
                            })
                        })
                    })
                });
                $(".simplemodal-wrap").append(html);
                $.getJSON(assetServer + "compare/products/" + compare + "?callback=?", function (data) {
                    $.each(data[0].Features, function (i) {
                        $("#compare table tr:last").after("<tr><td class=\"feature\">" + data[0].Features[i].Feature + "</td></tr>");
                    });
                    $.each(data, function (i) {
                        $("#compare table tr th:last").after("<th>" + "	<div class=\"product\">" + "		<img width=\"38\" height=\"38\" alt=" + data[i].ProductName + " src=\"" + assetServer + data[i].ProductImage + "\">" + "		<div>" + "		<h3>" + data[i].ProductName + "</h3>" + "		<h4>$" + data[i].Price + " USD</h4>" + "	</div>" + "</th>");
                        $.each(data[i].Features, function (ii) {
                            var className = data[i].Features[ii].ExtendedValue ? "show" : data[i].Features[ii].HasFeature;
                            $("#compare table tr:eq(" + (ii + 1) + ") td:last").after("<td class=\"col_" + (i + 1) + " " + className + "\">" + "	<span>" + data[i].Features[ii].ExtendedValue + "</span>" + "</td>");
                        });
                        loaded(i);
                    });
                    $("#compare table tr:nth-child(odd)").addClass("alt");
                    $("#compare table tr:eq(0) th:last").addClass("last");
                    $("#compare table tr:last td:last").addClass("last");
                });

                function loaded(obj) {
                    if ((products.length - 1) === obj) {
                        $("#compare tr:first").addClass("header");
                        $("#compare_container").css({
                            height: "auto",
                            width: "auto"
                        }).fadeIn(0, function () {
                            $("a.simplemodal-close").css({
                                display: "block"
                            });
                            $("tr").each(function () {
                                $("td:last", this).each(function () {
                                    $(this).css({
                                        borderRight: "none"
                                    });
                                });
                            });
                            $("tr:eq(1) td").css({
                                borderTop: "1px solid #F9F9F9"
                            });
                            $("#compare").fadeIn(500);
                            $.modal.setPosition();
                        });
                    }
                }
            }
        });
    }
});

function setupCompare() {
    var string = "";
    $("#selector .product").each(function () {
        string = $("a p:eq(0)", this).text();
        if (string === "SprocketRocket") $("a p:eq(0)", this).html("Sprocket-<br>Rocket");
    });
    $(":checkbox").uniform();
    var checked = "";
    var $this;
    // resets check boxes on page load
    $(".product :checkbox").attr("checked", false);
    $("span.checked").removeClass("checked");
    $(".checker.disabled,.compare.disabled").removeClass("disabled");
    // checkbox click
    $(".product :checkbox").click(function () {
        isCompareReady(this);
    });
    // compare button click
    $(".product a.compare").click(function () {
                if ($(this).hasClass("disabled")) {
                    return false;
                }
        checked = isCompareReady();
        if ($(this).hasClass("checked") && checked >= 2) {
            $.compareProducts();
        }
        if (!$(this).hasClass("checked") && checked < 3) {
            var isChecked = $(this).siblings(".checker").find("span").attr("class");
            if (isChecked) {
                $(this).siblings(".checker").find(":checkbox").click();
                $(this).siblings(".checker").find("span").removeClass("checked");
                isCompareReady($(this).siblings(".checker").find(":checkbox"));
            } else {
                $(this).siblings(".checker").find(":checkbox").click();
                $(this).siblings(".checker").find("span").addClass("checked");
                isCompareReady($(this).siblings(".checker").find(":checkbox"));
            }
        }
        return false;
    });
}

function isCompareReady(ele) {
    var checked = $(".product input:checked").length;
		
    if (checked <= 1) {
            $(".product").find("a.compare").removeClass("checked");
    }
    if (checked === 2) {
            $(".compare,.checker").removeClass("disabled");
            $(".compare input").removeAttr("disabled");
    }
    if (checked === 3) {
        $(".product .checker span:not(.checked) input:checkbox").attr("disabled", true);
        $(".checker span").each(function () {
            if (!$(this).hasClass("checked")) {
                $(this).parent().addClass("disabled");
                $(this).parents(".product").find("a.compare").addClass("disabled");
            };
        });
    }
    if ($(ele).parents(".product").find(".checker span").hasClass("checked") && checked >= 2 ) {
        $(".checker span.checked").parents(".product").find("a.compare").addClass("checked");
        $(ele).parents(".product").find("a.compare").addClass("checked");
    } else {
        $(ele).parents(".product").find("a.compare").removeClass("checked");
    }
    return checked;
}

function setCookie(FactoryId, Hitch, Make, ModelId, ModelName, Year) {
    $.jCookie('yakima-vehicle', '{"FactoryId":' + FactoryId + ',"Hitch":' + Hitch + ',"Make":"' + Make + '","ModelId":' + ModelId + ',"ModelName":"' + ModelName + '","Year":' + Year + '}', 3650, {
        path: "/",
        domain: currentLocation
    });
}
/* To Title Case 1.1.1
 * David Gouch <http://individed.com>
 * 23 May 2008
 * License: http://individed.com/code/to-title-case/license.txt
 *
 * In response to John Gruber's call for a Javascript version of his script: 
 * http://daringfireball.net/2008/05/title_case
 */
String.prototype.toTitleCase = function () {
    return this.replace(/([\w&`'‘’".@:\/\{\(\[<>_]+-? *)/g, function (match, p1, index, title) {
        if (index > 0 && title.charAt(index - 2) !== ":" && match.search(/^(a(nd?|s|t)?|b(ut|y)|en|for|i[fn]|o[fnr]|t(he|o)|vs?\.?|via)[ \-]/i) > -1) return match.toLowerCase();
        if (title.substring(index - 1, index + 1).search(/['"_{(\[]/) > -1) return match.charAt(0) + match.charAt(1).toUpperCase() + match.substr(2);
        if (match.substr(1).search(/[A-Z]+|&|[\w]+[._][\w]+/) > -1 || title.substring(index - 1, index + 1).search(/[\])}]/) > -1) return match;
        return match.charAt(0).toUpperCase() + match.substr(1);
    });
};

/*

Removed by Nathan, July 28th 2011
We are no longer using this since the Whispbar launch.

function checkVehicleCookie() {
    if ($.jCookie("yakima-vehicle")) {
        $.ajax({
            type: "POST",
            url: "/Vehicle/LoadCookie",
            success: function (msg) {
                if (msg != null) {
                    loadVehicle(msg);
                }
            }
        });
    }
}

function loadVehicle(vehicle) {
    var modelname = vehicle.ModelName;
    $("#your_vehicle a").html('<span>' + vehicle.Year + ' ' + vehicle.Make + ' ' + modelname + '</span>');
    $.modal.close();
    var vehiclename = $("#your_vehicle a span").text();
    var newwidth = 5 * vehiclename.length;
    if (newwidth < 71) {
        $("#your_vehicle a").css({
            width: 71
        });
    } else {
        $("#your_vehicle a").css({
            width: (5 * vehiclename.length)
        });
    }
    if ($(".fit-message-content").length > 0) {
        $.ajax({
            type: "POST",
            url: "/Product/CheckFit",
            data: "permalink=" + permalink + "&category=" + category + "&subCategoryName=" + subCategory,
            success: function (msg) {
                var fitHtml = '';
                var fitTopHtml = '';
                if (msg.FitsVehicle) {
                    fitHtml += '<p class="fit" id="your_vehicle_content">';
                    fitTopHtml += '<p class="fit" id="your_vehicle_content">';
                    fitHtml += 'The ' + msg.MarketingProductName + ' will fit your <strong>' + msg.Vehicle.Display + '</strong> <a href="#" class="change">change vehicle</a>';
                    fitTopHtml += 'These products will fit your  <strong>' + msg.Vehicle.Display + '</strong> <a href="/shop/' + msg.Category + '/' + msg.SubCategory + '" class="change">view all products</a>';
                    if (msg.NeedsAdditionalProductToFit) {
                        fitHtml += '<div id="fit-disclaimer">';
                        fitHtml += '    <p>Please note that you\'ll need a few other things to get the ' + msg.MarketingProductName + ' onto your car.  Run through our <a href="#" class="fit-my-car">fit my car</a> tool to get the scoop on what you need.</p>';
                        fitHtml += '</div>';
                    }
                    fitTopHtml += '</p>';
                    fitHtml += '</p>';
                } else {
                    fitTopHtml += fitHtml += '<p class="fit" id="your_vehicle_content">The ' + msg.MarketingProductName + ' will <strong>not</strong> fit your <strong>' + msg.Vehicle.Display + '</strong> <a href="#" class="change">change vehicle</a></p>';
                }
                loadProductSelector(msg.CategoryProducts);
                $("#fit-message-top").html(fitTopHtml);
                $(".fit-message-content").html(fitHtml);
                $('#configurator, a.fit-my-car').click(function () {
                    $('a[rel*=yakima_configurator]').trigger('click');
                    return false;
                });
            }
        });
    }
}
*/

/*
CSS Browser Selector v0.3.5 (Feb 05, 2010)
http://rafael.adm.br/css_browser_selector
*/

function css_browser_selector(u) {
    var ua = u.toLowerCase(),
        is = function (t) {
            return ua.indexOf(t) > -1;
        },
        g = 'gecko',
        w = 'webkit',
        s = 'safari',
        o = 'opera',
        h = document.documentElement,
        b = [(!(/opera|webtv/i.test(ua)) && /msie\s(\d)/.test(ua)) ? ('ie ie' + RegExp.$1) : is('firefox/2') ? g + ' ff2' : is('firefox/3.5') ? g + ' ff3 ff3_5' : is('firefox/3') ? g + ' ff3' : is('gecko/') ? g : is('opera') ? o + (/version\/(\d+)/.test(ua) ? ' ' + o + RegExp.$1 : (/opera(\s|\/)(\d+)/.test(ua) ? ' ' + o + RegExp.$2 : '')) : is('konqueror') ? 'konqueror' : is('chrome') ? w + ' chrome' : is('iron') ? w + ' iron' : is('applewebkit/') ? w + ' ' + s + (/version\/(\d+)/.test(ua) ? ' ' + s + RegExp.$1 : '') : is('mozilla/') ? g : '', is('j2me') ? 'mobile' : is('iphone') ? 'iphone' : is('ipod') ? 'ipod' : is('mac') ? 'mac' : is('darwin') ? 'mac' : is('webtv') ? 'webtv' : is('win') ? 'win' : is('freebsd') ? 'freebsd' : (is('x11') || is('linux')) ? 'linux' : '', 'js'];
    c = b.join(' ');
    h.className += ' ' + c;
    return c;
};
css_browser_selector(navigator.userAgent);
