
/**
* CenLou - ToogleDisplay
* zeitgesteuertes einblenden von elementen innerhalb 'document'
*
* @author heiko pfefferkorn
* @copyright 2006 heiko pfefferkorn
* @version $Id: cl_toogle-display.js,v 1.1 2007/08/13 10:15:55 heiko Exp $
*
*/


    /** INSTALLATION
     *
     * funktion 'setTimeDelay()':
     * setzen einer zeitverzoegerung in sekunden fuer das automatische einblenden der elemente
     *
     * funktion 'setElements()':
     * setzen der zu steuernden bzw. einzublendenden elemente, die anzahl zu uebergebender
     * funktionsparameter ist komplett variabel
     *
     * funktion 'init()':
     * blendet zuerst alle 0'ten eintraege in den einzelnen uebergebenen elemente-arrays ein,
     * startet im anschluss die zeitgesteuerte einblendung der einzelnen elemente nach jeweils
     * x-sekunden
     *
     * beispiel:
     * <script language="JavaScript" type="text/javascript">
     *     <!--
     *         var el_dat1 = new Array('element1','element2','element3','element4');
     *         var el_dat2 = new Array('element1','element2');
     *         var el_dat3 = new Array('element1','element2','element3','element4','element5');
     *
     *         var myToogle = new CL_ToogleDisplay('myToogle');
     *         myToogle.setTimeDelay(1);
     *         myToogle.setElements(el_dat1,el_dat2);
     *         myToogle.init();
     *     //-->
     * </script>
     */


    /** CL_ToogleDisplay
     *
     * die eigentliche konstruktorfunktion
     */
    function CL_ToogleDisplay(oName){
        this._name          = oName;
        this._time_delay    = 3;
        this._interval      = '';
    	this._elements      = new Array();
        this._counts        = new Array();
        this._currents      = new Array();
    }

    /** slide (prototype fuer CL_ToogleDisplay)
     *
     * blendet das alte element aus und das nachfolgende ein. sollte kein nachfolgendes element
     * in '_elements[funktionsargumenteindex]' mehr vorhanden sein dann setze den zeiger
     * '_currents[funktionsargumenteindex]' fuer '_elements[funktionsargumenteindex]' wieder auf
     * 0 zurueck und beginne von vorn 
     */
    CL_ToogleDisplay.prototype.slide = function(){
        for( var l=0; l<this._counts.length; l++ ){
            this._currents[l]++;
            if( this._currents[l]==this._counts[l] ) this._currents[l] = 0;
            for( var m=0 ; m<this._counts[l]; m++ ){
                var dat_el = this._elements[l];
                document.getElementById(dat_el[m]).style.display = 'none';
            }

            dat_el = this._elements[l];
            document.getElementById(dat_el[this._currents[l]]).style.display = '';
        }
    }

    /** init (prototype fuer CL_ToogleDisplay)
     *
     * blendet jeweils das erste element in '_elements[funktionsargumenteindex]' ein,
     * startet dann den zeitgesteuerten interval zum abwechselnden einblenden der anderen elemente 
     */
    CL_ToogleDisplay.prototype.init = function(){
        if( this._currents.length>0 ){
            for( var k=0; k<this._currents.length; k++ ){
                document.getElementById(this._elements[k][this._currents[k]]).style.display = '';
            }
            this._interval = setInterval(this._name+".slide()", this._time_delay);
        }
    }

    /** setElements (prototype fuer CL_ToogleDisplay)
     *
     * laeuft die uebergebenen funktionsargumente durch und dann wiederum die einzelnen arrayelemente
     * innerhalb des momentanen funktionsargument. prueft die einzelnen elemente auf existenz in 'document'
     * und setzt das einzelne element in das klasseneigene array '_elements[funktionsargumenteindex]'.
     * zaehlt auch gleichzeitig die anzahl dieser element und setzt diese wiederum klasseneigene
     * array '_count[funktionsargumenteindex]'
     *
     * setze zum abschluss noch alle eintraege im klasseneigenen array '_current[funktionsargumenteindex]'
     * auf 0. es ist bezieht sich dann jeweils auf das erste element in '_elements[funktionsargumenteindex]'
     * was standardmaessig als erstes eingeblendet wird
     */
    CL_ToogleDisplay.prototype.setElements = function(el){
        for( var i=0; i<this.setElements.arguments.length; i++ ){
            var dat_function_argument   = this.setElements.arguments[i];
            var dat_inner_element       = new Array();
            var count_inner_element     = 0;

            for( var j=0; j<=dat_function_argument.length; j++ ){
                if( dat_function_argument[j]!='' && document.getElementById(dat_function_argument[j])!=null ){
                    count_inner_element++;
                    dat_inner_element.push(dat_function_argument[j]);
                }
            }

            this._elements[i]   = dat_inner_element;
            this._counts[i]     = count_inner_element;
            this._currents[i]   = 0;
        }
    }

    /** setTimeDelay (prototype fuer CL_ToogleDisplay)
     *
     * setzt das klasseneigene '_time_delay' auf den uebergebenen wert (in sekunden). der klasseneigene
     * standard wird in der konstruktorfunktion 'Cl_ToogleDisplay' auf 3sek gesetzt und wird nur
     * ueberschrieben wenn der uebergebene wert groesser als 0 ist
     */
    CL_ToogleDisplay.prototype.setTimeDelay = function(delay){
        if( delay>0 ) this._time_delay = delay*1000;
    }
