/* 
 * function printf(fstring)
 * 
 * Function to print formatted data to the page (currency, dates)
 */
function printf(fstring)
{ 
  var pad = function(str,ch,len)
  { 
    var ps='';
    for(var i=0; i<Math.abs(len); i++) ps+=ch;
    return len>0?str+ps:ps+str;
  }
  var processFlags = function(flags,width,rs,arg)
  { 
    var pn = function(flags,arg,rs)
    { 
      if(arg>=0)
      { 
        if(flags.indexOf(' ')>=0) rs = ' ' + rs;
        else if(flags.indexOf('+')>=0) rs = '+' + rs;
      }
      else
        rs = '-' + rs;
        return rs;
    }
    var iWidth = parseInt(width,10);
    if(width.charAt(0) == '0')
    { 
      var ec=0;
      if(flags.indexOf(' ')>=0 || flags.indexOf('+')>=0) ec++;
      if(rs.length<(iWidth-ec)) rs = pad(rs,'0',rs.length-(iWidth-ec));
      return pn(flags,arg,rs);
    }
    rs = pn(flags,arg,rs);
    if(rs.length<iWidth)
    { 
      if(flags.indexOf('-')<0) rs = pad(rs,' ',rs.length-iWidth);
      else rs = pad(rs,' ',iWidth - rs.length);
    }    
    return rs;
  }
  
  var converters = new Array();
  converters['c'] = function(flags,width,precision,arg)
  { 
    if(typeof(arg) == 'number') return String.fromCharCode(arg);
    if(typeof(arg) == 'string') return arg.charAt(0);
    return '';
  }
  converters['d'] = function(flags,width,precision,arg)
  { 
    return converters['i'](flags,width,precision,arg); 
  }
  converters['u'] = function(flags,width,precision,arg)
  { 
    return converters['i'](flags,width,precision,Math.abs(arg)); 
  }
  converters['i'] =  function(flags,width,precision,arg)
  { 
    var iPrecision=parseInt(precision);
    var rs = ((Math.abs(arg)).toString().split('.'))[0];
    if(rs.length<iPrecision) rs=pad(rs,' ',iPrecision - rs.length);
    return processFlags(flags,width,rs,arg); 
  }
  converters['E'] = function(flags,width,precision,arg) 
  { 
    return (converters['e'](flags,width,precision,arg)).toUpperCase();
  }
  converters['e'] =  function(flags,width,precision,arg)
  { 
    iPrecision = parseInt(precision);
    if(isNaN(iPrecision)) iPrecision = 6;
    rs = (Math.abs(arg)).toExponential(iPrecision);
    if(rs.indexOf('.')<0 && flags.indexOf('#')>=0) rs = rs.replace(/^(.*)(e.*)$/,'$1.$2');
    return processFlags(flags,width,rs,arg);        
  }
  converters['f'] = function(flags,width,precision,arg)
  { 
    iPrecision = parseInt(precision);
    if(isNaN(iPrecision)) iPrecision = 6;
    rs = (Math.abs(arg)).toFixed(iPrecision);
    if(rs.indexOf('.')<0 && flags.indexOf('#')>=0) rs = rs + '.';
    return processFlags(flags,width,rs,arg);
  }
  converters['G'] = function(flags,width,precision,arg)
  { 
    return (converters['g'](flags,width,precision,arg)).toUpperCase();
  }
  converters['g'] = function(flags,width,precision,arg)
  { 
    iPrecision = parseInt(precision);
    absArg = Math.abs(arg);
    rse = absArg.toExponential();
    rsf = absArg.toFixed(6);
    if(!isNaN(iPrecision))
    { 
      rsep = absArg.toExponential(iPrecision);
      rse = rsep.length < rse.length ? rsep : rse;
      rsfp = absArg.toFixed(iPrecision);
      rsf = rsfp.length < rsf.length ? rsfp : rsf;
    }
    if(rse.indexOf('.')<0 && flags.indexOf('#')>=0) rse = rse.replace(/^(.*)(e.*)$/,'$1.$2');
    if(rsf.indexOf('.')<0 && flags.indexOf('#')>=0) rsf = rsf + '.';
    rs = rse.length<rsf.length ? rse : rsf;
    return processFlags(flags,width,rs,arg);        
  }  
  converters['o'] = function(flags,width,precision,arg)
  { 
    var iPrecision=parseInt(precision);
    var rs = Math.round(Math.abs(arg)).toString(8);
    if(rs.length<iPrecision) rs=pad(rs,' ',iPrecision - rs.length);
    if(flags.indexOf('#')>=0) rs='0'+rs;
    return processFlags(flags,width,rs,arg); 
  }
  converters['X'] = function(flags,width,precision,arg)
  { 
    return (converters['x'](flags,width,precision,arg)).toUpperCase();
  }
  converters['x'] = function(flags,width,precision,arg)
  { 
    var iPrecision=parseInt(precision);
    arg = Math.abs(arg);
    var rs = Math.round(arg).toString(16);
    if(rs.length<iPrecision) rs=pad(rs,' ',iPrecision - rs.length);
    if(flags.indexOf('#')>=0) rs='0x'+rs;
    return processFlags(flags,width,rs,arg); 
  }
  converters['s'] = function(flags,width,precision,arg)
  { 
    var iPrecision=parseInt(precision);
    var rs = arg;
    if(rs.length > iPrecision) rs = rs.substring(0,iPrecision);
    return processFlags(flags,width,rs,0);
  }
  
  farr = fstring.split('%');
  retstr = farr[0];
  fpRE = /^([-+ #]*)(\d*)\.?(\d*)([cdieEfFgGosuxX])(.*)$/;
  for(var i=1; i<farr.length; i++)
  { 
    fps=fpRE.exec(farr[i]);
    if(!fps) continue;
    if(arguments[i]!=null) retstr+=converters[fps[4]](fps[1],fps[2],fps[3],arguments[i]);
    retstr += fps[5];
  }
  return retstr;
}


/* 
 * Functions needed for Asynchronus Java and XML implementation
 */
function createXMLHttpRequest() 
{
  var ua;

  if(window.XMLHttpRequest) 
  {
    try { ua = new XMLHttpRequest(); } 
    catch(e) { ua = false; }
  } 
  else if(window.ActiveXObject) 
  {
    try { ua = new ActiveXObject("Microsoft.XMLHTTP"); } 
    catch(e) { ua = false; }
  }
  return ua;
}

function handleResponse()
{
  if(req.readyState == 4)
  {
    var response = req.responseText;
    var update = new Array();

    if(response.indexOf('||' != -1)) 
    {
      update = response.split('||');
      document.getElementById("test").innerHTML = update[0];
    }
	}
}

var req = createXMLHttpRequest();

/* 
 * Function call prototypes called from PHP
 */
function login(email, password)
{
 req.open('get', '/functions.php?do=login&email='+email+'&password='+password);
 req.onreadystatechange = handleResponse;
 req.send(null); 
 window.setTimeout('document.location.href="index.php?page=myhome"', 1000);
}

function logout()
{
 req.open('get', '/functions.php?do=logout');
 req.onreadystatechange = handleResponse;
 req.send(null); 
 window.setTimeout('document.location.href=\'index.php\'', 2000);
}

function addToCart(id, qty, location)
{
  req.open('get', '/functions.php?do=addToCart&id='+id+'&qty='+qty);  
  req.onreadystatechange = handleResponse;
  req.send(null); 
   window.setTimeout('document.location.href=\''+location+'\'', 1000);
}

function removeFromCart(id, caller)
{
  req.open('get', '/functions.php?do=removeFromCart&id='+id+'&caller='+caller);
  req.onreadystatechange = handleResponse;
  req.send(null); 
}

function increaseQty(id)
{
  req.open('get', '/functions.php?do=increaseQty&id='+id);
  req.onreadystatechange = handleResponse;
  req.send(null); 
}

function decreaseQty(id)
{
  req.open('get', '/functions.php?do=decreaseQty&id='+id);
  req.onreadystatechange = handleResponse;
  req.send(null); 
}

function applyCredit(id)
{
  req.open('get', '/functions.php?do=applyCredit&id='+id);
  req.onreadystatechange = handleResponse;
  req.send(null); 
}

function removeCredit(id)
{
  req.open('get', '/functions.php?do=removeCredit&id='+id);
  req.onreadystatechange = handleResponse;
  req.send(null); 
}

function printCart(id)
{
  req.open('get', '/functions.php?do=printCart');
  req.onreadystatechange = handleResponse;
  req.send(null); 
}

function printCheckout()
{
  req.open('get', '/functions.php?do=printCheckout');
  req.onreadystatechange = handleResponse;
  req.send(null); 
}

function updateShipping(shipMethod)
{
  req.open('get', '/functions.php?do=updateShipping&shipMethod='+shipMethod);
  req.onreadystatechange = handleResponse;
  req.send(null); 
}

function printPayment(fn, ln, a1, a2, c, s, z, p, card_type, card_no, exp, cvv, submit)
{
  req.open('get', '/functions.php?do=printPayment&fn='+fn+'&ln='+ln+'&a1='+a1+'&a2='+a2+'&c='+c+'&s='+s+'&z='+z+'&p='+p+'&card_type='+card_type+'&card_no='+card_no+'&exp='+exp+'&cvv='+cvv+'&submit='+submit );
  req.onreadystatechange = handleResponse;
  req.send(null); 
}

function printSignup(email, pass1, pass2, pad_serial, first_name, last_name, phone, ref, refOptional, aweber_purch_type, aweber_associateid, submit)
{
  req.open('get', '/functions.php?do=printSignup&email='+email+'&pass1='+pass1+'&pass2='+pass2+'&pad_serial='+pad_serial+'&first_name='+first_name+'&last_name='+last_name+'&phone='+phone+'&ref='+ref+'&refOptional='+refOptional+'&aweber_purch_type='+aweber_purch_type+'&aweber_associateid='+aweber_associateid+'&submit='+submit);
  req.onreadystatechange = handleResponse;
  req.send(null); 
}

function getReferralDetails(refMethod, refOptional)
{
  switch(refMethod) {
    case '0':
      document.getElementById('refTitle').innerHTML = "Please enter details:";
    break;
    case '1':
      document.getElementById('refTitle').innerHTML = "Doctor's Name:";
    break;
    case '2':
      document.getElementById('refTitle').innerHTML = "NewRealityBiz ID:";
    break;
    case '3':
      document.getElementById('refTitle').innerHTML = "Name of Show:";
    break;
    case '4':
      document.getElementById('refTitle').innerHTML = "Which Publication:";
    break;
    case '5':
      document.getElementById('refTitle').innerHTML = "Afiliate's Name:";
    break;
    case '6':
      document.getElementById('refTitle').innerHTML = "Hospital Location:";
    break;
    case '7':
      document.getElementById('refTitle').innerHTML = "Please enter details:";
    break;
    case '8':
      document.getElementById('refTitle').innerHTML = "Spa Name:";
    break;
  }

  document.getElementById('refDetails').innerHTML = "<input type='text' name='refOptional' width='20' value='"+refOptional+"'>";
}

/* 
*function getFile(id) {
* document.getElementById('dl'+id).innerHTML = "<p class='dl'><span style='color:red'>Preparing download...</span></p>";
* window.setTimeout('window.location="download.php?id='+id+'"', 2000);
* document.getElementById(Iframe).src = url;
* window.setTimeout('document.getElementById(\'dl'+id+'\').innerHTML = ""', 15000);
*}
*/
function getFile(id) {
document.getElementById('dl'+id).innerHTML = "<p class='dl'><span style='color:red'>Preparing download...</span></p>";
document.getElementById('Iframe').src = 'download.php?id='+id+'';
window.setTimeout('document.getElementById(\'dl'+id+'\').innerHTML = ""', 15000);
}

function serialWhatIs() {
  window.open('/nxtlynk/padserial.html', 'WhatIsPadSerial', 'width=640,height=480,directories=no,menubar=no,toolbar=no,scrollbars=yes,left=0,top=0,screenX=0,screenY=0');
}

function cvvWhatIs() {
  window.open('/cart/img/credit-card-security-codes.gif', 'cvvWhatIs', 'width=640,height=480,directories=no,menubar=no,toolbar=no,scrollbars=yes,left=0,top=0,screenX=0,screenY=0');
}

function loadImage(width, height, imageURL) {
window.open(imageURL, 'coverImageDisplay', 'width='+width+',height='+height+',directories=no,menubar=no,toolbar=no,scrollbars=yes,left=0,top=0,screenX=0,screenY=0');
  //window.open(imageURL, imageURL, 'width='+width+',height='+height+',directories=no,menubar=no,toolbar=no,scrollbars=yes,left=0,top=0,screenX=0,screenY=0');
}

// /admin

function createKey(serial, key1, key2, key3, key4, key5, key6) {
  req.open('get', '/functions.php?do=createKey&serial='+serial+'&key1='+key1+'&key2='+key2+'&key3='+key3+'&key4='+key4+'&key5='+key5+'&key6='+key6);
  req.onreadystatechange = handleResponse;
  req.send(null);
}

function addToGiveawayCart(id) {
  req.open('get', '/functions.php?do=addToGiveawayCart&id='+id);
  req.onreadystatechange = handleResponse;
  req.send(null);  
}

function submitGiveaway(serial) {
  req.open('get', '/functions.php?do=submitGiveaway&serial='+serial);
  req.onreadystatechange = handleResponse;
  req.send(null);  
}

function submitDeactivate(serial) {
  req.open('get', '/functions.php?do=submitDeactivate&serial='+serial);
  req.onreadystatechange = handleResponse;
  req.send(null);  
}

function doDeactivate(serial) {
  req.open('get', '/functions.php?do=doDeactivate&serial='+serial);
  req.onreadystatechange = handleResponse;
  req.send(null);  
}

// /nxtlynk

function getPadInfo() {
  document.getElementById('info').innerHTML=' \
    <img class=\'thumbnail_right\' src=\'img/Front-Screen-On.jpg\' alt=\'PRO\' width=\'61\' height=\'90\'/> \
    <p>The PRO is a personal portable device that plays downloaded health programs.  Allow your clients to continue to improve their lives at home while \
    returning to your office for personalized and expert direction.</p> \
    \
    <p>Click <a href=\'./pdf/PAD Info Brochure Personal 2.pdf\'>here</a> for the PRO product literature.</p> \
    \
    <select name=\'pad\'> \
      <option value=\'0\' selected>None</option> \
      <option value=\'1\'>One</option> \
      <option value=\'2\'>Two</option> \
      <option value=\'3\'>Three</option> \
      <option value=\'4\'>Four</option> \
      <option value=\'5\'>Five</option> \
    </select> \
    <br><br>';
}

function getProInfo() {
  document.getElementById('info').innerHTML=' \
    <img class=\'thumbnail_right\' src=\'img/ProFP.jpg\' alt=\'pad\' width=\'150\' height=\'100\'/> \
    <p>A PRO site license will allow you to use the technology of the PRO to improve the lives of your clients.  The site license \
    includes all the materials you see pictured here, along with your choice of one, two or three PRO units.</p> \
    \
    <select name=\'pro\'> \
      <option value=\'0\' selected>None</option> \
      <option value=\'1\'>Site License with One PRO Unit -- $6500</option> \
      <option value=\'2\'>Site License with Two PRO Units   -- $9000</option> \
      <option value=\'3\'>Site License with Three PRO Units -- $12000</option> \
    </select> \
    <br><br>';
}

function updateProOpt(numpros) {
  switch(numpros) {
    case '1': 
      document.getElementById('proopt').innerHTML=' \
      <table> \
        <tr> \
          <td width="30%"> \
            Pro 1 Option: \
          </td> \
          <td width="15%"> \
            <input type="radio" name="group1" value="A">A \
          </td> \
          <td width="15%"> \
            <input type="radio" name="group1" value="B">B \
          </td> \
          <td width="15%"> \
            <input type="radio" name="group1" value="C">C \
          </td> \
          <td width="25%"> \
            <a href="javascript:showProOpts()">What is this?</a> \
          </td> \
        </tr> \
      </table>';
    break;
    
    case '2': 
      document.getElementById('proopt').innerHTML=' \
      <table> \
        <tr> \
          <td width="30%"> \
            Pro 1 Option: \
          </td> \
          <td width="15%"> \
            <input type="radio" name="group1" value="A">A \
          </td> \
          <td width="15%"> \
            <input type="radio" name="group1" value="B">B \
          </td> \
          <td width="15%"> \
            <input type="radio" name="group1" value="C">C \
          </td> \
          <td width="25%"> \
            <a href="javascript:showProOpts()">What is this?</a> \
          </td> \
        </tr> \
        <tr> \
          <td width="30%"> \
            Pro 2 Option: \
          </td> \
          <td width="15%"> \
            <input type="radio" name="group2" value="A">A \
          </td> \
          <td width="15%"> \
            <input type="radio" name="group2" value="B">B \
          </td> \
          <td width="15%"> \
            <input type="radio" name="group2" value="C">C \
          </td> \
        </tr> \
      </table>';
    break;
    
    case '3': 
      document.getElementById('proopt').innerHTML=' \
      <table> \
        <tr> \
          <td width="30%"> \
            Pro 1 Option: \
          </td> \
          <td width="15%"> \
            <input type="radio" name="group1" value="A">A \
          </td> \
          <td width="15%"> \
            <input type="radio" name="group1" value="B">B \
          </td> \
          <td width="15%"> \
            <input type="radio" name="group1" value="C">C \
          </td> \
          <td width="25%"> \
            <a href="javascript:showProOpts()">What is this?</a> \
          </td> \
        </tr> \
        <tr> \
          <td width="30%"> \
            Pro 2 Option: \
          </td> \
          <td width="15%"> \
            <input type="radio" name="group2" value="A">A \
          </td> \
          <td width="15%"> \
            <input type="radio" name="group2" value="B">B \
          </td> \
          <td width="15%"> \
            <input type="radio" name="group2" value="C">C \
          </td> \
        </tr> \
        <tr> \
          <td width="30%"> \
            Pro 3 Option: \
          </td> \
          <td width="15%"> \
            <input type="radio" name="group3" value="A">A \
          </td> \
          <td width="15%"> \
            <input type="radio" name="group3" value="B">B \
          </td> \
          <td width="15%"> \
            <input type="radio" name="group3" value="C">C \
          </td> \
        </tr> \
      </table>';
    break;
  }
}

function showProOpts() {
  window.open("/nxtlynk/proopts.html", "ProOptions", "width=640,height=480,directories=no,menubar=no,toolbar=no,scrollbars=yes,left=0,top=0,screenX=0,screenY=0");
}

function showOrderFormItems(pad_qty) {
	var textBuf = ' \
		<table width="100%"> \
			<tr> \
				<td width="10%" style="font-weight:bold">Qty</td><td width="60%" style="font-weight:bold">Description</td><td width="15%" style="font-weight:bold">Unit Cost</td><td width="15%" style="font-weight:bold">Total Cost</td> \
			</tr> \
			<tr> \
				<td> \
					<select name="pad_qty" onchange="javascript:showOrderFormItems(document.checkout.pad_qty.value)">'
					
	for(var i=1;i<10;i++) {
		if(i == pad_qty)
			textBuf += '<option value='+i+' selected>'+i+'</option>'
		else
			textBuf += '<option value='+i+'>'+i+'</option>'
	}
	
	textBuf += ' \
						</select> \
					</td> \
					<td>PRO comes with three programs loaded and credit for four downloads of your choice.</td><td>$450.00</td><td>$'+printf('%3.2f', 450*pad_qty)+'<td> \
				</tr> \
				<tr><td></td><td>Web Site Access</td><td>$30.00</td><td>One per Order</td></tr> \
				<tr><td></td><td>Shipping</td><td>$20.00</td><td>$'+printf('%3.2f', 20*pad_qty)+'</td></tr> \
				<tr><td></td><td></td><td>&nbsp;</td><td></td></tr> \
				<tr><td></td><td></td><td style="font-weight:bold">Total:</td><td>$'+printf('%3.2f', 470*pad_qty+30)+'</td></tr> \
	</table>'
	
	document.getElementById('OrderFormItems').innerHTML=textBuf;
}

// /pad

function padPrintSignup(email, pass1, pass2, pad_serial, submit)
{
  req.open('get', '/functions.php?do=printSignup&email='+email+'&pass1='+pass1+'&pass2='+pass2+'&pad_serial='+pad_serial+'&submit='+submit);
  req.onreadystatechange = handleResponse;
  req.send(null); 
}

