function layoutInit(x,y,x2) {

	// x = h start of line, y = v start of line, x2 = h end of line

	boxAoffX = x;
	boxAoffY = y;
	boxBoffX = x2;
	
	layout();
	window.onresize = layout;
	findRollOvers();
}

function homeLayout() {
	//# Ensure menu doesn't shrink below 750
	var mainMenu = document.getElementById('menunav');
	mainMenu.style.width = Math.max(750,(document.body.clientWidth*0.7))+'px';
	
	//# Get elements to draw lines beween
	var pointA = document.getElementById('pointA');
	var pointB = document.getElementById('pointB');
	
	var pointC = document.getElementById('pointC');
	var pointD = document.getElementById('pointD');
	var boxC = document.getElementById('boxC');
	var boxD = document.getElementById('boxD');
	
	var pointE = document.getElementById('pointE');
	var pointF = document.getElementById('pointF');
	var boxE = document.getElementById('boxE');
	var boxF = document.getElementById('boxF');
	
	//# Draw lines
	drawLines(pointA,pointB,null,null,null);
	drawLines(pointC,pointD,null,null,null,boxC,boxD);
	drawLines(pointE,pointF,null,null,null,boxE,boxF);
	
	window.onresize = homeLayout;
	findRollOvers();
}

function layout() {

	//# Ensure menu doesn't shrink below 750
	var mainMenu = document.getElementById('menunav');
	mainMenu.style.width = Math.max(750,(document.body.clientWidth*0.7))+'px';
	
	//# Get two elements to draw lines beween
	var pointA = document.getElementById('pointA');
	var pointB = document.getElementById('pointB');
	
	//# Draw lines
	if(pointA != null && pointB != null) drawLines(pointA,pointB,boxAoffX,boxAoffY,boxBoffX);
	
}

function findRollOvers() {

	//# This function searches for images to setup as rollovers

	var tag = '?rollover=';
	var images = document.getElementsByTagName('img');
	var srcString;
	
	for(var i = 0; i < images.length; i++) {
	
		srcString = images[i].getAttribute('src');
	
		//# If src matches tag, extract tag info and pass to rollover setup
		if(srcString.indexOf(tag) != -1) isRollOver(images[i],srcString.substring(srcString.indexOf(tag)+tag.length));
	}
	
}

function isRollOver(imgObj,overApend) {

	//# isRollOver(Image,String)
	//# This function creates a rollover effect by trying to load the original src with overApend added to the end.
	//# eg. isRollOver(Image,'_off') will try to swap Image.src = myImage.gif and Image.src = myImage_off.gif
	
	
	//# Construct src strings
	var offsrc = String(imgObj.src);
	var onsrc = offsrc.substring(0,offsrc.lastIndexOf('.'))+overApend+offsrc.substr(offsrc.lastIndexOf('.'));

	//# Preload over image
	var preLoad = new Image();
	preLoad.src = onsrc;
	
	//# Assign onmouse events
	imgObj.onmouseover = function() {
		this.src = onsrc;
	}
	
	imgObj.onmouseout = function() {
		this.src = offsrc;
	}
}

function drawLines(obj1,obj2,hpad,vpad,hpad2,boxA,boxB) {

	var padding = 25;
	if(hpad == null) hpad = 0;
	if(vpad == null) vpad = (obj1.offsetHeight/2);
	if(hpad2 == null) hpad2 = 0;
	
	if(boxA == null) boxA = document.getElementById('boxA');
	if(boxB == null) boxB = document.getElementById('boxB');
	
	//# Find element offsets
	var x1 = findPosX(obj1);
	var y1 = findPosY(obj1);
	var x2 = findPosX(obj2);
	var y2 = findPosY(obj2);
	
	var x1offSet = x1+hpad+(hpad > 0 ? padding : -padding);
	var x2offSet = x2+hpad2;
	
	//# This is the verticle point where the two elements meet
	var midPoint = (y1+obj1.offsetHeight)+((y2-(y1+obj1.offsetHeight))/2)+10; //# Set roughly half way
	//var midPoint = 180;
	
	
	
	//# Move boxA
	boxA.style.left = x1offSet+'px';
	boxA.style.top = (y1+vpad)+'px';

	//# Set boxA width/height
	boxA.style.width = padding+'px';
	boxA.style.height = (midPoint-y1-vpad)+'px';
	
	//# If hpad is negative, make boxA righthanded
	if(hpad > 0) {
			
		boxA.style.borderLeft = '#cc0000 0px dashed';
		boxA.style.borderRight = '#cc0000 1px dashed';
	
	} else {
		boxA.style.borderLeft = '#cc0000 1px dashed';
		boxA.style.borderRight = '#cc0000 0px dashed';
	}
	
	//# If pointA is before pointB, make boxB righthanded
	if(x1offSet <= x2offSet) {
		
		boxB.style.borderLeft = '#cc0000 0px dashed';
		boxB.style.borderRight = '#cc0000 1px dashed';
	
		boxB.style.left = (x1offSet+(hpad > 0 ? padding : 0))+'px';
		boxB.style.width = (x2offSet-x1offSet+(hpad > 0 && (x1offSet-x2offSet) > padding ? padding : 0))+'px';
	} else {
	
		boxB.style.borderLeft = '#cc0000 1px dashed';
		boxB.style.borderRight = '#cc0000 0px dashed';
	
		boxB.style.left = x2offSet+'px';
		boxB.style.width = (x1offSet-x2offSet+(hpad > 0 ? padding : 0))+'px';
	}
	
	//# Set boxB height
	boxB.style.top = midPoint+'px';
	boxB.style.height = (y2-midPoint)+'px';

	
}

function findPosX(obj) {
//# Find the total page offsetLeft of an element

	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj) {
//# Find the total page offsetTop of an element

	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}