// calculator.js

//
// Array: 'Membership' vs 'Commission Rate From Each Downline Level'
//
// Standard - row 0
// Premium  - row 1
// Golden   - row 2
// Insider  - row 3

var cRate = new Array(4);

cRate[0] = new Array(7);
cRate[1] = new Array(7);
cRate[2] = new Array(7);
cRate[3] = new Array(7);

cRate[0][0] = 20;
cRate[0][1] = 10;
cRate[0][2] = 5;
cRate[0][3] = 5;
cRate[0][4] = 1;
cRate[0][5] = 1;
cRate[0][6] = 1;

cRate[1][0] = 25; // Premium, Level 1
cRate[1][1] = 15;
cRate[1][2] = 10;
cRate[1][3] = 5;
cRate[1][4] = 2;
cRate[1][5] = 2;
cRate[1][6] = 2;

cRate[2][0] = 25;
cRate[2][1] = 15;
cRate[2][2] = 10;
cRate[2][3] = 5;
cRate[2][4] = 5;
cRate[2][5] = 3;
cRate[2][6] = 3;

cRate[3][0] = 25; // Insider, Level 1
cRate[3][1] = 15;
cRate[3][2] = 10;
cRate[3][3] = 5;
cRate[3][4] = 5;
cRate[3][5] = 5;
cRate[3][6] = 5;

function dw(str) {
  document.writeln(str);
}

var numStr = "0123456789";

//
// check - is parameter 'data' numeric or not
//
function isNumeric(data) {

  var thisChar;
  var counter = 0;

  for (j = 0; j < data.length; j++) {

    thisChar = data.substring(j, j + 1);

    if (numStr.indexOf(thisChar) != -1) counter++
    else break;
  }

  if (counter == data.length) return true
  else return false
}


function ReCalculate() {
  //
  // Re-calculate
  //
  var err = '';
  var f = document.forms['calculator'];

  // simple validation:
  var iNumberOfDownlines = f.txtNumberOfDownlines.value;
  var iMembership = f.lstMembership.options[f.lstMembership.selectedIndex].value;
  var dEBookCost = f.lstEBookCost.options[f.lstEBookCost.selectedIndex].value;
  var iEstimatedPercent = f.lstEstimatedPercent.options[f.lstEstimatedPercent.selectedIndex].value;

  if (!isNumeric(iNumberOfDownlines)) {
    err += "\n" + '"Number of downlines" should be integer.';
  }
  else
    if (iNumberOfDownlines + 0 <= 0) {
      err += "\n" + '"Number of downlines" should be positive.';
    }
    else
      if (iNumberOfDownlines - 97655 > 0) {
        err += "\n" + 'For "7x5" matrix "Number of downlines" should be not more than 97655.';
      }


  if (err != '') {
    alert(err);
    return;
  }

  //
  // Calculate number of downlines
  //
  var iMult = 5; // 1st Level - 5; 2nd Level 5*5; 3rd Level 5*5*5
  var dLines = new Array(7);
  dLines[0] = 0;
  dLines[1] = 0;
  dLines[2] = 0;
  dLines[3] = 0;
  dLines[4] = 0;
  dLines[5] = 0;
  dLines[6] = 0;

  var iSumLines = 0;
  var iCurLine = 1;
  var i;
  for (i = 0; (i < dLines.length) && (iSumLines - iNumberOfDownlines <= 0); i++) {

    iCurLine *= iMult;

    if (iCurLine + iSumLines - iNumberOfDownlines > 0) {

      dLines[i] = iNumberOfDownlines - iSumLines;
      iSumLines = iNumberOfDownlines;
    }
    else {
      dLines[i] = iCurLine;
      iSumLines += iCurLine;
    }

    //alert(i + "\n" + iCurLine + "\n" + dLines[i] + "\n" + iSumLines);
  }

  // 
  // Show number of dowlines per level
  //
  f.txtDownlinesLevel1.value = dLines[0];
  f.txtDownlinesLevel2.value = dLines[1];
  f.txtDownlinesLevel3.value = dLines[2];
  f.txtDownlinesLevel4.value = dLines[3];
  f.txtDownlinesLevel5.value = dLines[4];
  f.txtDownlinesLevel6.value = dLines[5];
  f.txtDownlinesLevel7.value = dLines[6];

  //
  // Show comission rate. Depends on Membership.
  //
  f.txtCRateLevel1.value = cRate[iMembership][0];
  f.txtCRateLevel2.value = cRate[iMembership][1];
  f.txtCRateLevel3.value = cRate[iMembership][2];
  f.txtCRateLevel4.value = cRate[iMembership][3];
  f.txtCRateLevel5.value = cRate[iMembership][4];
  f.txtCRateLevel6.value = cRate[iMembership][5];
  f.txtCRateLevel7.value = cRate[iMembership][6];

  //
  // Show cost of Digital Product
  //
  f.txtEBookCostLevel1.value = dEBookCost;
  f.txtEBookCostLevel2.value = dEBookCost;
  f.txtEBookCostLevel3.value = dEBookCost;
  f.txtEBookCostLevel4.value = dEBookCost;
  f.txtEBookCostLevel5.value = dEBookCost;
  f.txtEBookCostLevel6.value = dEBookCost;
  f.txtEBookCostLevel7.value = dEBookCost;

  //
  // Calculate and Show commission per level
  //
  var dCommissionLevel1 = dLines[0] * cRate[iMembership][0] * dEBookCost;
  var dCommissionLevel2 = dLines[1] * cRate[iMembership][1] * dEBookCost;
  var dCommissionLevel3 = dLines[2] * cRate[iMembership][2] * dEBookCost;
  var dCommissionLevel4 = dLines[3] * cRate[iMembership][3] * dEBookCost;
  var dCommissionLevel5 = dLines[4] * cRate[iMembership][4] * dEBookCost;
  var dCommissionLevel6 = dLines[5] * cRate[iMembership][5] * dEBookCost;
  var dCommissionLevel7 = dLines[6] * cRate[iMembership][6] * dEBookCost;

  f.txtCommissionLevel1.value = Math.round(dCommissionLevel1)/100;
  f.txtCommissionLevel2.value = Math.round(dCommissionLevel2)/100;
  f.txtCommissionLevel3.value = Math.round(dCommissionLevel3)/100;
  f.txtCommissionLevel4.value = Math.round(dCommissionLevel4)/100;
  f.txtCommissionLevel5.value = Math.round(dCommissionLevel5)/100;
  f.txtCommissionLevel6.value = Math.round(dCommissionLevel6)/100;
  f.txtCommissionLevel7.value = Math.round(dCommissionLevel7)/100;

  //
  // Commission in total
  //
  var dCommissionTotal = Math.round(iEstimatedPercent * (dCommissionLevel1 + dCommissionLevel2 + dCommissionLevel3 + dCommissionLevel4 + dCommissionLevel5 + dCommissionLevel6 + dCommissionLevel7)/100)/100;

  //
  //
  //
  f.txtEBookCostBottom.value = dEBookCost;
  f.txtEstimatedPercentBottom.value = iEstimatedPercent;

  f.txtCommissionTotal.value = dCommissionTotal;

  //alert(iNumberOfDownlines + "\n" + iMembership + "\n" + dEBookCost + "\n" + iEstimatedPercent)
}


// output:

// 1st table (input)

dw('<form name="calculator">'); // I should put both tables into form.

dw('<br><font face="Arial" size="3" color="#FF0000">Please enter the ');
dw('following info to estimate the commission you will earn</font><br><br>');


dw('<table width="98%" border="1" cellspacing="0" cellpadding="0">');
dw('  <tr>');
dw('    <td width="53%"><font face="Arial" size="2" color="#0066FF"><b>Number of downlines ');
dw('      you have got :</b></font></td>');
dw('    <td width="47%">');
dw('      <input type="text" name="txtNumberOfDownlines" size="10" value="7500" onChange="ReCalculate()">');
dw('    </td>');
dw('  </tr>');
dw('  <tr>');
dw('    <td width="53%"><font face="Arial" size="2" color="#0066FF"><b>Type of membership ');
dw('      :</b></font></td>');
dw('    <td width="47%">');
dw('      <select name="lstMembership" onChange="ReCalculate()">');
dw('        <option value="0" selected>Standard</option>');
dw('        <option value="1">Premium</option>');
dw('        <option value="2">Golden</option>');
dw('        <option value="3">Insider</option>');
dw('      </select>');
dw('    </td>');
dw('  </tr>');
dw('  <tr> ');
dw('    <td width="53%"><font face="Arial" size="2" color="#0066FF"><b>Cost of the ');
dw('      product :</b></font></td>');
dw('    <td width="47%">');
dw('      <select name="lstEBookCost" onChange="ReCalculate()">');
dw('        <option value="19.95">$ 19.95</option>');
dw('        <option value="39.95" selected>$ 39.95</option>');
dw('      </select>');
dw('    </td>');
dw('  </tr>');
dw('  <tr>');
dw('    <td width="53%"><font face="Arial" size="2" color="#0066FF"><b>Estimated % ');
dw('      of your downlines will buy :</b></font></td>');
dw('    <td width="47%">');
dw('      <select name="lstEstimatedPercent" onChange="ReCalculate()">');
dw('        <option value="10">10%</option>');
dw('        <option value="20">20%</option>');
dw('        <option value="30" selected>30%</option>');
dw('        <option value="40">40%</option>');
dw('        <option value="50">50%</option>');
dw('        <option value="60">60%</option>');
dw('        <option value="70">70%</option>');
dw('        <option value="80">80%</option>');
dw('        <option value="90">90%</option>');
dw('        <option value="100">100%</option>');
dw('      </select>');
dw('    </td>');
dw('  </tr>');
dw('  <tr>');
dw('    <td width="53%">&nbsp;</td>');
dw('    <td width="47%" align="center"><input type="button" value="Calculate!" onClick="ReCalculate()"></td>');
dw('  </tr>');
dw('</table>');


dw('<br><br><font face="Arial" size="2" color="#0033FF">Your estimated commission will be shown below</font><br><br>');

//
// 2nd table - output
//
dw('<table width="98%" border="1" cellspacing="0" cellpadding="0">');
dw('  <tr bgcolor="#0099FF">');
dw('    <td width="10%">');
dw('      <div align="center"><font size="2" face="Arial"><b><font color="#FFFFFF">LEVEL</font></b></font></div>');
dw('    </td>');
dw('    <td width="20%">');
dw('      <div align="center"><font size="2" face="Arial"><b><font color="#FFFFFF">Number ');
dw('        of downlines</font></b></font></div>');
dw('    </td>');
dw('    <td width="25%">');
dw('      <div align="center"><font size="2" face="Arial"><b><font color="#FFFFFF">Percentage ');
dw('        of commission</font></b></font></div>');
dw('    </td>');
dw('    <td width="20%">');
dw('      <div align="center"><font size="2" face="Arial"><b><font color="#FFFFFF">Cost ');
dw('        of the<br>product</font></b></font></div>');
dw('    </td>');
dw('    <td width="25%">');
dw('      <div align="center"><font size="2" face="Arial"><b><font color="#FFFFFF">Money ');
dw('        earned<br>from each level</font></b></font></div>');
dw('    </td>');
dw('  </tr>');

dw('  <tr>');
dw('    <td width="10%">');
dw('      <div align="center"><font color="#003366">1st</font></div>');
dw('    </td>');
dw('    <td width="20%">');
dw('      <div align="center">');
dw('        <input type="text" name="txtDownlinesLevel1" size="5" value="5">');
dw('      </div>');
dw('    </td>');
dw('    <td width="25%">');
dw('      <div align="center">');
dw('        <input type="text" name="txtCRateLevel1" size="5" value="20">');
dw('        <font face="Arial" size="3" color="#FF0000"><b>%</b></font></div>');
dw('    </td>');
dw('    <td width="20%">');
dw('      <div align="center"> <font face="Arial" size="3" color="#FF0000"><b>$ </b></font>');
dw('        <input type="text" name="txtEBookCostLevel1" size="5" value="39.95">');
dw('      </div>');
dw('    </td>');
dw('    <td width="25%">');
dw('      <div align="center"><font face="Arial" size="3" color="#FF0000"><b>$ </b></font>');
dw('        <input type="text" name="txtCommissionLevel1" size="5" value="39.95">');
dw('      </div>');
dw('    </td>');
dw('  </tr>');
dw('  <tr bgcolor="#FFFFCC">');
dw('    <td width="10%" height="25">');
dw('      <div align="center"><font color="#003366">2nd</font></div>');
dw('    </td>');
dw('    <td width="20%" height="25">');
dw('      <div align="center">');
dw('        <input type="text" name="txtDownlinesLevel2" size="5" value="25">');
dw('      </div>');
dw('    </td>');
dw('    <td width="25%" height="25">');
dw('      <div align="center">');
dw('        <input type="text" name="txtCRateLevel2" size="5" value="10">');
dw('        <font face="Arial" size="3" color="#FF0000"><b>%</b></font></div>');
dw('    </td>');
dw('    <td width="20%" height="25">');
dw('      <div align="center"><font face="Arial" size="3" color="#FF0000"><b>$ </b></font>'); 
dw('        <input type="text" name="txtEBookCostLevel2" size="5" value="39.95">');
dw('      </div>');
dw('    </td>');
dw('    <td width="25%" height="25">'); 
dw('      <div align="center"><font face="Arial" size="3" color="#FF0000"><b>$ </b></font>'); 
dw('        <input type="text" name="txtCommissionLevel2" size="5" value="99.88">');
dw('      </div>');
dw('    </td>');
dw('  </tr>');
dw('  <tr>');
dw('    <td width="10%">');
dw('      <div align="center"><font color="#003366">3rd</font></div>');
dw('    </td>');
dw('    <td width="20%">');
dw('      <div align="center">');
dw('        <input type="text" name="txtDownlinesLevel3" size="5" value="125">');
dw('      </div>');
dw('    </td>');
dw('    <td width="25%">');
dw('      <div align="center">');
dw('        <input type="text" name="txtCRateLevel3" size="5" value="5">');
dw('        <font face="Arial" size="3" color="#FF0000"><b>%</b></font></div>');
dw('    </td>');
dw('    <td width="20%">');
dw('      <div align="center"><font face="Arial" size="3" color="#FF0000"><b>$ </b></font>');
dw('        <input type="text" name="txtEBookCostLevel3" size="5" value="39.95">');
dw('      </div>');
dw('    </td>');
dw('    <td width="25%">');
dw('      <div align="center"><font face="Arial" size="3" color="#FF0000"><b>$ </b></font>');
dw('        <input type="text" name="txtCommissionLevel3" size="5" value="249.69">');
dw('      </div>');
dw('    </td>');
dw('  </tr>');
dw('  <tr bgcolor="#FFFFCC">');
dw('    <td width="10%">');
dw('      <div align="center"><font color="#003366">4th</font></div>');
dw('    </td>');
dw('    <td width="20%">');
dw('      <div align="center">'); 
dw('        <input type="text" name="txtDownlinesLevel4" size="5" value="625">');
dw('      </div>');
dw('    </td>');
dw('    <td width="25%">'); 
dw('      <div align="center">'); 
dw('        <input type="text" name="txtCRateLevel4" size="5" value="5">');
dw('        <font face="Arial" size="3" color="#FF0000"><b>%</b></font></div>');
dw('    </td>');
dw('    <td width="20%">'); 
dw('      <div align="center"><font face="Arial" size="3" color="#FF0000"><b>$ </b></font>'); 
dw('        <input type="text" name="txtEBookCostLevel4" size="5" value="39.95">');
dw('      </div>');
dw('    </td>');
dw('    <td width="25%">'); 
dw('      <div align="center"><font face="Arial" size="3" color="#FF0000"><b>$ </b></font>'); 
dw('        <input type="text" name="txtCommissionLevel4" size="5" value="1248.44">');
dw('      </div>');
dw('    </td>');
dw('  </tr>');
dw('  <tr>'); 
dw('    <td width="10%">'); 
dw('      <div align="center"><font color="#003366">5th</font></div>');
dw('    </td>');
dw('    <td width="20%">'); 
dw('      <div align="center">'); 
dw('        <input type="text" name="txtDownlinesLevel5" size="5" value="3125">');
dw('      </div>');
dw('    </td>');
dw('    <td width="25%">'); 
dw('      <div align="center">'); 
dw('        <input type="text" name="txtCRateLevel5" size="5" value="1">');
dw('        <font face="Arial" size="3" color="#FF0000"><b>%</b></font></div>');
dw('    </td>');
dw('    <td width="20%">'); 
dw('      <div align="center"><font face="Arial" size="3" color="#FF0000"><b>$ </b></font>'); 
dw('        <input type="text" name="txtEBookCostLevel5" size="5" value="39.95">');
dw('      </div>');
dw('    </td>');
dw('    <td width="25%">'); 
dw('      <div align="center"><font face="Arial" size="3" color="#FF0000"><b>$ </b></font>'); 
dw('        <input type="text" name="txtCommissionLevel5" size="5" value="1248.44">');
dw('      </div>');
dw('    </td>');
dw('  </tr>');
dw('  <tr bgcolor="#FFFFCC">'); 
dw('    <td width="10%">'); 
dw('      <div align="center"><font color="#003366">6th</font></div>');
dw('    </td>');
dw('    <td width="20%">'); 
dw('      <div align="center">'); 
dw('        <input type="text" name="txtDownlinesLevel6" size="5" value="3595">');
dw('      </div>');
dw('    </td>');
dw('    <td width="25%">'); 
dw('      <div align="center">');
dw('        <input type="text" name="txtCRateLevel6" size="5" value="1">');
dw('        <font face="Arial" size="3" color="#FF0000"><b>%</b></font></div>');
dw('    </td>');
dw('    <td width="20%">');
dw('      <div align="center"><font face="Arial" size="3" color="#FF0000"><b>$ </b></font>');
dw('        <input type="text" name="txtEBookCostLevel6" size="5" value="39.95">');
dw('      </div>');
dw('    </td>');
dw('    <td width="25%">');
dw('      <div align="center"><font face="Arial" size="3" color="#FF0000"><b>$ </b></font>');
dw('        <input type="text" name="txtCommissionLevel6" size="5" value="1436.20">');
dw('      </div>');
dw('    </td>');
dw('  </tr>');
dw('  <tr bgcolor="#FFFFFF">');
dw('    <td width="10%">');
dw('      <div align="center"><font color="#003366">7th</font></div>');
dw('    </td>');
dw('    <td width="20%">');
dw('      <div align="center">');
dw('        <input type="text" name="txtDownlinesLevel7" size="5" value="0">');
dw('      </div>');
dw('    </td>');
dw('    <td width="25%">');
dw('      <div align="center">');
dw('        <input type="text" name="txtCRateLevel7" size="5" value="1">');
dw('        <font face="Arial" size="3" color="#FF0000"><b>%</b></font></div>');
dw('    </td>');
dw('    <td width="20%">');
dw('      <div align="center"><font face="Arial" size="3" color="#FF0000"><b>$ </b></font>');
dw('        <input type="text" name="txtEBookCostLevel7" size="5" value="39.95">');
dw('      </div>');
dw('    </td>');
dw('    <td width="25%">');
dw('      <div align="center"><font face="Arial" size="3" color="#FF0000"><b>$ </b></font>');
dw('        <input type="text" name="txtCommissionLevel7" size="5" value="0">');
dw('      </div>');
dw('    </td>');
dw('  </tr>');
dw('  <tr>');
dw('    <td colspan="5">');
dw('      <p><font color="#FF0000"><b><font size="2" face="Arial">As You Estimate ');
dw('        </font><font color="#FF0000"><b><font size="2" face="Arial">');
dw('        <input type="text" name="txtEstimatedPercentBottom" size="3" value="30">');
dw('        % of your downlines are going to buy a $ </font><font color="#FF0000"><b><font color="#FF0000"><b><font size="2" face="Arial">');
dw('        <input type="text" name="txtEBookCostBottom" size="4" value="39.95">');
dw('        </font></b></font></b></font><font face="Arial" size="2">product</font></b></font></b></font></p>');
dw('      <p><font color="#FF0000"><b><font size="2" face="Arial">Your Estimated Commission ');
dw('        is : $ ');
dw('        <input type="text" name="txtCommissionTotal" size="15" value="1296.78">');
dw('        </font></b></font></p>');
dw('    </td>');
dw('  </tr>');
dw('</table>');

dw('</form>');

