<!--

	var remote = null;
	
	function login_popup() {
		var login_popup = document.getElementById('login_popup');		
		if (login_popup.style.display != '') {
			login_popup.style.left = (document.getElementById('menubar_login').offsetLeft)-180 + 'px';
			login_popup.style.display = '';
			document.getElementById('l_email').focus();
		} else {
			login_popup.style.display = 'none';
		}
		
		return false;
	}
	
	function login_cancel(return_to) {
		
		if (document.getElementById('login_popup') != null) {
			document.getElementById('login_popup').style.display = 'none';
		} else {
			window.location = return_to;
		}
	}
	
	function login_validate() {
		j_email    = document.getElementById('l_email').value;
		j_password = document.getElementById('l_password').value;

		if (j_email == '') {
			return false;
		} else if (j_password == '') {
			return false;
		} else {
			if (document.getElementById('l_submit') != null) {
				document.getElementById('l_submit').disabled = true;
			}
			if (document.getElementById('l_cancel') != null) {
				document.getElementById('l_cancel').disabled = true;
			}
			return true;
		}
	}
	
	function insertAfter(newElement, targetElement) {
		//target is what you want it to go after. Look for this elements parent.
		var parent = targetElement.parentNode;
		
		//if the parents lastchild is the targetElement...
		if (parent.lastchild == targetElement) {
			//add the newElement after the target element.
			parent.appendChild(newElement);
		} else {
			// else the target has siblings, insert the new element between the target and it's next sibling.
			parent.insertBefore(newElement, targetElement.nextSibling);
		}
	}
	
	function replace_all(oldStr, findStr, repStr) { //(C)1996 Philip Tan Boon Yew
		var srchNdx = 0;  // srchNdx will keep track of where in the whole line of oldStr are we searching.
		var newStr = "";  // newStr will hold the altered version of oldStr.
		while (oldStr.indexOf(findStr, srchNdx) != -1) { // As long as there are strings to replace, this loop will run.
			newStr += oldStr.substring(srchNdx, oldStr.indexOf(findStr, srchNdx));
			newStr += repStr;
			srchNdx = (oldStr.indexOf(findStr, srchNdx) + findStr.length);
		}
		newStr += oldStr.substring(srchNdx, oldStr.length); // Put whatever's left into newStr.             
		return newStr;
	}
	
	function q_init() {
		if (document.getElementById('q_submit') != null) {
			document.getElementById('q').style.color = "#777777";
			document.getElementById('q').value = 'Search...';
		}
	}
	
	function q_focus() {
		if (document.getElementById('q').value == 'Search...') {
			document.getElementById('q').value = '';
			document.getElementById('q').style.color = "#000000";
		}
	}
	
	function q_blur() {
		if (document.getElementById('q').value == '') {
			document.getElementById('q').value = 'Search...';
			document.getElementById('q').style.color = "#777777";
		}
	}
	
	function nav_search_validate(e) {
		var key;
		
		if (window.event) {
			key = window.event.keyCode; //IE
		} else {
			key = e.which; //firefox
		}
		
		if (key == 13) {
			document.getElementById('nav_search_form').submit();
		}
		
	}

	function open_window(win_url, win_name, win_width, win_height, extra_options) {
		window_options = 'width=' + win_width + ', height=' + win_height + ', scrollbars=yes, resizable=yes';
		if (extra_options) {
			window_options = window_options + ', ' + extra_options;
		}
		
		remote = window.open(win_url, 'si_' + win_name, window_options);
		//remote.myParent = window;
		if (remote.opener == null) remote.opener = window;
		remote.focus();
		return false;
		
		
	}

	function close_window() {
		window.close();
	}

	function toggleFilter() {
		if (document.getElementById('filter_body').style.display == 'none') {
			document.getElementById('filter_body').style.display = 'block';
			document.getElementById('toggle_filter').innerHTML = 'Hide Filter';
			if (document.getElementById('f_name')) document.getElementById('f_name').focus();
		} else {
			document.getElementById('filter_body').style.display = 'none';
			document.getElementById('toggle_filter').innerHTML = 'Show Filter';
		}
	}
	
	function addToSelect(select_name, option_value, option_text) {
		var elOptNew = document.createElement('option');
		elOptNew.value = option_value;
		elOptNew.text = option_text;
		//options[0] = new Option('--------------------------', '0');
		
		try {
			document.getElementById(select_name).add(elOptNew, null); // standards compliant; doesn't work in IE
		} catch (e) {
			document.getElementById(select_name).add(elOptNew); // IE only
		}
	}
	
	function sortOptions(select_name) {
		var what = document.getElementById(select_name);
		var temp_array = new Array();
		for (a = 0; a < what.options.length; a++) {
			temp_array[a] = new Array(what[a].value, what[a].text);
		}
		
		temp_array.sort(function(a,b) { return a[0]-b[0]; });
		
		for (a = what.options.length-1; a > -1; a--) {
			what.options[a] = null;
		}
		
		for (a = 0; a < temp_array.length; a++) {
			addToSelect(select_name, temp_array[a][0], temp_array[a][1])
		}
	}
	
	function onlyNumbers(j_event) {
		if (j_event.which == undefined) keycode = j_event.keyCode;
		else keycode = j_event.which;
		
		if (keycode == 0 || keycode == 8 || keycode == 13) return true;
		else if (keycode >= 48 && keycode <= 57) return true;
		else return false;
	}
	
	function SearchSelect(searchType, select, textBox) {

		//Search Type 0: Forward only
		//Search type 1: Forward / reverse

		var i;
		var x;
		var subString;
		var keypresses;
		var searchString = textBox;

		//count key presses for string comparison
		keypresses = searchString.length;
	
		if (searchType == 0) {
			if (keypresses == 1)
				i=0;
			else
				i = select.selectedIndex;
			}
		else
			i = 0;

		if (keypresses > 0) {
			for (x=i; x<select.length; x++) {
				subString = select.options[x].text;
				subString = subString.toLowerCase();
				subStringShort = subString.substr(0, keypresses);

				searchString = searchString.toLowerCase();

				if (subStringShort == searchString) {
					select.selectedIndex = x;
					break;
				} else if (subString.indexOf(searchString) > -1) {
					select.selectedIndex = x;
					break;
				}
			}
		}
	}
	
	var getElementsByClassName = function (className, tag, elm){
		if (document.getElementsByClassName) {
			getElementsByClassName = function (className, tag, elm) {
				elm = elm || document;
				var elements = elm.getElementsByClassName(className),
					nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
					returnElements = [],
					current;
				for(var i=0, il=elements.length; i<il; i+=1){
					current = elements[i];
					if(!nodeName || nodeName.test(current.nodeName)) {
						returnElements.push(current);
					}
				}
				return returnElements;
			};
		}
		else if (document.evaluate) {
			getElementsByClassName = function (className, tag, elm) {
				tag = tag || "*";
				elm = elm || document;
				var classes = className.split(" "),
					classesToCheck = "",
					xhtmlNamespace = "http://www.w3.org/1999/xhtml",
					namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
					returnElements = [],
					elements,
					node;
				for(var j=0, jl=classes.length; j<jl; j+=1){
					classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
				}
				try	{
					elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
				}
				catch (e) {
					elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
				}
				while ((node = elements.iterateNext())) {
					returnElements.push(node);
				}
				return returnElements;
			};
		}
		else {
			getElementsByClassName = function (className, tag, elm) {
				tag = tag || "*";
				elm = elm || document;
				var classes = className.split(" "),
					classesToCheck = [],
					elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
					current,
					returnElements = [],
					match;
				for(var k=0, kl=classes.length; k<kl; k+=1){
					classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
				}
				for(var l=0, ll=elements.length; l<ll; l+=1){
					current = elements[l];
					match = false;
					for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
						match = classesToCheck[m].test(current.className);
						if (!match) {
							break;
						}
					}
					if (match) {
						returnElements.push(current);
					}
				}
				return returnElements;
			};
		}
		return getElementsByClassName(className, tag, elm);
	};
	
	function html_entity_decode(str) {
	    try {
			var  tarea=document.createElement('textarea');
			tarea.innerHTML = str; return tarea.value;
			tarea.parentNode.removeChild(tarea);
		}
		catch(e) {
			//for IE add <div id="htmlconverter" style="display:none;"></div> to the page
			document.getElementById("htmlconverter").innerHTML = '<textarea id="innerConverter">' + str + '</textarea>';
			var content = document.getElementById("innerConverter").value;
			document.getElementById("htmlconverter").innerHTML = "";
			return content;
		}
	}

//-->
