﻿var of = new Object();


of.BrandListChange = function() {

    var br = $(".search_header .marque  option:selected").val();
    if (br != '') {
        var alias = br.split(':')[0];

        $.jmsajax({
            url: '/WebServices/Search.asmx/GetSeriesByAlias',
            data: { alias: alias },
            success: function(d) {
                h = new Array();
                h.push(of.getDefaultItem());
                for (var i = 0; i < d.d.length; i++) {
                    h.push('<option value="' + d.d[i].a + '">' + d.d[i].n + '</option>');
                }
                $(".search_header .series").html(h.join(''));
            }
        });
    }
    else $(".search_header .series").html(of.getDefaultItem());
};

of.getDefaultItem = function() {
    return "<option value=''>любая</option>";
};

of.isdef = function(v) {
    if (typeof (v) != "undefined" && v != undefined && v != "")
        return true;
    else
        return false;


};


of.createURL = function(PageNumber) {
    var url = "/";

    try {


        var bn = $(".search_header .marque option:selected").val();
        var sn = $(".search_header .series option:selected").val();

        var pf = $(".search_header .pricefrom").val();
        var pt = $(".search_header .priceto").val();


        var yf = $(".search_header .yearfrom").val();
        var yt = $(".search_header .yearto").val(); ;

        var rt = $(".search_header .runto").val();
        var df = $(".search_header .displacementfrom").val();
        var dt = $(".search_header .displacementto").val();

        var et = of.ChBoxSelVal(".search_header input[name='enginetype']:checked");
        var tt = of.ChBoxSelVal(".search_header input[name='transmissiontype']:checked");
        var bs = of.ChBoxSelVal(".search_header input[name='bodystyle']:checked");
        var cc = of.ChBoxSelVal(".search_header input[name='color']:checked");
        var drt = of.ChBoxSelVal(".search_header input[name='drivetrain']:checked");

        var ph = $(".search_header .photo :checked").length == 1 ? 1 : "";
        var sp = of.ChBoxSelVal(".search_header input[name='steeringposition']:checked");
        var cnd = of.ChBoxSelVal(".search_header input[name='condition']:checked");
        var eq = of.ChBoxSelVal(".search_header input[name='equipment']:checked");

        var sort = $(SortModeID + ' option:selected').val();
        var pz = $(PageSizeListID + ' option:selected').val();
        var keywords = $(".search_header .keywords").val();
        var sellercompany = $(".search_header input[name='seller_company']:checked").length == 1;
        var sellerperson = $(".search_header input[name='seller_person']:checked").length == 1;
        var rg = $(".search_header input[name='searchregioncode']").val();
        var seller = "";
        if (sellercompany && sellerperson)
        { }
        else if (sellercompany) {
            seller = 2;
        }
        else if (sellerperson) {
            seller = 1;
        }


        if (!of.isdef(SearchRegionPrefix)) {
            SearchRegionPrefix = "";
        }

        
        if (rg != '')
            url += rg + '/';

        url += 'offers/';

        if (bn != '') url += bn + '/';
        if (sn != '') url += sn + '/';

        url += '?';

        if (pf != '') url += 'pricefrom=' + pf + '&';
        if (pt != '') url += 'priceto=' + pt + '&';
        if (yf != '') url += 'yearfrom=' + yf + '&';
        if (yt != '') url += 'yearto=' + yt + '&';


        if (rt != '') url += 'runto=' + rt + '&';
        if (df != '') url += 'displacementfrom=' + df + '&';
        if (dt != '') url += 'displacementto=' + dt + '&';
        if (et != '') url += 'enginetype=' + et + '&';
        if (tt != '') url += 'transmissiontype=' + tt + '&';
        if (bs != '') url += 'bodystyle=' + bs + '&';
        if (cc != '') url += 'color=' + cc + '&';
        if (drt != '') url += 'drivetrain=' + drt + '&';
        if (ph != '') url += 'photo=' + ph + '&';
        if (sp != '') url += 'steeringposition=' + sp + '&';
        if (cnd != '') url += 'condition=' + cnd + '&';
        if (eq != '') url += 'equipment=' + eq + '&';
        if (FirmId != "")
            url += 'companyid=' + FirmId + '&';

        if (ParentId != "")
            url += 'parentid=' + ParentId + '&';

        if (keywords != "")
            url += 'keywords=' + encodeURIComponent(keywords) + '&';
        if (seller != "")
            url += 'seller=' + seller + '&';
         

        if (of.isdef(ViewMode) && ViewMode == "1")
            url += 'viewmode=' + ViewMode + '&';

        if (of.isdef(sort) && sort != "0")
            url += 'sortmode=' + sort + '&';

        if (of.isdef(PageNumber) && PageNumber > 1)
            url += 'pagenumber=' + PageNumber + '&';

        if (of.isdef(pz) && pz != '15')
            url += 'pagesize=' + pz + '&';


        if (url.substring(url.length - 1) == "?")
            url = url.substring(0, url.length - 1);

        if (url.substring(url.length - 1) == "&")
            url = url.substring(0, url.length - 1);

    }

    catch (err) {
        url = '/offers/';
    };
    return url;
};

of.search = function() {
    var url = of.createURL();
    document.location.href = url;
    return false;
};
of.ChBoxSelVal = function(id) {
    var result = [];
    var checkboxes = $(id);

    for (var i = 0; i < checkboxes.length; i++) {
        
        result.push(checkboxes[i].value);

    }
    return result.join(",");


};


try {
  
    $(SortModeID).change(of.search);
    $(PageSizeListID).change(of.search);

}
catch (e) { };



$(".search_header .marque").change(of.BrandListChange);

var expand_content_selection = function() {
var sh = $(".search_header .extra_search_header");
    for (var i = 0; i < sh.length; i++) {
        var obj = $(sh[i]);
        var next = obj.next(".extra_search_content:hidden");
        var checked = next.find(":checked");
        if (checked.length > 0)
            expand_content(obj);
        else {
            var txt = next.find("input[type='text'], select");
            for (var j = 0; j < txt.length; j++) {
                var obj1 = $(txt[j]);
                if (obj1.val() != '') {
                    expand_content(obj);
                    break;
                }
            }

            
            
        }


    }



};

var setPrice = function(pf, pt) {
    $(".search_header .pricefrom").val(pf);   
    $(".search_header .priceto").val(pt);
};

var setRun = function(run) {

    $(".search_header .runto").val(run);
};


var setYear = function(year) {
    var d = new Date();
    var currentyear = d.getFullYear();
    var filter = new Object();

    if (year == '0') {
        filter.YearFrom = '';
        filter.YearTo = '';
    }
    else if (year == '5') {
        filter.YearFrom = '';
        filter.YearTo = currentyear - 10;
    }
    else if (year == '2') {
        filter.YearFrom = currentyear - 3;
        filter.YearTo = currentyear - 1;
    }
    else if (year == '3') {
        filter.YearFrom = currentyear - 5;
        filter.YearTo = currentyear - 3;
    }
    else if (year == '4') {
        filter.YearFrom = currentyear - 10;
        filter.YearTo = currentyear - 5;
    }
    else if (year == '1') {
        filter.YearFrom = currentyear - 1;
        filter.YearTo = currentyear;
    }

    $(".search_header .yearfrom").val(filter.YearFrom);
    $(".search_header .yearto").val(filter.YearTo);     



};

var compareWindow = null;
var timer = null;
var compareObjects = {};

function openCompare() {
    if (compareWindow == null || compareWindow.closed)
        compareWindow = window.open('/compare/', '', 'menubar=no,location=no,resizable=yes,scrollbars=yes,status=no');

    //compareWindow = window.open('/compare/', '', 'menubar=no,location=no,resizable=yes,scrollbars=yes,status=no');
    if (timer == null)
        timer = window.setInterval(checkCompareStates, 1000);


}

function SetupObj(object, nodelete) {
    if (!object) return;
    var id = object[0].id.substring(4);
    if (object.hasClass("add_to_compare")) {
        object.removeClass("add_to_compare")
        object.addClass("added_to_compare")
        object.html("убрать из сравнения");

        $("#cmpopen_" + id).show();
        if (!nodelete) {
            AddCompare(id);
        }
        object.closest('li').toggleClass("in_compare");
    }
    else if (object.hasClass("added_to_compare")) {
        object.removeClass("added_to_compare");
        object.addClass("add_to_compare");
        object.html("в сравнение");
        $("#cmpopen_" + id).hide();
        if (!nodelete)
            RemoveCompare(id);

         object.closest('li').toggleClass("in_compare");
            
    }


}


function OnComparisonChanged(object, nodelete) {

    GetCompareIds();
    SetupObj($(object), nodelete)
    return;
}

function AddCompare(id) {
    var cookie = ReadCookie("compare");
    if (!cookie) cookie = "";
    if (cookie != "") cookie = cookie + ',' + id;
    else cookie = id;
    SetCookie("compare", cookie, 90);

}

function RemoveCompare(id) {
    GetCompareIds();
    var result = "";
    for (var key in compareObjects)
        if (key != id) {
        if (result != "") result = result + ",";
        result = result + key;
    }
    SetCookie("compare", result, 90);

}

function SetCookie(name, value, days) {
    if (!value) {
        value = "";
        days = -1;
    }
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        var expires = "; expires=" + date.toGMTString();
    }
    else var expires = "";

    document.cookie = name + "=" + value + "; path=/";
}

function ReadCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
    }
    return null;
}

function eraseCookie(name) {
    SetCookie(name, "", -1);
}

function GetCompareIds() {

    var cookie = ReadCookie("compare");
    if (cookie) {
        var ids = cookie.split(',');
        for (var i = 0; i < ids.length; i++) {
            compareObjects[ids[i]] = null;
        }

    }
    else {
        compareObjects = {};
    }

}

function checkCompareStates() {
    if (compareWindow == null || compareWindow.closed) {

        window.clearInterval(timer);
        timer = null;
    }

    var added = $(".added_to_compare");
    GetCompareIds();
    for (var i = 0; i < added.length; i++) {
        var id = added[i].id.substring(4);
        if (id in compareObjects) {

        }
        else
            SetupObj($(added[i]), true); ;


    }


}

function RestoreCompareState() {

    GetCompareIds();
    for (var key in compareObjects) {
        var obj = $("#cmp_" + key);
        if (obj.length == 1) {

            SetupObj(obj, true);
        }
    }


}
var showSubscriptionDialog = function() {
    var dlg = $("#SubscriptionDialogID");
    if (dlg.length == 0) {
        $("#waitdiv_sdlg").show();
        dlg = $("<div></div>");
        dlg.attr("id", "SubscriptionDialogID")
        dlg.hide();
        $("body").append(dlg);

        dlg.load("/AjaxForms/subscription.aspx?brand=" + OfferBrandAlias + "&series=" + OfferSeriesAlias, "", afterSubscriptionDialogLoad);
    }
    else
        dlg.dialog('open');

    return false;

};

var afterSubscriptionDialogLoad = function(responseText, textStatus, obj) {
    $("#waitdiv_sdlg").hide();
    if (textStatus == 'success') {
        createSubscriptionDialog();
    }
    else {
        alert(responseText);
    }

};


var SearchRegionsDialog = undefined;

var createSearchRegionsDialog = function() {

    var param = { width: 450, title: "Выберите страну или регион", destroy: false };
    SearchRegionsDialog = DialogAutoMain($('#OfferSearchRegionDialogID'), param);

};


var showSearchRegionsDialog = function() {

    if (!SearchRegionsDialog) {
        $("#waitdiv_sdlg").show();
        SearchRegionsDialog = $("<div></div>");
        SearchRegionsDialog.attr("id", "OfferSearchRegionDialogID")
        SearchRegionsDialog.hide();
        $("body").append(SearchRegionsDialog);

        SearchRegionsDialog.load("/AjaxForms/AJAXWrapper.aspx?ctrl=OfferSearchRegions&rnd=" + Math.random(), "", afterSearchRegionsDialogLoad);
    }
    else
        SearchRegionsDialog.dialog('open');

    return false;

};

var afterSearchRegionsDialogLoad = function(responseText, textStatus, obj) {
    $("#waitdiv_sdlg").hide();
    if (textStatus == 'success') {
        createSearchRegionsDialog();
    }
    else {
        alert(responseText);
    }

};

var setSearchRegion = function(RegAlias, RegName) {
    if (SearchRegionsDialog)
        SearchRegionsDialog.dialog('close');


    if (!RegAlias || RegAlias == "") {
        RegAlias = "";
        RegName = "Все регионы";
    }

    $(".search_header input[name='searchregioncode']").val(RegAlias);
    $(".search_header #SearchRegionLinkID").html(RegName);
    changeSearchRegion(RegAlias);



};




$(".extra_search_header").click(function() {
    return expand_content(this);
});


var expand_content = function(obj) {
    $(obj).next(".extra_search_content").toggle();
    $(obj).toggleClass("current_extra_header");
    return false;
};


try { RestoreCompareState(); } catch (e) { };
expand_content_selection();




$(".keywords").keyup(function(e) {

    if (typeof (VoteAnswer) == "function") {
        VoteAnswer = function() {

            of.search();
            return false;
        };
    }
    else {
        if (e.which == 13) {
            e.preventDefault();
            window.setTimeout(function() {
                of.search();
            }, 50);


        }
    
    }

    return false;
});





