﻿////////// Modal dialog

Type.registerNamespace('Pythagoras.Modal');


Pythagoras.Modal._tagWithTabIndex = new Array('A','BUTTON','TEXTAREA','INPUT','IFRAME');
Pythagoras.Modal._saveTabIndexes = new Array();
Pythagoras.Modal._saveDisableSelect = new Array();
Pythagoras.Modal._modalFrames = new Array();
 
Pythagoras.Modal.GoModal = function()
{

    var divModalFrame = null;
    
    if(Pythagoras.Modal._modalFrames.length == 0) {

        var el = document.getElementById("sys_pth_modalblock");
        if (el == null || typeof(el) == 'undefined')
        {
            el = document.createElement("div");
            el.id = "sys_pth_modalblock";
            el.style.position = "absolute";
            el.style.top = "0";
            el.style.left = "0";
            el.style.zIndex = 19999;
            el.className = "pg_modalBackground";
            document.body.appendChild(el);
        }
        
        var clientWidth;
        if (window.innerWidth) {
            clientWidth = (window.__safari ? window.innerWidth : Math.max(window.innerWidth, document.documentElement.clientWidth));
        } else {
            //clientWidth = document.documentElement.clientWidth;
            //clientWidth = document.documentElement.offsetWidth;
            clientWidth = Math.max(document.documentElement.offsetWidth, document.documentElement.scrollWidth);            
        }
        
        if(document.body.offsetWidth > clientWidth) {
             clientWidth = document.body.offsetWidth;
        }
        
        var clientHeight;
        if (window.innerHeight) {
            clientHeight = (window.__safari ? window.innerHeight : Math.max(window.innerHeight, document.documentElement.clientHeight));
        } else {
            //clientHeight = document.documentElement.clientHeight;
            //clientHeight = document.documentElement.offsetHeight;
            clientHeight = Math.max(document.documentElement.offsetHeight, document.documentElement.scrollHeight);
                    
        }
        
        if(document.body.offsetHeight > clientHeight) {
            clientHeight = document.body.offsetHeight;
        }
    

        //alert(clientWidth+'x'+clientHeight);
        el.style.display = "block";    
        el.style.width = clientWidth+'px';
        el.style.height = clientHeight+'px';
        //el.style.top = document.documentElement.scrollTop.toString() + "px";
        el.style.top = "0px";        
        
        Pythagoras.Modal.DisableTabs();
        
        divModalFrame = document.createElement("div");
        document.body.appendChild(divModalFrame);
        
        Pythagoras.Modal._modalFrames.push(divModalFrame);
        
    } else {
        
        var prevFrame = Pythagoras.Modal._modalFrames[Pythagoras.Modal._modalFrames.length-1];
        prevFrame.style.display = "none";
    
        divModalFrame = document.createElement("div");
        document.body.appendChild(divModalFrame);
        
        Pythagoras.Modal._modalFrames.push(divModalFrame);        
    }
    
    divModalFrame.style.position = "absolute";
    divModalFrame.style.zIndex = 101000;
    divModalFrame.className = "pg_dialog";
    
    return divModalFrame;

}

Pythagoras.Modal.UnModal = function()
{
    var myFrame = Pythagoras.Modal._modalFrames.pop();
    document.body.removeChild(myFrame);
    
    if(Pythagoras.Modal._modalFrames.length == 0) {

        var el = document.getElementById("sys_pth_modalblock");
        if (el != null && typeof(el) != 'undefined') {
            el.style.display = 'none';
        }
        Pythagoras.Modal.RestoreTabs();
        
    } else {
        Pythagoras.Modal._modalFrames[Pythagoras.Modal._modalFrames.length-1].style.display="block";
    }
}

Pythagoras.Modal.DisableTabs = function()
{
    var ix = 0;
    var tagEls;
    Pythagoras.Modal._saveTabIndexes = new Array();
    for(var i=0; i<Pythagoras.Modal._tagWithTabIndex.length; i++)
    {
        tagEls = document.getElementsByTagName(Pythagoras.Modal._tagWithTabIndex[i]);
        for(var j=0; j<tagEls.length; j++)
        {
            if(Pythagoras.Modal.IsOnModalLayer(tagEls[j])) {
                continue;
            }
            Pythagoras.Modal._saveTabIndexes[ix] = {tag: tagEls[j], index: tagEls[j].tabIndex};
			tagEls[j].tabIndex="-1";
            ix++;
        }
    }
    //chyba exploreru se selectem
    Pythagoras.Modal._saveDisableSelect = new Array();
    tagEls = document.getElementsByTagName('SELECT');
    ix = 0;
    for(var j=0; j<tagEls.length; j++)
    {
        if(Pythagoras.Modal.IsOnModalLayer(tagEls[j])) {
            continue;
        }
        Pythagoras.Modal._saveDisableSelect[ix] = {tag: tagEls[j], visib: tagEls[j].style.visibility};
		tagEls[j].style.visibility = 'hidden';
		ix++;
    }
}

Pythagoras.Modal.IsOnModalLayer = function(el)
{
    while(el) {
        var zi = el.style ? el.style.zIndex : 0;
        if(zi && zi >= 20000) {
            return true;
        }
        el = el.parentNode;
    }
    
    return false;
} 

Pythagoras.Modal.RestoreTabs = function()
{
    for (var i = 0; i < Pythagoras.Modal._saveTabIndexes.length; i++) {
	    Pythagoras.Modal._saveTabIndexes[i].tag.tabIndex = Pythagoras.Modal._saveTabIndexes[i].index;
    }
    for (var k = 0 ; k < Pythagoras.Modal._saveDisableSelect.length; k++) {
        Pythagoras.Modal._saveDisableSelect[k].tag.style.visibility = Pythagoras.Modal._saveDisableSelect[k].visib;
    }
}

Pythagoras.Modal.CenterDialog = function(divDialog)
{
    var w = divDialog.offsetWidth;
    var h = divDialog.offsetHeight;
    
    var cw = document.documentElement.clientWidth;
    var ch = document.documentElement.clientHeight;
    
    var ox = (cw - w) / 2 + document.documentElement.scrollLeft;
    var oy = (ch - h) / 2 + document.documentElement.scrollTop;
    
    divDialog.style.left = ox.toString() + "px";
    divDialog.style.top = oy.toString() + "px";
}


//if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();

if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();