var lastMill = 40870;
var lastMile = "";
var lastYard = 44;
var lastFeet = 1;
var lastInch = 1;
var lastFracTop = 0;
var speed = 100;
var metUnits="millimetres";
var conDemo=null;
function SetConverter()
{
    SetNumeric();
    ResetValues();
	ConvertToEnglish();
	ConvertToMetric();
	conDemo = setTimeout("StartConDemo()", 1000);
	SetUp();
}
function ResetValues()
{
	document.getElementById("txtMiles").value = lastMile;
	document.getElementById("txtYards").value = lastYard;
	document.getElementById("txtFeet").value = lastFeet;
	document.getElementById("txtInches").value = lastInch;
	document.getElementById("ddFrac").selectedIndex = lastFracTop;
}
function ConvertToEnglish()
{	
	var sync = document.getElementById("cbSync").checked;
	var disp;
	if (document.getElementById("rbMiles").checked)
		disp=0;
	else if (document.getElementById("rbYards").checked)
		disp=1;
	else if (document.getElementById("rbFeet").checked)
		disp=2;
	else
		disp=3;
	var eng="", m=0, y=0, f=0, i=0, ft=0, fb=32;
	var t = document.getElementById("txtMill").value / 0.79375;  
	if (t==0)
	{
		document.getElementById("spnEnglish").innerHTML= "?";
		return;
	}
	if (isNaN(t))
	{
		document.getElementById("txtMill").value = lastMill;
		return;
	}
	if (t >= 2027520 && disp < 1) // its longer than 1 mile
	{
		m = Math.floor(t/2027520); // 2027520 / 32 " in a mile
		t-= (m*2027520); // take out the miles
		eng+= Commafy(m.toString()) +" <font size=2 color=red><i>miles</i></font> ";
	}
	
	if (t >= 1152 && disp < 2) // its longer than 1 yard
	{
		y = Math.floor(t/1152);
		t-= (y*1152); // take out the yards
		eng+= Commafy(y.toString()) +" <font size=2 color=red><i>yards</i></font> ";
	}
	
	if (t >= 384 && disp < 3) // its longer than 1 foot
	{
		f = Math.floor(t/384);
		t-= (f*384); // take out the feet
		eng+=  Commafy(f.toString()) +"<font size=4 color=red><i>'</i> </font>";
	}
	var hasInch = false;
	if (t >= 32 && disp < 4) // we have inches left over
	{
		i = Math.floor(t/32);
		t-= (i*32);
		eng+= Commafy(i.toString());
		hasInch = true;
	}
	if (t > 0) // it has a fraction
	{
		hasInch = true;
		if (i >0) // only if the fraction follows an inches measurement
			eng+= "<font color='Red'>~</font>";
		ft = Math.round(t); // in 1/32 in
			
		if (ft < 32)
			document.getElementById("ddFrac").selectedIndex = ft;
		var sf = document.getElementById("ddFrac").options[document.getElementById("ddFrac").selectedIndex].innerHTML;
		eng+= "<font size=2><b>"+ sf;
	}
	else
	{
		document.getElementById("ddFrac").selectedIndex = 0;
	}
	if (hasInch)
		eng+= "<font size=4 color=red><i>\"</i> </font>";
	if (sync)
	{
		document.getElementById("txtMiles").value = m == 0 ? "": m;
		document.getElementById("txtYards").value = y == 0 ? "" : y;
		document.getElementById("txtFeet").value = f == 0 ? "" : f;
		document.getElementById("txtInches").value = i == 0 ? "" : i;
		var metVal = document.getElementById("txtMill").value;
		switch (metUnits)
		{
			case "millimetres":
				break;
			case "centimetres":
				metVal=metVal/10;
				break;
			case "metres":
				metVal=metVal/1000;
				break;
		}
		document.getElementById("spnMetric").innerHTML = "<div>&nbsp;&nbsp;&nbsp;"+ Commafy(metVal +" <font size='2' color='Red'><i>"+ metUnits +"</i></font></div>");
	}
	lastMill = document.getElementById("txtMill").value;
	if (document.getElementById("rbFraction").checked) // fraction
		document.getElementById("spnEnglish").innerHTML= "<div align='left'> &nbsp;&nbsp;&nbsp;"+ eng +"</div>";
	else // decimal
	{
		var dec;
		var t = document.getElementById("txtMill").value;
		switch (disp)
		{
			case 0: // mill to miles
				dec = (t / 1609344).toFixed(6) +" <font size='2' color='Red'><i>miles</i></font>";
				break;
			case 1: // mill to yards
				dec = (t / 914.4).toFixed(4) +" <font size='2' color='Red'><i>yards</i></font>";
				break;
			case 2: // mill to feet
				dec = (t / 304.8).toFixed(3) +" <font size='3' color='Red'><b><i>'</b></i>";
				break;
			case 3: // mill to inches
				dec = (t / 25.4).toFixed(2) + " <font size='3' color='Red'><b><i>\"</b></i>";
				break;		
		}
		document.getElementById("spnEnglish").innerHTML= "<div align='left'> &nbsp;&nbsp;&nbsp;"+ dec +"</div>";
	}
}
function ConvertToMetric(ctrl)
{
	var mm = document.getElementById("txtMiles").value * 1609344; // 25.4 mill * 63360 (5280 ft) inches in a mile
	mm+= document.getElementById("txtYards").value * 914.4;
	mm+= document.getElementById("txtFeet").value * 304.8;
	mm+= document.getElementById("txtInches").value * 25.4;
	
	var ft = document.getElementById("ddFrac").value; 	
	mm+= ft*0.79375;
	mm = Math.round(mm); 
	if (isNaN(mm))
	{
		ResetValues();
		return;
	}
	lastMile = document.getElementById("txtMiles").value;
	lastYard = document.getElementById("txtYards").value;
	lastFeet = document.getElementById("txtFeet").value;
	lastInch = document.getElementById("txtInches").value;
	lastFracTop = document.getElementById("ddFrac").selectedIndex;
	document.getElementById("spnMetric").innerHTML= "<div align='center'>"+ Commafy(mm.toString() +" <font size='2' color='Red'><i>centimetres</i></font></div>");
	if (document.getElementById("cbSync").checked)
	{		
		document.getElementById("txtMill").value = mm;
		ConvertToEnglish();
	}
}
var mesg = "Blocklayer.com";
var vers  = parseInt(navigator.appVersion)
var NS = navigator.appName=="Netscape"
var IE = navigator.appName=="Microsoft Internet Explorer"
function Nrc(e)
{
   if (NS && e.which > 1)
   {
      alert(mesg)
      return false
   }
   else if (IE && (event.button >1))
   {
     alert(mesg)
     return false;
   }
}
//document.onmousedown = Nrc;
if (document.layers) window.captureEvents(Event.MOUSEDOWN);
if (NS && vers <5) window.onmousedown = Nrc;

function Commafy(val)
{
	var re = /(-?\d+)(\d{3})/;
	while (re.test(val))
	{
		val = val.replace(re, "$1,$2");
	}
	return val;
}
var millTimer = null;
function UpMill()
{
	clearInterval(conDemo);	
	inc = 1;
	millTimer = setInterval("IncMill()", speed);
}
function DownMill()
{
	clearInterval(conDemo);
	inc = -1;
	millTimer = setInterval("DecMill()", speed);
}
var conInc=10;
function ChangeConverterInc(ctrl)
{
	conInc = parseInt(ctrl.value);
}	
function IncMill()
{
	var c = parseInt(document.getElementById("txtMill").value);
	if (c < 1000000000)
	{
		document.getElementById("txtMill").value = c + conInc;
		ConvertToEnglish();
	}
}
function DecMill()
{
	var c = parseInt(document.getElementById("txtMill").value);
	if (c > 1)
	{
		document.getElementById("txtMill").value = c - conInc;
		ConvertToEnglish();
	}
}
function StopMill()
{
	clearInterval(millTimer);
}
function cbSync_onclick(ctrl)
{
	if (document.getElementById("cbSync").checked)
		document.getElementById("tdSync").style.background="Lightgreen";
	else
		document.getElementById("tdSync").style.background="Orange";
}	
function SetMetUnits(unit)
{
	metUnits = unit;
	ConvertToEnglish();
}
var demoCount=0;
function StartConDemo()
{
	document.getElementById("imgUpMill").style.background = "Red";
	conDemo = setInterval("IncMillDemo()", 100);
}
function IncMillDemo()
{
	if (demoCount < 20)
	{
		IncMill();
		demoCount++;
	}
	else
	{
		clearInterval(conDemo);
	    document.getElementById("imgUpMill").style.background = "";
	    document.getElementById("spnExp").style.color = "Black";		
	}
}
var rad = 180 / Math.PI;
function HeightFromAngleLength()
{
	var ctrl;
	ctrl=document.getElementById("txtLong1");
	if (! CheckRange(ctrl, 1, 1000000))
		return;
	l = ctrl.value;	
	ctrl=document.getElementById("txtAngle1");
	if (! CheckRange(ctrl, 1, 89))
		return;
	a = ctrl.value;	
	h = Math.round(l*(Math.tan(a/rad)));
	document.getElementById("fntHeigthFromAngleLength").innerHTML="Its "+ h +" high";
}
function CheckRange(ctrl, min, max)
{
	if (ctrl.value == "")
	{
		alert('Value Required');
		ctrl.select();
		return false;
	}
	var val = parseFloat(ctrl.value);
	if (isNaN(val))
	{
		ctrl.focus();
		alert('Numbers Only');
		ctrl.select();
		return false;
	}
	else if (val < min)
	{
		ctrl.focus();
		alert('Must be larger than or = '+ min);
		ctrl.select();
		return false;
	}
	else if (val > max)
	{				
		ctrl.focus();
		alert('Must be smaller than or = '+ max);
		ctrl.select();
		return false;
	}
	return true;
}
function ConvertToFrac()
{
    var inches = parseFloat(document.getElementById("_txtDec").value);
    var ts = Math.round(inches * 32);
    document.getElementById("spnFrac").innerHTML = ConEng(ts, document.getElementById("rbUseFeet").checked);
    var res = " &nbsp;&nbsp; "+ (inches * .0254).toFixed(3) +" m &nbsp;&nbsp; "+ (inches * 2.54).toFixed(2) +" cm &nbsp;&nbsp; "+ (inches * 25.4).toFixed(1) +" mm";
    document.getElementById("spnFrac2").innerHTML = res;
}
function ConvertToDec()
{
    var t = parseInt(document.getElementById("ddLengthFeet").value) * 384;
    t += parseInt(document.getElementById("ddLengthInches").value) * 32;
    t += parseInt(document.getElementById("ddLengthFrac").value);
    var inches = t/32;
    document.getElementById("spnDec").innerHTML = inches.toFixed(2) +"\"";
    var res = " &nbsp;&nbsp; "+ (inches * .0254).toFixed(3) +" m &nbsp;&nbsp; "+ (inches * 2.54).toFixed(2) +" cm &nbsp;&nbsp; "+ (inches * 25.4).toFixed(1) +" mm";
    document.getElementById("spnDec2").innerHTML = res;
}
function SetUp()
{
    document.getElementById("ddLengthFeet").selectedIndex = 1 + Math.floor(Math.random() * 3);
    document.getElementById("ddLengthInches").selectedIndex = Math.floor(Math.random() * 12);
    document.getElementById("ddLengthFrac").selectedIndex = Math.floor(Math.random() * 32);
    document.getElementById("_txtDec").value = (6 + Math.random() * 30).toFixed(2);
    ConvertToDec();
    ConvertToFrac();
}
function Mover2(td)
{
	clearTimeout(rndBond);
	td.style.backgroundColor="DarkOrange";
	var bc;
	if (td.cellIndex == 0)
		bc="1/2 block";
	else
	{
		bc = Math.floor((td.cellIndex+1)/2);
		if (td.cellIndex%2 ==0)
			bc+="~1/2";
		bc+=" blocks";
	}
	var measure = document.getElementById("spnBlockCount").innerHTML;
	if (isNaN(td.innerHTML)) // English
	{
	    if (td.innerHTML.indexOf("'") != td.innerHTML.length -1)
	        document.getElementById("spnBlockCount").innerHTML = td.innerHTML +"\" = "+ bc;
	    else
	        document.getElementById("spnBlockCount").innerHTML = td.innerHTML +" = "+ bc; 
	}
	else
	    document.getElementById("spnBlockCount").innerHTML = td.innerHTML +" = "+ bc;
	var inc = 27.5;
	var trb = document.getElementById("trBlocks");
	var newIndex = td.cellIndex;
	document.getElementById("tblBlocks").style.width = newIndex * inc + inc +"px"; 
}
function Mout2(td)
{
	td.style.backgroundColor="Yellow";
	//document.getElementById("spnBlockCount").innerHTML ="";
}
var rndBond = null;
function SetBond()
{
	rndBond = setTimeout("RandomBond()", 1000);
}
function RandomBond()
{	
	var rn = Math.floor(Math.random()*30)+2;
	var td = document.getElementById("trTape").cells[rn];
	Mover2(td);
	Mout2(td);
}