function $chk(o) {
	return !!(o || o === 0);
};
function $empty(){};
String.whiteSpace = ' \n\r\t\f\x0b\xa0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000';
Object.extend(String.prototype,{
	escRegExp : function() {
		var str = this;
		var specials = ['/','.','*','+','?','|','(', ')','[', ']','{', '}','\\'];
		if (!arguments.callee.sRE)
			arguments.callee.sRE = new RegExp('(\\' + specials.join('|\\') + ')', 'g');
		return str.replace(arguments.callee.sRE, '\\$1');
	},
	ltrim : function() {
	    return this.replace(/^\s+/,"");
	},
	rtrim : function() {
	    return this.replace(/\s+$/,"");
	},
	trim : function() {
		var str	= this;
		var ws	= String.whiteSpace
		for (var i = 0; i < str.length; i++) {
			if (ws.indexOf(str.charAt(i)) === -1) {
				str = str.substring(i);
				break;
			}
		}
		for (i = str.length - 1; i >= 0; i--) {
			if (ws.indexOf(str.charAt(i)) === -1) {
				str = str.substring(0, i + 1);
				break;
			}
		}
		return ws.indexOf(str.charAt(0)) === -1 ? str : '';
	},
	toInt : function(base) {
		return parseInt(this, base || 10);
	},
	countChar : function(c) {
		var re	= new RegExp("[^" + c + "]", "gi");
		var str = this;
		return str.replace(re,"").length;
	}
});
Object.extend(Number.prototype,{
	toInt : function(base) {
		return parseInt(this, base || 10);
	}
});
Object.extend(Form.Element.Methods,{
	reset : function(element) {
		if ( element.type == 'checkbox' ) {
			var arr = $$('input[type="checkbox"][id="' + element.id + '"]');
			arr.each(function (e) {
				e.checked = false;
			});
		}
		else if ( element.type == 'radio' ) {
			var arr = $$('input[type="radio"][id="' + element.id + '"]');
			arr.each(function (e) {
				e.checked = false;
			});
		}
		else if ( element.nodeName && element.nodeName.toLowerCase() == 'select' ) {
			var i = element.options.length;
			while ( i-- ) {
				element.options[i].selected = false;
			}
		}
		else if ( element.type == 'text' || (element.nodeName && element.nodeName.toLowerCase() == 'textarea') )
			element.value = '';
	},
	getSelectedLabels : function(element) {
		var selected = '';
		if ( element.nodeName && element.nodeName.toLowerCase() == 'select' ) {
			var i = element.options.length;
			while ( i-- ) {
				if ( element.options[i].selected )
					selected.length == 0 ? selected = element.options[i].innerHTML : selected = element.options[i].innerHTML + ',' + selected;
			}
		}
		return selected;
	},
	setSelected : function(element,values) {
		if ( element.nodeName && element.nodeName.toLowerCase() == 'select' ) {
			var vals = ',' + values + ',';
			var i = element.options.length;
			while ( i-- ) {
				if ( vals.indexOf(',' + element.options[i].value + ',') != -1 )
				element.options[i].selected = true;
			}
		}
	}
});
Object.extend(Element.Methods,{
	hasChild: function(element,child) {
		var arr = element.childElements();
		arr.each(function(e) {
			if ( e == child )
				return true;
		})
		return false;
	}
});
Element.addMethods();
