﻿var PCABR = function()
{
	var setupAutoSubmit = function()
	{
		var elSelect = document.getElementById("selCentre");
		var elButton = document.getElementById("btnSubmitCentre");
		
		if (elSelect)
		{
			elSelect.onchange = function()
			{
				this.form.submit();
			}
			
			elButton.parentNode.removeChild(elButton);
		}
	}
	
	var maximiseContentArea = function()
	{
		var elContent = document.getElementById("content");
		var elFooter = document.getElementById("site-info");
		var iViewportHeight;
		var iFooterHeight;
		var iNewHeight;
		
		if (!elFooter)
		{
			return;
		}
		
		iViewportHeight = window.innerHeight | document.documentElement.clientHeight;
		iFooterHeight = elFooter.clientHeight;
		iNewHeight = iViewportHeight - iFooterHeight - PCABR.DOM.getPosition(elContent).y;
		
		if (!window.innerHeight)
		{
			iNewHeight -= 26;
		}
		
		if (PCABR.DOM.getPosition(elFooter).y < iViewportHeight)
		{
			elContent.style.height = (iNewHeight - 1) + "px";
		}
		else
		{
			elContent.style.height = "auto";
			
			if (PCABR.DOM.getPosition(elFooter).y < iViewportHeight)
			{
				elContent.style.height = (iNewHeight - 1) + "px";
			}
		}
	}

	return {
	
		init : function()
		{
			maximiseContentArea();
			setupAutoSubmit();
			
			window.onresize = PCABR.onResize;
		},
		
		onResize : function()
		{
			maximiseContentArea();
		}
	
	}	
}();

PCABR.DOM = function()
{
	return {
		
		getMousePos : function(e)
		{
			var oPos = new Object();
			var iPosY = 0;
			if (!e) var e = window.event;
			
			if (e.pageX || e.pageY)
			{
				oPos.x = e.pageX;
				oPos.y = e.pageY;
			}
			else if (e.clientX || e.clientY)
			{
				oPos.x = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
				oPos.y = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
			}
			
			return oPos;
		},
		
		getPosition : function(el)
		{
			var oPosition = new Object();
			
			oPosition.x = oPosition.y = 0;
			
			while (el.offsetParent)
			{
				oPosition.x += el.offsetLeft;
				oPosition.y += el.offsetTop;
			
				el = el.offsetParent;
			}
			
			return oPosition;
		},
		
		getDimensions : function(el)
		{
			var oDimensions = new Object();
			
			oDimensions.x = el.offsetWidth;
			oDimensions.y = el.offsetHeight;
			
			return oDimensions;
		}
		
	}
}();

PCABR.Centres = function()
{
	var m_list = [];
	var m_elDetails = null;

	var drawDots = function()
	{
		var elContainer;
		var elDot;
		var oCentre;
		var i;
		
		elContainer = document.createElement("div");
		elContainer.id = "dots";
		
		document.getElementById("content-intro").appendChild(elContainer);
		
		for (i = 0; i < m_list.length; i++)
		{
			oCentre = m_list[i];
			
			elDot = document.createElement("a");
			elDot.centre = oCentre;
			elDot.style.left = oCentre.posX + "px";
			elDot.style.top = oCentre.posY + "px";
			elDot.className = "dot";
			elDot.href = "./body-repair/" + oCentre.ref;
			elDot.onmouseover = function(e){PCABR.Centres.showDetails(this, e)};
			elDot.onmouseout = function(){PCABR.Centres.hideDetails()};
			
			elContainer.appendChild(elDot);
		}
	}
	
	return {
		
		init : function()
		{
			drawDots();
		},
		
		addCentre : function(oCentre)
		{
			m_list.push(oCentre);
		},
		
		showDetails : function(elDot, e)
		{
			var oCentre = elDot.centre;
			var elInner = document.createElement("div");
			var elRegion = document.createElement("h2");
			var elName = document.createElement("p");
			var oElPos;
		
			this.hideDetails();
			
			m_elDetails = document.createElement("div");
			m_elDetails.id = "centre-hover-details";
			m_elDetails.className = "tooltip";
			
			m_elDetails.appendChild(elInner);
			
			elRegion.appendChild(document.createTextNode(oCentre.region));
			elInner.appendChild(elRegion);
			
			elName.appendChild(document.createTextNode(oCentre.name));
			elInner.appendChild(elName);
			
			document.body.appendChild(m_elDetails);
			
			// position the element
			oElPos = PCABR.DOM.getMousePos(e);
			oElPos.x -= (PCABR.DOM.getDimensions(m_elDetails).x / 2);
			
			m_elDetails.style.left = oElPos.x + "px";
			m_elDetails.style.top = oElPos.y + "px";
		},
		
		hideDetails : function()
		{
			if (m_elDetails && m_elDetails.parentNode)
			{
				m_elDetails.parentNode.removeChild(m_elDetails);
			}
		}
		
	}
	
}();