// polylib-js-lib.js
//
// Hilfsroutinen für Javascript-Funktionalität in der Polylib
// (c) Markus Pohl (Markus.Pohl (at) web.de)



//Ermöglicht die saubere Installation mehrerer Window-Onload-Handler.
//Bitte nicht window.onload überschreiben, sondern register_window_onload()
//benutzen!
var window_onload_registry = Array();
function register_window_onload(func)
{
  if (window_onload_registry.push) window_onload_registry.push(func);
  else                             window_onload_registry[window_onload_registry.length] = func;
}
old_window_onload = window.onload;
window.onload = function()
{
  if (old_window_onload) old_window_onload();
  var i;
  for (i=0; i < window_onload_registry.length; ++i) {
    window_onload_registry[i]();
  }
}

//Ersatz für document.getElementById(), das vom IE 5.0 noch nicht verstanden wird
function portableGetElementById(id)
{
  if      (document.getElementById) return document.getElementById(id);
  else if (document.all) return document.all[id];
}


// Setzt den Fokus nach dem Laden der Seite auf das angegebene Element. Dieses
// wird über das name-Attribut identifiziert (is_id=false) oder über das
// id-Attribut (is_id=true).
// Bei der Bestimmung über name wird das Element mit dem Index 1 vor dem mit
// Index 0 angesprochen, da Formulare, die Daten per GET übertragen, ein
// verstecktes Feld mit demselben Namen übertragen (s. Hyperref::show_form_tag()).
// Dies wird bei Verwendung von MySQLSearchDataSource vermieden, es schadet aber
// nicht, dass diese Möglichkeit hier geprüft wird.
// In defines.inc existiert eine PHP-Funktion mit demselben Namen, die eine
// bequeme Fokussierung aus PHP-Code heraus erlaubt.
function set_initial_focus(name, is_id)
{
  if (is_id) portableGetElementById(name).focus();
  else if (document.getElementsByName(name)[1]) document.getElementsByName(name)[1].focus();
  else if (document.getElementsByName(name)[0]) document.getElementsByName(name)[0].focus();
}
