window.onload = function(){ 
	var isMac = navigator.appVersion.indexOf("Mac") != -1	
	var isIE = navigator.appVersion.indexOf("MSIE") != -1 
	if(!isIE || !isMac)	{
		addSortBehaviour("liste-film");
		
	}
	
}
	
var sort_rollOver = function(){ 
	this.className+=" t_over";
}
var sort_rollOut = function(){
	this.className=this.className.replace(new RegExp("t_over", "gi"), "");  
}

var sort_click = function(){
	 sortTable("liste-film",this._id,true)
}


function addSortBehaviour(id){
	var tblEl = document.getElementById(id); 
	if(tblEl != undefined){		
		var el = tblEl.parentNode.tHead;	    	rowEl = el.rows[el.rows.length - 1];  		// 	Set style classes for each column as above.  		for (i = 0; i < rowEl.cells.length; i++) {
  			rowEl.cells[i]._id = i; 
  			rowEl.cells[i].onmouseover = sort_rollOver;
  			rowEl.cells[i].onmouseout = sort_rollOut;
  			rowEl.cells[i].onclick = sort_click;
  		} 
  		return sortTable('liste-film', 2, true);	
  	}
}
    
//-----------------------------------------------------------------------------// sortTable(id, col, rev)////  id  - ID of the TABLE, TBODY, THEAD or TFOOT element to be sorted.//  col - Index of the column to sort, 0 = first column, 1 = second column,//        etc.//  rev - If true, the column is sorted in reverse (descending) order//        initially.//// Note: the team name column (index 1) is used as a secondary sort column and// always sorted in ascending order.//-----------------------------------------------------------------------------function sortTable(id, col, rev) {  var colDate = 2;  // Get the table or table section to sort.  var tblEl = document.getElementById(id);  // The first time this function is called for a given table, set up an  // array of reverse sort flags.  if (tblEl.reverseSort == null) {    tblEl.reverseSort = new Array();    // Also, assume the team name column is initially sorted.    tblEl.lastColumn = -1;  }  // If this column has not been sorted before, set the initial sort direction.  if (tblEl.reverseSort[col] == null)    tblEl.reverseSort[col] = rev;  // If this column was the last one sorted, reverse its sort direction.  if (col == tblEl.lastColumn) {    tblEl.reverseSort[col] = !tblEl.reverseSort[col];  }  // Set the table display style to "none" - necessary for Netscape 6   // browsers.  var oldDsply = tblEl.style.display;  tblEl.style.display = "none";  // Sort the rows based on the content of the specified column using a  // selection sort.  var tmpEl;  var i, j;  var minVal, minIdx;  var testVal;  var cmp;    for (i = 0; i < tblEl.rows.length - 1; i++) {    // Assume the current row has the minimum value.    minIdx = i;
    minVal = getTextValue(tblEl.rows[i].cells[col]);
	if(col == colDate) minVal = date2Str(minVal);    // Search the rows that follow the current one for a smaller value.    for (j = i + 1; j < tblEl.rows.length; j++) {
            testVal = getTextValue(tblEl.rows[j].cells[col]);
      if(col == colDate) testVal = date2Str(testVal);
      	cmp = compareValues(minVal, testVal);      // Negate the comparison result if the reverse sort flag is set.      if (tblEl.reverseSort[col])        cmp = -cmp;      // Sort by the second column (team name) if those values are equal. 
      if (cmp == 0 && col != 1)        
        cmp = compareValues(getTextValue(tblEl.rows[minIdx].cells[1]),                                         getTextValue(tblEl.rows[j].cells[1]));
      // If this row has a smaller value than the current minimum, remember its      // position and update the current minimum value.      if (cmp > 0) {        minIdx = j;        minVal = testVal;      }    }    // By now, we have the row with the smallest value. Remove it from the    // table and insert it before the current row.    if (minIdx > i) {      tmpEl = tblEl.removeChild(tblEl.rows[minIdx]);      tblEl.insertBefore(tmpEl, tblEl.rows[i]);    }  }  // Make it look pretty.  makePretty(tblEl, col);
  
    // Remember this column as the last one sorted.  tblEl.lastColumn = col;
  /*  // Set team rankings.  setRanks(tblEl, col, rev);*/  // Restore the table's display style.  tblEl.style.display = oldDsply;  return false;}//-----------------------------------------------------------------------------// Functions to get and compare values during a sort.//-----------------------------------------------------------------------------// This code is necessary for browsers that don't reflect the DOM constants// (like IE).if (document.ELEMENT_NODE == null) {  document.ELEMENT_NODE = 1;  document.TEXT_NODE = 3;}

String.prototype.reverse = function(str){
	var l = this.length;
	var t ="";
	for(var i = 0; i < l; i++) t=this[i]+t;
	return t;
}
function getTextValue(el) {  var i;  var s;  // Find and concatenate the values of all text nodes contained within the  // element.  s = "";  for (i = 0; i < el.childNodes.length; i++)    if (el.childNodes[i].nodeType == document.TEXT_NODE)      s += el.childNodes[i].nodeValue;    else if (el.childNodes[i].nodeType == document.ELEMENT_NODE &&             el.childNodes[i].tagName == "BR")      s += " ";    else      // Use recursion to get text within sub-elements.      s += getTextValue(el.childNodes[i]);  return normalizeString(s);}
function compareValues(v1, v2) {  var f1, f2;  // If the values are numeric, convert them to floats.  f1 = parseFloat(v1);  f2 = parseFloat(v2);  if (!isNaN(v1) && !isNaN(v2)) {    v1 = f1;    v2 = f2;  }  // Compare the two values.  if (v1 == v2)    return 0;  if (v1 > v2)    return 1  return -1;}function date2Str(str){
	var t = str.split("-");
	str="";
	for(var i = t.length-1; i >= 0;i--) str+=t[i];
	return str;
}// Regular expressions for normalizing white space.var whtSpEnds = new RegExp("^\\s*|\\s*$", "g");var whtSpMult = new RegExp("\\s\\s+", "g");
function normalizeString(s) {  s = s.replace(whtSpMult, " ");  // Collapse any multiple whites space.  s = s.replace(whtSpEnds, "");   // Remove leading or trailing white space.  return s;}//-----------------------------------------------------------------------------// Functions to update the table appearance after a sort.//-----------------------------------------------------------------------------// Style class names.var rowClsNm = "l1";// Regular expressions for setting class names.var rowTest = new RegExp(rowClsNm, "gi");

 function makePretty(tblEl, col) {  var i, j;  var rowEl, cellEl;  // Set style classes on each row to alternate their appearance.	for (i = 0; i < tblEl.rows.length; i++) {
  		rowEl = tblEl.rows[i];
  	//if(i == 0) alert(rowEl+"- <"+rowEl.className.replace(rowTest, "")+"> <"+rowTest+">");    	rowEl.className = rowEl.className.replace(rowTest, "");    	if (i % 2 != 0)   rowEl.className += " " + rowClsNm;    	rowEl.className = normalizeString(rowEl.className);	}
      // Find the table header and highlight the column that was sorted.  var el = tblEl.parentNode.tHead;
   rowEl = el.rows[el.rows.length - 1];   // Set style classes for each column as above.  for (i = 0; i < rowEl.cells.length; i++) {    cellEl = rowEl.cells[i];
        // Highlight the header of the sorted column.          cellEl.className = cellEl.className.replace(new RegExp("t_up", "gi"), "");   		  
    	 cellEl.className = cellEl.className.replace(new RegExp( "t_down", "gi"), "");
   
    if (i == col){
        tblEl.tri = tblEl.reverseSort[col] ? "t_up" : "t_down";     	cellEl.className += " " + tblEl.tri;
   }
  
    cellEl.className = normalizeString(cellEl.className);  }}

