/*
	inlineSlides (Safari Fix)
	Slideshow example of Chapter 6 of
	"Beginning JavaScript with DOM Scripting and AJAX" 
	by Christian Heilmann
	(c) Christian Heilmann and Apress
*/
/*
	with little changes (*) by Corina Rudel
	(*) 
		added classes to back/fwd links
		changed order to: back/fwd/counter
		add dynamic class to container div also
*/

inlineSlides={

	// CSS classes
	galleryContainer:'gallery',
	slideClass:'gallery',
	dynamicSlideClass:'dyngallery',
	showClass:'show',
	slideCounterClass:'slidecounter',
	hideLinkClass:'hide',
	// labels 
	// forwards and backwards links, you can use any HTML here
	forwardsLabel:'weiter',
	backwardsLabel:'zurück',
	// Counter text, # will be replaced by the current image count
	// and % by the number of all pictures
	counterLabel:'Bild # von %', 

	init:function(){
		if(!document.getElementById || !document.createTextNode){return;}
		var uls=document.getElementsByTagName('ul');
		for(var i=0;i<uls.length;i++){
			if(!DOMhelp.cssjs('check',uls[i],inlineSlides.slideClass)){continue;}
			DOMhelp.cssjs('swap',uls[i],inlineSlides.slideClass,inlineSlides.dynamicSlideClass);
			uls[i].currentSlide=0;
			inlineSlides.initSlideShow(uls[i]);
		}

		var galleries = document.getElementsByTagName('div');
		for (var j=0;j<galleries.length;j++) {
			if(!DOMhelp.cssjs('check',galleries[j],inlineSlides.galleryContainer)){continue;}
			
			// add dynamic class to container div
			DOMhelp.cssjs('add',galleries[j],inlineSlides.dynamicSlideClass);
			
			// add class 'first' to first child element
			var firstElement = galleries[j].firstChild;
			while(firstElement.nodeType!=1 && firstElement.nextSibling!=null) {
			firstElement = firstElement.nextSibling;
			}
			DOMhelp.cssjs('add',firstElement,'first');

			// add class 'last' to last child element
			var lastElement = galleries[j].lastChild;
			while(lastElement.nodeType!=1 && lastElement.previousSibling!=null) {
			lastElement = lastElement.previousSibling;
			}
			DOMhelp.cssjs('add',lastElement,'last');
		}
	},
	initSlideShow:function(o){
		var p,temp,count;	
		p=document.createElement('p');
		DOMhelp.cssjs('add',p,inlineSlides.slideCounterClass);

		o.parentNode.insertBefore(p,o.nextSibling);

		o.rew=DOMhelp.createLink('#',' ');
		o.rew.innerHTML=inlineSlides.backwardsLabel;
		DOMhelp.addEvent(o.rew,'click',inlineSlides.showSlide,false);
		DOMhelp.cssjs('add',o.rew,inlineSlides.hideLinkClass);
		DOMhelp.cssjs('add',o.rew,'back'); // add class back to backlink
		p.appendChild(o.rew);
		
		o.fwd=DOMhelp.createLink('#',' ');
		o.fwd.innerHTML=inlineSlides.forwardsLabel;
		DOMhelp.addEvent(o.fwd,'click',inlineSlides.showSlide,false);
		DOMhelp.cssjs('add',o.fwd,'fwd'); // add class fwd to forwardlink
		p.appendChild(o.fwd);

		temp=o.getElementsByTagName('li')[o.currentSlide];
		
		
		/*var insert=temp.firstChild;
		while(insert.nodeType!=1 && insert.nextSibling!=null)
		{
			insert=insert.nextSibling;
		}
		
		insert.parentNode.insertBefore(p,insert.nextSibling);*/


		DOMhelp.cssjs('add',temp,inlineSlides.showClass);
		o.count=document.createElement('span');
		temp=inlineSlides.counterLabel.replace(/#/,o.currentSlide+1);
		temp=temp.replace(/%/,o.getElementsByTagName('li').length);
		o.count.appendChild(document.createTextNode(temp));
		p.appendChild(o.count);

		o.fwd.onclick=DOMhelp.safariClickFix;
		o.rew.onclick=DOMhelp.safariClickFix;
	},
	showSlide:function(e){
		var action;
		var t=DOMhelp.getTarget(e);
		while(	t.nodeName.toLowerCase()!='a' 
				&& t.nodeName.toLowerCase()!='body'){
			t=t.parentNode;
		} 
		if(DOMhelp.cssjs('check',t,inlineSlides.hideLinkClass)){return;}
		var parentList=DOMhelp.closestSibling(t.parentNode,-1);
		var count=parentList.currentSlide;
		var photoCount=parentList.getElementsByTagName('li').length-1;
		var photo=parentList.getElementsByTagName('li')[count];
		DOMhelp.cssjs('remove',photo,inlineSlides.showClass);
		count = (t==parentList.fwd) ? count+1 : count-1;
		action = (count>0) ? 'remove' : 'add' ;
		DOMhelp.cssjs(action,parentList.rew,inlineSlides.hideLinkClass);
		action = (count<photoCount) ? 'remove' : 'add';
		DOMhelp.cssjs(action,parentList.fwd,inlineSlides.hideLinkClass);
		photo=parentList.getElementsByTagName('li')[count];
		var counterText=parentList.count.firstChild
		counterText.nodeValue=counterText.nodeValue.replace(/\d/,count+1);
		parentList.currentSlide=count;
		DOMhelp.cssjs('add',photo,inlineSlides.showClass);
		DOMhelp.cancelClick(e);
	}
}
DOMhelp.addEvent(window, 'load', inlineSlides.init, false);

