/**
 * Location:	/templates/view/da_DK/default/js/galleries.js
 * Copyright:	Neist & Felskov, 2009+
 *
 * Author:		Neist & Felskov
 * Mail:		kontakt@nfdesign.dk
 * Web:			www.nfdesign.dk
 *
 ***********
 *
 * Håndterer fotogalleri-minibanneret
 */

/**
 * MinibannerGalleries
 *
 **********
 *
 * Initialiserer minibanner-galleriet, og indlæser det første galleri i rækken.
 */
function Minibanner_Gallery(){
	// Klargør variabler
	this.index=0;
	this.status=1;

	// Indlæs en reference til containeren
	this.container=document.getElementById('galleries_minibanner');

	// Indlæs det første galleri
	var ajax=(window.ActiveXObject)?new ActiveXObject('Microsoft.XMLHTTP'):new XMLHttpRequest();

	// Klargør modtagning af info
	ajax.onreadystatechange=function(){try{if(ajax.readyState==4 && ajax.status==200){minibannerGallery.parse(ajax.responseXML,0); ajax=null;}}catch(e){alert(e);}};

	// Forespørg info!
	ajax.open("GET",document.getElementsByTagName('base')[0].href+'ajax/view/gallery.php?uniqID='+new Date().getTime()+'&index=0',true);
	ajax.send(null);
}

/**
 * next
 *
 **********
 *
 * Indlæs det næste galleri i rækken.
 */
Minibanner_Gallery.prototype.next=function(){
	// Er der flere gallerier at vise?
	if(this.remaining==0) return;

	// Er der en handling i gang?
	if(this.status!=0) return;
	this.status=1;

	// Opdater index
	this.index++;

	// Indlæs det næste galleri
	var ajax=(window.ActiveXObject)?new ActiveXObject('Microsoft.XMLHTTP'):new XMLHttpRequest();

	// Klargør modtagning af info
	ajax.onreadystatechange=function(){try{if(ajax.readyState==4 && ajax.status==200){minibannerGallery.parse(ajax.responseXML,1); ajax=null;}}catch(e){}};

	// Forespørg info!
	ajax.open("GET",document.getElementsByTagName('base')[0].href+'ajax/view/gallery.php?uniqID='+new Date().getTime()+'&index='+this.index,true);
	ajax.send(null);
}

/**
 * prev
 *
 **********
 *
 * Indlæs det forrige galleri i rækken.
 */
Minibanner_Gallery.prototype.prev=function(){
	// Er der flere gallerier at vise?
	if(this.index==0) return;

	// Er der en handling i gang?
	if(this.status!=0) return;
	this.status=1;

	// Opdater index
	this.index--;

	// Indlæs det næste galleri
	var ajax=(window.ActiveXObject)?new ActiveXObject('Microsoft.XMLHTTP'):new XMLHttpRequest();

	// Klargør modtagning af info
	ajax.onreadystatechange=function(){try{if(ajax.readyState==4 && ajax.status==200){minibannerGallery.parse(ajax.responseXML,2); ajax=null;}}catch(e){}};

	// Forespørg info!
	ajax.open("GET",document.getElementsByTagName('base')[0].href+'ajax/view/gallery.php?uniqID='+new Date().getTime()+'&index='+this.index,true);
	ajax.send(null);
}

/**
 * parse
 *
 **********
 *
 * Håndterer modtagning af data fra serveren.
 *
 **********
 *
 * Parametre:
 * responseXML (xmlobject)				Indeholder XML-koden fra serveren.
 * effect (int)							Angiv hvilken effekt, der skal slides ind med.
 */
Minibanner_Gallery.prototype.parse=function(responseXML,effect){
	// Gem variabler
	this.remaining=parseInt(responseXML.getElementsByTagName('remaining')[0].firstChild.nodeValue,10);
	this.url=responseXML.getElementsByTagName('url')[0].firstChild.nodeValue;

	// Klargør et element til galleriet
	var container=document.createElement('div');
	container.className='gallery';

	// Indsæt billeder
	var img1=document.createElement('img'); img1.className='large';
	img1.src='/docs/media/galleries/'+responseXML.getElementsByTagName('image1')[0].firstChild.nodeValue+'_minibanner-1.jpg';
	container.appendChild(img1);

	var img2=document.createElement('img'); img2.className='small';
	var img2_2=new Image(); img2_2.src='/docs/media/galleries/'+responseXML.getElementsByTagName('image2')[0].firstChild.nodeValue+'_minibanner-1.jpg';
	img2.src='/docs/media/galleries/'+responseXML.getElementsByTagName('image2')[0].firstChild.nodeValue+'_minibanner-2.jpg';
	container.appendChild(img2);

	var img3=document.createElement('img'); img3.className='small';
	var img3_2=new Image(); img3_2.src='/docs/media/galleries/'+responseXML.getElementsByTagName('image3')[0].firstChild.nodeValue+'_minibanner-1.jpg';
	img3.src='/docs/media/galleries/'+responseXML.getElementsByTagName('image3')[0].firstChild.nodeValue+'_minibanner-2.jpg';
	container.appendChild(img3);

	var img4=document.createElement('img'); img4.className='small'; img4.style.marginRight='0';
	var img4_2=new Image(); img4_2.src='/docs/media/galleries/'+responseXML.getElementsByTagName('image4')[0].firstChild.nodeValue+'_minibanner-1.jpg';
	img4.src='/docs/media/galleries/'+responseXML.getElementsByTagName('image4')[0].firstChild.nodeValue+'_minibanner-2.jpg';
	container.appendChild(img4);

	var img5=document.createElement('img'); img5.className='zoom';
	container.appendChild(img5);

	// Håndter hover!
	if(document.attachEvent){
		// Over
		img2.attachEvent('onmouseover',function(e){minibannerGallery.over(e);});
		img3.attachEvent('onmouseover',function(e){minibannerGallery.over(e);});
		img4.attachEvent('onmouseover',function(e){minibannerGallery.over(e);});

		// Out
		img2.attachEvent('onmouseout',function(e){minibannerGallery.out(e);});
		img3.attachEvent('onmouseout',function(e){minibannerGallery.out(e);});
		img4.attachEvent('onmouseout',function(e){minibannerGallery.out(e);});

		// Click
		img1.attachEvent('onclick',function(){minibannerGallery.click();});
		img2.attachEvent('onclick',function(){minibannerGallery.click();});
		img3.attachEvent('onclick',function(){minibannerGallery.click();});
		img4.attachEvent('onclick',function(){minibannerGallery.click();});
		img5.attachEvent('onclick',function(){minibannerGallery.click();});
	}else{
		// Over
		img2.addEventListener('mouseover',function(e){minibannerGallery.over(e);},false);
		img3.addEventListener('mouseover',function(e){minibannerGallery.over(e);},false);
		img4.addEventListener('mouseover',function(e){minibannerGallery.over(e);},false);

		// Out
		img2.addEventListener('mouseout',function(e){minibannerGallery.out(e);},false);
		img3.addEventListener('mouseout',function(e){minibannerGallery.out(e);},false);
		img4.addEventListener('mouseout',function(e){minibannerGallery.out(e);},false);

		// Click
		img1.addEventListener('click',function(){minibannerGallery.click();},false);
		img2.addEventListener('click',function(){minibannerGallery.click();},false);
		img3.addEventListener('click',function(){minibannerGallery.click();},false);
		img4.addEventListener('click',function(){minibannerGallery.click();},false);
		img5.addEventListener('click',function(){minibannerGallery.click();},false);
	}

	// Ryd hukommelsen
	img1=null; img2=null; img3=null; img4=null; img5=null;

	// Indsæt titel
	var galleryTitle=responseXML.getElementsByTagName('title')[0].firstChild.nodeValue;
	if(galleryTitle.length>12) galleryTitle=galleryTitle.substr(0,10)+"...";

	var tmp=document.createElement('div'); tmp.className='clear';
	container.appendChild(tmp); tmp=null;
	container.appendChild(document.createTextNode(galleryTitle+' d. '+responseXML.getElementsByTagName('tstamp')[0].firstChild.nodeValue));

	// Indsæt billede-galleriet
	this.container.insertBefore(container,this.container.getElementsByTagName('div')[0]);

	// Ingen effekt
	if(!effect){
		// Placer galleriet
		container.style.left='0';

		// Ryd hukommelsen
		this.active=container; this.status=0;
		container=null;

	// Næste (slide fra højre)
	}else if(effect==1){
		// Indlæs en reference til det nuværende galleri
		var tmp=this.active;
		this.active=container;

		// Kør effekten
		new Effect(function(p){tmp.style.left=(-Math.round(156*p))+'px'; container.style.left=(156-Math.round(156*p))+'px'; if(p==1){tmp.parentNode.removeChild(tmp); tmp=null; container=null; minibannerGallery.status=0;}},{duration:0.65,ease:true});

	// Forrige (slide fra venstre)
	}else if(effect==2){
		// Indlæs en reference til det nuværende galleri
		var tmp=this.active;
		this.active=container;

		// Kør effekten
		new Effect(function(p){tmp.style.left=(Math.round(156*p))+'px'; container.style.left=(-156+Math.round(156*p))+'px'; if(p==1){tmp.parentNode.removeChild(tmp); tmp=null; container=null; minibannerGallery.status=0;}},{duration:0.65,ease:true});
	}

	// Opdater forrige/næste-links
	this.container.getElementsByTagName('a')[0].className='arrow_right2'+((this.remaining)?'':'_dim');
	this.container.getElementsByTagName('a')[1].className='arrow_left'+((this.index>0)?'':'_dim');
}

/**
 * over
 *
 **********
 *
 * Viser en større thumb ved mouseover.
 *
 **********
 *
 * Parametre:
 * e (eventinfo)						Indeholder informationer om brugerens inputs.
 */
Minibanner_Gallery.prototype.over=function(e){
	// Clear timeouts
	if(this.timer) clearTimeout(this.timer);

	// Indlæs informationerne om brugerens inputs
	var e=e||window.event;
	var src=e.srcElement||e.target;

	// Vis en større thumb
	var zoom=src.parentNode.getElementsByTagName('img')[4];
	zoom.src=src.src.split('-2.jpg').join('-1.jpg');
	zoom.style.display='block';

	// Ryd hukommelsen
	zoom=null; src=null; e=null;
}

/**
 * out
 *
 **********
 *
 * Skjuler den store thumbnail ved mouseout.
 *
 **********
 *
 * Parametre:
 * e (eventinfo)						Indeholder informationer om brugerens inputs.
 */
Minibanner_Gallery.prototype.out=function(e){
	this.timer=setTimeout(function(){minibannerGallery.out2(e);},200);
}
Minibanner_Gallery.prototype.out2=function(e){
	// Indlæs informationerne om brugerens inputs
	var e=e||window.event;
	var src=e.srcElement||e.target;

	// Vis en større thumb
	var zoom=src.parentNode.getElementsByTagName('img')[4];
	zoom.style.display='none';

	// Ryd hukommelsen
	zoom=null; src=null; e=null;
}

/**
 * click
 *
 **********
 *
 * Åbner det aktive galleri.
 */
Minibanner_Gallery.prototype.click=function(){
	// Åbn galleriet
	window.location.href=this.url;
}

minibannerGallery=new Minibanner_Gallery();
