function isFunction(fxname) { if (typeof fxname == 'string') { return (typeof this.window[fxname] == 'function'); } else { return (fxname instanceof Function); } }
function isDefined(object,checkempty) { var is = typeof(object)!="undefined"; if(is && checkempty>0) { if(!object||object.length<=0||object===0){return false;} } return is; }	
function is_array(x,acceptObject) { return (x && (typeof x == "object") && (x.constructor == Array || acceptObject>0)); }
function in_array(item,arr) { if(!is_array(arr)){return false}for(p=0;p<arr.length;p++){if(item == arr[p]){return true;}}return false;}
function is_numeric(x) { return (x - 0) == x && x != ""; }
function print_r(theObj,level){ if(isFunction("printr")) {return printr(theObj,level);}} 
if(!isFunction('$')){ var $ = function(element) { return document.getElementById(element); }; }
function parseSubmit(fe,exclude,type) { var pars="";  if(type=="serialized"){pars=[];} if(!fe){return pars;} for(var i=0; i<fe.length; i++) { var elem = fe.elements[i]; var key = elem.name; if(is_array(exclude) && in_array(key,exclude)){continue;} if(elem.type=="checkbox"||elem.type=="radio") { if(!elem.checked){continue;} } if(type == "serialized") { pars.push({"key": key, "value": elem.value}); }  else { pars += key+"="+elem.value+"&"; }} return pars;}
function addEvent(_event, _function) { var _current_event = window[_event]; if (typeof window[_event] != 'function') { window[_event] = _function; } else { window[_event] = function() { _current_event(); _function();}; } }
function nl2br(str) {  return (str+'').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1'+ '<br/>' +'$2'); }
function ucfirst(str){ str+='';  var f=str.charAt(0).toUpperCase(); return f + str.substr(1); }
function queryString(key) {
	var qs = window.location.search.substring(1);
	var params = qs.split("&");
	for (i=0; i<params.length; i++) {
		var par = params[i].split("=");
		if (par[0] == key) {
			return par[1];
		}
	}
	return "";
}
