// © 2008 frst.ru ;)

var site_path = '/';
var direct = 0;
var calculatorData = new Array();

// swap()
var lastDiv = 'swap';

function swap(tree) {
	$('tree').value = tree;
	if (lastDiv == 'swap') {
		$('swap').style.display = 'inline';
		swapnodes($('swap'), $(tree));
	} else if (lastDiv != tree) {
		swapnodes($(lastDiv), $(tree));
		swapnodes($('swap'), $(lastDiv));
	}
	lastDiv = tree;
	return false;
}

function swapnodes(orig, to_swap) {
	var parent_node = orig.parentNode;
	var next_sibling = orig.nextSibling;
	to_swap.parentNode.replaceChild(orig, to_swap);
	parent_node.insertBefore(to_swap, next_sibling);
	return true;
}

// trim()
String.prototype.trim = function () {
	return this.replace(/^\s*/, "").replace(/\s*$/, "");
}

function edit(link) {
	swap(link.name.replace(/edit/, ''));

	$('cell_value').value = link.innerHTML.trim();
	if (link.innerHTML.match(/\?/)) $('cell_value').value = ''; // если значниение "?" - то обнулить
	$('cell_value').focus();

	return false;
}

function value_save() {
	var myAjax = new Ajax.Request(
		url = '/classes/ajax/updateCell.php', {
			method: 'get',
			parameters: 'cell=' + lastDiv + '&value=' + $F('cell_value')
		});

	$('edit'+lastDiv).innerHTML = $F('cell_value');
	if ($F('cell_value') == '') $('edit'+lastDiv).innerHTML = '<em>?</em>';
	swap('cancel');
}

function value_cancel() {
	swap('cancel');
}

var myGlobalHandlers = {
	onCreate: function() {
		Element.show('loading');
	},

	onComplete: function() {
		if(Ajax.activeRequestCount == 0){
			Element.hide('loading');
		}
	}
};

Ajax.Responders.register(myGlobalHandlers);

function addToPlate(id)
{
	var url = '/classes/ajax/addToPlate.php';
	var pars = "prod_id=" + id;
	
	var myAjax = new Ajax.Request(url, {method: 'post', parameters: pars, onComplete: operationPlateSuccess});
	
	if ($("calculatorTable"))
		addToCalculator(id);
	
	return false;
}

function addToCalculator(id)
{
	var url = '/classes/ajax/addToCalculator.php';
	var pars = "prod_id=" + id;
	
	var myAjax = new Ajax.Request(url, {method: 'post', parameters: pars, onComplete: addToCalculatorSuccess});
}

function addToCalculatorSuccess(a)
{
	window.location.reload(true);
//	var tr = document.createElement("tr");
//	tr.innerHTML = "ГРЕЕЕЕЧА";
//	var newe = $("calculatorTableBody").insertBefore(tr);
//	alert(newe);
}

function removeFromPlate(id)
{
	var url = '/classes/ajax/removeFromPlate.php';
	var pars = "prod_id=" + id;
	var myAjax = new Ajax.Request(url, {method: 'post', parameters: pars, onComplete: operationPlateSuccess});
	
	return false;
}

function cleanPlate()
{
	var url = '/classes/ajax/cleanPlate.php';
	var myAjax = new Ajax.Request(url, {method: 'post', onComplete: operationPlateSuccess});
	
	return false;
}

function operationPlateSuccess(a)
{
	$("calculator").innerHTML = a.responseText;
}

function add() {
	if ($F('name') == '') {
		alert('Укажите название продукта');
		$('name').focus();
		return false;
	}
	else
	{	
		var url = '/classes/ajax/add.php';
		var pars = "cur_tag_alias=" + $("cur_tag_alias").value + "&cur_tag_id=" + $("cur_tag_id").value + "&name=" + $("name").value;
		if ($("protein").value != '')
			pars += "&protein=" + $("protein").value;
		if ($("fat").value != '')
			pars += "&fat=" + $("fat").value; 
		if ($("carb").value != '')
			pars += "&carb=" + $("carb").value;
		if ($("calorie").value != '')
			pars += "&calorie=" + $("calorie").value;
		var myAjax = new Ajax.Request(url, {method: 'post', parameters: pars, onFailure: reportAddError, onComplete: addSuccess});
		
		return false;
	}
}

function addSuccess(a)
{
	$("name").value = '';
	$("protein").value = '';
	$("fat").value = '';
	$("carb").value = '';
	$("calorie").value = '';
	
	window.location.reload(true);
}

function reportAddError()
{
	alert('Добавить продукт не удалось =(');
}

function feedback_post() {
	if ($F('feedback') == '') {
		alert('Напишите что-нибудь');
		$('feedback').focus();
		return false;
	}
	else {
		return true;
	}
}


var Cookie = {
	set: function(name, value, daysToExpire) {
		var expire = '';
		if (daysToExpire != undefined) {
			var d = new Date();
			d.setTime(d.getTime() + (86400000 * parseFloat(daysToExpire)));
			expire = '; expires=' + d.toGMTString();
		}
		return (document.cookie = escape(name) + '=' + escape(value || '') + expire + "; path=/");
	},
	get: function(name) {
		var cookie = document.cookie.match(new RegExp('(^|;)\\s*' + escape(name) + '=([^;\\s]*)'));
		return (cookie ? unescape(cookie[2]) : null);
	},
	erase: function(name) {
		var cookie = Cookie.get(name) || true;
		Cookie.set(name, '', -1);
		return cookie;
	},
	accept: function() {
		if (typeof navigator.cookieEnabled == 'boolean') {
			return navigator.cookieEnabled;
		}
		Cookie.set('_test', '1');
		return (Cookie.erase('_test') === '1');
	}
};

function table_help_click() {
	Cookie.set('table_help', '1', 365);
	$('table_help').hide();
	return false;
}

function searchfocus(input, str) {
	Element.extend(input);
	
	if (input.value == str) {
		input.removeClassName('inactive');
		input.value = '';
	}
}

function searchblur(input, str) {

	if (input.value == '') {
		input.value = str;
		input.addClassName('inactive');
	}
}

function switchPage(page)
{
	$('main_menu').innerHTML = $('main_'+page).innerHTML;
	$('main_tags').innerHTML = $('tags_'+page).innerHTML;
}

function toggleLogin()
{
	if ($('loginWindow').style.display == "none")
		$('loginWindow').style.display = "block";
	else if ($('loginWindow').style.display == "block")
		$('loginWindow').style.display = "none";
}

function checkForm()
{
	flag = true;
	if (trim($('feedback').value) == "")
	{
		flag = false;
		alert('Напишите что-нибудь');
		$('feedback').focus();
	}

//	if (trim($('feedback_name').value) == "")
//		flag = false;

//	if (!isMail(trim($('feedback_email').value)))
//		flag = false;
	
	if (flag)
	{
		$('feedback_success').style.display = "block";
		
		pars = "text=" + $('feedback').value + "&name=" + $('feedback_name').value + "&email=" + $('feedback_email').value;
		var myAjax = new Ajax.Updater('sendsuccess', "/classes/ajax/feedback.php", {method: 'post', parameters: pars});
		
		$('feedback').value = "";
		$('feedback_name').value = "";
		$('feedback_email').value = "";
	}
	
	return false;
}

function trim(string) {return string.replace(/(^\s+)|(\s+$)/g, "");}

function isMail(string)
{
	var regex = new RegExp("^[_.0-9a-z-]+@([0-9a-z][0-9a-z_-]+.)+[a-z]{2,4}$"); 
	if (!regex.test(string)) 
		return false;
	return true;
}

function tableSort(col, sea)
{
	if (sea)
	{
		var pars = 'query=' + $('query').value + "&direct=" + direct + "&col=" + col;
		var myAjax = new Ajax.Updater('resctable_data', '/classes/ajax/sortTableSearch.php', {method: 'get', parameters: pars}); 

	}
	else
	{
		var pars = 'handle=' + location.pathname + "&direct=" + direct + "&col=" + col;
		var myAjax = new Ajax.Updater('ctable_data', '/classes/ajax/sortTable.php', {method: 'get', parameters: pars}); 

	}
	direct++;
}

function changeData(id, val)
{
	var tmp_w = "";
	for (var i=0;i<val.length;i++)
	{
		cp = val.charAt(i);
		if (cp=='0' || cp=='1' || cp=='2' || cp=='3' || cp=='4' || cp=='5' || cp=='6' || cp=='7' || cp=='8' || cp=='9')
			tmp_w += cp;
	}
	tmp_w = tmp_w.substr(0, 6);
	
	val = $("val_"+id+"_weight").value = tmp_w;

	if ($(id+"_protein").value)
		$("val_"+id+"_protein").innerHTML = Math.round($(id+"_protein").value / 100 * val);
	if ($(id+"_fat").value)
		$("val_"+id+"_fat").innerHTML = Math.round($(id+"_fat").value / 100 * val);
	if ($(id+"_carb").value)
		$("val_"+id+"_carb").innerHTML = Math.round($(id+"_carb").value / 100 * val);
	if ($(id+"_calorie").value)
		$("val_"+id+"_calorie").innerHTML = Math.round($(id+"_calorie").value / 100 * val);
	
	var url = '/classes/ajax/saveWeight.php';
	var pars = "prod_id=" + id + "&weight=" + tmp_w;
	var myAjax = new Ajax.Request(url, {method: 'post', parameters: pars});
	
	setCalculatorResult();
	
	return false;
}

function changeRowData(id, val)
{
	$("val_"+id+"_weight").value = val;

	if ($(id+"_protein").value)
		$("val_"+id+"_protein").innerHTML = Math.round($(id+"_protein").value / 100 * val);
	if ($(id+"_fat").value)
		$("val_"+id+"_fat").innerHTML = Math.round($(id+"_fat").value / 100 * val);
	if ($(id+"_carb").value)
		$("val_"+id+"_carb").innerHTML = Math.round($(id+"_carb").value / 100 * val);
	if ($(id+"_calorie").value)
		$("val_"+id+"_calorie").innerHTML = Math.round($(id+"_calorie").value / 100 * val);
	
	return false;
}

function setCalculatorResult()
{
	var res_protein = 0;
	var res_fat = 0;
	var res_carb = 0;
	var res_calorie = 0;
	var res_weight = 0;
	
	var i = 0;
	while (calculatorData[i])
	{
		if (parseInt($("val_"+calculatorData[i]+"_protein").innerHTML))
			res_protein += parseInt($("val_"+calculatorData[i]+"_protein").innerHTML);
			
		if (parseInt($("val_"+calculatorData[i]+"_fat").innerHTML))
			res_fat += parseInt($("val_"+calculatorData[i]+"_fat").innerHTML);
			
		if (parseInt($("val_"+calculatorData[i]+"_carb").innerHTML))
			res_carb += parseInt($("val_"+calculatorData[i]+"_carb").innerHTML);
			
		if (parseInt($("val_"+calculatorData[i]+"_calorie").innerHTML))
			res_calorie += parseInt($("val_"+calculatorData[i]+"_calorie").innerHTML);
			
		if (parseInt($("val_"+calculatorData[i]+"_weight").value))
			res_weight += parseInt($("val_"+calculatorData[i]+"_weight").value);
		
		i++;
	}
	
	$("res_protein").innerHTML = res_protein;
	$("res_fat").innerHTML = res_fat;
	$("res_carb").innerHTML = res_carb;
	$("res_calorie").innerHTML = res_calorie;
	$("res_weight").innerHTML = res_weight;
	
	return false;
}

function deleteFromCalculator(id)
{
	var url = '/classes/ajax/removeFromPlate.php';
	var pars = "prod_id=" + id;
	var myAjax = new Ajax.Request(url, {method: 'post', parameters: pars});

	for (var i=0;i<calculatorData.length;i++)
	{
		if (calculatorData[i]==id)
		{
			calculatorData[i] = "";
			break;
		}
	}
	
	var tmp_arr = new Array();
	for (var i=0;i<calculatorData.length;i++)
	{
		if (calculatorData[i]!="")
			tmp_arr.push(calculatorData[i]);
	}
	
	calculatorData = tmp_arr;
	$(id+"_row").style.display = "none";
	setCalculatorResult();
}

function togglePersonalDataEditor()
{
	if ($("personal_data_editor").style.display=="block")
		$("personal_data_editor").style.display="none";
	else
		$("personal_data_editor").style.display="block";
		
	return false;
}