// Dynamic PayPal code for online paypal transactions (hire and buy)
// Uploads one or more items using Hyperlink string

//Common global var's
var order = new Object();		// object to store order items in
var shpr = 0;					// shipping value
var spos  = 0;            		// shipping position selector

//Hire only var's
var adwk = 0;					// additional week value
var apos = 0;					// additional week position selector
var tothireamt = 65;  			// total hire starts at $65
var custom = "";				//variable to pass referal string

//Buy only var's
var cntr  = 0;					// no. of items in object
var stxt;						// shipping text
var totbuyamt=0,tqty=0,twgt=0,wgt=0,disc=0;  // Buy totals

//Common functions
function ppbusid (str) {  		// return real business id
var at1 = "@";
var dot = ".";
var typ = "com";
var cty = "au";
var id1 = "mamatens";    		// real id1
var url = "mamatens";       	// real URL

	str = id1 + at1 + url + dot + typ + dot + cty;
	return str;
}

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 (".");  	// should be one, but OK if not
  if (pos > 0) str = str.substring (rnd, pos + 3);
  return str;               	// return valid string
}

//Hire Functions
function AdWeek (obj) {  		// set quantity of second item (additional week hire)
  adwk = 0;	  					// zap it
  apos = obj.selectedIndex;  	// which option selected
  DispHireTots ();
}

function SetHireShip (obj) {  	// set shipping on user selection
  shpr = 0;	  					// zap it
  spos = obj.selectedIndex;  	// which option selected
  DispHireTots ();
}

function DispHireTots () {  	// display add week, postage and total on page
var d;
  d = document.tenshire;
  if (spos == 1) {				// standard delivery
		shpr = 17;
  } 
  if (spos == 2) {				// express delivery
		shpr = 22;
  }
  if (apos == 1) {				// 1 additional week
		adwk = 15;
  } 
  if (apos == 2) {				// 2 additional week
		adwk = 30;
  }
  if (apos == 3) {				// 3 additional week
		adwk = 45;
  }
  d.total02.value = "$" + Dollar (adwk);
  d.postage.value = "$" + Dollar (shpr);
  d.total.value = "$" + Dollar (tothireamt + adwk + shpr);
}

function ReadForm (obj1) { 		// process text fields
var i,obj,val,pos,op1="",op2="";
order[01] = new Object ();     	// create new entry to store item 1 details
order[02] = new Object ();     	// create new entry to store item 2 details

for (i=0; i<obj1.length; i++) { 	// loop through all elements
    obj = obj1.elements[i];     	// get form element
    if (obj.type == "text") {    	// just read text fields
	  val = obj.value;           	// get the data
	  if (obj.name != "total" &&   	// ignore the totals fields
          obj.name != "total01" && obj.name != "total02" &&
		  obj.name != "postage" && val == "") {            
        alert ("Please enter " + obj.name);  // force an entry in other text fields
        return false;
      }
      if (obj.name == "Start Date") op1 = val;
      else if (obj.name == "Hirers Name") op1 = op1 + ", " + val;  //concatenate name and date
	  else if (obj.name == "Referal") custom = "Referal: - " + val;  //set paypal custom variable to referal value (pass through)
    } else
    if (obj.type == "select-one") {   		// read drop down box's
      if (obj.name == "terms") {
	      pos = obj.selectedIndex;        	// which option selected
	      val = obj.options[pos].value;   	// selected value
		  if (val =="") {          			// 
          alert ("Please select Terms and conditions");  // force an entry
          return false;
		  }
		  else
		  op2 = val;
	  }
      if (obj.name == "shipping") {
		  if (spos == 0) {          		// 
          alert ("Please select shipping method");  // force an entry
          return false;
		  }
	  }
	 } 
   }
   if (spos == 1) order[01].des = "Mama TENS Hire, Standard";		// set item 1 details
   	else if (spos == 2) order[01].des = "Mama TENS Hire, EXPRESS";
   order[01].qty = 1;
   order[01].amt = 65.00;
   order[01].op1 = op1;
   order[01].op2 = op2;
   if (apos > 0) {							//set item 2 details (additional week) if selected
	   order[02].des = "M.TENS Hire addittional week";
	   order[02].qty = apos;
	   order[02].amt = Dollar (adwk/apos);
	   order[02].op1 = ""
	   order[02].op2 = ""
   }
SendHireCart ();
}

function SendHireCart () {  				// send the cart to PayPal
var business = "mamatens@yahoo.com.au";
var frst = true;  // 1st pass thru items.
var winpar = "width=800,height=768,scrollbars," +
             "location,resizable,status";
var strn   = "https://www.paypal.com/cgi-bin/webscr?cmd=_cart" +
             "&upload=1" + "&business=" + ppbusid (business) +
			 "&currency_code=AUD" + "&lc=AU" + "&no_shipping=2" + "&no_note=1" + "&custom=" + custom +
			 "&cancel_return=http://www.mamatens.com.au/pp_failure.htm" + "&return=http://www.mamatens.com.au/pp_success.htm";
var des = "",j=0,i;
  for (i in order) { 	 					// send all valid data
    if (order[i].qty > 0) {
      j = j + 1; 
      strn = strn + "&item_name_"    + j + "=" + order[i].des +
      //              "&item_number_"  + j + "=" + i +
                    "&quantity_"     + j + "=" + order[i].qty +
                    "&amount_"       + j + "=" + order[i].amt;
      if (order[i].op1 != "") {				// Add option 1 value if not null
		  strn = strn + "&on0_" + j + "=Start Date and Name" + "&os0_" + j + "=" + order[i].op1;
	  }
      if (order[i].op2 != "") {				// Add option 1 value if not null
		  strn = strn + "&on1_" + j + "=Terms and Conditions agreed ?" + "&os1_" + j + "=" + order[i].op2;
	  }
	  if (spos > 0) {  						// there is some shipping activity
        if (frst) {     					// first time thru
          strn = strn + "&shipping_" + j + "=" + Dollar (shpr);
        } else {        					// every other time thru
          strn = strn + "&shipping_" + j + "=0";
        }
      }
      frst = false;
	}
  }
//if (j > 0) alert (strn)
  if (j > 0) window.open (strn, "paypal", winpar);
}

//Buy Functions
function SetBuyShip (obj) {  				// set shipping on user selection
  shpr = 0,stxt = "";	  					// zap it
  spos = obj.selectedIndex;  				// which option selected
  stxt = obj.options[spos].text; 			// save shipping text
  DispBuyTots ();
}

function DispBuyTots () {  					// display subtotal, postage and total on page
var d,tmp=0;
  tmp = disc * totbuyamt
  d = document.tensorder;
  d.subtotal.value = "$" + Dollar (totbuyamt);
  d.discount.value = "$" + Dollar (tmp);
  if (tqty >= 1) {							// no shipping charge unless express delivery
  	if (spos == 1) {						// standard delivery
		shpr = 0;			
	} 
  	if (spos == 2) {						// express delivery
		shpr = 5;							// charge for express
	} 
  }
  d.postage.value = "$" + Dollar (shpr);
  d.total.value = "$" + Dollar ((totbuyamt - tmp) + shpr);
}

function GetOrder (id, des, amt, wgt) {  	// process added item
var i,qty;
  totbuyamt=0,tqty=0,twgt=0;   				// zero totals
  qty = document.tensorder["qty" + id].value;  // get qty
  if (isNaN (qty)) {      					// test entry
    alert ("Quantity is not a valid number, please re-enter");
    return;
  }
  document.tensorder["total" + id].value = "$" + Dollar (qty * amt);
  if (cntr == 0) order = new Object (); 	// start with empty object
  cntr = cntr + 1;               			// bump counter so no zap next time
  order[id] = new Object ();     			// create new entry
  if (document.tensorder["try" + id]) { 	// does element exist ?
  	if (document.tensorder["try" + id].checked) des = des + ", TryB4Buy"; // add additional string to item description if try checkbox selected
  }
  order[id].des = des;           			// load up order values
  order[id].amt = Dollar (amt);
  order[id].qty = qty;
  if (wgt) order[id].wgt = wgt;
    else order[id].wgt = 0;
  for (i in order) {             			// calc totals we might use
    qty = order[i].qty*1.0;
    totbuyamt = totbuyamt + order[i].amt * qty;  // total amount
    tqty = tqty + qty;                 		// total quantity
    twgt = twgt + order[i].wgt * qty;  		// total weight
	if (tqty>=10) {							// determine discount dependant on total qty of order
		disc =  0.15; 						// 15% 
	}
	if  (tqty<10) {
		if  (tqty>=5) {
			disc = 0.1; 					// 10$ off
		}
	}
	if (tqty<5) {
		if (tqty>=3) {
			disc = 0.05;					// 5% off
		} else {	
			disc = 0;
    }
  }
}
  DispBuyTots ();                         	// calc totals
}

function SendBuyCart () {  					// send the cart to PayPal
var business = "mamatens@yahoo.com.au";
var frst = true;  							// 1st pass thru items.
var winpar = "width=800,height=768,scrollbars," +
             "location,resizable,status";
var strn   = "https://www.paypal.com/cgi-bin/webscr?cmd=_cart" +
             "&upload=1" + "&business=" + ppbusid (business) +
			 "&currency_code=AUD" + "&lc=AU" + "&no_shipping=2" + "&no_note=1" +
			 "&cancel_return=http://www.mamatens.com.au/pp_failure.htm" + "&return=http://www.mamatens.com.au/pp_success.htm";
var i,j=0,des;
  for (i in order) {  						// send all valid data
    if (order[i].qty > 0) {
      j = j + 1; 
	  if (spos == 2) {						// express delivery, add tag to item description
	  	des = order[i].des + ", EXPRESS";
	  } else des = order[i].des
      strn = strn + "&item_name_"    + j + "=" + des +
      //              "&item_number_"  + j + "=" + i +
                    "&quantity_"     + j + "=" + order[i].qty +
                    "&amount_"       + j + "=" + Dollar (order[i].amt * (1 - disc)); // If discount, apply to individual amounts
      if (disc > 0) {						// If discount add % amount to options field
		  strn = strn + "&on0_" + j + "=Discounted" + "&os0_" + j + "=" + (disc * 100) + "%";
		  if (shpr == 0) {					// If free shipping add comment to 2nd option field
	  		strn = strn + "&on1_" + j + "=Free delivery";
	 	  }
	  } else {								// no discount
		  if (shpr == 0) {					// If free shipping add comment to 1st option field
	  		strn = strn + "&on0_" + j + "=Free delivery";
	 	 }
	  }
	  if (spos >= 0) {  					// there is some shipping activity
        if (frst) {     					// first time thru
          strn = strn + "&shipping_" + j + "=" + Dollar (shpr);
        } else {        					// every other time thru
          strn = strn + "&shipping_" + j + "=0";
        }
      }
      frst = false;
    }
  }
    //if (j > 0) alert (strn)
  if (j > 0) window.open (strn, "paypal", winpar);
}
