// ----------------------
// Code to make the website more accessible to everyone - (C) 2009 
// For Squirrel Construction Ltd - 05/11/2009
// ----------------------

//setCookie("toolbar", "true");

function setCookie(c_name, value)
{
	var exdate = new Date();
	exdate.setDate(exdate.getDate()+60*60*48);
	document.cookie = c_name+ "=" +escape(value)+ ";expires="+exdate.toGMTString()+";path=" + escape ( "/" );
}

function getCookie(c_name)
{
	//alert(document.cookie);
	if (document.cookie.length > 0)
	{
		var c_start = document.cookie.indexOf(c_name + "=");
		if (c_start != -1)
		{
			c_start = c_start + c_name.length + 1;
			var c_end = document.cookie.indexOf(";", c_start);
			if (c_end == -1) 
				c_end = document.cookie.length;
			return unescape(document.cookie.substring(c_start, c_end));
		}
	}
	return "";
}

function deleteCookie(name) 
{	
	document.cookie = name + "=;expires=Thu, 01-Jan-1970 00:00:01 GMT"+";path=" + escape ( "/" );
}

function isToolBarOn()
{
	var toolBar = getCookie("toolbar");
	if (toolBar == "")
	{
		setCookie("toolbar", "true");
		return true;
	}
	
	return toolBar == "true";
}


function isCookiesEnabled()
{
	setCookie('test', 'none', 100);
	if (getCookie('test') != "")
	{
		deleteCookie('test');
		return true;
	}
	
	return false;
}

var cookiesEnabled = isCookiesEnabled();
var accessibilityKey = false;
	var objectOnPage = new Array(
		Array("A_Home", "H", "", ""),
		Array("A_HomeEx", "H", "", "EX"),
		Array("A_About", "A", "", ""),
		Array("A_AboutEx", "A", "", "EX"),
		Array("A_Gallery", "G", "", ""),
		Array("A_BoundaryWall", "B", "", "EX"),
		Array("A_Pointing", "P", "", "EX"),
		Array("A_IMG_1", "1", "", "EX"),
		Array("A_IMG_2", "2", "", "EX"),
		Array("A_IMG_3", "3", "", "EX"),
		Array("A_IMG_4", "4", "", "EX"),
		Array("A_IMG_5", "5", "", "EX"),
		Array("A_GalleryEx", "G", "", "EX"),
		Array("A_Services", "S", "", ""),
		Array("A_Testimonials", "T", "", ""),
		Array("A_TestimonialsEx", "T", "", "EX"),
		Array("A_News", "N", "", ""),
		Array("A_NewsEx", "N", "", "EX"),
		Array("A_ContactUs", "C", "", ""),
		Array("A_ContactUsEx2", "C", "", "AnyWidth"),
		Array("A_ContactUsEx", "C", "", "AnyWidth"),
		Array("A_Extensions", "E", "", ""),
		Array("A_ReadArticleB","B", "", ""),
		Array("A_ReadArticleK","K", "", ""),
		Array("A_ReadArticleF","F", "", ""),
		Array("A_ReadArticleJ","J", "", ""),
		Array("A_NewsArticle1", "1", "", ""),
		Array("A_NewsArticle2", "2", "", ""),
		Array("A_NewsArticle3", "3", "", ""),
		Array("A_NewsArticle4", "4", "", ""),
		Array("A_NewsArticle5", "5", "", ""),
		Array("A_NewsArticle6", "6", "", ""),
		Array("A_NewsArticle7", "7", "", ""),
		Array("A_NewsArticle8", "8", "", ""),
		Array("A_NewsArticle9", "9", "", ""),
		Array("A_NewBuild", "L", "", ""),
		Array("A_BoundaryWalls", "W", "", ""),
		Array("A_Pavings", "P", "", ""),
		Array("A_Repointing", "I", "", ""),
		Array("A_Garage", "R", "", ""),
		Array("A_Conservatories", "V", "", ""),
		Array("A_Kitchens", "K", "", ""),
		Array("A_Kitchens2", "K", "", "EX"),
		Array("A_Groundworks", "D", "", ""),
		Array("A_Bricklayer", "Y", "", ""),
		Array("A_CASEone", "O", "", ""),
		Array("A_CASEtwo", "W", "", ""),
		Array("A_CASEthree", "R", "", ""),
		Array("A_CASE1", "1", "", ""),
		Array("A_CASE2", "2", "", ""),
		Array("A_CASE3", "3", "", ""),
		Array("A_subscribe", "Z", "", ""),
		Array("A_INX_1", "1", "", "EX"),
		Array("A_INX_2", "2", "", "EX"),
		Array("A_INX_3", "3", "", "EX"),
		Array("A_INX_4", "4", "", "EX"),
		Array("A_INX_5", "5", "", "EX"),
		Array("A_INX_6", "6", "", "EX"),
		Array("A_INX_7", "7", "", "EX"),
		Array("A_INX_8", "8", "", "EX"),
		Array("A_INX_9", "9", "", "EX"),
		Array("A_INX_B", "B", "", "EX"),
		Array("A_INX_D", "D", "", "EX"),
		Array("A_INX_E", "E", "", "EX"),
		Array("A_INX_F", "F", "", "EX"),
		Array("A_INX_I", "I", "", "EX"),
		Array("A_INX_J", "J", "", "EX"),
		Array("A_INX_K", "K", "", "EX"),
		Array("A_INX_X", "X", "", "EX"),
		Array("A_INX_O", "O", "", "EX"),
		Array("A_INX_P", "P", "", "EX"),
		Array("A_INX_R", "R", "", "EX"),
		Array("A_IMG_FIRST", "[", "", "EX"),
		Array("A_IMG_PREV", "<", "", "EX"),
		Array("A_IMG_NEXT", ">", "", "EX"),
		Array("A_IMG_LAST", "]", "", "EX"),
		Array("A_Copyright", "M", "", "EX"),
		Array("A_Links", "Q", "", "EX"),
		Array("A_accessibility", "0", "", "EX"),
		Array("A_FreeIndex", "/", "", "EX"),
		Array("A_OtherUKBuilders", "U", "", "EX"),
		Array("A_sitemap", "X", "", "EX"),
		Array("A_Extensions1", "6", "", ""),
		Array("A_Extensions2", "7", "", ""),
		Array("A_Extensions3", "8", "", ""),
		Array("A_Extensions4", "9", "", ""),
		Array("A_Extensions5", "O", "", ""),
		Array("A_Extensions6", "F", "", ""),
		Array("A_Extensions7", "[", "", ""),
		Array("A_ExtFoundations", "F", "", "EX"),
		Array("A_ExtStepByStep", "6", "", "EX"),
		Array("A_ExtCost", "7", "", "EX"),
		Array("A_SearchIndex", "=", "", ""),
		Array("A_IMG_A_Gallery_P", "P", "", "EX"),
		Array("A_IMG_A_Gallery_D", "D", "", "EX"),
		Array("A_IMG_A_Gallery_E", "E", "", "EX"),
		Array("A_IMG_A_Gallery_F", "F", "", "EX"),
		Array("A_IMG_A_Gallery_R", "R", "", "EX")
		);

function pokeAccessibilityKey()
{
	accessibilityKey = !accessibilityKey;
	
	for (var i in objectOnPage)
	{
		var obj = document.getElementById(objectOnPage[i][0]);
		if (obj)
		{
			if (objectOnPage[i][2] == "")
				objectOnPage[i][2] = obj.innerHTML;
			
			if (accessibilityKey)
				obj.innerHTML = "<span class='accessKey"+(objectOnPage[i][3])+"'>" + objectOnPage[i][1] + "</span>" + objectOnPage[i][2];
			else
				obj.innerHTML = objectOnPage[i][2];
		}
	}
}
	
function accessText()
{
	var obj = document.getElementById("accessibilityInfo");
	if (obj)
		obj.style.display = "block";
}



function activateAccessability()
{
	accessText();
	pokeAccessibilityKey();
}

function changeAccess(accessKey)
{

	var newCSS = "accessibilityAccessKey";
	swapCSS(newCSS + accessKey + ".css", newCSS.length);

	if (accessKey == 0 && accessibilityKey)
		pokeAccessibilityKey();
	else
		if (accessKey > 0 && !accessibilityKey)
			pokeAccessibilityKey();
}

function changeFontSize(fontSize)
{
	var newCSS = "accessibilityFontSize";
	var size = newCSS.length;
	newCSS += fontSize+".css";
	
	swapCSS(newCSS, size);
}	

function changeButton(button)
{
	var newCSS = "accessibilityButton";
	var size = newCSS.length;
	newCSS += button+".css";
	
	swapCSS(newCSS, size);
}	


function changeDisplay(colours)
{
	var newCSS = "accessibilityVDU-";
	var size= newCSS.length;
	newCSS += colours+".css";
	
	swapCSS(newCSS, size);
}	


function changeFontFace(fontFace)
{
	var newCSS = "accessibilityFontFace";
	var size= newCSS.length;
	newCSS += fontFace+".css";
	
	swapCSS(newCSS, size);
}	


function swapCSS(newCSS, size)
{
	if (!removeCSS(newCSS, size))
		return; // already got this...
	
	var cssLink = document.createElement("link");
	cssLink.setAttribute("rel", "stylesheet");
	cssLink.setAttribute("type", "text/css");
	cssLink.setAttribute("href", cssPath+newCSS+ "?version=1");//+Math.random(0));

	document.getElementsByTagName("head")[0].appendChild(cssLink);
}

function removeCSS(filename, size)
{
	var allsuspects = document.getElementsByTagName("link");
	for (var i=allsuspects.length; i>=0; i--)
	{
	
		if (allsuspects[i] != null)
		{		
			var attribute = allsuspects[i].getAttribute("href");
			if (attribute != null)
			{
				if (attribute.indexOf(filename) != -1)
					return false;
				
				if (attribute.indexOf(filename.substring(0,size-1)) != -1)
					allsuspects[i].parentNode.removeChild(allsuspects[i]);
			}
		}
	}
	return true;
}

function changeDisplayNext(overideCS)
{
	if (overideCS == null)
	{
		if (accessCS++ >= 2)
			accessCS = 0;
	}
	else
		accessCS = overideCS;
		
	setCookie("accessCS", accessCS);
	
	var cs = new Array("N", "BW", "WB");
	changeDisplay(cs[accessCS]);
	var obj = document.getElementById("Access_CS");
	if (obj)
		obj.style.backgroundPosition = -(24 * accessCS) + "px 0px";
	updateBubbleImage();
	updateAccessMarker(accessCS);
}

function changeFontSizeNext(overideFS)
{
	if (overideFS == null)
	{
		if (accessFS++ >= 2)
			accessFS = 0;
	}
	else
		accessFS = overideFS;
	
	setCookie("accessFS", accessFS);
	
	var fs = new Array(12, 14, 16);
	changeFontSize(fs[accessFS]);
	document.getElementById("Access_FS").style.backgroundPosition = -(24 * accessFS) + "px -24px";
	updateAccessMarker(accessFS);
}

function changeButtonNext(overideB)
{
	if (overideB == null)
	{
		if (accessB++ >= 2)
			accessB = 0;
	}
	else
		accessB = overideB;
		
	setCookie("accessB", accessB);
	
	changeButton(accessB);
	document.getElementById("Access_B").style.backgroundPosition = -(24 * accessB) + "px -72px";
	updateAccessMarker(accessB);
}


function changeAccessNext(overideA)
{
	if (overideA == null)
	{
		if (accessA++ >= 3)
			accessA = 0;
	}
	else
		accessA = overideA;
		
	setCookie("accessA", accessA);
	
	changeAccess(accessA);
	document.getElementById("Access_A").style.backgroundPosition = -(24 * accessA) + "px -48px";
	updateAccessMarker(accessA);
}


function changeFontFaceNext(overideF)
{
	if (overideF == null)
	{
		if (accessF++ >= 3)
			accessF = 0;
	}
	else
		accessF = overideF;
		
	setCookie("accessF", accessF);
	
	changeFontFace(accessF);
	document.getElementById("Access_F").style.backgroundPosition = -(24 * accessF) + "px -96px";
	updateAccessMarker(accessF);
}

function showBubble(xPos)
{
	var bubble = document.getElementById("bubble");
	var bubbleTitle = document.getElementById("bubbleTitle");
	
	var iconY = 0;
	var html;
	var accessInfo;
	
	var bubbleIndex = 0;
	
	switch (xPos)
	{
		case 0:
			html = "Set display colours";
			accessInfo = new Array("Black on yellow", "Black on white", "White on black");
			bubbleIndex = accessCS;
			break;
			
		case 1:
			html = "Set font size";
			accessInfo = new Array("12 pixels", "14 pixels", "16 pixels");
			bubbleIndex = accessFS;
			break;
			
		case 2:
			html = "Set Access display";
			accessInfo = new Array("Off", "Yellow on green", "White on Black", "Black on White");
			bubbleIndex = accessA;
			break;

		case 3:
			html = "Set button colours";
			accessInfo = new Array("White on Green", "Black on White", "White on Black");
			bubbleIndex = accessB;
			break;
		
		case 4:		
			html = "Set font type";
			accessInfo = new Array("Verdana", "comic sans MS", "Trebuchet MS", "Tahoma");
			bubbleIndex = accessF;
			break;
			
		case 5:
			html = "Close this toolbar";
			accessInfo = new Array("To open the toolbar use the Accessibility link located at the bottom.");
			bubbleIndex = accessF;
			break;
			
		
		default:
			html = "Coming soon!";
			accessInfo = new Array();
	}
	var iconsC = xPos == 5 ? 0 : accessInfo.length;
	
	for (var i = 1; i <= 4; i++)
	{
		var displayMe = i <= iconsC;
		
		var icon = document.getElementById("AccessIcon"+i);
		icon.style.display = displayMe ? "block" : "none";
		icon.style.backgroundPosition = (-((i-1)*24))+"px "+(-(xPos * 24))+"px";
		
		displayMe |= i == 1;
		
		var info = document.getElementById("AccessInfo"+i);
		info.innerHTML = displayMe ? accessInfo[i-1] : "";
		info.style.display =  displayMe ? "block" : "none";
		info.style.marginLeft = xPos == 5 ? "-40px" : "0px";
	}
	document.getElementById("accessSelector").style.display = ((xPos == 5) ? "none" : "block");
	
	bubbleTitle.innerHTML = html;
	updateBubbleImage();
	updateAccessMarker(bubbleIndex);
	bubble.style.left = (647 + xPos * 28) + "px";
	bubble.style.display = "block";
}

function updateBubbleImage()
{
	var imgObj = document.getElementById("bubbleImage");
	var black = accessCS == 2 ? "Black" : "";
	var ua = navigator.userAgent;
	var IE5 =  ua.indexOf ("MSIE 5") >= 0;
	var IE6 =  ua.indexOf ("MSIE 6") >= 0;
	if (IE5 || IE6)
	{
		imgObj.src = cssPath+"images/content/spacer.png";
		imgObj.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true',src='"+cssPath+"images/content/bubble"+black+".png')";
	}
	else
		imgObj.src = cssPath+"images/content/bubble"+black+".png";
	
	
	document.getElementById("accessSelector").style.backgroundPosition = "0px "+(accessCS == 2 ? 12 : 0)+"px";
}

function updateAccessMarker(i)
{
	document.getElementById("accessSelector").style.top = (105 + (i * 29))+"px";
}

function hideBubble()
{
	document.getElementById("bubble").style.display = "none";
}

function createAccessButton(panel, accessValue, id, bubbleId, fn)
{
	var AButton = createHTML("div", "access_Common", panel);
	AButton.id =  id;
	AButton.style.backgroundPosition = (-(24 * accessValue))+"px "+(-24*bubbleId)+"px";
	AButton.onmouseout = function() {hideBubble();};
	AButton.onmouseover = function() {showBubble(bubbleId);};
	AButton.onclick = fn;
}

function closeAccessibilityToolbar()
{
	document.getElementById("accessibilityPanel").style.display = "none";
	setCookie("toolbar", "false");
}


function createAccessibilityPanel()
{
	accessText();
	cookiesEnabled = isCookiesEnabled();
			
	if (!cookiesEnabled)
		return;
	
	var objP = document.getElementById("accessibilityPanel");

	var container = createHTML("div", "access_container", objP);
	var panel = createHTML("div", "access_panel", container);
	createHTML("div", "access_padding", panel).innerHTML = "&nbsp;";
	
	createAccessButton(panel, accessCS, "Access_CS", 0, function() {changeDisplayNext();});
	createAccessButton(panel, accessFS, "Access_FS", 1, function() {changeFontSizeNext();});
	createAccessButton(panel, accessA, "Access_A", 2, function() {changeAccessNext();});
	createAccessButton(panel, accessB, "Access_B", 3, function() {changeButtonNext();});
	createAccessButton(panel, accessF, "Access_F", 4, function() {changeFontFaceNext();});
	createAccessButton(panel, 0, "C", 5, function() {closeAccessibilityToolbar();});
		
	var bubble = createHTML("div", "accessBubble", container);
	bubble.id = "bubble";
	
	
	var bContainer = createHTML("div", "accessBubbleContainer", bubble);
	
	var img =  createHTML("img", "accessBubbleImg", bContainer);
	img.src =  cssPath + "images/content/bubble.png";
	img.id = "bubbleImage";
	var accessSelector = createHTML("div", "accessCurrentSettings", bContainer);
	accessSelector.id = "accessSelector";
		
	var bContent = createHTML("div", "accessBubbleContent", bubble);
	bContent.id = 'bubbleContent';
	
	var bTitle = createHTML("div", "bubbleTitle", bContent);
	bTitle.id = "bubbleTitle";
	bTitle.innerHTML = "Hello";
	
	for (var i = 0; i < 4; i++)
	{
		var obj = createHTML("div", "accessButtonKey", bContent);
		var yPos = (48 + (i * 29))+"px";
		obj.style.top = yPos;
		obj.id = "AccessIcon" + (i+1);
		
		var obj = createHTML("div", "accessButtonInfo", bContent);
		obj.style.top = yPos;
		obj.id = "AccessInfo" + (i+1);
	}
	
	objP.style.display = !isToolBarOn() ? "none" : "block";	
}

function createHTML(tag, className, attachToWhom, attachToWhomEx)
{
	var obj = document.createElement(tag);
	if (className)
		obj.className = className;
	
	if (!attachToWhomEx)
		attachToWhom.appendChild(obj);
	else
		attachToWhom.insertBefore(obj, attachToWhomEx);
	
	return obj;
}

