function caclulator () {
	// Get forms
	var calcform = document.forms["calculateprofit"];
	var calcbtn = document.getElementById("calculate");
	var freezerform = document.forms["selectfreezer"];
	var gobtn = document.getElementById("go");
	
	// Initiate MGForm class
	var formVal = new MGForm("calculateprofit");
	
	// Set validation object
	var validObj = {
		required: {
			tubcost: "dec",
			scoops: "int",
			conescost: "dec",
			conespercase: "int",
			coneprice: "dec",
			conesperday: "int",
			seasonlength: "int"
		},
		error: {
			tubcost: "Please enter your cost of a tub of ice cream eg (2.50)",
			scoops: "Please enter the number of scoops you get out of one tub",
			conescost: "Please enter how much a pack of cones costs eg (2.50)",
			conespercase: "Please enter how many cones per case",
			coneprice: "Please enter your price of a cone eg (2.50)",
			conesperday: "Please enter your average number of cones sold per day eg (25)",
			seasonlength: "Please enter how long your season is in months eg (5)"
		}
	};
	
	// If cup is scoopno is present then overwrite error messages
	if(calcform.elements["scoopno"]) {
		validObj.error.conescost = "Please enter how much a pack of cups and spoons costs eg (2.50)";
		validObj.error.conespercase = "Please enter how many cups per case";
		validObj.error.coneprice = "Please enter your price of a cup eg (2.50)";
		validObj.error.conesperday = "Please enter your average number of cups sold per day eg (25)";
	}
	
	
	// Attach event handler for cone radio
	document.getElementById("cone").onclick = function() {
		if(formVal.validateField(calcform.elements["coneorcup"]) == "cone") {
			window.location.href = "calculator.htm";
		}
	}
	
	// Attach event handler for cup radio
	document.getElementById("cup").onclick = function() {
		if(formVal.validateField(calcform.elements["coneorcup"]) == "cup") {
			window.location.href = "calculator_cup.htm";
		}
	}
	
	// Add onsubmit event handler for calcform
	calcbtn.onclick = function() {
		// Get formula values
		var a,b,d,e,f,g,h;
		
		a = parseFloat(calcform.elements["tubcost"].value);
		b = calcform.elements["scoops"].value;
		d = parseFloat(calcform.elements["conescost"].value);
		e = calcform.elements["conespercase"].value;
		f = parseFloat(calcform.elements["coneprice"].value);
		g = calcform.elements["conesperday"].value;
		h = calcform.elements["seasonlength"].value;
		
		// Set formulaObj
		var formulaObj = {
			ppc: function () { return ((f/1.175)-(a/b)-(d/e)).toFixed(2)},
			pm: function () { return (((this.ppc()/(f/1.175))*100).toFixed(2))},
			cs: function () { return (g*30)*h},
			rsv: function () { return ((this.cs()*f)).toFixed(2)},
			total: function () { return (this.ppc()*this.cs()).toFixed(2)}
		};


		// Validate form
		if(formVal.validate(validObj)) {
			// If scoopno is set to 2 then over ride profit per cone (ppc) formula
			if(calcform.elements["scoopno"] && formVal.validateField(calcform.elements["scoopno"]) == 2) {
				formulaObj.ppc = function() { return ((f/1.175)-((a/b)/2)-(d/e)).toFixed(2)};
			}
			
			document.getElementById("calculate").setAttribute("src", "images/calculator/btn_recalculate.gif");
			
			// Set calculated values
			document.getElementById("profitpercone").firstChild.data = "£"+formulaObj.ppc();
			document.getElementById("profitmargin").firstChild.data = formulaObj.pm()+"%";
			document.getElementById("soldmonthtotal").firstChild.data = formulaObj.cs();
			document.getElementById("rsvtotal").firstChild.data = "£"+formulaObj.rsv();
			document.getElementById("total").getElementsByTagName("span")[0].firstChild.data = "£"+formulaObj.total();
			
			document.getElementById("soldmonth").firstChild.data = h;
			document.getElementById("rsvmonth").firstChild.data = h;
			
		}
		
		return false;
	}
	
	
	var frezformObj = new MGForm("selectfreezer");
	
	// Add onsubmit event handler for freezerform
	gobtn.onclick = function() {
		
		// First check calculateprofit form is correct
		if(formVal.validate(validObj)) {
			if(formVal.validate(freezerform.elements["freezer"])) {
				var ppc = parseFloat(document.getElementById("profitpercone").firstChild.data.substr(1));
				var cpd = parseInt(calcform.elements["conesperday"].value);
				
				var evenin = document.getElementById("evenin");
				evenin.getElementsByTagName("span")[0].firstChild.data = Math.round(freezerform.elements["freezer"].value/(ppc*cpd*7));
			}
		}
					
		
		return false;
	}
}
	
function addLoadListener(fn)
{
  if (typeof window.addEventListener != 'undefined')
  {
    window.addEventListener('load', fn, false);
  }
  else if (typeof document.addEventListener != 'undefined')
  {
    document.addEventListener('load', fn, false);
  }
  else if (typeof window.attachEvent != 'undefined')
  {
    window.attachEvent('onload', fn);
  }
  else
  {
    var oldfn = window.onload;
    if (typeof window.onload != 'function')
    {
      window.onload = fn;
    }
    else
    {
      window.onload = function()
      {
        oldfn();
        fn();
      };
    }
  }
}

addLoadListener(caclulator);