/* ------------------------------------------------------------------------
	Class: deckMaker
	Use: Draw the decks map for Costa Benessere
	Author: Alberto Sartori @ Agency.com
	Version: 1.2.2
------------------------------------------------------------------------- */

(function($) {
	
	$.extend($.fn, {	
		deckMaker: function(param) {
			
			if (!param) var param = {};
			
			//Controllo parametri
			if (param.xmlUrl == undefined || param.xmlUrl == '') param.xmlUrl='/';
			if (param.xmlFile == undefined || param.xmlFile == '') raiseError("Please specify the XML file to load.");
			if (param.cssClassPrefix == undefined) param.cssClassPrefix='';
			if (param.tooltipCaption == undefined) param.tooltipCaption='Click here to view images';			
			
			param.ref = $(this);
			
			//Inizio
			$.ajax({
					type: "GET",
					url: param.xmlUrl + param.xmlFile,
					dataType: "xml",
					success: function(xml) 
					{
						//Parsing xml
						parseXmlFile(xml);														
					},
					error : function() { 
						raiseError("Error while parsing XML file, please check if it's valid.");					
					}
			});
			
			function raiseError(errorMsg) 
			{
				alert("WARNING!\n"+errorMsg);
				return false;
			}					
			
			function parseXmlFile(xml)
			{
				var htmlBuilt='';
				var htmlBuiltGallery='';				
				var contatorePonti = 0;
				var pontiTotali = 0;
				
				//Ambienti o cabine
				var cssTypePostfix = (param.ref.attr("id").indexOf("Cabine")>0) ? "cabine" : "ambienti";
				
				//Elemento NAVE
				$(xml).find('nave').each(function()
				{
					htmlBuilt += '<div class=\"'+param.cssClassPrefix+'_2lvl_content">\n';
					htmlBuilt += '\t<div class=\"'+param.cssClassPrefix+'_2lvl_content_text">\n';
					htmlBuilt += '\t\t<div class="tab_panel_dx"><h2>';
										
					//Nomi NAVI
					var nomiNaviText = '';
					for (n=0; n<=$('nomi nome',this).length; n++)
					{
						if ($('nomi nome:eq('+n+')', this).text()!='')
							nomiNaviText += $('nomi nome:eq('+n+')', this).text()+', ';												
					}
					nomiNaviText = nomiNaviText.substring(0, nomiNaviText.length-2)+'</h2>';					
					htmlBuilt += nomiNaviText;
										
					//Elemento INTRODUZIONE
					for (i=0; i<=$('introduzione',this).length; i++)					
						htmlBuilt += $(this).find('introduzione:eq('+i+')').text();
					htmlBuilt += '<br><br>\n'
					
					//Elemento IMMAGINE NAVE
					htmlBuilt += '\t\t\t<img src="'+$(this).find('immagineNave').text()+'" width="220" height="149" alt="" /></div>\n';
										
					//TAB per ponti
					htmlBuilt += '\t\t\t<div class="tab_panel_sx" style="float:left">\n\t\t\t<ul class="tabs">\n';
					
					pontiTotali = $('ponti',xml).length;
					$(this).find('ponti').each(function()
					{
						//Elementi PONTE
						$(this).find('ponte').each(function()
						{
							htmlBuilt += '\t\t\t\t<li><a href="#">'+$(this).find('nomePonte').text()+'</a></li>\n';
						});
						htmlBuilt += '\t\t\t</ul>\n\n';
					});

					
					//Elemento PONTI
					pontiTotali = $('ponti',xml).length;
					$(this).find('ponti').each(function()
					{
						contatorePonti++;
						var idPonte = '';	
						
						//Elementi PONTE
						htmlBuilt += '\t\t\t<!-- TAB PANES -->\n';
						htmlBuilt += '\t\t\t<div class="panes">\n';						
						
						$(this).find('ponte').each(function()
						{
							idPonte = $(this).attr('id');
							htmlBuilt += '\t\t\t\t<div class="pane" style="height:'+$(this).find('ponteAltezzaPannello').text()+';">\n';
							
							//Elementi PLANIMETRIA
							var planimetria = $(this).find('planimetria');
							htmlBuilt += '\t\t\t\t\t<div class=\"'+param.cssClassPrefix+'_deck_planimetria" style="width:'+planimetria.find('width').text()+'; background-image:url('+planimetria.find('immagine').text()+'); height:'+planimetria.find('height').text()+';">\n';
							
							//Elementi ZONE
							var numeroZona = '';
							var descPonti = '';
							$(this).find('zone').each(function()
							{
								
								$(this).find('zona').each(function()
								{								
									var bulletPlanimetriaPositionLeft = $(this).find('bulletPlanimetriaPositionLeft').text();
									var bulletPlanimetriaPositionTop = $(this).find('bulletPlanimetriaPositionTop').text();																
									var nomeZona = $(this).find('nome').text();																					
									numeroZona = $(this).attr('numero');														
									var ingombro = (numeroZona.length==1) ? "s" : "d";
									var ingombroLongDesc = (numeroZona.length==1) ? "single" : "double";
									var immagini = $(this).find('immagini');
									var numeroImmagini = $(this).find('immagini').find('immagine').length;
									if (numeroImmagini>0)
										htmlBuilt += '\t\t\t\t\t\t<div class=\"'+param.cssClassPrefix+'_'+cssTypePostfix+'_deck_point_'+ingombro+' '+param.cssClassPrefix+'_bullet_planimetria" style="left:'+bulletPlanimetriaPositionLeft+'; top:'+bulletPlanimetriaPositionTop+';"><a href="#" rel="prettyPhoto[s_deck'+idPonte+'p'+numeroZona+']" tooltip="'+param.tooltipCaption+'" title="'+numeroZona+'.'+nomeZona+'">'+numeroZona+'</a></div>\n';							
									else
										htmlBuilt += '\t\t\t\t\t\t<div class=\"'+param.cssClassPrefix+'_'+cssTypePostfix+'_deck_point_'+ingombro+'_inactive '+param.cssClassPrefix+'_bullet_planimetria" style="left:'+bulletPlanimetriaPositionLeft+'; top:'+bulletPlanimetriaPositionTop+';"><a style="cursor: text;" href="Javascript: void(0);">'+numeroZona+'</a></div>\n';							
									
									//Zona Descrizione ponti (listitem sotto il disegno)
									var numeroZona = $(this).attr('numero');														
									var nomeZona = $(this).find('nome').text();																					
									var ingombro = (numeroZona.length==1) ? "single" : "double";
									var numeroImmagini = $(this).find('immagini').find('immagine').length;
									if (numeroImmagini>0)		
										descPonti += '\t\t\t\t\t\t\t<li><span class=\"'+param.cssClassPrefix+'_2lvl_'+cssTypePostfix+'_dx_'+ingombroLongDesc+'_num">'+numeroZona+'</span>'+nomeZona+'</li>\n';
									else
										descPonti += '\t\t\t\t\t\t\t<li><span class=\"'+param.cssClassPrefix+'_2lvl_'+cssTypePostfix+'_dx_'+ingombroLongDesc+'_num_inactive">'+numeroZona+'</span>'+nomeZona+'</li>\n';
									
									//Zona IMMAGINI per PrettyPhoto 
									var nome = $(this).find('nome').text();
									var immagini = $(this).find('immagini');
									
									htmlBuiltGallery='';
									if (immagini.length>0)
									{
										immagini.find('immagine').each(function()
										{									
											var file = $(this).find('file').text();
											var descrizione = $(this).find('descrizione').text();								
											htmlBuiltGallery += '\t\t\t<a href="'+file+'" rel="prettyPhoto[s_deck'+idPonte+'p'+numeroZona+']" description="'+descrizione+'" title="'+numeroZona+'.'+nome+'"></a>\n';
										});																		
									}
									
									//Html per gallery
									htmlBuilt += "\n\t\t\t<!-- GALLERY -->\n"+htmlBuiltGallery+"\t\t\t<!-- /GALLERY -->\n\n";									
									
								});																												
								htmlBuilt += '\t\t\t\t\t</div>\n';
								htmlBuilt += '\t\t\t\t\t<div class="'+param.cssClassPrefix+'_2lvl_ambienti_dx">\n\t\t\t\t\t\t<ul>\n'+descPonti+'\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t';
								
								//Chiusura interna
								htmlBuilt += '\t\t\t<span class="chiusura_div"><!-- --></span>\n';
								htmlBuilt += '\t\t\t\t</div>\n';								
							});			
						});
						htmlBuilt += '\t\t\t</div>\n';														
						htmlBuilt += '\t\t\t<!-- /TAB PANES -->\n\n';							
						htmlBuilt += '\t\t\t<div class="panes_bottom"><!-- --></div>\n';

						//Footer parziale
						htmlBuilt += '\t\t\t</div></div><div class="chiusura_div"></div></div>\n';
						
					});
	

					
					//Footer o separatore
					if (parseInt(contatorePonti) == parseInt(pontiTotali))
						htmlBuilt += '\t\t\t<div class="'+param.cssClassPrefix+'_2lvl_footer"><!--  --></div>\n';
					else
						htmlBuilt += '\t\t\t<div class="'+param.cssClassPrefix+'_2lvl_content_separatore"><!-- --></div>\n';						
				});					
				
				//Assegnamo tutto l' html generato all'oggetto padre usandoun workaround a causa di un baco di IE
				document.getElementById(param.ref.attr("id")).innerHTML="\n"+htmlBuilt+"\n";
				//document.getElementById(param.ref.attr("id")).value="\n"+htmlBuilt+"\n";
								
				//Chiamata a: PrettyPhoto, Panes handler e Tooltip
				$("a[rel^='prettyPhoto']").prettyPhoto();
				$("ul.tabs").tabs("div.panes > div");
				$("."+param.cssClassPrefix+"_deck_planimetria a[title]").tooltip();
			}
		}
	});		
})(jQuery);
