﻿// tires stats
$.tireSearch = {
    url: null,
    data: {
        ajaxSearchUrl: '',
        searchUrl: '',
        baseUrl: '',
        simple: true,
        tsInterval: false,
        type: ''
    },

    updatingStats: false,
    updateStatsRequired: false,

    getSearchUrl: function () {
        var url = '';

        var manItems = $('#asmSelect0 .asmOptionDisabled');
        var mans = '';
        for (var i = 0; i < manItems.length; i++) {
            if (i != 0) mans += '-';
            mans += manItems[i].value.split("-")[0];
        }

        url += $.tireSearch.data.simple ? '' : '~v[ext]';
        url += '~f[p1]=' + $("#cost-min-ex").val()
            + '~f[p2]=' + $("#cost-max-ex").val();
        if ($.tireSearch.data.simple) {
            if ($('#winterTire')[0].checked)
                url += '~f[s]=1';
            else if ($('#summerTire')[0].checked)
                url += '~f[s]=2';
            else if ($('#asTire')[0].checked)
                url += '~f[s]=0';
        }
        else {
            if ($('#winterTire')[0].checked)
                url += '~f[s]=1';
            else if ($('#summerTire')[0].checked)
                url += '~f[s]=2';
            else if ($('#asTire')[0].checked)
                url += '~f[s]=0';

            var si = $('#speedindex').val();
            var li = $('#loadindex').val();
            if (si != '')
                url += '~f[si]=' + si;
            if (li != '')
                url += '~f[li]=' + li;

            var cl = $('.tireClass');
            for (var i = 0; i < cl.length; i++) {
                if (cl[i].checked) {
                    url += '~f[cl]=' + cl[i].value;
                    break;
                }
            }
            if ($('#pinsOnly')[0].checked)
                url += '~f[pins]=1';
            if ($('#nonPinsOnly')[0].checked)
                url += '~f[pins]=0';
        }
        if (!$.tireSearch.data.tsInterval) {

            var w = $('#width').val();
            var h = $('#height').val();
            var r = $('#radius').val();
            if (w != '')
                url += '~f[w1]=' + w + '~f[w2]=' + w;
            if (h != '')
                url += '~f[h1]=' + h + '~f[h2]=' + h;
            if (r != '')
                url += '~f[r1]=' + r + '~f[r2]=' + r;
        }
        else {
            url += '~v[int]';
            var w1 = $('#width1').val();
            var h1 = $('#height1').val();
            var r1 = $('#radius1').val();
            var w2 = $('#width2').val();
            var h2 = $('#height2').val();
            var r2 = $('#radius2').val();

            if (w1 != '')
                url += '~f[w1]=' + w1;
            if (h1 != '')
                url += '~f[h1]=' + h1;
            if (r1 != '')
                url += '~f[r1]=' + r1;
            if (w2 != '')
                url += '~f[w2]=' + w2;
            if (h2 != '')
                url += '~f[h2]=' + h2;
            if (r2 != '')
                url += '~f[r2]=' + r2;
        }

        if (mans != '')
            url += '~f[mans]=' + mans;

        return url;
    },

    isManufacturerSearch: function (SearchUrl) {
        return (SearchUrl.indexOf("~f[pr1]=0~f[pr2]=40000~f[mans]=") != -1 ||
        SearchUrl.indexOf("~f[pr1]=0~f[pr2]=20000~f[mans]=") != -1);
    },

    getManufLinkTitle: function () {
        var manLinkTitle = "";
        var manItems = $('#asmSelect0 .asmOptionDisabled');
        var titleStartInd;

        if (manItems.length == 1) {
            titleStartInd = manItems[0].value.indexOf("-");
            manLinkTitle = manItems[0].value.slice(++titleStartInd);
        }
        return manLinkTitle;
    },

    onSearchClicked: function () {
        var c = $.tireSearch.data.type;
        var constructedSearchUrl = $.tireSearch.getSearchUrl();
        var linkTitle = $.tireSearch.getManufLinkTitle();

        if (this.isManufacturerSearch(constructedSearchUrl) && linkTitle.length > 0)
            window.location = $.tireSearch.data.baseUrl + "brand/" + $.tireSearch.data.type + linkTitle;
        else
            window.location = $.tireSearch.data.searchUrl + $.tireSearch.data.type + $.tireSearch.getSearchUrl() + (!$.tireSearch.data.simple ? '#s-extend-search' : '');
    },

    updateStats: function (key, value) {
        switch (key) {
            case "toggleForm":
                $.tireSearch.data.simple = !$.tireSearch.data.simple;
                break;
            case "toggleTsInterval":
                $.tireSearch.data.tsInterval = !$.tireSearch.data.tsInterval;
                break;
        }
        $.tireSearch.updateStatsRequired = true;
    },
    checkStats: function () {
        if (!$.tireSearch.updatingStats && $.tireSearch.updateStatsRequired) {
            $.tireSearch.updatingStats = true;
            $.tireSearch.updateStatsRequired = false;
            var interval = 2000;
            $.post($.tireSearch.data.ajaxSearchUrl + $.tireSearch.getSearchUrl(), null, function (data) {
                $('ul.search-stat li').effect("highlight", {}, interval);
                $('#searchStatsDealers').html(data.DealersCount);
                $('#searchStatsOffers').html(data.OffersCount);
                $('#searchStatsPrice').html(Math.floor(data.AveragePrice / 100));
                $('ul.search-stat strong').fadeIn(interval);
                $.tireSearch.updatingStats = false;
                window.setTimeout($.tireSearch.checkStats, 1000);
            }, 'json')
        }
        else {
            window.setTimeout($.tireSearch.checkStats, 1000);
        }
    }
}

