//	OrderedTable v1.3 by Bjørn Rosell
//	Find more scripts here: www.prototypeDHTML.net

function OrderedTable(cols,records) {
	this.id = OrderedTable.count
	OrderedTable.instances[OrderedTable.count] = this
	OrderedTable.count++
	this.orderCol=-1
	this.orderDir=true	// ascending
	this.cols = cols
	this.records = records
	this.created = false
	this.orderBy(0)
}
OrderedTable.instances = []
OrderedTable.count = 0
OrderedTable.orderBy = function(tableID,colNr) {
	var o = OrderedTable.instances[tableID]
	o.orderBy(colNr)
}
OrderedTable.prototype.orderBy = function(colNr) {
	if (this.orderCol==colNr) {
		this.orderDir = !this.orderDir
	}
	else {
		this.orderDir = true
		this.orderCol = colNr
	}
	OrderedTable.orderCol = colNr
	OrderedTable.sorting = this.cols[colNr][4]
//	this.records = this.records.sort(this.sorting[colNr])
	this.records = this.records.sort(OrderedTable.sortFunc)
	if (!this.orderDir) this.records = this.records.reverse()
	if (this.created) API.setHTML('OrderedTable'+this.id,this.getHTML())
}
OrderedTable.prototype.setHeaders = function(headers) {this.headers = headers}
OrderedTable.prototype.setRecords = function(records) {this.records = records}
OrderedTable.prototype.setSorting = function(sorting) {
	this.sorting = sorting
}
OrderedTable.stripTags = function(s) {return s.replace(/<[^\n>]*>/g,'')}
OrderedTable.sortFunc = function(a,b) {
	var ot = OrderedTable
	var colNr = ot.orderCol
	val1 = a[colNr]
	val2 = b[colNr]
	if (ot.settings.ignoreTagsInSorting) {
		val1 = ot.stripTags(val1)
		val2 = ot.stripTags(val2)
	}
	return ot.sorting(val1,val2)
}
OrderedTable.sortFunctions = {
	alpabetical: function(a,b) {return (a.toLowerCase()>b.toLowerCase()?1:-1)},
	ascii: function(a,b) {return (a>b?1:-1)}
}
OrderedTable.filterFunctions = {
	bold: function(s,col,row) {return '<b>'+s+'</b>'},
	italic: function(s,col,row) {return '<i>'+s+'</i>'},
	uppercase: function(s,col,row) {return s.toUpperCase()},
	lowercase: function(s,col,row) {return s.toLowerCase()}
}
OrderedTable.prototype.wrap = function() {

}
OrderedTable.prototype.getHTML = function() {
	var s=''
	s+='<table class=OrderedTable cellspacing=0 cellpadding=0>\n'
	s+='<tr bgcolor=690015>\n'
	for (var i=0; i<this.cols.length; i++) {
		s+='<th width='+this.cols[i][1]+'>'
		s+='<a href="" onclick="OrderedTable.orderBy('+this.id+','+i+'); return false" class="'+this.cols[i][2]+'">'
		s+=this.cols[i][0]
		if (i==this.orderCol) s+='<img src="'+OrderedTable.settings.image_folder+(this.orderDir?OrderedTable.settings.image_down:OrderedTable.settings.image_up)+'" border=0 align=absmiddle>'
		s+='</a></th>\n'
	}
	s+='</tr>\n'
	for (var i=0; i<this.records.length; i++) {
		var rec = this.records[i]
		s+='<tr>\n'
		for (var j=0; j<this.cols.length; j++) {
			s+='<td class="'+this.cols[j][3]+'" align="center" "wrap">'
			s+=this.cols[j][5]?this.cols[j][5](rec[j],j,i):rec[j]
			s+='</td>\n'
		}
		s+='</tr>\n'
	}
	s+='</table>'
	return s
}
OrderedTable.prototype.writeHTML = function() {
	this.created = true
	document.write('<div id=OrderedTable'+this.id+' align=center>'+this.getHTML()+'</div></iframe>')
}

OrderedTable.settings = {
	image_folder : '',
	image_down: 'down.gif',
	image_up: 'up.gif',
	ignoreTagsInSorting: true
}
