	var arrOfferte = new Array();
	var arrSoggetti = new Array();	
	var arrAPT_offerte = new Array();		
	var arrAPT_soggetti = new Array();	
	var soggettiInAPT = new Array();
	var offerteInAPT = new Array();
	var arrSoggON;	
	var arrPrezziSogg;
	var arrOrdinatoSoggetti = new Array();
	var arrOrdinatoOfferte = new Array();
	var preparaOfferte = true;

	var rep = false;
	var arrTracePar;
	//----
	var CERCA_PRENOTA_MAX_ROOMS = 5;
	var CERCA_PRENOTA_MAX_CHILDREN = 4;	
	var STILE_FIXED = "scroll"
	var STILE_FIRSTPAGE = "noScroll"
	var STILE_PAGER = "noScroll"	



	var tH = '<div class="col2" id="sogg_{{idSoggetto}}_{{idAPT}}_{{keyTiscover}}"><div class="elenco"> \
			 <div class="title"><a id="linkSogg_{{idSoggetto}}" style="cursor:pointer;" onClick="javascript:gotoUrl(\'{{urlDettagli}}\')" >{{nomeSoggetto}}</a></div> \
			 <div class="clear"></div> \
			 <div class="img"><a style="cursor:pointer;" onClick="javascript:gotoUrl(\'{{urlDettagli}}\')" ><img src="{{imgSoggetto}}" width="129" alt="{{nomeSoggetto}}" title="{{nomeSoggetto}}"></a></div>\
			<div class="text"><dl> \
			  <dt class="strong"> \
			  	<dt>{{nomeTipo}}&nbsp;{{imgCategoria}}</dt> \
		 	  <dt>{{indirizzo}}</dt> \
			  <dt>{{nomeLocalita}}</dt> \
			 <dt><div class="buttonGreen" style="display:{{displayPrenota}}">{{strPrenota}}</div></dt> \
			   <dt class="prezzo">{{strPrezzo}}</dt> \
         </dl> \
			</div></div> \
			</div>';

	var tOfferta = '<div class="col2" id="divOfferta_{{idOfferta}}_{{idAPT}}"><div class="offerta" > \
			 <div class="title"><a id="linkOfferta_{{idOfferta}}" style="cursor:pointer;" onClick="javascript:gotoUrl(\'{{link}}\')">{{nomeOfferta}}</a></div></dt> \
			 <div class="clear"></div> \
				<div class="img"><a id="linkOfferta_{{idOfferta}}" style="cursor:pointer;" onClick="javascript:gotoUrl(\'{{link}}\')"><img src="{{imgOfferta}}" alt="{{nomeOfferta}}" title="{{nomeOfferta}}" width="184" ></a></div> \
				<div class="text"> \
					<dl> \
					<dt>{{nomeApt}}</dt> \
					<dt><strong>{{tematica}}</strong></dt> \
					<dt id="nottiOfferta_{{idOfferta}}">{{notti}}</dt> \
					<dt><div class="prezzo"><strong>{{strApartireDa}}&nbsp;{{prezzo}} &euro;</strong></div></dt> \
					</dl> \
				</div></div> \
				</div>';
	
	
	Event.observe(window,'load',start);
	
	
	
	function start()
	{	
				
		setStileDivElenchi()		
		
		addParLinkMenu();	
		setParTraceFromRequest();
		
		
		
		
		//soggetti  -------------------------------------			
		getTabSoggetti();	
		
		//box ricerca e NL-------------------------------
		setBoxNL();		
		setBoxCerca();		
		
		//=== bind tab======
		var tabs = $('tabBox').getElementsByClassName('listab');
		for (var i=0; i < tabs.length ; i++  ) {
			Event.observe(tabs[i], 'click' , tab.click.bindAsEventListener(tab));
		}		
				

		//=== bind point mappa======
		var pointer = $('map').getElementsByClassName('point');
		for (var i=0; i < pointer.length ; i++  ) {
			Event.observe(pointer[i], 'click' , point.click.bindAsEventListener(point));
		}
	
		//=== bind point mappa======
		var pointer = $('map').getElementsByClassName('point');
		for (var i=0; i < pointer.length ; i++  ) {
			Event.observe(pointer[i], 'click' , point.click.bindAsEventListener(point));
			Event.observe(pointer[i], 'mouseover' , point.mouseover.bindAsEventListener(point));
			Event.observe(pointer[i], 'mouseout' , point.mouseout.bindAsEventListener(point));			
		}

		//=== bind closebutton infobox======
		var closeButtons = $('map').getElementsByClassName('close');
		for (var i=0; i < closeButtons.length ; i++  ) {
			Event.observe(closeButtons[i], 'click' , closeButton.click.bindAsEventListener(closeButton));
		}

				
	}
	//---------------------------------------------------------------------------------------------
	
	
	
	//***** FUNZIONI PER REPLACE TRACE DA REQUEST *************************************************
	
	function setParTraceFromRequest() { 
	
		//&utm_source=TESTSOURCE&utm_medium=TESTMEDIUM&utm_campaign=TESTESTATE2010
		var mediumReq = "";
		var sourceReq = "";
		var campaignReq = "";
		var SCHReq = "";
		
		var traceCMP;		
		var traceSource;
		var traceMedium;
		var traceCampaign;
		var traceSch;		
		//------

		
		//array con nome parametri trace
		arrTracePar = new Array();
		arrTracePar[0] = new Array('utm_source', '');
		arrTracePar[1] = new Array('utm_medium', '');
		arrTracePar[2] = new Array('utm_campaign', '');
		arrTracePar[3] = new Array('sch', '');		 		 		
		
	
	
		//verifico se in request presente almeno un parametro trace
		//se parametro presente salvo il valore in arrTracePar
		var query = window.location.search.substring(1); 
		var vars = query.split("&"); 
		for (var i=0;i<vars.length;i++) { 
			var pair = vars[i].split("=");
			for (var p=0;p<arrTracePar.length;p++) { 
				if (pair[0].toLowerCase()==arrTracePar[p][0]){
					arrTracePar[p][1] = pair[1];
					rep = true;					//almeno un par trace è presente in request
				}								
			}			
		} 

		//se almeno un parametro trace in request:
		//1.modifico tutti gli href del documento
		//2.modifico href del menu
		//3.modifico href serachbox
		if (rep){
			var url;
			var newUrl;
			

			var arrLinkEl = document.getElementsByTagName("a");
			for (i=0; i < arrLinkEl.length ; i++  ) {
				//1.ciclo tutti href del documento
				url = arrLinkEl[i].getAttribute('href');
				if (url!=''){
					newUrl = replaceUrl(url, arrTracePar);					
					arrLinkEl[i].href = newUrl;
				}				
			}			

			//menu
			parTrace_menu = replaceUrl(parTrace_menu, arrTracePar);				
			//searchbox
			parTrace_searchbox = replaceUrl(parTrace_searchbox, arrTracePar);	
			//newsletter
			parTrace_nl = replaceUrl(parTrace_nl, arrTracePar);	
		}	
	} 

	function gotoUrl(url){
		url = replaceUrl(url, arrTracePar)
		window.open(url); 
	}	



	function replaceUrl(url, arrTracePar){	
		var i;
		var pair;
		var newUrl;
		var c;
		var urlBase;				
		var urlParams;	
		var arrP;											
		var repStartChar;
		var foundT;
		var isTraceUrl;

		if (rep){
	
			repStartChar = false;		
			isTraceUrl = false;		
			newUrl = '';
			if (url.substring(0,1)=='&'){	//per replace parTrace_searchbox...
				url = '?' + url.substring(1,url.length);
				repStartChar = true;
			}		
			if ((url.indexOf('?')==-1) ){// url senza parametri, non interessa
				return url;
			}
			urlBase = url.split("?")[0];				
			urlParams = url.split("?")[1];						
			newUrl = urlBase;		
			arrP = urlParams.split("&");										
			c = "?";
			for (i=0;i<arrP.length;i++) { 
				par = arrP[i].split("=");
				foundT = false;
				for (var p=0;p<arrTracePar.length;p++) { 
					if (par[0].toLowerCase()==arrTracePar[p][0]){					
						isTraceUrl = true;
						foundT = true;	
						if(arrTracePar[p][1]==''){									
							arrTracePar[p][1] = par[1];
						}
						if (p==3){
							//aggiungo il parametro al nuovo url solo se parametro SCH
							newUrl = newUrl + c + par[0] + '=' + arrTracePar[p][1];
							c = "&";						
						}
						break;			
					}
				}	
				if (!foundT){
					if ((par[0].toLowerCase()=='cmp')){				
						isTraceUrl = true;
					}else{
						newUrl = newUrl + c + par[0] + '=' + par[1];			
					}
				}
			}
			if (isTraceUrl){
				traceCMP = '';
				for (var p=0;p<arrTracePar.length;p++) { 
					if (p!=3){				//sch non deve essere aggiunto in CMP
						traceCMP = addTrace(traceCMP, arrTracePar[p][0], arrTracePar[p][1]);
					}
				}			
				newUrl = newUrl + c + 'CMP=' + traceCMP;
				c = "&";
			}
			
			if (repStartChar){
				newUrl = '&' + newUrl.substring(1,newUrl.length);
			}		
			return(newUrl);	
		}else{
			return(url);
		}		
	}




	function addTrace(CMP,namePar,valPar){
		if (valPar!=''){
			if (CMP == ''){
				CMP = '%3F' + namePar + '%3D'+valPar;
			}else{
				CMP = CMP + '%26'  + namePar + '%3D'+valPar;
			}
		}	
		return CMP;
	}


	//**********************************************************************************************	
	
		
	
	function setStileDivElenchi(){
		$("contentElenchi").removeClassName('scroll');				
		$("contentElenchi").addClassName(classElenchi);						
	}


	function addParLinkMenu(){	
		var link;
		var vociMenu = $("menu").getElementsByTagName("a");		
		for (i=0; i < vociMenu.length ; i++  ) {
			link = vociMenu[i].getAttribute('href');
			if (parTrace_menu!=''){
				link = link + parTrace_menu;
				vociMenu[i].href = link;
			}
		}
	}






	//=== SOGGETTI ================================================================================

	function getTabSoggetti(){		
		getPrezzoSoggetti(basePath);		
	}
	
	
	function getPrezzoSoggetti(basePath){	
		var arrPrezziSoggTmp;
		var strRet;
		var aCapo = "\n";
		
		var url = "/xml/baseprice.csv";
		if (basePath != null){
			url = basePath + url;	
		}					

		new Ajax.Request(url, {method: 'get', 
			onSuccess:function(requester){					
				strRet = requester.responseText;
				if (strRet!=""){
					arrPrezziSogg = strRet.split('\n');	
				}	
				set_PrezzoSoggetti();
				getSoggettiON(basePath);					
							
			}, onFailure:function(requester){						
				set_PrezzoSoggetti();
				strRet = "";
				
				arrPrezziSogg = new Array();
				getSoggettiON(basePath);
						
			}} 
		);	
	}
	
	
	function set_PrezzoSoggetti(){		
		var prezzo;
		for(var i=0;i<arrSoggetti.length;i++){
			for(var p=0;p<arrPrezziSogg.length;p++){
				if (arrPrezziSogg[p].split(",")[0] == arrSoggetti[i][2]){	
					prezzo = trim(arrPrezziSogg[p].split(",")[1]);
					if ((prezzo.indexOf('-')<0)&&(prezzo!='--')&&(prezzo!='')&&(prezzo!=null)){																	
						arrSoggetti[i][15] = preStrPrezzo + '&nbsp;' + prezzo.replace('.', ',') + '&nbsp;' + sufStrPrezzo;					
					}					
					break;
					
				}
			}
		}	

	}	
	
	
	function getSoggettiON(basePath){	
		//files scaricato da :'http://www.tiscover.it/it/impexp/infoterm/6,de/_/infoterminal.xml?encoding=UTF-8&rgnId=RGN27it&user=infotnt&pwd=informatica&dispInfo=1'				
		var arrSoggONtmp;
		var strRet;
		
		var url = "/xml/prenotabili.xml";
		if (basePath != null){
			url = basePath + url;	
		}			

		new Ajax.Request(url, {method: 'get', 
			onSuccess:function(requester){					
				strRet = requester.responseText;	
				if (strRet!=""){									
					strRet = strRet.substr(strRet.indexOf('<accommodation>')+15);
					strRet = strRet.substring(0, strRet.indexOf('</accommodationlist>'));					
					arrSoggONtmp = strRet.split("<accommodation>");				
					arrSoggON = arrSoggONtmp.map(function(s){
						match = 'tiscoverkey';
						startPos = s.indexOf('<'+match+'>');
						endPos = s.indexOf('</'+match+'>');
						return(s.substring(startPos+match.length+2,endPos-startPos));
					})								
				}		

				set_APT_and_Dispo_ArrSoggetti();					
				ordSoggettiForAPT();			
				renderSoggetti();				
				$('tabcontent_1').style.display = 'block';
				$('loading').hide();
				
											
			}, onFailure:function(requester){						
				strRet = "";
				
				arrSoggON = new Array();
				set_APT_and_Dispo_ArrSoggetti();
				

				ordSoggettiForAPT();
				renderSoggetti();				

				$('tabcontent_1').style.display = 'block';	
				$('loading').hide();							
						
			}} 
		);	
	}






	function isInt(x) {
		var y=parseInt(x);
		if (isNaN(y)) return false;
		return x==y && x.toString()==y.toString();
	}


	function set_APT_and_Dispo_ArrSoggetti(){
		for(var i=0;i<arrSoggetti.length;i++){
			arrSoggetti[i][3] = arrSoggON.indexOf(arrSoggetti[i][2])>=0;	
			if (!arrSoggetti[i][3]){
				arrSoggetti[i][11] = "";	//strPrenota
				arrSoggetti[i][14] = "";	//classBtnPrenota											
			}			
			if (arrAPT_soggetti.indexOf(arrSoggetti[i][1])==-1){
				arrAPT_soggetti[arrAPT_soggetti.length] = arrSoggetti[i][1];
			}				
		}	

	}
	
	

	//sorta e mischia array soggetti
	function ordSoggettiForAPT(){
		arrAPT_soggetti.sort(randOrd);
		var randNum;

		for(var i=0;i<arrAPT_soggetti.length;i++){

			soggettiInAPT[i] = arrSoggetti.select(function(Ev) {return Ev[1] == arrAPT_soggetti[i]});
			soggettiInAPT[i] = soggettiInAPT[i].sortBy(				
				function(s){					
					randNum = Math.floor(Math.random()*1000)					
					if (!s[3]){
						randNum = randNum + 1000;							
					}							
					return(randNum);
				}
			);
		}

		var colsLength = 0;
		var rowsLength = 0;
		rowsLength = soggettiInAPT.length;		
		for (var j=0;j<soggettiInAPT.length;j++){
				if (soggettiInAPT[j].length>colsLength){
					colsLength = soggettiInAPT[j].length;
				}
		}	
			
		i = 0;
		for (var a=0;a<colsLength;a++){
			for (var b=0;b<rowsLength;b++){
				if(soggettiInAPT[b][a]){				
					arrOrdinatoSoggetti[i] = soggettiInAPT[b][a];	
					i = i+1;
				}
			}				
		}	
	}




	function renderSoggetti(){
		nrSoggTot = arrOrdinatoSoggetti.length;
		if ( (classElenchi==STILE_FIRSTPAGE) ||(classElenchi==STILE_PAGER)){
			if (isInt(nrSoggTot/nrSoggPerPage)){
				nrPageSogg = parseInt(nrSoggTot/nrSoggPerPage);		
			}else{
				nrPageSogg  = parseInt(nrSoggTot/nrSoggPerPage)+1;
			}
			showPageSoggetti(idPageSogg);
		}else{
			nrSoggPerPage = parseInt(nrSoggTot)
			nrPageSogg = 1;
			showPageSoggetti(idPageSogg);
		}
	}



	function hidePageSoggetti(idPageSogg){
		var toNr = parseInt(nrSoggPerPage * idPageSogg);		
		var fromNr = toNr - nrSoggPerPage +1;
		var nr;			
		if (parseInt(toNr)>parseInt(nrSoggTot)){
			toNr = nrSoggTot;
		}		
		for (var i=fromNr;i<toNr+1;i++){					
			nr = i-1;
			$(arrOrdinatoSoggetti[nr][0]).hide();							
			if ($("lineSogg_" + parseInt(nr))!=null){			
				$("lineSogg_" + parseInt(nr)).hide();
			}
		}			
	}	
	

	function showPageSoggetti(idPage){
		var htmlSoggetto;
		var afterHtml;	
		var nr;	
		var s = 0;
		// nascondo soggetti eventuale pagina attiva
		if (parseInt(idPage)!=parseInt(idPageSogg)){						
			hidePageSoggetti(idPageSogg);
		}			
		var toNr = parseInt(nrSoggPerPage * idPage);		
		var fromNr = toNr - nrSoggPerPage +1;
		if (parseInt(toNr)>parseInt(nrSoggTot)){
			toNr = nrSoggTot;
		}			
		for (var i=fromNr;i<toNr+1;i++){								
			nr = i-1;
			if ($(arrOrdinatoSoggetti[nr][0])!=null){
				new Insertion.Bottom($('tabcontent_1'),$(arrOrdinatoSoggetti[nr][0]));		
				$(arrOrdinatoSoggetti[nr][0]).show();									
				if ($("lineSogg_" + parseInt(nr))!=null){
					new Insertion.Bottom($('tabcontent_1'),$("lineSogg_" + parseInt(nr)));					
					$("lineSogg_" + parseInt(nr)).show();					
				}				
			}else{
				htmlSoggetto = renderSoggetto(arrOrdinatoSoggetti[nr]);								
				if (!IsUneven(s)){
					afterHtml = '<div class="hiddenLIne" id="lineSogg_' + (nr) + '"></div>';	
				}else{
					afterHtml = '';
				}
				new Insertion.Bottom($('tabcontent_1'),htmlSoggetto + afterHtml);		
			
			}	
			s++;	
		}
		
		if ($("pagerSogg")!=null){
			$("pageNumberSogg").innerHTML = idPage;
			if (idPage!=1){
				$("pagBackSogg").show();
			}else{
				$("pagBackSogg").hide();
			}
			if (idPage!=nrPageSogg){
				$("pagNextSogg").show();
			}else{
				$("pagNextSogg").hide();
			}
			
		}
		idPageSogg = idPage;
		
		if ($("pagerSogg")!=null){
			new Insertion.Bottom($('tabcontent_1'),$("pagerSogg"));				
		}				
		if ($("closeElencoSogg")!=null){		
			new Insertion.Bottom($('tabcontent_1'),$("closeElencoSogg"));	
		}
	}	





	
	function renderSoggetto(rowSogg){
		var str = tH;
		var idSoggetto = rowSogg[0].split("_")[1];		
		str = str.replace(/{{idSoggetto}}/gi, idSoggetto);
		str = str.replace(/{{idAPT}}/gi, rowSogg[1]);	
		str = str.replace(/{{keyTiscover}}/gi, rowSogg[2]);					
		str = str.replace(/{{imgSoggetto}}/gi, rowSogg[4]);	
		str = str.replace(/{{urlDettagli}}/gi, rowSogg[5]);	
		str = str.replace(/{{nomeSoggetto}}/gi, rowSogg[6]);	
		str = str.replace(/{{nomeTipo}}/gi, rowSogg[7]);	
		str = str.replace(/{{imgCategoria}}/gi, rowSogg[8]);	
		str = str.replace(/{{indirizzo}}/gi, rowSogg[9]);	
		str = str.replace(/{{nomeLocalita}}/gi, rowSogg[10]);	
		str = str.replace(/{{strPrenota}}/gi, rowSogg[11]);	
		str = str.replace(/{{elServizi}}/gi, rowSogg[12]);			
		str = str.replace(/{{strDettagli}}/gi, rowSogg[13]);	
		str = str.replace(/{{classBtnPrenota}}/gi, rowSogg[14]);	
		str = str.replace(/{{strPrezzo}}/gi, rowSogg[15]);		
		var displayPrenota;	
		if(!rowSogg[3]){
			displayPrenota = "none";
		}else{
			displayPrenota = "block";
		}		
		str = str.replace(/{{displayPrenota}}/gi, displayPrenota);					
		return (str);
	}
	/*	
	0 ->	id div
	1 ->	idAPT
	2 ->	keyTiscover
	3 ->	dispo (true/false)
	4 ->	imgSoggetto
	5 ->	urlDettagli
	6 ->	nomeSoggetto
	7 ->	nomeTipo
	8 ->	imgCategoria
	9 ->	indirizzo
	10 ->	nomeLocalita
	11 ->	strPrenota
	12 ->	elServizi
	13 ->	strDettagli
	14 ->	classBtnPrenota	
	15 ->	strPrezzo
	*/	
	
	
	
	
	
	
	
	
	//=== OFFERTE ==================================================================================
	function getTabOfferte(){
		preparaOfferte = false;
		set_APT_ArrOfferte();	
		ordOfferteForAPT();			
		renderOfferte();						
	}	
	
	function set_APT_ArrOfferte(){
		for(var i=0;i<arrOfferte.length;i++){
			if (arrAPT_offerte.indexOf(arrOfferte[i][1])==-1){
				arrAPT_offerte[arrAPT_offerte.length] = arrOfferte[i][1];
			}				
		}	
	}
		
	
	//sorta e mischia array offerte
	function ordOfferteForAPT(){
		arrAPT_offerte.sort(randOrd);
		var randNum;
		for(var i=0;i<arrAPT_offerte.length;i++){
			offerteInAPT[i] = arrOfferte.select(function(Ev) {return Ev[1] == arrAPT_offerte[i]});
			offerteInAPT[i] = offerteInAPT[i].sortBy(				
				function(s){					
					randNum = Math.floor(Math.random()*1000)					
					if (!s[3]){
						randNum = randNum + 1000;							
					}							
					return(randNum);
				}
			);
		}

		var colsLength = 0;
		var rowsLength = 0;
		rowsLength = offerteInAPT.length;		
		for (var j=0;j<offerteInAPT.length;j++){
				if (offerteInAPT[j].length>colsLength){
					colsLength = offerteInAPT[j].length;
				}
		}	
			
		i = 0;
		for (var a=0;a<colsLength;a++){
			for (var b=0;b<rowsLength;b++){
				if(offerteInAPT[b][a]){				
					arrOrdinatoOfferte[i] = offerteInAPT[b][a];	
					i = i+1;
				}
			}				
		}	
	}




	function renderOfferte(){
		nrOffTot = arrOrdinatoOfferte.length;
		if ( (classElenchi==STILE_FIRSTPAGE) ||(classElenchi==STILE_PAGER)){
			if (isInt(nrOffTot/nrOffPerPage)){
				nrPageOff = parseInt(nrOffTot/nrOffPerPage);		
			}else{
				nrPageOff = parseInt(nrOffTot/nrOffPerPage)+1;
			}
			showPageOfferte(idPageOff);
		}else{
			nrOffPerPage = parseInt(nrOffTot)
			nrPageOff = 1;
			showPageOfferte(idPageOff);		
		}
	}




	function hidePageOfferte(idPageOff){
		var toNr = parseInt(nrOffPerPage * idPageOff);		
		var fromNr = toNr - nrOffPerPage +1;
		var nr;
		if (parseInt(toNr)>parseInt(nrOffTot)){
			toNr = nrOffTot;
		}						
		for (var i=fromNr;i<toNr+1;i++){					
			nr = i-1;
			$(arrOrdinatoOfferte[nr][0]).hide();				
			if ($("lineOff_" + parseInt(nr))!=null){			
				$("lineOff_" + parseInt(nr)).hide();
			}
		}			
	}	



	function showPageOfferte(idPage){
		var htmlOfferta;
		var afterHtml;
		var s = 0;
		var nr;
		// nascondo offerte eventuale pagina attiva
		if (parseInt(idPage)!=parseInt(idPageOff)){			
			hidePageOfferte(idPageOff);
		}		
		var toNr = parseInt(nrOffPerPage * idPage);		
		var fromNr = toNr - nrOffPerPage +1;
		if (parseInt(toNr)>parseInt(nrOffTot)){
			toNr = nrOffTot;
		}		
				
		for (var i=fromNr;i<toNr+1;i++){	
			nr = i-1;							
			if ($(arrOrdinatoOfferte[nr][0])!=null){
				new Insertion.Bottom($('tabcontent_2'),$(arrOrdinatoOfferte[nr][0]));		
				$(arrOrdinatoOfferte[nr][0]).show();	
				if ($("lineOff_" + parseInt(nr))!=null){
					new Insertion.Bottom($('tabcontent_2'),$("lineOff_" + parseInt(nr)));					
					$("lineOff_" + parseInt(nr)).show();					
				}				
			}else{			
				htmlOfferta = renderOfferta(arrOrdinatoOfferte[nr]);								
				if (!IsUneven(s)){
					afterHtml = '<div class="hiddenLIne" id="lineOff_' + (nr) + '"></div>';	
				}else{
					afterHtml = '';
				}				
				new Insertion.Bottom($('tabcontent_2'),htmlOfferta + afterHtml);
			}			
			s++;
		}		
		if ($("pagerOff")!=null){
			$("pageNumberOff").innerHTML = idPage;
			if (idPage!=1){
				$("pagBackOff").show();
			}else{
				$("pagBackOff").hide();
			}
			if (idPage!=nrPageOff){
				$("pagNextOff").show();
			}else{
				$("pagNextOff").hide();
			}			
		}
		idPageOff = idPage;
		
		if ($("pagerOff")!=null){
			new Insertion.Bottom($('tabcontent_2'),$("pagerOff"));
		}				
		if ($("closeElencoOff")!=null){
			new Insertion.Bottom($('tabcontent_2'),$("closeElencoOff"));	
		}				

	}	


	
	function renderOfferta(rowOff){
		var str = tOfferta;
		
		var idOfferta = rowOff[0].split("_")[1];		
			
		str = str.replace(/{{idOfferta}}/gi, idOfferta);
		str = str.replace(/{{idAPT}}/gi, rowOff[1]);	
		str = str.replace(/{{nomeOfferta}}/gi, rowOff[2]);					
		str = str.replace(/{{nomeAPT}}/gi, rowOff[3]);	
		str = str.replace(/{{prezzo}}/gi, rowOff[4]);				
		str = str.replace(/{{strInfoPrenota}}/gi, rowOff[5]);			
		str = str.replace(/{{testo}}/gi, rowOff[6]);				
		str = str.replace(/{{imgOfferta}}/gi, rowOff[7]);	
		str = str.replace(/{{notti}}/gi, rowOff[8]);	
		str = str.replace(/{{strApartireDa}}/gi, rowOff[9]);	
		str = str.replace(/{{data}}/gi, rowOff[10]);									
		str = str.replace(/{{link}}/gi, rowOff[11]);	
		str = str.replace(/{{tematica}}/gi, rowOff[12]);		
				
		return (str);
	}
	/*	
	0 ->	id div
	1 ->	idAPT
	2 ->	nomeOfferta
	3 ->	nomeAPT	
	4 ->	prezzo
	5 ->	strInfoPrenota
	6 ->	testo
	7 ->	imgOfferta
	8 ->	notti	
	9 ->	strApartireDa	
	10 ->	data	
	11 ->	link		
	12 ->	tematica		
	*/	
	//---------------------------------------------------------------------------------------------
	
	
	
	
	//=== POINT MAPPA ==========================================================================
	var point  = 
	{
		click: function(event) {	
			var myDiv = Event.findElement(event, 'div'); //div point						
			if (myDiv.hasClassName('point')){								
				showThePopup($('infoBox_' + myDiv.id.split('_')[1]));
			}
		},
		mouseover: function(event) {			
			var myDiv = Event.findElement(event, 'div'); //div point
			if (myDiv.hasClassName('point')){						
				showTheImgArea($('imgArea_' + myDiv.id.split('_')[1]));
			}			
		},
		mouseout: function(event) {			
			var myDiv = Event.findElement(event, 'div'); //div point
			if (myDiv.hasClassName('point')){								
				if($('infoBox_' + myDiv.id.split('_')[1]).style.display == 'none'){
					closeTheImgArea($('imgArea_' + myDiv.id.split('_')[1]));
				}
			}
		}  

	}
	
	var closeButton  = {
		click: function(event) {			

			var myDiv = Event.findElement(event, 'div'); //div point
							
			if (myDiv.hasClassName('close')){						
				var divId = myDiv.id.split('_')[1]; 
				closeThePopup($("infoBox_" + divId));
				closeTheImgArea($('imgArea_' + divId));

			}

		} //click
	}	
	
	function closeThePopup(myDiv)
	{
		if(myDiv){
			myDiv.hide();
		}
	}

	function closeTheImgArea(myDiv)
	{
		if(myDiv){
			myDiv.hide();
		}
	}
		
	function showThePopup(myDiv)
	{
		//accendo il div infoBox
		myDiv.show();		
	
		//spengo gli altri div infoBox
		var allDiv = document.getElementsByClassName('infoBox');
		for(i=0;i<allDiv.length;i++){
			if (allDiv[i]!=myDiv){
				allDiv[i].hide();
			}
		}
	}
	

	function closeTheImgArea(myDiv)
	{
		if(myDiv){
			myDiv.hide();
		}
	}
	
	
	function showTheImgArea(myDiv)
	{
		//accendo il div imgArea
		if (myDiv!=null){
			myDiv.show();
		}
			
		//spengo gli altri div imgArea
		var allDiv = document.getElementsByClassName('aree');
		for(i=0;i<allDiv.length;i++){
			if (allDiv[i]!=myDiv){
				allDiv[i].hide();
			}
		}
	}
	//--- END POINT MAPPA ---------------------------------------------------------------
	
	
	
	//=== TABS ==========================================================================
	var tab = {
		click: function(event) {			
			var tmpId;				
			var myTab = Event.findElement(event, 'li'); //div point
			var divId = myTab.id.split('_')[1];
			var tabsContent = $("content").getElementsByClassName('tabcontent');
			for (i=0; i < tabsContent.length ; i++  ) {
				tmpId = tabsContent[i].id.split('_')[1];
				if(tabsContent[i].id != 'tabcontent_' + divId){			
					// spengo gli altri tab
					/*
					$('tab_' + tmpId).removeClassName('tab-ON listab');
					$('tab_' + tmpId).addClassName('tab-OFF listab');
					$('tabimg_' + tmpId).src = "/st187/imagesL/tab-OFFsx.png";
					*/
					tabsContent[i].hide();							
				}else{
					// accendo gli altri tab
					/*
					$('tab_' + tmpId).removeClassName('tab-OFF listab');
					$('tab_' + tmpId).addClassName('tab-ON listab')				
					$('tabimg_' + tmpId).src = "/st187/imagesL/tab-ONsx.png";				
					*/
					if (parseInt(divId) == 2){
						if (preparaOfferte){
							getTabOfferte();							
						}
					}
					tabsContent[i].show();							
				}
			}			
	
		} //click
	}
	//--- END TABS ----------------------------------------------------------------------
	


	function randOrd(){
		return (Math.round(Math.random())-0.5);
	}
	



	/****************************************************************************************/
	/** BOX RICERCA e NL ********************************************************************/
	/****************************************************************************************/


	function setBoxNL() {
		//=== bind button send NL ======					
		Event.observe('btnNL', 'click', function(event) {					
			iscriviNL(lang);
			return false;
		}); 		
			
		//=== bind submit NL  ======					
		Event.observe('formNl', 'submit', function(event) {		
			return Event.stop(event);        
			return false;
		}); 	
	}

	
	function iscriviNL(lang){
		var url = $("formNl").action + '?Email='+encodeURIComponent($("Email").value);
		if (parTrace_nl!=""){ 
			if (parTrace_nl.substring(0,1) == '?'){
				parTrace_nl = '&' + parTrace_nl.substring(1,parTrace_nl.length);
			}
			url = url + parTrace_nl;
		}	
				
		window.open(url);		
	}


	function setBoxCerca() {
		
		cercaPrenota_restore_default_values();						

		//observe dataFrom
		new Form.Element.Observer('cP_dateFrom',0.2,  
			function(el, value){		  	
				cercaPrenota_dateChanged(value);				
			}
		)
							
		//observe n° notti
		new Form.Element.Observer('cP_numberOfNights',0.2,  
			function(el, value){		  	
				cercaPrenota_nightsChanged(value);
			}
		)		



		//observe n° alloggi
		new Form.Element.EventObserver('cP_rooms',
			function(el, value){		  	
				cercaPrenota_showRooms(value);
			}
		)


		//observe n° bambini
		new Form.Element.EventObserver('cP_room' + 1 + '_children',  
			function(el, value){		  						
				cercaPrenota_showChildrenAge(1, value);
			}
		)				
		new Form.Element.EventObserver('cP_room' + 2 + '_children',
			function(el, value){		  						
				cercaPrenota_showChildrenAge(2, value);
			}
		)	
		new Form.Element.EventObserver('cP_room' + 3 + '_children',
			function(el, value){		  						
				cercaPrenota_showChildrenAge(3, value);
			}
		)		
		new Form.Element.EventObserver('cP_room' + 4 + '_children',  
			function(el, value){		  						
				cercaPrenota_showChildrenAge(4, value);
			}
		)				
		new Form.Element.EventObserver('cP_room' + 5 + '_children',
			function(el, value){		  						
				cercaPrenota_showChildrenAge(5, value);
			}
		)				
		
		//=== bind ok button ricerca ======					
		Event.observe('cP_submit', 'click', function(event) {		
			cerca(lang);
			return false;
		}); 		
			
		//=== bind submit cerca ======					
		Event.observe('cP_form', 'submit', function(event) {		
			return Event.stop(event);        
			return false;
		}); 			
		

		
		
	}



	// *******************************************************************
	// Ripristino il valore di default. Serve per IE e il back del browser
	// che sovrascrive l'impostazione iniziale
	// *******************************************************************

	function cercaPrenota_restore_default_values(){
		// preparo gli oggetti
		var numberOfNights = $("cP_numberOfNights");
		var default_numberOfNights = $("cP_default_numberOfNights");
		
		var rooms = $("cP_rooms");
		var default_rooms = $("cP_default_rooms");
		
		var club = $("cP_club");
		var default_club = $("cP_default_club");
	
		var productTypes = new Array();
		var productTypesDefault = new Array()
		var adults = new Array();
		var adultsDefault = new Array();
		var children = new Array();
		var childrenDefault = new Array();
		var childrenAges = new Array();
		var childrenAgesDefault = new Array();
		for (var i = 1; i <= CERCA_PRENOTA_MAX_ROOMS; i++) {
			productTypes[i] = $("cP_room" + i + "_product_type");
			productTypesDefault[i] = $("cP_default_room" + i + "_product_type");
			
			adults[i] = $("cP_room" + i + "_adults");
			adultsDefault[i] = $("cP_default_room" + i + "_adults");
			
			children[i] = $("cP_room" + i + "_children");
			childrenDefault[i] = $("cP_default_room" + i + "_children");
			
			childrenAges[i] = new Array();
			childrenAgesDefault[i] = new Array();
			for (var j = 1; j <= CERCA_PRENOTA_MAX_CHILDREN; j++) {
				childrenAges[i][j] = $("cP_room" + i + "_age" + j);
				childrenAgesDefault[i][j] = $("cP_default_room" + i + "_age" + j);
			}
		}
		
		// aggiorno i valori
		numberOfNights.value = default_numberOfNights.value;
		rooms.value = default_rooms.value;
		if (club && default_club) {
			club.value = default_club.value;
		}
		
		for (var i = 1; i <= 5; i++) {
			productTypes[i].value = productTypesDefault[i].value;
			adults[i].value = adultsDefault[i].value;
			children[i].value = childrenDefault[i].value;
			
			for (var j = 1; j <= 4; j++) {
				childrenAges[i][j].value = childrenAgesDefault[i][j].value;
			}
		}		
		
		// nascondo i campi non necessari
		var rooms = parseInt($('cP_default_rooms').value);
		cercaPrenota_showRooms(rooms);		
		
		
		//setto la data di arrivo e le notti
		caricaDate();	
	}

	
	
	// mostro i dati per le camere
	function cercaPrenota_showRooms(rooms) {
		
		var prefix = 'cP_room_row_';

		
		for (var i = 1; i <= CERCA_PRENOTA_MAX_ROOMS; i++) {
			var room = $(prefix + i);			
			if (room) {
				if (i <= rooms) {
					room.style.display = '';	
					var children = $('cP_room' + i + '_children').value;
					cercaPrenota_showChildrenAge(i, children);
				} else {
					room.style.display = 'none';
					cercaPrenota_showChildrenAge(i, 0);
				}
			}
		}
	}


	// mostro i figli per una data camera
	function cercaPrenota_showChildrenAge(room, children) {
		var prefix = 'cP_child_row_';
		for (var i = 1; i <= CERCA_PRENOTA_MAX_CHILDREN; i++) {
			var child = $(prefix + room + '_' + i);
			
			if (child) {
				if (i <= children) {
					child.style.display = '';
				} else {
					child.style.display = 'none';
				}
			}
		}
	}


	function caricaDate(){			
		//* setto dataArrivo = oggi
		var my_date = new Date();
		my_date.setDate(my_date.getDate()+0);
		$('cP_form').getInputs(null, 'dateFrom')[1].value =  formatData(my_date);
				
		//* setto dataPartenza = oggi +7
		my_date.setDate(my_date.getDate()+parseInt($('cP_default_numberOfNights').value));
		$("cP_endDate").innerHTML = formatData(my_date);
	}	



	function cercaPrenota_nightsChanged(notti){
		var strArrivo = $('cP_form').getInputs(null, 'dateFrom')[1].value;
		var dataPartenza = new Date('20'+strArrivo.split("/")[2], (strArrivo.split("/")[1]-1), strArrivo.split("/")[0]);	
		dataPartenza.setDate(dataPartenza.getDate()+parseInt(notti));
		
		$("cP_endDate").innerHTML = formatData(dataPartenza);
		
	}
	
	function cercaPrenota_dateChanged(strArrivo){
		var dataPartenza = new Date('20'+strArrivo.split("/")[2], (strArrivo.split("/")[1]-1), strArrivo.split("/")[0]);	
		dataPartenza.setDate(dataPartenza.getDate()+parseInt($('cP_numberOfNights').value));
		
		$("cP_endDate").innerHTML = formatData(dataPartenza);
		
	}	
			
	function formatData(data){
		var sGiorno = (data.getDate()<10) ? "0" + data.getDate().toString() : data.getDate().toString(); 
		var sMese = (data.getMonth()<9) ? "0" + (data.getMonth() + 1).toString() : (data.getMonth() + 1).toString();
		var sAnno = data.getFullYear().toString().substr(2);
		var fData = "".concat(sGiorno,"/",sMese,"/",sAnno); 
		return fData;	
	}
	
	
	
	
	function cerca(lang) {
		resettaNonVisibili()
		var rForm = $('cP_form');
		// data From ----------------------
		var dateFrom = $("cP_dateFrom").value;
		var elements = dateFrom.split('/');	dateFrom = elements[0] + '/' + elements[1] + '/20' + elements[2];

		// eccezione: se ligua francese mando a tiscover inglese
		if (lang.toUpperCase() == "FR"){
			var langTiscover = "EN";
		}else{
			var langTiscover = lang;		
		}
		
		//compongo url form	---------------
		var url = "http://www.visittrentino.it/" + langTiscover + "/dove_dormire/strutture/risultati?availability.dateFrom=" + dateFrom + "&availability.numberOfNights=" + $("cP_numberOfNights").value + "&availability.rooms=" + $("cP_rooms").value + "&destination=" + $("regionId").value + "&availability.club=" + $("cP_club").value + "&availability.accomodation=-1" + "&availability.room_1.productType=" + $("cP_room1_product_type").value + "&availability.room_2.productType=" + $("cP_room2_product_type").value	  + "&availability.room_3.productType=" + $("cP_room3_product_type").value	  + "&availability.room_4.productType=" + $("cP_room4_product_type").value	  + "&availability.room_5.productType=" + $("cP_room5_product_type").value	  + "&availability.room_1.adults=" + $("cP_room1_adults").value	  + "&availability.room_2.adults=" + $("cP_room2_adults").value	  + "&availability.room_3.adults=" + $("cP_room3_adults").value	  + "&availability.room_4.adults=" + $("cP_room4_adults").value	  + "&availability.room_5.adults=" + $("cP_room5_adults").value	  + "&availability.room_1.children=" + $("cP_room1_children").value	  + "&availability.room_2.children=" + $("cP_room2_children").value	  + "&availability.room_3.children=" + $("cP_room3_children").value	  + "&availability.room_4.children=" + $("cP_room4_children").value	  + "&availability.room_5.children=" + $("cP_room5_children").value	  + "&availability.room_1.children.age_0=" + $("cP_room1_age1").value	  + "&availability.room_1.children.age_1=" + $("cP_room1_age2").value	  + "&availability.room_1.children.age_2=" + $("cP_room1_age3").value	  + "&availability.room_1.children.age_3=" + $("cP_room1_age4").value	  + "&availability.room_2.children.age_0=" + $("cP_room2_age1").value	  + "&availability.room_2.children.age_1=" + $("cP_room2_age2").value	  + "&availability.room_2.children.age_2=" + $("cP_room2_age3").value	  + "&availability.room_2.children.age_3=" + $("cP_room2_age4").value	  + "&availability.room_3.children.age_0=" + $("cP_room3_age1").value	  + "&availability.room_3.children.age_1=" + $("cP_room3_age2").value	  + "&availability.room_3.children.age_2=" + $("cP_room3_age3").value	  + "&availability.room_3.children.age_3=" + $("cP_room3_age4").value	  + "&availability.room_4.children.age_0=" + $("cP_room4_age1").value	  + "&availability.room_4.children.age_1=" + $("cP_room4_age2").value	  + "&availability.room_4.children.age_2=" + $("cP_room4_age3").value	  + "&availability.room_4.children.age_3=" + $("cP_room4_age4").value	  + "&availability.room_5.children.age_0=" + $("cP_room5_age1").value	  + "&availability.room_5.children.age_1=" + $("cP_room5_age2").value	  + "&availability.room_5.children.age_2=" + $("cP_room5_age3").value + "&availability.room_5.children.age_3=" + $("cP_room5_age4").value;		
		if (parTrace_searchbox!=null)	url += parTrace_searchbox;
		window.open(url);


	}		
	

	function resettaNonVisibili(){	
		var vis;
		var productTypes = new Array();
		var productTypesDefault = new Array()
		var adults = new Array();
		var adultsDefault = new Array();
		var children = new Array();
		var childrenDefault = new Array();
		var childrenAges = new Array();
		var childrenAgesDefault = new Array();
		var nrBambini;
		
		var rooms = $("cP_rooms").value;

		for (var i = 1; i <= CERCA_PRENOTA_MAX_ROOMS; i++) {
			vis = true;
			if (parseInt(i)>parseInt(rooms)){
				vis = false;			
			}
									
			productTypes[i] = $("cP_room" + i + "_product_type");
			productTypesDefault[i] = $("cP_default_room" + i + "_product_type");			
			adults[i] = $("cP_room" + i + "_adults");
			adultsDefault[i] = $("cP_default_room" + i + "_adults");
			children[i] = $("cP_room" + i + "_children");
			childrenDefault[i] = $("cP_default_room" + i + "_children");
			if (!vis){
				productTypes[i].value = productTypesDefault[i].value;
				adults[i].value = adultsDefault[i].value;
				children[i].value = childrenDefault[i].value;	//nrBambini
				nrBambini = children[i].value
			}			
			
			childrenAges[i] = new Array();
			childrenAgesDefault[i] = new Array();
			// ciclo select età bambini
			for (var j = 1; j <= CERCA_PRENOTA_MAX_CHILDREN; j++) {
				childrenAges[i][j] = $("cP_room" + i + "_age" + j);
				childrenAgesDefault[i][j] = $("cP_default_room" + i + "_age" + j);
				if (parseInt(j)>parseInt(children[i].value)){
					childrenAges[i][j].value = childrenAgesDefault[i][j].value;
				}
			}
			
		}		
	}
	
	
	
	

	/****************************************************************************************/
	/** ALTRE **************************************************************************/
	/****************************************************************************************/	
	
	function openHome(){

		if (urlHome!=""){
			if (parTrace_menu!=''){
				urlHome = urlHome + parTrace_menu;
			}			 
			window.open(urlHome);			
		}
	}
	
	
	
	function IsUneven(numero)
	{
	    if (isNaN(numero) == false)
	    {
	        return (numero %2 == 1 ?  false : true);
	    }
	    else
	    {
	        return null;
	    }
	}
		
		
		
		
		
	function trim(stringa){
		while (stringa.substring(0,1) == ' '){
		stringa = stringa.substring(1, stringa.length);
		}
		while (stringa.substring(stringa.length-1, stringa.length) == ' '){
			stringa = stringa.substring(0,stringa.length-1);
		}
		return stringa;
	}


