text: MWF.require("MWF.widget.Mask", null, false);
  MWF.xApplication.cms = MWF.xApplication.cms || {};
  MWF.xApplication.cms.Index = MWF.xApplication.cms.Index || {};
  
  MWF.xApplication.cms.Index.Creater = new Class({
      Extends: MWF.widget.Common,
      Implements: [Options, Events],
      options: {
          "style": "default"
      },
      initialize: function(app, columnData, view, options){
          this.setOptions(options);
          this.path = "../x_component_cms_Index/$Creater/";
          this.cssPath = "../x_component_cms_Index/$Creater/"+this.options.style+"/css.wcss";
          this._loadCss();
          this.app = app;
          this.view = view;
          this.columnData = columnData;
  
          MWF.xDesktop.requireApp("cms.Index", "$Creater."+MWF.language, null, false);
          this.lp = MWF.xApplication.cms.Index.Creater.lp;
      },
      load: function(){
          if (!this.startDocumentAreaNode){
              this.createStartDocumentArea();
          }
          this.startDocumentAreaNode.fade("0.95");
      },
      closeStartDocumentArea: function(){
          //if (this.startDocumentAreaNode) this.startDocumentTween.start("left", "0px", "-400px");
          if (this.startDocumentAreaNode) this.startDocumentAreaNode.fade("out");
      },
  
      createStartDocumentArea: function(){
          this.createStartDocumentAreaNode();
          this.createStartDocumentCloseNode();
          this.createStartDocumentScrollNode();
          if( this.columnData ){
              if(!this.columnData.name)this.columnData.name = this.columnData.appName;
              new MWF.xApplication.cms.Index.Creater.Column(this.columnData, this.app, this, this.startDocumentContentNode, true );
          }else{
              this.listColumns();
          }
  
          this.setResizeStartDocumentAreaHeight();
          this.app.addEvent("resize", this.setResizeStartDocumentAreaHeight.bind(this));
  
      },
      createStartDocumentAreaNode: function(){
          this.startDocumentAreaNode = new Element("div", {"styles": this.css.startDocumentAreaNode}).inject(this.app.content);
          this.startDocumentAreaNode.addEvent("click", function(e){
              this.closeStartDocumentArea();
          }.bind(this));
      },
      createStartDocumentCloseNode: function(){
          this.startDocumentTopNode = new Element("div", {"styles": this.css.startDocumentTopNode}).inject(this.startDocumentAreaNode);
          this.startDocumentCloseNode = new Element("div", {"styles": this.css.startDocumentCloseNode}).inject(this.startDocumentTopNode);
          this.startDocumentCloseNode.addEvent("click", function(e){
              this.closeStartDocumentArea();
          }.bind(this));
      },
      createStartDocumentScrollNode: function(){
          this.startDocumentScrollNode = new Element("div", {"styles": this.css.startDocumentScrollNode}).inject(this.startDocumentAreaNode);
          MWF.require("MWF.widget.ScrollBar", function(){
              new MWF.widget.ScrollBar(this.startDocumentScrollNode, {
                  "style":"xApp_taskcenter", "where": "after", "distance": 30, "friction": 4,	"axis": {"x": false, "y": true}
              });
          }.bind(this));
          this.startDocumentContentNode = new Element("div", {"styles": this.css.startDocumentContentNode}).inject(this.startDocumentScrollNode);
      },
      listColumns: function(){
          this.getAction(function(){
              this.action.listColumnByPublish(function(json){
                  json.data.each(function(column){
                      if(!column.name)column.name = column.appName;
                      new MWF.xApplication.cms.Index.Creater.Column(column, this.app, this, this.startDocumentContentNode);
                  }.bind(this));
              }.bind(this));
          }.bind(this));
      },
      getAction: function(callback){
          if (!this.action){
              //MWF.xDesktop.requireApp("cms.Index", "Actions.RestActions", function(){
                  this.action = MWF.Actions.get("x_cms_assemble_control");  //new MWF.xApplication.cms.Index.Actions.RestActions();
                  if (callback) callback();
              //}.bind(this));
          }else{
              if (callback) callback();
          }
      },
      setResizeStartDocumentAreaHeight: function(){
          var size = this.app.content.getSize();
          if (this.startDocumentAreaNode){
              var topSize = this.startDocumentCloseNode.getSize();
              var y = size.y-topSize.y-80;
              var x = size.x - 110;
              var areay = size.y-60;
              var areax = size.x-90;
              this.startDocumentScrollNode.setStyle("height", ""+y+"px");
              this.startDocumentScrollNode.setStyle("width", ""+x+"px");
              this.startDocumentAreaNode.setStyle("height", ""+areay+"px");
              this.startDocumentAreaNode.setStyle("width", ""+areax+"px");
          }
      }
  });
  
  MWF.xApplication.cms.Index.Creater.Column = new Class({
  
      initialize: function(data, app, creater, container, needGetCategorys ){
          this.bgColors = ["#30afdc", "#e9573e", "#8dc153", "#9d4a9c", "#ab8465", "#959801", "#434343", "#ffb400", "#9e7698", "#00a489"];
          this.data = data;
          this.app = app;
          this.creater = creater;
          this.container = container;
          this.css = this.creater.css;
          this.needGetCategorys = needGetCategorys;
  
          this.load();
      },
      load: function(){
          this.node = new Element("div", {"styles": this.css.columnNode}).inject(this.container);
  
          this.topNode = new Element("div", {"styles": this.css.columnTopNode}).inject(this.node);
          //   this.topNode.setStyle("background-color", this.bgColors[(Math.random()*10).toInt()]);
  
          //this.iconNode = new Element("div", {"styles": this.css.columnIconNode}).inject(this.topNode);
          //if (this.data.appIcon){
          //    this.iconNode.setStyle("background-image", "url(data:image/png;base64,"+this.data.appIcon+")");
          //}else{
          //    this.iconNode.setStyle("background-image", "url("+this.creater.path+this.creater.options.style+"/column.png)")
          //}
          var iconAreaNode = this.iconAreaNode = new Element("div",{
              "styles" : this.css.columnIconAreaNode
          }).inject(this.topNode);
          var iconNode = this.iconNode = new Element("img",{
              "styles" : this.css.columnIconNode
          }).inject(iconAreaNode);
          if (this.data.appIcon){
              this.iconNode.set("src", "data:image/png;base64,"+this.data.appIcon+"");
          }else{
              this.iconNode.set("src", this.creater.path+this.creater.options.style+"/column.png")
          }
  
          this.textNode = new Element("div", {"styles": this.css.columnTextNode}).inject(this.topNode);
          this.textNode.set("text", this.data.name);
  
          this.childNode = new Element("div", {"styles": this.css.columnChildNode}).inject(this.node);
          this.loadChild();
      },
      loadChild: function(){
          if( this.needGetCategorys ){
              this.creater.getAction(function(){
                  this.creater.action.listCategoryByPublisher(this.data.id,function(json){
                      if (json.data.length){
                          json.data.each(function(category){
                              new MWF.xApplication.cms.Index.Creater.Category(category, this, this.childNode);
                          }.bind(this));
                      }else{
                          this.node.setStyle("display", "none");
                      }
                  }.bind(this), null, this.data.id)
              }.bind(this))
          }else{
              if( this.data.wrapOutCategoryList && this.data.wrapOutCategoryList.length ){
                  this.data.wrapOutCategoryList.each(function(category){
                      new MWF.xApplication.cms.Index.Creater.Category(category, this, this.childNode);
                  }.bind(this));
              }else{
                  this.node.setStyle("display", "none");
              }
          }
      }
  });
  
  MWF.xApplication.cms.Index.Creater.Category = new Class({
      initialize: function(data, column, container){
          this.data = data;
          this.column = column;
          this.app = this.column.app;
          this.creater = this.column.creater;
          this.container = container;
          this.css = this.creater.css;
  
          this.load();
      },
      load: function(){
          if( !this.data.name )this.data.name = this.data.categoryName;
          this.node = new Element("div.categoryItem", {"styles": this.css.startCategoryNode}).inject(this.container);
  
          this.iconNode = new Element("div", {"styles": this.css.categoryIconNode}).inject(this.node);
          this.textNode = new Element("div", {"styles": this.css.categoryTextNode}).inject(this.node);
  
          this.textNode.set({
              "text": this.data.categoryName
          });
          var _self = this;
          this.node.addEvents({
              "mouseover": function(e){this.node.setStyles(this.css.startCategoryNode_over);}.bind(this),
              "mouseout": function(e){this.node.setStyles(this.css.startCategoryNode_out);}.bind(this),
              "click": function(e){
                  this.createDocument(e);
              }.bind(this)
          });
      },
  
      //createDocument: function( e ){
      //    var fielter = {
      //        "categoryIdList": [this.data.id ],
      //        "creatorList": [layout.desktop.session.user.name]
      //    };
      //    this.creater.getAction(function(){
      //        this.creater.action.listDraftNext("(0)", 1, fielter, function(json){
      //            if( json.data.length > 0 ){
      //                this._openDocument(json.data[0].id);
      //            }else{
      //                this._createDocument();
      //            }
      //        }.bind(this));
      //    }.bind(this))
      //},
      createDocument : function(){
          this.creater.closeStartDocumentArea();
          if( !this.data.formId || this.data.formId=="" ){
              this.app.notice(this.creater.lp.noFormSelected, "error");
              return;
          }
          MWF.xDesktop.requireApp("cms.Index", "Starter", function(){
              var starter = new MWF.xApplication.cms.Index.Starter(this.column.data, this.data, this.app, {
                  //"onStarted": function(data, title, categoryName){
                  //    this.afterStart(data, title, categoryName);
                  //}.bind(this)
                  onPostPublish : function(){
                      if(this.creater.view )this.creater.view.reload();
                  }.bind(this)
              });
              starter.load();
          }.bind(this));
      }
      //_openDocument: function(id,el){
      //    var _self = this;
      //
      //    var appId = "cms.Document"+id;
      //    if (_self.app.desktop.apps[appId]){
      //        _self.app.desktop.apps[appId].setCurrent();
      //    }else {
      //        var options = {
      //            "readonly" :false,
      //            "documentId": id,
      //            "appId": appId,
      //            "postPublish" : function(){
      //                if(_self.creater.view )_self.creater.view.reload();
      //            }
      //        };
      //        this.app.desktop.openApplication(el, "cms.Document", options);
      //    }
      //},
      //afterStart : function(data, title, categoryName){
      //    var _self = this;
      //    var appId = "cms.Document"+data.id;
      //    if (_self.app.desktop.apps[appId]){
      //        _self.app.desktop.apps[appId].setCurrent();
      //    }else {
      //        var options = {
      //            "readonly" :false,
      //            "documentId": data.id,
      //            "appId": appId,
      //            "postPublish" : function(){
      //                if(_self.creater.view )_self.creater.view.reload();
      //            }
      //        };
      //        this.app.desktop.openApplication(null, "cms.Document", options);
      //    }
      //}
  
  });