    var initialized = false ;

    /**
     * Haengt an alle relevanten Input-Elemente eine myToString-Funktion
     * an, die später benutzt wird, um die Url zu erzeugen
     */
    function myNewsInit() {

        if(initialized)
            return ;

        else {
            initialized = true ;

            myCallback = function() {
                myNewsUpdateUrl() ;
            }

            /*
             * Allen Configuration-Elements
             * eine passende myToString-Funktion geben
             */
            elementArray = getConfigurationElements() ;
            for (var i = 0 ; i < elementArray.length ; i++) {

                element = elementArray[i] ;
                elementId = element.id ;
                
                // Checkboxen:
                if (typeof(elementId) != 'undefined') {

                	switch(elementId.substr(0,2)) {
                		
                		// Checkbox
                		case 'CB':

		                    // TO-String-Funktion
		                    element.myToString = function() {
		                        if(this.checked)
		                            return (this.id.substr(2) + "=true") ;
		                        else
		                            return (this.id.substr(2) + "=false") ;
		                    }
		
		                    element.onclick = myCallback ;
		                    break ;


                		// Text-Inputs:
						case 'TT':

		                    // TO-String-Funktion
		                    element.myToString = function() {
		
		                        if(this.value != this.defaultValue && this.value != '') {
		
		                            if (this.value.substr(0, 1) == '#') value = this.value.substr(1) ;
		                            else value = this.value ;
		
		                            return (this.id.substr(2) + '=' + value) ;
		                        }
		                        else return '' ;
		                    }
		
		                    element.onkeyup = myCallback ;
		                    break ;
                
						// SelectBox:
						case 'SB':
		                	
		                    // TO-String-Funktion
		                    element.myToString = function() {
								res = 'cat=' + this.value ;
								
								return res ;
		                    }
		                    
		                    element.myDefaultValue = element.value ;
							element.onchange = myCallback ;
		                    
		                    break ;
                	}
                }
            }
        }
    }
    
    /**
     * Wird aufgerufen um die aktuelle Url ins Textfeld zu schreiben
     */
    function myNewsUpdateUrl() {

        urlview = document.getElementById("myNewsUrl") ;
        preview = document.getElementById("myNewsPreview") ;

        // var stringToShow = getRequestString(false) ;
        var stringToLoad = getRequestString(true) ;

        // Baue URL direkt in einen IFrame ein:
        stringToShow = '<iframe src="' + stringToLoad + '"><p>' + mynews_data_nicename + '</p><a href="http://' + mynews_data_urlbase + '">' + mynews_data_nicename + '</a></iframe>' ;

        urlview.value = stringToShow ;
        preview.src = stringToLoad ;

    }

   /**
    * Setzt alle Input-Felder zurueck auf
    * ihren Ursprungswert
    */
    function setDefaultValues() {
        elementArray = getConfigurationElements() ;

        for (var i = 0 ; i < elementArray.length ; i++) {

            element = elementArray[i] ;

				switch(element.id.substr(0,2)) {
                case 'TT':
                    element.value = element.defaultValue ;
                    break ;

                case 'CB':
                    element.checked = element.defaultChecked ;
                    break ;
                    
                case 'SB':
                	element.selectedIndex = 0 ;
                	break ;
            }
        }

        myNewsUpdateUrl() ;
    }

    /**
     * Bildet die komplette URL zum Abfragen der News
     * Durchläuft dabei alle Input-Felder und ruft die
     * Methode myToString() auf
     *
     * @parameter asUrl true erzeugt URL-String / false erzeugt "lesbaren" string
     */
    function getRequestString(asUrl) {
        myNewsInit() ;

        if(asUrl)
            andSign = '&' ;
        else
            andSign = '&#38' ;

        var requestString = '' ;
        var result = mynews_data_mynewsurl ;

        elementArray = getConfigurationElements() ;
        for(var i = 0 ; i < elementArray.length ; i++) {
            element = elementArray[i] ;

            if(element.myToString) {
                myString = element.myToString() ;

               if (requestString != '' && myString != '') requestString += andSign ;
                requestString += myString ;
            }
        }

        if(requestString != '') result += '?' + requestString ;

        return result ;
    }
    
    /**
     * Liefert alle Elemente, die die Konfiguration
     * der URL beeinflussen
     */
     function getConfigurationElements() {
     	return document.getElementsByName('mynews-option') ;
     }
