var ecmsb_version = "2.1"

var istate  = 0;         // Stato inizializzazione API
var iid=0;

var xml_cfg_file;			// Path del file di config
var xml_cfg;					// XML di della config
var xml_cli;					// Path del client SOAP
var xml_lng;					// Codice della lingua
var xml_ini;					// Indica il modulo da inizializzare (book,contact)
var xml_ref;					// ID della struttura

var qrStr = window.location.search;
var spQrStr = qrStr.substring(1);
var arrQrStr = new Array();
// splits each of pair
var arr = spQrStr.split('&');

for (var i=0;i<arr.length;i++){
	// splits each of field-value pair
	var index = arr[i].indexOf('=');
	var key = arr[i].substring(0,index);
	var val = arr[i].substring(index+1);
	// saves each of field-value pair in an array variable
	arrQrStr[key] = val;
}


// *************************
// Carica il file di config
// *************************
function ecmsb_loadconfig() {
	var queries = new ScriptQuery('ecmsb_'+ecmsb_version+'.js').flatten();
  xml_cfg_file = queries["cfg"];
  xml_cli = queries["cli"];
  xml_lng = queries["lng"];
  xml_ini = queries["ini"];
  xml_ref = queries["ref"];
 	fcn("loadconfig","<request><cfgurl>"+xml_cfg_file+"</cfgurl><lingua>"+xml_lng+"</lingua></request>");
}

function stateChanged_loadconfig(xml){ 
 xml_cfg=xml;
 if(xml_ini=="book"){
   if(ecsmb_cfg("results","url")==null){
   	 ecmsb_init();
   }
   else {
    if(arrQrStr["ecmsb_request"]!="" & arrQrStr["ecmsb_request"]!=undefined) {
    ecmsb_wait(true);
  	 istate=255;
    fcn("disponibilita",arrQrStr["ecmsb_request"]);
    }
    else 
      ecmsb_init();
    }
  }

  if(xml_ini=="contact"){
	 istate=255;
   ecmsb_contact(xml_ref,true);
  }
} 

// *********************************
// Inizializza il plug-in desiderato
// *********************************
function ecmsb_init() {fcn("book","<request><cfgurl>"+xml_cfg_file+"</cfgurl><lingua>"+xml_lng+"</lingua></request>");}

// Carica la maschera di ricerca
function stateChanged_book(xml){ 
 xmlDoc = getXmlDoc(xml);
 node = xmlDoc.getElementsByTagName("book")[0];
 var html = '';
 html += node.childNodes[0].childNodes[0].nodeValue;
 var h = o('ecmsb_book');
 h.innerHTML = html;
 
	ecmsb_wait(true);
	if(ecsmb_cfg("area","visible")==1){fcn("aree");}else{istate=istate+1;} 
	if(ecsmb_cfg("localita","visible")==1){fcn("citta");}else{istate=istate+2;} 
	if(ecsmb_cfg("tipologia","visible")==1){fcn("tipologie");}else{istate=istate+4;} 
	if(ecsmb_cfg("categoria","visible")==1){fcn("categorie");}else{istate=istate+8;}
  LoadArrivo();
  LoadPartenza();
  LoadPersone();
  if(ecsmb_cfg("opzioni","visible")==1){LoadOpzioni();}else{istate=istate+128;}
 
} 


function o(id){return document.getElementById(id);}

function s(id){return document.getElementById(id).style;}

function v(id){return document.getElementById(id).value;}

function vi(id){return parseInt(document.getElementById(id).value);}

function or(o){while(o.options.length > 0)	o.remove(0);}

function advopt()	{
	var opt="";
	for(i=0;i<20;i++){
		if(obj = document.getElementById("o_"+i)){
			if(obj.checked) {
				if(opt!="")opt += ",";
        opt += obj.value;
       }
     }
	}
 	return opt;
}



var ScriptQuery = function(scriptPath) {
  this.scriptPath = scriptPath;
}

ScriptQuery.prototype = {
  get: function() {
    var srcRegex = new RegExp(this.scriptPath.replace('.', '\\.') + '(\\?.*)?$');
    var scripts = document.getElementsByTagName("script");
    for (var i = 0; i < scripts.length; i++) {
      var script = scripts[i];
      if (script.src && script.src.match(srcRegex)) {
        var query = script.src.match(/\?([^#]*)(#.*)?/);
        return !query ? '' : query[1];
      }
    }
    return '';
  },
  parse: function() {
    var result = {};
    var query = this.get();
    var components = query.split('&');
    
    for (var i = 0; i < components.length; i++) {
      var pair = components[i].split('=');
      var name = pair[0], value = pair[1];
      
      if (!result[name]) result[name] = [];
      // decode
      if (!value) {
        value = 'true';
      } else {
        try {
          value = decodeURIComponent(value);
        } catch (e) {
          value = unescape(value);
        }
      }
      
      // MacIE way
      var values = result[name];
      values[values.length] = value;
    }
    return result;
  },
  flatten: function() {
    var queries = this.parse();
    for (var name in queries) {
      queries[name] = queries[name][0];
    }
    return queries;
  },
  toString: function() {
    return 'ScriptQuery [path=' + this.scriptPath + ']';
  }
}


function ecmsb_pageprev(np){s('book_'+(np-1)).display = "block";s('book_'+np).display = "none";}

function ecmsb_pagenext(np){s('book_'+(np+1)).display = "block";s('book_'+np).display = "none";}

function ecmsb_skip(p){ecmsb_wait(true);o('ecmsb_position').value=p;fcn("disponibilita");}

function ecmsb_newsearch(){
	var tURL = ecsmb_cfg("search","url");
	if(tURL=="")ecmsb_pageprev(2);
  else window.document.location.href=tURL;
}

function getElementPosition(elemID){
var offsetTrail = document.getElementById(elemID);
var offsetLeft = 0;
var offsetTop = 0;
while (offsetTrail){
offsetLeft += offsetTrail.offsetLeft;
offsetTop += offsetTrail.offsetTop;
offsetTrail = offsetTrail.offsetParent;
}
if (navigator.userAgent.indexOf('Mac') != -1 && typeof document.body.leftMargin != 'undefined'){
offsetLeft += document.body.leftMargin;
offsetTop += document.body.topMargin;
}
return {left:offsetLeft,top:offsetTop};
}

function ecmsb_hideE(idE) { 
if (document.getElementById) {
document.getElementById(idE).style.visibility = 'hidden'; 
document.getElementById(idE).style.height = '5px'; 
} 
else { 
if (document.layers) { 
document.hideShow.visibility = 'hidden'; 
} 
else {
document.all.hideShow.style.visibility = 'hidden'; 
} 
} 
} 

function ecmsb_showE(idE) { 
//if (document.getElementById) {
document.getElementById(idE).style.display = 'block';
//document.getElementById(idE).style.height = 'auto'; 
 
//} 
//else { 
//if (document.layers) { 
//document.hideShow.visibility = 'visible'; 
//} 
//else {
//document.all.hideShow.style.visibility = 'visible'; 
//} 
//} 
} 

function ecmsb_wait(visible) {
  if(visible) {
	var ap = getElementPosition('ecmsb_book');
	s('book_0').top = ap.top;
	s('book_0').left = ap.left;
	s('book_0').width = o('ecmsb_book').offsetWidth;
	s('book_0').height = o('ecmsb_book').offsetHeight;
	s('book_0ani').top = ap.top + o('ecmsb_book').offsetHeight/2 - 20;
	s('book_0ani').left = ap.left + o('ecmsb_book').offsetWidth/2 - 20;
	s('book_0').display = "block";
	s('book_0ani').display = "block";
  } else {
	s('book_0').display = "none";
	s('book_0ani').display = "none";
	}
}

function ecmsb_build_rn(escaped) {
	var xn ='<request>';
  xn += "<id>" + iid + "</id>";
  xn += "<config>" + xml_cfg_file + "</config>";
  xn += "<lingua>" + xml_lng + "</lingua>";
  xn += "<area>" + v('ecmsb_aree') + "</area>";
  xn += "<localita>" + v('ecmsb_localita') + "</localita>";
  xn += "<tipologia>" + v('ecmsb_tipologia') + "</tipologia>";
  xn += "<categoria>" + v('ecmsb_categoria') + "</categoria>";
  xn += "<arrivo>" + v('ecmsb_arrivo') + "</arrivo>";
  xn += "<partenza>" + v('ecmsb_partenza') + "</partenza>";
  xn += "<persone>" + v('ecmsb_persone') + "</persone>";
  xn += "<camera>" + v('ecmsb_camera') + "</camera>";
  xn += "<struttura>" + ecsmb_cfg("struttura","id") + "</struttura>";
  xn += "<opzioni>" + v('ecmsb_opzioni') + "</opzioni>";
  xn += "<results>" + v('ecmsb_results') + "</results>";
  xn += "<position>" + v('ecmsb_position') + "</position>";
  xn += "<advanced>" + advopt() + "</advanced>";
  xn += "<format>HTML</format>";
	xn +='</request>';
//	if(escaped!=true)
//		return escape(xn);
//  else  
		return xn;
}

function ecmsb_areeonchange(){ecmsb_wait(true);istate=istate-2;fcn("citta");}

// Risultati su stessa pagina
function ecmsb_search() {
	ecmsb_wait(true);
  fcn("disponibilita");
}

function check_date(field){
var checkstr = "0123456789";
var DateField = fld = document.getElementById(field);
var Datevalue = "";
var DateTemp = "";
var seperator = "/";
var day;
var month;
var year;
var leap = 0;
var err = 0;
var i;
   err = 0;
   DateValue = DateField.value;
   /* Delete all chars except 0..9 */
   for (i = 0; i < DateValue.length; i++) {
	  if (checkstr.indexOf(DateValue.substr(i,1)) >= 0) {
	     DateTemp = DateTemp + DateValue.substr(i,1);
	  }
   }
   DateValue = DateTemp;
   /* Always change date to 8 digits - string*/
   /* if year is entered as 2-digit / always assume 20xx */
   if (DateValue.length == 6) {
      DateValue = DateValue.substr(0,4) + '20' + DateValue.substr(4,2); }
   if (DateValue.length != 8) {
      err = 19;}
   /* year is wrong if year = 0000 */
   year = DateValue.substr(4,4);
   if (year == 0) {
      err = 20;
   }
   /* Validation of month*/
   month = DateValue.substr(2,2);
   if ((month < 1) || (month > 12)) {
      err = 21;
   }
   /* Validation of day*/
   day = DateValue.substr(0,2);
   if (day < 1) {
     err = 22;
   }
   /* Validation leap-year / february / day */
   if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) {
      leap = 1;
   }
   if ((month == 2) && (leap == 1) && (day > 29)) {
      err = 23;
   }
   if ((month == 2) && (leap != 1) && (day > 28)) {
      err = 24;
   }
   /* Validation of other months */
   if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) {
      err = 25;
   }
   if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) {
      err = 26;
   }
   /* if 00 ist entered, no error, deleting the entry */
   if ((day == 0) && (month == 0) && (year == 00)) {
      err = 0; day = ""; month = ""; year = ""; seperator = "";
      DateField.value = day + seperator + month + seperator + year;
      return false;
   }
   /* if no error, write the completed date to Input-Field (e.g. 13.12.2001) */
   if (err == 0) {
      DateField.value = day + seperator + month + seperator + year;
   		return true;
   }
   return false;
}

// Risultati su pagina diversa
function ecmsb_search2() {
	if(v('ecmsb_tipologia')==""){alert("Selezionare il tipo di alloggio desiderato.");return;}
	if(!check_date('ecmsb_arrivo')){alert("La data di arrivo inserita è errata.");return;}
	if(!check_date('ecmsb_partenza')){alert("La data di partenza inserita è errata.");return;}
	if(v('ecmsb_persone')==""){alert("Non è stato selezionato il numero di persone.");return;}
	o('ecmsb_request').value = ecmsb_build_rn();
	document.ecmsb_form.submit();
}
// Show telephone number
function ecmsb_showtel(idtel,telNo) {
		ecmsb_wait(true);
		var xn ="<request>";
	  xn += "<id>" + idtel + "</id>";
	  xn += "<config>"+xml_cfg_file+"</config>";
	  xn += "<lingua>"+xml_lng+"</lingua>";
	  xn += "<field>"+telNo+"</field>";
		xn += "</request>";
	  fcn("showtel",xn); 
}
// Scheda informazioni
function ecmsb_scheda(id,op) {
	if(op){
	  iid=id;
		ecmsb_wait(true);

		var xn ="<request>";
	  xn += "<id>" + iid + "</id>";
	  xn += "<config>"+xml_cfg_file+"</config>";
	  xn += "<lingua>"+xml_lng+"</lingua>";
		xn += "</request>";
	  fcn("scheda",xn); 
  }else{
	  iid=0;
		s('book_2').display = "block";
		s('book_scheda').display = "none";
  }
}
// Scheda contatto
function ecmsb_contact(id,op) {
	if(op){
	  iid=id;
		ecmsb_wait(true);

		var xn ="<request>";
	  xn += "<id>" + iid + "</id>";
	  xn += "<config>"+xml_cfg_file+"</config>";
	  xn += "<lingua>"+xml_lng+"</lingua>";
		xn += "</request>";

	  fcn("contact",xn); 
  }else{
		if(xml_ini=="contact")closynoshowsme();
	  iid=0;
		s('book_2').display = "block";
		s('book_contact').display = "none";
  }
}
// Prenota ora
function ecmsb_prenota(id,op) {
//	alert("Operazione non possibile");
	if(op){
	  iid=id;
		ecmsb_wait(true);

		var xn ="<request>";
	  xn += "<id>" + iid + "</id>";
	  xn += "<config>"+xml_cfg_file+"</config>";
	  xn += "<lingua>"+arrQrStr["ecmsb_language"]+"</lingua>";
		xn += "</request>";

	  fcn("contact",xn); 
  }else{
	  iid=0;
		s('book_2').display = "block";
		s('book_contact').display = "none";
  }
}

var xhf = new Array(); // ARRAY OF XML-HTTP CALLBACK
var xhr = new Array(); // ARRAY OF XML-HTTP REQUESTS
var xi = new Array(0); // ARRAY OF XML-HTTP REQUEST INDEXES
xi[0] = 1; // FIRST INDEX SET TO 1 MAKING IT AVAILABLE

function fcn(fnc,rn) {
 var xhri = xhrRequest('html',fnc);			
 var url=xml_cli;
 url=url+"?fnc="+fnc;

 if(!rn) {
// 	if(arrQrStr["ecmsb_request"]!="" & arrQrStr["ecmsb_request"]!=undefined){
//  	rn = arrQrStr["ecmsb_request"];
//  }
 } 

 if(!rn) {url=url+"&rn="+ecmsb_build_rn();}else {url=url+"&rn="+rn;}

 url=url+"&sid="+Math.random();

 // alert(rn+"\n\n"+url);

	xhr[xhri].open('GET', url, true);
	xhr[xhri].onreadystatechange = 
  function() {
		if (xhr[xhri].readyState == 4 && xhr[xhri].status == 200) {
			// alert(xhr[xhri].responseText);
      eval(xhf[xhri]+"(xhr[xhri].responseText)");
			xi[xhri] = 1;
			xhr[xhri] = null;
			xhf[xhri] = null;
      if(istate==255){
      	ecmsb_wait(false);
			}      
		}
	};
	xhr[xhri].send(null);
}


function xhrRequest(type,fnc) {
	if (!type) {
		type = 'html';
	}
	// xhrsend IS THE xi POSITION THAT GETS PASSED BACK
	// INITIALIZED TO THE LENGTH OF THE ARRAY(LAST POSITION + 1)
	// IN CASE A FREE RESOURCE ISN'T FOUND IN THE LOOP
	var xhrsend = xi.length; 
	
	// GO THROUGH AVAILABLE xi VALUES
	for (var i=0; i<xi.length; i++) {
		// IF IT'S 1 (AVAILABLE), ALLOCATE IT FOR USE AND BREAK
		if (xi[i] == 1) {
			xi[i] = 0;
			xhrsend = i;
			break;
		}
	}
	// SET TO 0 SINCE IT'S NOW ALLOCATED FOR USE
	xi[xhrsend] = 0;
	// SET UP THE REQUEST
	if (window.ActiveXObject) {
		try {
			xhr[xhrsend] = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				xhr[xhrsend] = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	} else if (window.XMLHttpRequest) {
		xhr[xhrsend] = new XMLHttpRequest();
		if (xhr[xhrsend].overrideMimeType) {
			xhr[xhrsend].overrideMimeType('text/' + type);
		}
	}
  xhf[xhrsend]="stateChanged_" + fnc;
	return (xhrsend);
}

function getXmlDoc(xml)
{
try {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  xmlDoc.async="false";
  xmlDoc.loadXML(xml);
} catch(e) {
  	try {
    	parser=new DOMParser();
    	xmlDoc=parser.parseFromString(xml,"text/xml");
  	} catch(e) {
  		alert(e.message)
  	}
  }
	try {
		return xmlDoc;
	} catch(e) { 
  		alert(e.message)
    }
}

function stateChanged_aree(xml) 
{ 
  var dv=ecsmb_cfg("area","default");
	xmlDoc = getXmlDoc(xml);
 	var h = o('ecmsb_aree');
  or(h);
 	h.disabled = true;
	for(var i = 0; i < xmlDoc.getElementsByTagName("Area").length; i++) {
		var p = document.createElement("OPTION");
    h.options.add(p);
    p.value = xmlDoc.getElementsByTagName("Area")[i].getAttribute("ID");
    p.innerHTML = xmlDoc.getElementsByTagName("Area")[i].firstChild.nodeValue;
    if(p.value==dv)dv=i;
  }
  h.options[dv].selected = true;
  h.disabled = false;
  istate=istate+1;
} 
function stateChanged_citta (xml) 
{ 
  var dv=ecsmb_cfg("localita","default");
	xmlDoc = getXmlDoc(xml);
 	 var h = o('ecmsb_localita');
    or(h);
   h.disabled = true;
		for(var i = 0; i < xmlDoc.getElementsByTagName("citta").length; i++)
    {
        var p = document.createElement("OPTION");
        h.options.add(p);
        p.value = xmlDoc.getElementsByTagName("citta")[i].getAttribute("id");
        p.innerHTML = xmlDoc.getElementsByTagName("citta")[i].firstChild.nodeValue;
	    if(p.value==dv)dv=i;
    }
	  h.options[dv].selected = true;
    h.disabled = false;
    istate=istate+2;
} 
function stateChanged_tipologie(xml) 
{ 
	xmlDoc = getXmlDoc(xml);
 var h = document.ecmsb_form.ecmsb_tipologia;
 or(h);
 h.disabled = true;
 for(var i = 0; i < xmlDoc.getElementsByTagName("Tipologia").length; i++)
    {
        var o = document.createElement("OPTION");
        h.options.add(o);
        o.value = xmlDoc.getElementsByTagName("Tipologia")[i].getAttribute("ID");
        o.innerHTML = xmlDoc.getElementsByTagName("Tipologia")[i].firstChild.nodeValue;
    }
  h.options[ecsmb_cfg("tipologia","default")].selected = true;
  h.disabled = false;
  istate=istate+4;
} 
function stateChanged_categorie(xml) 
{ 
	xmlDoc = getXmlDoc(xml);
 	 var h = document.ecmsb_form.ecmsb_categoria;
   or(h);
   h.disabled = true;
		for(var i = 0; i < xmlDoc.getElementsByTagName("Categoria").length; i++)
    {
        var o = document.createElement("OPTION");
        h.options.add(o);
        o.value = xmlDoc.getElementsByTagName("Categoria")[i].getAttribute("ID");
        o.innerHTML = xmlDoc.getElementsByTagName("Categoria")[i].firstChild.nodeValue;
    }
    h.options[ecsmb_cfg("categoria","default")].selected = true;
    h.disabled = false;
    istate=istate+8;
} 


function stateChanged_disponibilita(xml){
 xmlDoc = getXmlDoc(xml);
 var h = o('book_2page');
 var q = xmlDoc.getElementsByTagName("struttura").length;
 var tot = xmlDoc.getElementsByTagName("result")[0].getAttribute("count");

 var pp = vi('ecmsb_position')-vi('ecmsb_results');
 var pn = vi('ecmsb_position')+vi('ecmsb_results');

 var html = "";
 var stars = "";
 html += '<p align="left">';
 html += '<a href="javascript: ecmsb_newsearch()" class="link_evidenza">Nuova ricerca <span class="raquo">&raquo;</span></a>';
 html += '</p><br /><br />';

 for(var i = 0; i < q; i++){
	 node = xmlDoc.getElementsByTagName("struttura")[i];
	 html += node.childNodes[0].childNodes[0].nodeValue;
 }

 html += '<div id="row" style="height:100px;"><div class="c1">&nbsp;</div><div class="c2" style="text-align:center">';
 if(pp > -1) html += '<a href="javascript: ecmsb_skip('+pp+')" class="link_evidenza"><span class="raquo">&laquo;</span> Indietro</a>&nbsp;&nbsp;';
 if(pn<tot) html += '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript: ecmsb_skip('+pn+')" class="link_evidenza">Avanti <span class="raquo">&raquo;</span></a>';
 html += '</div><div class="c3"></div>';

 h.innerHTML = html;

 s('book_1').display = "none";
 s('book_2').display = "block";
} 

function stateChanged_scheda(xml){ 
 xmlDoc = getXmlDoc(xml);
 node = xmlDoc.getElementsByTagName("struttura")[0];
 var h = o('book_scheda');
 var html = '';
 html += node.childNodes[0].childNodes[0].nodeValue;
 h.innerHTML = html;
 s('book_2').display = "none";
 s('book_scheda').display = "block";
 if(o('map_canvas')!=undefined){
   drawMap(o('lat').value,o('lon').value);
 }
} 

function stateChanged_contact(xml){ 
 xmlDoc = getXmlDoc(xml);
 node = xmlDoc.getElementsByTagName("struttura")[0];
 var h = o('book_contact');
 var html = '';
 html += node.childNodes[0].childNodes[0].nodeValue;
 h.innerHTML = html;
 s('book_scheda').display = "none";
 s('book_2').display = "none";
 s('book_contact').display = "block";
} 

function stateChanged_showtel(xml){
 xmlDoc = getXmlDoc(xml);
 node=xmlDoc.getElementsByTagName("target")[0];
 target=node.childNodes[0].nodeValue;
 node=xmlDoc.getElementsByTagName("tel")[0];
 tel=node.childNodes[0].nodeValue;
 document.getElementById(target).innerHTML = tel;
 if(document.getElementById(target+"a")!=undefined){
		document.getElementById(target+"a").innerHTML = tel;
 }
} 

function ecsmb_cfg(n,att){
 xmlDoc = getXmlDoc(xml_cfg);
 node = xmlDoc.getElementsByTagName("loadconfig")[0];
 xmlDoc = getXmlDoc(node.childNodes[0].childNodes[0].nodeValue);
 node = xmlDoc.getElementsByTagName(n)[0];
 return node.getAttribute(att);
}


// Chiude la finestra senza visualizzare l'alert.
var browserName=navigator.appName;
if (browserName=="Netscape") { 
	function closynoshowsme() { 
		window.open('','_parent',''); 
		window.close();
  } 
} 
else { 
	if (browserName=="Microsoft Internet Explorer") 
	{ 
		function closynoshowsme()	{ 
			window.opener = "whocares"; 
			window.open('','_parent',''); 
			window.close(); 
		} 
	} 
} 

// Messaggio di risposta dopo aver inviato la richiesta.
function stateChanged_requestinfo(xml){ 
	alert("Messaggio inviato correttamente.\n\nTi ringraziamo per averci contattato.");
  if(xml_ini=="contact"){
		closynoshowsme();
  }
  else {
  	ecmsb_contact(false);
  }  
} 


function LoadArrivo() 
{ 
 var cnow=new Date();
 var dd = cnow.getDate();
 var mm = cnow.getMonth()+1;
 var yy = cnow.getFullYear();
 var h = o('ecmsb_arrivo');
 if (dd < 10){dd = "0" + dd }
 if (mm < 10){mm = "0" + mm }
 var defv = ecsmb_cfg("arrivo","default");
 if(defv!="today" & defv!="") h.value = defv;
 else if (defv=="today") h.value = dd+"/"+mm+"/"+yy;
 h.disabled = false;
 istate=istate+16;
} 
function LoadPartenza() 
{ 
 var h = o('ecmsb_partenza');
 h.value = ecsmb_cfg("partenza","default");;
 h.disabled = false;
 istate=istate+32;
} 
function LoadPersone() 
{ 
 	 var h = document.ecmsb_form.ecmsb_persone;
   while(h.options.length > 0) h.remove(0);
 	 var o = document.createElement("OPTION");
   h.options.add(o);
   o.value = "";
	 if(xml_lng=="it") o.innerHTML = "Selezionare il numero";
	 if(xml_lng=="en") o.innerHTML = "Select number";
	 if(xml_lng=="de") o.innerHTML = "Bitte eine Ziffer auswählen";
   h.disabled = true;
		for(var i = 1; i < parseInt(ecsmb_cfg("persone","max"))+1; i++)
    {
        var o = document.createElement("OPTION");
        h.options.add(o);
        o.value = i;
        o.innerHTML = i;
    }
    h.options[ecsmb_cfg("persone","default")].selected = true;
    h.disabled = false;
    istate=istate+64;    
} 
function LoadOpzioni() 
{ 
 	 var h = document.ecmsb_form.ecmsb_opzioni;
   h.disabled = true;

   while(h.options.length > 0) h.remove(0);
 	 var o = document.createElement("OPTION");
   h.options.add(o);
   o.value = "0";
	 if(xml_lng=="it") o.innerHTML = "Elenco completo";
	 if(xml_lng=="en") o.innerHTML = "View all vacancies";
	 if(xml_lng=="de") o.innerHTML = "Alle verfügbare Unterkünften";

 	 var o = document.createElement("OPTION");
   h.options.add(o);
   o.value = "0";
	 if(xml_lng=="it") o.innerHTML = "Prenotabili on-line";
	 if(xml_lng=="en") o.innerHTML = "Online bookable only";
	 if(xml_lng=="de") o.innerHTML = "Nur buchbaren Unterkünften";

   h.disabled = false;
   istate=istate+128;  
} 
function GetXmlHttpObjectEx()
{
var xmlHttp=null;try
 {
 xmlHttp=new XMLHttpRequest();
 }
catch (e)
 {
 try
  {
  xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  }
 catch (e)
  {
  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
 }
return xmlHttp;
}

function GetXmlHttpObject()
{
    if (typeof XMLHttpRequest != "undefined") {
        return new XMLHttpRequest();
    } else if (window.ActiveXObject) {
      var aVersions = [ "MSXML2.XMLHttp.5.0",
        "MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0",
        "MSXML2.XMLHttp","Microsoft.XMLHttp"
      ];

      for (var i = 0; i < aVersions.length; i++) {
        try {
            var oXmlHttp = new ActiveXObject(aVersions[i]);
            return oXmlHttp;
        } catch (oError) {
            //Do nothing
        }
      }
    }
    throw new Error("XMLHttp object could be created.");
}

function jsw_LoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}




function ecmsb_GetInfoByMail(IDStruttura)
{
  var error = null;
  if(document.getElementById('nome').value=="") error = "Manca il nome.";
  if(document.getElementById('cognome').value=="") error = "Manca il cognome.";
  if(document.getElementById('email').value=="") error = "Manca l'indirizzo e-mail.";
  if(document.getElementById('trattamento').value=="") error = "Non è stato selezionato il tipo di trattamento desiderato..";
  if(error!=null) {
    alert(error);
    return;
  } 

  ecmsb_wait(true);

  var xml = '';
  xml += '    <request>';
  xml += '        <Riferimento ID="A91AE52612D5F4FFC3"/>';
  xml += '        <Struttura ID="' + IDStruttura + '"/>';
  xml += '        <nome><![CDATA[' + v('nome') + ']]></nome>';
  xml += '        <cognome><![CDATA[' + document.getElementById('cognome').value + ']]></cognome>';
  xml += '        <indirizzo><![CDATA[' + document.getElementById('indirizzo').value + ']]></indirizzo>';
  xml += '        <cap><![CDATA[' + document.getElementById('cap').value + ']]></cap>';
  xml += '        <citta><![CDATA[' + document.getElementById('citta').value + ']]></citta>';
  xml += '        <nazione><![CDATA[' + document.getElementById('nazione').value + ']]></nazione>';
  xml += '        <tel><![CDATA[' + document.getElementById('tel').value + ']]></tel>';
  xml += '        <fax><![CDATA[' + document.getElementById('fax').value + ']]></fax>';
  xml += '        <email><![CDATA[' + document.getElementById('email').value + ']]></email>';
  xml += '        <arrivo><![CDATA[' + document.getElementById('arrivo').value + ']]></arrivo>';
  xml += '        <partenza><![CDATA[' + document.getElementById('partenza').value + ']]></partenza>';
  xml += '        <adulti><![CDATA[' + document.getElementById('adulti').value + ']]></adulti>';
  xml += '        <bambini><![CDATA[' + document.getElementById('bambini').value + ']]></bambini>';
  xml += '        <trattamento><![CDATA[' + document.getElementById('trattamento').value + ']]></trattamento>';
  xml += '        <s1><![CDATA[' + document.getElementById('s1').value + ']]></s1>';
  xml += '        <s2><![CDATA[' + document.getElementById('s2').value + ']]></s2>';
  xml += '        <s3><![CDATA[' + document.getElementById('s3').value + ']]></s3>';
  xml += '        <s4><![CDATA[' + document.getElementById('s4').value + ']]></s4>';
  xml += '        <s5><![CDATA[' + document.getElementById('s5').value + ']]></s5>';
  xml += '        <s6><![CDATA[' + document.getElementById('s6').value + ']]></s6>';
  xml += '        <infotext><![CDATA[' + document.getElementById('infotext').value + ']]></infotext>';
  xml += '    </request>';
	fcn("requestinfo",xml);
}
        
//addLoadEvent(showUser);

jsw_LoadEvent(function() {
	ecmsb_loadconfig();

});


// implementation
function f_tcalShow (sender,ctlid,imgpath) {

	// dynamically create HTML elements if needed
	this.e_div = f_getElement('tcal');
	if (!this.e_div) {
		this.e_div = document.createElement("DIV");
		this.e_div.id = 'tcal';
		document.body.appendChild(this.e_div);
	}
	this.e_shade = f_getElement('tcalShade');
	if (!this.e_shade) {
		this.e_shade = document.createElement("DIV");
		this.e_shade.id = 'tcalShade';
		document.body.appendChild(this.e_shade);
	}
	this.e_iframe =  f_getElement('tcalIF')
	if (b_ieFix && !this.e_iframe) {
		this.e_iframe = document.createElement("IFRAME");
		this.e_iframe.style.filter = 'alpha(opacity=0)';
		this.e_iframe.id = 'tcalIF';
		this.e_iframe.src = this.a_tpl.imgpath + 'pixel.gif';
		document.body.appendChild(this.e_iframe);
	}
	

  var todaydate=new Date()
  var curmonth=todaydate.getMonth()+1 //get current month (1-12)
  var curyear=todaydate.getFullYear() //get current year

  

  this.e_div.innerHTML = buildCal(ctlid, curmonth ,curyear, "tcal", "month", "daysofweek", "days", 0, imgpath);

  // alert(this.e_div.innerHTML);

	var n_width  = this.e_div.offsetWidth;
	var n_height = this.e_div.offsetHeight;
	var n_top  = f_getPosition (sender, 'Top') + sender.offsetHeight;
	var n_left = f_getPosition (sender, 'Left') - n_width + sender.offsetWidth;
	if (n_left < 0) n_left = 0;

	this.e_div.style.left = n_left + 'px';
	this.e_div.style.top  = n_top + 'px';

	this.e_shade.style.width = (n_width + 8) + 'px';
	this.e_shade.style.left = (n_left - 1) + 'px';
	this.e_shade.style.top = (n_top - 1) + 'px';
	this.e_shade.innerHTML = b_ieFix
		? '<table><tbody><tr><td rowspan="2" colspan="2" width="6"><img src="'+imgpath+'pixel.gif"></td><td width="7" height="7" style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+imgpath+'shade_tr.png\', sizingMethod=\'scale\');"><img src="'+imgpath+'pixel.gif"></td></tr><tr><td height="' + (n_height - 7) + '" style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+imgpath+'shade_mr.png\', sizingMethod=\'scale\');"><img src="'+imgpath+'pixel.gif"></td></tr><tr><td width="7" style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+imgpath+'shade_bl.png\', sizingMethod=\'scale\');"><img src="'+imgpath+'pixel.gif"></td><td style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+imgpath+'shade_bm.png\', sizingMethod=\'scale\');" height="7" align="left"><img src="'+imgpath+'pixel.gif"></td><td style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+imgpath+'shade_br.png\', sizingMethod=\'scale\');"><img src="'+imgpath+'pixel.gif"></td></tr><tbody></table>'
		: '<table><tbody><tr><td rowspan="2" width="6"><img src="'+imgpath+'pixel.gif"></td><td rowspan="2"><img src="'+imgpath+'pixel.gif"></td><td width="7" height="7"><img src="'+imgpath+'shade_tr.png"></td></tr><tr><td background="'+imgpath+'shade_mr.png" height="' + (n_height - 7) + '"><img src="'+imgpath+'pixel.gif"></td></tr><tr><td><img src="'+imgpath+'shade_bl.png"></td><td background="'+imgpath+'shade_bm.png" height="7" align="left"><img src="'+imgpath+'pixel.gif"></td><td><img src="'+imgpath+'shade_br.png"></td></tr><tbody></table>';
	
	if (this.e_iframe) {
		this.e_iframe.style.left = n_left + 'px';
		this.e_iframe.style.top  = n_top + 'px';
		this.e_iframe.style.width = (n_width + 6) + 'px';
		this.e_iframe.style.height = (n_height + 6) +'px';
	}


	this.e_div.style.visibility = 'visible';
	this.e_shade.style.visibility = 'visible';
	if (this.e_iframe)
		this.e_iframe.style.visibility = 'visible';

	// change icon and status
	this.b_visible = true;
  
}

function buildCal(id, m, y, cM, cH, cDW, cD, brdr, imgpath){
var mn=['January','February','March','April','May','June','July','August','September','October','November','December'];
var mn=['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno','Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'];
var dn="SMTWTFS";
var dn="DLMMGVS";
var dim=[31,0,31,30,31,30,31,31,30,31,30,31];

var oD = new Date(y, m-1, 1); //DD replaced line to fix date bug when current day is 31st
oD.od=oD.getDay()+1; //DD replaced line to fix date bug when current day is 31st

var todaydate=new Date() //DD added
var scanfortoday=(y==todaydate.getFullYear() && m==todaydate.getMonth()+1)? todaydate.getDate() : 0 //DD added

dim[1]=(((oD.getFullYear()%100!=0)&&(oD.getFullYear()%4==0))||(oD.getFullYear()%400==0))?29:28;
var t='<div class="'+cM+'"><table class="'+cM+'" cols="7" cellpadding="0" border="'+brdr+'" cellspacing="0">';
t+='<tr align="center">';
t+='<td colspan="7" align="center" class="'+cH+'">'+mn[m-1]+' '+y+'</td>';
t+='</tr>';
t+='<tr align="center">';
t+='<td align="center" onclick="mese(\''+id+'\', '+m+', '+(y-1)+', \''+cM+'\', \''+cH+'\', \''+cDW+'\', \''+cD+'\', 0, \''+imgpath+'\')"><img src="'+imgpath+'prev_year.gif" /></td>';
t+='<td align="center" onclick="mese(\''+id+'\', '+(m-1)+', '+y+', \''+cM+'\', \''+cH+'\', \''+cDW+'\', \''+cD+'\', 0, \''+imgpath+'\')"><img src="'+imgpath+'prev_mon.gif" /></td>';
t+='<td colspan="3" align="center">&nbsp;</td>';
t+='<td align="center" onclick="mese(\''+id+'\', '+(m+1)+', '+y+', \''+cM+'\', \''+cH+'\', \''+cDW+'\', \''+cD+'\', 0, \''+imgpath+'\')"><img src="'+imgpath+'next_mon.gif" /></td>';
t+='<td align="center" onclick="mese(\''+id+'\', '+m+', '+(y+1)+', \''+cM+'\', \''+cH+'\', \''+cDW+'\', \''+cD+'\', 0, \''+imgpath+'\')"><img src="'+imgpath+'next_year.gif" /></td>';
t+='</tr><tr align="center">';
for(s=0;s<7;s++)t+='<td class="'+cDW+'">'+dn.substr(s,1)+'</td>';
t+='</tr><tr align="center">';
for(i=1;i<=42;i++){
var x=((i-oD.od>=0)&&(i-oD.od<dim[m-1]))? i-oD.od+1 : ' ';
if (x==scanfortoday) cls="today"; else cls=cD;
t+='<td class="'+cls+'" onclick="f_tcalHide(\''+id+'\',\''+y+'\',\''+m+'\',\''+x+'\')">'+x+'</td>';
if(((i)%7==0)&&(i<36))t+='</tr><tr align="center">';
}
return t+='</tr></table></div>';
}


function mese(id, m, y, cM, cH, cDW, cD, brdr, imgpath){
  this.e_div = f_getElement('tcal');
  if(m>12){m=1;y++}
  if(m<1){m=12;y--}
  this.e_div.innerHTML = buildCal(id, m, y, "tcal", "month", "daysofweek", "days", 0, imgpath);  
}

function f_tcalHide (id,y,m,d) {
  if(d==" ") return;

	// no action if not visible
	if (!this.b_visible)
		return;

	// hide elements
	if (this.e_iframe)
		this.e_iframe.style.visibility = 'hidden';
	if (this.e_shade)
		this.e_shade.style.visibility = 'hidden';
	this.e_div.style.visibility = 'hidden';
	
  if(d<10)d='0'+d;
  if(m<10)m='0'+m; 
  f_getElement(id).value=d+'/'+m+'/'+y;
}

function f_tcalToggle () {
	return this.b_visible ? this.f_hide() : this.f_show();
}


function f_getPosition (e_elemRef, s_coord) {
	var n_pos = 0, n_offset,
		e_elem = e_elemRef;

	while (e_elem) {
		n_offset = e_elem["offset" + s_coord];
		n_pos += n_offset;
		e_elem = e_elem.offsetParent;
	}
	// margin correction in some browsers
	if (b_ieMac)
		n_pos += parseInt(document.body[s_coord.toLowerCase() + 'Margin']);
	else if (b_safari)
		n_pos -= n_offset;
	
	e_elem = e_elemRef;
	while (e_elem != document.body) {
		n_offset = e_elem["scroll" + s_coord];
		if (n_offset && e_elem.style.overflow == 'scroll')
			n_pos -= n_offset;
		e_elem = e_elem.parentNode;
	}
	return n_pos;
}



f_getElement = document.all ?
	function (s_id) { return document.all[s_id] } :
	function (s_id) { return document.getElementById(s_id) };
// global variables
var s_userAgent = navigator.userAgent.toLowerCase(),
	re_webkit = /WebKit\/(\d+)/i;
var b_mac = s_userAgent.indexOf('mac') != -1,
	b_ie5 = s_userAgent.indexOf('msie 5') != -1,
	b_ie6 = s_userAgent.indexOf('msie 6') != -1 && s_userAgent.indexOf('opera') == -1;
var b_ieFix = b_ie5 || b_ie6,
	b_ieMac  = b_mac && b_ie5,
	b_safari = b_mac && re_webkit.exec(s_userAgent) && Number(RegExp.$1) < 500;

	
