var backendURL = '/ajax/data.php';

function findCompare(findId) {	// полезная функция, помогающая найти поизицию товара в массиве, возвращаяя ее
	for (var i=0; i<compareList.length; i++)
	{
		if (compareList[i].id==findId)
			return i;
	}

	return false;
}

function findNote(findId) {	// полезная функция, помогающая найти поизицию товара в массиве, возвращаяя ее
	for (var i=0; i<notepadList.length; i++)
	{
		if (notepadList[i].id==findId)
			return i;
	}

	return false;
}


function addToCompare(param)
{
	// функция добавляет станцию к сравнению
	var sendData = 'id=' + param + '&action=add' + '&area=compare';
	var twoSlowSrav1 = '<div class="twoSlow_srav">Товаров для сравнения: <span class="twoSlow_srav_kol">';
	var twoSlowSrav2 = '</span></div>';
	var twoSlowSravLink = '<a href="/compare.php" class="twoSlow_srav_link">Перейти к сравнению</a>';

	function onAjaxError(xhr, status){
		var errinfo = { errcode: status }
		if (xhr.status != 200) {
			// может быть статус 200, а ошибка
			// из-за некорректного JSON
			errinfo.message = xhr.statusText;
		}
		else {
			errinfo.message = 'Некорректные данные с сервера';
		}
		onLoadError(errinfo);
	}
	function onLoadError(error) {
		var msg_err = "Ошибка " + error.errcode;
		if (error.message) msg_err = msg_err + ' :' + error.message;
		alert(msg_err);
	}
	function onAjaxSuccess(msg){

		if (parseInt(msg.status)!=1)
		{
			return false;	// если обнаружена ошибка, возвращаем false
		}
		else
		{
			var check = false;
			var cnt = false;
			var newarray = new Array();

			for (var i=0; i<compareList.length; i++)
			{
				if (compareList[i].id==msg.id)	// ищем в массиве сравнения добавляемый id
				{
					check = true;	// если есть - устанавливаем флаг
					if (compareList[i].cnt==0) compareList[i].cnt = 1; // если id был удален из сравнения, устанавливаем признак в 1
					else cnt = true; // если признак уже 1, устанавливаем флаг присутствия в массиве 
						
					break;
				}
			}

			if (!check) 	// если еще нет в массиве, добавляем в массив
			{
				var totalcount = 0;

				compareList.push({id:msg.id,cnt:1});

				for (var i=0; i<compareList.length; i++) {
					totalcount += compareList[i].cnt * 1;// пересчитываем количество элементов
				}
				
				var popCompare = '#popCompare_' + msg.id;
				var aCompare = document.getElementById('aCompare_' + msg.id);
				aCompare.className = 'rm';
				$(aCompare).html('убрать из сравнения');
				aCompare.onclick = function() {
					remove(msg.id);
					return false;
				}

//				$(popCompare).html('Товар добавлен к сравнению.');
				twoSlowSravLink = totalcount>0 ? twoSlowSravLink : '';
				$(popCompare).html('Товар добавлен к сравнению' + twoSlowSrav1 + totalcount + twoSlowSrav2 + twoSlowSravLink);
				$(popCompare).show('fast');
				$(popCompare).oneTime('5s', function () {
					$(popCompare).hide('fast');
				});
				
				
			}
			else	// если id есть в массиве
			{
				if (!cnt)	// но флаг присутствия не установлен
				{
					var totalcount = 0;

					for (var i=0; i<compareList.length; i++) {
						totalcount += compareList[i].cnt * 1; // пересчитываем количество элементов
					}
		
					var popCompare = '#popCompare_' + msg.id;
					var aCompare = document.getElementById('aCompare_' + msg.id);
					aCompare.className = 'rm';
					$(aCompare).html('убрать из сравнения');
					aCompare.onclick = function() {
						remove(msg.id);
						return false;
					}
	
					twoSlowSravLink = totalcount>0 ? twoSlowSravLink : '';
					$(popCompare).html('Товар добавлен к сравнению' + twoSlowSrav1 + totalcount + twoSlowSrav2 + twoSlowSravLink);
					$(popCompare).show('fast');
					$(popCompare).oneTime('3s', function () {
						$(popCompare).hide('fast');
					});

				}
				else {// если флаг присутствия установлен, то надо показать отказ
					var popCompare = '#popCompare_' + msg.id;
					$(popCompare).html('Товар уже есть в списке для сравнения');
					$(popCompare).show('fast');
					$(popCompare).oneTime('3s', function () {
						$(popCompare).hide('fast');
					});
				}
			}
			
			update_total(totalcount,'compare');	// обновляем блок количества
		}
	}

	$.ajax({	// посылаем ajax-request в data.php
	type: 'POST',
	url: backendURL,
	data: sendData,	// id в качестве параметра
	dataType: 'json',	// ждем json
	success: onAjaxSuccess//,
//	error: onAjaxError,
//	cache: false
	});
}

function remove(removeId)	// удаляем id из массива сравнения
{
	var twoSlowSrav1 = '<div class="twoSlow_srav">Товаров для сравнения: <span class="twoSlow_srav_kol">';
	var twoSlowSrav2 = '</span></div>';
	var twoSlowSravLink = '<a href="/compare.php" class="twoSlow_srav_link">Перейти к сравнению</a>';

	var pos = findCompare(removeId);	// находим позицию в массиве

	if (pos!==false)
	{
		if (compareList[pos].cnt==1)
		{
			$.post(backendURL, { id: removeId, action: 'remove', area: 'compare' });

			var totalcount = 0;
			compareList[pos].cnt = 0;	// сбрасываем счетчик

			for (var i=0; i<compareList.length; i++) {
				totalcount += compareList[i].cnt * 1;
			}

			var popCompare = '#popCompare_' + removeId;
			var aCompare = document.getElementById('aCompare_' + removeId);
			aCompare.className = '';
			$(aCompare).html('добавить к сравнению');
			aCompare.onclick = function() {
				addToCompare(removeId);
				return false;
			}

			twoSlowSravLink = totalcount>0 ? twoSlowSravLink : '';
			$(popCompare).html('Товар был удалён из списка сравнения' + twoSlowSrav1 + totalcount + twoSlowSrav2 + twoSlowSravLink);
//			$(popCompare).html('Товар был удалён из списка сравнения.');
			$(popCompare).show('fast');
			$(popCompare).oneTime('3s', function () {
				$(popCompare).hide('fast');
			});

			update_total(totalcount,'compare');	// обновляем счетчик количества
		}
		else return false; //alert(pos+' уже удален');
	}
	else alert(pos);
}


// notepad
function addToNotepad(param)
{
	// функция добавляет станцию к сравнению
	var sendData = 'id=' + param + '&action=add' + '&area=notepad';

	function onNotepadSuccess(msg){

		if (parseInt(msg.status)!=1)
		{
			return false;	// если обнаружена ошибка, возвращаем false
		}
		else
		{
			var check = false;
			var cnt = false;
			var newarray = new Array();

			for (var i=0; i<notepadList.length; i++)
			{
				if (notepadList[i].id==msg.id)	// ищем в массиве сравнения добавляемый id
				{
					check = true;	// если есть - устанавливаем флаг
					if (notepadList[i].cnt==0) notepadList[i].cnt = 1; // если id был удален из сравнения, устанавливаем признак в 1
					else cnt = true; // если признак уже 1, устанавливаем флаг присутствия в массиве 
						
					break;
				}
			}

			if (!check) 	// если еще нет в массиве, добавляем в массив
			{
				var totalcount = 0;

				notepadList.push({id:msg.id,cnt:1});
				
				var popNotepad = '#popNotepad_' + msg.id;
				var aNotepad = document.getElementById('aNotepad_' + msg.id);
				aNotepad.className = 'rm';
				$(aNotepad).html('вычеркнуть из блокнота');
				aNotepad.onclick = function() {
					removeNote(msg.id);
					return false;
				}

				$(popNotepad).html('Товар добавлен в блокнот');
				$(popNotepad).show('fast');
				$(popNotepad).oneTime('3s', function () {
					$(popNotepad).hide('fast');
				});
				
				
				for (var i=0; i<notepadList.length; i++) {
					totalcount += notepadList[i].cnt * 1;// пересчитываем количество элементов
				}
			}
			else	// если id есть в массиве
			{
				if (!cnt)	// но флаг присутствия не установлен
				{
					var totalcount = 0;
		
					var popNotepad = '#popNotepad_' + msg.id;
					var aNotepad = document.getElementById('aNotepad_' + msg.id);
					aNotepad.className = 'rm';
					$(aNotepad).html('вычеркнуть из блокнота');
					aNotepad.onclick = function() {
						removeNote(msg.id);
						return false;
					}
	
					$(popNotepad).html('Товар добавлен в блокнот');
					$(popNotepad).show('fast');
					$(popNotepad).oneTime('3s', function () {
						$(popNotepad).hide('fast');
					});

					for (var i=0; i<notepadList.length; i++) {
						totalcount += notepadList[i].cnt * 1; // пересчитываем количество элементов
					}
				}
				else {// если флаг присутствия установлен, то надо показать отказ
					var popNotepad = '#popNotepad_' + msg.id;
					$(popNotepad).html('Товар уже есть в блокноте');
					$(popNotepad).show('fast');
					$(popNotepad).oneTime('3s', function () {
						$(popNotepad).hide('fast');
					});
				}
			}
			
			update_total(totalcount,'notepad');	// обновляем блок количества
		}
	}

	$.ajax({	// посылаем ajax-request в data.php
	type: 'POST',
	url: backendURL,
	data: sendData,	// id в качестве параметра
	dataType: 'json',	// ждем json
	success: onNotepadSuccess
	});
}

// удаляем id из массива блокнота
function removeNote(removeId,page)
{
	if (typeof page=="undefined") page = 0;

	var pos = findNote(removeId);	// находим позицию в массиве

	if (pos!==false)
	{
		if (notepadList[pos].cnt==1)
		{
			$.post(backendURL, { id: removeId, action: 'remove', area: 'notepad' });

			var totalcount = 0;
			notepadList[pos].cnt = 0;	// сбрасываем счетчик

			for (var i=0; i<notepadList.length; i++) {
				totalcount += notepadList[i].cnt * 1;
			}

			if (page!=0)
			{
				$('#gen_' + removeId).fadeOut(500, function(){
					$('#gen_' + removeId).remove();
					if (totalcount==0)
					{
						$("#note_header_text").html('Занесите товары в блокнот для дальнейшего обзора.');
					}
				})
			}
			else
			{	
				var popNotepad = '#popNotepad_' + removeId;
				var aNotepad = document.getElementById('aNotepad_' + removeId);
				aNotepad.className = '';
				$(aNotepad).html('записать в блокнот');
				aNotepad.onclick = function() {
					addToNotepad(removeId);
					return false;
				}
				
				$(popNotepad).html('Товар был вычеркнут из блокнота');
				$(popNotepad).show('fast');
				$(popNotepad).oneTime('3s', function () {
					$(popNotepad).hide('fast');
				});
			}

			update_total(totalcount,'notepad');	// обновляем счетчик количества

		}
		else return false;
	}
	else alert(pos);
}

/*function change(id)	// вызывается когда мы изменям количество товаров в селекте
{
	var i=findpos(id);

	totalprice+=(parseInt($('#'+id+'_cnt').val())-purchased[i].cnt)*purchased[i].price;

	purchased[i].cnt=parseInt($('#'+id+'_cnt').val());
	update_total();
}
*/
function update_total(num,area) {
	if (area=='compare') {
		$('#srav_kolichestvo').html(num);
	}
	else if (area=='notepad') {
		var quantityText = 'записей';

		var str = 'n' + num;
		str_tail = str.charAt(str.length-1);
		if ((num>=0 && num<10) || num>=20) {
			if (str_tail=='1') {quantityText = 'запись';}
			else if (str_tail=='2' || str_tail=='3' || str_tail=='4') {quantityText = 'записи';}
		}
		$('#note_quantity').html(num);
		$('#note_quantity_text').html(quantityText);
	}
}

function dump(arr,level) {
    var dumped_text = "";
    if(!level) level = 0;
    //The padding given at the beginning of the line.
    var level_padding = "";
    for(var j=0;j<level+1;j++) level_padding += "    ";
    if(typeof(arr) == 'object') { //Array/Hashes/Objects
        for(var item in arr) {
            var value = arr[item];
            if(typeof(value) == 'object') { //If it is an array,
                dumped_text += level_padding + "’" + item + "’ …\n";
                dumped_text += dump(value,level+1);
            } else {
                dumped_text += level_padding + "’" + item + "’ => \"" + value + "\"\n";
            }
        }
    } else { //Stings/Chars/Numbers etc.
        dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
    }
    return dumped_text;
}
