window.onload = selectADay;
var selected = 1;
function getObj(objID) {
 if (document.getElementById) {return document.getElementById(objID);}
 else if (document.all) {return document.all[objID];}
 else if (document.layers) {return document.layers[objID];}
}
function evtTgt(e) {
 var el;
 if(!e)e=window.event;
 if(e.target)el=e.target;
 else if(e.srcElement)el=e.srcElement;
 if(el.nodeType==3)el=el.parentNode;
 return el;
}
function csOver(e) {
 if( selected==1 || selected==2) {
  var td = evtTgt(e);
  if('outline' in td.style)
   td.style.outline = "2px solid #048";
  else
   td.style.color="#048";
 }
}
function csOut(e) {
 if( selected==1 || selected==2) {
  var td = evtTgt(e);
  if('outline' in td.style)
   td.style.outlineStyle = "none";
  else
   td.style.color="#fff";
 }
}
var monthName=new Array('January','February','March','April','May','June','July','August','September','October','November','December');

function cleanSelDays() {
 var td = document.getElementsByTagName("td");
 for(i=0;i<td.length;i++)
  td[i].className=td[i].className.replace(/s/g,"a");
}
function selDays() {
 aDay=getObj('aDay').value.split(' ');
 day=parseInt(aDay[1],10);
 for(i=0;i<12;i++) if(aDay[0]==monthName[i]) break;
 month=i;
 year=parseInt(aDay[2],10);
 if(year<100) year+=2000;
 n=parseInt(getObj('nDay').value,10);

 cleanSelDays();
 var er=0;
 for(d=0;d<=n;d++){
  date = new Date(year,month,day+d);
  table=getObj('m-'+date.getMonth()+'-'+date.getFullYear());
  tds = table.getElementsByTagName('td');
  for(i=0;i<tds.length;i++) {
    td = tds[i];
    if(td.innerHTML==date.getDate()){
     s=td.className;
     if(d==0){
      if(s=='aa') s='as';
      else if(s=='ra') s='rs';
      else er=1;
     }else if(d==n){
      if(s=='aa') s='sa';
      else if(s=='ar') s='sr';
      else er=1;
     }else{
      if(s=='aa') s='ss';
      else {
       er=1;
       if(s=='ra') s='rs';
       if(s=='ar') s='sr';
      }
     }
     td.className=s;
   }
  }
 }
 if(er==1) {
  getObj('msg').innerHTML = '>> Not all selected days are available, please select other days';
  //getObj('book').style.visibility='hidden';
 } else {
  getObj('msg').innerHTML = '&nbsp;';
  //getObj('book').style.visibility='visible';
 }
}
function calcNights() {
 td = Date.parse(getObj('dDay').value);
 ta = Date.parse(getObj('aDay').value);
 n = td-ta;
 if(isNaN(ta)||isNaN(td)||n<=0){
  getObj('msg').innerHTML = '>> Wrong dates, please select other days';
  //getObj('book').style.visibility='hidden';
 } else {
  n = n/(1000*60*60*24);
  getObj('nDay').value = n;
  selDays();
 }
}
function calcDepart() {
 n=parseInt(getObj('nDay').value,10);
 if(n<1 || isNaN(n)) {
  getObj('msg').innerHTML = '>> Wrong dates, please select other days';
  //getObj('book').style.visibility='hidden';
 } else {
  n = n*(1000*60*60*24);
  nd = Date.parse(getObj('aDay').value);
  if(!isNaN(nd)) {
   n += nd;
   var d = new Date();
   d.setTime(n);
   getObj('dDay').value = monthName[d.getMonth()]+' '+d.getDate()+', '+d.getFullYear();
   selDays();
  }
 }
}
function sel_aDay() {
 selected = 1;
 getObj('aDay').style.backgroundColor='#fff';
 getObj('dDay').style.backgroundColor='#acf';
 getObj('nDay').style.backgroundColor='#acf';
 getObj('aDayC').innerHTML = 'Select&nbsp;day';
 getObj('dDayC').innerHTML = '<center><img src="down.gif"></center>';
 getObj('nDayC').innerHTML = '';
}
function sel_dDay() {
 selected = 2;
 getObj('aDay').style.backgroundColor='#acf';
 getObj('dDay').style.backgroundColor='#fff';
 getObj('nDay').style.backgroundColor='#acf';
 getObj('aDayC').innerHTML = '';
 getObj('dDayC').innerHTML = 'Select&nbsp;day';
 getObj('nDayC').innerHTML = '<center><img src="down.gif"></center>';
}
function sel_nDay() {
 selected = 3;
 getObj('aDay').style.backgroundColor='#acf';
 getObj('dDay').style.backgroundColor='#acf';
 getObj('nDay').style.backgroundColor='#fff';
 getObj('aDayC').innerHTML = '';
 getObj('dDayC').innerHTML = '';
 getObj('nDayC').innerHTML = '';
}
function calcDay(e) {
  x = evtTgt(e).parentNode.parentNode.parentNode.id;
  y = x.split("-");
  if(y.length!=3) return;
  year = y[2];
  month = parseInt(y[1],10);
  day = parseInt(evtTgt(e).innerHTML,10);
  if(selected==1){
   getObj('aDay').value = monthName[month]+' '+day+', '+year;
   calcDepart();
  }
  if(selected==2){
   getObj('dDay').value = monthName[month]+' '+day+', '+year;
   calcNights();
  }
}
function csClick(e) {
  calcDay(e);
  if(selected==1||selected==2){
   csOut(e);
  }
}
function selectADay() {
 var td = document.getElementsByTagName('td');
 for(var i=0;i<td.length;i++) {
  if(td[i].parentNode.parentNode.parentNode.className=="acal" && td[i].className!='' && td[i].className!='p') {
   td[i].onmouseover=csOver;
   td[i].onmouseout=csOut;
   td[i].onclick=csClick;
  }
 }
 getObj('aDay').onkeyup=calcDepart;
 getObj('dDay').onkeyup=calcNights;
 getObj('nDay').onkeyup=calcDepart;

 sel_aDay();

 getObj('aDay').onfocus=sel_aDay;
 getObj('dDay').onfocus=sel_dDay;
 getObj('nDay').onfocus=sel_nDay;
}
function stopRKey(evt) {
  var evt = (evt) ? evt : ((event) ? event : null);
  var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
  if ((evt.keyCode == 13) && (node.type=="text"))  {return false;}
}
document.onkeypress = stopRKey;

