/**
 * direction: direzione dell'animazione di ingresso, permette i seguenti valori: 0 - top-down, 1 right-left, 2 bottom-up, 3 left-right
 */
function SlidingPanel(id, direction){
	this.id="#"+id;
	this.startx=$(this.id).css("left");
	this.starty=$(this.id).css("top");
	this.direction=direction;

	this.showPanel = function(){
		$(this.id).show();
		this.visible= true;
	}

	this.hidePanel = function(){
		$(this.id).hide();
		this.visible= false;
	}

	this.pageLoad = function() {
		this.hidePanel();

		switch (this.direction) {
			case 1:
				alert('not implemented');
				break;
			case 2:
				alert('not implemented');
				break;
			case 3:
				alert('not implemented');
				break;
			case 0:
			default:
				$(this.id).slideDown('slow');
				break;
		}
	}

	this.slideIn = function(){
		//this.moveOut();
		if(!this.visible) this.showPanel();

		var panelPadding = parseInt($(this.id).css("padding-top"), 10);
		panelPadding += parseInt($(this.id).css("padding-bottom"), 10);
		$(this.id).height($(window).height()-panelPadding-$("#productbar:visible").height());

		switch (this.direction) {
			case 1:
				alert('not implemented');
				break;
			case 2:
				alert('not implemented');
				break;
			case 3:
				alert('not implemented');
				break;
			case 0:
			default:
				$(this.id).animate({
					top: 0
				}, 'slow', function (){
					$("#contentPanel div.contentBox").jScrollPane({autoReinitialise: true, showArrows: true});
				});
				break;
		}
	}

	this.slideOut = function(){
		switch (this.direction) {
			case 1:
				alert('not implemented');
				break;
			case 2:
				alert('not implemented');
				break;
			case 3:
				alert('not implemented');
				break;
			case 0:
			default:
				$(this.id).animate({
					top: -($(this.id).height())
				}, 'slow', function(){
					this.visible=false;  //loadcontent HA BISOGNO di questo controllo
					$("#"+this.id).hide();
				});
				break;
		}
		this.visible=false;
	}

	/**
	 * Sposta il pannello fuori dall'area visibile dello schermo
	 */
	this.moveOut = function(){
		/*
		var browserwidth = $(window).width();
		var browserheight = $(window).height();
		var pnlwidth = $(this.id).width();
		var pnlwidth2 = $(this.id).css("width");
		var pnlheight2 = $(this.id).css("height");
		*/
		var pnlheight = $(this.id).height();

		switch (this.direction) {
			case 1:
				alert('not implemented');
				break;
			case 2:
				alert('not implemented');
				break;
			case 3:
				alert('not implemented');
				break;
			case 0:
			default:
				$(this.id).css("top", (-pnlheight) + "px");
				break;
		}
	}

	this.resetBox = function(){
		$("#contentPanel div.contentBox").jScrollPane({autoReinitialise: true});
	}



	this.loadContent = function(url){
		this.moveOut();
		
		$(this.id).html("<div class=\"contentBox\"></div>");
		if(url.substr(0,4)=="cms:"){
			//cms
			$(this.id+" .contentBox").load("include/cms_load.aj.jsp?id="+url.slice(4));
		} else {
			//normal link
			$(this.id+" .contentBox").load(url);
		}

		this.slideIn();
	}

	this.loadHtmlContent = function(html){
		this.moveOut();

		$(this.id).html("<div class=\"contentBox\"></div>");
		$(this.id+" .contentBox").html(html);

		this.slideIn();
	}
}


function CartPanel(id, width){
	var panelId="#"+id;
	var handleWidth=$(panelId+" .handle").width();

	$(panelId).width(width);
	$(panelId).css("right", handleWidth-width);
	$(panelId + " .content").width(width).css("left", handleWidth);

	$(panelId+" .handle a").toggle(function(){
		cartPanel.clearMessages();

		$(panelId+ " .handle a")
			.removeClass("open")
			.addClass("close");

		$(panelId).animate({
			right: 0
		}, 'slow',function(){
			$(panelId + " .content").animate({
				left: 0
			}, 'slow');
		});

		//nascondo il menu destro
		var rightMenuW=parseInt($("#rightmenu").width());
		$("#rightmenu").animate({right: -rightMenuW}, 'slow');
	},function(){
		cartPanel.clearMessages();

		$(panelId+ " .handle a")
			.removeClass("close")
			.addClass("open");

		$(panelId + " .content").animate({
			left: handleWidth
		}, 'slow',function(){
			$(panelId).animate({
				right: handleWidth-width
				}, 'slow');

			//mostro il menu destro
			$("#rightmenu").animate({right: 0}, 'slow');
		});		
	});

	this.showPanel = function(){
		$(this.id).show();
		this.visible= true;
	}

	this.hidePanel = function(){
		$(this.id).hide();
		this.visible= false;
	}

	this.isOpen = function(){
		return $("#cartPanel .handle a.close").length>0;
	}

	this.getPanelId = function(){
		return panelId;
	}

	this.loadContent = function(){
		$("#cartPanel .content").load("include/myCart.jsp?getCart=1");
		this.fixDimensions();
	}

	this.handleClick = function() {
		$("#cartPanel .handle a").click();
	}

	this.showPreconfirmMessage = function(){
		var html="Se hai terminato i tuoi acquisti clicca il pulsante <b>conferma</b> per inoltrare l'ordine.<br /><br /><b>Attenzione</b>: una volta confermato potrai annullare l'ordine solamente"
			+" contattando direttamente i nostri uffici.<br /><br />Se non sei sicuro o vuoi aggiungere altri prodotti prima di confermare l'ordine premi <b>annulla</b> per tornare agli acquisti."
			+"<br /><br /><div class=\"cart_options\">"
			+"<a href=\"error/nojs.html\" class=\"cart_ico cart_confirm\" onclick=\"confirmCart(); return false;\"><span>&lt; conferma l'ordine</span><img src=\"images/blank.gif\" /></a>"
			+"<a href=\"error/nojs.html\" class=\"cart_ico cart_continue\" onclick=\"cartPanel.loadContent();cartPanel.handleClick();return false;\"><span>annulla e continua &gt;</span><img src=\"images/blank.gif\" /></a></div>";

		$("div.cartInner").html(html);
	}

	this.showSendingOrderMessage = function (){
		var html="<br />Ordine in fase di elaborazione, <br />invio dati in corso ...<br /><br /><img src=\"images/loadingBar.gif\" />";

		$("div.cartInner").html(html);
	}

	this.showError = function(message) {
		var cartPnlX=parseInt($("#cartPanel").css("right"));
		var cartPnlY=parseInt($("#cartPanel").css("top"));
		var cartPnlW=parseInt($("#cartPanel").width());
		var distanceOffset=400;

		this.clearMessages();
		$("<div>")
			.attr("id", "cartMessage")
			.addClass("message-dialog message-arrow-e error-message")
			.html("<div class=\"message-dialog-arrow-e\"><div class=\"message-box\"><div class=\"message-text\">"+message+"</div></div></div></div></div>")
			.css({right: (cartPnlX+distanceOffset+10+cartPnlW), top: cartPnlY+1})
			.appendTo("#content");
		$("#cartMessage")
			.animate({opacity: 1, right: '-='+distanceOffset}, 700)
			.animate({right: '+=10'}, 50)
			.animate({right: '-=10'}, 50)
			.animate({right: '+=5'}, 50)
			.animate({right: '-=5'}, 50)
			.animate({opacity: 1}, 4000, function(){
				$(this).animate({opacity: 0}, 1000, function() {
					$(this).remove();
				});
			})
	}

	this.clearMessages = function() {
		$("#cartMessage, .cart-ping").remove();
	}

	this.refresh = function(){
		this.clearMessages();
		
		if(!this.isOpen()) {
			this.ping();
			this._reload(false);
		} else {
			this._reload(true);
		}
	}

	this._reload = function(animation){
		if(animation){
			$("#cartPanel .cart")
				.slideUp(0, function(){
					$.ajax({
						type: "GET",
						url: "include/myCart.jsp",
						cache: false, //sempre per quel porco di IE
						success: function(data) {
							$("#cartPanel .cart").hide();
							$("#cartPanel .content").html(data);
							$("#cartPanel .cart").slideDown("slow", function(){
								cartPanel.fixDimensions();
							});
						}
					});
				});
		} else {
			this.loadContent();
		}
	}

	// mette in evidenza il carrello chiuso mostrando una breve animazione
	this.ping = function(){
		var destRight=parseInt($("#cartPanel").width())+parseInt($("#cartPanel").css("right"));
		var cartPnlY=parseInt($("#cartPanel").css("top"));

		this.clearMessages();

		var $item1 = $("<div class=\"cart-ping\"></div>").css({right: (destRight+410), top: (cartPnlY+8)});
		var $item2 = $item1.clone();
		var $item3 = $item1.clone();

		$item1
			.appendTo("#content")
			.animate({opacity: 1, right: '-=400'}, 1000, function(){
				$(this).remove();
			});
		$item2
			.appendTo("#content")
			.delay(100)
			.animate({opacity: 1, right: '-=400'}, 1000, function(){
				$(this).remove();
			});
		$item3
			.appendTo("#content")
			.delay(200)
			.animate({opacity: 1, right: '-=400'}, 1000)
			.animate({opacity: 0.25}, 500)
			.animate({opacity: 1}, 1000)
			.animate({opacity: 0.25}, 500)
			.animate({opacity: 1}, 1000)
			.animate({opacity: 0}, 500, function(){
				$(this).remove();
			});
	}

	// sistema le dimensioni, riducendo il carrello se troppo alto e caricando la barra di scorrimento
	this.fixDimensions = function(){
		var fromBottom=30;
		var productbar=parseInt($("#productbar").height(),10);
		if(isNaN(productbar)){
			productbar=0;
		}

		var space=$(window).height()-parseInt($("#cartPanel").css("top"), 10)-parseInt($("#cartPanel .handle").height())-productbar-fromBottom;

		if(parseInt($("#cartContent .cart").height(), 10) > space){
			$("#cartContent .cart").height(space);
			$("#cartContent .cart").jScrollPane({autoReinitialise: true, showArrows: true});
		}
	}
}

/*
		<div class="message-dialog message-normal notice-message" style="top:300px;left:900px;">
			<div class="message-dialog-normal"
				<div class="message-box">
					<div class="message-text">
						testo del messaggio<br />
						prova prova prova questo<br /> messaggio<br />
						è una prova<br />
						scendi<br />
						<br />
						<br />
						<br />
					</div>
				</div>
			</div>
		</div>
*/
