/////////////////////////////////////////////////////////////////////
// AutoHeight.js

// on page load
function AutoHeight_OnLoad()
{
    AutoHeight_ResizeElements();
}

// on page resize
function AutoHeight_OnPageResize(eventElement)
{
    //if (__NilexCommon_IgnoreResize) return;
    AutoHeight_ResizeElements();
}

// resize elements
function AutoHeight_ResizeElements()
{
    var i;
    for (i = 0; i < AutoHeight_DATA_ARRAY.length; i++)
    {
        var data = AutoHeight_DATA_ARRAY[i];
        var ids = data.split(" ");
        AutoHeight_Resize(ids[0], parseInt(ids[1]), parseInt(ids[2]));
    }
}

AutoHeight_DATA_ARRAY = [];

// register
function AutoHeight_Register(id, subtractHeight, fract)
{
    var data = id + " " + subtractHeight + " " + fract;
    if (!Array.contains(AutoHeight_DATA_ARRAY, data))
    {
        Array.add(AutoHeight_DATA_ARRAY, data);
    }
}

var AutoHeight_RESIZING = false;
function AutoHeight_Resize(id, subtractHeight, fract)
{
    setTimeout(function(){

    if (AutoHeight_RESIZING)
       return;

    AutoHeight_RESIZING = true;
    var elem = document.getElementById(id);
    elem.style.height = fract + 'px';
    var sizes = getPageSize();
    var n = sizes[1] - subtractHeight;
    if (n <= 0)
		n = 1;
    var n2 = n % fract;
    if (n2 > 0)
    {
       n = n - n2 + fract;
    }
    //alert(elem.style.height);
		elem.style.height = n + 'px';

    AutoHeight_RESIZING = false;
    
    },0);
}

//**********************************************************************

//
// getPageScroll()
// Returns array [xScroll, yScroll]
// Core code from - quirksmode.org
//
function getPageScroll()
{
	var yScroll, xScroll;
	if (self.pageYOffset) 
	{
		yScroll = self.pageYOffset;
	} 
	else if (document.documentElement && document.documentElement.scrollTop)
	{	 // Explorer 6 Strict
		yScroll = document.documentElement.scrollTop;
	} 
	else if (document.body) 
	{   // all other Explorers
		yScroll = document.body.scrollTop;
	}

    if(window.pageXOffset)
    { 
	    xScroll=window.pageXOffset 
    } 
    else if(document.documentElement && document.documentElement.scrollLeft)
    { 
	    xScroll=document.documentElement.scrollLeft; 
    } 
    else if(document.body)
    { 
	    xScroll=document.body.scrollLeft; 
    }

	var arrayPageScroll = new Array(xScroll, yScroll) 
	return arrayPageScroll;
}

//
// getPageSize()
// Returns array [pageWidth,pageHeight,windowWidth,windowHeight]
// Core code from - quirksmode.org
//
function getPageSize()
{
	var xScroll, yScroll;
	
	if (window.innerHeight && window.scrollMaxY) 
	{	
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	} 
	else if (document.body.scrollHeight > document.body.offsetHeight)
	{   // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} 
	else 
	{   // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	
	var windowWidth, windowHeight;
	if (self.innerHeight) 
	{	// all except Explorer
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	} 
	else if (document.documentElement && document.documentElement.clientHeight) 
	{   // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} 
	else if (document.body) 
	{   // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	
	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight)
	{
		pageHeight = windowHeight;
	} 
	else 
	{ 
		pageHeight = yScroll;
	}

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth)
	{	
		pageWidth = windowWidth;
	} 
	else 
	{
		pageWidth = xScroll;
	}

	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
	return arrayPageSize;
}

// Hook up Application event handlers.
Sys.Application.add_load(AutoHeight_OnLoad);
//$addHandler(window, "resize", AutoHeight_OnPageResize);

