// JavaScript Document
// defining arrays

var nextstep = 0;

var payTable = new Array();
payTable = new Array();
for (i=0;i<8;i++)
payTable[i] = new Array();

payTable[0][0] = 585;
payTable[0][1] = 476.67;
payTable[0][2] = 450;
payTable[0][3] = 455;

payTable[1][0] = 33.48;
payTable[1][1] = 26.27;
payTable[1][2] = 26.08;
payTable[1][3] = 27.12;

payTable[2][0] = 32.58;
payTable[2][1] = 26.21;
payTable[2][2] = 25.4;
payTable[2][3] = 26.05;

payTable[3][0] = 32.05;
payTable[3][1] = 26.16;
payTable[3][2] = 25.08;
payTable[3][3] = 25.96;

payTable[4][0] = 31.51;
payTable[4][1] = 26.11;
payTable[4][2] = 24.97;
payTable[4][3] = 25.84;

payTable[5][0] = 28.45;
payTable[5][1] = 24.72;
payTable[5][2] = 23.97;
payTable[5][3] = 24.1;

payTable[6][0] = 17.07;
payTable[6][1] = 16.32;
payTable[6][2] = 13.74;
payTable[6][3] = 14.24;

payTable[7][0] = 16.85;
payTable[7][1] = 16.32;
payTable[7][2] = 13.64;
payTable[7][3] = 14.02;


var wcPerEE = new Array();
wcPerEE = new Array();
wcPerEE[0] = new Array();

wcPerEE[0][0] = 26;
wcPerEE[0][1] = 24;
wcPerEE[0][2] = 13;
wcPerEE[0][3] = 6;

//debug
var tt = new Array();
var ct=0;
// other variables

var pricingSum;
var EEcount;
var thisPrice;
var payFrequency;
var thisPayFreq;
var test;
var runningCount;
var option401k;
var optionFSA;
var optionWC;
var sumHR;

var fourOoneKbase = 125;
var fouOoneKadd = 4.5;
var minEE401K = 10;
var fsaBase = 110;
var fsaAdd = 2.69
var minEEFSA = 10;
var sumOS;
var ok = true;


function pload()
{
	var w = document.getElementById("results");
	w.style.display = "none";
}


function percent(x) { return Math.round((x-0)*100) + '%'; }

function Recalculate()
{
	document.getElementById("result").style.display = "none";
	document.getElementById("input").style.display = "";
}

function  checkInput()
{
	var x=document.getElementById("roi");
	var employeenumber = x.eec.value;
	var payfreq = x.pf.value;
	var hrprof = x.h02.value;
	var emprel = x.h12.value;
	var emph = x.h22.value;
	var btr = x.h32.value;
	var web = x.h42.value;
	var sft = x.r1.value;
	var pay = x.p1.value;
	var psw = x.p2.value;
	var adm = x.k1.value;
	var fsa = x.f1.value;
	var wco = x.w1.value;
	
	var ok = true;
	
	var optionError = false;
	var coreError = false;
	var topError = false;
	var scrollPosition = 1500;
	
	
	// alert(x.txt_eec.style.color);
	//set default value
	x.eec.className = "noErrorBox"; //change bgcolor on the input class (linked to css)on error;
	x.w1.className = "noErrorBox"; 
	x.f1.className = "noErrorBox";//change bgcolor back to white in the input box class (linked to css)on no error;
	x.k1.className = "noErrorBox";
	x.p2.className = "noErrorBox";
	x.p1.className = "noErrorBox";
	x.r1.className = "noErrorBox";
	x.h42.className = "noErrorBox";
	x.h32.className = "noErrorBox";
	x.h22.className = "noErrorBox";
	x.h12.className = "noErrorBox";
	x.h02.className = "noErrorBox";
	x.pf.className = "noErrorBox";
	
	Ttxt_eec = document.getElementById("txt_eec");
	Ttxt_wc = document.getElementById("txt_wc");
	Ttxt_fsa = document.getElementById("txt_fsa");
	Ttxt_401 = document.getElementById("txt_401");
	Ttxt_ps = document.getElementById("txt_ps");
	Ttxt_pay = document.getElementById("txt_pay");
	Ttxt_sf = document.getElementById("txt_sf");
	Ttxt_wb = document.getElementById("txt_wb");
	Ttxt_bt = document.getElementById("txt_bt");
	Ttxt_eh = document.getElementById("txt_eh");
	Ttxt_rc = document.getElementById("txt_rc");
	Ttxt_pf = document.getElementById("txt_pf");
	
	
	Ttxt_eec.style.color = "#000000";
	Ttxt_wc.style.color = "#000000";
	Ttxt_fsa.style.color = "#000000";
	Ttxt_401.style.color = "#000000";
	Ttxt_ps.style.color = "#000000";
	Ttxt_pay.style.color = "#000000";
	Ttxt_sf.style.color = "#000000";
	Ttxt_wb.style.color = "#000000";
	Ttxt_bt.style.color = "#000000";
	Ttxt_eh.style.color = "#000000";
	Ttxt_rc.style.color = "#000000";
	Ttxt_pf.style.color = "#000000";




	
	
	//check Option services value
	 if (wco =="")
	{			
		TxtError = document.getElementById("txt_wc");
		TxtError.style.color = "#FF0000";
		x.w1.className = "ErrorBox";
	    x.ertextcolor;
		optionError =  true;
	}
	else if(isNaN(wco)) 
	{                               
		TxtError = document.getElementById("txt_wc");
		TxtError.style.color = "#FF0000";
		x.w1.className = "ErrorBox";
	    x.ertextcolor;              
		optionError =  true;
	}
	if (fsa =="")
	{			
	    TxtError = document.getElementById("txt_fsa");
		TxtError.style.color = "#FF0000";
		x.f1.className = "ErrorBox"; 
	    x.ertextcolor;
		optionError =  true;
	}
	else if(isNaN(fsa)) 
	{                                
		TxtError = document.getElementById("txt_fsa");
		TxtError.style.color = "#FF0000";
		x.f1.className = "ErrorBox";
	    x.ertextcolor;              
		optionError =  true;
	}
	if (adm =="")
	{			
		TxtError = document.getElementById("txt_401");
		TxtError.style.color = "#FF0000";
		x.k1.className = "ErrorBox"; 
	    x.ertextcolor;
		optionError =  true;
	}
	else if(isNaN(adm)) 
	{                                
		TxtError = document.getElementById("txt_401");
		TxtError.style.color = "#FF0000";
		x.k1.className = "ErrorBox";
	    x.ertextcolor;              
		optionError =  true;
	}
	//display error box for the option section
	if(optionError)
	{
		Toptionerror = document.getElementById("optionerror");
		TerrorImg3 = document.getElementById("errorImg3");
		Toptionerror.style.display = "";
		TerrorImg3.style.display = "";
		scrollPosition = 900
		ok = false;
	}
	else
	{
		Toptionerror = document.getElementById("optionerror");
		TerrorImg3 = document.getElementById("errorImg3");
		Toptionerror.style.display = "none";
		TerrorImg3.style.display = "none";
	}
	
	// section 2
	if (psw =="")
	{	
		TxtError = document.getElementById("txt_ps");
		TxtError.style.color = "#FF0000";
		x.p2.className = "ErrorBox"; 
	    x.ertextcolor;
		coreError = true;
	}
	else if(isNaN(psw)) 
	{                                 
		TxtError = document.getElementById("txt_ps");
		TxtError.style.color = "#FF0000";
		x.p2.className = "ErrorBox";
	    x.ertextcolor;              
		coreError = true;
	}
	if (pay =="")
	{			
	    TxtError = document.getElementById("txt_pay");
		TxtError.style.color = "#FF0000";
		x.p1.className = "ErrorBox"; 
	    x.ertextcolor;
		coreError = true;
	}
	else if(isNaN(pay)) 
	{                                 
		TxtError = document.getElementById("txt_pay");
		TxtError.style.color = "#FF0000";
		x.p1.className = "ErrorBox";
	    x.ertextcolor;              
		coreError = true;
	}
	if (sft =="")
	{			
	    TxtError = document.getElementById("txt_sf");
		TxtError.style.color = "#FF0000";
		x.r1.className = "ErrorBox"; 
	    x.ertextcolor;
		coreError = true;
	}
	else if(isNaN(sft)) 
	{                                  
		TxtError = document.getElementById("txt_sf");
		TxtError.style.color = "#FF0000";
		x.r1.className = "ErrorBox";
	    x.ertextcolor;              
		coreError = true;
	}
	if (web =="")
	{			
	    TxtError = document.getElementById("txt_wb");
		TxtError.style.color = "#FF0000";
		x.h42.className = "ErrorBox"; 
	    x.ertextcolor;
		coreError = true;
	}
	else if(isNaN(web)) 
	{
		TxtError = document.getElementById("txt_wb");
		TxtError.style.color = "#FF0000"; 
		x.h42.className = "ErrorBox";
	    x.ertextcolor;              
		coreError = true;
	}
	if (btr =="")
	{		
		TxtError = document.getElementById("txt_bt");
		TxtError.style.color = "#FF0000"; 
	    x.h32.className = "ErrorBox"; 
	    x.ertextcolor;
		coreError = true;
	}
	else if(isNaN(btr)) 
	{                    
		TxtError = document.getElementById("txt_bt");
		TxtError.style.color = "#FF0000"; 
		x.h32.className = "ErrorBox";
	    x.ertextcolor;              
		coreError = true;
	}
	if (emph =="")
	{	
		TxtError = document.getElementById("txt_eh");
		TxtError.style.color = "#FF0000"; 
	    x.h22.className = "ErrorBox";
	    x.ertextcolor;
		coreError = true;
	}
	else if(isNaN(emph)) 
	{                                  
		TxtError = document.getElementById("txt_eh");
		TxtError.style.color = "#FF0000"; 
		x.h22.className = "ErrorBox";
	    x.ertextcolor;              
		coreError = true;
	}
	 if (emprel =="")
	{	
		Ttxt_rc = document.getElementById("txt_rc");
		Ttxt_rc.style.color = "#FF0000"; 
	    x.h12.className = "ErrorBox"; 
	    x.ertextcolor;
		coreError = true;
	}
	else if(isNaN(emprel)) 
	{     
		TxtError = document.getElementById("txt_rc");
		TxtError.style.color = "#FF0000"; 
		x.h12.className = "ErrorBox";
	    x.ertextcolor;              
		coreError = true;
	}
	 if (hrprof =="")
	{	
		Ttxt_rc = document.getElementById("txt_hp");
		Ttxt_rc.style.color = "#FF0000"; 
	    x.h02.className = "ErrorBox"; 
	    x.ertextcolor;
		coreError = true;
	}
	else if(isNaN(hrprof)) 
	{     
		TxtError = document.getElementById("txt_hp");
		TxtError.style.color = "#FF0000"; 
		x.h02.className = "ErrorBox";
	    x.ertextcolor;              
		coreError = true;
	}
				
	if(coreError)
	{
		Ttoperror2 = document.getElementById("toperror2");
		TerrorImg2 = document.getElementById("errorImg2");
		Ttoperror2.style.display = "";
		TerrorImg2.style.display = "";
		ok = false;
		scrollPosition = 400
	}
	else
	{
		Ttoperror2 = document.getElementById("toperror2");
		TerrorImg2 = document.getElementById("errorImg2");
		Ttoperror2.style.display = "none";
		TerrorImg2.style.display = "none";
		
	}
	
	
	//check first one..
	if (employeenumber =="")
	{			
		Ttxt_eec = document.getElementById("txt_eec");
		Ttxt_eec.style.color = "#FF0000";
		x.eec.className = "ErrorBox"; 
		x.ertextcolor;
		ok = false;
		topError = true;
	}
	else if(isNaN(employeenumber)) 
	{     
		Ttxt_eec = document.getElementById("txt_eec");
		Ttxt_eec.style.color = "#FF0000";
	    x.eec.className = "ErrorBox";
	    x.ertextcolor;              
		ok = false;
		topError = true;
	}
	if (payfreq == 0)
	{
		Ttxt_pf = document.getElementById("txt_pf");
		Ttxt_pf.style.color = "#FF0000";
	    x.pf.className = "ErrorBox";
	    x.ertextcolor;
		ok = false;
		topError = true;
	}
	
		if(topError)
	{
		Ttoperror = document.getElementById("toperror");
		TerrorImg1 = document.getElementById("errorImg1");
		Ttoperror.style.display = "";
		TerrorImg1.style.display = "";
		ok = false;
		scrollPosition = 300;
	}
	else
	{
		Ttoperror = document.getElementById("toperror");
		TerrorImg1 = document.getElementById("errorImg1");
		Ttoperror.style.display = "none";
		TerrorImg1.style.display = "none";
	}
	
	self.scrollTo(0, scrollPosition)
	if (ok)
	{
			CalculateROI();
	}
	
}


function CalculateROI()
{
	var x=document.getElementById("roi");
	var y=document.getElementById("ans");
	var employeenumber = x.eec.value;
	var payfreq = x.pf.value;
	
	document.getElementById("results").style.display = "";
	document.getElementById("calROI").style.display = "none";		
	
	EEcount = x.eec.value;
	var Current = x.pf.selectedIndex;
  payFrequency = x.pf.options[Current].value;
	option401k = x.cb1.checked;
	optionFSA  = x.cb2.checked;
	optionWC   = x.cb3.checked;
	sumOS = 0;		

	thisPayFreq = payFrequency - 1

	if (EEcount < 11)
	{
	thisPrice = 1;
	}
	else if (EEcount >= 11 && EEcount < 26)
	{
	thisPrice = 2;
	}
	else if (EEcount >= 26 && EEcount < 51)
	{
	thisPrice = 3;
	}
	else if (EEcount >= 51 && EEcount < 76)
	{
	thisPrice = 4;
	}
	else if (EEcount >= 76 && EEcount < 126)
	{
	thisPrice = 5;
	}
	else if (EEcount >= 126 && EEcount < 251)
	{
	thisPrice = 6;
	}
	else if (EEcount >= 251)
	{
	thisPrice = 7;
	}

	if (thisPrice ==1)
		pricingSum = payTable[0][thisPayFreq] + (EEcount * payTable[thisPrice][thisPayFreq]);		
	else
	{
		runningCount = EEcount;
		pricingSum = payTable[0][thisPayFreq];
		
	//	// create loop.
		do {
			pricingSum = pricingSum +( 10 *  payTable[1][thisPayFreq]);
			runningCount = runningCount -10;
			tt[ct] = pricingSum;
			if (runningCount <= 0 )
				break;
			ct++;	
			if ((runningCount - 15)  < 0 )
			{
				pricingSum = pricingSum + ( runningCount *  payTable[2][thisPayFreq]);
				break;
			}
			else
			{
				pricingSum = pricingSum +( 15 *  payTable[2][thisPayFreq]);
				runningCount = runningCount - 15;
				
				if ((runningCount - 25)  < 0 )
				{
					pricingSum = pricingSum + ( runningCount *  payTable[3][thisPayFreq]);
				break;
				}
				else
				{
					pricingSum = pricingSum +( 25 *  payTable[3][thisPayFreq]);
					runningCount = runningCount - 25;
				}
				
				if ((runningCount - 25)  < 0 )
				{
					pricingSum = pricingSum + ( runningCount *  payTable[4][thisPayFreq]);
				break;
				}
				else
				{
					pricingSum = pricingSum +( 25 *  payTable[4][thisPayFreq]);
					runningCount = runningCount - 25;
				}
				
				if ((runningCount - 50)  < 0 )
				{
					pricingSum = pricingSum + ( runningCount *  payTable[5][thisPayFreq]);
					break;
				}
				else
				{
					pricingSum = pricingSum +( 50 *  payTable[5][thisPayFreq]);
					runningCount = runningCount - 50;
				}
				
				if ((runningCount - 125)  < 0 )
				{
					pricingSum = pricingSum + ( runningCount *  payTable[6][thisPayFreq]);
				break;
				}
				else
				{
					pricingSum = pricingSum +( 125 *  payTable[6][thisPayFreq]);
					runningCount = runningCount - 125;
				}
				
				if (runningCount > 0 )
				{
					pricingSum = pricingSum + ( runningCount *  payTable[7][thisPayFreq]);
				break;
				}
				
			}
				
			
		} while (true)
	}

	if (option401k)
	{
		pricingSum = pricingSum + fourOoneKbase;
		if (EEcount > minEE401K)
		{
			optCount = EEcount - minEE401K;
			pricingSum = pricingSum + ( optCount *  fouOoneKadd);
			optCount = 0;
		}
		
	}
	
	
	if (optionFSA)
	{
		pricingSum = pricingSum + fsaBase;
		if (EEcount > minEEFSA)
		{
			optCount = EEcount - minEEFSA;
			pricingSum = pricingSum + ( optCount *  fsaAdd);
			optCount = 0;
		}
		
	}
	
	if (optionWC)
	{
		pricingSum = pricingSum + wcPerEE[0][thisPayFreq] ;	
	}


	
	sumHR= parseFloat(x.h02.value) + parseFloat(x.h12.value) + parseFloat(x.h22.value) + parseFloat(x.h32.value) + parseFloat(x.h42.value) + parseFloat(x.r1.value) + parseFloat(x.p1.value) + parseFloat(x.p2.value); 
	
	if (option401k)
	{
		sumOS = sumOS + parseFloat(x.k1.value);
	}
	if (optionFSA)
	{
		sumOS = sumOS + parseFloat(x.f1.value);
	}
	if (optionWC)
	{
		sumOS = sumOS + parseFloat(x.w1.value);
	}
	// fill the result box
	
	// Market Cost
	x.MontlyCostEE4.value = formatCurrency(outputMoney(parseInt(sumHR + sumOS))) ;
	x.MontlyCostEE3.value = formatCurrency(outputMoney(parseInt((sumHR + sumOS)/ EEcount))) ;
	x.MontlyCostEE2.value = formatCurrency(outputMoney(parseInt((sumHR + sumOS) /12))) ;
	x.MontlyCostEE.value = formatCurrency(outputMoney(parseInt(((sumHR + sumOS) /12) / EEcount )));

  // w/ADP resouce
	x.MontlyCostEE5.value = formatCurrency(outputMoney(parseInt(pricingSum * 12))) ;
	x.MontlyCostEE6.value = formatCurrency(outputMoney(parseInt((pricingSum * 12) / EEcount))) ;
	x.MontlyCostEE7.value = formatCurrency(outputMoney(parseInt(pricingSum))) ;
	x.MontlyCostEE8.value = formatCurrency(outputMoney(parseInt(pricingSum / EEcount )));

	//x.TotalOptionalAnnual.value = sumOS.toFixed(2) ;
	//x.totalAnnual.value = (sumHR + sumOS).toFixed(2) ;
	x.ROI.value= percent(((sumHR + sumOS) / (pricingSum * 12)) );
}

function formatCurrency(obj)
{
	var dollars;
	
	dollars = "$ " + obj;
	return dollars;
}

function resetValues()
{
	var z=document.getElementById("roi");
	
	
	z.cb1.checked= true;
	z.cb2.checked = true;
	z.cb3.checked  = true;
  	z.pf.selectedIndex = 0;
  	z.eec.value = "";
	z.h12.value = 5800;
	z.h22.value = 3500;
	z.h32.value = 800;
	z.h42.value = 25000;
	z.r1.value = 59000;
	z.p1.value = 2750 ;
	z.p2.value = 5000 ;
	z.k1.value = 4500;
	z.f1.value = 1920;
	z.w1.value = 362;
	
	document.getElementById("results").style.display = "none";
	document.getElementById("calROI").style.display = "";

	z.eec.focus();
	
}



function outputMoney(number) {
    return outputDollars(Math.floor(number-0) + '');
}

function outputDollars(number) {
    if (number.length <= 3)
        return (number == '' ? '0' : number);
    else {
        var mod = number.length%3;
        var output = (mod == 0 ? '' : (number.substring(0,mod)));
        for (i=0 ; i < Math.floor(number.length/3) ; i++) {
            if ((mod ==0) && (i ==0))
                output+= number.substring(mod+3*i,mod+3*i+3);
            else
                output+= ',' + number.substring(mod+3*i,mod+3*i+3);
        }
        return (output);
    }
}

