function toggleNode(nodeId)
{
	var node = document.getElementById(nodeId);

	if(node.style.display == 'none')
	{
		node.style.display = 'block';
	}
	else
	{
		node.style.display = 'none';
	}
}



var needRecalculate = false;
var isRecalculating = false;

function onRecalculated(result)
{
	document.getElementById("price").innerHTML = result;
	isRecalculating = false;
}

function onRecalculate()
{
	if(needRecalculate && !isRecalculating)
	{
		isRecalculating = true;
		needRecalculate = false;

		var options = {className: 'Alpacom_FountainsCalculator_AjaxServer', methodName: 'calculate', queue: 'calculator', callback: onRecalculated};
		HTML_AJAX.formSubmit('orderForm', 'price', options);
	}
}

function recalculate()
{
	needRecalculate = true;
}

window.setInterval(onRecalculate, 200);



function checkOrder()
{
	var orderButton = document.getElementById("orderButton");
	orderButton.style.color = "red";
	orderButton.value = "подождите...";
	orderButton.disabled = true;

	var options = {className: 'Alpacom_FountainsCalculator_AjaxServerChecker', methodName: 'calculate', queue: 'calculatorChecker'};
	HTML_AJAX.formSubmit('orderForm', 'price', options);

	return false;
}


function updateRows(tablesParams)
{
	for(var i = 0; i < tablesParams.length; i++)
	{
		updateRowsOfTable(
			tablesParams[i].tableId,
			tablesParams[i].quantityId,
			tablesParams[i].handler,
			tablesParams[i].prefix
		);
	}
}


function updateRowsOfTable(tableId, quantityId, handler, prefix)
{
	var dnTable = document.getElementById(tableId);

	var dnQuantity = document.getElementById(quantityId);

	var newQuantity = parseInt(dnQuantity.value);

	var oldQuantity = 0;

	var indexOfLastRow = -1;

	var rows = dnTable.rows;

	for(var i = 0; i < rows.length; i++)
	{
		var row = rows.item(i);

		if(row.id.match(new RegExp(prefix)))
		{
			oldQuantity++;
			indexOfLastRow = i;
		}
	}

	if(indexOfLastRow == -1)
	{
		indexOfLastRow = rows.length - 1;
	}

	var difference = newQuantity - oldQuantity;

	if(difference > 0)
	{
		for(var i = 0; i < difference; i++)
		{
			var row = dnTable.insertRow(indexOfLastRow + i + 1);
			row.id = "" + (indexOfLastRow + i + 1) + "_" + prefix;

			handler(row, prefix, oldQuantity + i);
		}
	}
	else
	{
		for(var i = 0; i < Math.abs(difference); i++)
		{
			dnTable.deleteRow(indexOfLastRow - Math.abs(difference) + 1);
		}

	}
}


function fillColorTableRow(row, prefix, index)
{
	prefix.match(/([1-9]\d+)/);
	var title = "Шоколадный фонтан " + RegExp.$1 + " см №" + (index + 1);

	var cell = row.insertCell(-1);
	cell.innerHTML = title;

	var cell = row.insertCell(-1);
	cell.align = "center";
	cell.innerHTML = "<input type=\"radio\" class=\"radio\" name=\"" + prefix + "Color[" + index + "]\" value=\"dark\" checked=\"checked\" onclick=\"recalculate();\">";

	var cell = row.insertCell(-1);
	cell.align = "center";
	cell.innerHTML = "<input type=\"radio\" class=\"radio\" name=\"" + prefix + "Color[" + index + "]\" value=\"milk\" onclick=\"recalculate();\">";

	var cell = row.insertCell(-1);
	cell.align = "center";
	cell.innerHTML = "<input type=\"radio\" class=\"radio\" name=\"" + prefix + "Color[" + index + "]\" value=\"white\" onclick=\"recalculate();\">";

	var cell = row.insertCell(-1);
	cell.align = "center";
	cell.innerHTML = "<input type=\"radio\" class=\"radio\" name=\"" + prefix + "Color[" + index + "]\" value=\"pink\" onclick=\"recalculate();\">";

	var cell = row.insertCell(-1);
	cell.align = "center";
	cell.innerHTML = "<input type=\"radio\" class=\"radio\" name=\"" + prefix + "Color[" + index + "]\" value=\"orange\" onclick=\"recalculate();\">";

	var cell = row.insertCell(-1);
	cell.align = "center";
	cell.innerHTML = "<input type=\"radio\" class=\"radio\" name=\"" + prefix+ "Color[" + index + "]\" value=\"yellow\" onclick=\"recalculate();\">";

	var cell = row.insertCell(-1);
	cell.align = "center";
	cell.innerHTML = "<input type=\"radio\" class=\"radio\" name=\"" + prefix + "Color[" + index + "]\" value=\"green\" onclick=\"recalculate();\">";
}


function onChangeFountainQuantity(hdnQuantity)
{
	var name = hdnQuantity.name.replace(/Quantity$/, "Presence");

	var hdnCheckbox = hdnQuantity.form.elements[name];

	var value = parseInt(hdnQuantity.value);
	if(isNaN(value) || value < 1)
	{
		hdnCheckbox.checked = false;
	}
	else
	{
		hdnCheckbox.checked = true;
	}
}


function onChangeFountainPresence(hdnCheckbox)
{
	var name = hdnCheckbox.name.replace(/Presence$/, "Quantity");

	var hdnQuantity = hdnCheckbox.form.elements[name];

	if(hdnCheckbox.checked)
	{
		var value = parseInt(hdnQuantity.value);
		if(isNaN(value) || value < 1)
		{
			hdnQuantity.value = 1;
		}
	}
	else
	{
		hdnQuantity.value = 0;
	}
	hdnQuantity.onkeyup();
}


function onChangeChocolateFountainQuantity(hdnInput)
{
	var hdnContent = document.getElementById("chocolate");

	var value = parseInt(hdnInput.value);
/*
	if(value > 0)
	{
		hdnContent.style.display = "block";
	}
	else
	{
		hdnContent.style.display = "none";
	}
*/

	var parameters = new Array(
		{
			'tableId': 'chocolateFountainColors',
			'quantityId': hdnInput.id,
			'handler': fillColorTableRow,
			'prefix': hdnInput.name.replace(/Quantity/, "")
		}
	);

	updateRows(parameters);

	onChangeFountainQuantity(hdnInput);
	updateDisplayStateOfColorTable();

	var hdnColorTable = document.getElementById("chocolateFountainColors");

	if(hdnColorTable.rows.length > 1)
	{
		hdnContent.style.display = "block";
	}
	else
	{
		hdnContent.style.display = "none";
	}

	if(!sliderFruitsInitialized)
	{
		sliderFruitsInit();
		sliderFruitsInitialized = true;
	}

	recalculate();
}


function onChangeChampagneFountainQuantity(hdnInput)
{
	var hdnContent = document.getElementById("champagne");

	var value = parseInt(hdnInput.value);

	if(value > 0)
	{
		hdnContent.style.display = "block";
	}
	else
	{
		hdnContent.style.display = "none";
	}

	onChangeFountainQuantity(hdnInput);

	recalculate();
}


function updateDisplayStateOfColorTable()
{
	var hdnColorTableDiv = document.getElementById("chocolateFountainColorsDiv");
	var hdnColorTable = document.getElementById("chocolateFountainColors");

	if(hdnColorTable.rows.length > 1)
	{
		hdnColorTableDiv.style.display = "block";
	}
	else
	{
		hdnColorTableDiv.style.display = "none";
	}
}

function updateDisplayStateOfRecipes()
{
	var hdnCheckbox = document.getElementById("champagneFountainDelivery");
	var hdnRecipes = document.getElementById("recipes");

	if(hdnCheckbox.checked)
	{
		hdnRecipes.style.display = "block";
	}
	else
	{
		hdnRecipes.style.display = "none";
	}

	if(!sliderRecipesInitialized)
	{
		sliderRecipesInit();
		sliderRecipesInitialized = true;
	}

}


function restorePost(values)
{return;
	var form = document.getElementById("orderForm");

	for(var name in values)
	{
		var value = values[name];

		if(typeof(form.elements[name]) != "undefined")
		{
			var element = form.elements[name];

			if(element.tagName.toLowerCase() == "input" && element.type == "checkbox")
			{
				if(value.toLowerCase() == "on")
				{
					element.checked = true
				}
			}
			else if(element.tagName.toLowerCase() == "input" && element.type == "text")
			{
				element.value = value;
			}
			else if(element.tagName.toLowerCase() == "select")
			{
				for(var i = 0; i < element.options.length; i++)
				{
					if(element.options.item(i).value == value)
					{
						element.options.item(i).selected = true;
					}
				}
			}
		}
	}

	onChangeFountainPresence(form.elements["chocolateFountain110Presence"]);
	onChangeFountainPresence(form.elements["chocolateFountain070Presence"]);
	onChangeFountainPresence(form.elements["champagneFountainPresence"]);

	for(var name in values)
	{
		var value = values[name];
		if(name.match(/Color$/))
		{
			for(var subname in value)
			{
				var subvalue = value[subname];
				var inputName = name + "[" + subname + "]";

				var elements = form.elements[inputName]
				for(var j = 0; j < elements.length; j++)
				{
					if(elements[j].value == subvalue)
					{
						elements[j].checked = true;
					}
				}
			}
		}
		else if(name.match(/Color$/))
		{
			for(var subname in value)
			{
				var subvalue = value[subname];
				var inputName = name + "[" + subname + "]";

				var elements = form.elements[inputName]
				for(var j = 0; j < elements.length; j++)
				{
					if(elements[j].value == subvalue)
					{
						elements[j].checked = true;
					}
				}
			}
		}
	}

}
