var gFixed = 0 ;
var sListId = "" ;
var isIE = (navigator.userAgent.toLowerCase().indexOf('msie') > 0) ;
var isNodeVisibleCheck = false;

function fixupGroups() {
	if(gFixed  == 0) {
		var divElSubs = document.getElementById(sListId) ;
		var iterator = document.evaluate(
			"//br", 
			divElSubs, 
			null, 
			XPathResult.UNORDERED_NODE_ITERATOR_TYPE, 
			null );
		var brelements = new Array() ;
		var thisNode = iterator.iterateNext();
		while (thisNode) {
			brelements.push(thisNode) ;
			thisNode = iterator.iterateNext();
		}
		for(var i = 0; i < brelements.length; i++) {
			var e = brelements[i] ;
			var p = e.parentNode ;
			var span = document.createElement("span");
			span.appendChild(document.createElement("br"));
			var s = e.nextSibling ;
			while ((s != null) && (s.nodeName.toLowerCase() != "br")) {
				var ns = s.nextSibling ;
				var n = p.removeChild(s) ;
				span.appendChild(n) ;
				s = ns ;
			}
			p.replaceChild(span, e) ;
		}
	}
	gFixed = 1 ;
}

function fixupGroupsIE() {
	if(gFixed  == 0) {
		var divElSubs = document.getElementById(sListId) ;
		var iterator = document.getElementsByTagName("BR");
		for(var i = 0; i < iterator.length; i++) {
			var e = iterator[i] ;
			var p = e.parentNode ;
			var span = document.createElement("span");
			span.appendChild(document.createElement("br"));
			var s = e.nextSibling ;
			while ((s != null) && (s.nodeName.toLowerCase() != "br")) {
				var ns = s.nextSibling ;
				var n = p.removeChild(s) ;
				span.appendChild(n) ;
				s = ns ;
			}
			p.replaceChild(span, e) ;
		}
		// alert("Fixed " + iterator.length + " elements") ;
	}
	gFixed = 1 ;
}

function ApplyFilter(sFilter) {
	var divElSubs = document.getElementById(sListId) ;
	fixupGroupsIE()
	/*if(isIE) 
		fixupGroupsIE() ;
	else
		fixupGroups() ;
	*/
	sFilter = sFilter.toLowerCase() ;
	if(divElSubs) {
		var hidden = new Array() ;
		var visible = new Array() ;
		//if(isIE) {
			var nCount = 0 ;
			var iterator = document.getElementsByTagName("SPAN");
			for(var i = 0; i < iterator.length; i++) {
				var e = iterator[i] ;
				if(e.className.toLowerCase() == sListStyle) {
					var sTitle = (isIE)?e.innerText:ReplaceTags(e.innerHTML);
					if(sTitle.toLowerCase().indexOf(sFilter) >= 0)
						visible.push(e) ;
					else
						hidden.push(e) ;
					nCount++ ;
				}
			}
			//alert(hidden.length + " " +visible.length);
		//}
		/*
		else 
		{
			var iterator = document.evaluate(
				"//span[@class='onlinecategorylist']", 
				divElSubs, 
				null, 
				 XPathResult.UNORDERED_NODE_ITERATOR_TYPE, 
				null );
			if(iterator) {
				var nCount = 0 ;
				try {
					var thisNode = iterator.iterateNext();
					while (thisNode) {
						var sTitle = thisNode.textContent ;
						if(sTitle.toLowerCase().indexOf(sFilter) >= 0)
							visible.push(thisNode) ;
						else
							hidden.push(thisNode) ;
						thisNode = iterator.iterateNext();
					}	
				}
				catch (e) {
					alert('Error: Document tree modified during iteration ' + e );
				}
			}
		}
		*/
		if((hidden.length > 0) || (visible.length > 0)) {
			//alert(visible.length + " visible, " + hidden.length + " hidden") ;
			for(var i = 0; i < hidden.length; i++) {
				var e = hidden[i] ;
				if(e.parentNode.nodeName.toLowerCase() == "span") {
					e.parentNode.style.display = "none" ;
				}
				e.parentNode.parentNode.style.display = "none" ;
			}
			for(var i = 0; i < visible.length; i++) {
				var e = visible[i] ;
				if(e.parentNode.nodeName.toLowerCase() == "span")
				{
					e.parentNode.style.display = "" ;
				}
				e.parentNode.parentNode.style.display = "" ;
			}
			if(isNodeVisibleCheck)
			{
				newHeadingElements = new Array();
				for(var i = 0; i < visible.length; i++) 
				{
					var e = visible[i] ;
					if(isIE)
					{
						var tempNode = e.parentNode.parentNode.previousSibling;
						var inCheck = true;
						var tempCount = 0;
						while(inCheck)
						{
							tempCount++;
							var strTemp = tempNode.innerHTML;
							if(strTemp.toLowerCase().indexOf("onlinecategorylistheading") > -1 || strTemp.toLowerCase().indexOf("bodytext") > -1)
							{
								inCheck=false;
								newHeadingElements.push(tempNode.id);
							}
							else
							{
								tempNode = tempNode.previousSibling;
							}
							if(tempCount > 1000) inCheck=false;
						}
					}
					else
					{
						var strTemp1 = e.parentNode.parentNode.parentNode.innerHTML;
						var strTemp2 = e.innerHTML;
						if(strTemp1.toLowerCase().indexOf(strTemp2.toLowerCase()) > -1)
						{
							strTemp1 = strTemp1.substr(0,strTemp1.toLowerCase().indexOf(strTemp2.toLowerCase()));
							if(strTemp1.toLowerCase().lastIndexOf("onlinecategorylistheading") > -1)
							{
								strTemp1 = strTemp1.substr(0,strTemp1.toLowerCase().lastIndexOf("onlinecategorylistheading"));
								if(strTemp1.toLowerCase().lastIndexOf("id") > -1)
								{
									strTemp1 = strTemp1.substr(strTemp1.toLowerCase().lastIndexOf("id"));
									strTemp1 = strTemp1.substr(strTemp1.toLowerCase().indexOf("\"")+1);
									strTemp1 = strTemp1.substr(0,strTemp1.toLowerCase().indexOf("\""));
									newHeadingElements.push(strTemp1);
								}
							}
						}
					}
				}
				ShowHideHeadingsNew();
			}			
		} 
		else
		{
			//alert("no nodes") ;
		}
	} else
		alert("Could not locate subscriptions DIV") ;
}

var regExp = /<\/?[^>]+>/gi;
function ReplaceTags(xStr){
	xStr = xStr.replace(regExp,"");
	return xStr;
}

function CheckValue(obj, event)
{
	if (event.keyCode == 13)
	{
		return false;
	}
}

function ShowHideHeadingsNew()
{
	//alert(newHeadingElements);
	var str = newHeadingElements.join(";").toLowerCase();
	//alert(str);
	for(var i = 0; i < HeadingElements.length; i++) {
		obj = document.getElementById(HeadingElements[i]);
		obj.style.display = "" ;
		if(str.indexOf(HeadingElements[i].toLowerCase()) == -1)
		{
			if(obj) obj.style.display = "none" ;
			//alert("inside");
		}
	}	
}