jQuery(document).ready(function(){
	// Изменение элемента после попадания в папку сравнения
	jQuery('.compare_block tr.product').each(function(){
		change_element_onpage ( getNumber(jQuery(this).attr('id')));
	});

	// Подготовим метки
	jQuery('ul.marks_list li a').each(function(){
		innerElementWidth = jQuery(this).find('span.width').width() + 9;
		jQuery(this).width( innerElementWidth );

	});
	
	jQuery('.i_want_to_buy a').click(function(){
		if( jQuery(this).attr('mark_id') )
		{
			addHiddenElement( this ); // Добавляем в форму Hidden поле.
			// Если кликнули по ссылке НЕ из левого квадрата
			if( ! jQuery(this).parent().hasClass('inner_marks') )
			{
				toggleMarkSelection( this );
			}
			// ... если ссылка из цветного квадратика
			else
			{
				jQuery('#small_search_form_form').submit();
				jQuery('.i_want_to_buy a').unbind(); // чтобы шаловливые ручонки не кликали по 100 раз			
			}
			return false;
		}
	});
});

function toggleMarkSelection( markLinkElement )
{
	colorClasses = ['red', 'green', 'blue'];
	
	if( jQuery( markLinkElement ).hasClass('mark-selected') )
	{
		jQuery( markLinkElement ).removeClass('mark-selected');
		jQuery( markLinkElement ).removeClass( colorClasses.join(' '));
		
	}
	else
	{
		colorId = Math.floor(Math.random() * colorClasses.length ) ;
		colorClass = colorClasses[colorId];
		jQuery( markLinkElement ).addClass('mark-selected ' + colorClass );
	}
}

function addHiddenElement( markLinkElem )
{
	hiddenEl = jQuery( markLinkElem ).parent().find('input.hidden_mark_id')
	if( hiddenEl.size() )
	{
		hiddenEl.remove();
	}
	else
	{
		jQuery( markLinkElem ).parent().append('<input type="hidden" class="hidden_mark_id" name="marks[]" value="'+jQuery(markLinkElem).attr('mark_id')+'">');
	}
}


function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++){
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}


//Выцепляет элемент по классу
function getElementsByClassName(classname, node) {
	if( !node )
	{
		node = document.getElementsByTagName("body")[0];
	}
	var a = [];
	var re = new RegExp('\\b' + classname + '\\b');
	var els = node.getElementsByTagName("*");
	for(var i=0,j=els.length; i<j; i++)
	{
		if(re.test(els[i].className))
		{
			a.push(els[i]);
		}
	}
	return a;
}

function selectCOS( cos, dontSetProductCos )
{
	var elems = getElementsByClassName( cos );
	var selectListAcc = getElementsByClassName( 'select-cos' );
	
	//Селектим нужные значения во всех элементах
	if ( !dontSetProductCos === true ) {
		for(i=0; i<elems.length; i++) {
			elems[i].checked = true;
		}
	}
	
	if( selectListAcc.length )
	{	
		//Селектим нужные значения во всех аксессуарах
		for(i=0;i<selectListAcc.length;i++)
		{
			for(j=0;j<selectListAcc[i].options.length;j++)
			{
				if( selectListAcc[i].options[j].value == cos )
				{
					selectListAcc[i].selectedIndex = j;
					break;
				}
			}
		}
		
		//Отображаем цены аксессуаров, соотвующие выбранному классу
		var priceHolder = getElementsByClassName( 'accessory' );
		var cosId = 'price-'+selectListAcc[0].options[selectListAcc[0].selectedIndex].value;
		for(i=0;i<priceHolder.length;i++)
		{
			getElementsByClassName( 'product-price', priceHolder[i] )[0].innerHTML = getElementsByClassName( cosId, priceHolder[i] )[0].value;
		}
	}
	
	//Изменяем внешний вид выбранного блока с классом обслуживания
	currLi = getElementsByClassName('item-'+cos)[0];
	buttons = getElementsByClassName('button-big', getElementsByClassName('cos-list')[0]);
	// Для случая "остатков"нет кнопок с классом button-big, но есть ссылки с классом scraps-link
	if (buttons.length == 0) {
		buttons = getElementsByClassName('scraps-link', getElementsByClassName('cos-list')[0]);
		visibleElem = getElementsByClassName('scraps-link', currLi)[0];
	} 
	else {
		visibleElem = getElementsByClassName('button-big', currLi)[0];
	}
	for(i=0; i<buttons.length;i++)
	{
		buttons[i].style.visibility="hidden";
		getElementsByClassName('price', getElementsByClassName('cos-list')[0])[i].style.color="#323232";
		getElementsByClassName('cos-list')[0].getElementsByTagName('label')[i].style.color="#000";
	}
	visibleElem.style.visibility="visible";
	//getElementsByClassName('button-big', currLi)[0].style.visibility="visible";
	//getElementsByClassName('scraps-link', currLi)[0].style.visibility="visible";
	getElementsByClassName('price', currLi)[0].style.color="#e00";
	currLi.getElementsByTagName('label')[0].style.color="#1aa200";
	
	//Пересчитываем таблицу с товарами на странице товара
	jQuery('#pc_table span.table-price').css('display', 'none');
	jQuery('#pc_table span.cos-price-'+cos).css('display', 'inline');

}

//======================================================================
// add daily deal product to cart
function add_dailydeal_to_cart ( i_prod_id, credit_info ) {	
	add_prod_to_cart (i_prod_id, credit_info, null, true);
}

//======================================================================
//cos - class of service
function add_prod_to_cart( i_prod_id, credit_info, that, daily_deal_applied ){
	var currCos = document.getElementById('currentCos').value;
	var params = {
		product_id:	i_prod_id,
		cos_id:		0,
		count:		1,
		cur_url:			window.location.href
	};
	
	if (jQuery('.product-count').val() > 1) params.count = jQuery('.product-count').val();
	
	if ( jQuery('#isDealer').val() == 1 ){
		var pr_count = prompt("Введите количество товаров", "1");
		pr_count = parseInt(pr_count);
		if( isNaN( pr_count) )
			pr_count = 1;
		params.count = pr_count;
	}
	if ( !!that ) {
		params.cos_id = that.previousSibling.value;
	} else {
		var cos_elems = document.getElementsByName('cos');
		for( i = 0; i < cos_elems.length; i++ )
		{
			if( cos_elems[i].checked == true )
			{
				params.cos_id = cos_elems[i].value;
				break;
			}
		}
	}

	if ( params.cos_id > 0 )
	{
		var currCosPriority =  currCos > 0? getElementsByClassName( 'cp-' + currCos, document.getElementById('cosPriorities') )[0].value: 0xFF;
		var newCosPriority =  getElementsByClassName( 'cp-'+ params.cos_id, document.getElementById('cosPriorities') )[0].value;
		selectCOS(params.cos_id);
		document.getElementById('currentCos').value = params.cos_id;
	}
	createMessage("Минуточку...", "#4f4f4f");
	
	if( credit_info )
	{
		params.credit_program_id = credit_info[0];
		params.first_payment = credit_info[1];
		params.credit_period = credit_info[2];
		if( credit_info == "del_cred" )
		{
			params.subaction = "del_cred";
		}
	}

	if ( daily_deal_applied )
	{
		params.daily_deal_applied = 1;
	}

	ajaxSend(AJAX.add_prod_to_cart, params);
}


function erase_cart()
{
	ajaxSend(AJAX.erase_cart);
}

function reload_cart()
{
	jQuery.ajax( {
		type: 'POST',
		url: '/search/ajax/',
		data: {action: "get_cart_widget"},
		async: false,
		cache: false,
		success: function( r ) 
		{
			jQuery( '#cart_contents' ).replaceWith( r );
		}
	} );
}

/*Удаляет товар*/
function del_prod_from_cart(id)
{
	var params = new Object();
	params.product_id = Math.floor(getNumber(id));
	ajaxSend(AJAX.del_prod_from_cart, params);
	
	var delRow = jQuery('#'+id);
	delRow.remove();
	var prod_amount = jQuery('.product-amount input').val();
	
	if (prod_amount) {
		cal( jQuery('.product-amount input').get(0) ); 
		if( jQuery('#b_tab tr.product').length == 1 )
		{
			jQuery('#b_tab td.prod-del span').hide();
		}
	}
	/* uncheck the checkbox if is in accessories list */
	var regexp = /^pr_row_/gi ;
	if(regexp.test(id)){
		var checkboxEl = jQuery('#'+id.replace(/^pr_row_/i, 'acc_chbx_'));
		checkboxEl.attr('checked', false);
	}
}

handle_del_prod_from_cart = cart_event_handler;


/*Удаляет товар*/
function del_prod_from_compare(id)
{
	var params = new Object();
	params.product_id = Math.floor(getNumber(id));
	ajaxSend(AJAX.del_prod_from_compare, params);
}

handle_del_prod_from_compare = compare_event_handler;

/*выбирает из строки цену в формате *.* */
function getNumber(str){
	var re = /\d+(\.\d+)?/;
	var tArr = re.exec(str);
	var num = parseFloat(tArr[0]);
	return num;
}

function change_element_onpage(prod_id)
{
	prod_id = getNumber(prod_id);
	// Картинка - BriefView
	element = jQuery('table#res_table tr#product_'+prod_id+' td.compare_cell img' )
	if( jQuery(element).size() )
	{
		var src = jQuery(element).attr('src');
		if(src.substr(src.length - 8, src.length - 1) == 'plus.png')
		{
			jQuery(element).attr('src','/pic/buttons/minus.png');
		}
		else
		{
			jQuery(element).attr('src','/pic/buttons/plus.png');
		}
	}
	// Checkbox - ExtendedView
	else
	{
		element = jQuery( '#chk_compare_'+prod_id );
		if(jQuery(element).size())
		{
			element.attr('checked', !element.attr('checked') );
		}
	}
}

function toggle_prod_compare(i_prod_id, it)
{
	// если элемент не был передан (например в случае когда кликнули в блоке корзины или сравнения)
	// нужно выбрать элемент, который нужно изменить -  либо картинка с плюсом или галочкой, либо checkbox
		// если кликали по самому элементу
		if(it.src)
		{
			var src = it.src;
			if(src.substr(it.src.length - 8, it.src.length - 1) == 'plus.png')
			{
				add_prod_to_compare(i_prod_id);
				it.setAttribute('src','/pic/buttons/minus.png');
			}else{
				del_prod_from_compare(i_prod_id);
				it.setAttribute('src','/pic/buttons/plus.png');
			}
		}else{
			if(it.checked)
			{
				add_prod_to_compare(i_prod_id)
			}else{
				del_prod_from_compare(i_prod_id)
			}
		}
	}

function toggle_prod_buy( i_prod_id, elem )
{
	if( elem.checked )
	{
		add_prod_to_cart( i_prod_id, null, null, false );
	}
	else
	{
		del_prod_from_cart( i_prod_id );
	}
}



function add_prod_to_compare(i_prod_id){
	createMessage("Минуточку...", "#4f4f4f");
	var params = new Object();
	params.product_id = i_prod_id;
	ajaxSend(AJAX.add_prod_to_compare, params);
}

function reload_compare()
{
	jQuery.ajax( {
		type: 'POST',
		url: '/search/ajax/',
		data: {action: "get_compare_widget"},
		async: false,
		cache: false,
		success: function( r )
		{
			jQuery( '#compare_contents' ).replaceWith( r );
		}
	} );
}
function erase_compare(){
	createMessage("Минуточку...", "#4f4f4f");
	var params = new Object();
	ajaxSend(AJAX.erase_compare, params);
	jQuery('.compare_block tr.product').each(function(){
		var id = jQuery(this).attr('id');
		change_element_onpage(id);
	});
}

function erase_cart(){
	createMessage("Минуточку...", "#4f4f4f");
	
	var params = new Object();
	ajaxSend(AJAX.erase_cart, params);
	document.getElementById('currentCos').value = 0;
	if(document.getElementById('b_tab'))
  	{
		location.reload();
	}
	jQuery('#accessories input[type="checkbox"]').attr('checked', false);
}

/*-----------------РАСШИРЕНИЕ ОБРАБОТКИ ОТВЕТА СЕРВЕРА::КОРЗИНА------------------------*/

function restore_cart_count()
{
	display_cart_count( readCookie( 'crtc' ) );
}

function display_cart_count( b_kolvo )
{
	b_kolvo = parseInt( b_kolvo );
	b_kolvo = isNaN( b_kolvo ) ? 0 : b_kolvo;
	var d = document;
	if( 0 == b_kolvo ){
		if( d.getElementById('sum_span') && parseInt(d.getElementById('sum_span').innerHTML) == 0 ){
			window.location.reload(true);
		}
		if( d.getElementById('basket_cont') ) d.getElementById('basket_cont').style.color = '#4a4a4a';
		if( d.getElementById('basket_t') ){
			d.getElementById('basket_t').innerHTML = "Товаров <br>в&nbsp;корзине:";
		}
		if( d.getElementById('basket') ){
				d.getElementById('basket').innerHTML = b_kolvo;
				d.getElementById('basket').style.color = '#707070';
		}
	}
	else{
		if( d.getElementById('basket_cont') ) d.getElementById('basket_cont').style.color = "#313131";
		if( d.getElementById('basket_t') ){
			d.getElementById('basket_t').innerHTML = "Товаров <br>в&nbsp;корзине:";
		}
		if( d.getElementById('basket') ){
			d.getElementById('basket').innerHTML = b_kolvo;
			d.getElementById('basket').style.color = '#09c500';
		}
	}
}


// ответ по корзине
function cart_event_handler(result)
{
// кидаем месагу
	createMessage(result.message, ((result.common_code == 1) ? "#4f4f4f" : "red"), 2000);


	var b_kolvo = parseInt(result.cart_prod_count);
// рисуем товар в корзине
	display_cart_count( b_kolvo );

	var d = document;

// обрабатываем ответ на предмет галочки в корзине
	errCode = parseInt(result.extention_code);
	if(document.all.b_tab && (Math.floor(errCode/1000) == 3)){
		d.all["cr_chkbox_"+result.product_id].checked = ((errCode == 3010) ? true : false);
	}
	reload_cart()
}

handle_erase_cart = cart_event_handler;
handle_add_prod_to_cart = cart_event_handler;
errase_cart = cart_event_handler;
/*-----------------РАСШИРЕНИЕ ОБРАБОТКИ ОТВЕТА СЕРВЕРА::СРАВНЕНИЕ------------------------*/
// ответ по папке сравнения

function restore_compare_count()
{
	display_compare_count( readCookie( 'cc' ) );
}

function display_compare_count( comp_kolvo )
{
	comp_kolvo = parseInt( comp_kolvo );
	comp_kolvo = isNaN( comp_kolvo ) ? 0 : comp_kolvo;
	var d = document;
	if(comp_kolvo == 0){
		if( d.getElementById('compare_cont') ) d.getElementById('compare_cont').style.color = '#4a4a4a';
		if( d.getElementById('compare_t') ){
			d.getElementById('compare_t').innerHTML = "Товаров в папке для сравнения:";
		}
		if( d.getElementById('compare') ){
			d.getElementById('compare').innerHTML = comp_kolvo;
			d.getElementById('compare').style.color = '#707070';
		}
	}
	else{
		if(d.getElementById('compare_cont')) d.getElementById('compare_cont').style.color = "#ff6600";
		if(d.getElementById('compare_t')){
			d.getElementById('compare_t').innerHTML = "Товаров в папке для сравнения:";
		}
		if( d.getElementById('compare') ){
			d.getElementById('compare').innerHTML = comp_kolvo;
			d.getElementById('compare').style.color = '#ff6600';
		}
	}
}

function compare_event_handler(result){
	errCode = parseInt(result.extention_code);
	var d = document;
	switch(errCode){
		case 9010:{
			createMessage("Товар добавлен в папку сравнения!", "#4f4f4f", 2000);
			break;
		}
		case 9020:{
			createMessage("Товар удален из папки сравнения!", "#4f4f4f", 2000);
			reload_compare();
			
			break;
		}
		case 9030:{
			createMessage("Папка сравнения очищена!", "#4f4f4f", 2000);
			if(window.visual_erase_compare != null){
				visual_erase_compare();
			}
			break;
		}
		case 9120:{
			createMessage("Товар уже есть в папке сравнения!", "red", 2000);
			break;
		}
	}

	var comp_kolvo = parseInt(result.compare_prod_count);
	display_compare_count( comp_kolvo );
	reload_compare();
}

function change_region()
{
	var new_region = jQuery('#region option:selected').val();
	var new_region_name = jQuery('#region option:selected').text();
	jQuery.ajax({
		type: 'POST',
		url: '/region/ajax/',
		data: {region: new_region},
		success: function( jsons )
		{
			var data = jsons;
			var metro = data.metro;
			jQuery('select[name=metro]').empty();
			jQuery('select[name=metro]').append( '<option value="">История умалчивает</option>' );
			jQuery('select[name=metro]').append( metro );
			jQuery('input[name=city]').attr('inlinehint',data.region.city).val('').focus().blur();
			jQuery('table#delivery_list tbody').empty();
			var deliveries = data.delivery;
			var check_disable = jQuery('input#delivery_no').attr('checked') ? 'disabled="disabled"' : '';
			var rowhtml = '';
			for ( i=0; i<deliveries.length; i++ )
			{
				jQuery('table#delivery_list tbody').append( '<tr title="'+deliveries[i].description+'"></tr>');
				rowHtml = '<td><input type="radio" id="deltype_'+deliveries[i].delivery_id+'" value="'+deliveries[i].delivery_id+'" name="delivery_type_id" '+check_disable+'></td><td><label for="deltype_'+deliveries[i].delivery_id+'">'+deliveries[i].name;
				if( null != deliveries[i].price )
				{
					rowHtml += '&nbsp;('+deliveries[i].price+')';
				}
				rowHtml += '</label></td>';
				jQuery('table#delivery_list tbody tr:last').append( rowHtml );
			}
			jQuery('input:radio[name=delivery_type_id]:first').attr('checked','checked');
			jQuery('label[for=delivery_no] a').attr('href', data.region.url );
			jQuery('.phone_block').remove();
			jQuery('.right_column').append(data.region.phone_block);
		}
	});
	jQuery('.current-region-name').text( new_region_name );
}

handle_add_prod_to_compare = compare_event_handler;
handle_erase_compare = compare_event_handler;
handle_del_prod_from_compare = compare_event_handler;
