$(document).ready(function() {

// Подсвечиваем переключалки-дублёры
$(".switch-double-hover .switch").hover(
	function() {
		$(this).parents(".switch-double-hover").addClass("hover");
	},
	function() {
		$(this).parents(".switch-double-hover").removeClass("hover");
	}
);

// Подсвечиваем ссылки-дублёры вместе
$("a").hover(
    function(){
        $("a[href=" + $(this).attr("href") + "]").addClass("pseudo-hover");
    },
    function(){
        $("a").removeClass("pseudo-hover");
    }
);

// Показываем большой попап с телефоном и адресами
$(".f-menu .switch").click(function(event) {
    event.stopPropagation();
    var small_phone = $(".f-menu .switch");
    var phone_flying = $(".phone-flying");
    var big_phone = $(".b-where-to-go .phone");
    phone_flying.css({"left": small_phone.offset().left, "top": small_phone.offset().top, "display": "block"});
    phone_flying.animate({"left":  big_phone.offset().left, "top":  big_phone.offset().top, "fontSize": "7em", "lineHeight": "1.1em"}, 200, function(){
    });
    setTimeout(function(){
        var speed = 200;
            if ($.browser.msie) {
                speed = 0;
            }
        $(".f-phone-popup")
                .css({"display": "none", "visibility": "visible"})
                .fadeIn(speed, function(){ phone_flying.hide(); })
                .addClass("f-phone-popup_opened z-index-top");
        $(".z-index-top").not(".f-phone-popup").removeClass("z-index-top");
        //
    },250);
    $(".f-menu .switch").css({"visibility": "hidden"});
});

// Прячем большой попап с телефоном и адресами
$(".f-phone-popup .close").click(function closePopup() {
    var small_phone = $(".f-menu .switch");
    var phone_flying = $(".phone-flying");
    var big_phone = $(".b-where-to-go .phone");
    phone_flying.css({"left": big_phone.offset().left, "top": big_phone.offset().top, "display": "block"});
    phone_flying.animate({"left":  small_phone.offset().left, "top":  small_phone.offset().top, "fontSize": "1.5em", "lineHeight": ".9em"}, 200, function(){
    });
    setTimeout(function(){
        $(".f-menu .switch").css({"visibility": "visible"});
        phone_flying.hide();
    },200);
    $(".f-phone-popup")
            .css({"visibility": "hidden"})
            .removeClass("f-phone-popup_opened");
});

$(".f-phone-popup").bind("click", function(event) {
    event.stopPropagation();
});

$(document).bind("click", function() {
    if ($(".f-phone-popup").hasClass("f-phone-popup_opened")) {
    var small_phone = $(".f-menu .switch .switch");
    var phone_flying = $(".phone-flying");
    var big_phone = $(".b-where-to-go .phone");
    phone_flying.css({"left": big_phone.offset().left, "top": big_phone.offset().top, "display": "block"});
    phone_flying.animate({"left":  small_phone.offset().left, "top":  small_phone.offset().top, "fontSize": "1.5em", "lineHeight": ".9em"}, 200, function(){
    });
    setTimeout(function(){
        $(".f-menu .switch").css({"visibility": "visible"});
        phone_flying.hide();
    },200);
    $(".f-phone-popup")
            .css({"visibility": "hidden"})
            .removeClass("f-phone-popup_opened");
    }
});


// Подсвечиваем заголовок в попапе с телефоном, при наведении на соответсвующую точку на карте
    $(".b-where-to-go .map .point").hover(
        function() {
            $(this).parents(".b-where-to-go").find(".places h3").eq($(this).prevAll().size()).addClass("pseudo-hover");
        },
        function() {
            $(this).parents(".b-where-to-go").find(".places h3").removeClass("pseudo-hover");
        }
    );

    $(".b-where-to-go .places h3 strong").hover(
        function() {
            $(this).parents(".b-where-to-go").find(".map .point").eq($(this).parents("td").prevAll().size()).addClass("pseudo-hover");
        },
        function() {
            $(this).parents(".b-where-to-go").find(".map .point").removeClass("pseudo-hover");
        }
    );

  function opencategory(id)
{ $('li.catopen').hide();
  $('li.catclose').show();
  $('li#cat'+id+'_close').hide();
  $('li#cat'+id+'_open').show('slow');
}
function closecategory(id)
{ $('li#cat'+id+'_open').hide('slow');
  $('li#cat'+id+'_close').show('slow');
}
function openfull(id)
{ $('ul#curtree').hide();
  if(id)
  { $('ul#fulltree').show();
    $('li#cat'+id+'_open').show('slow');
  }
  else
  $('ul#fulltree').show('slow');
}
// Модельный ряд
function modelRange() {
        var modelsShaft = $(".f-model-range .models-shaft");
        if (modelsShaft.width()) {
            var modelSelected = $(".model_selected", modelsShaft);
            modelsShaft
                .css({"left": ($("body").width() / 2) - modelSelected.position().left - (($(".model_selected img", modelsShaft).width() - 50) / 2)  + "px"})
                .addClass("models-shaft_ready");


        modelsShaft.find(".model").not(".model_selected").find("a").one("click", function changeModel(event){
            var destination = $(this).attr("href");
            var newModelSelected = $(this).parents(".model");
            event.preventDefault();
            $("a", modelsShaft).unbind("click", changeModel);
            modelsShaft.find(".model").not(".model_selected").find("a").bind("click", function(event){
                event.preventDefault();
            });
            $(".unselected", modelSelected).show();
            $(".selected", modelSelected).hide();
            $(".model-sprite", modelSelected).css({"background-position": "-50px -50px", "margin-left": "0", "width": $(".model-sprite", modelSelected).width() - 50 + "px"});
            $(".heading", modelSelected)
                .fadeOut(100, function(){
                    $(".model-name", this).text($(".model-name", newModelSelected).text());
                    $(".variants", this).remove();
                    $(this)
                        .appendTo(newModelSelected)
                        .fadeIn(100);
            });
            modelSelected
                .css({"color": "#555"});
            $(this).css({"color": "#fff", "cursor": "default"});
            $(".model-sprite", this).css({"background-position": "0 -100px", "margin-left": "-50px", "width": $(".model-sprite", this).width() + 50 + "px"});
            modelSelected.removeClass("model_selected");
            newModelSelected.addClass("model_selected");
            modelsShaft.animate({"left": ($("body").width() / 2) - newModelSelected.position().left - (($(".model_selected img", modelsShaft).width() - 50) / 2)  + "px"}, 1000, "easeInOutExpo", function(){
                location.href = destination;
            });
        });
        }

}


modelRange();  //Сразу и на ресайзе
 Function.prototype.extend = function(a) {
    for (var b in a) {
        if (a.hasOwnProperty(b)) {
            this.prototype[b] = a[b]
        }
    }
};
Function.extend({inheritFrom:function(b, c) {
    var d = function() {
    };
    d.prototype = b.prototype;
    this.prototype = new d();
    this.prototype.constructor = this;
    this.baseConstructor = b;
    this.superClass = b.prototype;
    if (c) {
        for (var a in c) {
            this.prototype[a] = c[a]
        }
    }
}});


    Number.extend({between:function(e, c, d) {
    if (d) {
        return !!(this.valueOf() > Math.min(e, c) && this.valueOf() < Math.max(e, c))
    } else {
        return !!(this.valueOf() >= Math.min(e, c) && this.valueOf() <= Math.max(e, c))
    }
},nice:function(j) {
    var m = /^(\d+)([\.,](\d+))?$/,c = Number(this),g = String(c),h,b = "",a = "&nbsp;";
    if ((h = g.match(m))) {
        var e = h[1],k = h[3] ? Number("0." + h[3]) : 0;
        if (k) {
            var d = Math.pow(10, j ? j : 2);
            k = Math.round(k * d);
            b = k ? "," + k : ""
        }
        if (Number(e) < 10000) {
            return e + b
        } else {
            var l = "";
            var f;
            for (f = 1; f * 3 < e.length; f++) {
                l = a + e.substring(e.length - f * 3, e.length - (f - 1) * 3) + l
            }
            return e.substr(0, 3 - f * 3 + e.length) + l + b
        }
    } else {
        return g
    }
}});
    
    String.extend({cleanToNumber:function() {
    var a = this.valueOf().replace(/[^\d\.]/g, "");
    return(a === "" || isNaN(a) ? NaN : new Number(a))
},supplant:function(a) {
    return this.replace(/{([^{}]*)}/g, function(b, d) {
        var c = a[d];
        return((c !== undefined) && (typeof c === "string" || typeof c === "number") ? new String(c) : b)
    })
}});
    
 var oCost;
 var oDiscount;
  var oPrice;

 initCost = function() {
    oCost = new Cost($(".b-buy-it"));
    oPrice = oCost.getValue();
 }

$(".b-buy-it .switch").click(function(event) {
    oDiscount = Math.floor(Math.random() * (10 - 5 + 1)) + 5;
    $(".b-buy-it .barcode .number").html(oDiscount)

    oCost.setValue(oPrice - oPrice*(oDiscount/100));

});

Cost = function(a, b) {
    this.jContainer = a;
    this.bAlwaysShow = b;
    this.init()
};
Cost.ROLL_INTERVAL = 50;
Cost.ROLL_FRAMES = 8;
Cost.prototype = {init:function() {
    this.jPtr = this.jContainer.find(".price_number");

    this.initValue();
    this.initVisibility()
},initValue:function() {
    this.iValue = parseFloat(this.jPtr.eq(0).text().cleanToNumber());
    this.iVisibleValue = this.iValue
},initVisibility:function() {
    if (this.getValue() === 0 && this.jContainer.hasClass("not_display")) {
        this.jContainer.css("opacity", 0).removeClass("not_display")
    }
},getValue:function() {
    return this.iValue
},getVisibleValue:function() {
    return this.iVisibleValue
},setValue:function(d, a) {
    var c = this,b = parseFloat(d) || 0;
    if (this.getValue() !== b) {
        this.stopAni();
        if (this.getValue() === 0 && b !== 0) {
            this.show()
        }
        this.roll(b, a);
        this.iValue = b
    }
},roll:function(f, c) {
    var e = this,a = 0,d = this.getVisibleValue(),b = (f - d) / Cost.ROLL_FRAMES;
    this.intRoll = setInterval(function() {
        a++;
        var i = Math.round(d + b * a),h = (a >= Cost.ROLL_FRAMES),g = (h ? e.getValue() : i);
        e.jPtr.html(g.nice());
        e.iVisibleValue = g;
        if (h) {
            e.stopAni();
            e.hideIfZero();
            if (typeof c === "function") {
                c()
            }
        }
    }, Cost.ROLL_INTERVAL)
},hideIfZero:function() {
    if (this.getValue() === 0 && !this.bAlwaysShow) {
        this.hide()
    }
},stopAni:function() {
    this.jContainer.stop();
    clearInterval(this.intRoll)
},show:function() {
    this.jContainer.css("opacity", 1)
},hide:function() {
    this.jContainer.animate({opacity:0}, 300)
}};    
 initCost();

//Растяжка «левее, правее»
function ClassAdverstingShield()
    {
        var jItems = $("#adversing-shield-content .block");
        var iItemNumber = 0;
        var aItems = [];

        jItems.each(function()
        {
        	aItems[iItemNumber] = $(this).html();
        	iItemNumber++;
        });

        var iMaxScreen = Math.ceil(iItemNumber/5) - 1;
        var iMax = iMaxScreen;
        var iMin = 0;

        var iMaxItem = iItemNumber - 1;
        var iStartItem = 0;

        var iMinHeight = 80; // Минимальная высота, ниже которой не становится щит
        var iBaseAnimationSpeed = 300; // Базовая скорость анимации
        if ($.browser.msie && $.browser.version == 6) iBaseAnimationSpeed = 0;
        var oThis = this;
        var bIsShieldMoving = false;
        var iCount = 0;
        var i = 1;
        var iBordersHeight = $('.f-adversting-shield .content').parent().height() - $('.f-adversting-shield .content').height();
        $('.f-adversting-shield .adversting-shaft').animate({height: iMinHeight + 'px'}, iBaseAnimationSpeed);
        $("#adv-previous").addClass('disabled-left-arrow');
        $("#adv-next").click( function()
        {
            if (bIsShieldMoving || iCount >= iMax) return false;
            $("#adv-previous").removeClass('disabled-left-arrow');
            bIsShieldMoving = true;
            var iWidth = $('.f-adversting-shield .content').width();
            var jOldShit = $('.f-adversting-shield .content');
            var jNewShield = $('.f-adversting-shield .content').clone();
            // Заполняем новым содержимым
            if ((iCount + 2)*5 <= iMaxItem)
            {
            	iStartItem = (iCount + 1)*5;
            }
            else
            {
            	iStartItem = iMaxItem - 2;
            }
            i = 0;
            $('.column', jNewShield).each(function()
                {
                    $(this).html(aItems[iStartItem + i]);
                    i++;
                });
            jNewShield.css({'position': 'absolute', 'top': '0', 'left': iWidth + 'px', 'width': iWidth + 'px'});
            $('.f-adversting-shield .content').animate({left: -iWidth + 'px'}, iBaseAnimationSpeed, 'swing');
            $('.f-adversting-shield .adversting-shaft').append(jNewShield);

            var iHeight = jNewShield.height() + iBordersHeight;
            if (iHeight < iMinHeight) iHeight = iMinHeight;
            $('.f-adversting-shield .adversting-shaft').animate({height: iHeight + 'px'}, iBaseAnimationSpeed);
            jNewShield.animate({left: 0 + 'px'}, iBaseAnimationSpeed, 'swing', function() {
                jOldShit.remove();
                jNewShield.css({'position': 'relative', 'top': '0', 'left': 0, 'width': 'auto'});
                bIsShieldMoving = false;
                iCount++;
                if (iCount >= iMax) $("#adv-next").addClass('disabled-right-arrow');
            });
        });
        $("#adv-previous").click( function()
        {
            if (bIsShieldMoving || iCount <= iMin) return false;
            $("#adv-next").removeClass('disabled-right-arrow');
            bIsShieldMoving = true;
            var iWidth = $('.f-adversting-shield .content').width();
            var jOldShit = $('.f-adversting-shield .content');
            var jNewShield = $('.f-adversting-shield .content').clone();

            // Заполняем новым содержимым
           	iStartItem = (iCount-1)*3;
            i = 0;
            $('.column', jNewShield).each(function()
                {
                    $(this).html(aItems[iStartItem + i]);
                    i++;
                });

            jNewShield.css({'position': 'absolute', 'top': '0', 'left': -iWidth + 'px', 'width': iWidth + 'px'});
            $('.f-adversting-shield .content').animate({left: iWidth + 'px'}, 300, 'swing');
            $('.f-adversting-shield .adversting-shaft').append(jNewShield);


            var iHeight = jNewShield.height() + iBordersHeight;
            if (iHeight < iMinHeight) iHeight = iMinHeight;
            $('.f-adversting-shield .adversting-shaft').animate({height: iHeight + 'px'}, iBaseAnimationSpeed);
            jNewShield.animate({left: 0 + 'px'}, 300, 'swing', function() {
                jOldShit.remove();
                jNewShield.css({'position': 'relative', 'top': '0', 'left': 0, 'width': 'auto'});
                bIsShieldMoving = false;
                iCount--;
                if (iCount <= iMin) $("#adv-previous").addClass('disabled-left-arrow');
            });
        });
        this.disableArrows = function ()
        {
            $("#adv-next").addClass('no-right-arrow');
            $("#adv-previous").addClass('no-left-arrow');
        }

        //this.disableArrows();

    }

function ClassHotShield()
    {
        var jItems = $("#hot-shield-content .block");
        var iItemNumber = 0;
        var aItems = [];

        jItems.each(function()
        {
        	aItems[iItemNumber] = $(this).html();
        	iItemNumber++;
        });

        var iMaxScreen = Math.ceil(iItemNumber);
        var iMax = iMaxScreen;
        var iMin = 0;

        var iMaxItem = iItemNumber - 1;
        var iStartItem = 0;

        var iMinHeight = 250; // Минимальная высота, ниже которой не становится щит
        var iBaseAnimationSpeed = 300; // Базовая скорость анимации
        if ($.browser.msie && $.browser.version == 6) iBaseAnimationSpeed = 0;
        var oThis = this;
        var bIsShieldMoving = false;
        var iCount = 0;
        var i = 1;
        var iBordersHeight = $('.f-hot-shield .content').parent().height() - $('.f-hot-shield .content').height();
        $('.f-hot-shield .hot-shaft').animate({height: iMinHeight + 'px'}, iBaseAnimationSpeed);
        $("#hot-previous").addClass('disabled-left-arrow');
        $("#hot-next").click( function()
        {
            if (bIsShieldMoving || iCount >= iMax) return false;
            $("#hot-previous").removeClass('disabled-left-arrow');
            bIsShieldMoving = true;
            var iWidth = $('.f-hot-shield .content').width();
            var jOldShit = $('.f-hot-shield .content');
            var jNewShield = $('.f-hot-shield .content').clone();
            // Заполняем новым содержимым
            if ((iCount) <= iMaxItem)
            {
            	iStartItem = (iCount + 1);
            }
            else
            {
            	iStartItem = iMaxItem - 1;
            }
            i = 0;
            $('.column', jNewShield).each(function()
                {
                    $(this).html(aItems[iStartItem + i]);
                    i++;
                });
            jNewShield.css({'position': 'absolute', 'top': '0', 'left': iWidth + 'px', 'width': iWidth + 'px'});
            $('.f-hot-shield .content').animate({left: -iWidth + 'px'}, iBaseAnimationSpeed, 'swing');
            $('.f-hot-shield .hot-shaft').append(jNewShield);

            var iHeight = jNewShield.height() + iBordersHeight;
            if (iHeight < iMinHeight) iHeight = iMinHeight;
            $('.f-hot-shield .hot-shaft').animate({height: iHeight + 'px'}, iBaseAnimationSpeed);
            jNewShield.animate({left: 0 + 'px'}, iBaseAnimationSpeed, 'swing', function() {
                jOldShit.remove();
                jNewShield.css({'position': 'relative', 'top': '0', 'left': 0, 'width': 'auto'});
                bIsShieldMoving = false;
                iCount++;
                if (iCount >= iMax) $("#hot-next").addClass('disabled-right-arrow');
            });
        });
        $("#hot-previous").click( function()
        {
            if (bIsShieldMoving || iCount <= iMin) return false;
            $("#hot-next").removeClass('disabled-right-arrow');
            bIsShieldMoving = true;
            var iWidth = $('.f-hot-shield .content').width();
            var jOldShit = $('.f-hot-shield .content');
            var jNewShield = $('.f-hot-shield .content').clone();

            // Заполняем новым содержимым
           	iStartItem = (iCount-1);
            i = 0;
            $('.column', jNewShield).each(function()
                {
                    $(this).html(aItems[iStartItem + i]);
                    i++;
                });

            jNewShield.css({'position': 'absolute', 'top': '0', 'left': -iWidth + 'px', 'width': iWidth + 'px'});
            $('.f-hot-shield .content').animate({left: iWidth + 'px'}, 300, 'swing');
            $('.f-hot-shield .hot-shaft').append(jNewShield);


            var iHeight = jNewShield.height() + iBordersHeight;
            if (iHeight < iMinHeight) iHeight = iMinHeight;
            $('.f-hot-shield .hot-shaft').animate({height: iHeight + 'px'}, iBaseAnimationSpeed);
            jNewShield.animate({left: 0 + 'px'}, 300, 'swing', function() {
                jOldShit.remove();
                jNewShield.css({'position': 'relative', 'top': '0', 'left': 0, 'width': 'auto'});
                bIsShieldMoving = false;
                iCount--;
                if (iCount <= iMin) $("#hot-previous").addClass('disabled-left-arrow');
            });
        });
        this.disableArrows = function ()
        {
            $("#hot-next").addClass('no-right-arrow');
            $("#hot-previous").addClass('no-left-arrow');
        }

        //this.disableArrows();

    }

//var SHIELD = new ClassAdverstingShield();
var HOT = new ClassHotShield();
// Следим за футером
function footer() {
    var footer_car = $(".f-footer .car");
    footer_cars_width = 0;
    for (i=0; i<footer_car.size(); i++) {
        footer_cars_width += footer_car.eq(i).width();
    }
}

function footer_align() {
    if ($("body").width() > footer_cars_width) {
        $(".f-footer .cars").addClass("cars_align-center");
    } else {
        $(".f-footer .cars").removeClass("cars_align-center");
    }
}


footer();
footer_align();


// Прибиваем картинки к подписи у инлайн-блоков, ровняем высоту блоков, стоящих в одном ряду
// В «шахматном» шоуруме ровняем все блоки ещё и по ширине, для красивых переносов.
function showroom(resize) {
    var showroom = $(".f-showroom");
    if (showroom.width()) {
        for (q=0; q<showroom.size(); q++) {
            var car = $(".f-showroom").eq(q).find(".car").not(".car_not-in-line");
            var car_chess = $(".f-showroom_chess").eq(q).find(".car");
            car.removeClass("car_first-in-line_odd");
            if (car.width()) {
                var start_i = 0;
                var start_top = car.eq(0).position().top;
                var max_height_in_row = 0;
                var max_width = 0;
                var odd = 1;
                var image = car.find(".image");
                var label = car.find(".label");
                for (i=0; i<car.size(); i++) {
                    if (resize == 0) {
                        if ( image.eq(i).width() > max_width ) {
                                max_width = image.eq(i).width();
                            }
                        image.css("width", max_width + "px");
                    }
                    if (resize == 1) {
                        image.eq(i).css("height", image.eq(i).find("img").height());
                    }
                    var image_height = image.eq(i).height();
                    if ( image_height > max_height_in_row ) {
                        max_height_in_row = image_height;
                    }
                    if ( (i + 1 == car.size()) || (car.eq(i+1).position().top > start_top) ) {
                        //alert(max_height_in_row);
                        if ( (i + 1 == car.size()) || (car.eq(i+1).position().top > start_top) ) {
                            if (i + 1 != car.size()) {
                                image.slice(start_i, i+1).css("height", max_height_in_row + "px");
                                if (odd % 2 && car_chess.width()) {
                                    car.eq(i+1).addClass("car_first-in-line_odd");
                                }
                                start_i = i+1;
                                start_top = car.eq(i+1).position().top;
                                max_height_in_row = 0;
                                odd++;
                            } else {
                                image.slice(start_i)
                                    .css("height", max_height_in_row + "px");
                                if (odd % 2 && car.eq(i).position().top > start_top  && car_chess.width()) {
                                    car.eq(i).addClass("car_first-in-line_odd");
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

showroom(0);

function facts(resize) {
    var fact = $(".f-model-features .fact");
    if (fact.width()) {
        var start_i = 0;
        var start_top = fact.eq(0).position().top;
        var max_height_in_row = 0;
        var image = fact.children("div").children(".image");
        for (i=0; i<fact.size(); i++) {
            if (resize == 1) {
                image.eq(i).css("height", image.eq(i).find("img").height());
            }
            var image_height = image.eq(i).height();
            if ( image_height > max_height_in_row ) {
                max_height_in_row = image_height;
            }
            if ( (i + 1 == fact.size()) || (fact.eq(i+1).position().top > start_top) ) {
                if (i + 1 != fact.size()) {
                    image.slice(start_i, i+1).css("height", max_height_in_row + "px");
                    start_i = i+1;
                    start_top = fact.eq(i+1).position().top;
                    max_height_in_row = 0;
                } else {
                    image.slice(start_i).css("height", max_height_in_row + "px");
                }
            }
        }
    }
}

facts(0);

// Пересчитываем всё, что нужно пересчитать при ресайзе
$(window).resize(function(){
    showroom(1);
    facts(1);
    footer_align();
    modelRange();
});

function disableAddToCart(elementId, mode, text)
{
	var	element = document.getElementById(elementId);
	if (!element)
		return;

	if (mode == "detail")
		$(element).html("<span>" + text + "</span>").toggleClass("disabled")
			.removeAttr("href").unbind('click').css("cursor", "default");
	else if (mode == "list")
		$(element).html(text).removeClass("catalog-item-buy").addClass("catalog-item-in-the-cart")
			.unbind('click').css("cursor", "default");
}

function addToCart(element, imageToFlyId, mode, text)
{
	if (!element || !element.href)
		return;

	var button = $(element);
	if (mode == "detail")
		button.toggleClass("disabled").unbind('click').css("cursor", "default");
	else if (mode == "list")
		button.removeClass("catalog-item-buy").addClass("catalog-item-in-the-cart").unbind('click').css("cursor", "default");

	$.get(
		element.href + "&ajax_buy=1",
		$.proxy(
			function(data) {

				if (this.mode == "detail")
					this.button.removeAttr("href").html("<span>" + text + "</span>");
				else if (this.mode == "list")
					this.button.removeAttr("href").html(text);

				var imageElement = document.getElementById(this.imageToFlyId);
				if (!imageElement)
				{
					$("#cart_line").html(data);
					return;
				}

				var hoverClassName = "";
				var wrapper = null;
				if (this.mode == "detail")
				{
					hoverClassName = "catalog-detail-hover";
					wrapper = this.button.parents("div.catalog-detail");
				}
				else if (this.mode == "list")
				{
					hoverClassName = "catalog-item-hover";
					wrapper = this.button.parents("div.catalog-item");
				}

				wrapper.unbind("mouseover").unbind("mouseout").removeClass(hoverClassName);

				var imageToFly = $(imageElement);
				var position = imageToFly.position();
				var flyImage = imageToFly.clone().insertBefore(imageToFly);

				flyImage.css({ "position": "absolute", "left": position.left, "top": position.top });
				flyImage.animate({ width: 0, height: 0, left: 948, top: -58 }, 600, 'linear');
				flyImage.data("hoverClassName", hoverClassName);
				flyImage.queue($.proxy(function() {

					this.flyImage.remove();
					$("#cart_line").html(data);

					if (this.wrapper.data("adminMode") === true)
					{
						var hoverClassName = "";
						if (this.mode == "detail")
							hoverClassName = "catalog-detail-hover";
						else if (this.mode == "list")
							hoverClassName = "catalog-item-hover";

						this.wrapper.addClass(hoverClassName).bind({
							mouseover: function() { $(this).removeClass(hoverClassName).addClass(hoverClassName); },
							mouseout: function() { $(this).removeClass(hoverClassName); }
						});
					}

				}, {"wrapper" : wrapper, "flyImage" : flyImage, "mode": this.mode}));

			}, { "button": button, "mode": mode, "imageToFlyId" : imageToFlyId }
		)
	);

	return false;
}

var toggle = {

	/* SELECTORS */
	selector_master:".pseudo",
	selector_pseudo_visible:".pseudo_visible",
	selector_pseudo_hidden:".pseudo_hidden",
	selector_expand:".expand",
	selector_collapse:".collapse",
	selector_owner_master:".pseudo_to_much",

	class_master_selected:"show",
	/* * * * * * */

	init:function(selector_master){
		var that = this;

		$(this.selector_pseudo_hidden).hide();

		var selected = window.location.hash ? $(window.location.hash) : [];

		if(selected[0]) $(window).scrollTop(0);
		var is_first = true;

		$(selector_master || this.selector_master).click(function(){
			that.slave = that.getSlave(that.master = [this]);
			if(!is_first || !selected[0] || selected[0] === that.master[0] ) {
				//$(this).addClass("show");
				that.toggle();
			} else {
				//$(this).removeClass("show")
			}
		}).click().filter(":has("+that.selector_expand+", "+that.selector_collapse+")").each(function(){
			that.appendMasterToSlaveMaster(this, that._is_expand(this));
		});
		is_first = false;
		$('#left-menu').find(this.selector_pseudo_visible+", "+this.selector_pseudo_hidden).data("not_first", true);
	},
	/* Р?РµС?РµС? slave
	 */
	getSlave:function(master){
		var slave = null;
		master = $(master || this.master);
		0 != (slave = $(master).next()).is(this.selector_pseudo_visible+", "+this.selector_pseudo_hidden)
			|| 0 != (slave = $(master).next().find(this.selector_pseudo_visible+", "+this.selector_pseudo_hidden)).length
				|| (0 != (slave = $(master).parent().next()).length
					|| (slave = $(master).parent().parent().next())
		);
		return slave;
	},
	/* Р?РµС?РµС? РІС?Рµ Р±Р»РѕРєРё РІРЅС?С?С?Рё slave
	 */
	getSlaveItems:function(slave){
		slave = $(slave || this.slave);
		return	$(this.selector_pseudo_visible+", "+this.selector_pseudo_hidden, slave)
					.add(slave.is(this.selector_pseudo_visible+", "+this.selector_pseudo_hidden) ? slave : []);
	},
	/* Р?РѕР±Р°РІР»С?РµС? С?РІС?Р·С? РїС?РµРІРґРѕС?С?С?Р»РѕРє С? РїС?РµРІРґРѕС?С?С?Р»РєРѕР№
	 * Р±РѕР»РµРµ РІС?С?РєРѕРіРѕ С?С?РѕРІРЅС?
	 */
	appendMasterToSlaveMaster:function(master, slave){
		$(this.selector_master, slave).data("master", master);
	},
	getMasterItems:function(master){
		master = $(master || this.master);
		return $(master).find(this.selector_master);
	},
	/* Р?РѕР±Р°РІР»С?РµС? С?РІС?Р·С? РїС?РµРІРґРѕС?С?С?Р»РѕРє С? РїС?РµРІРґРѕС?С?С?Р»РєРѕР№
	 * Р±РѕР»РµРµ РІС?С?РєРѕРіРѕ С?С?РѕРІРЅС?
	 */
	appendMasterToSlaveMaster:function(master, slave){
		$(this.selector_master, slave).data("master", master);
	},
	/*
	 * Р?РЅРёРјР°С?РёС?
	 */
	toggle:function(){
		var is_expand = null;
		if($(this.master).is(":has("+this.selector_expand+", "+this.selector_collapse+")")) {
			is_expand = $(this.selector_expand+":visible", this.master).length ? true : false;
          
			this.getSlaveItems(this.slave)[is_expand ? "show" : "hide"]();
			this._is_expand(this.master);
			this.setMasterStatus(this.getMasterItems(this.slave), is_expand);

		} else {
			var slave_items = this.getSlaveItems(this.slave);

			if(this.slave.parent().hasClass("fake")) {
				slave_items[this.slave.data('not_first') ? 'slideToggle' : 'toggle']();
				if(this.slave.data('not_first'))
					$(this.master).parents('#left-menu:eq(0)').find(this.selector_pseudo_visible+", "+this.selector_pseudo_hidden).not(this.slave).slideUp();
				this.slave.data('not_first', true);

			} else {
				slave_items.toggle();

			}
			is_expand = slave_items.is(":visible") ? true : false;
			this._is_expand($(this.master).data("master"));
			this.setMasterStatus(this.master, is_expand);
		}
	},
	/* РЈР·РЅР°РµРј, С?С?Рѕ РґРѕР»Р¶РµРЅ РїРѕРєР°Р·Р°С?С? pseudo master,
	 * expand РёР»Рё collapse
	 * */
	_is_expand:function(master){
		if(!master) return false;

		var slave = this.getSlave(master),
			slave_items = this.getSlaveItems(slave),
			is_expand = slave_items.filter(":hidden").length > slave_items.length / 2
				? true
				: false;

		this.setMasterStatus(master, is_expand);

		return slave;
	},
	/* Р?РµРЅС?РµС? С?РµРєС?С? РІ РїС?РµРІРґРѕС?С?С?Р»РєРµ
	 */
	setMasterStatus:function(master, is_expand){
		$(master)[is_expand ? "addClass" : "removeClass"](this.class_master_selected);
	}
};
toggle.init();
    



});


