// versione del 25/10/2005
document.writeln('<style type="text/css" media="screen">');
document.writeln('<!--');
document.writeln('.TabellaOrdinabile{');
document.writeln('display: none');
document.writeln('}');
document.writeln('.Invis{');
document.writeln('display: none');
document.writeln('}');
document.writeln('#PrintVersion{');
document.writeln('visibility: visible;');
document.writeln('}');
document.writeln('-->');
document.writeln('</style>');

addEvent(window, "load", sortables_init);

var SORT_COLUMN_INDEX;

function sortables_init() {
    if (!document.getElementsByTagName) return;
    tbls = document.getElementsByTagName("table");
    for (ti=0;ti<tbls.length;ti++) {
        thisTbl = tbls[ti];
        if (((' '+thisTbl.className+' ').indexOf("TabellaOrdinabile") != -1) && (thisTbl.id)) {
		var IDContenitore = document.all ? document.getElementById(thisTbl.id).parentElement.parentElement.parentElement : document.getElementById(thisTbl.id).parentNode.parentNode.parentNode;
           if ( thisTbl.className.indexOf("TabellaOrdinabileComune2") >= 0 )
				ts_makeSortable(thisTbl,IDContenitore,false);
			else
				ts_makeSortable(thisTbl,IDContenitore,true);
        }
        else if (((' '+thisTbl.className+' ').indexOf("TabellaOrdinabileComune") != -1)) {
        var IDContenitore = document.all ? thisTbl.parentElement.parentElement.parentElement : thisTbl.parentNode.parentNode.parentNode;
        if ( thisTbl.className.indexOf("TabellaOrdinabileComune2") >= 0 )
			ts_makeSortable(thisTbl,IDContenitore,false);
		else
			ts_makeSortable(thisTbl,IDContenitore,true);
        }

    }
}

function HideShowTd(tables, NumeroCelleTotale, RigheTotali , NumIniziale) {
table = tables;
Restanti=NumeroCelleTotale-5;
    	for (var i=0;i<RigheTotali;i++) {
		for (j=0; j<=Restanti-1 ; j++){
			z=j+5
			tables.rows[i].cells[z].style.display='none'
		}
	}
	var newChild = document.createElement("tr");
	var newChild2 = document.createElement("td");
	var newChild3 = document.createElement("td");
	newChild2.className = 'NoPadding'
	newChild3.className = 'NoPadding'
      var firstNode = tables.rows[0];
	var controlli = '';
	var NumCellAttivare = Restanti;
if(NumCellAttivare>4){NumInAlt = 4 }
else{NumInAlt =  NumCellAttivare}
		controlli += '<table width="100%" border="0" cellspacing="0" cellpadding="0">'
		controlli += '<tr>'
		controlli += '<td width="28" id="ShowPre" class="Invisibile"></td>'
		controlli += '<td id="ShowAll"><a href="javascript:ShowAll(table,'+ NumeroCelleTotale +',' + RigheTotali +')">Espandi tutta la tabella</a></td>'
		controlli += '<td width="28" id="ShowNext"><a href="javascript:ShowSuccessive(table,'+ NumeroCelleTotale + ','+ NumIniziale + ','+ NumCellAttivare + ',0)"><img src="/img_PiccoliComuni/freccia_mostra_dx.gif" alt="VISUALIZZA LE SUCCESSIVE ' + NumInAlt + ' COLONNE DI DATI"></a></td>'
		controlli += '</tr>'
		controlli += '</table>'
	newChild2.innerHTML = '';
	newChild3.innerHTML = controlli;
	var colspan = document.all ? 200 : 0;
  	newChild3.colSpan = colspan ;
  	newChild.appendChild(newChild2);
  	newChild.appendChild(newChild3);
	firstNode.parentNode.insertBefore(newChild,firstNode);

}
var NumCellAttivareOra = 3;
var Numpassaggi = 0;

function getTopPos(SchedaAttiva){
if (! SchedaAttiva.currentStyle){
 	return SchedaAttiva.offsetTop;
}
else{
if (SchedaAttiva.currentStyle.top == "auto"){
 	if (SchedaAttiva.currentStyle.position != "relative"){
  		return SchedaAttiva.offsetTop;
	}
 	else{

 		 return 0;
	}
}
else{
 	return parseInt(SchedaAttiva.currentStyle.top);
	}

}
}

function getLeftPos(SchedaAttiva, larghezza){

if (! SchedaAttiva.currentStyle){
x = (screen.width-larghezza)/2;
return  x
}
else{
if (SchedaAttiva.currentStyle.left == "auto"){
 	if (SchedaAttiva.currentStyle.position != "relative"){

  		return SchedaAttiva.offsetLeft - larghezza - 40;
	}
 	else{
 		 return 0;
	}
}
else{
 	return parseInt(SchedaAttiva.currentStyle.left - larghezza - 40);
	}
}
}

function ShowAll(table,NumeroCelleTotale, RigheTotali,print){
	a = document.getElementById('ShowPre');
	b = document.getElementById('ShowNext');
	c = document.getElementById('ShowAll');
	a.className = 'Invisibile';
	b.className = 'Invisibile';
    for (var i=1;i<=RigheTotali;i++) {
		for (j=0; j<NumeroCelleTotale ; j++){
			table.rows[i].cells[j].style.display=''
		}
	}	
	RigheTotali = RigheTotali  + 1
	c.innerHTML = '<a href="javascript:ContraiTab(table,' + NumeroCelleTotale + ',' + RigheTotali + ',1);">Riduci la tabella</a>';
}

function ContraiTab(tables, NumeroCelleTotale, RigheTotali , NumIniziale) {
	Restanti=NumeroCelleTotale-5;
	var NumCellAttivare = Restanti
	for (var i=1;i<RigheTotali;i++) {
		for (j=0; j<=Restanti-1 ; j++){
			z=j+5
			tables.rows[i].cells[z].style.display='none'
		}
	}
RigheTotali = RigheTotali - 1
	b = document.getElementById('ShowNext');
	c = document.getElementById('ShowAll');
	c.innerHTML = '<a href="javascript:ShowAll(table,'+ NumeroCelleTotale +',' + RigheTotali +')">Espandi tutta la tabella</a>';
if(NumCellAttivare>4){NumInAlt = 4 }
else{NumInAlt =  NumCellAttivare}
	b.innerHTML = '<a href="javascript:ShowSuccessive(table,'+ NumeroCelleTotale + ','+ NumIniziale + ','+ NumCellAttivare + ', 0)"><img src="/img_PiccoliComuni/freccia_mostra_dx.gif" alt="VISUALIZZA LE SUCCESSIVE ' + NumInAlt + ' COLONNE DI DATI"></a>';
	b.className = 'Visibile'
}

function ShowSuccessive(table , NumeroCelleTotale , NumIniziale , NumCellAttivare, Numpassaggi){
	Righe=table.rows.length;
	a = document.getElementById('ShowPre');
	b = document.getElementById('ShowNext');
	CelleIniziare = 5 + Numpassaggi;
	Numpassaggi = Numpassaggi + 4
			NumCellAttivarePre = 3
		if(NumCellAttivare>4){
			NumCellAttivare = NumCellAttivare - 3;
			NumCellAttivareOra = 3;
			b.className = 'Visibile'
			b.innerHTML = '<a href="javascript:ShowSuccessive(table,'+ NumeroCelleTotale + ','+ NumIniziale + ','+ NumCellAttivare + ',' +Numpassaggi +')"><img src="/img_PiccoliComuni/freccia_mostra_dx.gif" alt="VISUALIZZA LE SUCCESSIVE 4 COLONNE DI DATI"></a>'
		}
		else{
			NumCellAttivareOra = NumCellAttivare;
			NumCellAttivare = NumCellAttivare - 3;
			b.className = 'Invisibile'
		}
    	for (i=NumIniziale ;i<Righe;i++) {
		for (j=1; j<CelleIniziare; j++){
			table.rows[i].cells[j].style.display = 'none'
		}
		for (p=CelleIniziare; p<=CelleIniziare + NumCellAttivareOra; p++){
		if(p>=NumeroCelleTotale){continue}
			table.rows[i].cells[p].style.display = ''
		}
	}

	CelleReinizio = CelleIniziare - 4;
	a.innerHTML = '<a href="javascript:ShowPrecedenti(table,'+ CelleReinizio + ','+ NumIniziale + ','+ NumeroCelleTotale + ','+ NumCellAttivarePre + ','+ NumCellAttivare +')"><img src="/img_PiccoliComuni/freccia_mostra_sx.gif" alt="VISUALIZZA LE PRECEDENTI 4 COLONNE DI DATI"></a>'
	a.className = 'Visibile';
	NumCellAttivareOra = 3
}

function ShowPrecedenti(table , CelleReinizio , NumIniziale , NumeroCelleTotale , NumCellAttivarePre , NumCellAttivare){
Numpassaggi=CelleReinizio + 3
	Righe=table.rows.length;
	a = document.getElementById('ShowPre');
	b = document.getElementById('ShowNext');
			Numpassaggi = Numpassaggi - 4
		if(CelleReinizio == 1){
			NumCellAttivare = NumCellAttivare + 3;
if(NumCellAttivare>=4){NumInAlt = 4 }
else{NumInAlt =  NumCellAttivare}
			a.className = 'Invisibile'
			b.innerHTML = '<a href="javascript:ShowSuccessive(table,'+ NumeroCelleTotale + ','+ NumIniziale + ','+ NumCellAttivare + ',' + Numpassaggi +')"><img src="/img_PiccoliComuni/freccia_mostra_dx.gif" alt="VISUALIZZA LE SUCCESSIVE ' + NumInAlt + ' COLONNE DI DATI"></a>'
		}
		else{
			NumCellAttivareOra = NumCellAttivare-1;
if(NumCellAttivare>=4){NumInAlt = 4 }
else{NumInAlt =  NumCellAttivare + 1 }
			NumCellAttivare = NumCellAttivare + 3;
			a.className = 'Visibile';
			b.innerHTML = '<a href="javascript:ShowSuccessive(table,'+ NumeroCelleTotale + ','+ NumIniziale + ','+ NumCellAttivare + ',' + Numpassaggi +')"><img src="/img_PiccoliComuni/freccia_mostra_dx.gif" alt="VISUALIZZA LE SUCCESSIVE ' + NumInAlt + ' COLONNE DI DATI"></a>'
			a.innerHTML = '<a href="javascript:ShowPrecedenti(table,'+ (CelleReinizio-4) + ','+ NumIniziale + ','+ NumeroCelleTotale + ','+ NumCellAttivarePre + ','+ NumCellAttivare +')"><img src="/img_PiccoliComuni/freccia_mostra_sx.gif" alt="VISUALIZZA LE PRECEDENTI 4 COLONNE DI DATI"></a>'
		}
	b.className = 'Visibile';
    	for (i=NumIniziale ;i<Righe;i++) {
		for (j=CelleReinizio + NumCellAttivarePre+1; j< NumeroCelleTotale ; j++){
			table.rows[i].cells[j].style.display = 'none'
		}
		for (j=CelleReinizio ; j<=CelleReinizio + NumCellAttivarePre; j++){
			table.rows[i].cells[j].style.display = ''
		}
	}
}

function ts_makeSortable(table,IdTab,makeOrderTab) {
    if (table.rows && table.rows.length > 0) {
	var rigaConteggio = table.rows[0];
		if(rigaConteggio.cells.length > 5){
			Righe = table.rows.length;
			var NumIniziale = 1
			HideShowTd(table , rigaConteggio.cells.length , Righe , 1 , 0);
			var firstRow = table.rows[1];
		}
	else{
		var firstRow = table.rows[0];
		var NumIniziale = 0
		}
    }
    if (!rigaConteggio) return;
	for (var i=0;i<firstRow.cells.length;i++) {
        var cell = firstRow.cells[i];
        var txt = ts_getInnerTextCell(cell);

		if ( makeOrderTab )
		{
			var Freccia
			if(i==0){Freccia = '<span class="FrecciaOrdTab ArrowUp" title="Visualizza i dati in ordine DISCENDENTE"></span>';}
			else{Freccia = '<span class="FrecciaOrdTab" title="Visualizza i dati in ordine ASCENDENTE"></span>';}
			cell.innerHTML = '<a href="#" onclick="ts_resortTable(this,' + NumIniziale+ ',' + i +');return false;">'+ Freccia + '</a>' + txt;
		}
	}
	IdTab.style.display = 'block';
	var visualizza = document.all ? 'block' : 'table';
	table.style.display = visualizza;
}

function ts_getInnerTextCell(el) {
	if (typeof el == "string") return el;

	if (typeof el == "undefined") { return el };
	if (el.innerHTML) return el.innerHTML;
	var str = "";
	var cs = el.childNodes;

	var l = cs.length;
	for (var i = 0; i < l; i++) {
		switch (cs[i].nodeType) {
			case 1: //ELEMENT_NODE
				str += ts_getInnerText(cs[i]);
				break;
			case 3:	//TEXT_NODE
				str += cs[i].nodeValue;
				break;
		}
	}

	return str;
}

function ts_getInnerText(el) {
	if (typeof el == "string") return el;
	if (typeof el == "undefined") { return el };
	var str = "";
	var cs = el.childNodes;
	var l = cs.length;
	for (var i = 0; i < l; i++) {
		switch (cs[i].nodeType) {
			case 1: //ELEMENT_NODE
				str += ts_getInnerText(cs[i]);
				break;
			case 3:	//TEXT_NODE
				str += cs[i].nodeValue;
				break;
		}
	}
	return str;
}

function ts_resortTable(lnk,NumIniziales,Numerocella) {
    var span;
    for (var ci=0;ci<lnk.childNodes.length;ci++) {
        if (lnk.childNodes[ci].tagName && lnk.childNodes[ci].tagName.toLowerCase() == 'span' && lnk.childNodes[ci].className != 'Valori' ) span = lnk.childNodes[ci];

    }
    var spantext = ts_getInnerText(span);
    var td = lnk.parentNode;
    var column = Numerocella;
    var table = getParent(td,'TABLE');
    if (table.rows[NumIniziales].length <= (NumIniziales +1 )) return;
    var Iniziale = NumIniziales+1
    var itm = ts_getInnerText(table.rows[Iniziale].cells[column]);
if(itm == "" || itm == '&nbsp;'){itm = '0'}
    sortfn = ts_sort_caseinsensitive;
    if (itm.match(/^\d\d[\/-]\d\d[\/-]\d\d\d\d$/)) sortfn = ts_sort_date;
    if (itm.match(/^\d\d[\/-]\d\d[\/-]\d\d$/)) sortfn = ts_sort_date;
    if (itm.match(/^[£$]/)) sortfn = ts_sort_currency;
	if (itm.match(/[\d\.]+/)) sortfn = ts_sort_numeric;
//--Added	
    if (itm.match(/[\d\,]+/)) sortfn = ts_sort_numeric;
//-- End Added	  
    if (itm.match(/[°]+/)) sortfn = ts_sort_gradi;
    SORT_COLUMN_INDEX = column;
    var newRows = new Array();
    for (j=1;j<(table.rows.length - NumIniziales);j++) {
		newRows[j-1] = table.rows[NumIniziales+j];
	}
    newRows.sort(sortfn);
    if (span.getAttribute("sortdir") == 'down') {
	  Classe ='FrecciaOrdTab ArrowDown'
        newRows.reverse();
        span.setAttribute('sortdir','up');
        span.setAttribute('title','Visualizza i dati in ordine ASCENDENTE');
    } else {
	  Classe ='FrecciaOrdTab ArrowUp'
        span.setAttribute('sortdir','down');
        span.setAttribute('title','Visualizza i dati in ordine DISCENDENTE');
    }
    for (i=0 ;i<newRows.length;i++) {
	if (!newRows[i].className || (newRows[i].className && (newRows[i].className.indexOf('sortbottom') == -1))){
		table.tBodies[0].appendChild(newRows[i]);
	newclassName="TrPari"
	Algor=i - ( parseInt(i/2)*2);
	if (Algor == 0){
		newRows[i].className = newclassName
	}
	else {
		newRows[i].className = ""
	}
	}
}
    for (i=0 ;i<newRows.length;i++) {
	if (newRows[i].className && (newRows[i].className.indexOf('sortbottom') != -1)){
		table.tBodies[0].appendChild(newRows[i]);
	newclassName="TrPari"
	Algor=i - ( parseInt(i/2)*2);
	if (Algor == 0){
		newRows[i].className = newclassName
	}
	else {
		newRows[i].className = ""
	}
	}
}
    var allspans = document.getElementsByTagName("span");
    for (var ci=0;ci<allspans.length;ci++) {
        if (allspans[ci].className == 'FrecciaOrdTab ArrowUp' || allspans[ci].className == 'FrecciaOrdTab ArrowDown') {
            if (getParent(allspans[ci],"table") == getParent(lnk,"table")) { 
			allspans[ci].className='FrecciaOrdTab'
            }
        }
    }
    span.className = Classe;
}

function getParent(el, pTagName) {
	if (el == null) return null;
	else if (el.nodeType == 1 && el.tagName.toLowerCase() == pTagName.toLowerCase())
		return el;
	else
		return getParent(el.parentNode, pTagName);
}
function ts_sort_date(a,b) {
    aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]);
    bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]);
    if (aa.length == 10) {
        dt1 = aa.substr(6,4)+aa.substr(3,2)+aa.substr(0,2);
    } else {
        yr = aa.substr(6,2);
        if (parseInt(yr) < 50) { yr = '20'+yr; } else { yr = '19'+yr; }
        dt1 = yr+aa.substr(3,2)+aa.substr(0,2);
    }
    if (bb.length == 10) {
        dt2 = bb.substr(6,4)+bb.substr(3,2)+bb.substr(0,2);
    } else {
        yr = bb.substr(6,2);
        if (parseInt(yr) < 50) { yr = '20'+yr; } else { yr = '19'+yr; }
        dt2 = yr+bb.substr(3,2)+bb.substr(0,2);
    }
    if (dt1==dt2) return 0;
    if (dt1<dt2) return -1;
    return 1;
}

function ts_sort_currency(a,b) { 
    aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]).replace(/[^0-9.]/g,'');
    bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]).replace(/[^0-9.]/g,'');
    return parseFloat(aa) - parseFloat(bb);
}

function ts_sort_numeric(a,b) {
// Regex /g replace trouble: Replaces max 3 dots and a comma with dot for sort
// gestisce valori in formato italiano 1.234,567 convertendoli in 1234.567 per il sort
	var x1,x2;
	x1 = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]);
	x2 = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]);

	x1 = x1.replace(/[\.]/, '').replace(/[\.]/, '').replace(/[\.]/, '').replace(',', '.');
	x2 = x2.replace(/[\.]/, '').replace(/[\.]/, '').replace(/[\.]/, '').replace(',', '.');	
		
//  aa = parseFloat(ts_getInnerText(a.cells[SORT_COLUMN_INDEX]));
	aa = parseFloat(x1);
 
    if (isNaN(aa)) aa = 0;
//  bb = parseFloat(ts_getInnerText(b.cells[SORT_COLUMN_INDEX]));
	bb = parseFloat(x2);
    if (isNaN(bb)) bb = 0; 
    return aa-bb;
}
function ts_sort_gradi(a,b) {
var regexp = /\D/;
aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX])
		var newArrayaa = aa.split(regexp);
for(i=0; i<= newArrayaa.length; i++){
	if (newArrayaa[i]<=9 && i!= 3) {
			newArrayaa[i]= "0" + newArrayaa[i];
		}
}
	if(newArrayaa.length<=3){newArrayaa[3]= '00'}
		aa = newArrayaa[0]+newArrayaa[1]+newArrayaa[2]+newArrayaa[3]
bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX])
		var newArraybb = bb.split(regexp);
for(j=0; j<= newArraybb.length; j++){
		if (newArraybb[j]<=9 && j!= 3) {
			if(i != 3){newArraybb[j]= "0" + newArraybb[j];}
		}
}
	if(newArraybb.length<=3){newArraybb[3]= '00'}
		bb = newArraybb[0]+newArraybb[1]+newArraybb[2]+newArraybb[3]
    return aa-bb;
}
function ts_sort_caseinsensitive(a,b) {
    aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]).toLowerCase();
    bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]).toLowerCase();
    if (aa==bb) return 0;
    if (aa<bb) return -1;
    return 1;
}

function ts_sort_default(a,b) {
    aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]);
    bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]);
    if (aa==bb) return 0;
    if (aa<bb) return -1;
    return 1;
}

function addEvent(elm, evType, fn, useCapture)
{
  if (elm.addEventListener){
    elm.addEventListener(evType, fn, useCapture);
    return true;
  } else if (elm.attachEvent){
    var r = elm.attachEvent("on"+evType, fn);
    return r;
  } else {
  }
}
