/**
* 任务栏管理系统
*/
Namespace.register("U.MD.D.T.taskbar"); //任务栏 命名空间

/**
*  任务管理函数
* @param applyinfo {object} 任务信息 
*        形如:{
*                   id: _taskId,  //任务识别id
*                   backgroundPostion: _taskbar[0],  //任务图标定位
*                   name: _taskbar[1],  //任务名称
*                   forms: _taskbar[2], //任务所在的窗体
*                   click: function () { U.MD.D.I.openApplication(str, obj); }   //任务点击打开的函数
*               }
* @param taskbarEle 任务管理器所在的元素 默认为$("#U_MD_D_T_taskbar_Bar_Main")[0]元素
*/
U.MD.D.T.taskbar = function (applyinfo, taskbarEle) {
    taskbarEle = taskbarEle || U.selectEl("#U_MD_D_RW")[0]; //任务管理器所在的元素
    var _tasks = U.selectEl('#U_MD_D_T_taskbar_' + applyinfo.id, taskbarEle)[0]; //查找当前任务是否存在
    //如果不存在则创建任务
    if (!_tasks) {
        //创建任务
        U.MD.D.T.taskbar.create(applyinfo, taskbarEle);
        //检查任务是否过多
        U.MD.D.T.taskbar.multitask(taskbarEle);
    }
    else {
        _tasks.forms = applyinfo.forms;
    }
}

//是否触发拖动监听变量
U.MD.D.T.taskbar.drag = 0;

/**
* 任务创建函数
* @param applyinfo  {object}  任务信息 与任务管理函数参数相同
* @param taskbarEle {element} 任务管理器所在的元素 默认为$("#U_MD_D_T_taskbar_Bar_Main")[0]元素 与任务管理函数参数相同
*/
U.MD.D.T.taskbar.create = function (applyinfo, taskbarEle) {
    if (taskbarEle) {
        //动态创建任务
        var _task = $$("div", { id: "U_MD_D_T_taskbar_" + applyinfo.id, className: "U_MD_D_BZMO", title: applyinfo.name, "forms": applyinfo.forms });
        var _taskMain = $$("div", {
            className: "U_MD_D_BZMOA",
            //绑定点下事件 勇于拖动监听
            onmousedown: U.UF.C.apply(null, function () { U.MD.D.T.taskbar.dragClose(_taskMain); }),
            //绑定点击事件 需判断是否在拖动状态
            onclick: function () {
                if (!(U.MD.D.T.taskbar.drag > 1)) {
                    applyinfo.click();
                }
                U.MD.D.T.taskbar.drag = 0;
            }
        }, _task);
        //动态创建任务图标
        // switch (applyinfo.name) {//根据不同的点击事件创建不同的任务图标 
        //     case "文档":
        //         $$("div", { className: " U_TaskbarImg U_TaskbarImg1" }, _taskMain);
        //         break;
        //     case "系统设置":
        //         $$("div", { className: " U_TaskbarImg U_TaskbarImg2" }, _taskMain);
        //         break;
        //     case "查找好友":
        //         $$("div", { className: " U_TaskbarImg U_TaskbarImg3" }, _taskMain);
        //         break;
        //     case "Excel":
        //         $$("div", { className: "U_TaskbarImg U_TaskbarImg4" }, _taskMain);
        //         break;
        //     case "网盘":
        //         $$("div", { className: " U_TaskbarImg U_TaskbarImg5" }, _taskMain);
        //         break;
        //     case "互联办公":
        //         $$("div", { className: " U_TaskbarImg U_TaskbarImg6" }, _taskMain);
        //         break;
        //     case "文本":
        //         $$("div", { className: "U_TaskbarImg U_TaskbarImg7" }, _taskMain);
        //         break;
        //     case "音乐播放器":
        //         $$("div", { className: "U_TaskbarImg U_TaskbarImg8" }, _taskMain);
        // }
        $$("div", { className: "U_MD_D_BZMOI U_Img", style: applyinfo.style }, _taskMain);
        //动态创建任务名称
        //    $$("div", { className: "U_MD_D_BZMON U_MD_D_Text_Abbreviation", innerHTML: applyinfo.name }, _taskMain);
        var _taskName = $$("div", {
            className: "U_MD_D_T_taskbar_Name",
            style: { "position": "absolute", "left": "-26px", "bottom": "83px" }/*,
        innerHTML: applyinfo.name*/
        }, _task);
        $$("div", {
            className: "U_MD_D_BZMON U_MD_D_Text_Abbreviation",
            style: { "float": "left", "width": "100px", "margin-top": "7%", "color": "#FFFFFF", "font-family": "MicrosoftYaHei" },
            innerHTML: applyinfo.name
        }, _taskName);
        $$("div", { className: "U_MD_D_T_taskbar_Close", style: { "display": "none" }, innerHTML: "x", onclick: function () { U.UF.EV.stopBubble(); U.MD.D.T.taskbar.close(applyinfo) } }, _taskMain);
        $$("div", { className: "U_MD_D_T_taskbar_Close", innerHTML: "x", onclick: function () { U.UF.EV.stopBubble(); U.MD.D.T.taskbar.close(applyinfo) } }, _taskName);
        //添加到任务栏的最前面
        if (taskbarEle) {
            U.selectEl(taskbarEle).append(_task, 0, taskbarEle.firstChild);
        }
        //任务栏中大于或等于28个时,才出现上下分页按钮;
        if ($(".U_MD_D_BZMOA").length >= 28) {
            U.selectEl(".U_MD_D_RW_R")[0].style.display = "block";
        } else {
            U.selectEl(".U_MD_D_RW_R")[0].style.display = "none";
        }
    }

}

//当前页监听
U.MD.D.T.taskbar.page = 1;
//最大页码
U.MD.D.T.taskbar.maxPage = 1;
//每页最多放置任务数
U.MD.D.T.taskbar.pageNum = 1;

/**
* 检查任务过多情况
* @param taskbarEle {element} 任务管理器所在的元素 默认为$("#U_MD_D_T_taskbar_Bar_Main")[0]元素 与任务管理函数参数相同
*/
U.MD.D.T.taskbar.multitask = function (taskbarEle) {
    //每页最多放置任务数
    U.MD.D.T.taskbar.pageNum = Math.floor($(taskbarEle).width() / 65);
    //获取所有任务
    var _tasks = U.selectEl(taskbarEle).Child();
    //获取任务总数
    var _tasksTotal = _tasks.length;
    //判断是否为多页情况
    if (_tasksTotal > U.MD.D.T.taskbar.pageNum) {
        //计算最大总共有多少页
        U.MD.D.T.taskbar.maxPage = Math.ceil(_tasksTotal / U.MD.D.T.taskbar.pageNum);
    }
    U.MD.D.T.taskbar.page = 1;
    U.MD.D.T.taskbar.switchPage(0);
}



/**
* 多任务切换页面
* @param mark       {number}  页码标记 在前台页上加或者减多少页
* @param taskbarEle {element} 任务管理器所在的元素 默认为$("#U_MD_D_T_taskbar_Bar_Main")[0]元素 与任务管理函数参数相同
*/
U.MD.D.T.taskbar.switchPage = function (mark, taskbarEle) {
    //任务管理器位置
    taskbarEle = taskbarEle || U.selectEl("#U_MD_D_RW")[0];
    //页面切换设置
    U.MD.D.T.taskbar.page += mark;
    //页面最小值限制
    if (U.MD.D.T.taskbar.page < 1) { U.MD.D.T.taskbar.page = 1; }
    //页面最大值限制
    if (U.MD.D.T.taskbar.page > U.MD.D.T.taskbar.maxPage) { U.MD.D.T.taskbar.page = U.MD.D.T.taskbar.maxPage; }
    //获取所有任务
    var _tasks = U.selectEl(taskbarEle).Child();
    //计算当前页面从第几个任务开始显示
    var _startLength = (U.MD.D.T.taskbar.page - 1) * U.MD.D.T.taskbar.pageNum;
    //计算当前页面从第几个任务结束显示
    var _endLength = Math.min(U.MD.D.T.taskbar.page * U.MD.D.T.taskbar.pageNum, _tasks.length);
    //影藏所有任务
    U.selectEl($(taskbarEle).Child()).css('display', 'none');
    //循环显示当前页面的任务
    var i;
    for (_startLength; _startLength < _endLength; _startLength++) {
        U.selectEl(_tasks[_startLength]).css('display', 'block');
    }
}

/**
* 任务关闭函数
* @param applyinfo {object}  任务信息
*/
U.MD.D.T.taskbar.close = function (applyinfo) {
    var i,
        _child = U.selectEl("#U_MD_D_RW").Child(),
        _form = U.UF.C.isElement(applyinfo.forms) ? applyinfo.forms : applyinfo.forms.form;
    //执行窗体关闭函数
    if (applyinfo.forms) {
        U.UF.F.closeWindow(_form, "remove");
    }
    //通过applyinfo删除的模式
    if (applyinfo.id) {
        //删除任务
        U.selectEl('#U_MD_D_T_taskbar_' + applyinfo.id).remove();
    }
    else {
        //循环找出需要移除的form窗体
        for (i = 0; i < _child.length; i++) {
            if (_child[i].forms == _form) {
                U.selectEl(_child[i]).remove();
            }
        }
    }
}

/**
* 清空任务管理器                                                     
* @param taskEle {Element}  任务管理器位置
*/
U.MD.D.T.taskbar.clear = function (taskEle) {
    //任务管理器位置
    taskEle = taskEle || U.selectEl("#U_MD_D_RW")[0];

    //循环执行所有任务的关闭点击事件
    var _i, _tasksClose = U.selectEl('.U_MD_D_T_taskbar_Close', taskEle);
    for (_i = 0; _i < _tasksClose.length; _i++) {
        _tasksClose[_i].onclick();
    }
}

/**
* 任务拖拽关闭函数
* @param taskEle {Element}  被操作任务的元素
*/
U.MD.D.T.taskbar.dragClose = function (taskEle) {
    U.MD.D.T.taskbar.drag = 0;
    //获取鼠标位置 定义该位置为起始位置
    //U.MD.D.T.taskbar.stratX = U.UF.EL.getMousePosition().x;
    U.MD.D.T.taskbar.stratY = U.UF.EL.getMousePosition().y;
    //记录当前样式
    U.MD.D.T.taskbar.preStyle = U.selectEl(taskEle).css('cssText');

    //设置元素绝对定位
    var _taskEleCssPostion = U.selectEl(taskEle).css("postion");
    if (_taskEleCssPostion == "static" || !_taskEleCssPostion) { U.selectEl(taskEle).css("position", "absolute") }; //改G

    //设置置顶
    U.selectEl(taskEle).css("z-index", 9999);

    //绑定事件
    U.MD.D.T.taskbar.bindDragEvent(taskEle);
}

/**
* 拖拽事件绑定
*/
U.MD.D.T.taskbar.bindDragEvent = function (taskEle) {
    var _event = {
        "mousemove": function () {
            //执行拖拽事件
            U.MD.D.T.taskbar.dragMove(taskEle);
            //绑定鼠标离开元素事件,防止失焦后元素不受控制
            U.selectEl(taskEle).mouseleave(function () {
                U.MD.D.T.taskbar.dragEnd(taskEle);
            });
            //设置拖拽开始
            U.MD.D.T.taskbar.drag++;
        },
        "mouseup": function () {
            //执行拖拽结束函数
            U.MD.D.T.taskbar.dragEnd(taskEle);
            //解绑当前绑定的函数
            U.selectEl(taskEle).unbind(_event);
            //清楚
            U.selectEl(taskEle).mouseleave(null);
        }
    };

    //绑定事件
    U.selectEl(taskEle).bind(_event);

}

/**
* 拖拽函数
*/
U.MD.D.T.taskbar.dragMove = function (taskEle) {
    //计算拖动距离
    //U.MD.D.T.taskbar.dragX = U.UF.EL.getMousePosition().x - U.MD.D.T.taskbar.stratX;
    U.MD.D.T.taskbar.dragY = U.MD.D.T.taskbar.stratY - U.UF.EL.getMousePosition().y;
    //根据拖动距离计算透明度 最大拖动距离为100
    //var _opacity = 100 - U.MD.D.T.taskbar.dragX;
    var _opacity = 100 - U.MD.D.T.taskbar.dragY;
    //限制透明度值最小为1
    if (_opacity < 1) { _opacity = 1 };
    //设置CSS透明度属性
    U.selectEl(taskEle).css({
        //left: U.MD.D.T.taskbar.dragX + "px",
        bottom: U.MD.D.T.taskbar.dragY + "px",
        filter: "alpha(opacity=" + _opacity + ")",
        "-ms-filter": "progid:DXImageTransform.Microsoft.Alpha(Opacity=" + _opacity + ")",    //ie兼容设置
        "-moz-opacity": _opacity / 100,
        "-khtml-opacity": _opacity / 100,  //其他浏览器兼容 firefox safari、chrome
        "opacity": _opacity / 100
    });
}

/**
* 拖拽结束函数
*/
U.MD.D.T.taskbar.dragEnd = function (taskEle) {
    if (U.MD.D.T.taskbar.dragY > 50) {
        //若拖动距离大于40则执行关闭任务函数
        U.selectEl('.U_MD_D_T_taskbar_Close', taskEle)[0].onclick();
    }
    else {
        //否则执行打开函数,并设置回元素的样式
        U.selectEl(taskEle).css("cssText", U.MD.D.T.taskbar.preStyle);
        //taskEle.click();
    }
}

$(window).bind('onsize', U.MD.D.T.taskbar.multitask);