    var tableWidget_tableCounter = 0;
    var tableWidget_arraySort = new Array();
    var tableWidget_okToSort = true;
    var activeColumn = new Array();
    var arrowImagePath = "/images/";	// Path to arrow images
    
    function addEndCol(obj)
    {
      if(document.all)return;
      var rows = obj.getElementsByTagName('TR');
      for(var no=0;no<rows.length;no++){
        var cell = rows[no].insertCell(-1);
        cell.innerHTML = ' ';
        cell.style.width = '13px';
        cell.width = '13';

      }	
      
    }
    
    function highlightTableHeader()
    {
      this.className='tableWigdet_headerCellOver';
      if(document.all){	// I.E fix for "jumping" headings
        var divObj = this.parentNode.parentNode.parentNode.parentNode;
        this.parentNode.style.top = divObj.scrollTop + 'px';

      }
        
    }
    
    function deHighlightTableHeader()
    {
      this.className='tableWidget_headerCell';		
    }
    
    function mousedownTableHeader()
    {
      this.className='tableWigdet_headerCellDown';
      if(document.all){	// I.E fix for "jumping" headings
        var divObj = this.parentNode.parentNode.parentNode.parentNode;
        this.parentNode.style.top = divObj.scrollTop + 'px';
      }		
    }
    
    function sortNumeric(a,b){
      
      a = a.replace(/,/,'.');
      b = b.replace(/,/,'.');
      a = a.replace(/[^\d\-\.\/]/g,'');
      b = b.replace(/[^\d\-\.\/]/g,'');
      if(a.indexOf('/')>=0)a = eval(a);
      if(b.indexOf('/')>=0)b = eval(b);
      return a/1 - b/1;
    }
    

    function sortString(a, b) {

      if ( a.toUpperCase() < b.toUpperCase() ) return -1;
      if ( a.toUpperCase() > b.toUpperCase() ) return 1;
      return 0;
    }	
    function cancelTableWidgetEvent()
    {
      return false;
    }
    
    function sortTable()
    {
      if(!tableWidget_okToSort)return;
      tableWidget_okToSort = false;
      /* Getting index of current column */
      var obj = this;
      var indexThis = 0;
      while(obj.previousSibling){
        obj = obj.previousSibling;
        if(obj.tagName=='TD')indexThis++;		
      }
      var images = this.getElementsByTagName('IMG');
      
      if(this.getAttribute('direction') || this.direction){
        direction = this.getAttribute('direction');
        if(navigator.userAgent.indexOf('Opera')>=0)direction = this.direction;
        if(direction=='ascending'){
          direction = 'descending';
          this.setAttribute('direction','descending');
          this.direction = 'descending';	
        }else{
          direction = 'ascending';
          this.setAttribute('direction','ascending');		
          this.direction = 'ascending';		
        }
      }else{
        direction = 'ascending';
        this.setAttribute('direction','ascending');
        this.direction = 'ascending';
      }
      
      
      
      if(direction=='descending'){
        images[0].style.display='inline';
        images[0].style.visibility='visible';
        images[1].style.display='none';
      }else{
        images[1].style.display='inline';
        images[1].style.visibility='visible';
        images[0].style.display='none';		
      }

      
      var tableObj = this.parentNode.parentNode.parentNode;
      var tBody = tableObj.getElementsByTagName('TBODY')[0];
      
      var widgetIndex = tableObj.id.replace(/[^\d]/g,'');
      var sortMethod = tableWidget_arraySort[widgetIndex][indexThis]; // N = numeric, S = String
      if(activeColumn[widgetIndex] && activeColumn[widgetIndex]!=this){
        var images = activeColumn[widgetIndex].getElementsByTagName('IMG');
        images[0].style.display='none';
        images[1].style.display='inline';
        images[1].style.visibility = 'hidden';
        if(activeColumn[widgetIndex])activeColumn[widgetIndex].removeAttribute('direction');			
      }

      activeColumn[widgetIndex] = this;
      
      var cellArray = new Array();
      var cellObjArray = new Array();
      for(var no=1;no<tableObj.rows.length;no++){
        var content= tableObj.rows[no].cells[indexThis].innerHTML+'';
        cellArray.push(content);
        cellObjArray.push(tableObj.rows[no].cells[indexThis]);
      }
      
      if(sortMethod=='N'){
        cellArray = cellArray.sort(sortNumeric);
      }else{
        cellArray = cellArray.sort(sortString);
      }
      
      if(direction=='descending'){
        for(var no=cellArray.length;no>=0;no--){
          for(var no2=0;no2<cellObjArray.length;no2++){
            if(cellObjArray[no2].innerHTML == cellArray[no] && !cellObjArray[no2].getAttribute('allreadySorted')){
              cellObjArray[no2].setAttribute('allreadySorted','1');	
              tBody.appendChild(cellObjArray[no2].parentNode);				
            }				
          }			
        }
      }else{
        for(var no=0;no<cellArray.length;no++){
          for(var no2=0;no2<cellObjArray.length;no2++){
            if(cellObjArray[no2].innerHTML == cellArray[no] && !cellObjArray[no2].getAttribute('allreadySorted')){
              cellObjArray[no2].setAttribute('allreadySorted','1');	
              tBody.appendChild(cellObjArray[no2].parentNode);				
            }				
          }			
        }				
      }
      
      for(var no2=0;no2<cellObjArray.length;no2++){
        cellObjArray[no2].removeAttribute('allreadySorted');		
      }

      tableWidget_okToSort = true;
      
      
    }
    
    function initTableWidget(objId,width,height,sortArray)
    {
      width = width + '';
      height = height + '';

      var pageheight = document.body.scrollHeight - 250;
      var pagewidth = document.body.scrollWidth - 75;

      var obj = document.getElementById(objId);
      obj.parentNode.className='widget_tableDiv';
      if(navigator.userAgent.indexOf('MSIE')>=0){
        obj.parentNode.style.overflowY = 'auto';
      }		
      tableWidget_arraySort[tableWidget_tableCounter] = sortArray;

      // Send "0" height to ignore height and width settings (for printing)
      if(height == 0){ ignoreprint = 1; }
      else if ( height == "max" ) {

          if(width.indexOf('%')>=0){
            obj.style.width = width;
            obj.parentNode.style.width = width;
          }else{
            obj.style.width = width + 'px';
            obj.parentNode.style.width = width + 'px';
          }

          obj.parentNode.style.height = pageheight + 'px';
      }
      else {

          if(width.indexOf('%')>=0){
            obj.style.width = width;
            obj.parentNode.style.width = width;
          }else{
            obj.style.width = width + 'px';
            obj.parentNode.style.width = width + 'px';
          }
          if(height.indexOf('%')>=0){	
            obj.parentNode.style.height = height;			
            
          }else{	
            obj.parentNode.style.height = height + 'px';
          }
      }

      obj.id = 'tableWidget' + tableWidget_tableCounter;
      addEndCol(obj);
      
      obj.cellSpacing = 0;
      obj.cellPadding = 0;
      obj.className='tableWidget';
      var tHead = obj.getElementsByTagName('THEAD')[0];
      var cells = tHead.getElementsByTagName('TD');
      for(var no=0;no<cells.length;no++){
        cells[no].className = 'tableWidget_headerCell';
        cells[no].onselectstart = cancelTableWidgetEvent;
        if(no==cells.length-1){
          cells[no].style.borderRight = '0px';	
        }
        if(sortArray[no]){
          cells[no].onmouseover = highlightTableHeader;
          cells[no].onmouseout =  deHighlightTableHeader;
          cells[no].onmousedown = mousedownTableHeader;		
          cells[no].onmouseup = highlightTableHeader;		
          cells[no].onclick = sortTable;	
          
          var img = document.createElement('IMG');
          img.src = arrowImagePath + 'arrow_up.gif';
          cells[no].appendChild(img);	
          img.style.visibility = 'hidden';
          
          var img = document.createElement('IMG');
          img.src = arrowImagePath + 'arrow_down.gif';
          cells[no].appendChild(img);	
          img.style.display = 'none';
          
          
        }else{
          cells[no].style.cursor = 'default';	
        }
        
        
      }		
      var tBody = obj.getElementsByTagName('TBODY')[0];
      if(document.all && navigator.userAgent.indexOf('Opera')<0){
        tBody.className='scrollingContent';
        tBody.style.display='block';			
      }else{
        tBody.className='scrollingContent';
//        tBody.style.height = (obj.parentNode.clientHeight-tHead.offsetHeight) + 'px';
        if(navigator.userAgent.indexOf('Opera')>=0){
          obj.parentNode.style.overflow = 'auto';
        }
      }
      
      for(var no=1;no<obj.rows.length;no++){
        obj.rows[no].onmouseover = highlightDataRow;
        obj.rows[no].onmouseout = deHighlightDataRow;
        for(var no2=0;no2<sortArray.length;no2++){	/* Right align numeric cells */
          // if(sortArray[no2] && sortArray[no2]=='N')obj.rows[no].cells[no2].style.textAlign='right';
        }
      }
      for(var no2=0;no2<sortArray.length;no2++){	/* Right align numeric cells */
        // if(sortArray[no2] && sortArray[no2]=='N')obj.rows[0].cells[no2].style.textAlign='right';
      }		
      
      tableWidget_tableCounter++;
    }
    
    
    function highlightDataRow()
    {
      if(navigator.userAgent.indexOf('Opera')>=0)return;
      this.className='tableWidget_dataRollOver';
      if(document.all){	// I.E fix for "jumping" headings
        var divObj = this.parentNode.parentNode.parentNode;
        var tHead = divObj.getElementsByTagName('TR')[0];
        tHead.style.top = divObj.scrollTop + 'px';
        
      }	
    }
    
    function deHighlightDataRow()
    {
      if(navigator.userAgent.indexOf('Opera')>=0)return;
      this.className=null;
      if(document.all){	// I.E fix for "jumping" headings
        var divObj = this.parentNode.parentNode.parentNode;
        var tHead = divObj.getElementsByTagName('TR')[0];
        tHead.style.top = divObj.scrollTop + 'px';
      }			
    }
