	
	/*******************************************************/
	/****			SMOOTH SCROLLING TO ANCHORS			****/
	/*******************************************************/
	
	// SCROLL VARS
	var INTERVAL;
	var CURRENTL;
	
	// FUNCTIONS
	
	function fixAllLinks() {
		// 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',smoothScrollEventHandler);
			}
		}
	}
	
	function smoothScrollEventHandler(e) {
		// Get anchor
		anchor = getAnchorName(e);
		
		// Then scroll
		smoothScroll(anchor)
		
		// 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();
		}
	}
  	
	function getAnchorName(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 false;
		
		
		// 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 false;
		
		// Find the <a name> tag corresponding to this href
		// First strip off the hash (first character)
		anchor = target.hash.substr(1);
		
		return anchor;
	}
	
	function smoothScroll(anchor) {
		// If no anchor, end
		if(!anchor) return;
		
		// Now loop all A tags until we find one with that name
		var allLinks = document.getElementsByTagName('a');
		var allDivs = document.getElementsByTagName('div');
		var all = [allLinks, allDivs];
		var destinationLink = null;
		for (var j=0; j<all.length; j++) {
			for (var i=0;i<all[j].length;i++) {
				var lnk = all[j][i];
				if (lnk.name && (lnk.name == anchor)) {
					destinationLink = lnk;
					break;
				} else if (lnk.id && (lnk.id == anchor)){
					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 destx = destinationLink.offsetLeft; 
		var desty = destinationLink.offsetTop;
		var thisNode = destinationLink;
		while (thisNode.offsetParent && (thisNode.offsetParent != document.body)) {
			thisNode = thisNode.offsetParent;
			destx += thisNode.offsetLeft;
			// Take header into account
			desty += thisNode.offsetTop-((getCookie('myPin') == "fixed" || getCookie('myPin') == "") ? 90 : 0);
		}
		
		// Stop any current scrolling
		clearInterval(INTERVAL);
		
		// Discard style from previous link
		if(CURRENTL) CURRENTL.className = "";
		
		// And style the new link
		destinationLink.className = "activeAnchor";
		
		// And set this link as the current one
		CURRENTL	= destinationLink;
		
		// Set vars
		cypos		= getCurrentYPos();
		ss_stepsize	= parseInt((desty-cypos)/7);
		INTERVAL	= setInterval('scrollWindow('+ss_stepsize+','+desty+',"'+anchor+'")',10);
	}
  
	function scrollWindow(scramount, dest, anchor) {
		wascypos = getCurrentYPos();
		isAbove = (wascypos < dest);
		window.scrollTo(0,wascypos + scramount);
		iscypos =  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(INTERVAL);
			// and jump to the link directly so the URL's right
			/*location.hash = anchor;*/
		}
	}

	function getCurrentYPos() {
		if (document.body && document.body.scrollTop)
			return document.body.scrollTop;
		if (document.documentElement && document.documentElement.scrollTop)
			return document.documentElement.scrollTop;
		if (window.pageYOffset)
			return window.pageYOffset;
		return 0;
	}
	
	function smoothGoToAnchor() {
		// Capture hash
		var HASH		= document.location.hash;
		
		// If no hash, end
		if(!HASH) return;
		
		// Check if anchor and scroll
		if(HASH.indexOf('#') != '-1') {
			var HASHNAME	= HASH.replace(/#/, '');
			if(HASHNAME) smoothScroll(HASHNAME);
		}
		
		return;
	}
	
	// jQUERY REQUIRED
	
	$(document).ready(function(){
			var myPage = document.location.toString();
			if(myPage.match('#')) {
				// Scroll to anchor
				var myAnchor = myPage.split('#')[1];
				smoothScroll(myAnchor);
			}
		}
	);
	