var mozilla = document.getElementById && !document.all
var ie = document.all;

function getElementClientHeight(objectToSelect) {
	return objectToSelect.offsetHeight;
}

function classExists(obj, name) {
    var re = new RegExp("\\b" + name + "\\b");
    if (obj && obj.className && re.exec(obj.className)) return true;
    
    return false;
}

Array.prototype.in_array = function(p_val) {
    for(var i = 0, l = this.length; i < l; i++) {
        if(this[i] == p_val) {
            return true;
        }
    }
    return false;
}



function getDocumentClientHeight(objectToSelect) {
	if (!objectToSelect) objectToSelect = document;
    return objectToSelect.compatMode == 'CSS1Compat' /*&& !window.opera*/ ? objectToSelect.documentElement.clientHeight : objectToSelect.body.clientHeight;
}

function getElementClientWidth(objectToSelect) {
	return objectToSelect.offsetWidth;
}

function getDocumentClientWidth(objectToSelect) {
	if (!objectToSelect) objectToSelect = document;
    return objectToSelect.compatMode == 'CSS1Compat' /*&& !window.opera*/ ? objectToSelect.documentElement.clientWidth : objectToSelect.body.clientWidth;
}

function getElementScrollTop(objectToSelect) {
	return objectToSelect.scrollTop;
}

function getDocumentScrollTop(objectToSelect) {
	if (!objectToSelect) objectToSelect = document;
    return objectToSelect.compatMode == 'CSS1Compat' /*&& !window.opera*/ ? objectToSelect.documentElement.scrollTop : objectToSelect.body.scrollTop;
}

function setDivSizes() {
	document.getElementById("GBscrollDiv").style.height=(getDocumentClientHeight()-getElementClientHeight(document.getElementById("topControlPanelDiv")))+"px";
}

function getClientWidth(d) {
	if (!d) d = document;
	return d.body.clientWidth;
}

function getClientHeight(d) {
	if (!d) d = document;
	return d.body.clientHeight;
}

function getScrollTop(d) {
	if (!d) d = document;
	return d.documentElement.scrollTop;
}

function getScrollLeft(d) {
	if (!d) d = document;
	return d.documentElement.scrollLeft;
}

function getScrollHeight(d) {
	if (!d) d = document;
	return d.body.scrollHeight;
}

function getOffsetHeight(d) {
	if (!d) d = document;
	return d.documentElement.scrollHeight;
}

function getOffsetWidth(d) {
	if (!d) d = document;
	return d.documentElement.scrollWidth;
}

if (ie) {
    document.attachEvent("onload", setDivSizes);
    document.attachEvent("onresize", setDivSizes);
}
if (mozilla) {
	window.addEventListener("onresize", setDivSizes, true);
	window.addEventListener("onload", setDivSizes, true);
}

function findPos(obj) {
	var curleft = curtop = 0;
	
	if (obj && obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
	}

	return [curleft,curtop];
}

function addOnloadListener(funcName) {
    var mozilla=document.getElementById && !document.all
    var ie=document.all;
    if (ie) {
        window.attachEvent("onload", funcName);
    }
    if (mozilla) {
        window.addEventListener("load", funcName, true);
    }
} 

function getIeVersion() {
    var version = 999; // we assume a sane browser
    if (navigator.appVersion.indexOf("MSIE") != -1)
      // bah, IE again, lets downgrade version number
    version = parseFloat(navigator.appVersion.split("MSIE")[1]);
    return version;
}

OnloadManager = function(){}

OnloadManager.getOnRenderFunctions = function() {
	if (typeof OnloadManager.onRenderFunctions == 'undefined') {
		OnloadManager.onRenderFunctions = [];
	}
	
	return OnloadManager.onRenderFunctions;
}

OnloadManager.executeOnRenderFunctions = function() {
	var callbackFunctions = OnloadManager.getOnRenderFunctions();
	for (var i=0; i<callbackFunctions.length; i++) {
		callbackFunctions[i]();
	}
	OnloadManager.onRenderFunctions = [];
}

OnloadManager.debug = function(s) {
	if (!OnloadManager.win) {
		OnloadManager.s = [];
		OnloadManager.win = setTimeout(function() {
			alert(OnloadManager.s.join("\n"));
		}, 5000);
	}
	
	OnloadManager.s.push(s);
}

OnloadManager.onRender = function(callbackFunction) {
	var callbackFunctions = OnloadManager.getOnRenderFunctions();
	callbackFunctions.push(callbackFunction);
}

OnloadManager.popupMessageOnload = function(message, callbackFn, scope) {
	if (!scope) scope = parent.top;
	
	return function() {
		setTimeout(GB_hide, 1);
		Ext.MessageBox.showAlert(message, callbackFn ? function(scope) {
			var scope = scope;
			
			return function() {
				callbackFn.apply(scope);
			}
		}(scope) : null);
	}
}

OnloadManager.popupFunctionOnload = function(callbackFn, scope) {
	if (!scope) scope = parent.top;
	
	return function() {
		setTimeout(GB_hide, 1);
		callbackFn.apply(scope);
	}
}

OnloadManager.getScriptWindow = function(id) {
	if (parent.top.LinkManager) {
		return parent.top.LinkManager.getDefaultInstance().getScriptWindow(id);
	}
	
	return parent.top;
}

OnloadManager.dummyFunction = function() {}

if (typeof Ext == 'undefined') {
	addOnloadListener(OnloadManager.executeOnRenderFunctions);
}

function goLocation(url) {
	if (parent.top.LinkManager) {
		parent.top.LinkManager.getDefaultInstance().goLocation(url);
	} else {
		location.href = url;
	}
}

function locationReload() {
	if (parent.top.LinkManager) {
		parent.top.LinkManager.getDefaultInstance().reload();
	} else {
		location.href = location.href;
	}
}

if (typeof customAlert != 'function') {
	customAlert = function(message, callbackFn) {
		parent.top.Ext.MessageBox.showAlert(message, callbackFn);
	}
}