dojo.require("dojo.lang.*");dojo.require("dojo.event.*");dojo.require("dojo.xml.*");dojo.require("dojo.graphics.*");dojo.require("dojo.graphics.htmlEffects");dojo.require("dojo.io.cookies");dojo.require("dojo.widget.*");	var lwr = 'abcdefghijklmnopqrstuvwxyz';	var upr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; 	function isValid(parm,val) {	  if (parm == "") return true;	  for (i=0; i<parm.length; i++) {		if (val.indexOf(parm.charAt(i),0) == -1) return false;	  }	  return true;	}	function isAlpha(parm) {return isValid(parm,lwr+upr);} 	function getShortName(commonname)  {		var shortname = ""		for (j=0;j<commonname.length; j++) {			if (isAlpha(commonname.charAt(j))) {				shortname = shortname + commonname.charAt(j);			}		}		return shortname.toLowerCase();	}	var isInfobarOn = true;	var displayInfobarPref = dojo.io.cookies.getCookie("displayInfobarPref");	if (displayInfobarPref=="false") {		isInfobarOn=false;	}	function setMyImageInfo(imgNum) {		if (isInfobarOn) {			//Hack to fix wrap around on last slide			if (imgNum == -1) {				imgNum = myImages.length - 1;			}			imgNum = Math.max(0, Math.min(imgNum,myImages.length));			if (myImages[imgNum].commonname) {				document.getElementById("CommonNameNode").innerHTML = myImages[imgNum].commonname;				document.getElementById("LatinNameNode").innerHTML = myImages[imgNum].latinname;			}			document.getElementById("DescriptionNode").innerHTML = myImages[imgNum].description;			document.getElementById("LocationNode").innerHTML = myImages[imgNum].location;			document.getElementById("DateNode").innerHTML = myImages[imgNum].date.toDateString();			document.getElementById("InfobarNode").style.opacity = "0.7";		}		if (document.getElementById("SpeciesSourceNode")) {			if (myImages[imgNum].commonname) {				var commonname = myImages[imgNum].commonname;				var speciesfile = "http://www.khosla.com/forthebirds/species/" + getShortName(commonname) + ".html"				document.getElementById("SpeciesSourceNode").innerHTML = "<a href=\"" + speciesfile +"\">"+myImages[imgNum].commonname+"</a>";			}			else {				document.getElementById("SpeciesSourceNode").innerHTML = "";			}		}	}		function displayStillImage(imgNum) {		var fgObj = document.getElementById("img1");		var bgObj = document.getElementById("img2");		fgObj.style.visibility = "visible";		bgObj.style.visibility = "hidden";		fgObj.style.border = "8px solid #DC9E20";		bgObj.style.border = "8px solid #DC9E20";		document.getElementById("ToggleSlideShowNodeText").innerHTML = "Start Slide Show";		isSlideShowOn = false;		setMyImageInfo(imgNum);		fgObj.src = myImages[imgNum].imagesource;		bgObj.src = myImages[imgNum].imagesource;		gPhotoShow.urlsIdx = imgNum;		gPhotoShow.stopped = true;		gPhotoShow.centerImage(fgObj);		gPhotoShow.centerImage(bgObj);		thumbnailElement = document.getElementById("thumbnailId" + imgNum.toString());		offset = 150 + 120 * imgNum;		if (thumbnailElement) { offset = Math.max(0, thumbnailElement.y - 100); }		document.getElementById("NavigationBarNode").scrollTop = offset;	}		function getMySlideIndex() {		var myImageIndex = 0;		var imgnum = getURLParam('slideindex');		if (imgnum.length > 0) {			myImageIndex = parseInt(imgnum);		}		return myImageIndex;	}		function getMyImageIndex() {		var myImageIndex = 0;		var imgnum = getURLParam('imageindex');		if (imgnum.length > 0) {			myImageIndex = parseInt(imgnum);		}		return myImageIndex;	}		function guessMySlideIndex() {		var myImageIndex = 0;		var imgnum = getURLParam('slideindex');		if (imgnum.length > 0) {			myImageIndex = parseInt(imgnum);		}		else {			imgnum = getURLParam('imageindex');			if (imgnum.length > 0) {				myImageIndex = parseInt(imgnum);			}		}		return myImageIndex;	}		function isInfobarHidden() {		var isHidden = getURLParam('hideinfobar');		if (isHidden.length > 0) {			return 1;		}		else {			return 0;		}	}		function isSlideShowStopped() {		var isstopped = getURLParam('stopslideshow');		if (isstopped.length > 0) {			return 1;		}		else {			return 0;		}	}		function isAudioPlayed() {		var doAudio = getURLParam('doaudio');		if (doAudio.length > 0) {			return 1;		}		else {			return 0;		}	}		if (isAudioPlayed()) {		document.write("<embed src=\"" + myAudioURL + "\" autostart=false hidden=true name=\"myBirdSound\" enablejavascript=\"true\"/>");	}		function setMyImageFromParams() {		setMyImageInfo(getMyImageIndex());	}		function updateDependenciesFromParams() {		if (isInfobarHidden()) {			hideInfobar(null);		}			if (isSlideShowStopped() || (!isAudioPlayed() && (getURLParam('imageindex').length > 0))) {			displayStillImage(getMyImageIndex());		}				if (myImages.length < 2) {			disableSlideShow();		}				if (isAudioPlayed()) {			startSlideShow = true;			startSlideShow(null);			var thissound= eval("document.myBirdSound");			thissound.Play();		}	}		function getURLParam(strParamName){	  var strReturn = "";	  var strHref = window.location.href;	  if ( strHref.indexOf("&") > -1 ){		var strQueryString = strHref.substr(strHref.indexOf("&")).toLowerCase();		var aQueryString = strQueryString.split("&");		for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){		  if (			aQueryString[iParam].indexOf(strParamName + "=") > -1 ){			var aParam = aQueryString[iParam].split("=");			strReturn = aParam[1];			break;		  }		}	  }	  return strReturn;	}		function getURLBase(){	  var URLBase = "";	  var strHref = window.location.href;	  if ( strHref.indexOf("?") > -1 ){		URLBase = strHref.split('?')[0];	  }	  return URLBase;	}		function getAppStateAsURL(newIndex, doAudio){	  var imageStr = "imageIndex="+newIndex;	  var audioStr = ""; if (doAudio) { audioStr = "doaudio=true"; }	  var slideshowStr = "startslideshow=true"; if (!isSlideShowOn) { slideshowStr = "stopslideshow=true"; }	  var infobarStr = "showinfobar=true"; if (!isInfobarOn) { infobarStr = "hideinfobar=true"; }	  var appStateURL=getURLBase() + "?params&" + imageStr + "&" + audioStr + "&" + slideshowStr + "&" + infobarStr;	  return appStateURL;	}		function goToUrl(anUrl) {		 window.location.replace(anUrl);	}		function showInfobar() {		if (!isInfobarOn) {			var barNode = document.getElementById("InfobarNode");			document.getElementById("ToggleInfobarNodeText").innerHTML = "Hide Photo Info";			dojo.io.cookies.setCookie("displayInfobarPref", "true", 1, '/');			dojo.graphics.htmlEffects.fadeIn(barNode, 200)			isInfobarOn = true;		}	}			function hideInfobar() {		if (isInfobarOn) {			document.getElementById("ToggleInfobarNodeText").innerHTML = "Show Photo Info";			dojo.io.cookies.setCookie("displayInfobarPref", "false", 1, '/');			var barNode = document.getElementById("InfobarNode");			dojo.graphics.htmlEffects.fadeOut(barNode,200);			isInfobarOn = false;		}	}		function toggleInfobar() {		if (isInfobarOn) {			hideInfobar();		}		else {			showInfobar();		}	}		function doNothing() {	}	var isSlideShowOn = true;	function stopSlideShow(evt) {			if (isSlideShowOn) {				document.getElementById("img1").style.border = "8px solid #DC9E20";				document.getElementById("img2").style.border = "8px solid #DC9E20";				gPhotoShow.togglePaused();				document.getElementById("ToggleSlideShowNodeText").innerHTML = "Start Slide Show";				isSlideShowOn = false;				gPhotoShow.urlsIdx = gPhotoShow.urlsIdx - 1;			}	}			function startSlideShow(evt) {		if (!isSlideShowOn) { 			document.getElementById("img1").style.border = "8px solid #222";			document.getElementById("img2").style.border = "8px solid #222";			document.getElementById("ToggleSlideShowNodeText").innerHTML = "Stop Slide Show";			if 	(getURLParam('imageindex').length > 0) { gPhotoShow.urlsIdx = gPhotoShow.urlsIdx + 1; }			if (gPhotoShow.urlsIdx >= myImages.length) { gPhotoShow.urlsIdx = 0; }			location.replace(getURLBase() + "?params&" + "slideIndex=" + parseInt(gPhotoShow.urlsIdx).toString());	 		isSlideShowOn = true;		}	}	function toggleSlideShow(evt) {		if (isSlideShowOn) { 			stopSlideShow(evt);		}		else {			startSlideShow(evt);		}	}		function disableSlideShow() {		document.getElementById("img1").style.border = "8px solid #222";		document.getElementById("img2").style.border = "8px solid #222";		gPhotoShow.stop();		document.getElementById("ToggleSlideShowNodeText").innerHTML = "";		isSlideShowOn = false;	}		function init(){		document.getElementById("CommonNameNode").innerHTML = myBirdFamily.commonname;		document.getElementById("LatinNameNode").innerHTML = myBirdFamily.latinname;		document.getElementById("DescriptionNode").innerHTML = myImages[0].description;		document.getElementById("LocationNode").innerHTML = myImages[0].location;		document.getElementById("DateNode").innerHTML = myImages[0].date.toDateString();		var img1Node = document.getElementById("img1");		var img2Node = document.getElementById("img1");		dojo.event.connect(document.getElementById("ToggleSlideShowNode"), "onmouseup", "toggleSlideShow");		dojo.event.connect(document.getElementById("ToggleInfobarNode"), "onmouseup", "toggleInfobar");		var thePhotoShowNode = document.getElementById("PhotoShowNode");					var slideIndex = guessMySlideIndex();		document.getElementById("img1").src = myImages[slideIndex].imagesource;		document.getElementById("img2").src = myImages[slideIndex].imagesource;		var foreground_img1 = document.getElementById("img1");		var background_img2 = document.getElementById("img2");		slideshowUrls = [];		for (urlIndex = 0; urlIndex < myImages.length; urlIndex++) {			slideshowUrls [urlIndex] = myImages[urlIndex].imagesource;		}		var photoshow = new oPhotoShow(foreground_img1, background_img2, slideshowUrls, slideIndex);		photoshow.urlsIdx = slideIndex;		photoshow.init();		var navBarNode = document.getElementById("NavigationBarNode");		var oneHeight = getInnerHeight(window);		var otherHeight = screen.availHeight;		var chooseHeight = "" + Math.max(oneHeight, otherHeight) + "px"; 		navBarNode.style.height = chooseHeight;				updateDependenciesFromParams();				if (!isInfobarOn) {			var barNode = document.getElementById("InfobarNode");			document.getElementById("ToggleInfobarNodeText").innerHTML = "Show Photo Info";			barNode.style.opacity = "0.0";			//dojo.graphics.htmlEffects.fadeOut(barNode,1);		}		else {			var barNode = document.getElementById("InfobarNode");			document.getElementById("ToggleInfobarNodeText").innerHTML = "Hide Photo Info";			barNode.style.opacity = "0.7";			isInfobarOn = true;		}}		dojo.event.connect(dojo, "loaded", "init")