//#region 窗体放大缩小

Namespace.register("U.D")

// 窗体全局变量
U.D.isTop = false;
U.D._closes = [];
U.D._index = [];


U.D.closefun = function (UDOD) {
    U.D._closes.splice(U.D._closes.indexOf(UDOD), 1);
};

/**
* 放大窗体
*
* @param  {number} 数字1
* @param  {number} 数字2
* @param  {boolean} 返回数字1是否大于数字2
* @param  {number} 数字2
* @param  {boolean} 返回数字1是否大于数字2
*/
U.D.Windowmaximize = function (UDOD, UDTD, UCB, UDOM, UST) {
    var _USE, _UCE, _UTE, _UTF = true,
    _UDTD = $(UDOD),
    _UST = UDOD.style,
    _UED = U.M.GetPDWH(UDOD),
    _UW = US.Width,
    _UH = US.Height;
    UDTD = UDTD || (event && event.srcElement); //U.M.GetElementInfo(UDOD)
    if (_UED["OW"] >= _UW && _UED["OH"] >= _UH) {
        _UCE = { "title": "全屏", "onmousedown": UST ? (UST.onmousedown || (UDOM ? UDOM.onmousedown : null)) : null, "style": UST ? UST["style"] || { "width": "80%", "height": "80%", "left": "10%", "top": "10%"} : { "width": "80%", "height": "80%", "left": "10%", "top": "10%"} };
        _UTF = false;
    }
    else {
        _UTE = UDOD["style"];
        _USE = { "onmousedown": UDOM ? UDOM.onmousedown : null,
            "style": { "cssText": _UTE["cssText"] + ";", "width": _UTE.width, "height": _UTE.height, "top": _UTE.top, "left": _UTE.left, "display": "block" }, "width": _UED["CW"], "height": _UED["CH"]
        };
        _UCE = { "title": "缩小",
            "onmousedown": UDOM ? (U.M.apply(UDOM, [[UDOM.onmousedown], [U.D.DragElement, [UDOD, UDTD, UCB, UDOM, _USE]]])) : null,
            "style": { "top": "0px", "left": "0px", "width": (_UW - _UED["PD"][1] - _UED["PD"][3] - _UED["BD"][1] - _UED["BD"][3]) + "px",
                "height": (_UH - _UED["PD"][0] - _UED["PD"][2] - _UED["BD"][0] - _UED["BD"][2]) + "px"
            }
        }; //_UED["PXT"] + _UED["PXL"] +
    }
    (UDOM) && (UDOM.onmousedown = _UCE.onmousedown);
    (UDTD) && ($(UDTD).addAttrArray({ "onclick": [[U.D.Windowmaximize, [UDOD, UDTD, UCB, UDOM, _USE]]], "title": _UCE["title"] })); //拖动  //全屏或者恢复调用
    UDOD.style.display = "block";
    $(UDOD).animate(_UCE.style, 150, function () {
        var _UED = U.M.GetPDWH(UDOD); U.D.withf(UCB, [_UED["CW"], UDOD["CH"], _UTF]);
    }); //窗体大小设置 //回调大小设置
}

//最大化移动窗体
/**
* 放大窗体
*
* @param  {number} 数字1
* @param  {number} 数字2
* @param  {boolean} 返回数字1是否大于数字2
* @param  {number} 数字2
* @param  {boolean} 返回数字1是否大于数字2
*/
U.D.DragElement = function (UDOD, UDTD, UCB, UDOM, UST) {
    if (U.D.DragMouseDown.ST) {
        U.D.DragMouseDown.ST.set({ move: function (UTE) { //缩小使用
            var _UW = US.Width,
            _UE = U.M.GetMousep(UDOD);
            (!UST.width) && (UST.width = US.Width * 0.8);
            (!UST.height) && (UST.height = US.Height * 0.8);
            U.Ut.AddObj(UST["style"], {
                "top": "0px", "left": Math.min(Math.max((_UE["X"] - UST.width / 2), 0), (_UW - UST.width)) + "px"
            });  //设置位置大小
            U.D.Windowmaximize(UDOD, UDTD, UCB, UDOM, UST);
            (UTE && UTE.move) && (UTE.move = null);  //设置大小
        }
        });
    }
}

//窗体最小化
U.D.WindowMin = function (UDOD) {
    UDOD = $(UDOD);
    var i, _UCE, _UW = US.Width,
    _UH = US.Height,
    _UGE = UDOD.GetElementInfo();
    _UDE = { "cssText": UDOD[0].style.cssText, "display": "none" };
    UDOD.animate({ "cssText": "overflow:hidden;left:0px;top:" + ((_UH - _UGE["OH"] + 100) / 2) + "px;width:" + (Math.min(_UGE["OW"] / 3, 100)) + "px;height:" + (Math.min(_UGE["OH"] / 3, 100)) + "px;opacity:0.8" }, 200, U.M.apply(UDOD, [[UDOD.css, ["cssText", _UDE.cssText]], [UDOD.css, ["display", _UDE.display]]]));
    (parent.U.D.G) && (setTimeout(function () { parent.U.D.G.UrlWrite([], ""); }, 0));
}

//关闭窗口
U.D.CloseWindow = function (UDOD, UTF) {
    var _UDTD = $(UDOD);
    (_UDTD.css("display") != "none") && (_UDTD.fadeIn(150, UTF == "remove" ? function () {
        _UDTD.remove(); _UDTD = null;
    } : "")); //移除
    (parent.U.D.G && UTF !== true) && (parent.U.D.G.UrlWrite([], ""));
    (U.D && U.D.Tb && U.D.Tb.taskbars) && (U.D.Tb.taskbars.close(UDOD)); //异步url重写
    (U.D._closes.indexOf(UDOD) == -1) && (U.D._closes.push(UDOD));
    setTimeout(U.M.apply(this, [[U.D.closefun, [UDOD]]]), 0); //删除处理区
}

//窗口居中
U.D.PopupWindow = function (UDOD, UCB) {
    var i, _UL, _UT, _UW, _UH,
    _UTF = $(UDOD).css("display") == "none",
    _UDE = $(UDOD).addAttrArray({ "style": { "display": "block"} })[0],
    _UDPD = U.M.TOSP(UDOD), _UW = _UDPD.offsetWidth || US.Width,
    _UH = _UDPD.offsetHeight || US.Height;
    _UL = (_UW - _UDE["offsetWidth"]) / 2 + _UDPD["scrollLeft"];
    _UT = (_UH - _UDE["offsetHeight"]) / 2 + _UDPD["scrollTop"];
    if (U.D._index[2] && U.D._index[2] !== UDOD && Math.floor(_UL) == U.D._index[2].offsetLeft && Math.ceil(_UT) == U.D._index[2].offsetTop) { _UL += 20; _UT += 20; }
    U.D._index[2] = UDOD;
    U.D.SetDTop($(UDOD).addAttrArray({ "style": { "cssText": "left:" + _UL + "px;top:" + _UT + "px;z-index:" + ((parent.US.ZV++) + 1)} })[0]);
    (U.Ut.isFunction(UCB)) && (UCB());
    (_UTF && UDOD.onresize) && (UDOD.onresize()); //定位
}

//窗体置顶
U.D.SetDTop = function (UDOD, UTF) {
    (U.Ut.isEvent(UDOD)) && (UDOD = null);
    UDOD = UDOD || U.D.GetEE();
    var i, _UDPD,
     _UDE = U.D.GetPD(UDOD);
    if (UTF !== true) {
        setTimeout(U.M.apply(null, [[U.D.SetDTop, [UDOD || _UDE[0], true]]]), 0);
    }
    else {
        if (_UDE && _UDE.length) {
            for (i = 0; i < _UDE.length; i++) {
                if (((_UDPD = $(_UDE[i]).Parent()) && (_UDPD == document.body || _UDPD.id == "usestudio-server" || _UDPD.id == "UD_SY")) && $(_UDE[i]).attr("__top__") != "false" && (!UTF == true || U.D._closes.indexOf(_UDE[i]) == -1)) { //置顶判断
                    $(_UDE[i]).addAttrArray({ "style": { "cssText": "z-index:" + (((US || parent.US).ZV++) + 1) + ";display:block"} })
                }
            };
        }
        return parent.US.ZV;
    }
}

//获取置顶元素
U.D.GetEE = function () {
    var _UE = window.event;
    if (!_UE) { return document.activeElement; }
    return _UE.srcElement;
}

//获取顶层窗体
U.D.GetPD = function (UDOD) {
    var i, _UCE = [],
    _UDTD = UDOD,
    _UDBD = document.body,
    _UDSD = $("#UD_SY")[0] || $("#usestudio-server")[0] || _UDBD;
    if (_UDSD) {
        while ((_UDTD = U.M.TOSP(_UDTD, true, "absolute")) && (_UDTD && (_UDTD != _UDSD && _UDTD != _UDBD))) {
            _UCE.push(_UDTD);
            _UDTD = _UDTD.parentNode;
        }
        return _UCE; //.slice(0, -1);
    }
}

//桌面窗体自动分层次处理
U.D.TopForm = function (UCB, UTF, UDOD) {
    UDOD = UDOD || document.body;
    var _UCF = U.M.apply(null, [[U.D.TopForm._UFN, [UCB, UTF]], [U.D.displayM]]);
    $(UDOD).bind({ mousedown: _UCF });
}

//主处理分层次系统
U.D.TopForm._UFN = function (UCB, UTF) { //处理函数
    //页面置顶处理
    //  try { this.focus(); } catch (e) { }
    if (U.D.isTop) { clearTimeout(U.D.isTop); }
    else {
        if (UTF && !U.D.isTop) {
            U.D.isTop = setTimeout(function () {
                (UCB || top.U.D.SetDTop)(null, true);
                U.D.isTop = false;
            }, 0); return;
        }
        else if (!U.D.isTop) {
            (UCB || top.U.D.SetDTop)(null, true);
            (event && event.type == "mousedown") && (U.D.isTop = true);
        }
        else if (U.D.isTop == true) { U.D.isTop = false; }
    }
    U.D.isTop = setTimeout(function () {
        U.D.isTop = false;
    }, 0);
}

//页面右键菜单取消
U.D.displayM = function () {

}

//#endregion