﻿/* ////////////////////////////////////
       BasketModify.js
////////////////////////////////////*/

BasketModify = Class.create();

BasketModify.prototype = {
	
	initialize: function () {
		this.datas = new Array();
		$$("#basketContent .quantite div").each(this.addQuantity.bindAsEventListener(this));
		$$("#basketContent .itemBin").each(this.removeItemEvent.bindAsEventListener(this));
		
		
		// Event.observe($("basketEmpty"),"click",this.setEmpty.bind(this));
		
		
		this.numExtra = new NumberExtra();
	},
	
	/*
	addQuantity: function (o) {
		var tr = o.parentNode.parentNode;
		tr.id = this.datas.length+"addQuantityNode";
		var priceHtml = tr.getElementsByTagName("td")[5];
		this.datas.push({
			sending:true,
			ref:tr.getElementsByTagName("input")[0].value,
			unitPrice:tr.getElementsByTagName("input")[1].value,
			tva:tr.getElementsByTagName("input")[3].value,
			inputQuantity:tr.getElementsByTagName("input")[2],
			innerQuantity:tr.getElementsByTagName("td")[1],
			innerPrice:priceHtml,
			price:Number(tr.getElementsByTagName("input")[4].value)
		});
		new ProductQuantity(o,this.basketQuantityChange.bind(this));
	},
	
	basketQuantityChange: function (o) {
		var datas = this.datas[parseInt(o.parentNode.parentNode.parentNode.id)];
		//datas.innerQuantity.innerHTML = o.value;
		var n = datas.unitPrice*o.value;
		var price = Math.round((n + (n*(datas.tva/100)))*100)/100;
		datas.innerPrice.innerHTML = this.numExtra.getSpecialFormat(price.toString());
		datas.price = price;
		this.setTotal();
	},
	
	setTotal: function () {
		var total = 0;
		for (var i=0;i<this.datas.length;i++) { if (this.datas[i].sending) { total += this.datas[i].price; } }
		if ($("ecoparticipation")) {
			total += Number($("ecoparticipation").value);
		}
		$("basketTotal").innerHTML = this.numExtra.getSpecialFormat(total.toString());
	},
	*/
	
	removeItemEvent: function (o) {
		Event.observe(o,"click",this.removeItem.bindAsEventListener(this));
	},
	
	removeItem: function (o) {
		var tr = Event.element(o).parentNode.parentNode.parentNode.parentNode;
		this.datas[parseInt(tr.id)].sending = false;
		var nodes = tr.getElementsByTagName("td");
		for (var i=0;i<nodes.length;i++) { nodes[i].innerHTML = ''; }
		tr.style.display = "none";
		var trNodes = $$("#basketContent tr")
		var finding = false;
		for (var i=1;i<trNodes.length&&!finding;i++) {
			if (trNodes[i].style.display!="none") {
				trNodes[i].className = "first";
				finding = true;
			}
		}
		this.setTotal();
		if (!finding) { this.setEmpty(); }
	},
	
	setEmpty: function () {
		this.datasFinal = new Array();
		$("basketContent").style.display = $("basketBottom").style.display = $("basketEmpty").style.display = "none";
		if ($("livraisonChoix")) { $("livraisonChoix").style.display = $("livraisonChoixTitle").style.display = "none"; }
		if ($("lapeyreDirect")) { $("lapeyreDirect").style.display = $("showLapeyreDirect").style.display = "none"; }
		if ($("shopChange")) { $("shopChange").style.display = "none"; }		
		$("basketEmptyMsg").style.display = "block";
	},
	
	onSubmit: function () {
		
		var datasSend = new Array();
		for (var i=0;i<this.datas.length;i++) {
			if (this.datas[i].sending) {
				datasSend.push({
					ref:this.datas[i].ref,
					quantity:this.datas[i].innerQuantity.innerHTML
				});
			}
		}
		
		/* ////////////////////////////////////
			Ajax call save basket 
			var datasSend:Array = new Array();
			dataSend[i]:Object = {
				ref:Reference du produit
				quantity:Quantite
			};
		//////////////////////////////////// */
		
	},
	
	onDataSaved: function () {
		
		/* ////////////////////////////////////
			Ajax response save basket 
		//////////////////////////////////// */
		
		document.location = 'choix-magasin.htm';
		
	}

}


/* ////////////////////////////////////
       ProductModify.js
////////////////////////////////////*/

ProductModify = Class.create();

ProductModify.prototype = {
	
	initialize: function () {
		this.datas = new Array();
		this.currentTotal = 0;
		this.fraisTransport = 0;
		this.fraisEtage = 0;
		$$("#basketContent .quantite").each(this.addQuantity.bindAsEventListener(this));
		$$("#basketContent .itemBin").each(this.removeItemEvent.bindAsEventListener(this));
		this.numExtra = new NumberExtra();
		if ($("etage")) {
			Event.observe($("etage"),"change",this.getEtagePrice.bindAsEventListener(this));
		}
	},
	
	addQuantity: function (o) {
		var tr = o.parentNode;
		tr.id = this.datas.length+"addQuantityNode";
		this.datas.push({
			sending:true,
			ref:tr.getElementsByTagName("input")[0].value,
			unitPrice:tr.getElementsByTagName("input")[1].value,
			inputQuantity:tr.getElementsByTagName("td")[3].innerHTML
		});
		var d = this.datas[this.datas.length-1];
		d.price = d.unitPrice*d.inputQuantity;
	},
	
	basketQuantityChange: function (o) {
		var datas = this.datas[parseInt(o.parentNode.parentNode.parentNode.id)];
		datas.innerQuantity.innerHTML = o.value;
		var n = datas.unitPrice*o.value;
		var price = Math.round((n + (n*(datas.tva/100)))*100)/100;
		datas.innerPrice.innerHTML = this.numExtra.getSpecialFormat(price.toString());
		datas.price = price;
		this.setTotal();
	},
	
	setTotal: function () {
				
		var total = 0;
		for (var i=0;i<this.datas.length;i++) { if (this.datas[i].sending) { total += this.datas[i].price; } }		
		if ($("ssTotalPrix1")) {
			$("ssTotalPrix1").innerHTML = this.numExtra.getSpecialFormat(total.toString()) + " ?";
		}
		this.currentTotal = total;
		
		if ($("montantTransport")) {
			total += this.fraisTransport;
		}
		if ($("etage")) {
			total += this.fraisEtage;
		}
		
		if ($("bonAchat")) {
			total -= Number($("bonAchat").value);
		}
		
		if ($("ecoparticipation")) {
			total += Number($("ecoparticipation").value);
		}
		
		$("basketTotal").innerHTML = this.numExtra.getSpecialFormat(total.toString()) + " ?";
		
	},
	
	removeItemEvent: function (o) {
		Event.observe(o,"click",this.removeItem.bindAsEventListener(this));
	},
	
	removeItem: function (o) {
		var tr = Event.element(o).parentNode.parentNode.parentNode.parentNode;
		this.datas[parseInt(tr.id)].sending = false;
		var nodes = tr.getElementsByTagName("td");
		for (var i=0;i<nodes.length;i++) { nodes[i].innerHTML = ''; }
		tr.style.display = "none";
		var trNodes = $$("#basketContent tr")
		var finding = false;
		for (var i=1;i<trNodes.length&&!finding;i++) {
			if (trNodes[i].style.display!="none") {
				trNodes[i].className = "first";
				finding = true;
			}
		}
		this.setTotal();
		if (!finding) { this.setEmpty(); }		
		if ($("montantTransport")) { this.getFraisTransport(); }
	},
	
	setEmpty: function () {
		this.datasFinal = new Array();
		$("basketContent").style.display = $("basketBottom").style.display =  $("basketssTotal").style.display = "none";
		if ($("livraisonChoix")) { $("livraisonChoixTitle").style.display = $("livraisonChoix").style.display = "none"; }
		if ($("livraisonColissimo")) { $("livraisonColissimo").style.display = "none"; }
		$("basketEmptyMsg").style.display = "block";
	},
	
	getFraisTransport: function (total) {
		
		/* ////////////////////////////////////
			Ajax call get frais transport			
			toSend :
				this.currentTotal :Number
			onAjaxResponse :
				this.setFraisTransport(frais:Number);
		//////////////////////////////////// */
		
		this.setFraisTransport(1000);
		
	},
	
	setFraisTransport: function (frais) {
		$("transport").value = frais;
		$("montantTransport").innerHTML = this.numExtra.getSpecialFormat(frais.toString()) + " ?";
		this.fraisTransport = frais;
		this.setTotal();
	},
	
	getEtagePrice: function (o) {

		/* ////////////////////////////////////
			Ajax call get frais etages			
			toSend :
				Event.element(o).value :String
				this.currentTotal :Number
			onAjaxResponse :
				this.setFraisEtage(frais:Number);
		//////////////////////////////////// */
		
		this.setFraisEtage(100);
		
	},
	
	setFraisEtage: function (frais) {
		$("supplementsEtages").value = frais;
		$("ssTotalPrix3").innerHTML = this.numExtra.getSpecialFormat(frais.toString()) + " ?";
		this.fraisEtage = frais;
		this.setTotal();
	},
	
	onSubmit: function (type) {
		
		var datasSend = new Array();
		for (var i=0;i<this.datas.length;i++) {
			if (this.datas[i].sending) {
				datasSend.push({
					ref:this.datas[i].ref,
					quantity:this.datas[i].inputQuantity
				});
			}
		}

		/* ////////////////////////////////////
			Ajax call save basket 
			var datasSend:Array = new Array();
			dataSend[i]:Object = {
				ref:Reference du produit
				quantity:Quantit?
			};
		//////////////////////////////////// */
		
	},
	
	onDataSaved: function (url) {
		
		/* ////////////////////////////////////
			Ajax response save basket 
		//////////////////////////////////// */
		
		document.location = url;
		
	}

}
