try {
	var pageTracker = _gat._getTracker("UA-7847108-9"); 
	pageTracker._trackPageview();
} catch(err) {
}

function openLink(s) {
	document.location = s.options[s.selectedIndex].value;
}

var addLoadHandler = function(handler) {
	var oldonload = window.onload;
	if (!CORE.isFunction(window.onload)) {
		window.onload = handler; 
	} else {
		window.onload = function() {
			if (oldonload) { 
				oldonload(); 
			}
			handler();
		};
	}
};

var addUnloadHandler = function (handler) {
	var oldonunload = window.onunload;
    if (!CORE.isFunction(window.onunload)) {
    	window.onunload = handler;
	} else {
		window.onunload = function() {
			if (oldonunload) { 
				oldonunload(); 
			}
			handler();
		};
	}
};

var addBeforeUnloadHandler = function (handler) {
	var oldonbeforeunload = window.onbeforeunload;
    if (!CORE.isFunction(window.onbeforeunload)) {
    	window.onbeforeunload = handler;
	} else {
		window.onbeforeunload = function() {
			if (oldonbeforeunload) { 
				oldonbeforeunload(); 
			}
			handler();
		};
	}
};


var CORE = {
	isString: function (value) { 
		return (value && (typeof(value) === 'string'));
	},
	isFunction: function(value) {
		return (value && (typeof value === 'function'));
	}
};

var HTML = {
	addChild: function(parent, element, nextSibling) {
		if (nextSibling) {
			element = parent.insertBefore(element, nextSibling);
		} else {
			parent.appendChild(element);
		}
		return element;
	},
	element: function(parent, nodeName, id, className, innerHTML, 
		nextSibling) 
	{
		if (!parent) { throw new Error('Missing parent'); }
		if (!parent.appendChild) { 
			throw new Error('Not a valid parent node ' + parent); 
		}
		var element = document.createElement(nodeName);
		if (id) { element.id = id; }
		if (className) { element.className = className; }
		if (innerHTML) { element.innerHTML =  innerHTML; }
		return HTML.addChild(parent, element, nextSibling);
	},
	setAttribute: function(node, name, value) {
		// See http://www.quirksmode.org/dom/w3c_core.html#attributes
		var attribute = document.createAttribute(name);
		attribute.nodeValue = value;
		node.setAttributeNode(attribute);
		return attribute;
	},
	label: function(parent, text, id, className, forId) {
		var label = HTML.element(parent, 'label', id, className, text);
		if (forId) HTML.setAttribute(label, 'for', forId);
		return label;
	},
	a: function(parent, text, onclick, id, className) {
		var a = HTML.element(parent, 'a', id, className, text);
		a.href = '#';
		if (onclick) a.onclick = function() { onclick(); return false; };
		return a;
	},
	li: function (parent, id, className, nextSibling) {
		return HTML.element(parent, 'li', id, className, null, nextSibling);
	},
	div: function (parent, text, id, className) {
		return HTML.element(parent, 'div', id, className, text);
	},
	span: function (parent, text, id, className) {
		return HTML.element(parent, 'span', id, className, text);
	},
	img: function (parent, src, alt, id, className) {
		var img = HTML.element(parent, 'img', id, className);
		img.src = src;
		img.alt = alt;
		return img;
	},
	form: function (parent, id, className, onsubmit) {
		var form = HTML.element(parent, 'form', id, className);
		if (onsubmit) { 
			form.onsubmit = function() {return onsubmit();};
		}
		return form;
	},
	input: function(parent, type, id, className, tabIndex, value) {
		var input = HTML.element(parent, 'input', id, className);
		type = (type) ? type : 'text';
		try { 
			input.type = type; 
		} catch (e) {
			parent.removeChild(input);
		// 	IE does not allow property type to be set
			input = HTML.element(parent, '<input type="' + type + '">', id, 
					className);
		}
		if (id) { input.name = id; }
		if (value !== undefined) { input.value = value; }
		if (tabIndex !== undefined) { input.tabIndex = tabIndex; }
		return input;
	},
	submit: function(parent, id, className, tabIndex, value) {
		return HTML.input(parent, 'submit', id, className, tabIndex, value);
	},
	textArea: function (parent, id, className, tabIndex, rows) {
		var textArea = HTML.element(parent, 'textarea', id, className);
		if (id) { textArea.name = id; }
		if (tabIndex) { textArea.tabIndex = tabIndex; }
		textArea.rows = (rows && (rows > 0) ? rows : 1);
		return textArea;
	},
	$: function(id, required) { 
		if (!id) {
			throw new Error('$: No value for \'id\' arguemnt');
		}
		var e = document.getElementById(id);
		if (required && !e) {
			throw new Error('Element \'' + id + '\' not found');
		}
		return e;
	},
	getFirstChildByTagName: function(element, tagName) {
		if (!element || !tagName) return null;
		var elements = element.getElementsByTagName(tagName);
		if (!elements) return null;
		if (elements.length === 0) return null;
		return elements[0];
	},
	bind: function(fn, obj, arg) {
		return function() {
			if(arg) { return fn.apply(obj,arg); } 
			else { return fn.apply(obj); };
		};
	}
};

if (typeof XMLHttpRequest == "undefined") {
	XMLHttpRequest = function () {
    	try { return new ActiveXObject("Msxml2.XMLHTTP.6.0");} catch (e) {}
    	try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); } catch (e) {}
    	try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
	    //Microsoft.XMLHTTP points to Msxml2.XMLHTTP.3.0 and is redundant
	    throw new Error("This browser does not support XMLHttpRequest.");
	};
}

var XML = {
	firstByTagName: function (xml, tagName) {
		if (!xml) return null;
		var nodes = xml.getElementsByTagName(tagName);
		if (!nodes || (nodes.length === 0)) return null;
		return nodes.item(0);
	},
	textContent: function(element, defaultValue) {
		return (element) ? 
			((element.textContent) ? element.textContent : element.text) 
			: defaultValue;
	},
	firstByTagTextContent: function (xml, tagName, defaultValue) {
		return this.textContent(this.firstByTagName(xml, tagName));
	}
};



