﻿
var ToolBarContextModel=null;
var vvItemColumn={
    ImageUrl:0,
    NodeText:1,
    FileSizeName:2,
    FileSpaceSizeName:3,
    FormatText:4,
    UpdatedDate:5,
    TId:6,
    PId:7,
    IsFolder:8,
    IsSecurity:9,
    FileSize:10,
    FileSpaceSize:11,
    FormatId:12,
    FormatName:13,
    IsShareRoot:14,
    ModuleId:15,
    CreatedDate:16,
    Url:17
}


/*
开始定义节点原型
*/
ChangeShareRootImgUrl=function(_Model,IsChangeToShare)
{ 
    var imgUrl=vvImgUrl.Folder;
    if(IsChangeToShare)
    imgUrl=vvImgUrl.ShareFolder;

    var node=_Model.IsNode?_Model.GetObject():TreeView1.FindNodeById(_Model.TId);
    var item=_Model.IsNode?Grid1.GetRowFromKey(0,_Model.TId):_Model.GetObject();

    if(node)
    {
        node.SetProperty('ImageUrl',imgUrl);	
        node.ParentTreeView.Render();
    }
    if(item)
    {
        item.SetValue(vvItemColumn.ImageUrl,imgUrl,true);
        Grid1.Render();
    }
}
vv.Menu.EnablePaste=function(enable)
{
   
}
vv.Menu.EnableItem=function(enable)
{
   
}
vv.p.Init=function()
{
    vv.p.LoadCompleted=true;

    
    if(!dd.ie)
    {
        document.captureEvents(Event.MOUSEMOVE);
        document.captureEvents(Event.MOUSEDOWN);
        document.captureEvents(Event.MOUSEOVER);
        document.captureEvents(Event.MOUSEUP);
        document.captureEvents(Event.DBLCLICK);
    }
    document.onmousemove = vvMouseMoveHandle;
    document.onmousedown = vvMouseDownHandle;
    document.onmouseup = vvMouseUpHandle;
    document.onresize = vvResizeHandle;
    document.onkeyup = vvKeyup;
    document.onkeydown = vvKeyDownHandle;
    document.oncontextmenu = function(){return false;};
    if(document.oncontextmenu)document.oncontextmenu= function(){return false;};
    document.onclick = vvClickHandle;
    document.onselectstart = vvSelectStart;

    
    
	//vv.p.JumpToNodeByLocation();
}

var __SystemModelArray=[]
function ModelFactory(ModuleId,FormatId,IsShareModule,IsFolder,IsDelete)
{

    switch(ModuleId.toString())
    {
        case "1":
            if(IsDelete)
            {
                return new DeleteFolderModel(ModuleId);
            }
            
            if(!IsFolder)
            {
                if(FormatId.toString()=="56"||FormatId.toString()=="60")
                    return new FriendModel(ModuleId);
                else
                    return new FileModel(ModuleId,IsShareModule);
            }
            return new FolderModel(ModuleId,IsShareModule);
        break;
         case "3":
         case "4":
            if(!IsFolder)
            {
                    return new FileModel(ModuleId,true);
            }
            return new FolderModel(ModuleId,true);
        break;
         
        case "20":
            if(IsFolder)
            return new SystemModel();
            else
            return new FriendModel(ModuleId);
        break;
        case "30":
        case "40":
        case "41":
            if(!IsFolder)
            {
                return new FileModel(ModuleId,IsShareModule);
            }
            return new FolderModel(ModuleId,IsShareModule);
        break;
        default:
            return new SystemModel();
        break;
    }

}
function GetModelByNode(node){

    if(node==null)return null;
    var model=null;
    model=__SystemModelArray[node.ID];
    
    if(model)
    {
        model.ContentCallbackUrl=node.GetProperty("ContentCallbackUrl");
        model.IsNode=true;
        model.Object=node;
        model.ImageUrl=node.GetProperty("ImageUrl");
        model.NodeText=node.GetProperty("Text");
        
        return model;
    }
    var IsShareModule=false;
    IsShareModule=node.ID.indexOf("_")>-1
    var FormatId=node.GetProperty(vn.FormatId);
    var IsFolder=node.GetProperty(vn.IsFolder)=="true";
    model=ModelFactory(node.GetProperty(vn.ModuleId),FormatId,IsShareModule,IsFolder,false);
    model.ModuleId=model.Module.ModuleId;
    model.IsNode=true;
    model.Object=node;
    model.TId=node.ID;
    model.IsLink=false;
    if(node.ParentNode)model.PId=node.ParentNode.ID;
    else
        model.PId=RootModel.TId; 
    model.NodeText=node.GetProperty(vn.Text);
    model.ContentCallbackUrl=node.GetProperty("ContentCallbackUrl");
    model.IsFolder=IsFolder;
    model.IsSecurity=node.GetProperty(vn.IsSecurity)=="true";
    model.IsShareRoot=node.GetProperty(vn.FormatId)+""=="100";
    model.CreatedDate=node.GetProperty(vn.CreatedDate);
    model.UpdatedDate=node.GetProperty(vn.UpdatedDate);
    model.ImageUrl=node.GetProperty("ImageUrl");
    model.FormatText=node.GetProperty("FormatText");
    return model;
 
}
function GetModelByItem(item){
if(item==null)return null;
    var model=null;
    model=__SystemModelArray[item.GetMember(vn.TId).Value];
   
    if(model)
    {
    
        model.Object=item;
        model.IsNode=false;
        model.ImageUrl=item.GetMember(vn.ImageUrl).Value;
        model.NodeText=item.GetMember(vn.NodeText).Value;
        return model;
    }
 
    var IsFolder=item.GetMember(vn.IsFolder).Value+""=="true";
    var IsDelete=item.GetMember(vn.PId).Value==RecycleBinModel.TId;
    var IsShareModule=false;
    var FormatId=item.GetMember(vn.FormatId).Value;
    if(item.GetMember(vn.TId).Value)IsShareModule=item.GetMember(vn.TId).Value.indexOf("_")>-1
    model=ModelFactory(item.GetMember(vn.ModuleId).Value,FormatId,IsShareModule,IsFolder,IsDelete);
    
    model.ModuleId=model.Module.ModuleId;
    model.IsNode=false;
    model.Object=item;
    model.TId=item.GetMember(vn.TId).Value;
    model.PId=item.GetMember(vn.PId).Value;
    model.ImageUrl=item.GetMember(vn.ImageUrl).Value;
    model.NodeText=item.GetMember(vn.NodeText).Value;
    model.IsFolder=IsFolder;
    model.IsSecurity=item.GetMember(vn.IsSecurity).Value+""=="true";
    model.IsShareRoot=item.GetMember(vn.FormatId).Value+""=="100";
    model.IsDelete=IsDelete;
    model.FormatName=item.GetMember(vn.FormatName).Value;
    model.FormatText=item.GetMember(vn.FormatText).Value;
    model.FormatId=FormatId;
    model.Url=item.GetMember(vn.Url).Value;
    model.IsLink=item.GetMember(vn.IsLink).Value+""=="true";
    model.CreatedDate=item.GetMember(vn.CreatedDate).Value.toFormatString();
    model.UpdatedDate=item.GetMember(vn.UpdatedDate).Value.toFormatString();

    if(!model.IsFolder)
    {
        
        model.FileSize=item.GetMember(vn.FileSize).Value;
        model.FileSpaceSize=item.GetMember(vn.FileSpaceSize).Value;
        model.FileSizeName=item.GetMember(vn.FileSizeName).Value;
        model.FileSpaceSizeName=item.GetMember(vn.FileSpaceSizeName).Value;

    }
    if(model.IsDelete)
    {
        model.RightFolderMenu=vvMenu.RecycleBinFolderMenu;
        model.MultiMenu=vvMenu.RecycleMultiFolderMenu;
    }
    if(model.ModuleId==3)model.TId=model.TId.replace("3.","1.");
    return model;
}

//文件模型:FileModel
var FileModel=Class.create();
FileModel.prototype=(new BaseModel()).extend({
    initialize:function(ModuleId,IsShareModule){
        this.Module=ModuleFactory(ModuleId,IsShareModule);
        this.ModuleId=this.Module.ModuleId;
    },
    IsNode:false,
    IsFolder:false
});

//文件夹模型:FolderModel
var FolderModel=Class.create();
FolderModel.prototype=(new BaseModel()).extend({
    initialize:function(ModuleId,IsShareModule){
        this.Module=ModuleFactory(ModuleId,IsShareModule);
        if(IsShareModule)ModuleId=ShareModule.ModuleId;
        this.ModuleId=ModuleId;

    },
    FormatText:"文件夹",
    ImageUrl:vvImgUrl.Folder
    
});


//系统节点模型:SystemModel
var SystemModel=Class.create();
SystemModel.prototype=(new BaseModel()).extend({
    initialize:function(_TId,_PId,FormatName){
        this.Module=SystemModule;
        this.TId=_TId;
        this.PId=_PId;
        this.FormatName=FormatName;
        __SystemModelArray[_TId]=this;
    },
    IsNode:true,
    ModuleId:0,
    IsSecurity:true,
    DraggingEnabled:false,    
    EditingEnabled:false,
    RemoveEnabled:false,
    CanCreateTo:true,
    CanMoveTo:true,
    RightMenu:null,
    FormatText:"系统文件夹"
    
     
});

//好友组模型:GroupModel
var GroupModel=Class.create();
GroupModel.prototype=(new BaseModel()).extend({
initialize:function(){
    this.Module=FriendModule;
    },
    ImageUrl:vvImgUrl.Friend,
    IsFolder:true,
    IsNode:true,
    IsSecurity:true,
    DraggingEnabled:false,    
    EditingEnabled:false,
    RemoveEnabled:false,
    CanCreateTo:false,
    CanMoveTo:false

});
//好友模型:FriendModel
var FriendModel=Class.create();
FriendModel.prototype=(new BaseModel()).extend({
initialize:function(){
    this.Module=FriendModule;
    },
    ImageUrl:vvImgUrl.Friend,
    IsFolder:false,
    IsNode:true,
    IsSecurity:true,
    DraggingEnabled:false,    
    EditingEnabled:false,
    RemoveEnabled:false,
    CanCreateTo:false,
    CanMoveTo:false

});


//已删除文件模型:DeleteFolderModel
var DeleteFolderModel=Class.create();
DeleteFolderModel.prototype=(new BaseModel()).extend({
    initialize:function(ModuleId){
        this.Module=RecycleBinModule;
        this.ModuleId=ModuleId;
 
    },
    FormatText:"删除文件夹",
    ImageUrl:vvImgUrl.DeleteFolder
    
});




//文件模块
var DiskModule=new BaseModule();
DiskModule.ModuleId=ModuleType.DiskModule;
DiskModule.ModuleName="DiskModule";
DiskModule.RootModelTId="1.1.2";
DiskModule.RightSystemFolderMenu=vvMenu.SystemMenu;
DiskModule.RightSystemFileMenu=vvMenu.SystemMenu;
DiskModule.RightFolderMenu=vvMenu.FolderMenu;
DiskModule.RightFileMenu=vvMenu.FileMenu;
DiskModule.ToolBarMenu=vvMenu.ToolBarMenu;
DiskModule.DeskMenu=vvMenu.DeskMenu;
DiskModule.MultiMenu=vvMenu.MultiFolderMenu;

//管理我的共享模块
var MyShareModule=new BaseModule();
MyShareModule.ModuleId=ModuleType.MyShareModule;
MyShareModule.ModuleName="MyShareModule";
MyShareModule.RootModelTId="3.1.13";

MyShareModule.RightFolderMenu="MyShareFolderMenu";
MyShareModule.RightFileMenu="MyShareFolderMenu";
MyShareModule.ToolBarMenu="MyShareToolBarMenu";
MyShareModule.MultiMenu="MyShareFolderMenu";

//最新共享给我 模块
var NewShareToMeModule=new BaseModule();
NewShareToMeModule.ModuleId=ModuleType.NewShareToMeModule;
NewShareToMeModule.ModuleName="NewShareToMeModule";
NewShareToMeModule.RootModelTId="4.1.14";

NewShareToMeModule.RightFolderMenu="NewShareToMeFolderMenu";
NewShareToMeModule.RightFileMenu="NewShareToMeFolderMenu";
NewShareToMeModule.ToolBarMenu="NewShareToMeToolBarMenu";
NewShareToMeModule.MultiMenu="NewShareToMeFolderMenu";
 
//共享文件模块
var ShareModule=new BaseModule();
ShareModule.ModuleId=ModuleType.ShareModule;
ShareModule.ModuleName="ShareModule";
ShareModule.RootModelTId="0_1.1.0";
ShareModule.RightSystemFolderMenu=vvMenu.ShareFolderMenu;
ShareModule.RightSystemFileMenu=vvMenu.ShareFolderMenu;
ShareModule.DeskMenu=vvMenu.ShareDeskMenu;
ShareModule.RightFileMenu=vvMenu.ShareFileSpaceMenu;
ShareModule.RightFolderMenu=vvMenu.ShareFolderSpaceMenu;
ShareModule.MultiMenu=null;
ShareModule.ToolBarMenu=vvMenu.ShareToolBarMenu;

//回收站模块
var RecycleBinModule=new BaseModule();
RecycleBinModule.ModuleId=ModuleType.DiskModule;
RecycleBinModule.ModuleName="RecycleBinModule";
RecycleBinModule.RootModelTId="1.1.12";
RecycleBinModule.RightSystemFolderMenu=vvMenu.RecycleBinMenu;
RecycleBinModule.RightSystemFileMenu=vvMenu.RecycleBinMenu;
RecycleBinModule.RightFolderMenu=vvMenu.RecycleBinFolderMenu;
RecycleBinModule.RightFileMenu=vvMenu.RecycleBinFolderMenu;
RecycleBinModule.ToolBarMenu=vvMenu.RecycleBinToolBarMenu;
RecycleBinModule.DeskMenu=vvMenu.RecycleBinDeskMenu;
RecycleBinModule.MultiMenu=vvMenu.RecycleMultiFolderMenu;   


 

 //好友模块
var FriendModule=new BaseModule();
FriendModule.ModuleId=ModuleType.FriendModule;
FriendModule.ModuleName="FriendModule";
FriendModule.RootModelTId="20.1.1";
FriendModule.ToolBarMenu=vvMenu.ShareToolBarMenu;



//日志模块
var BlogModule=new BaseModule();
BlogModule.ModuleId=ModuleType.BlogModule;
BlogModule.ModuleName="BlogModule";
BlogModule.RootModelTId="30.1.30";
BlogModule.RightSystemFolderMenu=vvMenu.SystemMenu;
BlogModule.RightSystemFileMenu=vvMenu.SystemMenu;
BlogModule.RightFolderMenu=vvMenu.FolderMenu;
BlogModule.RightFileMenu=vvMenu.BlogFileMenu;
BlogModule.ToolBarMenu=vvMenu.BlogToolBarMenu;
BlogModule.DeskMenu=vvMenu.BlogDeskMenu;
BlogModule.MultiMenu=vvMenu.MultiFolderMenu; 


//共享日志模块
var ShareBlogModule=new BaseModule();
ShareBlogModule.ModuleId=ModuleType.BlogModule;
ShareBlogModule.ModuleName="ShareBlogModule";
ShareBlogModule.RootModelTId="30.1.30";
ShareBlogModule.RightSystemFolderMenu=vvMenu.SystemMenu;
ShareBlogModule.RightSystemFileMenu=vvMenu.SystemMenu;
ShareBlogModule.RightFolderMenu="ShareBlogFolderSpaceMenu";
ShareBlogModule.RightFileMenu="ShareBlogFileSpaceMenu";
ShareBlogModule.ToolBarMenu="ShareBlogToolBarMenu";
ShareBlogModule.DeskMenu="ShareBlogDeskMenu";
ShareBlogModule.MultiMenu=vvMenu.MultiFolderMenu; 

//RSS模块
var RssModule=new BaseModule();
RssModule.ModuleId=ModuleType.RssModule;
RssModule.ModuleName="RssModule";
RssModule.RootModelTId="40.1.40";
RssModule.RightSystemFolderMenu=vvMenu.SystemMenu;
RssModule.RightSystemFileMenu=vvMenu.SystemMenu;
RssModule.RightFolderMenu=vvMenu.FolderMenu;
RssModule.RightFileMenu=vvMenu.RssFileMenu;
RssModule.ToolBarMenu=vvMenu.RssToolBarMenu;
RssModule.DeskMenu=vvMenu.RssDeskMenu;
RssModule.MultiMenu=vvMenu.MultiFolderMenu; 

//Favorite模块
var FavoriteModule=new BaseModule();
FavoriteModule.ModuleId=ModuleType.FavoriteModule;
FavoriteModule.ModuleName="FavoriteModule";
FavoriteModule.RootModelTId="41.1.41";
FavoriteModule.RightSystemFolderMenu=vvMenu.SystemMenu;
FavoriteModule.RightSystemFileMenu=vvMenu.SystemMenu;
FavoriteModule.RightFolderMenu=vvMenu.FolderMenu;
FavoriteModule.RightFileMenu=vvMenu.FavoriteFileMenu;
FavoriteModule.ToolBarMenu=vvMenu.FavoriteToolBarMenu;
FavoriteModule.DeskMenu=vvMenu.FavoriteDeskMenu;
FavoriteModule.MultiMenu=vvMenu.MultiFolderMenu; 

//共享Favorite模块
var ShareFavoriteModule=new BaseModule();
ShareFavoriteModule.ModuleId=ModuleType.FavoriteModule;
ShareFavoriteModule.ModuleName="ShareFavoriteModule";
ShareFavoriteModule.RootModelTId="30.1.30";
ShareFavoriteModule.RightSystemFolderMenu=vvMenu.SystemMenu;
ShareFavoriteModule.RightSystemFileMenu=vvMenu.SystemMenu;
ShareFavoriteModule.RightFolderMenu="ShareFavoriteFolderSpaceMenu";
ShareFavoriteModule.RightFileMenu="ShareFavoriteFileSpaceMenu";
ShareFavoriteModule.ToolBarMenu="ShareFavoriteToolBarMenu";
ShareFavoriteModule.DeskMenu="ShareFavoriteDeskMenu";
ShareFavoriteModule.MultiMenu=vvMenu.MultiFolderMenu;

function ModuleFactory(ModuleId,IsShareModule)
{

    switch(parseInt(ModuleId))
    {
        case 1:
            return IsShareModule?ShareModule:DiskModule;
        break;

        case 3:
            return MyShareModule;
        break;
        case 4:
            return NewShareToMeModule;
        case 20:
            return FriendModule;
        break;
        case 30:
            return IsShareModule?ShareBlogModule:BlogModule;
        break;
        case 40:
            return IsShareModule?ShareRssModule:RssModule;
        break;
        case 41:
            return IsShareModule?ShareFavoriteModule:FavoriteModule;
        break;
    }

}


//===============================================================
//---------------------------------------------------------------
//SystemModel实例 
 
var RootModel=new SystemModel("0.1.1","0.1.0","Root");
    RootModel.CanCreateTo=false;
    RootModel.CanMoveTo=false;
    
    RootModel.Module=SystemModule;
 
 