var paginationSelector = "div#floatingFooter";
var magmaAjaxSuffix = ".ajax";
var paginationDefaultPosition;
var paginationFloatingEnable = false;
var documentReady = false;


$(document).ready(function(){
	documentReady = true;
	initSal();
	$('span.principale > a').bind('click',function(event){
		event.preventDefault();
		closeOpenedItems()
		
		var mainLink = $(this).parents('li.lista-principale').find('a:first-child');
		
		if (!mainLink.hasClass('open')) {
			var ajaxUrl = $(this).attr('href') + magmaAjaxSuffix + " .AjaxWrapper>*";
			$(this).parents('li.lista-principale').append('<div class="ajaxLoad"><div class="preview"><span class="loading">Loading</span></div><a class="close-up" href="javascript:closeOpenedItems();">Chiudi</a></div>');
			setPaginationPosition(true);
			$(".ajaxLoad .preview").load(ajaxUrl, {}, function(resptext) {
				var ajaxhead = $(resptext).filter(".AjaxHead").children();
				var head = $('head')[0];
				var scripts = new Array();
				for (var i = 0; i < ajaxhead.length; i++) {
					var tag = ajaxhead[i].tagName;
					if (tag == 'SCRIPT') {
						var url = ajaxhead[i].src;
						if (url != '') {
							var check = tag;
							url = url.substring(url.lastIndexOf('/'));
							check += "[src$='" + url + "']";
							if ($(check, head).length > 0) continue;
						}
						scripts.push(ajaxhead[i]);
					} else if (tag == 'LINK') {
						var check = tag;
						var url = ajaxhead[i].href;
						url = url.substring(url.lastIndexOf('/'));
						check += "[href$='" + url + "']";						
						if ($(check, head).length > 0) continue;
						$(head).prepend(ajaxhead[i]);
					} else {
						head.appendChild(ajaxhead[i]);
					}
				}
				if (scripts.length > 0) {
					lateLoad(scripts, 0);
				}
				$(".ajaxLoad .preview").hide();
				$(".ajaxLoad .preview").fadeIn('slow');
				setPaginationPosition(true);
			});
			
			mainLink.addClass('open');
			
		} else {
			mainLink.removeClass('open');
		}
		return false;
	});
	
	initializeColorboxLinks();
	
	initializeLeftMenu();
	
	$(".ajaxLogout").bind('click', function(event){
		event.preventDefault();

		var ajaxUrl = $(this).attr("href") + magmaAjaxSuffix;
	
		$.get(ajaxUrl, null, function(data, textStatus) {
			window.location.href = window.location.href;
		});
		
		return false;
	});
	
	$('body').removeClass('loading');
	setPaginationPosition(true);
});

$(window).scroll(function() {
	setPaginationPosition(false);
});

$(window).resize(function() {
	if (isIe6() || isIe7()) setPaginationPosition(false);
	else setPaginationPosition(true);
});


function lateLoad(list, index) {
	var ele = list[index];
	if (ele.src && ele.src != '') {
		var src = ele.src;
		if (src.indexOf("google.com/maps") != -1) {
			src += "&async=2";
		}
		if (list.length - 1> index) {
			jQuery.getScript(src, function() { lateLoad(list, index + 1) });
		} else {
			jQuery.getScript(src);
		}
	} else {
		var js = ele.text;
		if (isIe()) {
			window.execScript(js);
		} else {			
			setTimeout(js, 0);
			//eval(js);
		}
		if (list.length - 1> index) {
			lateLoad(list, index + 1);
		}
	}
}

function setPaginationPosition(reset){
	
	if ($("#zoneMain div.MagmaPagination.AfterList").length == 1)
		paginationFloatingEnable = true;
	
	if (documentReady && paginationFloatingEnable) {

		if (paginationDefaultPosition == undefined || reset) {
			
			if (paginationDefaultPosition == undefined) {
				$(paginationSelector).empty();
				$("#zoneMain div.MagmaPagination.AfterList:first").appendTo($(paginationSelector));

			}
			
			$(paginationSelector).css('position', "relative");
			$(paginationSelector).css('top', "0px");
			paginationDefaultPosition = $(paginationSelector).position();
		}
		
		if (paginationDefaultPosition != undefined) {
			var paginationPositionTop = paginationDefaultPosition.top;
			
			if (!isIe6()) {
				
				if ($(window).scrollTop() + $(window).height() < paginationDefaultPosition.top + $(paginationSelector).height()) {
					$(paginationSelector).css('position', "fixed");
					$(paginationSelector).css('top', $(window).height() - $(paginationSelector).height() + "px");
					$(paginationSelector).addClass("floating");
					$(paginationSelector).removeClass("pinned");
				} else {
					$(paginationSelector).css('position', "relative");
					$(paginationSelector).css('top', "0px");
					$(paginationSelector).removeClass("floating");
					$(paginationSelector).addClass("pinned");
				}
				
			} else {
								
				if ($(window).scrollTop() + $(window).height() < paginationDefaultPosition.top + $(paginationSelector).height()) {
					$(paginationSelector).css('position', "absolute");
					$(paginationSelector).css('top', $(window).scrollTop() + $(window).height() - $(paginationSelector).height());
					$(paginationSelector).addClass("floating");
					$(paginationSelector).removeClass("pinned");
				} else {
					$(paginationSelector).css('position', "relative");
					$(paginationSelector).css('top', "0px");
					$(paginationSelector).removeClass("floating");
					$(paginationSelector).addClass("pinned");
				}
				
			}		
		}
	}
}

function isIe6() {
	return ($.browser.msie && $.browser.version.substr(0,1) < 7);
}

function isIe7() {
	return ($.browser.msie && $.browser.version.substr(0,1) == 7);
}

function isIe() {
	return ($.browser.msie);
}


function closeOpenedItems() {
	if ($(".ajaxLoad").length > 0) {
		$(".ajaxLoad").attr('class', 'ajaxOldLoad');
		$(".ajaxOldLoad").slideUp('fast', function() {
			$(".ajaxOldLoad").parents('li.lista-principale').find('a:first-child').removeClass('open');
			$(".ajaxOldLoad").remove();
			setPaginationPosition(true);
		})
	}
}


function parseColorboxContent(isPost) {
	
	var colorboxContent = $("#cboxContent div.AjaxWrapper");
		
	if (colorboxContent.hasClass('handleLogin')) {
		if (colorboxContent.hasClass('hiddenLogin') && colorboxContent.hasClass('doLoginBox')) {
			$("#cboxContent").hide();
			window.location.href = window.location.href;
		} else if ((colorboxContent.hasClass('SmartForm') && colorboxContent.hasClass('doShow')) || colorboxContent.hasClass('doLoginError') || colorboxContent.hasClass('hiddenSendPassword')) {
			initializeColorBox(isPost);
		} else {
			window.location.href = window.location.href;
		}
	} else {
		// Comportamento standard
		initializeColorBox(isPost);
	}
}

function initializeColorBox(isPost) {
	initializeColorboxLinks();
	initializeColorboxForm();
	if (isPost) {
		$.fn.colorbox.resize();
	}
}

function initializeColorboxForm() {
	
	$("#cboxContent form").submit(function(event) {
		var form = $(this);
		submitForm(form, event);
	});
	
	
	
	$("#cboxContent form .MagmActions a").click(function(event) {
		form = $(this).parents().filter("form");
		submitForm(form, event);
	});

}

function submitForm(form, event) {
	formMagmaId = form.attr("name").replace("form", "");
	form.find("input:hidden[name=" + formMagmaId + ".__action_link]").val("0");
	var ajaxAction = form.attr("action") + magmaAjaxSuffix;
	$.post(ajaxAction, form.serializeArray(), function(data, textStatus) {
		var div = $(data).filter(".AjaxWrapper");
		$("#cboxLoadedContent").empty().append(div);
		//$("#cboxLoadedContent").html(data);
		parseColorboxContent(true);
	});
	if (event != null) event.preventDefault();
	return false;
}

function initializeColorboxLinks() {
	$(".ajaxColorbox").each(function(i){
		var ajaxUrl = $(this).attr("href") + magmaAjaxSuffix + " .AjaxWrapper";
		
		$(this).colorbox({href: ajaxUrl, initialWidth:30, initialHeight:30, maxWidth:"200px", maxHeight:"500px", opacity:0.6, scrolling:false}, function(){
			parseColorboxContent(false);
		});
	});
	$(".ajaxColorboxMiddleContent").each(function(i){
		var ajaxUrl = $(this).attr("href") + magmaAjaxSuffix + " .AjaxWrapper";
	
		$(this).colorbox({href: ajaxUrl, initialWidth:30, initialHeight:30, width:"500px", opacity:0.6, scrolling:false}, function(){
			parseColorboxContent(false);
		});
	});
}

function initializeLeftMenu() {
	$("#zoneLeft li>span").hide().hover(
		function() {
			$(this).parents("li:first").find("a").addClass("mouseover");
		}, 
		function() {
			$(this).parents("li:first").find("a").removeClass("mouseover");
		}
	);
	
	$("#zoneLeft li").mouseover(function() {
		$(this).find("span").show();
	}).mouseout(function() {
		$(this).find("span").hide();
	});
	
}


// STATO AVANTAMENTO SAL
function closeAttribute(divToClose) {
	$(".statoAvanzamento li").removeClass("selected");
	$("a[name='"+divToClose+"']").parent("div").slideUp();
}

function initSal(){
	$(".sal-description").hide();
	$(".statoAvanzamento li .statoDettaglio a").click(
		  function(){
				
				var myAnchor = $(this).attr("href").substr(1);
				$("a[name='"+myAnchor+"']").parent("div").find("a.close-up").remove();
				var newLink = "<a href=\"javascript:closeAttribute('"+myAnchor+"');\" class=\"close-up\">Chiudi</a>";
				$(".sal-description").stop(true,true);
				$("a[name='"+myAnchor+"']").parent("div").append(newLink);
				if ($(".sal-description").is(":visible")) {
					
					$(".sal-description:visible").slideUp("", function (){
																$("a[name='"+myAnchor+"']").parent("div").slideDown();
															   });
					} else {

				 
				 $("a[name='"+myAnchor+"']").parent("div").slideDown();
				 }
				 $(".statoAvanzamento li").removeClass("selected");
				 $(this).parents("li").addClass("selected");
				
				return false
				
				
		
				
			  }
		  )
}

if (typeof(MagMap) != 'undefined') { 
	MagMap.prototype.onGeometryClicked = function(geom, latlng) {
		var content = $('<div class="mapinfowindow"><div class="ajaxLoad"><div class="preview"><span class="loading">Loading</span></div></div></div>');
		var map = this.map;
		map.openInfoWindow(latlng, content[0]);
		var ajaxUrl = geom.link + magmaAjaxSuffix + " .AjaxWrapper>*";
		$(".preview", content).load(ajaxUrl, {});
	}
}
