/*
 createElement
 addEvent
 ajax
*/

//Загрузка страницы
addEvent(window,'load',function(){

	win = new modalWindow();
	win.init();

	imageWin = document.getElementById('image-window');
	imageImg = document.getElementById('image-image');

	//Наполняем окно содержимым
	win.create(function(block){
		imageWin.style.display='';
		imageWin.style.zIndex='9999';
		block.appendChild(imageWin);
	});

	//Отлавливаем загрузку изображения
	addEvent(imageImg,'load',win.show);

});

//Показать большое изображение
function showImage(img, mode){

	if(!mode) mode = 'merchandise';

	imageImg.src = '/upl/' + mode + '/'+img+'b.jpg';

}

//Спратать изображение
function hideImage(){

	win.hide()
}

//Проверка формы заказа
function reservationChecker(e){

	e = e || window.event;
	var el = e.target || e.srcElement;

	var text = '';

	//Список позиций в корзине
	var check = 0;
	var cartList = document.getElementById('cart-list').childNodes;
	for(var i = 0; i < cartList.length; i++){
		if(
			cartList[i].nodeType == 1 &&
			cartList[i].getAttribute('item-price')
		){
			check++
		}
	}

	if(check == 0)text += "Ваша корзина пуста.\n";
	if(!el.name.value.match(/^[a-zа-я\s]+$/i))text += "Укажите Ваше имя.\n";
	if(!el.lastname.value.match(/^[a-zа-я\s]+$/i))text += "Укажите Вашу фамилию.\n";
	if(!el.email.value.match(/^[a-z0-9]+[a-z0-9_.-]*@[a-z0-9]+[a-z0-9.-]*[a-z]{2,4}$/i))text += "Укажите адрес Вашей электронной почты.\n";
	if(!el.phone.value.match(/^[\d\+\-\.\s\)\(]+$/))text += "Укажите Ваш контактный телефон.\n";

	if(text){
		alert("Данный предоставлены не полностью. Ваш заказ не может быть выполнен.\n\n" + text)
		return false;
	}

}

//Добавить в корзину
function toCart(id){

	//Показываем корзину
	var cartElement = document.getElementById('shopping-cart');
	cartElement.style.display='';

	//Запрос на сервер
	var request = new ajax({
		async: true,
		method: 'get',
		action: '/?mod=merchandise&tocart='+id,
		headers: {
			'X_OUTPUT':'xml/block',
			'If-Modified-Since' : 'Sat, 1 Jan 2000 00:00:00 GMT'
			},
		timeout: 1000,
		onFailure: function(text){
			alert('Ошибка: '+text)
		},
		onSuccess: function(xmlhttp){

			//Разбор
			var doc = xmlhttp.responseXML;
			var responseItem = doc.documentElement.firstChild;
			var response = {
				'id' : responseItem.getAttribute('id'),
				'title' : responseItem.getAttribute('title'),
				'price' : responseItem.getAttribute('price'),
				'supply' : responseItem.getAttribute('supply')
			}

			//Список позиций в корзине
			cartList = document.getElementById('cart-list').childNodes;

			//Поиск одноимённой позиции в корзине
			var oldItem = findItem(cartList,response.id);

			var tmpl = newItem(
				response.id,
				response.title,
				response.price,
				response.supply
			);

			//Замена
			if(oldItem){
				cartList[0].parentNode.replaceChild(tmpl,oldItem);
			}
			//Добавление
			else{
				cartList[0].parentNode.insertBefore(tmpl,cartList[0]);
			}

			//Общёт
			var sum = sumItem(cartList);
			document.getElementById('cart-result').lastChild.nodeValue = sum;
		}
	});

	request.send();

}

//Удаление из корзины
function outCart(id){

	//Запрос на сервер
	var request = new ajax({
		async: true,
		method: 'get',
		action: '/?mod=merchandise&outcart='+id,
		headers: {
			'X_OUTPUT':'xml/block',
			'If-Modified-Since' : 'Sat, 1 Jan 2000 00:00:00 GMT'
			},
		timeout: 1000,
		onFailure: function(text){
			alert('Ошибка: '+text)
		},
		onSuccess: function(xmlhttp){

			//Список позиций в корзине
			cartList = document.getElementById('cart-list').childNodes;

			//Поиск одноимённой позиции в корзине
			var oldItem = findItem(cartList,id);

			//Количество данной позиции
			var supply = parseInt(oldItem.getAttribute('item-supply')) - 1;

			//Замена
			if(supply){
				var tmpl = newItem(
					id,
					oldItem.getAttribute('item-title'),
					oldItem.getAttribute('item-price'),
					supply
				);

				cartList[0].parentNode.replaceChild(tmpl,oldItem);
			}
			//Удаление
			else{
				cartList[0].parentNode.removeChild(oldItem);
			}

			//Общёт
			var sum = sumItem(cartList);

			if(parseInt(sum) == 0){ // Корзина пуста
				//Прячем корзину
				var cart=document.getElementById('shopping-cart');
				if(cart)cart.style.display='none'
			}else{
				document.getElementById('cart-result').lastChild.nodeValue = sum;
			}
		}
	});

	request.send();

}

//Общёт корзины
function sumItem(list){

	var sum = 0;

	for(var i=0; i < list.length; i++){
		if(
			list[i].nodeType == 1 &&
			list[i].getAttribute('item-price')
		){
			sum += parseFloat(list[i].getAttribute('item-price')) * parseFloat(list[i].getAttribute('item-supply'))
		}
	}

	return sum.toFixed(2)

}

//Создаём запись в корзину по шаблону
function newItem(id,title,price,supply){

	var tmpl=document.getElementById('cart-item-template').cloneNode(1);

	tmpl.removeAttribute('id');
	tmpl.setAttribute('item-id',id);
	tmpl.setAttribute('item-title',title);
	tmpl.setAttribute('item-price',price);
	tmpl.setAttribute('item-supply',supply);

	var a = tmpl.getElementsByTagName('a');

	if(supply > 1){
		a[0].firstChild.nodeValue = title + ' (' + supply + ') ';
	}else{
		a[0].firstChild.nodeValue = title + ' '
	}
	a[0].href = '/mod/merchandise/item/' + id;

	var p = tmpl.getElementsByTagName('p');

	var sum = price * supply
	p[0].firstChild.nodeValue = sum.toFixed(2);

	//var a = tmpl.getElementsByTagName('a');

	a[1].onclick = new Function('outCart("' + id + '");return false')

	return tmpl

}

//Поиск позиции в корзине
function findItem(list,id){

	for(var i=0; i < list.length; i++){
		if(
			list[i].nodeType == 1 &&
			list[i].getAttribute('item-id') == id
		){
			return list[i]
		}
	}

}

