

function ModuleSlider(name, contentLoaderName) {
	
	var selfName = name;
	var boxWidth = 183;			//größe einer Box
	var buttonLeft = null;		//Knopf links
	var buttonRight = null;		//Knopf rechts
	var sliderSet = null;		//Container zum sliden, dieser wird bewegt
	var boxAnz = 0;				//Anzahl der Boxen
	var boxNodes = Array();		//Array von allen boxen als Node
	var boxInstanzen = Array();	//Instanz von SliderBox
	var index = 0;				//Index der aktuellen selectierten Box.
	var indexSet = 0			//Index des Sets linke Bock im slider
	var dirbase = "";
	var contentLoader = window[contentLoaderName];
		
	var ajaxUrl = "";
	
	var moveing = false;
	var moveingSet = false;
	var movingDesc = false;
	
	var lastModulIdClick = null;	//Wird beim aufrufen gesetzt um per callback den Progress zu setzten.
	
	
	this.init = function() { init(); }
	function init() {
		
		buttonLeft = $("buttonLeft");
		buttonRight = $("buttonRight");
		sliderSet = $("sliderSet");
		
		buttonLeft.onclick = moveLeft;		
		buttonRight.onclick = moveRight;
		
		var boxen = document.getElementsByTagName("DIV");
		for(var i=0; i < boxen.length; i++) {
			if(boxen[i].getAttribute("set") == "sliderbox") {
				boxNodes[boxAnz] = boxen[i];
				boxAnz++;

				var sb = new SliderBox(boxen[i], window[selfName]);
				sb.setAjaxUrl(ajaxUrl);
				boxInstanzen.push( sb );
			}
		}
		
		if(boxNodes.length > 5) {
			selectButtonRight(true);
			selectButtonLeft(false);
		}else {
			selectButtonRight(false);
			selectButtonLeft(false);
		}
		selectBox(0);
	}
		
	this.openModul = function(url, set, modulId, typeId) {
		lastModulIdClick = modulId;
				
		switch(set) {
		case "cl":
			if(typeId == 2 ) { //Sebsttest
				contentLoader.loadContent(url,680, 512, "iframe", "", true, null, 1);
			}else {	//Module
				contentLoader.loadContent(url,910, 570, "iframe", "", true, null, 1);
			}
			break;
		case "cl800x600":
			contentLoader.loadContent(url,814, 614, "iframe", "", true, null, 1);
			break;
		case "noDisplay":
			contentLoader.loadContent(url,800, 600, "iframe", "", false, null, 1, 1);
			break;
		case "pop":
			var Fenster1 = null;
			if (Fenster1 && !Fenster1.closed) {
				  Fenster1.close();
				  Fenster1 = window.open(url,"_blank","width=990,height=620,left=100,top=100,resizable=yes");
	        } else {
	                Fenster1 = window.open(url,"_blank","width=990,height=620,left=100,top=100,resizable=yes");
	        }
			break;
		}
		
	}
	
	this.selectBox = function(setIndex) { selectBox(setIndex); }
	function selectBox(setIndex) {
		if(index == setIndex) return;
		if(moveing == true) return;
		
		
		var xvar = null;
		
		try {
			if(setIndex > index) {
				xvar = (setIndex - index) * boxWidth ;
			}else {
				xvar = ((index-setIndex) * boxWidth ) * -1;
			}
			
			moveing = true;
			new Effect.Move('selector', { x: xvar, y: 0, mode: 'relative', duration: 0.3 });
			index = setIndex;
			
			setTimeout(function() {
				moveing = false;
			},400);
			
		}catch(e){}
	}
		
	function moveLeft() {
		if(indexSet == 0) return;
		if(moveingSet == true) return;
		
		clearBoxen();
		
		moveingSet = true;
		var xvar = boxWidth;
		new Effect.Move('sliderSet', { x: xvar, y: 0, mode: 'relative', duration: 0.3 });
		indexSet--;
		
		//Setze linken Kopf
		if(indexSet == 0) {
			selectButtonLeft(false);
		}else{
			selectButtonLeft(true);
		}
		
		if(indexSet+5 < boxNodes.length) {
			selectButtonRight(true);
		}
		
		
		setTimeout(function() {
			moveingSet = false;
		},400);		
	}
	
	function moveRight(dasEreignis) {		
		if(indexSet+5 == boxNodes.length || boxNodes.length < 5) return;
		if(moveingSet == true) return;
		
		clearBoxen();
		
		moveingSet = true;
		var xvar = boxWidth * -1;
		new Effect.Move('sliderSet', { x: xvar, y: 0, mode: 'relative', duration: 0.3 });
		indexSet++;
		
		//Setze linken Kopf
		if(indexSet > 0) {
			selectButtonLeft(true);
		}else{
			selectButtonLeft(false);
		}
		
		//Setze rechten Kopf
		if(indexSet+5 == boxNodes.length) {
			selectButtonRight(false);
		}else {
			selectButtonRight(true);
		}
		
		
		setTimeout(function() {
			moveingSet = false;
		},400);		
	}
	
	
	function selectButtonLeft(bool) {
		if(bool) {
			buttonLeft.style.backgroundImage = "url("+dirbase+"/img/portal/slider_buttonleft.png)";
			buttonLeft.style.cursor = "pointer";
		}else {
			buttonLeft.style.backgroundImage = "url("+dirbase+"/img/portal/slider_buttonleft_gray.png)";
			buttonLeft.style.cursor = "default";
		}
	}
	
	function selectButtonRight(bool) {
		if(bool) {
			buttonRight.style.backgroundImage = "url("+dirbase+"/img/portal/slider_buttonright.png)";
			buttonRight.style.cursor = "pointer";
		}else {
			buttonRight.style.backgroundImage = "url("+dirbase+"/img/portal/slider_buttonright_gray.png)";
			buttonRight.style.cursor = "default";
		}
	}
			
	this.setDirBase = function(dir) {
		dirbase = dir;		
	}
	
	this.setAjaxUrl = function(url) {
		ajaxUrl = url;
	}
	
	this.clearBoxen = function(index) {	clearBoxen(index); }
	function clearBoxen(index) {
		for(var i=0; i < boxInstanzen.length; i++) {
			if(i!=index) {
				boxInstanzen[i].boxOut();
			}
		}
		
	}
	
	this.setProgressForModul = function(progress) {
		if(progress) {
		
			for(var i=0; i < boxInstanzen.length; i++) {
				if(lastModulIdClick == boxInstanzen[i].getModulId() ) {
					boxInstanzen[i].setProgress(progress);
				}
			}
		}
		else {
			window.location.reload();
		}
	}
	
	this.openAdvanced = function() {
		for(var i=0; i < boxInstanzen.length; i++) {
			if(boxInstanzen[i].getTypeId() == 1 || boxInstanzen[i].getTypeId() == 3) {
				boxInstanzen[i].openBox();
			}
		}
	}
	
	
}