if(document.event_controller==undefined){
	document.event_controller  = new event_controller;	
}
document.event_controller.onHtmlLoad(initOnDOMLoaded);
function initOnDOMLoaded() {
	if(document.shoping_card==undefined){
		document.shoping_card  = new shoping_card();
	}
	/*
	var order_check_list = document.getElementById("order_check_list");
	if(order_check_list!=null){
		document.shoping_card.render_check_list();
	}*/
	var card_transporter = document.getElementById('card_transporter');
	var type = document.getElementById("order_manner_of_payment");
	if((type!=null)&&(card_transporter!=null)){
		try{
			document.event_controller.addHandler(type,'change',function(){document.shoping_card.render_check_list()});
		}catch(err){
			alert(err.toString());	
		}	
	}
	var card_link = document.getElementById("shoping_card_link");
	try{
		document.event_controller.addHandler(card_link,'click',function(e){if(e!=null){var e = e || window.event;}document.shoping_card.open();if(e!=null){if (typeof e.preventDefault != 'undefined'){e.preventDefault();}}return!1;});
	}catch(err){
		alert(err.toString());	
	}
}

function shoping_card(){
	var goods = {};
	var goods_count = 0;
	var status=false;
	create_shoping_card();
	
	this.get_count = function(){
		return goods_count;
	}
	
	this.clear = function(){
		goods = {};
		var goods_count = 0;
		new Ajax.Request("lib/clear_card.php", {
								method: 'post',
								onSuccess:restore_result
		});
		//deleteCookie("amarilliscart");
	}
	
	this.add = function(article,name,count,weight,discount,price){
		if(article in goods){
			this.change_count(article,goods[article]["count"]+1);
			alert('Товар добавлен в корзину');
			return;	
		}
		goods[article] = {
			"article":article,
			"name":name,
			"count":count,
			"weight":weight,
			"discount":discount,
			"price":price
		}
		goods_count++;
		this.render_list();
		redraw_count_point();
		alert('Товар добавлен в корзину');
		return!1;
	}
	
	this.remove = function(article){
		if(!(article in goods)){
			alert('товар отсутствует в списке');
			return;	
		}
		delete goods[article];
		goods_count--;
		this.render_list();
		redraw_count_point();
		return!1;
	}
	
	this.change_count = function(article,count){
		count=Math.round(count);
		if(!(article in goods)){
			alert('товар отсутствует в списке');
			return;	
		}
		if(count<1){
			this.remove(article);
			return;
		}
		goods[article]["count"]=count;
		this.render_list();
		return!1;
	}
	
	this.change_weight = function(article,weight){
		if(!(article in goods)){
			alert('товар отсутствует в списке');
			return;	
		}
		weight=Math.round(weight);
		if(weight<50){
			if(goods[article]["count"]>1){
				weight=weight*goods[article]["count"];
				goods[article]["count"]=1;
				if(weight<50){
					alert("Минимальный вес 50г.");
					this.remove(article);
					return;					
				}
			}else{
				alert("Минимальный вес 50г.");
				this.remove(article);
				return;	
			}
		}
		goods[article]["weight"]=weight;
		this.render_list();
		return!1;
	}
	
	this.get_price = function(){
		var price=0;
		for (var i in goods) {
			price+=this.get_current_price(goods[i]['article']);
		}
		return price;
	}
	

	this.get_current_price=function(article){
		var point_price=goods[article]["price"];
		if(goods[article]["weight"]!=null){
			point_price=point_price*(goods[article]["weight"]/100);
		}
		point_price=point_price*goods[article]["count"];
		if(goods[article]["discount"]!=null){
			point_price-=point_price*goods[article]["discount"]/100;
		}
		return point_price;
	}
	
	this.open = function(){
		var card=document.getElementById("shoping_card");
		this.render_list();
		card.style.position="fixed";
		card.style.display="block";
		card.style.left="50%";
		card.style.top="10px";
		card.style.width="750px";
		card.style.margin="0 0 0 -375px";		
		if((BrowserDetect.browser=='Explorer')||(BrowserDetect.version<7)){
			card.style.position="absolute";
			card.style.left="50%";
			card.style.top="10px";
			card.style.width="750px";
			card.style.margin="0 0 0 -375px";
		}
		return!1;
	}

	this.close = function(){
		var card=document.getElementById("shoping_card");
		card.style.left="-20000px";		
		card.style.display="none";
		return!1;
	}
	
	this.order = function(){
		document.location.href="order.php";
	}
	
	this.render_check_list = function(){
		var check_list=document.getElementById("order_check_list");
		var old_list=document.getElementById("shoping_card_list_check");
		if(old_list!=null){
			old_list.parentNode.removeChild(old_list);
		}
		
		if(this.get_count()>0){
			var list = document.createElement("div");
			list.setAttribute("id","shoping_card_list_check");
			var k=1;
			for (var i in goods) {
				list.appendChild(render_check_line(goods[i]["article"],k));
				k++;
			}
		var add_price=0;
		//ll			
		var type=document.getElementById("order_manner_of_payment");
		if(type.value=="delivery"){
			
			var color=" darker";
			if(k/2==Math.round(k/2)){
				color=" lighter";
			}
			var line = document.createElement("div");
			line.className = "goods_line"+color;
			var menu = document.createElement("div");
			menu.className="goods_menu";
			var menu_container = document.createElement("div");
			menu_container.className="container";
			var name = document.createElement("div");
			name.className="goods_name";
			var name_container = document.createElement("div");
			name_container.className="container";
			var price = document.createElement("div");
			price.className="goods_price";
			var price_container = document.createElement("div");
			price_container.className="container";
			
			name_container.appendChild(document.createTextNode("Доставка курьером"));
			name.appendChild(name_container);

			menu_container.appendChild(document.createTextNode(k+"."));
			menu.appendChild(menu_container);
			
			var pr=this.get_price();
			if(pr<100){
				add_price=20;
				price_container.appendChild(document.createTextNode("20 грн."));
			}else if((pr>100)&&(pr<150)){
				add_price=15;
				price_container.appendChild(document.createTextNode("15 грн."));
			}else if((pr>150)&&(pr<250)){
				add_price=10;
				price_container.appendChild(document.createTextNode("10 грн."));
			}else if(pr>250){
				add_price=0;
				price_container.appendChild(document.createTextNode("Бесплатно"));
			}
			
			price.appendChild(price_container);
			
			line.appendChild(menu);		
			line.appendChild(name);
			line.appendChild(price);
			list.appendChild(line);
		}
		//ll end


			var card_transporter = document.getElementById('card_transporter');
			card_transporter.value = JSON.stringify(goods);
		
			var price = document.createElement("div");
			price.className="goods_full_price";
			price.setAttribute("id","full_price_text");
			var price_container = document.createElement("div");
			price_container.className="container";
			price_container.appendChild(document.createTextNode(parseFloat(this.get_price()+add_price).toFixed(2)+" грн."));
			price.appendChild(price_container);

			var line = document.createElement("div");
			line.className = "goods_line";
			line.appendChild(price);
			list.appendChild(line);
			check_list.appendChild(list);
			
			
		}	
	}
	
	function redraw_count_point(){
		var old_count = document.getElementById("goods_count_point");
		if(old_count!=null){
			old_count.parentNode.removeChild(old_count);
		}
		var card_link = document.getElementById("shoping_card_link");
		var count_text = document.createElement("span");
		count_text.setAttribute("id","goods_count_point");
		count_text.appendChild(document.createTextNode(" ("+goods_count+")"));
		card_link.appendChild(count_text);
	}
	
	this.render_list = function(){
		save();
		var card_transporter = document.getElementById('card_transporter');
		if(card_transporter!=null){
			this.render_check_list();
		}
						
		var old_list=document.getElementById("shoping_card_list");
		if(old_list!=null){
			old_list.parentNode.removeChild(old_list);
		}
		if(this.get_count()>0){
			var list = document.createElement("div");
			list.setAttribute("id","shoping_card_list");

			var mess = document.createElement("div");
			mess.className="goods_line card_message";
			mess.appendChild(document.createTextNode("Для пересчета суммы заказа, после изменения количества товара или его веса, необходимо убрать фокус с поля ввода. Например, переместив курсор мыши на красную область, на которой отображается итоговая цена покупки, и нажать на левую кнопку мышки."));
			list.appendChild(mess);

			var k=1;
			for (var i in goods) {
				list.appendChild(render_line(goods[i]["article"],k));
				k++;
			}
			
		
			var menu =  document.createElement("div");
			menu.className="goods_full_menu";
			var menu_container =  document.createElement("div");
			menu_container.className="container";
			var close_card =  document.createElement("a");
			close_card.className="close_shoping_card";
			close_card.appendChild(document.createTextNode("Закрыть корзину"));
			close_card.setAttribute("href","#");
			var order =  document.createElement("a");
			order.className="order_shoping_card";
			order.appendChild(document.createTextNode("Оформить заказ"));
			order.setAttribute("href","#");
			try{
				document.event_controller.addHandler(order,'click',function(e){if(e!=null){var e = e || window.event;}document.shoping_card.order();if(e!=null){if (typeof e.preventDefault != 'undefined'){e.preventDefault();}}return!1;});
				document.event_controller.addHandler(close_card,'click',function(e){if(e!=null){var e = e || window.event;}document.shoping_card.close();if(e!=null){if (typeof e.preventDefault != 'undefined'){e.preventDefault();}}return!1;});
			}catch(err){
				alert(err.toString());	
			}
			menu_container.appendChild(close_card);
			menu_container.appendChild(order);
			menu.appendChild(menu_container);
			var price = document.createElement("div");
			price.className="goods_full_price";
			price.setAttribute("id","full_price_text");
			var price_container = document.createElement("div");
			price_container.className="container";
			price_container.appendChild(document.createTextNode(parseFloat(this.get_price()).toFixed(2)+" грн."));
			price.appendChild(price_container);

			var line = document.createElement("div");
			line.className = "goods_line";
			line.appendChild(menu);
			line.appendChild(price);
			
			list.appendChild(line);
			
		}else{
			var list = document.createElement("div");
			list.setAttribute("id","shoping_card_list");
			
			var line = document.createElement("div");
			line.className = "goods_line lighter";
			var line_container = document.createElement("div");
			line_container.className="container";
			line_container.appendChild(document.createTextNode("Корзина пуста"));
			line.appendChild(line_container);
				
			var menu =  document.createElement("div");
			menu.className="goods_full_menu";
			var menu_container =  document.createElement("div");
			menu_container.className="container";
			var close_card =  document.createElement("a");
			close_card.className="close_shoping_card";
			close_card.appendChild(document.createTextNode("Закрыть корзину"));
			close_card.setAttribute("href","#");
			try{
				document.event_controller.addHandler(close_card,'click',function(e){if(e!=null){var e = e || window.event;}document.shoping_card.close();if(e!=null){if (typeof e.preventDefault != 'undefined'){e.preventDefault();}}return!1;});
			}catch(err){
				alert(err.toString());	
			}
			menu_container.appendChild(close_card);
			menu.appendChild(menu_container);
			
			var last_line = document.createElement("div");
			last_line.className = "goods_line";
			last_line.appendChild(menu);
			list.appendChild(line);
			list.appendChild(last_line);
		}

		var nest=document.getElementById("shoping_card_list_container");
		nest.appendChild(list);
		return!1;
	}
	
	function render_check_line(article,line_number){
		var color=" darker";
		if(line_number/2==Math.round(line_number/2)){
			color=" lighter";
		}
		var line = document.createElement("div");
		line.className = "goods_line"+color;
		var menu = document.createElement("div");
		menu.className="goods_menu";
		var menu_container = document.createElement("div");
		menu_container.className="container";
		var name = document.createElement("div");
		name.className="goods_name";
		var name_container = document.createElement("div");
		name_container.className="container";
		var brief = document.createElement("div");
		brief.className="goods_count_and_weight";
		var brief_container = document.createElement("div");
		brief_container.className="container";
		var price = document.createElement("div");
		price.className="goods_price";
		var price_container = document.createElement("div");
		price_container.className="container";
		
		name_container.appendChild(document.createTextNode(goods[article]["name"]));
		name.appendChild(name_container);

		brief_container.appendChild(document.createTextNode(goods[article]["count"]+" шт. "));
		if(goods[article]["weight"]!=null){

			brief_container.appendChild(document.createTextNode(" по "+goods[article]["weight"]+" г."));
		}
		brief.appendChild(brief_container);

		menu_container.appendChild(document.createTextNode(line_number+"."));
		menu.appendChild(menu_container);

		var point_price=goods[article]["price"];
		
		if(goods[article]["weight"]!=null){
			point_price=point_price*(goods[article]["weight"]/100);
		}		
		
		point_price=point_price*goods[article]["count"];
		
		if(goods[article]["discount"]!=null){
			point_price = new Number(point_price);
			var d_price= new Number (point_price-point_price*(goods[article]["discount"]/100));
			price_container.appendChild(document.createTextNode(d_price.toFixed(2)+" грн. ("+point_price.toFixed(2)+" грн. - "+goods[article]["discount"]+"%)"));
		}else{
			point_price = new Number(point_price);
			price_container.appendChild(document.createTextNode(point_price.toFixed(2)+" грн."));
		}
		price.appendChild(price_container);
		
		line.appendChild(menu);		
		line.appendChild(name);
		line.appendChild(brief);
		line.appendChild(price);
		return line;
	}

	function render_line(article,line_number){
		var color=" darker";
		if(line_number/2==Math.round(line_number/2)){
			color=" lighter";
		}
		var line = document.createElement("div");
		line.className = "goods_line"+color;
		var menu = document.createElement("div");
		menu.className="goods_menu";
		var menu_container = document.createElement("div");
		menu_container.className="container";
		var name = document.createElement("div");
		name.className="goods_name";
		var name_container = document.createElement("div");
		name_container.className="container";
		var brief = document.createElement("div");
		brief.className="goods_count_and_weight";
		var brief_container = document.createElement("div");
		brief_container.className="container";
		var price = document.createElement("div");
		price.className="goods_price";
		var price_container = document.createElement("div");
		price_container.className="container";
		
		var remove_goods = document.createElement("a");
		remove_goods.setAttribute("title","Отказаться от покупки этого товара");
		remove_goods.setAttribute("href","#");
		remove_goods.className="unlink_goods";
		try{
			remove_goods.article=article;
			document.event_controller.addHandler(remove_goods,'click',function(e){if(e!=null){var e = e || window.event;}document.shoping_card.remove(this.article);if(e!=null){if (typeof e.preventDefault != 'undefined'){e.preventDefault();}}return!1;}.bind(remove_goods));
		}catch(err){
			alert(err.toString());	
		}		
		menu_container.appendChild(remove_goods);
		menu.appendChild(menu_container);

		var shop_link = document.createElement("a");
		shop_link.setAttribute("href","full_info.php?goods_id="+goods[article]["article"]);
		shop_link.appendChild(document.createTextNode(goods[article]["name"]));
		name_container.appendChild(shop_link);
		name.appendChild(name_container);

		var count_input = document.createElement("input");
		count_input.setAttribute("type","text");
		count_input.value=goods[article]["count"];
		count_input.className="shoping_card_input";
		try{
			count_input.article=article;
			document.event_controller.addHandler(count_input,'blur',function(e){if(e!=null){var e = e || window.event;}document.shoping_card.change_count(this.article,this.value);if(e!=null){if (typeof e.preventDefault != 'undefined'){e.preventDefault();}}return!1;}.bind(count_input));
		}catch(err){
			alert(err.toString());	
		}		
		brief_container.appendChild(count_input);
		brief_container.appendChild(document.createTextNode(" шт. "));
		if(goods[article]["weight"]!=null){
			brief_container.appendChild(document.createTextNode(" по "));
			var weight_input = document.createElement("input");
			weight_input.setAttribute("type","text");
			weight_input.value=goods[article]["weight"];
			weight_input.className="shoping_card_input goods_weight";
			try{
				weight_input.article=article;
				document.event_controller.addHandler(weight_input,'blur',function(e){if(e!=null){var e = e || window.event;}document.shoping_card.change_weight(this.article,this.value);if(e!=null){if (typeof e.preventDefault != 'undefined'){e.preventDefault();}}return!1;}.bind(weight_input));
			}catch(err){
				alert(err.toString());	
			}		
			brief_container.appendChild(weight_input);
			brief_container.appendChild(document.createTextNode(" г."));
		}
		brief.appendChild(brief_container);
		
		var point_price=goods[article]["price"];
		
		if(goods[article]["weight"]!=null){
			point_price=point_price*(goods[article]["weight"]/100);
		}
		
		point_price=point_price*goods[article]["count"];
		
		if(goods[article]["discount"]!=null){
			point_price = new Number(point_price);
			var d_price= new Number(point_price-point_price*(goods[article]["discount"]/100));
			price_container.appendChild(document.createTextNode(d_price.toFixed(2)+" грн. ("+point_price.toFixed(2)+" грн. - "+goods[article]["discount"]+"%)"));
		}else{
			point_price = new Number(point_price);
			price_container.appendChild(document.createTextNode(point_price.toFixed(2)+" грн."));
		}
		price.appendChild(price_container);
		
		
		line.appendChild(menu);
		line.appendChild(name);
		line.appendChild(brief);
		line.appendChild(price);
		return line;
	}
	
	function restore(){
		/*
		var goods_value = getCookie("amarilliscart");
		if(goods_value ==""){
			redraw_count_point();
			return;
		}
		goods=JSON.parse(goods_value);
		*/
		new Ajax.Request("lib/load_card.php", {
								method: 'post',
								onSuccess:restore_result
		});
	}
	
	function restore_result(transport){
		var response = JSON.parse(transport.responseText);
		if(response['handshake']==true){
			if(response["abstract"]!=''){
				goods=JSON.parse(response["abstract"]);
				for (var i in goods) {
					goods_count++;	
				}
			}
			redraw_count_point();			
		}
		
		var order_check_list = document.getElementById("order_check_list");
		if(order_check_list!=null){
			document.shoping_card.render_check_list();
		}
	}
	
	function save(){
		/*setCookie("amarilliscart",JSON.stringify(goods));*/
		new Ajax.Request("lib/save_card.php", {
								method: 'post',
								postBody: 'card='+encodeURIComponent(JSON.stringify(goods))
							});
	}
	
	function create_shoping_card(){
		var old_card=document.getElementById("shop_card_wrapper");
		if(old_card!=null){
			old_card.parentNode.removeChild(old_card);
		}
		var card = document.createElement("div");
		var list = document.createElement("div");
		var nest = document.createElement("div");
		card.className="shop_card_wrapper";
		card.setAttribute("id","shoping_card");
		list.className="shop_card_list";
		nest.className="nest";
		nest.setAttribute("id","shoping_card_list_container");
		list.appendChild(nest);
		card.appendChild(list);
		var nest_block = document.getElementById('page_wrapper');
		if(nest_block!=null){
			nest_block.appendChild(card);
		}else{
			document.getElementsByTagName("body")[0].appendChild(card);
			document.getElementsByTagName("body")[0].style.width="100%";
			document.getElementsByTagName("body")[0].style.position="relative";
		}
		restore();
	}
}


var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();