/*Scripting to write and sort a Table with params
current highlighting and sorted colmn:							  var currendColumn = 3;
sorting state of colmn (ascending/descending):				var currendSorting = "descending";

Information of Table header, name and length of x colmns:
var tableSortImages = new Array();
tableSortImages[x] = new Object();
tableSortImages[x].width="width of colmn"; 
tableSortImages[x].text="Headertext";

Information of separation images and table width:
tableSortImages.separatorLine = new Image();
tableSortImages.separatorLine.src ="/_common/narrowband/img/palette/1x1_999999.gif"; 
tableSortImages.separatorLine.width="662"; 
tableSortImages.spacer = new Image();
tableSortImages.spacer.src = "/_common/narrowband/img/palette/1x1_ffffff.gif";

Needs array of data, x rows:
var model  = new Array();
model[x] = new Array("", "");
target of links always after linktext
*/

var tabarrow =buildValidServerRelativeUrl("/de/_common/img/table_arrows.gif");
var tabarrow_h=buildValidServerRelativeUrl("/de/_common/img/table_arrows-h.gif");
var tabarrowDesc =buildValidServerRelativeUrl("/de/_common/img/table_arrowsdesc.gif");
var tabarrowDesc_h=buildValidServerRelativeUrl("/de/_common/img/table_arrowsdesc-h.gif");
var tabarrowAsc=buildValidServerRelativeUrl("/de/_common/img/table_arrowsasc.gif");
var tabarrowAsc_h=buildValidServerRelativeUrl("/de/_common/img/table_arrowsasc-h.gif");

var datecol=100;
var linkcol=100;

// test for links or download, always after linktext
for(var x=0;x<model[0].length;x++){
	if(model[0][x].indexOf("#dat#")!=-1){
		datecol=x;
	}
	if(model[0][x].indexOf(".htm")!=-1||model[0][x].indexOf(".jsp")!=-1||model[0][x].indexOf("javascript:")!=-1){
		linkcol=x;
	}else if(model[0][x].indexOf(".pdf")!=-1 || model[0][x].indexOf(".zip")!=-1 || model[0][x].indexOf(".mov")!=-1){
		linkcol=x;
	}
}
		
function tableSort(a,b) {
	if((currendColumn == linkcol)){
		var valueA = a[(currendColumn-1)]; 
		var valueB = b[(currendColumn-1)];
	}else if((currendColumn < linkcol)){
		var valueA = a[(currendColumn-1)]; 
		var valueB = b[(currendColumn-1)];
	}else{
		var valueA = a[(currendColumn)]; 
		var valueB = b[(currendColumn)];
	}
	return ((currendSorting == "descending") ? ((valueA.toLowerCase() > valueB.toLowerCase()) ? (-1) : ((valueA.toLowerCase() < valueB.toLowerCase()) ? (1) : (0))) : ((valueA.toLowerCase()< valueB.toLowerCase()) ? (-1) : ((valueA.toLowerCase() > valueB.toLowerCase()) ? (1) : (0))));
}

function layerWriteTable(columnNumber,sortingState) {
	currendColumn = ((columnNumber) ? (columnNumber) : (currendColumn));
	currendSorting = ((sortingState) ? (sortingState) : (currendSorting));
	model.sort(tableSort);

	var rows = model.length;
	
	if(linkcol<100){
		var cols = model[0].length-3;
	}else{
		var cols = model[0].length-2;
	}

	var separatorWidth = tableSortImages.separatorLine.width;
	var separatorHeight = tableSortImages.separatorLine.height;
	var trackSt = "";
	separatorWidth2=separatorWidth-(4*9);

	// table header
	var tableCode = '<table cols="' + cols + '" width="' + separatorWidth2 + '" cellspacing="1" cellpadding="0" border="0"><tr>';
	for (var k=0;k<cols;k++) {
		if (currendColumn == (k+1)) {
			if (currendSorting == "descending") {
				tableCode += '<td><table width="'+tableSortImages[k].width+'" cellspacing="0" cellpadding="0" border="0" class="HeadHover" onmouseover="switchImage(\'headimg_d'+k+'\',1);" onmouseout="switchImage(\'headimg_d'+k+'\',0)" onclick="layerWriteTable(' + (k+1) + ',\'ascending\');return false"><tr><td class="tableHeadHover" >'+tableSortImages[k].text+'</td><td align="right"  valign="bottom" style="padding-bottom:7px" class="tableHeadHover"><img src="'+tabarrowDesc+'" preload="'+tabarrowDesc_h+'" alt="" id="headimg_d'+k+'" border="0" hspace="8"></td></tr></table></td>';
			} else {
				tableCode += '<td><table width="'+tableSortImages[k].width+'" cellspacing="0" cellpadding="0" border="0" class="HeadHover" onmouseover="switchImage(\'headimg_a'+k+'\',1);" onmouseout="switchImage(\'headimg_a'+k+'\',0)" onclick="layerWriteTable(' + (k+1) + ',\'descending\');return false"><tr><td class="tableHeadHover" >'+tableSortImages[k].text+'</td><td align="right"  valign="bottom" style="padding-bottom:7px" class="tableHeadHover"><img src="'+tabarrowAsc+'" preload="'+tabarrowAsc_h+'" alt="" id="headimg_a'+k+'" border="0" hspace="8"></td></tr></table></td>';
			}
		} else {
			tableCode += '<td><table width="'+tableSortImages[k].width+'" cellspacing="0" cellpadding="0" border="0" class="Head" onmouseover="switchImage(\'headimg_n'+k+'\',1);this.style.backgroundColor=\'#003399\'" onmouseout="switchImage(\'headimg_n'+k+'\',0);this.style.backgroundColor=\'#999999\'" onclick="layerWriteTable(' + (k+1) + ',\'ascending\');return false"><tr><td class="tableHead" >'+tableSortImages[k].text+'</td><td align="right" valign="bottom" style="padding-bottom:7px" class="tableHead"><img src="'+tabarrow+'" preload="'+tabarrow_h+'" alt="" id="headimg_n'+k+'" border="0"  hspace="8"></td></tr></table></td>';
		}
	}
	tableCode += '</tr>';
	// end table header

	cols = model[0].length-2;

	// table content
	for (var i=0;i<rows;i++) {
		tableCode += '<tr>';
		for (var k=0;k<cols;k++) {
			if (k == (linkcol-1)) {
			var downloadFile = "";
				// tracking
				if(model[i][k+7].indexOf("download")!=-1) {
					trackSt="onclick=\"return trackDownload('"+model[i][k+1]+"')\"";
					model[i][k+1] = buildValidServerRelativeUrl(model[i][k+1]);
					downloadFile = "?download=true";
				} else if(model[i][k+7].indexOf("external")!=-1) {
					trackSt="onclick=\"return trackExternalLink('"+model[i][k+1]+"')\"";
				} else {
					trackSt="";
					model[i][k+1] = buildValidServerRelativeUrl(model[i][k+1]);
				}
				// end tracking
				
				if (k == datecol) {// date
					tableCode += '<td align="left" valign="top" class="tablePadding"><a href="'+ model[i][k+1] + downloadFile + '" target="'+model[i][k+6]+'" '+ trackSt+' onmouseover="top.status=\''+ ((model[i][k].indexOf("#dat#") >= 0) ? (model[i][k].substring(model[i][k].indexOf("#dat#")+5)) : (model[i][k])) +'\';return true" onmouseout="top.status=\'\';return true" name="linkPDF'+i+'" id="linkPDF'+i+'"   onfocus="this.blur();">'+ ((model[i][k].indexOf("#dat#") >= 0) ? (model[i][k].substring(model[i][k].indexOf("#dat#")+5)) : (model[i][k])) +'</a></td>';
				} else {
					tableCode += '<td align="left" valign="top" class="tablePadding"><a href="'+ model[i][k+1] + downloadFile + '" target="'+model[i][k+6]+'" '+ trackSt+' onmouseover="top.status=\''+ model[i][k] +'\';return true" onmouseout="top.status=\'\';return true" name="linkPDF'+i+'" id="linkPDF'+i+'"   onfocus="this.blur();">'+ model[i][k] +'</a></td>';
				}
			} else if (k != linkcol) {
				if (k == datecol) {// date
					tableCode += '<td align="left" valign="top" class="tablePadding">' + ((model[i][k].indexOf("#dat#") >= 0) ? (model[i][k].substring(model[i][k].indexOf("#dat#")+5)) : (model[i][k])) + '</td>';
				} else {
					tableCode += '<td align="left" valign="top" class="tablePadding">' + model[i][k] + '</td>';
				}
			}
		}
		tableCode += '</tr>';
		if (i < (rows)) {
			tableCode += '<tr><td colspan="' + cols + '" width="' + separatorWidth + '" height="' + (separatorHeight+4) + '" align="left" valign="top"><img src="' + tableSortImages.spacer.src + '" width="' + separatorWidth + '" height="2" alt="" title="" border="0"><br><img src="' + tableSortImages.separatorLine.src + '" width="' + separatorWidth + '" height="' + separatorHeight + '" alt="" title="" border="0"><br><img src="' + tableSortImages.spacer.src + '" width="' + separatorWidth + '" height="2" alt="" title="" border="0"></td></tr>';
		}
	}
	tableCode += '<tr><td colspan="' + cols + '" width="' + separatorWidth + '" height="5" align="left" valign="top"><img src="' + tableSortImages.spacer.src + '" width="' + separatorWidth + '" height="5" alt="" title="" border="0"></td></tr>';

	tableCode += '</table><br>';
	tableCode += '<img src="' + tableSortImages.spacer.src + '" width="' + tableSortImages.spacer.width + '" height="12" alt="" title="" border="0"><br>';
	// table content
	
	// write into layer
	if (document.all) {
		document.all.tags("div")["divResultTable"].innerHTML = tableCode;
	} else if (document.getElementsByTagName) {
		document.getElementsByTagName("div")["divResultTable"].innerHTML = tableCode;
	} 
	// end write into layer
	preload()
}
