function doHighlight(bodyText, searchTerm) {

	var highlightStartTag = "<span class=\"highlight\">";
	var highlightEndTag = "</span>";
	var newText = "";
	var i = -1;
	var lcSearchTerm = searchTerm.toLowerCase();
	var lcBodyText = bodyText.toLowerCase();

	while (bodyText.length > 0) {
		i = lcBodyText.indexOf(lcSearchTerm, i+1);
		if (i < 0) {
			newText += bodyText;
			bodyText = "";
		} else {
	      // skip anything inside an HTML tag
			if (bodyText.lastIndexOf(">", i) >= bodyText.lastIndexOf("<", i)) {
				 // skip anything inside a <script> block
				if (lcBodyText.lastIndexOf("/script>", i) >= lcBodyText.lastIndexOf("<script", i)) {
					newText += bodyText.substring(0, i) + highlightStartTag + bodyText.substr(i, searchTerm.length) + highlightEndTag;
					bodyText = bodyText.substr(i + searchTerm.length);
					lcBodyText = bodyText.toLowerCase();
					i = -1;
				}
			}
		}
	}
	return newText;
}

// Display Type = 0 (headlines only), 1 (headlines and full article)
function ShowArticles(url, limit, targetid, displaytype) {
	$.get(url, function(data) {
		if (targetid.substr(0, 1) != "#") {
			targetid = "#" + targetid;
		}
		$(targetid).hide();
		var items = data.getElementsByTagName("item");
		if (items.length < limit) {
			limit = items.length;
		}
		var html = "";
		for (i = 0; i < limit; i++) {
			html = html + "<h3><a href=\"" + items[i].getElementsByTagName("link")[0].firstChild.nodeValue + "\">" + items[i].getElementsByTagName("title")[0].firstChild.nodeValue + "</a></h3>\n";
			if (displaytype == 1) {
				html = html + "<p>" + items[i].getElementsByTagName("description")[0].firstChild.nodeValue + "</p>";
			}
		}
		$(targetid).html(html);
		$(targetid).fadeIn("slow");
	});
}

var stopCheck = "";
function ShowRSSPlugin(url, limit, targetid) {
	// Might want to do something different in the future.
	if (url != stopCheck) {
		stopCheck = url;
		$.get(url, function(data) {
			if (targetid.substr(0, 1) != "#") {
				targetid = "#" + targetid;
			}
			$(targetid).hide();

			var items = data.documentElement.getElementsByTagName("item");
			if (items.length < limit) {
				limit = items.length;
			}
			var html = "";
			for (i = 0; i < limit; i++) {
				html = html + "<a href=\"" + items[i].getElementsByTagName("link")[0].firstChild.nodeValue + "\">" + items[i].getElementsByTagName("title")[0].firstChild.nodeValue + "</a><br>\n";
			}
			$(targetid).html(html);
			$(targetid).fadeIn("slow");
		});
	}
}


//Theme Viewer Code
var currentTheme = -1;
var themes = $(".theme");

var showitem = function(num) {
	if (currentTheme > -1) {
		$(themes[currentTheme]).hide("slow");
	}
	$(themes[num]).show("slow");
	currentTheme = num;
};

if (themes.length > 0) {

	var list = "<div id='themelister' style='float:left; width: auto; height: 400px;'>" +
		"<select id='themeselector' size='20' onchange=\"showitem(this.selectedIndex)\">";
	for (i = 0; i < themes.length; i++) {
		list += "<option>" + $(themes[i]).children("h3").text() + "</option>";
	}
	list += "</select>" +
		"</div>";
	$("#themeviewer").before(list);
	$("#themeviewer").css( { float:"left", width:"auto", marginLeft:"10px" } );
	$(".theme").hide("slow");
	document.getElementById("themeselector").selectedIndex = 0;
	showitem(0);
}

/*
	FlashReplace was developed by Robert Nyman, http://www.robertnyman.com. License and downloads: http://code.google.com/p/flashreplace/
	This version amended for specific implementation - so get the latest from these links.
*/
var FlashReplace = {
	elmToReplace : null,
	flashIsInstalled : null,
	defaultFlashVersion : 7,
	replace : function (elmToReplace, src, id, width, height, version, params){


		var dimensions = {width: 0, height: 0};
		if (document.documentElement) {
			dimensions.width = document.documentElement.offsetWidth;
			dimensions.height = document.documentElement.offsetHeight;
		} else if (window.innerWidth && window.innerHeight) {
			dimensions.width = window.innerWidth;
			dimensions.height = window.innerHeight;
	   }
		var w = width + "px";
		var l = Math.round((dimensions.width - width) / 2) + "px";
		var h = height + 25;
		var topPos = 0;
		if (window.pageYOffset) {
			topPos = window.pageYOffset;
		} else {
			topPos = document.body.parentElement ? document.body.parentElement.scrollTop : 0;
		}
		topPos = topPos + 5;
		this.elmToReplace = document.getElementById(elmToReplace);
		if (!this.elmToReplace) {
			$("body").append('<div id="popupvideo"></div>');
			this.elmToReplace = document.getElementById("popupvideo");
		}
		this.flashIsInstalled = this.checkForFlash(version || this.defaultFlashVersion);
		if(this.flashIsInstalled) {
			var obj = '<object' + ((window.ActiveXObject)? ' id="popupmovie" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" data="' + src + '"' : '');
			obj += ' width="' + width + '" height="' + height + '">';
			var param = '<param name="movie" value="' + src + '">';
			var extraParams = '';
			var extraAttributes = '';
			for(var i in params){
				extraParams += '<param name="' + i + '" value="' + params[i] + '">';
				extraAttributes += ' ' + i + '="' + params[i] + '"';
			}
			var embed = '<embed id="popupmovie" src="' + src + '" type="application/x-shockwave-flash" width="' + width + '" height="' + height + '"';
			var embedEnd = extraAttributes + '></embed>';
			var objEnd = '</object>';
			$("#popupvideo").css( { textAlign:"center", width:w, height:h+"px", backgroundColor:"white", position:"absolute", top:topPos+"px", left:l, zIndex:"200" } );
			$("#popupvideo").before("<div id='popupvideobackground'></div>");
			$("#popupvideobackground").css({ position:"absolute", top:"0", left:"0", width:dimensions.width+"px", height:dimensions.height+"px", zIndex:"100", backgroundColor:"Black", filter:"alpha(opacity=80)", opacity:"0.8" });
			$("#popupvideo").html("<p><img src='cms/engine/icons/Exit.png' alt='Close' id='popupvideocloser'></p>" + obj + param + extraParams + embed + embedEnd + objEnd);
			$("embed").css( { marginTop:"40px" } );
			$("#popupvideocloser").click( function() {
				$("#popupvideobackground").remove();
				$("#popupvideo").remove();
			});
			$("#popupvideocloser").css( { cursor:"pointer" } );
			$("#popupvideo").show();
		}
	},

	checkForFlash : function (version){
		this.flashIsInstalled = false;
		var flash;
		if(window.ActiveXObject){
			try{
				flash = new ActiveXObject(("ShockwaveFlash.ShockwaveFlash." + version));
				this.flashIsInstalled = true;
			}
			catch(e){
				// Throws an error if the version isn't available
			}
		}
		else if(navigator.plugins && navigator.mimeTypes.length > 0){
			flash = navigator.plugins["Shockwave Flash"];
			if(flash){
				var flashVersion = navigator.plugins["Shockwave Flash"].description.replace(/.*\s(\d+\.\d+).*/, "$1");
				if(flashVersion >= version){
					this.flashIsInstalled = true;
				}
			}
		}
		return this.flashIsInstalled;
	}
};


/*
	Lightbox JS: Fullsize Image Overlays
	by Lokesh Dhakar - http://www.huddletogether.com

	Licensed under the Creative Commons Attribution 2.5 License - http://creativecommons.org/licenses/by/2.5/
	(basically, do anything you want, just leave my name and link)
*/

// If you would like to use a custom loading image or close button reference them in the next two lines.
var loadingImage = myMasterUri + 'cms/engine/icons/imageloading.gif';
var closeButton = myMasterUri + '/cms/engine/icons/close.gif';

// getPageScroll() // Returns array with x,y page scroll values. // Core code from - quirksmode.org
function getPageScroll() {
	var yScroll;

	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop) {	 // Explorer 6 Strict
		yScroll = document.documentElement.scrollTop;
	} else if (document.body) {// all other Explorers
		yScroll = document.body.scrollTop;
	}

	arrayPageScroll = new Array('',yScroll);
	return arrayPageScroll;
}

// getPageSize() // Returns array with page width, height and window width, height // Core code from - quirksmode.org // Edit for Firefox by pHaez
function getPageSize() {
	var xScroll, yScroll;

	if (window.innerHeight && window.scrollMaxY) {
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight) { // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}

	var windowWidth, windowHeight;
	if (self.innerHeight) {	// all except Explorer
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}

	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else {
		pageHeight = yScroll;
	}

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){
		pageWidth = windowWidth;
	} else {
		pageWidth = xScroll;
	}

	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight);
	return arrayPageSize;
}


// pause(numberMillis) // Pauses code execution for specified time. Uses busy code, not good. // Code from http://www.faqts.com/knowledge_base/view.phtml/aid/1602
function pause(numberMillis) {
	var now = new Date();
	var exitTime = now.getTime() + numberMillis;
	while (true) {
		now = new Date();
		if (now.getTime() > exitTime) {
			return;
		}
	}
}

// getKey(key) // Gets keycode. If 'x' is pressed then it hides the lightbox.
function getKey(e) {
	if (e == null) { // ie
		keycode = event.keyCode;
	} else { // mozilla
		keycode = e.which;
	}
	key = String.fromCharCode(keycode).toLowerCase();

	if(key == 'x') {
		hideLightbox();
	}
}

// listenKey()
function listenKey () {
	document.onkeypress = getKey;
}

// showLightbox() // Preloads images. Pleaces new image in lightbox then centers and displays.
function showLightbox(objLink) {
	var objOverlay = document.getElementById('overlay');
	var objLightbox = document.getElementById('lightbox');
	var objCaption = document.getElementById('lightboxCaption');
	var objImage = document.getElementById('lightboxImage');
	var objLoadingImage = document.getElementById('loadingImage');
	var objLightboxDetails = document.getElementById('lightboxDetails');

	var arrayPageSize = getPageSize();
	var arrayPageScroll = getPageScroll();

	// center loadingImage if it exists
	if (objLoadingImage) {
		objLoadingImage.style.top = (arrayPageScroll[1] + ((arrayPageSize[3] - 35 - objLoadingImage.height) / 2) + 'px');
		objLoadingImage.style.left = (((arrayPageSize[0] - 20 - objLoadingImage.width) / 2) + 'px');
		objLoadingImage.style.display = 'block';
	}

	// set height of Overlay to take up whole page and show
	objOverlay.style.height = (arrayPageSize[1] + 'px');
	objOverlay.style.display = 'block';

	// preload image
	imgPreload = new Image();

	imgPreload.onload = function() {
		objImage.src = objLink.href;

		// center lightbox and make sure that the top and left values are not negative
		// and the image placed outside the viewport
		var lightboxTop = arrayPageScroll[1] + ((arrayPageSize[3] - 35 - imgPreload.height) / 2);
		var lightboxLeft = ((arrayPageSize[0] - 20 - imgPreload.width) / 2);

		objLightbox.style.top = (lightboxTop < 0) ? "0px" : lightboxTop + "px";
		objLightbox.style.left = (lightboxLeft < 0) ? "0px" : lightboxLeft + "px";


		objLightboxDetails.style.width = imgPreload.width + 'px';

		if(objLink.getAttribute('title')){
			objCaption.style.display = 'block';
			objCaption.innerHTML = '<div id="swiftgallery"><h4>' + objLink.getAttribute('title') + '</h4></div>';
		} else {
			objCaption.style.display = 'none';
		}

		// A small pause between the image loading and displaying is required with IE,
		// this prevents the previous image displaying for a short burst causing flicker.
		if (navigator.appVersion.indexOf("MSIE")!=-1){
			pause(250);
		}

		if (objLoadingImage) {	objLoadingImage.style.display = 'none'; }

		// Hide select boxes as they will 'peek' through the image in IE
		selects = document.getElementsByTagName("select");
		for (i = 0; i != selects.length; i++) {
			selects[i].style.visibility = "hidden";
		}

		objLightbox.style.display = 'block';

		// After image is loaded, update the overlay height as the new image might have increased the overall page height.
		arrayPageSize = getPageSize();
		objOverlay.style.height = (arrayPageSize[1] + 'px');

		// Check for 'x' keypress
		listenKey();

		return false;
	};
	imgPreload.src = objLink.href;
}

// hideLightbox()
function hideLightbox() {
	// get objects
	objOverlay = document.getElementById('overlay');
	objLightbox = document.getElementById('lightbox');

	// hide lightbox and overlay
	objOverlay.style.display = 'none';
	objLightbox.style.display = 'none';

	// make select boxes visible
	selects = document.getElementsByTagName("select");
    for (i = 0; i != selects.length; i++) {
		selects[i].style.visibility = "visible";
	}

	// disable keypress listener
	document.onkeypress = '';
}

// addLoadEvent()// Adds event to window.onload without overwriting currently assigned onload functions.
function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
    	window.onload = func;
	} else {
		window.onload = function() {
			oldonload();
			func();
		};
	}

}

// jQuery

$(document).ready(function() {
	if (!document.getElementsByTagName){ return; }
	var anchors = document.getElementsByTagName("a");

	if (anchors.length > 0) {
		var oLink = document.createElement("link");
		oLink.href = myMasterUri + "cms/engine/icons/lightbox.css";
		oLink.rel = "stylesheet";
		oLink.type = "text/css";
		document.body.appendChild(oLink);
	}

	// loop through all anchor tags
	for (var i=0; i<anchors.length; i++){
		var anchor = anchors[i];

		if (anchor.getAttribute("href") && (anchor.getAttribute("rel") == "lightbox")){
			anchor.onclick = function () {
				showLightbox(this); return false;
			};
		}
	}

	var objBody = document.getElementsByTagName("body").item(0);

	// create overlay div and hardcode some functional styles (aesthetic styles are in CSS file)
	var objOverlay = document.createElement("div");
	objOverlay.setAttribute('id','overlay');
	objOverlay.onclick = function () {
		hideLightbox();
		return false;
	};
	objOverlay.style.display = 'none';
	objOverlay.style.position = 'absolute';
	objOverlay.style.top = '0';
	objOverlay.style.left = '0';
	objOverlay.style.zIndex = '90';
 	objOverlay.style.width = '100%';
	objBody.insertBefore(objOverlay, objBody.firstChild);

	var arrayPageSize = getPageSize();
	var arrayPageScroll = getPageScroll();

	// preload and create loader image
	var imgPreloader = new Image();

	// if loader image found, create link to hide lightbox and create loadingimage
	imgPreloader.onload = function() {

		var objLoadingImageLink = document.createElement("a");
		objLoadingImageLink.setAttribute('href','#');
		objLoadingImageLink.onclick = function () {
			hideLightbox(); return false;
		};
		objOverlay.appendChild(objLoadingImageLink);

		var objLoadingImage = document.createElement("img");
		objLoadingImage.src = loadingImage;
		objLoadingImage.setAttribute('id','loadingImage');
		objLoadingImage.style.position = 'absolute';
		objLoadingImage.style.zIndex = '150';
		objLoadingImageLink.appendChild(objLoadingImage);

		imgPreloader.onload = function() {};	//	clear onLoad, as IE will flip out w/animated gifs

		return false;
	};

	imgPreloader.src = loadingImage;

	// create lightbox div, same note about styles as above
	var objLightbox = document.createElement("div");
	objLightbox.setAttribute('id','lightbox');
	objLightbox.style.display = 'none';
	objLightbox.style.position = 'absolute';
	objLightbox.style.zIndex = '100';
	objBody.insertBefore(objLightbox, objOverlay.nextSibling);

	// create link
	var objLink = document.createElement("a");
	objLink.setAttribute('href','#');
	objLink.setAttribute('title','Click to close');
	objLink.onclick = function () {
		hideLightbox();
		 return false;
	};
	objLightbox.appendChild(objLink);

	// preload and create close button image
	var imgPreloadCloseButton = new Image();

	// if close button image found,
	imgPreloadCloseButton.onload = function() {

		var objCloseButton = document.createElement("img");
		objCloseButton.src = closeButton;
		objCloseButton.setAttribute('id','closeButton');
		objCloseButton.style.position = 'absolute';
		objCloseButton.style.zIndex = '200';
		objLink.appendChild(objCloseButton);

		return false;
	};

	imgPreloadCloseButton.src = closeButton;

	// create image
	var objImage = document.createElement("img");
	objImage.setAttribute('id','lightboxImage');
	objLink.appendChild(objImage);

	// create details div, a container for the caption and keyboard message
	var objLightboxDetails = document.createElement("div");
	objLightboxDetails.setAttribute('id','lightboxDetails');
	objLightbox.appendChild(objLightboxDetails);

	// create caption
	var objCaption = document.createElement("div");
	objCaption.setAttribute('id','lightboxCaption');
	objCaption.style.display = 'none';
	objLightboxDetails.appendChild(objCaption);

	// create keyboard message
	var objKeyboardMsg = document.createElement("div");
	objKeyboardMsg.setAttribute('id','keyboardMsg');
	objKeyboardMsg.innerHTML = 'press <a href="#" onclick="hideLightbox(); return false;"><kbd>x</kbd></a> to close';
	objLightboxDetails.appendChild(objKeyboardMsg);

    $(".spconfirmation").hide();
    addLoadEvent(function() {
        $(".spconfirmation").show("fast");
        window.setTimeout(function () { $(".spconfirmation").hide("fast"); }, 8000);
    });
});
