var moveReiterIfCovered = function(reiter) {
	//var div = Übergeordneter Layer class="navigationreiter"
	var div = reiter.getParent().getParent();
	var ul = reiter.getParent();
		if ($defined($('scr_'+div.id))) {
		//endPunktReiter --> ist der rechte Rand des geklickten Reiters
		var endPunktReiter = reiter.getPosition().x + reiter.getSize().x;
		//endPunktDiv --> rechte Begrenzung des Layers [27 ist die Toleranz für den Scroll-Button]
		var endPunktDiv = div.getPosition().x + div.getSize().x - 27;
		//Prüfen, ob der Reiter am rechten Rand der Reiternavigation verdeckt ist  
		if (endPunktReiter > endPunktDiv) {
			scrollRRight(ul.id);
		}
		//Prüfen, ob der Reiter am linken Rand verdeckt ist und der Scroll-Button eingeblendet ist, bzw. ob der Reiter der erste in der Liste ist. 
		if ((reiter.getPosition().x - 27 < div.getPosition().x) && (ul.getChildren()[0].id != reiter.id)) {
			scrollRLeft(ul.id);
		}
	}
}

var reiter = function(id, jumpToReiter) {
	if ($('rn' + id) != null) {
		var childEls = $('rn' + id).getParent().getChildren();
		childEls.each(
		function(li) {
			if (li.hasClass('on')) {
				li.removeClass('on');
				$('reiter' + li.getProperty('id').substr(2, li.getProperty('id').length)).setStyle('display','none');
			}
			if (li.getProperty('id') == 'rn' + id) {
				//--> Hier wird geprüft, ob sich der Reiter teilweise außerhalb des Layers befindet, wenn ja
				// wird weitergescrollt!
				moveReiterIfCovered(li);
				li.addClass('on');
				$('reiter' + li.getProperty('id').substr(2, li.getProperty('id').length)).setStyle('display','');
				
				ssoqs = id;
			}
		});
		if (jumpToReiter != "" && jumpToReiter != undefined) { openExpandable(jumpToReiter); }
		reiter_extended(id); // leere Funktion, wenn Zusatzfunktion benoetigt, einfach ueberschreiben
	}
}

var reiterdetailseite = function(id, contentid) {
	if ($(id) != null ) {
		$(id).getParent().getChildren().each(
			function(li) {
				if (li.getProperty('id') == id)
					li.addClass('on');
				else
					li.removeClass('on');
			});
			
			$(contentid).getParent().getChildren().each(
			function(li) {
				if (li.getProperty('id') == contentid) 
					show(li.getProperty('id'));
				else
					hide(li.getProperty('id'));		    
			
		});
	}
}
var reiter_extended = function(id,scrolltarget){};


/*#############################*/
/*### Scrolling für die Reiternavigationen ###*/
/*#############################*/

/*->
Initialisierung der Reiternavigationen. Wird automatisch aufgerufen, wenn der Reiternavi eine ID zugewiesen wird.
Wenn Reiterlistenbreite > Reiterdivbreite wird eine Scrollnavigation generiert
<-*/
function initRScroll(ziel){

	//-> ziel ist die ID des Navigationsreiter Layers (class="navigationreiter") <-//
    //->Durchsuchen der Elternelemente nach <div class="maincontentnocontext"> um Reiter-ul auf die ganze breite zu halten
	var pagehasnocontext = false;
	$each($(ziel).getParents('div'), function(item){
	   if(item.hasClass('noleftcontent'))pagehasnocontext = true;
	});

	if(!this[ziel+"_Init"]){
        
		//-> Errechnen der nötigen Breite für die Reiter-ul <-//
		var naviDiv = $(ziel);
        /*->Reiterliste als Elementobjekt<-*/
		var ul = naviDiv.getChildren()[0];
		ul.setProperty('id','ul_'+ziel);
		var listenpunkte = ul.getChildren();
		var anzahlListenpunkte = listenpunkte.length;
		/*->Dies entspricht der späteren Reiterlistenbreite (ul)<-*/
		var breiteAllerListenpunkte = 0;
		/*->moveDivisor beschreibt den Weg der pro Klick gescrollt wird. Ergibt sich aus Reiterlistenbreite / Reiteranzahl (anzahlListenpunkte)<-*/
		var moveDivisor = 0;
		
		var breiteAllerListenpunkte = 15;
		listenpunkte.each(function(li,index){
			//-> Addition der einzelnen Reiterbreiten + Abstand nach rechts  <-//
			breiteAllerListenpunkte += li.getSize().x + li.getStyle('margin-right').toInt();
		});
		

		/*-> 
		Wenn die Breite der Reiter-Liste größer ist als die Div-Breite, dann werden Start- und End-Positionen für das Reiter-Listen-Scrolling gesetzt! 
		    
		<-*/
	    //alert(breiteAllerListenpunkte - 15 +">"+ naviDiv.getSize().x);
		//if(ul.getSize().x > naviDiv.getSize().x){
		if((breiteAllerListenpunkte - 15) > naviDiv.getSize().x){
			//-> Der Reiter-Liste (ul) wird die Breite zugewiesen <-//
		    ul.setStyle('width',(breiteAllerListenpunkte+250)+"px");
			ulStartX = ul.getPosition().x;
			ulEndX = ulStartX - (breiteAllerListenpunkte - naviDiv.getSize().x);
			moveDivisor = breiteAllerListenpunkte / anzahlListenpunkte;

            //-> Setzen des Objektes zum speichern der Start- und End-Positionen sowie der Variablen moveDivisor zum allgemeinen Zugriff
			ev = "posReiterUl_"+ziel+"= new setReiterPos(ulStartX,ulEndX,moveDivisor)";
			eval(ev);
			createRScroll(ziel);
			
			
			//->Automatisches Scrollen zu einem über die URL angesteuerten Reiter<-//
			if(!listenpunkte[0].hasClass('on')){
			    listenpunkte.each(function(li,index){
			        if(li.hasClass('on')){
			            var margin = 0;
			            var breakPoint = 0;
			            for(i=0; i<= index; i++){
			                margin += (listenpunkte[i].getSize().x + listenpunkte[i].getStyle('margin-right').toInt());
			                if(margin > naviDiv.getSize().x){
			                    breakPoint += 1; 
			                }
			            }
			            if(margin>naviDiv.getSize().x){
			                margin = margin-naviDiv.getSize().x+listenpunkte[index].getSize().x;
			                moveR('ul_'+ziel,breakPoint);
			            }
			        }
			    });
			}
		}
	}

/*->
Setzen einer Variable zur Erkennung, dass der Reiter bereits initialisiert wurde, 
um eine wiederholende Initialisierung zu vermeiden.
<-*/
	/*if(typeof(this[ziel+"_Init"]) == 'undefined'){
		this[ziel+"_Init"] = true;
	}*/
}

/*Speicherobjekt für die Positionen der Reiternavigation*/
var setReiterPos = function(startX, endX, mD){
	this.startX = startX;
	this.endX = endX;
	this.mD = mD;
}

/*->Vorladen der Scroller-Bilder. Führt beim IE zu Problemen, wenn nicht vorausgeladen<-*/
var preloadRImg = function(){
	if(typeof(preloadDone) == 'undefined'){
		var imgs = new Asset.images(['http://www.eplus.de/img/module/reiter_nav_l.gif', 'http://www.eplus.de/img/module/reiter_nav_r.gif']);
		imgs.each(function(img){img.inject(document.head)});
		preloadDone = true;
	}
}

/*->Erstellt die beiden Scrollbuttons<-*/
var createRScroll = function(zielReiterNav){
	//alert(zielReiterNav);
	var rScrollLeft = new Element('img',{
		src : 'http://www.eplus.de/img/module/reiter_nav_l.gif',
		'class' : 'rScrollLeft',
		alt : 'Nach links rollen!',
		styles:{'display':'none'},
		id:'scl_'+zielReiterNav
	});

	var rScrollRight = new Element('img',{
		src : 'http://www.eplus.de/img/module/reiter_nav_r.gif',
		'class' : 'rScrollRight',
		alt : 'Nach rechts rollen!',
		id:'scr_'+zielReiterNav
	});

	rScrollLeft.inject(zielReiterNav);
	rScrollRight.inject(zielReiterNav);
$('scr_'+zielReiterNav).addEvent('click', function(event) {
	event = new Event(event).stop();
	scrollRRight('ul_'+zielReiterNav);
});
$('scl_'+zielReiterNav).addEvent('click', function(event) {
	event = new Event(event).stop();
	scrollRLeft('ul_'+zielReiterNav);
});
	
}

/*->Bewegungsfunktion, um nach rechts zu scrollen<-*/
function moveR(fxTarget,fk){
    if(fk==undefined){
        fk=1;
    }
    //-> Objekt mit den Positionswerten für die Reiter-Liste (class "setReiterPos") <-//
    var ulPosObj = parent["posReiterUl_"+fxTarget.substr(3,fxTarget.length)];
    /*-> liFirstPosition = Der Reiter (li) der momentan an erster Position (links) der Reiternavigation steht
        Es wird immer um die Breite des ersten Reiters nach rechts gescrollt
      <-*/
    var pxDist = $(fxTarget).getStyle('margin-left').toInt()+(ulPosObj.mD*fk)*(-1);
    //alert($(fxTarget).getStyle('margin-left').toInt());

    /*->
    Zuweisung des Tweenobjekts zu einer Variablen, um mehrfache Reiternavis auf einer Seite zu gewährleisten 
    und damit die Option 'link' richtg greift.
    <-*/
	if(typeof(this['ReiterRightMove'+fxTarget])=="undefined"){
	    this['ReiterRightMove'+fxTarget] = new Fx.Morph(fxTarget, {
		    onComplete: function(){
			    $('scr_'+fxTarget.substr(3,fxTarget.length)).setProperties({'onclick':"scrollRRight('"+fxTarget+"')"});	
			    if($(fxTarget).getPosition().x <= ulPosObj.endX){
				    $('scr_'+fxTarget.substr(3,fxTarget.length)).setStyles({'display':'none'});
			    }
	            if($(fxTarget).getPosition().x <= ulPosObj.startX){
		            $('scl_'+fxTarget.substr(3,fxTarget.length)).setStyle('display','block');
	            }
		    },
		    link: 'ignore'
	    });
	}
	this['ReiterRightMove'+fxTarget].start({'margin-left':pxDist});
}

/*->Bewegungsfunktion, um nach links zu scrollen<-*/
function moveL(fxTarget){
    //-> Objekt mit den Positionswerten für die Reiter-Liste (class "setReiterPos") <-//
    var ulPosObj = parent["posReiterUl_"+fxTarget.substr(3,fxTarget.length)];
    /*-> liFirstPosition = Der Reiter (li) der momentan vor der ersten Position (links) der 
        Reiternavigation steht (also ausserhalb des sichtbaren Bereiches links)
        Es wird immer um die Breite des vor dem ersten Reiter stehenden Reiters nach links gescrollt
      <-*/
    var pxDist = $(fxTarget).getStyle('margin-left').toInt()+(ulPosObj.mD);
    
    /*->
    Zuweisung des Tweenobjekts zu einer Variablen, um mehrfache Reiternavis auf einer Seite zu gewährleisten 
    und damit die Option 'link' richtg greift.
    <-*/
   if(typeof(this['ReiterLeftMove'+fxTarget])=="undefined"){
	this['ReiterLeftMove'+fxTarget] = new Fx.Morph(fxTarget, {
		onComplete: function(){
		$('scl_'+fxTarget.substr(3,fxTarget.length)).setProperties({'onclick':"scrollRLeft('"+fxTarget+"')"});	
		if($(fxTarget).getPosition().x >= ulPosObj.startX){
				$('scl_'+fxTarget.substr(3,fxTarget.length)).setStyles({'display':'none'});
			}
	    if($(fxTarget).getPosition().x >= ulPosObj.endX){
		    $('scr_'+fxTarget.substr(3,fxTarget.length)).setStyle('display','block');
	        }
	       ulPosObj.clickCounter -= 1;
		},
		link: 'ignore'
	});
	}
	this['ReiterLeftMove'+fxTarget].start({'margin-left':pxDist});
}

function scrollRRight(trg){
    $('scr_'+trg.substr(3,trg.length)).removeProperty('onclick');
	var rNavName = trg.substr(3,trg.length);
	//traceMove(trg,"margin-left: "+$(trg).getStyle('margin-left').toInt()+"this.x = "+$(trg).getPosition().x+"-->mD = "+this["posReiterUl_"+rNavName].mD+"-->dtm = "+DistToMove);
	if($(trg).getPosition().x > this["posReiterUl_"+rNavName].endX){
		moveR(trg);
	}
}

function scrollRLeft(trg){
	$('scl_'+trg.substr(3,trg.length)).removeProperty('onclick');
    var rNavName = trg.substr(3,trg.length);
	//traceMove(trg,"margin-left: "+$(trg).getStyle('margin-left').toInt()+"this.x = "+$(trg).getPosition().x+"--->mD = "+this["posReiterUl_"+rNavName].mD+"-->dtm = "+DistToMove);
	if($(trg).getPosition().x <= this["posReiterUl_"+rNavName].startX){
		moveL(trg);
	}
}
