
// Vertical scrolling 
// (C) 2007 Pedro Branco


var scrollY = 0;
var timerId;
var lyr;
var lastTime;
var maxY;
var speed;
var layerID;

//
// Adds a onClick event to all the anchors when the page loads
// replacing the default anchor hyperlink with a cool scroll effect.
//
function setupAnchorsLinks() {
	
    // Get a list of all links in the page
    var allLinks = document.getElementsByTagName('a');
    // Walk through the list
    for (var i=0;i<allLinks.length;i++) {
      var lnk = allLinks[i];

 	  if ((lnk.href && lnk.href.indexOf('#') != -1) && 
          ( (lnk.pathname == location.pathname) ||
            ('/'+lnk.pathname == location.pathname) ) && 
          (lnk.search == location.search)) {
        // If the link is internal to the page (begins in #)
        // then attach the smoothScroll function as an onclick
        // event handler
        //addEvent(lnk,'click','jumpToAnchor('+layerID+','+lnk.href.split("#")[1]+', 600)',true);
		addEvent(lnk,'click',jumpToAnchor);	
		//alert('jumpToAnchor('+layerID+','+lnk.href.split("#")[1]+', 600)');
      }
    }
}




// addEvent and removeEvent
// cross-browser event handling for IE5+,  NS6 and Mozilla
// By Scott Andrew
function addEvent (elm, evType, fn, useCapture) {
    if (elm.addEventListener){
      elm.addEventListener(evType, fn, useCapture);
      return true;
    } else if (elm.attachEvent){
      var r = elm.attachEvent("on"+evType, fn);
      return r;
    } else {
      alert("Handler could not be removed");
    }
}  



//
// layerID - name of the layer to scroll
// anchorID - name of the anchor without the # to scroll to
// speed - how fast to scroll (should be a positive value)
//
function jumpToAnchor(e) {
	layerID ='lyr1';
	speed = 600;
	
    // This is an event handler; get the clicked on element,
    // in a cross-browser fashion
    if (window.event) {
      target = window.event.srcElement;
    } else if (e) {
      target = e.target;
    } else return;
  
    // Make sure that the target is an element, not a text node
    // within an element
    if (target.nodeType == 3) {
      target = target.parentNode;
    }
  
    // Paranoia; check this is an A tag
    if (target.nodeName.toLowerCase() != 'a') return;
  
    // Find the <a name> tag corresponding to this href
    // First strip off the hash (first character)
    anchorID = target.hash.substr(1);
    //function jumpToAnchor(layerID, anchorID, speed) {
		
	// Now loop all A tags until we find one with that name	
	var allLinks = document.getElementsByTagName('a');
    var destinationLink = null;
    for (var i=0;i<allLinks.length;i++) {
      var lnk = allLinks[i];
      if (lnk.name && (lnk.name == anchorID)) {
        destinationLink = lnk;
        break;
      }
    }
    // If we didn't find a destination, give up and let the browser do
    // its thing
    if (!destinationLink) return true;

    // Find the destination's position
    var desty = destinationLink.offsetTop;
    //var thisNode = destinationLink;
    //while (thisNode.offsetParent && 
    //      (thisNode.offsetParent != document.body)) {
    //  thisNode = thisNode.offsetParent;
	//  alert(thisNode.offsetTop);
    //  desty += thisNode.offsetTop;
    //}

    // Stop any current scrolling
    clearInterval(timerId);	
	
	// If the direction of movement is down, scroll otherwise jump
	if (Math.abs(scrollY) < desty)
		startScroll(layerID, desty, -Math.abs(speed));
	else
		jumpTo(layerID, 0);
		
	// And stop the actual click happening
    if (window.event) {
      window.event.cancelBubble = true;
      window.event.returnValue = false;
    }
    if (e && e.preventDefault && e.stopPropagation) {
      e.preventDefault();
      e.stopPropagation();
    }
}


//
// laayerID - name of the layer to scroll
// maxScroll - maximum amount to scroll, depending on the size of the text
// s - scrolling speed, positive value to scroll up, negative to scroll down.
//
function startScroll(layerID, maxScroll, s) {
 
  if (timerId) clearInterval(timerId);

  lyr=document.getElementById(layerID);
  maxY = maxScroll;
  speed = s;
  lastTime = ( new Date() ).getTime();
  timerId = setInterval("scroll()", 10); 

  return true;
}



function jumpTo(layerID, y)
{	
  lyr=document.getElementById(layerID);	
  shiftTo(lyr, -y);  
}



function scroll() {

  var now = ( new Date() ).getTime();
  var d = (now - lastTime)/1000 * speed;

  var y = scrollY + d;  

  if ( y > -maxY && y < 0  ) {
    lastTime = now;
    shiftTo(lyr, y);
  } else {
	clearInterval(timerId); timerId = 0;
  }
	
}



function endScroll() {
  clearInterval(timerId);
  timerId = 0;
  return true;
}



function shiftTo(layerID, y) { 
	layerID.style.top=(scrollY=y)+"px";
}



//addEvent(window,"load",setupAnchorsLinks)
