attachListener(window, 'load',
	function()
	{
		if (window.focus_field) {
			var element = document.forms[focus_field.form].elements[focus_field.field];
			if (element.select) element.select();
			if (element.focus) element.focus();
		}
	}
);

function $(element)
{
	if (typeof element == 'string') {
		element = document.getElementById(element);
	}
	
	return element;
}

if (window.ActiveXObject && !window.XMLHttpRequest) {
	window.XMLHttpRequest = function () {
		return new ActiveXObject('Microsoft.XMLHTTP');
	}
}

function removeChildren(element)
{
	for (var i = element.childNodes.length - 1; i >= 0; i--) {
		element.removeChild(element.childNodes[i]);
	}
}

function getInnerText(element)
{
	function _getInnerText(element)
	{
		var inner_text = '';
		var child_node;
		for (var i = 0; i < element.childNodes.length; i++) {
			child_node = element.childNodes[i];
			switch (child_node.nodeType) {
				case 1: inner_text += _getInnerText(child_node); break;
				case 3: inner_text += child_node.nodeValue; break;
			}
		}
		return inner_text.replace(/\s+/g, ' ');
	}
	
	return _getInnerText(element).replace(/^\s+/, '').replace(/\s+$/, '');
}

function setInnerText(element, text)
{
	removeChildren(element);
	element.appendChild(document.createTextNode(text));
}

function addClassName(element, class_name)
{
	var class_names = element.className.split(/\s+/);
	for (var i = 0; i < class_names.length; i++) {
		if (class_names[i] == class_name) {
			return;
		}
	}
	
	class_names[class_names.length] = class_name;
	
	element.className = class_names.join(' ');
}

function removeClassName(element, class_name)
{
	var class_names = element.className.split(/\s+/);
	var new_class_names = [];
	for (var i = 0; i < class_names.length; i++) {
		if (class_names[i] != class_name) {
			new_class_names[new_class_names.length] = class_names[i];
		}
	}
	
	element.className = new_class_names.join(' ');
}

function getElementsByClassName(parentElement, className)
{
	var all_elements = parentElement.getElementsByTagName('*');
	var elements = new Array();
	for (var i = 0; i < all_elements.length; i++) {
		if(elementHasClassName(all_elements[i], className)) {
			elements.push(all_elements[i]);
		}
	}
	return elements;
}

function elementHasClassName(element, className)
{
	var classNames = element.className.split(/\s+/);
	for (var i = 0; i < classNames.length; i++) {
		if (classNames[i] == className) {
			return true;
		}
	}
	return false;
}

function attachListener(element, event_type, event_handler)
{
	if (element.addEventListener) {
		element.addEventListener(event_type, event_handler, false);
	} else if (element.attachEvent) {
		element.attachEvent('on' + event_type, event_handler);
	}
}

function wrapEventHandler(event_handler, self)
{
	return function (e)
	{
		if (window.event) {
			e = {
				target: window.event.srcElement
			}
		}
		
		return event_handler.call(self || this, e);
	}
}

function popup(link, width, height, name, options)
{
	open(link.href, name, 'width=' + width + ',height=' + height + ',' + options).focus();
	return true;
}

function getParentByTagName(element, tagName)
{
	do {
		element = element.parentNode;
	} while (element && element.tagName != tagName);
	
	return element;
}
