var rsBubble = new Array();

var pgBubble = null;
var pgBubbleOpen = null;

var isShowing = false;

function doFade(obj) {
	var percent = 100;
	var animateMe = 10;

	var timer = window.setInterval(function() {
		percent -= animateMe;

		obj.style.filter = 'alpha(opacity='+ percent +')';
		obj.style.opacity = (percent/100);
		obj.style.mozOpacity = (percent/100);

		if (percent <= 0) {
			window.clearInterval(timer);
		}
	}, 50);
}

function unFade(obj, hideMe) {
	var percent = 0;
	var animateMe = 10;

	var timer = window.setInterval(function() {
		percent += animateMe;

		obj.style.filter = 'alpha(opacity='+ percent +')';
		obj.style.opacity = (percent/100);
		obj.style.mozOpacity = (percent/100);

		if (percent >= 100) {
			window.clearInterval(timer);
			
			if (hideMe) {
				hideMe.style.display = 'none';
			}
		}
	}, 50);
}

function doMove(obj) {
	var tVal = parseInt(obj.style.top);
	
	var percent = 100;
	var animateMe = 10;
	
	var timer = window.setInterval(function() {
		percent -= animateMe;
		
		tVal = (tVal * (percent/100));
		obj.style.top = tVal +'px';

		if (percent <= 0) {
			window.clearInterval(timer);
			obj.style.top = '0px';
				
			showBBL(document.getElementById(obj.id +'A'),document.getElementById(obj.id +'A').rel,1,'',1);
		}
	}, 50);
}

function unMove(obj, tVal) {
	var percent = 0;
	var animateMe = 20;

	var timer = window.setInterval(function() {
		percent += animateMe;
		obj.style.top = (tVal * (percent/100)) +'px';

		if (percent >= 100) {
			window.clearInterval(timer);
			
			obj.style.top = tVal +'px';
			
			//window.setTimeout(function() {
				var opts = document.getElementById('opts');
				for (i=0;i<opts.getElementsByTagName('li').length;i++) {
					unFade(opts.getElementsByTagName('li')[i],obj);
				}
			//},50);
		}
	}, 50);
}

String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}

String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}

String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}

String.prototype.isNumeric = function() {
	var RegExp = /^(-)?(\d*)(\.?)(\d*)$/;
	var result = this.match(RegExp);
	return result;
}

String.prototype.isAlpha = function() {
	var RegExp = /^[a-zA-Z]?(-)?(\.?)$/;
	var result = this.match(RegExp);
	return result;
}

String.prototype.isAlphaNumeric = function() {
	var RegExp = /\w/;
	var result = this.match(RegExp);
	return result;
}

function doCapitalize(str) {
	return str.toLowerCase().replace(/\b[a-z]/g, cnvrt);
	function cnvrt() {
	    return arguments[0].toUpperCase();
	}
}

function eFunc() {
	//empty func
}

function rFunc(url, fvars) {
	var xml = GetXmlHttpObject(eFunc);

	if (fvars == null) {
		fvars = '';
	}

	xml.open ("POST", url , false);
	xml.setRequestHeader ("Content-Type", "application/x-www-form-urlencoded");
	xml.send (fvars);
	
	return xml.responseText;
}

function GetXmlHttpObject(handler) { 
	var objXmlHttp = null;

	if (navigator.userAgent.indexOf("Opera") >= 0) {
		objXmlHttp = new XMLHttpRequest();
		objXmlHttp.onload = handler;
		objXmlHttp.onerror = handler;
		
		return objXmlHttp;
	}

	if (navigator.userAgent.indexOf("MSIE")>=0) {
		var strName = "Msxml2.XMLHTTP";
		if (navigator.appVersion.indexOf("MSIE 5.5") >= 0)
		{
			strName = "Microsoft.XMLHTTP";
		}
		
		try {
			objXmlHttp = new ActiveXObject(strName);
			objXmlHttp.onreadystatechange = handler;
			return objXmlHttp;
		}
		catch(e) {
			alert("Error. Scripting for ActiveX might be disabled")
			return;
		}
	}

	if (navigator.userAgent.indexOf("Mozilla")>=0)
	{
		objXmlHttp = new XMLHttpRequest();
		objXmlHttp.onload = handler;
		objXmlHttp.onerror = handler;
		
		return objXmlHttp;
	}
}

function exeAjax(url, fvars, fname, async) {
	xml = GetXmlHttpObject(fname);

	xml.open ("POST", url , async);
	xml.setRequestHeader ("Content-Type", "application/x-www-form-urlencoded");
	xml.send (fvars);
}

function getForm(frmURL) {
	var xml = GetXmlHttpObject(eFunc);

	var sVars = '';

	xml.open ("POST", frmURL , false);
	xml.setRequestHeader ("Content-Type", "application/x-www-form-urlencoded");
	xml.send (sVars);
	
	return xml.responseText;
}

function addEvent(obj, evType, fn) {
	if (obj.addEventListener) {
		obj.addEventListener(evType, fn, true);
		return true;
	}
	else if (obj.attachEvent) {
		var r = obj.attachEvent("on"+ evType, fn);
		return r;
	}
	else {
		return false;
	}
}

function removeEvent(obj, evType, fn, useCapture) {
	if (obj.removeEventListener) {
		obj.removeEventListener(evType, fn, useCapture);
		return true;
	}
	else if (obj.detachEvent) {
		var r = obj.detachEvent("on"+ evType, fn);
		return r;
	}
	else {
		alert("Handler could not be removed");
	}
}

function getViewportHeight() {
	if (window.innerHeight!=window.undefined) return window.innerHeight;
	if (document.compatMode=='CSS1Compat') return document.documentElement.clientHeight;
	if (document.body) return document.body.clientHeight; 
	return window.undefined; 
}

function getViewportWidth() {
	if (window.innerWidth!=window.undefined) return window.innerWidth; 
	if (document.compatMode=='CSS1Compat') return document.documentElement.clientWidth; 
	if (document.body) return document.body.clientWidth; 
	return window.undefined; 
}

function getX(el) {
	if (el) {
		xPos = el.offsetLeft;
		tempEl = el.offsetParent;
		
		while (tempEl != null) {
			xPos += tempEl.offsetLeft;
			tempEl = tempEl.offsetParent;
		}
		return xPos;
	}
	else {
		return null;
	}
}

function getY(el) {
	if (el) {
		yPos = el.offsetTop;
		tempEl = el.offsetParent;
		
		while (tempEl != null) {
			yPos += tempEl.offsetTop;
			tempEl = tempEl.offsetParent;
		}
		return yPos;
	}
	else {
		return null;
	}
}

function getBBLData(frmURL) {
	var xml = GetXmlHttpObject(eFunc);

	var sVars = '';

	xml.open ("POST", frmURL , false);
	xml.setRequestHeader ("Content-Type", "application/x-www-form-urlencoded");
	xml.send (sVars);
	
	return xml.responseText;
}

function preLoadIMG() {
	var loadIMG01 = new Image();
	loadIMG01.src = '/_bbl/img/ie/blue/_tl.png';
	
	var loadIMG02 = new Image();
	loadIMG02.src = '/_bbl/img/ie/blue/_tr.png';
	
	var loadIMG03 = new Image();
	loadIMG03.src = '/_bbl/img/ie/blue/_bl.png';
	
	var loadIMG04 = new Image();
	loadIMG04.src = '/_bbl/img/ie/blue/_br.png';
	
	var loadIMG05 = new Image();
	loadIMG05.src = '/_bbl/img/ie/blue/_left.png';
	
	var loadIMG06 = new Image();
	loadIMG06.src = '/_bbl/img/ie/blue/_top.png';
	
	var loadIMG07 = new Image();
	loadIMG07.src = '/_bbl/img/ie/blue/_right.png';

	var loadIMG08 = new Image();
	loadIMG08.src = '/_bbl/img/ie/blue/_btm.png';
	
	var loadIMG09 = new Image();
	loadIMG09.src = '/_bbl/img/ie/blue/_bg.png';
}

function isOverBBL(bubble, linkOnly) {
	if (bubble) {
		var objX = getX(bubble);
		var objY = getY(bubble);

		var objW = parseInt(bubble.offsetWidth);
		var objH = parseInt(bubble.offsetHeight);

		if (linkOnly == null && tempX >= objX && tempX <= (objX + objW) && tempY >= objY && tempY <= (objY + objH)) {
			return true;
		}
		else {
			var bubbleLink = document.getElementById(bubble.id.replace('Bubble',''));

			if (bubbleLink) {
				objX = getX(bubbleLink);
				objY = getY(bubbleLink);

				objW = parseInt(bubbleLink.offsetWidth);
				objH = parseInt(bubbleLink.offsetHeight);

				if (tempX >= objX && tempX <= (objX + objW) && tempY >= objY && tempY <= (objY + objH)) {
					return true;
				}
				else {
					return false;
				}
			}
			else {
				return false;
			}
		}
	}
	else {
		return false;
	}
}

function hideBBL(bubble, doSlide) {
	if (1 == 1) {
		isShowing = false;

		if (!bubble || bubble == null) {
			bubble = pgBubble;			
		}

		if (bubble) {
			if (doSlide == 1) {
				slideOut(bubble, null, 1);
			}
			else {
				if (bubble.className.indexOf('showMe') > 0) {
					bubble.className = bubble.className.replace('showMe', 'hideMe');
				}
				else {
					if (bubble.className.indexOf('hideMe') == -1) {
						bubble.className = bubble.className +' hideMe';
					}
				}

				for (i=0;i<rsBubble.length;i++) {
					if (rsBubble[i] == bubble) {
						window.clearInterval(rsBubble[i][1]);
					}
				}

				if (bubble.id == 'msgBubble') {
					bubble.parentNode.removeChild(bubble);
				}
			}
		}

		pgBubble = null;
		pgBubbleOpen = false;
	}
}

function chngBorders(bubble, revert) {
	if (navigator.appVersion.toLowerCase().indexOf('msie 7') > 0) {
		//if (revert) {
		//	bubble.className = bubble.className.replace(' noshadow', '');
		//}
		//else {
			bubble.className = bubble.className.replace('bubble', 'bubble noshadow');
		//}
	}
}

function slideIn(bubble) {
	if (bubble) {
		var percent = 0;
		//if (navigator.appVersion.toLowerCase().indexOf('msie') >= 0) {
		//	var animateMe = 100;
		//}
		//else {
			var animateMe = 25;
		//}

		bubble.style.top = parseInt(bubble.style.top) + 8 +'px';
		chngBorders(bubble, false);

		pgBubble = bubble;
		pgBubbleOpen = true;

		var timer = window.setInterval(function() {
			percent += animateMe;

			bubble.style.filter = 'alpha(opacity='+ percent +')';
			bubble.style.opacity = (percent/100);
			bubble.style.mozOpacity = (percent/100);

			bubble.style.top = parseInt(bubble.style.top) - 2 +'px';
				
			if (percent >= 100) {
				window.clearInterval(timer);

				chngBorders(bubble, true);
				bubble.style.filter = 'none';			
			}

		}, 50);
	}
}

function slideOut(bubble, linkOnly, forceIT) {
	var proceed = false;

	if (forceIT == null) {
		if (isOverBBL(bubble, linkOnly) == false) {
			proceed = true;
		}
	}
	else {
		proceed = true;
	}
	
	if (bubble && proceed) {
		for (i=0;i<rsBubble.length;i++) {
			if (rsBubble[i] == bubble) {
				window.clearInterval(rsBubble[i][1]);
			}
		}
		
		var percent = 100;

		chngBorders(bubble, false);
		bubble.style.filter = 'alpha(opacity=100)';

		var timer = window.setInterval(function() {
			percent -= animateMe;

			bubble.style.filter = 'alpha(opacity='+ percent +')';
			bubble.style.opacity = '0.'+ percent;
			bubble.style.mozOpacity = '0.'+ percent;

			bubble.style.top = parseInt(bubble.style.top) + 3 +'px';

			if (percent <= 0) {
				window.clearInterval(timer);
				
				chngBorders(bubble, true);

				if (bubble.className.indexOf('showMe') > 0) {
					bubble.className = bubble.className.replace('showMe', 'hideMe');
				}
				else {
					if (bubble.className.indexOf('hideMe') == -1) {
						bubble.className = bubble.className +' hideMe';
					}
				}
				
				hideBBL();

				pgBubble = null;
				pgBubbleOpen = false;
			}

		}, 50);
	}
}

function buildBBL(obj, bblURL, bblDir, bblColor, isMessage) {
	if (obj && isMessage == null) {
		if (obj.id && obj.id.length > 0) {
			bblID = obj.id +'Bubble';
		}
		else {
			if (obj.parentNode && obj.parentNode.id) {
				bblID = obj.parentNode.id +'Bubble';
			}
			else {
				bblID = obj;
			}
		}
	}
	else {
		bblID = 'msgBubble';
	}
	
	if (document.getElementById(bblID)) {
		var bubble = document.getElementById(bblID);
	}
	else {
		var bubble = document.createElement('DIV');
		bubble.id = bblID;
		bubble.className = 'bubble '+ bblColor;

		bubble.style.filter = 'alpha(opacity=0)';
		bubble.style.opacity = '0';
		bubble.style.mozOpacity = '0';

		var bbl_outer = document.createElement('DIV');
		bbl_outer.className = 'outer';
		bubble.appendChild(bbl_outer);

		var bbl_inner = document.createElement('DIV');
		bbl_inner.className = 'inner';
		bbl_outer.appendChild(bbl_inner);

		var bbl_top = document.createElement('DIV');
		bbl_top.className = 'top';
		bbl_top.innerHTML = "<span><img src='/_bbl/img/_spacer.gif'/></span>";
		bbl_inner.appendChild(bbl_top);

		var bbl_content= document.createElement('DIV');
		if (bblDir == 3 || bblDir == 4 || bblDir == 5 || bblDir == 6) {
			bbl_content.className = 'content admin';
		}
		else {
			bbl_content.className = 'content user';
		}
		bbl_inner.appendChild(bbl_content);

		var bbl_content_inner = document.createElement('DIV');
		bbl_content_inner.className = 'inner';
		bbl_content.appendChild(bbl_content_inner);

		var bbl_content_inner_div = document.createElement('DIV');
		bbl_content_inner_div.id = bblID +'content';
		bbl_content_inner_div.innerHTML = getBBLData(bblURL);
		bbl_content_inner.appendChild(bbl_content_inner_div);
		
		if (bblDir == 3 || bblDir == 4 || bblDir == 5 || bblDir == 6) {
			var bbl_close = document.createElement('DIV');
			bbl_close.className = 'close';
			bbl_close.innerHTML = "<img src='/admin/_img/_cancel.png' onclick='hideBBL()'/>";
			bbl_content_inner_div.appendChild(bbl_close);
		}
		
		var bbl_btm = document.createElement('DIV');
		bbl_btm.className = 'btm';
		bbl_btm.innerHTML = "<span><img src='/_bbl/img/_spacer.gif'/></span>";
		bbl_inner.appendChild(bbl_btm);

		var bbl_arrow = document.createElement('DIV');
		if (bblDir == 2) {
			bbl_arrow.className = 'arrow down';
		}
		else if (bblDir == 3) {
			bbl_arrow.className = 'arrow admin';
		}
		else if (bblDir == 4) {
			bbl_arrow.className = 'arrow down admin';
		}
		else if (bblDir == 5) {
			bbl_arrow.className = 'arrow admin right';
		}
		else if (bblDir == 6) {
			bbl_arrow.className = 'arrow down admin right';
		}
		else {
			bbl_arrow.className = 'arrow';
		}
		bbl_arrow.innerHTML = "<div><span class='img'><img src='/_bbl/img/_spacer.gif' style='width: 12px; height: 12px'/></span></div>";
		bubble.appendChild(bbl_arrow);				

		document.body.appendChild(bubble);

		if (1 == 1) {
			if (bbl_content.getElementsByTagName('table').length > 0) {
				var objTBL = bbl_content.getElementsByTagName('table');
				for (i=0;i<1;i++) {
					var tblW = objTBL[i].offsetWidth;
				}

				bubble.style.width = (tblW + 40) +'px';
			}
			else {
				bubble.style.width = bubble.offsetWidth +'px';
			}
		}
	}
	
	return bubble;
}

function moveBBL(bubble, obj, bblDir, bblKeepOpen, linkOnly) {
	if (bblDir == 2 || bblDir == 4 || bblDir == 6) {
		bubble.style.top = parseInt(getY(obj) - bubble.offsetHeight) +'px';
	}
	else {
		bubble.style.top = parseInt(getY(obj) + obj.offsetHeight - 5) +'px';
	}
	
	if (bblDir == 5 || bblDir == 6) {
		bubble.style.left = parseInt(getX(obj) - (bubble.offsetWidth - 51) + (obj.offsetWidth / 2) + 1) +'px';
	}
	else {
		bubble.style.left = parseInt(getX(obj) - (bubble.offsetWidth / 2) + (obj.offsetWidth / 2) + 1) +'px';
	}
	
	if (bblKeepOpen == null) {
		var closeBBL = window.setInterval(function() {
			slideOut(bubble, linkOnly);
		}, 600);
	}
	
	rsBubble[rsBubble.length] = bubble;
	rsBubble[rsBubble.length-1][0] = obj;
	rsBubble[rsBubble.length-1][1] = closeBBL;

	slideIn(bubble);
	
	isShowing = false;
}

function showBBL(obj, bblURL, bblDir, bblColor, bblKeepOpen, isMessage, linkOnly) {
	var showMe = true;
	var bblID = null;

	if (obj && isMessage == null) {
		if (obj.id.length > 0) {
			bblID = obj.id +'Bubble';
		}
		else {
			if (obj.parentNode && obj.parentNode.id) {
				bblID = obj.parentNode.id +'Bubble';
			}
			else {
				bblID = 'msgBubble';
			}
		}
	}
	else {
		bblID = 'msgBubble';
	}

	if (pgBubbleOpen) {
		if (bblID == pgBubble.id) {
			showMe = false;
		}
		else {
			hideBBL(pgBubble);
		}
	}

	if (!isShowing && showMe) {
		isShowing = true;

		if (document.getElementById(bblID)) {
			var bubble = document.getElementById(bblID);
			bubble.className = bubble.className.replace('hideMe', 'showMe');

			bubble.style.filter = 'alpha(opacity=0)';
			bubble.style.opacity = '0';
			bubble.style.mozOpacity = '0';
	
			window.setTimeout(function() {
				if (bubble.getElementsByTagName('iframe').length > 0) {
					for (i=0;i<bubble.getElementsByTagName('iframe').length;i++) {
						calcHeight(bubble.getElementsByTagName('iframe')[i]);
					}
				}

				moveBBL(bubble, obj, bblDir, bblKeepOpen, linkOnly);
			}, 600);
		}
		else {
			if (bblURL != null) {
				var bubble = buildBBL(obj, bblURL, bblDir, bblColor, isMessage);			

				window.setTimeout(function() {
					if (bubble.getElementsByTagName('iframe').length > 0) {
						for (i=0;i<bubble.getElementsByTagName('iframe').length;i++) {
							calcHeight(bubble.getElementsByTagName('iframe')[i]);
						}
					}

					moveBBL(bubble, obj, bblDir, bblKeepOpen, linkOnly);
				}, 600);

				pgBubble = bubble;
				pgBubbleOpen = true;
			}
		}
	}
	else {
		//alert(bblID +': '+ isShowing +' | '+ showMe);
	}

	return false;
}

function vFRM(f) {
	if (f.id == 'frmBook') {
		f.bName.style.backgroundColor = '#fff';
		f.bEmail.style.backgroundColor = '#fff';
		f.bPhone.style.backgroundColor = '#fff';
		f.bDate.style.backgroundColor = '#fff';
		f.bTime.style.backgroundColor = '#fff';

		var url = '/_includes/ajax/_book.asp';
		var fvars = 'cID='+ f.cID.value;
		fvars = fvars +'&bName='+ escape(f.bName.value);
		fvars = fvars +'&bEmail='+ escape(f.bEmail.value);
		fvars = fvars +'&bPhone='+ escape(f.bPhone.value);
		fvars = fvars +'&bDate='+ escape(f.bDate.value);
		fvars = fvars +'&bTime='+ escape(f.bTime.value);
		fvars = fvars +'&bMessage='+ escape(escMe(f.bMessage.value, '<br/>'));
		
		var errCode = rFunc(url, fvars);
		
		if (errCode.length == 0) {
			hideBBL();
			showBBL(document.getElementById('optBookA'),'/pages/_msg.asp?msg=1',1,'', 1, 1);
		}
		else {
			errCode = parseInt(errCode);
			
			if (errCode == 1) {
				if (f.bName.value.length == 0) {
					f.bName.style.backgroundColor = '#ffff99';
					f.bName.focus();
					
					alert('Please enter your Name in the field provided');
					return false;
				}
				else if (f.bEmail.value.length == 0 && f.bPhone.value.length == 0) {
					f.bEmail.style.backgroundColor = '#ffff99';
					f.bPhone.style.backgroundColor = '#ffff99';
					
					f.bEmail.focus();
					
					alert('Please enter your Email and/or Phone Number in the fields provided');
					return false;
				}
				if (f.bDate.value.length == 0) {
					f.bDate.style.backgroundColor = '#ffff99';
					f.bDate.focus();
					
					alert('Please enter a Date for the Test Drive');
					return false;
				}
			}
			else {
				alert('An unknown error occured, please contact the website administrator');
				return false;
			}
		}
		
		f.bName.style.backgroundColor = '#fff';
		f.bEmail.style.backgroundColor = '#fff';
		f.bPhone.style.backgroundColor = '#fff';
		f.bDate.style.backgroundColor = '#fff';
		f.bTime.style.backgroundColor = '#fff';
	}
	else if (f.id == 'frmEnquire') {
		f.eName.style.backgroundColor = '#fff';
		f.eEmail.style.backgroundColor = '#fff';
		f.ePhone.style.backgroundColor = '#fff';
		f.eMessage.style.backgroundColor = '#fff';

		var url = '/_includes/ajax/_enquire.asp';
		var fvars = 'cID='+ f.cID.value;
		fvars = fvars +'&eName='+ escape(f.eName.value);
		fvars = fvars +'&eEmail='+ escape(f.eEmail.value);
		fvars = fvars +'&ePhone='+ escape(f.ePhone.value);
		fvars = fvars +'&eMessage='+ escape(escMe(f.eMessage.value, '<br/>'));
		
		var errCode = rFunc(url, fvars);
		
		if (errCode.length == 0) {
			hideBBL();
			showBBL(document.getElementById('optEnquireA'),'/pages/_msg.asp?msg=2',1,'', 1, 1);
		}
		else {
			if (errCode == 1) {
				if (f.eName.value.length == 0) {
					f.eName.style.backgroundColor = '#ffff99';
					f.eName.focus();

					alert('Please enter your Name in the field provided');
					return false;
				}
				else if (f.eEmail.value.length == 0 && f.ePhone.value.length == 0) {
					f.eEmail.style.backgroundColor = '#ffff99';
					f.ePhone.style.backgroundColor = '#ffff99';

					f.eEmail.focus();

					alert('Please enter your Email and/or Phone Number in the fields provided');
					return false;
				}
				if (f.eMessage.value.length == 0) {
					f.eMessage.style.backgroundColor = '#ffff99';
					f.eMessage.focus();

					alert('Please enter your Enquiry');
					return false;
				}
			}
			else {
				alert('An unknown error occured, please contact the website administrator');
				return false;
			}
		}
		
		f.eName.style.backgroundColor = '#fff';
		f.eEmail.style.backgroundColor = '#fff';
		f.ePhone.style.backgroundColor = '#fff';
		f.eMessage.style.backgroundColor = '#fff';
	}
	
	return false;
}

document.write("<link rel='stylesheet' href='/_bbl/_style.css' type='text/css' media='screen'\/>");
document.write("<!--[if lt IE 7]><link rel='stylesheet' type='text/css' href='/_bbl/_ie6.css'\/><![endif]-->");
document.write("<!--[if (gt IE 6) & (lt IE 8)]><link rel='stylesheet' type='text/css' href='/_bbl/_ie7.css'\/><![endif]-->");