// JavaScript Document



/***********************************************

* Image w/ description tooltip- By Dynamic Web Coding (www.dyn-web.com)

* Copyright 2002-2007 by Sharon Paine

* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code

***********************************************/



/* IMPORTANT: Put script after tooltip div or 

	 put tooltip div just before </BODY>. */



var dom = (document.getElementById) ? true : false;

var ns5 = (!document.all && dom || window.opera) ? true: false;

var ie5 = ((navigator.userAgent.indexOf("MSIE")>-1) && dom) ? true : false;

var ie4 = (document.all && !dom) ? true : false;

var nodyn = (!ns5 && !ie4 && !ie5 && !dom) ? true : false;



var origWidth, origHeight;



// avoid error of passing event object in older browsers

if (nodyn) { event = "nope" }



///////////////////////  CUSTOMIZE HERE   ////////////////////

// settings for tooltip 

// Do you want tip to move when mouse moves over link?

var tipFollowMouse= true;	

// Be sure to set tipWidth wide enough for widest image

var tipWidth= 200;

var offX= 130;	// how far from mouse to show tip

var offY= 12; 

var tipFontFamily= "Arial, Helvetica, sans-serif";

var tipFontSize= "100%";

// set default text color and background color for tooltip here

// individual tooltips can have their own (set in messages arrays)

// but don't have to

var tipFontColor= "#000000";

var tipBgColor= "#DDECFF"; 

var tipBorderColor= "#000080";

var tipBorderWidth= 3;

var tipBorderStyle= "ridge";

var tipPadding= 4;



// tooltip content goes here (image, description, optional bgColor, optional textcolor)

var messages = new Array();

// multi-dimensional arrays containing: 

// image and text for tooltip

// optional: bgColor and color to be sent to tooltip

messages[0] = new Array('','Planning consultants specialise in helping clients who have planning applications that are particularly contentious or ambitious, and which therefore require specialist knowledge of planning law in order to be successful.','gray','white');

messages[1] = new Array('','A structural engineer will provide designs and calculations for foundations, beams, pillars & columns, and will ensure structural stability of the proposal.','gray','white');

messages[2] = new Array('','Civil engineers specialise in designing external engineering elements such as the design and specification of roads & driveways, sewers & drains, site levels & retaining walls.','gray','white');

messages[3] = new Array('','Transport engineers specialise in assessing the wider traffic impact of a proposal on its surroundings, and are usually engaged on large projects where a new access may create the need for new traffic lights, pedestrian crossings, or other alterations to the existing road network. Conversely these guys are sometimes able to overcome a local authority’s request for such measures by proving them unnecessary, thus saving their client considerable cost.','gray','white');

messages[4] = new Array('','Land surveyors will survey a site using theodilites and other specialist electronic surveying equipment to provide an electronic and accurate survey drawing including levels. These survey drawings can be used by architects as a base for their design drawings, affording accurate building plotting at the design stage, and co-ordinated setting out at the build stage.','gray','white');

messages[5] = new Array('','Geotechnical and environmental engineers specialise in assessing ground conditions in terms of bearing capacity for foundations and remediation of contamination.','gray','white');

messages[6] = new Array('','Ecologists specialise in assessing buildings and sites for their habitat value, and in devising strategies for achieving developments whilst protecting wildlife. The most common issue tackled is the presence of bats, however a wide scope of other protected species can also be covered, such as badgers, newts, and lizards to name a few.','gray','white');

messages[7] = new Array('','&nbsp;','gray','white');

messages[8] = new Array('','Hazardous materials surveyors specialise in identifying the presence (or absence) of materials such as asbestos, and in advising on strategies for their safe removal during demolition or refurbishment. In addition to their services regarding hazardous building materials, they are also able to help with commercial and industrial premises where previous owners have left behind barrels or other containers of unknown substances.','gray','white');

messages[9] = new Array('','Acousticians specialise in quantifying a noise which may affect a site, such as a busy road or railway line, and in advising on mitigation against that noise to achieve satisfactory development.','gray','white');

messages[10] = new Array('','About Mark - Prior to founding Merrington Project Services Mark worked in the house building industry for over twenty years. Qualifying as an architectural technician in his early career in 1989, Mark held a number of senior design and technical posts with national house builders before founding Merrington Project Services. Mark\'s career prior to Merrington Project Services saw him involved in the development of over five thousand new homes on more than fifty different projects. These projects ranged from small developments of several executive homes, through regular housing schemes, to refurbishment of historic buildings and contemporary city centre apartment complexes.','gray','white');

messages[11] = new Array('','&nbsp;','gray','white');









////////////////////  END OF CUSTOMIZATION AREA  ///////////////////



// preload images that are to appear in tooltip

// from arrays above

if (document.images) {

	var theImgs = new Array();

	for (var i=0; i<messages.length; i++) {

  	theImgs[i] = new Image();

		theImgs[i].src = messages[i][0];

  }

}



// to layout image and text, 2-row table, image centered in top cell

// these go in var tip in doTooltip function

// startStr goes before image, midStr goes between image and text

var startStr = '<table width="' + tipWidth + '"><tr><td align="center" width="100%">';

var midStr = '</td></tr><tr><td valign="top">';

var endStr = '</td></tr></table>';



////////////////////////////////////////////////////////////

//  initTip	- initialization for tooltip.

//		Global variables for tooltip. 

//		Set styles

//		Set up mousemove capture if tipFollowMouse set true.

////////////////////////////////////////////////////////////

var tooltip, tipcss;

function initTip() {

	if (nodyn) return;

	tooltip = (ie4)? document.all['tipDiv']: (ie5||ns5)? document.getElementById('tipDiv'): null;

	tipcss = tooltip.style;

	if (ie4||ie5||ns5) {	// ns4 would lose all this on rewrites

		tipcss.width = tipWidth+"px";

		tipcss.fontFamily = tipFontFamily;

		tipcss.fontSize = tipFontSize;

		tipcss.color = tipFontColor;

		tipcss.backgroundColor = tipBgColor;

		tipcss.borderColor = tipBorderColor;

		tipcss.borderWidth = tipBorderWidth+"px";

		tipcss.padding = tipPadding+"px";

		tipcss.borderStyle = tipBorderStyle;

	}

	if (tooltip&&tipFollowMouse) {

		document.onmousemove = trackMouse;

	}

}



window.onload = initTip;



/////////////////////////////////////////////////

//  doTooltip function

//			Assembles content for tooltip and writes 

//			it to tipDiv

/////////////////////////////////////////////////

var t1,t2;	// for setTimeouts

var tipOn = false;	// check if over tooltip link

function doTooltip(evt,num) {

	if (!tooltip) return;

	if (t1) clearTimeout(t1);	if (t2) clearTimeout(t2);

	tipOn = true;

	// set colors if included in messages array

	if (messages[num][2])	var curBgColor = messages[num][2];

	else curBgColor = tipBgColor;

	if (messages[num][3])	var curFontColor = messages[num][3];

	else curFontColor = tipFontColor;

	if (ie4||ie5||ns5) {

		var tip = startStr + messages[num][0] + midStr + '<span style="font-family:' + tipFontFamily + '; font-size:' + tipFontSize + '; color:' + curFontColor + ';">' + messages[num][1] + '</span>' + endStr;

		tipcss.backgroundColor = curBgColor;

	 	tooltip.innerHTML = tip;

	}

	if (!tipFollowMouse) positionTip(evt);

	else t1=setTimeout("tipcss.visibility='visible'",100);

}



var mouseX, mouseY;

function trackMouse(evt) {

	standardbody=(document.compatMode=="CSS1Compat")? document.documentElement : document.body //create reference to common "body" across doctypes

	mouseX = (ns5)? evt.pageX: window.event.clientX + standardbody.scrollLeft;

	mouseY = (ns5)? evt.pageY: window.event.clientY + standardbody.scrollTop;

	if (tipOn) positionTip(evt);

}



/////////////////////////////////////////////////////////////

//  positionTip function

//		If tipFollowMouse set false, so trackMouse function

//		not being used, get position of mouseover event.

//		Calculations use mouseover event position, 

//		offset amounts and tooltip width to position

//		tooltip within window.

/////////////////////////////////////////////////////////////

function positionTip(evt) {

	if (!tipFollowMouse) {

		standardbody=(document.compatMode=="CSS1Compat")? document.documentElement : document.body

		mouseX = (ns5)? evt.pageX: window.event.clientX + standardbody.scrollLeft;

		mouseY = (ns5)? evt.pageY: window.event.clientY + standardbody.scrollTop;

	}

	// tooltip width and height

	var tpWd = (ie4||ie5)? tooltip.clientWidth: tooltip.offsetWidth;

	var tpHt = (ie4||ie5)? tooltip.clientHeight: tooltip.offsetHeight;

	// document area in view (subtract scrollbar width for ns)

	var winWd = (ns5)? window.innerWidth-20+window.pageXOffset: standardbody.clientWidth+standardbody.scrollLeft;

	var winHt = (ns5)? window.innerHeight-20+window.pageYOffset: standardbody.clientHeight+standardbody.scrollTop;

	// check mouse position against tip and window dimensions

	// and position the tooltip 

	if ((mouseX+offX+tpWd)>winWd) 

		tipcss.left = mouseX-(tpWd+offX)+"px";

	else tipcss.left = mouseX+offX+"px";

	if ((mouseY+offY+tpHt)>winHt) 

		tipcss.top = winHt-(tpHt+offY)+"px";

	else tipcss.top = mouseY+offY+"px";

	if (!tipFollowMouse) t1=setTimeout("tipcss.visibility='visible'",100);

}



function hideTip() {

	if (!tooltip) return;

	t2=setTimeout("tipcss.visibility='hidden'",100);

	tipOn = false;

}



document.write('<div id="tipDiv" style="position:absolute; visibility:hidden; z-index:100"></div>')

