﻿/*! HTML5 Shiv vpre3.6 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed */
(function(n,t){function p(n,t){var i=n.createElement("p"),r=n.getElementsByTagName("head")[0]||n.documentElement;return i.innerHTML="x<style>"+t+"<\/style>",r.insertBefore(i.lastChild,r.firstChild)}function c(){var n=r.elements;return typeof n=="string"?n.split(" "):n}function o(n){var t=h[n[s]];return t||(t={},e++,n[s]=e,h[e]=t),t}function l(n,r,u){if(r||(r=t),i)return r.createElement(n);u=u||o(r);var f;return f=u.cache[n]?u.cache[n].cloneNode():y.test(n)?(u.cache[n]=u.createElem(n)).cloneNode():u.createElem(n),f.canHaveChildren&&!v.test(n)?u.frag.appendChild(f):f}function w(n,r){if(n||(n=t),i)return n.createDocumentFragment();r=r||o(n);for(var f=r.frag.cloneNode(),u=0,e=c(),s=e.length;u<s;u++)f.createElement(e[u]);return f}function b(n,t){t.cache||(t.cache={},t.createElem=n.createElement,t.createFrag=n.createDocumentFragment,t.frag=t.createFrag());n.createElement=function(n){return r.shivMethods?l(n):t.createElem(n)};n.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+c().join().replace(/\w+/g,function(n){return t.createElem(n),t.frag.createElement(n),'c("'+n+'")'})+");return n}")(r,t.frag)}function a(n){n||(n=t);var u=o(n);return!r.shivCSS||f||u.hasCSS||(u.hasCSS=!!p(n,"article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}")),i||b(n,u),n}var u=n.html5||{},v=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,y=/^<|^(?:a|b|button|code|div|fieldset|form|h1|h2|h3|h4|h5|h6|i|iframe|img|input|label|li|link|ol|option|p|param|q|script|select|span|strong|style|table|tbody|td|textarea|tfoot|th|thead|tr|ul)$/i,f,s="_html5shiv",e=0,h={},i,r;(function(){try{var n=t.createElement("a");n.innerHTML="<xyz><\/xyz>";f="hidden"in n;i=n.childNodes.length==1||function(){t.createElement("a");var n=t.createDocumentFragment();return typeof n.cloneNode=="undefined"||typeof n.createDocumentFragment=="undefined"||typeof n.createElement=="undefined"}()}catch(r){f=!0;i=!0}})();r={elements:u.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:u.shivCSS!==!1,supportsUnknownElements:i,shivMethods:u.shivMethods!==!1,type:"default",shivDocument:a,createElement:l,createDocumentFragment:w};n.html5=r;a(t)})(this,document);
/*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */
/*! NOTE: If you're already including a window.matchMedia polyfill via Modernizr or otherwise, you don't need this part */
window.matchMedia=window.matchMedia||function(n){"use strict";var u,i=n.documentElement,f=i.firstElementChild||i.firstChild,r=n.createElement("body"),t=n.createElement("div");return t.id="mq-test-1",t.style.cssText="position:absolute;top:-100em",r.style.background="none",r.appendChild(t),function(n){return t.innerHTML='&shy;<style media="'+n+'"> #mq-test-1 { width: 42px; }<\/style>',i.insertBefore(r,f),u=42===t.offsetWidth,i.removeChild(r),{matches:u,media:n}}}(document);
/*! Respond.js v1.1.0: min/max-width media query polyfill. (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs  */
(function(n){"use strict";function y(){v(!0)}var r={};if(n.respond=r,r.update=function(){},r.mediaQueriesSupported=n.matchMedia&&n.matchMedia("only all").matches,!r.mediaQueriesSupported){var h,p,c,t=n.document,u=t.documentElement,f=[],e=[],i=[],l={},w=30,o=t.getElementsByTagName("head")[0]||u,nt=t.getElementsByTagName("base")[0],s=o.getElementsByTagName("link"),a=[],b=function(){for(var r=0;s.length>r;r++){var t=s[r],i=t.href,u=t.media,f=t.rel&&"stylesheet"===t.rel.toLowerCase();i&&f&&!l[i]&&(t.styleSheet&&t.styleSheet.rawCssText?(d(t.styleSheet.rawCssText,i,u),l[i]=!0):(!/^([a-zA-Z:]*\/\/)/.test(i)&&!nt||i.replace(RegExp.$1,"").split("/")[0]===n.location.host)&&a.push({href:i,media:u}))}k()},k=function(){if(a.length){var n=a.shift();tt(n.href,function(t){d(t,n.href,n.media);l[n.href]=!0;setTimeout(function(){k()},0)})}},d=function(n,t,i){var s=n.match(/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi),h=s&&s.length||0,c,l,u,a,r,y,p,o;for(t=t.substring(0,t.lastIndexOf("/")),c=function(n){return n.replace(/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,"$1"+t+"$2$3")},l=!h&&i,t.length&&(t+="/"),l&&(h=1),u=0;h>u;u++)for(l?(a=i,e.push(c(n))):(a=s[u].match(/@media *([^\{]+)\{([\S\s]+?)$/)&&RegExp.$1,e.push(RegExp.$2&&c(RegExp.$2))),y=a.split(","),p=y.length,o=0;p>o;o++)r=y[o],f.push({media:r.split("(")[0].match(/(only\s+)?([a-zA-Z]+)\s?/)&&RegExp.$2||"all",rules:e.length-1,hasquery:r.indexOf("(")>-1,minw:r.match(/\(min\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:r.match(/\(max\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/)&&parseFloat(RegExp.$1)+(RegExp.$2||"")});v()},g=function(){var r,i=t.createElement("div"),n=t.body,f=!1;return i.style.cssText="position:absolute;font-size:1em;width:1em",n||(n=f=t.createElement("body"),n.style.background="none"),n.appendChild(i),u.insertBefore(n,u.firstChild),r=i.offsetWidth,f?u.removeChild(n):n.removeChild(i),r=c=parseFloat(r)},v=function(n){var it="clientWidth",rt=u[it],ut="CSS1Compat"===t.compatMode&&rt||t.body[it]||rt,a={},ht=s[s.length-1],ft=(new Date).getTime(),nt,k,d,r,tt;if(n&&h&&w>ft-h)return clearTimeout(p),p=setTimeout(v,w),void 0;h=ft;for(nt in f)if(f.hasOwnProperty(nt)){var l=f[nt],y=l.minw,b=l.maxw,et=null===y,ot=null===b,st="em";y&&(y=parseFloat(y)*(y.indexOf(st)>-1?c||g():1));b&&(b=parseFloat(b)*(b.indexOf(st)>-1?c||g():1));l.hasquery&&(et&&ot||!(et||ut>=y)||!(ot||b>=ut))||(a[l.media]||(a[l.media]=[]),a[l.media].push(e[l.rules]))}for(k in i)i.hasOwnProperty(k)&&i[k]&&i[k].parentNode===o&&o.removeChild(i[k]);for(d in a)a.hasOwnProperty(d)&&(r=t.createElement("style"),tt=a[d].join("\n"),r.type="text/css",r.media=d,o.insertBefore(r,ht.nextSibling),r.styleSheet?r.styleSheet.cssText=tt:r.appendChild(t.createTextNode(tt)),i.push(r))},tt=function(n,t){var i=it();i&&(i.open("GET",n,!0),i.onreadystatechange=function(){4!==i.readyState||200!==i.status&&304!==i.status||t(i.responseText)},4!==i.readyState&&i.send(null))},it=function(){var t=!1;try{t=new n.XMLHttpRequest}catch(i){t=new n.ActiveXObject("Microsoft.XMLHTTP")}return function(){return t}}();b();r.update=b;n.addEventListener?n.addEventListener("resize",y,!1):n.attachEvent&&n.attachEvent("onresize",y)}})(this);
//# sourceMappingURL=html5shiv-respond.min.js.map

;;;(function () {
    MyFilters = window.MyFilters || {};

    var FilterViewModel = function (filter, selectedValue) {
        var self = this;
        self.title = filter.Title;
        self.values = filter.Values;
        var selectedItem = self.values.filter(function (v) {
            return v.Value === selectedValue;
        }).pop();
        self.selectedValue = ko.observable(selectedItem);
        self.isDisabled = ko.computed(function () {
            return self.values.length === 0;
        });
    };

    function excludeYearWhenNoProductYear(
        isHideProductYear,
        filters) {
        if (!isHideProductYear
            || !$.isArray(filters)) {
            return filters;
        }
        return filters.filter(function (x) {
            return x.title !== "Year";
        });
    }

    MyFilters.FilterList = function (
        sf,
        ourFilters,
        staticFilterValues,
        isHideProductYear) {
        var filters = [];
        var getFiltersUrl = sf.getServiceRoot('Dominion/Products')
            + 'CompareProducts/GetFilters';
        if ($.isArray(ourFilters)) {
            filters = ourFilters;
        }
        var self = this;

        var filterJsObjs = filters.map(function (f) {
            return new FilterViewModel(f);
        });

        filterJsObjs = excludeYearWhenNoProductYear(
            isHideProductYear,
            filterJsObjs);

        self.ourFilters = ko.observableArray(filterJsObjs);
        self.availableProducts = ko.observableArray();

        self.selectedModelId = ko.computed(function () {
            var modelFilter = self.ourFilters()
                .filter(function (f) {
                    return f.title === 'Model';
                }).pop();
            return modelFilter
                && modelFilter.selectedValue()
                && modelFilter.selectedValue().Value;
        });

        function getAllFilterValues() {
            var selectedFilters = self.ourFilters()
                .filter(function (f) {
                    return f.selectedValue();
                });
            var selectedFilterValues = selectedFilters.map(
                function (f) {
                    return {
                        value: f.selectedValue().Value,
                        title: f.title
                    };
                });
            var allFilterValues = selectedFilterValues
                .concat(staticFilterValues);
            if (isHideProductYear) {
                var yearFilter = allFilterValues.filter(function (x) {
                    return x.title === "Year";
                }).pop();
                if (!yearFilter) {
                    yearFilter = { title: "Year", value: "0" };
                    allFilterValues.push(yearFilter);
                }
                else {
                    yearFilter.value = "0";
                }
            }
            return allFilterValues;
        }

        function setOurFilters(response) {
            var newFilters = [];
            if ($.isArray(response)) {
                newFilters = response.map(function (f) {
                    var matchingFilter = self.ourFilters()
                        .filter(function (oldFilter) {
                            return oldFilter.title === f.Title;
                        }).pop();
                    var selectedValue = matchingFilter
                        && matchingFilter.selectedValue()
                        && matchingFilter.selectedValue().Value;
                    return new FilterViewModel(f, selectedValue);
                });
            }
            newFilters = excludeYearWhenNoProductYear(
                isHideProductYear,
                newFilters);
            self.ourFilters(newFilters);
        }

        function callAjaxGetFilters(allFilterValues) {
            var sendData = {
                filters: allFilterValues
            };
            return $.ajax({
                type: 'GET',
                url: getFiltersUrl,
                data: sendData,
                beforeSend: sf.setModuleHeaders
            }).then(function (response) {
                setOurFilters(response);
            }, function () {

            });
        }

        self.updateFilters = function () {
            var allFilterValues = getAllFilterValues();
            callAjaxGetFilters(allFilterValues);
        };
    };

    $(document)
        .ajaxStart(function () {
            $('.ajax-loading').show();
        })
        .ajaxStop(function () {
            $('.ajax-loading').hide();
        });
}());
;;;