	function writeAddress(a,b,s) {
		a=replaceStr('e<span class=red>X</span>actal','eXactal',a);
		b=replaceStr('e<span class=red>X</span>actal','eXactal',b);
		e1=a+'@'+b;
		e2='<b>'+a+'</b>'+'@'+b;
		s = (s) ? 'style='+s : '';
		document.write('<a '+s+' href=mailto:'+e1+'>'+e2+'</a>');
	}



	function getCookie(name) { // use: getCookie("name");
		var re = new RegExp(name + "=([^;]+)");
		var value = re.exec(document.cookie);
		return (value != null) ? unescape(value[1]) : null;
	}

	today = new Date();
	var expiry = new Date(today.getTime() + 28 * 24 * 60 * 60 * 1000); // plus 28 days

	function setCookie(name, value) { // use: setCookie("name", value);
		document.cookie=name + "=" + escape(value) + "; path=/; expires=" + expiry.toGMTString();
	}
	

	function rescaleGraphic(el,src) {
		elel = getID(el);
		elSrc = elel.src;
		elel.removeAttribute('height');
		elel.removeAttribute('width');
		elel.removeAttribute('style');
		if (elSrc.indexOf('thumb.php')!=-1) {
			eval(el+"_originalSrc = '"+elSrc+"'");
			newSrc = src;
		} else {
			newSrc = eval(el+'_originalSrc');
		}
		elel.src = newSrc;
	}



	// layer functions

	function getID(el) {
		if (el) {
			if (document.getElementById) return document.getElementById(el);
		} else {
			return (document.getElementById) ? 1 : 0;
		}
	}

	function getWidth(el) {
		if (document.all) {
			return document.all[el].offsetWidth;
		} else if (getID()) {
			return getID(el).offsetWidth;
		} else if (document.layers) {
			return document.layers[el].document.width;
		}
	}

	function getHeight(el) {
		if (document.all) {
			return document.all[el].offsetHeight;
		} else if (getID()) {
			return getID(el).offsetHeight;
		} else if (document.layers) {
			return document.layers[el].document.height;
		}
	}

	function getLeft(el) {
		if (document.all) {
			return parseInt(document.all[el].style.left);
		} else if (getID()) {
			return parseInt(getID(el).style.left);
		} else if (document.layers) {
			return parseInt(document.layers[el].left);
		}
	}

	function getTop(el) {
		if (document.all) {
			return parseInt(document.all[el].style.top);
		} else if (getID()) {
			return parseInt(getID(el).style.top);
		} else if (document.layers) {
			return parseInt(document.layers[el].top);
		}
	}

	function moveTo(el, x, y) {
		if (!x) x = getLeft(el);
		if (!y) y = getTop(el);
		if (document.all) {
			document.all[el].style.left = x;
			document.all[el].style.top = y;
		} else if (getID()) {
			getID(el).style.left = x;
			getID(el).style.top = y;
		} else if (document.layers) {
			document.layers[el].left = x;
			document.layers[el].top = y;
		}
	}

	function setBg(el, bg) {
		if (document.all) {
			document.all[el].style.backgroundColor = bg;
		} else if (getID()) {
			getID(el).style.backgroundColor = bg;
		} else if (document.layers) {
			document.layers[el].document.bgColor = bg;
		}
	}

	function getVis(el) {
		if (document.all) {
			return (document.all[el].style.visibility == "visible") ? 1 : 0;
		} else if (getID()) {
			return (getID(el).style.visibility == "visible") ? 1 : 0;
		} else if (document.layers) {
			return (document.layers[el].visibility == "show") ? 1 : 0;
		}
	}

	function setVis(el, vis) {
		vis =  (vis == "on") ? "visible" : "hidden" ;
		if (document.all) {
			document.all[el].style.visibility = vis;
		} else if (getID()) {
			getID(el).style.visibility = vis;
		} else if (document.layers) {
			vis = (vis == "visible") ? "show" : "hide" ;
			document.layers[el].visibility = vis;
		}
	}

	function toggleVis(el) {
		vis = (getVis(el)) ? "off" : "on" ;
		setVis(el, vis);
	}
	

	// button functions
		function buttonOver(ref,flag) {
		newColour = (flag==1) ? "333" : "FFF";
		e1 = getID('buttonLeft'+ref);
		e2 = getID('buttonMid'+ref);
		e3 = getID('buttonRight'+ref);
		e1.src = "/images/button_left"+flag+".gif";
		e2.style.background = "url(/images/button_mid"+flag+".gif) repeat-x";
		e3.src = "/images/button_right"+flag+".gif";
		e2.style.color = "#"+newColour;
	}



	
	// photo functions

	startedUp = false;
	startMeUp = 'startedUp=true;';
	onload=function(){eval(startMeUp);}
	
	showHint = false;
	function toggleCell(ref, flag) {
		h = getID('photoHint');
		if (getID()) {
			if (flag) {
				showHint = true;
				setTimeout("if(showHint)h.innerHTML = \""+eval('hint'+ref)+"\"", 1);
				if (docLoaded) setTimeout("if(showHint)h.style.visibility = 'visible'", 1);
			} else {
				showHint = false;
				setTimeout("if(!showHint)h.style.visibility = 'hidden'", 1);
			}
		}
	}

	if (document.getElementById) {
		document.onmousemove = captureMousePosition;
	}

	docLoaded = false;
	startMeUp += "docLoaded=true;";
	xMousePos = 0;
	yMousePos = 0;
	function captureMousePosition(e) {
		if (document.all) {
			xMousePos = window.event.clientX+document.body.scrollLeft;
       			yMousePos = window.event.clientY+document.body.scrollTop;
   		     } else if (document.getElementById) {
			xMousePos = e.pageX;
			yMousePos = e.pageY;
		}
	}

	function track() {
		if (getID()) {
			moveTo('photoHint', xMousePos-7, yMousePos+16);
		}
	}

	displayPhoto = false;
	startMeUp += "if(displayPhoto)setInterval('track()', 10);";
	
	
	
	
		// misc functions
				

		preloadArray = new Array();
	
		function addPreload(imgSrc) { preloadArray[preloadArray.length] = imgSrc; }
	
		var preloadFlag = false;
		function preloadImages() {
			if (document.images) {
				for (i=0; i<preloadArray.length; i++) eval("preloadImage"+i+" = newImage('"+preloadArray[i]+"');");
				preloadFlag = true;
			}
		}
	
		function newImage(arg) {
			if (document.images) {
				rslt = new Image();
				
				rslt.src = arg;
				return rslt;
			}
		}
	
		function init() {
			preloadImages();
			eval(startMeUp);
		}
	
		onload = init;
	
		addPreload("/images/red.gif");
		addPreload("/images/button_left1.gif");
		addPreload("/images/button_left2.gif");
		addPreload("/images/button_right1.gif");
		addPreload("/images/button_right2.gif");
		addPreload("/images/button_mid1.gif");
		addPreload("/images/button_mid2.gif");
	
		function replaceStr(find, replace, stringer) {
			if (stringer.indexOf(find) != -1) {
				remainder = stringer;
				processed = '';
				while (remainder.indexOf(find) != -1) {
					processed = processed+stringer.substr((stringer.length-remainder.length),remainder.indexOf(find))+replace;
					remainder = remainder.substr(remainder.indexOf(find)+find.length, remainder.length);
				}
				stringer = processed+remainder;
			}
			return stringer;
		}
	
		function detectChar(chr, str1) {
			str2 = replaceStr(chr, "", str1);
			if (str1.length > str2.length) return true;
			return false;
		}
	
		function check_key(key_event, the_key, action) {
			if (!void13) {
				if (!key_event) key_event = event.keyCode;
				if (key_event == the_key) // execute action
				eval(action);
			}
		}
	
