$(document).ready(function() {
	$.expr[":"].acontains = function(obj, index, meta, stack) {
		if($(obj).attr('href')) return $(obj).attr('href').toLowerCase().indexOf(meta[3].toLowerCase()) >= 0;
		else return false;
	}
	
	$('object').addClass('fluid');
	
	if ($(".fluid").length>0) {
		$(".fluid").each(function(){
			var $orig = $(this);
			var aspectRatio = $orig.attr("height") / $orig.attr("width");
			
			$(window).resize(function() {
				var wrapWidth = $orig.parent().width();
                if (navigator.userAgent.toLowerCase().indexOf('msie') != -1) {
                    wrapWidth -= 5;
                }
				$orig.width(wrapWidth).height(wrapWidth * aspectRatio);
			}).trigger("resize");
		})
	}

	
	
});
//$.preload([Array(of images)])
;(function($){var h=$.preload=function(c,d){if(c.split)c=$(c);d=$.extend({},h.defaults,d);var f=$.map(c,function(a){if(!a)return;if(a.split)return d.base+a+d.ext;var b=a.src||a.href;if(typeof d.placeholder=='string'&&a.src)a.src=d.placeholder;if(b&&d.find)b=b.replace(d.find,d.replace);return b||null}),data={loaded:0,failed:0,next:0,done:0,total:f.length};if(!data.total)return finish();var g=$(Array(d.threshold+1).join('<img/>')).load(handler).error(handler).bind('abort',handler).each(fetch);function handler(e){data.element=this;data.found=e.type=='load';data.image=this.src;data.index=this.index;var a=data.original=c[this.index];data[data.found?'loaded':'failed']++;data.done++;if(d.enforceCache)h.cache.push($('<img/>').attr('src',data.image)[0]);if(d.placeholder&&a.src)a.src=data.found?data.image:d.notFound||a.src;if(d.onComplete)d.onComplete(data);if(data.done<data.total)fetch(0,this);else{if(g&&g.unbind)g.unbind('load').unbind('error').unbind('abort');g=null;finish()}};function fetch(i,a,b){if(a.attachEvent&&data.next&&data.next%h.gap==0&&!b){setTimeout(function(){fetch(i,a,1)},0);return!1}if(data.next==data.total)return!1;a.index=data.next;a.src=f[data.next++];if(d.onRequest){data.index=a.index;data.element=a;data.image=a.src;data.original=c[data.next-1];d.onRequest(data)}};function finish(){if(d.onFinish)d.onFinish(data)}};h.gap=14;h.cache=[];h.defaults={threshold:2,base:'',ext:'',replace:''};$.fn.preload=function(a){h(this,a);return this}})(jQuery);

//pubsub plugin https://github.com/phiggins42/bloody-jquery-plugins/blob/master/pubsub.js
(function(a){var b={};a.publish=function(c,e){b[c]&&a.each(b[c],function(){this.apply(a,e||[])})},a.subscribe=function(a,c){return b[a]||(b[a]=[]),b[a].push(c),[a,c]},a.unsubscribe=function(c){var e=c[0];b[e]&&a.each(b[e],function(a){this==c[1]&&b[e].splice(a,1)})}})(jQuery)

function defined(x) {return typeof(x) != 'undefined';}

function change_color(obj) {
	$(obj).toggleClass('over');
}
function inv_roller_aop(){
		$("#inv_friend").attr("value", "");
}

function remind_email_checker_show_err (err_code) {
		var msg = false;
		if (err_code == 1)
				msg = 'Введите ваш адрес электронной почты';
		if (err_code == 2)
				msg = 'Вы ошиблись при вводе адреса';
		if (err_code == 3)
				msg = 'Такого адреса нет в нашей базе. Пароль не был выслан.';
		var sign = "#ErrNode";
		if (msg) {
				remind_email_checker_show_ok(0); // Clear Ok-message
				remind_email_checker_show_wait(0); // Hide wait-message
				$(sign).removeClass('hide_it').empty().append(msg);
		} else {
				$(sign).addClass('hide_it');
		}
}

function remind_email_checker_show_ok (code) {
		var sign = "#SuccessNode";
		if (code > 0) {
				remind_email_checker_show_err(0); // Clear error-message
				remind_email_checker_show_wait(0); // Hide wait-message
				$(sign).removeClass('hide_it');
		} else {
				$(sign).addClass('hide_it');
		}
}

function remind_email_checker_show_wait (code) {
		var sign = "#WaitNode";
		if (code > 0) {
				remind_email_checker_show_err(0); // Clear error message
				remind_email_checker_show_ok(0); // Clear Ok-message
				$(sign).removeClass('hide_it');
		} else {
				$(sign).addClass('hide_it');
		}
}

function remind_email_checker() {
		var email = ($("#email") && $("#email").val()) ? $("#email").val() : false;
		if (email) {
				if (!(email.match(/@/))) {
						remind_email_checker_show_err(2); // Incorrect email
						return false;
				}
		} else {
				remind_email_checker_show_err(1); // Email not given
				return false;
		}

		var button_sign = "#submitButton";
		$(button_sign).attr("disabled", "true"); // Disable submit button
		remind_email_checker_show_wait(1); // Show wait-message

		// Make ajax request to server to send letter
		var link = '/';
		var params = {
				a:'remind_pass',
				from_ajax:1,
				email2remind:email,
				bar:4738
		};
	$.getJSON(link, params, function(json){
				if (!defined(json))
						return true; // [true] If failed to get answer from ajax script => Go to non-ajax mode => Page will be refreshed (see _a_remind_pass() in cs3_main.pm)
				var err = json.err;
				if (err > 0) {
						remind_email_checker_show_err(err);
				} else {
						remind_email_checker_show_ok(1);
				}
				$(button_sign).removeAttr("disabled"); // Enable submit button
				return false;
	});

		return false;
}

function amounter(){
	var a=parseInt($('.choose_size :selected').attr('rel')); //getting amount of goods by selected size
	var pic = $('.choose_size :selected').attr('pic');
	if(pic) {
		$('#goods_pic').remove();		
		if (pic.match(/(#[0-9a-f]+)/)){
			$('#super_cont').append('<div id="goods_pic" style="display: block; background-color:'+pic+'; margin-bottom: 15px; width:45px; height:45px; border: 1px solid #933;"> </div>');					
		}else{
			$('#super_cont').append('<img id="goods_pic" src="'+pic+'" style="display: block; margin-bottom: 15px;">');			
		}
	}
	$('.choose_num').html(''); //flush select
	if ( a == 0 ) {
		$('label[for=choose_num]').hide();
		$('.choose_num').hide();
		$('.put_in_basket').hide();
		$('.get_it_now').hide();
	} else {
		$('label[for=choose_num]').show();
		$('.choose_num').show();
		$('.put_in_basket').show();
		$('.get_it_now').show();
	}
	if ( a > 6 ) { a = 6 }; //выводить максимум по шесть
	for (var i = 0; i < a; i++) {
		$('.choose_num').append('<option value="' + (i + 1) + '">' + (i + 1) + ' шт.</option>');
	}
}


function declension(number, labels) {
	var c = number % 100;
	if(c > 6 && c< 21 ) return labels[2];
	else {
		c = (c % 10);
		if(c==1) return labels[0];
		else if(c>1 && c<5) return labels[1];
		else return labels[2];
	}
}

function change_photo(address){ //photoslider functions
	$("div#full_photo > img").attr('src', address);
}
function change_photo2(address_medium, address_full){
	$("#big_photo").attr('src', address_medium);
	$("#img").attr('src', address_full);
	$(".full_photo a").attr('href', address_full);
	$('.zoom a').attr('href', address_full);
}

function CheckProductPropsVals(id) {
	var is_checked = $("#ppv"+id).attr('checked'); // TODO
		var signature = "#ppval"+id;
		if (is_checked) {
				$(signature).removeClass('hide_it');
		} else {
				$(signature).addClass('hide_it');
		}
		return true;
}

function checkee (ff){
	var err=1;
	if ((document.getElementById("message").value=='') && (err==1)){
		alert('Ошибка! Пустой комментарий');
		err=0;
		document.getElementById("message").focus();
		
		return false;
	}
	
}

function delete_dialog()
{
	return confirm("Удалить комментарий?");
}

function checkusername() {
    var name = $('#nickname').val(); // escape($('#nickname').val());
    if (!name) {
        $("#checkitvalue").html('<span style="color:red;">Имя не может быть пустым</span>');	
        return false;
    }
    $('#checkitvalue').html('проверка...');
    var params = {
        a:'check_user_name',
        name:name,
        bar:35
    };
	$.getJSON('/', params, function (data) {
        //alert('checkusername (1): error='+data.error+', empty='+data.empty+', used='+data.used);
		$('#checkitvalue').fadeIn();
		if ( data.error > 0 ) {
            $("#checkitvalue").html('<span style="color:red;">Произошла ошибка, попробуйте позднее</span>');	
		} else if ( data.empty > 0 ) {
            $("#checkitvalue").html('<span style="color:red;">Имя не может быть пустым</span>');	
		} else if ( data.used > 0 ) {
            $("#checkitvalue").html('<span style="color:red;">К сожалению такое имя занято.</span>');	
		} else {
            $("#checkitvalue").html('<span style="color:green;">Имя свободно, Вы можете его использовать.</span>');	
		}
		setTimeout("$('#checkitvalue').fadeOut()",5000)
	});
	
	return false; //cuz it's a link
}


// Woring with sizes tables :

function add_size_table_td (table_id)
{
	var tr_cnt = size_tables_counters[table_id]['tr_cnt'];
	var td_cnt = size_tables_counters[table_id]['td_cnt'];
	//alert('td_cnt='+td_cnt);
	var td_id = td_cnt + 1;
	size_tables_counters[table_id]['td_cnt'] = td_id;
	// Go through all TR's in table & add cell to the end of each TR :
	for ( var i = 2; i <= tr_cnt; i++ ) {
			var str = '<td><input type="text" name="cell_'+table_id+'_'+i+'_'+td_id+'" value=""></td>';
			$("#size_table_tr_"+table_id+"_"+i).append(str);
	}
	return false;
}

function add_size_table_tr (table_id)
{
	var tr_cnt = size_tables_counters[table_id]['tr_cnt'];
	var td_cnt = size_tables_counters[table_id]['td_cnt'];
	//alert('tr_cnt='+tr_cnt);
	var tr_id = tr_cnt + 1;
	size_tables_counters[table_id]['tr_cnt'] = tr_id;
	var str = get_new_tr_for_size_table(table_id, tr_id, td_cnt);
	$("table#size_table_"+table_id).append(str);
	return false;
}

function get_new_tr_for_size_table (table_id, tr_id, td_cnt)
{
	var str = '';
	str += ('<tr id="size_table_tr_'+table_id+'_'+tr_id+'">');
	var tag1 = '<th>';
	var tag2 = '</th>';
	for ( var i = 1; i <= td_cnt; i++ ) { // 1st cell - TH, rest - TD :
			str += (tag1+'<input type="text" name="cell_'+table_id+'_'+tr_id+'_'+i+'" value="">'+tag2);
			tag1 = '<td>';
			tag2 = '</td>';
	}
	str += '</tr>';
	return str;
}

function add_size_table (rows_cnt, cols_cnt)
{
	size_tables_cnt++;
	var table_id = size_tables_cnt;
	size_tables_counters[table_id] = {'tr_cnt':rows_cnt, 'td_cnt':cols_cnt};
	var str = '';
	str += '<div id="size_table_wrap_'+table_id+'" class="size_table tmp">';
	str += '<div class="table_del" onclick="return del_size_table('+table_id+')"></div>';
	str += ('<input type="text" name="cell_'+table_id+'_1_1" value="" class="size_block_h">');
	str += (' <a href="#" onclick="return add_size_table_td('+table_id+')">Добавить колонку »</a>');
	str += ('<table id="size_table_'+table_id+'" class="adminko_size_table">');
	for ( var i = 2; i <= rows_cnt; i++ )
	{
		str += get_new_tr_for_size_table(table_id, i, cols_cnt);
	}
	str += '</table>';
	str += ('<a href="#" onclick="return add_size_table_tr('+table_id+')">Добавить строку »</a>');
	str += '</div>';
	$("#main_size_tables_container").append(str);
	return false;
}

function del_size_table (table_id)
{
	size_tables_counters[table_id] = null;
	$('div#size_table_wrap_'+table_id).fadeOut('slow', function(){
		$('div#size_table_wrap_'+table_id).remove();
	});
}

$(function(){
	$(".size_block_h").keypress(function(){
		var ttp = $(this).val().length;
		if (ttp < 6) {ttp=6;}
		if (ttp > 30) {ttp=30;}
		$(this).width(ttp*8);
	});
	$(".adminko_size_table input").keypress(function(){
		var ttp = $(this).val().length;
		if (ttp < 6) {ttp=6;}
		if (ttp > 20) {ttp=20;}
		$(this).width(ttp*8);
	});
});

//### Basket

function save_bonus (good)
{
	var bonusprice = 0;
	$('#ajax-error').text('');
	var quantity = parseInt( $(good).val() ) || 0;
	var matches = $(good).attr('id').match(/amount_(\d+)/) || new Array();
	var item_id = parseInt( matches[1] ) || 0;

	if ( quantity < 0 )
	{
		quantity = 1; //dats because users usually typing bullshit in our lovely inputs
	}
	
	$(good).parent().children('img.ajax-loader').show(); // Показываем индикатор загрузки
	
	this_error_b = $(good).parent().children('#ajax-error'); //dat's global
	$(this_error_b).text('');
	$(this_error_b).ajaxError(function(){
		$('img.ajax-loader').hide();
		$(this).text('Ошибка!');
	});
	if ( item_id > 0 ) // Если ID товара больше 0
	{
		
		var superamount = 0; //recalculate super total amount for all goods
		$.getJSON('/?a=bonus_quantity&id='+item_id+'&amount='+quantity, function(data){
			if ( data.need_auth )
			{
				document.location.href="/?a=cart"; //в случае если у юзера истекла кука
			}
			if ( ( typeof( data ) == 'object' ) && ( !isNaN( data.amount ) ) ) //на случай если кто-то чето сломал
			{
				//getting values part
				$(good).val( data.amount ); //getting new amount

				$('#total_'+item_id).html( //recalculate total sum for one good cuz amount changed
					parseInt( data.amount ) * parseInt( $('#bonused_price_'+item_id+' strong').text()	)+'&nbsp;бонусов'
				)
				//console.log(data.sum);
				bonusprice = parseInt( data.sum ) || 0; //recalculate super total sum for all goods
				//console.log(bonusprice);
				
				for (var i = 0; i < $('input[name=amount]').length; i++)
				{
					superamount = superamount + parseInt( $(($('input[name=amount]'))[i]).val() ); //i said DON'T
				}
				$('img.ajax-loader').hide();
			}
			//console.log(bonusprice);
			$('th#summa span.bonuses').html( bonusprice + '&nbsp;бонусов' ); //replacing it
			$('th.sum_products strong').html( superamount );
		})
		
		
	}
}
function save (good) {
	$('#ajax-error').text('');
	var quantity = parseInt( $(good).val() ) || 0;
	var matches = $(good).attr('id').match(/amount_(\d+)/) || new Array();
	var item_id = parseInt( matches[1] ) || 0;

	if ( quantity < 0 )
	{
		quantity = 1; //dats because users usually typing bullshit in our lovely inputs
	}
	
	$(good).parent().children('img.ajax-loader').show(); // Показываем индикатор загрузки
	
	this_error = $(good).parent().children('#ajax-error'); //dat's global
	$(this_error).text('');
	$(this_error).ajaxError(function(){
		$('img.ajax-loader').hide();
		$(this).text('Ошибка!');
	});

	if ( item_id > 0 ) // Если ID товара больше 0
	{
		$.getJSON('/?a=quantity&id='+item_id+'&amount='+quantity, function(data){
			if ( data.need_auth )
			{
				document.location.href="/?a=cart"; //в случае если у юзера истекла кука
			}
			if ( ( typeof( data ) == 'object' ) && ( !isNaN( data.amount ) ) ) //на случай если кто-то чето сломал
			{
			//	alert(data.gift_status);
				//getting values part
				$(good).val( data.amount ); //getting new amount

				$('#total_'+item_id).html( //recalculate total sum for one good cuz amount changed
					parseInt( data.amount ) * parseInt( $('#price_'+item_id+' strong').text()	)+'&nbsp;руб'
				)

				var superprice = parseInt( data.sum ) || 0; //recalculate super total sum for all goods

				var superamount = 0; //recalculate super total amount for all goods
				for (var i = 0; i < $('input[name=amount]').length; i++)
				{
					superamount = superamount + parseInt( $(($('input[name=amount]'))[i]).val() ); //i said DON'T
				}

				
				//bonuses part
				if ( data.bonuses && data.bonuses.length )
				{
					//смотрим какой бонус
					var current_bonus_amount = -parseInt($('#coupon').text()) || 0;
					
					var new_bonus_amount = current_bonus_amount;
					var current_bonus_min_sum = 0;
					
					for ( var bonus in data.bonuses )
					{
						if ( data.bonuses[bonus].amount == current_bonus_amount )
						{
							current_bonus_min_sum = data.bonuses[bonus].min_sum;
						}
					}

					

					var new_bonus_min_sum = current_bonus_min_sum;
					if ( current_bonus_min_sum > superprice ) //общая сумма стала меньше
					{
						new_bonus_min_sum = 0;
						for ( var bonus in data.bonuses )
						{
							if ( data.bonuses[bonus].min_sum <= superprice &&
							     data.bonuses[bonus].min_sum > new_bonus_min_sum )
							{
								//если находим бонус который нам подходит
								new_bonus_min_sum = data.bonuses[bonus].min_sum;
								new_bonus_amount = data.bonuses[bonus].amount;
							} 
						}
						if ( current_bonus_amount == new_bonus_amount)
						{
							//удалить строчку
							$('#coupon').parent().remove();
							new_bonus_amount = 0;
							new_bonus_min_sum = 0;
						} else {
							$('#coupon').html('-'+new_bonus_amount+'&nbsp;руб.');
						}
					}
					else
					{
						for ( var bonus in data.bonuses )
						{
							if ( ( data.bonuses[bonus].min_sum >= current_bonus_min_sum ) &&
							     ( data.bonuses[bonus].min_sum <= superprice ) )
							{
								//если находим бонус который нам подходит
								new_bonus_min_sum = data.bonuses[bonus].min_sum;
								new_bonus_amount = data.bonuses[bonus].amount;
							}		
						}
						if ( current_bonus_amount == new_bonus_amount)
						{
							//do practically nothing
							superprice = superprice - new_bonus_amount;
						}
						else
						{
							if ($('#coupon').size())
							{
								$('#coupon').html('-'+new_bonus_amount+'&nbsp;руб.');
								superprice = superprice - new_bonus_amount;
							}
							else
							{
								//нарисовать строку
								var parity = ( $('tr.tfoot').prev().attr('class') == 'odd' ) ? 'even' : 'odd';
								$('tr.tfoot').before(
									'<tr class="'+parity+'">'+
									'<td class="product_pic"></td>'+
									'<td colspan="2" class="product_name"><strong>У вас использована персональная скидка</strong></td>'+
									'<td id="coupon" class="price">-'+new_bonus_amount+'&nbsp;руб</td>'+
									'<td class="del_position"></td>'+
									'</tr>'
								);
								superprice = superprice - new_bonus_amount;

								//убрать купончик снизу
								$('.coupon').fadeOut('slow');
							}
						}
					}
					
					//$('p.warning[rel]').remove();
					
					for ( var bonus in data.bonuses )
					{
						var bonus_min_sum = parseInt(data.bonuses[bonus].min_sum);
						if ( bonus_min_sum > (superprice + new_bonus_amount) )
						{
							//если нет то нарисуем
							if (($('.coupon')).length <= 0 ){
								$('.personal_discount').html(
									'<div class="coupon" style="display:none">'+
									'<img src="/_img/coupon.png" alt="Купон">'+
									'<p rel="'+data.bonuses[bonus].amount+'">При заказе на сумму не менее <em>'+data.bonuses[bonus].min_sum+'&nbsp;рублей</em><br>вы получите <strong>'+data.bonuses[bonus].amount+'</strong>&nbsp;рублей.</p>'+
									'</div>'
								);
							}
							$('.coupon').fadeIn('slow');//и покажем
							//$('.basket').before(
							//	'<p class="warning" rel="'+data.bonuses[bonus].amount+'">У вас есть бонус '+
							//	'<strong>'+data.bonuses[bonus].amount+' руб</strong>, который можно использовать '+
							//	'при покупке на сумму не менее <strong>'+data.bonuses[bonus].min_sum+' руб</strong></p>'
							//);
						}
					}
				}

				$('th#summa span.rubles').html( superprice + '&nbsp;руб' ); //replacing it
				$('th.sum_products strong').html( superamount );

				//presents part
				for (var i = 0;i < $('dl.order_gifts').length;i++)
				{
					var min_sum = parseInt($(($('dl.order_gifts'))[i]).attr('rel')) || 0;
					var presents = $('dl.order_gifts[rel='+min_sum+'] dd > div.gift');

					if ( min_sum < superprice ) //little tricks with presents
					{
						for (var j = 0; j < $(presents).length; j++)
						{
							var present = ($(presents))[j];
							var present_id = parseInt($(present).attr('rel')) || 0;

							if ( (($(present).has('a.add_to_basket')).length == 0) && ( ($(present).has('.picked')).length == 0 ))
							{
								$('.get_money_mf', present).remove(); 
								$(present).children('div.gift_info').append(
									'<a class="add_to_basket" href="/?a=add_present_to_cart&id='+present_id+'" title="Положить в корзину">Положить в корзину</a>'
								);
							}
						}
					}
					else //cuz we don't want to give our expensive presents to that sneaky little bastards
					{
						for (var j = 0; j < $(presents).length; j++)
						{
							var present = ($(presents))[j];
							var present_id = parseInt($(present).attr('rel')) || 0;

							if ( ($(present).has('a.add_to_basket')).length == 1 )
							{
								$(present).children('div.gift_info').children('a.add_to_basket').remove();
								$(present).children('div.gift_info').append(
									'<span class="get_money_mf">Для получения подарка не&nbsp;хватает <strong>'+(min_sum - superprice)+'&nbsp;руб.</strong></span>'
								);
							} else {
								$('.get_money_mf > strong', present).html((min_sum - superprice)+'&nbsp;руб.');
							}

							if ( ($(present).has('.picked')).length == 1 )
							{
								$(present).children('div.gift_info').children('.picked').remove();
								$('.present_price').parent().remove();
								$('.dont_forget_present p').show();
							}
						}
					}
				}
	
				$('img.ajax-loader').hide(); //best part
			} else {
				$('img.ajax-loader').hide(); //best part
				$('#ajax-error').text('Ошибка!');
			}
		});
	} else {
		$('img.ajax-loader').hide(); //best part
		$(good).parent().children('#ajax-error').text('Ошибка!');
	}
}

function handleBasket() {
	$('#ajax-error').text('');

    $('.basket').each(function(){
        var $this = $(this),
            basket = {
                el                  : $this,
                previousSum         : parseInt( $this.attr('data-total-sum') ),
                previousAmount      : parseInt( $this.attr('data-total-amount') ),
                allowPresents       : parseInt( $this.attr('data-allow-presents') ),
                hasPersonalDiscount : ( $('#coupon', $this).length > 0 ) ? true : false
            }

        $('[name=amount]', basket.el).change(function(){
            //$.publish('test', [ this ] );

            var $this = $(this),
                item  = {
                    el       : $this,
                    //basket   : basket,
                    quantity : parseInt ( $(this).val() ) || 0,
                    id       : $this.attr('data-product-id')
                }

                item.price   = $('#price_'+item.id).attr('data-price')

            $('.ajax-loader_'+item.id).show(); // Показываем индикатор загрузки

            $.getJSON('/', { 
                'a'        : 'quantity',
                'id'       : item.id,
                'amount'   : item.quantity
            }, function(json) {
                if (json.need_auth) {
                    // if user logged out we need him to 
                    // log in again
                    document.location.href = "/?a=cart"; 
                }

                if ( ( typeof( json ) == 'object' ) && ( !isNaN( json.amount )  ) ){ //на случай если кто-то чето сломал 

                    //console.log('json', json);
                    $.publish('/basket/newamount', [ item, basket, json ])


                    $('.ajax-loader_'+item.id).hide(); // Скрываем индикатор загрузки
                } else {
                    $('.ajax-loader').hide(); //best part
                    $('#ajax-error').text('Ошибка!');
                }
            })
        })
    })

    $.subscribe('/basket/newamount', function( item, basket, json ) {
        //update sum for one good
        //console.log('/basket/newamount fired');
        //console.log(item);

        item.el.val(json.amount);
        $('#total_'+item.id).html(item.price*json.amount + '&nbsp;руб.');

        basket.sum    = parseInt(json.sum);
        basket.amount = 0;

        var items = $('[name=amount]', basket.el).toArray();


        for (var i = 0; i < items.length; i++) {
            basket.amount += parseInt( $(items[i]).val() );
        }

        //console.log('basket', basket);

        if (basket.sum != basket.previousSum && basket.amount != basket.previousAmount ) {

            basket.previousSum = basket.sum;
            basket.previousAmount = basket.amount;

            if ( json.bonuses && json.bonuses.length ) {
                //handle Personal Discounts

                $.publish('/basket/bonuses', [ item, basket, json ]);
            } else {
                $.publish('/basket/updated', [ item, basket ]);
            }
        }
    })

    $.subscribe('/basket/bonuses', function( item, basket, json ) {
        // здесь я делаю допущение что бонус возможен только один
        //console.log('handle bonuses');
        //console.log(basket);
        
        var bonus = json.bonuses[0];

        if ( parseInt(bonus.min_sum) <= basket.sum ) {
            if ( !basket.hasPersonalDiscount ) {
                basket.hasPersonalDiscount = true;

                //console.log('add coupon cart');
                var parity = ( $('tr.tfoot').prev().attr('class') == 'odd' ) ? 'even' : 'odd';
                $('tr.tfoot', basket.el).before(
                    '<tr class="basket__row basket__item basket__item_discount_coupon '+parity+'">'+
                        '<td class="basket__column product_pic"></td>'+
                        '<td colspan="2" class="basket__column product_name"><strong>У вас использована персональная скидка</strong></td>'+
                        '<td id="coupon" class="basket__column price">-'+bonus.amount+'&nbsp;руб</td>'+
                        '<td class="basket__column del_position"></td>'+
                    '</tr>'
                );

                //console.log('remove coupon at the bottom');
                $('.coupon').hide();

                //recalculating total basket sum
                //basket.previousSum = basket.sum;
                basket.sum -= parseInt( bonus.amount );
                //basket.amount += 1;
            } 
        } else {
            if ( basket.hasPersonalDiscount ) {
                //console.log('remove line from cart');
                basket.hasPersonalDiscount = false;
                $('#coupon').parent().remove();
            }

            if (($('.coupon')).length <= 0 ){
                $('.personal_discount').html(
                    '<div class="coupon" style="display:none">'+
                    '<img src="/_img/coupon.png" alt="Купон">'+
                    '<p rel="'+bonus.amount+'">При заказе на сумму не менее <em>'+bonus.min_sum+'&nbsp;рублей</em><br>вы получите <strong>'+bonus.amount+'</strong>&nbsp;рублей.</p>'+
                    '</div>'
                );
            }
            $('.coupon').show();

            //basket.sum += parseInt( bonus.amount );
            
        }

        $.publish('/basket/updated', [ item, basket ]);
    })

    $.subscribe('/basket/updated', function( item, basket ){
        //console.log('/basket/updated fired - resetting prices in View');

        $('#summa span.rubles').html( basket.sum + '&nbsp;руб' );
        $('.sum_products strong').html( basket.amount );
    });


    $.subscribe('/basket/updated', function( item, basket ){
        //console.log('/basket/updated recalculating presents');

        if (basket.allowPresents) {
            //handle Presents

            $('.cart-gifts__group').each(function(index, element) {
                var $element = $(element),
                    presents = $element.find('.cart-gift');

                //console.log($element.attr('data-min-sum'));
                //console.log(presents);

                var min_sum = parseInt( $element.attr('data-min-sum') );

                if ( min_sum < basket.sum ) {
                    //status_available
                    presents.each(function(i, el) {
                        var $el = $(el);

                        $('.cart-gift__not-enouth-money strong', $el).html((min_sum - basket.sum) + '&nbsp;руб.');

                        if ( $el.hasClass('cart-gift_state_not-enouth-money') ) {
                            $el.removeClass('cart-gift_state_not-enouth-money').addClass('cart-gift_state_available')
                        }
                    })
                } else { //min_sum >= basket.sum
                    //status_not-enouth-money

                    presents.each(function(i, el) {
                        var $el = $(el);

                        $('.cart-gift__not-enouth-money strong', $el).html((min_sum - basket.sum) + '&nbsp;руб.');

                        if ( $el.hasClass('cart-gift_state_available') ) {
                            //console.log('no longer available');
                            $el.removeClass('cart-gift_state_available').addClass('cart-gift_state_not-enouth-money')
                        }
                        if ( $el.hasClass('cart-gift_state_picked') ) {
                            $el.removeClass('cart-gift_state_picked').addClass('cart-gift_state_not-enouth-money')

                            $('.basket__item_present', basket.el).remove();
                            basket.amount -= 1;
                            $('.sum_products strong').html( basket.amount );
                            $('.dont_forget_present p').show();
                        }
                    })

                } 

            })
        }
    })

    //$.subscribe('test', function(element) {
        //alert('event published');

        //console.log(element);
    //})
}

function delete_confirm( id, item )
{
	var messages = {
		address: 'Вы действительно хотите удалить адрес "'+item+'"?',
		   good: 'Вы действительно хотите удалить из корзины товар "'+item+'"?',
		  order: 'Вы действительно хотите отменить заказ?',
		 simple: 'Точно удалить?'
	};
	return confirm(messages[id]);
}


function next_step( address_id, city_id ) //user choosing address
{
    var result, bonuses = 0, k = 10; // k - курс бонуса к рублю
/*
    if ( city_id != 3 && summa < 500 ) 
    {
	var message = 'Для заказа на этот адрес Вам необходима сумма не меньше 500 руб' + ( bonuses ? ' или ' + ( 500 * k ) + ' бонусов.' : '.');
	alert(message);
	result = false;
    }
    else if ( city_id != 3 && summa > 500 )
    {
	var message = 'Внимание! Доставка по Москве и Санкт-Петербургу платная - 99 руб.';
	//alert(message);
	result = true;
    }
    else if ( city_id == 3 && summa < 3000 )
    {
	var message = 'Для заказа на этот адрес Вам необходима сумма не меньше 3000 руб' + ( bonuses ? ' или ' + ( 3000 * k ) + ' бонусов.' : '.');
	alert(message);
	result = false;
    }
    else if ( city_id == 3 && summa > 3000 )
    {
	var message = 'Внимание! Доставка курьерской службой EMS платная - 450 руб.';
	//alert(message);
	result = true;
    }
    else
    {
	result = true;
    } */
	result = true;
    return result;
}


function load_letters(el,cat_tree,cat_level,div_id,letter,el2){
  if (!($("#" + el +" #tree_"+div_id).length > 0)){
	$("#" + el).append('<select id="'+el+'_tree_' + div_id + '" style="vertical-align: middle;"></select>');	
  }
	$.getJSON('/adminko/',{ 'a': 'ajax_show_letters'},function(data){
      if (data.length > 0){
        group_options = '';
      	for (var i = 0; i < data.length; i++){
		  var selected = (data[i].ord == letter) ? ' selected="selected"' : '';
		  group_options += '<option value="'+data[i].ord+'"'+ selected +'>'+data[i].letter+'</option>';										
		}
        $('#'+el+'_tree_'+div_id).append(group_options).change(function(){
		  delete_selects(el, cat_tree, cat_level, div_id);         
		  load_tree_by_id(el,cat_tree,cat_level,div_id+1,$('#'+el+'_tree_'+div_id+' > :selected').val(),el2);			
		});
      }    
    }); 
}

function load_tree_by_id (el,cat_tree,cat_level,div_id,letter,el2) {
	cat_id = cat_tree[cat_level];
	if (typeof(cat_id) == 'undefined'){        
		return
	}	
	$('#'+el).append('<img src="/_img/ajax-loader.gif" class="'+el+'_preloader_pic" style="vertical-align: middle; margin-left: 10px;">');

	
	$.getJSON('/adminko/',{ 'a': 'ajax_show_categories', 'sale': cat_id, 'letter': letter },function(data){
	
	group_options = '';
	$('.' + el + "_preloader_pic").remove();
	if (data.length > 0){
		if (!($('#'+el+'_tree_'+div_id).length > 0)){
			$('#'+el).append('<select id="'+el+'_tree_' + div_id + '" style="vertical-align: middle;"></select>');	
		}
		
		if (cat_level>=0){
				group_options = '<option value="0"> --- </option>';	
			}
		for (var i = 0; i < data.length; i++)
			{
				var selected = (data[i].category_id == cat_tree[cat_level+1]) ? ' selected="selected"' : '';
				group_options += '<option value="' + data[i].category_id + '"' + selected + ' title="# ' + data[i].category_id + ' ' + data[i].description_short+'">' + data[i].name + ' # ' + data[i].category_id + '</option>';										
			}
		$('#'+el+'_tree_'+div_id).append(group_options).change(function(){
            if($('#' + el + '_tree_'+div_id+' > :selected').val()>0){
              delete_selects(el, cat_tree, cat_level, div_id);
              cat_tree[cat_level+1] = $('#' + el + '_tree_'+div_id+' > :selected').val();			
              $("#" + el2).val(cat_tree[cat_level+1]);
              load_tree_by_id(el,cat_tree,cat_level+1,div_id+1,0,el2);    
            }else{
              $("#" + el2).val(cat_tree[cat_level]);  
            }
		});
		load_tree_by_id(el,cat_tree,cat_level+1,div_id+1,0,el2);	
	}else{
		delete_selects(el, cat_tree, cat_level, div_id);
	}
	});
}

function delete_selects(el, cat_tree, cat_level, div_id) {
	for ( var i = 1;i < 10;i++){
		delete cat_tree[cat_level+i];
		$('#' + el + "_tree_"+(div_id+i)).remove();	
	}
}


