// JavaScript Document

// Scroller Kategorien
ScrollBase = new Array();

//scrollcount: Nummer des Sliders, damit auch mehrere Slider parallel funktionieren
//imploderest: // sollen bei Klick alle offenen geschlossen werden? (0:nein,1:ja)
//scrollminheight: Wie groß soll der SliderCont im geschlossenen Zustand sein
//scrollheightzusatz: zur ermittelten Höhe dazugeben (Höhenermittlung Crossbrowser) in Pixel
//scrollspeed: wie schnell sollen sich die Parts öffnen? (z.b. 0.1 bis 2.5)
//scrolltaghead: Welchen HMTL-Tag hat der Header für die Mausaktionen?
//scrolltagheadclass: Welche Klasse hat der Header für die Mausaktionen?
//scrolltagcont: Welchen HMTL-Tag haben die Content-Container?
//scrolltagcontclass: Welche Klasse hat Content-Container 1 (Container für auf- und zuklappen)?
//scrolltagcont2class: Welche Klasse hat Content-Container 2 (Container zum messen der Höhe des Inhaltes)?


function ScrollInit(scrollcount,imploderest,scrollminheight,scrollheightzusatz,scrollspeed,scrolltaghead,scrolltagheadclass,scrolltagcont,scrolltagcontclass,scrolltagcont2class){
	
	if($("slider_all_"+scrollcount)){ // existiert der Slider?
		
		// ScrollParameter setzen
		ScrollBase[scrollcount] = new Array();
		ScrollBase[scrollcount]["scrollelemanzahl"] = 0; // weiviel Elemente in Slider sind es insgesamt?
		ScrollBase[scrollcount]["imploderest"] = imploderest; 
		ScrollBase[scrollcount]["scrollminheight"] = scrollminheight;
		ScrollBase[scrollcount]["scrollheightzusatz"] = scrollheightzusatz;
		ScrollBase[scrollcount]["scrollspeed"] = scrollspeed;
		ScrollBase[scrollcount]["scrolltaghead"] = scrolltaghead;
		ScrollBase[scrollcount]["scrolltagheadclass"] = scrolltagheadclass;
		ScrollBase[scrollcount]["scrolltagcont"] = scrolltagcont;
		ScrollBase[scrollcount]["scrolltagcontclass"] = scrolltagcontclass;
		ScrollBase[scrollcount]["scrolltagcont2class"] = scrolltagcont2class;
		
		
		//Elemente im Slider zählen
		var z=0;
		var elem=$("slider_all_"+scrollcount).getElementsByTagName(ScrollBase[scrollcount]["scrolltaghead"]); // Link im Sliderblock (Headline, Aktionen)
		var elem2=$("slider_all_"+scrollcount).getElementsByTagName(ScrollBase[scrollcount]["scrolltagcont"]); // Div-Container im Sliderblock (Content)
		
		// Die Headlines durchgehen und IDs vergeben
		for(var i=0;i<elem.length;i++){
			if(elem[i].className.indexOf(ScrollBase[scrollcount]["scrolltagheadclass"])!=-1){ // Link im Sliderblock
				elem[i].id = "slider_link_" + scrollcount + "_" + z; //ID setzen
				z++;
			}
		}
		// Die Div-Content-Container Headlines durchgehen und IDs vergeben
		a = 0;
		for(var i=0;i<elem2.length;i++){
			if(elem2[i].className.indexOf(ScrollBase[scrollcount]["scrolltagcontclass"])!=-1){ // Container für auf- und zuklappen
				elem2[i].id = "slider_content1_" + scrollcount + "_" + a; //ID setzen
				a++
			}
		}
		a = 0;
		for(var i=0;i<elem2.length;i++){
			if(elem2[i].className.indexOf(ScrollBase[scrollcount]["scrolltagcont2class"])!=-1){ // Container zum messen der Höhe des Inhaltes
				elem2[i].id = "slider_content2_" + scrollcount + "_" + a; //ID setzen
				a++;
			}
			
		}
				
		ScrollBase[scrollcount]["scrollelemanzahl"] = z; // Anzahl der Sliderelemente
		//alert(ScrollBase[scrollcount]["scrollelemanzahl"]);
		
		//Mouse Actions setzen
		SetMouseActions(scrollcount);
		
	}
	
}

function SetMouseActions(scrollcount){
	
	for(var i=0;i<ScrollBase[scrollcount]["scrollelemanzahl"];i++){
		
		headerid = "slider_link_" + scrollcount + "_" + i;
		$(headerid).idname = scrollcount + "_" + i; // ID merken für Container
		
		$(headerid).onmouseover = function(){ // MouseOver
			FuncMouseOver(this);
		}
		$(headerid).onmouseout = function(){ // MouseOut
			FuncMouseOut(this);
		}
			
		$(headerid).onclick = function(){ // OnClick
			
			head1 = "slider_link_" + this.idname;
			cont1 = "slider_content1_" + this.idname;
			cont2 = "slider_content2_" + this.idname;
			cont2height = $(cont2).offsetHeight+ScrollBase[scrollcount]["scrollheightzusatz"];
						
			if(this.className.indexOf(' elem_on')==-1){ // Ist der SliderPart aus
				
				this.className = this.className + " elem_on";
				MorphThis($(cont1),'height',cont2height+'px;',ScrollBase[scrollcount]["scrollspeed"],0);
				MorphThis($(head1),'background-color','#a6ce39',ScrollBase[scrollcount]["scrollspeed"],0);
				// Maus Funktionen löschen
				$(head1).onmouseover = function(){};
				$(head1).onmouseout = function(){};
				
				// Wenn eingestellt bei Klick alle offenen schliessen
				if(ScrollBase[scrollcount]["imploderest"] == 1){
					ImplodeRest(scrollcount);
				}
				
			}else{ // Oder ist der SliderPart an
			
				this.className = SuchenUndErsetzen(this.className, ' elem_on', '');
				MorphThis($(cont1),'height',ScrollBase[scrollcount]["scrollminheight"]+'px;',ScrollBase[scrollcount]["scrollspeed"],0);
				MorphThis($(head1),'background-color','#003e91',ScrollBase[scrollcount]["scrollspeed"],0);
				// Maus Funktionen wieder setzen
				$(head1).onmouseover = function(){ // MouseOver
					FuncMouseOver(this);
				}
				$(head1).onmouseout = function(){ // MouseOut
					FuncMouseOut(this);
				}
				
				
			}
			
		}
	
	}
	
}

function ImplodeRest(scrollcount){ // Alle offenen schliessen
	if(ScrollBase[scrollcount]["imploderest"] == 1){
		for(var i=0;i<ScrollBase[scrollcount]["scrollelemanzahl"];i++){
				
				contclose = "slider_content1_" + scrollcount + "_" + i;
				headclose = "slider_link_" + scrollcount + "_" + i;
								
				// Wenn ScrollPart offen dann schliessen
				if($(contclose).offsetHeight > ScrollBase[scrollcount]["scrollminheight"]){ // Ist der ContentSlider größer als die Minimumhöhe?
					
					$(headclose).className = SuchenUndErsetzen($(headclose).className, ' elem_on', ''); // Klassenname zurücksetzen
					MorphThis($(contclose),'height',ScrollBase[scrollcount]["scrollminheight"]+'px;',0.3,0);
					MorphThis($(headclose),'background-color','#003e91',ScrollBase[scrollcount]["scrollspeed"],0);
					// Maus Funktionen wieder setzen
					$($(headclose)).onmouseover = function(){ // MouseOver
						FuncMouseOver(this);
					}
					$($(headclose)).onmouseout = function(){ // MouseOut
						FuncMouseOut(this);
					}
					
				}
				
				
		}
	}
}

function FuncMouseOver(wer){ // MouseOver
	MorphThis(wer,'background-color','#a6ce39',0.3,0);
}
function FuncMouseOut(wer){ // MouseOut
	MorphThis(wer,'background-color','#003e91',0.3,1);
}

function MorphThis(MObject,MStyleSet,MStyle,MSpeed,MCancel){ // Morphing
	if(MCancel == 1)myEffect.cancel();
	myEffect = new Effect.Morph(MObject, {
	  style: '' + MStyleSet + ':' + MStyle +';', // CSS Properties
	  duration: MSpeed // Core Effect properties
	});
	
}

function SuchenUndErsetzen(QuellText, SuchText, ErsatzText)
        {   // Erstellt von Ralf Pfeifer
            // Fehlerpruefung
            if ((QuellText == null) || (SuchText == null))           { return null; }
            if ((QuellText.length == 0) || (SuchText.length == 0))   { return QuellText; }

            // Kein ErsatzText ?
            if ((ErsatzText == null) || (ErsatzText.length == 0))    { ErsatzText = ""; }

            var LaengeSuchText = SuchText.length;
            var LaengeErsatzText = ErsatzText.length;
            var Pos = QuellText.indexOf(SuchText, 0);

            while (Pos >= 0)
            {
                QuellText = QuellText.substring(0, Pos) + ErsatzText + QuellText.substring(Pos + LaengeSuchText);
                Pos = QuellText.indexOf(SuchText, Pos + LaengeErsatzText);
            }
            return QuellText;
        } // -->

