//var myLogReader = new YAHOO.widget.LogReader('logger'); 
var cart = new Array();

if ( !cartEl )
	var cartEl = 0;

var carrello = new Array();		// contiene l'id dei DIV presenti nel carrello
var UpSelect = new Array();
var postUrl = "/carrello.php";

var cartScroll            = 0;
var upScrollAct         = 1;
var downScrollAct        = 1;

var Event=YAHOO.util.Event;
var Dom=YAHOO.util.Dom;

var MyCart = function(id, sGroup, config) {
    if (id) {
        this.init(id, sGroup, config);
        this.initFrame(); 
    }
};

YAHOO.extend(MyCart, YAHOO.util.DDProxy, {
	resizeFrame: true,
	centerFrame: true,
	scroll: false,
	
	createFrame: function() {
	    var self = this;
	    var body = document.body;
	    
		this.setYConstraint(screen.availHeight);
	
	    if (!body || !body.firstChild) {
	        setTimeout( function() { self.createFrame(); }, 50 );
	        return;
	    }
	
		var div = this.getDragEl();
		this.setYConstraint(500, Dom.getClientHeight() - Dom.getY(this.getEl()) - 60);

	    if (!div) {
		    
	        div    = document.createElement("div");
	        div.id = this.dragElId;
			
	        //Rimpicciolisco l'immagine proxy
			div.className = 'imgproxy';
			
	        div.innerHTML = this.getEl().innerHTML;
	        
	        var s  = div.style;
	
	        s.position   = "absolute";
	        s.visibility = "hidden";
	        s.cursor     = "move";
	        s.zIndex     = 999;
	        s.opacity	 = .5;
				        
	        body.insertBefore(div, body.firstChild);
	    }
	},
	
	b4EndDrag: function(e) {
		void(0);
	},
	
	onInvalidDrop: function(e) {
		var rto = new YAHOO.util.Motion( 
			this.dragElId, { 
				points: {
					from: Dom.getXY(this.getDragEl()),
					to: Array(Dom.getX(this.getEl()) + 110, Dom.getY(this.getEl()) + 95)
				},
				opacity: { to: 0},
				width: { to: 280}
			}, 
			1	, 
			YAHOO.util.Easing.easeOutStrong 
		);
		
		rto.animate();				
		rto.onComplete.subscribe( function(e) {
			YAHOO.util.Dom.setStyle(this.getEl(), "visibility", "hidden");
		});
	},
	
	onMouseDown: function(e)	{
		this.setDelta(25, 25);
		YAHOO.util.Dom.setStyle(this.getDragEl(), 'opacity', '0.5');
	},
	 
	onDragDrop: function(e, id) {
		if ( id == this.config.idTarget ) {
			if ( document.getElementById("C" + this.id) ) {
				this.onInvalidDrop();
				return 0;
			}
				
			tmp = document.createElement('div');
			tmp.id = "C" + this.id;
			tmp.className = "schede_miniature";
			tmp.innerHTML += this.getDragEl().innerHTML;
			tmp.innerHTML += "<a href=\"javascript:deleteElement(document.getElementById('C" + this.id + "'));\" class=\"elimina\" title=\"elimina il prodotto dal carrello\"></a>";
			tmp.innerHTML += "<span class=\"totale_prodottocarrello\">" + document.getElementById("prezzo" + this.id).innerHTML + "&euro;</span>";
			tmp.innerHTML += "</div>";
			document.getElementById('riepilogo_prodotti').appendChild(tmp);
			var tmpObj = new MyTrash("C" + this.id, "elementCart", {idTarget: "trash", dragElId: "drag" + this.id});
			cart.push(tmpObj);
			cartEl++;
			if ( cartEl == 1 ) {
				var totale_ordine = document.getElementById('totale_ordine');
				var shoppingbag = document.getElementById('shoppingbag');
				
				anim1 = new YAHOO.util.Anim(shoppingbag, { opacity: {to: 0 } }, .3, YAHOO.util.Easing.easeOut);
				anim1.animate();
				anim1.onComplete.subscribe( function(e) {
					YAHOO.util.Dom.setStyle(shoppingbag, "visibility", "hidden");
					YAHOO.util.Dom.setStyle(totale_ordine, "opacity", "0");
					YAHOO.util.Dom.setStyle(totale_ordine, "visibility", "visible");
					
					anim2 = new YAHOO.util.Anim(totale_ordine, { opacity: {to: 1 } }, .3, YAHOO.util.Easing.easeIn);
					anim2.animate();
				});
			}
			var opz = document.getElementById('opz' + this.id).value;
			YAHOO.util.Connect.asyncRequest("POST", postUrl, callback, "cmd=add&id=" + this.getDragEl().id.substr(6) + "&opz=" + opz);
			YAHOO.util.Dom.setStyle(this.getDragEl(), "visibility", "hidden");
		} else
			this.onInvalidDrop();
	 },

	endDrag: function(e) {
		void(0);
	}
});

var MyTrash = function(id, sGroup, config) {
    if (id) {
        this.init(id, sGroup, config);
        this.initFrame(); 
    }
};

YAHOO.extend(MyTrash, MyCart, {
	onDragDrop: function(e, id) {
		if ( id == this.config.idTarget ) {
			deleteElement(this.getEl());
			anim = new YAHOO.util.Anim(this.getDragEl(), { opacity: { to: 0 } }, .2, YAHOO.util.Easing.easeOut);
			anim.animate();
		} else
			this.onInvalidDrop();
	},
	
	onInvalidDrop: function(e) {
		var rto = new YAHOO.util.Motion( 
			this.dragElId, { 
				points: {
					from: Dom.getXY(this.getDragEl()),
					to: Array(Dom.getX(this.getEl()), Dom.getY(this.getEl()))
				},
				opacity: { to: 0}
			}, 
			1	, 
			YAHOO.util.Easing.easeOutStrong 
		);
		
		rto.animate();				
		rto.onComplete.subscribe( function(e) {
			YAHOO.util.Dom.setStyle(this.getEl(), "visibility", "hidden");
		});
	},
	
	getID: function(e) {
		return this.id;
	}
});

var callback = {
	success: function(o) {
		var div = document.getElementById("totale");
		div.innerHTML = o.responseText + " €";
		return true;
	},
	failure: function() {
		alert("errore di comunicazione con il server");
		return false;
	}
};
		
function deleteElement(el) {
	var loader = document.getElementById('loader');
	anim = new YAHOO.util.Anim(el, { opacity: { to: 0 } }, .3, YAHOO.util.Easing.easeOut);
	anim.animate();
	anim.onComplete.subscribe( function(e) {
		YAHOO.util.Dom.setStyle(el, "visibility", "hidden");
		anim = new YAHOO.util.Anim(el, { width: { to: 0 } }, .5, YAHOO.util.Easing.easeOut);
		anim.animate();
		anim.onComplete.subscribe( function(e) {
			YAHOO.util.Dom.setStyle(el, "position", "absolute");
			YAHOO.util.Connect.asyncRequest("POST", postUrl, callback, "cmd=del&id=" + (el.id.substr(3)));
			el.id = "";
			cartEl--;
			if ( cartEl <= 0 ) {
				var totale_ordine = document.getElementById('totale_ordine');
				var shoppingbag = document.getElementById('shoppingbag');
				
				anim1 = new YAHOO.util.Anim(totale_ordine, { opacity: {to: 0 } }, .3, YAHOO.util.Easing.easeOut);
				anim1.animate();
				anim1.onComplete.subscribe( function(e) {
					YAHOO.util.Dom.setStyle(totale_ordine, "visibility", "hidden");
					YAHOO.util.Dom.setStyle(shoppingbag, "opacity", "0");
					YAHOO.util.Dom.setStyle(shoppingbag, "visibility", "visible");
					
					anim2 = new YAHOO.util.Anim(shoppingbag, { opacity: {to: 1 } }, .3, YAHOO.util.Easing.easeIn);
					anim2.animate();
				});
			}
		});
	});
}

function deleteSingleElement(el) {
	if ( document.getElementById("C" + el.id) ) {
		quantita = parseInt(document.getElementById("quantita" + el.id).value) - 1;
		document.getElementById("quantita" + el.id).value =  quantita;
						var nuovoprezzo = new String(sprintf("%8.2d €", parseFloat(document.getElementById("prezzo" + el.id).innerHTML) * quantita));
						document.getElementById("prezzoC" + el.id).innerHTML = nuovoprezzo.replace('.', ',');
		
		if ( quantita <= 0 ) {
			deleteElement(document.getElementById("C" + el.id));
			return true;
		}
		YAHOO.util.Connect.asyncRequest("POST", postUrl, callback, "cmd=remove&id=" + (el.id.substr(2)));
	}
}

function addElement(el) {
	if ( document.getElementById("C" + el.id) ) {
		return;
	}
	
	tmp = document.createElement('div');
	YAHOO.util.Dom.setStyle(tmp, "opacity", "0");
	tmp.id = "C" + el.id;
	tmp.className = "schede_miniature";
	tmp.innerHTML += el.innerHTML;
	tmp.innerHTML += "<a href=\"javascript:deleteElement(document.getElementById('C" + el.id + "'));\" class=\"elimina\" title=\"elimina il prodotto dal carrello\"></a>";
	tmp.innerHTML += "<span class=\"totale_prodottocarrello\">" + document.getElementById("prezzo" + el.id).innerHTML + "&euro;</span>";
	tmp.innerHTML += "</div>";
	document.getElementById('riepilogo_prodotti').appendChild(tmp);
	anim = new YAHOO.util.Anim(tmp, {opacity: {to: 1}}, .5, YAHOO.util.Easing.easeOut);
	anim.animate();
	anim.onComplete.subscribe( function(e) {
		var tmpObj = new MyTrash("C" + el.id, "elementCart", {idTarget: "trash", dragElId: "drag" + el.id});
		cart.push(tmpObj);
		cartEl++;
		if ( cartEl == 1 ) {
			var totale_ordine = document.getElementById('totale_ordine');
			var shoppingbag = document.getElementById('shoppingbag');
			
			anim1 = new YAHOO.util.Anim(shoppingbag, { opacity: {to: 0 } }, .3, YAHOO.util.Easing.easeOut);
			anim1.animate();
			anim1.onComplete.subscribe( function(e) {
				YAHOO.util.Dom.setStyle(shoppingbag, "visibility", "hidden");
				YAHOO.util.Dom.setStyle(totale_ordine, "opacity", "0");
				YAHOO.util.Dom.setStyle(totale_ordine, "visibility", "visible");
				
				anim2 = new YAHOO.util.Anim(totale_ordine, { opacity: {to: 1 } }, .3, YAHOO.util.Easing.easeIn);
				anim2.animate();
			});
		}
	});	
	var opz = document.getElementById('opz' + el.id).value;
	YAHOO.util.Connect.asyncRequest("POST", postUrl, callback, "cmd=add&id=" + el.id.substr(2) + "&opz=" + opz);
	
	/*
	var opz = document.getElementById('opz' + el.id).innerHTML;
	YAHOO.util.Connect.asyncRequest("POST", postUrl, callback, "cmd=add&id=" + el.id.substr(2) + "&opz=" + opz);*/
	//YAHOO.util.Dom.setStyle(el, "visibility", "hidden");
	
	/*
	var div = document.createElement("div");
	var tmp = document.createElement("div");
	tmp.className = "schede_miniature";
           
    div.innerHTML = el.innerHTML;
    
    var s  = div.style;

    s.position   = "absolute";
    s.top		 = Dom.getY(el) + "px";
    s.left		 = Dom.getX(el) + "px";
    s.cursor     = "move";
    s.zIndex     = 999;
    s.opacity	 = .5;
	
	div.className = 'imgproxy';
    

    document.body.insertBefore(div, document.body.firstChild);
    document.getElementById("riepilogo_prodotti").appendChild(tmp);
	
    if ( document.getElementById("C" + el.id) )
		var to = Dom.getXY(document.getElementById("C" + el.id));
	else {
		var to = Dom.getXY(tmp);
		new YAHOO.util.Anim(tmp, { width: { to: 100 } }, .3, YAHOO.util.Easing.easeOut).animate();
	}
	
	to[0] += 26;
	to[1] += 1;
		
	var add = new YAHOO.util.Motion( div, { points: { from: Dom.getXY(div),	to: to } }, 0.8	, YAHOO.util.Easing.easeOut );
	
		
	add.animate();
	add.onComplete.subscribe( function(e) {
		tmp.style.height = "0px";
		tmp.style.position = "absolute";
		YAHOO.util.Dom.setStyle(div, "visibility", "hidden");
		
		YAHOO.util.Connect.asyncRequest("POST", postUrl, callback, "cmd=add&id=" + el.id.substr(2));
		
		if ( document.getElementById("C" + el.id) ) {
			quantita = parseInt(document.getElementById("quantita" + el.id).value);
			quantita = quantita + 1;
			document.getElementById("quantita" + el.id).value = quantita;
			var nuovoprezzo = new String(sprintf("%8.2d €", parseFloat(document.getElementById("prezzo" + el.id).innerHTML) * quantita));
			document.getElementById("prezzoC" + el.id).innerHTML = nuovoprezzo.replace('.', ',');
			return true;
		}		
		
		
			tmp.id = "C" + this.id;
			tmp.className = "schede_miniature";
			//tmp.innerHTML += "<div id=\"C" +  this.id + "\">";
			tmp.innerHTML += this.getDragEl().innerHTML;
			tmp.innerHTML += "<a href=\"javascript:deleteElement(document.getElementById('C" + this.id + "'));\" class=\"elimina\" title=\"elimina il prodotto dal carrello\"></a>";
			tmp.innerHTML += "<span class=\"totale_prodottocarrello\">" + document.getElementById("prezzo" + this.id).innerHTML + "&euro;</span>";
			tmp.innerHTML += "</div>";
			alert('ok');
			var tmpObj = new MyTrash("C" + this.id, "elementCart", {idTarget: "trash", dragElId: "drag" + this.id});
			cart.push(tmpObj);
			var opz = document.getElementById('opz' + this.id).innerHTML;
			YAHOO.util.Connect.asyncRequest("POST", postUrl, callback, "cmd=add&id=" + this.getDragEl().id.substr(6) + "&opz=" + opz);
			YAHOO.util.Dom.setStyle(this.getDragEl(), "visibility", "hidden");
		
		
	});
	*/
}

var target = new YAHOO.util.DDTarget("cart", "element"); 
var trash = new YAHOO.util.DDTarget("trash", "elementCart");

function showCart(cartScroll)	{
	
	for ( var i = 0; i < carrello.length; i++)
		document.getElementById("C" + carrello[i]).style.position  = 'absolute';

	for ( var i = cartScroll - 1; i < cartScroll; i++) {
		document.getElementById("C" + carrello[i]).style.visibility  = 'block';
		document.getElementById("C" + carrello[i]).style.position  = 'relative';
	}
	
}

function scrollUp()	{
	if(upScrollAct)
		cartScroll--;
	if(cartScroll == 0)
		upScrollAct = 0;
	showCart(cartScroll);
}

function scrollDown()	{
	if(downScrollAct)
		cartScroll++;
	if(cartScroll == carrello.lenght)
		downScrollAct = 0;
	showCart(cartScroll);
	
}


function showDetails (id) {
	
	
	var sUrl = "/prodotto_dettaglio.php/" + id.substr(2);
	var postData = '';
	
	handleSuccess = function(o){ 
	id = o.argument;
	if ( document.getElementById("productDetails" + id) != null )
		return;
	div = document.createElement("div");
	div.id = "productDetails" + id;
	var scheda = document.getElementById(o.argument);
	div.innerHTML += "<a id=\"chiudi-dettaglio\" href=\"javascript:hideDetails(document.getElementById('productDetails" + id + "'))\">chiudi</a>";
	div.innerHTML += o.responseText;
	div.style.position   = "absolute";
	div.style.visibility = "visible";
    div.style.opacity	 = 0;
    div.style.zIndex     = 9999999999;
    div.style.left		 = "50%";
    div.style.top		 = Dom.getY(document.getElementById(id)) + "px";
    div.style.margin  	 = "-100px auto auto -250px ";
    div.style.width      = "500px";
    div.style.background = "#FFFFFF";
    div.style.border	 = "2px solid #CCC";
    
    document.body.insertBefore(div, document.body.firstChild);
	anim = new YAHOO.util.Anim(div, { opacity: { to: 1 } }, .3, YAHOO.util.Easing.easeIn);
    anim.animate();
	}
	handleFailure = function(o){
		alert('ko');
	}
	
	callbackDettaglio = 
	{
		success:handleSuccess, 
		failure: handleFailure, 
		argument: id
	}
	
	
	
	var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callbackDettaglio, postData); 
	new YAHOO.util.DD("productDetails" + id);
	
    
    //div.innerHTML += "<iframe src=\"/prodotto_scheda.php/" + id.substr(2) + "\" width=\"100%\" height=\"350\" />"; 
}



function hideDetails (el) {
	anim = new YAHOO.util.Anim(el, { opacity: { to: 0 } }, .2, YAHOO.util.Easing.easeOut);
	anim.animate();
	anim.onComplete.subscribe( function(e) {
		el.style.visibility = "hidden";
		el.style.zIndex = 0;
		el.id = "";
	} );
}

function hideZoomify (id) {
	el = document.getElementById(id);
	el.style.visibility = "hidden";
	el.style.zIndex = 0;
	el.id = "";	
}

function zoomify (id)	{
	
	
	var sUrl = "/zoomify.php?id=" + id.substr(2);
	var postData = '';
	
	handleSuccess = function(o){ 
		id = o.argument;
		//if ( document.getElementById("productZoomify" + id) != null )	return;
		div = document.createElement("div");
		div.id = "productZoomify" + id;
		var scheda = document.getElementById(o.argument);
		div.innerHTML += o.responseText;

		 div.style.position   = "absolute";
 	  div.style.visibility = "visible";
    div.style.opacity	 = 0;
    div.style.zIndex     = 9999999999;
    div.style.left		 = "50%";
    div.style.top		 = Dom.getY(document.getElementById(id)) + "px";
    div.style.margin  	 = "-100px auto auto -250px ";
    div.style.width		 = "500px";
    //div.style.background = "#FFFFFF";
    
    document.body.insertBefore(div, document.body.firstChild);
	//anim = new YAHOO.util.Anim(div, { opacity: { to: 1 } }, .3, YAHOO.util.Easing.easeIn);
    //anim.animate();
    div.style.opacity = 1;
	}
	handleFailure = function(o){
		alert('ko');
	}
	
	callbackZoomify = 
	{
		success:handleSuccess, 
		failure: handleFailure, 
		argument: id
	}
	
	
	
	var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callbackZoomify, postData); 
	new YAHOO.util.DD("productZoomify" + id);
    
    //div.innerHTML += "<iframe src=\"/prodotto_scheda.php/" + id.substr(2) + "\" width=\"100%\" height=\"350\" />"; 
}




function addEvent( obj, type, fn ) {
 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] );
  } else
    obj.addEventListener( type, fn, false );
 }
 function removeEvent( obj, type, fn ) {
  if ( obj.detachEvent ) {
     obj.detachEvent( 'on'+type, obj[type+fn] );
     obj[type+fn] = null;
   } else
    obj.removeEventListener( type, fn, false );
 }

 
 function calcola_prezzo(id, sovrapprezzo)	{
 	var prezzo_base = document.getElementById('prezzo_baseID' + id).innerHTML;
	sovrapprezzo = sovrapprezzo.replace(',', '.');
	sovrapprezzo = parseFloat(sovrapprezzo);
	prezzo_base = prezzo_base.replace(',', '.');
	prezzo_base = parseFloat(prezzo_base);
	prezzo_totale = sprintf("%8.2d", prezzo_base + sovrapprezzo);
	document.getElementById('prezzoID' + id).innerHTML = prezzo_totale.replace('.', ',');
 	
 }
