/* Smooth scrolling
   Changes links that link to other parts of this page to scroll
   smoothly to those links rather than jump to them directly, which
   can be a little disorienting.
   
   sil, http://www.kryogenix.org/
   
   Wordpress Plug-in Smooth Scroll Links [SSL] by Chetan Gole [http://chetangole.com/]
   
*/
/*
var ss = {
  fixAllLinks: function() {
    // 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
        ss.addEvent(lnk,'click',ss.smoothScroll);
      }
    }
  },

  smoothScroll: function(e) {
    // 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.nodeName.toLowerCase() != 'a') {
      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)
    anchor = target.hash.substr(1);
    // 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 == anchor)) {
        destinationLink = lnk;
        break;
      }
    }
    if (!destinationLink) destinationLink = document.getElementById(anchor);

    // 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 destx = destinationLink.offsetLeft; 
    var desty = destinationLink.offsetTop-65;
    var thisNode = destinationLink;
    while (thisNode.offsetParent && 
          (thisNode.offsetParent != document.body)) {
      thisNode = thisNode.offsetParent;
      destx += thisNode.offsetLeft;
      desty += thisNode.offsetTop;
    }
  
    // Stop any current scrolling
    clearInterval(ss.INTERVAL);
  
    cypos = ss.getCurrentYPos()+65;
  
    ss_stepsize = parseInt((desty-cypos)/ss.STEPS);
    ss.INTERVAL =
    setInterval('ss.scrollWindow('+ss_stepsize+','+desty+',"'+anchor+'")',10);
  
    // 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();
    }
  },

  scrollWindow: function(scramount,dest,anchor) {
    wascypos = ss.getCurrentYPos();
    isAbove = (wascypos < dest);
    window.scrollTo(0,wascypos + scramount);
    iscypos = ss.getCurrentYPos();
    isAboveNow = (iscypos < dest);
    if ((isAbove != isAboveNow) || (wascypos == iscypos) ) {
      // if we've just scrolled past the destination, or
      // we haven't moved from the last scroll (i.e., we're at the
      // bottom of the page) then scroll exactly to the link
      window.scrollTo(0,dest);
      // cancel the repeating timer
      clearInterval(ss.INTERVAL);
      // and jump to the link directly so the URL's right
      location.hash = anchor;
    }
  },

  getCurrentYPos: function() {
    if (document.body && document.body.scrollTop)
      return document.body.scrollTop;
    if (document.documentElement && document.documentElement.scrollTop)
      return document.documentElement.scrollTop+65;
    if (window.pageYOffset)
      return window.pageYOffset+65;
    return 0;
  },

  addEvent: function(elm, evType, fn, useCapture) {
    // addEvent and removeEvent
    // cross-browser event handling for IE5+,  NS6 and Mozilla
    // By Scott Andrew
    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");
    }
  } 
}

ss.STEPS = 20;

ss.addEvent(window,"load",ss.fixAllLinks);
*/


/*--------------------------------------------------------------------------

 *  Smooth Scroller Script, version 1.0.1

 *  (c) 2007 Dezinerfolio Inc. <midart@gmail.com>

 *

 *  For details, please check the website : http://dezinerfolio.com/

 *

/*--------------------------------------------------------------------------*/



Scroller = {

	// control the speed of the scroller.
    
	// dont change it here directly, please use Scroller.speed=50;
    
	speed:10,


	// returns the Y position of the div

	gy: function (d) {
        margin = 62
		gy = d.offsetTop

		if (d.offsetParent) while (d = d.offsetParent) gy += d.offsetTop

		return gy-margin

	},



	// returns the current scroll position

	scrollTop: function (){

		body=document.body

	    d=document.documentElement

	    if (body && body.scrollTop) return body.scrollTop

	    if (d && d.scrollTop) return d.scrollTop

	    if (window.pageYOffset) return window.pageYOffset

	    return 0

	},



	// attach an event for an element

	// (element, type, function)

	add: function(event, body, d) {

	    if (event.addEventListener) return event.addEventListener(body, d,false)

	    if (event.attachEvent) return event.attachEvent('on'+body, d)

	},



	// kill an event of an element

	end: function(e){

		if (window.event) {

			window.event.cancelBubble = true

			window.event.returnValue = false

      		return;

    	}

	    if (e.preventDefault && e.stopPropagation) {

	      e.preventDefault()

	      e.stopPropagation()

	    }

	},

	

	// move the scroll bar to the particular div.

	scroll: function(d){

		h=document.body.scrollHeight;

		a = Scroller.scrollTop()

		if(d>a)

			a+=Math.ceil((d-a)/Scroller.speed)

		else

			a = a+(d-a)/Scroller.speed;

		window.scrollTo(0,a)

	  	if(a==d || Scroller.offsetTop==a)clearInterval(Scroller.interval)

	  	Scroller.offsetTop=a

	},

	// initializer that adds the renderer to the onload function of the window

	init: function(){

		Scroller.add(window,'load', Scroller.render)

	},



	// this method extracts all the anchors and validates then as # and attaches the events.

	render: function(){

		a = document.getElementsByTagName('a');

		Scroller.end(this);

		window.onscroll

	    for (i=0;i<a.length;i++) {

	      l = a[i];

	      if(l.href && l.href.indexOf('#') != -1 && ((l.pathname==location.pathname) || ('/'+l.pathname==location.pathname)) ){

	      	Scroller.add(l,'click',Scroller.end)

	      		l.onclick = function(){

	      			Scroller.end(this);

		        	l=this.hash.substr(1);

		        	 a = document.getElementsByTagName('a');

				     for (i=0;i<a.length;i++) {

				     	if(a[i].name == l){

				     		clearInterval(Scroller.interval);

				     		Scroller.interval=setInterval('Scroller.scroll('+Scroller.gy(a[i])+')',10);

						}

					}

				}

	      	}

		}

	}

}

// invoke the initializer of the scroller

Scroller.init();





/*------------------------------------------------------------

 *						END OF CODE

/*-----------------------------------------------------------*/
