if (typeof(OPAGENDA) == 'undefined') {
    OPAGENDA = {};
}

if (typeof(OPAGENDA.Utl) == 'undefined') {
    OPAGENDA.Utl = {};
}


//array of page elms to offset map height by
OPAGENDA.Utl.offsetReg = [];

//register offset elms
OPAGENDA.Utl.regOffsetObjs = function(array){
	for (var n in array){
		OPAGENDA.Utl.offsetReg.push(array[n]);
	}
}

//some extra value to force things if need be
OPAGENDA.Utl.offsetBonus = 0;

OPAGENDA.Utl.regOffsetBonus = function(n){
	OPAGENDA.Utl.offsetBonus = n;
}

//a minimum size to never map the map less than
OPAGENDA.Utl.minSize = 1;

OPAGENDA.Utl.regMinSize = function(n){
	OPAGENDA.Utl.minSize = n;
}


//reference to map object
OPAGENDA.Utl.mapRef;

//register map object
OPAGENDA.Utl.regMap = function(map){
	OPAGENDA.Utl.mapRef = map;
}

//reference to map div - a DOM element not the id
OPAGENDA.Utl.mapDivRef;

//register map div
OPAGENDA.Utl.regMapDiv = function(mapDiv){
	OPAGENDA.Utl.mapDivRef = mapDiv;
}

//reference to side panel div - a DOM element not the id
OPAGENDA.Utl.panelDivRef;

//register panel div
OPAGENDA.Utl.regPanelDiv = function(panelDiv){
	OPAGENDA.Utl.panelDivRef = panelDiv;
}


//gets the current size of the window
OPAGENDA.Utl.getWindowSize = function(){
	var e = new Object();
	if(window.self && self.innerWidth)
	{
		e.width = self.innerWidth;
		e.height = self.innerHeight;
	}
	else if(document.documentElement && document.documentElement.clientHeight)
	{
		e.width = document.documentElement.clientWidth;
		e.height = document.documentElement.clientHeight;
	}else
	{
		e.width = document.body.clientWidth;
		e.height = document.body.clientHeight;
	}
	return e;
}


//get size of other elms effecting map size
OPAGENDA.Utl.getOffset = function(){
	var sum = 0;
	sum += OPAGENDA.Utl.offsetBonus;
	var reg = OPAGENDA.Utl.offsetReg;
	for (var n=0; n<reg.length; n++){
		sum += getElementDimensions(reg[n]).h;
	}
	return sum;
}

//resizes the map div
OPAGENDA.Utl.sizeMapDiv = function(){
	var w = OPAGENDA.Utl.getWindowSize();
	var offset = OPAGENDA.Utl.getOffset();
	var newheight = w.height - offset;
	if (newheight < OPAGENDA.Utl.minSize){
		newheight = OPAGENDA.Utl.minSize;
	}
	OPAGENDA.Utl.mapDivRef.style.height = newheight + 'px';
	OPAGENDA.Utl.panelDivRef.style.height = (newheight - 146) + 'px';
}


OPAGENDA.Utl.resizingInterval = null;
OPAGENDA.Utl.resizingFlag = false;

OPAGENDA.Utl.setResizeListener = function(){
    window.onresize = function()
    {
		OPAGENDA.Utl.sizeMapDiv();
        OPAGENDA.Utl.resizingFlag = true;
		if(OPAGENDA.Utl.resizingInterval==null)
			OPAGENDA.Utl.resizingInterval = setInterval("OPAGENDA.Utl.checkResizeEnd()", 100);
    };
}

OPAGENDA.Utl.checkResizeEnd = function(){
	if(!OPAGENDA.Utl.resizingFlag)
	{
		OPAGENDA.Utl.mapRef.checkResize();
		clearInterval(OPAGENDA.Utl.resizingInterval);
		OPAGENDA.Utl.resizingInterval = null;
	}
	OPAGENDA.Utl.resizingFlag = false;
}
