var a_item = new Array();
var a_item_title = new Array();
var a_weight = new Array();
var a_sum_weight = new Array();
var a_price = new Array();
var a_opt_number = new Array();
var a_opt_price = new Array();
var a_actual_price = new Array();
var a_sum = new Array();
var a_cart_quant = new Array();
var shipping_sum, total_sum;
var f;

/*******************************************************/
function InitCalc(){
	var item_name, price, weight, opt_number, opt_price, cart_quant;
	f = document.buy;
	if(f){
		for(var i=0; i<f.elements.length; i++){
			var item_name = f.elements[i].name;
			if(item_name.search(/_n$/)>1){
//			убираем "_n" из имени
				item_name = TruncateName(item_name);
				el = document.getElementById(item_name + "_price");
				if(el) {
					a_item.push(item_name);
					item_title = el.attributes["item_title"] ? el.attributes["item_title"].value : "";
					a_item_title.push(item_title);
					price = el.attributes["price"] ? el.attributes["price"].value : "0";
					a_price.push(price);
					a_actual_price.push(price);
					weight = el.attributes["weight"] ? el.attributes["weight"].value : "0";
					a_weight.push(weight);
					opt_number = el.attributes["opt_number"] ? el.attributes["opt_number"].value : "";
					a_opt_number.push(opt_number);
					opt_price = el.attributes["opt_price"] ? el.attributes["opt_price"].value : "";
					a_opt_price.push(opt_price);
					cart_quant = f.elements[i].value;
					a_cart_quant.push(cart_quant);
					RedrawItem(item_name,cart_quant);
					
				}
			}
			var price = f.elements[i].attributes["price"] ? f.elements[i].attributes["price"].value : -1;
			var enabled_cond = f.elements[i].attributes["enabled_cond"] ? f.elements[i].attributes["enabled_cond"].value : "";
		}
	}
}
/*******************************************************/
// Обновление товара, вызванное изменением его количества
function Redraw(evt){
	evt = (evt) ? evt : ( (window.event) ? window.event : null );
	if(evt){
		var el=(evt.target) ? evt.target : ( (window.event.srcElement) ? window.event.srcElement : null );
		if(el){
			var new_cart_quant = Number(el.value) ? Math.floor(Number(el.value)) : "0" ;
			var name = el.name;
			name = TruncateName(name);
			RedrawItem(name, new_cart_quant);
		}
	}
	return true;
}
/*******************************************************/
// Обновление товара, вызванное изменением его количества
function RedrawItem(name, new_cart_quant){
	var i = GetI(name);
	if(i>=0){
		a_cart_quant[i] = new_cart_quant;
		if(a_opt_number[i] && new_cart_quant >= a_opt_number[i]){
			var price = a_opt_price[i];
		}
		else{
			var price = a_price[i];
		}
		a_actual_price[i] = price;
		WritePrice(name,price);
		a_sum[i] = price*new_cart_quant;
		WriteSum(name,a_sum[i]);
		a_sum_weight[i] = a_weight[i] * new_cart_quant;
		RecalcShipping();
		var goods_sum = 0;
		for(var j=0; j<a_sum.length; j++){
			goods_sum +=a_sum[j];
		}
//		total_sum = Number(goods_sum) + Number(shipping_sum);
		total_sum = Number(goods_sum);
		WriteTotalSum(total_sum);
		WriteOrderText();
	}
}
/*******************************************************/
// Записывает текст заказа в скрытую переменную order_text
function WriteOrderText(){
	var el = document.getElementById("order_text");
	if(el){
		el.value = f.second_name.value + " " + f.first_name.value + " " + f.third_name.value + "\n";
		el.value += "Эл. почта: " + f.email.value + "\n";
		el.value += "Тел.: " + f.home_phone.value + "\n";
		if(f.second_phone.value) el.value += "Доп. тел.: " + f.second_phone.value + "\n";
		el.value += "Адрес.: " + f.address.value + "\n";
		if(f.elements["text"].value) el.value += "\n" + f.elements["text"].value + "\n";
		
		el.value += "\n";
		for(var i=0; i<a_item.length; i++){
			if(a_cart_quant[i]>0){
				el.value += a_item_title[i] + "\n" + a_actual_price[i] + " руб. x " + a_cart_quant[i] + " шт. = " + a_sum[i] + " руб.\n---------------------------\n";
			}
		}
		el.value += "\nСтоимость почтовой доставки по России: " + shipping_sum + " руб.\n";
		el.value += "Итого: " + total_sum + " руб.\n";
	}
}
/*******************************************************/
// Возвращает порядковый номер (начиная с нуля) товара из массива a_item. Или пустую строку, если не нашел.
function GetI(name){
	if(name){
		var i=0;
		var result_i = "";
		while(i <= a_item.length){
			if(a_item[i] == name){
				result_i = i;
				i = a_item.length;
			}
			i++;
		}
		return result_i;
	}
}
/*******************************************************/
// Выдает цену (или оптовую цену) товара с именем name (к-ый равен, например "book")
function GetPrice(name){
	if(name){
		var price, opt_number, opt_price;
		
	}
}
/*******************************************************/
// Из строки "book_n" возвращает строку "book"
function TruncateName(name){
	if(name){
		return name.replace(/_n$/,"");
	}
}
/*******************************************************/
// Выводит на странице цену товара
function WritePrice(name,price){
	if(name){
		var el = document.getElementById(name + "_price");
		if(el){
			el.innerHTML = price;
		}
	}
}
/*******************************************************/
// Выводит на странице сумму для товара
function WriteSum(name, sum){
	if(name){
		var el = document.getElementById(name + "_sum");
		if(el){
			el.innerHTML = sum > 0 ? sum : "";
		}
	}
}
/*******************************************************/
// Рассчитывает стоимость почтовой доставки, сохраняет ее в глобальную переменную и выводит на экран
function RecalcShipping(){
	var total_weight = 0;
	for(var i=0; i<a_sum_weight.length; i++){total_weight += a_sum_weight[i]};
	if(total_weight>0){
		shipping_sum = Number(Math.ceil(total_weight/500)*24) + Number(8);
	}
	else{
		shipping_sum = 0;
	}
	WriteShipping(shipping_sum);
}
/*******************************************************/
// Выводит на странице стоимость почтовой доставки
function WriteShipping(sum){
	var el = document.getElementById("post_sum");
	if(el){
		sum = sum > 0 ? sum : 0;
		el.innerHTML = sum;
	}
}
/*******************************************************/
// Выводит на странице полную стоимость заказа
function WriteTotalSum(sum){
	var el = document.getElementById("total_sum");
	if(el){
		sum = sum > 0 ? sum : 0;
		el.innerHTML = sum;
	}
}
/*******************************************************/
// Проверяет, что необходимые параметры заполнены
function ValidateForm(){
	var a_check = ["second_name", "first_name", "email", "home_phone", "address"];
	var a_text = ["фамилию", "имя", "адрес электронной почты", "номер телефона", "почтовый адрес"];
	var warned_i = "-1";
	for(var i=0; i<a_check.length; i++){
		if(f.elements[a_check[i]].value == ""){
			SetWarned(f.elements[a_check[i]]);
			warned_i = i;
			i = a_check.length;
		}
	}
	for(var i=0; i<a_check.length; i++){
		if(i != warned_i){
			SetUnWarned(f.elements[a_check[i]]);
		}
	}
	f.elements["submit_button"].disabled = (warned_i >= 0) ? true : false;
	el = document.getElementById("submit_text");
	if(el) el.innerHTML = (warned_i >= 0) ? "<strong>Пожалуйста, введите " + a_text[warned_i] + "</strong>" : "";
	WriteOrderText();
	return true;
}
/*******************************************************/
// Выделяет незаполненный параметр
function SetWarned(el){
	el = el ? GetWarnedEl(el) : "";
	if(el){
//		el.style.border="solid 2px #FF9999";
		el.style.backgroundColor="#FFE0E0";
	}
}
/*******************************************************/
// Развыделяет параметр
function SetUnWarned(el){
	el = el ? GetWarnedEl(el) : "";
	if(el){
//		el.style.border="solid 2px #FFFFFF";
		el.style.backgroundColor="";
	}
}
/*******************************************************/
// Находит среди родителей элемент, который украшаем
function GetWarnedEl(el){
	if(el){
		while(el && !(el.tagName == "TD")){
			el = el.parentNode;
		}
		if(el.tagName == "TD"){
			return el;
		}
	}
}
