Namespace.register("U.CD.L"); //注册左边控件栏js。




//拖动时鼠标松开执行的函数。
U.CD.L.ConMUp = function (SO, EV) {
    //计算各种元素的位置。
    EV = this.E; var _TF = SO.innerHTML, _UDOD, _UDPD = $("#UCD_CT_SM_IF"), _LT = _UDPD.GetElementInfo(), _L = EV["X"] - _LT["BCRL"], _T = EV["Y"] - _LT["BCRT"]; document.body.removeChild(SO);
    //如果在iframe范围内，追加效果,还需要判断在Code窗口内,这个地方在iframe宽高发生改变时有问题！！！！以后再测试
    if (_L > 0 && _L < _LT["OW"] && _T > 0 && _T < _LT["OH"]) {
        switch (_TF) {
            case "button": _UDOD = U.CD.C.Button(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break;
            case "reset": _UDOD = U.CD.C.Reset(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break;
            case "submit": _UDOD = U.CD.C.Submit(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break;
            case "text": _UDOD = U.CD.C.Text(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break;
            case "password": _UDOD = U.CD.C.Password(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break;
            case "radio": _UDOD = U.CD.C.Radio(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break;
            case "checkbox": _UDOD = U.CD.C.Checkbox(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break;
            case "form": _UDOD = U.CD.C.Form(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break;
            case "img": _UDOD = U.CD.C.Img(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break;
            case "img": _UDOD = U.CD.C.Img(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; //img
            case "table": U.CD.C.Table(_UDPD, _L, _T); break; //表格
            case "textarea": _UDOD = U.CD.C.Textarea(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; //textarea
            case "div": _UDOD = U.CD.C.Div(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; //div
            case "p": _UDOD = U.CD.C.P(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; //段落
            case "h": _UDOD = U.CD.C.H(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; //标题
            case "ul": U.CD.C.Ul(_UDPD, _L, _T); break; //无序列表
            case "ol": U.CD.C.Ol(_UDPD, _L, _T); break; //有序列表
            case "navigation": _UDOD = U.CD.C.Navigation(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; //导航条
            case "pagination": _UDOD = U.CD.C.Pagination(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; //分页
            case "switchingcard": _UDOD = U.CD.C.Switchingcard(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break; //切换卡
            case "search": _UDOD = U.CD.C.Search(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break;
            case "register": _UDOD = U.CD.C.Register(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break;
            case "shade": _UDOD = U.CD.C.ShadeForms(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break;
            case "buttongroup": _UDOD = U.CD.C.ButtonGrop(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break;
            case "bar": _UDOD = U.CD.C.Bar(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break;
            case "preview": _UDOD = U.CD.C.Preview(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break;
            //case "select": _UDOD = U.CD.C.Select(); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break;    
            case "select": _UDOD = U.CD.C.Select(_UDPD, _L, _T); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break;
            case "comfirm": _UDOD = U.CD.UC.Confirm(_UDPD, _L, _T); U.CD.L.AppendIF(_UDOD, _UDPD, _L, _T); break;
        }
    }
}

//把元素追加到iframe中，并根据iframe中内容返回给代码区域。
U.CD.L.AppendIF = function (_UDOD, _UDPD, _L, _T) {
    $(_UDOD).addAttrArray({ "style": { "left": _L + "px", "top": _T + "px"} }); //修改左上角坐标。

    //把iframe中的代码获取出来追加到div中,如何实现？必须先在代码区域打出，否则outerHTML会自动去掉里面的文字。！
    //U.CD.CD.DrawCode(_UDPD[0].contentWindow.document.documentElement.outerHTML);//这样做会导致非html元素，例如文字js css 元素中的内容样式发生改变
    U.CD.CD.AppendHTML(_UDOD);
    //在iframe中添加拖动属性，暂时不要此功能！
    //$(_UDOD).addAttrArray({ "onclick": U.M.apply(this, [[U.D.iconmove, ([_UDOD, null, { "UP": U.CD.L.IFConMUp}])]]) });
    //$(_UDOD).onclick = U.M.apply(this, [[U.D.iconmove, ([_UDOD, null, { "UP": U.CD.L.IFConMUp}])]]);
    //$(_UDOD).onclick = function () { alert("123"); }
    _UDPD[0].contentWindow.document.body.appendChild(_UDOD); //此处才是真正的往子iframe中追加节点。然后反馈到页面，凡是从小读取RS.htm就会初始化？
    _UDPD[0].contentWindow.document.body.innerHTML += ""; //执行iframe中的内容，这是bug？


}


//创建拖动对象
U.CD.L.moudt = function (TF) {
    //获取坐标
    var _UDOD, _EV = U.M.GetMousep();
    //创建拖动的元素
    _UDOD = $$("div", { "className": "UCD_TOOLT_Drag", "style": { "top": _EV["Y"] + "px", "left": _EV["X"] + "px" }, "innerHTML": TF }, document.body);
    //由于采用了ul li元素，拖动时会出现问题。下面代码解决。
    try { U.D.iconmove(_UDOD, window.frames["UCD_CT_SM_IF"], { "UP": U.CD.L.ConMUp }) } //桌面图标移动,由于用户会删除初始化js代码，导致错误，需要捕获，并修正。但还是会有问题啊
    catch (e) {//有点纠结，把RS.htm重新赋值出来，暂时如此
        _UDOD.releaseCapture(); _UDOD.parentNode.removeChild(_UDOD); document.onmouseup = null; //释放焦点，移除拖动节点，拖动事件赋空。
        //拖动出错后确认重新获取代码,调用初始化函数
        U.UI.Confirm("<div style=' color:red;text-align:left; margin-left:10px; height:25px;'>所有文件必须引用 http://d.1473.cn/UJ.js ,否则会拒绝访问，请仔细检查</div> ", [U.CD.CD.Init, ([])], "");
        return;
    }
}


//桌面图标移动
U.CD.L.iconmove = function (SO, UW) {
    var _C = new U.CD.L.ICM(SO, UW); _C.init(SO, UW); _C.id = "UCD_Left_DO"; //等到一个拖动对象
    document.onmousemove = U.M.apply(_C, [[_C.move]]); document.onmouseup = U.M.apply(_C, [[_C.up]]); //设置
    (UW) && (UW.document.onmousemove = document.onmousemove) && (UW.document.onmouseup = document.onmouseup); //chrome的iframe文档是勾连在一起的，ie是分开的。所以有兼容性问题
}

//桌面图标移动
U.CD.L.ICM = function (SO, UW) {
    this.X = SO.offsetLeft, this.Y = SO.offsetTop;
    this.W = UW; this.SW; this.SO = SO; this.E;
}

//桌面图标移动
U.CD.L.ICM.prototype = {
    //初始化逻辑
    init: function (SO, UAPP) {
        var _EV = U.M.GetMousep(); this.E = _EV;
        this.SW = [0, 0, US.Width - 65, US.Height - 240, _EV["X"] - SO.offsetLeft, _EV["Y"] - SO.offsetTop]; //移动位置的偏差
        SO.setCapture();
    },
    //移动逻辑
    move: function () {
        var _EV;
        if (event) { _EV = U.M.GetMousep(); } else { var _UFED = $("#" + this.W.name).GetElementInfo(); _EV = this.W.U.M.GetMousep(); _EV["X"] += _UFED["BCRL"]; _EV["Y"] += _UFED["BCRT"]; }
        if (this.E["X"] - _EV["X"] != 0 && this.E["Y"] - _EV["Y"] != 0) {
            var _X = _EV["X"] - this.SW[4]; //鼠标移动过程横坐标
            var _Y = _EV["Y"] - this.SW[5]; //鼠标移动过程纵坐标
            if (_X < this.SW[1]) { _X = this.SW[1]; }
            else if (_X > this.SW[2]) { _X = this.SW[2]; }
            if (_Y < this.SW[0]) { _Y = this.SW[0]; }
            else if (_Y > this.SW[3]) { _Y = this.SW[3]; }
            $(this.SO).addAttrArray({ "style": { "left": _X + "px", "top": _Y + "px"} });
            //U.D.MoveCase = true; //允许拖动不允许点击
            this.E = _EV;
        }
    },
    //释放事件
    up: function () {
        U.CD.L.ConMUp(this.SO, this.E); //松开鼠标调动绘制控件的函数
        this.SO.releaseCapture(); this.W.document.onmousemove = this.W.document.onmouseup = document.onmousemove = document.onmouseup = null; //释放
    }
}
//
//打开或者关闭控件列表
U.CD.L.OpenOrCloseList = function (SO) { SO.style.display = SO.style.display == "none" ? "block" : "none"; }