var xmlHttp;
try
{
	// Firefox, Opera 8.0+, Safari
	xmlHttp=new XMLHttpRequest();
}
catch (e)
{
	// Internet Explorer
	try
	{
		xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch (e)
	{
		try
		{
			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch (e)
		{
			alert("Your browser does not support AJAX!");
		}
	}
}


function ajaxSend(url, func) {
	xmlHttp.open("GET",url,true);
	xmlHttp.onreadystatechange=func;
	xmlHttp.send(null);
}

function idToValue(name) {
	var element = document.getElementById(name);
	return element.value;
}

function selectToValue(name) {
	var element = document.getElementById(name);
	return element.options[element.selectedIndex].value;
}


function selectToText(name) {
	var element = document.getElementById(name);
	return element.options[element.selectedIndex].innerHTML;
}

function xmlLoadFromText(text) {
	var doc;
	// code for IE
	if (window.ActiveXObject)
	{
		var doc=new ActiveXObject("Microsoft.XMLDOM");
		doc.async="false";
		doc.loadXML(text);
	}
	// code for Mozilla, Firefox, Opera, etc.
	else
	{
		var parser=new DOMParser();
		var doc=parser.parseFromString(text,"text/xml");
	}

	// documentElement always represents the root node
	return doc;
}

function delElem(id) {
	if (confirm('Вы хотите удалить?')==true) {
		document.getElementById("statusDiv").innerHTML = 'удаление элемента';
		ajaxSend("index.php?act=ajax&subact=del&id="+id, ajaxDelElem);
	}
}

function xmlGetTableElement(elem, name) {
	return elem.getElementsByTagName(name)[0].childNodes[0].nodeValue;
}

function ajaxLoadTable() {
	if(xmlHttp.readyState==4)
	{
		var x = xmlLoadFromText(xmlHttp.responseText).documentElement;

		var good = x.getElementsByTagName("good");

		catClearTable();

		for (i=0;i<good.length;i++) {
			gid = xmlGetTableElement(good[i],'id');
			catAddRow(
			xmlGetTableElement(good[i],'cat'),
			xmlGetTableElement(good[i],'name'),
			xmlGetTableElement(good[i],'country'),
			xmlGetTableElement(good[i],'units'),
			'<a href="javascript:;" onclick="delElem('+gid+');">[x]</a>');
		}

		document.getElementById("statusDiv").innerHTML = '&nbsp;';
		catLoadCat();
	}
}

function ajaxLoadCat() {
	if(xmlHttp.readyState==4)
	{
		var x = xmlLoadFromText(xmlHttp.responseText).documentElement;

		var cat = x.getElementsByTagName("cat");
		var select = document.getElementById("catSelect");

		catClearSelect();

		for (i=0;i<cat.length;i++) {
			var opt=document.createElement('option');
			opt.text=xmlGetTableElement(cat[i],'title');
			opt.value=xmlGetTableElement(cat[i],'id');

			try {
				select.add(opt,null); // standards compliant
			}
			catch(ex)
			{
				select.add(opt); // IE only
			}
		}
		document.getElementById("statusDiv").innerHTML = '&nbsp;';
	}
}

function ajaxDelElem() {
	if(xmlHttp.readyState==4)
	{
		document.getElementById("statusDiv").innerHTML = '&nbsp;';
		catLoadTable();
	}
}

function ajaxAddRow() {
	if(xmlHttp.readyState==4)
	{
		var res = xmlHttp.responseText;


		document.getElementById("statusDiv").innerHTML = '&nbsp;';
		if ('ok'==res) {
			catLoadTable();
			catResetInput();
		}

		element = document.getElementById('catDiv');
		element.style.display='block';
	}
}


function ajaxAddCat() {
	if(xmlHttp.readyState==4)
	{
		var res = xmlHttp.responseText;

		document.getElementById("statusDiv").innerHTML = '&nbsp;';
		if ('ok'==res) {
			catLoadCat();
		}

	}
}

function catResetInput() {
	var sel=document.getElementById("catSelect");
	sel.selectedIndex = 0;

	document.getElementById("title").value="";
	document.getElementById("country").value="";
	document.getElementById("units").value="";
}

function catLoadTable() {
	document.getElementById("statusDiv").innerHTML = 'загрузка таблицы';

	ajaxSend("index.php?act=ajax&subact=catload", ajaxLoadTable);
}

function catLoadCat() {
	document.getElementById("statusDiv").innerHTML = 'загрузка списка';

	ajaxSend("index.php?act=ajax&subact=cats", ajaxLoadCat);
}

function catLoad() {
	catLoadTable();
}

function catAdd() {
	document.getElementById("statusDiv").innerHTML = 'добавление элемента';
	var sel=document.getElementById("catSelect");
	var category = sel.options[sel.selectedIndex].value;

	if (document.getElementById("title").value.length<1) {
		alert('Введите название!');
		return false;
	}
	if (document.getElementById("country").value.length<1) {
		alert('Введите страну!');
		return false;
	}
	if (document.getElementById("units").value.length<1) {
		alert('Введите единцы измерения!');
		return false;
	}

	var title = idToValue('title');
	var country = idToValue('country');
	var units = idToValue('units');

	element = document.getElementById('catDiv');
	element.style.display='none';


	ajaxSend("index.php?act=ajax&subact=catadd&title="+title+"&country="+country+"&units="+units+"&category="+category,ajaxAddRow);
}

function catClearTable() {
	var table = document.getElementById('cat_table');
	var rows = table.rows.length;

	for(i=1;i<rows;i++) {
		table.deleteRow(1);
	}
}

function catClearSelect() {
	var select = document.getElementById('catSelect');
	var length = select.length;

	for(i=0;i<length;i++) {
		select.remove(0);
	}
}

function catAddRow(aCat, aName, aCountry, aUnits, aAct) {
	var row=document.getElementById('cat_table').insertRow(-1);
	var cat=row.insertCell(0);
	var name=row.insertCell(1);
	var country=row.insertCell(2);
	var units=row.insertCell(3);
	var action=row.insertCell(4);

	cat.innerHTML=aCat;
	name.innerHTML=aName;
	country.innerHTML=aCountry;
	units.innerHTML=aUnits;
	action.innerHTML=aAct;
}

function addCat() {
	var cat = prompt('Введите категорию');

	if (cat!=null && cat!="") {
		document.getElementById("statusDiv").innerHTML = 'добавление элемента';
		ajaxSend("index.php?act=ajax&subact=addcat&title="+cat,ajaxAddCat);
	}

}

function delCat() {
	var element = document.getElementById('catSelect');
	var id = element.options[element.selectedIndex].value;
	if (confirm('Удалить категорию?')) {
		document.getElementById("statusDiv").innerHTML = 'удаление элемента';
		ajaxSend("index.php?act=ajax&subact=delcat&id="+id,ajaxAddCat);
	}

}


///
// Order


function orderCountFocus() {
	element = document.getElementById('orderCount');
	if ('количество'==element.value) {
		element.value = '';
		element.style.fontStyle = 'normal';
		element.style.color = 'black';;
	}
}
function orderCountBlur() {
	element = document.getElementById('orderCount');
	if (''==element.value) {
		element.value = 'количество';
		element.style.fontStyle = 'italic';
		element.style.color = '#ccc';
	}
}


function orderLoad() {
	orderLoadCats();
}


function orderLoadCats() {
	document.getElementById("statusDiv").innerHTML = 'загрузка категорий';

	ajaxSend("order.php?act=ajax&subact=cats",ajaxOrderLoadCats);
}


function ajaxOrderLoadCats() {
	if(xmlHttp.readyState==4)
	{
		var x = xmlLoadFromText(xmlHttp.responseText).documentElement;

		var cat = x.getElementsByTagName("cat");
		var select = document.getElementById("orderCatSelect");


		orderClearSelect();


		for (i=0;i<cat.length;i++) {

			var opt=document.createElement('option');

			opt.text=xmlGetTableElement(cat[i],'title');
			opt.value=xmlGetTableElement(cat[i],'id');
			try {
				select.add(opt,null); // standards compliant
			}
			catch(ex)
			{
				select.add(opt); // IE only
			}
		}
		document.getElementById("statusDiv").innerHTML = '&nbsp;';
	}
}


function orderClearSelect() {
	var select = document.getElementById('orderCatSelect');
	var length = select.length;

	for(i=1;i<length;i++) {
		select.remove(1);
	}
}

function orderCatSelectChange() {
	var select = document.getElementById('orderCatSelect');
	var id = select.options[select.selectedIndex].value;

	if (id==0) {
		document.getElementById("statusDiv").innerHTML = '';
		orderClearName();
	} else {
		document.getElementById("statusDiv").innerHTML = 'загрузка наименований';
		orderClearName();

		ajaxSend("order.php?act=ajax&subact=names&id="+id,ajaxOrderLoadNames);
	}
}

function ajaxOrderLoadNames() {
	if(xmlHttp.readyState==4)
	{
		var x = xmlLoadFromText(xmlHttp.responseText).documentElement;

		var cat = x.getElementsByTagName("good");
		var select = document.getElementById("orderNameSelect");


		for (i=0;i<cat.length;i++) {
			var opt=document.createElement('option');
			opt.text=xmlGetTableElement(cat[i],'title');
			opt.value=xmlGetTableElement(cat[i],'id');

			try {
				select.add(opt,null); // standards compliant
			}
			catch(ex)
			{
				select.add(opt); // IE only
			}
		}
		document.getElementById("statusDiv").innerHTML = '&nbsp;';
	}
}

function orderClearName() {
	var select = document.getElementById('orderNameSelect');
	var length = select.length;


	for(i=1;i<length;i++) {
		select.remove(1);
	}
}

function orderAdd() {
	var category = selectToText('orderCatSelect');
	var cat_id = selectToValue('orderCatSelect');
	var name = selectToText('orderNameSelect');
	var name_id = selectToValue('orderNameSelect');
	var count = idToValue('orderCount');

	if (0==name_id) {
		alert('Выберите товар!');
		return false;
	}

	if ((count.lenght<0)||('количество'==count)) {
		alert('Введите количество!');
		return false;
	}

	var table = document.getElementById('orderTable');
	var row = table.insertRow(-1);
	row.insertCell(-1).innerHTML=category;
	row.insertCell(-1).innerHTML=name;
	row.insertCell(-1).innerHTML=count;

	orderResetForm();
}

function orderResetForm() {
	var select = document.getElementById('orderCatSelect');
	select.selectedIndex = 0;
	var name = document.getElementById('orderNameSelect');
	name.selectedIndex = 0;
	var count = document.getElementById('orderCount');
	count.value = '';
	orderCountBlur();
}

function orderSend() {
	var table = document.getElementById('orderTable');
	if (!table.rows[1]) {
		alert('Добавьте хотя бы один товар!');
		return false;
	}
	document.getElementById("statusDiv").innerHTML = 'Отправка письма';
	
	text=table.innerHTML;

	text = encodeURI(text);
	text = escape(text);
	ajaxSend("order.php?act=ajax&subact=order&text="+text,ajaxOrderSend);
	return true;
}


function ajaxOrderSend() {
	if(xmlHttp.readyState==4)
	{
		orderClearTable();
		orderResetForm();
		
		document.getElementById("statusDiv").innerHTML = '&nbsp;';
		
		alert('Ваш заказ успешно отправлен');
	}
}

function orderClearTable() {
	var table = document.getElementById('orderTable');

	while (table.rows[1]) {
		table.deleteRow(1);
	}
}
