function slideHeightCallback(element, finalHeight)
{
    var height;
    
    if (element.style.height)
    {
        height = parseInt(element.style.height);
    }
    else
    {
        height = element.offsetHeight;
    }
    
    if (height == NaN)
    {
        height = 0;
    }

    //document.getElementById('showheight').innerHTML = element.style.height;
    
    if (height == finalHeight)
    {
        window.clearInterval(element.slideHeightTimerId);
        element.slideHeightTimerId = undefined;
    }
    else if (height < finalHeight)
    {
        element.style.height = height + Math.ceil((finalHeight - height) / 2) + "px";
    }
    else
    {
        element.style.height = height + Math.floor((finalHeight - height) / 2) + "px";
    }
}

function slideHeight(element, finalHeight)
{
    var callback = function() { slideHeightCallback(element, finalHeight); }
    
    if (element.slideHeightTimerId)
    {
        window.clearInterval(element.slideHeightTimerId);
    }
    
    element.slideHeightTimerId = window.setInterval(callback, 50);
}

function showElement(id)
{
    document.getElementById(id).style.display = "block";
    
    //setElementOpacity(id, 0.3);
}

function hideElement(id)
{
    document.getElementById(id).style.display = "none";
}

function setElementOpacity(id, opacity)
{
    var element = document.getElementById(id);
    
    element.style.opacity = opacity;
    element.style['-moz-opacity'] = opacity;
    element.style.filter = "alpha(opacity=" + Math.round(opacity * 100) + ")";
}

function toggle(elementId)
{
    var element = document.getElementById(elementId);
    
    if (element.tower_shown)
    {
        slideHeight(element, 0);
    }
    else
    {
        slideHeight(element, element.getElementsByTagName('div')[0].offsetHeight + 5);
    }
    
    element.tower_shown = !element.tower_shown;
}

function toggle2(event)
{
    var element;

    if (event.target)
    {
        element = event.target.parentNode.childNodes[1];
    }
    else
    {
        element = event.srcElement.parentNode.childNodes[1];
    }
    
    if (element.tower_shown)
    {
        slideHeight(element, 0);
    }
    else
    {
        slideHeight(element, element.getElementsByTagName('div')[0].offsetHeight + 5);
    }
    
    element.tower_shown = !element.tower_shown;
}

var dhtml_currentSlideout = null;

function dhtml_mouseover(event)
{
    if (window.compat_event)
    {
        event = compat_event(event);
        
        // find the blocknode
        var blockNode = event.target;
        
        while (blockNode && blockNode.className != 'slideout-block')
        {
            blockNode = blockNode.parentNode;
        }   
        
        if (dhtml_currentSlideout && dhtml_currentSlideout != blockNode)
        {
    //        dhtml_infoDisplay("mouseover");
            var temp = dhtml_currentSlideout;
            setTimeout(function() { dhtml_contractElement(temp) }, 500);
        }
        
        dhtml_currentSlideout = blockNode;
    
        if (dhtml_currentSlideout)
        {
            var temp2 = dhtml_currentSlideout;
            setTimeout(function() { dhtml_expandElement(temp2) }, 100);
        }    
    }
}

function dhtml_hotkey(node)
{
        
        // find the blocknode
        var blockNode = document.getElementById(node)
        
        while (blockNode && blockNode.className != 'slideout-block')
        {
            blockNode = blockNode.parentNode;
        }   
        
        if (dhtml_currentSlideout && dhtml_currentSlideout != blockNode)
        {
    //        dhtml_infoDisplay("mouseover");
            var temp = dhtml_currentSlideout;
            setTimeout(function() { dhtml_contractElement(temp) }, 500);
        }
        
        dhtml_currentSlideout = blockNode;
    
        if (dhtml_currentSlideout)
        {
            var temp2 = dhtml_currentSlideout;
            setTimeout(function() { dhtml_expandElement(temp2) }, 100);
        }    
 
}



function dhtml_expandElement(blockNode)
{
    if (dhtml_currentSlideout == blockNode)
    {
        var titleNode = blockNode.firstChild;
        var bodyNode = titleNode.nextSibling;
            
        bodyNode.style.display = "";
        
        zoomElement(blockNode, bodyNode.offsetWidth + 5, titleNode.offsetHeight + bodyNode.offsetHeight, 200);
    }
}

function dhtml_contractElement(blockNode)
{
    if (dhtml_currentSlideout != blockNode)
    {
        var titleNode = blockNode.firstChild;
        var bodyNode = titleNode.nextSibling;
        
        bodyNode.style.display = "none";
            
        zoomElement(blockNode, 200, titleNode.offsetHeight, 200);
    }
}

function dhtml_infoDisplay(string)
{
    var element = document.getElementById('infodisplay');
    
    if (element)
    {
        element.innerHTML += string + "<br/>";
    }
}

function zoomElement_intervalFunc(element)
{
    return function()
    {
        var curHeight = parseInt(element.style.height ? element.style.height : element.offsetHeight);
        var curWidth = parseInt(element.style.width ? element.style.width : element.offsetWidth);
        
        var newWidth = (element.zoom_endWidth + curWidth) / 2;
        
        element.style.height = ((element.zoom_endHeight + curHeight) / 2) + "px";
        element.style.width = newWidth + "px";
        element.style.marginLeft = (element.zoom_compensateWidth - newWidth) + "px";

        //element.innerHTML = element.style.height;
        if (Math.abs(curHeight - element.zoom_endHeight) >= 2 || Math.abs(curWidth - element.zoom_endWidth) >= 2)
        {
            setTimeout(zoomElement_intervalFunc(element), 20);
        }
        else
        {
            //element.innerHTML = "flkajsdf";
        }
    };
}

function zoomElement(element, endWidth, endHeight, compensateWidth)
{
    element.zoom_endWidth = endWidth;
    element.zoom_endHeight = endHeight;    
    element.zoom_compensateWidth = compensateWidth;
    
    var intervalFunc = zoomElement_intervalFunc(element);
    
    setTimeout(intervalFunc, 50);
}

function selectCheckboxes(name, checked)
{
    var elements = document.getElementsByTagName('input');
    
    for (var i = 0; i < elements.length; i++)
    {
        var element = elements[i];
        
        if (element.type == 'checkbox' && element.checked != checked)
        {
            element.checked = checked;
			//for the multiple record action section - Select: all/None
			getSelectedRecords(element);
        }
    }
}


//Function to toggle between Expand and collapse
/*Parameter:
			togglableContainerId - Container to expand or collapse
			cllickedElement - element to click to achieve this functionality
*/
function toggaleExpansion(togglableContainerId, clickedElement)
{

	var element = document.getElementById(togglableContainerId);
	
	
	if(clickedElement.className == 'searchKeys-down')
	{
		clickedElement.className = 'searchKeys-up';
		clickedElement.title = "Click to Collapse";
		element.style.display = 'block';
	}
	else
	{
		clickedElement.className = 'searchKeys-down';
		clickedElement.title = "Click to Expand";
		element.style.display = 'none';
	}

}