function number_format( number, decimals, dec_point, thousands_sep ) { 
	var i, j, kw, kd, km;
 
	if( isNaN(decimals = Math.abs(decimals)) ){
		decimals = 2;
	}
	if(typeof dec_point == 'undefined'){
		dec_point = ".";
	}
	if(typeof thousands_sep == 'undefined'){
		thousands_sep = " ";
	}
 
	i = parseInt(number = (+number || 0).toFixed(decimals)) + "";
 
	if( (j = i.length) > 3 ){
		j = j % 3;
	} else {
		j = 0;
	}
 
	km = (j ? i.substr(0, j) + thousands_sep : "");
	kw = i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thousands_sep);
	kd = (decimals ? dec_point + Math.abs(number - i).toFixed(decimals).replace(/-/, 0).slice(2) : "");
 	return km + kw + kd;
}

function is_email(email)
{
	var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
	return re.test(email);
}
function whitewall(){
	if($('.whiteflag').is('div,a')){
		$('.whitewall').show();
	}else{
		$('.whitewall').hide();
	}
}
function clode_slidedown_elements() {
	$('#feedback').removeClass('opened');
	$('#feedback').removeClass('whiteflag');
	$('#feedback').removeClass('active');
	$('.feedback-content').slideUp('fast');
	
	$('#cart-summary-opener').removeClass('opened')
	$('#cart-summary-opener').removeClass('whiteflag');
	$('#cart-summary').slideUp('fast');
	
	whitewall();
}

$('.whitewall').click(function(){
	$('.closer').click();
});

$(document).scroll(function(){
	if( $('.metall_mark').is('div')){
		MScroll();
	}
});
function digitend(word,mas){
	return mas[(word%10==1 && word%100!=11 ? 0 : (word%10>=2 && word%10<=4 && (word%100<10 || word%100>=20) ? 1 : 2))];
}
function MScroll(){
    var top = $(document).scrollTop();
	var bottom = $('.page-footer').offset().top;

    if (top >= window.MtopPosition && top<= window.MbottomValue){
        $('.metals-quotes').css('position', 'fixed').css('top', '0px');     
    } else if(top > window.MbottomValue){
		$('.metals-quotes').css('position', 'fixed').css('top', (window.MbottomValue - top)+'px');
	} else {
        $('.metals-quotes').css('position', 'absolute').css('top', '0px');
    }
};
$('input').click(function(){
	$(this).removeClass('errorborder');
});
function coincolumns(){
	if($('.catalog-cats-grid .items').is('div')){
		var linkcount = 0;
		$('.catalog-cats-grid .items a').each(function(e,o){
			linkcount++
			if(linkcount==3){
				linkcount=0
				$(o).css({'margin-right':0});
			}
		});
	}
}
function ruskeydownEvent(e){ // ограничение ввода [кирилица]

	var text = $(this).val()+String.fromCharCode(e.keyCode || e.charCode);
	var pattern = new RegExp('[^А-Яа-яЁё]+');
	var check = (text).replace(pattern,"");
	if(text != check){
		$(this).addClass('errorborder');
		if($(this).parents('.cart-form').is('form')){
			$(this).parent().find('div').show().text('Заполните поле, используя русские буквы');
		}
		return false;
	} else {
		$(this).removeClass('errorborder');
		if($(this).parents('.cart-form').is('form')){
			$(this).parent().find('div').show().text('');
		}
	}

}

$(function()
{
	//отрисовка монет по три в ряд
	//coincolumns();
	
	// фильтрация ввода в форме ЗАКАЗАТЬ ЗВОНОК
	$('#ContactsForm_surname').bind("keypress", ruskeydownEvent);
	$('#ContactsForm_name').bind("keypress", ruskeydownEvent);
	$('#ContactsForm_middlename').bind("keypress", ruskeydownEvent);
	$("#ContactsForm_phone").mask("+7(999) 999-99-99");
	$('#ContactsForm_email').bind("blur", function(){
	
		if(!is_email($(this).val())){
			$(this).addClass('errorborder');
			return false;
		} else {
			$(this).removeClass('errorborder');
		}
	});

	// подсказка при клике в поля формы заказа
	$('#OrderForm_surname').on("click", function(){$(this).parent().find('div').show().text('Заполните поле, используя русские буквы')});
	$('#OrderForm_name').on("click", function(){$(this).parent().find('div').show().text('Заполните поле, используя русские буквы')});
	$('#OrderForm_middlename').on("click", function(){$(this).parent().find('div').show().text('Заполните поле, используя русские буквы')});
	$("#OrderForm_phone").on("click", function(){$(this).parent().find('div').show().text('Введите одиннадцатизначный номер мобильного телефона.')});
	$('#OrderForm_email').on("click", function(){$(this).parent().find('div').show().text('E-mail должен быть, например, таким — mail@gmail.com')});
	
	$('#OrderForm_surname').bind("keypress", ruskeydownEvent);
	$('#OrderForm_name').bind("keypress", ruskeydownEvent);
	$('#OrderForm_middlename').bind("keypress", ruskeydownEvent);
	$("#OrderForm_phone").mask("+7(999) 999-99-99");
	$('#OrderForm_email').bind("blur", function(){
	
		if(!is_email($(this).val())){
			$(this).addClass('errorborder');
			$(this).parent().find('div').show().text('E-mail должен быть, например, таким — mail@gmail.com');
			
			return false;
		} else {
			$(this).removeClass('errorborder');
		}
	});	


	if ($('.metals-quotes').is('section')){
		window.MtopPosition = $('.metals-quotes').offset().top;
		window.MheightValue = $('.metals-quotes').height();
		window.MbottomValue = $('.page-footer').offset().top-$('.metals-quotes').height()-100;
	}
	window['bag']= new Bag();
	
	//ссылка "согласен с условиями"
	$('.conditionlink').click(function(){
		
		$($('.conditionlink').attr('href')).slideToggle();
		return false;
	});

	var
		$cart= $('.cart-summary');

	//Инициализация корзины
	bag.on('data.load.ready', buildBag);

	//Перерисовка корзины после удаления
	bag.on('remove', buildBag);

	bag.on('update', buildBag);
	
	bag.on('add', buildBag);

	bag.on('calculate', function(){
		$cart.find('.totalprice').html(bag.getTotalCost());
	});

	//Добавление товара в корзину
	$('body').on('click','#add-to-cart,.actions a', function(){
		bag
			.withAttr('type', 'coins')
			.add(
				$(this).data('id'),
				parseInt($(this).prev().val())
			);

		return false;
	});

	//Обработчик полей ввода кол-ва товара
	$('.items .actions input, .product-info .actions input, #cart-summary .amount input, .ingot .amount input')
		.live('keydown', function(e){

			var	inputVal= parseInt($(this).val());
			
			if (e.keyCode<48 || e.keyCode>57){
				if (e.keyCode!=8)
					return false;
			}
			
			if (inputVal>=999){
				$(this).val(999);
				return false;
			}
		}).live('focusout', function(){

			if( isNaN(parseInt($(this).val())) ){
				$(this).val(1);
			}
		});

	//Отрисовка корзины
	function buildBag(){
		var	items = bag.list();
		//Очистка списка
		$cart.find('li').not(':eq(0)').remove();

		$.each(items, function(i,item){
			var	$li= $cart.find('li:eq(0)').clone();
			
			$li.find('.ico').attr('src','/img/coins/'+item.ico).attr('data-type',item.type);
			$li.find('.price').html(isNaN(parseInt(item.cost))?0:item.cost);
			$li.find('input').val(isNaN(parseInt(item.quantity))?0:item.quantity);
			$li.find('h4 a').attr('href', '/coins/view/id/'+i).html(item.title);

			//Удаление товара из корзины
			$li.find('.remove').click(function(){
				bag.remove(i);
			});

			//Обработка кнопок +/-
			$li.find('.amount a').click(function(){

				var	$input = $(this).parent().find('input');
				var count = parseInt($input.val());
				var product = item;

				if(isNaN(count)){
					count= 1;
				}

				if($(this).hasClass('minus')){
					if(--count <=1){
						count= 1;
					}

					$input.val(count);
				}

				if($(this).hasClass('plus')){
					$input.val(++count);
				}

				bag.withAttr('type',product.type).set(i, count);
				
				return false;
			});

			$li.show();

			$li.appendTo($cart.find('ul'));
		});

		var coins_icons = $('#cart-summary img.ico');
		var cnt_coins = 0;
		var cnt_ingot = 0;
		$.each(coins_icons,function(){
			if('coins'==$(this).data('type')){
				cnt_coins = cnt_coins+(parseInt($(this).parent().find('input').val(), 10));
			}else if('ingot'==$(this).data('type')){
				cnt_ingot = cnt_ingot+(parseInt($(this).parent().find('input').val(), 10));
			}
		});

		if(0 != cnt_coins){
			cnt_coins = cnt_coins+' монет'+digitend(cnt_coins,new Array('а','ы',''));
		}

		if(0 != cnt_ingot){
			cnt_ingot = cnt_ingot+' слит'+digitend(cnt_ingot,new Array('ок','ка','ков'));
		}

		if (0 != cnt_ingot && 0 != cnt_coins){
			$('#cart-summary-opener').text('В корзине '+cnt_coins+' и '+cnt_ingot);
		} else if (0 != cnt_ingot || 0 != cnt_coins){
			$('#cart-summary-opener').text('В корзине '+(cnt_coins!=0?cnt_coins:cnt_ingot));
		} else{
			$('#cart-summary-opener').text('Корзина');
		}
	}

	/**/
	/* selects */
	/**/
	$('form[name=filter] select,form[name=cart-form] select').chosen({
		disable_search: true,
		max_selected_options: 1
	});
	
	
	/**/
	/* announcement */
	/**/
	$('#announcement').on('click', '.close', function()
	{
		$('#announcement').slideUp('fast');
	})
	
	
	/**/
	/* cart summary */
	/**/
	$('#cart-summary-opener').on('click', function()
	{	
		if ($(this).hasClass('opened')) {
			clode_slidedown_elements(); 
		} else {
			clode_slidedown_elements(); 
			$(this).addClass('whiteflag');
			$(this).addClass('opened');
			$('#cart-summary').slideToggle('fast');
			whitewall();
		}
	});
	
	$('#cart-summary .closer').on('click', function(){
		//$('#cart-summary-opener').removeClass('whiteflag');
		//$('#cart-summary').slideUp('fast');
		//whitewall();
		clode_slidedown_elements();
	});

	
	$('#feedback').on('click', function()
	{
		if ($(this).hasClass('opened')) {
			clode_slidedown_elements(); 
		} else {
			clode_slidedown_elements(); 
			$(this).addClass('opened');
			$(this).addClass('whiteflag');
			$(this).addClass('active');
			$('.feedback-content').slideToggle('fast');
			$('div[name=feedbacktext]').attr('contenteditable', true);
			try{
				CKEDITOR.instances['editor1'].keystrokeHandler.blockedKeystrokes[8]=false;
				CKEDITOR.instances['editor1'].readOnly = false;
				//TODO: put this in setReadOnly method :)
			}catch(e){}
			whitewall();
		}
	});
	
	$('#feedback-content .closer').on('click', function(){
		//$('#feedback').removeClass('whiteflag');
		//$('.feedback-content').slideUp('fast');
		//$('#feedback').removeClass('active');
		//whitewall();
		clode_slidedown_elements();
	});
	$('#feedback-content .hiddenclick').on('click', function(){
		$('.feedback-content .hiddenbutton').click();
	});
	$('.item .actions').click(function(){

	});
	
	/**/
	/* subscription */
	/**/
	$(document).on('keyup', function(event)
	{
		input = $('#subscription input');
		if( is_email(input.val()) )
			$('#subscription .button').attr('disabled', false);
		else
			$('#subscription .button').attr('disabled', true);
	});
	$('#subscription').on('change', 'input', function()
	{
		input = $(this);
		if( input.val() != '' )
			input.addClass('filled');
		else
			input.removeClass('filled');			
	});
	
	
	/**/
	/* price */
	/**/

	var 
		_values= [0, $('#price').data('max')*0.5];

	if(typeof($('#price').data('cmin'))!='undefined'){
		_values[0]= $('#price').data('cmin');
	}

	if(typeof($('#price').data('cmax'))!='undefined'){
		_values[1]= $('#price').data('cmax');
	}

	$('#price').slider(
	{
		range: true,
		min: 0,
		max: $('#price').data('max'),
		values: _values,
		step: typeof($('#price').data('max'))!='undefined'?(parseInt($('#price').data('max'))/2)*0.1:10,
		create: function( event, ui )
		{
			$('#price .ui-slider-handle').eq(0).text('0');
			$('#price .ui-slider-handle').eq(1).text($('#price').data('max')*0.5);
		},
		slide: function( event, ui )
		{
			$('#price .ui-slider-handle').eq(0).text(ui.values[0]);
			$('#price .ui-slider-handle').eq(1).text(ui.values[1]);
		},
		change: function(){
			$('form[name=filter]').trigger('doFiltering');
		}
	});

	$('#price .ui-slider-handle').eq(0).text(_values[0]);
	$('#price .ui-slider-handle').eq(1).text(_values[1]);
	
	
	/**/
	/* add to cart */
	/**/
	$('body').on('click','#add-to-cart,.actions a', function()
	{
		img = $('#product-pictures ul .active img');
		
		if(!$(img).is('img')){
			img= $(this).parents('li').find('img');
		}
		console.log('test');
		elem = img.clone();
		elem.appendTo('body').css('position', 'absolute').css('top', img.offset().top).css('left', img.offset().left).css('width', img.width());
		elem.animate({top: 0, left: $('#cart-summary-opener').offset().left, width: 109, opacity: 0}, 500, function()
		{
			$('#cart-summary-opener').addClass('droped');
			elem.remove();
		});
		
		return false;
	});
	
	
	/**/
	/* product pictures */
	/**/
	$('#product-pictures').on('click', 'ol li', function()
	{
		elem = $(this);
		elem.addClass('active').siblings().removeClass('active');
		$('#product-pictures ul li').eq(elem.index()).addClass('active').siblings().removeClass('active');
	});
	$('#product-pictures').on('click', 'button', function()
	{
		elem = $('#product-pictures ol li:not(.active)');
		elem.addClass('active').siblings().removeClass('active');
		$('#product-pictures ul li').eq(elem.index()).addClass('active').siblings().removeClass('active');
	});
	
	/**/
	/* branch selection */
	/**/
	
	$('#select_city').change(function(){
		var $option = $(this).find('option:selected');
		var region = $option.data('region');
		var r = $option.data('r');
		var c = $option.data('c');
		if ($option.val() == '0') {
			$('input[name="OrderForm[region]"]').val('');
			$('input[name="OrderForm[city]"]').val('');
		} else {
			$('input[name="OrderForm[region]"]').val(region);
			$('input[name="OrderForm[city]"]').val($option.html());
		}
		$('#select_branch').chosen('destroy');

		$('.branch').addClass('invisible');
		$('.branch'+r+'_'+c).removeClass('invisible');

		if ($('#select_branch option').not('.invisible').length > 2) {
			$('#select_branch').val(0);
		} else {
			$('#select_branch').val(r+'_'+c);
		}

		$('#select_branch').chosen({
			disable_search: true,
			max_selected_options: 1
		});
		$('#select_branch').chosen().change();
		$("#select_branch").trigger("liszt:updated");
		$('select').trigger("chosen:updated");
		
	});
	
	$('#select_branch').change(function(){
		var $option = $(this).find('option:selected');
		var region = $option.data('region');
		var r = $option.data('r');
		var c = $option.data('c');
		if ($option.val() == 0) {
			$('input[name="OrderForm[address]"]').val('');
		} else {
			$('input[name="OrderForm[address]"]').val($option.html());
		}
	});
	
});