//Детектор фонтфейса
//window.Modernizr=function(a,b,c){function x(a,b){return!!~(""+a).indexOf(b)}function w(a,b){return typeof a===b}function v(a,b){return u(prefixes.join(a+";")+(b||""))}function u(a){j.cssText=a}var d="2.0.6",e={},f=b.documentElement,g=b.head||b.getElementsByTagName("head")[0],h="modernizr",i=b.createElement(h),j=i.style,k,l=Object.prototype.toString,m={},n={},o={},p=[],q=function(a,c,d,e){var g,i,j,k=b.createElement("div");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),k.appendChild(j);g=["&shy;","<style>",a,"</style>"].join(""),k.id=h,k.innerHTML+=g,f.appendChild(k),i=c(k,a),k.parentNode.removeChild(k);return!!i},r,s={}.hasOwnProperty,t;!w(s,c)&&!w(s.call,c)?t=function(a,b){return s.call(a,b)}:t=function(a,b){return b in a&&w(a.constructor.prototype[b],c)};var y=function(a,c){var d=a.join(""),f=c.length;q(d,function(a,c){var d=b.styleSheets[b.styleSheets.length-1],g=d.cssRules&&d.cssRules[0]?d.cssRules[0].cssText:d.cssText||"",h=a.childNodes,i={};while(f--)i[h[f].id]=h[f];e.fontface=/src/i.test(g)&&g.indexOf(c.split(" ")[0])===0},f,c)}(['@font-face {font-family:"font";src:url("https://")}'],["fontface"]);m.fontface=function(){return e.fontface};for(var z in m)t(m,z)&&(r=z.toLowerCase(),e[r]=m[z](),p.push((e[r]?"":"no-")+r));u(""),i=k=null,e._version=d,e.testStyles=q;return e}(this,this.document);

//Целочисленное деление
function integerDivision(x, y){
    return x/y>>0;
}

// min/max width IE6
function width(min,max){
    w = document.documentElement.clientWidth;
    return (w <= min) ? min + "px" : ((w >= max) ? max + "px" : "auto");
}

//Главное меню
function topMenu(){
    var topMenu = $('#topMenu'), topMenuElems = topMenu.find('li > *'), elementsWidth = 0;

    topMenuElems.each(function(){
        elementsWidth += $(this).width();
    });

    var padding = parseInt((topMenu.outerWidth() - elementsWidth) / topMenuElems.size() / 2);
    topMenuElems.not(':last').css({paddingLeft: padding, paddingRight: padding});

    var lastMenuItem = topMenuElems.filter(':last');
    var elementsTotalWidth = elementsWidth + topMenuElems.size() * padding * 2;
    var lastMenuItemRightPadding = topMenu.width() - elementsTotalWidth;
    
    lastMenuItem.css({ paddingLeft: padding, paddingRight: lastMenuItemRightPadding + padding });
}

//Расстановка классов и last для ячеек и строк в таблицах, а также для элементов списка
function prepare() {
    $('table').find('tr:last').addClass('last');
    $('table tr').find('td:last').addClass('last');
    $('table').find('tr:first').addClass('first');
    $('table tr').find('td:first').addClass('first');
    $('ul').find('li:last').addClass('last');
    $('ul').find('li:first').addClass('first');
    $('#cityList ul li:even').removeClass('odd');
    $('#cityList ul li:odd').addClass('odd');
}

// DOM готов
$(document).ready(function(){
prepare();

//Заменяем знак рубля для старых ФФ
/*if (Modernizr.fontface) {
    $('.rouble').text('Р');
}*/

//

$('.check_amount span').live('click', function() {
	var el = $(this);
	$.post(location.href, { action: 'getamount', item_id: el.attr('id'), is_ajax: 1 }, function(res) {
		if (parseInt(res.amount) > 0) {
			el.hide().next().find('b').html(res.amount).parent().parent().find('i').html(res.date).parent().show().find('u').html(res.week);
		}
		else {
			el.hide().next().html('  .        &ndash;      .').show();
		}
	}, 'json');
});

$('.objectPic a img[or_width], .goodsInfo__img-a img[or_width]').live('mouseenter', function() {
	var el = $(this);
	var sw = parseInt(el.attr('s_width'));
	var sh = parseInt(el.attr('s_height'));
	var w = parseInt(el.attr('or_width'));
	var h = parseInt(el.attr('or_height'));
	
	el.parent().find('span').remove();
	el.css({
		display: 'inline',
		position: 'relative',
		marginTop: 0,
		marginLeft: 0,
		width: sw,
		height: sh,
		zIndex: 200
	});
	
	$('<span></span>').insertBefore(el).css({
		display: 'block',
		margin: 0,
		padding: 0,
		width: sw,
		height: sh
	});
	
	if (el.parent().find('span').length) {
		el.css({
			display: 'block',
			position: 'absolute',
			marginTop: -sh
		}).stop().animate({
			width: w,
			height: h,
			marginTop: sh / 2 - h,
			marginLeft: (sw - w) / 2
		}, 'fast');
	}
}).live('mouseleave', function() {
	var el = $(this);
	var w = el.attr('s_width');
	var h = el.attr('s_height');
	var top = el.parent().find('span').length ? -h : 0;
	el.css({ zIndex: 1 }).stop().animate({
		width: w,
		height: h,
		marginTop: top,
		marginLeft: 0
	}, 'fast', function() {
		el.css({
			display: 'inline',
			position: 'relative',
			marginTop: 0
		}).prev().remove();
	});
});

if ($('#bgWrapper').height() < $(window).height()) {
	$('#bgWrapper').css({ minHeight: $(window).height() });
}

var spec_cont = $('.leftSide .spec_items');
var comp_cont = $('.rightSide');

var max_height = Math.max(spec_cont.height(), comp_cont.height());

if (spec_cont.find('table tr').length > 6 || comp_cont.find('div.presentObject').length > 2) {
    var l_height = spec_cont.find('h2').height() + 20;
    $.each(spec_cont.find('table tr'), function(i, el) {
        if (i < 6) {
            l_height += $(el).height();
        }
    });
    var r_height = comp_cont.find('h2').height() + 67;
    $.each(comp_cont.find('div.presentObject'), function(i, el) {
        if (i < 2) {
            r_height += $(el).height();
        }
    });
    
    var height = Math.max(l_height, r_height);
    
    spec_cont.css({ height: height, overflow: 'hidden' });
    comp_cont.css({ height: height, overflow: 'hidden' });
    
    $('.bottom-tab').show().live('click', function() {
        height = height * 2;
        var new_height = max_height;//Math.max(max_height, height);
        
        spec_cont.animate({ height: new_height }, 'slow', function() {
        	spec_cont.css({
        		overflow: 'visible'
        	});
        });
        comp_cont.animate({ height: new_height }, 'slow');
        
        if (new_height >= max_height) {
            $(this).fadeOut('slow');
        }
        
        return false;
    });
}

//

//Карусель
$('#carousel').jcarousel({
    vertical: true,
    scroll: 1,
    auto: 6,
    wrap: 'circular'
});

$('.carouselHorizontal').jcarousel({
    scroll: 1
});

$('.carouselVertical').jcarousel({
    vertical: true,
    scroll: 1
});


    
//Делаем сабмиты из ссылок
$('.submit').live('click', function(){
    $(this).parents('form').submit();
    return false;
});

//Заменяемый текст в формах
$('input[placeholder], textarea[placeholder]').placeholder();

//Скрываем выпавшие окна при клике по документу
$('html').live('click', function(e){
    //Окно выбора города
    if (e.target.id != 'cityList' && $(e.target).parents('#cityList').size() == 0 && e.target.id != 'catalogList' && $(e.target).parents('#catalogList').size() == 0) {
        $('#cityList, #catalog #catalogList').fadeOut('fast');
    }
});

//Блок выбора города
$('.cityChoice .button').live('click', function(){
    $('#cityList').find('.windowClose').live('click', function(){
        $(this).parents('#cityList').fadeOut('fast');
        return false;
    }).parents('#cityList').show();
    return false;
});

//Меню каталога
$('#catalogList > li').mouseenter(function(){
    $(this).addClass('hover').next().addClass('next').prev().prev().addClass('prev');
    var lvl2 = $(this).find('.lvl2');
    var lvl2_offset = lvl2.offset().top;
    var lvl2_height = lvl2_offset + lvl2.outerHeight();
    var win_height = $(window).height() + $(window).scrollTop();
    var top = win_height - lvl2_height;
    if (top < 0 && lvl2_offset + top > $('#header').height()) {
    	lvl2.css({ top: top });
    }
}).mouseleave(function(){
    $(this).removeClass('hover').next().removeClass('next').prev().prev().removeClass('prev');
    $(this).find('.lvl2').css({ top: 0 });
});

$('#catalog .button').click(function(){
	$(this).blur();
	if ($(this).parent().find('#catalogList:visible').length) {
		$(this).parent().find('#catalogList').stop(true, true).fadeOut('fast');
	}
	else {
		$(this).parent().find('#catalogList').stop(true, true).fadeIn('fast');
	}
	return false;
});

//Фотогалерея товара
$('.gallery').each(function(){
    var mainPic = $(this).find('.mainPic');
    mainPicImg = mainPic.find('img');
    var previewListItems = $('.previewList img');
    $(this).find('.previewList img').mouseenter(function(){
        previewListItems.removeClass('current');
        $(this).addClass('current');
        var newSrc = $(this).parent();
        mainPicImg.attr('src', newSrc.attr('rel')).parent().attr('href', newSrc.attr('href'));
    });
});
$('.moreDescriptionLink').click(function(){
    $(this).siblings('.hiddenArea').slideToggle('fast');
    return false;
});

$('.addToCart').live('submit', function() {
    $(this).find('a.to_cart').click();
    return false;
});

$('.all_to_cart').live('click', function() {
    var forms = $(this).parent().parent().find('form.addToCart');
    if (!forms.length) return false;
    
    var url = $(this).attr('href');
    
    var post = { is_ajax: true };
    
    post['amounts'] = {};
    
    $.each(forms, function(i, el) {
        var item_id = $(el).find('input[name=item_id]').val();
        var amount  = $(el).find('input[name=amount]').val();
        post['amounts'][item_id] = amount;
        reloadBasket(amount);
        addToCart($(el));
    });
    
    $.ajax({
        type: "POST",
        url: url,
        data: post,
        success: function(result) {
            //reload(result, '#basketInfo');
        }
    });
    
    return false;
});

$('.ajaxRequest').live('click', function(e) {
    $(this).blur();
    
    var $this = $(this);
    var url = $this.attr('href');
    
    var data = { is_ajax: true };
    
    if ($this.hasClass('to_cart')) {
        data = { is_ajax: true, amount: $this.parent().find('input[name=amount]').val() };
        addToCart($this);
    }
    
    if (!$this.hasClass('to_cart')) {
        showPreloader(e);
    }
    
    if ($this.hasClass('to_cart')) {
    	reloadBasket(data.amount);
    }
    
    $.ajax({
        type: "POST",
        url: url,
        data: data,
        success: function(result) {
            if ($this.hasClass('citySel')) {
                citySel($this, result);
            }
            if ($this.hasClass('set_order')) {
                setOrder($this, result);
            }
            if ($this.hasClass('to_cart')) {
                //reload(result, '#basketInfo');
            }
            hidePreloader();
        }
    });
    
    return false;
});

function inttostr(integer, str1, str2, str3) {
    var last = substr(integer, -1);
    var prelast = substr(integer, -2);
    
    if (last == 0 || (last >= 5 && last <= 9) || prelast >= 11 && prelast <= 14) return str3;
    else if (last >= 2 && last <= 4) return str2;
    else return str1;
}

function substr( f_string, f_start, f_length ) {
    f_string += '';
 
    if(f_start < 0) {
        f_start += f_string.length;
    }
 
    if(f_length == undefined) {
        f_length = f_string.length;
    } else if(f_length < 0){
        f_length += f_string.length;
    } else {
        f_length += f_start;
    }
 
    if(f_length < f_start) {
        f_length = f_start;
    }
 
    return f_string.substring(f_start, f_length);
}

function reloadBasket(amount) {
	if ($('#basketInfo b').length) {
		$('#basketInfo b').remove();
		$('#basketInfo #tmp').show();
	}
	var new_amount = parseInt($('#amount').text().replace(/[^0-9]/gi, '')) + parseInt(amount);
	$('#amount').text(new_amount);
	$('#amount_str').text(inttostr(new_amount, '', '', ''));
}

function citySel(el, city_id) {
    $('.cityChoice .word').html(el.html());
    $('#cityList').fadeOut('fast');
    reload(null, '.rightSide', '.goodsList', '#cityList', '#itemsList', '#filterForm', '#goodsOpts', '#addedItems');
};

function setOrder(el, html) {
    reload(html, '#itemsList');
};

function addToCart(el, html) {
    var cart = $('#basketInfo').offset();
    var img = el.parents('tr').find('img:first');
    if (!img.length) {
        img = el.parents('#content').find('.mainPic img');
    }
    var img_pos = img.position();
    var new_img = img.clone(true).insertAfter(img).css({ position: 'absolute', zIndex: '1000', left: img_pos.left, top: img_pos.top })
    .stop(1, 1).animate({
        width: img.width() * 1.5,
        height: img.height() * 1.5,
        top: img_pos.top - ((img.height() * 0.5) / 2),
        left: img_pos.left - ((img.width() * 0.5) / 2)
    }, 'fast', function() {
        new_img.animate({
            top: cart.top + 10,
            left: cart.left + 23,
            width: 0,
            height: 0
        }, 'slow', function() {
            $(this).remove();
        });
    });
};


//DOM Ready END
});

function reload() {
    var args = arguments;
    if (args.length < 2) return false;
    if (args[0]) {
        var res = args[0];
        for (var i = 1; i < args.length; i++) {
            $(args[i]).html($(res).find(args[i]).html());
        }
        res = null;
        prepare();
    }
    else {
        $.get(location.href, { ajax: true }, function(res) {
            for (var i = 1; i < args.length; i++) {
                $(args[i]).html($(res).find(args[i]).html());
            }
            res = null;
            prepare();
        });
    }
}

function filterItems(min, max) {
    $.ajax({
        type: "POST",
        url: location.href,
        data: { min_sum: min, max_sum: max, is_ajax: true },
        success: function(result) {
            reload(result, '#itemsList');
            hidePreloader();
        }
    });
}

function preloadMove(e) {
    var x = e.pageX + 15;
    var y = e.pageY + 10;
    if (x + $('#preloader').width() + 3 < $(window).width()) {
        $('#preloader').css({
            top: y,
            left: x
        });
    }
    else {
        $('#preloader').css({
            top: y
        });
    }
}

function showPreloader(e) {
    if (e) preloadMove(e);
    $(document).bind('mousemove', function(e) {
        preloadMove(e);
    });
    $('#preloader').show('fast');
}

function hidePreloader() {
    $(document).unbind('mousemove');
    $('#preloader').hide('fast');
}

