var MAX_PANELS = 3;
var xmlHttp = new Array(MAX_PANELS);
var target = new Array(MAX_PANELS);
var panel;
var mapIndex;
var offset = "../../";

function GetXmlHttpObject()
{
  var xmlHttp=null;
  try
  {
    // Firefox, Opera 8.0+, Safari
    xmlHttp=new XMLHttpRequest();
  }
  catch (e)
  {
		// Internet Explorer
		try
		{
	  	xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
  		xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
  }
  return xmlHttp;
}


function RequestHotelOverview(panelIndex, arid)
{
  target[panelIndex] = document.getElementById("hotel_"+panelIndex);
  var qString = offset+"HotelDetails.aspx";
  qString += "?arid="+arid;
  qString += "&panel="+panelIndex;
  qString += "&tab=-1";
  qString += "&offset="+offset;
  SendRequest(panelIndex, qString);
}

function GetMainQueryString(panelIndex, tabIndex)
{
  mapIndex = panelIndex;
  panel = document.getElementById("panel_"+panelIndex);
  target[panelIndex] = panel;
  var arid = panel.getAttribute("arid");
  var qString = offset+"HotelDetails.aspx";
  qString += "?arid="+arid;
  qString += "&tab="+tabIndex;
  qString += "&panel="+panelIndex;
  qString += "&offset="+offset;
  return qString
}

function RequestHotelDetails(panelIndex, tabIndex)
{
  var qString = GetMainQueryString(panelIndex, tabIndex);
  SendRequest(panelIndex, qString);
//  alert("max="+MAX_PANELS);
}

function SelectDate(panelIndex)
{
  var selmonth = document.getElementById('SelectedMonth_'+panelIndex);
  var deltamonth = document.getElementById('DeltaMonth_'+panelIndex);
  var selecteddate = document.getElementById('SelectedDate_'+panelIndex);
  var numberofnights = document.getElementById('NumberOfNights_'+panelIndex);
  var numberofrooms = document.getElementById('NumberOfRooms_'+panelIndex);
  var searcharea = document.getElementById('SearchArea_'+panelIndex);
  
  var qString = GetMainQueryString(panelIndex, 5);
  qString += "&seldate="+selecteddate.value;
  qString += "&selmon="+selmonth.value;
  qString += "&dmon="+deltamonth.value;
  qString += "&non="+numberofnights.value;
  qString += "&nor="+numberofrooms.value;
  if (searcharea != null)
    qString += "&area="+searcharea.checked;
  SendRequest(panelIndex, qString);
}

function AvailabilityCheck(panelIndex)
{
  var selmonth = document.getElementById('SelectedMonth_'+panelIndex);
  var selecteddate = document.getElementById('SelectedDate_'+panelIndex);
  var numberofnights = document.getElementById('NumberOfNights_'+panelIndex);
  var numberofrooms = document.getElementById('NumberOfRooms_'+panelIndex);

  var qString = GetMainQueryString(panelIndex, 6);
  qString += "&seldate="+selecteddate.value;
  qString += "&selmon="+selmonth.value;
  qString += "&non="+numberofnights.value;
  qString += "&nor="+numberofrooms.value;
  SendRequest(panelIndex, qString);
}

function CalculateEmissions(panelIndex)
{
  panel = document.getElementById("panel_"+panelIndex);
  var arid = panel.getAttribute("arid");

  target[panelIndex] = document.getElementById("emissions_response_text_"+panelIndex);
  target[panelIndex].innerHTML="<IMG SRC='"+offset+"images/circle-ball-dark-antialiased.gif'> Calculating";

  var from = document.getElementById("from_"+panelIndex);
  var economy = document.getElementById("economy_"+panelIndex);
  var units = document.getElementById("units_"+panelIndex);
  var fuel = document.getElementById("fuel_"+panelIndex);

  var qString = offset+"EmissionsCalculator.aspx";
  qString += "?arid="+arid;
  qString += "&from="+from.value;
  qString += "&economy="+economy.value;
  qString += "&units="+units.selectedIndex;
  qString += "&fuel="+fuel.selectedIndex;
  SendRequest(panelIndex, qString);
}


function SendRequest(panelIndex, qString)
{
	xmlHttp[panelIndex]=GetXmlHttpObject();
	if (xmlHttp[panelIndex]==null)
	{
		alert ("Your browser does not support AJAX!");
		return;
	}
/*
	switch (panelIndex)
	{
	  case 0:
	    xmlHttp[panelIndex].onreadystatechange=StateChangedPanel0;
	    break;
	  case 1:
	    xmlHttp[panelIndex].onreadystatechange=StateChangedPanel1;
	    break;
	  case 2:
	    xmlHttp[panelIndex].onreadystatechange=StateChangedPanel2;
	    break;
	 }
*/
//http.onreadystatechange = function (someParameter) { ... };
    xmlHttp[panelIndex].onreadystatechange = function () { StateChanged (panelIndex); };	 
	xmlHttp[panelIndex].open("GET",qString,true);
	xmlHttp[panelIndex].send(null);
}


 
/*
function StateChangedPanel0(panelIndex) 
{
  StateChanged(0);
}
function StateChangedPanel1(panelIndex) 
{
  StateChanged(1);
}
function StateChangedPanel2(panelIndex) 
{
  StateChanged(2);
}
*/
function StateChanged(panelIndex) 
{ 
	if (xmlHttp[panelIndex].readyState==4)
	{
		try
		{
			target[panelIndex].innerHTML=xmlHttp[panelIndex].responseText;
			
			InsertMap();
		}
		catch (e)
		{
			target[panelIndex].innerHTML="Sorry, this information is not currently available.";
		}
    }
} 

/*
function SendRequest(qString)
{
	xmlHttp=GetXmlHttpObject();
	if (xmlHttp==null)
	{
		alert ("Your browser does not support AJAX!");
		return;
	}

	xmlHttp.open("GET",qString,false);
	xmlHttp.send(null);
	if (xmlHttp.status == 200)
	{
		try
		{
			target.innerHTML=xmlHttp.responseText;
			
			InsertMap();
		}
		catch (e)
		{
			target.innerHTML="Sorry, this information is not currently available.";
		}
  }
}
*/

function InsertMap() 
{
  var map = document.getElementById("Map_"+mapIndex);
//  alert(panelIndex);
//  alert(map);
  if (map != null)
  {
     if (GBrowserIsCompatible()) 
     {
       map.id = "map";
       var lat = document.getElementById("Lat_"+mapIndex);
       var lon = document.getElementById("Lon_"+mapIndex);
//       alert(lat.value); alert(lon.value);

       var mapObj = new GMap2(map);
       mapObj.setCenter(new GLatLng(lat.value, lon.value),13);
       var markerObj = new GMarker(new GLatLng(lat.value, lon.value)/*,{title: "A"}*/);
       mapObj.addOverlay(markerObj);
//       mapObj.addControl(new GZoomControl());
       mapObj.addControl(new GSmallMapControl());       
     }
   }
} 

function TabClick(panelIndex, tabIndex)
{
  var tab;
  for (i = 0; i < 5; i++)
  {
    tab = document.getElementById('tab_'+panelIndex+'_'+i);
    if (i == tabIndex)
    {
      tab.className = "on";
//      tab.disabled = true;
    }
    else
    {
      tab.className = "";
//      tab.disabled = false;
    }
  }

  RequestHotelDetails(panelIndex, tabIndex);

}

function ThumbnailClick(panelIndex, photoIndex)
{
   var thumbnail = document.getElementById('Thumbnail_'+panelIndex+ '_'+photoIndex);
   var mainphoto = document.getElementById('MainImage_'+panelIndex);
   var newimage = thumbnail.getAttribute('src')
   if (newimage != "images/placeholder.gif")
     mainphoto.setAttribute('src',thumbnail.getAttribute('src'));

}

function DateClick(panelIndex, date)
{
  var selecteddate = document.getElementById('SelectedDate_'+panelIndex);
  selecteddate.value = date;
  SelectDate(panelIndex);
}




function MonthClick(panelIndex, delta)
{
  var deltaMonth = document.getElementById('DeltaMonth_'+panelIndex);
  deltaMonth.value = delta;
  SelectDate(panelIndex);
}

function BookNowClick(panelIndex)
{
  var panel = document.getElementById("panel_"+panelIndex);
  var arid = panel.getAttribute("arid");
  var startDay = document.getElementById('StartDay_'+panelIndex);
  var startMonth = document.getElementById('StartMonth_'+panelIndex);
  var startYear = document.getElementById('StartYear_'+panelIndex);
  var totalNights = document.getElementById('NumberOfNights_'+panelIndex);
  var rooms = document.getElementById('NumberOfRooms_'+panelIndex);

  document.location.href = offset+"RoomSelector.aspx?arid="+arid+"&rooms="+rooms.value+
                           "&totalnights="+totalNights.value+"&startday="+startDay.value+
                           "&startmonth="+startMonth.value+"&startyear="+startYear.value;
}

function AvailabilityClick(panelIndex)
{
  var selecteddate = document.getElementById('SelectedDate_'+panelIndex);
  if (selecteddate.value.length == 0)
  {
	alert("Please select a check-in date from the calendar");
	return;
  }
  var numberofnights = document.getElementById('NumberOfNights_'+panelIndex);
  if (!IsValidInteger(numberofnights.value))
  {
	alert("Please enter the number of nights you wish to stay");
	return;
  }
  var numberofrooms = document.getElementById('NumberOfRooms_'+panelIndex);
  if (!IsValidInteger(numberofrooms.value))
  {
	alert("Please enter the number of rooms you require");
	return;
  }
  var searcharea = document.getElementById('SearchArea_'+panelIndex);
  if ((searcharea == null) ||  (searcharea.checked))
    WideAvailabilityCheck(panelIndex);
  else
    AvailabilityCheck(panelIndex);

}


function WideAvailabilityCheck(panelIndex)
{
  var startDay = document.getElementById('StartDay_'+panelIndex);
  var startMonth = document.getElementById('StartMonth_'+panelIndex);
  var startYearShort = document.getElementById('StartYearShort_'+panelIndex);
  var totalNights = document.getElementById('NumberOfNights_'+panelIndex);
  var rooms = document.getElementById('NumberOfRooms_'+panelIndex);
//  var townDetails = document.getElementById('_town_details');
  
  document.getElementById('startday').value = startDay.value;
  document.getElementById('startmonth').value = startMonth.value;
  document.getElementById('startyear').value = startYearShort.value;
  document.getElementById('totalnights').value = totalNights.value;
  document.getElementById('rooms').value = rooms.value;
//  document.getElementById('towndetails').value = townDetails.value;
  document.forms[0].action = offset + "HotelSelector.aspx"
  
  document.forms[0].submit();
  
}

function NightsIsValid()
{
  return IsValidInteger(NightsObject.value);
}

function RoomsIsValid()
{
  return IsValidInteger(RoomsObject.value);
}

function IsValidInteger(value)
{
  var intval = parseInt(value);
  if (isNaN(intval))
    return false;
  if (String(intval) != value)
    return false;
	  
  return (intval > 0);
}



/*
document.getElementsById = function (tagName) {
	var unFiltered = document.getElementsByTagName('*');
	var filtered = [];
	for (i = 0; i < unFiltered.length; i++) if (unFiltered[i].getAttribute('id') == tagName) filtered.push(unFiltered[i]);
	return filtered;
}

document.getElementsByClass = function (tagName) {
	var unFiltered = document.getElementsByTagName('*');
	var filtered = [];
	for (i = 0; i < unFiltered.length; i++) if (unFiltered[i].getAttribute('class') == tagName) filtered.push(unFiltered[i]);
	return filtered;
}
*/

function AddToShortlist(panelIndex)
{
  var panel = document.getElementById("panel_"+panelIndex);
  var arid = panel.getAttribute("arid");

  document.location.href = offset+"UserProfile.aspx?src="+document.location.href+"&arid="+arid;
}

var xmlHttpPhoto;
function GetPhoto(arid)
{
  var qString = offset+"GetPhoto.aspx";
  qString += "?arid="+arid;
  xmlHttpPhoto=GetXmlHttpObject();
  if (xmlHttpPhoto==null)
  {
    alert ("Your browser does not support AJAX!");
    return;
  }
  xmlHttpPhoto.onreadystatechange = function () { StateChangedPhoto(); };
  xmlHttpPhoto.open("GET",qString,true);
  xmlHttpPhoto.send(null);
}

function StateChangedPhoto() 
{ 
  var rightnow = new Date();
  if (xmlHttpPhoto.readyState==4)
	{
		try
		{
 var overviewImages = document.getElementsByName("overview_image");
 for (i=0; i < overviewImages.length; i++)
 {
   var overviewImage = overviewImages[i];
//   var src = overviewImage.getAttribute("src") + "?" + rightnow.getTime();
//   overviewImage.setAttribute("src", src);
   var src = overviewImage.src + "?" + rightnow.getTime();
   overviewImage.src = src;
 }

		}
		catch (e)
		{
		}
    }
} 
