//由于经常更换版本号，导致用户存储的js文件有时候找不到，导致iframe跨域访问。而用户不清楚情况，所以现在要定向名称就叫UJ.js 有思js
//每次更换版本时必须拷贝成UJ.js  中文名叫云js。

//编辑区主js文件
Namespace.register("U.CD"); //注册开发类主js，这个以后要放在主文件中。

//污染所有原生对象，以前在1473这一步被屏蔽了，此处重要！
//U.M.Setprototype(Object, U.E.E); //让所有的属性都有增删查改 包括了字符串 数组 集合 函数 所以需要改写for in循环

//全局变量.
U.MS.FileName = /^([a-zA-Z0-9\s\._-]+)$/; //匹配文件名的正则表达式。
U.MS.ZWFileName = /^[0-9a-zA-Z\u4e00-\u9fa5\._-]{1,40}\\*$/;   //匹配中文文件名的正则表达式。
//U.CD.AjaxUrl = 'http://c.1473.cn/'; //默认请求页面
//U.CD.AjaxCross = "http://c.1473.cn/CD.htm";
U.CD.AjaxUrl = 'http://c-back.1473.cn/'; //默认请求页面
U.CD.AjaxCross = "http://c-back.1473.cn/CD.htm";

U.CD.TipR = null; //光标位置。
U.CD.Loading = null; //全局Loading。
U.CD.FGuid = null; //未登录用户文件id，保证用户运行多次只生成一个.c和.exe
//!!!!!!!!!!!!!!!!!!!!!!!!注释,在d.1473.cn中，前端语言标识为USHtml,和后端是分割开的。因为界面不一样，所以是分离的。。。。。
U.CD.Langs = ["C", "PHP", "Net", "Python", "Nodejs", "Ruby", "Perl", "Lisp"]; //所有语言数组
U.CD.USLang = "C"; //由于C，PHP，HTML，需要共用一个数据，否则很多种语言很多数据库。所以在数据库根目录加一个标识以便识别
U.CD.DType = { "TW": "提问", "ZY": "作业", "JH": "精华", "CT": "控件" }; /*发布项目时选项，全局变量，和数据库对应，和C PHP有关系*/
U.CD.ExamWin = { "Content": "", "CreateDate": "2014-05-19T08:50:01.341Z", "Deep": "1", "ID": "7c23332d-6135-f385-5327-73333fadfc7c", "IsDelete": "false", "Name": "云端示例", "Type": "file" };
U.CD.BRPID = "B6DBF807-8F28-4C1C-B9D4-4A0BDAE4EA30"; //后端评论主id
//统一登录全局变量
US.LoginID = 2;

U.CD.Init = function () {


    U.CD.Loading = $("#UCD_LD")[0]; //全局loading开始
    //U.CD.Loading.innerHTML = "下载完成，开始初始化数据";
    U.CD.TipR = U.D.E.GetSelectionRange(window, $("#UCD_CT_Code_CT")[0], { "TF": "UCD_CODE", "CB": U.CD.R.Wrap }); //获取光标位置。
    //document.onclick = document.body.onmousedown = U.M.apply(this, [[U.CD.Tip.HidTip]]); //绑定body的左键
    //document.onclick = document.body.onmousedown = U.M.apply(this, [[U.D.SetDTop]]); ///赋予置于顶层的功能

    //U.M.Setprototype(Object, U.E.E); //让所有的属性都有增删查改 包括了字符串 数组 集合 函数 所以需要改写for in循环
    //本项目所有Ajax请求使用U.ACD。如果使用U.A会跳到main项目中执行，导致跨域。重要。DISK是U.Adisk。参加函数U.CD.AsynLI
    //U.CD.Loading.innerHTML = "开始跨域";

    //U.ACD = U.A; U.CD.AsynLI(); //跨域Ajax请求的解决方法//项目调用了主项目的U.A。。。会导致跨域拒绝访问。

    U.CD.CD.Init(); //初始化代码窗口。必须提前到用户自动登录以前，否则会导致跨域问题。

    //U.CD.U.LogoutPanel();//初始化用户登录按钮

    U.CD.LO.SetWH(); //由于html局限性，强制设置宽高。
    U.CD.CL.Init(U.CD.USLang); //生成左边工具栏语言条。
    //U.CD.Tip.Init(); //提示框初始化
    //用户登录后再装载最右边的面板。
    //用户登录后装载用户内容
    //U.CD.U.LUData();

    //加载1473主项目
    //U.CD.OU.Get1473();
    //U.CD.LIFA([["U_CD", U.CD.AjaxCross, "ACD"]], U.CD.JZWB);
    U.CD.GQB($("#UCD_LS")[0], U.CD.AsynJWH); //把1473迁徙到自己项目中。

}


//---------------------------------------------------解决Ajax跨域问题------------------------------------------------------------
//域名加载
//U.CD.JZWB = function () {
//    U.CD.GQB($("#UCD_LS")[0], U.CD.AsynJWH); //把1473迁徙到自己项目中。
//}

//所有的跨域文件加载完毕，允许页面点击。在1473所有事件动态生成，鼠标点击无效。
//异步加载完执行函数
U.CD.AsynJWH = function () {
    U.Alert("1473签入完成");
    //U.D.UJZ = [["U_CD", U.CD.AjaxCross, "ACD"]];
    //U.D.OL.push(U.CD.JZWB); //完全跨域
    //U.CD.SY.BK(); //加载首页
    //获取传参，如果有#!等字符，执行url重写。否则，执行一般处理
    U.CD.Url.Init(); //URL重写模块
    U.CD.Loading.innerHTML = "跨域完成";

    U.CD.CL.OpenLang(); //弹出切换语言的窗体
    //全局loading结束。
    U.CD.Loading.style.display = "none";
}



window.onload = U.CD.Init;
//窗口改变重新设置宽高。
window.onresize = U.CD.LO.SetWH;
//函数起始点
//window.onload = U.CD.Init;
//退出时提示保存代码
window.onbeforeunload = function () {
    //event.returnValue = "是否已经保存了所有代码？";
}




//异步加载iframe跨域请求
//U.CD.AsynLI = function () {
//    var i, _UCS = document.createDocumentFragment(), _UIFR, _UDE = { "U_CD": "ACD", "U_Main": "A", "U_Disk": "Adisk", "U_BG": "UB", "U_PB": "PB", "U_Pay": "PY", "reply": "RY", "U_ME": "MA", "TF": true }, _UTE = [["U_CD", U.CD.AjaxCross, "ACD"], ["U_Main", "http://main.1473.cn/index.htm", "A"], ["UL_IF", "http://www.1473.cn/NewPage.htm"]]; //_UTE = [["U_Main", "http://main.1473.cn/index.htm", "A"], ["U_Disk", "http://disk.1473.cn/index.htm", "A"], ["UL_IF", "http://www.1473.cn/NewPage.htm"], ["U_BG", "http://BMain.1473.cn/index.htm"], ["U_PB", "http://pb.1473.cn/CD.htm", "PB"], ["U_office", "http://office.1473.cn/index.htm"], ["U_Pay", "http://pay.1473.cn/index.htm", "PY"], ["reply", "http://reply.1473.cn/index.htm", "RY"], ["U_ME", "http://money.1473.cn/CD.htm", "MA"]];
//    U.D.ITF = _UTE.length; //预加载的长度
//    for (var i = 0; i < _UTE.length; i++) {//添加跨域访问的iframe
//        _UIFR = $$("iframe", { "id": _UTE[i][0], "name": _UTE[i][0], "src": _UTE[i][1], "width": 0, "height": 0, "style": { "display": "none"} }, _UCS);
//        U.MD.IframeLoad(_UIFR, [[U.CD.AsynLIFA, ([_UDE])]]);
//    }
//    document.body.appendChild(_UCS);
//}

//异步加载Iframe成功后执行
//U.CD.AsynLIFA = function (UTE) {
//    this.contentWindow.name = this.id;
//    if (this.id == "U_Main") { for (var i in UTE) { if (UTE.hasOwnProperty(i) && i != "TF" && i != "U_CD") { (window.U)[UTE[i]] = window.frames["U_Main"].U.A; delete UTE[i]; } }; UTE["TF"] = false; }
//    else { window.U["ACD"] = window.frames["U_CD"].U.A; delete UTE["U_CD"]; }
//    //alert(!UTE["TF"] && !UTE["U_CD"]);//执行了2次。不对！
//    (!UTE["TF"] && !UTE["U_CD"]) && (U.CD.AsynJWH());
//    //alert((!UTE["TF"] && !UTE["U_CD"]));
//}
