$(document).ready(function () {
	load_hotkeys();
	filters_init();
	navline_init();
	offers_sort_init();
	seo_text_init();

	init_images();
});

function init_images() {
	var images = $(".to_big_image");
	if (images.length > 0) {
		$.image(images);
	}
}

//вешаем обработчик на нажатие "читать дальше" на тексте о странице (под левым меню)
function seo_text_init() {
	$("#show_additional_page_info").show();
	$("#show_additional_page_info").click(function() {
		$(this).hide();
		$("#additional_page_info").show();
	});
}


//filter.js
//вешаем обработчики на контролы трэкбара
function filters_init() {
	$("span#clear_filter").click(reset_filter);

	$(".filter_price_from input").keyup(function() {
		//set_from_price(this);
	}).focus(function() {
		set_from_price(this);
		delSpice(this);		
	}).blur(function() {
		set_from_price(this);
		addSpice(this);
	});
			
	$(".filter_price_to input").keyup(function() {
		//set_to_price(this);
	}).focus(function() {
		set_to_price(this);
		delSpice(this);		
	}).blur(function() {
		set_to_price(this);
		addSpice(this);
	});

}

//функция, которая актуализирует значения трэкбара (а при первом запуске и значения input'ов); на входе - целевые значения.
//дергается она контролом трэкбара - при его инициализации (change_inputs_first_time в этом случае будет равен true) и при его перетягивании мышкой
var change_inputs_first_time = true;
function change_inputs(l,r){ 
	var input_from=$('div.filter_price_from input');
	var input_to=$('div.filter_price_to input');
	//alert($(input_from).val()+ ' ' + $(input_to).val()+' '+ change_inputs_first_time);
	if (($(input_from).val() == '')||(!change_inputs_first_time)){
		$(input_from).val(l);
	}
	if (($(input_to).val() == '')||(!change_inputs_first_time)){
		$(input_to).val(r);
	}

	if (change_inputs_first_time){
		set_from_price($(input_from)[0]);
		set_to_price($(input_to)[0]);
	}
	addSpice($(input_from)[0]);
	addSpice($(input_to)[0]);
	change_inputs_first_time=false;	
	
	$('div.filter_price_from').attr('title', l);
	$('div.filter_price_to').attr('title', r);

}

//функция, которая переопределеяет значение левого ползунка в трэкбаре
//на входе объект инпута с минимальной ценой
function set_from_price(obj) {
    //trackbar.getObject('one').updateLeftValue(obj.value.replaceAll(" ", ""));
    del_noise(obj);
    check_price_value(obj,'from');
    $.trackbar.getObject('filters_trackbar').updateLeftValue(obj.value);
    $('div.filter_price_from').attr('title', obj.value);

}
//функция, которая переопределеяет значение правого ползунка в трэкбаре
//на входе объект инпута с максимальной ценой
function set_to_price(obj) {
	del_noise(obj);
	//alert('in'+obj.value);
	check_price_value(obj,'to');
    $.trackbar.getObject('filters_trackbar').updateRightValue(obj.value);
    $('div.filter_price_to').attr('title', obj.value);
}

//функция, которая проверяет корректность значений в правом или левом input'е
//удаляет мусор, проверяет на больше/меньше
function check_price_value(obj,field){
	if (field == 'from'){
		var to_value = parseInt(del_noise_str($(".filter_price_to input").val()));
		var from_value = parseInt(del_noise_str(obj.value));
		if (from_value > to_value){
			var target=$(".filter_price_to input")[0];
			$(target).val(from_value);
			set_to_price($('.filter_price_to input')[0]);
			addSpice(target);
		}
	}
	else if (field == 'to'){
		var from_value = parseInt(del_noise_str($(".filter_price_from input").val()));
		var to_value = parseInt(del_noise_str(obj.value));
		//alert(from_value+' '+to_value);
		if (from_value > to_value){
			var target=$(".filter_price_from input")[0];
			$(target).val(to_value);			
			set_from_price($('.filter_price_from input')[0]);
			addSpice(target);
		}		
	}
}

//удаляет мусор из значения инпута (всё, что не цифры) 
function del_noise(obj) {
	obj.value = del_noise_str(obj.value);
}
function delSpice(obj) {
    del_noise(obj);	
}

//разделяет число на разрялы (добавляя пробелы) и добавляет значок валюты
function addSpice(obj, test) {
	del_noise(obj);
    var currSign = '$';
    var new_value = parseInt(obj.value);
    obj.value = divide_digits(obj.value) + " " + currSign;;
}

//разделяет число на разрялы (добавляя пробелы)
function divide_digits(number) {
    var count = 0;
    for (var i = number.length - 1; i >= 0; i--) {
        count++;
        if (count % 3 == 0)
        number = number.substr(0, i) + ' ' + number.substr(i);
    }
    return trim(number);
}
//обрезает крайние пробелы в строке
function trim(string) { return string.replace(/(^\s+)|(\s+$)/g, ""); }
//обрезает нули в начале строки
function del_first_zeros(string) { return string.replace(/(^0+)/g, ""); }








function reset_filter() {
	var filters_form = $("#filters_form");
	$(":select:option", filters_form).attr("selected", null);
	$(":checkbox", filters_form).attr("checked", null);
	$(":radio", filters_form).attr("checked", null);
}


//navline.js

var neibh_link_clicked=false;
function navline_init() {
	$('div.hor_navline span.arrow').click(function() {
		var neibhs=$('.neibh_list_container');
		if ($(neibhs).hasClass('shwd')){
			hide_neibh();
			return false;
		}
		else {
			show_neibh(neibhs);
			return false;
		}
	});
	
	$("div.hor_navline span.arrow").hover(
		function () {
			$(this).css("background","transparent url(/pics/arrow_down2.gif) no-repeat 100% 2px");
			$("a",$(this)).css("color","#ff9000");
			$("a",$(this)).css("text-decoration","underline");
		}, 
		function () {
			$(this).css("background","transparent url(/pics/arrow_down.gif) no-repeat 100% 6px");
			$("a",$(this)).css("color","#acb4ba");
			$("a",$(this)).css("text-decoration","none");
		}
	);
	
	
	$('div.neibh_list div').click(function() { 
		if ($('a',$(this)).size() > 0){
			location.href = $('a',$(this))[0].href;
		}
	});
	
	$('div.hor_navline span.arrow').bind( "mousedown", function() { 
		neibh_link_clicked=true;
	});
	$(document).bind( "mouseup", function() { 
		if (neibh_link_clicked){
			neibh_link_clicked=false;	
			return false;
		}
		else{
			neibh_link_clicked=false;
			return hide_neibh();
		}
		
	});
}

function show_neibh(neibhs) {
	$(neibhs).addClass('shwd');
	$(neibhs).show();

}

function hide_neibh() {
	var neibhs=$('.neibh_list_container');
	if ($(neibhs).hasClass('shwd')){
		$(neibhs).hide();
		$(neibhs).removeClass('shwd');
		neibh_link_clicked=false;
	}
}

function load_hotkeys() {
	//обработка горячих клавиш
	
	//переход на предыдущую страницу пейджинга
	$(document).bind('keydown', {combi:'ctrl+right', disableInInput: true}, function (evt){
		evt.stopPropagation();
		evt.preventDefault();
		evt.returnValue = false;
		
		if ($(".paging a.next").size() > 0){
			location.href = $(".paging a.next")[0].href
		}
		
		return false;
	});
	
	//переход на следующую страницу пейджинга
	$(document).bind('keydown', {combi:'ctrl+left', disableInInput: true}, function (evt){
		evt.stopPropagation();
		evt.preventDefault();
		evt.returnValue = false;
		if ($(".paging a.prev").size() > 0){
			location.href=$(".paging a.prev")[0].href
		}
		return false;
	});	
}

// сортировка предложений товара от поставщиков

function sort_offers() {
	var offers = [];
	var current_offer = { 'trader': null, 'data': [], 'min_price': null, 'min_offer': null };

	function add_current_offer () {
		if (current_offer['trader'] != null) {
			if (current_offer['data'].length> 1) {
				current_offer['data'] = current_offer['data'].sort(function (a,b) {
					return (a['price'] - b['price'])
				});
			}

			$('.price', current_offer['min_offer']).addClass('top');
			offers.push(current_offer);
		}
	}

	var offers_list= $('div.offers_list div.offers_list_container');
	offers_list.children().each(function () {
		if ($(this).hasClass('offer')) {
			var price = $('.price', $(this)).text().match(/\d+/)[0]*1;
			current_offer['data'].push(
				{ 'price': price, 'value': $(this)}
			);
			$('.price', $(this)).removeClass('top');
			if ((current_offer['min_price'] == null) || (price < current_offer['min_price'])) {
				current_offer['min_price'] = price;
				current_offer['min_offer'] = $(this);
			}
		} else if ($(this).hasClass('trader')) {
			if (current_offer['trader'] != $(this)) {
				add_current_offer();
				current_offer = { 'trader': $(this), 'data': [], 'min_price': null, 'min_offer': null };
			}
		} else if ($(this).hasClass('clear')) {
			$(this).remove();
		}
	});

	add_current_offer();

	// отсортировать по возрастанию цены
	offers = offers.sort(function (a,b) {
		return (a['min_price'] - b['min_price'])
	});

	for (var i in offers) {
		$('<div class="clear"></div>').appendTo(offers_list);
		offers[i]['trader'].appendTo(offers_list);
		for (var j in offers[i]['data']) {
			offers[i]['data'][j]['value'].appendTo(offers_list);
		}
	}
	$('<div class="clear"></div>').appendTo(offers_list);
}

function offers_sort_init() {
	var sort_offers_div = $('#sort_offers');

	sort_offers_div.mouseover(function (){
		$(this).css('text-decoration', 'underline');
	});

	sort_offers_div.mouseout(function (){
		$(this).css('text-decoration', 'none');
	});

	sort_offers_div.one('click', function() {
		$(this).unbind('mouseout');
		$(this).unbind('mouseover');
		$(this).css('text-decoration', 'none');
		$(this).addClass('disabled');
		sort_offers();		
	});
}
