function $(e){if(typeof e=='string')e=document.getElementById(e);return e};
function collect(a,f){var n=[];for(var i=0;i<a.length;i++){var v=f(a[i]);if(v!=null)n.push(v)}return n};

ajax={};
ajax.x=function(){try{return new ActiveXObject('Msxml2.XMLHTTP')}catch(e){try{return new ActiveXObject('Microsoft.XMLHTTP')}catch(e){return new XMLHttpRequest()}}};
ajax.serialize=function(f){var g=function(n){return f.getElementsByTagName(n)};var nv=function(e){if(e.name)return encodeURIComponent(e.name)+'='+encodeURIComponent(e.value);else return ''};var i=collect(g('input'),function(i){if((i.type!='radio'&&i.type!='checkbox')||i.checked)return nv(i)});var s=collect(g('select'),nv);var t=collect(g('textarea'),nv);return i.concat(s).concat(t).join('&');};
ajax.send=function(u,f,m,a){var x=ajax.x();x.open(m,u,true);x.onreadystatechange=function(){if(x.readyState==4)f(x.responseText)};if(m=='POST')x.setRequestHeader('Content-type','application/x-www-form-urlencoded');x.send(a)};
ajax.get=function(url,func){ajax.send(url,func,'GET')};
ajax.gets=function(url){var x=ajax.x();x.open('GET',url,false);x.send(null);return x.responseText};
ajax.post=function(url,func,args){ajax.send(url,func,'POST',args)};
ajax.update=function(url,elm){var e=$(elm);var f=function(r){e.innerHTML=r};ajax.get(url,f)};
ajax.submit=function(url,elm,frm){var e=$(elm);var f=function(r){e.innerHTML=r};ajax.post(url,f,ajax.serialize(frm))};


function getPrice(theForm) {
  document.getElementById('packagePrice').innerHTML="";
  fString =(ajax.serialize(theForm));
  ajax.post("../../../../reservations/data/price.php",showResult,fString);
  return false;	
}
function showResult(res) {
  eval("JSON="+res);
  document.getElementById('packagePrice').innerHTML=JSON.priceString;
  validateRoom(document.res);
  showDesc();
}
var tId="";
var roomType = null;
if (window.addEventListener) //DOM method for binding an event
window.addEventListener("load", testDone, false);
else if (window.attachEvent) //IE exclusive method for binding an event
window.attachEvent("onload", testDone);
else if (document.getElementById) //support older modern browsers
window.onload=testDone;

function testDone() {
  tId=setInterval('done()',300)
}
function done() {
  var calendar = document.getElementById('calendar');
  if (calendar===null) return; 
  var dtPick = calendar.innerHTML;
  if (dtPick != "") {
    clearInterval(tId);
    setTimeout('addPricingEvents()',100); // IE can be very slow
  }
}

// Take th textual value and get the number of sleeping spaces

var roomTypesByText = { 
"unknown"               : 0,
"One Bedroom Condo"     : 4,
"Two Bedroom Condo"     : 8
}
// Please note the last item has no comma

var Nights = 0;
function addPricingEvents() {
  roomType = document.getElementById('tsdatepicker').getElementsByTagName('select')[0];
  if (roomType.addEventListener) {
    roomType.addEventListener('onchange', validateRoom, false);
  } else if (roomType.attachEvent) {
    roomType.attachEvent('onchange', validateRoom );
  } 

  nights = document.getElementById('tsdatepicker').getElementsByTagName('select')[1];
  Nights = nights.value;
  if (document.res.Adults) {
    document.res.Adults.value=1; // at least one adult
    document.res.Adults.onchange();
  }
  tId = setInterval('monitorEvents()',300);
}

function validateRoom(theForm) {
  if (theForm==null) theForm = document.res;
  var selectedText = getRoomTypeText(); 
  var numberOfBeds = roomTypesByText[selectedText];
  var occupants= getOccupied(theForm);
  if (occupants> 0 && occupants<= numberOfBeds) return true;
  alert(getRoomMessage(theForm)); 
  return false;
}
function getRoomTypeText() {
  var roomType = document.getElementById('tsdatepicker').getElementsByTagName('select')[0];
  var selectedText = ""; 
  if (roomType && roomType.options && roomType.options.length>0) {
    selectedText = roomType.options[roomType.selectedIndex].text;
  }
  return (selectedText == "")?"unknown":selectedText;

}
function getOccupied(theForm) {
  // seems to be a timing issue with IE so we double check	
  var adults   = (theForm && theForm.Adults)  ?theForm.Adults.value:1; // set 1 to make sure we get a price
  var children = (theForm && theForm.Children)?theForm.Children.value:0;
  var juniors  = (theForm && theForm.Juniors) ?theForm.Juniors.value:0;
  var occupants= 0;
  occupants+= (isNaN(adults)   || adults  =="")?0:parseInt(adults,10);
  occupants+= (isNaN(children) || children=="")?0:parseInt(children,10);
  occupants+= (isNaN(juniors)  || juniors =="")?0:parseInt(juniors,10);
  return occupants;
}

function getRoomMessage(theForm) {
  var selectedText = getRoomTypeText(); 
  var numberOfBeds = roomTypesByText[selectedText];
  var occupants= getOccupied(theForm);
  if (occupants== 0) return "Please choose at least one occupant";  
  if (occupants<= numberOfBeds) return "";
  return "NOTE: This unit type \""+selectedText+"\" accommodates "+numberOfBeds+" guests, including infants, toddlers, etc...ONLY. If there are more than "+numberOfBeds+" guests in your party, regardless of age, please select another room type. You have chosen a total of "+occupants+" guests. Parties exceeding "+numberOfBeds+" guests will not be allowed to check-in to this type of unit."  
}

function monitorEvents() {
  if (document.res.Nights.value != Nights) { // Hmm, this field is only updated when the calendar is clicked
    getPrice(document.res);
    document.getElementById('persons').style.display='';
    Nights = document.res.Nights.value ;
    showDesc();
  }
}
function showDesc() {
    var description = Nights + ' night'+((Nights==1)?"":"s") +" arriving " + document.res.Arrival_Month.value+' '+document.res.Arrival_Date.value+', '+document.res.Arrival_Year.value;
    var warning = getRoomMessage(document.res);
    if (warning) description += '<br/><span style="color:red">'+warning+'</span>';
    document.getElementById('description').innerHTML='<strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">'+description+'</font>';

}


