/*
问题:
1、txt的问题变化 键盘处理流程
*/
Namespace.register("U.D.Txt"); //txt命名空间

//#region 初始化命名空间

//打开txt
U.D.Txt.Txt = function (UDE, UGE) {
    var i, _UDTD, _UDSD, _UDCD, _UDND, _UDKD,
        _USN = UDE["UserallDirectoryName"],
        _UIF = US.userInfo,
        _UDOD = $("#UD_SYTX"),
        _UDAD = _UDOD.childg(),
         _UGE = US.Disk.Disks[_userid],
         _UDID = UDE.UserDirectoryParentID || (UGE ? UGE[1][1] : ""),
         _userid = UDE.UserId || (_UGE ? _UGE[1][0].UserId : _UIF.UserId),
          _UIMG = UDE.UserThumbnailImageHead || (_UGE ? _UGE[1][0].UserThumbnailImageHead : _UIF.UserThumbnailImageHead);
    if ((_UDCD = $("#UT_" + (UDE.UserDirectoryID || UDE.id)))[0]) { _UDCD.Center(); return _UDCD[0]; }
    else { //生成值
        _UDTD = $(_UDAD[0]).clone(true); _UDSD = $(_UDAD[1]).clone(true);
        _UDCD = $("div", _UDTD);
        _UDCD[2].innerHTML = UDE.UserName || UDE.UserNickName || "请登录";
        _UDCD[3].innerHTML = _UGE ? "所有云文件" + _UGE[1][0]["FilesCount"] : "";
        $($("img", _UDCD[1])[0] || $$("img", {}, _UDCD[1])).addAttrArray({ "onerror": U.M.ImgError, "src": U.M.GetImgU(_UIMG), "onclick": [[U.M.StopBubble], [U.D.DT.YYDK, ["Disk", { "userid": _userid, "directoryid": US.FG}]]] });
        (_USN) && ($("input", _UDTD)[0].value = _USN.substr(0, (_UL = _USN.lastIndexOf(".")) > 0 ? _UL : _USN.length)); for (i = 0; i < 2; i++) { (_UDCD = $(i ? _UDSD : _UDTD).find(i ? "textarea" : "input")[0]).defaultValue = _UDCD.value; }
        _UDCD = U.UI.Form({ id: "UT_" + (UDE.UserDirectoryID || UDE.id),
            close: { onclick: U.M.apply(this, [[U.D.Txt.TxtClose, [UDE, _userid, _UDID]]]) },
            resize: U.D.Txt.TxtSize, style: { width: "800px", height: "500px" },
            content: _UDSD[0], title: _UDTD, bst: { style: { overflow: "hidden"} }
        });
        //加载数据
        _UDND = U.D.Txt.TxtCreate(UDE, _userid, _UDID, _UDCD);
        (_UDKD = _UDSD.find("select")).Aattr({ onchange: [[U.D.Txt.TxtZT, [_UDKD[0], _UDND[0]]]] }, 0);
        U.OU.CreateWordSize(_UDKD[0]);
        U.D.E.codeDetect({ cb: U.M.apply(null, [[U.D.Txt.CZJP, [_UDND[1]]]]),
            el: [_UDSD[0], $("input", _UDTD)[0]]
        });
        return _UDCD.be;
    }
}

//读取txt
U.D.Txt.ReadTxt = function (UDE, UDOD) {
    UDOD = $(UDOD);
    var _UDID = UDOD.find("input")[0],
    _UDTD = UDOD.find("textarea")[0];
    _UDTD.focus();
    if (UDE && UDE.UserDirectoryID) {
        if (UDE.UsOffice != null) {
            _UDTD.value = UDE.UsOffice;
        }
        else {
            if (UDE.UserFilesServerName) {
                U.A.Request(US.Auth, ["OpenTxtFile", UDE.UserFilesServerName], U.D.Txt.AsynReadTxt, [[_UDTD, true], _UDTD, UDE]);
            }
            else {
                U.A.Request(US.Auth, ["GetFileContent", UDE.UserDirectoryID], U.D.Txt.AsynReadTxt, [[_UDTD, true], _UDTD, UDE]);
            }
        }
    }
}

//读取文件异步
U.D.Txt.AsynReadTxt = function (r) {
    var context = r.context,
    _UDOD = context[1],
    _UDE = context[2];
    _UDOD.value = _UDE.UsOffice = r = r.value.UsOffice || "";
}

//#endregion

//#region 关闭窗体

//关闭txt
U.D.Txt.TxtClose = function (UDE, userid, UDID, UDOD) {
    UDOD = $(UDOD);
    var _UCB,
    _userid = US.userInfo.userid,
    _UDTD = UDOD.find("textarea")[0],
    _UDID = UDOD.find("input")[0],
    _UFN = _UDID.value,
    _UTH = _UDTD.value,
    _UTF = (!UDE || !UDE.UserDirectoryID),
    _UDN = UDE.UserallDirectoryName.replace("." + UDE.UserDirectoryExtendType, "");
    if (_userid && (!UDE || _userid == UDE.UserId)) {
        if (UDE && UDE.UserDirectoryID && _UDN != _UFN && U.MS.ZWFileName.test(_UFN)) {
            U.Dk.RE.MFN(UDE, _UFN, null, US.userInfo.userid);
        } //保存文件同时修改文件名
        else if ((_UFN != _UDID.defaultValue || _UTH != _UDTD.defaultValue) && (_UFN != _UDN || _UTH != UDE.UsOffice)) { //内容更变处理
            _UCB = _UTF ? U.M.apply(null, [[U.D.Txt.TxtCloseCT, [UDOD[0], _UDTD, _UDID]]]) : U.M.apply(null, [[U.D.CloseWindow, [UDOD[0]]]]); //设置回调
            U.UI.Confirm("是否保存内容", [U.M.apply(null, [[U.D.Txt.BCTxt, [UDE, userid, UDID, UDOD[0], _UCB, true]]])], [_UCB]); return false;
        }
    }
    (_UTF) && (U.D.Txt.TxtCloseCT(UDOD[0], _UDTD, _UDID)); //关闭窗体使用
}

//关闭窗体
U.D.Txt.TxtCloseCT = function (UDOD, UDTD, UDID) {
    UDTD.value = "点击编辑内容..."; UDID.value = "未命名文档(点击编辑)..."; U.D.CloseWindow(UDOD);
}

//#endregion

//#region 文件新建保存

//保存异步
U.D.Txt.AsynBCTxt = function (UTH, UDOD, UCE, URE) {
    if (UCE && URE) {
        U.Dk.LE.USOS(UCE[1].UserDirectoryID, UTH);
        $(UDOD).find("input")[0].value = UCE[1].UserallDirectoryName;
    }
}

//txt新建
U.D.Txt.XJTxt = function (UDE, userid, UDID, UDOD) {
    var _UDID, _UDTD, _UDID, _UDOD;
    if (UDOD && (UDOD = $(UDOD)) && UDE.UserDirectoryID || ((_UDTD = _UDOD.find("textarea")[0]) && (_UDID = _UDOD.find("input")[0]) && _UDID.value && _UDTD.value && _UDID.defaultValue != _UDID.value && _UDTD.defaultValue != _UDTD.value)) { //提示保存文件
        U.UI.Confirm("是否保存内容", [U.D.Txt.BCTxt, [UDE, userid, UDID, UDOD, U.M.apply(this, [[U.D.Txt.AsynXJTxt, [userid, UDID, UDOD, UDE]]]), true]]);
    }
    else {
        _UDTD = $(UDOD).childg(0)[1];

        _UDTD = $(_UDTD).childg(0, 0);
        _UDID = Guid.newGuid(); $("#UT_" + (UDE.UserDirectoryID || UDE.id))[0].ID = "UT_" + _UDID; U.D.Txt.TxtCreate({ UserallDirectoryName: "", id: _UDID }, userid, UDID, { body: _UDTD[0], be: UDOD, content: UDOD.Child()[0] });
    }
}

//新建异步
U.D.Txt.AsynXJTxt = function (userid, UDID, UDOD, UDE, UTF) {
    if (UTF !== false) {
        var _UDOD = $(UDOD),
        _UDID = _UDOD.find("input")[0],
        _UDTD = _UDOD.find("textarea")[0];
        _UDID.value = _UDID.defaultValue;
        _UDTD.value = _UDTD.defaultValue;
        U.D.Txt.XJTxt(UDE);
    }
}

//txt保存
U.D.Txt.BCTxt = function (UDE, userid, UDID, UDOD, UCB, UTF) {
    var _UTF = (!UDE || !UDE.UserDirectoryID),
    _UDOD = $(UDOD),
     _UDTD = _UDOD.find("textarea")[0],
     _UDID = _UDOD.find("input")[0],
     _UHT = _UDTD.value,
     _UIN = _UDID.value,
     _userid = US.userInfo.userid;
    if (!U.U.L.isLogin(3) && (_UTF || UDE.UserId == _userid)) { //登录保存使用
        if (!U.MS.ZWFileName.test(_UIN) && _UDID.defaultValue != _UIN) {
            U.Alert("文件名不符合");
            _UDID.focus(); _UDID.select();
        } //文件名输入区域
        else if (!UTF || (_UHT && _UIN && (_UDID.defaultValue != _UIN || _UDTD.defaultValue != _UHT))) { //内容保存
            (_UIN == _UDID.defaultValue) && (_UIN = "");
            (_UHT == _UDID.defaultValue) && (_UHT = ""); //     (!_UTF) && (U.Dk.DiskOperatingSwitch(userid));
            U.Ut.AddObj(UDE, U.Dk.LE.USOS(UDE.UserDirectoryID ? UDE : UDE.id, _UHT, "txt", [[U.D.Txt.AsynBCTxt, [_UHT, _UDOD]], [UCB]], null, UDID, _UIN)); UDOD.id = "UT_" + UDE.UserDirectoryID; return false;
        }
    }
    else {
        U.Alert("他人文件拒绝访问");
    }
    (UCB) && (UCB(false)); return true;
}

//#endregion

//#region 附加功能处理

//键盘特殊操作
U.D.Txt.CZJP = function (UDOD, UDE, UDTD) {
    if (UDE == "save") { UDOD[1].onclick(); } //保存设置
}

//txt字体变化
U.D.Txt.TxtZT = function (UDOD, UDTD) {
    var _UST = UDTD.value,
    _UDND = document.createTextNode(" ");
    $(UDTD).addAttrArray({ style: { fontSize: UDOD.value + "px"} }).append(_UDND);
    $(_UDND).remove();
}

//txt创建处理
U.D.Txt.TxtCreate = function (UDE, userid, UDID, UCE) {
    var _USE = [U.D.Txt.TxtSize(null, null, UCE.body),
    U.D.Txt.TxtEvent(UDE, userid, UDID, UCE.content)];
    U.D.Txt.ReadTxt(UDE, UCE.be); return _USE;
}

//txt大小处理
U.D.Txt.TxtSize = function (UDOD, UDTD, UDSD) {
    var _UDOD = $(UDSD).childg(0)[0];
    _UDOD = $(_UDOD).childg(0)[1];
    $(_UDOD).css({ "height": UDSD.offsetHeight - 51 + "px", "width": UDSD.offsetWidth - 20 + "px" });
    return _UDOD;
}

//txt事件赋值
U.D.Txt.TxtEvent = function (UDE, userid, UDID, UDOD) {
    var i, _UDMD, _UDAD = $(UDOD).Child(),
    _UDCD = $(_UDAD[0]).childg();
    $("&*", _UDCD).addAttrArray({ "unselectable": "on" });
    for (i = 0; i < _UDCD.length - 1; i++) {//新建保存
        _UDCD.addAttrArray({ "onmousedown": U.M.StopBubble, "onclick": [[i ? U.D.Txt.BCTxt : U.D.Txt.XJTxt, [UDE, userid, UDID, $(UDOD).Parent(3)]]] }, i);
    }
    return _UDCD;
}