//All layer swapping here
function display(lyr) {
	document.getElementById("calculator_" + lyr).style.display="";
	document.getElementById("calculator_" + lyr + "_switchoff").style.display="";
	document.getElementById("calculator_" + lyr + "_switchon").style.display="none";
}

function hide(lyr) {
	document.getElementById("calculator_" + lyr).style.display="none";
	document.getElementById("calculator_" + lyr + "_switchoff").style.display="none";
	document.getElementById("calculator_" + lyr + "_switchon").style.display="";
}

///////////////////////////////////////////////////////////////////////////////////////////////
//Decimal place conversion
function oneDec(strtemp)
{
	
	per = strtemp.indexOf(".");
	temp=strtemp+'.0';
	if (per > 0)
	{
	pos= per +3;

	temp= strtemp.substring(0,pos); 
	lastpos = per+2;
	endpos = per+1;
	lastchar = temp.charAt(lastpos);
	endchar = temp.charAt(endpos);
	if (lastchar != '')
	{
		if (lastchar > 4) endchar = eval(endchar)+1;
		if (endchar == 10) 
		{
		temp = temp.substring(0,lastpos-2); 
		temp=eval(temp)+1;
		}
	}
	if (endchar < 10) temp = temp.substring(0,per+1)+endchar;
	if (endchar == 0) temp = temp.substring(0,per);
	if (endchar == '') temp = temp.substring(0,per);
	}
	
	return temp;
}

function twoDec(strtemp)
{	
	per = strtemp.indexOf(".");
	value=strtemp+'.00';
	if (per > 0)
	{
	pos= per +3;
	temp= strtemp.substring(0,pos); 
	dollars= strtemp.substring(0,per);
	cents= strtemp.substring(per,pos);
	rdpos= strtemp.substring(pos,pos+1);
	if (rdpos > 4)
	{
	 cents =eval(cents) +.01;
	cents = cents.toString();
	cents = cents.substring(1,4);
	}
	if (cents > .99) dollars= eval(dollars)+1;
	if (cents == 1) cents='.00';
	if (cents.length == 2)
	{ 
	cents= cents.toString();
	cents= cents+0;
	}
	value=dollars+cents;
	}
	return value;
}

function formatnumber(val,places) {
    var power = 1;
    if (places > 0) {
		power = Math.pow(10,places); 
    }
    // now we round the val to X decimal places.
    var roundedNum = (Math.round(val * power)/power) + "";

	// check the result for decimals
    var decpos = roundedNum.indexOf('.');
    
    if (decpos >= 0) {
	    var decDiff = places-(roundedNum.length-(decpos+1));
	} else {
		var decDiff = places;
		if (places > 0) {
			roundedNum += ".";
		}
	}
	
	// add missing zeros to satisify the decimal request.
	for (var x = 0; x < decDiff; x++) {
		roundedNum += "0";
	}
	
    return roundedNum;
}


///////////////////////////////////////////////////////////////////////////////////////////////
//Paper Needs Estimator
function calc()
{
	f = document.paperneeds;

	if (isNaN(f.pagew.value)) {
		width = 0;
		f.pagew.value = 0;
	} else {
		width = f.pagew.value;
	}
	if (isNaN(f.pageh.value)) {
		height = 0;
		f.pageh.value = 0;
	} else {
		height = f.pageh.value;
	}
	if (isNaN(f.weight.value)) {
		weight = 0;
		f.weight.value = 0;
	} else {
		weight = f.weight.value;
	}
	if (isNaN(f.pages.value)) {
		pages = 0;
		f.pages.value = 0;
	} else {
		pages = f.pages.value;
	}
	if (isNaN(f.pieces.value)) {
		pieces = 0;
		f.pieces.value = 0;
	} else {
		pieces = f.pieces.value;
	}
	if (isNaN(f.waste.value)) {
		waste = 0;
		f.waste.value = 0;
	} else {
		waste = 1 + (f.waste.value / 100);
	}
	basis_size = f.size.value

	result = ((width * height)/ basis_size ) * (weight / 1000) * pages * pieces * waste;
	result = Math.ceil(result * 100);
	result = result / 100
	document.getElementById("total_paper").childNodes[0].nodeValue = result
}


///////////////////////////////////////////////////////////////////////////////////////////////
//Roll Weight Calculator
function validateRollWeight() {
	f = document.rollweight;
	var myindex=f.factor.selectedIndex;

	if (f.rDiameter.value == "") {
		alert("Enter Roll Diameter (inches).");
		f.rDiameter.focus();
		return (false);
	}

	if (isNaN(f.rDiameter.value)) {
		alert("Roll Diameter must be a number.");
		f.rDiameter.focus();
		return (false);
	}

	if (f.cDiameter.value == "") {
		alert("Enter Core Diameter (inches).");
		f.cDiameter.focus();
		return (false);
	}

	if (isNaN(f.cDiameter.value)) {
		alert("Core Diameter must be a number.");
		f.cDiameter.focus();
		return (false);
	}

	if (f.rWidth.value == "") {
		alert("Enter Roll Width (inches).");
		f.rWidth.focus();
		return (false);
	}

	if (isNaN(f.rWidth.value)) {
		alert("Roll Width must be a number.");
		f.rWidth.focus();
		return (false);
	}

	if (f.factor.options[myindex].value == "") {
		alert("Select Factor.");
		f.factor.focus();
		return (false);
	}
	CalculateRollEstimation(f.rDiameter.value, f.cDiameter.value, f.rWidth.value, f.factor.options[myindex].value);
	return true;
}

function CalculateRollEstimation(rDiameter,cDiameter,rWidth,factor) {
	var RollEstimation = (rDiameter * rDiameter) - (cDiameter * cDiameter);
	RollEstimation = RollEstimation * rWidth * factor;
	document.getElementById("total_roll").childNodes[0].nodeValue = formatnumber(RollEstimation,0);
}

function formatnumber(val,places) {
    var power = 1;
    if (places> 0) {
		power = Math.pow(10,places);
    }
    // now we round the val to X decimal places.
    var roundedNum = (Math.round(val * power)/power) + "";

	// check the result for decimals
    var decpos = roundedNum.indexOf('.');

    if (decpos>= 0) {
	    var decDiff = places-(roundedNum.length-(decpos+1));
	} else {
		var decDiff = places;
		if (places> 0) {
			roundedNum += ".";
		}
	}

	// add missing zeros to satisify the decimal request.
	for (var x = 0; x < decDiff; x++) {
		roundedNum += "0";
	}

    return roundedNum;
}


//////////////////////////////////////////////////////////////////////////////////
//Basis-Weight to GSM Conversion
function _toGsm()
{
	f = document.basisToGSM;

	var a=f.basicSize.options[f.basicSize.selectedIndex].value;
	var b=f.basisWeight.value;
	var temp;

	if (b == 0) {
		alert("Enter the Basic Weight");
		f.basisWeight.focus();
		return
	}

	if (isNaN(b)) {
		alert("Enter a valid number for the Basic Weight");
		f.basisWeight.focus();
		f.basisWeight.select();
		return
	}

	temp=(b*1406.5)/a;
	temp = temp.toString();
	temp = oneDec(temp);
	f.gsm.value=temp;
	return
}


//////////////////////////////////////////////////////////////////////////////////
//Yield
function calculateYield()
{
	var f = document.yield;
	
	var a=f.bwtOld.value;
	var b=f.lbsOld.value;
	var c=f.cwtOld.value;
	var d=f.bwtNew.value;
	var e=f.cwtNew.value;
	var temp;

	if (isNaN(a)) {
		alert("Enter a valid number for Original Basis Weight");
		f.bwtOld.focus();
		f.bwtOld.select();
		return false;
	}

	if (isNaN(b)) {
		alert("Enter a valid number for the Original Total Weight");
		f.lbsOld.focus();
		f.lbsOld.select();
		return false;
	}

	if (isNaN(c)) {
		alert("Enter a valid number for the Original Cost per Hundred Weight");
		f.cwtOld.focus();
		f.cwtOld.select();
		return false;
	}

	if (isNaN(d)) {
		alert("Enter a valid number for the New Basis Weight");
		f.bwtNew.focus();
		f.bwtNew.select();
		return false;
	}

	if (isNaN(e)) {
		alert("Enter a valid number for the New Cost per Hundred Weight");
		f.cwtNew.focus();
		f.cwtNew.select();
		return false;
	}
	
	//Final calculations
	temp=(d/a)*b;
	lbsNewNoRd=temp;
	temp = temp.toString();
	temp = oneDec(temp);
	f.lbsNew.value=temp;

	if (f.measurement.options[f.measurement.selectedIndex].value == 0) {
		temp=((b)*(c))-((eval(lbsNewNoRd)*(e)))
	} else {
		temp=((b/100)*c)-((eval(lbsNewNoRd)/100)*e)
	}
	
	temp = temp.toString();
	value = twoDec(temp);
	f.totalCostDiff.value=value;
	return
	
}


//////////////////////////////////////////////////////////////////////////////////
//Roll Waste
function calculateRollwaste()
{
	var f = document.rollWaste;
	var a=f.waste.value;
	var b=f.rollWidth.value;
	var c=f.rollDiameter.value;
	var d=f.coreDiameter.value;
	var e=f.paperType.options[f.paperType.selectedIndex].value;
	var temp;

	if (isNaN(a)) {
		alert("Enter a valid number for the Waste");
		f.waste.focus();
		f.waste.select();
		return false;
	}

	if (isNaN(b)) {
		alert("Enter a valid number for the Roll Width");
		f.rollWidth.focus();
		f.rollWidth.select();
		return false;
	}

	if (isNaN(c)) {
		alert("Enter a valid number for the Roll Diameter");
		f.rollDiameter.focus();
		f.rollDiameter.select();
		return false;
	}

	if (isNaN(d)) {
		alert("Enter a valid number for the Core Diameter");
		f.coreDiameter.focus();
		f.coreDiameter.select();
		return false;
	}

	if (f.measurement.options[f.measurement.selectedIndex].value == 0) {
		temp=(((c/1000)*(c/1000))-((d/1000)*(d/1000))) * ((b/1000)*e) * (1-((((c/1000)-(a/1000))*((c/1000)-(a/1000)))/((c/1000)*(c/1000))))
	} else {
		temp=(((c*c)-(d*d))*b*e)*(1-(((c-a)*(c-a))/(c*c)))
	}
	
	temp = temp.toString();
	temp = oneDec(temp);
	f.totalLbs.value=temp;
	return true;
}


//////////////////////////////////////////////////////////////////////////////////
//Linear Feet Calculator
function calculateLinear()
{
	var f = document.linear;
	var a=f.basisWeight.value;
	var b=f.rollWeight.value;
	var c=f.rollWidth.value;
	var d=f.basicSize.options[f.basicSize.selectedIndex].value;	
	var temp;
	
	if (isNaN(a)) {
		alert("Enter a valid number for the Basis Weight");
		f.basisWeight.focus();
		f.basisWeight.select();
		return false;
	}
	
	if (isNaN(b)) {
		alert("Enter a valid number for the Roll Weight");
		f.rollWeight.focus();
		f.rollWeight.select();
		return false;
	}
	
	if (isNaN(c)) {
		alert("Enter a valid number for the Roll Width");
		f.rollWidth.focus();
		f.rollWidth.select();
		return false;
	}
	
	temp=((b*d*500)/(c*12*a))		
	temp = temp.toString();
	temp = oneDec(temp);
	f.totalFeet.value=temp;
	return true;
}


//////////////////////////////////////////////////////////////////////////////////
//GSM to Basis-Weight
function doGSMConversion(){
	var f = document.GSMToBasis;

	var numbers = "0123456789"
	var basisweight = f.basisweight.value;
	var basicsizewidth = f.basicsizewidth.value;
	var basicsizeheight = f.basicsizeheight.value;
	var totalpounds;

	for (i = 0; i <= 2; i++) {
		for (j = 0; j <= 5; j++) {
			if (numbers.indexOf(f.elements[i].value.substring(0,5).charAt(j)) == -1){
			alert ('Please do not use letters or symbols.  Re-enter with numerals only.');
			return false;
			}
		}
	}
	for (k = 0; k <= 2; k++){
		if (f.elements[k].value == ""){
		alert("Please enter a value for all fields.");
		f.elements[k].focus();
		return false;
		}
	}

	totalpounds = (basisweight) * (basicsizewidth * basicsizeheight) / (1406.5);
	totalpounds = formatnumber(totalpounds,2);
	f.totalpounds.value = totalpounds;
	return false;
}


//////////////////////////////////////////////////////////////////////////////////
//Sheets to Pounds
function calculateSheetz()
{
	var f = document.sheets;
	var a=f.basisWeight.value;
	var w=f.width.value;
	var h=f.height.value;
	var b=f.numSheets.value;
	var c=f.basicSize.options[f.basicSize.selectedIndex].value;
	var temp;

	if (isNaN(a)) {
		alert("Enter a valid number for the Basis Weight");
		f.basisWeight.focus();
		f.basisWeight.select();
		return false;
	}

	if (isNaN(b)) {
		alert("Enter a valid number for the Number of Sheets");
		f.numSheets.focus();
		f.numSheets.select();
		return false;
	}

	if (isNaN(w)) {
		alert("Enter a valid number for the Width");
		f.width.focus();
		f.width.select();
		return false;
	}

	if (isNaN(h)) {
		alert("Enter a valid number for the Height");
		f.height.focus();
		f.height.select();
		return false;
	}

	temp=(((w*h*a)/c)/500)*b;
	temp = temp.toString();
	temp = oneDec(temp);
	f.totalLbs.value=temp;
	return
}


//////////////////////////////////////////////////////////////////////////////////
//M-Weight Calculator
function testNumber(objField, FieldName) {
	var numField = objField.value;
	
	if (isNaN(numField)) {
		alert(FieldName + " must be a valid number.")
		return false;
	}
	
	numField = parseFloat(numField);

	if (numField > 0) {
		return true;
	} else {
		alert(FieldName + " must be a number greater than 0.")
		return false;
	}
}

function validateForm() {
	var f=document.mweight;
	if (!testNumber(f.hSize,"Given Size (height)")) return false;
	if (!testNumber(f.wSize,"Given Size (width)")) return false;
	if (!testNumber(f.bWeight,"Basis Weight")) return false;
	if (!testNumber(f.hArea,"Basic Size (height)")) return false;
	if (!testNumber(f.wArea,"Basic Size (width)")) return false;
	CalculateReamWeight(f.hSize.value, f.wSize.value, f.bWeight.value, f.hArea.value, f.wArea.value)
	return true;
}

function CalculateReamWeight(hSize,wSize,bWeight,hArea,wArea) {
	var sheetsize = (hSize * wSize);
	var reamsize = ((hSize * wSize) * bWeight) / (hArea*wArea);
	if (sheetsize> 863) {
		reamsize = formatnumber(reamsize,0);
	}
	if (sheetsize < 864) {
		reamsize = formatnumber(reamsize,1);
	}
	if (sheetsize < 336) {
		reamsize = formatnumber(reamsize,2);
	}
	reamsize = (reamsize * 2);
	document.mweight.answer.value = reamsize;
}