yomotsuSlide = {
	
	slide : [],
	curentSlide : 0,
	
	init : function(){
		var div = document.getElementsByTagName("div");
		var i,count=0;
		
		for(i=0; i<div.length; i++){
			if(div[i].className.match(/slide/)){
				div[i].id += "slide"+count;
				yomotsuSlide.slide.push("slide"+count);
				count++;
			}
		}
		
		if( document.styleSheets[0].addRule ){ //IE
			document.styleSheets[0].addRule( ".slide", "{display:none}" );
			document.styleSheets[0].addRule( ".currentSlide", "{display:block}" );
		}
		else if( document.styleSheets[0].insertRule ) {//Mozilla
			document.styleSheets[0].insertRule( ".slide{display:none}", document.styleSheets[0].cssRules.length );	
			document.styleSheets[0].insertRule( ".currentSlide{display:block}", document.styleSheets[0].cssRules.length );	
		}
		
		yomotsuSlide.toggleSlide();
		
		document.onkeydown = yomotsuSlide.keyDown;
		yomotsuSlide.setSlideCtrl();
	},
	
	
	nextSlide : function(){
		var i;
		if(yomotsuSlide.curentSlide+1 < yomotsuSlide.slide.length){
			yomotsuSlide.curentSlide+=1;
			yomotsuSlide.toggleSlide();
		}
	},
	
	previousSlide : function(){
		var i;
		if(yomotsuSlide.curentSlide >= 1){
			yomotsuSlide.curentSlide-=1;
			yomotsuSlide.toggleSlide();
		}
	},
	
	toggleSlide : function(){
	
		for(var i=0; i<yomotsuSlide.slide.length; i++){
			if(i==yomotsuSlide.curentSlide){
				document.getElementById("slide"+yomotsuSlide.curentSlide).className+=" currentSlide";
			}
			else{
				document.getElementById("slide"+i).className = document.getElementById("slide"+i).className.replace(/ currentSlide/, "");
			}
		}
	
	},
	
	keyDown : function(event){
		var key;
		
		if (!event)
		var event = window.event;
		
		// kludge around NS/IE differences 
		if (window.event)
		key = window.event.keyCode;
		else if (event.which)
		key = event.which;
		else
		return true; // Yikes! unknown browser
		
		// ignore event if key value is zero
		// as for alt on Opera and Konqueror
		if (!key)
		return true;
		
		// check for concurrent control/command/alt key
		// but are these only present on mouse events?
		
		if (event.ctrlKey || event.altKey || event.metaKey)
		return true;
		
		else if (key == 37) // Left arrow
		{
		yomotsuSlide.previousSlide();
		}
		else if (key == 35) // End
		{
		lastSlide();
		return cancel(event);
		}
		else if ((key == 39)||(key == 13)) // Right arrow || Enter
		{
		yomotsuSlide.nextSlide();
		}
		
		return true;
	},
	
	setSlideCtrl : function(){
		var slideCtrl = document.createElement("div");
		slideCtrl.id="setSlideCtrl";
		document.body.appendChild(slideCtrl);
		
		var toc = document.createElement("ul")
		toc.id="toc";
		var tocItem="",i;
		for(i=0;i<yomotsuSlide.slide.length;i++){
			tocItem += "<li id=\"tocItem"+i+"\">["+i+"]"+ yomotsuSlide.getSlideHeading(yomotsuSlide.slide[i]) +"</li>";
		}
		toc.innerHTML = tocItem;
		slideCtrl.appendChild(toc);
		
		tocItem = toc.getElementsByTagName("li");
		for(i=0;i<tocItem.length;i++){
			tocItem[i].onclick = function(){
				yomotsuSlide.curentSlide = this.id.slice(7);
				yomotsuSlide.toggleSlide();
			}
		}
	},
	
	getSlideHeading : function(slideId){
		var heading="";		
		if(document.getElementById(slideId).getElementsByTagName("div")[0]&&document.getElementById(slideId).getElementsByTagName("div")[0].className.match(/header/)){
			h = document.getElementById(slideId).getElementsByTagName("div")[0].innerHTML;
			var hStart = h.indexOf("<h")+(h.match(/<h[1-6]>/)+"").length;
			var hEnd   = h.indexOf("</h");
			h = h.slice(hStart,hEnd);
			return h;
		}
	},
	
	
	addEvent : function(){
		try {
			window.addEventListener('load', this.init, false);
		} catch (e) {
			window.attachEvent('onload', this.init);
		}
	}
}

yomotsuSlide.addEvent();
