
var steps = 0;
var speed_max=50;
var change_speed=1;
var current_slide=0;

document.onkeyup = KeyCheck;       



function pageScrollLeft() {
		if(change_speed>0)		
		{
			if(steps == 0)
			{
				steps = -1;
			}		
			if(steps != -speed_max)
			{
				steps = steps - 1;
			}
		} else
		{
			if(steps !=0)
				steps = steps +1;
			else
			{
				change_speed=1;
				clearTimeout(scrolldelay);
				return;
			}	
			
		}

    	window.scrollBy(steps,0); // horizontal and vertical scroll increments
    	scrolldelay = setTimeout('pageScrollLeft()',20); // scrolls every 100 milliseconds
}

function pageScrollRight() {
		if(change_speed>0) // increase speed
		{
			if(steps==0)
			{
				steps = 1;
			}
			if(steps != speed_max)
			{
				steps = steps + 1;    	
			}
		} else // decrease speed
		{
			if(steps != 0)
				steps = steps -1;
			else
			{
				clearTimeout(scrolldelay);
				change_speed=1;
				return;
			}
		}
		window.scrollBy(steps,0); // horizontal and vertical scroll increments
    	scrolldelay = setTimeout('pageScrollRight()',20); // scrolls every 100 milliseconds
}

function stopScroll(){
	change_speed=-1; // descrease until 0
}

function hookEvent(element, eventName, callback)
{
  if(typeof(element) == "string")
    element = document.getElementById(element);
  if(element == null)
    return;
  if(element.addEventListener)
  {
    if(eventName == 'mousewheel')
      element.addEventListener('DOMMouseScroll', callback, false);  
    element.addEventListener(eventName, callback, false);
  }
  else if(element.attachEvent)
    element.attachEvent("on" + eventName, callback);

	prepare_key_handling();
}

function unhookEvent(element, eventName, callback)
{
  if(typeof(element) == "string")
    element = document.getElementById(element);
  if(element == null)
    return;
  if(element.removeEventListener)
  {
    if(eventName == 'mousewheel')
      element.removeEventListener('DOMMouseScroll', callback, false);  
    element.removeEventListener(eventName, callback, false);
  }
  else if(element.detachEvent)
    element.detachEvent("on" + eventName, callback);
}

function cancelEvent(e)
{
  e = e ? e : window.event;
  if(e.stopPropagation)
    e.stopPropagation();
  if(e.preventDefault)
    e.preventDefault();
  e.cancelBubble = true;
  e.cancel = true;
  e.returnValue = false;
  return false;
}

function printInfo(e)
{
  e = e ? e : window.event;
  var raw = e.detail ? e.detail : e.wheelDelta;
  var normal = e.detail ? e.detail * -1 : e.wheelDelta / 40;
	window.scrollBy(normal*7,0);
  cancelEvent(e);
}

function link_onClick(i)
{
	current_slide=i;
}

function makeEvent(element, callback, param, event) {
    function local() {
    	return callback(param);
    }

    if (element.addEventListener) {
    	//Mozilla
    	element.addEventListener(event,local,false);
    } else if (element.attachEvent) {
    	//IE
    	element.attachEvent("on"+event,local);
    }
}


function prepare_key_handling()
{
	for(i=0;i<document.getElementsByTagName("a").length;i++)
	{
		makeEvent(document.getElementsByTagName("a")[i],link_onClick,i,"click");
	}
	/* set Focus to index window in order to catch key events */
	setInterval(function(){self.focus()},500);
	
}

function KeyCheck(e)
{

   var KeyID = (window.event) ? event.keyCode : e.keyCode;

   switch(KeyID)
   {

	case 37:
		if(current_slide>0)
		{
			current_slide--;
			window.scrollBy(-40,0);
		}
		clickLink(document.getElementsByTagName("a")[current_slide]);
		
		break;
	case 39:
		if(current_slide<document.getElementsByTagName("a").length)
		{
			current_slide++;
			window.scrollBy(40,0);
		}
		clickLink(document.getElementsByTagName("a")[current_slide]);
		break;
	}
}

function clickLink(linkobj) {
     if (linkobj.getAttribute('onclick') == null) {
          if (linkobj.getAttribute('href')) 
		 parent.slide.location.href = linkobj.getAttribute('href');
     }
     else linkobj.onclick();
}

