//The following script is 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; //table for 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,NoOfPeople,NoNights,ReturnDate,strPackage;
  var dtMar52007=new Date(2007,2,5),dtDepartDate=new Date();
  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="Ticket Processing Commission for "+NoOfPeople+" passenger";

    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("A Departure Date is required!");
      return false;
    }
    else
    {
      dtDepartDate = Date.parse(DepartDate);

      if (dtDepartDate > dtMar52007)
      {
        if (BaseDesc.search(/OM/) == -1 && BaseDesc.search(/O-M/) == -1 && BaseDesc.search(/M-O/) == -1 && BaseDesc.search(/M-C/) == -1)
        {
          alert("There is no service from Urubamba until further notice.  It is hoped this service will recommence in September or October 2007!");
          return false;
        }
      }
    }
    if (BaseDesc.substr(6,3) == "Ret")
    {
      IsTrainRet = true;
    }
    if (IsTrainRet == true)
    {
      ReturnDate = document.getElementById("inpReturnDateTrn").value;
      if (ReturnDate == "")
      {
        alert("A Return Date is required!");
        return false;
      }
      else
      {
        DifferenceInDays = DaysDelta(DepartDate,ReturnDate);

        if (DifferenceInDays < 0)
        {
          alert("Return Date must be >= Departure Date!");
          return false;
        }
      }
    }
    if (NoTickets == "")
    {
      alert("Please enter the number of tickets required!");
      return false;
    }
    else
    {
      if (isNaN(NoTickets))
      {
        alert("A numerical value is required for the number of tickets!");
        return false;
      }
      else
      {
        NoTickets = NoTickets*1.0;
        
        if (NoTickets < 1)
        {
          alert("The number of tickets must be >= 1!");
          return false;
        }
      }
    }
    obj1.item_number.value = ": " + BaseDesc;
    BaseAmt = BaseAmt*1.0;
    strPackage = NoTickets;
    if (BaseDesc.indexOf ("Child") > 0)
    {
      strPackage = strPackage + " Child";
    }
    else
    {
      strPackage = strPackage + " Adult";
    }
    if (IsTrainRet == true)
    {
      strPackage = strPackage + " Return Train Ticket";
    }
    else
    {
      strPackage = strPackage + " One Way Train Ticket";
    }

    if (NoTickets > 1)
    {
      strPackage = strPackage + "s";
    }
    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 + "; Departing"
    if (IsTrainRet == true)
    {
      if (BaseDesc.search(/OM/) == -1)
      {
        strPackage = strPackage + " from Urubamba: ";
      }
      else
      {
        strPackage = strPackage + " from Ollantaytambo: ";
      }

      strPackage = strPackage + DepartDate + ", Returning from 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("An Arrival Date is required!");
      return false;
    }
    DepartDate=document.getElementById("inputDepartDate").value;
    if(DepartDate=="")
    {
      alert("A Departure Date is required!");
      return false;
    }
    NoNights=DaysDelta(ArrivalDate,DepartDate);
    if(NoNights<=0)
    {
      alert("Departure Date must be greater than Arrival Date!");
      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=="Group")
      {
        strPackage=" night for "+NoInGrp+" people @ $"+Dollar(BaseAmt)+" each";
      }
      else
      {
        strPackage=" night for $"+Dollar(BaseAmt);
      }
    }
    else
    {
      if(BaseDesc=="Group")
      {
        strPackage=" nights for "+NoInGrp+" people @ $"+Dollar(BaseAmt)+" each";
      }
      else
      {
        strPackage=" nights @ $"+Dollar(BaseAmt)+" each";
      }
    }
    strPackage=strPackage+", Arriving: "+ArrivalDate+", Departing: "+DepartDate+".";
    obj1.ap_description.value=BaseDesc+", package of "+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=="Group")
    {
      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+"#Accommodation";
  frm.ap_cancelurl.value=frm.ap_returnurl.value;
  frm.submit();
}