/*** START: functions to manage onload events ***/
function OnLoadOBJ(){this.listFunction = [];}
OnLoadOBJ.prototype.addFunction = function(funcName){this.listFunction.push(funcName);}
var ManagerOnLoad = new OnLoadOBJ();
window.onload = function(){
	for(var i = 0; i < ManagerOnLoad.listFunction.length; i++) ManagerOnLoad.listFunction[i]();
}

function UnLoadOBJ(){this.listFunction = [];}
UnLoadOBJ.prototype.addFunction = function(funcName){this.listFunction.push(funcName);}
var ManagerUnLoad = new UnLoadOBJ();
window.unload = function(){
	for(var i = 0; i < ManagerUnLoad.listFunction.length; i++) ManagerUnLoad.listFunction[i]();
}
/*** END: functions to manage onload events ***/

function autoTab(fields){
	var setAutoTab = function(params){
		var defaults = {field: null, target: null, previous: null, maxlength: 2147483647};
		$jQuery.extend(defaults, params);
		if(typeof defaults.field == 'string') defaults.field = $jQuery(defaults.field);
		if(typeof defaults.target == 'string') defaults.target = $jQuery(defaults.target);
		if(typeof defaults.previous == 'string') defaults.previous = $jQuery(defaults.previous);
		var maxlength = defaults.field.attr('maxlength');
		maxlength = parseInt(maxlength.replace(/[^\d]/g, ""));
		if(maxlength > 0 && maxlength < defaults.maxlength) defaults.maxlength = maxlength;
		defaults.field.bind('keydown', function(e){
			if(e.which == 8 && this.value.length == 0 && defaults.previous) defaults.previous.focus().val(defaults.previous.val());
		}).bind('keyup', function(e){
			var keys = [8, 9, 16, 17, 18, 19, 20, 27, 33, 34, 35, 36, 37, 38, 39, 40, 45, 46, 144, 145];
			if(e.which != 8){
				var val = defaults.field.val();
				if($jQuery.inArray(e.which, keys) == -1 && val.length == defaults.maxlength && defaults.target) defaults.target.focus();
			}
		});
	}
	if(!jsIsEmpty(fields)){
		for(i = 0; i < fields.length; i++){
			var n = (i + 1) > fields.length ? null : fields[i + 1];
			var p = (i - 1) < 0 ? null : fields[i - 1];
			setAutoTab({field: fields[i], target: n, previous: p});
		}
	}
}

function redirect(redirectLink){
	window.document.location = redirectLink;
}

function getRandom(){
	return Math.random();
}

function jsIsEmpty(obj){
	if(obj == null) return true;
	else if(typeof(obj) == "null" || typeof(obj) == "undefined") return true;
	else if(typeof(obj) == "object" && $jQuery.isEmptyObject(obj)) return true;
	else if(typeof(obj) == "string" && obj == "") return true;
	else return false;
}

function loadJsCssFileToHead(filename, filetype){
	ajaxFlags.fetchingManager = true;
	if(filetype == "js"){
		var fileref = document.createElement('script');
		fileref.setAttribute("type","text/javascript");
		fileref.setAttribute("src", filename);
	} else if(filetype == "css"){
		var fileref = document.createElement("link");
		fileref.setAttribute("rel", "stylesheet");
		fileref.setAttribute("type", "text/css");
		fileref.setAttribute("href", filename);
	}
	if(typeof(fileref) != "undefined") $jQuery("head").append(fileref);
}

function cookiesEnabled(){
	document.cookie = "checkcookie=testbrowsercookie";
	return (document.cookie.indexOf("testbrowsercookie") != -1) ? true : false;
}
