var Cart = function(ckname,type_utente){
	/*
		0 = no log 
		1 = azienda
		2 = privato		
	*/
	this.cookiename = ckname;
	this.carts = new Array(); 
	this.type_utente = type_utente; 
	this.ajax_page ="Sec/JavaScript/Ajax/ajaxdb-prodotto.php";	

 };
 
Cart.prototype = {	
	
init : function(){
		if (!document.getElementById || !document.createTextNode) {return;} 
			// Verifica il supporto per il DOM
		var divCart = $("cart");
		this.getCookie();
		for (var i = 0; i < this.carts.length; i++){
			this.intRowTable($("pr"+this.carts[i]),this.carts[i]); 
		}
		var addcartlink = $$("div.pr_add_link"); 
		for (var j = 0; j < addcartlink.length; j++){
			var anchor = addcartlink[j].getChildren('a')[0]; 
			anchor.set('href',"#");	
			anchor.set('class',addcartlink[j].get('id'));	
			anchor.getChildren('img')[0].addEvent("click", function(evt){
            				this.add(evt); 
        			}.bind(this));	
		}
		$("test").innerHTML = ""; 
	},
	addInfo: function(r){
		//$("test").innerHTML += "<br>" + r; 
	},
	intRowTable: function(row,id){
			var quantitaE = row.getChildren("#pr"+id+"_quantita")[0]; 
			var quantita = quantitaE.innerHTML;
			quantitaE.innerHTML=""; 
			var input =  new Element("input", {
    				'value': quantita,
    				'type': 'text',
				'id': 'pr'+id+"_quantita_input",
				'size': "2",
    				'events': {
        				'keyup': function(evt){
            					this.getChange(evt); 
        				}.bind(this)
				    }
				});
			input.inject(quantitaE);
			var eliminaE = $("pr"+id+"_elimina").getChildren('a')[0]; 
			eliminaE.set('href',"#");
			eliminaE.set('id',"pr"+id+"_elimina_anchor");
			eliminaE.addEvent("click", function(evt){
            					this.del(evt); 
        				}.bind(this));
	},
	addEvent : function(obj, type, fn) {
		if (obj.addEventListener)
			obj.addEventListener(type, fn, false);
		else if (obj.attachEvent) {
			obj["e"+type+fn] = fn;
			obj[type+fn] = function() {obj["e"+type+fn](window.event);}
			obj.attachEvent("on"+type, obj[type+fn]);
		}
	},
	getChange : function (event) {
		event = new Event(event); 
		var target = event.target; 
		var newq =   target.get("value");
		if(!isNaN(newq)){ 
			var pr =   target.get("id").replace("pr",""); 
			pr =   pr.replace("_quantita_input",""); 
			this.save(pr,newq);
		}
	},
	save : function(id_p,q){
		var prezzo = this.getPrezzoUnitario(id_p); 
		var tot = prezzo*q; 
		this.setPrezzoTotale(id_p,tot);
		CookieJs.setCookie(this.cookiename+"["+id_p+"]",q,30);
		this.calcolaTotale();
	},
	calcolaTotale : function(){
		this.getCookie();
		var tot = 0; 
		for (var i = 0; i < this.carts.length; i++){
			var subtot = parseFloat(this.getPrezzoTotale(this.carts[i])); 
			this.addInfo("subtot " +subtot + "->"+this.carts[i]);
			tot = tot+ subtot;
		}
		$("cart_tot").innerHTML = tot; 
		if(tot>0){
			$("cart_info").set("class","");		
		}else{
			$("cart_info").set("class","hidden");				
		}
	},
	del : function(event){
		
		event = new Event(event); 
		var target = event.target; 
		var id_p =   target.get("id").replace("pr",""); 
		id_p =   id_p.replace("_elimina_anchor",""); 
		this.addInfo("del " +id_p);
		if($("pr"+id_p)!=null){
			$("pr"+id_p).dispose();
			CookieJs.setCookie(this.cookiename+"["+id_p+"]",0,-30);
		}
		this.calcolaTotale();
		
	},
	add : function(event){
		event = new Event(event); 
		var target = event.target.getParent(); 
		var id_p = target.get("class").replace("pr",""); 
		id_p =   id_p.replace("_add_link",""); 
		var quantita_vecchia = this.getQuatita(id_p)
		
		if(quantita_vecchia==null){
			this.drawRowProdotto(id_p);	
			this.calcolaTotale();
			return; 
		}
		this.setQuatita(id_p,quantita_vecchia+1);
		this.save(id_p,quantita_vecchia+1);
	},
	getQuatita : function (id_p){
		var elem = $("pr"+id_p+"_quantita_input"); 
		if(elem==null) {
			
			return null;
		} 
		this.addInfo("t" +elem.innerHTML);
		return parseFloat(elem.get('value'));
	},
	getPrezzoUnitario : function (id_p){
		var elem = $("pr"+id_p+"_prezzo"); 
		return elem.innerHTML.replace("€","");
	},	
	getPrezzoTotale : function (id_p){
		var elem = $("pr"+id_p+"_tot"); 
		return elem.innerHTML ;	
	},
	setPrezzoTotale : function (id_p,tot){
		var elem = $("pr"+id_p+"_tot"); 
		tot = roundTo(tot , 2);
		elem.innerHTML = tot + "€";	
	},
	setQuatita : function (id_p,tot){
		var elem = $("pr"+id_p+"_quantita_input"); 
		elem.set('value',tot);	
	},	

	getCookie : function () {
		this.carts = new Array(); 
	  // genera un array di coppie "Nome = Valore"
	  // NOTA: i cookies sono separati da ';'	
	  var asCookies = document.cookie.split("; ");
	  // ciclo su tutti i cookies
	  for (var iCnt = 0; iCnt < asCookies.length; iCnt++){
	    // leggo singolo cookie "Nome = Valore"
	    var asCookie = asCookies[iCnt].split("=");
	    if (asCookie[0].indexOf(this.cookiename)==0) { 
		var pr =   asCookie[0].replace(this.cookiename,""); 
		pr =   pr.replace("[",""); 
		pr =   pr.replace("]",""); 
		this.carts.push(pr);
		//return (unescape(asCookie[1]));
	   	}
  		}
	},

	drawRowProdotto : function (id){
		this.addInfo("drawRowProdotto = " + id);
		var ajax = new Ajax();
		ajax.setFunction ( function() {
			if(ajax._connection && ajax._connection.readyState==4){	
				//alert(ajax._connection.responseText);
				if(ajax._connection.responseXML){
					var rows = ajax._connection.responseXML.getElementsByTagName('row');	
					//alert(ajax._connection.responseText); 
					var figli = ""; 
					if(rows.length>0){
						for (i = 0; i < rows.length; i++){
							var j = i ; 
							var row = rows[i];
							var titolo = this.getXmlValue(row,"TITOLO_PRODOTTO");
							var base = this.getXmlValue(row,"PREZZO_BASE_PRODOTTO");
							var privati = this.getXmlValue(row,"PREZZO_PRIVATI_PRODOTTO");
							var p_offerta = this.getXmlValue(row,"PREZZO_OFFERTA_PRODOTTO");
							var aziende = this.getXmlValue(row,"PREZZO_AZIENDE_PRODOTTO");
							var varianti_text = this.getXmlValue(row,"TESTO_VARIANTI");
			
							var offerta = this.getXmlValue(row,"ID_OFFERTA");
							var tofferta = this.getXmlValue(row,"TIPO_OFFERTA");
							var fine_offerta = this.getXmlValue(row,"FINE_OFFERTA");
							var inizio_offerta = this.getXmlValue(row,"INIZIO_OFFERTA");
							var pofferta = this.getXmlValue(row,"PERCENTUALE_OFFERTA");

													
							var divCart = $("cart");
							var table = divCart.getChildren("table")[0]; 
							var tr=  new Element("tr",{'id' : 'pr'+id} );
							var strong=  new Element("strong");
							var nome=  new Element("td",{'id' : 'pr'+id+"_nome"} );
							var prezzo=  new Element("div",{'id' : 'pr'+id+"_prezzo", 'class' : 'hidden'} );
							var quantita=new Element("td",{'id':'pr'+id+"_quantita"} );
							var tot_elimina=new Element("td" , {'class' : 'prezzo_elimina'});
							var tot = new Element("div",{'id':'pr'+id+"_tot" } );
							var elimina=new Element("div",{'id':'pr'+id+"_elimina"} );
							var elimina_a=new Element("a");

							strong.innerHTML= titolo + " " +varianti_text ; 
							//if(this.logon){prezzo.innerHTML = vendita; }
							//else{prezzo.innerHTML = listino; }
							
							/*
							SEC_TUTTI ->1
							SEC_SOLO_LOGIN ->2 
							SEC_SOLO_IVA -> 3
							SEC_SOLO_PRIVATI -> 4		
							*/
							/*
							0 = no log 
							1 = azienda
							2 = privato		
							*/


							var prezzo_value = 0; 							
							if(this.type_utente==2){	prezzo_value = privati; }
							else if(this.type_utente==1){	prezzo_value = aziende; }
							else{ 				prezzo_value = base; }
							if(prezzo_value==""){
								prezzo_value = base; 
							}
							var applica_offerta = false; 
							if(offerta!=""){
								anno = parseInt(fine_offerta.substr(6),10);
								mese = parseInt(fine_offerta.substr(3, 2),10);
								giorno = parseInt(fine_offerta.substr(0, 2),10);
								var scadenza=new Date(anno, mese-1, giorno);
								anno = parseInt(inizio_offerta.substr(6),10);
								mese = parseInt(inizio_offerta.substr(3, 2),10);
								giorno = parseInt(inizio_offerta.substr(0, 2),10);
								var partenza =new Date(anno, mese-1, giorno);
								var offerta_tempo = (new Date())<=(scadenza)&&(new Date())>=(partenza); 
								 
								if(!offerta_tempo&&row.length>1){
									while(true){
										j = j+1; 
										if(j>=row.length){break;}
										var newrow = rows[j];	
										offerta = this.getXmlValue(newrow,"ID_OFFERTA");
										tofferta = this.getXmlValue(newrow,"TIPO_OFFERTA");
										fine_offerta = this.getXmlValue(newrow,"FINE_OFFERTA");
										inizio_offerta = this.getXmlValue(newrow,"INIZIO_OFFERTA");
										pofferta = this.getXmlValue(newrow,"PERCENTUALE_OFFERTA");
										anno = parseInt(fine_offerta.substr(6),10);
										mese = parseInt(fine_offerta.substr(3, 2),10);
										giorno = parseInt(fine_offerta.substr(0, 2),10);
										scadenza=new Date(anno, mese-1, giorno);
										anno = parseInt(inizio_offerta.substr(6),10);
										mese = parseInt(inizio_offerta.substr(3, 2),10);
										giorno = parseInt(inizio_offerta.substr(0, 2),10);
										partenza =new Date(anno, mese-1, giorno);
										offerta_tempo = (new Date())<=(scadenza)&&(new Date())>=(partenza); 
										if(offerta_tempo){break;}
									}
								}
								
									if	(tofferta==1 && this.type_utente==0){	applica_offerta = true;  }
									else if	(tofferta==2 && this.type_utente!=0){	applica_offerta = true;  }
									else if	(tofferta==3 && this.type_utente==1){	applica_offerta = true;  }
									else if	(tofferta==4 && this.type_utente==2){	applica_offerta = true;  }
									if(p_offerta!=""){
										prezzo_value = p_offerta;
									}else{
										var sconto = parseFloat(( prezzo_value * pofferta) / 100);
										sconto = roundTo(sconto , 2); 
										prezzo_value = prezzo_value - sconto; 	
								
								}
							}
							prezzo.innerHTML =prezzo_value +  "€";
							quantita.innerHTML = 1; 
							tot.innerHTML = prezzo.innerHTML; 
							elimina_a.innerHTML= Translator.traduci('ROOT_MSG_ELIMINA'); 
							
							CookieJs.setCookie(this.cookiename+"["+id+"]",1,30);
							/*
							<tr id="pr{ID}">
							<td id="pr{ID}_nome">{PRODOTTO}</td>
							<td id="pr{ID}_prezzo">{PREZZO}</td>
							<td id="pr{ID}_quantita">{QUANTITA}</td>
							<td id="pr{ID}_tot">{TOT}</td>
							<td id="pr{ID}_elimina">{ELIMINA}</td>
							*/
							elimina_a.inject(elimina);
							
							quantita.inject(tr);							

							strong.inject(nome);
							prezzo.inject(nome)
							nome.inject(tr); 
							
							tot.inject(tot_elimina)
							elimina.inject(tot_elimina);

							tot_elimina.inject(tr);
							tr.inject(table);
							//alert(tr.innerHTML);
							this.intRowTable(tr,id); 
							this.calcolaTotale();

					}//for	
				}
				}}
			//ajax._connection.responseXML = ""; 
		}.bind(this) );
		var lingua = CookieJs.getCookie("lingua"); 
		if(lingua==""){
			lingua = "IT";		
		}

		ajax.appendParamRequest("FUNCTION","getProdotto("+id+","+lingua+")"); 
		ajax.processa(this.ajax_page);	
	},
	getXmlValue :  function(padre,xmlTag){
		if(padre.getElementsByTagName(xmlTag)[0].firstChild!=null){
			return 	padre.getElementsByTagName(xmlTag)[0].firstChild.nodeValue;
		}return "" ; 
	}
};


function roundTo(number , decimalpositions)
{
    var i = number * Math.pow(10,decimalpositions);
    i = Math.round(i);
    return i / Math.pow(10,decimalpositions);
}



