$(document).ready(function() {
	anchorsmap = {
		cat:							{fnc: window.DoChangeProdottiCategoriaPage},
		marca:						{fnc: window.DoChangeProdottiMarcaPage},
		promozioni:				{fnc: window.DoChangeProdottiInPromozionePage},
		correlati:				{fnc: window.DoChangeProdottiCorrelatiPage},
		altridadesigner:	{fnc: window.DoChangeAltriDaDesignerPage},
		search:						{fnc: window.DoChangeSearchProdottiPage}
	};
	
	setInterval(CheckHash, 300);
});

var currenthash = "";
var anchorsmap = {};

function AddPageHash(page, pagenum)
{
	var hash = document.location.hash;
	if (hash == "")
		hash = "#";
	
	var regexp = new RegExp("/"+page+"/[0-9]+", "gi");
	hash = hash.replace(regexp, "");
	hash += "/"+page+"/"+pagenum;
	
	document.location.hash = hash;
}
function CheckHash()
{
	if (currenthash != document.location.hash)
	{
		currenthash = document.location.hash;
		var splithash = currenthash.split("/");
		
		for (var i = 0; i < splithash.length; i++)
		{
			if (!anchorsmap[ splithash[i] ])
				continue;
			if (!anchorsmap[ splithash[i] ].fnc)
				continue;
			
			var pagenum = parseInt(splithash[i+1]);
			var fnc = anchorsmap[ splithash[i] ].fnc;
			fnc(pagenum);
		}
	}
}


function UpdatePanelLayout(panel, fix, dontcheckimgs)
{
	if (!fix)
		fix = 0;
	if (panel.find("div[id='newscontent']").length)
		fix = 4;
	
	if (!dontcheckimgs)
	{
		var imgs = panel.find("img");
		if (imgs)
		{
			imgs.load(function() {
				UpdatePanelLayout( $(this).parents(".panel"), 0, true);
			});
		}
	}
	
	panel.height( panel.find(".panelcontent").height() + 7*2 + fix );
	
	/*if ($.browser.msie && $.browser.version == "6.0")
		if (panel.find("table").length)
			panel.find(".subpanelcontentrelative").css('width', panel.find(".subpanelcontentrelative").width() - 15);*/
}
function ShowCercaFunction(element, type)
{
	var nextelement = $(element).next();
	
	if (!type)
	{
		nextelement.toggle();
		UpdatePanelLayout( $(element).parents(".panel") );
	}
	else
	{
		nextelement.html("").toggle();
		
		if (!nextelement.is(":visible"))
			UpdatePanelLayout( $(element).parents(".panel") );
		else
		{
			nextelement.append("<div align='center'><img src='"+domain+"/img/loading.gif'><"+"/div><br>");
			UpdatePanelLayout( $(element).parents(".panel") );
			
			nextelement.load(domain+"/pages/ajax_get"+type+".php", null, function() {
				UpdatePanelLayout( $(this).parents(".panel") );
			});
		}
	}
}
function ShowSubheader(elementid)
{
	$("#subheadernews").hide();
	$("#subheadereventi").hide();
	$("#subheaderlinks").hide();
	
	var element = $("#"+elementid);
	element.toggle();
	UpdatePanelLayout( element.parents(".panel"), 4 );
}
function SearchPrezzoRange(element, from, to)
{
	var form = $(element).parents("form").get(0);
	form.prezzo_da.value = from;
	form.prezzo_a.value = to;
	form.submit();
}
function Search(form)
{
	var value = $(form).find("input[name='termine']").attr("value");
	location.href = domain + "/search/" + escape(value);
	
	return false;
}

function AddProdottoToFavourites(id)
{
	$("#preferitistatuscontainer").html("<img src='"+domain+"/img/loading_white.gif'>");
	
	$.get(domain+"/pages/ajax_favourites_add.php", {id:id}, function() {
		$("#preferitistatuscontainer").html("<img src='"+domain+"/img/success.gif'> Prodotto aggiunto nei preferiti");
		$("#preferitistatuscontainer").slideDown();
		setTimeout(function() { $("#preferitistatuscontainer").slideUp(); }, 1200);
		
		$("#preferitiaddremovecontainer").html('<a href="#" onclick="RemoveProdottoFromFavourites('+id+'); return false">Rimuovi prodotto dai preferiti</a>');
		LoadProdottiFavourites();
	});
}
function RemoveProdottoFromFavourites(id)
{
	$("#preferitistatuscontainer").html("<img src='"+domain+"/img/loading_white.gif'>");
	
	$.get(domain+"/pages/ajax_favourites_remove.php", {id:id}, function() {
		$("#preferitistatuscontainer").html("<img src='"+domain+"/img/success.gif'> Prodotto rimosso dai preferiti");
		$("#preferitistatuscontainer").slideDown();
		setTimeout(function() { $("#preferitistatuscontainer").slideUp(); }, 1200);
		
		$("#preferitiaddremovecontainer").html('<a href="#" onclick="AddProdottoToFavourites('+id+'); return false">Aggiungi prodotto ai preferiti</a>');
		LoadProdottiFavourites();
	});
}
function CheckProdottoInFavourites(id)
{
	$.get(domain+"/pages/ajax_favourites_check.php", {id:id}, function(data) {
		if (data == "1")
			$("#preferitiaddremovecontainer").html('<a href="#" onclick="RemoveProdottoFromFavourites('+id+'); return false">Rimuovi prodotto dai preferiti</a>');
		else
			$("#preferitiaddremovecontainer").html('<a href="#" onclick="AddProdottoToFavourites('+id+'); return false">Aggiungi prodotto ai preferiti</a>');
	});
}
function LoadProdottiFavourites()
{
	$("#preferiticontainer").load(domain+"/pages/ajax_favourites_get.php");
}

function IsElementVisible(elem)
{
	elem = $(elem);
	
  var docViewTop = $(window).scrollTop();
  var docViewBottom = docViewTop + $(window).height();
	
	var elemTop = elem.offset().top;
  var elemBottom = elemTop + elem.height();
	
	return (docViewTop < elemTop && docViewBottom > elemBottom);
}

function MakeCarrelloVisible()
{
	var cartpanel = $("#cartpanel");
	if (!cartpanel.length)
		return;
	
	if (cartpanel.css("position") == "absolute")
	{
		if (cartpanel.prev().offset().top + cartpanel.prev().height() > cartpanel.offset().top)
		{
			cartpanel.css({
				position: "",
				top: ""
			});
			cartpanel.prev().before(cartpanel);
		}
		else
		{
			cartpanel.css({
				top: $(window).scrollTop()+"px"
			});
		}
	}
	else if (!IsElementVisible(cartpanel))
	{
		var newcartpanel = cartpanel.clone();
		
		var iterations = 0;
		while (!IsElementVisible(cartpanel) && iterations < 5)
		{
			iterations++;
			
			if ($(window).scrollTop() > cartpanel.offset().top)
			{
				if (cartpanel.next().length)
				{
					cartpanel.next().after(newcartpanel);
					cartpanel.remove();
				}
				else
				{
					cartpanel.parent().append(newcartpanel);
					newcartpanel.css({
						position: "absolute", 
						top: $(window).scrollTop()+"px"
					});
					
					cartpanel.remove();
				}
			}
			else
			{
				if (cartpanel.prev().length)
				{
					cartpanel.prev().before(newcartpanel);
					cartpanel.remove();
				}
			}
		}
	}
}

function VetrinaBindHandler(element)
{
	$(element).find("div[align='center']").bind("mouseenter", VetrinaShowImage);
}
function VetrinaShowImage()
{
	element = $(this);
	
	element.parent().find("div[align='center']").find("div:has(img)").stop(true, true);
	
	element.parent().find("div[align='center']").filter(function() {
		return this != element.get(0);
	}).find("div:has(img):visible").slideUp();
	
	element.find("img").parent().parent().slideDown();
}

if (!($.browser.msie && $.browser.version == "6.0"))
{
	$(window).resize(MakeCarrelloVisible);
	$(window).scroll(MakeCarrelloVisible);
}

$(document).ready(function() {
	UpdateCart();
	$("a[rel^='prettyPhoto']").prettyPhoto();
});