var hotels;
var hotel = new Array();
var hotels_visited = new Array();
var global_city_name='';
var global_country_name='';
var global_city_code='';
var global_country_code='';
var global_availability='';
var global_promotions = new Array();
var global_html = new Array();
var global_hotelsnum = 0;
var url_xml_rpc;
var form_obj;
var div_form;
var div_loading;
var struct_param = new Array();
var iso_encoding;
var hdetails;
var currency='EUR';
// da ridefinire
function updateStatus()	{
}

// per i dettagli statici
function init() {
    setPD();
    nights();
}

// per i dettagli in disponibilita'
function init_hotels()	{
	url_xml_rpc = js_global_root_url+'xml_rpc/call.php';
	form_obj = document.getElementById('input_data');
	form_doc = document.input_data;
	div_form = document.getElementById('search');
	div_loading = document.getElementById('loading');
	struct_param['header'] = new Array();
	struct_param['query'] = new Array();
	struct_param['header']['version'] = '1.0.0';
	struct_param['header']['product'] = 'hotels';
	struct_param['header']['sessid'] = sessid;
	struct_param['query']['language'] = js_language;
	iso_encoding = 'utf-8';
}



// Caricamento delle città di una nazione
function cities_for_state(source_select) {
  if (selected_hotel != '')
      document.getElementById('hotel_fieldset').style.display = 'none';
  var ccode = source_select.options[source_select.options.selectedIndex].value; 
  document.getElementById('hotels').style.display = 'none';
  struct_param['header']['type'] = 'cities_service_of_country';
  struct_param['query']['service'] = 1;
  struct_param['query']['language'] = js_language;
  struct_param['query']['country'] = ccode
  document.getElementById('sel_citta').innerHTML=js_dic_LOADING+'...';
  
  xml_request(struct_param,url_xml_rpc,iso_encoding,callbacks_xml_request);
}

// Serve per ripristinare la ricerca avanzata per la nuova citta
function set_advanced() {
  if(document.getElementById('hotel_fieldset')) 
   {
   	document.getElementById('sel_hotel').innerHTML = '';
   	document.getElementById('hotel_fieldset').style.display='none';
   }
  if(document.getElementById('zone_fieldset')) 
   {
   	document.getElementById('sel_zone').innerHTML = '';
   	document.getElementById('zone_fieldset').style.display='none';
   }
  //document.getElementById('sub_req').selectedIndex=0;
  selected_country='';		
}
// Carica la select delle città
function print_cities(citiesList) {
  if(!document.getElementById('book')) var ap_sel = 'hotel_search();';
  else var ap_sel = 'document.getElementById(\'advanced\').style.display=\'block\'';
  if(document.getElementById('sel_zone')) document.getElementById('sel_zone').innerHTML = '';
  //slct = '<select id="citta" name="citta" onChange="updateStatus(); hide_error(); set_advanced(); '+ap_sel+'">';
  slct = '<select id="citta" name="citta" onChange="change_city(this); updateStatus(); hide_error(); show_hotels_question();">';
  slct += '<option value="***">'+js_dic_NOCITY+'</option>\n';
 
  for(i in citiesList) {
      if(selected_city!='' && citiesList[i]['code']==selected_city) var ap_selected = 'selected';
      else var ap_selected = '';      
      slct += '<option value="'+citiesList[i]['code']+'" '+ap_selected+'>'+capitalize(citiesList[i]['names'][js_language])+'</option>\n';
  }
  var city_value='document.getElementById(\'citta\')';
  slct += '</select>';
  var sel_mark = document.getElementById('sel_citta');
  sel_mark.innerHTML = slct;
  sel_mark.style.display = 'inline';
  updateStatus();
  if(selected_city!='') advanced_search('hotels');
}

// Caricamento delle zone di una citta'
function zones_for_city(source_select) {
  document.getElementById('hotel_fieldset').style.display='none';
  
  document.getElementById('advanced_loading').style.display='inline';
  if(document.getElementById('sel_zone')) document.getElementById('sel_zone').innerHTML = '';
  if(source_select.options)
  	var ccode = source_select.options[source_select.options.selectedIndex].value;
  else
  	{
  		var city_radio_list = document.input_data.citta;
      		for(var u=0; u < city_radio_list.length; u++)
      		if(city_radio_list[u].checked) 
       		{
       		 var ap_citta = city_radio_list[u].value.split('-');
       		 var ccode = ap_citta[0];
       		}
  	}
  
  document.getElementById('hotels').style.display = 'none';
  struct_param['header']['type'] = 'zones_of_city';
  struct_param['query']['city'] = ccode;
  xml_request(struct_param,url_xml_rpc,iso_encoding,callbacks_xml_request);
}

// Caricamento degli hotel di una citta'
function hotels_for_city(source_select) {
  //document.getElementById('zone_fieldset').style.display='none';
  //document.getElementById('advanced_loading').style.display='inline';
  if(document.getElementById('sel_zone')) document.getElementById('sel_hotel').innerHTML = '';
  document.getElementById('sel_hotel').innerHTML = js_dic_LOADING+'...';
  document.getElementById('hotel_select').style.display = 'block';
  document.getElementById('hotels_question').style.display = 'none';
  if(selected_hotel=='')
      document.getElementById('hotel_fieldset').style.display = 'block';
  if (selected_hotel != '' && selected_city != '') {
      var ccode = selected_city;
  }
  else if(source_select.options) {
  	var ccode = source_select.options[source_select.options.selectedIndex].value;
  }
  else
  	{
    		var city_radio_list = document.input_data.citta;
      		for(var u=0; u < city_radio_list.length; u++)
      		if(city_radio_list[u].checked) 
       		{var ap_citta = city_radio_list[u].value.split('-');
       		 var ccode = ap_citta[0];
       		}
  	}
  document.getElementById('hotels').style.display = 'none';
  struct_param['header']['type'] = 'active_hotels_of_city';
  struct_param['query']['city'] = ccode;
  
  xml_request(struct_param,url_xml_rpc,iso_encoding,callbacks_xml_request);
}

// Carica la select delle zone
function print_zones(zonesList) {
  var sel_mark = document.getElementById('sel_zone');
  document.getElementById('advanced_loading').style.display='none';
  if(struct_length(zonesList)>0)
  {
	  slct = '<select id="zone" name="zone" onChange="updateStatus();">';
	  slct += '<option value="***">'+js_dic_NOZONES+'</option>\n';
	  for(i in zonesList) {
	      slct += '<option value="'+zonesList[i]['code']+'">'+capitalize(zonesList[i]['names'][js_language])+'</option>\n';
	  }
	  slct += '</select>';
	  
	  sel_mark.innerHTML = slct;
	  document.getElementById('zone_fieldset').style.display='block';  
  }
  else
  {
  	sel_mark.innerHTML = '';
  	document.getElementById('no_advanced_loading').innerHTML = js_dic_NOZONESINCITY;
  }
  
  updateStatus();
}

// Carica la select degli hotels
function select_hotels(hotelsList) {
  var sel_mark = document.getElementById('sel_hotel');
  //document.getElementById('advanced_loading').style.display='none';
  if(struct_length(hotelsList)>0)
  {
	  slct = '<select id="hotel_id" name="hotel_id" onChange="set_selected_hotel(this.value); set_onlyavail(this.value); updateStatus();">';
	  slct += '<option value="***">'+js_dic_NOHOTELS+'</option>\n';
	  for(i in hotelsList) {
	      if(selected_hotel!='' && hotelsList[i]['id']==selected_hotel) var ap_selected = 'selected';
	      else var ap_selected = '';
	      slct += '<option value="'+hotelsList[i]['id']+'" '+ap_selected+'>'+capitalize(hotelsList[i]['name'])+'</option>\n';
	  }
	  slct += '</select>';
	  sel_mark.innerHTML = slct;
  }
  else
  {
  	sel_mark.innerHTML = js_dic_NOHOTELSINCITY;
  }
  updateStatus();
}

function set_selected_hotel(val) {
    if (val == '***')
        selected_hotel = '';
    else
        selected_hotel = val;
}

// Cerca gli hotel di una città
function hotel_search()
{	// Altrimenti preparo la richiesta
	struct_param['header']['type'] = 'hotel_search';
	var selCitta = document.getElementById('citta');
	struct_param['query']['city'] = selCitta.options[selCitta.selectedIndex].value;
	document.getElementById('hotels').style.display='none';
	document.getElementById('loading').style.display='block';
	xml_request(struct_param,url_xml_rpc,iso_encoding,callbacks_xml_request);
}


// Stampa la lista degli hotel
function print_hotels(result)
{   
    hide_error();
    //controllo per evitare di visualizzare la lista degli hotel disponibili
    //se sono ritornato alla pagina di ricerca mentre stavo ancora caricando
    if (document.getElementById('search').style.display=='block')
        return false;
	hotels = result;
    //bottoni
    if (openedhotel != '')
        document.getElementById('listbuttons').innerHTML = '<input type="button" class="button forward" onClick="javascript:print_hotel('+openedhotel+');" onMouseOver="window.status=\''+js_dic_FORWARD+'\'; return true;" onMouseOut="window.status=\'\'; return true;" value="'+js_dic_FORWARD+'">';
    else if (openedbook == true)
        document.getElementById('listbuttons').innerHTML = '<input type="button" class="button forward" onClick="javascript:show_book(true);" onMouseOver="window.status=\''+js_dic_FORWARD+'\'; return true;" onMouseOut="window.status=\'\'; return true;" value="'+js_dic_FORWARD+'">';
    openedhotel = '';
    //SE CI SONO RISULTATI
    if (hotels.length > 0) {
        // Imposto la voce corrente dell'ordinamento
        var orders = new Array('stars','position','price','name','availability');
        var options = '';
        for (var i = 0; i < orders.length; i++) {
            var selected = '';
            if (actual_order == orders[i]) selected = 'selected';
            try { var label = eval('js_dic_'+orders[i].toUpperCase()) }
            catch(ex) { var label = eval('js_dic_'+orders[i]) }
            options += '<option value="'+orders[i]+'" '+selected+'>'+label+'</option>';
        }
        //calcolo il numero di pagine
        var pages = Math.ceil(global_hotelsnum / hppage);
        ////// scrivo le pagine////////////////////////////////////
        var frompages = actual_page - Math.floor((maxpages - 1)/2.0);
        var topages = actual_page + Math.ceil((maxpages - 1)/2.0);
        if (frompages < 1) frompages = 1;
        if (topages > pages) topages = pages;
        if (topages - frompages + 1 < maxpages && pages >= maxpages) {
            if (topages == pages)
                frompages -= maxpages - (topages - frompages + 1)
            else
                topages += maxpages - (topages - frompages + 1)
        }
        var pagecontent = '<td class="align_center">'+js_dic_PAG+' ';
        if (actual_page != 1)
            pagecontent += '<span class="cursor_pointer text_bold" onclick="change_page('+(actual_page-1)+');">&lt;&lt;</span> ';
        if (frompages != 1) {
            pagecontent += '<span class="cursor_pointer text_bold underline" onclick="change_page('+1+');">1</span> ';
            if (frompages - 1 != 1) pagecontent += '... ';
        }
        for (var i = frompages; i <= topages; i++) {
            var red = '';
            var und = 'underline';
            if (i == actual_page) {
                red = '';
                und = '';
            }
            pagecontent += '<span class="cursor_pointer text_bold '+red+' '+und+'" onclick="change_page('+i+');">'+i+'</span> ';
        }
        if (topages != pages) {
            if (pages - topages != 1) pagecontent += ' ...';
            pagecontent += ' <span class="cursor_pointer text_bold underline" onclick="change_page('+pages+');">'+pages+'</span>';
        }
        if (actual_page != pages)
            pagecontent += ' <span class="cursor_pointer text_bold" onclick="change_page('+(actual_page+1)+');">&gt;&gt;</span>';
        //calcolo il numero di risultati
        var tores = (actual_page * hppage);
        var fromres = tores - hppage + 1;
        if (tores > global_hotelsnum) tores = global_hotelsnum;
        pagecontent += '<br><span style="font-size: 10px; font-style: italic;">('
                     + js_dic_RESULTS+' '
                     + '<span class="text_bold">'
                     + fromres+'-'+tores
                     + '</span>'
                     + ' '+js_dic_OF+' '
                     + '<span class="text_bold">'
                     + global_hotelsnum
                     + '</span>)</span>'
                     + '</td>';
        /////////////////////////////////////////////////////////////
        var events_link = '<span class="text_bold cursor_pointer underline" onclick="get_city_events(\''+global_city_code+'\',\'up\');">'+js_dic_EVENTS.toUpperCase()+' - '+global_city_name+'</span>';
        var events_linkbis = '<span class="text_bold cursor_pointer underline" onclick="get_city_events(\''+global_city_code+'\',\'down\');">'+js_dic_EVENTS.toUpperCase()+' - '+global_city_name+'</span>';
        var googleearth_link = '<div><a href="'+js_global_root_url+'googleearth/city.php?code='+global_city_code+'"><img class="no_border" src="'+js_global_images_url+'googleearth/link.gif" alt="'+js_dic_GOOGLEEARTH+'" title="'+js_dic_GOOGLEEARTH+'">'+js_dic_GOOGLEEARTH+'</a> <span class="googleearth">[<a href="http://earth.google.com/download-earth.html" target="_new" title="'+js_dic_GOOGLEEARTHDOWLOAD+'">'+js_dic_GOOGLEEARTHDOWLOAD+'</a>]</span></div>';
        var events_div = '<div id="eventsdivup" class="hidden absolute" style="border: 1px solid; background-color: #FFF;">'
		                +'<div class="availbr availbg" style="margin: 2px;">'
                        +'<div id="eventscontent" style="width: 500px;">'
                        +'<div id="eventsloading" class="loading align_center text_bold" style="display: block;">- '+js_dic_LOADING+' -</div>'
                        +'</div>'
                        +'<div class="align_center">'
                        +'<input type="button" class="button" value="'+js_dic_CLOSE+'" onclick="document.getElementById(\'eventsdivup\').style.display=\'none\';">'
                        +'</div>'
                        +'</div>'
                        +'</div>';
        var events_divbis = '<div id="eventsdivdown" class="hidden absolute" style="border: 1px solid; background-color: #FFF;">'
                        +'<div class="availbr availbg" style="margin: 2px;">'
                        +'<div id="eventscontentdown" style="width: 500px;">'
                        +'<div class="loading align_center text_bold" style="display: block;">- '+js_dic_LOADING+' -</div>'
                        +'</div>'
                        +'<div class="align_center">'
                        +'<input type="button" class="button" value="'+js_dic_CLOSE+'" onclick="document.getElementById(\'eventsdivdown\').style.display=\'none\';">'
                        +'</div>'
                        +'</div>'
                        +'</div>';
        var select_order = js_dic_ORDERBY+': <select name="order" id="order" onChange="actual_order=this.value;order_changed=true;change_page(1);">'+options+'</select>';
        var select_order_bis = js_dic_ORDERBY+': <select name="order" onChange="actual_order=this.value;order_changed=true;change_page(1);">'+options+'</select>';
        //+'<tr><td colspan="3">'+googleearth_link+'</td></tr>'
        var intest = '<table style="width: 99%;">'
                    +'<tr>'
                    +'<td style="width: 35%;">'
                    +'<div class="align_left" width="100%">'+events_link+events_div+'</div>'
                    +'</td>'
                    + pagecontent
                    +'<td style="width: 35%;">'
                    +'<div class="align_right" width="100%">'+select_order+'</div>'
                    +'</td>'
                    +'</tr>'
                    +'</table>';
        var intest_bis = '<table style="width: 99%;">'
                        +'<tr>'
                        +'<td style="width: 35%;">'
                        +'<div class="align_left" width="100%">'+events_linkbis+events_divbis+'</div>'
                        +'</td>'
                        +pagecontent
                        +'<td style="width: 35%;">'
                        +'<div class="align_right" width="100%">'+select_order_bis+'</div>'
                        +'</td>'
                        +'</tr>'
                        +'</table>'; //+'<tr><td colspan="3">'+googleearth_link+'</td></tr>'
                        
        // inserisco il totale dei disponibili
        var res_hotels = global_city_name.toUpperCase()+'('+global_country_name.toUpperCase()+') >> '+js_dic_AVAILABILITY+' '+js_dic_HOTELS+': '+(global_available+global_not_available)+' - '+js_dic_IMMEDIATE.toLowerCase()+' '+global_available+', '+js_dic_ONREQUEST.toLowerCase()+' '+global_not_available;
	var ap = '<div class="availbg availbr" style="margin-top: 3px;">'
               + '<div class="form_title" style>'
               + res_hotels
               + '</div>'
               + intest
               + '</div>'
               + '<div id="hotels_list" style="margin-top: 15px;">'
               + '</div>'
	       + '<div class="availbg availbr" style="margin-top: 15px; margin-bottom:5px;">'
	       + intest_bis
	       +'</div>';
        //'</fieldset><fieldset><legend>'+res_hotels+'</legend></fieldset>'; // Tolgo l'id alla seconda select
        document.getElementById('hotels').innerHTML=ap;
        // stampo il codice html degli hotel
        var ht = new Array();
        var html_hotels = '\'\'';

        for(htl in hotels)
            {	var html_hotel = global_html[hotels[htl]['id']];
                for(var h in html_hotel)
                    {	var c = (ht.length);
                        ht[c]=html_hotel[h];
                        html_hotels += '+ht['+c+']';
                    }
                   if (htl!=0 && htl % 20 == 0) // PER NON INCHIODARE IE STAMPO 20 HOTEL PER VOLTA
                   {document.getElementById('hotels_list').innerHTML = document.getElementById('hotels_list').innerHTML + eval(html_hotels);
                    html_hotels = '\'\'';
                   }
            }
        document.getElementById('hotels_list').innerHTML = document.getElementById('hotels_list').innerHTML + eval(html_hotels);
        // assegno le posizioni dell'hotel nella pagina
        for(htl in hotels)
            {
            	document.getElementById('seq_id_'+hotels[htl]['id']).value = htl;
            }
        //se devo passare direttamente ai dettagli albergo
        if (hotels.length > 0 && selected_hotel != '') {
            get_hotel_details(parseInt(hotels[0]['id']));
            return;
        }    
    }
    else {
        document.getElementById('hotels').innerHTML = global_html;
        //alert(global_html);
        //se arrivo da una ricerca su un preciso hotel
        if (selected_hotel != '') {
            if(document.getElementById('allcity_search_label')) document.getElementById('allcity_search_label').style.display = 'block';
            if (document.getElementById('nearcities_search_label'))
                document.getElementById('nearcities_search_label').style.display = 'none';
            if (document.getElementById('nearcities_search'))
                document.getElementById('nearcities_search').style.display = 'none';
        }
        else if (document.getElementById('onlyavail') && document.getElementById('onlyavail').checked) {
            if (document.getElementById('onrequest_search_label'))
                document.getElementById('onrequest_search_label').style.display = 'block';
            if (document.getElementById('nearcities_search_label'))
                document.getElementById('nearcities_search_label').style.display = 'none';
            if (document.getElementById('nearcities_search'))
                document.getElementById('nearcities_search').style.display = 'none';
        }
    }
    if (hotels.length == 0 || selected_hotel == '') {
        document.getElementById('othersearch').style.display='block';
        document.getElementById('listbuttons').style.display='block';
        document.getElementById('hotel').style.display = 'none';
        document.getElementById('loading').style.display='none';
        if(document.getElementById('hf_summary')) document.getElementById('hf_summary').style.display='block';
        if(document.getElementById('book'))document.getElementById('book').style.display = 'none';
        if(document.getElementById('book_confirm'))document.getElementById('book_confirm').style.display = 'none';
        document.getElementById('hotels').style.display='block';
        document.body.style.display='none';
        document.body.style.display='block';
    }
  
}

function get_hotel_details(hotel_id){
    openedbook = false;
    hdetails = hotel_id;
    if (document.getElementById(hotel_id))
        document.getElementById(hotel_id).className=document.getElementById(hotel_id).className + ' div_over';
	if(hotels_visited[hotel_id]) 
	{
		hotel = hotels_visited[hotel_id];
		print_hotel();
	}
	else
	{
		document.getElementById('hotels').style.display='none';
        document.getElementById('listbuttons').style.display='none';
		document.getElementById('loading').style.display='block';
		document.getElementById('hotel').style.display='none';
        
		// Chiedo i dettagli
		struct_param['header']['type'] = 'hotel_details';
		struct_param['query'] = new Array();
		struct_param['query']['id'] = hotel_id;
		struct_param['query']['language'] = js_language;
		document.body.style.display='none';
		document.body.style.display='block';
		xml_request(struct_param,url_xml_rpc,iso_encoding,callbacks_hotels);
	}
}

function callbacks_hotels(response,type)	{
			          switch(type)
 					{
  						case 'hotel_details' :
						hotels_visited[response['id']]= hotel = response;
						print_hotel();
  						break;
  						
 					}	
}

function print_hotel(){
    //imposto il campo che mi indica se ho visitato un hotel
    openedhotel = hdetails;
    //modifico la visibilita' degli elementi che mi interessano
    document.getElementById('listbuttons').style.display='none';
	document.getElementById('hotels').style.display='none';
	document.getElementById('loading').style.display='block';
	document.getElementById('hotel').style.display='none';
    document.getElementById('book').style.display='none';
    if (document.getElementById('hf_summary'))
        document.getElementById('hf_summary').style.display='block';
    //carico l'html dell'hotel
	var html_hotel = hotel['html'];
	var html_hotels = '\'\'';
	for(var h in html_hotel)
		html_hotels += '+ html_hotel['+h+']';
	document.getElementById('hotel').innerHTML='';
	document.getElementById('hotel').innerHTML = document.getElementById('hotel').innerHTML + eval(html_hotels);
    //bottone indietro e avanti
    if (selected_hotel == '' && openedbook == true) {
        document.getElementById('htbuttons').innerHTML = '<input type="button" class="button back" onClick="javascript:print_hotels(hotels);" onMouseOver="window.status=\''+js_dic_BACK+'\'; return true;" onMouseOut="window.status=\'\'; return true;" value="'+js_dic_BACK+'">';
        document.getElementById('htbuttons').innerHTML += '<input type="button" class="button forward" onClick="javascript:show_book(true);" onMouseOver="window.status=\''+js_dic_FORWARD+'\'; return true;" onMouseOut="window.status=\'\'; return true;" value="'+js_dic_FORWARD+'">';
    }
    else if (selected_hotel == '')
        document.getElementById('htbuttons').innerHTML = '<input type="button" class="button back" onClick="javascript:print_hotels(hotels);" onMouseOver="window.status=\''+js_dic_BACK+'\'; return true;" onMouseOut="window.status=\'\'; return true;" value="'+js_dic_BACK+'">';
    else if (openedbook == true)
        document.getElementById('htbuttons').innerHTML = '<input type="button" class="button forward" onClick="javascript:show_book(true);" onMouseOver="window.status=\''+js_dic_FORWARD+'\'; return true;" onMouseOut="window.status=\'\'; return true;" value="'+js_dic_FORWARD+'">';
    //setto prezzi, contratto, ecc...
    document.getElementById('hoteltabledet').innerHTML = document.getElementById('hoteltable'+hdetails).innerHTML;
    var fieldset = document.getElementById('det');
    for (var i = 0; i < hotels.length; i++)
        if (hotels[i]['id'] == parseInt(hdetails)) break;
    for (var ag in hotels[i]['agreements']) {
        if (!document.getElementById('prices_details_'+ag+'_det')) {
            var content = '<div id="prices_details_'+ag+'_det" class="box_clicked"></div>';
            fieldset.innerHTML += content;
            document.getElementById('prices_details_'+ag+'_det') .innerHTML = document.getElementById('prices_details_'+ag).innerHTML;
        }
        /*
        if (!document.getElementById('remarks'+ag+'_det')) {
            var content = '<div id="remarks'+ag+'_det" class="rembox"></div>';
            fieldset.innerHTML += content;
            document.getElementById('remarks'+ag+'_det') .innerHTML = document.getElementById('remarks'+ag).innerHTML;
        }
        */
    }
    //controllo la disponibilita' globale dell'hotel e setto il tasto di ricerca di tutta la citta'
    if (document.getElementById('globalavailability'+hotels[i]['id'])) {
        if (document.getElementById('globalavailability'+hotels[i]['id']).value == 'false' && document.getElementById('allcitybutton'))
            document.getElementById('allcitybutton').value = js_dic_AVAILABLEHOTELS;
    }
    //mostro il risultato
    document.getElementById('loading').style.display='none';
	document.getElementById('hotel').style.display='block';
    
    document.body.style.display='none';
	document.body.style.display='block';
	
}

function order_by(type_order){
	
	switch(type_order) {
		case '1':	
		sortByStars();
		break;
		case '2':
		sortByLocation();
		break;
		case '3':
		sortByPrice();
		break;
		case '4': 
		sortByName();
		break;
		case '5': 
		sortByAvailability();
		break;
		default:
		sortByAvailability();
	} 

	print_hotels(hotels);
}



function sortByName() {
        function _sortbyname(first, second) {
            if(first.name == second.name) return 0;
            if(first.name > second.name) return 1;
            else return -1;
        }
        this.hotels.sort(_sortbyname);
}

function sortByPrice() {
        function _sortbyprice(first, second) {
               var primo=90000000;
               var secondo=90000000;
               for(var a in first.agreements)
            	{var actual_total=Number(first.agreements[a].total);
            	 if(actual_total<primo) primo = actual_total;
            	}
            	for(var a in second.agreements)
            	{var actual_total=Number(second.agreements[a].total);
            	 if(actual_total<secondo) var secondo = actual_total;
            	}
            if(primo == 0 && secondo != 0) return -1;
            if(secondo == 0) return 1;
            if(primo == secondo) {
                if(first.name == second.name) return 0;
                if(first.name > second.name) return 1;
                else return -1;
            }
            if(primo > secondo) return 1;
            else return -1;
        }
        this.hotels.sort(_sortbyprice);
}

function sortByLocation() {
        function _sortbylocation(first, second) {
            if(eval('js_dic_LOCATION'+first.location)  == eval('js_dic_LOCATION'+second.location)) {
                return second_price_sort(first,second);
            }
            if(eval('js_dic_LOCATION'+first.location)  < eval('js_dic_LOCATION'+second.location)) return -1;
            else return 1;
        }
        this.hotels.sort(_sortbylocation);
    }

function sortByStars() {
        function _sortbystars(first, second) {
            if(first.stars == second.stars) {
               return second_price_sort(first,second);
            }
            if(first.stars > second.stars) return 1;
            else return -1;
        }
        this.hotels.sort(_sortbystars);
}



function sortByAvailability() {
        function _sortbyavailability(first, second) {
            var primo_tot=90000000;
            var secondo_tot=90000000;
            for(var a in first.agreements)
            	{var actual_total=Number(first.agreements[a].total);
            	 if(actual_total<primo_tot) 
            	  {primo = first.agreements[a].available;
            	   primo_tot=actual_total;
            	  }
            	}
            for(var a in second.agreements)
            	{var actual_total=Number(second.agreements[a].total);
            	 if(actual_total<secondo_tot) 
            	 {secondo = second.agreements[a].available;
            	  secondo_tot=actual_total;
            	 }
            	}
            
            if(primo == secondo) 
            {	
            	return second_price_sort(first,second);
            }
            
            if(primo=='True' && secondo=='False') return -1;
            else return 1;
        }
        this.hotels.sort(_sortbyavailability);
}

function second_price_sort(f,s)	{
               var primo=90000000;
               var secondo=90000000;
               for(var a in f.agreements)
            	{var actual_total=Number(f.agreements[a].total);
            	 if(actual_total<primo) primo = actual_total;
            	}
            	for(var a in s.agreements)
            	{var actual_total=Number(s.agreements[a].total);
            	 if(actual_total<secondo) var secondo = actual_total;
            	}
                if(primo == secondo) return 0;
                if(primo > secondo) return 1;
                return -1;
}

// Operazioni di ritorno dalle chiamate xml
function callbacks_xml_request(response,type)	{
		switch(type)
 		{
  			case 'cities_of_country' :
			    print_cities(response);
  			break;
  			case 'cities_service_of_country' :
			    print_cities(response);
  			break;  	
  			case 'zones_of_city' :
			    print_zones(response);
  			break;
  			case 'active_hotels_of_city' :
			    select_hotels(response);
  			break;  						
  			case 'availability_search' :
                    global_available = Number(response['available']);
                    global_not_available = Number(response['not_available']);
                    global_city_name = response['city'];
                    global_country_name = response['country'];
                    global_city_code = response['city_code'];
                    global_country_code = response['country_code'];						
                    global_availability = response['availability'];
                    global_promotions = response['promotions'];
                    global_html = response['html'];
                    global_hotelsnum = response['hotelsnum'];
                    hotels = new Array();
                    for(var h in response['hotels'])
                    {
                        var ap = response['hotels'][h]['datas'].split('||');
                        hotels[h]=new Array();
                        hotels[h]['id']=ap[0];
                        hotels[h]['name']=ap[1];
                        hotels[h]['stars']=ap[2];
                        hotels[h]['location']=ap[3];
                        hotels[h]['classification']=ap[4];
                        hotels[h]['agreements']=response['hotels'][h]['agreements'];
                    }
                    print_hotels(hotels);	
  			break;
  			case 'hotel_search' :
                    global_city_name = response['city'];
                    global_country_name = response['country'];
                    print_hotels(response['hotels']);
  			break;
 		}
}


// Apre il form di ricerca
function show_form()
{		
        openedhotel = '';
        document.getElementById('othersearch').style.display='none';
        document.getElementById('loading').style.display='none';
		document.getElementById('hotels').style.display='none';
        document.getElementById('hotel').style.display='none';
        document.getElementById('listbuttons').style.display='none';
		if(document.getElementById('book'))document.getElementById('book').style.display='none';
		if(document.getElementById('book_confirm')) document.getElementById('book_confirm').style.display='none';
		document.getElementById('search').style.display='block';
		if(document.getElementById('book'))document.getElementById('avanti').style.display='block';
		form_obj = document.getElementById('input_data');
		div_form = document.getElementById('search');
		document.body.style.display='none';
		document.body.style.display='block';
        //se sono su un hotel particolare lo imposto di nuovo
        if (document.getElementById('introhotel')) {
            selected_hotel = document.getElementById('selected_hotel_save').value;
            document.getElementById('hotel_id').value = selected_hotel;
            if (document.getElementById('onlyavail'))
                document.getElementById('onlyavail').checked = false;
        }
}

function advanced_search(type)	{
	//document.getElementById('no_advanced_loading').innerHTML='';
	if(type=='zones') zones_for_city(document.getElementById('citta'));
	else if (type=='hotels') { 
        hotels_for_city(document.getElementById('citta'));
    }
	else {
		document.getElementById('no_advanced_loading').innerHTML='';
		document.getElementById('hotel_fieldset').style.display='none';
		document.getElementById('zone_fieldset').style.display='none';
	     }
}

function _sortagreements(first, second) {
            var primo = Number(first.total);
            var secondo = Number(second.total);

            if(primo == 0 && secondo != 0) return -1;
            if(secondo == 0) return 1;
            if(primo == secondo) {
                if(first.agreement == second.agreement) return 0;
                if(first.agreement > second.agreement) return 1;
                else return -1;
            }
            if(primo > secondo) return 1;
            else return -1;
        }
        
        
        var openedphoto = '';
        var openedmap = '';
    
function field_over(hotel,field)
{
    if(document.getElementById('text_details_'+hotel)) document.getElementById('text_details_'+hotel).innerHTML=eval('js_dic_HC_'+field.toUpperCase()); 
    eval('document.'+field+'_'+hotel+'.src=\''+js_global_images_url+'hotel_info/'+field+'_over.gif\'');
}
    
function field_out(hotel,field)
{	
    if(document.getElementById('text_details_'+hotel)) document.getElementById('text_details_'+hotel).innerHTML='&nbsp;'; 
    eval('document.'+field+'_'+hotel+'.src=\''+js_global_images_url+'hotel_info/'+field+'_out.gif\'');
}

function show_photo(legend)
{
    if (openedphoto != '' && document.getElementById(openedphoto))
        document.getElementById(openedphoto).style.display = 'none';
    openedphoto = legend+'_div';
    hide_selects();
    document.getElementById(legend+'_div').style.display = 'block';
}

function show_map(zoom)
{
    if (openedmap != '')
        document.getElementById(openedmap).style.display = 'none';
    openedmap = 'map'+zoom+'_div';
    document.getElementById('map'+zoom+'_div').style.display = 'block';
}

function nights()
{ var annoa = document.getElementById('aa').options[document.getElementById('aa').options.selectedIndex].value;
  var mesea = document.getElementById('mma').options[document.getElementById('mma').options.selectedIndex].value;
  var giornoa = document.getElementById('gga').options[document.getElementById('gga').options.selectedIndex].value;
  var annop = document.getElementById('ap').options[document.getElementById('ap').options.selectedIndex].value;
  var mesep = document.getElementById('mmp').options[document.getElementById('mmp').options.selectedIndex].value;
  var giornop = document.getElementById('ggp').options[document.getElementById('ggp').options.selectedIndex].value;

  dataa = new Date(mesea+'/'+giornoa+'/'+annoa);
  datap = new Date(mesep+'/'+giornop+'/'+annop);

  secs = Math.abs(datap.getTime() - dataa.getTime());
  secs = Math.round(secs / (24 * 60 * 60 * 1000));
  global_nights = secs;
  document.getElementById('nights').innerHTML = secs;
}

function setPD()
{ 
    var anno = document.getElementById('aa').options[document.getElementById('aa').options.selectedIndex].value;
    var mese = document.getElementById('mma').options[document.getElementById('mma').options.selectedIndex].value;
    var giorno = document.getElementById('gga').options[document.getElementById('gga').options.selectedIndex].value;
    // Per passare, se serve, all'anno successivo
    var today = new Date(); 
    var arrivo=new Date(anno, mese-1, giorno, 1, 0, 0);
    var partenza=new Date(arrivo.getTime() + 86400000);
    document.getElementById('mmp').options.selectedIndex = partenza.getMonth();
    document.getElementById('ggp').options.selectedIndex = partenza.getDate()-1;
    document.getElementById('ap').options.selectedIndex = partenza.getFullYear()- (new Date()).getFullYear();  
}

function openHotelMaps(hotel)
	{ 
		window.open(js_global_root_url+"maps/google.php?hotel="+hotel,"regWin","menubar=no,height=500,width=550,status=no,toolbar=no,scrollbars=no");
	}
    
function openCitiesMaps()
	{ 
		window.open(js_global_root_url+"maps/cities.php","regWin","menubar=no,height=370,width=550,status=no,toolbar=no,scrollbars=no");
	}

