// Copyright TarrantIT 2000
function CalcHeight()
{
	var a = document.getElementById("tbAngle").value;
	var l = document.getElementById("tbCalcLength").value;
	var h = Math.floor(l*(Math.tan(a/57.29578)));
	document.getElementById("fntHeight").innerHTML=h+" high";
}
function CalcAngle()
{
	var h = document.getElementById("tbHeight").value;
	var l = document.getElementById("tbCalcLength").value;
	//var a = Math.floor(l*(Math.tan(a/57.29578)));
	var a = Math.atan2(h,l)*57.29578;
	document.getElementById("fntAngle").innerHTML=a.toFixed(1)+" deg";
}
function ChangeMagic(ctl)
{
	document.getElementById("txtAngle").value=ctl.value;
}
function ShowHeight()
{
	var l = document.getElementById("txtLength").value;
	var a = document.getElementById("_txtAngle").value;
	var h = Math.floor(l*(Math.tan(a/57.29578)));
	document.getElementById("tbCalcLength").value=l;
	document.getElementById("tbAngle").value=a;
}
var showCalc = false;
function ShowQuickCalc()
{
	document.getElementById("tbCalcLength").value=document.getElementById("txtLength").value;
	document.getElementById("tbAngle").value=document.getElementById("_txtAngle").value;
	if (showCalc)
		HideCalc();
	else
	{
		document.getElementById("divCalc").style.left="684px";
		showCalc = true;
	}
}
function HideCalc()
{
	document.getElementById("divCalc").style.left="-1000px";
	showCalc = false;	
}
function ShowImage(ctl)
{	
	document.getElementById(ctl).style.left="160px";
}
function HideImage(ctl)
{   
	document.getElementById(ctl).style.left="-1000px";
}
function ResetBlocks(series)
{
	if (series=="200")
	{
		document.getElementById("txtBlockLength").value="390";
		document.getElementById("txtBlockHeight").value="190";
		document.getElementById("txtJointSize").value="10";
	}
	else if (series=="Soft8")
	{
		document.getElementById("txtBlockLength").value="396.9";
		document.getElementById("txtBlockHeight").value="193.7";
		document.getElementById("txtJointSize").value="9.5";
	}
	document.getElementById("txtMatchPos").value="5";
	document.getElementById("txtMatchNeg").value="12";
	document.getElementById("txtMinOff").value="15";
	document.getElementById("txtToSmall").value="15";
}
function Help_onclick(prog, hei)
{
	var w = window.open("Help/"+prog+".htm",null,"height="+ hei +",width=650,scrollbars=yes,resizable=yes,status=no,toolbar=no,menubar=no,location=no");
	w.focus();
}
var settings = true;
function ShowSet()
{	
	if (settings)
	{
		document.getElementById("divSettings").style.left="150px";
	}
	else
	{
		document.getElementById("divSettings").style.left="-1000px";
	}
	settings = ! settings;
}	
function window_onload()
{
	if (document.getElementById("rblType_0").checked)
		document.getElementById("divTypePlain").style.display="block";
	else
		document.getElementById("divTypeCorner").style.display="block";
		
	document.getElementById("rblType_0").onclick = ShowType;
	document.getElementById("rblType_1").onclick = ShowType;
	document.getElementById("rblBeams_0").onclick = ShowType;
	document.getElementById("rblBeams_1").onclick = ShowType;
	document.getElementById("rblBeams_2").onclick = ShowType;
	document.getElementById("rblBond_0").onclick = ShowType;
	document.getElementById("rblBond_1").onclick = ShowType;
	ShowType();
	
	GotEm = true;
	var MessageDiv = document.getElementById("divDrawInPlace");
	if (MessageDiv == null)
	{
		return;
	}
	else	
	{
		Messages = MessageDiv.getElementsByTagName("img");
		totalMessages=Messages.length;
		halfMessages=Math.floor(totalMessages/2);
		MessageTop=1000+halfMessages;
	}
	SetNumeric();
}
function ShowType()
{
	// work out selected bond, type and beams
	var i = document.images["imgShowType"];
	var s =     document.getElementById("rblBond_0").checked;
	var beams = "0"; 
	if (document.getElementById("rblBeams_1").checked)
		beams = "1";
	if (document.getElementById("rblBeams_2").checked)
		beams = "2";
	
	if (document.getElementById("rblType_1").checked) // Corner
	{
		document.getElementById("divTypeCorner").style.display="block";
		document.getElementById("divTypePlain").style.display="none";
		switch(beams)
		{
			case "0":
				if (s) // its Stretcher
					i.src = "RakerImages/CuS.gif";
				else
					i.src = "RakerImages/CuH.gif";
				break;
			case "1":
				if (s)
					i.src = "RakerImages/CuS1.gif";
				else
					i.src = "RakerImages/CuH1.gif";
				break;
			case "2":
				if (s)
					i.src = "RakerImages/CuS2.gif";
				else
					i.src = "RakerImages/CuH2.gif";
				break;
		}
	}
	else  // its Plain
	{
		document.getElementById("divTypeCorner").style.display="none";
		document.getElementById("divTypePlain").style.display="block";
		switch(beams)
		{
			case "0":
				if (s)
					i.src = "RakerImages/PS.gif";
				else
					i.src = "RakerImages/PH.gif";
				break;
			case "1":
				if (s)
					i.src = "RakerImages/PS1.gif";
				else
					i.src = "RakerImages/PH1.gif";
				break;
			case "2":
				if (s)
					i.src = "RakerImages/PS2.gif";
				else
					i.src = "RakerImages/PH2.gif";
				break;
		}
	}
	ShowSetDown();
}

function ShowSetDown()
{
	var beams = 0; 
	if (document.getElementById("rblBeams_1").checked)
		beams = 1;
	if (document.getElementById("rblBeams_2").checked)
		beams = 2;
	var course = parseInt(document.getElementById("txtBlockHeight").value) +  parseInt(document.getElementById("txtJointSize").value);
	if (beams >0)
	{
		var rangle = document.getElementById("_txtAngle").value / (180/Math.PI);
		var setDown =  course/Math.cos(rangle) * beams;
		document.getElementById("lblSetDown").innerHTML= Math.round(setDown) +" Setdown";
	}
	else
		document.getElementById("lblSetDown").innerHTML = "";
}
var i;
function ShowConvert(ctrl, disp, event)
{
	// TarrantIT 2004
	if (! document.getElementById("cbShowConvert").checked) return;
	if (disp== null) disp=0;
	// disp = 0 yards. 1 = feet 3 == inches
	var eng="";
	var t;
	if (ctrl.innerHTML)
		t = Math.round(ctrl.innerHTML / 0.79375);  // 1/32 inches
	else
		t = Math.round(ctrl.value / 0.79375);  // 1/32 inches
	if (t==0) return;
	
	
	if (t >= 1152 && disp < 2) // its longer than 1 yard
	{
		var y = Math.floor(t/1152);
		t-= (y*1152); // take out the yards
		eng+= y==1 ? "1 yard, " : y +" yards, ";
	}
	if (t >= 384 && disp < 3) // its longer than 1 foot
	{
		var f = Math.floor(t/384);
		t-= (f*384); // take out the feet
		eng+= f==1 ? "1', " : f +"', ";
	}
	if (t >= 32 && disp < 4) // we have inches left over
	{
		i = Math.floor(t/32);
		t-= (i*32);
		eng+= i;			
	}
	if (t > 0)
	{
		if (i >0) // only if the fraction follows an inches measurement
			eng+= "-";
		if (t%16 == 0) // its an even half inch
			eng+= "1/2";
		else if (t%8 == 0) // its is in 1/4 ( 1, 2 or 3)
			eng+= t/8 +"/4";
		else if (t%4 == 0) // its is in 1/8 ( 1, 3, 5 or 7)
			eng+= t/4 +"/8";
		else if (t%2 == 0) // its is in 1/16 ( 1, 3, 5, 7, 9 etc)
			eng+= t/2 +"/16";
		else
			eng+= t +"/32";
		eng+= "\"";
	}
	else
		eng+= "\"";
		
	var deltaX = event.clientX;
	var deltaY = event.clientY + document.body.scrollTop;
	document.getElementById("divConvert").style.left = deltaX - 50 +"px";
	document.getElementById("divConvert").style.top = deltaY + 10 +"px";
	document.getElementById("divConvert").innerHTML= eng;
}
function HideConvert()
{
	document.getElementById("divConvert").style.left="-1000px";
}
function beginDrag(elementToDrag, event)
{
	var deltaX = event.clientX - parseInt(elementToDrag.style.left);
	var deltaY = event.clientY - parseInt(elementToDrag.style.top);
	if (document.addEventListener) // dom level 2 event model
	{
		document.addEventListener("mousemove", moveHandler, true);
		document.addEventListener("mouseup", upHandler, true);
	}
	else if (document.attachEvent) // IE5+ Event Model
	{
		document.attachEvent("onmousemove", moveHandler);
		document.attachEvent("onmouseup", upHandler);
	}
	else // IE4 Event Model
	{
		var oldmovehandler = document.onmouseover;
		var olduphandler = document.onmouseup;
		document.onmousemove =  moveHandler;
		document.onmouseup = upHandler;
	}
	if  (event.stopPropogation) event.stopPropogation(); // DOM Level 2
	else event.cancelBubble = true;  // IE

	if  (event.preventDefault) event.preventDefault();
	else event.returnValue = false;

	function moveHandler(e)
	{
		if (!e) e = window.event; // IE Event Model
		elementToDrag.style.left = (e.clientX - deltaX) +"px";
		elementToDrag.style.top = (e.clientY - deltaY) + "px";
		
		if (e.stopPropogation) e.stopPropogation();  // DOM Level 2
	 	else cancelBubble = true;  // IE
	}
	function upHandler(e)
	{	
		if (!e) e = window.event; // IE Event Model
		if (document.removeEventListener)  // DOM Event Model
		{
			document.removeEventListener("mouseup", upHandler, true);
			document.removeEventListener("mousemove", moveHandler, true);
		}
		else if (document.detachEvent) // IE 5 +
		{
			document.detachEvent("onmouseup", upHandler);
			document.detachEvent("onmousemove", moveHandler);
		}
		else // IE 4 
		{
			document.onmouseup = olduphandler;
			document.onmousemove = oldmovehandler;
		}
		if (e.stopPropogation) e.stopPropogation(); // DOM Level 2
		else e.cancelBubble = true;  //IE
	}
}
var Messages;  // global array of all messages by div ID
var totalMessages;
var halfMessages=0;
var MessageTop=0;
var PageTimerID;
var GotEm=false;
var oldZ;

function OnTop(ctrl)
{
	if(Stacking) return;
	if (stacked)
		oldZ=ctrl.style.zIndex;
	MessageTop++;
	ctrl.style.zIndex=MessageTop;
}
function BackUnder(ctrl)
{
	if (stacked)
		ctrl.style.zIndex=oldZ;
}
var Order=false;
var LastZ=0;
var LastLeft=0;
var stackTargetLeft=320;
var stackTargetTop =560;
var stacked=false;
var stillMore=true;
var PageLeft=-100;
var xPage = 100;
var incFactor=.01;
var Stacking = false;

function StackUp()
{
	if (Stacking){return;}
	if (! GotEm) // page not loaded
		return;
	if (totalMessages < 3) return;
	stackTimerID=setInterval("StackGo()", 210-totalMessages);
	for (var i=0; i< totalMessages; i++)
	{
		Messages[i].style.zIndex=1000-i; 
	}
	Stacking = true;
	incFactor=.02;
	MessageTop=1000;
	showPage=0;
	stacked=true;
}
function StackGo()
{	
	{
		stillMore=false;
		var leftNow;
		var topNow;
		//var incFactor=.17;//.17
		incFactor*=1.2;
		for (var c=0; c < totalMessages; c++)
		{
			leftNow=parseInt(Messages[c].style.left);
			if (leftNow < stackTargetLeft)
			{
				Messages[c].style.left = parseInt(Messages[c].style.left) + Math.ceil(((stackTargetLeft-leftNow)*incFactor)) +"px";
				stillMore=true;
			} 
			if (leftNow > stackTargetLeft)
			{
				Messages[c].style.left = parseInt(Messages[c].style.left) - Math.ceil(((leftNow-stackTargetLeft)*incFactor)) +"px";
				stillMore=true;
			}
			topNow=parseInt(Messages[c].style.top);
			if (topNow < stackTargetTop)
			{
				Messages[c].style.top = parseInt(Messages[c].style.top) + Math.ceil(((stackTargetTop-topNow)*incFactor)) +"px";
				stillMore=true;
			} 
			if (topNow > stackTargetTop)
			{
				Messages[c].style.top = parseInt(Messages[c].style.top) - Math.ceil(((topNow-stackTargetTop)*incFactor)) +"px";
				stillMore=true;
			}
		}
		if (! stillMore)
		{
			clearInterval(stackTimerID);
			for (var i=0; i< totalMessages; i++)
			{
				Messages[i].style.zIndex=(1000+halfMessages)-i;
			}
			Splay();
			Order=true;	
			Stacking =false;
		} 
	}
}
function Splay()
{
	var leftInc =Math.ceil((250-totalMessages)/50); // 75
	var adj = (300-totalMessages)/(totalMessages*8);
	var leftPos=0;
	var topPos=0;
	for (var c=0; c < totalMessages; c++)
	{
		Messages[c].style.left = stackTargetLeft+leftPos +"px";
		Messages[c].style.top = stackTargetTop+topPos +"px";
		leftPos+=leftInc;
		topPos +=  (halfMessages - c)*adj;
		//Messages[c].style.zIndex=(1000+halfMessages)-c; //removed revised
		Messages[c].style.zIndex=1000-c;
	}
	stacked=true;
}
function Scatter()
{
	if (! GotEm) // page not loaded
		return;
	if (Stacking){return;}
	clearInterval(stackTimerID);
	var scatterLeft=800;
	var scatterTop=(totalMessages / 6) * 80;
	for (var c=0; c < totalMessages; c++)
	{
		Messages[c].style.left = 50+Math.floor(Math.random()*scatterLeft) +"px";
		Messages[c].style.top = 130+Math.floor(Math.random()*scatterTop) +"px";
	}
	stacked=false;
}
var GoLeft=true;
var direction="Up";
function PageUp()
{
	if (Messages==null) return;
	if (Stacking){return;}
	if (showPage==totalMessages)
	{		
		direction="Back";
		return;	
	}
	mesg=Messages[showPage%totalMessages];
	mesg.style.left = parseInt(mesg.style.left) + PageLeft +"px";
	showPage++;
}
function PageBack()
{
	if (Stacking){return;}
	if (showPage==0)
	{		
		direction="Up";
		return;
	}
	showPage--;
	mesg=Messages[showPage%totalMessages];
	mesg.style.left = parseInt(mesg.style.left) - PageLeft +"px";
}
function NextPage()
{
	if (Stacking){return;}
	if (GoLeft)
	{
		PageLeft=-xPage;
	}
	else
	{
		PageLeft=xPage;
	}
	Page();	
}
document.onkeydown = HandleDown;
function HandleDown(evt)
{
	evt=(evt) ? evt : ((event) ? event : null);
	if(evt)
	{
		switch (evt.keyCode)
		{
			case 39:
				stacked ? PageUp() : StackUp(); // Right Arrow
				break;
			case 37:
				stacked ? PageBack() : StackUp(); // Left Arrow
				break;
			case 38:
				StackUp(); // Up Arrow
				break;	
			case 17:
				stacked ? Page() : StackUp(); // Ctrl
				break;
			case 40:
				Scatter(); // Down Arrow
				break;		
		}
	}
}
function MouseLeft()
{
	stacked ? PageBack() : StackUp();
}
function MouseRight()
{
	stacked ? PageUp() : StackUp();
}
function ExplainCodes()
{
    var exp = "H1 = Height 1 - the first (starting) height of a cut block\n";
    exp += "H2 = Height 2 - the second (end) height of a cut block\n\n";
    exp += "BL = Bottom Length - the (bottom) length of a cut block wehere the cut starts from the bottom of the block\n";
    exp += "TL = Top Length - the (top) length of a cut block where the end of the cut is at the top of the block";
    alert(exp);
}
