/**
* SOS_Window_Event: Zur Registrierung und Ausfuehren diverser window-Events
*
* @copyright    Software- und Oranisation-Service GmbH, Germany
* @author       Oliver Haufe <oliver.haufe@sos-berlin.com>
* @since        1.0-2006/01/27
*
* @access       public
* @package      UTIL
*/ 
 
 /** 
  * Zur Registrierung und Ausfuehren diverser window-Events<br/><br/>
  *  
  * Loesung fuer folgendes Problem:<br/> 
  * Wenn in einer HTML-Seite viele JavaScript-Dateien von womoeglichen unterschiedlichen 
  * Autoren eingezogen werden und in mehreren ein Window-Event (z.B. window.onload) formuliert 
  * ist, dann gewinnt der letzte Event-Einrag.
  * Die Klasse SOS_Window_Event kann alle Event-Einraege beruecksichtigen.<br/>
  * In JEDER JavaScript-Datei ist die Verwendung von<br/>
  *   <code>&nbsp;&nbsp;&nbsp; window.[event] = [function-object];</code><br/>
  * zu Ersetzen durch<br/>  
  *   <code>&nbsp;&nbsp;&nbsp; SOS_Window_Event.[event]( [function-name] );</code><br/>
  * Hierbei ist [event] ein Window-Event wie bspw. onload und [function-object] das Objekt einer
  * zuvor formulierten Funktion, waehrend [function-name] der Name von [function-object] ist.<br/><br/>    
  *       
  * Beispiel-Aufruf:<br/>
  *   <code>&nbsp;&nbsp;&nbsp; function fct_hallo() { alert("hallo"); }</code><br/>  
  *   <code>&nbsp;&nbsp;&nbsp; function fct_welt()  { alert("welt"); }</code><br/>  
  *   <code>&nbsp;&nbsp;&nbsp; SOS_Window_Event.onload( "fct_hallo" );</code><br/>
  *   <code>&nbsp;&nbsp;&nbsp; SOS_Window_Event.onload( "fct_welt" );</code><br/>
  * das entspricht<br/>
  *   <code>&nbsp;&nbsp;&nbsp; window.onload = function() { fct_hallo(); fct_welt(); };</code><br/><br/>
  * 
  * Ein Objekt muss nicht instanziiert werden.
  * Den Methoden SOS_Window_Event.[event] wird der Funktionsname als Zeichenkette uebergeben werden.
  *
  * @constructor
  * @param    fct String Funktionsname
  * @param    evt Name eines window-Event ohne dem Praefix 'on' (z.B.: load)
  * @author   Oliver Haufe <oliver.haufe@sos-berlin.com>
  * @version  1.1-2006/02/03
  */    
    function SOS_Window_Event( fct, evt ) {
      
      if( typeof fct                   != "string"    ) { return; }
      if( typeof evt                   == "undefined" ) { evt = 'load'; } 
      if( typeof SOS_Window_Event[evt] == "undefined" ) { SOS_Window_Event[evt] = ""; }
      
      if( evt == "error" ) {
        SOS_Window_Event[evt] += fct+"(arg1,arg2,arg3);";
        window["on"+evt] = function(arg1,arg2,arg3) { 
          var ok = eval(SOS_Window_Event[evt]); 
          if( typeof ok != "undefined" ) { return ok; } 
        }
      } else {
        SOS_Window_Event[evt] += fct+"(arg);";
        window["on"+evt] = function(arg) { 
          var ok = eval(SOS_Window_Event[evt]); 
          if( typeof ok != "undefined" ) { return ok; } 
        }
      }
    }
    
    
  /** 
  * Registriert mehrere window-Events onabort und fuehrt sie aus. 
  *
  * @param    fct String Funktionsname
  * @author   Oliver Haufe <oliver.haufe@sos-berlin.com>
  * @version  1.0-2006/01/27
  */  
    SOS_Window_Event.onabort     = function( fct ) { SOS_Window_Event( fct, 'abort'     ); }
    
  
  /** 
  * Registriert mehrere window-Events onblur und fuehrt sie aus. 
  *
  * @param    fct String Funktionsname
  * @author   Oliver Haufe <oliver.haufe@sos-berlin.com>
  * @version  1.0-2006/01/27
  */  
    SOS_Window_Event.onblur      = function( fct ) { SOS_Window_Event( fct, 'blur'      ); }
    
    
  /** 
  * Registriert mehrere window-Events onclick und fuehrt sie aus. 
  *
  * @param    fct String Funktionsname
  * @author   Oliver Haufe <oliver.haufe@sos-berlin.com>
  * @version  1.0-2006/01/27
  */  
    SOS_Window_Event.onclick     = function( fct ) { SOS_Window_Event( fct, 'click'     ); }
    
    
  /** 
  * Registriert mehrere window-Events ondblclick und fuehrt sie aus. 
  *
  * @param    fct String Funktionsname
  * @author   Oliver Haufe <oliver.haufe@sos-berlin.com>
  * @version  1.0-2006/01/27
  */  
    SOS_Window_Event.ondblclick  = function( fct ) { SOS_Window_Event( fct, 'dblclick'  ); }
    
    
  /** 
  * Registriert mehrere window-Events onerror und fuehrt sie aus. 
  *
  * @param    fct String Funktionsname
  * @author   Oliver Haufe <oliver.haufe@sos-berlin.com>
  * @version  1.0-2006/01/27
  */  
    SOS_Window_Event.onerror     = function( fct ) { SOS_Window_Event( fct, 'error'     ); }
    
    
  /** 
  * Registriert mehrere window-Events onfocus und fuehrt sie aus. 
  *
  * @param    fct String Funktionsname
  * @author   Oliver Haufe <oliver.haufe@sos-berlin.com>
  * @version  1.0-2006/01/27
  */  
    SOS_Window_Event.onfocus     = function( fct ) { SOS_Window_Event( fct, 'focus'     ); }
    
    
  /** 
  * Registriert mehrere window-Events onkeydown und fuehrt sie aus. 
  *
  * @param    fct String Funktionsname
  * @author   Oliver Haufe <oliver.haufe@sos-berlin.com>
  * @version  1.0-2006/01/27
  */  
    SOS_Window_Event.onkeydown   = function( fct ) { SOS_Window_Event( fct, 'keydown'   ); }
    
    
  /** 
  * Registriert mehrere window-Events abort und fuehrt sie aus. 
  *
  * @param    fct String Funktionsname
  * @author   Oliver Haufe <oliver.haufe@sos-berlin.com>
  * @version  1.0-2006/01/27
  */  
    SOS_Window_Event.onkeypress  = function( fct ) { SOS_Window_Event( fct, 'keypress'  ); }
    
    
  /** 
  * Registriert mehrere window-Events onkeyup und fuehrt sie aus. 
  *
  * @param    fct String Funktionsname
  * @author   Oliver Haufe <oliver.haufe@sos-berlin.com>
  * @version  1.0-2006/01/27
  */  
    SOS_Window_Event.onkeyup     = function( fct ) { SOS_Window_Event( fct, 'keyup'     ); }
    
    
  /** 
  * Registriert mehrere window-Events onload und fuehrt sie aus. 
  *
  * @param    fct String Funktionsname
  * @author   Oliver Haufe <oliver.haufe@sos-berlin.com>
  * @version  1.0-2006/01/27
  */  
    SOS_Window_Event.onload      = function( fct ) { SOS_Window_Event( fct, 'load'      ); }
    
    
  /** 
  * Registriert mehrere window-Events onmousedown und fuehrt sie aus. 
  *
  * @param    fct String Funktionsname
  * @author   Oliver Haufe <oliver.haufe@sos-berlin.com>
  * @version  1.0-2006/01/27
  */  
    SOS_Window_Event.onmousedown = function( fct ) { SOS_Window_Event( fct, 'mousedown' ); }
    
    
  /** 
  * Registriert mehrere window-Events onmousemove und fuehrt sie aus. 
  *
  * @param    fct String Funktionsname
  * @author   Oliver Haufe <oliver.haufe@sos-berlin.com>
  * @version  1.0-2006/01/27
  */  
    SOS_Window_Event.onmousemove = function( fct ) { SOS_Window_Event( fct, 'mousemove' ); }
    
    
  /** 
  * Registriert mehrere window-Events onmouseout und fuehrt sie aus. 
  *
  * @param    fct String Funktionsname
  * @author   Oliver Haufe <oliver.haufe@sos-berlin.com>
  * @version  1.0-2006/01/27
  */  
    SOS_Window_Event.onmouseout  = function( fct ) { SOS_Window_Event( fct, 'mouseout'  ); }
    
    
  /** 
  * Registriert mehrere window-Events onmouseover und fuehrt sie aus. 
  *
  * @param    fct String Funktionsname
  * @author   Oliver Haufe <oliver.haufe@sos-berlin.com>
  * @version  1.0-2006/01/27
  */  
    SOS_Window_Event.onmouseover = function( fct ) { SOS_Window_Event( fct, 'mouseover' ); }
    
    
  /** 
  * Registriert mehrere window-Events onmouseup und fuehrt sie aus. 
  *
  * @param    fct String Funktionsname
  * @author   Oliver Haufe <oliver.haufe@sos-berlin.com>
  * @version  1.0-2006/01/27
  */  
    SOS_Window_Event.onmouseup   = function( fct ) { SOS_Window_Event( fct, 'mouseup'   ); }
    
    
  /** 
  * Registriert mehrere window-Events onreset und fuehrt sie aus. 
  *
  * @param    fct String Funktionsname
  * @author   Oliver Haufe <oliver.haufe@sos-berlin.com>
  * @version  1.0-2006/01/27
  */  
    SOS_Window_Event.onreset     = function( fct ) { SOS_Window_Event( fct, 'reset'     ); }
    
    
  /** 
  * Registriert mehrere window-Events onresize und fuehrt sie aus. 
  *
  * @param    fct String Funktionsname
  * @author   Oliver Haufe <oliver.haufe@sos-berlin.com>
  * @version  1.0-2006/01/27
  */  
    SOS_Window_Event.onresize    = function( fct ) { SOS_Window_Event( fct, 'resize'    ); }
    
    
  /** 
  * Registriert mehrere window-Events onunload und fuehrt sie aus. 
  *
  * @param    fct String Funktionsname
  * @author   Oliver Haufe <oliver.haufe@sos-berlin.com>
  * @version  1.0-2006/01/27
  */  
    SOS_Window_Event.onunload    = function( fct ) { SOS_Window_Event( fct, 'unload'    ); }
    
    
  /** 
  * Registriert mehrere window-Events onscroll und fuehrt sie aus. 
  *
  * @param    fct String Funktionsname
  * @author   Oliver Haufe <oliver.haufe@sos-berlin.com>
  * @version  1.0-2006/01/27
  */  
    SOS_Window_Event.onscroll    = function( fct ) { SOS_Window_Event( fct, 'scroll'    ); }
