/**
 * In dieser Datei befinden sich die Skripte zur Darstellung der "dynamischen" Listen.
 */

/**
 * Funktion zur Initialisierung der nm_filelist
 */
function initNM_Damfilelist() {

	this.columnHeaders = [{
		key:"Icon",
		label:"Typ",
		type:"string",
		width: "30px",
		sortable:true,
		className:"icon"
	},{
		key:"Bezeichnung",
		label:"Name",
		type:"string",
		sortable:true,
		width: "660px",
		className:"name",
		sortOptions: {
			sortFunction:sortBezeichnung
		}
	},{
		key:"Modifiziert",
		label:"Datum",
		type:"date",
		width: "60px",
		className:"date_mod",
		sortable:true,		
		formatter:formatDatum,
		sortOptions: {
			sortFunction:sortDatum
		}
	},{
		key:"Groesse",
		label:"MB",
		type:"number",
		width: "30px",
		sortable:true,
		formatter:formatFileSize,
		sortOptions : {
			sortFunction:sortGroesse
		},
		className:"groesse"
	}
	];

	this.columnSet = new YAHOO.widget.ColumnSet(this.columnHeaders);

	var markup = YAHOO.util.Selector.query(".tx-nmdamfilelist-pi-filelist" , document, true);
	var table = YAHOO.util.Selector.query(".tx-mmdamfilelist-pi1-table", markup, true);

	var listDS = new YAHOO.util.DataSource(table);
	listDS.responseType = YAHOO.util.DataSource.TYPE_HTMLTABLE;
	listDS.responseSchema = {
		fields: [{
			key: "Icon"
		},{
			key: "Bezeichnung"
		},{
			key: "Modifiziert",
			parser: "date"
			
		},{
			key: "Groesse"
		}
		]
	};

	// var markup = YAHOO.util.Dom.get("publikationenContainer");
	this.dataTable = new YAHOO.widget.DataTable(markup, this.columnSet, listDS);
	//this.dataTable.sortColumn(this.dataTable.getColumn("Bezeichnung"), YAHOO.widget.DataTable.CLASS_ASC);
	//this.dataTable.sortColumn(this.dataTable.getColumn("Modifiziert"), YAHOO.widget.DataTable.CLASS_ASC);
	

}

/**
 * Funktion zur Formatierung der Dateigrösse
 */
function formatFileSize(elCell, oRecord, oColumn, oData) {
	//elCell.innerHTML = oData;
	//return;
	//oData enthält "MB" am Ende 
	var arr_unit = oData.split(" ");	
	//arr_unit[0] enthält den Wert, arr_unit[1] die Grösse (MB, KB,..)
	
	var divider;
	switch(arr_unit[1]){
		case "MB":
			divider = 1000000;
			break;
		case "KB":
			divider = 1000;
			break;
		default:
			divider = 1;
	}
	//var filesize = (parseInt(oData)) / (1024 * 1024);
	var filesize = (arr_unit[0] * divider) / (1024 * 1024);
	if (filesize < 0.1) {
		filesize = 0.1;
	}

	var size = filesize.toFixed(1);
	elCell.innerHTML = size;
	return size;
	// elCell.className = "groesseCol";
}

// Diese Funktionen werden nicht verwendet (Dat Template wird via TS entfüllt).
/**
function formatIcon(elCell, oRecord, oColumn, oData) {
	
	var fileName = YAHOO.lang.trim(oData);
	var fileExt = fileName.substr(fileName.lastIndexOf(".")+1);
	alert(fileExt);
	elCell.innerHTML = '<span class="tx-mmdamfilelist-pi1-image tx-mmdamfilelist-pi1-image-0"><img src="typo3conf/ext/mm_dam_filelist/pi1/res/images/default/22x22/mimetypes/'+fileExt+'.gif" width="22" height="22" border="0" alt="'+fileExt+'" title="'+fileExt+'" /></span>';
}


 // Funktion zur Formatierung der Bezeichnung.
 // Ansonsten funktioniert der Link leider nicht korrekt...
 
function formatBezeichnung(elCell, oRecord, oColumn, oData) {
	var split = /(.*)&nbsp;\(<a.*href="(.*)".*>(.*)<\/a>\)/i;

	split.exec(oData);
	var bezeichnung = RegExp.$1;
	var href = RegExp.$2;
	var title = oRecord.getData("Icon");

	elCell.innerHTML = "<a href=\""+href+"\" title=\""+title+"\">"+bezeichnung +"</a>";
}
*/
function formatDatum(elCell, oRecord, oColumn, oData) {
	var datum = new Date(oData);
	var datumString = (datum.getDate() < 10 ? "0" + String(datum.getDate()) : datum.getDate());
	var monthNumber = datum.getMonth() + 1;
	datumString+= "." + (monthNumber < 10 ? "0" + String(monthNumber) : monthNumber);
	datumString+= "." + datum.getFullYear();

	elCell.innerHTML = datumString;
}

function sortBezeichnung(a, b, desc) {

	if((a === null) || (typeof a == "undefined")) {
		if((b === null) || (typeof b == "undefined")) {
			return 0;
		} else {
			return 1;
		}
	} else if((b === null) || (typeof b == "undefined")) {
		return -1;
	}

	var split = /.*<a.*href=".*".*>(.*)<\/a>/i;
	var nameA  = a.getData("Bezeichnung").match(split)[1];
	var nameB = b.getData("Bezeichnung").match(split)[1];//RegExp.$1;
	
	return YAHOO.util.Sort.compare(nameA, nameB, desc);

}

function sortGroesse(a, b, desc) {
	var aV = formatFileSize('','','',a.getData("Groesse"));
	var bV = formatFileSize('','','',b.getData("Groesse"));
	var rV = 0;
	var rM = desc ? -1 : 1;
	if (aV < bV) {
		rV = -1;
	} else if (aV > bV) {
		rV = 1;
	}

	return rV * rM;
}

function sortDatum(a, b, desc) {

	var aV = Date.parse(a.getData("Modifiziert"));
	var bV = Date.parse(b.getData("Modifiziert"));
	var rV = 0;
	var rM = desc ? -1 : 1;
	if (aV < bV) {
		rV = -1;
	} else if (aV > bV) {
		rV = 1;
	}

	return rV * rM;
}
