
Namespace.register("U.CD.OU"); //注册引用1473主项目的js,添加交友等功能。
//注意事项
//1、两边的htmlbody元素定义需要一致
//2、需要重载主项目的window.onload以及以下的几个函数。重载方法在下面有记载。


//获取1473主项目body中的所有内容，追加到本项目末尾，以调用硬盘，好友等功能。
U.CD.OU.Get1473 = function () {
    //首先创建一个名为US_M_IF的iframe
    $$("iframe", { "id": "US_M_IF", "name": "US_M_IF", "style": { "cssText": "width:0px;height:0px;"} }, document.body);
    //再创建一个名为US_M_DIV的div用于复制节点
    var m = $$("div", { "id": "US_M_DIV", "style": { "cssText": "width:0px; height:100%; position:absolute; top:0px; left:0px;  overflow:hidden;"} }, document.body);
    var i = $("#US_M_IF")[0]; i.src = "http://www.1473.cn";
    U.MD.IframeLoad(i, [[U.CD.OU.Get1473Asyn, ([i, m])]]);
}
//获取到1473主项目后回调处理
U.CD.OU.Get1473Asyn = function (f, m) {
    //循环克隆添加1473主项目的节点到编程平台,把html元素对应拷贝到编程平台,这种方法不可行
    //采用innerHTML的方式才能移除掉iframe中的信息。否则，事件会失效。
    //var m = $("#US_M_IF")[0];
    m.innerHTML = f.contentWindow.document.body.innerHTML;
    document.body.removeChild(f); //移除了此iframe后所有事件丢失了。
    U.CD.OU.RemoveJS(m); //移除掉很多不需要的js和注释
    U.D.FLoad(); //重新执行UD.js中的window.onload。
    U.CD.OU.Dis1473Ele(); //把需要显示的元素加载到body中
    //添加本项目window.resize事件到主项目window.resize,window.onload和window.onresize是同名函数。只能这样处理
    //但1473主项目的window.onreisze函数脱离环境运行不成功，等会再研究
    U.M.AddEvent("resize", window, U.CD.LO.SetWH);
}
U.CD.OU.RemoveJS = function (m) {
    //移除掉广告js，因为本项目中已经有了，移除时只能从大到小循环
    var d = m.childNodes, i;
    for (i = d.length - 1; i > 0; i--) {
        if (d[i].tagName == "SCRIPT" || d[i].tagName == "!") {
            //如果是QQ登录Web登录，则移动到body末尾。这种方式出错，改为Html直接引用
            //if (d[i].src.indexOf("U.U.OT.js") > -1) document.body.appendChild(d[i]);
            m.removeChild(d[i]);
        }
    }
}
//主项目的静态元素需要显示在子项目中的，全部提到body层
U.CD.OU.Dis1473Ele = function () {
    //此处还可以把其他不可见，但本项目需要的元素移动上来。
    document.body.appendChild($("#UU_UR_Win")[0]);
    document.body.appendChild($("#addnewFriendsGroup")[0]); //追加添加好友的函数
    document.body.appendChild($("#UU_N_UProDiv")[0]); //个人信息面板
    document.body.appendChild($("#UseStudioU_MP")[0]); //音乐面板
    //document.body.appendChild($("#UseStudioUserDiskDiv")[0]);//硬盘面板
    document.body.appendChild($("#UF_UP_UserBoard")[0]); //好友面板
    document.body.appendChild($("#UDK_FUP")[0]); //flash上传面板
    document.body.appendChild($("#UDK_UP")[0]); //普通文件上传面板，上传区分了2个，比较特殊
    document.body.appendChild($("#UF_S_Div")[0]); //查找好友
    document.body.appendChild($("#UF_GM_FMDiv")[0]); //好友管理面板
    document.body.appendChild($("#UF_DM_AFSWindow")[0]); //添加好友面板
    document.body.appendChild($("#UU_N_CD")[0]); //添加自己的头像设置

}

//重写U.D.SetDTop，让包含编程端和1473主项目的div，不再置顶。
//框架到最顶层，已经出现的div，点击任何一个地方都可以置顶。。
//U.D.SetDTop = function (UEL) {
//    var _UE = U.M.GetEvent(); UEL = UEL || U.D.GetPD(_UE.srcElement); U.M.StopBubble(); //阻止冒泡
//    if (UEL.id == "UCD_Contain" || UEL.id == "US_M_IF") return;
//    if (UEL && U.M.GetStyle(UEL, "position") == "absolute" && UEL.tagName.toLocaleLowerCase() == "div") { UEL.style.zIndex = (top.US.ZV++); }
//}




//本项目和桌面互相切换函数,参数t为空，则切换主项目，否则，切换回本项目,以后会添加更多切换类型
U.CD.OU.CHDesk = function (t) {
    var s = $("#US_M_DIV")[0], d = $("#UCD_Contain")[0];
    if (t == "d") { (new U.Img.Animate()).LScreenSwitch(s, d, function () { U.CD.OU.CHButton("切换编程端", "c", s) }); }
    else { (new U.Img.Animate()).LScreenSwitch(d, s, function () { /*U.CD.OU.CHButton("切换到桌面","d",d);*/ }); }
    if ($("#UD_Chat")[0]) $("#UD_Chat")[0].style.display = "none"; //如果聊天框存在，让它不显示。
    if ($("#UD_ZY")[0]) $("#UD_ZY")[0].style.display = "none";
}
//向主项目添加一个切换回来的按钮,type是返回哪个界面的标示符，只有2个界面，以后可能会添加比较多。参数s是每个端具体的div
U.CD.OU.CHButton = function (n, t, s) {
    if ($("#UCD_OT_QH")[0]) return; //如果存在，则不再添加
    var a = $$("div", { "id": "UCD_OT_QH", "onclick": [[U.CD.OU.CHDesk, ([t])]] }, s);
    $$("div", { "className": "UD_NUB UCD_OT_QH_L" }, a);
    $$("div", { "className": "UCD_OT_QH_R", "innerHTML": n }, a);
}

//调用1473登录窗口,如果此元素是动态的，会直接加到body。如果是静态的，则需要把元素移动到body层。
U.CD.OU.Login = function () {
    U.D.DT.DLTC(3);
}

//把1473主项目异步登录函数赋予这个全局变量，然后就可以重写主项目的异步登录函数，让它同时执行1473登录和本项目登录。
U.CD.OU.LoginAsyn = U.U.L.AsynUlL;
U.U.L.AsynUlL = function (request, TF) {
    U.CD.OU.LoginAsyn(request, TF); //执行1473登录回调。
    U.CD.U.LoginAsyn(request); //执行本项目登录，由于会顺次执行，所以需要修改一些信息
}

//执行用户退出操作
U.CD.OU.LogoutAsyn = U.U.L.TCUL;
U.U.L.TCUL = function () {
    U.CD.OU.LogoutAsyn(); //主项目退出
    U.CD.U.Logout(); //退出编程端
}

//弹出个人信息面板
U.CD.OU.ProDiv = function () {
    U.D.DT.DKGEZL();
    //    U.U.UPD();
    //    U.D.SetDTop($("#UU_N_UProDiv")[0]); //置于顶层
}


//异步获取新增用户,由于主项目模版只有9位，所以新做一个
U.CD.OU.GNU = function () {
    U.A.Request("UseStudioManage.NetAdditionData", (["27"]), U.CD.OU.GNUAsyn, ([""]));
}
//新增用户异步处理。
U.CD.OU.GNUAsyn = function (r) {
    r = r.value;
    if (r) {
        var _UDFD = document.createDocumentFragment();
        _UDFD = $("#UCD_L_NU")[0]; _UDFD.innerHTML = "";
        var l = r.length > 39 ? 39 : r.length;
        for (var i = 0; i < l; i++) {
            //$$("img", { "src": U.M.GetImgU(r[i].UserThumbnailImageHead), "title": r[i].UserNickName, "onerror": U.M.ImgError }, _UDFD);
            $$("img", { "src": U.M.GetImgU(r[i].UserThumbnailImageHead), "title": r[i].UserNickName, "onerror": U.M.ImgError, "onclick": [[U.M.StopBubble], [U.U.I.POUW, ([r[i].UserID])]] }, _UDFD);
        }
    }
}

//m为主版块id，c为子版块id
U.CD.OU.Forum = function (m, c) {
    U.D.DT.YYDK("PB", ["3c779543-bc1a-4851-af22-af9ba97a5f33"]);
    //    //(_UTF == null) && (_UTF = ["http://pb.1473.cn/PublicBoards.aspx?NavigatePath=" + UAF, [["window.frames['UseStudioStudyControlDivIframe'].U.BB.Navigateonload", ([UAF || ''])]]]);
    //    //第2个参数好像没有用，按道理应该是主版块id
    //    U.M.divdoubleClick('UseStudioStudyControlDiv', '28d8089d-ee85-4f9b-b1b6-8c1d8ccff719', null, null, 'SUB28d8089d-ee85-4f9b-b1b6-8c1d8ccff719');
    //    //U.M.divdoubleClick('UseStudioStudyControlDiv', '', null, null, 'SUB3c779543-bc1a-4851-af22-af9ba97a5f33');
    //    U.D.SetDTop($("#UseStudioStudyControlDiv")[0]);
}

//调用主项目回复信息，如果用户未登录，提示用户登录
U.CD.OU.Reply = function (id) {
    if (!U.MS.Guid.test(id)) { alert("评论id应该是guid"); return; }
    U.D.CM.CKPLXS(id, "编程平台");
}


//   1、新项目引入1473需要做什么？
//
//
//  
//
//
//
//
//
//
//
//
//
//   2、跨域需要引用什么？怎么做
//
//
//
//
//
//
//
//
//
//


