// There are multiple IE5/mac problems with the menus, which I haven't been able to work around yet :/

var ua = navigator.userAgent.toLowerCase();
var ie5mac = (!window.opera && ua.indexOf("msie")>-1 && ua.indexOf("mac")>-1);
var loaded;


if (window.clipboardData || (document.implementation && document.implementation.hasFeature("HTML", "1.0")))
{
	var preloadArr =
	[
		"menu_bottom.gif",
		"menu_top.gif",
		"menu_shadow.gif",
		"navbuttons/home2.gif",
		"navbuttons/about2.gif",
		"navbuttons/news2.gif",
		"navbuttons/database2.gif",
		"navbuttons/golf2.gif",
		"navbuttons/downloads2.gif",
		"navbuttons/competitions2.gif",
		"navbuttons/sitemap2.gif",
		"navbuttons/help2.gif",
		"navbuttons/contact2.gif"
	];

	for (var i=0; i<preloadArr.length; i++)
	{
		var orgSrc = "/images/" + preloadArr[i];
		preloadArr[i] = document.createElement("img");
		preloadArr[i].src = orgSrc;
	}

	function createHTMLElement(tagName)
	{
		return document.createElementNS
			? document.createElementNS("http://www.w3.org/1999/xhtml", tagName)
			: document.createElement(tagName);
	}

	if (!document.createStyleSheet)
	{
		// createStyleSheet emulation
		document.createStyleSheet = function(cssHref)
		{
			var cssImporter = createHTMLElement("link");
			cssImporter.rel = "stylesheet";
			cssImporter.href = cssHref;
			if (headArr = document.getElementsByTagName("head"))
				return headArr[0].appendChild(cssImporter);
		}
	}

	document.createStyleSheet("/css/ticker.css");
	document.createStyleSheet("/css/menu.css");

	var currentMenu;
	var currentRoll;
	var currentTicker, firstTicker, tickerFilter, tickerMsgs, tickerCount = 0, tickerTimeout, clockInt;
	var dayArr = ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"];
	var monthArr = ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"];
	Number.prototype.dateFormat = function() { return (this < 10) ? "0"+this : this; }
	Number.prototype.niceHours = function() { return this>12?this-12:this<1?12:this; }

	function getToObj(eventObj) { return eventObj ? eventObj.relatedTarget : event.toElement; }
	function findObj(obj, prop, val) { for (; obj.parentNode!=null; obj=obj.parentNode) if (obj[prop] == val) return obj; }
	function getSrcObj(eventObj) { return eventObj ? eventObj.target : event.srcElement; }

	if (window.HTMLElement)
	{
		HTMLElement.prototype.contains = function (oEl) {
			if (oEl == this) return true;
			if (oEl == null) return false;
			return this.contains(oEl.parentNode);		
		};
	}

	function pauseTicker() { clearInterval(tickerTimeout); }
	function resumeTicker() { tickerTimeout = setInterval(changeTicker, 5500); }

	onload = document.onreadystatechange = function()
	{
		if (!window.tickerList) tickerList = document.getElementById("tickerList");
		if (document.getElementById("ukimap") && !mapPreloaded) preloadMap();

		if (tickerList && !currentTicker)
		{
			tickerMsgs = tickerList.getElementsByTagName("li");
			currentTicker = tickerMsgs[0];

			if (tickerMsgs.length > 1)
			{
				tickerList.onmouseover = pauseTicker;
				tickerList.onmouseout = setTickerTimeout = resumeTicker;
				var filterObj = currentTicker.parentNode.parentNode;
				tickerFilter = (filterObj.filters && filterObj.filters.length > 0) ? filterObj.filters[0] : null;
				setTickerTimeout();

				var tickerLinks = tickerList.getElementsByTagName("a");
				for (var i=0; i<tickerLinks.length; i++)
				{
					tickerLinks[i].onfocus = pauseTicker;
					tickerLinks[i].onblur = resumeTicker;
				}
			}
			else
			{
				// Only one news item, no need to change ticker
				tickerMsgs[0].style.display = "block";
			}

			if (document.readyState && document.readyState=="complete") loaded = true;
		}

		clockObj = document.getElementById("top-live-clock");
		if (clockObj && clockObj.childNodes[0] && !clockInt)
		{
			updateClock();
			clockInt = setInterval(updateClock, 5000);
		}
	}

	function updateClock()
	{
		var d = new Date(), dateStr = "";
		dateStr += dayArr[d.getDay()] + ", " + d.getDate();

		// abbrev = ".";
		// mday = d.getDate()+"";
		// if (mday.charAt(mday.length-2) != 1)
	

		dateStr += ". ";

		dateStr += monthArr[d.getMonth()];
		dateStr += " ";
		dateStr += d.getFullYear();
		dateStr += " - ";
		dateStr += d.getHours() + ":" + d.getMinutes().dateFormat();
		// dateStr += (d.getHours()); // < 12) ? "am" : "pm"
		clockObj.childNodes[0].nodeValue = dateStr;
	}

	function changeTicker()
	{
		if (currentTicker = tickerMsgs[tickerCount])
		{
			if (tickerFilter) tickerFilter.apply();
			
			currentTicker.style.display = "none";
			
			if (tickerFilter)
			{
				tickerFilter.play();
				setTimeout(changeTicker2, 1150);
			}
			else
			{
				changeTicker2();
			}
		}
	}

	function changeTicker2()
	{
		if (tickerFilter) tickerFilter.apply();
		tickerCount = (++tickerCount == tickerMsgs.length) ? 0 : tickerCount;
		currentTicker = tickerMsgs[tickerCount];
		currentTicker.style.display = "block";
		if (tickerFilter) tickerFilter.play();
	}

	var menuTimeout, ukMap, searchRoll, mapTitle;


	function resultRoll()
	{
		if (window.event && event.srcElement)
		{
			searchRoll = event.srcElement;
			event.srcElement.style.backgroundColor = '#bfcba1';
			event.srcElement.onmouseout = function()
			{	
				if (!searchRoll.contains(event.toElement)) searchRoll.style.backgroundColor = '';
			}
		}
	}

	document.onmouseover = function globalOver(e)
	{

		var srcObj = getSrcObj(e);

		if (srcObj.tagName && srcObj.tagName.toLowerCase()=="area" && srcObj.parentNode.id=="ukimap" && (ukMap=document.getElementById('uk-map')))
		{
			if (!ukMap.origSrc) ukMap.origSrc = ukMap.src;
			ukMap.src = '/images/map/map_'+{'Wales':'wales','England':'eng','Scotland':'scot','Ireland':'ire'}[srcObj.alt]+'.gif';
			
			if (!mapTitle) mapTitle = document.getElementById('uk-map-title');

			/*
				innerHTML changing removed due to performance issues

				if (mapTitle && mapTitle.innerHTML)
				{
					if (!mapTitle.orgMapText) mapTitle.orgMapText = mapTitle.innerHTML;
					mapTitle.innerHTML = srcObj.alt;
				}
			*/

			srcObj.onmouseout = function()
			{
				if (ukMap) ukMap.src = ukMap.origSrc;

				/*
					if (mapTitle && mapTitle.innerHTML) mapTitle.innerHTML = mapTitle.orgMapText;
				*/
			}
		}

		if (srcObj && currentRoll!=srcObj && srcObj.tagName && srcObj.tagName.toLowerCase()=="img" && srcObj.src.toLowerCase().indexOf("navbuttons") > -1)
		{
			swapImageBack();
			srcObj.originalSrc = srcObj.src;
			srcObj.src         = getRolloverSrc(srcObj);
			srcObj.title       = "";
			srcObj.onmouseout  = swapImageBack;
			currentRoll = srcObj;

			var testNode = srcObj.parentNode;

			while (testNode.nextSibling)
			{
				testNode = testNode.nextSibling;

				if (testNode.className=="pop-menu")
				{
					showPopupMenu(testNode);
					srcObj.onmouseout = function(e)
					{
						if (currentMenu && currentMenu.contains(getToObj(e)))
							currentMenu.onmouseout = function(e) { if (!currentMenu || !currentMenu.contains(getToObj(e)) && getToObj(e)!=currentRoll) setMenuTimeout(); }
						else
							swapImageBack();
					}
					break;
				}
			}
		}
	}

	function getRolloverSrc(srcObj)
	{
		return srcObj.src.substr(0, srcObj.src.length-4)+"2.gif";
	}

	function setMenuTimeout()
	{
		if (currentMenu)
		{
			menuTimeout = setTimeout(swapImageBack, 300);
			currentMenu.onmouseover = function() { clearTimeout(menuTimeout); }
		}
	}

	function swapImageBack()
	{
		if (currentRoll)
		{
			hidePopupMenu();
			currentRoll.src = currentRoll.originalSrc;
			currentRoll.originalSrc = null;
			currentRoll = null;
		}
	}

	function showPopupMenu(menuObj)
	{
		// Stop IE from erroring if we access the DOM before HTML is loaded
		if (document.readyState && (document.readyState!="loaded" && document.readyState!="complete" && document.readyState!="interactive") && !loaded)
			return false;

		// Kill any currently shown menus
		hidePopupMenu();
		if (menuTimeout) clearTimeout(menuTimeout);
 
		// Add header, footer images - this is more than slightly ugly
		if (!menuObj.transformedMenu)
		{
			var bgObj = createHTMLElement("div");
			bgObj.className = "bg";

			if (menuObj.applyElement)
			{
				menuObj.applyElement(bgObj, "inside");
			}
			else
			{
				var newMenuObj = menuObj.cloneNode(false);
				var childs = menuObj.childNodes;
				for (var i=0; i<childs.length; i++) bgObj.appendChild(childs[i].cloneNode(true));
				newMenuObj.appendChild(bgObj);
				menuObj.parentNode.replaceChild(newMenuObj, menuObj);
				menuObj = newMenuObj;
			}

			var topImg = createHTMLElement("div");
			topImg.className = "menu-top-img";
			menuObj.insertBefore(topImg, menuObj.childNodes[0]);

			var btmImg = createHTMLElement("div");
			btmImg.className = "menu-bottom-img";
			menuObj.appendChild(btmImg);

			if (!ie5mac)
			{
				var menuLinks = menuObj.getElementsByTagName("a");
				var menuLinksCount = menuLinks.length*1;

				for (var i=0; i<menuLinksCount; i++)
				{
					var newSpan = createHTMLElement("span");
					
					if (menuLinks[i].applyElement)
					{
						menuLinks[i].applyElement(newSpan, "inside");
					}
					else
					{
						var childNode = menuLinks[i].childNodes[0];
						newSpan.appendChild(childNode.cloneNode(true));
						menuLinks[i].replaceChild(newSpan, childNode);
					}
				}
			}

			menuObj.transformedMenu = true;
		}

		if (!document.body) document.body = document.getElementsByTagName("body")[0];

		var rootNode = (window.createPopup && document.compatMode=="CSS1Compat") ? document.documentElement : document.body;

		for (var obj=currentRoll,menuTop=0; obj && obj!=document.documentElement; obj=obj.offsetParent) menuTop += obj.offsetTop;
		var menuLeft = currentRoll.width;
		
		menuObj.style.top      = menuTop + "px";
		menuObj.style.left     = menuLeft + "px";
		menuObj.style.height   = "auto";
		menuObj.style.overflow = "visible";
		menuObj.style.zIndex   = 1000;

		if (menuTop+menuObj.offsetHeight > rootNode.clientHeight+rootNode.scrollTop)
		{
			menuObj.style.top = ((rootNode.clientHeight+rootNode.scrollTop)-menuObj.offsetHeight) + "px";
		}

		if (menuObj.offsetHeight > rootNode.clientHeight)
		{
			menuObj.style.top       = rootNode.scrollTop + "px";
			menuObj.style.overflow  = "auto";
			menuObj.style.overflowX = "hidden";
			menuObj.style.height    = rootNode.clientHeight + "px";
		}

		currentMenu = menuObj;
	}

	function hidePopupMenu()
	{
		if (currentMenu)
		{
			//currentMenu.style.height = 0;
			//currentMenu.style.overflow = "hidden";
			currentMenu.style.left = "-500px";
			currentMenu = null;
			keybMenu = false;
		}
	}

	var keybMenu, menuTimeout;

	document.onactivate = document.onfocus = document.onkeydown = document.onkeypress = function(e)
	{
		// Allow keyboard access to menus
		if (window.showModalDialog && !window.createPopup) return false;

		var srcObj = e ? e.target : document.activeElement;

		if (srcObj && srcObj.parentNode && srcObj.tagName.toLowerCase()!="a" && srcObj.tagName.toLowerCase()=="span" && srcObj.parentNode.tagName.toLowerCase()=="a")
			srcObj=srcObj.parentNode;

		if (srcObj && srcObj.tagName && srcObj.tagName.toLowerCase()=="a")
		{
			var menuObj = (srcObj.nextSibling && srcObj.nextSibling.className=="pop-menu") ? srcObj.nextSibling : findObj(srcObj, "className", "pop-menu");
			
			if (menuObj && srcObj && srcObj.tagName.toLowerCase()=="a" && findObj(srcObj, "id", "side-nav"))
			{
				if (menuTimeout) clearTimeout(menuTimeout);
				swapImageBack();
				currentRoll = menuObj.previousSibling.childNodes[0];
				currentRoll.originalSrc = currentRoll.src;
				currentRoll.src = getRolloverSrc(currentRoll);
				showPopupMenu(menuObj);
				keybMenu = true;

				srcObj.onblur = function() { menuTimeout = setTimeout(function() { if (!keybMenu) swapImageBack(); }, 500); }
			}
			else
			{
				hidePopupMenu();

				if (srcObj && srcObj.tagName && srcObj.tagName.toLowerCase()=="a" && srcObj.firstChild && srcObj.firstChild.src && srcObj.firstChild.src.indexOf('/images/navbuttons/') > -1 && currentRoll != srcObj.firstChild)
				{
					if (menuTimeout) clearTimeout(menuTimeout);
					swapImageBack();
					currentRoll = srcObj.firstChild;
					currentRoll.originalSrc = currentRoll.src;
					currentRoll.src = getRolloverSrc(currentRoll);
				}
			}
		}
		else
		{
			hidePopupMenu();
		}
	}
}


function openNewsWin(linkHref)
{
	if (window.showModelessDialog)
	{
		showModelessDialog(linkHref, "", "dialogWidth:700px;help:no;resizable:yes");
		status = "Please wait, loading news story...";
		setTimeout("status=''", 3000);
		return false;
	}
	else
	{
		return true;
	}
}

document.onmouseup = function()
{
	var el;
	if (window.event && (el=event.srcElement) && el.tagName.toLowerCase()=="img" && el.parentNode.tagName.toLowerCase()=="label" && (el=document.getElementById(el.parentNode.htmlFor)))
		el.focus();
}

function openCgiIrc(nick, chan, width, height)
{
	width = width || 650;
	height = height || 450;
	return open("http://cgiirc.blitzed.org/?Nickname="+escape(nick)+"&Channel="+escape(chan)+"&interface="+(window.opera ? "opera" : (navigator.product=="Gecko" ? "mozilla" : document.all?"ie":"nonjs")), "cgiIrcWin", "resizable=yes,toolbars=no,status=no,directories=no,location=no,menubar=no,scrollbars=no,width="+width+",height="+height+(window.screen?',top='+((screen.availHeight-height)/2)+',left='+((screen.availWidth-width)/2):''));
}

function setHomepageIE(homeUrl)
{
	if (window.clipboardData && (srcObj=event.srcElement))
	{
		srcObj.style.behavior = "url(#default#homepage)";
		srcObj.setHomePage(homeUrl || "http://www.golf.uk.net/");
		event.returnValue = false;
	}
}

var mapPreloaded;

function preloadMap()
{
	mapPreloaded = true;
	var mapImgs = ["map_wales.gif", "map_ire.gif", "map_scot.gif", "map_eng.gif"];
	for (var i=0; i<mapImgs.length; i++)
	{
		window["mapImg"+i] = createHTMLElement("img");
		window["mapImg"+i].src = "/images/map/" + mapImgs[i];
	}
}

function swapSearchTab(newTab, isSearch)
{
	if (document.getElementById)
	{
		var searchForm = document.getElementById("search-form");
		if (!isSearch) document.getElementsByName("dosearch")[0].value = "0";
		searchForm.action = newTab;
		searchForm.submit();
		return false;
	}
}

function submitMap(country)
{
	if (document.getElementById)
	{
		var searchForm = document.getElementById("search-form");
		if (country) document.getElementById("search-country").value = country;
		searchForm.submit();
		return false;
	}
}

var xmlHttp, placeSelectEl;

function loadXmlHttp()
{
	try
	{
		if (window.ActiveXObject)
			return new ActiveXObject("Microsoft.XMLHTTP");
		else if (window.XMLHttpRequest)
			return new XMLHttpRequest();
	}
	catch(err)
	{
		return false;
	}
}

function resetPlaceList(placeListId, placeListName)
{
	var el = document.getElementById(placeListId);

	if (el)
	{
		el.options.length = 0;
		addSelectOption(el, 0, 'select '+placeListName+' first', true);
		el.disabled = true;
	}
}

function loadPlaceList(selectId, placeType, placeID)
{
	// If no XML HTTP loaded, attempt to create
	if (!xmlHttp) xmlHttp = loadXmlHttp();
	
	if (!xmlHttp)
		// Browser doesn't have XML HTTP
		return false;

	if (placeID < 1)
	{
		switch (placeType)
		{
			case 'county' :
				resetPlaceList('search-county', 'country');
				resetPlaceList('search-city', 'county');
				return true;
			case 'city' :
				resetPlaceList('search-city', 'county');
				return true;
		}
	}
	else if (xmlHttp)
	{
		placeSelectEl = document.getElementById(selectId);
		placeSelectEl.options.length = 0;
		
		addSelectOption(placeSelectEl, 0, 'loading...', true);
		
		xmlHttp.open("GET", "/search/inc/jsfetch?type="+placeType+"&id="+placeID, true, "", "");
		xmlHttp.send(null);
		xmlHttp.onreadystatechange = function()
		{
			if (xmlHttp.readyState > 3)
			{
				placeSelectEl.options.length = 0;
				var placeArr = xmlHttp.responseText.split("|");
				addSelectOption(placeSelectEl, 0, '(any)', true);

				for (var i=0; i<placeArr.length-1; i++)
				{
					var tempArr = placeArr[i].split("!");
					addSelectOption(placeSelectEl, tempArr[0], tempArr[1]);
				}

				placeSelectEl.disabled = false;
			}
		}
		return true;
	}
}

function addSelectOption(selectEl, optVal, optText, optSelected)
{
	var loadOpt = createHTMLElement("option");
	loadOpt.value = optVal;
	loadOpt.text = optText;
	loadOpt.selected = optSelected;
	return selectEl[window.showModalDialog?'add':'appendChild'](loadOpt);
}

function winOpen(url, breite, hoehe) {
// Errechnet Koordinaten, um das Popup von islekerart zentriert zu platzieren
links = (screen.width/2)-(breite/2);
oben = (screen.height/2)-(hoehe/2);
window.open(url,"popup","height="+hoehe+",width="+breite+",status = no,toolbar = no,menubar = no,location = no,resizable = no,titlebar = no,scrollbars = no,copyhistory = yes,dependent=yes,fullscreen = no,top ="+oben+",left ="+links);
}

function com_stewartspeak_replacement() {
/*
	Dynamic Heading Generator
    By Stewart Rosenberger
    http://www.stewartspeak.com/headings/

	This script searches through a web page for specific or general elements
	and replaces them with dynamically generated images, in conjunction with
	a server-side script.
*/


replaceSelector("h2","heading.php",true);
var testURL = "test.png" ;

var doNotPrintImages = false;
var printerCSS = "replacement-print.css";

var hideFlicker = false;
var hideFlickerCSS = "replacement-screen.css";
var hideFlickerTimeout = 1000;




/* ---------------------------------------------------------------------------
    For basic usage, you should not need to edit anything below this comment.
    If you need to further customize this script's abilities, make sure
	you're familiar with Javascript. And grab a soda or something.
*/

var items;
var imageLoaded = false;
var documentLoaded = false;

function replaceSelector(selector,url,wordwrap)
{
	if(typeof items == "undefined")
		items = new Array();

	items[items.length] = {selector: selector, url: url, wordwrap: wordwrap};
}

if(hideFlicker)
{		
	document.write('<link id="hide-flicker" rel="stylesheet" media="screen" href="%27%20+%20hideFlickerCSS%20+%20%27" />');		
	window.flickerCheck = function()
	{
		if(!imageLoaded)
			setStyleSheetState('hide-flicker',false);
	};
	setTimeout('window.flickerCheck();',hideFlickerTimeout)
}

if(doNotPrintImages)
	document.write('<link id="print-text" rel="stylesheet" media="print" href="%27%20+%20printerCSS%20+%20%27" />');

var test = new Image();
test.onload = function() { imageLoaded = true; if(documentLoaded) replacement(); };
test.src = testURL + "?date=" + (new Date()).getTime();

addLoadHandler(function(){ documentLoaded = true; if(imageLoaded) replacement(); });


function documentLoad()
{
	documentLoaded = true;
	if(imageLoaded)
		replacement();
}

function replacement()
{
	for(var i=0;i<items.length;i++)
	{
		var elements = getElementsBySelector(items[i].selector);
		if(elements.length > 0) for(var j=0;j<elements.length;j++)
		{
			if(!elements[j])
				continue ;
		
			var text = extractText(elements[j]);
    		while(elements[j].hasChildNodes())
				elements[j].removeChild(elements[j].firstChild);

			var tokens = items[i].wordwrap ? text.split(' ') : [text] ;
			for(var k=0;k<tokens.length;k++)
			{
				var url = items[i].url + "?text="+escape(tokens[k]+' ')+"&selector="+escape(items[i].selector);
				var image = document.createElement("img");
				image.className = "replacement";
				image.alt = tokens[k] ;
				image.src = url;
				elements[j].appendChild(image);
			}

			if(doNotPrintImages)
			{
				var span = document.createElement("span");
				span.style.display = 'none';
				span.className = "print-text";
				span.appendChild(document.createTextNode(text));
				elements[j].appendChild(span);
			}
		}
	}

	if(hideFlicker)
		setStyleSheetState('hide-flicker',false);
}

function addLoadHandler(handler)
{
	if(window.addEventListener)
	{
		window.addEventListener("load",handler,false);
	}
	else if(window.attachEvent)
	{
		window.attachEvent("onload",handler);
	}
	else if(window.onload)
	{
		var oldHandler = window.onload;
		window.onload = function piggyback()
		{
			oldHandler();
			handler();
		};
	}
	else
	{
		window.onload = handler;
	}
}

function setStyleSheetState(id,enabled) 
{
	var sheet = document.getElementById(id);
	if(sheet)
		sheet.disabled = (!enabled);
}

function extractText(element)
{
	if(typeof element == "string")
		return element;
	else if(typeof element == "undefined")
		return element;
	else if(element.innerText)
		return element.innerText;

	var text = "";
	var kids = element.childNodes;
	for(var i=0;i<kids.length;i++)
	{
		if(kids[i].nodeType == 1)
		text += extractText(kids[i]);
		else if(kids[i].nodeType == 3)
		text += kids[i].nodeValue;
	}

	return text;
}

/*
	Finds elements on page that match a given CSS selector rule. Some
	complicated rules are not compatible.
	Based on Simon Willison's excellent "getElementsBySelector" function.
	Original code (with comments and description):
		http://simon.incutio.com/archive/2003/03/25/getElementsBySelector
*/
function getElementsBySelector(selector)
{
	var tokens = selector.split(' ');
	var currentContext = new Array(document);
	for(var i=0;i<tokens.length;i++)
	{
		token = tokens[i].replace(/^\s+/,'').replace(/\s+$/,'');
		if(token.indexOf('#') > -1)
		{
			var bits = token.split('#');
			var tagName = bits[0];
			var id = bits[1];
			var element = document.getElementById(id);
			if(tagName && element.nodeName.toLowerCase() != tagName)
				return new Array();
			currentContext = new Array(element);
			continue;
		}

		if(token.indexOf('.') > -1)
		{
			var bits = token.split('.');
			var tagName = bits[0];
			var className = bits[1];
			if(!tagName)
				tagName = '*';

			var found = new Array;
			var foundCount = 0;
			for(var h=0;h<currentContext.length;h++)
			{
				var elements;
				if(tagName == '*')
					elements = currentContext[h].all ? currentContext[h].all : currentContext[h].getElementsByTagName('*');
				else
					elements = currentContext[h].getElementsByTagName(tagName);

				for(var j=0;j<elements.length;j++)
					found[foundCount++] = elements[j];
			}

			currentContext = new Array;
			var currentContextIndex = 0;
			for(var k=0;k<found.length;k++)
			{
				if(found[k].className && found[k].className.match(new RegExp('\\b'+className+'\\b')))
					currentContext[currentContextIndex++] = found[k];
			}

			continue;
	    }

		if(token.match(/^(\w*)\[(\w+)([=~\|\^\$\*]?)=?"?([^\]"]*)"?\]$/))
		{
			var tagName = RegExp.$1;
			var attrName = RegExp.$2;
			var attrOperator = RegExp.$3;
			var attrValue = RegExp.$4;
			if(!tagName)
				tagName = '*';

			var found = new Array;
			var foundCount = 0;
			for(var h=0;h<currentContext.length;h++)
			{
				var elements;
	        	if(tagName == '*')
					elements = currentContext[h].all ? currentContext[h].all : currentContext[h].getElementsByTagName('*');
				else
					elements = currentContext[h].getElementsByTagName(tagName);

				for(var j=0;j<elements.length;j++)
					found[foundCount++] = elements[j];
			}

			currentContext = new Array;
			var currentContextIndex = 0;
			var checkFunction;
			switch(attrOperator)
			{
				case '=':
					checkFunction = function(e) { return (e.getAttribute(attrName) == attrValue); };
					break;
				case '~':
					checkFunction = function(e) { return (e.getAttribute(attrName).match(new RegExp('\\b'+attrValue+'\\b'))); };
					break;
				case '|':
					checkFunction = function(e) { return (e.getAttribute(attrName).match(new RegExp('^'+attrValue+'-?'))); };
					break;
				case '^':
					checkFunction = function(e) { return (e.getAttribute(attrName).indexOf(attrValue) == 0); };
					break;
				case '$':
					checkFunction = function(e) { return (e.getAttribute(attrName).lastIndexOf(attrValue) == e.getAttribute(attrName).length - attrValue.length); };
					break;
				case '*':
					checkFunction = function(e) { return (e.getAttribute(attrName).indexOf(attrValue) > -1); };
					break;
				default :
					checkFunction = function(e) { return e.getAttribute(attrName); };
			}

			currentContext = new Array;
			var currentContextIndex = 0;
			for(var k=0;k<found.length;k++)
			{
				if(checkFunction(found[k]))
					currentContext[currentContextIndex++] = found[k];
			}

			continue;
		}

		tagName = token;
		var found = new Array;
		var foundCount = 0;
		for(var h=0;h<currentContext.length;h++)
		{
			var elements = currentContext[h].getElementsByTagName(tagName);
			for(var j=0;j<elements.length; j++)
				found[foundCount++] = elements[j];
		}

		currentContext = found;
	}

	return currentContext;
}


}// end of scope, execute code
if(document.createElement && document.getElementsByTagName && !navigator.userAgent.match(/opera\/?6/i))
	com_stewartspeak_replacement();