function log(param0){
  var lognest=document.createElement("div");
  lognest.innerHTML=param0;
  document.body.appendChild(lognest);
}
function isIE(){
  var ua = navigator.userAgent.toLowerCase();
  return (ua.indexOf('msie') != -1);
}
function dateWithTimezone(offset){
  var d=new Date();
  // convert to msec since Jan 1 1970
  var localTime = d.getTime();
  var localOffset = d.getTimezoneOffset() * 60000;
  var utc = localTime + localOffset;
  var new_date = utc + (3600000*offset);
  var offset_date= new Date(new_date);
  return offset_date; //return date object
}

var timeID = 0;

function killTime() {
   if(timeID) {
      clearTimeout(timeID);
      timeID  = 0;
   }
}
function startTime() {
  killTime();
  var tDate = dateWithTimezone(8);
  var min=tDate.getMinutes();

  if(!parseInt(min/10)){
    min='0'+min;
  }
  document.getElementById('time').innerHTML = "Singapore Time:  "
                                  + tDate.getHours() + ":" 
                                  + min;
  timeID = setTimeout("startTime()", 60000);
}
/*
new Date("Month dd, yyyy hh:mm:ss")
new Date("Month dd, yyyy")
new Date(yy,mm,dd,hh,mm,ss)
new Date(yy,mm,dd)
new Date(milliseconds)
*/

function dayOptions(month_year0){;
  month_year=month_year0.split(" ",2); //2= split into 2
  var month=parseInt(month_year[0]);
  var year=parseInt(month_year[1]);
  var day_options='';
  var date=new Date();
  var current_year=date.getFullYear();
  var current_month=date.getMonth();
  var current_date=date.getDate();
  var current_day=date.getDay();
  date=new Date(year,month+1,0);

  //date.setYear(2008);
 
 //SETMONTH FUCK THINGS UP!!!! use new date(2008,10,30) INSTEAD!!
 
//  fuckdate.setMonth(month+1); //0=january
//  fuckdate.setDate(0); //0= last day of previous month, cud be 31,30,29,28

  var last_day=date.getDay();
  var last_date=date.getDate();
  
  date=new Date(year,month,1); //1= day 1
  var first_day=date.getDay();
  var week_day=new Array(
    "Sun",
    "Mon",
    "Tue",
    "Wed",
    "Thu",
    "Fri",
    "Sat"
  );
  if(current_month==month && current_year){
    for(var i=current_date;i<=last_date;i++){
      day_options+='<option value="('+week_day[current_day]+') '+i+'">'+i+' ('+week_day[current_day]+')</option>';
      current_day=(current_day+1)%7;
    }
  }
  else{
    for(var i=1;i<=last_date;i++){
      day_options+='<option value="('+week_day[first_day]+') '+i+'">'+i+" ("+week_day[first_day]+")</option>";
      first_day=(first_day+1)%7;
    }
  }
 // alert(current_month+" "+month+" "+current_year+" currentdate:"+current_date+" lastdate:"+last_date+" "+date.getMonth());
  return day_options;
}

function monthOptions(){
  var date=new Date();
  var current_month=date.getMonth();
  var current_year=date.getFullYear();
  var month_options='';
  
  var month_names = new Array("January", "February", "March", 
  "April", "May", "June", "July", "August", "September", 
  "October", "November", "December");
  
  for(var i=0;i<12;i++){   
    month_options+="<option value=\""+current_month+" "+current_year+"\">"+month_names[current_month]+" "+current_year+"</option>";
    current_month=(current_month+1)%12;
    if(current_month==0){ 
      current_year++; //if new year
    }
  }
  return month_options;
}

function updateDay(param0){
  if(document.getElementById(param0+'_day_parent') && document.getElementById(param0+'_month_year')){
    if(param0=="disposal_pick_up"){
      document.getElementById(param0+'_day_parent').innerHTML="<select id=\""+param0+"_day\" name=\"pick_up_day\" >"+dayOptions( document.getElementById(param0+'_month_year').value)+'</select>';
    }
    else{
      document.getElementById(param0+'_day_parent').innerHTML='<select id="'+param0+'_day" name="'+param0+'_day" >'+dayOptions( document.getElementById(param0+'_month_year').value)+'</select>';
    }
  //document.getElementById('pick_up_day_parent').innerHTML='<select>'+dayOptions( parseInt(document.getElementById('pick_up_month').value), parseInt(document.getElementById('pick_up_year').value))+'</select>';
  }
}

function reservationOnLoad(){
  BookingForm.init();
  document.getElementById('pick_up_month_year').onchange=function(){
    updateDay('pick_up');
  }
  document.getElementById('rent_from_month_year').onchange=function(){
    updateDay('rent_from');
  }
  document.getElementById('rent_till_month_year').onchange=function(){
    updateDay('rent_till');
  }
  document.getElementById('disposal_pick_up_month_year').onchange=function(){
    updateDay('disposal_pick_up');
  }
 /* document.getElementById('drop_off_month_year').onchange=function(){
    updateDay('drop_off');
  }*/
  updateDay('pick_up');
  updateDay('rent_from');
  updateDay('rent_till');
  updateDay('disposal_pick_up');
  /*updateDay('drop_off');*/
  if(!isIE()){
    startTime();
  }
}
function reservationOnUnLoad(){
  killTime();
}
function selectNumRange(start,end){
  var options='';
  for(var i=start;i<=end;i++){
    options+='<option value="'+i+'">'+i+'</option>'
  }
  return options;
}
function selectHr(param0,form_type0){
  var param_id='';
  if(form_type0){
    param_id=form_type0+'_'+param0;
  }
  else{
    param_id=param0;
  }
  var hr='<br /><select id="'+param_id+'" name="'+param0+'" class="hr" >';
 // alert(param_id);
  var istr="";
  for(var i=0;i<24;i++){
    if(!parseInt(i/10)){
      istr='0'+i;
    }
    else{ 
      istr=i;
    }
    hr+="<option value=\""+istr+"\">"+istr+"</option>";
  }
  hr+='</select>';
  return hr;
}
function selectMin(param0,form_type0){
  var param_id='';
  if(form_type0){
    param_id=form_type0+'_'+param0;
  }
  else{
    param_id=param0;
  }
  var min='<select id="'+param_id+'" name="'+param0+'" class="min">';
  //alert(param_id);
  var istr="";
  for(var i=0;i<12;i++){
    ix5=i*5;
    if(!parseInt(ix5/10)){
      istr='0'+ix5;
    }
    else{ 
      istr=ix5;
    }
    min+="<option value=\""+istr+"\">"+istr+"</option>";
  }
  min+='</select>';
  return min;
}
function fillForm(form_type0){
  var preview=document.getElementById(form_type0+'_preview');
  document.getElementById(form_type0+'_inputs').style.display="block";
  preview.style.display="none";
  preview.innerHTML=''; //blank preview first before view booking, to get rid of previous book_now
}
function validateForm(form0){
  var validated=true;
  var msg='';
  if(form0=='one_way'){
    var must_fill = new Array('name','phone','email','limousine_type','pick_up_day','pick_up_month_year','pick_up_hr','pick_up_min','pick_up_from','destination','one_way_num_passengers'); //IDs
    var booking_output=document.getElementById('one_way_output');
  }
  else if(form0=='term'){
    var must_fill = new Array('term_name','term_phone','term_email','term_limousine_type','rent_from_day','rent_from_month_year','rent_till_day','rent_till_month_year','term_drivers_licence_num','term_nationality'); //IDs
    var booking_output=document.getElementById('term_output');
  }
  else if(form0=='disposal'){
    var must_fill = new Array('disposal_name','disposal_phone','disposal_email','disposal_limousine_type','disposal_pick_up_day','disposal_pick_up_month_year','disposal_pick_up_hr','disposal_pick_up_min','disposal_pick_up_from','disposal_drop_off_hr','disposal_drop_off_min','disposal_num_stops','disposal_drop_off_to','disposal_num_passengers'); //IDs
    var booking_output=document.getElementById('disposal_output');
  }

  for(var i=0;i<must_fill.length;i++){
    var must_fill_element=document.getElementById(must_fill[i]);
    if(must_fill_element.value==''){
      msg+='<span class="red">Must fill <b>'
      msg+=must_fill_element.parentNode.firstChild.nodeValue;
      msg+="</b></span><br />";
      validated=false;
    }
  }
  booking_output.innerHTML=msg;

  if(validated){
    var form_inputs=document.getElementById(form0+'_inputs');
    var form_preview=document.getElementById(form0+'_preview');
    form_inputs.style.display="none";
    form_preview.style.display="block";
  }
  return validated;
}
function bookNow(this0,form_type0){
  //REQUIRES AJAXI.JS
  if(validateForm(form_type0)){
    var form_book_now;
    if(form_book_now=document.getElementById(form_type0+'_book_now')){
      //hide book_now after click
      var booking_confirmed=document.createElement('span');
      booking_confirmed.className="booking_confirmed";
      booking_confirmed.innerHTML='Booking Confirmed';
      form_book_now.parentNode.insertBefore(booking_confirmed,form_book_now);
      form_book_now.style.display="none";
      //BOOK NOW!
      this0.setAttribute('target','_blank'); //if ajaxi has already been executed, target has changed, so gotta change.
      
      return true; //true to do form action, goes to new page
    }
    else{
      var preview=document.getElementById(form_type0+'_preview');
      //VIEW BOOKING
      ajaxi.submit(this0,preview);
      return false; //false mean do ajax instead of form action
    }
  }
  else{
    return false;
  }
}
BookingForm={
  prev_id:'',
  prev_classname:'',
  init:function(){
    this.prev_id="one_way";
  },
  change:function(form0){
    //TAB-----------
    //revert back prev tab
    if(document.getElementById(this.prev_id)){
      document.getElementById(this.prev_id).className=this.prev_classname;
    }
    //--------------
    
    //FORM--------------
    var prev_form,this_form;
    if(prev_form=document.getElementById(this.prev_id+"_form")){ //this works with id, but not name, name always exists, unless an index is provided like name[i]
      prev_form.style.display="none";
    }
    if(this_form=document.getElementById(form0.parentNode.id+"_form")){
      this_form.style.display="block";
    }
    //-------------------

    //new prev state
    this.prev_id=form0.parentNode.id;
    this.prev_classname=form0.parentNode.className;
    form0.parentNode.className+=' active';
    //
    return true;
  }
}
