﻿// JavaScript Document

var isProductLanding = false;

Array.prototype.unique =
	function() {
	    var a = [];
	    var l = this.length;
	    for (var i = 0; i < l; i++) {
	        for (var j = i + 1; j < l; j++) {
	            if (this[i] === this[j])
	                j = ++i;
	        }
	        a.push(this[i]);
	    }
	    return a;
	};
function getQuerystring(key) {
    var defaultVal = "";
    key = key.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regex = new RegExp("[\\?&]" + key + "=([^&#]*)");
    var qs = regex.exec(window.location.href);
    if (qs == null) {
        return defaultVal;
    } else {
        return qs[1];
    }
}

$.fn.setLinkList = function() {
    $container = $(this);
    $container.find('a.top').click(function() { return false; });
    $container.find('ul a').filter(':not(.top)').unbind('click.filter').bind('click.filter', function() {
        if (!$(this).parent().hasClass("dissabled")) {
            $('#' + $(this).parents('.sf-menu').attr('id') + '_hidden').val(this.hash.substring(1, this.hash.length)).change();
            $(this).parents('.sf-menu').find('.top').text($(this).text());
            $(this).parents('.sf-menu').find('ul a').each(function() {
                $(this).attr("class", $(this).attr("class").replace("-selected", ""));
            });
            if ($(this).parents().is('.tab_row')) {
                $('.tab_header').attr('src', '/_layouts/1033/SCJohnson/ScrubbingBubbles/images/tabheaders/' + $(this).attr('class') + '.png');
            }
            $(this).attr("class", $(this).attr("class") + "-selected");


            trackClickForOmniture();
            $(this).parents('.sf-menu li').mouseout();
        }
        return false;


    });
    $('a.start_over').click(function() {
        $('.select_row input[type="hidden"]').val("").change();
        $('.sf-menu .top').text("Select");
        $(this).hide();
        $('.products').hide();
        return false;
    });
}

$.fn.filterControl = function(options) {

    var opts = $.extend({}, $.fn.filterControl.defaults, options);
    $productFilter = $(this);
    if (opts.pageType == "product_landing") {
        $productFilter.find('.tab_row').detach().insertBefore($productFilter.find('.select_row').filter(':first'));
        $('.tab_header').show();
        isProductLanding = true;
    }
    $productFilter.find('.start_over').hide();
    $productFilter.find('#product_list li').remove();
    for (i = 0; i < opts.products.product.length; i++) {
        var styles = "";
        var surfaces = "";
        var issues = "";

        for (s = 0; s < opts.products.product[i].styles.length; s++) {
            styles += " " + opts.products.product[i].styles[s];
        }
        for (s = 0; s < opts.products.product[i].issues.length; s++) {
            issues += " " + opts.products.product[i].issues[s];
        }
        for (s = 0; s < opts.products.product[i].surfaces.length; s++) {
            surfaces += " " + opts.products.product[i].surfaces[s];
        }
        if ((i + 1) % 3 == 0) {
            cssClass = "end_line";
        } else {
            cssClass = "";
        }
        if (opts.pageType != "product_landing") {
            $productFilter.find('#product_list').append('<li styles="' + styles + '" surfaces="' + surfaces + '" issues="' + issues + '"><a href="' + opts.products.product[i].href + '">' + opts.products.product[i].name + '</a></li>');
        } else {
            $productFilter.find('#product_list').append('<li class="' + cssClass + '" styles="' + styles + '" surfaces="' + surfaces + '" issues="' + issues + '"><a href="' + opts.products.product[i].href + '">' + opts.products.product[i].thumb.replace("\\", "") + '</a><p class="description">' + opts.products.product[i].desc + '</p></li>');
        }
    }
    function filterList() {
        $productFilter.find('.products').show();
        $currentProducts = $productFilter.find('#product_list').find('li').hide().removeClass('end_line');

        if ($productFilter.find('#styles_hidden').val() != "") {
            $currentProducts = $currentProducts.filter('[styles~=' + $productFilter.find('#styles_hidden').val() + ']');
        }
        if ($productFilter.find('#surfaces_hidden').val() != "") {
            $currentProducts = $currentProducts.filter('[surfaces~=' + $productFilter.find('#surfaces_hidden').val() + ']');
        }
        if ($productFilter.find('#issues_hidden').val() != "") {
            $currentProducts = $currentProducts.filter('[issues~=' + $productFilter.find('#issues_hidden').val() + ']');
        }
        if (opts.pageType != "product_landing") {
            $currentProducts.filter(':lt(5)').show();
        } else {
            var p = 0;
            $currentProducts.show().each(function() {
                p++
                if (p % 3 == 0) {
                    $(this).addClass("end_line");
                }
            });
        }

        var currentStyles = [];
        var currentSurfaces = [];
        var currentIssues = [];
        $currentProducts.each(function() {
            currentStyles = currentStyles.concat($(this).attr('styles').split(" "));
            currentSurfaces = currentSurfaces.concat($(this).attr('surfaces').split(" "));
            currentIssues = currentIssues.concat($(this).attr('issues').split(" "));
        });
        currentStyles = currentStyles.unique();
        currentSurfaces = currentSurfaces.unique();
        currentIssues = currentIssues.unique();

        var toHide = [];
        if ($(this).attr('id') != 'styles_hidden' || $(this).val() == "") {
            $productFilter.find('#styles ul a').each(function() {

                if (jQuery.inArray(this.hash.substring(1, this.hash.length), currentStyles) == -1 && this.hash.substring(1, this.hash.length) != "") {
                    toHide.push(this);
                }
            }).parent().removeClass("dissabled");
        }
        if ($(this).attr('id') != 'surfaces_hidden' || $(this).val() == "") {
            $productFilter.find('#surfaces ul a').each(function() {
                if (jQuery.inArray(this.hash.substring(1, this.hash.length), currentSurfaces) == -1 && this.hash.substring(1, this.hash.length) != "") {
                    toHide.push(this);
                }
            }).parent().removeClass("dissabled");
        }
        if ($(this).attr('id') != 'issues_hidden' || $(this).val() == "") {
            $productFilter.find('#issues ul a').each(function() {
                if (jQuery.inArray(this.hash.substring(1, this.hash.length), currentIssues) == -1 && this.hash.substring(1, this.hash.length) != "") {
                    toHide.push(this);
                }
            }).parent().removeClass("dissabled");
        }
        if (opts.pageType != "product_landing") {
            var queryString = "?styles=" + $productFilter.find('#styles_hidden').val() + "&surfaces=" + $productFilter.find('#surfaces_hidden').val() + "&issues=" + $productFilter.find('#issues_hidden').val();
            if ($productFilter.find('.products .view_all').attr('href').indexOf("?") != -1) {
                $productFilter.find('.products .view_all').attr('href', $productFilter.find('.products .view_all').attr('href').substring(0, $productFilter.find('.products .view_all').attr('href').indexOf("?")) + queryString).hide();
            } else {
                $productFilter.find('.products .view_all').attr('href', $productFilter.find('.products .view_all').attr('href') + queryString).hide();
            }
            if ($currentProducts.length > 5) {
                $productFilter.find('.products .view_all').show();
            }
        }
        $('.results').hide();
        if (opts.pageType == "product_landing") {
            if ($productFilter.find('#styles_hidden').val() != "" || $productFilter.find('#surfaces_hidden').val() != "" || $productFilter.find('#issues_hidden').val() != "") {
                $('.results').show();
            }
        }

        $(toHide).parent().addClass("dissabled");
        $('.tab_row li').removeClass("dissabled");
        $productFilter.find('a.start_over').show();
    }

    if (opts.pageType != "product_landing") {
        $productFilter.find('.products').hide();
    }

    $productFilter.find('.select_row input').unbind('change.productFilter').bind('change.productFilter', filterList);
    $productFilter.find('.tab_row input').unbind('change.productFilter').bind('change.productFilter', filterList);
    if (opts.pageType != "product_landing") {
        $productFilter.css({ "top": "-700px" }).animate({ 'top': '0' }, 3000);
    }
    if (opts.pageType == "product_landing") {
        $productFilter.find('.categories_box').hide();
        $productFilter.find('.top_five').hide();
        $productFilter.find('.view_all').hide();
        $productFilter.find('.panel_header').hide();
        $productFilter.find('.hidden').hide();
        if (getQuerystring('styles') != "" || getQuerystring('issues') != "" || getQuerystring('surfaces') != "") {
            $productFilter.find('#styles_hidden').val(getQuerystring('styles'));
            $productFilter.find('#issues_hidden').val(getQuerystring('issues'));
            $productFilter.find('#surfaces_hidden').val(getQuerystring('surfaces'));
            if (getQuerystring('styles') != "") {
                $(function() { $('.sf-menu .' + getQuerystring('styles').replace(/,/g, '')).click(); })
            }
            if (getQuerystring('issues') != "") {
                $(function() { $('.sf-menu .' + getQuerystring('issues').replace(/,/g, '')).click(); })
            }
            if (getQuerystring('surfaces') != "") {
                $(function() { $('.sf-menu .' + getQuerystring('surfaces').replace(/,/g, '')).click(); })
            }
        }
    }
}

$.fn.filterControl.defaults = { products: { product: [{ "desc": "", "href": "", "issues": [""], "name": "", "styles": [""], "surfaces": [""], "thumb": ""}] }, pageType: "product_slider" }

function trackClickForOmniture() {
    var styles = $('#styles_hidden').val();
    var surfaces = $('#surfaces_hidden').val();
    var issues = $('#issues_hidden').val();

    if (isProductLanding) {
        OmnitureProductBrowseClick(surfaces);
    }
    else {
        OmnitureProductFilterClick(styles, surfaces, issues);
    }
}