﻿var n = 10;var firstClick = true;var highlighted = null;var selected = null;var opacityAnimation = {start: 0, timer: null};var opacities = new Array();for (var i = 0; i < n; i++)	opacities[i] = 0.35;	function highlightFeature(elem) {	highlighted = elem.id;	startOpacityAnimation();	return true;}function unhighlightFeature(elem) {	highlighted = null;	startOpacityAnimation();	return true;}function startOpacityAnimation() {	if (opacityAnimation.timer == null) {		opacityAnimation.start = (new Date).getTime();		opacityAnimation.timer = setInterval("animateLabel()", 13);	}}function animateLabel() {	var keepOn = false;	var now = (new Date).getTime();	var delta = (now - opacityAnimation.start) / 500;	opacityAnimation.start = now;	for (var i = 0; i < n; i++) {		var id = "label" + (i + 1);		var opacity = id == selected ? 1.0 : id == highlighted ? 0.65 : 0.35;		var currentOpacity = opacities[i];		if (currentOpacity != opacity) {			if (currentOpacity < opacity)				opacity = min(opacity, currentOpacity + delta);			else				opacity = max(opacity, currentOpacity - delta);			keepOn = true;			opacities[i] = opacity;			document.getElementById(id).style.opacity = opacity;		}	}	if (!keepOn) {		clearInterval(opacityAnimation.timer);		opacityAnimation.timer = null;	}}var featureAnimation = {start: 0, timer: null, previous: "feature0", opacity: 1, next: null, state: "done"};function showFeature(elem) {	var id = elem.childNodes[0].id;	selected = id;	startOpacityAnimation();		id = id.substr(5);	var feature = "feature" + id;	if (feature != featureAnimation.next) {		featureAnimation.state = "hide";		featureAnimation.next = feature;		if (featureAnimation.timer == null) {			featureAnimation.start = (new Date).getTime();			featureAnimation.timer = setInterval("animateFeature()", 13);		}	}		var select = firstClick;	firstClick = false;	if (select) {		ss.smoothScroll(this);	}	return select;}function animateFeature() {	var now = (new Date).getTime();	if (featureAnimation.state == "hide") {		if (featureAnimation.opacity > 0) {			var delta = (now - featureAnimation.start) / 300;			featureAnimation.start = now;			featureAnimation.opacity = max(0, featureAnimation.opacity - delta);			var elem = document.getElementById(featureAnimation.previous);			if (elem)				elem.style.opacity = featureAnimation.opacity;		} else {			featureAnimation.state = "show";			var elem = document.getElementById(featureAnimation.previous);			if (elem)				elem.style.display = "none";			featureAnimation.previous = featureAnimation.next;			featureAnimation.start = now + 100;			var elem = document.getElementById(featureAnimation.previous);			if (elem) {				elem.style.opacity = featureAnimation.opacity;				elem.style.display = "block";			}		}	} else {		if (featureAnimation.opacity < 1) {			var delta = 0;			if (now > featureAnimation.start) {				delta = max(0, (now - featureAnimation.start) / 500);				featureAnimation.start = now;			}			featureAnimation.opacity = min(1, featureAnimation.opacity + delta);			var elem = document.getElementById(featureAnimation.previous);			if (elem)				elem.style.opacity = featureAnimation.opacity;		} else {			var elem = document.getElementById(featureAnimation.next);			if (elem) {				elem.style.opacity = 1;				elem.style.display = "block";			}			clearInterval(featureAnimation.timer);			featureAnimation.timer = null;		}	}}function min(a, b) {	if (a < b)		return a;	else		return b;}function max(a, b) {	if (a > b)		return a;	else		return b;}function LOG__(message){	if (window.console)		window.console.log(message);}var isNav4, isIE4, isMac;if (parseInt(navigator.appVersion.charAt(0)) >= 4) {	isNav4 = (navigator.appName == "Netscape") ? true : false	isNav6 = (navigator.appName == "Netscape" && parseInt(navigator.appVersion) == 5) ? true : false	isIE4  = (navigator.appName.indexOf("Microsoft") != -1) ? true : false	isMac  = (navigator.platform.indexOf("Mac") != -1) ? true : false}function openFeature(url) {	var winWidth = 511, winHeight = 400;	if (isNav4 || isIE4) {		var screenPosX,screenPosY;		screenPosX = (screen.availWidth - winWidth) / 2;		screenPosY = (screen.availHeight - winHeight) / 2;		if (isNav4 || isNav6)			window.open(url, 'subwin','toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0, copyhistory=0,width='+winWidth+',height='+winHeight+',screenX='+screenPosX+',screenY='+screenPosY+'');		else if (isIE4)			newwin = window.open(url, 'subwin','toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0, copyhistory=0,width='+winWidth+',height='+winHeight+',left='+screenPosX+',top='+screenPosY+'');    	} else		window.open(url, 'subwin','toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0, copyhistory=0,width='+winWidth+',height='+winHeight);}/* 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 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);