/*
 * Search Results Page javascript
 */

function getRates(xstart) {
  sendAjaxMessage('PublicAjax','getRates',{'idtours':idtours,'date':xstart});
}
function getRatesOp(xstart,opid) {
  sendAjaxMessage('Tour','get_Tour_Rates',{'idtours':opidtours[opid],'opid':opid,'date':xstart});
  for( var i=0;i<opidtours[opid].length;i++) {
    var idtour=opidtours[opid][i];
    x$('tour.'+idtour).byClassName('SRWrap').children('a').appendLink('?date='+xstart);
  }
}
function resultPrice(val) {
  return '$'+val.substr(0,val.indexOf('.')); 
}
function resultPrice2(val) {
  return val.substr(0,val.indexOf('.')); 
}
function getCellRate(elem) {
  var x=elem.id.split('.');
  var cell=0;
  var result = false;

  if(rateSet[x[0]]==undefined)
    return false;

  for(var i in rateSet[x[0]].rates) {
    if(cell==x[1]) {
      result = rateSet[x[0]].rates[i];
      result.date = i;
    }
    cell++; 
  }
  
  var cell=0;
  
  try {
    var dates = NiceDatesOp[ToursOp[x[0]]];
    if(!dates) 
      dates = NiceDates;
  } catch(e) {
    var dates = NiceDates;
  }
  
  result.date_display = dates[result.date];
   
  if(!result.date_display) {
     result.date_display = dates[x[1]];
  }
  if(result) {
    result.idtour = x[0];
    result.tour = escape(TourNames[x[0]]);
    result.tour_seo = TourNamesSEO[x[0]];
  }
  result.idop = ToursOp[x[0]];
  
  try {
    var booked = Bookings[x[0]][1];
  } catch(e) {
    var booked=false
  }
//  print_r(rateSet[x[0]].rates);  
  result.booked = booked;
  result.bookings = BookingsLI(22,true);
  
  
  return result;
}

function getCellRateTC(elem) {
  var x=elem.id.split('.');
  var cell=0;
  var idtour =x[0];
  var date =x[1];
  var result = false;
   
  if(rateSet2[idtour]==undefined)
    return false;

  result = rateSet2[idtour].rates[date];
  result.date = date;
  
  result.date_display = NiceDates2[date];
  result.idtour = idtour;
  result.tour = escape(TourNames[idtour]);
  result.tour_seo = TourNamesSEO[idtour];
  result.idop = ToursOp[idtour];
  
  try {
    var booked = Bookings[idtour][1];
  } catch(e) {
    var booked=false
  }
  result.booked = booked;
  result.bookings = BookingsLI(15,true);
  
  return result;
}

function sortBookings() {
  stringArr = new Array();
  for(var i in Bookings) {
    stringArr.push(Bookings[i][0]+','+i+','+Bookings[i][1]); 
  }
  stringArr.sort();
  sorted = new Array();
  for(var i in stringArr) {
    s = stringArr[i].split(',');
    sorted[s[1]] = [s[0],s[2]];
  }
  return sorted;
}

function BookingsLI() { // opt param truncate_length  eg. BookingsLI(15), include_remove_button ;
  try {
    bookingsList='';
    
    SortedBookings = sortBookings();
    for(var idtour in SortedBookings) {
      if(Bookings[idtour][0] == '0000-00-00')
        date_nice = 'No Date Set';
      else 
        date_nice = Bookings[idtour][1];
      var fullName = Bookings[idtour][2];
      if(arguments.length && arguments[0]) {
        var tour = Bookings[idtour][2].substr(0,arguments[0]);
        if(Bookings[idtour][2].length > arguments[0])
          tour += '&hellip;';
      } else {
        var tour = Bookings[idtour][2];
      }
      var tour_seo = Bookings[idtour][3];
      if(arguments.length>1 && arguments[1]) {
        bookingsList += '<li title="'+fullName+'">'+date_nice+'  : <a href="'+BASE_URL+'tour/'+idtour+'-'+tour_seo+'/">'+tour+'</a> <img src="images/admin/g-delete.png" alt="Delete tour from itinerary" title="Delete tour from itinerary" onclick="removeTour('+idtour+')"/></li>';
      } else {
        bookingsList += '<li title="'+fullName+'">'+date_nice+'  : '+tour+'</li>';
      }
    }
    return bookingsList;
  } catch(e) {
    alert(e);
    return false; 
  }
}

function updateRates(rates) {
  var mapClass = {A:'Available',U:'Unavailable',TP:'ThePast',S:'SoldOut',D:'Discounted',NR:'NoRate'};
  for(var i in rates) {
    if(!parseInt(i)) { continue; }
    var cell=0;
    if (typeof rateSet[i] == 'undefined') rateSet[i] = {};
    rateSet[i].rates = {};
    for(var j in rates[i].rates) {
      var day = rates[i].rates[j];
      //print_r(day); return;
      if(typeof(j) != 'string' || typeof(day) != 'object') { continue; } 
      var elem = ID(i+'.'+cell);
      elem.className = mapClass[day.cl];
      elem.innerHTML = day.av ? resultPrice2(day.a) : '-';
      elem.onclick = function(){ShowPricesExtras(this)}
      //print_r(rates[i][j]);
      rateSet[i].rates[j] = day;
      cell++;
    }
  }
  //print_r(rateSet);
}

function updateDatesOp(param) {
  xdates = param[0];
  idusr = param[1];
  NiceDatesOp[idusr] = xdates;
  var cell=0;
  for(var j in xdates) {
    var day = xdates[j];
    var elem = ID('op.'+idusr+'.'+cell);
    var d = j.split('-');
    var nd = xdates[j].split(',');
    elem.innerHTML = nd[0]+'<br/>'+d[2];
    cell++;
  }
}

function updateDates(xdates) {
  for(var i=0;i<idusrs.length;i++) {
    updateDatesOp([xdates,idusrs[i]]);
  }
  NiceDates = xdates;
}
function selectTabOp(param) {
  xdate = param[0];
  idusr = param[1];
  try{
    if(search_form_date != undefined)
      if(currentTab[idusr]==undefined && search_form_date!='-' && search_form_date.split('-')[1]!=search_form_today.split('-')[1])
        currentTab[idusr] = search_form_date.split('-')[0]+'-'+search_form_date.split('-')[1]+'-01';
    else if(!currentTab[idusr])
      currentTab[idusr] = 'current';
  } catch(e) {
    if(!currentTab[idusr])
      currentTab[idusr] = 'current';
  }
  var elem = ID('op.'+idusr+'.'+currentTab[idusr]);
  if(elem)
    elem.className = ''; 
  var elem = ID('op.'+idusr+'.'+xdate);
  if(!elem) return;
  elem.className = 'Current';
  currentTab[idusr] = xdate;
}
function selectTab(xdate) {
  for(var i=0;i<idusrs.length;i++) {
    selectTabOp([xdate,idusrs[i]]);
  }
}
function setNextPrev(xdates) {
  prevFortnight = xdates[0];
  nextFortnight = xdates[1];
}



function ShowPrices() {
  ShowActions(this,'SRA',getCellRate(this),'delayed');
}
function HidePrices(e) {
  if(!xEvent(e).eventElem().hasEvent('click',ShowPricesExtras) && !xEvent(e).eventElem().hasClass(['additinerary','booknow'])) {
    x$('SRA').hide();
  }
}
function HidePricesTC(e) {
  if(!xEvent(e).eventElem().ancestorByType('td').hasClass(['Available','Discounted'])) {
    x$('SRA').hide();
  }
}
function ShowPricesExtras(elem) {
  x$('MyItinerary').hide();
  if(elem.innerHTML == '-') { return false; }    
  ShowActions(elem,'SRA',getCellRate(elem));
  x$('SRA').observe('click', HidePrices);
}
function ShowPricesExtrasTC(elem) {
  x$('MyItinerary').hide();
  if (elem.className != 'Available' && elem.className != 'Discounted') { return false; }
  ShowActions(elem,'SRA',getCellRateTC(elem));
  x$('SRA').observe('click', HidePricesTC);
}

function AddToItinerary(idtour,tour,tour_seo,date,nice_date) {
  tour = unescape(tour);
  sendAjaxMessage('Booking', 'set_Itinerary', {'idtour':idtour,'name':tour,'name_seo':tour_seo,'date':date},null,false);
  Bookings[idtour]=[date,nice_date,tour,tour_seo];
  x$('SRABookings').setValue(BookingsLI(15,true));
  x$('SRABooknow').setLink('booking');
}
/**
 * 
 * @param book (opt)
 **/
function AddToItineraryOptions(idtour,date,nice_date,options,book) {
  sendAjaxMessage('PublicAjax', 'AddItinerary', {'idtour':idtour,'date':date},null,false);
  Bookings[idtour]=[date,nice_date];
  x$('SRABookings').setValue(BookingsLI(15,true));
  x$('SRABooknow').setLink('booking');
  if(book!=null && book)
    document.location.href=BASE_URL+'booking';
}
function ChangeItinerary(idtour,tour,tour_seo,date,nice_date) {
  tour = unescape(tour);
  sendAjaxMessage('Booking', 'set_Itinerary', {'idtour':idtour,'name':tour,'name_seo':tour_seo,'date':date},null,false);
  Bookings[idtour]=[date,nice_date,tour,tour_seo];
  x$('SRABookings').setValue(BookingsLI(15,true));
}




function showBookingLoading() {
  x$('ajaxmessage-busy-msg').setValue('Loading secure booking page'); 
  x$('ajaxmessage-busy').show();
  restartGif();
}
function showMoreInfoLoading() {
  x$('ajaxmessage-busy-msg').setValue('Loading Tour Information'); 
  x$('ajaxmessage-busy').show();
  restartGif();
}

function nextPage(searchid,nextPage) {
  new Ajax(BASE_URL+'search.nextPage?searchid='+searchid+'&page='+nextPage, {
    update: x$('page_'+nextPage)
  });
  
  x$('p.link.'+nextPage).addClassName('loading');
  x$('p.link.'+nextPage).element().title = 'Loading tours...';
}


function setPageDate(el,idtour) {
  try {
    var dates = NiceDatesOp[ToursOp[idtour]];
    for(var i in dates) {
      var date = i;
      el.href = el.href+(el.href.indexOf('?')==-1?'?':'&')+'date='+date;
      return;
    }    
  } catch(e) { }
}
