// Calculate Functions: to calcule the saving over traditional credit card and pay pal
// autor: Yamir Ortega
// copyright mycropay 2005 

function performCalculate() {
	clearFields();
	
	if ( validate( document.form1.saleAmount, 'Sale Amount', 0.25, 99999.99 ) &&
		 validate( document.form1.discountRateTCC, 'Discount Rate', 0.1, 99 ) &&
		 validate( document.form1.transactionFeeTCC, 'Transaction Fee', 0, 99 ) ) {
		calculate();
		return true;
	}
  return false;
}

function validate( field, name, minValue, maxValue ) {
   message = "Invalid "+ name +", please enter a valid number";
   i = 0;
   
   vfield = field.value;
   
   if ( vfield.length == 0 ) {
	   alert( "The field " + name + " needs a value");
	   field.focus();
	   return false;
   }
   
   numbers = "0123456789";
   
   if ( numbers.indexOf( vfield.charAt(i) ) < 0 ) {
      alert(message);
	  field.focus();
	  return false;
   }
   
   while ( numbers.indexOf( vfield.charAt(i) ) >= 0 && i < vfield.length ) i++;
   
   if ( i < vfield.length ) {
	   if ( vfield.charAt(i) == '.' ) {
	      i++;
		  while ( numbers.indexOf( vfield.charAt(i) ) >= 0 && i < vfield.length ) i++;
		   if ( i < vfield.length ) {
             alert( message );
			 field.focus();
			 return false;
		   }
	   }
	   else {
	     alert( message );
		 field.focus();
		 return false;
	   }
   }
   
    if ( (vfield >= minValue && vfield <= maxValue) == false ) {
		field.focus();
	    alert( name + ': value out of range [ ' +  minValue + '-' + maxValue +  ' ]');
		return false;
	}
   
   return true;
}

function addCommas(nStr)
{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}

function clearFields() {
   document.form1.outPercentTCC.value = '0.00';
   document.form1.outPercentPP.value = '0.00';
   document.form1.outPercentMP.value = '0.00';      
   
   document.form1.outSavingOverTCC.value = '0.00';
   document.form1.outSavingOverPP.value = '0.00';

   document.form1.outAmount.value = '0.00';
   document.form1.outProcessingFeeTCC.value = '0.000';
   document.form1.outProcessingFeePP.value = '0.000';
   document.form1.outProcessingFeeMP.value = '0.000';      
}

function calculate() {
   var xsaleAmount = document.form1.saleAmount.value;
   var xdiscountRateTCC = eval(document.form1.discountRateTCC.value)/100;
   var xtransactionFeeTCC = eval(document.form1.transactionFeeTCC.value);
     
   var xprocessingFeeTCC = 0;
   var xpercentTCC = 0;
   
   var xdiscountRatePP = 5/100;
   var xtransactionFeePP = 0.050;
   var xprocessingFeePP = 0;
   var xpercentPP = 0;
   
   var xdiscountRateMP = 0.95/100;
   var xtransactionFeeMP = 0.050;
   var xprocessingFeeMP = 0;
   var xpercentMP = 0;
   
   var xsavingOverTCC = 0;
   var xsavingOverPP = 0;
   
   if ( document.form1.saleAmount.value.length > 0 && document.form1.saleAmount.value > 0 ) {
       xprocessingFeeTCC = xsaleAmount*xdiscountRateTCC + xtransactionFeeTCC;
	   xprocessingFeePP = xsaleAmount*xdiscountRatePP + xtransactionFeePP;
	   xprocessingFeeMP = xsaleAmount*xdiscountRateMP + xtransactionFeeMP;
	   
	   xpercentTCC = xprocessingFeeTCC / xsaleAmount;
	   xpercentPP = xprocessingFeePP / xsaleAmount;
	   xpercentMP = xprocessingFeeMP / xsaleAmount;
	   
	   xsavingOverTCC = 1 - ( xprocessingFeeMP / xprocessingFeeTCC );
	   xsavingOverPP = 1 - ( xprocessingFeeMP / xprocessingFeePP );
   }
   
   document.form1.outAmount.value = addCommas(xsaleAmount);
   document.form1.outProcessingFeeTCC.value = addCommas( xprocessingFeeTCC.toFixed(3));
   document.form1.outProcessingFeePP.value = addCommas( xprocessingFeePP.toFixed(3));
   document.form1.outProcessingFeeMP.value = addCommas( xprocessingFeeMP.toFixed(3));      
   
   xpercentTCC = xpercentTCC*100;
   xpercentPP = xpercentPP*100;
   xpercentMP = xpercentMP*100;
   
   xsavingOverTCC = xsavingOverTCC*100;
   xsavingOverPP = xsavingOverPP * 100;

   document.form1.outPercentTCC.value = xpercentTCC.toFixed(2)+'%';
   document.form1.outPercentPP.value = xpercentPP.toFixed(2)+'%';
   document.form1.outPercentMP.value = xpercentMP.toFixed(2)+'%';      
   
   document.form1.outSavingOverTCC.value = xsavingOverTCC.toFixed(2)+'%';
   document.form1.outSavingOverPP.value = xsavingOverPP.toFixed(2)+'%';
}
