﻿var owSettings = {
    get_zIndex: function() { try { var z = jQuery.art.overDiv.options.zIndex; return z; } catch (ex) { return 1500; } } ,
    closejs: ""    
};
var owevent = null;
var openwins = new Array();
var actWin = new Object();
var drag = new Object();
var follower = new Object();
var body = new Object();
var mousespace = 10;
var LastPos = new Object();
drag.clickx = 0;
drag.clicky = 0;
body.mousex = 0;
body.mousey = 0;
follower.level = -1;
follower.onmouseover = null;
follower.onmouseout = null;
follower.onmousemove = null;
follower.onclose = "";
var popuplevel = 0;

if (typeof replaceStr != "function") {
    //regexp jellegű csere
    function replaceStr(src, find, to) {
        var retV = src;
        var spos = -1;
        while ((spos = retV.indexOf(find)) >= 0) {
            retV = retV.substring(0, spos) + to + retV.substring(spos + find.length);
        }
        return retV;
    }
}

///////////
// DEFAULTS
///////////
var preDiv = null;
var scrollSize = 22;
function getSpace() {
    var preDivEl = getObjById("preDiv");
    var sajat = getObjById("preDiv");
    if (!preDivEl) { preDivEl = document.body; }
    if (preDivEl) {
        if (!preDiv) {
            preDiv = new Object();
            /*
                resizeAllOW a function.js-ből 
                        (nem teljes képernyős / nem beállított height,stb. tulajdonsággal 
                            folyton változik a stíluslap pozicionált elem magassága)
            */
        }
        var preDivPos = (preDivEl ? findPos(preDivEl) : null);
        preDiv.left = preDivPos ? preDivPos.left : 0;
        preDiv.top = preDivPos ? preDivPos.top : 0;
        preDiv.width = preDivEl ? preDivEl.clientWidth : 0;
        preDiv.height = preDivEl ? preDivEl.clientHeight : 0;
        if (preDiv.left < 0) { preDiv.left = 0; }
        if (preDiv.top < 0) { preDiv.top = 0; }
        if (preDiv.width > document.body.clientWidth - preDiv.left) preDiv.width = document.body.clientWidth - preDiv.left;
        if (preDiv.height > document.documentElement.clientHeight - preDiv.top) preDiv.height = document.documentElement.clientHeight - preDiv.top; //-- clientHeight=27..37 ??
        //owdef_fixy = preDiv.top;                        //"FIXY",y - window position
        owdef_posy = preDiv.top;                        //"POSY",y - window position
        owdef_width = preDiv.width;                      //"WIDTH",x - "100px"/"20%"/100/-1
    } else {
        preDiv = null;
    }
}

//Az összes nyitott ablak szélességének, magasságának beállítása (W,H)
function resizeAllOW() {
    var owlen = getMaxWinLevel();
    for (var i = 0; i <= owlen; i++) {
        resizeOW(i);
    }
}

//egy overwin újraméretezése
function resizeOW(level) {
    if (level % 2 == 0) { return; }     //help-eket nem méretezünk!
    var owDiv = document.getElementById("ow" + level);
    getSpace();

    if (openwins[level]) {
        if (openwins[level].canresize) {
            //if (!openwins[level].fixheight) {
                var lHei = 0;
                if (owDiv.children[1]) {                                        //Ha van header
                    lHei = preDiv.height - owDiv.children[1].offsetTop;         //A tartalom mérete (header nélkül)
                    if (owDiv.children[1].children[0]) {                        //Ha a tartalmi részen belül van DIV
                        owDiv.children[1].children[0].style.width = (preDiv.width - scrollSize - 2) + "px";
                        lHei = setPanelHeights(owDiv.children[1].children[0], lHei);                                //belső panelek átméretezése
                        if (lHei > owDiv.children[1].children[0].offsetHeight) {//Ha annak a magassága kisebb, akkor békénhagyjuk.
                            lHei = owDiv.children[1].children[0].offsetHeight;
                            owDiv.children[1].children[0].style.width = "100%";
                        } else {
                            owDiv.children[1].children[0].style.width = (preDiv.width - scrollSize - 2) + "px";
                            lHei = setPanelHeights(owDiv.children[1].children[0], lHei);                                //belső panelek átméretezése
                        }
                    }
                    if (lHei < 0) { lHei = 0; }
                    owDiv.children[1].style.height = lHei + "px";
                } else {
                    lHei = preDiv.height;
                    owDiv.children[0].style.height = lHei + "px";
                }
            //}
            //if (!openwins[level].fixwidth)
                owDiv.style.width = preDiv.width + "px";
        }
        if (openwins[level].fixy == -1) owDiv.style.top = preDiv.top + Math.floor((preDiv.height - owDiv.clientHeight) / 2) + "px";
        if (openwins[level].fixx == -1) owDiv.style.left = preDiv.left + Math.floor((preDiv.width - owDiv.clientWidth) / 2) + "px";
    }
}

//Belső panelek magasságának beállítása
function setPanelHeights(owscrollcont, szumH, fixedPanels) {
    var divIP = owscrollcont.children[0];    //id=divViewInfoPopup
    if (!divIP) divIP = owscrollcont;
    if (!divIP) return szumH;
    
    var lMinH = 50;                         //Görgetős panelek minimális magassága
    var lMinRow = 3;                          //Minimális sorszám, ami látszik
    var panels = new Array();
    var lFreeSpace = szumH;

    var i = 1;                              //1-től indulunk, mert a 0. gyereke az vagy namepanel, vagy theader
    if (divIP.children[1]) {                //azért a 0. méretével csökkentjük...
        lFreeSpace -= divIP.children[1].offsetTop;
    } else {
        lFreeSpace -= (divIP.children[0]) ? divIP.children[0].offsetHeight : 0;
    }
    // PANELEK VÉGIGOLVASÁSA
    var actP;                               //aktuális panel
    var allPszumH = 0;
    while (actP = divIP.children[i]) {
        if (actP.className.indexOf("tdheader") >= 0) {       //ha címsor:
            if (divIP.children[i + 1]) {
                lFreeSpace -= divIP.children[i + 1].offsetTop - actP.offsetTop;
            } else {
                lFreeSpace -= actP.offsetHeight;
            }
        } 
        else {
            if (!(0 in actP.children)) {
                // NE VEDD KI A VIZSGÁLATOT !!!!!!!!!!!!!!!!
                i++;
                continue;
            }

            var act = new Object();                       //aktuális panel adatai

            if (actP.children[0].className.indexOf("scrollTable") >= 0) {
                act.resizable = true;                       //kezdetben átméretezhető
                act.panel = actP;                           //panel-be aktuális panel (melyet majd átméretezünk)
                act.head = actP.children[0].children[0];    //0.THEAD
                if (act.head) {
                    act.cont = actP.children[0].children[1];//1.TBODY
                    if ( (!act.cont) || (act.head.className.indexOf("fixedHeader") < 0) ) {
                        act.cont = actP.children[0];        //ha nem fixedHeader van benne, akkor az lesz a tartalom, a header meg null
                        act.head = null;
                        act.headsize = act.cont.offsetTop;
                    } else {                        //ha az, akkor headersize nem 0
                        act.headsize = act.cont.offsetTop + act.head.offsetTop;
                    }
                } else {                                    //ha nincs gyereke, akkor ő maga lesz a tartalom
                    act.cont = actP.children[0];
                    act.headsize = act.cont.offsetTop;
                }
            } else {
                act.resizable = true;
                act.panel = actP;
                act.cont = actP;
                act.cont.style.height = "auto";
                act.headsize = 0;
                act.head = null;
            }
                    
            lFreeSpace -= act.headsize;        //THEAD magasságával csökkentjük
            act.maxH = act.cont.offsetHeight;           //max méret az így kapott magasság

            act.minH = 0;
            for (var j = 0; (j < lMinRow) && (act.cont.children[j]); j++) {
                if (act.cont.children[j + 1]) { act.minH += act.cont.children[j + 1].offsetTop - act.cont.children[j].offsetTop; }
                else { act.minH += act.cont.children[j].offsetHeight; }
                act.minH = (act.minH > (lFreeSpace * 0.6)) ? parseInt((lFreeSpace * 0.6), 10) : act.minH;
            }
            if (act.minH < lMinH) { act.minH = lMinH; }
            if (act.maxH > lMinH) {                     //ha ez nagyobb mint a minimális, akkor át fogjuk méretezni
                panels.push(act);
                allPszumH += act.maxH;
            } else {                                    //ha nem, akkor a szabad helyet csökkentjük vele, átméretezzük minimális magasságúra
                lFreeSpace -= act.maxH;
                actP.style.height = (act.headsize + act.maxH) + "px";
                //alert(actP.id + "-" + actP.className + " méretezése teljes magasságra (head: " + act.headsize + ", cont: " + act.maxH + ")");
            }
        }
        i++;
    }

    if (lFreeSpace > allPszumH) { lFreeSpace = allPszumH; }

    var retV = szumH;
    i = 0;
    while (i < panels.length) {
        if (panels[i].resizable) {
            var newH = panels[i].maxH / allPszumH * lFreeSpace;
            //panels[i].minH = 0;                                         //************** Tesztelés ********************//
            if (newH < panels[i].minH) {                              //ha a keletkező méret kisebb, mint a minimális:
                panels[i].panel.style.height = (panels[i].headsize + panels[i].minH) + "px";
                lFreeSpace -= panels[i].minH;
                allPszumH -= panels[i].maxH;
                panels[i].resizable = false;
                //alert(panels[i].panel.id + "-" + panels[i].panel.className + " méretezése minimum magasságra (head: " + panels[i].headsize + ", cont: " + panels[i].minH + ")");
                i = 0;
            } else {
                var realH = Math.round(newH - 0.5);
                retV -= newH - realH;
                panels[i].panel.style.height = (panels[i].headsize + realH) + "px";
                i++;
            }
        } else { i++; }
    }
    //alert("Többi panel számolt méretet kapott");
    return Math.round(retV + 0.5);
}


var owdef_fixx = -1;                        //"FIXX",x - window position - def: CENTER
var owdef_fixy = -1;                        //"FIXY",y - window position
var owdef_posx = -1;                        //"POSX",x - window position - def: CENTER
var owdef_posy = 50;                        //"POSY",y - window position
var owdef_width = 200;                      //"WIDTH",x - "100px"/"20%"/100/-1 - popup esetén a def. méret
var owdef_fwidth = 200;                      //"WIDTH",x - "100px"/"20%"/100/-1 - followon esetén a def. méret
var owdef_height = -1;                      //"HEIGHT",x

var owLoaded = 0;

var owdef_html = "You must add argument(s) to overwin(...)!<BR/>Created by arTchivum<BR/>Click <a href=\"#\" onclick=\"closewin();\">here</a>&nbsp; to close the hightst level window."; //inner HTML (if you don"t add arguments to overwin function, we will show that)
var owdef_caption = "";                     //"CAPTION",str - title row text
var owdef_sticky = false;                   //"STICKY" - generate title row?
var owdef_headhtml = "";
var owdef_titlehtml = "";

var owdef_color = false;                    //"OUTCOLOR" - show transparecy outline? [class name is overcolorout, id is overcolor]
var owdef_trans = true;                     //"NOOUTTRANS" - upper transparency outline? [class name is overtransout, id is overtrans]
var owdef_fmouse = false;                   //"FMOUSE"/"FOLLOWMOUSE" - is window following mouse?
//var owdef_fmnodiv = true;                   //"
var owdef_drag = false;                     //"DRAG" - can you drag it?
var owdef_fmelement = null;                 //"FOLLOWON"/"FMOUSEON"
//var owdef_dragonlydef = false;              //"DRAGONLY" - can you drag it, if the mouse poiter on "dragarea" (Left<X<LEFT+WIDTH...)?
//level def. value = max + 1
var owdef_canresize = false;                //kell-e újraméretezni a preDiv újraméretezése esetén?


var owdef_closeover = false;                //"CLOSEOVER" - close window on mouse move?

var owdef_titlefontclass = "";              //"TITLECLASS",str - title row text class
var owdef_closefontclass = "";              //"CLOSECLASS",str - close "X" font class
var owdef_closepicture = "";                //"CLOSEPIC",str - load an image to close "X" position

var owdef_onopen = "";                      //ablak nyitásnál
var owdef_onclose = "";                     //ablak zárásnál
var owdef_onreturn = "";                    //ha a legfelső elemet zárjuk be, akkor a következő ablakra meghívjuk
var owdef_ongoback = "";                    //ha a legfelső elem fölé nyílik egy ablak
var owdef_onstayup = "";                    //ha bármelyik (nem a legfelső) ablakot bezárjuk, a legfelsőre ezt meghívjuk
var owdef_onisback = "";                    //ha megnyitáskor van az elem fölött ablak
var owdef_onfirstopen = "";                 //ha ez az első megnyitott ablak (bármilyen szinten)
var owdef_onlastclose = "";                 //ha ez az utoljára bezárt

var owdef_vmouse = "right";                 //"LEFT"/"CENTER"/"RIGHT"
var owdef_hmouse = "below";                 //"BELOW"/"ABOWE"

var owdef_headclass = "";                   //head div class
var owdef_titleclass = "";                  //   head/left div class
var owdef_titlefontclass = "";              //      head/left font class
var owdef_closeclass = "";                  //   head/right div class
var owdef_closepicture = "";                //      img|a
var owdef_closeover = "";                   //      close window on img/a mouse move?
var owdef_closeelementclass = "";           //      head/right img|a class
var owdef_closefontclass = "";              //         head/right/a font class
var owdef_contentclass = "";                //content div class

//aktuális böngésző vizsgálata
var owOpera = (navigator.userAgent.toLowerCase().indexOf("opera") > -1 && document.createTextNode);  // Opera 7
var owNetscape4 = (navigator.appName == "Netscape" && parseInt(navigator.appVersion) == 4);
var owNetscape6 = (document.getElementById) ? true : false;
var owKonqueror = owNetscape6 && /konqueror/i.test(navigator.userAgent);
var owIexplorer4 = (document.all) ? true : false;
var owIexplorer5 = false;
var owlIexplorer55 = false;
var docRoot = "document.body";
// Resize fix for NS4.x to keep track of layer
if (owNetscape4) {
    var oW = window.innerWidth;
    var oH = window.innerHeight;
    window.onresize = function() { if (oW != window.innerWidth || oH != window.innerHeight) { location.reload(); } }
}
// Microsoft Stupidity Check(tm).
if (owIexplorer4) {
    var agent = navigator.userAgent;
    if (/MSIE/.test(agent)) {
        var versNum = parseFloat(agent.match(/MSIE[ ](\d\.\d+)\.*/)[1]);
        if (versNum >= 5) {
            owIexplorer5 = true;
            owIexplorer55 = (versNum >= 5.5 && !owOpera) ? true : false;
            if (owNetscape6) owNetscape6 = false;
        }
    }
    if (owNetscape6) owIexplorer4 = false;
}
if (document.compatMode && document.compatMode == "CSS1Compat") docRoot = ((owIexplorer4 && !owOpera) ? "document.documentElement" : docRoot);

////////
//PUBLIC FUNCTIONS
////////

////layerek beállítása - x,"ON"/"OFF"/"...","ON"/"OFF"/"..."
//function setOutlines(level, trans, color) {
//    var wasset = false;
//    if (openwins[level]) {
//        if (color == "ON") { wasset = wasset || !openwins[level].color; openwins[level].color = true; }
//        else if (color = "OFF") { wasset = wasset || openwins[level].color; openwins[level].color = false; }
//        if (trans == "ON") { wasset = wasset || !openwins[level].trans; openwins[level].trans = true; }
//        else if (trans = "OFF") { wasset = wasset || openwins[level].trans; openwins[level].trans = false; }
//    }
//    else {if ((color == "ON") || (color == "OFF") || (trans == "ON") || (trans == "OFF")) { //alert("Isn"t window at " + level + " level.\nCan"t swith OFF its colored outline!"); } }
//    if (wasset) { refreshOutlines(); }
//}
////transparent layer-ek frissítése
function refreshOutlines() {
    var maxcolorlevel = -1; //hányadik window alatt van színezett layer
    var maxtranslevel = -1; //hányadik window alatt van transparent layer
    for (var i = 0; i < openwins.length; i++) {
        if (openwins[i]) {
            if (openwins[i].trans) { maxtranslevel = i; }
            if (openwins[i].color) { maxcolorlevel = i; }
        }
    }

    var divOut = getObjById("owcolor");
    if (maxcolorlevel >= 0) {
        if (!divOut) {
            divOut = document.createElement("div");
            divOut.id = "owcolor";
            document.body.appendChild(divOut);
        }
        divOut.className = "owcolorout";
        divOut.style.position = "absolute";
        divOut.style.zIndex = owSettings.get_zIndex() + maxcolorlevel * 10;       // zIndex: 1500
    } else {
        if (divOut) { document.body.removeChild(divOut); }
    }

    var divTrans = getObjById("owtrans");
    if (maxtranslevel >= 0) {
        if (!divTrans) {
            divTrans = document.createElement("div");
            divTrans.id = "owtrans";
            document.body.appendChild(divTrans);
        }
        divTrans.className = "owtransout";
        divTrans.style.position = "absolute";
        divTrans.style.zIndex = owSettings.get_zIndex() + 1 + maxtranslevel * 10;
    } else {
        if (divTrans) { document.body.removeChild(divTrans); }
    }

    var over;
    var acW = openwins[getMaxWinLevel()];
    if (acW) {
        if (acW.fmouse) { attachFollowEvent(); }
        else { deattachFollowEvent(); }

        if (acW.drag) {
            over = getObjById("ow" + getMaxWinLevel());
            if (over) {
                over.onmousedown = function() {
                    drag.clickx = owevent.offsetX;
                    drag.clicky = owevent.offsetY;
                    attachFollowEvent();
                }
                mouseupdiv = getObjById("owtrans");
                if (mouseupdiv == null) { mouseupdiv = getObjById("owcolor"); }
                if (mouseupdiv == null) { mouseupdiv = document.body; }
                over.onmouseup = function() {
                    drag.clickx = -1;
                    drag.clicky = -1;
                    deattachFollowEvent();
                }
                mouseupdiv.onmouseup = over.onmouseup;
            }
        } else {
            over = getObjById("ow" + getMaxWinLevel());
            if (over) {
                over.onmousedown = null;
                over.onmouseup = null;
            }
        }
        openwins[getMaxWinLevel()] = acW;
    }
}
function reposOverwin(owevent) {
    var level = actWin.level;
    var x=owevent.clientX; y=owevent.clientY;
    var objpos = getFollowObjSize(level, x, y);
    var id;
    try { id = Function.getEventTarget(owevent).id.toString(); } catch (ex) { id = getEventTarget(owevent).id.toString(); }
    if ( (!((owevent.type=="mouseover")&&(id.indexOf("ow")!=0)))                  //ha nem mouseover az elemen
         && (((owevent.type=="mouseout")&&(id.indexOf("ow")!=0))                  //és (mouseout az elemen, vagy az elem fölött vagyunk)
         || ((x < objpos.left) || (x > objpos.right) || (y < objpos.top) || (y > objpos.bottom)))) {
        if ((openwins[level]) && (openwins[level].felement) && (follower.level>=0)) {
            var acwel = openwins[level].felement;
            acwel.onmouseover = follower.onmouseover;
            acwel.onmousemove = follower.onmousemove;
            acwel.onmouseout = follower.onmouseout;
        }
        eval(follower.onclose);
        follower.level = -1;
        follower.onmouseover = null;
        follower.onmousemove = null;
        follower.onmouseout = null;
    } else {
        var over = getObjById("ow" + level);
        var vpos = actWin.vmousepos;
        var hpos = actWin.hmousepos;
        if ((over) && (openwins[level]) && (openwins[level].felement)) {
            var pos = Positioning(x, y, over, vpos, hpos);

            actWin.left = pos.left;
            actWin.top = pos.top;
            actWin.width = openwins[level].felement.clientWidth;
            actWin.height = openwins[level].felement.clientHeight;
            actWin.right = actWin.left + actWin.width;
            actWin.bottom = actWin.top + actWin.height;
            actWin.mposx = x;
            actWin.mposy = y;
        }
    }
}

function getFollowObjSize(level,x,y) {
    var objpos = new Object();
    if ((openwins[level]) && (openwins[level].felement)) {
        objpos = findPos(openwins[level].felement);
        var fel=openwins[level].felement;
        var wsize=fel.clientWidth;
        var hsize=fel.clientHeight;
        if (fel.offsetWidth>wsize) wsize=fel.offsetWidth;
        if (fel.offsetHeight>hsize) hsize=fel.offsetHeight;
        objpos.right = objpos.left + wsize;
        objpos.bottom = objpos.top + hsize;
    } else {
        objpos = new Object();
        objpos.left = x; objpos.right = y;
        objpos.right = x; objpos.bottom = y;
    }
    return objpos;
}
//Positioning actual overwin
function Positioning(x, y, el, vpos, hpos) {
    var left = x;
    var top = y;
    if (vpos == "left") left = x - el.clientWidth - mousespace;
    else if (vpos == "center") left = x - el.clientWidth / 2;
    else if (vpos == "right") left = x + mousespace;
    if (hpos == "above") top = y - el.clientHeight - mousespace;
    else if (hpos == "below") top = y + mousespace;

    var docw = document.documentElement.clientWidth;
    var doch = document.documentElement.clientHeight;

    if (left <= 0) { left = 0; }
    else if (left + el.clientWidth >= docw) { left = docw - el.clientWidth; }
    if (top <= 0) { top = 0; }
    else if (top + el.clientHeight >= doch) { top = doch - el.clientHeight; }

    if ((el) && (el.style)) {
        el.style.left = left + "px";
        el.style.top = top + "px";
    }

    var ret = new Object();
    ret.left = left;
    ret.top = top;
    return ret;
}

//DISABLE AND ENABLE DIV SELECTION ONDRAG
var dissel = function(target) {
    if (typeof target.onselectstart != "undefined") {//IE route
        drag.onselectstart = target.onselectstart;
        target.onselectstart = function() { return false }
    } else if (typeof target.style.MozUserSelect != "undefined") { //Firefox route
        drag.usersel = target.style.MozUserSelect;
        target.style.MozUserSelect = "none";
    } else {//All other route (ie: Opera)
        drag.onmousedown = target.onmousedown;
        target.onmousedown = function() { return false }
    }
    drag.mouse = target.style.cursor;
    target.style.cursor = "default";
}
var ensel = function(target) {
    if (typeof target.onselectstart != "undefined") {//IE route
        if (drag.onselectstart) target.onselectstart = drag.onselectstart;
    } else if (typeof target.style.MozUserSelect != "undefined") { //Firefox route
        if (drag.usersel) target.style.MozUserSelect = drag.usersel;
    } else {//All other route (ie: Opera)
        if (drag.onmousedown) target.onmousedown = drag.onmousedown;
    }
    if (drag.mouse) target.style.cursor = drag.mouse;
}
//FOLLOW MOUSE AND DRAG MOUSE ATTACHMENT, DEATTACHMENT TOOLS
//global follow mouse function - event from (div owtrans)/(div owcolor)/(body)
function findPos(obj) {
    var curleft = curtop = 0;
    var ret;
    try {
        do {
            curleft += obj.offsetLeft;
            curtop += obj.offsetTop;
        } while (obj = obj.offsetParent);
        ret = new Object();
        ret.left = curleft;
        ret.top = curtop;
    }
    catch (ex) {
    }
    return ret;
}
var fmousecapt = function() {
    try {
        body.mousex = owevent.clientX;
        body.mousey = owevent.clientY;
    }
    catch (ex) { 
    }
}
var fmousefunc = function() {
}

function attachFollowEvent() {            //add followmouse to def. level, and remove from all others
    var trdiv = arguments[0];
    if (trdiv == null) { trdiv = getObjById("owtrans"); }
    if (trdiv == null) { trdiv = getObjById("owcolor"); }
    if (trdiv == null) { trdiv = document.body; }

    if (trdiv != null) {
        trdiv.onmousemove = fmousefunc;
        var ev = new Object();
        ev.clientX = body.mousex;
        ev.clientY = body.mousey;
        fmousefunc();
    }
    var level = getMaxWinLevel();
    var over = getObjById("ow" + level);
    if (over) {
        over.onmousemove = fmousefunc;
        if ((openwins[level]) && (openwins[level].drag)) dissel(over);
    }
}
function deattachFollowEvent() {
    var trdiv = arguments[0];
    if (trdiv != null) { trdiv.onmousemove = null; }
    if ((trdiv = getObjById("owtrans")) != null) { trdiv.onmousemove = null; }
    if ((trdiv = getObjById("owcolor")) != null) { trdiv.onmousemove = null; }
    document.body.onmousemove = fmousecapt;

    if (trdiv != null) { trdiv.onmousemove = fmousefunc; }
    var level = getMaxWinLevel();
    var over = getObjById("ow" + level);
    if (over) { over.onmousemove = null; ensel(over); }
}

//get hightst level of opened windows
function getMaxWinLevel() {
    var maxlevel = openwins.length - 1;
    //if (maxlevel == -1) popuplevel = 0;
    if (maxlevel % 2 == 0) popuplevel = maxlevel;
    else popuplevel = maxlevel+1;
    return maxlevel;
}
//close overwin (level) - if the level == maxlevel, we hide the transparent layer
function closewin() {
    var closemaxlevel = getMaxWinLevel();
    var level = closemaxlevel;
    try {
        if (arguments.length > 0) { level = arguments[0]; }
        if (openwins[level]) {
            var lastclose = openwins[level].onlastclose;
            if (openwins[level].onclose) { eval(openwins[level].onclose); }

            var newOpenwins = new Array();
            for (var i = 0; i < openwins.length; i++) {
                if ((i != level) && (openwins[i])) { newOpenwins[i] = openwins[i]; }
            }

            if (openwins[level] && openwins[level].felement) { resetFollowElementEvents(level); }

            openwins = newOpenwins;
            topwin = openwins[getMaxWinLevel()];
            if (topwin) {
                if ((level == closemaxlevel) && (topwin.onreturn != "")) { eval(topwin.onreturn); }
                else if (topwin.onstayup != "") { eval(topwin.onstayup); }
            }

            if ((openwins.length <= 0) && (lastclose != "")) { eval(lastclose); }
        }
        if (divWin = getObjById("ow" + level)) { document.body.removeChild(divWin); }
    }
    catch (ex) {
    }
    refreshOutlines();
}

//get and set arguments
function getArgs(ar) {
    var tmpevent = null;
    var isFirstArg = true;
    var lpopup = false;
    var isTextNode = false;
    getSpace();
    actWin = new Object();
    actWin.Element = null;
    actWin.html = owdef_html;
    actWin.HTMLElement = null;

    actWin.owclass = "";
    actWin.caption = owdef_caption;
    actWin.width = owdef_width;
    actWin.fixwidth = false;
    actWin.height = owdef_height;
    actWin.fixheight = false;
    actWin.sticky = owdef_sticky;
    actWin.headhtml = owdef_headhtml;
    actWin.titlehtml = owdef_titlehtml;

    actWin.color = owdef_color;
    actWin.trans = owdef_trans;
    actWin.fmouse = owdef_fmouse;
    //actWin.fmnodiv = owdef_fmnodiv;
    actWin.felement = owdef_fmelement;
    actWin.drag = owdef_drag;
    actWin.level = getMaxWinLevel() + 1;
    actWin.canresize = owdef_canresize;
    actWin.closeElement = null;
    
    actWin.fixx = owdef_fixx;
    actWin.fixy = owdef_fixy;
    actWin.posx = owdef_posx;
    actWin.posy = owdef_posy;

    actWin.onopen = owdef_onopen;
    actWin.onclose = owdef_onclose;
    actWin.onreturn = owdef_onreturn;
    actWin.ongoback = owdef_ongoback;
    actWin.onstayup = owdef_onstayup;
    actWin.onisback = owdef_onisback;
    actWin.onfirstopen = owdef_onfirstopen;
    actWin.onlastclose = owdef_onlastclose;

    actWin.vmousepos = owdef_vmouse;
    actWin.hmousepos = owdef_hmouse;

    actWin.headclass = owdef_headclass;
    actWin.titleclass = owdef_titleclass;
    actWin.titlefontclass = owdef_titlefontclass;
    actWin.closeclass = owdef_closeclass;
    actWin.closepicture = owdef_closepicture;
    actWin.closeover = owdef_closeover;
    actWin.closeelementclass = owdef_closeelementclass;
    actWin.closefontclass = owdef_closefontclass;
    actWin.contentclass = owdef_contentclass;

    for (i = 0; i < ar.length; i++) {
        if (isFirstArg) {
            try {
                if (jQuery.isArray(ar[i])) {
                    actWin.Element = ar[i]
                }
                else if ("jquery" in ar[i]) { actWin.Element = ar[i]; }
                else {
                    isTextNode = (!ar[i].startsWith("<") || (!ar[i].endsWith(">")));
                    if (isTextNode) {
                        actWin.Element = jQuery("<div>" + ar[i] + "</div>")
                    }
                    else {
                        if (Object.getType(ar[i])._typeName == "String") {
                            if (/bigtable/.test(ar[i])) { actWin.html = ar[i]; }
                            else { actWin.Element = jQuery(ar[i]); }
                        }
                        else { actWin.Element = jQuery(ar[i]); }
                    }
                }
                if (!(0 in actWin.Element)) { actWin.Element = null; actWin.html = ar[i]; }
                else { actWin.html = ""; }
            }
            catch (ex) {
                actWin.html = ar[i];
            }
            isFirstArg = false;
        } else {
            if (ar[i].clientX) {tmpevent = ar[i];continue;}
            var ari = (ar[i]) ? ar[i].toUpperCase() : "";
            if (ari == "") { continue; }
            if (ari == "CAPTION") { actWin.caption = ar[++i]; continue; }
            if (ari == "HTMLELEMENT") { actWin.HTMLElement = ar[++i]; continue; }
            if (ari == "POPUP") { lpopup = true; actWin.level = (actWin.level % 2 == 1) ? actWin.level : actWin.level + 1; actWin.sticky = true; actWin.color = true; continue; }
            if (ari == "HELP") {
                var isSetActWin = false;        // HELP paraméter esetén akkor is beállítás, ha nincs popup elem (a_e_personinfo.aspx, stb.)
                var popup = document.getElementById("ctl00_popup");
                if (popup == null)  isSetActWin = true;
                else if (popup.className.indexOf("popupoff") < 0) isSetActWin = true;

                if (isSetActWin) {
                    actWin.level = popuplevel;
                    closewin(popuplevel);
                    actWin.sticky = false;
                    actWin.color = false;
                    try { actWin.felement = Function.getEventTarget(event); } catch (ex) { actWin.felement = getEventTarget(event); }
                    actWin.trans = false;
                    continue;
                } else {
                    return "NoShow";
                }
            }
            if (ari == "WIDTH") { actWin.width = ar[++i]; continue; }
            if (ari == "HEIGHT") { actWin.height = ar[++i]; continue; }
            if (ari == "FIXWIDTH") { actWin.width = ar[++i]; actWin.fixwidth = true; continue; }
            if (ari == "FIXHEIGHT") { actWin.height = ar[++i]; actWin.fixheight = true; continue; }
            if (ari == "STICKY") { actWin.sticky = true; continue; }

            if (ari == "OUTCOLOR") { actWin.color = true; continue; }
            if (ari == "NOOUTTRANS") { actWin.trans = false; continue; }
            if (ari == "OUTTRANS") { actWin.trans = true; continue; }
            if ((ari == "FMOUSE") || (ari == "FOLLOWMOUSE")) { actWin.fmouse = true; continue; }
            if ((ari == "FMOUSEON") || (ari == "FOLLOWON")) {
                try { actWin.felement = Function.getEventTarget(event); } catch (ex) { actWin.felement = getEventTarget(event); }
                actWin.trans = false; 
                continue; 
            }
            if (ari == "DRAG") { actWin.drag = true; continue; }
            if (ari == "LEVEL") { actWin.level = ar[++i]; continue; }

            if (ari == "FIXX") { actWin.fixx = ar[++i]; continue; }
            if (ari == "FIXY") { actWin.fixy = ar[++i]; continue; }
            if (ari == "POSX") { actWin.posx = ar[++i]; continue; }
            if (ari == "POSY") { actWin.posy = ar[++i]; continue; }

            if (ari == "ONOPEN") { actWin.onopen = ar[++i]; continue; }
            if (ari == "ONCLOSE") { actWin.onclose = ar[++i]; continue; }
            if (ari == "ONRETURN") { actWin.onreturn = ar[++i]; continue; }
            if (ari == "ONGOBACK") { actWin.ongoback = ar[++i]; continue; }
            if (ari == "ONSTAYUP") { actWin.onstayup = ar[++i]; continue; }
            if (ari == "ONISBACK") { actWin.onisback = ar[++i]; continue; }
            if (ari == "ONFIRSTOPEN") { actWin.onfirstopen = ar[++i]; continue; }
            if (ari == "ONLASTCLOSE") { actWin.onlastclose = ar[++i]; continue; }

            if ((ari == "LEFT") || (ari == "RIGHT") || (ari == "CENTER")) { actWin.vmousepos = ar[i].toLowerCase(); continue; }
            if ((ari == "ABOVE") || (ari == "BELOW")) { actWin.hmousepos = ar[i].toLowerCase(); continue; }

            if (ari == "OWCLASS") { actWin.owclass = ar[++i]; continue; }
            if (ari == "HEADCLASS") { actWin.headclass = ar[++i]; continue; }
            if (ari == "TITLECLASS") { actWin.titleclass = ar[++i]; continue; }                                 //background class dupla tábla osztálya?
            if (ari == "TITLEFONTCLASS") { actWin.titlefontclass = ar[++i]; continue; }                                 //background class dupla tábla osztálya?
            if (ari == "CLOSECLASS") { actWin.closeclass = ar[++i]; continue; }
            if (ari == "CLOSEPIC") { actWin.closepicture = ar[++i]; continue; }
            if (ari == "CLOSEOVER") { actWin.closeover = true; continue; }
            if (ari == "CLOSEELEMENTCLASS") { actWin.closeelementclass = ar[++i]; continue; }
            if (ari == "CLOSEFONTCLASS") { actWin.closefontclass = ar[++i]; continue; }
            if (ari == "CONTENTCLASS") { actWin.contentclass = ar[++i]; continue; }
        }
    }
    owevent = (tmpevent) ? tmpevent : event;
    
    /*if ((actWin.fmouse) || (actWin.felement)) {
    if ((actWin.posx == -1) && (actWin.fixx == -1)) { actWin.posx = body.mousex; actWin.fixx = body.mousex; }
    if ((actWin.posy == -1) && (actWin.fixy == -1)) { actWin.posy = body.mousey; actWin.fixy = body.mousey; }
    }*/
    getSpace();
    if (lpopup) {
        var clw = preDiv.width;
        var clh = preDiv.height;
        if (clw > document.body.clientWidth) clw = document.body.clientWidth;
        //if (clh > document.body.clientHeight) clh = document.body.clientHeight;

        //if (!actWin.fixwidth)
            if ((actWin.width > clw) || (actWin.width == owdef_width)) { actWin.width = clw; actWin.canresize = true; }
        //if (!actWin.fixheight)
            if (actWin.height > clh) { actWin.height = clh; actWin.canresize = true; }
        if ((actWin.posx == -1) && (actWin.fixx == -1)) { actWin.posx = preDiv.left + (clw - actWin.width) / 2; }
    }
  
    actWin.onopen = replaceStr(actWin.onopen, "[LEVEL]", actWin.level);
    actWin.onclose = replaceStr(actWin.onclose, "[LEVEL]", actWin.level);
    actWin.onreturn = replaceStr(actWin.onreturn, "[LEVEL]", actWin.level);
    actWin.ongoback = replaceStr(actWin.ongoback, "[LEVEL]", actWin.level);
    actWin.onstayup = replaceStr(actWin.onstayup, "[LEVEL]", actWin.level);
    actWin.onisback = replaceStr(actWin.onisback, "[LEVEL]", actWin.level);
    actWin.onfirstopen = replaceStr(actWin.onfirstopen, "[LEVEL]", actWin.level);
    actWin.onlastclose = replaceStr(actWin.onlastclose, "[LEVEL]", actWin.level);

    actWin.headclass = replaceStr(actWin.headclass, "[LEVEL]", actWin.level);
    actWin.closeclass = replaceStr(actWin.closeclass, "[LEVEL]", actWin.level);
    actWin.closeelementclass = replaceStr(actWin.closeelementclass, "[LEVEL]", actWin.level);
    actWin.closefontclass = replaceStr(actWin.closefontclass, "[LEVEL]", actWin.level);
    actWin.titleclass = replaceStr(actWin.titleclass, "[LEVEL]", actWin.level);
    actWin.titlefontclass = replaceStr(actWin.titlefontclass, "[LEVEL]", actWin.level);

    actWin.headhtml = replaceStr(actWin.headhtml, "[LEVEL]", actWin.level);
    actWin.titlehtml = replaceStr(actWin.titlehtml, "[LEVEL]", actWin.level);
    return "ShowIt";
}

//overwin - generate header
function genHead() {
    var exhtml = "";
    if (actWin.headhtml != "") { exhtml += actWin.headhtml; }
    else if ((actWin.sticky) || (actWin.titlehtml != "") || (actWin.caption != "")) {
        //<div head>
        exhtml += "<div class=\"overwinhead ow" + actWin.level + "head";
        if (actWin.headclass != "") { exhtml += " " + actWin.headclass; }
        exhtml += "\"><div class=\"owrepeaterhead\">";

        if (actWin.titlehtml != "") { exhtml += actWin.titlehtml; }
        else if (actWin.sticky) {
            //..<div headR>
            exhtml += "<div class=\"right ow" + actWin.level + "headR";
            if (actWin.closeclass != "") { exhtml += " " + actWin.closeclass; }
            exhtml += "\" >";
            //....<img|a headX>
            var closejs = "closewin(" + actWin.level + ");";
            if (actWin.closepicture == "") {
                exhtml += "<a href=\"#\" onclick=\"" + closejs + "\" class=\"ow" + actWin.level + "headRa";
                owSettings.closejs = " onclick=\"" + closejs + "\"";
            } else {
                exhtml += "<img src=\"" + actWin.closepicture + "\" onclick=\"" + closejs + "\" class=\"ow" + actWin.level + "headRimg";
                owSettings.closejs = " onclick=\"" + closejs + "\"";
            }
            exhtml += " ow" + actWin.level + "headX";
            if (actWin.closeelementclass != "") { exhtml += " " + actWin.closeelementclass; }
            exhtml += "\"";
            if (actWin.closeover) { exhtml += " onmousemove=\"" + closejs + "\""; owSettings.closejs = " onmousemove=\"" + closejs + "\""; }
            exhtml += ">";

            if (actWin.closepicture == "") {
                //......<font headXfont>
                exhtml += "<font class=\"ow" + actWin.level + "headXfont";
                if (actWin.closefontclass != "") { exhtml += " " + actWin.closefontclass; }
                exhtml += "\">X</font></a>";
                //......</font headXfont></a headX>
            }
            exhtml += "</div>";
            //..</div headR>
        }
        if (actWin.caption != "") {
            //BAL OLDALI CÍM RÉSZ
            //..<div headL>
            exhtml += "<div class=\"left ow" + actWin.level + "headL";
            if (actWin.titleclass != "") { exhtml += " " + actWin.titleclass; }
            exhtml += "\" >";
            //....<font headLfont>
            exhtml += "<font class=\"ow" + actWin.level + "hearLfont";
            if (actWin.titlefontclass) { exhtml += " " + actWin.titlefontclass; }
            exhtml += "\">";
            //....</font headLfont>
            exhtml += actWin.caption + "</font>";
            //..</div headL>
            exhtml += "</div>";
        }
        //</div head>
        exhtml += "&nbsp;</div></div>";
    }
    return exhtml;
}

function setFollower(overDiv) {
    reposFollowOverwin(body.mousex,body.mousey,actWin.level);
    actWin.felement.overwinlevel = actWin.level;
    actWin.felementSets = new Object();
    actWin.felementSets.onmousemove = actWin.felement.onmousemove;
    actWin.felementSets.onmouseover = actWin.felement.onmouseover;
    actWin.felementSets.onmouseout = actWin.felement.onmouseout;
    actWin.felementSets.onclick = actWin.felement.onclick;
    actWin.felement.onmousemove = function() {
        var x = owevent.clientX, y = owevent.clientY;
        var el;
        try { el = Function.getEventTarget(owevent); } catch (ex) { el = getEventTarget(owevent); }
        while ((el.parentNode) && (el.overwinlevel == undefined)) { el = el.parentNode; }
        var level = el.overwinlevel;
        if (!posOnFollowElement(x, y, level)) { closefunc(event); }
        else { reposFollowOverwin(x, y, level); }
    };
    var closefunc = function() {
        var el;
        try { el = Function.getEventTarget(owevent); } catch (ex) { el = getEventTarget(owevent); }
        while ((el.parentNode) && (el.overwinlevel == undefined)) { el = el.parentNode; }
        var level = el.overwinlevel;
        closewin(level);
    };

    actWin.felement.onmouseout = closefunc;
    actWin.felement.attachEvent("onclick",closefunc);
    actWin.felement.onmouseover = actWin.felement.onmousemove;

    actWin.felementSets.OVERmousemove = overDiv.onmousemove;
    actWin.felementSets.OVERmouseover = overDiv.onmouseover;
    actWin.felementSets.OVERmouseout = overDiv.onmouseout;
    actWin.felementSets.OVERclick = overDiv.onclick;
    overDiv.onmousemove = actWin.felement.onmousemove;
    overDiv.onmouseover = actWin.felement.onmousemove;
    overDiv.onmouseout = actWin.felement.onmousemove;
    overDiv.attachEvent("onclick",actWin.felement.onmousemove);
}
function posOnFollowElement(x, y, level) {
    if ((openwins[level]) && (openwins[level].felement)) {
        var fel=openwins[level].felement;
        var felpos = findPos(fel);
        x -= felpos.left;
        y -= felpos.top;
        if ((x < 0) || (y < 0)) return false;
        if ((x > fel.offsetWidth) && (fel.offsetWidth > 0)) return false;
        if ((x > fel.clientWidth) && (fel.offsetWidth <= 0)) return false;
        if ((y > fel.offsetHeight) && (fel.offsetHeight > 0)) return false;
        if ((y > fel.clientHeight) && (fel.offsetHeight <= 0)) return false;
    }
    return true;
}
function reposFollowOverwin(x, y, level) {
    if (openwins[level]) {
        var over = document.getElementById("ow" + level);
        var vpos = "right";
        var hpos = "below";
        if ((over) && (vpos = openwins[level].vmousepos) && (hpos = openwins[level].hmousepos)) {
            var displaymode = over.style.display;
            over.style.display = "";
            var divw = over.offsetWidth, divh = over.offsetHeight;
            if (divw == 0) divw = over.clientWidth;
            if (divh == 0) divh = over.clientHeight;
            over.style.display = displaymode;
            var mposx, mposy;

            if (vpos == "left") { mposx = x - divw - mousespace; }
            else if (vpos == "right") { mposx = x + mousespace; }
            else { mposx = x - divw / 2; }
            if (hpos == "above") { mposy = y - divh - mousespace; }
            else if (hpos == "below") { mposy = y + mousespace; }
            else { mposy = y - divh/2; }

            var docw = document.documentElement.clientWidth;
            var doch = document.documentElement.clientHeight;

            if (mposx <= 0) { over.style.left = 0; }
            else if (docw - divw >= mposx) { over.style.left = mposx; }
            else { over.style.left = docw - divw; }
            if (mposy <= 0) { over.style.top = 0; }
            else if (doch - divh >= mposy) { over.style.top = mposy; }
            else { over.style.top = doch - divh; }
            openwins[level].left = mposx;
            openwins[level].top = mposy;
            openwins[level].width = divw;
            openwins[level].height = divh;
            openwins[level].right = openwins[level].left + divw;
            openwins[level].bottom = openwins[level].top + divh;
            openwins[level].mposx = mposx;
            openwins[level].mposy = mposy;
        }
    }
}
function resetFollowElementEvents(level) {
    if ((openwins[level]) && (openwins[level].felement)) {
        var fel = openwins[level].felement;
        var felEvs=openwins[level].felementSets;
        if (felEvs) {
            fel.onmousemove=felEvs.onmousemove;
            fel.onmouseover = felEvs.onmouseover;
            fel.onmouseout = felEvs.onmouseout;
            fel.onclick = felEvs.onclick;
        }
        var overDiv = document.getElementById("ow" + level);
        if (overDiv) {
            overDiv.onmousemove = felEvs.OVERmousemove;
            overDiv.onmouseover = felEvs.OVERmouseover;
            overDiv.onmouseout = felEvs.OVERmouseout;
            overDiv.onclick = felEvs.OVERclick;
        }
    }
}
function overwin_ACpos(tInfoHtml, tPopupid, tCaptionid, tCaption, tWidthid, tWidth) {
    //felülírható AC_kódszáminfó
    if (tWidthid) {
        overwin(tInfoHtml, tPopupid, tCaptionid, tCaption, tWidthid, tWidth);
    }
    else {
        overwin(tInfoHtml, tPopupid, tCaptionid, tCaption);
    }
}
//overwin opener like overlib...   overwin({ headcss: "overhead", center: true });
function overwin() {
    if (getArgs(arguments) == "NoShow") { return false; }
    var headhtml = genHead();
    var lHeight = -1;
    if (actWin.height != -1)
        lHeight = actWin.height;
    else if (owdef_height != -1)
        lHeight = owdef_height;
    var jdiv, lHeightStr = "";
    if (lHeight != -1) { lHeightStr = " height:" + lHeight + "px;"; }
    headhtml += "<div class=\"overwincontent ow" + actWin.level + "content " + actWin.contentclass + "\" ";
    headhtml += "style=\"clear:both;" + lHeightStr + "\">";
    headhtml += "<div class=\"owscrollcontent\"></div></div>";
    //headhtml += "<div class=\"owscrollcontent\">" + actWin.html + "</div></div>";

    if ((getMaxWinLevel() < 0) && (actWin.onfirstopen != "")) { eval(actWin.onfirstopen); }

    var innerHtml, lLevel, divWin = getObjById("ow" + actWin.level), scrollContent;
    if (divWin != null) { var dest = document.body.removeChild(divWin); }
    divWin = document.createElement("div");
    try {
        headhtml = headhtml.replace(owSettings.closejs, "");
        jdiv = jQuery(divWin);
        jQuery(headhtml).appendTo(jdiv);
        lLevel = parseInt(actWin.level);
        jdiv.children(":first").children(":first").children(":first").children(":first").click(function() { closewin(lLevel); });
        if (actWin.Element) {
            if (jQuery.isArray(actWin.Element)) {
                for (i = 0; i < actWin.Element.length; i++) { jdiv.children(":last").children(":last").append(actWin.Element[i]); }
            }
            else { jdiv.children(":last").children(":last").append(actWin.Element); }
        }
        actWin.closeElement = jdiv.children(":first").children(":first").children(":first").children(":first")[0];
        if (actWin.html) {
            scrollContent = jdiv.find(".owscrollcontent");
            scrollContent[0].innerHTML = actWin.html;
        }
        
    } catch (ex) {
        divWin.innerHTML = headhtml; 
    }
    divWin.id = "ow" + actWin.level;
    divWin.className = "overwin";
    if (actWin.owclass) divWin.className+= " " + actWin.owclass;
    if (!actWin.sticky) divWin.className+= " overwinfloat";  // onmouseover alapú doboz szegéllyel formázott lesz (CSS)
    //---------
    // HTMLElement
    if (actWin.HTMLElement) {
        var ii;
        if (0 in actWin.HTMLElement) {
            for (ii = 0; ii < actWin.HTMLElement.length; ii++) {
                divWin.children[1].children[0].appendChild(actWin.HTMLElement[ii]);
            }
        }
        else {
            divWin.children[1].children[0].appendChild(actWin.HTMLElement);
        }
        actWin.HTMLElement = null;
    }
    //---------

    document.body.appendChild(divWin);
    openwins[actWin.level] = actWin;
    divWin.style.display = "none";
    divWin = setAfter(divWin);
    if (actWin.felement) { setFollower(divWin); }
    divWin.overwinlevel = actWin.level;
    if (owevent && actWin.felement) {
        reposFollowOverwin(owevent.clientX, owevent.clientY, actWin.level);
    }

    if (actWin.onopen != "") {
        eval(actWin.onopen);
    }
    if (actWin.level == getMaxWinLevel()) {
        //ha legfelülre nyitottunk új ablakot, akkor meghívjuk a második ablakra az ongoback-et.
        //elég csak akkor hívni, ha legfelülre nyitunk, mert ha pl. 7. a legfelső szint, és most 6.-at nyitunk, akkor az 5.-nek már a 7. nyitásakor meghívtuk a metódusát
        var secondwinlevel = actWin.level - 1;
        while ((secondwinlevel > 0) && (!openwins[secondwinlevel])) secondwinlevel--;
        var secondwin = openwins[secondwinlevel];
        if ((secondwin) && (secondwin.ongoback != "")) { eval(secondwin.ongoback); }
        if ((secondwin)&&((secondwin.felement) || (secondwin.fmouse))) {
            closewin(secondwinlevel);
        }
    } else {
        //ha nem legfelülre nyitottak minket:
        if (actWin.onisback != "") { eval(actWin.onisback); }
    }

    divWin.style.display = "";
    refreshOutlines();
    if ((!actWin.fixheight) && (!actWin.fixwidth)) resizeOW(actWin.level);
    else {
        if (actWin.fixy == -1) divWin.style.top = preDiv.top + Math.floor((preDiv.height - divWin.clientHeight) / 2) + "px";
        if (actWin.fixx == -1) divWin.style.left = preDiv.left + Math.floor((preDiv.width - divWin.clientWidth) / 2) + "px";
    }
    actWin.element = divWin;
    return actWin;
}

//overwin settings after creation
/*
Firefox alatt hibás top: ,left: ,width:   (POSX,POSY,WIDTH,)
*/
function setAfter(divWin) {
    var canfixed = false;
    //FIXX, FIXY - ne használjuk!
    if (actWin.fixx != -1) { divWin.style.left = actWin.fixx; canfixed = true; }
    else if (!actWin.fmouse) {
        if (owdef_fixx != -1) { divWin.style.left = owdef_fixx; canfixed = true; }
        else { divWin.style.left = (document.documentElement.clientWidth - divWin.clientWidth) / 2; }
    }
    if (actWin.fixy != -1) { divWin.style.top = actWin.fixy; canfixed = true; }
    else if ((!actWin.fmouse) && (owdef_fixy != -1)) { divWin.style.top = owdef_fixy; canfixed = true; }
    //POSX, POSY
    if (actWin.posx != -1) {try { divWin.style.left = actWin.posx; } catch (e) { } canfixed = false; }
    else if ((!actWin.fmouse) && (!canfixed)) {
        if (owdef_posx != -1) { divWin.style.left = owdef_posx; canfixed = false; }
        else { divWin.style.left = (document.documentElement.clientWidth - divWin.clientWidth) / 2; }
    }
    if (actWin.posy != -1) { divWin.style.top = actWin.posy; canfixed = false; }
    else if ((!actWin.fmouse) && (!canfixed) && (owdef_posy != -1)) { divWin.style.top = owdef_posy; }
    divWin.style.position = "absolute";

    if (actWin.width != -1) { divWin.style.width = actWin.width; }
    else if (owdef_width != -1) { divWin.style.width = owdef_width; }

    var displaymode = divWin.style.display;
    divWin.style.display = "";
    var divw = divWin.offsetWidth;
    var divh = divWin.offsetHeight;
    if (divw ==0) divw=divWin.clientWidth;
    if (divh == 0) divh = divWin.clientHeight;

    if (divw > preDiv.width) divWin.style.width = preDiv.width;
    if (divh > preDiv.height) {
        //var divch0w = divWin.children[0].offsetWidth;
        var divch0h = divWin.children[0].offsetHeight;
        //if (divch0w == 0) divch0w = divWin.children[0].clientWidth;
        if (divch0h == 0) divch0h = divWin.children[0].clientHeight;

        if (divWin.children[1]) {
            if (preDiv.height - divch0h > 0) divWin.children[1].style.height = (preDiv.height - divch0h) + "px";
            else divWin.children[1].style.height = "0px";
        } else {
            divWin.children[0].style.height = preDiv.height;
        }
    }
    divWin.style.display = displaymode;

    divWin.style.zIndex = owSettings.get_zIndex() + 3 + actWin.level * 10;
    //fmousefunc();
    return divWin;
}

function getObjById(id) {
    if (document.getElementById)
        var returnVar = document.getElementById(id);
    else if (document.all)  
        var returnVar = document.all[id];
    else if (document.layers)
        var returnVar = document.layers[id];
    return returnVar;
}

