

function sortableTable(tableIDx,intDef,sortProps){

  var tableID=tableIDx;
  var intCol = 0;
  var intDir = 1;
  var strMethod;
  var arrHead = null;
  var arrMethods = sortProps.split(",");

  this.init = function(colNumber, sortDirection){
    arrHead = document.getElementById(tableID).getElementsByTagName('thead')[0].getElementsByTagName('th');
    for(var i=0;i<arrHead.length;i++){
    	 if(tableIDx.indexOf('TT')==-1) {
			arrHead[i].onclick=new Function(tableIDx + ".sortTable(" + i + ",'" + arrMethods[i] + "');");
		}
		else {
			arrHead[i].onclick = new Function("TournamentSortTables['"+tableIDx+"']"+ ".sortTable(" + i + ",'" + arrMethods[i] + "');");
		}
    }
	this.CurrentsortTable(colNumber, sortDirection);
  }
  
  this.CurrentsortTable = function(colNumber, sortDirection){ 
  	  var arrRows = document.getElementById(tableID).getElementsByTagName('tbody')[0].getElementsByTagName('tr');
  
	  if(colNumber && colNumber != undefined && colNumber > 0 && sortDirection != undefined) {
		intDir = sortDirection;
		intCol = colNumber;
	  }
	  else {
	  	for(var i=0;i<arrHead.length;i++){
	  	  	if(arrHead[i].className=="sortTableasc"|arrHead[i].className=="sortTabledes") {
				intCol=i;
			}
	  	}
		intDir = (arrHead[intCol].className=="sortTableasc")?1:-1;
	  }
  	  strMethod = arrMethods[intCol];
  
  	  var arrRowsSort = new Array(); 
  	  for(var i=0;i<arrRows.length;i++){ 
  	      arrRowsSort[i]=arrRows[i].cloneNode(true); 
  	  }
  	   arrRowsSort.sort(sort2dFnc);
  
  	  for(var i=0;i<arrRows.length;i++){   
  	      arrRows[i].parentNode.replaceChild(arrRowsSort[i],arrRows[i]);
  	      arrRows[i].className = (i%2==0)?"sortTable":"sortTablealt";
	  } 
  }

  this.sortTable = function(intColx,strMethodx){ 

  	  intCol = intColx;
  	  strMethod = strMethodx;

	  var arrRows = document.getElementById(tableID).getElementsByTagName('tbody')[0].getElementsByTagName('tr');

	  intDir = (arrHead[intCol].className=="sortTableasc")?-1:1;
	  arrHead[intCol].className = (arrHead[intCol].className=="sortTableasc")?"sortTabledes":"sortTableasc";
	  for(var i=0;i<arrHead.length;i++){
		if(i!=intCol){arrHead[i].className="sortTable";}
	  }

	  var arrRowsSort = new Array(); 
	  for(var i=0;i<arrRows.length;i++){ 
	      arrRowsSort[i]=arrRows[i].cloneNode(true); 
	  }
	   arrRowsSort.sort(sort2dFnc);

	  for(var i=0;i<arrRows.length;i++){   
	      arrRows[i].parentNode.replaceChild(arrRowsSort[i],arrRows[i]);
	      arrRows[i].className = (i%2==0)?"sortTable":"sortTablealt";
	  } 
	//  alert(document.getElementById(tableID).innerHTML);
  } 

  function sort2dFnc(a,b){
    var col = intCol;
    var dir = intDir;
    var aCell = a.getElementsByTagName("td")[col].innerHTML;
    var bCell = b.getElementsByTagName("td")[col].innerHTML;

    if(aCell.indexOf('N/A')>-1) aCell='0';
    if(bCell.indexOf('N/A')>-1) bCell='0';
	   
    switch (strMethod){
    case "percentage":
      aCell = parseFloat(CleanNum(aCell));
      bCell = parseFloat(CleanNum(bCell));
      break;
    case "currency":
      aCell = parseFloat(CleanNum(aCell));
      bCell = parseFloat(CleanNum(bCell));
      break;
    case "int":
      aCell = parseInt(CleanNum(aCell));
      bCell = parseInt(CleanNum(bCell));			 
      break;
    case "float":
      aCell = parseFloat(CleanNum(aCell));
      bCell = parseFloat(CleanNum(bCell));			 		   
      break;
    case "date":
      aCell = new Date(aCell);
      bCell = new Date(bCell);
      break;
    case "str":
      aCell = new String(aCell.toLowerCase());
      bCell = new String(bCell.toLowerCase());
      break;
    case "networkPriority":
      aCell = parseInt(NetworksPriority[CleanNetwork(aCell).toLowerCase()]);
      bCell = parseInt(NetworksPriority[CleanNetwork(bCell).toLowerCase()]);
      break;
    case "entrants":
      aCell = parseInt(aCell.substring(0,aCell.indexOf('/')));
      bCell = parseInt(bCell.substring(0,bCell.indexOf('/')));			 
      break;
    case "rating":
      if(aCell.indexOf('fish')>-1){aCell = -parseInt((aCell.length-replaceAll(aCell,'fish','').length)/4);}
      else if(aCell.indexOf('shark')>-1){aCell = parseInt((aCell.length-replaceAll(aCell,'shark','').length)/5);}
      else aCell=0;
      if(bCell.indexOf('fish')>-1){bCell = -parseInt((bCell.length-replaceAll(bCell,'fish','').length)/4);}
      else if(bCell.indexOf('shark')>-1){bCell = parseInt((bCell.length-replaceAll(bCell,'shark','').length)/5);}
      else bCell=0;			 
      break;
    }
    return (aCell>bCell)?dir:(aCell<bCell)?-dir:0;
  }

  function CleanNum(inString){
    inString=replaceAll(replaceAll(inString,'<FONT color=red>',''),'</FONT>','');
    return replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(inString,',',''),'\\$',''),'<font color="red">',''), '</font>',''),'&nbsp;',''),' ',''),'%',''),'\u20AC',''),'\u00A3','');
  }

  function CleanNetwork(inString){
	var startIndex = inString.indexOf('>');
	var endIndex = inString.indexOf('</a>');
	if(startIndex > -1 && endIndex > -1) {
		inString=inString.substring(startIndex+1,endIndex);
	}
    return inString;
  }

}