MWF.xApplication.Execution = MWF.xApplication.Execution || {};
MWF.xDesktop.requireApp("Template", "Explorer", null, false);

MWF.require("MWF.widget.Identity", null,false);

MWF.xApplication.Execution.WorkList = new Class({
    Extends: MWF.widget.Common,
    Implements: [Options, Events],
    options: {
        "style": "default",
        "workNavi1" : "",
        "workNavi2" : ""
    },

    initialize: function (node, app, actions, options) {
        this.setOptions(options);
        this.app = app;
        this.lp = app.lp.workList;
        this.path = "/x_component_Execution/$WorkList/";
        this.loadCss();

        this.actions = actions;
        this.node = $(node);
    },
    loadCss: function () {
        this.cssPath = "/x_component_Execution/$WorkList/" + this.options.style + "/css.wcss";
        this._loadCss();
    },
    load: function () {
        if(!this.appointSwitch){
            var switchData = {};
            switchData.configCode = "WORK_AUTHORIZE";
            this.actions.getProfileByCode(switchData,function(json){
                if(json.type == "success"){
                    if(json.data && json.data.configValue){
                        this.appointSwitch = json.data.configValue;
                    }
                }
            }.bind(this),null,false);
        }

        this.tabLocation = ""
        this.middleContent = this.app.middleContent;
        this.middleContent.setStyles({"margin-top":"0px","border":"0px solid #f00"});
        this.createNaviContent();
        this.createContentDiv();

        this.resizeWindow();
        this.app.addEvent("resize", function(){
            this.resizeWindow();
        }.bind(this));

    },
    resizeWindow: function(){
        var size = this.app.middleContent.getSize();
        if( this.naviDiv)this.naviDiv.setStyles({"height":(size.y-60)+"px"});
        if(this.naviContentDiv)this.naviContentDiv.setStyles({"height":(size.y-180)+"px"});
        if(this.contentDiv)this.contentDiv.setStyles({"height":(size.y-60)+"px"});
        if(this.rightContentDiv)this.rightContentDiv.setStyles({
            "height":(size.y-40-140)+"px",
            "width":(size.x-this.naviDiv.getSize().x-6)+"px"
        });
    },
    createNaviContent: function(){
        this.naviDiv = new Element("div.naviDiv",{
            "styles":this.css.naviDiv
        }).inject(this.middleContent);

        this.naviTitleDiv = new Element("div.naviTitleDiv",{
            "styles":this.css.naviTitleDiv,
            "text":this.lp.navi.title
        }).inject(this.naviDiv);
        this.naviContentDiv = new Element("div.naviContentDiv",{"styles":this.css.naviContentDiv}).inject(this.naviDiv);
        this.naviBottomDiv = new Element("div.naviBottomDiv",{"styles":this.css.naviBottomDiv}).inject(this.naviDiv);

        var naviContentLi = new Element("li.naviContentLi",{"styles":this.css.naviContentLi}).inject(this.naviContentDiv)
            .addEvents({
                "click":function(){
                    this.app.openWorkReport()
                }.bind(this)
            })
        var naviContentImg = new Element("img.naviContentImg",{
            "styles":this.css.naviContentImg,
            "src":this.path+"default/icon/Prototype-100.png"
        }).inject(naviContentLi);
        var naviContentSpan = new Element("span.naviContentSpan",{
            "styles":this.css.naviContentSpan,
            "text":this.lp.navi.items.workReport
        }).inject(naviContentLi)

    },
    createContentDiv: function(){
        this.contentDiv = new Element("div.contentDiv",{"styles":this.css.contentDiv}).inject(this.middleContent);
        this.createCategoryItemDiv();

        this.clickWorkListNavi( this.options.workNavi1 || "base", this.options.workNavi2 || "" );
    },
    createCategoryItemDiv: function(){
        this.rightCategoryDiv = new Element("div.rightCategoryDiv",{"styles":this.css.rightCategoryDiv}).inject(this.contentDiv);

        var isCreate = false;
        this.actions.createCenterWorkAuthorization(function(json){
            if(json.data && json.data.value){
                isCreate = json.data.value;
            }
        }.bind(this),null,false)

        if(isCreate){
            this.rightCategoryNewDiv = new Element("div.rightCategoryNewDiv",{
                "styles":this.css.rightCategoryNewDiv,
                "text":this.lp.createWork
            }).inject(this.rightCategoryDiv)
                .addEvents({
                "click":function(){
                    MWF.xDesktop.requireApp("Execution", "WorkDeploy", function(){
                        this.explorer = new MWF.xApplication.Execution.WorkDeploy(this, this.actions,{},{
                            "isEdited":true,
                            "isNew":true,
                            "onReloadView" : function( data ){
                                this.createRightContentDiv(this.workNavi1,this.workNavi2)
                            }.bind(this)
                        });
                        this.explorer.load();
                    }.bind(this))

                }.bind(this)
                });
        }


        this.rightCategoryItemDiv = new Element("div.rightCategoryItemDiv",{"styles":this.css.rightCategoryItemDiv}).inject(this.rightCategoryDiv);

        this.centerWorkLi = new Element("li.centerWorkLi",{
            "styles":this.css.rightCategoryItemCurrentLi,
            "text": this.lp.workItems.centerWork.title
        }).inject(this.rightCategoryItemDiv)
            .addEvents({
                "click":function(){
                    //alert("中心工作点击");
                    this.clickWorkListNavi("center")
                }.bind(this)
            })
        this.baseWorkLi = new Element("li.baseWorkLi",{
            "styles":this.css.rightCategoryItemLi,
            "text": this.lp.workItems.baseWork.title
        }).inject(this.rightCategoryItemDiv)
            .addEvents({
                "click":function(){
                    //alert("具体工作点击");
                    this.clickWorkListNavi("base");

                }.bind(this)
            })

        this.rightSearchDiv = new Element("div.rightSearchDiv",{"styles":this.css.rightSearchDiv}).inject(this.contentDiv);
    },
    clickWorkListNavi : function( workNavi1, workNavi2 ){
        this.workNavi1 = workNavi1 || "base";

        if(this.rightSearchDiv)this.rightSearchDiv.empty();
        if(this.rightContentDiv)this.rightContentDiv.destroy();
        if( workNavi1 == "base" ){
            if(this.centerWorkLi)this.centerWorkLi.setStyles({"border-bottom":""});
            if(this.baseWorkLi)this.baseWorkLi.setStyles({"border-bottom":"2px solid #124c93"});
            this.createBaseWorkSearchDiv();
            this.createRightContentDiv( "base" , workNavi2 || "" );
        }else{
            if(this.centerWorkLi)this.centerWorkLi.setStyles({"border-bottom":"2px solid #124c93"});
            if(this.baseWorkLi)this.baseWorkLi.setStyles({"border-bottom":""});
            this.createCenterWorkSearchDiv();
            this.createRightContentDiv("center", workNavi2 || "" );
        }

    },


    createCenterWorkSearchDiv: function(){
        this.rightDrafterTabLi = new Element("li.rightDrafterTabLi", {
            "styles": this.css.rightDrafterTabLi,
            "text" : MWF.xApplication.Execution.LP.workTask.centerWorkDrafter
        }).inject(this.rightSearchDiv)
            .addEvents({
                "click":function(){
                    this.clickCenterWorkTaskNavi("drafter")
                }.bind(this)
            })
        this.rightDeployTabLi = new Element("li.rightDeployTabLi", {
            "styles": this.css.rightDeployTabLi,
            "text" :MWF.xApplication.Execution.LP.workTask.centerWorkDeploy
        }).inject(this.rightSearchDiv)
            .addEvents({
                "click":function(){
                    this.clickCenterWorkTaskNavi("deploy")
                }.bind(this)
            })
        this.rightArchiveTabLi = new Element("li.rightArchiveTabLi", {
            "styles": this.css.rightArchiveTabLi,
            "text" :MWF.xApplication.Execution.LP.workTask.centerWorkArchive
        }).inject(this.rightSearchDiv)
            .addEvents({
                "click":function(){
                    this.clickCenterWorkTaskNavi("archive")
                }.bind(this)
            })

        rightSearchBarSpan = new Element("span.rightSearchBarSpan",{
            "styles":this.css.rightSearchBarSpan
        }).inject(this.rightSearchDiv);
        this.rightSearchBarInput = new Element("input.rightSearchBarInput",{
            "styles":this.css.rightSearchBarInput,
            "type":"text"
        }).inject(rightSearchBarSpan)
            .addEvents({
                "keyup": function(e){
                    if(e.code == 13){
                        this.searchAction();
                    }
                }.bind(this)
            })
        this.rightSearchBarSearch = new Element("div.rightSearchBarSearch",{
            "styles":this.css.rightSearchBarSearch,
            "text" : MWF.xApplication.Execution.LP.workTask.search
        }).inject(rightSearchBarSpan)
            .addEvents({
                "click":function(){
                    this.searchAction();
                }.bind(this)
            })

    },
    clickCenterWorkTaskNavi : function( str ){
        if(this.rightSearchBarInput) this.rightSearchBarInput.set("value","")
        this.workNavi1 = "center"
        this.workNavi2 = str || "deploy";
        if( str == "drafter" ){
            this.rightContentDiv.empty();
            if(this.rightDrafterTabLi)this.rightDrafterTabLi.setStyles({"border-bottom":"2px solid #124c93"});
            if(this.rightDeployTabLi)this.rightDeployTabLi.setStyles({"border-bottom":""});
            if(this.rightArchiveTabLi)this.rightArchiveTabLi.setStyles({"border-bottom":""});
            this.loadCenterWorkList("drafter");
        }else if(str=="archive"){
            this.rightContentDiv.empty();
            if(this.rightArchiveTabLi)this.rightArchiveTabLi.setStyles({"border-bottom":"2px solid #124c93"});
            if(this.rightDeployTabLi)this.rightDeployTabLi.setStyles({"border-bottom":""});
            if(this.rightDrafterTabLi)this.rightDrafterTabLi.setStyles({"border-bottom":""});
            this.loadCenterWorkList("archive");
        }else{
            this.rightContentDiv.empty();
            if(this.rightDrafterTabLi)this.rightDrafterTabLi.setStyles({"border-bottom":""});
            if(this.rightArchiveTabLi)this.rightArchiveTabLi.setStyles({"border-bottom":""});
            if(this.rightDeployTabLi)this.rightDeployTabLi.setStyles({"border-bottom":"2px solid #124c93"});
            this.loadCenterWorkList("deploy");
        }
    },

    createBaseWorkSearchDiv:function(){
        //全部工作
        this.baseAllTabLi = new Element("li.baseAllTabLi", {
            "styles": this.css.baseTabLi,
            "text" : this.lp.baseWorkCategory.all
        }).inject(this.rightSearchDiv)
            .addEvents({
                "click":function(){
                    this.clickBaseWorkTaskNavi("myAll")
                }.bind(this)
            })

        //草稿
        this.baseDrafterTabLi = new Element("li.baseDrafterTabLi", {
            "styles": this.css.baseTabLi,
            "text" : this.lp.baseWorkCategory.myDrafter
        }).inject(this.rightSearchDiv)
        .addEvents({
                "click":function(){
                    this.clickBaseWorkTaskNavi("myDrafter")
                }.bind(this)
            })
        //我部署的
        this.baseDeployTabLi = new Element("li.baseDeployTabLi", {
            "styles": this.css.baseTabLi,
            "text" : this.lp.baseWorkCategory.myDeploy
        }).inject(this.rightSearchDiv)
            .addEvents({
                "click":function(){
                    this.clickBaseWorkTaskNavi("myDeploy");
                }.bind(this)
            })

        //我负责的
        this.baseDoTabLi = new Element("li.baseDoTabLi", {
            "styles": this.css.baseTabLi,
            "text" : this.lp.baseWorkCategory.myDo
        }).inject(this.rightSearchDiv)
            .addEvents({
                "click":function(){
                    this.clickBaseWorkTaskNavi("myDo");
                }.bind(this)
            })
        //我协助的
        this.baseAssistTabLi = new Element("li.baseAssistTabLi", {
            "styles": this.css.baseTabLi,
            "text" : this.lp.baseWorkCategory.myAssist
        }).inject(this.rightSearchDiv)
            .addEvents({
                "click":function(){
                    this.clickBaseWorkTaskNavi("myAssist");
                }.bind(this)
            })
        //我阅知的
        this.baseReadTabLi = new Element("li.baseReadTabLi", {
            "styles": this.css.baseTabLi,
            "text" : this.lp.baseWorkCategory.myRead
        }).inject(this.rightSearchDiv)
            .addEvents({
                "click":function(){
                    this.clickBaseWorkTaskNavi("myRead");
                }.bind(this)
            })

        if(this.appointSwitch && this.appointSwitch.toUpperCase() == "OPEN"){
            //我委派的
            this.baseAppointTabLi = new Element("li.baseAppointTabLi", {
                "styles": this.css.baseTabLi,
                "text" : this.lp.baseWorkCategory.myAppoint
            }).inject(this.rightSearchDiv)
                .addEvents({
                    "click":function(){
                        this.clickBaseWorkTaskNavi("myAppoint");
                    }.bind(this)
                })

        }

        //已归档
        this.baseArchiveTabLi = new Element("li.baseArchiveTabLi", {
            "styles": this.css.baseTabLi,
            "text" : this.lp.baseWorkCategory.myArchive
        }).inject(this.rightSearchDiv)
            .addEvents({
                "click":function(){
                    this.clickBaseWorkTaskNavi("myArchive");
                }.bind(this)
            })



        rightSearchBarSpan = new Element("span.rightSearchBarSpan",{
            "styles":this.css.rightSearchBarSpan
        }).inject(this.rightSearchDiv);


        this.rightSearchBarInput = new Element("input.input",{
            "styles":this.css.rightSearchBarInput,
            "type":"text"
        }).inject(rightSearchBarSpan)
            .addEvents({
                "keyup": function(e){
                    if(e.code == 13){
                        this.searchAction();
                    }
                }.bind(this)
            })
        this.rightSearchBarSearch = new Element("div.rightSearchBarSearch",{
            "styles":this.css.rightSearchBarSearch,
            "text" : this.lp.searchButton.search
        }).inject(rightSearchBarSpan)
            .addEvents({
                "click":function(){
                    this.searchAction();
                }.bind(this)
            })

    },
    clickBaseWorkTaskNavi : function( str ){
        if(this.rightSearchBarInput) this.rightSearchBarInput.set("value","")
        this.workNavi1 = "base"
        this.workNavi2 = str || "myDo";
        if( str == "myDrafter" ) {
            this.changeBaseWork(this.baseDrafterTabLi)
            this.loadBaseWorkList("myDrafter");
        }else if(str =="myDeploy"){
                this.changeBaseWork(this.baseDeployTabLi);
                this.loadBaseWorkList("myDeploy");
        }else if( str == "myDo" ){
            this.changeBaseWork(this.baseDoTabLi);
            this.loadBaseWorkList("myDo");
        }else if( str == "myAssist" ){
            this.changeBaseWork(this.baseAssistTabLi)
            this.loadBaseWorkList("myAssist");
        }else if( str == "myRead" ){
            this.changeBaseWork(this.baseReadTabLi)
            this.loadBaseWorkList("myRead");
        }else if( str == "myAppoint") {
            this.changeBaseWork(this.baseAppointTabLi)
            this.loadBaseWorkList("myAppoint");
        }else if( str == "myArchive"){
            this.changeBaseWork(this.baseArchiveTabLi)
            this.loadBaseWorkList("myArchive");
        }else if(str == "myAll"){
            this.changeBaseWork(this.baseAllTabLi)
            this.loadBaseWorkList("myAll");
        }else{
            this.changeBaseWork(this.baseDoTabLi)
            this.loadBaseWorkList("myDo");
        }
    },
    reloadRightContentDiv : function(){
        if(this.rightContentDiv)this.rightContentDiv.destroy();
        this.rightContentDiv = new Element("div.rightContentDiv",{
            "styles":this.css.rightContentDiv
        }).inject(this.contentDiv);
        this.rightContentDiv.setStyles({
            "width":(this.app.middleContent.getSize().x-this.naviDiv.getSize().x-6)+"px"
        });
    },
    createRightContentDiv: function(workNavi1 , workNavi2 ){
        //alert(this.app.middleContent.getSize()-40-140+"px")
        if(this.rightContentDiv)this.rightContentDiv.destroy();
        this.rightContentDiv = new Element("div.rightContentDiv",{
            "styles":this.css.rightContentDiv
        }).inject(this.contentDiv);

        if(workNavi1=="base"){
            this.clickBaseWorkTaskNavi( workNavi2 );
        }else{
            this.clickCenterWorkTaskNavi( workNavi2 );
        }


    },
    createTableContent:function(json,colsJson){

    },
    loadCenterWorkList: function (str,filter) {
        if( this.baseView )delete this.baseView;
        //if(this.rightContentDiv) this.rightContentDiv.empty();
        this.reloadRightContentDiv();
        this.rightContentDiv.setStyles({"height":this.app.middleContent.getSize().y-40-140+"px"});

        //if(this.scrollBar && this.scrollBar.scrollVAreaNode){
        //    this.scrollBar.scrollVAreaNode.destroy()
        //}


        //MWF.require("MWF.widget.ScrollBar", function () {
        //    this.scrollBar =  new MWF.widget.ScrollBar(this.rightContentDiv, {
        //        "indent": false,
        //        "style": "default",
        //        "where": "before",
        //        "distance": 100,
        //        "friction": 4,
        //        "axis": {"x": false, "y": true},
        //        "onScroll": function (y) {
        //            var scrollSize = this.rightContentDiv.getScrollSize();
        //            var clientSize = this.rightContentDiv.getSize();
        //            var scrollHeight = scrollSize.y - clientSize.y;
        //            var view = this.baseView || this.centerView;
        //            if (y + 200 > scrollHeight && view && view.loadElementList) {
        //                if (! view.isItemsLoaded) view.loadElementList()
        //            }
        //        }.bind(this)
        //    });
        //}.bind(this),false);

        templateUrl = this.path+"centerWorkAll.json";

        this.centerView =  new  MWF.xApplication.Execution.WorkList.CenterWorkView(this.rightContentDiv, this.app, {explorer:this,lp : this.app.lp.centerWorkView, css : this.css, actions : this.actions }, { templateUrl : templateUrl,category:str,filterData:filter } )
        this.centerView.load();
        this.app.setScrollBar(this.rightContentDiv,this.centerView);

    },
    loadBaseWorkList: function (str,filter) {
        this.workNavi2 = str || "deploy"
        if( this.centerView )delete this.centerView;
        this.reloadRightContentDiv();

        this.rightContentDiv.setStyles({"height":this.app.middleContent.getSize().y-40-140+"px"});
        templateUrl= this.path+"baseWorkAll.json";

        if(this.scrollBar && this.scrollBar.scrollVAreaNode){
            this.scrollBar.scrollVAreaNode.destroy()
        }
        //this.app.setScrollBar(this.rightContentDiv,this.baseView);
        //MWF.require("MWF.widget.ScrollBar", function () {
        //    if(this.scrollBar) delete this.scrollBar
        //    this.scrollBar =  new MWF.widget.ScrollBar(this.rightContentDiv, {
        //        "indent": false,
        //        "style": "xApp_TaskList",
        //        "where": "before",
        //        "distance": 100,
        //        "friction": 4,
        //        "axis": {"x": false, "y": true},
        //        "onScroll": function (y) {
        //            var scrollSize = this.rightContentDiv.getScrollSize();
        //            var clientSize = this.rightContentDiv.getSize();
        //            var scrollHeight = scrollSize.y - clientSize.y;
        //            var view = this.baseView || this.centerView;
        //            if (y+200 > scrollHeight && view && view.loadElementList) {
        //                if (! view.isItemsLoaded) view.loadElementList();
        //            }
        //        }.bind(this)
        //    });
        //
        //}.bind(this),false);

        this.baseView =  new  MWF.xApplication.Execution.WorkList.BaseWorkView(this.rightContentDiv, this.app, {lp : this.app.lp.baseWorkView, css : this.css, actions : this.actions }, { templateUrl : templateUrl,category:str,filterData:filter} )
        //this.baseView.options.templateUrl =
        this.baseView.load();
        this.app.setScrollBar(this.rightContentDiv,this.baseView);
    },

    //切换具体工作tab页
    changeBaseWork: function(obj){
        var liObj = this.rightSearchDiv.getElements("li");
        liObj.setStyle("border-bottom","");
        obj.setStyle("border-bottom","2px solid #124c93");
    },
    searchAction : function(){
        var filterData = {}
        filterData.workTitle = this.rightSearchBarInput.get("value");

        if(this.workNavi1 == "base"){
            this.loadBaseWorkList(this.workNavi2,filterData)
        }else if(this.workNavi1 == "center"){
            this.loadCenterWorkList(this.workNavi2,filterData)
        }
    },
    showErrorMessage:function(xhr,text,error){
        var errorText = error;
        if (xhr) errorMessage = xhr.responseText;
        if(errorMessage!=""){
            var e = JSON.parse(errorMessage);
            if(e.message){
                this.app.notice( e.message,"error");
            }else{
                this.app.notice( errorText,"error");
            }
        }else{
            this.app.notice(errorText,"error")
        }

    }

})


MWF.xApplication.Execution.WorkList.WorkForm = new Class({
    Extends: MWF.xApplication.Template.Explorer.PopupForm,

    createTopNode: function(){
        if (!this.formTopNode) {
            this.formTopNode = new Element("div.formTopNode", {
                "styles": this.css.formTopNode
            }).inject(this.formNode);
            this.formTopImg = new Element("img.formTopImg",{
                "styles":this.css.formTopImg,
                "src":"/x_component_Execution/$Main/default/icon/Document-104.png"
            }).inject(this.formTopNode);
            this.formTopSpan = new Element("span.formTopSpan",{
                "styles": this.css.formTopSpan,
                "text":this.options.title
            }).inject(this.formTopNode);


            if( this.options.closeAction ){
                this.formTopCloseActionNode = new Element("div.formTopCloseActionNode", {"styles": this.css.formTopCloseActionNode}).inject(this.formTopNode);
                this.formTopCloseActionNode.addEvent("click", function () {
                    this.close()
                }.bind(this))
            }
        }
    },
    _createBottomContent: function(){
        var html = "<span style='color:#f59353'>"+MWF.xApplication.Execution.LP.workTask.popUp.createNewTask.title+"</span>："+MWF.xApplication.Execution.LP.workTask.popUp.createNewTask.explain
        html += "<br><span style='color:#f59353'>"+MWF.xApplication.Execution.LP.workTask.popUp.createAddTask.title+"</span>："+MWF.xApplication.Execution.LP.workTask.popUp.createAddTask.explain
        this.createExplainDiv = new Element("div.createExplainDiv",{
            "styles":this.css.createExplainDiv,
            "html":html
        }).inject(this.formBottomNode);
    }




})



MWF.xApplication.Execution.WorkList.CenterWorkView = new Class({
    Extends: MWF.xApplication.Template.Explorer.ComplexView,


    _createDocument: function(data){
        return new MWF.xApplication.Execution.WorkList.CenterWorkDocument(this.viewNode, data, this.explorer, this);
    },

    _getCurrentPageData: function(callback, count){
        var category = this.options.category;

        if (!count)count = 15;
        var id = (this.items.length) ? this.items[this.items.length - 1].data.id : "(0)";
        if(id=="(0)")this.app.createShade();
        //alert("this.items.length="+this.items.length)

        //alert("id="+id)
        var filter = this.options.filterData || {};
        filter.maxCharacterNumber = "-1"

        if(category=="deploy"){
            this.tabLocation = "centerDeploy"
            this.actions.getCenterWorkDeployListNext(id, count, filter, function (json) {
                if (callback)callback(json);
                this.app.destroyShade();
            }.bind(this))
        }else if(category=="drafter"){
            this.tabLocation = "centerDrafter"
            this.actions.getCenterWorkDrafterListNext(id, count, filter, function (json) {
                if (callback)callback(json);
                this.app.destroyShade();
            }.bind(this))
        }else if(category=="archive"){
            this.tabLocation = "centerArchive"
            this.actions.getCenterWorkArchiveListNext(id,count,filter,function(json){
                if(callback)callback(json);
                this.app.destroyShade();
            }.bind(this))
        }else{
            this.tabLocation = "centerDeploy"
            this.actions.getCenterWorkDeployListNext(id, count, filter, function (json) {
                if (callback)callback(json);
                this.app.destroyShade();
            }.bind(this),null,false)
        }
        //this.app.workList.tabLocation = this.tabLocation;

    },
    _removeDocument: function(documentData, all){
        this.actions.deleteCenterWork(documentData.id, function(json){
            if(this.tabLocation == "centerDrafter"){
                this.app.workList.loadCenterWorkList("drafter")
            }else if(this.tabLocation == "centerDeploy"){
                this.app.workList.loadCenterWorkList("deploy")
            }

            this.app.notice(this.app.lp.deleteDocumentOK, "success");
        }.bind(this));
    },
    _create: function(){

    },
    _openDocument: function( documentData ){
        MWF.xDesktop.requireApp("Execution", "WorkDeploy", function(){
            this.workDeploy = new MWF.xApplication.Execution.WorkDeploy(this, this.actions,{"id":documentData.id},{
                "isEdited":false,
                "centerWorkId":documentData.id,
                "onReloadView":function(json){
                    if(json && json.action && json.action == "reload"){
                        this.explorer.explorer.createRightContentDiv(this.explorer.explorer.workNavi1,this.explorer.explorer.workNavi2)
                    }
                }.bind(this)
            } );
            this.workDeploy.load();

        }.bind(this))
    },
    _queryCreateViewNode: function(){

    },
    _postCreateViewNode: function( viewNode ){

    },
    _queryCreateViewHead:function(){

    },
    _postCreateViewHead: function( headNode ){

    }

})

MWF.xApplication.Execution.WorkList.CenterWorkDocument = new Class({
    Extends: MWF.xApplication.Template.Explorer.ComplexDocument,

    viewActionReturn:function(d) {
        var ret = false
        if(d.operation && d.operation.length==1){
            ret = true;
        }
        //if (d.operation && d.operation.indexOf("VIEW")>-1)ret = true;
        return ret;
    },
    editActionReturn:function(d) {
        var ret = false
        if (d.operation && d.operation.indexOf("EDIT")>-1)ret = true;
        return ret;
    },
    deleteActionReturn:function(d) {
        var ret = false
        if (d.operation && d.operation.indexOf("DELETE")>-1)ret = true;
        return ret;
    },

    action_view:function(){
        MWF.xDesktop.requireApp("Execution", "WorkDeploy", function(){
            this.workDeploy = new MWF.xApplication.Execution.WorkDeploy(this.view, this.view.app.restActions,{"id":this.data.id},{
                "isEdited":false,
                "centerWorkId":this.data.id,
                "onReloadView":function(json){
                    if(json && json.action && json.action == "reload"){
                        this.explorer.explorer.clickCenterWorkTaskNavi("drafter")
                    }
                }.bind(this)
            });
            this.workDeploy.load();

        }.bind(this))
    },
    action_edit:function(){
        MWF.xDesktop.requireApp("Execution", "WorkDeploy", function(){
            this.workDeploy = new MWF.xApplication.Execution.WorkDeploy(this.view, this.view.app.restActions,{"id":this.data.id},{
                "isEdited":true,"centerWorkId":this.data.id
            } );
            this.workDeploy.load();

        }.bind(this))
    },
    action_delete:function(){
        var _self = this;
        _self.view.app.confirm("warn",e,_self.view.app.lp.workList.submitWarn.warnTitle,_self.view.app.lp.workList.submitWarn.warnContent.delete,300,120,function(){
            _self.actions.deleteCenterWork(_self.data.id, function(json){
                if(json.type && json.type=="success"){
                    this.app.notice(_self.view.app.lp.workList.prompt.deleteCenterWork, "success");
                    _self.app.workList.loadCenterWorkList(this.app.workList.workNavi2)
                }
            }.bind(_self),function(xhr,text,error){
                _self.explorer.explorer.showErrorMessage(xhr,text,error)
            }.bind(_self));

            this.close()


        },function(){
            this.close();
        })

    },
    _postCreateDocumentNode: function( itemNode, itemData ){

        if(itemNode.getElements("span[icon='showIcon']")){
            var iconObj = itemNode.getElements("span[icon='showIcon']")
            var icons = itemData.workProcessIdentity;
            var path = this.app.workList.path+"default/icon/";
            var styles = "margin-left:5px";
            for(i=0;i<icons.length;i++){
                if(icons[i]=="AUTHORIZE"){
                    iconObj.set("html",iconObj.get("html")+"<img src='"+path+"authorize.png' style='"+styles+"' >")
                }else if(icons[i]=="TACKBACK"){
                    iconObj.set("html",iconObj.get("html")+"<img src='"+path+"authorize.png' style='"+styles+"' >")
                }else if(icons[i]=="AUTHORIZECANCEL"){
                    iconObj.set("html",iconObj.get("html")+"<img src='"+path+"authorize.png' style='"+styles+"' >")
                }else if(icons[i]=="RESPONSIBILITY"){
                    iconObj.set("html",iconObj.get("html")+"<img src='"+path+"responsibility.png' style='"+styles+"' >")
                }else if(icons[i]=="COOPERATE"){
                    iconObj.set("html",iconObj.get("html")+"<img src='"+path+"cooperate.png' style='"+styles+"' >")
                }else if(icons[i]=="READ"){
                    iconObj.set("html",iconObj.get("html")+"<img src='"+path+"read.png' style='"+styles+"' >")
                }else if(icons[i]=="DEPLOY"){
                    iconObj.set("html",iconObj.get("html")+"<img src='"+path+"deploy.png' style='"+styles+"' >")
                }else if(icons[i]=="VIEW"){
                    iconObj.set("html",iconObj.get("html")+"<img src='"+path+"view.png' style='"+styles+"' >")
                }

            }
        }
    }
})



MWF.xApplication.Execution.WorkList.BaseWorkView = new Class({
    Extends: MWF.xApplication.Template.Explorer.ComplexView,
    _createDocument: function(data){
        return new MWF.xApplication.Execution.WorkList.BaseWorkDocument(this.viewNode, data, this.explorer, this);
    },

    _getCurrentPageData: function(callback, count){
        var category = this.category = this.options.category;

        if (!count)count = 20;
        var id = (this.items.length) ? this.items[this.items.length - 1].data.id : "(0)";
        if(id=="(0)")this.app.createShade()
        var filter = this.options.filterData || {};
        filter.maxCharacterNumber = "-1"

        if(category=="myDrafter"){   //我的草稿
            this.tabLocation = "baseDrafter"
            this.actions.getBaseWorkListMyDrafterNext(id, count, filter, function (json) {
                if (callback)callback(json);
                this.app.destroyShade();
            }.bind(this))
        }else if(category=="myDeploy"){  //我部署的
            this.tabLocation = "baseDeploy"
            this.actions.getBaseWorkListMyDeployNext(id, count, filter, function (json) {
                if (callback)callback(json);
                this.app.destroyShade();
            }.bind(this))
        }else if(category=="myDo"){ //我负责的
            this.tabLocation = "baseDo"
            this.actions.getBaseWorkListMyDoNext(id, count, filter, function (json) {
                if (callback)callback(json);
                this.app.destroyShade();
            }.bind(this))
        }else if(category=="myAssist"){ //我协助的
            this.tabLocation = "baseAssist"
            this.actions.getBaseWorkListMyAssistNext(id, count, filter, function (json) {
                if (callback)callback(json);
                this.app.destroyShade();
            }.bind(this))
        }else if(category=="myRead"){ //我阅知的
            this.tabLocation = "baseRead"
            this.actions.getBaseWorkListMyReadNext(id, count, filter, function (json) {
                if (callback)callback(json);
                this.app.destroyShade();
            }.bind(this))
        }else if(category=="myAppoint"){   //我委托的
            this.tabLocation = "baseAppoint"
            this.actions.getBaseWorkListMyAppointNext(id, count,filter,function(json){
                if (callback)callback(json)
                this.app.destroyShade();
            }.bind(this))
        }else if(category=="myArchive"){
            this.tabLocation = "baseArchive"
            this.actions.getBaseWorkListMyArchiveNext(id, count,filter,function(json){
                if (callback)callback(json)
                this.app.destroyShade();
            }.bind(this))
        }else if(category=="myAll"){
            this.tabLocation = "baseAll";
            this.actions.getBaseWorkListAllNext(id, count,filter,function(json){
                if (callback)callback(json)
                this.app.destroyShade();
            }.bind(this))
        }

        this.app.workList.tabLocation = this.tabLocation;

    },
    _removeDocument: function(documentData, all){
        this.actions.deleteBaseWork(documentData.id, function(json){
            if(json.type && json.type=="success"){
                if(this.tabLocation == "baseDrafter"){
                    this.app.workList.loadBaseWorkList("myDrafter")
                }else if(this.tabLocation == "baseDeploy"){
                    this.app.workList.loadBaseWorkList("myDeploy")
                }

                this.app.notice(this.app.lp.deleteDocumentOK, "success");
            }

        }.bind(this),function(xhr,text,error){
            var errorText = error;
            if (xhr) errorMessage = xhr.responseText;
            var e = JSON.parse(errorMessage);
            if(e.message){
                this.app.notice( e.message,"error");
            }else{
                this.app.notice( errorText,"error");
            }
        }.bind(this));
    },
    _create: function(){

    },
    _openDocument: function( documentData ){
        if( documentData.workProcessStatus == this.lp.workProcessStatus.drafter ){
            MWF.xDesktop.requireApp("Execution", "WorkForm", function(){
                var workform = new MWF.xApplication.Execution.WorkForm(this, this.app.restActions,documentData,{
                    "isNew": false,
                    "isEdited": false,
                    "tabLocation":this.category
                });

                workform.load();
            }.bind(this));
        }else{
            MWF.xDesktop.requireApp("Execution", "WorkDetail", function(){
                var workform = new MWF.xApplication.Execution.WorkDetail(this, this.app.restActions,documentData,{
                    "isNew": false,
                    "isEdited": false,
                    "tabLocation":this.category
                });

                workform.load();
            }.bind(this));
        }


    },
    _queryCreateViewNode: function(){

    },
    _postCreateViewNode: function( viewNode ){

    },
    _queryCreateViewHead:function(){

    },
    _postCreateViewHead: function( headNode ){

    }

})

MWF.xApplication.Execution.WorkList.BaseWorkDocument = new Class({
    Extends: MWF.xApplication.Template.Explorer.ComplexDocument,

    viewActionReturn:function(d) {
        var ret = false
        if(d.operation && d.operation.length==1){
            ret = true;
        }
        //if (d.operation && d.operation.indexOf("VIEW")>-1)ret = true;
        return ret;
    },
    editActionReturn:function(d) {
        var ret = false
        if (d.operation && d.operation.indexOf("EDIT")>-1)ret = true;
        return ret;
    },
    splitActionReturn:function(d) {
        var ret = false
        if (d.operation && d.operation.indexOf("SPLIT")>-1)ret = true;
        return ret;
    },
    authorizeActionReturn:function(d) {
        var ret = false
        if (d.operation && d.operation.indexOf("AUTHORIZE")>-1)ret = true;
        return ret;
    },
    tackBackActionReturn:function(d) {
        var ret = false
        if (d.operation && d.operation.indexOf("TACKBACK")>-1)ret = true;
        return ret;
    },
    reportActionReturn:function(d) {
        var ret = false
        if (d.operation && d.operation.indexOf("REPORT")>-1)ret = true;
        return ret;
    },
    deleteActionReturn:function(d) {
        var ret = false
        if (d.operation && d.operation.indexOf("DELETE")>-1)ret = true;
        return ret;
    },
    archiveActionReturn:function(d){
        var ret = false;
        if (d.operation && d.operation.indexOf("ARCHIVE")>-1)ret = true;
        return ret;
    },
    progressActionReturn:function(d){
        var ret = false;
        if (d.operation && d.operation.indexOf("PROGRESS")>-1)ret = true;
        return ret;
    },
    action_view:function(){
        if( this.data.workProcessStatus == this.lp.workProcessStatus.drafter ){
            MWF.xDesktop.requireApp("Execution", "WorkForm", function(){
                var workform = new MWF.xApplication.Execution.WorkForm(this, this.app.restActions,this.data,{
                    "isNew": false,
                    "isEdited": false,
                    "tabLocation":this.category
                });
                workform.load();
            }.bind(this));
        }else{
            MWF.xDesktop.requireApp("Execution", "WorkDetail", function(){
                var workform = new MWF.xApplication.Execution.WorkDetail(this, this.app.restActions,this.data,{
                    "isNew": false,
                    "isEdited": false,
                    "tabLocation":this.category
                });
                workform.load();
            }.bind(this));
        }
    },

    action_edit:function(){
        MWF.xDesktop.requireApp("Execution", "WorkForm", function(){
            var workform = new MWF.xApplication.Execution.WorkForm(this, this.app.restActions,this.data,{
                "isNew": false,
                "isEdited": true,
                "tabLocation":this.view.category,
                "actionStatus":"save"
            });
            workform.load();
        }.bind(this));
    },
    action_split:function(){
        MWF.xDesktop.requireApp("Execution", "WorkForm", function(){

            var workform = new MWF.xApplication.Execution.WorkForm(this, this.app.restActions,{},{
                "isNew": true,
                "isEdited": false,
                "parentWorkId":this.data.id,
                "actionStatus":"deploy"

            });

            workform.load();
        }.bind(this));
    },
    action_authorize:function(){
        data = {
            workId : this.data.id
        };
        var appointForm =  new MWF.xApplication.Execution.WorkList.Appoint(this.view.app,this.view.app.restActions,data,this.view.css,{
            "ieEdited": true,
            "onReloadView" : function( data ){
                //this.view.app.workList.createRightContentDiv("base","myAppoint");
                this.view.app.workList.clickBaseWorkTaskNavi("myAppoint")
            }.bind(this)
        });
        appointForm.load();
    },
    action_tackBack:function(e){
        var _self = this;
        _self.view.app.confirm("warn",e,_self.view.app.lp.workList.submitWarn.warnTitle,_self.view.app.lp.workList.submitWarn.warnContent.tackBack,300,120,function(){
            data = {
                workId : _self.data.id
            };

            _self.actions.unAppointBaseWork(data,function(json){
                this.app.notice(_self.view.app.lp.workList.prompt.tackbackBaseWork,"success");
            }.bind(_self),function(xhr,text,error){
                var errorText = error;
                if (xhr) errorMessage = xhr.responseText;
                var e = JSON.parse(errorMessage);
                if(e.message){
                    this.app.notice( e.message,"error");
                }else{
                    this.app.notice( errorText,"error");
                }
            }.bind(_self),false)

            _self.view.app.workList.clickBaseWorkTaskNavi("myAppoint");
            this.close()

        },function(){
            this.close();
        })
    },
    action_report:function(){
        MWF.xDesktop.requireApp("Execution", "WorkReport", function(){
            var data = {
                workId : this.data.id
            }
            var workReport = new MWF.xApplication.Execution.WorkReport(this, this.app.restActions,data,{
                "isNew": false,
                "isEdited": false,
                "tabLocation":this.view.category,
                "from":"drafter"
            });
            workReport.load();
        }.bind(this));
    },
    action_delete:function(e){
        var _self = this;
        _self.view.app.confirm("warn",e,_self.view.app.lp.workList.submitWarn.warnTitle,_self.view.app.lp.workList.submitWarn.warnContent.delete,300,120,function(){
            _self.actions.deleteBaseWork(_self.data.id, function(json){
                if(json.type && json.type=="success"){
                    this.app.notice(_self.view.app.lp.workList.prompt.deleteBaseWork, "success");
                    _self.app.workList.clickBaseWorkTaskNavi(_self.app.workList.workNavi2)
                }
            }.bind(_self),function(xhr,text,error){
                _self.app.WorkList.showErrorMessage(xhr,text,error)
            }.bind(_self));

            this.close()


        },function(){
            this.close();
        })

    },
    action_archive:function(e){
        var _self = this;
        _self.view.app.confirm("warn",e,_self.view.app.lp.workList.submitWarn.warnTitle,_self.view.app.lp.workList.submitWarn.warnContent.archive,300,120,function(){
            _self.actions.archiveBaseWork(_self.data.id, function(json){
                if(json.type && json.type=="success"){
                    this.app.notice(_self.view.app.lp.workList.prompt.deleteBaseWork, "success");
                    _self.app.workList.clickBaseWorkTaskNavi(_self.app.workList.workNavi2)
                }
            }.bind(_self),function(xhr,text,error){
                _self.app.WorkList.showErrorMessage(xhr,text,error)
            }.bind(_self));

            this.close()


        },function(){
            this.close();
        })
    },
    action_progress:function(e){

        data = {
            title : this.data.title,
            workId : this.data.id,
            isCompleted : this.data.isCompleted,
            overallProgress : this.data.overallProgress
        };
        var progressForm =  new MWF.xApplication.Execution.WorkList.Progress(this.view.app,this.view.app.restActions,data,this.view.css,{
            "ieEdited": true,
            "onReloadView" : function( data ){
                //this.view.app.workList.createRightContentDiv("base","myAppoint");
                this.view.app.workList.clickBaseWorkTaskNavi(this.app.workList.workNavi2 || "")
            }.bind(this)
        });
        progressForm.load();


    },
    _queryCreateDocumentNode:function( itemData ){

    },
    _postCreateDocumentNode: function( itemNode, itemData ){
        if(itemNode.getElements("div[name='appointDiv']")){
            if(itemData.okrWorkAuthorizeRecord){
                itemNode.getElements("div[name='appointDiv']").setStyle("display","")
            }
        }
        if(itemNode.getElements("div[item='workDetail']")){
            itemNode.getElements("div[item='workDetail']").set("title",itemData.workDetail)
        }
        if(itemNode.getElements("div[item='progressAction']")){
            itemNode.getElements("div[item='progressAction']").set("title",itemData.progressAction)
        }
        if(itemNode.getElements("span[icon='showIcon']")){
            var iconObj = itemNode.getElements("span[icon='showIcon']")
            var icons = itemData.workProcessIdentity;
            var path = this.app.workList.path+"default/icon/";
            var styles = "margin-left:5px";
            for(i=0;i<icons.length;i++){
                if(icons[i]=="AUTHORIZE"){
                    iconObj.set("html",iconObj.get("html")+"<img src='"+path+"authorize.png' style='"+styles+"' >")
                }else if(icons[i]=="TACKBACK"){
                    iconObj.set("html",iconObj.get("html")+"<img src='"+path+"authorize.png' style='"+styles+"' >")
                }else if(icons[i]=="AUTHORIZECANCEL"){
                    iconObj.set("html",iconObj.get("html")+"<img src='"+path+"authorize.png' style='"+styles+"' >")
                }else if(icons[i]=="RESPONSIBILITY"){
                    iconObj.set("html",iconObj.get("html")+"<img src='"+path+"responsibility.png' style='"+styles+"' >")
                }else if(icons[i]=="COOPERATE"){
                    iconObj.set("html",iconObj.get("html")+"<img src='"+path+"cooperate.png' style='"+styles+"' >")
                }else if(icons[i]=="READ"){
                    iconObj.set("html",iconObj.get("html")+"<img src='"+path+"read.png' style='"+styles+"' >")
                }else if(icons[i]=="DEPLOY"){
                    iconObj.set("html",iconObj.get("html")+"<img src='"+path+"deploy.png' style='"+styles+"' >")
                }else if(icons[i]=="VIEW"){
                    iconObj.set("html",iconObj.get("html")+"<img src='"+path+"view.png' style='"+styles+"' >")
                }

            }
        }
    }

})



MWF.xApplication.Execution.WorkList.Appoint = new Class({
    Extends: MWF.xApplication.Template.Explorer.PopupForm,
    Implements: [Options, Events],
    options: {
        "style": "default",
        "width": "500",
        "height": "300",
        "hasTop": true,
        "hasIcon": false,
        "hasBottom": true,
        "title": "",
        "draggable": false,
        "closeAction": true,
        "closeText" : "",
        "needLogout" : false,
        "isNew": true
    },
    initialize: function (app, actions, data, css, options) {
        this.setOptions(options);
        this.app = app;
        this.actions = this.app.restActions;
        this.css = css;

        //this.options.title = this.app.lp.idenitySelectTitle;
        //
        //this.identities = identities;
        this.data = data || {};
        this.actions = actions;
    },
    load: function () {
        this.create();
    },

    createTopNode: function () {
        if (!this.formTopNode) {
            this.formTopNode = new Element("div.formTopNode", {
                "styles": this.css.formTopNode
            }).inject(this.formNode);

            this.formTopIconNode = new Element("div.formTopIconNode", {
                "styles": this.css.formTopIconNode
            }).inject(this.formTopNode)

            this.formTopTextNode = new Element("div.formTopTextNode", {
                "styles": this.css.formTopTextNode,
                "text": this.app.lp.workTask.appoint.appointTitle
            }).inject(this.formTopNode)

            if (this.options.closeAction) {
                this.formTopCloseActionNode = new Element("div.formTopCloseActionNode", {"styles": this.css.formTopCloseActionNode}).inject(this.formTopNode);
                this.formTopCloseActionNode.addEvent("click", function () {
                    this.close()
                }.bind(this))
            }

            this.formTopContentNode = new Element("div.formTopContentNode", {
                "styles": this.css.formTopContentNode
            }).inject(this.formTopNode)

            //this._createTopContent();

        }

    },
    _createTableContent: function () {
        var table = new Element("table",{"width":"100%",border:"0",cellpadding:"5",cellspacing:"0"}).inject(this.formTableArea);
        table.setStyles({"margin-top":"40px"})
        var tr = new Element("tr").inject(table);
        var td = new Element("td",{
            text : this.app.lp.workTask.appoint.appointFor,
            valign:"middle",
            width:"20%"
        }).inject(tr);
        td = new Element("td",{width:"80%"}).inject(tr);
        this.appointPerson = new Element("input",{
            "readonly": true
        }).inject(td);
        this.appointPerson.setStyles({"width":"90%","height":"20px"})
        this.appointPerson.addEvents({
            "click":function(){
                this.selectPerson(this.appointPerson,"identity",1)
            }.bind(this)
        })
        tr = new Element("tr").inject(table);
        td = new Element("td",{
            "text" : this.app.lp.workTask.appoint.appointOpinion,
            valign:"middle"
        }).inject(tr);


        td = new Element("td").inject(tr);
        this.appointOpinion = new Element("textarea").inject(td)
        this.appointOpinion.setStyles({"width":"90%","height":"50px"})



    },

    _createBottomContent: function () {
        this.cancelActionNode = new Element("div.formCancelActionNode", {
            "styles": this.css.formCancelActionNode,
            "text": this.app.lp.workTask.appoint.appointCancel
        }).inject(this.formBottomNode);

        this.cancelActionNode.addEvent("click", function (e) {
            this.close();
        }.bind(this));

        this.okActionNode = new Element("div.formOkActionNode", {
            "styles": this.css.formOkActionNode,
            "text": this.app.lp.workTask.appoint.appointOK
        }).inject(this.formBottomNode);

        this.okActionNode.addEvent("click", function (e) {
            this.ok(e);
        }.bind(this));
    },
    ok:function(){

        if(this.appointPerson.get("value")==""){
            this.app.notice(this.app.lp.workTask.appoint.personEmpty,"error")
            return false;
        }
        if(this.appointOpinion.get("value")==""){
            this.app.notice(this.app.lp.workTask.appoint.opinionEmpty,"error")
            return false;
        }
        var submitData = {
            workId : this.data.workId,
            undertakerIdentity : this.appointPerson.get("value"),
            authorizeOpinion : this.appointOpinion.get("value")
        }
        this.actions.appointBaseWork(submitData,function(json){
            this.close();
            this.fireEvent("reloadView");
        }.bind(this),function(xhr,text,error){
            var errorText = error;
            if (xhr) errorMessage = xhr.responseText;
            var e = JSON.parse(errorMessage);
            if(e.message){
                this.app.notice( e.message,"error");
            }else{
                this.app.notice( errorText,"error");
            }
        }.bind(this),false)
    },
    selectPerson: function( item, type,count ) {
        MWF.xDesktop.requireApp("Organization", "Selector.package", null, false);
        this.fireEvent("querySelect", this);
        var value = item.get("value").split(this.valSeparator);
        var options = {
            "type": type,
            "title": this.app.lp.workTask.appoint.appointTitle,
            "count": count,
            "names": value || [],
            "onComplete": function (items) {
                var arr = [];
                items.each(function (item) {
                    arr.push(item.data.name);
                }.bind(this));
                item.set("value", arr.join(","));
            }.bind(this)
        };

        var selector = new MWF.OrgSelector(this.app.content, options);
    }

});


MWF.xApplication.Execution.WorkList.Progress = new Class({
    Extends: MWF.xApplication.Template.Explorer.PopupForm,
    Implements: [Options, Events],
    options: {
        "style": "default",
        "width": "400",
        "height": "200",
        "hasTop": true,
        "hasIcon": false,
        "hasBottom": true,
        "title": "",
        "draggable": true,
        "closeAction": true,
        "closeText" : "",
        "needLogout" : false,
        "isNew": true
    },
    initialize: function (app, actions, data, css, options) {
        this.setOptions(options);
        this.app = app;
        this.actions = this.app.restActions;
        this.css = css;

        //this.options.title = this.app.lp.idenitySelectTitle;
        //
        //this.identities = identities;
        this.data = data || {};
        this.actions = actions;
    },
    load: function () {
        this.create();
    },
    createTopNode: function () {
        if (!this.formTopNode) {
            this.formTopNode = new Element("div.formTopNode", {
                "styles": this.css.formTopNode
            }).inject(this.formNode);

            this.formTopIconNode = new Element("div.formTopIconNode", {
                "styles": this.css.formTopIconNode
            }).inject(this.formTopNode)

            this.formTopTextNode = new Element("div.formTopTextNode", {
                "styles": this.css.formTopTextNode,
                "text": this.app.lp.workList.progress.progressTitle
            }).inject(this.formTopNode)

            if (this.options.closeAction) {
                this.formTopCloseActionNode = new Element("div.formTopCloseActionNode", {"styles": this.css.formTopCloseActionNode}).inject(this.formTopNode);
                this.formTopCloseActionNode.addEvent("click", function () {
                    this.close()
                }.bind(this))
            }

            this.formTopContentNode = new Element("div.formTopContentNode", {
                "styles": this.css.formTopContentNode
            }).inject(this.formTopNode)

            //this._createTopContent();

        }

    },
    _createTableContent: function () {
        this.formTableArea.setStyles({"margin-top":"40px"})
        var table = new Element("table",{"width":"100%",border:"0",cellpadding:"5",cellspacing:"0"}).inject(this.formTableArea);
        table.setStyles({"margin-top":"10px"});
        tr = new Element("tr").inject(table);
        tr = new Element("tr").inject(table);
        td = new Element("td",{
            "text" : this.app.lp.workList.progress.completedPercent,
            align:"center",
            "width":"40%"
        }).inject(tr);

        td = new Element("td").inject(tr);

        this.completePercentSelect = new Element("select.completePercentSelect").inject(td)
        var completePercentSelectOption = new Element("option.completePercentSelectOption",{"text":"0%","value":"0"}).inject(this.completePercentSelect)
        completePercentSelectOption = new Element("option.completePercentSelectOption",{"text":"10%","value":"10"}).inject(this.completePercentSelect)
        completePercentSelectOption = new Element("option.completePercentSelectOption",{"text":"20%","value":"20"}).inject(this.completePercentSelect)
        completePercentSelectOption = new Element("option.completePercentSelectOption",{"text":"30%","value":"30"}).inject(this.completePercentSelect)
        completePercentSelectOption = new Element("option.completePercentSelectOption",{"text":"40%","value":"40"}).inject(this.completePercentSelect)
        completePercentSelectOption = new Element("option.completePercentSelectOption",{"text":"50%","value":"50"}).inject(this.completePercentSelect)
        completePercentSelectOption = new Element("option.completePercentSelectOption",{"text":"60%","value":"60"}).inject(this.completePercentSelect)
        completePercentSelectOption = new Element("option.completePercentSelectOption",{"text":"70%","value":"70"}).inject(this.completePercentSelect)
        completePercentSelectOption = new Element("option.completePercentSelectOption",{"text":"80%","value":"80"}).inject(this.completePercentSelect)
        completePercentSelectOption = new Element("option.completePercentSelectOption",{"text":"90%","value":"90"}).inject(this.completePercentSelect)
        completePercentSelectOption = new Element("option.completePercentSelectOption",{"text":"100%","value":"100"}).inject(this.completePercentSelect)

        this.completePercentSelect.set("value",parseInt(this.data.overallProgress))
    },

    _createBottomContent: function () {
        this.cancelActionNode = new Element("div.formCancelActionNode", {
            "styles": this.css.formCancelActionNode,
            "text": this.app.lp.workTask.appoint.appointCancel
        }).inject(this.formBottomNode);

        this.cancelActionNode.addEvent("click", function (e) {
            this.close();
        }.bind(this));

        this.okActionNode = new Element("div.formOkActionNode", {
            "styles": this.css.formOkActionNode,
            "text": this.app.lp.workTask.appoint.appointOK
        }).inject(this.formBottomNode);

        this.okActionNode.addEvent("click", function (e) {
            this.ok(e);
        }.bind(this));
    },
    ok:function(){
        var percent = this.completePercentSelect.get("value");
        this.actions.progressBaseWork(this.data.workId,parseInt(percent),
            function(json){
                this.close();
                this.fireEvent("reloadView");
            }.bind(this),
            function(xhr,text,error){
                this.app.showErrorMessage(xhr,text,error)
            }.bind(this)
        )
    }

});