document.api['main_news']=Fader;

/**
 * Fader
 *
 **********
 *
 * Denne klasse håndterer fade ind og ud af elementer.
 *
 **********
 *
 * param	string		id						Angiv ID'et på det element der indeholder de elementer der skal fades.
 */
function Fader(id){
	// Klargør variabler
	this.parent=document.getElementById(id);
	this.parent.style.position="relative";

	var fader=this;

	this.elements=new Array();
	this.active=0;
	this.fading=false;

	// Gennemgå listen over elementer
	var items=this.parent.getElementsByTagName('div');
	var i=items.length; var j=i;

	if(i>0)do{
		// Tjek om elementet skal fade
		var item=items[j-i];
		if(item.parentNode!=this.parent) continue;
		if(item.className=="btns"){
			this.btns=item;
			continue;
		}

		// Placer elementet
		var s=item.style;
		s.position="absolute";
		s.top="0px"; s.left="0px";

		// Klargør elementet
		this.elements[this.elements.length]=item;
		if(this.elements.length>1){
			this.setOpacity(item,0);
			item.style.visibility="hidden";
		}
	}while(--i);

	// Håndter knapperne
	if(this.btns){
		// Gennemgå alle knapperne
		var btns=this.btns.getElementsByTagName('a');
		var i=btns.length; var j=i;

		if(i>0)do{
			// Klargør variabler
			var btn=btns[j-i];
			btn.index=j-i;

			// Håndter klik
			if(document.attachEvent) btn.attachEvent('onclick',function(e){var e=e||window.event; var src=e.srcElement||e.target; fader.goTo(src.index); cancelEvent(e);});
			else btn.addEventListener('click',function(e){var e=e||window.event; var src=e.srcElement||e.target; fader.goTo(src.index); cancelEvent(e);},false);

			// Håndter aktivt link
			if(j-i==0) btn.className="selected";
		}while(--i);
	}

	// Begynd auto-fade
	this.interval=setTimeout(function(){fader.next();},5500);
}

/**
 * Fader:next
 *
 **********
 *
 * Denne funktion fader automatisk til det næste element.
 */
Fader.prototype.next=function(){
	// Hent næste index
	var id=this.active+1;
	if(id==this.elements.length) id=0;

	// Begynd at fade
	this.goTo(id);
}

/**
 * Fader:goTo
 *
 **********
 *
 * Denne funktion starter fade fra et element til et andet.
 *
 **********
 *
 * param	integer		id						Angiv hvilket element der skal vises.
 */
Fader.prototype.goTo=function(id){
	// Tjek om der allerede fades
	if(this.fading!==false||id==this.active) return false;

	// Begynd at fade elementerne ind
	this.elements[id].style.visibility="visible";

	var fader=this; this.fading=id; this.opacity=0;
	this.timer=setInterval(function(){fader.fadeIn();},1);

	// Marker evt. knap
	if(this.btns){
		var btns=this.btns.getElementsByTagName('a');

		btns[id].className="selected";
		btns[this.active].className="";
	}
}

/**
 * Fader:fadeIn
 *
 **********
 *
 * Denne funktion fader fra et element til et andet.
 */
Fader.prototype.fadeIn=function(){
	// Tjek om der er påbegyndt en fadeing
	if(this.fading===false){
		clearInterval(this.timer);
		return false;
	}

	// Fade
	this.opacity+=3;

	this.setOpacity(this.elements[this.fading],this.opacity);
	this.setOpacity(this.elements[this.active],100-this.opacity);

	// Tjek om funktionen er afsluttet
	if(this.opacity>=100){
		// Afslut fade
		this.elements[this.active].style.visibility="hidden";

		// Afbryd fade
		clearInterval(this.timer);
		this.active=this.fading; this.fading=false;
		this.elements[this.active].style.display="none";
		this.elements[this.active].style.display="block";

		// Håndter auto-fade
		var fader=this;
		clearTimeout(this.interval);
		this.interval=setTimeout(function(){fader.next();},10000);
	}
}

/**
 * Fader:setOpacity
 *
 **********
 *
 * Denne funktion sætter opacity på et element cross-browser.
 *
 **********
 *
 * param	object		element					Angiv elementet der skal sættes.
 * param	integer		opacity					Angiv gennemsigtigheden.
 */
Fader.prototype.setOpacity=function(element,opacity){
	// Klargør variabler
	var s=element.style;
	var opacity=Math.min(opacity,100);

	// Sæt gennemsigtighed
	s.opacity=(opacity/100);
	s.MozOpacity=(opacity/100);
	s.KhtmlOpacity=(opacity/100);
	s.filter="alpha(opacity="+opacity+")";
}