// JavaScript Document

// Allgemeine Funktionen 

// Funktion zum Eliminieren eines Stylesheets mit vorgegebenem "ref" - Attribut 
function deactivateStyleSheet(ref)
{
	var i   = 0; // Index-Hilfsvariable 
	var leng = document.getElementsByTagName("link").length; // Länge des Arrays mit allen Link-Tags 
	var a; 		// Handle auf Elemente 
	
	for (i=0; i < leng; i++)
	{
		a = document.getElementsByTagName("link")[i]; 
//		if ( a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") ) // Suche alle Elemente mit rel = "stylesheet"  
		if ( (a.getAttribute("rel") == "stylesheet") && (a.getAttribute("href")) ) // Suche alle Elemente mit rel = "stylesheet" und einem title 
		{
			// alert("i = " + i + "   getAttribute(href) = " + a.getAttribute("href") ); 
			a.disabled = false; 
			comp_str = 'css/' + ref + ".css"
			if (a.getAttribute("href") == comp_str) 
			{ 	
				a.disabled = true; 
				//alert("stylesheet mit title hoover successfully deactivated !"); 
			}
		}
	}
}

// Funktion zum Auslesen von Übergabeparametern - der Output der Funktion ist ein (ggf. 3 dim) assoziatives Array mit den Parameternamen als Indizierung 
function getGetParameters()
{
	// Output der Funktiion : assoziatives Array paramArray[param_name], das zum Index param_name den zugehörigen Wert liefert. 
	// Solche assoziativen Arrays (Objekte) können zur Analyse mit einem Loop "for (k in paramArray) { arbeite mit paramArray[k] } durchlaufen werden  
	// dabei ist nur zu beachten, dass es zu einem Parameternamen auch ein ganzes ein Array als Wert geben kann (s.u.) 
	// !!! Achtung: Wurden zu ein und demselben Parameter mehrere Werte übergeben, so wird das Array 3 dim ! (s.u.)   	

	var i = 0; // Hilfsvariable 
	var j = 0; // Hilfsvariable 
	var paramString = window.location.search; // search-Anteil in der location markiert die Parameter-Liste 
	if (paramString == "") { return null; }
	
	// Checke nun zur Sicherheit, ob paramString mit "?" an Position 0 beginnt (browserabhängig oder Problem) - verkürze dann den String 
	if ( paramString.indexOf("?") == 0 ) { 	paramString = paramString.substring(1, window.location.search.length); }

	// Nun splitten in die einzelnen Parameteranweisungen (param1 = xxx & param2 = yyy )   
	var splitString = new Array();
	splitString = paramString.split("&"); 

	// Nun splitten der einzelneen Paramter - name und value
	var nameValue = new Array(); 
	for ( i = 0; i < splitString.length; i++ ) 
	{
		nameValue[i] = splitString[i].split("="); // 2 dim Array der Länge von splitString - mit param, value - Werten pro Eintrag  
	}
	
	// Erzeuge nun das dreidimensionale Ausgabearrray  - Achtung: Nicht mit "var" paramArray = new Array() definieren (wird sonst vor Übergabe per Referenz gelöscht
	// Beachte, dass es zue ienem parameternamene mehrere Werte geben kann - gruppiert Checkboxen z.B. - also: &param1=wert1&param1=wert2
	// U.a. deshalb Umsetzung in assoziatives Array, das über Parameternamen indiziert wird   
	paramArray = new Array(); 
	var value = ""; 
	for ( j= 0; j < nameValue.length; j++ )
	{
		// Sonderzeichen demaskieren (URIencode - decode ) 
		//alert ( "nameValue[j][1] =  " + nameValue[j][1] );  
		value = (unescape( nameValue[j][1] )).replace(/\+/g, " ");   // "+"-Zeichen eliminieren // decode_URL geht nicht (RMO:04.10.2007)
		//alert ( "value =  " + value );  
		// Wenn noch kein Arrayelement mit dem Index des Parameternames existert muss es angelegt werden 
		if ( !paramArray[ nameValue[j][0] ] )
		{
			paramArray[ nameValue[j][0] ] = value; 
		}
		else 	// ein gleicher Paramtername wurde schon mal verwendet 
		{		// - dann wird für die Werte ein Subarray aufgebaut, in das der bereits vorhanden Wert + der neue Wert eingestellt werden 

			if ( typeof( paramArray[ nameValue[j][0] ] ) != "object" ) 	// Array ist noch nicht angelegt, aber nun notwenndig, 
			{															//	da bereits der zweite Wert zum gl. Parameternamen übergeben wurde  
				var tmp = paramArray[ nameValue[j][0] ]; 			 	// Zwischenspeihern des ersten Wertes, da Neubelegung 
				paramArray[ nameValue[j][0] ]  = new Array(); 			// Nun umpointern auf Array
				paramArray[ nameValue[j][0] ][0] = tmp; 				// Zwischengspeichertes Element einfügen an Position 0   
			}
			
			// Einfügen des aktuellen Wertes an letzter Stelle des (3D) Arrays
			paramArray[ nameValue[j][0] ][ paramArray[nameValue[j][0]].length ] = value;
			
		}
	// Ende des Loops (j)					
	}
	
	return paramArray; // Pointer auf das 3-dimensionale Array zurückgeben 	
	
}


