var row_per_page=10; //numero massimo di righe per pagina
var total_pages=0;

var use_css=false;
var use_layers=false;   
var use_dom=false;
var internal_current_page=1

if (document.all)    { use_css    = true; }
if (document.layers) { use_layers = true; }
if (document.getElementById) { use_dom=true; }

var sort_object;
var sort_column;
var reverse=0;


function xConfirm() {
  return confirm("Sei sicuro di voler eliminare la riga? L'operazione non è annullabile")
}

function SortTable(name) {

	this.name = name;
	this.sortcolumn="";
	this.dosort=true;
	this.tablecontainsforms=false;

	this.AddLine = AddLine;
	this.AddColumn = AddColumn;
	this.WriteRows = WriteRows;
	this.SortRows = SortRows;
	this.AddLineProperties = AddLineProperties;
	this.AddLineSortData = AddLineSortData;

	this.Columns = new Array();
	this.Lines = new Array();
	this.LineProperties = new Array();
	}

function AddLine() {
	var index = this.Lines.length;
	this.Lines[index] = new Array();
	for (var i=0; i<arguments.length; i++) {
		this.Lines[index][i] = new Object();
		this.Lines[index][i].text = arguments[i];
		this.Lines[index][i].data = arguments[i];
		}
	}

function AddLineProperties(prop) {
	var index = this.Lines.length-1;
	this.LineProperties[index] = prop;
	}

function AddLineSortData() {
	var index = this.Lines.length-1;
	for (var i=0; i<arguments.length; i++) {
		if (arguments[i] != '') {
			this.Lines[index][i].data = arguments[i];
			}
		}
	}


function AddColumn(name,td,align,type) {
	var index = this.Columns.length;
	this.Columns[index] = new Object;
	this.Columns[index].name = name;
	this.Columns[index].td   = td;
	this.Columns[index].align=align;
	this.Columns[index].type = type;
	if (type == "form") {
		 this.tablecontainsforms=true; 
		 if (use_layers) { 
		 	this.dosort=false;
			}
		}
	}

	
function K1(v){ 	
//  onMouseOver="this.bgColor='#FFFF80'" onMouseOut="this.bgColor='#FFFFFF'"
// v.bgColor='#FFFF80';
}

function K2(v){ 	
//  onMouseOver="this.bgColor='#FFFF80'" onMouseOut="this.bgColor='#FFFFFF'"
// v.bgColor='#FFFFFF';
}

function WriteRows() {
	var open_div = "";
	var close_div = "";
	var numr
	numr=this.Lines.length;
	if (numr>row_per_page) {
		numr=row_per_page;
	} 
	for (var i=0; i<numr; i++) {
	document.write("<TR onmouseover='K1(this)' onmouseout='K2(this)'>");//+this.LineProperties[i]+">");
		for (var j=0; j<this.Columns.length; j++) {
			var div_name = "d"+this.name+"-"+i+"-"+j;
			if (use_css || use_dom) {
				if (this.Columns[j].align != '') {
					var align = " ALIGN="+this.Columns[j].align;
					}
				else {
					var align = "";
					}
				open_div = "<DIV ID=\""+div_name+"\" "+align+">";
				close_div= "</DIV>";
				}
			else if (use_layers) {
				if (!this.dosort) {
					if (this.Columns[j].align != '') {
						open_div="<SPAN CLASS=\""+this.Columns[j].align+"\">";
						}
					}
				else {
					open_div = "<ILAYER NAME=\""+div_name+"\" WIDTH=100%>";
					open_div+= "<LAYER NAME=\""+div_name+"x\" WIDTH=100%>";
					if (this.Columns[j].align != '') {
						open_div+= "<SPAN CLASS=\""+this.Columns[j].align+"\">";
						}
					}
				if (this.Columns[j].align != '') {
	 				close_div = "</SPAN>";
					}
				if (this.dosort) {
					close_div += "</LAYER></ILAYER>";
					}
				}
			document.write("<TD "+this.Columns[j].td+">"+open_div+this.Lines[i][j].text+close_div+"&nbsp;</TD>");
			}
		document.write("</TR>");
		}
	}

function PaginaAvanti(table, pagine) {
 if (internal_current_page<pagine) {
 	SortRows(table,-1,internal_current_page+1) }
}

function PaginaIndietro(table) {
 if (internal_current_page>0) {
 	SortRows(table,-1,internal_current_page-1) }
}


function SortRows(table,column,pagenum) {
	internal_current_page=pagenum
	sort_object = table;
	if (!sort_object.dosort) { return; }
	if (sort_column == column) { reverse=1-reverse; }
	else { reverse=0; }
	sort_column = column;

	if (table.tablecontainsforms) {
		var iname="1";
		var tempcolumns = new Object();
		for (var i=0; i<table.Lines.length; i++) {
			for (var j=0; j<table.Columns.length; j++) {
				if(table.Columns[j].type == "form") {
					var cell_name = "d"+table.name+"-"+i+"-"+j;
					if (use_css) {
						tempcolumns[iname] = document.all[cell_name].innerHTML;
					}
					else {
						tempcolumns[iname] = document.getElementById(cell_name).innerHTML;
					}
					table.Lines[i][j].text = iname;
					iname++;
					}
				}
			}
		}
	if (column>=0) {
		if (table.Columns[column].type == "numeric") {

			table.Lines.sort(	function by_name(a,b) {
										if (parseFloat(a[column].data) < parseFloat(b[column].data) ) { return -1; }
										if (parseFloat(a[column].data) > parseFloat(b[column].data) ) { return 1; }
										return 0;
									}
								);
		}
	else if (table.Columns[column].type == "money") {

		table.Lines.sort(	function by_name(a,b) {
									if (parseFloat(a[column].data.substring(1)) < parseFloat(b[column].data.substring(1)) ) { return -1; }
									if (parseFloat(a[column].data.substring(1)) > parseFloat(b[column].data.substring(1)) ) { return 1; }
									return 0;
									}
								);
		}
	else if (table.Columns[column].type == "date") {

		table.Lines.sort(	function by_name(a,b) {
									if (Date.parse(a[column].data) < Date.parse(b[column].data) ) { return -1; }
									if (Date.parse(a[column].data) > Date.parse(b[column].data) ) { return 1; }
									return 0;
									}
								);
		}

	else {

		table.Lines.sort(	function by_name(a,b) {
									if (a[column].data+"" < b[column].data+"") { return -1; }
									if (a[column].data+"" > b[column].data+"") { return 1; }
									return 0;
									}
								);
		}
	if (reverse) { table.Lines.reverse(); }
}


//	alert('uno')
	var idxstart //indice riga iniziale pagina
	var idxstop  //indice riga finale
	var dummy
	idxstart=(pagenum-1)*row_per_page;
	idxstop=idxstart+row_per_page;
	
	
	if ((idxstop>table.Lines.length) && (total_pages==1)) {
		idxstop=table.Lines.length
		//alert('lungooooo!');
	}
	
	/*
	if (idxstop>table.Lines.length) {
		idxstop=table.Lines.length;
		}
	*/
	for (var i=idxstart; i<idxstop; i++) {
		dummy=i-idxstart;
		for (var j=0; j<table.Columns.length; j++) {
			var cell_name = "d"+table.name+"-"+dummy+"-"+j;
			if (use_dom) {
				if(table.Columns[j].type == "form") {
					var iname = table.Lines[i][j].text;
					document.getElementById(cell_name).innerHTML = tempcolumns[iname];
					}
				else {
					if (i>=table.Lines.length) {
						document.getElementById(cell_name).innerHTML = '';
						}
					else {
						document.getElementById(cell_name).innerHTML = table.Lines[i][j].text;
						}
					}
				}
			else if (use_css) {
				if(table.Columns[j].type == "form") {
					var iname = table.Lines[i][j].text;
					document.all[cell_name].innerHTML = tempcolumns[iname];
					}
				else {
					if (i>=table.Lines.length) {
						document.all[cell_name].innerHTML = '';
						}
					else {
						document.all[cell_name].innerHTML = table.Lines[i][j].text;
						}
					}
				}
			else if (use_layers) {
				var cell_namex= "d"+table.name+"-"+i+"-"+j+"x";
				if (i<table.Lines.length) {
					if (table.Columns[j].align != '') {
						document.layers[cell_name].document.layers[cell_namex].document.write("<SPAN CLASS=\""+table.Columns[j].align+"\">");
						}
					document.layers[cell_name].document.layers[cell_namex].document.write(table.Lines[i][j].text);
					if (table.Columns[j].align != '') {
						document.layers[cell_name].document.layers[cell_namex].document.write("</SPAN>");
						}
					document.layers[cell_name].document.layers[cell_namex].document.close();
					}
				}
			}
		}
}



