
var qty=1;
var metal='Stainless';
var silencer='none';
var chains='none';
var other='none';
var lines=5;
var total=0;
var one=3;
var reg=3;
var disc=0;

var tagQty='1';
var Metal='0.00';
var Silencer='0.00';
var Chains='0.00';
var Lines='0.00';
var Other='0.00';
var Total='0.00';
var sub='';

var regMetal='0.00';
var regSilencer='0.00';
var regChains='0.00';
var regLines='0.00';
var regOther='0.00';
var regTotal='0.00';
var Savings='0.00';

var limit = 49;
var note='';
var qty1=1;

function pleaseWait(pw) {
  if (pw == 'on') { 
    document.getElementById('tag-total').innerHTML = '';
    document.getElementById('pleasewait').innerHTML = '<font color=red><b>Please<br>Wait...</b></font>';
  } else { 
    document.getElementById('pleasewait').innerHTML = '';
    document.getElementById('tag-total').innerHTML = totalStr;
  }
}

function moneyOf(val) {
  var val = Number(trimOf(val)+'');
  if (val == 'NaN') { val=0; }
  val ='0' + (Math.round(val*100)/100);
  var dot = val.indexOf('.'); 
  if (dot<0) { 
    if (val == 'NaN') { val='0'; }
    return Number(val) + '.00';
  } else {
    var dols = Number(val.substr(0,dot)) + '';
    if (dols == 'NaN') { dols='0'; } 
    var cnts = Number(val.substr(dot+1,2))+ '';
    if (cnts == 'NaN') { return dols + '.00'; }
    if (cnts*1<10) { cnts = cnts*1+'0'; } 
    return dols + '.' + cnts;
  }
}

function trimOf(str) {
  var str=str + ' ';
  return str.replace(/^\s+|\s+$/g,""); 
}

function integerOf(val) {
  var val=Number(val);
  if (isNaN(val)) { val=0; }
  if (val <= 0) { val=0; } 
  return parseInt(val);
}

function qtyDisc(one,dupe,min,qty) {
  var one = moneyOf(one)*1;
  var qty = Number(qty);
  if (qty > 1) { 
    var extra = qty - 1;
    var diff = (dupe-min) + (one/limit);
    var disc = extra * diff / limit;
    if (qty==2) { 
      return one*1+extra*dupe;
    } else { 
      return one + ( extra * (dupe-disc) );       
    }
  } else { return one; }
}

function metalCalc(metal,qty) {
  var qty = Number(qty);
  var metal=trimOf(metal);
  if (metal.match(/^S/i)) { 
    var dupe = 3;
    one = 7.00; 
  } else { 
    var dupe = 3;
    one = 8.00;
  }
  if (metal.match(/^A/i)) { 
    dupe = 3;
    one = 7.00;
  }
  var extra = qty - 1;
  var min  = .45;
  var m=Metal = qtyDisc(one,dupe,min,limit);
  if (qty>1) { 
    Metal = qtyDisc(one,dupe,min,qty);
    if ((Metal/qty)<min) { Metal = min * qty; }    // fixed discount table:
    if (qty>100) { Metal=(min - .05) * qty; }
    if (qty>200) { Metal=(min - .10) * qty; }
    if (qty>300) { Metal=(min - .15) * qty; }
    if (qty>400) { Metal=(min - .20) * qty; }
    if (qty>500) { Metal=(min - .25) * qty; }
  } else { 
    Metal = one;
  }
  if ((Metal/qty)<min && qty<limit) { 
    var sub=(Metal-(min*qty));
    Metal=Metal-sub;
  }
  Metal    = moneyOf(Metal);
  regMetal = one + ( extra *  dupe );
  regMetal = moneyOf(regMetal);
  return Metal
}

function metalMoney() {
  sub='metal';
  qty=document.tagCalc.qty.value;
  tagQty  = integerOf(qty)*1;
  metal=trimOf(document.tagCalc.metal.value);
  Metal=metalCalc(metal,qty);
  totalMoney(); 
  var metalStr = tagQty + "&nbsp;=&nbsp;" + Metal + "<br>[&nbsp;" + moneyOf(Metal/tagQty) + "&nbsp;ea&nbsp;]"; 
  document.getElementById('tag-metal').innerHTML = metalStr;
}

function otherCalc(other,qty) { 
  var qty = Number(qty);
  disc = 0;
  Other=0;
  if (other.match(/2/))    { Other = qty * 1; }           // add 1.00 per tag for 2-holes
  if (other.match(/med/i)) { Other = qty * 3; }           // add 3.00 per tag for med-sym
  Other=moneyOf(Other);
  regOther=Other;
  return Other;
}
function otherMoney() {
  pleaseWait('on');
  sub='other'; 
  qty=document.tagCalc.qty.value;
  other=trimOf(document.tagCalc.other.value);
  Other=otherCalc(other,qty);
  totalMoney(); 
  tagQty  = integerOf(qty)*1;
  var otherStr = tagQty + "&nbsp;=&nbsp;" + Other + "<br>[&nbsp;" + moneyOf((Other+0)/tagQty) + "&nbsp;ea&nbsp;]";
  document.getElementById('tag-other').innerHTML = otherStr;
}

function linesCalc(lines,qty) {
  var lines=Number(lines);
  var qty = Number(qty);
  var reg = .10;
  var sixth=0;
  if (lines<1) { lines = 1; }
  if (lines>5) { lines = 5; sixth=1;} 
  Lines = qty * lines * reg;                //  .10 per line
  Lines += sixth*qty;                       // 1.00 per 6th line
  Lines=moneyOf('0'+Lines);
  regLines=Lines;
  return Lines;
}

function linesMoney() {
  pleaseWait('on');
  sub='lines';
  qty=document.tagCalc.qty.value;
  tagQty  = Number(qty);
  lines = Number(document.tagCalc.lines.value);
  Lines=linesCalc(lines,qty);
  totalMoney();
  var linesStr = tagQty + "&nbsp;=&nbsp;" + Lines + "<br>[&nbsp;" + moneyOf((Lines+0)/tagQty) + "&nbsp;ea&nbsp;]"; 
  document.getElementById('tag-lines').innerHTML = linesStr;
}

function silencerCalc(silencer,qty) {
  var qty = Number(qty);
  var extra = qty - 1;
  var one  = 1;
  var dupe = 1
  var min = .25;
  if (silencer != 'none') { 
    Silencer   = qtyDisc(one,dupe,min,qty);
    regSilencer= one + (extra * one);
    if (Silencer/qty<min) { Silencer = min * qty; }
  } else { Silencer=0; regSilencer=0; }
  Silencer=moneyOf(Silencer);
  regSilencer=moneyOf(regSilencer);
  return Silencer;
}

function silencerMoney() {
  pleaseWait('on');
  sub='silencer';
  qty=document.tagCalc.qty.value;
  tagQty  = Math.floor(qty);
  silencer= trimOf(document.tagCalc.silencer.value);
  Silencer=silencerCalc(silencer,tagQty);
  totalMoney(); 
  var silencerStr = tagQty + "&nbsp;=&nbsp;" + Silencer + "<br>[&nbsp;" + moneyOf((Silencer+0)/tagQty) + "&nbsp;ea&nbsp;]"; 
  document.getElementById('tag-silencer').innerHTML = silencerStr;
}

function fixChainsQty(qty) {
  var qty1  = integerOf(qty)*1;
  if ( chains.indexOf('and')>0 ) {  
    if ( qty1*1 > 1) { 
      qty1 = qty1 / 2;
      note="2";
    } else { note=''; }
  } 
  return qty1*1; 
}
function chainsCalc(chains,qty1) {
  if (chains == 'none') { 
    regChains='0.00';
    Chains='0.00';
    return Chains;
  }
  qty1  = integerOf(qty1)*1;
  var C1=0;
  var C2=0;
  var R1=0;
  var R2=0;

  var extra = qty1 - 1;
  var reg1 = 1.00;
  var min1 =  .40;
  var disc1 = qtyDisc(reg1,reg1,min1,qty1);
  // reg1 - (extra * (reg1 - min1)/limit);   // limit @ 50
  var reg2 = .50;
  var min2 = .25;
  var disc2 = qtyDisc(reg2,reg2,min2,qty1);
//  var disc2 = reg2 - (extra * (reg2 - min2)/limit);   // limit @ 50

  if (chains.indexOf('24')>0) {
    if (extra > 0) { 
      C1 = disc1 ;            // 1.00 per long chain, discount factor = 1/80
      R1 = reg1 + ( extra * reg1  );
      if ( C1/qty1 < .40 ) { C1 = .40  * qty1; }   // limit to .40 per
    } else { C1 = reg1; R1 = reg1; } 
  }
  if (chains.indexOf('4.5')) { 
    if (extra > 0) { 
      C2 = disc2;         // .50 per short chain, discount factor = 1/195
      R2 = reg2 + ( extra * reg2  );
      if ( C2/qty1 < .25) { C2 = .25 * qty1; }     // limit to .25 per
    } else { C2 = reg2; R2 = reg2; }
  } 
//  alert('extra: ' + Number(extra) + ' C1: ' + Number(C1) + ' C2: ' + Number(C2) + '\n' + 'R1: ' + Number(R1) + ' R2: ' + Number(R2));

  regChains= moneyOf(R1*1 + R2*1);
  Chains=moneyOf(C1*1 + C2*1);
  return Chains;
}

function chainsMoney() {
  pleaseWait('on');
  sub='chains';
  chains=document.tagCalc.chains.value;
  tagQty =document.tagCalc.qty.value;
  qty1 = tagQty*1;
  qty1=fixChainsQty(qty1)*1;
  Chains=chainsCalc(chains,qty1);
  totalMoney(); 
  var chainsStr= qty1 + '&nbsp;=&nbsp;' + Chains + '<br>[&nbsp;' + moneyOf(Chains/qty1) + '&nbsp;' + note + 'ea&nbsp;]'; 
  document.getElementById('tag-chains').innerHTML = chainsStr;
  document.tagCalc.chains.value=chains;
}

function totalCalc(chains,silencer,other,lines,metal,qty) {
  Metal    = metalCalc(metal,qty)
  Lines    = linesCalc(lines,qty)
  Other    = otherCalc(other,qty)
  Chains   = chainsCalc(chains,qty)
  Silencer = silencerCalc(silencer,qty)
  Total    = moneyOf( Chains*1 + Silencer*1 + Other*1 + Lines*1 + Metal*1 );
  regTotal = moneyOf( regChains*1 + regSilencer*1 + regOther*1 + regLines*1 + regMetal*1 );
  var string = qty+'|'+metal+'|'+lines+'|'+other+'|'+silencer+'|'+chains;
  return Total;
}

function totalMoney() {
  sub='total';
  qty=document.tagCalc.qty.value;
  var saveStr = 'Buying more than one will always save you money.&nbsp; Duplicates start at $3.00 each.'; 
  var msg='';
  if (qty>=1000) { 
    msg += '<b><i><font color=red>If you really want to buy a 1000 or more, please call us @ 928.754.1184 for a special price.</font></i></b><br>'; 
    qty=1000;
  } 
  tagQty  = Math.floor(qty)*1;
  document.tagCalc.qty.value=tagQty;
  Total    = moneyOf( Chains*1 + Silencer*1 + Other*1 + Lines*1 + Metal*1 );
  regTotal = moneyOf( regChains*1 + regSilencer*1 + regOther*1 + regLines*1 + regMetal*1 );
  totalStr = tagQty*1 + '&nbsp;Kit(s)&nbsp;=&nbsp;' + Total + '<br>[&nbsp;' + moneyOf((Total*1)/tagQty*1) + '&nbsp;ea&nbsp;]'; 
  var Savings= moneyOf(moneyOf(regTotal)*1-moneyOf(Total)*1);
//  alert( 'regular: ' + regTotal + ' - total: ' + Total + ' = ' + savings);
  document.getElementById('tag-total').innerHTML = totalStr;
  if (tagQty * 1 > 1) {
    saveStr  = msg + 'Regular:&nbsp;<b>' + tagQty + '&nbsp;Kit(s)&nbsp;=&nbsp;' +regMetal + '&nbsp;+&nbsp;' ;
    saveStr += regLines + '&nbsp;+&nbsp;' + regOther + '&nbsp;+&nbsp;' + regSilencer + '&nbsp;+&nbsp;' ;
    saveStr += regChains + '&nbsp;=&nbsp;' + regTotal + '&nbsp;[&nbsp;' + moneyOf((regTotal*1)/tagQty) ;
    saveStr += '&nbsp;ea&nbsp;]&nbsp;-&nbsp;<font color=red>Volume&nbsp;Savings:&nbsp;' + Savings + '&nbsp;</font></b>'; 
  }
  document.getElementById('reg-total').innerHTML = saveStr;
  document.getElementById('limit').innerHTML = '- (<b>' + 1*limit + '</b>)';
  pleaseWait('off');
}

