﻿
vn={
    ID:"ID",
    Text:"Text",
    TId:"TId",
    PId:"PId",
    NodeText:"NodeText",
    IsSecurity:"IsSecurity",
    IsLink:"IsLink",
    IsFolder:"IsFolder",
    IsDelete:"IsDelete",
    IsShareRoot:"IsShareRoot",
    IsWritable:"IsWritable",
    FormatId:"FormatId",
    FormatName:"FormatName",
    FormatText:"FormatText",
    FormatType:"FormatType",
    ImageUrl:"NodeIconUrl",
    ModuleId:"ModuleId",
    FileSize:"FileSize",
    FileSpaceSize:"FileSpaceSize",
    FileSizeName:"FileSizeName",
    FileSpaceSizeName:"FileSpaceSizeName",
    
    CreatedDate:"CreatedDate",
    UpdatedDate:"UpdatedDate",
    Url:"Url"
} 

 
var vvUrl={
    SiteRootUrl:"",
    LoadChildNodeUrl:"/TreeView/LoadChildNode.aspx"
    }
var vvImgUrl={
    Folder:"UI/Folder16.gif",
    ShareFolder:"UI/ShareFolder16.gif",
    Group:"UI/xpGroup16.gif",
    Friend:"UI/xpFriend_16.gif",
    DeleteFolder:"UI/deletedFolder.gif",
    BreakFriend:"UI/breakfriend16.gif",
    MsgFriendRead:"UI/msg_read.gif",
    Blog:"UI/ico_page.gif",
    Favorite:"UI/linkFile.gif"
} 
var vvMenu={
    FolderMenu:"FolderMenu",
    FileMenu:"FileMenu",
    ToolBarMenu:"ToolBarMenu",
    MultiFolderMenu:"MultiFolderMenu",
    DeskMenu:"MenuDeskMenu",
    
    RecycleBinFolderMenu:"RecycleBinFolderMenu",
    RecycleBinMenu:"RecycleBinMenu",
    RecycleBinDeskMenu:"RecycleBinDeskMenu",
    RecycleBinToolBarMenu:"RecycleBinToolBarMenu",
    RecycleMultiFolderMenu:"RecycleMultiFolderMenu",
    
    
    ShareFolderMenu:"ShareFolderMenu",
    ShareFileMenu:"ShareFileMenu",
    ShareDeskMenu:"ShareDeskMenu",
    ShareToolBarMenu:"ShareToolBarMenu",
    ShareMultiFolderMenu:"ShareMultiFolderMenu",
    ShareFileSpaceMenu:"ShareFileSpaceMenu",
    ShareFolderSpaceMenu:"ShareFolderSpaceMenu",
    PublicFolderFolderMenu:"PublicFolderFolderMenu",
    
    PublicFolderDeskMenu:"PublicFolderDeskMenu",
    PublicFolderToolBarMenu:"PublicFolderToolBarMenu",
    
    GroupSystemMenu:"GroupSystemMenu",
    FriendSystemMenu:"FriendSystemMenu",
    GroupMenu:"GroupMenu",
    FriendMenu:"FriendMenu",
    FriendDeskMenu:"FriendDeskMenu",
    
    
    SystemMenu:"MenuSystemMenu",
    SystemToolBarMenu:"SystemToolBarMenu",
    
    BlogToolBarMenu:"BlogToolBarMenu",
    BlogDeskMenu:"BlogDeskMenu",
    BlogFileMenu:"BlogFileMenu",
    
    RssToolBarMenu:"RssToolBarMenu",
    RssDeskMenu:"RssDeskMenu",
    RssFileMenu:"RssFileMenu",
    
    FavoriteToolBarMenu:"FavoriteToolBarMenu",
    FavoriteDeskMenu:"FavoriteDeskMenu",
    FavoriteFileMenu:"FavoriteFileMenu",
    
    ExpandFirstMenu:"ExpandFirstMenu",
    SosMenu:"SosMenuDesk"
    
} 
var vvCmd={
    Open:"open",
    Download:"download",
    Uplevel:"uplevel",
    Create:"new",
    Copy:"copy",
    Cut:"cut",
    Move:"move",
    ShareWrite:"sharewrite",
    ShareCopyLink:"sharecopylink",
    ShareCopyFile:"sharecopyfile",
    Revertcut:"revertcut",
    Paste:"paste",
    Delete:"delete",
    DeleteForce:"deleteforce",
    Rename:"rename",
    Refresh:"refresh",
    Details:"details",
    Upload:"upload",
    Share:"share",
    Recycle:"recycle",
    Revert:"revert",
    CopyLink:"copylink",
    OpenLink:"openlink",
    AddTextFile:"addtextfile",
    AddHtmlFile:"addhtmlfile",
    SOS:"sos"
    
    
}
var MOUSEONWHERE={DEFAULT:-1,MENU:0,TREEVIEW:1,GRID:2}
var MENUFROM={DEFAULT:-1,TREEVIEW:0,GRID:1,TOOLBAR:2,DESK:3}  
var BasePage=Class.create();
var BaseVn=Class.create();//node属性的名称
var BaseModule=Class.create();//定义模块基类:BaseModule 
var BaseModel=Class.create();//定义模型基类:BaseModel 
var BaseTree=Class.create();//定义目录树基类:BaseTree 
var BaseGrid=Class.create();//定义数据网格基类:BaseGrid 
var BaseMenu=Class.create();//定义菜单基类:BaseMenu 
//var BaseWindow=Class.create();//定义目录树基类:BaseWindow 


var vvTimer = Class.create();
vvTimer.prototype = {
    initialize: function(callback, frequency,finalfrequency,decay) {
        this.callback = callback;
        this.frequency = frequency;
        this.finalfrequency=finalfrequency;//最终频率，如果为0则终止运行
        this.decay = decay;//衰减
        this.currentlyExecuting = false;
        this.registerCallback();
    },
    currentlyExecuting :false,
    frequency:2,
    finalfrequency:30,
    decay:1,
    oInterval:null,
    registerCallback: function() {
        this.oInterval=window.setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
    },
    Stop:function(){
         window.clearInterval(this.oInterval);
         this.oInterval=null;
     },

  onTimerEvent: function() {
 
    if (!this.currentlyExecuting) {
      try { 
        this.currentlyExecuting = true;
        if(this.oInterval!=null)this.callback();
      } finally {
        this.currentlyExecuting = false;
      }
    }
    if(this.frequency==this.finalfrequency)
    {
    
        if(this.finalfrequency==0)this.Stop();
        return;
    }
    if(this.frequency<this.finalfrequency)
    {
        if(this.frequency+this.decay>this.finalfrequency)
        {
            this.frequency =this.finalfrequency;
        }
        else
        {
            this.frequency+=this.decay;
        }
    }
    else
    {
        if(this.frequency-this.decay<this.finalfrequency)
        {
            this.frequency =this.finalfrequency;
        }
        else
        {
            this.frequency-=this.decay;
        }
    }

  }
}

function JumpToNode(){

var CurrentNode=TreeView1.FindNodeById(vv.p.RefreshTId);
    if(CurrentNode)
    {
        TreeView1.SelectNodeById(vv.p.RefreshTId);
        vv.p.RefreshTimer.Stop();
    }

}
BasePage.prototype={
    initialize:function(){
    },
    d:document,
    p:{
        LoadCompleted:false,
        IsUploading:false,
        Init:function(){},
        Refresh:function(){
            var TId=vv.Tree.ContextModel.TId
            var ModuleId=vv.Tree.ContextModel.ModuleId;
             window.location=window.location.pathname+"?TId="+vv.Tree.ContextModel.TId+"&ModuleId="+ModuleId;
        },
        RefreshTimer:null,
        RefreshTId:"",
        JumpToNodeByLocation:function(){
        
            var curHash=document.location.search;
            curHash=curHash.slice(1,curHash.length);
		    var paraStr=curHash;
		    var pageArr=paraStr.split("&");
		    if(pageArr.length==2)
		    {
		        this.RefreshTId=pageArr[0].split("=")[1];
		        var ModuleId=pageArr[1].split("=")[1];
		        var _module=ModuleFactory(parseInt(ModuleId));
		        if(_module&&_module.GetRootModel)
		        {
                    TreeView1.SelectNodeById(_module.GetRootModel().TId);
                    if(_module.GetRootModel().TId!=this.RefreshTId)
		            this.RefreshTimer=new vvTimer(JumpToNode,2,0,0.5);
		        }
		    }
        }
    },
    Delay:function(fun,gapTime){
        window.setTimeout(fun,gapTime);
    },
    Mouse:{OnWhere:0,IsDown:false,x:0,y:0},

    StatusInfo:{
            Object:null,
            IsShowing:false,
            Show:function(statusText){
                this.Object=dd.elements["statusDiv"];	
	            var objName="pageLoadingContent";	
	            if(this.Object)
	            {
		            if(statusText+""!="")
		            $(objName).innerHTML=statusText;		
		            else 
		            $(objName).innerHTML="正在处理中. . . . . .";		
		            this.Object.show();	
		            this.IsShowing=true;	
	            }
	            
	            window.setTimeout("vv.StatusInfo.Hide()",10000);
            },
            Hide:function(){
                this.Object=dd.elements["statusDiv"];	
	            if(this.Object)
	            {
		            this.Object.hide();		
	            }
	            this.IsShowing=false;
            }
    },
     DownloadBox:{
        Show:function(FileId,NodeText,ImgUrl,UserId){
 
            if(siteRootUrl=="")siteRootUrl="http://"+window.location.host;
            var DownloadUrl=siteRootUrl+"/d/d.aspx?Id="+FileId;
            var ShareLinkUrl=siteRootUrl+"/u/?u="+UserId+"&Id="+FileId;
            var _Object=dd.elements["DownloadBox"];
            
            if(_Object)
            {
            var dnText="<img src='/images/"+ImgUrl+"' border=0> "+NodeText+"";
            $("DownloadBoxCaption").innerHTML=dnText;
 
                $("DownloadBoxDownloadUrl").href=DownloadUrl;
                $("DownloadBoxShareLinkTextBox").value=ShareLinkUrl;
                 _Object.resizeTo(350,120);
                var xx=vv.Mouse.x;
                var yy=vv.Mouse.y;
 
                if(xx+_Object.w>dd.getWndW())xx=dd.getWndW()-_Object.w;
                if(yy+_Object.h>dd.getWndH())yy=dd.getWndH()-_Object.h;
 
                _Object.moveTo(xx,yy);
  
               
 
                _Object.show();
            }
        },
        Hide:function(){
            var _Object=dd.elements["DownloadBox"];
            if(_Object)_Object.hide();
        },
        CopyUrl:function(){
            copyToClipboard($("DownloadBoxShareLinkTextBox").value);
            alert("已经复制到剪切板！");
        }
    },
    MsgBox:{
            Object:null,
            IsShowing:false,
            ObjTitle:"msgboxTitle",
            ObjContent:"msgboxContent",
            ObjFrame:"msgboxFrame",
            ObjIcon:"msgboxIcon",
            Show:function(IsPage,title,text,OutTime,w,h,x,y){
                this.Object=dd.elements["msgbox"];	
                w=w?w:0;
                h=h?h:0;
                x=x?x:0;
                y=y?y:0;
                if(w<=0)w=180;
                if(h<=0)h=150;
                if(x<=0)x=dd.getWndW()/2-100;
                if(y<=0)y=dd.getWndH()/2-100;
                this.Object.resizeTo(w,h);
                this.Object.moveTo(x,y);
                if(title+""!="")
                    $(this.ObjTitle).innerHTML=title;		
                else 
                    $(this.ObjTitle).innerHTML="&nbsp;";	
	            if(this.Object)
	            {
	                if(IsPage)
	                {
	                    $(this.ObjContent).style.display="none";
	                    $(this.ObjFrame).style.display="block";
	                    $(this.ObjFrame).src=text;
	                }
	                else
	                {
	                    $(this.ObjContent).style.display="block";
	                    $(this.ObjFrame).style.display="none";
		                if(text+""!="")
		                $(this.ObjContent).innerHTML=text;		
		                else 
		                $(this.ObjContent).innerHTML=". . . . . .";	
		            }	
		            this.Object.show();	
		            this.IsShowing=true;	
	            }
	            
	           if(OutTime>0) window.setTimeout("vv.MsgBox.Hide()",OutTime);
            },
            Hide:function(){
                this.Object=dd.elements["msgbox"];	
	            if(this.Object)
	            {
	                	
		            this.Object.hide();		
	            }
	            $(this.ObjContent).innerHTML="";
	            $(this.ObjFrame).src="";
                $(this.ObjContent).style.display="block";
                $(this.ObjFrame).style.display="none";
	            
	            this.IsShowing=false;
            }
    },
    Alert:function(message){
        //alert(message);
        
        this.MsgBox.Show(false,"",message+"",2000);
    
    },
    ShowError:function(message){this.Alert("不好意思出错了:"+message);},
    Confirm:function(message){return window.confirm(message);},
    Menu:{
        ContextModel:null,
        ContextMenu:null,
        CurrentToolBar:"",
        MenuFrom:-1,
        EnablePaste:function(enable){},
        EnableItem:function(enable){}
    },
    DragDrop:{SourceModelList:[],TargetNode:null,StartIndex:-1,EndIndex:-1,
        DisableObjIDs:",deskArea,deskAreaRight,Grid1_dom,TreeView1_div,toolbarDiv,toolbar1,sp1,t1,",
        Reset:function(){
            vv.Mouse.OnWhere=MOUSEONWHERE.DEFAULT;
            this.SourceModelList=[];
            this.TargetNode=null;
            if(dd.elements.mouseInfoDiv)
            {
		        dd.elements.mouseInfoDiv.write("");		
		        dd.elements.mouseInfoDiv.hide();		
	        }
        }
    },
    CutCopy:{
        SourceModelList:[],
        CmdName:"",
        TopCount:3//最多操作多少个文件夹
    },
    Tree:{
        ContextModel:null,
        CurrentNodeId:"0.1.1",
        RootNode:null,
        RootNodeId:"0.1.1",
        Init:function(){
            if(this.ContextModel==null&&TreeView1.Nodes().length>0)this.ContextModel=GetModelByNode(TreeView1.FindNodeById(TreeView1.Nodes()[0].ID));
            if(this.RootNode==null)this.RootNode=TreeView1.FindNodeById(this.RootNodeId);
        },
        UpLevel:function(){
            if(vv.Tree.ContextModel==null)return;		
		    var node=vv.Tree.ContextModel.GetObject();
		    if(node)
		    {		
		        if(node.CalculateDepth()>0)
		        {
			        parentNode=node.ParentNode;			
			        if(parentNode)
			        TreeView1.SelectNodeById(parentNode.ID);
		        }
		    }
        },
        RemoveNode:function(node){
	        if(node==null)return ;
	        var parentNode=node.ParentNode;
	        node.Remove();
	        parentNode.SaveState();
	        node.ParentTreeView.Render();
        }
    },
    Grid:{
        IsAdding:false,
        IsEditing:false,
        RenamedItem:null,
        RenamedText:"",
        SelectStartItem:null,
        Reset:function(){
            this.IsAdding=false;
            this.IsEditing=false;
            this.RenamedItem=null;
            this.RenamedText="";
        },
        CallGrid:function(TId){
            if(GridCallBack)GridCallBack.Callback(TId);
        },
        RemoveItem:function(item){
        	if(item==null)return;
	        if(item.GetMember(vn.IsSecurity).Value)return false;
	        Grid1.Delete(item);
	    },
	    RemoveItemById:function(TId){
	        var item=Grid1.GetRowFromKey(0,TId);
	        if(item==null)return;
	        if(item.GetMember(vn.IsSecurity).Value)return false;
	        Grid1.Delete(item);
	    },
        SetEditCompletedByMouseDown:function(e){
 
                if(!vv.p.LoadCompleted)return;
                var e=e||window.event;
                var objSrc=dd.ie?e.srcElement:e.target;
                
                //鼠标单击结束编辑
                if(this.IsEditing&&e.button<2&&objSrc.tagName!="INPUT"&&!isMenuObj(objSrc.id))
                {
	                if(this.RenamedText!=""&&this.RenamedItem)
	                {
	                    if(!checkInput(this.RenamedText,true))
                        {
                            vv.Alert("不能输入非法字符!");
                            this.Reset();
                            return false;
                        }
                        var model=GetModelByItem(this.RenamedItem);
                         
                         model.DBSubmitRename(this.RenamedText);
    		            
	                }
	                Grid1_EditComplete();
	                this.Reset();
                }
                
                //如果是新建文件夹
                if(this.IsAdding&&e.button<2&&objSrc.tagName!="INPUT"&&!isMenuObj(objSrc.id))
                { 
           
                    if(this.RenamedItem&&this.RenamedText!=="")
                    { 
 
                        if(!checkInput(this.RenamedText,true))
                        {
                            Grid1_EditComplete();
                            this.RemoveItem(this.RenamedItem);
                            vv.Alert("不能输入非法字符!");
                            this.Reset();
                            return false;
                        }
                        var model=GetModelByItem(this.RenamedItem);

                        model.TId="Insert."+(new Date()).toTimeStamp();
                        this.RenamedItem.SetValue(vvItemColumn.NodeText,this.RenamedText,true);
                        this.RenamedItem.SetValue(vvItemColumn.TId,model.TId,true);
		                Grid1.Render();	
                        model.NodeText=this.RenamedText;
                        model.UICreateFolder(true,false);
                        
	                    vvdb.DbExecute(model.TId+",insert,"+vv.Tree.ContextModel.TId+","+this.RenamedText+","+model.ModuleId);
	                }
	                else
	                {
                        Grid1_EditComplete();
                    }
                    this.Reset();	
                }
            },
            RenameByEnter:function(e){
                var e=e||window.event;
                var objSrc=dd.ie?e.srcElement:e.target;
                /*获取新文件名,执行回车修改文件名*/

                if(objSrc.id.indexOf("Grid1_input")>-1){
                    this.RenamedText=objSrc.value;
                    n=objSrc.id.split("_")[2];

                    if(this.RenamedText!="")
                        this.RenamedItem=Grid1.Table.GetRow(n);	
                    else
                        this.RenamedItem=null;
                }
                
                 
                if(this.IsAdding&&e.keyCode==13)
                {
                    if(this.RenamedItem&&this.RenamedText!=="")
                    {
                        if(!checkInput(this.RenamedText,true))
                        {
                            this.RemoveItem(this.RenamedItem);
                            vv.Alert("不能输入非法字符!");
                            this.Reset();
                            return false;
                        }
                        else
                        {
                            var model=GetModelByItem(this.RenamedItem);
 
                            model.TId="Insert."+(new Date()).toTimeStamp();
                            
                            this.RenamedItem.SetValue(vvItemColumn.TId,model.TId,true);
		                    Grid1.Render();	
                            model.NodeText=this.RenamedText;
                            model.UICreateFolder(true,false);
	                        vvdb.DbExecute(model.TId+",insert,"+vv.Tree.ContextModel.TId+","+this.RenamedText+","+model.ModuleId);
	                    }
	                   
	                }
	                else
	                {
                        Grid1_EditComplete();
                    }
                    this.Reset();
                }
     
	            if(this.IsEditing&&e.keyCode==13)
	            {
		            /*回车修改文件名*/
    		          
		            if(this.RenamedItem)	
		            { 
                        if(!checkInput(this.RenamedText,true))
                        {
                            vv.Alert("不能输入非法字符!");
                            this.Reset();
                            return false;
                        }
                        var model=GetModelByItem(this.RenamedItem);
                        model.DBSubmitRename(this.RenamedText);
		            }
		            this.Reset();
	            }
            },
	        SetEditingByMouseDown:function(e){
                var e=e||window.event;
                var objSrc=dd.ie?e.srcElement:e.target;
                if(!Grid1)return;
                var arrItem=Grid1.GetSelectedItems();
                var aItem=null;
	            try
	            {
		            if(!e.shiftKey&&!e.ctrlKey&&e.button<2)
		            {
			            var newItemID="";			
			            if(objSrc.tagName=="IMG")newItemID=objSrc.parentNode.parentNode.parentNode.id;			
			            else 
			            {
				            newItemID=objSrc.parentNode.parentNode.id;				
				            if(newItemID==""&&objSrc.parentNode)newItemID=objSrc.parentNode.id;				
			            }
            			
			            if(newItemID.indexOf("_row_")>0)
			            {
			                //判断是否该Item为选中状态，否则选中
				            var IDs=newItemID.split("_");				
				            aItem=Grid1.Table.GetRow(IDs[2]);				
				            var hasTheItem=false;				
				            if(arrItem&&arrItem!="")
				            {
					            for(n=0;n<arrItem.length;n++)
					            {
						            if(aItem.GetMember("TId").Value==arrItem[n].GetMember("TId").Value)
							          hasTheItem=true;							
					            }
				            }
				            if(!hasTheItem)
				            {
					            Grid1.Select(aItem,false);					
				            }
			                
			            }//3
		            }//2
	            }//1
	            catch(ex)
	            {
	            }
            },
            SelectItemByShiftClick:function(e){
                if(this.SelectStartItem!=null)
                {
	                var startIndex=this.SelectStartItem.Index;		
	                var endIndex=ToolBarContextModel.GetObject().Index;		
	                var tempIndex=0;		
	                if(startIndex>endIndex)
	                {
		                tempIndex=startIndex;			
		                startIndex=endIndex;			
		                endIndex=tempIndex;			
	                }
	                var aItem=null;		
	                if(e.shiftKey)
	                {
		                for(var i=startIndex;i<endIndex+1;i++)
		                {
			                aItem=Grid1.Table.GetRow(i);	
		                    if(aItem.Selected==false)Grid1.Select(aItem,true);	
    		
		                }
	                }
                }
                var arrSelectItem=[];	
                try
                {
	                arrSelectItem=Grid1.GetSelectedItems();		
                }
                catch(ex)
                {
                }
                if(arrSelectItem.length<2&&e.shiftKey==false)this.SelectStartItem=ToolBarContextModel.GetObject();
            },
            UnSelectAllItem:function(e){
                var e=e||window.event;
                var objSrc=dd.ie?e.srcElement:e.target;
                if(e.ctrlKey||e.shiftKey)return;
                var arrSelectItem=Grid1.GetSelectedItems();	
    	
                try
                {
		            if(vv.DragDrop.DisableObjIDs.indexOf(","+objSrc.id+",")>-1 )
		            {
		                if(arrSelectItem!=""&&arrSelectItem!=null)
		                {
			                for(var i=0;i<arrSelectItem.length;i++)
			                {
				                Grid1.UnSelect(arrSelectItem[i]);				
			                }
    			             
			                vv.Menu.EnableItem(false);
    			            
		                }
		            }
		        }
		        catch(ex)
		        {}
            },
            DragDropItemToNode:function(e){
             
                if(vv.DragDrop.SourceModelList&&vv.DragDrop.TargetNode)
                {
                    if(vv.DragDrop.SourceModelList.length>0&&vv.DragDrop.TargetNode)
	                {
		                vv.DragDrop.SourceModelList.MoveTo(GetModelByNode(vv.DragDrop.TargetNode),vvCmd.Move);
	                }
	            }
	            vv.DragDrop.Reset();
            },
            ShowDragDropDiv:function(e){
                var e=e||window.event;
	            var objSrc=e.srcElement?e.srcElement:e.target;
	            var dnText="";
    	        
                try
	            {
		            if(vv.Mouse.IsDown)
		            {
		            
			            if(vv.DragDrop.SourceModelList&&vv.DragDrop.SourceModelList.length>0)
			            {
			                if(dd.elements.mouseInfoDiv.visible==false)
			                {
			                    var ddImgUrl=vvImgUrl.Folder;
				                if(vv.DragDrop.SourceModelList.length==1)
				                {
    				            
				                    var innerText=vv.DragDrop.SourceModelList[0].NodeText;
        				          
        				            
				                    var divW=innerText.Tlength()*8
				                    //if(!vv.DragDrop.SourceModelList[0].IsFolder)
				                        ddImgUrl=vv.DragDrop.SourceModelList[0].Object.GetMember("NodeIconUrl").Value;
				                    if(divW<100)divW=100;
				                    dnText="<table width="+divW+" height=25><tr><td width=20 align='right'><img src='/images/"+ddImgUrl+"' border=0></td><td>"+innerText+"</td></tr></table>";
				                    dd.elements.mouseInfoDiv.resizeTo(divW,25);
				                   
				                }
				                else
				                {
				                    var innerText="......"
				                    dnText="<table width=200 height=20 cellspacing=0 cellpadding=0><tr><td width=4></td><td width=20 align='right'><img src='/images/UI/multidd.gif' border=0></td></tr></table>";
				                    dd.elements.mouseInfoDiv.resizeTo(100,40);
				                }
				                dd.elements.mouseInfoDiv.show();	
				                dd.elements.mouseInfoDiv.write(dnText);	
				            }			
				                dd.elements.mouseInfoDiv.moveTo(e.clientX+2,e.clientY+2);				
				                
				             
				            			
			            }
			            else 
			            {
			            return ;
				            if(dd.ie&&e.button!=1||objSrc.tagName=="INPUT")
				            {
					            dd.elements.mouseSelectAreaDiv.resizeTo(0,0);
	                            dd.elements.mouseSelectAreaDiv.hide();						
					            return ;					
				            }
    				        if(dd.elements.mouseSelectAreaDiv.visible==false)
    				        { 
				                var moveToX=0;				
				                var moveToY=0;				
				                var resizeX=0;				
				                var resizeY=0;	
				                x0=e.clientX	
				                y0=e.clientY
				                
				               
    				            dd.elements.mouseSelectAreaDiv.moveTo(x0,y0);
				                dd.elements.mouseSelectAreaDiv.show();				
				               
				            }	
				            else	
				            {	
				                 if(document.body.scrollLeft+e.clientX-x0>0){
					                moveToX=x0;					
					                resizeX=document.body.scrollLeft+e.clientX-x0;					
				                }
				                else {
					                moveToX=document.body.scrollLeft+e.clientX;					
					                resizeX=x0-(document.body.scrollLeft+e.clientX);					
				                } 
				                if(document.body.scrollTop+e.clientY-y0>0){
					                moveToY=y0;
					                resizeY=document.body.scrollTop+e.clientY-y0;					
				                }
				                else {
					                moveToY=document.body.scrollTop+e.clientY;					
					                resizeY=y0-(document.body.scrollTop+e.clientY);					
				                }
				                dd.elements.mouseSelectAreaDiv.moveTo(moveToX,moveToY);
				                dd.elements.mouseSelectAreaDiv.resizeTo(resizeX,resizeY);	
				            }			
			            }
		            }
		            else 
		            {
		            return ;
			            dd.elements.mouseSelectAreaDiv.resizeTo(0,0);
	                    dd.elements.mouseSelectAreaDiv.hide();		
		            }
	            }
	            catch(ex)
	            {
	            }
            },
            InitDragDropItemDiv:function(e){
                var e=e||window.event;
	            var objSrc=e.srcElement?e.srcElement:e.target;
                if(e.button<2&&objSrc.id==""&&vv.Mouse.OnWhere!=MOUSEONWHERE.MENU&&vv.Mouse.OnWhere!=MOUSEONWHERE.TREEVIEW&&objSrc.tagName!="IMG")
	            {
	                vv.DragDrop.SourceModelList.Reset();

		            vv.DragDrop.SourceModelList.GetListBySelectItem();		
	            }
	            else 
	            {
		            vv.DragDrop.Reset();		
	            }
            }
        }//Grid
}



BaseModel.prototype={
    initialize:function(){
    },
    Module:null,
    ModuleId:0,
    IsNode:false,
    Object:null,
    RelationObject:null,
    ModuleId:0,
    TId:"",
    PId:"",
    NodeText:"",
    NodeTag:"d",
    IsSecurity:false,
    IsLink:false,
    IsFolder:true,
    IsDelete:false,
    IsShareRoot:false,
    IsWritable:false,
    FormatId:0,
    FormatName:"Base",
    FormatText:"文件夹",
    FileSizeName:"0KB",
    FileSpaceSizeName:"0KB",
    ImageUrl: "",
    ContentCallbackUrl:"",
    CreatedDate:"2000-1-1",
    UpdatedDate:"2000-1-1",
    Url:"",
    FriendUserName:"",
    DraggingEnabled:true,    
    EditingEnabled:true,
    RemoveEnabled:true,
    CanCreateTo:true,
    CanMoveTo:true,
    GetRightMenu:function(){
 
        if(this.IsSecurity)
        {
            return this.IsFolder?this.Module.RightSystemFolderMenu:this.Module.RightSystemFileMenu;
        }
        else
        {
            return this.IsFolder?this.Module.RightFolderMenu:this.Module.RightFileMenu;
        }
    },
    GetNode:function(){
        return TreeView1.FindNodeById(this.TId);
    },
    GetObject:function(){
        if(this.Object!=null)return this.Object;
        var _Object=this.IsNode?TreeView1.FindNodeById(this.TId):Grid1.GetRowFromKey(0,this.TId);
        return _Object;
    },
    GetRelationObject:function(){
        if(this.RelationObject!=null)return this.RelationObject;
        var _RelationObject=this.IsNode?Grid1.GetRowFromKey(0,this.TId):TreeView1.FindNodeById(this.TId);
        return _RelationObject;
    },
    onNodeSelect:function(){

       var _MenuName=this.Module.ToolBarMenu

            if(_MenuName!=null&&_MenuName!=vv.Menu.CurrentToolBar)
            {
                _Menu=new BaseMenu(_MenuName,true);
                _Menu.Show();
            }

        if(this.Module.ToolBarMenu!=null)
        {
            vv.Tree.ContextModel=this;
             
            this.CallGrid();
            
        }
        if(this.ContentCallbackUrl!=""&&this.ContentCallbackUrl!=vv_u)
        this.GetObject().SetProperty("ContentCallbackUrl","");
        
    },
    onItemSelect:function(){},
    onNodeRightClick:function(e){
        var _Menu=null;
        if(this.ContentCallbackUrl)
        {
            _Menu=new BaseMenu(vvMenu.ExpandFirstMenu);
            
        }
        else
        {
            if(this.GetRightMenu()==null)return;
            _Menu=new BaseMenu(this.GetRightMenu());
        }
        
        _Menu.Show(e);
    },
    onItemRightClick:function(e){
        var item=this.GetObject();
        if(!!Grid1&&item.Selected==false)Grid1.Select(item,false);
        vv.Grid.ContextItem=item;
        var arrSelectItem=Grid1.GetSelectedItems();
        
        var _MenuName=null;
        if(arrSelectItem.length==1)
	    {
	        _MenuName=this.GetRightMenu();
	    }
	    else
	    {
	        _MenuName=this.Module.MultiMenu;
	    }
        if(_MenuName==null)return;
        var _Menu=null;
         
        _Menu=new BaseMenu(_MenuName);
        _Menu.Show(e);
    },

    onItemDoubleClick:function(){
        if(this.IsDelete)return ; 
       
        if(this.ModuleId==ModuleType.NewShareToMeModule)
        {
           var TId=this.TId;
		
		    if(TId.indexOf("_")==-1)return;
		    var arr=TId.split("_");
		    var Id=arr[1].replace("4.","1.");
		    var url="http://"+window.location.host+"/u/?u="+this.FriendUserName+"&Id="+Id;
		    window.open(url,"","");
		    return;
        }
        if(this.ModuleId==ModuleType.MyShareModule)
        {
            var d=top.CreateWindow();
            d.IconUrl="/images/"+vvImgUrl.ShareFolder;
            d.URL="/vv/File/FileDetails.aspx?tabId=t2&curWindow="+d.Name+"&Id="+this.TId+"&s="+generateGuid();
            d.Model=this;
            d.x=220;
            d.y=100;
            d.w=375;
            d.h=400;
            d.Text=this.NodeText;
            d.Resizeable=false;
            d.Show();
            return;
        } 
        if(this.IsFolder)
	    { 
	            if(!TreeView1.FindNodeById(this.TId))
	                vv.Grid.CallGrid(this.TId);
	                else
	                TreeView1.SelectNodeById(this.TId);
	    }
	    else 
	    { 
	        if(this.FormatId==600)
            {
                if(this.Url!="")
                {
                    window.open(this.Url,"","");
                    
                }
                return;
            }
            else 
            {
		            var d=top.CreateWindow();
                    d.IconUrl="/images/"+vvImgUrl.Folder;
                   

                    if(this.FormatId>=1000&&this.FormatId<1010)
                    {
                        d.URL="/u/PhotoView.aspx?curWindow="+d.Name+"&TId="+this.TId+"&PId="+this.PId;
                        d.Text="图片查看器";
                        d.w=400;
                        d.h=400;
                    }
                    else if(this.FormatId==530)
                    {
                    d.IconUrl="/images/"+vvImgUrl.Blog;
                    
                    d.URL="/vv/Blog/ViewBlog.aspx?curWindow="+d.Name+"&Id="+this.TId;
                        d.Text=this.NodeText;
                        d.w=500;
                        d.h=400;
                    }
                    
                    else
                    {
                        d.URL="/u/ModelInfo.aspx?curWindow="+d.Name+"&Id="+this.TId;
                        d.Text=this.NodeText;
                        d.w=375;
                        d.h=400;
                    }
               
                    d.Model=this;
                    d.x=220;
                    d.y=100;
                    d.Resizeable=false;
                    d.Show();
             }
             
	    }
	},
    CallGrid:function(){if(this.IsNode)vv.Grid.CallGrid(this.TId);},
    Select:function(){this.IsNode?this.onNodeSelect():this.onItemSelect();},
    RightClick:function(e){
        vv.Menu.ContextModel=this;
        ToolBarContextModel=this;
        this.IsNode?this.onNodeRightClick(e):this.onItemRightClick(e);
    },
    DoubleClick:function(){if(!this.IsNode)this.onItemDoubleClick();},
    ShowDeskMenu:function(e){
        var _MenuName=vvMenu.SosMenu;
        if(this.Module.DeskMenu!=null)_MenuName=this.Module.DeskMenu;
        var _Menu=new BaseMenu(_MenuName);
        _Menu.Show(e);
    }
}
 


BaseMenu.prototype={
    initialize:function(name,isToolBar){
        this.Name=name;
        this.IsToolBar=isToolBar;
    },
    Name:"",
    IsToolBar:false,
    Show:function(e){
    
        if(this.IsToolBar)
        {
            doShowToolBar(this.Name);
            vv.Menu.CurrentToolBar=this.Name
        }
        else
            doShowMenu(null,0,this.Name,e);
    }
}


function GetModelByNode(node){}
function GetModelByItem(item){}

BaseGrid.prototype={
    initialize:function(_Grid){
        this.Grid=_Grid;
    },
    Grid:null,
    IsMultiSelected:function(){
        var arrSelectItem=this.Grid.GetSelectedItems();
        var num=arrSelectItem.length;
        arrSelectItem=null;
        return num>1;
    }
}    

var BaseDbHelp=Class.create();
BaseDbHelp.prototype={
    initialize:function(){
    },
     DbExecute:function(arg){
        try
        { 
           vv.StatusInfo.Show("处理中，请稍候...");
           vv.Delay("HideCallBack.Callback(\""+arg+"\");",200);
	        
        }
        catch(ex)
        {
            vv.ShowError(ex.message());
        }
    }
}



var vvPage=Class.create();
vvPage.prototype=(new BasePage()).extend({
    initialize:function(){
    }
})
var vv=new vvPage();
var vvdb=new BaseDbHelp();



var ModuleType={
    SystemModule:0,
    DiskModule:1,
    MyShareModule:3,
    NewShareToMeModule:4,
    ShareModule:100,
    FriendModule:20,
    BlogModule:30,
    RssModule:40,
    FavoriteModule:41
}


BaseModule.prototype={
    initialize:function(){
    },
    ModuleId:0,
    ModuleName:"",
    RootModelTId:"",
    GetRootModel:function(){
        return __SystemModelArray[this.RootModelTId];
    },
    RightFolderMenu:null,
    RightFileMenu:null,
    RightSystemFolderMenu:null,
    RightSystemFileMenu:null,
    ToolBarMenu:null,
    DeskMenu:null,
    MultiMenu:null

}

var SystemModule=new BaseModule();

function ModuleFactory(ModuleId,IsShareModule)
{
   return SystemModule;
}

///*
//普通窗口，确认框窗口，信息警告窗口，提示框
//*/
//BaseWindow.prototype={
//    initialize:function(){
//    }
//}
