
/*
nomeTabella: tabella da ordinare
numColonna: colonna da ordinare
ord: 0=ordinamento crescente, 1=ordinamento decrescente
useValue: invece del testo contenuto nella cella utilizza il valore dell'attributo value della colonna
		  (utilizzato per le immagini)
*/
function ordina(nomeTabella, numColonna,ord,useValue) {
	bubbleSort(
		nomeTabella,
		document.getElementById(nomeTabella).tBodies[0].rows,
		0,
		document.getElementById(nomeTabella).tBodies[0].rows.length-1,
		numColonna,
		ord,
		useValue
		);
}

function bubbleSort(nomeTabella, trs, start, end,numColonna,ord,useValue) {
//alert('table: '+nomeTabella+'start: '+start+' end: '+end+' ord:'+ord);
 swap = false;

	for (var i = start; i < end; i++) {
  		tds1=trs[i].cells;
	  	tds2=trs[i+1].cells;  

	  	if (useValue == 'true') {
			var curString1=tds1[numColonna].value;
			var curString2=tds2[numColonna].value;	  
	  	} else {
		  	var curString1 = tds1[numColonna].lastChild.nodeValue;  
		  	var curString2 = tds2[numColonna].lastChild.nodeValue;
	  	}  
	//  alert(curString1+' '+curString2);
	  	if (curString1.toUpperCase()>curString2.toUpperCase() && ord==0) {
	    	swap = true;
	    	swapRow(nomeTabella, trs,i, i+1);
	  	} else if (curString1.toUpperCase()<curString2.toUpperCase() && ord==1) {
			swap = true;
	    	swapRow(nomeTabella, trs,i, i+1);
	  	}
 	}

 	if (swap)
		bubbleSort(nomeTabella, trs, start, end-1,numColonna,ord,useValue);
}

function swapRow(nomeTabella, trs,i, j) {
	document.getElementById(nomeTabella).tBodies[0].insertBefore(trs[i],trs[j]);
	document.getElementById(nomeTabella).tBodies[0].insertBefore(trs[j],trs[i]);
}

/*
utilizzo:
  	<TABLE id="tab1">
  	<THEAD>
      	<TR style="cursor:hand">
	        <Th ord="0" onclick="javascript:ordina('tab1','0',this.ord);">Nome</Th>
	        <Th ord="0" onclick="javascript:ordina('tab1','1',this.ord,true);">Immagine</Th>
		</TR>
	</THEAD>				
	<TBODY>
		<TR>
	        <TD >Nome</TD>
	        <TD value="10"><img src=""></TD>
		</TR>
	</TBODY>
	</TABLE>
*/
