var ActionHandlers = {
	
	contentLoaded : function (content) {
		var html = content[0];
		var js = content[1];
		document.getElementById ('content').innerHTML = html;
		eval (js);
	}
	
};

function elementHasClass (element, className) {
    var re = new RegExp ('(?:^|\\s+)' + className + '(?:\\s+|$)');
    return re.test (element.className);
}


var Delegate = function (thisObject, method) {
	if (typeof method == 'function') {
		return function() {
			method.apply (thisObject, arguments);
		}
	} else {
    	return function() {
	        thisObject[method].apply (thisObject, arguments);
    	}	
	}
}

isObjectEmpty = function (object) {
	for (var i in object) return false;
	return true;
}

//todo - get it out of here
var Tabs = {
	open : function (tab, event) {
		tab = event.target || event.srcElement;
		var tabParent = tab.parentNode;
		for (var i = 0; i < tabParent.childNodes.length; i++) {
			var node = tabParent.childNodes[i];
			if (node.nodeType == 1) {
				node.className = node == tab ? 'DialogTabCurrent' : '';
			}
		}
		Tabs.doOpenTab (document.getElementById (tab.id.replace ("_button", "_tab")));
	},
	doOpenTab : function (tabContentElement) {
		var tabContentParent = tabContentElement.parentNode;
		for (var i = 0; i < tabContentParent.childNodes.length; i++) {
			var node = tabContentParent.childNodes[i];
			if (node.nodeType == 1) {
				node.style.display = node == tabContentElement ? 'block' : 'none';
			}
		}
	}
}

String.prototype.trim = function() { return this.replace( /^\s+|\s+$/, "" );}

removeCSSClass = function (elem, className) {
	elem.className = elem.className.replace (className, "").trim();
} 

addCSSClass = function (elem, className) {
	this.removeCSSClass (elem, className);
	elem.className = (elem.className + " " + className).trim();
}

focusFirstInput = function (parent) {
	if (typeof parent == 'string') parent = document.getElementById (parent);
	var inputs = parent.getElementsByTagName ('INPUT');
	for (var i = 0; i < inputs.length; i++) {
		var i = inputs[i];
		if ((!i.disabled) && (i.type == 'text' || i.type == 'password' || i.type == 'radio' || i.type == 'checkbox' || i.type == 'file')) {
			i.focus();
			return;
		}
	}
}