﻿Array.extend({
	mEach:function(fn,bind){
		for (var i in this) {
			if (this.hasOwnProperty(i)) {
				fn.call(bind, this[i], i, this);
			}
		}
	}
});
var mUtils={
	gatValidDate: function(mydate){
		try{
			var dayfield=mydate.split("/")[0]
			var monthfield=mydate.split("/")[1]
			var yearfield=mydate.split("/")[2]
			var dateobj = new Date(yearfield, monthfield-1, dayfield)
			if (dateobj.getMonth()+1==monthfield && dateobj.getDate()==dayfield && dateobj.getFullYear()==yearfield){
				return dateobj
			}
		}catch(e){}
		return false
	},
	getImgNaturalDimentions: function(img) {
        var result={width:0,height:0}
        if( img.naturalHeight ) {
            result.width=img.naturalWidth;
            result.height=img.naturalHeight;
        } else {
            lgi = new Image();
            lgi.src = img.src;
            result.width=lgi.width;
            result.height=lgi.height;
        }
        return result;
    },
		getCenteredPosition: function(element,elHeight,elWidth){
			var result={top:0,left:0}
			if(!element)
				return result;
			if(!elHeight){
				elHeight=element.offsetHeight;
			}
			if(!elWidth){
				elWidth=element.offsetWidth;
			}
			result.top = (document.body.clientHeight/2-elHeight/2)+((e=document.documentElement.scrollTop)?e:document.body.scrollTop); 
			result.left= document.body.clientWidth/2-elWidth/2;
			return result;
		},
		ajax: function(options){
			options = options || {};
			var url = options.url;
			var data="";
			if(options.data){
				data = Object.toQueryString(options.data);
			}else if(options.dataParams){
				data=options.dataParams;
			}
			
			var successCallback = options.successCallback;
			var failureCallback = options.failureCallback;
			var jsonRequest = new Ajax(options.url, {data:data,
		  		onComplete: function(resp){
    		      	var respE=Json.evaluate(resp);
    		        if(!respE.isError){
    		        	if (options.successCallback)
    		          	options.successCallback(respE);
    		      	}else{
    		        	if (options.failureCallback)
    		          	options.failureCallback(respE);
    		       	}
		     	},
		      onFailure: function(resp) {
		      	var respE = Json.evaluate(resp.responseText);
		        if (options.failureCallback)
		        	options.failureCallback(respE);
		     	}
		   	}
			).request();
			return jsonRequest;
		},

    generateLines: function(templateId, props) {
        var template = $(templateId) //document.getElementById(templateId)
        
        // store the request, if any
        var _request = props._request
        if (_request)
            templatesRequest[templateId] = _request
      
        // reset the template to the original state, if any
        var origTemplate = templatesOrig[ templateId ]
        if (origTemplate == undefined)
            templatesOrig[ templateId ] = template.innerHTML
        else
            template.innerHTML = origTemplate
      
        var c = 0
        var specials = {}
      
        var trs = template.getElements( "*[class^=repeatClass]" )

        for (var i = 0; i < trs.length; ++i){
            var tr = trs[i]
            var csp = tr.className.split(" ",2)
            var list = props[ csp[1] ]
            tr.className = tr.className.replace(/repeatClass\s+\S+(\s|$)(.*)/, "$2")

            if (list != null){
                for (var j=0; j < list.length; ++j){
                    specials["even"] = j%2==0 ? "even" : "odd"
                    specials["ord"] = j

                    ntr = tr.parentNode.insertBefore( tr.cloneNode(true), tr )

                    if (ntr.className)
                        ntr.className = mUtils.replace( ntr.className, props, list[j], specials )

                    var MOD_ATTR = { id:1, name:1, safeonclick:1, safestyle:1, value:1 }
                    for (var a in MOD_ATTR){
                        var v = ntr.getAttribute(a)
                        if (!v)
                            continue
                        v = mUtils.replace(v, props, list[j], specials)
                        if (a.substring(0,4)=="safe"){
                            ntr.setAttribute(a.substring(4), v)
                            continue
                        }
                        ntr.setAttribute(a, v)
                    }
                  
                    props["__"+c] = mUtils.replace(ntr.innerHTML, props, list[j], specials)
                    ntr.innerHTML = "%__"+ c++ +"%"
                }
            }

            tr.parentNode.removeChild( tr )
        }
        //alert(template.innerHTML);
        template.innerHTML = mUtils.replace(template.innerHTML, props, {}, {})
        //alert(template.innerHTML);
        template.getElements('img').each(function(img) {
            if (img.getAttribute("safesrc")){
                img.src = img.getAttribute("safesrc");
            }
        })
        template.style.display = ""

    },

    replace: function(s, globals, locals, specials) {
      var out = ""
      var inp = false
      var last = 0
      var i = s.indexOf('%')
      while (i >= 0){
          if ( ! inp ){
              out += s.substring(last, i)
          }
          else {
              var v = s.substring(last+1, i++)
              if ( v.length == 0 )
                  out += "%"
              else if ( v.charAt(0) == "#" && specials[v.substring(1, v.length)] != undefined )
                  out += specials[ v.substring(1, v.length) ]
              else if( v.charAt(0) == "." && locals[v.substring(1, v.length)] != undefined )
                  out += locals[ v.substring(1, v.length) ]
              else if( globals[v] != undefined )
                  out += globals[ v ]
          }

          inp = !inp
          last = i
          i = s.indexOf('%', last+1)
      }

      out += s.substring(last)

      return out
    },
  sendEmailInfo: function(options){
if(window.console) console.log("TAVEGGIA ROOT/javascript/marenauta.js "+options.checkin+" "+options.boatId+" "+options.durata+" "+options.from+" "+options.tel+" "+options.msg+" "+options.prezzo);

  	options=options||{};
  	var hoverDiv;
  	if(options.preStart){
  		options.preStart();
  	}else{
  		hoverDiv = new Element('div').setStyles({'position':'absolute','top':'0px','left':'0px','background-color':'#000000','z-index':1000}).injectInside(document.body);
  		hoverDiv.setOpacity(0.8);
  		hoverDiv.setStyles(getBodySize());
  		hoverDiv.id="asfsadgdsasfa";
  		var loadingText= new Element('div').setStyles({'width':'100%','text-align':'center','font-size':'30px','color':'#FFFFFF','position':'absolute','top':'670px','z-index':1001, 'left':'0px'}).injectAfter(hoverDiv);
  		loadingText.innerHTML="sending...";
  		loadingText.id="asfsadgdsasf";
  	}
  	mUtils.ajax({
        url: "/commands/sendEmailInfo.jsp",
        data: { "checkin": options.checkin, "boatId": options.boatId, "durata": options.durata, "from": options.from, "tel": options.tel, "msg": options.msg, "costruttore": options.costruttore, "modello": options.modello, "comune": options.comune, "prezzo": options.prezzo, "sconto": options.sconto, "prezzoScontato": options.prezzoScontato },
        successCallback: function(respE){
            if(options.callBack){
        		options.callBack(respE);
        	}else{
            	if (respE.result == "OK"){
	            	loadingText.setStyles({'font-size':'20px'});
	            	loadingText.innerHTML="Grazie per averci contattato. <br><br>Un nostro operatore ti contatterà il prima possibile.<br><br><a href=\"javascript:null\" onclick=\"$('"+hoverDiv.id+"').remove();$('"+loadingText.id+"').remove();\" ><img src='/images/prAvanti.png'/>";
	            }else{
	            	alert("Si sono verificati dei problemi durante l'invio del messaggio. Riprovare piu tardi.");
	            }
	       	}
        }
    })
	},

  sendEmail: function(options){
  	options=options||{};
  	var hoverDiv;
  	if(options.preStart){
  		options.preStart();
  	}else{
  		hoverDiv = new Element('div').setStyles({'position':'absolute','top':'0px','left':'0px','background-color':'#000000','z-index':1000}).injectInside(document.body);
  		hoverDiv.setOpacity(0.8);
  		hoverDiv.setStyles(getBodySize());
  		hoverDiv.id="asfsadgdsasfa";
  		var loadingText= new Element('div').setStyles({'width':'100%','text-align':'center','font-size':'30px','color':'#FFFFFF','position':'absolute','top':'670px','z-index':1001, 'left':'0px'}).injectAfter(hoverDiv);
  		loadingText.innerHTML="sending...";
  		loadingText.id="asfsadgdsasf";
  	}
  	mUtils.ajax({
        url: "/commands/sendEmail.jsp",
        data: { fromAddress: options.from, subject:options.subj, body:options.body ,subType:options.subType},
        successCallback: function(respE){
            if(options.callBack){
        		options.callBack(respE);
        	}else{
            	if (respE.result == "OK"){
	            	loadingText.setStyles({'font-size':'20px'});
	            	loadingText.innerHTML="Grazie per averci contattato. <br><br>Un nostro operatore ti contatterà il prima possibile.<br><br><a href=\"javascript:null\" onclick=\"$('"+hoverDiv.id+"').remove();$('"+loadingText.id+"').remove();\" ><img src='/images/prAvanti.png'/>";
	            }else{
	            	alert("Si sono verificati dei problemi durante l'invio del messaggio. Riprovare piu tardi.");
	            }
	       	}
        }
    })
  },
  pushFields: function(fields, cont, extCont){
      f = []; fExt = []
      for (i = 0; i < fields.length; ++i){
          if (fields[i][2]) var a = fExt
          else var a = f
          var fieldLabel=fields[i][0];
          if(fields[i][3])
          	fieldLabel=fields[i][3].fieldLabel;
          a.push('<div class="field"><span class="key">')
          a.push(fieldLabel)
          a.push('&nbsp;</span><span>')
          a.push(fields[i][1])
          a.push('</div></div>')
      }
      extCont.innerHTML = fExt.join("") + extCont.innerHTML
      cont.innerHTML = f.join("") + cont.innerHTML
  }
  ,
  round: function(num, dec, rm0){
      var e = Math.pow(10,dec)
      return Math.round(num*e)/e
      /*
      var ret = Math.round((num*e)/e)
      var d = Math.round((num*e)%e)
      if (d==0
      if (rm0) ret = ret.replace(/[0.]+$/,"")
      */
  },
  startsWith: function(str,key){
  	return (str.match("^"+key)==key)
  },
  showHide: function(ahref){
		var isOpen=ahref.getAttribute("status")=="opened";
		$(ahref.getAttribute("shElement")).style.display=isOpen?"none":"";
		ahref.innerHTML=isOpen?ahref.getAttribute("shMsgClosed"):ahref.getAttribute("shMsgOpened");
		ahref.setAttribute("status",isOpen?"closed":"opened");
	}
}
var mEffects={
  	init: function(){
		    mEffects.createRegioniSel();
		    mEffects.createBasiSel();
		    mEffects.createTipiSel();
  	},
  showShadow: function(element){
  	element.getElement("div.ico").style.left="2px";
  	var shCh=element.getElement("div.shadowChild");
  	if(shCh){
  		shCh.style.display="";
  		return;
  	}
  	var height=parseInt(element.getSize().size.y)+3;
	var width=parseInt(element.getSize().size.x)+6;
	var shadowDiv = new Element('div').setStyles({'position':'absolute','left':'3px','top':'3px','height':height,'width':width}).injectBefore(element.getChildren()[0]);
	
	shadowDiv.className="shadowChild";
	var rightTopShadow = new Element('img').setStyles({'position':'absolute','right':'0','top':'0'}).injectInside(shadowDiv).src="/images/shadow_top_right.png";
	var rightVerticalShadow = new Element('div').setStyles({'position':'absolute','right':'0','top':'12','background-image':'url(/images/shadow_right_vertical.png)','width':'12px','height':(height-24)}).injectInside(shadowDiv);
	var rightBottomShadow = new Element('img').setStyles({'position':'absolute','right':'0','bottom':'0'}).injectInside(shadowDiv).src="/images/shadow_bottom_right.png";
	var bottomHorizonalShadow = new Element('img').setStyles({'position':'absolute','right':'12','bottom':'0','width':(width-24),'height':'12px'}).injectInside(shadowDiv).src="/images/shadow_bottom_horizontal.png";
	var bottomLeftShadow = new Element('img').setStyles({'position':'absolute','left':'0','bottom':'0'}).injectInside(shadowDiv).src="/images/shadow_bottom_left.png";
  },
  hideShadow:function(element){
  	element.getElement("div.ico").style.left="0px";
  	element.getElement("div.shadowChild").style.display="none";
  },
  createShadows: function(container){
  	var container = container || document.documentElement;
  	container.getElementsByClassName("superShadow").each(function(element){
  		showShadow(element);
  	});
  },
	regioniChanged: function(){
		mEffects.createBasiSel();
	},
	typeChanged: function(){
		//mEffects.createRegioniSel({type:mEffects.getTypeFromSelect()});
		mEffects.createRegioniSel();
		mEffects.createBasiSel();
	},
	getTypeFromSelect: function(){
		var boatType="all"
		switch($('tipo').value){
			case "Barca a vela":
				boatType="sails";
			break;
			case "Motoscafo":
				boatType="motors";
			break;
			case "Yacht":
				boatType="yachts";
			break;
			case "Catamarano":
				boatType="catamarans";
            break;
			case "Gulet":
				boatType="gulets";
			break;
			case "Gommone":
				boatType="gommons";
			break;
		}
		return boatType;
	},
	createBasiSel:function(){
		var selb=$('base');
		var selValue=selb.value;
		var selr=$('regione');
		var boatType=mEffects.getTypeFromSelect();
		var isWe=$("durata").value=="2";
		selb.options.length = 1;
    while(selb.length>1){
          selb.remove(selb.length-1);
    }
    if(selr.value==ALLREGVALUE){
	    STATI[ALLREGVALUE].regioni.mEach(function(regione){
	    	regione.basi.mEach(function(base){
	    		var numbarche=0;
	    		if(boatType=="all"){
	    			if(isWe)
	    			    numbarche=base.sailsWE+base.motorsWE+base.catamaransWE+base.guletsWE+base.gommonsWE;
	    			else
	    			    numbarche=base.sails+base.motors+base.catamarans+base.gulets+base.gommons;
	    			
	    		}else{
						if(isWe)
						    numbarche=eval("base."+boatType+"WE");		    		
						else
						    numbarche=eval("base."+boatType);		    		
	    		}
	    		selb.options[selb.options.length] = new Option(base.nome+" ("+(numbarche)+")", base.nome);	    	 	
	    	});
	    });
		}else{
			var currRegion=selr.value;
			if(mUtils.startsWith(currRegion,STATE_ASSETS["ALL_LABEL"].value)){
				currRegion=currRegion.substring(STATE_ASSETS["ALL_LABEL"].value.length,currRegion.length);
			}
			if(STATI[currRegion]){
				STATI[currRegion].regioni.mEach(function(regione){
					regione.basi.each(function(base){
		    	 	if(boatType=="all"){
	    				if(isWe)
	    				    numbarche=base.sailsWE+base.motorsWE+base.catamaransWE+base.guletsWE+base.gommonsWE;
	    				else
	    				    numbarche=base.sails+base.motors+base.catamarans+base.gulets+base.gommons;
		    		}else{
							if(isWe)
							    numbarche=eval("base."+boatType+"WE");		    		
							else
							    numbarche=eval("base."+boatType);		    		
		    		}
		    	 	selb.options[selb.options.length] = new Option(base.nome+" ("+(numbarche)+")", base.nome);	    	 	
		    	});
				});
			}else{
				STATI.mEach(function(STATO){
					if(STATO.stato!=ALLREGVALUE){
						STATO.regioni.mEach(function(regione){
							if(regione.nome==currRegion){
								regione.basi.each(function(base){
					    	 	if(boatType=="all"){
				    				if(isWe)
				    				    numbarche=base.sailsWE+base.motorsWE+base.catamaransWE+base.guletsWE+base.gommonsWE;
				    				else
				    				    numbarche=base.sails+base.motors+base.catamarans+base.gulets+base.gommons;
					    		}else{
										if(isWe)
										    numbarche=eval("base."+boatType+"WE");		    		
										else
										    numbarche=eval("base."+boatType);		    		
					    		}
					    	 	selb.options[selb.options.length] = new Option(base.nome+" ("+(numbarche)+")", base.nome);	    	 	
					    	});
					    	return;
					    }
						});
					}
				});
			}
		}
		if(selValue)selb.value=selValue;
	},
	createRegioniSel: function(){
		//options=options||{};
		var boatType=mEffects.getTypeFromSelect();
		var isWe=$("durata").value=="2";
		var sel=$('regione');
		var selValue=sel.value;
        sel.options.length = 0;
        sel.innerHTML="";
        STATI.mEach(function(STATO){
        	if(STATO.stato==ALLREGVALUE){
        		var numBarcheAll=0;
        		STATI.mEach(function(STATOX){
        			if(STATOX.stato!=ALLREGVALUE){
    	    			STATOX.regioni.mEach(function(region){
    		    			if(boatType=="all"){
    		    				if(isWe)
    		    				    numBarcheAll+=region.sailsWE+region.motorsWE+region.yachtsWE+region.catamaransWE+region.guletsWE+region.gommonsWE;
    		    				else
    		    				    numBarcheAll+=region.sails+region.motors+region.yachts+region.catamarans+region.gulets+region.gommons;
    		    			}else{
    		    			    if(isWe)
    		    			        numBarcheAll+=eval("region."+boatType+"WE");
    		    			    else
    		    				    numBarcheAll+=eval("region."+boatType);
    		    			}
    		    		});
    		    	}
    	    	});
        		var opt = document.createElement("option");
    				opt.value = ALLREGVALUE;
    				opt.appendChild(document.createTextNode(eval("STATO.assets."+globalLang)+" ("+numBarcheAll+")"));
        		sel.appendChild(opt);
        	}else{
    	    	var numBarcheStato=0;
    	    	STATO.regioni.mEach(function(region){
    	    		if(boatType=="all"){
        				if(isWe)
	    				    numBarcheStato+=region.sailsWE+region.motorsWE+region.yachtsWE+region.catamaransWE+region.guletsWE+region.gommonsWE;
	    				else
	    				    numBarcheStato+=region.sails+region.motors+region.yachts+region.catamarans+region.gulets+region.gommons;
        			}else{
        				if(isWe)
        				    numBarcheStato+=eval("region."+boatType+"WE");
        				else
        				    numBarcheStato+=eval("region."+boatType);
        			}
    	    	});
    	    	var oGroup = document.createElement('optgroup');
    	    	oGroup.label=eval("STATO.assets."+globalLang);
    	    	var opt = document.createElement("option");
    				opt.value = STATE_ASSETS["ALL_LABEL"].value+STATO.stato;
    				opt.appendChild(document.createTextNode(eval('STATE_ASSETS["ALL_LABEL"].'+globalLang)+eval("STATO.assets."+globalLang)+" ("+numBarcheStato+")"));
    	    	oGroup.appendChild(opt);
    	    	STATO.regioni.mEach(function(region){
    		    	if(region.nome!=STATO.stato)
    			    {
    			    	var numBarcheR=0;
    				    if(boatType=="all"){
    	    			    if(isWe)	
    	    			        numBarcheR+=region.sailsWE+region.motorsWE+region.yachtsWE+region.catamaransWE+region.guletsWE+region.gommonsWE;
    	    				else    
    	    				    numBarcheR+=region.sails+region.motors+region.yachts+region.catamarans+region.gulets+region.gommons;
    	    			}else{
    	    				if(isWe)
    	    				    numBarcheR+=eval("region."+boatType+"WE");
    	    				else
    	    				    numBarcheR+=eval("region."+boatType);
    	    			}
    			    	var sellabel=region.nome;
    			    	if(region.assets && eval("region.assets."+globalLang))
    			    		sellabel=eval("region.assets."+globalLang);
    			    	var opt = document.createElement("option");
    						opt.value = region.nome;
    						opt.appendChild(document.createTextNode(sellabel+" ("+ (numBarcheR) + ")"));
    			    	oGroup.appendChild(opt);
    			    }
    		    });
    	    	sel.appendChild(oGroup);
    	    }
        });
        if(selValue)sel.value=selValue;
	},
	createTipiSel: function(){
		var selt=$('tipo');
    TIPI.each(function(tipo){
    	selt[selt.length] = new Option(eval("tipo.label_"+globalLang),tipo.tipo);
    });
	},

	setLoading: function(options){
	  	var styles=options.styles||{};
    
	    $("bodyt").getElements(".bodytModule").each( function(element){
	        try{
	            element.setStyles({'display':'none'});
	        }catch(e){;}
	    })
	  	while($('loadingDiv')){
	  		$('loadingDiv').remove();
	  	}
	  	
	  	var loadingDiv = new Element('div').setStyles(styles).setProperty('id', 'loadingDiv').injectInside($('bodytchild'));
	  	loadingDiv.innerHTML="<center><div id='loadinginside'><img src='/images/ajax-loader.gif'/></div>";	
	},

	setLoadingTav: function(options){
	  	var styles=options.styles||{};
    
	    $("bodyContainer").getElements("showBoat").each( function(element){
	        try{
	            element.setStyles({'display':'none'});
	        }catch(e){;}
	    })
	  	while($('loadingDiv')){
	  		$('loadingDiv').remove();
	  	}
	  	
	  	var loadingDiv = new Element('div').setStyles(styles).setProperty('id', 'loadingDiv').injectInside($('bodytchild'));
	  	loadingDiv.innerHTML="<center><div id='loadinginside'><img src='/images/ajax-loader.gif'/></div>";	
	},

	stopLoading: function(divE){
		$(divE).style.display="";
	  	(function(){try{$('loadingDiv').remove();}catch(e){}}).delay(10);
	},
	setStyles: function(options){
		options=options||{};
 		var styles  = options.styles;
 		var element = options.element;
 		options.element.style.zIndex=1000;
 		var startOpacity = options.startOpacity;
 		if(startOpacity)
 			element.setOpacity(startOpacity);
 		var fx = new Fx.Styles(element, {'duration':300, 'wait':false,'onComplete':function(){
 			var endOpacity = options.endOpacity;
 			if(endOpacity){
 				var fx2 = new Fx.Styles(element, {'duration':300, 'wait':false});
 				fx2.start({'opacity':endOpacity});
 			}
 		}});
 		fx.stop();
 		fx.start(styles);
 	},
  setLMHoverFx: function(element){
		var fx = new Fx.Styles(element, {duration:300, wait:false});
		element.addEvent('mouseenter', function(){
			fx.stop();
			fx.set({'color': '#5C9DDE'});
		});
		element.addEvent('mouseleave', function(){
			fx.start({'color':'#000000'});
		});
		element.addEvent('click', function(e){
			mPersistence.showBarca({evnt:e,data:{id:element.id.substring(3,element.id.length),checkin:element.getElements( '*[class^=hiddenData]' )[0].getAttribute('checkin'),durata:element.getElements( '*[class^=hiddenData]' )[0].getAttribute('durata')}});
		});
	}
}
var mPersistence={
	lastSearchOptions:null,
	init:function(){
		$('myForm').addEvent('submit', function(e) {
        new Event(e).stop();
        if($('date').value!="" && $('durata').value=="")
				$('durata').value=7;
        mPersistence.searchBoats({action:$('myForm').action,params:$('myForm').toQueryString()});
  	});
    mUtils.pushFields(FIELDS, $("descriptionLeft"), $("extFields"))
	},
	searchBoats:function(options){
		mPersistence.lastSearchOptions=options;
		options=options || {};
		options.action=options.action||$('myForm').action;
		options.params=options.params||"";
		$("dynamicStuff").style.display="";
		mEffects.setLoading({div:'boatResults'});
		//var safeParams=options.params.replace(/[&]+/g, "$");
		var safeParams=historyIFunctions.getSafeParams(options.params);

		dhtmlHistory.add('f:searchBoatsH,i:'+safeParams,{
			'funct':historyIFunctions.searchBoatsM, 
			'data':options
		});
		mUtils.ajax({
			url: options.action,
			dataParams:options.params,
            successCallback: mPersistence.searchCallback
        });
	},
	getLastMinutes:function(options){
		options=options||{};
		options.params=options.params||{};
		options.page=options.page||0;
		$('LMContainer').style.display="none";
		$('LMLoading').style.display="";
		var dataDiv=$('LMDiv').getElements( "*[class^=pageData]" )[0];
	    var page=dataDiv.getAttribute("page");		
	    if(page.indexOf("%")!=-1)
	    	page=0;
	    
	    options.params.page=parseInt(page)+parseInt(options.page);
		mUtils.ajax({
			url: '/commands/lastMinute.jsp',
			dataParams:options.params,
            successCallback: mPersistence.getLastMinutesCalback
        });
	},
	getLastMinutesCalback:function(respE){
		mUtils.generateLines( 'LMDiv', respE );
		$('LMContainer').style.display="";
		$('LMLoading').style.display="none";	
		var lmList = $('LMDiv').getElementsByClassName('LMRow');
		for(i=0;i<lmList.length;i++){
			mEffects.setLMHoverFx(lmList[i]);	
		}
		if(respE.page==0)
			$('LMPrec').style.display="none";
		if(respE.page==respE.lastPage)
			$('LMSucc').style.display="none";
	},
	searchBoatsX:function(options){
		options=options || {};
		options.action=options.action||$('myForm').action;
		options.params=options.params||"";
		$("dynamicStuff").style.display="";
		mEffects.setLoading({div:'boatResults'});
		mUtils.ajax({
			url: options.action,
			dataParams:options.params,
            successCallback: mPersistence.searchCallback
        });
	},
    unloadBarca: function(id){
        mPersistence.searchBoats(mPersistence.lastSearchOptions);
        /*if(!$(id)){
        	mPersistence.searchBoats();
        }else{
        	history.back();
        }
        */
        /*$("showBoat").style.display = "none"
        $("boatResults").style.display = ""
        if(!$(id)){
        	mPersistence.searchBoats();
        }
        */
    },

	showBarca: function(options){
      	var dataA=options.data;
	  		var dataParams="id="+dataA.id;
	  		if(dataA.checkin){
	      	dataParams+="&checkin="+dataA.checkin+"&durata="+dataA.durata;
	      }
	  		
	  		if(options.evnt && options.evnt.ctrlKey){
	  			var locLang = "";
		  		if(dataA.lang){
			  		if(dataA.lang != "it"){
							locLang = "/"+dataA.lang;
		      		dataParams+="&lang="+dataA.lang;
			  		}
		      }
	  			window.open(locLang+'/#f:showBarcaH,i:'+dataParams);
	  			return;
	  		}
		  	$("dynamicStuff").style.display="";
				mEffects.setLoading({/*div:'showBoat'*/});
        mUtils.ajax({
            url: "/commands/showBoat.jsp",
            data: dataA,
            successCallback: function(respE){
                var showBoatDiv = $("showBoat");
                mUtils.generateLines( showBoatDiv.id, respE );
                
                mEffects.stopLoading( showBoatDiv.id );
								boatindex=0;
                $('boatSmallImages').getElements('.sbImg').each(function(element) {
                    if(boatindex>11){
                    	element.getParent().getParent().getParent().style.display="none";
                    }else{
	                    element.style.zIndex=(11-boatindex);
	                    if(boatindex == 0){
	                    		popBox.pop({'element': element,'destination': $("mainImg"),'width': 303,'height': 240,'newSrc': element.src.replace(/small.jpg$/, "big.jpg")});
	                    }
	                    element.addEvent('mouseenter', function(){
	                        element.getParent().getParent().setStyles({'border-width': '1px','border-style': 'solid', 'border-color':'Gray'});
	                    });
	                    element.addEvent('mouseout', function(){
	                        element.getParent().getParent().setStyles({'border-width': '1px','border-style': 'solid', 'border-color':'#D3D3D3'});
	                    });
	                    element.addEvent('click', function(){
	                        popBox.pop({'element': element,'destination': $("mainImg"),'width': 303,'height': 240,'newSrc': element.src.replace(/small.jpg$/, "big.jpg")})
	                    });
                    }
                    boatindex++;
                });
                $("showBoatDurata").value=respE.durata||"7";
                
                if(respE.prezziwe.length==0){
                    $("prezziwediv").style.display="none";
                    if($("showBoatDurata").options[0].value==2)
                        $("showBoatDurata").options[0]=null;
                }else{
                    if($("showBoatDurata").options[0].value!=2)
                        $("showBoatDurata").add(new Option("week-end",2),0);
                    $("prezziwediv").style.display="";
                }
                    
                dhtmlHistory.add('f:showBarcaH,i:'+historyIFunctions.getSafeParams(dataParams),{
	        				'funct':historyIFunctions.showBarcaM,
	        				'data':dataA
	        			});
	        			pageTracker._trackPageview("/showBoat"); 
            }
        })
        
	},
	updateCartShowBarca: function(idbarca){
		var selectedDaysArray=new Array();
		var checkin=$("showBoatCheckin").value;
		var durata=$("showBoatDurata").value;
		
		var delIndex1=checkin.indexOf("/");
		var delIndex2=checkin.indexOf("/",delIndex1+1);
		var day=checkin.substring(0,delIndex1);
		var month=checkin.substring(delIndex1+1,delIndex2);
		var year=checkin.substring(delIndex2+1,checkin.length);			
    var currDate=new Date(year+"/"+month+"/"+day);
    for(var i=0;i<durata;i++){
    	selectedDaysArray.push(currDate.getFullYear()+"/"+(currDate.getMonth()+1)+"/"+currDate.getDate());
    	currDate.setDate(currDate.getDate()+1);
    }
    var data = {}
    data["idBarca"] = idbarca
    data["selectedDays"] = selectedDaysArray

    mUtils.ajax({
        url: "/commands/updateCart.jsp",
        data: data, //{ id: barca.id },
        successCallback: function(respE){
            var d = $("showBoat").getElementsByClassName("prezzoSelezione")[0]
            /*
            if (!obj.selectedDays.length){
                d.parentNode.style.display = "none"
                return
            }
            */

            var prezzo = respE.prezzo

            var values = d.getElementsByClassName("prezzoVal")
            values[0].innerHTML =  checkin + " " + durata
            if(!Math.round(respE.prezzo.full)){
            	values[1].innerHTML = "<span style='color:red;'>L'imbarcazione non è disponibile nel periodo scelto</span>" // %prezzo%
            	values[2].innerHTML = "N/A" // %sconto%
            	values[3].innerHTML = "N/A&nbsp;&nbsp;" // %prezzoScontato%
            }else{
	            values[1].innerHTML = Math.round(respE.prezzo.full) + " €" // %prezzo%
	
	      			var sconto = (100 - Math.round(100 * prezzo.discountedNotTotal / prezzo.full)) + "%"
	            if (prezzo.discounted != prezzo.discountedNotTotal)
	              sconto = sconto + " + " + Math.round(respE.sconto.TOTALE.percent) + "%"
	            if ((100 - Math.round(100 * prezzo.discountedNotTotal / prezzo.full))==0 )
	          	  sconto = Math.round(respE.sconto.TOTALE.percent) + "%"
	            values[2].innerHTML = sconto // %sconto%
	            values[3].innerHTML = Math.round(prezzo.discounted) + " €"+" &nbsp;&nbsp;" // %prezzoScontato%
	       		}
       		 	d.parentNode.className = ""
            d.parentNode.style.display = ""
        }
    });
	},
	showBarcaPrenota: function(boatId,options){
		var options=options||{};
		//mEffects.setLoading({/*div:'showBoat'*/});
		$('step1Div').style.display="none";
	  	$('stepsLoadingDiv').style.display="";
		(function(){
            var showBoatDiv = $("showBoat")
            
            var dataA={};
	        dataA.id=boatId;
	        try{
		        dataA.checkin=options.checkin;
		        dataA.durata=options.durata;
		  	}catch(e){}
            
            mUtils.ajax({
                url: "/commands/showBoat.jsp",
                data: dataA,
                successCallback: function(respE){
                    window.barca = respE

                    SCONTI = []
                    SCONTIMANYWEEKS = []
                    for (i=0; i<barca.sconti.length; ++i){
                        var sconto = barca.sconti[i]
                        if (sconto.tipo == "FIRSTMINUTE" || sconto.tipo == "LASTMINUTE")
                            SCONTI.push(new StartingDateDiscount(sconto.da,sconto.a,sconto.percento,sconto.tipo))
                        else if (sconto.tipo.match(/[0-9]+WEEKS/))
                            SCONTIMANYWEEKS.push(new ManyDaysDiscount(sconto.durata,-1,sconto.percento,sconto.tipo))
                        else if (sconto.tipo == "PROMOZIONE")
                            SCONTI.push(new PromotionDiscount(sconto.sDate,sconto.eDate,sconto.percento,sconto.tipo))
                    }
                    SCONTIMANYWEEKS.sort( function(a,b){return b.from - a.from} )
                    MAX_SCONTO = barca.maxSconto
                    mUtils.generateLines( "showBoat", respE )
                    //mEffects.stopLoading( boatId );
					boatindex=0;
                    $('boatSmallImages').getElements('.sbImg').each(function(element) {
	                    $('step1Div').style.display="";
                        if(boatindex == 0){
                        		setTimeout(function(){popBox.pop({'element': element,'destination': $("mainImg"),'width': 303,'height': 240,'newSrc': element.src.replace(/small.jpg$/, "big.jpg")});},2000);
                        		boatindex++;
                        }
                        element.addEvent('mouseenter', function(){
                            element.getParent().getParent().setStyles({'border-width': '1px','border-style': 'solid', 'border-color':'Black'});
                        });
                        element.addEvent('mouseout', function(){
                            element.getParent().getParent().setStyles({'border-width': '1px','border-style': 'solid', 'border-color':'#D3D3D3'});
                        });
                        element.addEvent('click', function(){
                            popBox.pop({'element': element,'destination': $("mainImg"),'width': 303,'height': 240,'newSrc': element.src.replace(/small.jpg$/, "big.jpg")})
                        });
                    });
                    $('stepsLoadingDiv').style.display="none";
	        	    mPrenota=new MPrenota();
	        	    mPrenota.selectedCalendar.updateCart();
                }
            })
            //mEffects.stopLoading('showBoat');
		})();
	},
	getBuilders: function(){
		mUtils.ajax({
	        url: "/commands/allBuilders.jsp",
	        data: {},
	        successCallback: function(resp){
	        	var modelli = [];
	        	resp.costruttori.each(function(modello,i){
	        		modelli.push([modello.costruttore,'']);
	        	});
						var completer1 = new Autocompleter.Local($('costruttore'), modelli, {
							delay: 1,
							filterTokens: function() {
								var regex = new RegExp('^' + this.queryValue.escapeRegExp(), 'i');
								return this.tokens.filter(function(token){
									return (regex.test(token[0]) || regex.test(token[1]));
								});
							},
							injectChoice: function(choice) {
								var el = new Element('li')
									.setHTML(this.markQueryValue(choice[0]))
									.adopt(new Element('span', {'class': 'example-info'}).setHTML(this.markQueryValue(choice[1])));
									el.inputValue = choice[0];
									this.addChoiceEvents(el).injectInside(this.choices);
							}
						});                	
	        },
	        failureCallback: function(respObject){}    
   		});
 	},
 	resetMyFormAndSubmit: function(inputx,valuex){
		mPersistence.resetMyForm();
		if(inputx)
			inputx.value=valuex;
		document.myForm.invia.click();
	},
	resetMyForm:function(){
		var f=document.myForm;
		f.tipo.value="all";
		f.regione.value=ALLREGVALUE;
		f.base.value="Tutte le basi";
		f.dataIn.value="";
		f.durata.value="7";
		f.cabine.value="";
		f.lunghezza.value="";
		f.costruttore.value="";
		f.prezzoDa.value="";
		f.prezzoA.value="";
	}
}
var mSlideShow = new Class({
	initialize: function(options){
		options        = options 						|| {};
		this.firstObj  = options.firstObj 	|| 0;
		this.objShown  = options.objShown 	|| 3;
		this.elements  = options.elements   || new Array();
		this.lastObj   = this.elements.length;
		this.container = options.container 	|| document.body
		this.id        = options.id         || "ss";
		this.transitionEffect = options.transitionEffect || Fx.Transitions.Quad.easeOut;
		this.transitionTime = options.transitionTime || 600;
		this.clickOnElementHandler = options.clickOnElementHandler || function(){};
		var localThis=this;
		
		this.prev = new Element('div').setStyles({'width':'43px','padding-top':'59px'}).injectInside(this.container);      
		this.prev.innerHTML='<img src="/images/arrow_left.png"/>';
		this.prev.addEvent('click', function(e) {
			localThis.prevSlide();
		});
		var boxWidth=(parseInt(this.objShown)*150-8)+"px";
		this.boxe = new Element('div').setStyles({'width':boxWidth,'height':'152px','overflow':'hidden'}).injectInside(this.container);
		this.box = new Element('div').setStyles({'width':(parseInt(boxWidth)+100),'height':'152px','overflow':'hidden'}).injectInside(this.boxe);
		
		this.elements.each(function(element,i){
			var style={'width':'150px','overflow':'hidden'};
			var iStyle={'width':'140px','height':'150px','border-width':'1px','border-style':'solid','border-color': '#D3D3D3','cursor':'pointer'};
			if(i >= localThis.objShown){
				style.width='0px';
				iStyle.marginRight='-150px';
			}
			line = new Element('div').setStyles(style).setProperty('id', (localThis.id+'_'+i)).injectInside(localThis.box);
			innerLine = new Element('div').setProperty('id', (localThis.id + "Element" + element.id)).setStyles(iStyle).injectInside(line);
			var innerHtmlX = element.innerHtmlX;
			var id = element.id;
			innerLine.innerHTML=innerHtmlX;
			innerLine.addEvent('click', function(e) {
				localThis.clickOnElementHandler(id);
			});
			innerLine.addEvent('mouseover', function(e) {
				this.setStyles({'border-width':'1px','border-style':'solid','border-color': '#FFA500'});
			});
			innerLine.addEvent('mouseout', function(e) {
				this.setStyles({'border-width':'1px','border-style':'solid','border-color': '#D3D3D3'});
			});
		});
		
		this.next = new Element('div').setStyles({'width':'43px','padding-top':'59px','margin-left':'10px'}).injectInside(this.container);      
		this.next.innerHTML='<img src="/images/arrow_right.png"/>';
		this.next.addEvent('click', function(e) {
			localThis.nextSlide();
		});
		
		this.showHideButtons();
	},
	nextSlide: function(){
		if(this.firstObj+this.objShown>=this.lastObj)
			return;
		var firstDiv=$(this.id+'_'+this.firstObj);
		var fx1 = new Fx.Styles(firstDiv, {duration:this.transitionTime, wait:false, transition: this.transitionEffect});
		var fx1Child = new Fx.Styles(firstDiv.getElement('div'), {duration:this.transitionTime, wait:false, transition: this.transitionEffect});
		
		var lastDiv=$(this.id + '_' + (parseInt(this.firstObj) + parseInt(this.objShown)));
		var fx2 = new Fx.Styles(lastDiv, {duration:this.transitionTime, wait:false, transition: this.transitionEffect});
		var fx2Child = new Fx.Styles(lastDiv.getElement('div'), {duration:this.transitionTime, wait:false, transition: this.transitionEffect});
		
		fx1.start({'width':'0px'});
		fx1Child.start({'margin-left':'-150px'});
		
		fx2Child.start({'margin-left':'0px'});
		fx2.start({'width':'150px'});
		
		this.firstObj++;
		this.showHideButtons();
	},
	prevSlide: function(){
		if(this.firstObj==0)
			return;
		this.firstObj--;
		
		var firstDiv=$(this.id + '_' +(parseInt(this.firstObj) + parseInt(this.objShown)))
		var fx1 = new Fx.Styles(firstDiv, {duration:this.transitionTime, wait:false, transition: this.transitionEffect});
		var fx1Child = new Fx.Styles(firstDiv.getElement('div'), {duration:this.transitionTime, wait:false, transition: this.transitionEffect});
		
		var lastDiv=$(this.id + '_' + this.firstObj);
		var fx2 = new Fx.Styles(lastDiv, {duration:this.transitionTime, wait:false, transition: this.transitionEffect});
		var fx2Child = new Fx.Styles(lastDiv.getElement('div'), {duration:this.transitionTime, wait:false, transition: this.transitionEffect});
		
		fx1.start({'width':'0px'});
		fx1Child.start({'margin-right':'-150px'});
		fx2Child.start({'margin-left':'0px'});
		fx2.start({'width':'150px'});
		this.showHideButtons();
	},
	showHideButtons: function(){
		this.prev.setOpacity('1');
		this.next.setOpacity('1');
		if(this.firstObj==0){
			this.prev.setOpacity('0.3');
		}
		if(this.firstObj+this.objShown>=this.lastObj){
			this.next.setOpacity('0.3');
		}
	}
});
function resizeDisableAll(){
 	if(disableAllGl)
 		disableAllGl.setStyles(getBodySize());
}
function getBodySize(){
  var x,y;
	var test1 = document.body.scrollHeight;
	var test2 = document.body.offsetHeight
	if (test1 > test2) // all but Explorer Mac
	{
		x = document.body.scrollWidth;
		y = document.body.scrollHeight;
	}
	else // Explorer Mac; would also work in Explorer 6 Strict, Mozilla and Safari
	{
		x = document.body.offsetWidth;
		y = document.body.offsetHeight;
	}
  return {"height": y, "width": x};
}
var disableAllGl=null;
function disableBackground(){
		disableAllGl=new Element('div').setStyles({'position':'absolute','top':'0px','left':'0px','z-index':999,'background-color':'#000000'}).injectInside(document.body);
		disableAllGl.setStyles(getBodySize());
		disableAllGl.setOpacity('0.35');
		if(window.ie6){
			$$('select').each(function(select){
				select.style.visibility="hidden";
			});
		}
}
function hideDisableAll(){
	try{
		if(window.ie6){
			$$('select').each(function(select){
				select.style.visibility="visible";
			});
		}
	}catch(e){}
	try{
		disableAllGl.remove();
	}catch(e){}
}

var popBox={
	lastClikked:null,
	lastSuperPopped:null,
	zindex:100,
 	pop: function(options){
 		options         = options || {};
 		var element     = options.element;
 		var destination = options.destination;
 		var top         = options.top;
 		var left        = options.left;
 		var width       = options.width;
 		var height      = options.height;
 		var newSrc      = options.newSrc || element.src;
 		if(popBox.lastClikked==element){
	    	var naturalDim=mUtils.getImgNaturalDimentions(element);
	    	if(naturalDim.width<=303 && naturalDim.height<=240)
	    		return;
	    	popBox.lastSuperPopped=new Element('img').injectInside(document.body);
	    	popBox.lastSuperPopped.setStyles({'position':'absolute','visibility':'hidden'});
	    	popBox.lastSuperPopped.src=element.src;
	    	popBox.lastSuperPopped.setStyles({left:element.getPosition().x+1,top:element.getPosition().y+1, height:element.style.height, width: element.style.width});
	    	popBox.lastSuperPopped.setStyles({'visibility':'visible','z-index':1000});
	    	var originalPosition=element.getPosition();
	    	var fx = new Fx.Styles(popBox.lastSuperPopped, {duration:300, wait:false,onComplete:function(){
	    		popBox.lastSuperPopped.addEvent('click', function(e) {
						if(popBox.lastSuperPopped.disabled)
							return;
						popBox.lastSuperPopped.disabled=true;
						var fx = new Fx.Styles(popBox.lastSuperPopped, {duration:300, wait:false,onComplete:function(){
							popBox.lastSuperPopped.remove()
							popBox.lastSuperPopped=null;
						}});
						fx.start({'left' : originalPosition.x+1,'top': originalPosition.y+1,'width': 303,'height': 240});
						hideDisableAll();
					});
					disableBackground();
					disableAllGl.addEvent('click', function(e){
						if(popBox.lastSuperPopped.disabled)
							return;
						popBox.lastSuperPopped.disabled=true;
						var fx = new Fx.Styles(popBox.lastSuperPopped, {duration:300, wait:false,onComplete:function(){
							popBox.lastSuperPopped.remove()
							popBox.lastSuperPopped=null;
						}});
						fx.start({'left' : originalPosition.x+1,'top': originalPosition.y+1,'width': 303,'height': 240});
						hideDisableAll();
					});	
	    	}});
	    	var wwidth=naturalDim.width;
	    	var hheight=naturalDim.height;
	    	var centeredPosition=mUtils.getCenteredPosition(popBox.lastSuperPopped,hheight,wwidth);
	    	var lleft=centeredPosition.left;
	    	var ttop=centeredPosition.top;
	    	fx.start({'left' : lleft,'top': ttop,'width': wwidth,'height': hheight});
			return;
	 	}
	 	try{popBox.lastClikked.lenteImg.remove()}catch(e){}
	 	if(popBox.lastClikked){
	    	popBox.zindex--;
	    	popBox.lastClikked.style.zIndex=popBox.zindex;
	    	var fxll = new Fx.Styles(popBox.lastClikked, {duration:300, wait:false});
	    	var wwidth=element.style.width;
	    	var hheight=element.style.height;
	    	if(wwidth=="303px"){
		  		wwidth="80px";
		  		hheight="60px"
		  	}
	    	fxll.start({'left' : 0,'top': 0,'width': wwidth,'height': hheight});
	    	if(element==popBox.lastClikked){
	    		popBox.lastClikked=null;
	    		return;
	    	}
	    }
	                            
	    var fxDD = new Fx.Styles(element, {duration:300, wait:false,onComplete:function(){
	    	var naturalDimX=mUtils.getImgNaturalDimentions(this.element);
	    	var localElement=this.element;
	    	var lenteImg=new Element('img').setStyles({visibility:'hidden','position':'absolute','top':(parseInt(this.element.style.top)+188)+'px','left':(parseInt(this.element.style.left)+251)+'px','z-index':1000}).injectAfter(this.element);
	    	if(window.ie6){
	    		lenteImg.src="/images/noimage.gif"
	    		lenteImg.filter='progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled="true", src="/images/icon_lente_small.png", sizingMethod="scale")';
	    	}else{
	    		lenteImg.src="/images/icon_lente_small.png"
	    	}
	    	lenteImg.setOpacity(0.85);
	    	lenteImg.addEvent('click',function(){
	    		localElement.fireEvent("click");
	    	})
	    	this.element.addEvent('mouseenter',function(){
	    		lenteImg.setOpacity(1);
	    	})
	    	this.element.addEvent('mouseout',function(){
	    		lenteImg.setOpacity(0.85);
	    	})
	    	popBox.lastClikked.lenteImg=lenteImg;
	    	this.element.onload = function(){
	    		try{popBox.lastClikked.lenteImg.style.visibility="visible";}catch(e){}
	    	}
	    	/*
	    	this.element.onload = function(){
		    	var lenteImg=new Element('img').setStyles({'position':'absolute','top':(parseInt(this.style.top)+188)+'px','left':(parseInt(this.style.left)+271)+'px','z-index':1000}).injectAfter(this);
		    	if(window.ie6){
		    		lenteImg.src="/images/noimage.gif"
		    		lenteImg.filter='progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled="true", src="/images/icon_lente_small.png", sizingMethod="scale")';
		    	}else{
		    		lenteImg.src="/images/icon_lente_small.png"
		    	}
		    	lenteImg.setOpacity(0.85);
		    	element.addEvent('mouseenter',function(){
		    		lenteImg.setOpacity(1);
		    	})
		    	element.addEvent('mouseout',function(){
		    		lenteImg.setOpacity(0.85);
		    	})
		    	popBox.lastClikked.lenteImg=lenteImg;
	    	};
	    	*/
	    }});
	    element.src=newSrc;
	    popBox.zindex++;
	    element.style.zIndex=popBox.zindex;
	    
	    var xx;
	 	var yy;
	 	if(destination){
	 		var elx=element.getPosition().x;
			var ely=element.getPosition().y;
			xx=parseInt(destination.getPosition().x)-parseInt(elx);
	    	yy=parseInt(destination.getPosition().y)-parseInt(ely);                            	
	    }else{
	    	xx=top;
	    	yy=left;
	    }
	    fxDD.start({'top': yy,'left' : xx,'width': width,'height': height});
		popBox.lastClikked=element;
		//element.style.display="none";
	 },
	 expand:function(options){
	 	mEffects.setStyles(options);
	 }
}
var dblcliked=false;
function updateBase(baseName){
	var selr=$('regione');
	if(selr.selectedIndex==0){
		STATI.mEach(function(STATO){
			if(STATO.stato!=ALLREGVALUE){
				STATO.regioni.mEach(function(region){
					region.basi.each(function(base){
						if(base.nome==baseName){
							if(STATI[region.nome]){
								selr.value=STATE_ASSETS["ALL_LABEL"].value+region.nome;
							}else{
								selr.value=region.nome;
							}
						}
					});
				});
			}
		});
	}
	mEffects.regioniChanged();
	$('base').value=baseName;
}
function selectBase(baseName){
	var selr=$('regione');
	selr.selectedIndex=0;
	updateBase(baseName);
}
function selectRegione(regionName){
	var selr=$('regione');
	selr.value=regionName;
	mEffects.regioniChanged();
	$("base").selectedIndex=0;
}
function shakeObj(obj,numTimes,shakeDistance){
	if(!window.objOrigMargin){
		objOrigMargin=parseInt(obj.style.marginLeft);
	}
	(function(){
		shakeDistance=shakeDistance*(-1);
		numTimes--;
		if(numTimes==0){
			obj.style.marginLeft=objOrigMargin+"px";
			return;
		}else{
			obj.style.marginLeft=(objOrigMargin+shakeDistance)+"px";
			shakeObj(obj,numTimes,shakeDistance);
		}
	}).delay(50);
}
var historyListener = function(newLocation, historyData) {
	try{
		historyIFunctions.hidePoppedElements();
		if(newLocation=="" && historyData==null){
			$('dynamicStuff').style.display="none";
			$('staticStuff').style.display="";
			$('staticStuff').getElements(".bodytModule").each(function(element){
				element.style.display="";
			});
			return;	
		}
		historyData.funct(historyData.data);
	}catch(e){
		initialLocation = dhtmlHistory.getCurrentLocation();
		if(initialLocation!=null){
			try{
				initialLocation=initialLocation.substring(2,initialLocation.length);
				var f=initialLocation.substring(0,initialLocation.indexOf(','));
				initialLocation=initialLocation.substring(f.length+3);
				var i=initialLocation.replace(/[$]+/g, "&");
				i=i.replace(/\^/g, "%20");
				if(f=="searchBoatsH"){
					historyIFunctions.searchBoatsH(i);
				}
				if(f=="showBarcaH"){
					historyIFunctions.showBarcaH(i);
				}
			}catch(e){}
		}
	}
}
var historyListenerPrenota = function(newLocation, historyData) {
	if( window.webkit || window.webkit419 || window.webkit420)
		return;
	if(newLocation=="" && historyData==null){
		try{historyIFunctions.goToStep1M();}catch(e){}
		return;
	}
	historyData.funct(historyData.data);
}
var historyIFunctions={
	searchBoatsH: function(params){
		var action=$('myForm').action;
		mPersistence.searchBoats({action:action,params:params});
		historyIFunctions.populateForm({formName:'myForm',url:params});
	},
	searchBoatsM: function(options){
		mPersistence.searchBoats(options);
		historyIFunctions.populateForm({formName:'myForm',url:options.params});
	},
	showBarcaH: function(params){
		var dataA={};
		var paramsStringsArray=params.split("&");
		for(i=0;i<paramsStringsArray.length;i++){
			try{
				paramString=paramsStringsArray[i];
				paramArray=paramString.split("=");
				if(paramArray.length>1){
					eval("dataA."+paramArray[0]+"='"+paramArray[1]+"'");
				}
			}catch(e){}
			if(!dataA.id){
				dataA.id=params;
			}
		}
		mPersistence.showBarca({data:dataA});
	},
	showBarcaM: function(options){
		mPersistence.showBarca(options);
	},
	goToStep1M: function(){
		mPrenota.goToStep1();
	},
	goToStep2M: function(){
		mPrenota.goToStep2();
	},
	goToStep3M: function(){
		mPrenota.goToStep3();
	},
	hidePoppedElements: function(){
		try{
			closePopxxx();
			hideDisableAll();
			if(popBox.lastSuperPopped){
				popBox.lastSuperPopped.remove();
				popBox.lastSuperPopped=null;
			}
		}catch(e){/*if(console)console.log(e)*/}
	},
	populateForm: function(options){
		options=options||{};
		if(!options.formName || !options.url )
			return;
		var myForm=$('options.formName');
		var postUrl=options.url;
		var paramValueArray=postUrl.split('&');
		paramValueArray.each(function(paramValue){
			var inputName=paramValue.split('=')[0];
			var inputValue=unescape(paramValue.split('=')[1]);
			eval("document.myForm."+inputName).value=inputValue;
			/*if(inputName=="regione")
				mEffects.regioniChanged();
			*/
		});
		if($("tipo").value!="all")
			mEffects.typeChanged();
		if($("regione").value!=ALLREGVALUE)
			mEffects.regioniChanged();
	},
	getSafeParams: function(params){
		var safeParams="";
		params=unescape(params);
		params=params.replace(/ /g,"^")
		var paramValueArray=params.split('&');
		paramValueArray.each(function(paramValue){
			var inputName=paramValue.split('=')[0];
			var inputValue=unescape(paramValue.split('=')[1]);
			if(inputValue.length>0){
				safeParams+=inputName+"="+inputValue+"$";
			}
		});
		safeParams=safeParams.substring(0,safeParams.length-1);
		return safeParams;
	}
}
function openthis(elmnt){
	disableBackground();
	disableAllGl.addEvent('click', closePopxxx);
	var w=elmnt.getAttribute("popWidth");
	var h=elmnt.getAttribute("popHeight");
	
	popBoxxxxContainer = new Element('div').injectInside(document.body);
	popBoxxxxContainer.id="popBoxxxx";
	if(w!="")popBoxxxxContainer.style.width=parseInt(w)+80+'px';
	if(h!="")popBoxxxxContainer.style.height=parseInt(h)+80+'px';
	popBoxxxxContainer.style.zIndex="1002";
	popBoxxxxContainer.style.position="absolute"; 
	popBoxxxxContainer.style.left="50%";
	popBoxxxxContainer.style.marginLeft=-(parseInt(w)+80)/2;
	popBoxxxxContainer.style.top=((topx=(document.body.clientHeight/2-popBoxxxxContainer.offsetHeight/2)+((e=document.documentElement.scrollTop)?e:document.body.scrollTop))>0?topx:0)+'px'
	
	var chiudiHTML = "chiudi";
	if(globalLang == "en"){
		chiudiHTML = "close";
	}else if(globalLang == "de"){
		chiudiHTML = "schließen";
	}
	var titleHTML  ="<div style='padding:5px;'><div>"+elmnt.getAttribute("popText")+"</div></div><div style='float:right;padding:5px;'><a href='javascript:closePopxxx();'>"+chiudiHTML+"</a></div></div>"
	var poppedElmntHTML="<iframe id='poppedElmntHtmlIFrame' width=\""+w+"\" height=\""+(parseInt(h)-25)+"\" frameborder=\"0\" scrolling=\"no\" marginheight=\"0\" marginwidth=\"0\" src=\""+elmnt.getAttribute("popUrl")+"\"></iframe>";
	
	var shadowsArray=[];
	shadowsArray[0]=[];
	shadowsArray[1]=[];
	shadowsArray[2]=[];
	shadowsArray[0][0]=window.ie6?'<td><img src="/images/noimage.gif" style="width:40px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'/images/bigshadow00.png\', sizingMethod=\'scale\');"</td>':'<td><img src="/images/bigshadow00.png" style="width:40px;"/></td>'
	shadowsArray[0][1]=window.ie6?'<td><img src="/images/noimage.gif" style="width:100%;height:40px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'/images/bigshadow01.png\', sizingMethod=\'scale\');"</td>':'<td><img src="/images/bigshadow01.png" style="width:100%;height:40px;"/></td>'
	shadowsArray[0][2]=window.ie6?'<td><img src="/images/noimage.gif" style="width:40px;height:40px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'/images/bigshadow02.png\', sizingMethod=\'scale\');"</td>':'<td><img src="/images/bigshadow02.png" style="width:40px;height:40px;"/></td>'
	shadowsArray[1][0]=window.ie6?'<td style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'/images/bigshadow10.png\', sizingMethod=\'scale\');"></td>':'<td style="background-image: url(/images/bigshadow10.png); background-repeat: repeat-y;"></td>'
	shadowsArray[1][2]=window.ie6?'<td style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'/images/bigshadow12.png\', sizingMethod=\'scale\');"></td>':'<td style="background-image: url(/images/bigshadow12.png); background-repeat: repeat-y;"></td>'
	shadowsArray[2][0]=window.ie6?'<td><img src="/images/noimage.gif" style="width:40px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'/images/bigshadow20.png\', sizingMethod=\'scale\');"</td>':'<td><img src="/images/bigshadow20.png" style="width:40px;"/></td>'
	shadowsArray[2][1]=window.ie6?'<td><img src="/images/noimage.gif" style="width:100%;height:40px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'/images/bigshadow21.png\', sizingMethod=\'scale\');"</td>':'<td><img src="/images/bigshadow21.png" style="width:100%;height:40px;"/></td>'
	shadowsArray[2][2]=window.ie6?'<td><img src="/images/noimage.gif" style="width:100%;height:40px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'/images/bigshadow22.png\', sizingMethod=\'scale\');"</td>':'<td><img src="/images/bigshadow22.png" style="width:100%;height:40px;"/></td>'
	
	/*
	shadowsArray[0][0]=window.ie6?'<td style="height:40px;width:40px;"></td>':'<td><img src="/images/bigshadow00.png" style="width:40px;"/></td>'
	shadowsArray[0][1]=window.ie6?'<td></td>':'<td><img src="/images/bigshadow01.png" style="width:100%;height:40px;"/></td>'
	shadowsArray[0][2]=window.ie6?'<td></td>':'<td><img src="/images/bigshadow02.png" style="width:40px;height:40px;"/></td>'
	shadowsArray[1][0]=window.ie6?'<td></td>':'<td style="background-image: url(/images/bigshadow10.png); background-repeat: repeat-y;"></td>'
	shadowsArray[1][2]=window.ie6?'<td></td>':'<td style="background-image: url(/images/bigshadow12.png); background-repeat: repeat-y;"></td>'
	shadowsArray[2][0]=window.ie6?'<td></td>':'<td><img src="/images/bigshadow20.png" style="width:40px;"/></td>'
	shadowsArray[2][1]=window.ie6?'<td></td>':'<td><img src="/images/bigshadow21.png" style="width:100%;height:40px;"/></td>'
	shadowsArray[2][2]=window.ie6?'<td></td>':'<td><img src="/images/bigshadow22.png" style="width:100%;height:40px;"/></td>'
	*/
	
	
	var shadowTableHTML='<table cellspacing="0" cellpadding="0"><tr>'+shadowsArray[0][0]+shadowsArray[0][1]+shadowsArray[0][2]+'</tr>';
	shadowTableHTML+='<tr>'+shadowsArray[1][0]+'<td style="text-align:left;background-color:#FFFFFF;">'+titleHTML+'</td>'+shadowsArray[1][2]+'</tr>';
	shadowTableHTML+='<tr>'+shadowsArray[1][0]+'<td style="text-align:left;background-color:#FFFFFF;">'+poppedElmntHTML+'</td>'+shadowsArray[1][2]+'</tr>';
	shadowTableHTML+='<tr>'+shadowsArray[2][0]+shadowsArray[2][1]+shadowsArray[2][2]+'</tr>';
	
	popBoxxxxContainer.innerHTML=shadowTableHTML;
	//if(window.ie6)$("poppedElmntHtmlIFrame").src=elmnt.getAttribute("popUrl");
}
function closePopxxx(){
	hideDisableAll();
	try{
		popBoxxxxContainer.remove();
	}catch(e){}
}
function nothing(){	
}
var validator={
	validateEmail: function (v) {
		if(v == null || v.length == 0)
			return false;
		return /\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/.test(v);
	},
	validateNumber:function(v) {
		if(v == null || v.length == 0)
			return false;
		return (!isNaN(v) && !/^\s+$/.test(v));
	}
}
function openCalChooser(el,isWe){
	var iDate=mUtils.gatValidDate(el.value)
	if(!iDate){
		iDate=new Date();
		var daysInDate= 32 - new Date(iDate.getFullYear(), iDate.getMonth(), 32).getDate();
		var missingDaysToEndMonth=daysInDate-iDate.getDate();
		if(missingDaysToEndMonth<7)
			iDate.setDate(iDate.getDate()+missingDaysToEndMonth+1);
	}
	new calendarSingle({el:el,date:iDate,we:isWe})
}
function fixCheckInDate(el,durata){
    if(el.value=="")
        return;
    var checkInDate=mUtils.gatValidDate(el.value)
    var checkInDay=checkInDate.getDay();
    if(durata==2 && checkInDay!=5){
        checkInDate.setDate(checkInDate.getDate()-checkInDay+12)
    }
    if(durata>2 && checkInDay!=6){
        checkInDate.setDate(checkInDate.getDate()-checkInDay-1)
    }
    el.value=checkInDate.getDate()+"/"+(checkInDate.getMonth()+1)+"/"+checkInDate.getFullYear();
}
/*
function isWeekEndClickHandler(el){
    var isWe=el.value=="true";
    
    var currDate=mUtils.gatValidDate(document.myForm.dataIn.value)
    if(!currDate)
        return
    var correctStartingDay=isWe?5:6;
    if(currDate.getDay()!=correctStartingDay){
        var message=isWe?"I weekends partono di Venerdì, impostare la data di partenza!":"I periodi settimanali partono di Sabato, impostare la data di partenza!";
        alert(message);            
        document.myForm.dataIn.value="";
        document.myForm.dataIn.onclick();
    }
}
*/