


function build_sorter(table,i,typ) {
  return function() {
   sort_table(table,
	      ( typ == 'n' ? 
		function (r) {
		return extract_number(r,i);
	      } 
		: 
		function (r) {
		  return extract_string_ci(r,i);
		} ),
	      (typ == 'n' ?
	       compare_numbers : compare_strings )
	      );
  }
}

function install_sorters(tab_id) {
  if (tab_id=="hotel_view")
  {
  var typen = ['s','s','s','s','n'];
  }
  else
  {
	  var typen = ['s','s','s','s','n'];
  }
	 

  var table = document.getElementById(tab_id);
  var headers = table.getElementsByTagName('th');
  var i;
  for (i = 0 ; i < headers.length; i++) {
    headers[i].onclick = build_sorter(table,i,typen[i]);
  }
}

function extract_number(row,column) {
  var cells = row.getElementsByTagName('td');
  return parseInt(cells[column].firstChild.nodeValue);
}

function extract_string_ci(row,column) {
  var cells = row.getElementsByTagName('td');
  return cells[column].firstChild.nodeValue.toUpperCase();
}

function compare_numbers(a,b) {
  return (a.value - b.value);
}

function compare_strings(a,b) {
  if (a.value < b.value) {
    return -1;
  } 
  if (a.value > b.value) {
    return 1; 
  }
  return 1;
}

function sort_table(table, extract_fct, sort_fct) {
  var clones = new Array();
  
  var tbody = table.getElementsByTagName('tbody')[0];
  var rows = tbody.getElementsByTagName('tr');
  var i;
  var l = rows.length;
  // Zeilen aus der Tabelle kopieren und
  // für jede Zeile Sortierdaten extrahieren
  for (i = 0; i <l; i++) {
    var r = rows[i];
    var v = extract_fct(r);
    clones[i] = {
      value:    v,
      element : r
    }
  }

  // Kopien sortieren
  clones.sort(sort_fct);
  // Zeilen in der richtigen Reihenfolge einfügen
  for (i = 0; i < l; i++) {
    tbody.appendChild(clones[i].element);
  }
}


function blend_aus(tabelle,k){
  var table = document.getElementById(tabelle);
  var tbody = table.getElementsByTagName('tbody')[0];
  var rows = tbody.getElementsByTagName('tr');
  var i;
  var l = rows.length;

  for (i = 0; i <l; i++) {
    var r = rows[i];
	var cells = r.getElementsByTagName('td');
	var wert=cells[k].firstChild.nodeValue; 
	//alert("_"+wert +"_"+wert.length);
	abzug=0;
	start=0;
	if (navigator.appName=="Microsoft Internet Explorer"){
	abzug=0;
	start=0;		
		};
	var kriterium=document.getElementById('Bereichsauswahl').value;
	//alert(kriterium+'=='+wert.substring(0,wert.length-1).length);
  if (wert.substring(start,wert.length-abzug)==kriterium){
  r.style.display='';	
  }
  else
  {
    if (kriterium=='Alle Bereiche'){
	r.style.display='';	
	}
	else
	{
	r.style.display='none';	
	}
  }
   }
}

function trim(s){
while (s.substring(0,1)==' '){
s= s.substring(1,s.length);
}
while(s.substring(s.length-1,s.length)){
s=s.substring(0,s.length-1);
}
return s;
}
