//This script adapted from examples on http://members.aol.com/paypalhelper/ which is linked at
//https://www.paypal.com/au/cgi-bin/webscr?cmd=p/xcl/rec/sc-techniques for techniques that can be used
//to manipulate interaction with the PayPal Shopping Basket.
var BaseAmt,BaseDesc,NoTickets;
var pc=5; //No. of qty/percent pairs
var pqty=new Array (1,7,14,21,28); //qty brkpt
var pper=new Array (0,10,15,20,25); //percent to discount

function Dollar (val) { //force to valid dollar amount
var str,pos,rnd=0;
  if (val<.995) rnd=1; //for old Netscape browsers
  str=escape (val*1.0+0.005001+rnd); //float, round, escape
  pos=str.indexOf (".");
  if (pos>0) str=str.substring(rnd,pos+3);
  return str;
}

function ReadForm (obj1) //quantity based discounts
{
  var i, ArrivalDate, DepartDate, DifferenceInDays, elNoInGrp, elNoOfPeople;
  var NoInGrp, NoNights, ReturnDate, strPackage;
  var datArrivalDateEng, datDepartDateEng, datMonth, datReturnDateEng, aDateSelected = new Array(3);
  var dtMar52007 = new Date(2007,2,5), dtDepartDate = new Date();
  var IsTrainRet = new Boolean(0);
  var idxPeopleMax = 12; //table for No. of People/Commission pairs
  var aNumPeople = new Array (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12); //Ticket Commission Breakpoints
  var aCommission = new Array (6.52, 6.52, 6.52, 6.52, 7.56, 8.6, 9.63, 10.66, 11.7, 12.73, 13.49, 14.8); //Ticket Commission Cost

  if (BaseDesc == "NoOfPeople") //Process Commission
  {
    elNoOfPeople = document.getElementById('inpNoOfPeople');
    NoOfPeople = elNoOfPeople.options[elNoOfPeople.selectedIndex].text*1.0;
    strPackage = "Commission de Traitement de Billet pour " + NoOfPeople + " passager";

    if (NoOfPeople > 1)
    {
      strPackage=strPackage + "s"
    }

    strPackage=strPackage + "."
    obj1.item_name.value = strPackage;

    for (i=idxPeopleMax-1; i>=0; i=i-1) //run table backwards
    {
      if (NoOfPeople == aNumPeople[i]) //use this entry
      {
        obj1.amount.value = Dollar (aCommission[i]);
        break; //get out, we're done
      }
    }

    obj1.item_number.value = "";
        //Because the button activating the Posting of the Form is outside of the Form,
        //we need to set the Target parameter to force the Shopping Cart to open in
        //another window so that the Continue Shopping button appears.
    obj1.target = "paypal";
    obj1.submit ();
  }
  else if (BaseDesc.substr(0,3) == "Trn") //Determine if Reservation is for Train Ticket
  {
    DepartDate = document.getElementById("inpDepartDateTrn").value;

    if (DepartDate == "")
    {
      alert("Une Date de Départ est exigée!");
      return false;
    }
    else
    {
      aDateSelected = DepartDate.split(' ');
      datMonth = aDateSelected[0];

      switch(datMonth) {
        case 'Fév':
          datMonth = 'Feb'; break;
        case 'Avr':
          datMonth = 'Apr'; break;
        case 'Mai':
          datMonth = 'May'; break;
        case 'Aoû':
          datMonth = 'Aug'; break;
        case 'Déc':
          datMonth = 'Dec'; break;};

      datDepartDateEng = datMonth + ' ' + aDateSelected[1] + ' ' +aDateSelected[2];
      dtDepartDate = Date.parse(datDepartDateEng);

      if (dtDepartDate > dtMar52007)
      {
        if (BaseDesc.search(/OM/) == -1 && BaseDesc.search(/O-M/) == -1 && BaseDesc.search(/M-O/) == -1 && BaseDesc.search(/M-C/) == -1)
        {
          alert("Il y a aucun service d'Urubamba jusqu'au préavis de plus. Il est espéré que ce service reprendra en septembre ou l'octobre de 2007!");
          return false;
        }
      }
    }

    if (BaseDesc.substr(6,3) == "Ret")
    {
      IsTrainRet = true;
    }
    
    if (IsTrainRet == true)
    {
      ReturnDate = document.getElementById("inpReturnDateTrn").value;

      if (ReturnDate == "")
      {
        alert("Une Date de Retour est exigée!");
        return false;
      }
      else
      {
        aDateSelected = ReturnDate.split(' ');
        datMonth = aDateSelected[0];

        switch(datMonth) {
          case 'Fév':
            datMonth = 'Feb'; break;
          case 'Avr':
            datMonth = 'Apr'; break;
          case 'Mai':
            datMonth = 'May'; break;
          case 'Aoû':
            datMonth = 'Aug'; break;
          case 'Déc':
            datMonth = 'Dec'; break;};

        datReturnDateEng = datMonth + ' ' + aDateSelected[1] + ' ' +aDateSelected[2];
        DifferenceInDays = DaysDelta(datDepartDateEng,datReturnDateEng);

        if (DifferenceInDays < 0)
        {
          alert("La Date de Retour doit être >= la Date de Départ!");
          return false;
        }
      }
    }

    if (NoTickets == "")
    {
      alert("Entrez s'il vous plaît dans le nombre de billets exigés!");
      return false;
    }
    else
    {
      if (isNaN(NoTickets))
      {
        alert("Une valeur numérique est exigée pour le nombre de billets!");
        return false;
      }
      else
      {
        NoTickets = NoTickets*1.0;
        
        if (NoTickets < 1)
        {
          alert("Le nombre de billets doit être >= 1!");
          return false;
        }
      }
    }

    obj1.item_number.value = ": " + BaseDesc;
    BaseAmt = BaseAmt*1.0;
    strPackage = NoTickets + " Billet";
 
    if (NoTickets > 1)
    {
      strPackage = strPackage + "s";
    }

    if (IsTrainRet == true)
    {
      strPackage = strPackage + " d'Aller-Retour de Train";
    }
    else
    {
      strPackage = strPackage + " d'Une Voie de Train";
    }

    if (BaseDesc.indexOf ("Child") > 0)
    {
      strPackage = strPackage + " d'Enfants";
    }
    else
    {
      strPackage = strPackage + " d'Adulte";
    }

    if (IsTrainRet == false)
    {
      switch (BaseDesc.substr(10,3))
      {
        case "U-M":
          strPackage = strPackage + ", Urubamba - Machu Picchu";
          break;
        case "M-U":
          strPackage = strPackage + ", Machu Picchu - Urubamba";
          break;
        case "O-M":
          strPackage = strPackage + ", Ollantaytambo - Machu Picchu";
          break;
        case "M-O":
          strPackage = strPackage + ", Machu Picchu - Ollantaytambo";
          break;
        case "M-C":
          strPackage = strPackage + ", Machu Picchu - Cuzco";
      }
    }
    
    strPackage = strPackage + "; Part "

    if (IsTrainRet == true)
    {
      if (BaseDesc.search(/OM/) == -1)
      {
        strPackage = strPackage + " de Urubamba: ";
      }
      else
      {
        strPackage = strPackage + " de Ollantaytambo: ";
      }

      strPackage = strPackage + DepartDate + ", Revient de Machu Picchu: " + ReturnDate;
    }
    else
    {
      strPackage = strPackage + ": " + DepartDate
    }

    obj1.item_name.value = strPackage;
    obj1.amount.value = Dollar (BaseAmt * NoTickets);

        //Because the button activating the Posting of the Form is outside of the Form,
        //we need to set the Target parameter to force the Shopping Cart to open in
        //another window so that the Continue Shopping button appears.
    obj1.target = "paypal";
    obj1.submit ();
  }
  else //Process Accommodation Reservations
  {
    ArrivalDate=document.getElementById("inputArrivalDate").value;
    if(ArrivalDate=="")
    {
      alert("Une Date d'Arrivée est exigée!");
      return false;
    }
    DepartDate=document.getElementById("inputDepartDate").value;
    if(DepartDate=="")
    {
      alert("Une Date de Départ est exigée!");
      return false;
    }
    aDateSelected=ArrivalDate.split(' ');
    datMonth=aDateSelected[0];
    switch(datMonth) {
      case 'Fév':
        datMonth='Feb'; break;
      case 'Avr':
        datMonth='Apr'; break;
      case 'Mai':
        datMonth='May'; break;
      case 'Aoû':
        datMonth='Aug'; break;
      case 'Déc':
        datMonth='Dec'; break;};
    datArrivalDateEng=datMonth+' '+aDateSelected[1]+' '+aDateSelected[2];
    aDateSelected=DepartDate.split(' ');
    datMonth=aDateSelected[0];
    switch(datMonth) {      case 'Fév':
        datMonth='Feb'; break;
      case 'Avr':
        datMonth='Apr'; break;
      case 'Mai':
        datMonth='May'; break;
      case 'Aoû':
        datMonth='Aug'; break;
      case 'Déc':
        datMonth='Dec'; break;};
    datDepartDateEng=datMonth+' '+aDateSelected[1]+' '+aDateSelected[2];
    NoNights=DaysDelta(datArrivalDateEng,datDepartDateEng);
    if(NoNights<=0)
    {
      alert("La Date de Départ doit être plus grande que la Date d'Arrivée!");
      return false;
    }
    BaseAmt=BaseAmt*1.0;//base amount
    NoNights=NoNights*1.0;//force to numeric
    for(i=pc-1;i>=0;i=i-1)//run table backwards
    {
      if(NoNights>=pqty[i])//use this entry
      {                     
        BaseAmt=BaseAmt-(BaseAmt/100.0*pper[i]);
        break;//get out, we're done
      }
    }
    elNoInGrp=document.getElementById('selectNoInGrp')
    NoInGrp=elNoInGrp.options[elNoInGrp.selectedIndex].text*1.0;
    if(NoNights==1)
    {
      if(BaseDesc=="Groupe")
      {
        strPackage=" nuit pour "+NoInGrp+" personnes @ $"+Dollar(BaseAmt)+" par personne";
      }
      else
      {
        strPackage=" nuit pour $"+Dollar(BaseAmt);
      }
    }
    else
    {
      if(BaseDesc=="Groupe")
      {
        strPackage=" nuits pour "+NoInGrp+" personnes @ $"+Dollar(BaseAmt)+" par personne par nuit";
      }
      else
      {
        strPackage=" nuits @ $"+Dollar(BaseAmt)+" par nuit";
      }
    }
    strPackage=strPackage+", Arrivée: "+ArrivalDate+", Partira: "+DepartDate+".";
    obj1.ap_description.value=BaseDesc+", paquet de "+NoNights+strPackage;
    obj1.ap_returnurl.value="http://"+location.host+location.pathname+"?DatArr="+ArrivalDate+"&DatDep="+DepartDate+"#Accommodation";
    obj1.ap_cancelurl.value=obj1.ap_returnurl.value;
    if(BaseDesc=="Groupe")
    {
      obj1.ap_amount.value=Dollar(BaseAmt*NoNights*NoInGrp);
      obj1.ap_itemcode.value="ITEM CODE - Grp:";
      AddToCart(obj1);//21/11/2008, Michael Holberton - Integrated with nopERcart for AlertPay
      obj1.submit();
    }
    else
    {
      obj1.ap_amount.value=Dollar(BaseAmt*NoNights);
      obj1.ap_itemcode.value="ITEM CODE - "+obj1.ap_itemcode.value+":";
      AddToCart(obj1);
    }
  }
}
function ViewCart(frm) //Set the ReturnURL and CancelURL for AlertPay & open the nopERcart
{
  var ArrivalDate,DepartDate;
  ArrivalDate=document.getElementById("inputArrivalDate").value;
  DepartDate=document.getElementById("inputDepartDate").value;
  frm.ap_returnurl.value="http://"+location.host+location.pathname+"?DatArr="+ArrivalDate+"&DatDep="+DepartDate+"#Accommodation";
  frm.ap_cancelurl.value=frm.ap_returnurl.value;
  frm.submit();
}