//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, elNoInGrp, elNoOfPeople, DepartDate, DifferenceInDays;
  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 = "Buchen Sie Verarbeitung Beauftragt für " + NoOfPeople + " Passagier";

    if (NoOfPeople > 1)
    {
      strPackage=strPackage + "e"
    }

    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("Ein Abfahrtsdatum ist erforderlich!");
      return false;
    }
    else
    {
      aDateSelected = DepartDate.split(' ');
      datMonth = aDateSelected[0];

      switch(datMonth) {
        case 'Mär':
          datMonth = 'Mar'; break;
        case 'Mai':
          datMonth = 'May'; break;
        case 'Okt':
          datMonth = 'Oct'; break;
        case 'Dez':
          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("Nach dem 5. März 2007 können Karten nicht für den Dienst von Urubamba bis weiter Benachrichtigung gekauft werden!");
          return false;
        }
      }
    }

    if (BaseDesc.substr(6,3) == "Ret")
    {
      IsTrainRet = true;
    }
    
    if (IsTrainRet == true)
    {
      ReturnDate = document.getElementById("inpReturnDateTrn").value;

      if (ReturnDate == "")
      {
        alert("Ein Rückdatum ist erforderlich!");
        return false;
      }
      else
      {
        aDateSelected = ReturnDate.split(' ');
        datMonth = aDateSelected[0];

        switch(datMonth) {
          case 'Mär':
            datMonth = 'Mar'; break;
          case 'Mai':
            datMonth = 'May'; break;
          case 'Okt':
            datMonth = 'Oct'; break;
          case 'Dez':
            datMonth = 'Dec'; break;};

        datReturnDateEng = datMonth + ' ' + aDateSelected[1] + ' ' +aDateSelected[2];
        DifferenceInDays = DaysDelta(datDepartDateEng,datReturnDateEng);

        if (DifferenceInDays < 0)
        {
          alert("Das Rückdatum muss >= als das Abfahrtsdatum!");
          return false;
        }
      }
    }

    if (NoTickets == "")
    {
      alert("Gehen Sie bitte in die Zahl von erforderlichen Karten ein!");
      return false;
    }
    else
    {
      if (isNaN(NoTickets))
      {
        alert("Ein numerischer Wert ist für die Zahl von Karten erforderlich!");
        return false;
      }
      else
      {
        NoTickets = NoTickets*1.0;
        
        if (NoTickets < 1)
        {
          alert("Die Zahl von Karten muss >= 1 sein!");
          return false;
        }
      }
    }

    obj1.item_number.value = ": " + BaseDesc;
    BaseAmt = BaseAmt*1.0;
    strPackage = NoTickets;

    if (BaseDesc.indexOf ("Child") > 0)
    {
      strPackage = strPackage + " Kind";
    }
    else
    {
      strPackage = strPackage + " Erwachsene";
    }

    if (IsTrainRet == true)
    {
      strPackage = strPackage + " Rückzugkarte";
    }
    else
    {
      strPackage = strPackage + " Eine Weise Zugkarte";
    }

    if (NoTickets > 1)
    {
      strPackage = strPackage + "n";
    }

    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 - Cusco";
      }
    }

    strPackage = strPackage + "; Die Abreise"

    if (IsTrainRet == true)
    {
      if (BaseDesc.search(/OM/) == -1)
      {
        strPackage = strPackage + " von Urubamba: ";
      }
      else
      {
        strPackage = strPackage + " von Ollantaytambo: ";
      }

      strPackage = strPackage + DepartDate + ", von Machu Picchu Zurück: " + 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("Ein Ankunftdatum ist erforderlich!");
      return false;
    }
    DepartDate=document.getElementById("inputDepartDate").value;
    if(DepartDate=="")
    {
      alert("Ein Abfahrtsdatum ist erforderlich!");
      return false;
    }
    aDateSelected=ArrivalDate.split(' ');
    datMonth=aDateSelected[0];
    switch(datMonth) {
      case 'Mär':
        datMonth='Mar';break;
      case 'Mai':
        datMonth='May';break;
      case 'Okt':
        datMonth='Oct';break;
      case 'Dez':
        datMonth='Dec';break;};
    datArrivalDateEng=datMonth+' '+aDateSelected[1]+' '+aDateSelected[2];
    aDateSelected=DepartDate.split(' ');
    datMonth=aDateSelected[0];
    switch(datMonth) {
      case 'Mär':
        datMonth='Mar';break;
      case 'Mai':
        datMonth='May';break;
      case 'Okt':
        datMonth='Oct';break;
      case 'Dez':
        datMonth='Dec';break;};
    datDepartDateEng=datMonth+' '+aDateSelected[1]+' '+aDateSelected[2];
    NoNights=DaysDelta(datArrivalDateEng,datDepartDateEng);
    if(NoNights<=0)
    {
      alert("Abfahrtsdatum muss größer sein als Ankunftdatum!");
      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=="Gruppe")
      {
        strPackage=" Nacht für "+NoInGrp+" leute an $"+Dollar(BaseAmt)+" für jede person";
      }
      else
      {
        strPackage=" Nacht für $"+Dollar(BaseAmt);
      }
    }
    else
    {
      if(BaseDesc=="Gruppe")
      {
        strPackage=" Nächte für "+NoInGrp+" leute an $"+Dollar(BaseAmt)+" für jede person";
      }
      else
      {
        strPackage=" Nächte an $"+Dollar(BaseAmt)+" für jede Nacht";
      }
    }
    strPackage=strPackage+", Das Ankommen: "+ArrivalDate+", Die Abreise: "+DepartDate+".";
    obj1.ap_description.value=BaseDesc+", Paket von "+NoNights+strPackage;
    obj1.ap_returnurl.value="http://"+location.host+location.pathname+"?DatArr="+ArrivalDate+"&DatDep="+DepartDate+"#Unterkunft";
    obj1.ap_cancelurl.value=obj1.ap_returnurl.value;
//    obj1.item_name.value = BaseDesc + ", Paket von " + NoNights + strPackage;
    if(BaseDesc=="Gruppe")
    {
      obj1.ap_amount.value=Dollar(BaseAmt*NoNights*NoInGrp);
      obj1.ap_itemcode.value="ITEM CODE - Grp:";
      AddToCart(obj1);//8/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+"#Unterkunft";
  frm.ap_cancelurl.value=frm.ap_returnurl.value;
  frm.submit();
}