//Global Vars
//Department Selection Drop down
var depts = new Array();	
depts[0] = new Array("Manufacturing and Production", 7.2, true);
depts[1] = new Array("Agriculture and Forestry", 5.0, false);
depts[2] = new Array("Electricity, gas and water" ,5.1 ,false);
depts[3] = new Array("Engineering, electronics & metals",6.0  ,false);
depts[4] = new Array("Food, drink and tobacco" ,8.4 , false);
depts[5] = new Array("General manufacturing" ,8.1,  false);
depts[6] = new Array("Paper and printing", 6.9 , false);
depts[7] = new Array("Textiles" ,5.7 ,false );
depts[8] = new Array("Other manufacturing/production" ,7.3 ,false);

depts[9] = new Array("Private sector services", 7.2  ,true);
depts[10] = new Array("Professional services", 6.5  ,false);
depts[11] = new Array("Financial services and real estate", 6.7   ,false);
depts[12] = new Array("Hotels, catering and leisure",  4.6  ,false);
depts[13] = new Array("Transport, distribution and storage",  9.1   ,false);
depts[14] = new Array("Media (broadcasting & publishing)",  8.3  ,false);
depts[15] = new Array("Retail and wholesale",   8.5  ,false);
depts[16] = new Array("IT services",  4.4  ,false);
depts[17] = new Array("Communications",  14.2  ,false);
depts[18] = new Array("Call centres",  12.8  ,false);
depts[19] = new Array("Other private services",  6.4  ,false);
depts[20] = new Array("Public services ",  9.8  ,false);
depts[21] = new Array("Central government ",  11.0  ,false);
depts[22] = new Array("Health ",  11.7  ,false);
depts[23] = new Array("Education ",  7.8  ,false);
depts[24] = new Array("Local government ",  10.1  ,false);
depts[25] = new Array("Other public services",   10.1 ,false);

depts[26] = new Array("Voluntary, community", 8.5  ,true);
depts[27] = new Array("Care services", 8.9  ,false);
depts[28] = new Array("Housing association ", 11.0  ,false);
depts[29] = new Array("Charity services",  7.6  ,false);
depts[30] = new Array("Other voluntary ", 6.0  ,false);


//Absence Cost Classs
function AbsenceCost(divInput, divOutput, percentage, fee, autoAbsenceYear)
{

	this.Percentage = percentage;
	this.Fee = fee;
	this.DivIN = divInput;
	this.DivOUT = divOutput;
	this.AutoAbsenceYear = autoAbsenceYear;		

	//Drop down of departments
	this.Dept = new Array(
	this.Departments("Average Levels of Employee absence per Sector"),
	this.CreateLabel("", divInput + "lblDepartment", "")
	);
	
	//Create Inputs
	this.Employees = new Array(
	this.CreateLabel("Number of employees", divInput + "lblEmployees", "Number of Employees in your organisation"), 
	this.CreateInput("text", divInput + "txtEmployees", 30, "")
	);	
	this.WeeklyWage = new Array(
	this.CreateLabel("Average salary", divInput + "lblWeeklyWage", "Average Annual salary per Employee"), 
	this.CreateInput("text", divInput + "txtWeeklyWage", 24000, "")
	);
	this.AbsenceYear = new Array(
	this.CreateLabel("Average number of days absent per employee per year", divInput + "lblAbsenceYear", "Average Number of Days each employee is absent per year."), 
	this.CreateInput("text", divInput + "txtAbsenceYear", depts[0][1], "")
	);	
	this.WorkedYear = new Array(
	this.CreateLabel("Worked days per year", divInput + "lblWorkedYear", "Average number of working days per year per employee"), 
	this.CreateInput("text", divInput + "txtWorkedYear", 248, "")
	);
			
	//Create Output Labels
	this.AbsenceRate = new Array(
	this.CreateLabel("Absence rate", divInput + "lblAbsenceRate", "Often known as lost time percentage"), 
	this.CreateLabel("", divInput + "resAbsenceRate", "")
	);	
	this.Cost = new Array(
	this.CreateLabel("Absence cost per year", divInput + "lblCost", "The direct cost of absence to your business in a year"), 
	this.CreateLabel("", divInput + "resCost", "")
	);	
	this.DirectCostEmployee = new Array(
	this.CreateLabel("Direct absence cost per year per employee", divInput + "lblDirectCostEmployee", "Direct costs include salaries paid as sick pay"), 
	this.CreateLabel("", divInput + "resDirectCostEmployee", "")
	);	
	this.InDirectCostEmployee = new Array(
	this.CreateLabel("Indirect absence cost per year per employee", divInput + "lblInDirectCostEmployee", "Indirect costs are estimated to be 2 to 4 times that of direct costs.  Here we have adopted a 1:1 relationship as it is often difficult to put a value on intangible concepts such as lost revenue opportunity, decreased customer satisfaction and lower employee morale."),
	this.CreateLabel("", divInput + "resInDirectCostEmployee", "")
	);	
	this.TotalCost = new Array(
	this.CreateLabel("Total absence cost per year per employee", divInput + "lblTotalCost"),
	this.CreateLabel("", divInput + "resTotalCost")
	);	
	this.CostSaving = new Array(
	this.CreateLabel("Potential cost saving per employee (" + this.Percentage + "%)", divInput + "lblCostSaving","Adopting absence control policies can result in a 18-42% reduction in costly unauthorised staff absence"),
	this.CreateLabel("", divInput + "resCostSaving", "")
	);	
	this.Subscription = new Array(
	this.CreateLabel("Activ Absence Control subscription fee ", divInput + "lblSubscription"),
	this.CreateLabel("", divInput + "resSubscription")
	);
	
	//CostSaving
	this.Total = new Array(
	this.CreateLabel("Potential Saving of using Activ Absence Control", divInput + "lblTotal", "Your Saving when using Activ Absence Control", "outputLabel"), 
	this.CreateLabel("", divInput + "resTotal", "Your Saving when using our System", "outputLabel")
	);		
	
	this.Draw();
			
}

AbsenceCost.prototype.CreateInput = createInput;
AbsenceCost.prototype.CreateLabel = createLabel;
AbsenceCost.prototype.Draw = draw;
AbsenceCost.prototype.Calculate = calculate;
AbsenceCost.prototype.Departments = departments;

function changeDept(value)
{
	var costs = abCosts;
	//populate the text box with selected value
	var AbsencePerYear = document.getElementById(costs.AbsenceYear[1].getAttribute("id"));		
	AbsencePerYear.value = value;
	
	costs.Calculate();
}

function calculate()
{
	//Grab the Inputs
	var costs = abCosts;
	var Employees = document.getElementById(costs.Employees[1].getAttribute("id")).value;
	var WeeklyWages = document.getElementById(costs.WeeklyWage[1].getAttribute("id")).value;
	var AbsencePerYear = document.getElementById(costs.AbsenceYear[1].getAttribute("id")).value;
	var WorkedPerYear = document.getElementById(costs.WorkedYear[1].getAttribute("id")).value;
	
	//Grab the Outputs
	var AbsenceRate = document.getElementById(costs.AbsenceRate[1].getAttribute("id"));
	var CostPeryear = document.getElementById(costs.Cost[1].getAttribute("id"));
	var DirectCostPerEmployee = document.getElementById(costs.DirectCostEmployee[1].getAttribute("id"));
	var InDirectCostPerEmployee = document.getElementById(costs.InDirectCostEmployee[1].getAttribute("id"));
	var TotalCost = document.getElementById(costs.TotalCost[1].getAttribute("id"));
	var CostSaving = document.getElementById(costs.CostSaving[1].getAttribute("id"));
	
	var Total = document.getElementById(costs.Total[1].getAttribute("id"));
	var Subscription = document.getElementById(costs.Subscription[1].getAttribute("id"));
	//calculate absense rate
	AbsenceRate.innerHTML = "<span style='float: right;'>"+((AbsencePerYear / WorkedPerYear) * 100).toFixed(2)+"%</span>";
	var costOfAbsencePerYear = ((WeeklyWages/(5*52)) * (Employees*AbsencePerYear)).toFixed(2);
	CostPeryear.innerHTML = "<span style='float: right;'>\u00A3"+costOfAbsencePerYear+"</span>";
	var costPerEmployee = (costOfAbsencePerYear / Employees).toFixed(2);
	DirectCostPerEmployee.innerHTML = "<span style='float: right;'>\u00A3"+costPerEmployee+"</span>";
	InDirectCostPerEmployee.innerHTML = "<span style='float: right;'>\u00A3"+costPerEmployee+"</span>";
	TotalCost.innerHTML = "<span style='float: right;'>\u00A3"+(costPerEmployee * 2).toFixed(2);
	var costsaving = ((costPerEmployee * 2) * (costs.Percentage / 100)).toFixed(2);
	CostSaving.innerHTML = "<span style='float: right;'>\u00A3"+costsaving+"</span>";	//Calculate fee		if(Employees > 99)		costs.Fee = 1;	else if(Employees > 50)		costs.Fee = 1.25;	else if(Employees > 25)		costs.Fee = 2;
		else if(Employees > 10)
		costs.Fee = 2.5;	else		costs.Fee = 3;		costs.Fee = costs.Fee * 12;
	var sub = (costs.Fee * Employees).toFixed(2)		
	Subscription.innerHTML = "<span style='float: right;'>\u00A3"+sub+"</span>";
	Total.innerHTML = "<span style='float: right;'>\u00A3"+((costsaving * Employees) - sub).toFixed(2)+"</span>";
}
var http = createRequestObject();var sent = false;function agentCall(){	var siteUrl	= document.getElementById("siteUrl");	if((siteUrl != null) && !sent)	{		sent = true;    		http.open('get', siteUrl.value + "/absenceCostHit?openagent");    		http.send(null);    	}}function createRequestObject() {   	 		var tmpXmlHttpObject;        		if (window.XMLHttpRequest) {       	  	tmpXmlHttpObject = new XMLHttpRequest();	  	 	 } else if (window.ActiveXObject) {     	    		tmpXmlHttpObject = new ActiveXObject("Microsoft.XMLHTTP");  	 	 }        		return tmpXmlHttpObject;}
function departments(hoverText)
{
	var dropDown = document.createElement("SELECT");
	dropDown.id = this.DivIN + "cmbDept"
	
	//Add the onChange event
	dropDown.setAttribute("onChange", "changeDept( this.value )");
	//dropDown.setAttribute("onMouseover", "ddrivetip('" + hoverText + "','white', 300)");
	//dropDown.setAttribute("onMouseout", "hideddrivetip()");
	//Are we allowing users to choose the Absence per Year
	if (this.AutoAbsenceYear > 0) 
	{
		dropDown.style.display = 'none';
	}
	
	//Populate drop down with the departments
	for (var i = 0; i < depts.length; i++)
	{
		var objOption = document.createElement("option")
		objOption.value = depts[i][1];
		var text = depts[i][0] + " (" + depts[i][1] + ")";
		//Check if its a heading
		if(depts[i][2]) text = " -- " + text + " -- ";
		objOption.innerHTML = text;
		dropDown.appendChild(objOption)
	}
	
	//return drop down object
	return dropDown;
}

function createInput(type, id, value, hoverText, classId)
{
	var newInput = document.createElement("INPUT");
	newInput.setAttribute("type", type);
	newInput.setAttribute("id", id);
	newInput.setAttribute("value", value);		
	newInput.setAttribute("onkeyup", "calculate(); agentCall();");		
//	newInput.setAttribute("onMouseover", "ddrivetip('" + hoverText + "','white', 300)");
	//newInput.setAttribute("onMouseout", "hideddrivetip()");
	newInput.setAttribute("style","float: right;")
	return newInput;
}

function createLabel(value, id, hoverText, classId)
{
	var newLabel = document.createElement("LABEL");
	newLabel.setAttribute("id", id);
	var descriptionText = "";
	if (hoverText != null)
		descriptionText = "<br /><font size='1' style='italic' face='Segoe UI'><i>(" + hoverText + ")</i></font>";
		
	newLabel.innerHTML = "" + value ;
	//+ "" + descriptionText;
	if (hoverText!=""){
	newLabel.setAttribute("onMouseover", "ddrivetip('" + hoverText + "','white', 300)");
	newLabel.setAttribute("onMouseout", "hideddrivetip()");
	}
	newLabel.setAttribute("class", classId);
	
	return newLabel;
}
	
//Draw the form/output labels
function draw()
{
	var input = document.getElementById(this.DivIN);
	input.innerHTML = "";		
	var output = document.getElementById(this.DivOUT);
	output.innerHTML = "";
	/* ========== INPUT SECTION =======*/
	//Create Table
	var table = document.createElement("TABLE");
	table.setAttribute("width", "100%");
	var rows = new Array(4);		
	//Create Rows
	for(var i = 0; i < rows.length; i++)
	{
		var row = document.createElement("TR");
		rows[i] = row;
	}		
		
	for(var i = 0; i < 2; i++)
	{
		var cols = new Array(4);
		for(var j = 0; j < cols.length; j++)
		{
		
			var col = document.createElement("TD");
			if(i==1){
				col.setAttribute("width", "220px");
				col.setAttribute("align", "right");
				
			}
			cols[j] = col;
		}
		cols[0].appendChild(this.Employees[i]);
		cols[1].appendChild(this.WeeklyWage[i]);
		if(i == 1) 
		{
			var lineBreak = document.createElement("BR");				
			cols[2].appendChild(this.Dept[0]);
			cols[2].appendChild(this.Dept[1]);
			cols[2].appendChild(lineBreak);
		}
		
		cols[2].appendChild(this.AbsenceYear[i]);
		cols[3].appendChild(this.WorkedYear[i]);
		
		rows[0].appendChild(cols[0]);
		rows[1].appendChild(cols[1]);
		rows[2].appendChild(cols[2]);
		rows[3].appendChild(cols[3]);
					
	}
	
	for(var i = 0; i < rows.length; i++)
	{
		table.appendChild(rows[i]);
	}
		
	input.appendChild(table);
	input.innerHTML += "";
	
	/* ========== END OF INPUT SECTION =======*/
	
	/* ========== OUTPUT SECTION =======*/
	//Create Table
	table = document.createElement("TABLE");
	table.setAttribute("width", "100%");
	rows = new Array(8);		
	//Create Rows
	for(var i = 0; i < rows.length; i++)
	{
		var row = document.createElement("TR");
		rows[i] = row;
	}		
					
	for(var i = 0; i < 2; i++)
	{
		var cols = new Array(8);
		for(var j = 0; j < cols.length; j++)
		{
			var col = document.createElement("TD");
			if(i==1){
				col.setAttribute("width", "220px");
				
			}
			cols[j] = col;
		}
	cols[0].appendChild(this.AbsenceRate[i]);
	cols[1].appendChild(this.Cost[i]);
	cols[2].appendChild(this.DirectCostEmployee[i]);
	cols[3].appendChild(this.InDirectCostEmployee[i]);
	cols[4].appendChild(this.TotalCost[i]);
	cols[5].appendChild(this.CostSaving[i]);
	cols[6].appendChild(this.Subscription[i]);
	cols[7].appendChild(this.Total[i]);	
	
	rows[0].appendChild(cols[0]);
	rows[1].appendChild(cols[1]);
	rows[2].appendChild(cols[2]);
	rows[3].appendChild(cols[3]);
	rows[4].appendChild(cols[4]);
	rows[5].appendChild(cols[5]);
	rows[6].appendChild(cols[6]);
	rows[7].appendChild(cols[7]);				
					
	}
	
	for(var i = 0; i < rows.length; i++)
	{
		table.appendChild(rows[i]);
	}
		
	output.appendChild(table);
	output.innerHTML += "";
	
	/* ========== END OF OUTPUT SECTION =======*/
	
}