﻿// JScript 文件
Ext.onReady(function(){
    Ext.QuickTips.init();
    /////////////////////////////////////////////////////////////
    var isChanged=false;         
    var manageButton =Ext.get('manage-button');
    manageButton.on('mouseover',function(e){
       manageButton.dom.style.background='#739BE0';
       manageButton.dom.style.cursor='pointer';
     });
     manageButton.on('mouseout',function(e){
       manageButton.dom.style.background='';
     });
    manageButton.on('click',function(e){
         
             manageDlg = new Ext.Window({
                //el:'win',
               
                layout:'table',
                width:595,
                height:350,
                //closeAction:'hide',
                modal :true,
                plain: true,
                title:'整理收藏夹',
                border:false,
                bodyBorder:false,
                resizable:false,
            
                defaults: {
                        // applied to each contained panel
                        //bodyStyle:'padding:1px'
                    },
                layoutConfig: {
                    // The total column count must be specified here
                    columns: 3
                },
                items: [{
                             html: '<p style="text-align:left;border-right: #CAD9EC 11px solid;border-left: #CAD9EC 11px solid;background-color: #CAD9EC;">要新建文件夹，请单击“创建文件夹”按钮。要删除或重命名项目，请先选定项目，然后单击“删除”或“重命名”按钮。要移动目标，请先选定项目，然后单击“移至文件夹...”按钮，您也可以通过拖拽的方式移动目标。</p>',
                             border:false,
                             colspan: 2 
                            
                           
                        },{
                            xtype: 'treepanel',
                            id:'manageDlg-tree',
                            autoScroll:true,
                            animate:true,
                            enableDD:true,
                            enableDrag:true, 
                            rootVisible:false,
                            singleExpand:true,
                            width:340,
                            height:272,
                            loader: new Ext.tree.TreeLoader({
                                        dataUrl:'data/get_folders_hrefs.aspx'
                                    }),
                            root: new Ext.tree.AsyncTreeNode({
                                        text: '收藏夹 ',
                                        draggable:false,
                                        id:'0' 
                                    }),
                            rowspan: 4
                       
                        },{
                            xtype:'button',
                            cls:'addtoo-button',
                            handler:createBntClick,
                            text:'&nbsp;创建文件夹&nbsp;&nbsp;'
                           
                        },{
                             xtype:'button',
                             cls:'addtoo-button',
                             handler:renameBntClick,
                             text:'&nbsp;重命名选项&nbsp;&nbsp;'
                        },{
                             xtype:'button',
                             cls:'addtoo-button',
                             handler:moveBntClick,
                             text:'移至文件夹...'  
                        },{
                             xtype:'button',
                             cls:'addtoo-button',
                             handler:deleteBtnClick,
                             text:'&nbsp;删除所选项&nbsp;&nbsp;' 
                       
                        },{
                            html: '<p style="height:120px;background-color: #CAD9EC;"></p>',
                            border:false,
                            colspan: 2
                            
                        }],
                
                buttons: [{
                    text:'清空收藏夹',
                    handler:deleteAllBtnClick
                },{
                    text: '关&nbsp;&nbsp;闭',
                    handler: function(){
                        manageDlg.close();
                        if(isChanged){
                            Ext.get('item-number').load({
                                   url: 'data/get_number.aspx',
                                   //scripts:true,
                                   params: 'need=yes',
                                   text: 'Loading...'
                                 });
                             Ext.getCmp('left-tree').root.reload();    
                             Ext.getCmp('left-tree').root.select();
                             //rightTreeRoot.id = '0';
                             //rightTreeRoot.reload();
                             Ext.getCmp('right-tree').root.id='0';
                             Ext.getCmp('right-tree').root.reload();   
                             isChanged=false;
                         }
                    }
                }]
            }); 
           
      manageDlg.show(this);
      var manageDlgTree=manageDlg.getComponent('manageDlg-tree');
      var leafMenu = new Ext.menu.Menu({  
                     items : [{  
                         text : "新建文件夹",  
                         handler : createBntClick
                     }, "-", {  
                         text : "重命名", 
                         handler : renameBntClick    
                     }, "-", {  
                         text : "删除",  
                         handler : deleteBtnClick  
                     }]  
                 });   
      manageDlgTree.root.expand();
      //manageDlgTree.on('contextmenu',function(){alert("Display ctxMenu")}); 
      manageDlgTree.on('contextmenu',function(node,e){
             
               //Display contextmenu code....
               node.select()
               leafMenu.showAt(e.getPoint());  
               e.stopEvent();

      }); 

      manageDlgTree.on('move',moveItemHandler);//'move',function(tree,node,oldParent,newParent,index) 
     });
function moveBntClick(){
          var manageDlgTree=manageDlg.getComponent('manageDlg-tree');
          if(!manageDlgTree.getSelectionModel().getSelectedNode()){
             return;
          }
          if(manageDlgTree.root.isSelected()){
             return;
          }
             moveDialog = new Ext.Window({
                layout:'fit',
                width:308,
                height:289,
                closeAction:'close',
                modal :true,
                plain: true,
                title:'浏览文件夹',
                border:false,
                bodyBorder:false,
                resizable:false,
                items: {
                    xtype: 'treepanel',
                    id:'folder-tree',
                    autoScroll:true,
                    animate:true,
                    enableDD:false,
                    ddScroll : true,
                    containerScroll:true,
                    title : '单击目标文件夹。',
                    height:200,
                    width:352,
                    loader: new Ext.tree.TreeLoader({
                       dataUrl:'data/get_folders.aspx'  
                    }),
                    root: new Ext.tree.AsyncTreeNode({
                                        text: '收藏夹 ',
                                        iconCls:'addtoo-star',
                                        draggable:false,
                                        id:'0' 
                    })
                },

                buttons: [{
                    text:'确定',
                    handler:moveItem
                },{
                    text: '取消',
                    handler: function(){
                        moveDialog.close();
                    }
                }]
            }); 
        
          moveDialog.show(this); 
          var moveDlgTree=moveDialog.getComponent('folder-tree');
          moveDlgTree.root.expand();
          moveDlgTree.root.select();
  }  
  function createBntClick(){    
         createFolderDialog = new Ext.Window({
                   
                    layout:'form',
                    width:305,
                    height:120,
                    closeAction:'close',
                    modal :true,
                    plain: true,
                    title:'创建文件夹',
                    border:false,
                    bodyBorder:false,
                    resizable:false,
                    labelWidth:80, 
                    defaults: {
                            // applied to each contained item
                            width:200
                           
                        },
                    
                   items:[{
                          xtype:'textfield',
                          id: 'folderNameTextBox',
                          fieldLabel: '文件夹名称',
                          allowBlank:false,
                          blankText:'请输入文件夹名称',
                          selectOnFocus:true,
                          labelSeparator:'：'
                 },{ 
                          xtype:'textfield',
                          id: 'folderDescriptionTextBox',
                          fieldLabel: '文件夹描述',
                          labelSeparator:'：' 
                     }],
    
                    buttons: [{
                        text:'确定',
                        handler:createNewFolder
                    },{
                        text: '取消',
                        handler: function(){
                            createFolderDialog.close();
                        }
                    }]
         
            });

	         createFolderDialog.show(this); 
	}   
  function renameBntClick(){
        var manageDlgTree=manageDlg.getComponent('manageDlg-tree');
        if(manageDlgTree.root.isSelected()){
           //manageDlgTree.root.unselect();
            return;
        }
        var item=manageDlgTree.getSelectionModel().getSelectedNode();
      
          if(!item){
             return;
          }
      
         renameDialog = new Ext.Window({
            //el:'rename-win',
            layout:'form',
            width:305,
            height:120,
            closeAction:'close',
            modal :true,
            plain: true,
            title:'重命名',
            border:false,
            bodyBorder:false,
            resizable:false,
            labelWidth:80, 
            defaults: {
                    // applied to each contained item
                    width:200
                    
                },
            items:[{
                  xtype:'textfield',
                  id: 'nameTextBox',
                  fieldLabel: '新名称',
                  allowBlank:false,
                  blankText:'请输入新名称',
                  selectOnFocus:true,
                  labelSeparator:'：'
                 },{ 
                  xtype:'textfield',
                  id: 'descriptionTextBox',
                  fieldLabel: '新备注',
                  labelSeparator:'：'
                 }],
            buttons: [{
                text:'确定',
                handler:renameItem
            },{
                text: '取消',
                handler: function(){
                    renameDialog.close();
                }
            }]
        }); 
        renameDialog.show(this);
        renameDialog.getComponent('nameTextBox').setValue(manageDlg.getComponent('manageDlg-tree').getSelectionModel().getSelectedNode().text);     
   }
 
 function deleteBtnClick(){
     var manageDlgTree=manageDlg.getComponent('manageDlg-tree');  
     if(manageDlgTree.root.isSelected()){
           //manageDlgTree.root.unselect();
           return;
        }
      var item=manageDlgTree.getSelectionModel().getSelectedNode();
      
      if(!item){
         return;
      }
      var type=item.attributes.type;
      if(type=='folder'){
         type='文件夹及其内容吗？'
      }
      else{
         type='网址吗？'
      }
     Ext.MessageBox.confirm('提示框', '您确定要删除"'+item.text+ '"'+type,deleteItem);
 }
 function deleteAllBtnClick(){
    Ext.MessageBox.confirm('提示框', '您确定要删除所有的收藏吗？',deleteAll);
 } 
 function moveItemHandler(tree,node,oldParent,newParent,index){
      if(oldParent==newParent){
          return;
      }
      Ext.MessageBox.show({
                       msg: '正在保存，请等待...',
                       width:250,
                       wait:true,
                       animEl: 'mb7'
                   });
      Ext.Ajax.request({
		        url: 'data/move_item.aspx',
		        params: {node:node.id,type:node.attributes.type,folderId:newParent.id},
		       
		        callback: function(options,success,response){
		           
		          var oResponse = Ext.decode(response.responseText);
		           if(oResponse.success){
		               //alert(oResponse.response); 
		               Ext.example.msg('爱读提示您', oResponse.response);
		               isChanged=true;
		           }
		           else{
		              Ext.MessageBox.show({
                            title: '错误提示',
                            msg: oResponse.response,
                            buttons: Ext.MessageBox.OK,
                            animEl: 'mb9',
                            //fn: showResult,
                            icon: Ext.MessageBox.ERROR
                       });
		           }
		          
		        },
		        success:function(){
		           Ext.MessageBox.hide();
		        },
        		failure:function(){
        		   Ext.MessageBox.show({
                    title: '错误提示',
                    msg: '通信失败！',
                    buttons: Ext.MessageBox.OK,
                    animEl: 'mb9',
                    //fn: showResult,
                    icon: Ext.MessageBox.ERROR
                  });
        		}
	         });                 
     
   
   }
 
 function createNewFolder(){
      var folderNameTextBox=createFolderDialog.getComponent('folderNameTextBox');
      var folderDescriptionTextBox=createFolderDialog.getComponent('folderDescriptionTextBox'); 
      if(!folderNameTextBox.validate()){
        return;
      }
      createFolderDialog.close();
      var manageDlgTree=manageDlg.getComponent('manageDlg-tree');
      var item=manageDlgTree.getSelectionModel().getSelectedNode();
      
      Ext.MessageBox.show({
                       msg: '正在保存，请等待...',
                       width:250,
                       wait:true,
                       animEl: 'mb7'
                   });
      var nodeId;
      if(!item){
         nodeId=0;
      }
      else{
         var type=item.attributes.type;
         if(type=='href'){
            var folder=manageDlgTree.getNodeById(item.attributes.folderId);
            nodeId=folder.id;
            //nodeId=item.attributes.folderId;
        
         }
         else{
            nodeId=item.id;
          }
         
      }
      
      Ext.Ajax.request({
		        url: 'data/create_folder.aspx',
		        params: {node:nodeId,name:folderNameTextBox.getValue(),description:folderDescriptionTextBox.getValue()},
		       
		        callback: function(options,success,response){
		           
		          var oResponse = Ext.decode(response.responseText);
		           if(oResponse.success){
		               //alert(oResponse.response); 
		               Ext.example.msg('爱读提示您', oResponse.response);
                       isChanged=true;
		               var newNode = new Ext.tree.TreeNode({
		                                id: oResponse.folderId, 
		                                text: folderNameTextBox.getValue(), 
		                                leaf: false,
		                                iconCls:'addtoo-folder',
		                                qtip:folderDescriptionTextBox.getValue(),
		                                singleClickExpand:true,
		                                type:'folder',
		                                folderId:oResponse.folderId,
		                                uiProvider:MyNodeUI,
		                                isCreated:true
		                             });
		               if(!item){
		                  manageDlgTree.root.appendChild(newNode);
		                  //tree.root.expand();
		                  manageDlgTree.getNodeById(oResponse.folderId).select();
		                  
		               } 
		             
		            
		               else
		               {
		                  	  if(type=='href'){
		                  	   
	                          var folder=manageDlgTree.getNodeById(nodeId);
	                          folder.appendChild(newNode);
	                          manageDlgTree.getNodeById(oResponse.folderId).select();
	                        
	                       }
	                       else{
    	                  
    	                  
	                           manageDlgTree.getSelectionModel().getSelectedNode().appendChild(newNode);
	                           manageDlgTree.getSelectionModel().getSelectedNode().expand();
	                           manageDlgTree.getNodeById(oResponse.folderId).select();
	                          
	                       }
		                  
		               }
                       manageDlgTree.getSelectionModel().getSelectedNode().on('expand',function(node){
	                                node.getUI().getIconEl().attributes.getNamedItem('class').value ='x-tree-node-icon x-tree-node-expanded'; 
	                               
	                           });
	                   manageDlgTree.getSelectionModel().getSelectedNode().on('collapse',function(node){
	                                node.getUI().getIconEl().attributes.getNamedItem('class').value ='x-tree-node-icon x-tree-node-collapsed'; 
	                           });
                     
		           }
		           else{
		              
		              Ext.MessageBox.show({
                            title: '错误提示',
                            msg: oResponse.response,
                            buttons: Ext.MessageBox.OK,
                            animEl: 'mb9',
                            //fn: showResult,
                            icon: Ext.MessageBox.ERROR
                       });
                     
		           }
		          
		        },
		        success:function(){
		           Ext.MessageBox.hide();
		        },
        		failure:function(){
        		   Ext.MessageBox.show({
                    title: '错误提示',
                    msg: '通信失败！',
                    buttons: Ext.MessageBox.OK,
                    animEl: 'mb9',
                    //fn: showResult,
                    icon: Ext.MessageBox.ERROR
                  });
        		}
	         });   
   }
 function renameItem(){
      var nameTextBox=renameDialog.getComponent('nameTextBox');
      var descriptionTextBox=renameDialog.getComponent('descriptionTextBox');
      if(!nameTextBox.validate()){
        return;
      }
      renameDialog.close();
      Ext.MessageBox.show({
                       msg: '正在保存，请等待...',
                       width:250,
                       wait:true,
                       animEl: 'mb7'
                   });
      var manageDlgTree=manageDlg.getComponent('manageDlg-tree');              
      Ext.Ajax.request({
		        url: 'data/rename_item.aspx',
		        params: {node:manageDlgTree.getSelectionModel().getSelectedNode().id,type:manageDlgTree.getSelectionModel().getSelectedNode().attributes.type,name:nameTextBox.getValue(),description:descriptionTextBox.getValue()},
		       
		        callback: function(options,success,response){
		           
		           
		           var oResponse = Ext.decode(response.responseText);
		           if(oResponse.success){
		               //alert(oResponse.response); 
		               Ext.example.msg('爱读提示您', oResponse.response);
		               isChanged=true;
	                   manageDlgTree.getSelectionModel().getSelectedNode().setText(nameTextBox.getValue());
	                   manageDlgTree.getSelectionModel().getSelectedNode().qtip=descriptionTextBox.getValue();
	                  
		           }
		           else{
		              Ext.MessageBox.show({
                            title: '错误提示',
                            msg: oResponse.response,
                            buttons: Ext.MessageBox.OK,
                            animEl: 'mb9',
                            //fn: showResult,
                            icon: Ext.MessageBox.ERROR
                       });
		           }
		          
		        },
		        success:function(){
		           Ext.MessageBox.hide();
		        },
        		failure:function(){
        		    Ext.MessageBox.show({
                    title: '错误提示',
                    msg: '通信失败！',
                    buttons: Ext.MessageBox.OK,
                    animEl: 'mb9',
                    //fn: showResult,
                    icon: Ext.MessageBox.ERROR
                  });
        		}
	         });   
   }
 function deleteItem(btn){
       
        if(btn=='yes'){
            Ext.MessageBox.show({
                               msg: '正在保存，请等待...',
                               //progressText: 'Saving...',
                               width:250,
                               wait:true,
                              
                               animEl: 'mb7'
                           });
           var manageDlgTree=manageDlg.getComponent('manageDlg-tree');                
           Ext.Ajax.request({
		        url: 'data/delete_item.aspx',
		        params: {node:manageDlgTree.getSelectionModel().getSelectedNode().id,type:manageDlgTree.getSelectionModel().getSelectedNode().attributes.type},
		       
		        callback: function(options,success,response){
		          
		           Ext.MessageBox.hide();
		           var oResponse = Ext.decode(response.responseText);
		           //alert(oResponse.response);
		           if(oResponse.success){
		                    
		                  var node=manageDlgTree.getSelectionModel().getSelectedNode();
                          if(node.nextSibling){
                              node.nextSibling.select();
                          }
                          else{
                             if(node.previousSibling){
                               node.previousSibling.select();
                             }
                             else{
                               if(node.parentNode){
                                 node.parentNode.select();
                               }
                             }
                          }
                          node.remove();
                          if(manageDlgTree.root.isSelected()){
                             //tree.root.unselect(); 
                             manageDlgTree.root.reload();
                          }
		                  Ext.example.msg('爱读提示您', oResponse.response);
		                  isChanged=true;
		           }
		           else{
		              Ext.MessageBox.show({
                            title: '错误提示',
                            msg: oResponse.response,
                            buttons: Ext.MessageBox.OK,
                            animEl: 'mb9',
                            //fn: showResult,
                            icon: Ext.MessageBox.ERROR
                       });
		           }
        		   
		        },
        		success: function(){
        		   
        		},
        		failure:function(){
        		    alert("连接失败");
        		}
	          });
        }
       
    }
 function moveItem(){
   var manageDlgTree=manageDlg.getComponent('manageDlg-tree');
   var moveDlgTree=moveDialog.getComponent('folder-tree');
   var item=manageDlgTree.getSelectionModel().getSelectedNode();
   var targetNode=moveDlgTree.getSelectionModel().getSelectedNode();
   var targetNodeId=targetNode.id;
   //var type=item.attributes.type;
//   alert(targetNodeId);
   moveDialog.close();
   if(item.parentNode.id==targetNode.id){
      return;
   }
   if(item.id==targetNode.id){
      return;
   }
  
   var node=manageDlgTree.getNodeById(targetNodeId);
	if(node){
	                  //var newNode;
	       if(targetNodeId=='0'){
	                       //item.remove();
	            manageDlgTree.root.appendChild(item);
	                     
	         }
	        else if(node.attributes.isCreated){
	                     
	             node.appendChild(item);   
	             node.expand(); 
	         } 
	         else{
	              saveData(item,targetNode,targetNodeId);      
	              item.remove();
	              node.reload();            
	                     
	         }
		}
		else{
		    saveData(item,targetNode,targetNodeId);  
		    //item.remove();
		}                  	              
}   
 function saveData(item,target,targetId){
    Ext.Ajax.request({
		        url: 'data/move_item.aspx',
		        params: {node:item.id,type:item.attributes.type,folderId:targetId},
		       
		        callback: function(options,success,response){
		           
		          var oResponse = Ext.decode(response.responseText);
		           if(oResponse.success){
		               //alert(oResponse.response); 
		               Ext.example.msg('爱读提示您', oResponse.response);
		               isChanged=true;
                       item.remove();
		           }
		           else{
		              Ext.MessageBox.show({
                            title: '错误提示',
                            msg: oResponse.response,
                            buttons: Ext.MessageBox.OK,
                            animEl: 'mb9',
                            //fn: showResult,
                            icon: Ext.MessageBox.ERROR
                       });
                       //manageDlg.getComponent('manageDlg-tree').root.reload();
		           }
		          
		        },
		        success:function(){
		           Ext.MessageBox.hide();
		        },
        		failure:function(){
        		   Ext.MessageBox.show({
                    title: '错误提示',
                    msg: '通信失败！',
                    buttons: Ext.MessageBox.OK,
                    animEl: 'mb9',
                    //fn: showResult,
                    icon: Ext.MessageBox.ERROR
                  });
        		}
	         });    
} 
 function deleteAll(btn){
       if(btn=='no'){
          return;
       }
        Ext.MessageBox.show({
                               msg: '正在保存，请等待...',
                               
                               width:250,
                               wait:true,
                              
                               animEl: 'mb7'
                           });
       Ext.Ajax.request({
             url: 'data/delete_all.aspx',
		     params: {order:'DELETE_ALL'},
             callback: function(options,success,response){
                  var oResponse = Ext.decode(response.responseText);
                  if(oResponse.success){
                     var manageDlgTree=manageDlg.getComponent('manageDlg-tree');
                     manageDlgTree.root.reload();
                     manageDlgTree.root.select();///////////////////////////////////////////
                     /////////////////////////////////////////////////////////////////////////
                     Ext.example.msg('爱读提示您', oResponse.response);  
                     isChanged=true;
                  }
                  else{
                     Ext.MessageBox.show({
                            title: '错误提示',
                            msg: oResponse.response,
                            buttons: Ext.MessageBox.OK,
                            animEl: 'mb9',
                            icon: Ext.MessageBox.ERROR
                       });
                     
                  }
             },
             success: function(){
        		  Ext.MessageBox.hide(); 
        	 },
        	 failure:function(){
        		    Ext.MessageBox.show({
                    title: '错误提示',
                    msg: '通信失败！',
                    buttons: Ext.MessageBox.OK,
                    animEl: 'mb9',
                    //fn: showResult,
                    icon: Ext.MessageBox.ERROR
                  });
        	 }
       
       });
    
    }   
 MyNodeUI = Ext.extend(Ext.tree.TreeNodeUI, {
    updateExpandIcon : function(){
        if(this.rendered){
            var n = this.node, c1, c2;
            var cls = n.isLast() ? "x-tree-elbow-end" : "x-tree-elbow";
            var hasChild = n.hasChildNodes();
            if(hasChild || n.attributes.expandable){
                if(n.expanded){
                    //cls += "-minus";
                    c1 = "x-tree-node-collapsed";
                    c2 = "x-tree-node-expanded";
                }else{
                    //cls += "-plus";
                    c1 = "x-tree-node-expanded";
                    c2 = "x-tree-node-collapsed";
                }
                if(this.wasLeaf){
                    this.removeClass("x-tree-node-leaf");
                    this.wasLeaf = false;
                }
                if(this.c1 != c1 || this.c2 != c2){
                    Ext.fly(this.elNode).replaceClass(c1, c2);
                    this.c1 = c1; this.c2 = c2;
                }
            }else{
                if(!this.wasLeaf){
                    Ext.fly(this.elNode).replaceClass("x-tree-node-expanded", "x-tree-node-collapsed");
                    delete this.c1;
                    delete this.c2;
                    this.wasLeaf = true;
                }
            }
            var ecc = "x-tree-ec-icon "+cls;
            if(this.ecc != ecc){
                this.ecNode.className = ecc;
                this.ecc = ecc;
            }
        }
    }
});              
 Ext.override(Ext.layout.TableLayout, {
	    setContainer : function(ct){
	        Ext.layout.TableLayout.superclass.setContainer.call(this, ct);
	
	        this.currentRow = 0;
	        this.currentColumn = 0;
	        this.spanCells = [];
	    },
		getNextCell : function(c){
	        var td = document.createElement('td'), row, colIndex;
	        if(!this.columns){
	            row = this.getRow(0);
	        }else {
	        	colIndex = this.currentColumn;
	            if(colIndex !== 0 && (colIndex % this.columns === 0)){
	                this.currentRow++;
	                colIndex = (c.colspan || 1);
	            }else{
	                colIndex += (c.colspan || 1);
	            }
	            
	            //advance to the next non-spanning row/col position
	            var cell = this.getNextNonSpan(colIndex, this.currentRow);
	            this.currentColumn = cell[0];
	            if(cell[1] != this.currentRow){
	            	//we are on a new row
	            	this.currentRow = cell[1];
	            	if(c.colspan){
	            		//since the col index is now set at the start of the 
	            		//new cell, any colspan needs to get reapplied.  This is
	            		//only necessary if the row changed since the col index
	            		//only gets reset in that case
	            		this.currentColumn += c.colspan - 1;
	            	}
	            }
	            row = this.getRow(this.currentRow);
	        }
	        if(c.colspan){
	            td.colSpan = c.colspan;
	        }
			if(c.cellId){
				td.id = c.cellId;
			}
			td.className = 'x-table-layout-cell';
			if(c.cellCls){
				td.className += ' ' + c.cellCls;
			}
	        if(c.rowspan){
	            td.rowSpan = c.rowspan;
				var rowIndex = this.currentRow, colspan = c.colspan || 1;
				//track rowspanned cells to include in the column count during the next call to getNextCell
				for(var r = rowIndex+1; r < rowIndex+c.rowspan; r++){
					for(var col=this.currentColumn-colspan+1; col <= this.currentColumn; col++){
						if(!this.spanCells[col]){
							this.spanCells[col] = [];
						}
						this.spanCells[col][r] = 1;
					}
				}
	        }
	        row.appendChild(td);
	        return td;
	    },
	    //private
	    getNextNonSpan: function(colIndex, rowIndex){
	    	var c = (colIndex <= this.columns ? colIndex : this.columns), r = rowIndex;
            for(var i=c; i <= this.columns; i++){
            	if(this.spanCells[i] && this.spanCells[i][r]){
            		if(++c > this.columns){
            			//exceeded column count, so reset to the start of the next row
		                return this.getNextNonSpan(1, ++r);
            		}
            	}else{
            		break;
            	}
            }
            return [c,r];
	    }
	});
}); 