
// set up the gyzorkConsole.
if (typeof(gyzorkConsole) == "undefined") {
	if (typeof(console) != "undefined") {
		// firebug? some other console object available?
		var gyzorkConsole = {
			log: function(msg) { if (gyzork.debug)  console.log(msg); }
		};
	}
	else {
		// no console object available.
		var gyzorkConsole = {
			log: function(msg) { /* alert(msg); */}
		};
	}
}

var contentResizer = 
{
	offsetBase: -1,
	offsetBaseWithoutFooter: -1,
	displayableArea: -1,
	resultsContainerEl: null,
	searchDone: 0,
	resizeVerticalElements: null,
	topContainerId    	: 'contentBody',
	contentToResize   	: 'resultsContainer',
	veticleBoundry    	: 'dimensionNav-container',
	scrollableContainer : true,
	
	init: function(e, scrollableContainer) 
	{
		if(typeof scrollableContainer !='undefined' &&  scrollableContainer!=null)
			contentResizer.scrollableContainer = scrollableContainer;

		contentResizer.resizeVerticalElements = e;

		
		contentResizer.doResize();
	
		
		window.onresize = contentResizer.windowResize;
	},
	
	calcOffsetTop : function()
	{
		var toSize    = document.getElementById(contentResizer.contentToResize);
		var topParent = document.getElementById(contentResizer.topContainerId);

		var toSizeTop = contentResizer.getElementTop(toSize);
		var topParentTop = contentResizer.getElementTop(topParent);
		var delta =   (toSizeTop- topParentTop);
		gyzorkConsole.log("Offset top: "+ delta);
		return delta;
	},
	
	
	getElementTop: function (node)
	{
		var top = node.offsetTop;
		
		var parent = node.offsetParent;
		while (parent != null) 
		{
  			top += parent.offsetTop;
	  		parent = parent.offsetParent;
  		}
		return top;
	},
	
	
	getOffsetBase: function() {
		
		contentResizer.offsetBase = 0;
		contentResizer.offsetBaseWithoutFooter = 0;
		contentResizer.displayableArea = 0;

		for (var el in contentResizer.resizeVerticalElements) {
			var t = document.getElementById(el);
			var margins = contentResizer.resizeVerticalElements[el];
			if (t !== null) {
				var height = t.offsetHeight;
				var offsetTop = t.offsetTop;
				
				
				gyzorkConsole.log(el + " height: " + height + " margins: " + margins +"  padding: "+ offsetTop);
				contentResizer.offsetBase += height + margins;
				if ( (el != "footer") && (el != "header") )  contentResizer.displayableArea += height + margins;
				if (el != "footer")  contentResizer.offsetBaseWithoutFooter += height + margins;
			}
			else {
				gyzorkConsole.log("Can find element named: " + el);
			}
		}
		
		gyzorkConsole.log("-----------------------------------------------");
			
		return contentResizer.offsetBase;
	},
	
	getWindowWidth: function() {
		var windowWidth=0;
		if (typeof(window.innerWidth) == 'number') {
			windowWidth = window.innerWidth;
		}
		else if (document.documentElement && document.documentElement.clientWidth) {
			windowWidth = document.documentElement.clientWidth;
		}
		else if (document.body&&document.body.clientWidth) {
			windowWidth = document.body.clientWidth -15;  // fudge size to support IE
		}
		return windowWidth;
	},
	
	getWindowHeight: function() {
		var windowHeight=0;
		if (typeof(window.innerHeight) == 'number') {
			windowHeight = window.innerHeight;
		}
		else if (document.documentElement && document.documentElement.clientHeight) {
			windowHeight = document.documentElement.clientHeight;
		}
		else if (document.body&&document.body.clientHeight){
			windowHeight = document.body.clientHeight;
			if(windowHeight<10)
				windowHeight = window.parent.document.body.clientHeight;
				
		}
		gyzorkConsole.log("Window Height "+ windowHeight);
		return windowHeight;
	},
	
	doResize: function() 
	{
		var offsetTop = contentResizer.calcOffsetTop();
		var offset = contentResizer.getOffsetBase() + offsetTop;
		
		var windowSize = contentResizer.getWindowHeight();
		


		if ((contentResizer.resultsContainerEl === null) && (contentResizer.searchDone == 0)) {
			contentResizer.resultsContainerEl = document.getElementById(contentResizer.contentToResize);
			contentResizer.searchDone = 1;
		}
		
		if (contentResizer.resultsContainerEl !== null) 
		{
		    var newHeight = windowSize - offset;
		    
			if(document.getElementById(contentResizer.verticalBoundry))
			{
			    var dimHeight = document.getElementById(contentResizer.verticalBoundry).clientHeight;
			    
			    if ( (contentResizer.displayableArea + newHeight) <  dimHeight ) {
	//		        newHeight = windowSize - contentResizer.offsetBaseWithoutFooter;
			        newHeight = dimHeight;
	            }
	        }

            if ( (offset == offsetTop) || window.parent.modalWindow.showingDetailModal )
            	newHeight = windowSize - offset - 50;
            	
			// if the content isn't in a scrollable container and the container is > the window height, 
			// do nothing
			if(!contentResizer.scrollableContainer)
			{	
				if(newHeight< contentResizer.resultsContainerEl.clientHeight)
					return;
			}

			if (newHeight > 0) {
				contentResizer.resultsContainerEl.style.height = newHeight+"px";
				gyzorkConsole.log("results container resized to " +  contentResizer.resultsContainerEl.style.height);
			}
		}
		else {
			gyzorkConsole.log("no results container");
		}

		modalWindow.paint();
	},
	
	windowResize : function()
	{
		contentResizer.doResize();
				
        if( window.modalWindow.showingDetailModal ) {
 			gyzork.resizeDetailModalWindow();		
 		}
	}
};

