	/**
	* Gets the HTML element by it's name (works for all browsers)
	*/
	function getHtmlElement(element_name, silent)
	{
		if(element_name == null)
		{
			alert('Cannot get null element');
			return null;
		}
		var retVal = document.getElementsByName(element_name);
		
		if(retVal == null || retVal.length == 0)
		{
			retVal = document.getElementById(element_name);
			if(retVal == null)
			{
				var nm = element_name.replace(':', '_');
				while(nm.indexOf(':') != -1)
					nm = nm.replace(':', '_');
				retVal = document.getElementById(nm);
			}
		}
		else
			retVal = retVal[0];
		
		if(retVal == null)
		{
			if(!silent)
				alert('JavaScript error: cannot find an element: \'' + element_name + '\'');
		}
		else 
			return retVal;
		return null;
	}

	function getHtmlElements(element_name)
	{
		if(element_name == null)
		{
			alert('Cannot get null element');
			return null;
		}
		var retVal = document.getElementsByName(element_name);
		if(retVal == null)
			return new Array();
		else 
			return retVal;
	}

	function getElClass(obj)
	{
		var clnStr = obj.getAttribute('className');
		var clStr = obj.getAttribute('class');
		if(clStr=='' || !clStr) clStr = clnStr;
		return clStr;
	}
	function setElClass(obj,name)
	{
		obj.setAttribute('class',name);
		obj.setAttribute('className',name);
	}

	function deselectCurrentNode(treeId, hidId)
	{
		if(getHtmlElement(hidId).value != '')
		{
			var current = getHtmlElements(treeId + ':caption_' + getHtmlElement(hidId).value);
			for(var i = 0; i < current.length; i++)
			{
				clStr=getElClass(current[i]);
				if(clStr.lastIndexOf("_SelectedOver") != -1)
					clStr=clStr.substring(0, clStr.length-'_SelectedOver'.length)
				if(clStr.lastIndexOf("_Selected") != -1)
					clStr=clStr.substring(0, clStr.length-'_Selected'.length)
				setElClass(current[i],clStr);
			}
		}
	}


	function findParent(treeId, key)
	{
		
		var el = getHtmlElement(treeId + ':content_' + key, true);
		el = el.parentNode;
		if(el.id != null && el.style.display == "none")
		{
			el = el.id;
			if(el.indexOf(treeId) != -1)
				el = el.substring(treeId.length + ':content_'.length);
			else return null;
			return el;	
		}
		return null;
	}
	function expandParents(treeId, key)
	{
		var par = findParent(treeId, key);
		var str = "";
		if(par != null)
		{
			var el = getHtmlElement(treeId + ":img_" + par, true);
			if(el != null)
			{
				el = el.parentNode;
				if(el.href)
				{
					str = el.href.toString();
					str = str.replace(/javascript:(\S*)/ig, "$1");
				}
			}	
			str = expandParents(treeId, par) + unescape(str);
		}
		return str;
	}
	function expandCurrentNode(treeId, hidId)
	{
		if(getHtmlElement(hidId).value != '')
		{
			return expandParents(treeId, getHtmlElement(hidId).value);
		}
		return "";
	}
	/**
	* Tree selection script
	*/

	function selectNode(element, key, treeId, lblId, hidId, hidCurrentCategoryTitleID, auto)
	{
		
		if(auto && getHtmlElement('txtSearch', true))
		{
			if(getHtmlElement('txtSearch').value != '')
			{
				deselectCurrentNode(treeId, hidId);
				return;
			}
		}
		if(getHtmlElement(hidId).value == key)
			return;	
			
		deselectCurrentNode(treeId, hidId);
		
		var current = getHtmlElements(treeId + ':caption_' + key);
		for(var i = 0; i < current.length; i++)
		{
			var oldClass = getElClass(current[i]);
			if(oldClass.lastIndexOf("Over") != -1)
				oldClass=oldClass.substring(0, oldClass.length-'Over'.length)
			if(auto)
				setElClass(current[i],oldClass+'_Selected');
			else
				setElClass(current[i],oldClass+'_SelectedOver');
		}

		if(current.length > 0)
		{
			if(getHtmlElement(lblId, true))
				getHtmlElement(lblId).innerHTML = current[0].firstChild.nodeValue;
			if(hidCurrentCategoryTitleID)
				getHtmlElement(hidCurrentCategoryTitleID).value = current[0].firstChild.nodeValue;
			getHtmlElement(hidId).value = key;
		}
		else
		{
			if(getHtmlElement(lblId, true))
				getHtmlElement(lblId).innerHTML = '';
			if(hidCurrentCategoryTitleID)
				getHtmlElement(hidCurrentCategoryTitleID).value = '';
			getHtmlElement(hidId, true).value = '';
		}
		


		if(auto == false)
		{
			var frm = getHtmlElement(hidId).form;
			var str = frm.action;
			str = str.replace(/(\?|&)ArticleId=\d+&*/ig, "$1");

			if(str.indexOf("catId") > -1)
				frm.action = str.replace(/(?=(\?|&))(\S[^=]*)catId=(-*)\d+/ig,"$1catId=" + key);
			else 
			{
				if(str.indexOf("?") == -1)
					frm.action = str + "?" +"catId=" + key
				else
					frm.action = str + "&" +"catId=" + key
			}
			if(getHtmlElement('txtSearch',  true))
				getHtmlElement('txtSearch').value = '';
			frm.submit();
		}	
		else
		{
			//eval(expandCurrentNode(treeId, hidId));
			expandCurrentNode(treeId, hidId);
		}
	}
	function selectNodeLocation(element, key, treeId, lblId, hidId, hidCurrentCategoryTitleID, loc)
	{
		
			
		deselectCurrentNode(treeId, hidId);
		
		var current = getHtmlElements(treeId + ':caption_' + key);
		for(var i = 0; i < current.length; i++)
		{
			var oldClass = getElClass(current[i]);
			if(oldClass.lastIndexOf("Over") != -1)
				oldClass=oldClass.substring(0, oldClass.length-'Over'.length)
			setElClass(current[i],oldClass+'_SelectedOver');
		}

		if(current.length > 0)
		{
			if(getHtmlElement(lblId, true))
				getHtmlElement(lblId).innerText = current[0].firstChild.nodeValue;
			if(hidCurrentCategoryTitleID)
				getHtmlElement(hidCurrentCategoryTitleID).value = current[0].firstChild.nodeValue;
			getHtmlElement(hidId).value = key;
		}
		else
		{
			if(getHtmlElement(lblId, true))
				getHtmlElement(lblId).innerText = '';
			if(hidCurrentCategoryTitleID)
				getHtmlElement(hidCurrentCategoryTitleID).value = '';
			getHtmlElement(hidId, true).value = '';
		}
		


			var str = loc;
			str = str.replace(/(\?|&)ContentId=\d+&*/ig, "$1");

			if(str.indexOf("catId") > -1)
				document.location = str.replace(/(?=(\?|&))(\S[^=]*)catId=(-*)\d+/ig,"$1catId=" +  + key);
			else 
			{
				if(str.indexOf("?") == -1)
					document.location = str + "?" +"catId=" + key
				else
					document.location = str + "&" +"catId=" + key
			}

	}
	
	function searchClick(obj)
	{
		if(event.keyCode == 13)
		{
			searchAricles(obj);
		}
	}

	function searchAricles(obj)
	{
		obj.form.action = "default.aspx";
		obj.form.__VIEWSTATE.name = 'none';
		obj.form.submit();
	}

	function AssignSpanOverClass(spanObj)
	{
		setElClass(spanObj, 'TreeView_RowSpanOver'); 
		var aNodes;
    if(window.navigator.userAgent.toLowerCase().indexOf("firefox") > 0)
			aNodes = spanObj.childNodes;
		else
			aNodes = spanObj.children;
				    
    for(var i = 0; i < aNodes.length; i++)
      if ((aNodes[i].tagName.toLowerCase() == 'a') &&  (aNodes[i].id.indexOf('caption') != -1)) 
      {
        var currentClass = getElClass(aNodes[i]);
        if (currentClass.lastIndexOf("Over") == (currentClass.length - "Over".length))
              return;
        setElClass(aNodes[i], currentClass + "Over");
      }
	}
	
	
	function AssignSpanOutClass(spanObj)
	{
		spanObj.className='TreeView_RowSpan'; 
		var aNodes;
    if(window.navigator.userAgent.toLowerCase().indexOf("firefox") > 0)
			aNodes = spanObj.childNodes;
		else
			aNodes = spanObj.children;

    for(var i = 0; i < aNodes.length; i++) 
      if ((aNodes[i].tagName.toLowerCase() == 'a') && (aNodes[i].id.indexOf('caption') != -1))
      {
        var currentClass = getElClass(aNodes[i]);
        if (currentClass.lastIndexOf("Over") == (currentClass.length - "Over".length))
              currentClass = currentClass.substring(0, currentClass.length - "Over".length);
        setElClass(aNodes[i], currentClass);
      }
	}
	
	
	function SpanClick(spanObj)
	{
		var aNodes;
    if(window.navigator.userAgent.toLowerCase().indexOf("firefox") > 0)
			aNodes = spanObj.childNodes;
		else
			aNodes = spanObj.children;

		for(var i = 0; i < aNodes.length; i++) 
			if (aNodes[i].tagName.toLowerCase() == 'a' && 
				aNodes[i].id.indexOf('caption') != -1)
					alert(getElClass(aNodes[i]));
	}