var modalBeforeLoginOptions;
var modalDialog;
var refreshOnClose;
var dialogOpen;
    
function getDialogBox(){ return document.getElementById('dialogBox'); }
function getDialogBoxContentOuter(){ return document.getElementById('dialogBoxContentOuter'); }
function getDialogBoxContent(){ return document.getElementById('dialogBoxContent'); }
function getDialogBoxTitleBar(){ return document.getElementById('dialogBoxTitleBar'); }
function getDialogBoxTitle(){ return document.getElementById('dialogBoxTitle'); }
function getDialogBoxClose(){ return document.getElementById('dialogBoxClose'); }
function getLoader(){ return document.getElementById('loader'); }

function getBGOverlay(){ return document.getElementById('bgoverlay'); }
function getMainFrame(){ return document.getElementById('mainContent'); }

function setDialogTitle(title)
{
    var dialogTitle = getDialogBoxTitle();
    dialogTitle.innerHTML = title; 
}

function setDialogSize(width, height)
{
    var dialogBox = getDialogBox();
 
    dialogBox.style.width = width + 'px';
    dialogBox.style.height = height + 'px';   
    
    var dialogBoxContentOuter = getDialogBoxContentOuter();
    dialogBoxContentOuter.style.width = width + 'px';
    dialogBoxContentOuter.style.height = height + 'px';      
}

function hideDialog()
{
    if(refreshOnClose)
    {
        reloadPage();
        return;
    }
    
    var dialog = getDialogBox();
    dialog.style.display = 'none';
    showVideo();
    enableScreen();
    dialogOpen = false;
    onLoginInPlace = null;
}

function showDialogWithForm(url, form)
{
    showDialog(url, null, null, null, form);   
}

function showDialog(url, title, width, height, form)
{

    dialogOpen = true;
    hideVideo();

    var dialogContent = getDialogBoxContent();
    dialogContent.innerHTML = '';

    if(!modalDialog)
        reloadDialog(url, title, width, height, form); 
    else
    {
        if(title)
            setDialogTitle(title);
        if(width && height)
        {
            setDialogSize(width, height);
            repositionDialog();
        }
        setDialogAjaxContent(url, form);
    }
}

function showLoader()
{
    // Center the loader
    var loader = getLoader();
    if(!loader) return;
    
    loader.style.visibility = 'hidden';
    loader.style.display = 'block';
    
    centerObj(loader, loader.style.width, loader.style.height);
    
    hideVideo();
    //disableScreen();
    loader.style.visibility = '';
}

function hideLoader()
{
    var loader = getLoader();
    if(!loader) return;
    loader.style.display = 'none';
    // re-show the video if we have no dialog on screen
    if (dialogOpen == false)
        showVideo();
    // enableScreen();
}

function reloadDialogFromOptions(url, options)
{
    showDialog(url, options.title, options.width, options.height, null);
}

function reloadDialog(url, title, width, height, form)
{
    if(!width) width = 750;
    if(!height) height = 500;
         
    // Set the dimensions
    var dialog = getDialogBox();
    var dialogContent = getDialogBoxContent();

    setDialogSize(width, height);

    // Set the title
    setDialogTitle(title);
    
    var dialogClose = getDialogBoxClose();
    
    // Display - which gives the object dimensions
    dialog.style.display = 'block';
    
    centerObj(dialog, dialog.offsetWidth, dialog.offsetHeight);
    
    disableScreen();
    
    // Make visible
    dialog.style.visibility = '';
    
    // Now load the content
    ajaxPanel(url, dialogContent, form);
}

function setDialogAjaxContent(url, form)
{
    var dialogContent = getDialogBoxContent();
    ajaxPanel(url, dialogContent, form);
}

function hideVideo()
{
    // Hide all video clips
    var videos = $$('.pagevideo');
    for(var i = 0; i < videos.length; i++)
        videos[i].style.visibility = 'hidden';
}

function showVideo()
{
    // Show all videos
    var videos = $$('.pagevideo');
    for(var i = 0; i < videos.length; i++)
        videos[i].style.visibility = '';
}

function getWindowHeight() {
	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;
			}
		}
	}
	return windowHeight;
}

function getWindowWidth() 
{
	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;
			}
		}
	}
	return windowWidth;
}

function getScrollXY() 
{
    var scrOfX = 0, scrOfY = 0;
    if( typeof( window.pageYOffset ) == 'number' ) 
    {
        //Netscape compliant
        scrOfY = window.pageYOffset;
        scrOfX = window.pageXOffset;
    } 
    else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) 
    {
        //DOM compliant
        scrOfY = document.body.scrollTop;
        scrOfX = document.body.scrollLeft;
    } 
    else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) 
    {
        //IE6 standards compliant mode
        scrOfY = document.documentElement.scrollTop;
        scrOfX = document.documentElement.scrollLeft;
    }
    return [ scrOfX, scrOfY ];
}

function centerObj(obj, width, height) 
{
	if (document.getElementById) 
	{
		var windowHeight = getWindowHeight();
		var windowWidth = getWindowWidth();
		if (windowHeight > 0) 
		{
			var contentHeight = height;
			if (windowHeight - contentHeight > 0) 
			{
				obj.style.top = ((windowHeight / 2) - (contentHeight / 2)) + getScrollXY()[1] + 'px';
			}
		}
		
		if (windowWidth > 0) 
		{
			var contentWidth = width;
			if (windowWidth - contentWidth > 0) 
			{
				obj.style.left = ((windowWidth / 2) - (contentWidth / 2)) +  getScrollXY()[0] + 'px';
			}
		}
	}
}

function repositionDialog() {
   // Set the dimensions
    var dialog = getDialogBox();
    if(dialog && dialog.style.display == 'block')
    {
        centerObj(dialog, dialog.offsetWidth, dialog.offsetHeight);
        disableScreen();
    }
}

// Disable and Enable the screen
function disableScreen() {
    var frame = getMainFrame();
    var overlay = getBGOverlay();
    overlay.style.width = frame.offsetWidth + 'px';
    overlay.style.height = frame.offsetHeight  + 'px';
    overlay.style.display = 'block';    
}

function enableScreen() {
    var overlay = getBGOverlay();
    overlay.style.display = 'none';
}