var debug = false;

function refreshPage(param)
{
  var flds = new Array("sorting", "length");
  var params = "?";   
  var field;
  var idSearch = document.getElementById("idSearch").value;
//alert(flds.length);
//alert (param);
  for (a = 0; a < flds.length; a++)
  {
    if (params.length > 1)
      params = params+"&";
    field = document.getElementById(flds[a]);
    params = params+flds[a]+"="+field.value;
//alert(flds[a]+field.value);
    if (flds[a] == "sorting" && param != undefined && param != "")
    {
      params = params+"&az="+param;
    }
  }

//var field = document.getElementById(param);
//alert(field.value);
//alert(params);
//location.href='dataresult_init.do?'+param+'='+field.value;
  location.href='dataresult_init.do'+params+"&idSearch="+idSearch;
 }
 
// #######  Richiesta AJAX x aggiornamento lista risultati ########
// # i parametri vengono presi via javascript e passati via GET   #
// # attraverso AJAX                                              #
// ################################################################
function updateResultList()
{
  var action = null;
  var offset = null;
  var length = 20;
  var lang = languageCode;    // e' definito nella pagina result.jsp;
  var idSearch = $F("idSearch");
  
  //length = $F('length'); 
  try{
    if (document.getElementById('length'))
      length = $F('length'); 
  }
  catch(exception){}
  
  
  if ($('distance'))
  {
//    alert('distance ok');
//    alert($('distance').value);  
    //var distance = $F('distance');
    var distance = $('distance').value;
  }
//alert(distance);  
  if ($('distanceFrom'))
    //var distanceFrom = $F('distanceFrom');  
    var distanceFrom = $('distanceFrom').value;  

  //var ratingHandler = $('rating_all');
  //alert(ratingHandler.value);
  //-------  get Rating value -------------------------------------
  rating = '';
  if ($F('rating_all') != undefined && $F('rating_all') != NaN)
    rating = $F('rating_all');
  
  for (i = 1; i<=6; i++)
  {  
    if ($F('rating'+i) != undefined && $F('rating'+i) != NaN)
    {  
      if (rating.length > 0)
        rating += ',';
      rating += $F('rating'+i);      
    }  
  }
 
  if (rating == '' || rating == undefined)
    rating = -1;
//  alert(rating);
  //----------------------------------------------------------------
  if ($('min_price'))
    var minPrice = $F('min_price');  
  if ($('max_price'))
    var maxPrice = $F('max_price');  
  
  var sorting = $F('sorting');
  var az = $F('az');

  try{
    if (document.getElementById('action'))
      action = $F('action');
    if (document.getElementById('offset'))
      offset = $F('offset');
  }  
  catch(exception){}
//alert(encodeURIComponent(rating));
//alert("ID Search:"+idSearch+" Language = "+lang+"-length:"+length+'-sorting:'+sorting+" "+az+"|Stelle:"+rating+'|action:'+action+'|offset='+offset);
	var url = 'hotelresultslist.do';
	var pars = 'idSearch='+idSearch+'&lang='+lang+'&sorting='+sorting+'&az='+az+'&rating='+encodeURIComponent(rating);
  if (length != null && length > 0)
    pars = pars+'&length='+length;
  if (action != null )
    pars = pars+'&action='+action;
  if (offset != null )
    pars = pars+'&offset='+offset;
  if (distance != null )
    pars = pars+'&distance='+distance;
  if (distanceFrom != null )
    pars = pars+'&distanceFrom='+distanceFrom;
    
  if (minPrice != null )
    pars = pars+'&minPrice='+minPrice;
  if (maxPrice != null )
    pars = pars+'&maxPrice='+maxPrice;
    
  $('action').value = '';
  
  Element.show('result_container_wait');
  
	var myAjax;
  myAjax = new Ajax.Updater(  'result_container', url, {method: 'get', parameters: pars, evalScripts : true ,onlyLatestOfClass: 'resultlist',onSuccess: hideWaiter}); 
  //setTimeout('refreshMap()','5000');
	return true;

}
function refreshMap()
{
//  alert(Element.visible('mainMap'));
  Element.hide('mainMap');
  Element.show('mainMap');
//  alert(Element.visible('mainMap'));
}  

function hideWaiter()
{
  Element.hide('result_container_wait');
  //setTimeout('refreshMap()','3000');


}
// [][][][][][] checkbox control functions [][][][][][][][][][][][][][][][][]
function checkStars(checkId)
{
  //alert('checked Value:'+$(checkId).value);
  if ($(checkId).value == -1 && $(checkId).checked == true )
    uncheckAll();
  else
    $('rating_all').checked = false;
  controlEmpty();
  updateResultList();
}

function controlEmpty()
{
  if ($('rating_all').checked == false)
  {
    uncheck_any = false;
    for (var a=1; a<=6; a++)
    {
      if ($('rating'+a).checked == true)
        uncheck_any = true;
    }    
    if (!uncheck_any)
      $('rating_all').checked = true;
  }  
}
function uncheckAll()
{
  for (var a=1; a<=6; a++)
  {
    $('rating'+a).checked = false;
  }
}

// [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
// ^^^^^^^^^^^^   Slider control functions  ^^^^^^^^^^^^^^^^^^^^^^
//var handles ; //le lascio come globali....
function createSlider()
{
//alert($F('min_price')+" # "+$('min_price').value );
  var step = new Number(10);
  var min_price = new Number($F('original_min_price'));
  var max_price = new Number($F('original_max_price'));
  
  //max_price = (ceil(max_price/10)*10); 
  //min_price = (floor(min_price/10)*10);
  
  //var min_price = new Number($F('min_price'));
  //var max_price = new Number($F('max_price'));
//alert("prices:"+min_price+'-'+max_price);
  var handles = [$('handle1'), $('handle2')];
  //var values = [min_price,max_price]; // First handle at 0, 2nd at 100
  var values = [$F('min_price'),$F('max_price')]; // First handle at 0, 2nd at 100
//  alert(values);
  //var values = [0,20]; // First handle at 0, 2nd at 100
  var steps = new Array();
  for (a = min_price; a< max_price; a+= step  )
  {
//    if (steps.length > 0)
//      steps += ",";
//    steps += a;
      steps.push(a);
  }
  //steps = "["+steps+","+max_price+"]";
  steps.push(max_price);
//alert(steps);
  //var slider = new Control.Slider(handles,'track',{range:$R(0,200),
  
  var slider = new Control.Slider(handles,'track',{
        range:$R(min_price,max_price),  
        step:10, 
        //range:$R(0,20),
        //values: [0,5,10,15,20],
        values: steps,
        //increment: 10,
        //restricted: true,
        restricted: 10, //distance between the sliders.
        sliderValue: values,
        alignX: 0,
        alignY: 0,
        onSlide:function(v){updatePrices(v);},
        onChange:function(v){updatePrices(v);updateResultList();}
        });
   
}                              
function updatePrices(sliderPrices)
{
//alert(sliderPrices);
  var s_prices = new String(sliderPrices);
//alert(s_prices);
  var a_prices = s_prices.split(',');
  
  var minPrice = new Number(a_prices[0]);
  var maxPrice = new Number(a_prices[1]);
//alert ('minPrice: '+minPrice.toFixed()+" # MaxPrice: "+minPrice.toFixed());
  
  // usare degli input type text con css.
  //$('min_price').innerHTML = minPrice.toFixed();
  //$('max_price').innerHTML = maxPrice.toFixed();
//alert('prima:'+$('max_price').value);  
  $('min_price').value = minPrice.toFixed();
  $('max_price').value = maxPrice.toFixed();
//alert('dopo:'+$('max_price').value);  
//function(v){$('debug4').innerHTML='changed! '+v; alert('slider value: '+v);}
  return;
}

// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// �����������������  mostra/nascondi ������������������������������������
function changeMapSize()
{
  if ($('fine_search_td').innerHTML != '')
  {
//alert($('fine_search_td').innerHTML);    
    $('map_td').innerHTML = $('fine_search_td').innerHTML;
    //Element.update('fine_search_td', '');
    $('fine_search_td').innerHTML = '';
    littleMap('mainMap');
    Element.show('bigMap');
    Element.hide('smallMap');
  }
  else
  {
    //Element.update('fine_search_td', $('map_td').innerHTML);
    $('fine_search_td').innerHTML = $('map_td').innerHTML ;
    $('map_td').innerHTML = '';    
    bigMap('mainMap');
    Element.hide('bigMap');
    Element.show('smallMap');    
    
  }  
  createSlider();
  return;
  
}
function littleMap(mapDivName)
{
  var mainMapDiv = $(mapDivName);
  mainMapDiv.style.width = "300px";
  mainMapDiv.style.height = "220px";
  //mainMapDiv.style.align = "right";  
  mainMap.savePosition();
  mainMap.checkResize();
  //alert(mainMap.getCenter());
  //mainMap.panTo(mainMap.getCenter());
  mainMap.removeControl(largeControl);
  mainMap.addControl(smallControl);
  mainMap.returnToSavedPosition();
  return;
}
function bigMap(mapDivName)
{
  var mainMapDiv = $(mapDivName);
  //alert(mainMapDiv.style.width);
  mainMapDiv.style.width = "650px";
  mainMapDiv.style.height = "401px";
  //mainMapDiv.style.align = "right";  
  mainMap.savePosition();
  mainMap.checkResize();
  //mainMap.panTo(mainMap.getCenter());
  mainMap.removeControl(smallControl);
  largeControl = new GLargeMapControl();
  mainMap.addControl(largeControl);
  mainMap.returnToSavedPosition();
  return;
}

// �������������������������������������������������������������������������


// ################################################################     
function PopupPic(sPicURL, title,w,h) 
{
  var winl = (screen.width - w) / 2;
  var wint = (screen.height - h) / 2;
  winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+'resizable=0';
  finestra = window.open(sPicURL, title, winprops);
  finestra.focus();
}
function changeImgSrc(imageId, newImageURL, newImageTitle)
{
  image = document.getElementById(imageId);
  var newTitle = newImageTitle;
  newTitle = unescape(newTitle.replace(/\+/g, " "));
  image.src= unescape(newImageURL);
  image.title = newTitle;
  return;
}

function showDiv(divId)
{
  var divObj = document.getElementById(divId);
  divObj.style.visibility = 'visible';
} 

function reportError(request)
{
  //alert('Sorry. There was an error.\n'+request.responseText);
  alert('Sorry.The provider is temporary unavailable');
}

function onDetailComplete(idh,idx)
{
	//setupAllTabs(response);
//alert ("before"+document.getElementById('loaded'+idh).value);
	document.getElementById('loaded'+idh).value = true;
	
	//document.getElementById(idx).style.display = 'block';
	new Effect.BlindUp(document.getElementById('roller'+idh));
	new Effect.BlindDown(document.getElementById(idx));
	

//alert ("after"+document.getElementById('loaded'+idh).value);	
}
function handleDetail(idx, idh, idProvider, idSearch)
{
	if(document.getElementById(idx).style.display == 'none')
	{
		try
		{
			document.getElementById('infoImage'+idh).src = imageOpened;		
		}
		catch(ex)
		{}
		//document.getElementById(idx).style.display = 'block';
		var isLoaded = true;
		try
		{
//alert('loaded'+idh+': '+document.getElementById('loaded'+idh).value);
			isLoaded = document.getElementById('loaded'+idh).value;			
		}
		catch(ex)

		{
			isLoaded = false;
		}

		//if (document.getElementById('loaded'+idh).value != 'true')	
		if (isLoaded != 'true')	
		{
			//new Effect.BlindDown(document.getElementById('roller'+idh));
			document.getElementById('roller'+idh).style.display = 'block';
			var url = 'retrievedetail.do';
			var pars = 'id_hotel='+idh+'&idProvider='+idProvider+'&idSearch='+idSearch;
			var myAjax;
			//myAjax = new Ajax.Updater( {success: idx}, url, {method: 'get', parameters: pars, onFailure: reportError, onComplete: setupAllTabs}); 
			//myAjax = new Ajax.Updater( {success: idx}, url, {method: 'get', parameters: pars, onFailure: reportError, onComplete: onDetailComplete}); 
			myAjax = new Ajax.Updater( {success: idx}, url, {method: 'get', parameters: pars, onFailure: reportError, onComplete: function(request){setupAllTabs(request);onDetailComplete(idh,idx)}}); 
		}
		else
			new Effect.BlindDown(document.getElementById(idx));

	}
	else
	{
		
		try
		{
			document.getElementById('infoImage'+idh).src = imageClosed;
		}
		catch(ex)
		{}
		new Effect.BlindUp(document.getElementById(idx));
		//document.getElementById(idx).style.display = 'none';
	}
	return true;
}

function handleRoute(idx, idh)
{
//	if(document.getElementById(idx).style.display == 'none')
//	{
		//document.getElementById(idx).style.display = 'block';
		new Effect.toggle($(idx),'blind')
		//var url = 'php/printinfo.php';
		//var url = 'dataresult.do';
		var url = 'airport_route.do';
		var pars = 'id_hotel='+idh;
		//var ajaxCalls = new Array();
		//var myAjax;
		//myAjax = new Ajax.Updater( {success: idx}, url, {method: 'get', parameters: pars, onFailure: reportError, onComplete: setupAllTabs}); 
		ajaxCalls[idh] = new Ajax.Updater({success: idx}, url, {method: 'get', parameters: pars, onFailure: reportError, onComplete: setupAllTabs});
//alert(idh);
//	}
/*
	else
	{
		
		try
		{
			document.getElementById('infoImage'+idh).src = imageClosed;
		}
		catch(ex)
		{};
		document.getElementById(idx).style.display = 'none';
	}
*/
}

// @@@@@@ Richiesta AJAX verso servlet Tracking; @@@@@@@@@@@
function saveBookingReport(idSearch, idHotel, idProvider)
{
		var url = 'Tracking';
		var pars = 'idSearch='+idSearch+'&idHotel='+idHotel+'&idProvider='+idProvider;
		var myAjax;
		myAjax = new Ajax.Request(  url, {method: 'get', parameters: pars}); 
	return true;
}
// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
function preloadImage(src)
{
	img = new Image();
	img.src= src;
}

//update outboundDate width inboundDate + 2 day;
// all values are integrated in this function it could be redefined by passing values as paramenters
function updateReturnDate()
{
	var daysToAdd = 2;
	var inDay = new String(document.search_resultform.outboundDay.value);
	var inMonthYear = document.search_resultform.outboundMonthYear.value;
	var inYear = new String(inMonthYear.substring(2,inMonthYear.length));
	var inMonth = inMonthYear.substring(0,2);
	inMonth = inMonth -1;
	var endDate = new Date(inYear,inMonth,inDay);
	endDate.setTime(endDate.getTime() +daysToAdd*1000*3600*24 );

	var returnDay = endDate.getDate();
	if(returnDay<10)returnDay = '0' + returnDay;
	var returnMonth = parseInt(endDate.getMonth()) + 1;
	if(returnMonth<10)returnMonth = '0' + returnMonth;
	var returnMonthYear = String(returnMonth)+String(endDate.getFullYear()); 

	document.search_resultform.returnDay.value = returnDay;
	document.search_resultform.returnMonthYear.value = returnMonthYear;
    //alert(returnDay+"-"+returnMonth+"-"+endDate.getFullYear());
    return;
/*
alert(inDay+":"+inMonth+":"+inYear);
alert(returnDay+"-"+returnMonth+"-"+endDate.getFullYear());
alert(returnMonthYear+" = "+document.search_resultform.returnMonthYear.value);
*/
}
function checkDate()
{
  var Today = new Date();
  
	var inDay = new String(document.search_resultform.outboundDay.value);
	var inMonthYear = document.search_resultform.outboundMonthYear.value;
	var inYear = new String(inMonthYear.substring(2,inMonthYear.length));
	var inMonth = inMonthYear.substring(0,2);
	inMonth = inMonth -1;
	var inDate = new Date(inYear,inMonth,inDay);

    var outDay = new String(document.search_resultform.returnDay.value);
	var outMonthYear = document.search_resultform.returnMonthYear.value;
	var outYear = new String(outMonthYear.substring(2,outMonthYear.length));
	var outMonth = outMonthYear.substring(0,2);
	outMonth = outMonth -1;
	var outDate = new Date(outYear,outMonth,outDay);
    //se data partenza <= oggi
    var a =Today.getTime();
    var b = inDate.getTime();
    if (Today.getTime() > inDate.getTime() )
    {
      var new_inDay =  Today.getDate()+1;
      if(new_inDay<10)new_inDay = '0' + new_inDay;
      var new_inMonth = parseInt(Today.getMonth()) + 1;
      if(new_inMonth<10)new_inMonth = '0' + new_inMonth;
      var new_inMonthYear = String(new_inMonth)+String(Today.getFullYear());       
      document.search_resultform.outboundDay.value = new_inDay;
      document.search_resultform.outboundMonthYear.value = new_inMonthYear;      
      checkDate();
      return;
    }
    // se data partenza antecedente data arrivo.
    if (outDate.getTime() <= inDate.getTime())
    {
      updateReturnDate();
      return;
    }  
    return;  
}

// %%%%%%%%%%   Refresh Banner every xx sec. %%%%%%%%%%%%%%%%%
function refreshBanner()
{
  var waitTime = 30; //sec. to wait
  $('verticalbanner').src= $('verticalbanner').src;
  $('strip').src= $('strip').src;
  setTimeout('refreshBanner()', waitTime * 1000);
  return;  
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//HHHHHHHHHHHHH Show/Hide footer box  HHHHHHHHHHHHHHHHHHHHHHHH
function showHideBox(tl1, idBox1, tl2, idBox2)
{
	titleBox1 = document.getElementById(tl1).className;
	titleBox2 = document.getElementById(tl2).className;
  box1 = document.getElementById(idBox1).className;
	box2 = document.getElementById(idBox2).className;
  
  if (titleBox1 == 'title')
  {
    document.getElementById(tl1).className = 'titleActive';
    document.getElementById(tl2).className = 'title';
    document.getElementById(idBox1).className = 'boxVisible';
    document.getElementById(idBox2).className = 'boxHide';
  }
  
  if (titleBox1 == 'titleActive')
  {
    document.getElementById(tl1).className = 'title';
    document.getElementById(idBox1).className = 'boxHide';
    
  }
}
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH

function hide_select() {
    for (var l=0;l<document.forms.length;l++) {
        for (var m=0;m<document.forms[l].elements.length;m++) {
            if (document.forms[l].elements[m].type=='select-one') {
                document.forms[l].elements[m].style.visibility='hidden';
            }
        }
    }
}

function show_select() {
    for (var l=0;l<document.forms.length;l++) {
        for (var m=0;m<document.forms[l].elements.length;m++) {
            if (document.forms[l].elements[m].type=='select-one') {
                document.forms[l].elements[m].style.visibility='visible';
            }
        }
    }
}

