// global variables to form MY addresses
var pref = ""; // special prefix, or ""
var at1 = "@";
var dot = ".";
var typ = "com";
var id1 = "ed";    // real id1
var id2 = "b";    // real id2
var url = "windwriter";       // real URL
var fid1 = "ed97";      // fake id1
var fid2 = "007"    // fake id2
var furl = "digitap";    // fake URL

function RemoveQuotes (inputString) {
  var newString = inputString.replace(/\'|\"/g, '');
//  alert("inputString is " + inputString +"\n NewString is " + newString);
  return newString;
}
function FixBusi (obj1) {  // PayPal FORM business value
var tmp;
  if (obj1.business) {     // see what is in this form 
    tmp = obj1.business.value;
    obj1.business.value = id1 + id2 + at1 + url + dot + typ;
//    alert ("Fake business was ... \n   " + tmp + "\n\n\n" +
//           "Real business is  ... \n   " + obj1.business.value);
  }
  return true;             // make it work...
}

//
//
// PayPal Shopping Cart Functions
//
//

function FixLink (obj1) {  // fix any PayPal link in calling FORM
var tmp,org,ary=new Array();
  for (i=0; i<obj1.length; i++) {  // run whole FORM
    obj = obj1.elements[i];        // address an element
//alert(obj.name);
    org = obj.value;
    tmp = org;  // place holder
    ary = tmp.split (furl);  // do we have a fake
    if (ary.length > 1) {    // still a fake
      tmp = ary.join (pref + url);
      obj.value = tmp;
//alert("Fix URL... \n\n" +
//      obj.name + " value was ... \n   " + org + "\n\n\n" +
//      "New value IS  ... \n   " + tmp);
    }
    org = tmp;  // any more stuff to fix?
    ary = tmp.split (fid1 + fid2);  // have a fake ID here?
    if (ary.length > 1) {    // still a fake
      tmp = ary.join (id1 + id2);
      obj.value = tmp;
//alert("Fix ID... \n\n" +
//      obj.name + " value was ... \n   " + org + "\n\n\n" +
//      "New value IS  ... \n   " + tmp);
    }
  }
}

function FixMail (obj1, subj) {  // fix a hyperlink mail addr
var tmp;
  tmp = obj1.href;
  if (subj.length > 0) {
	subj = "?subject=" + subj;
    obj1.href = "mailto:" + id1 + id2 + at1 + url + dot + typ + subj;
  } else {
    obj1.href = "mailto:" + id1 + id2 + at1 + url + dot + typ;
  }
//  alert ("Fake E-mail address was ... \n   " + tmp + "\n\n\n" +
//         "Real E-mail address is  ... \n   " + obj1.href);
  return true;             // make it work...
}

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) { // process selects
var i,j,amt=0,des="",obj,pos,tok,val;
var ary = new Array ();
  if (obj1.baseamt) amt  = obj1.baseamt.value*1.0; // base amount
  if (obj1.basedes) des  = obj1.basedes.value;     // base description
  // edb 10/08/2007 added base_item_number so it can be a hidden input type
  if (obj1.base_item_number) base_item_number  = obj1.base_item_number.value; 
  for (i=0; i<obj1.length; i++) {     // run entire form
    obj = obj1.elements[i];           // a form element
    if (obj.type == "select-one") {   // just get selects
      if (obj.name == "quantity" ||   // do not mess with these
          obj.name == "amount") continue;
      pos = obj.selectedIndex;        // which option selected
      val = obj.options[pos].value;   // selected value
      ary = val.split (" ");          // break apart
      for (j=0; j<ary.length; j++) {  // look at all items
// first we do single character tokens...
        if (ary[j].length < 2) continue;
        tok = ary[j].substring (0,1); // first character
        val = ary[j].substring (1);   // get data
        if (tok == "@") amt = val * 1.0;
        if (tok == "+") amt = amt + val*1.0;
        if (tok == "%") amt = amt + (amt * val/100.0);
        if (tok == "#") {             // record item number
          if (obj1.item_number) {
            // edb 10/08/2007 concat base_item_number to the item_number 
            if (obj1.base_item_number) {
              obj1.item_number.value = obj1.base_item_number.value + val;
            } else {
              obj1.item_number.value = val;
            }
          }
          ary[j] = "";                // zap this array element
        }
// Now we do 3-character tokens...
        if (ary[j].length < 4) continue;
        tok = ary[j].substring (0,3); // first 3 chars
        val = ary[j].substring (3);   // get data
        if (tok == "s1=") {           // value for shipping
          if (obj1.shipping)  obj1.shipping.value  = val;
          ary[j] = "";                // clear it out
        }
        if (tok == "s2=") {           // value for shipping2
          if (obj1.shipping2) obj1.shipping2.value = val;
          ary[j] = "";                // clear it out
        }
      }
      val = ary.join (" ");           // rebuild val with what is left

      if (obj.name == "on0" ||        // let these go where they want
          obj.name == "os0" ||
          obj.name == "on1" ||
          obj.name == "os1") continue;

      if (des.length == 0) des = val;
      else des = des + ", " + val;
    }
  }
// Now summarize stuff we just processed, above
  obj1.item_name.value = des;
  obj1.amount.value = Dollar (amt);
  if (obj1.tot) obj1.tot.value = "$" + Dollar (amt);
}

//
//
// End PayPal Shopping Cart Functions


// Misc utils (not Paypal or shopping cart related)
function openHelpWindow (helpURL) {
	var attr = "resizeable=0,width=400,height=400,toolbar=no,scrollbars=yes";
	var newWind = window.open(helpURL, "helpwindow", attr);
}
