//
//
Af.HtmlColumnRepeater2 = Class.create();

Af.HtmlColumnRepeater2.prototype = {
   
   initialize: function(tableId,columns,cols) {
      this.tableId = tableId;
      this.columns = columns;
      this.tableElement = null;
      this.cols =	 cols;
	   this.listener = null;
      this.init();
   },
   
   init: function() {
      this.columnList = this.columns.split(',');
      for (var i=0; i<this.columnList.length; i++) {
         this.columnList[i] = trim(this.columnList[i]);
      }
      
      var te = document.getElementById(this.tableId);
      this.tableElement  = te;
      
      if (te == null) {
         return;
      }
      
      if (te.tBodies.length == 0) {
         return;
      }
      
      var tb = te.tBodies[0];
      
      if (tb.rows.length == 0) {
         return;
      }
      
      var ec = new Af.ElementCollection(this.tableElement);
      var e = ec.getFirstElement("TH");
      if (e == null) {
         this.templateRow = this.tableElement.rows[0].cloneNode(true);
         this.tableElement.tBodies[0].removeChild(this.tableElement.rows[0]);
         } else {
         this.header = this.tableElement.rows[0];
         this.templateRow = this.tableElement.rows[1].cloneNode(true);
      }
      removeAll(tb);
   },
   
   setDataList: function(dlist) {
      this.dlist = dlist;
      if (this.dlist == null) {
         this.dlist = new Array();
      }
	  if(this.tableElement == null){
		  this.tableElement = document.getElementById(this.tableId);
	  }
	  if(this.tableElement == null){
		  return;
	  }
      var tb = this.tableElement.tBodies[0];
      removeAll(tb);
      if (this.header != null && this.dlist.length > 0) {
         tb.appendChild(this.header);
      }
	  // for loop create number of required rows and generate clone row
      for(var i=0;i<(Math.floor(dlist.length/this.cols) + (dlist.length%this.cols>0?1:0));i++){
         var row = this.templateRow.cloneNode(true);
         tb.appendChild(row);
		 var templateCell = row.cells[0].cloneNode(true);
		          
		 removeAll(row);
      	 //  this for loop create number of required clone columns 
		 for (j=0;j<this.cols;++j) {
            var cell = templateCell.cloneNode(true);
            //cell.id = j;		    
            row.appendChild(cell);
			cell.onclick = this.columnSelected.bindAsEventListener(this);         
         }
      }
      var dataIndex = 0;
      for(var index=0;index < this.cols; ++index){
         for(var j=0;j<this.tableElement.rows.length;++j){			 
            var cell = this.tableElement.rows[j].cells[index];						  			
			 cell.id = dataIndex;		                
			var ec = new Af.ElementCollection(this.tableElement.rows[j].cells[index]);         				
         	if(dataIndex>= dlist.length){
               cell.innerHTML = "&nbsp;";
            }
            else{			   
			   for(var colEleIdx = 0; colEleIdx<this.columnList.length; ++colEleIdx){
				   var nm = this.columnList[colEleIdx];
				   var ele = ec.getFirstElementById(nm);				 
				   ele.innerHTML = this.dlist[dataIndex][nm];
				  
			   }
               ++dataIndex;
            }
         }
      }
	   var te = document.getElementById(this.tableId);		
   },

   columnSelected: function(evt) {
      var e = evt.target ? evt.target : evt.srcElement;
	  while (e != null) {
         if (e.tagName == 'TD') {
            break;
         }
         e = e.parentNode;
      }	
	  if (e != null && this.listener != null && this.listener.columnSelected != null) {
         var n = parseInt(e.id);		  
		 this.listener.columnSelected(this, n);
      }
      
      return false;
   }
}

