	function verifyCompatibleBrowser() {
	  this.ver=navigator.appVersion
	  this.agent=navigator.userAgent
	  this.dom=document.getElementById?1:0
	  this.opera5=this.agent.indexOf("Opera 5")>-1
	  this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom && !this.opera5)?1:0; 
	  this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom && !this.opera5)?1:0;
	  this.ie4=(document.all && !this.dom && !this.opera5)?1:0;
	  this.ie=this.ie4||this.ie5||this.ie6
	  this.mac=this.agent.indexOf("Mac")>-1
	  this.ns6=(this.dom && parseInt(this.ver) >= 5) ?1:0; 
	  this.ns4=(document.layers && !this.dom)?1:0;
	  this.bw=(this.ie6||this.ie5||this.ie4||this.ns4||this.ns6||this.opera5)
		return this
	}
	bw = new verifyCompatibleBrowser();

	var speed=50;
	var scrollMove;
	var loop, timer;
	var initialised;
	var intSliderTrackHeight, intScrollerUpperBound;
	var blnGalleryLoaded, blnImageLargeVisible, intImageDisplayed, strImageLargeSrc;
	var blnGalleryLoaded = false;
	blnImageLargeVisible = false;
	var dd_obj=0, dd_mobj=0;
	strImageLargeSrc = '';

	function ShowImageLarge(ImgNo) {
		objImageFull =new ConstructObject('ImageFull');

		if (!blnGalleryLoaded) LoadGallery();
		if (blnImageLargeVisible && intImageDisplayed==ImgNo) {
			objImageFull.css.visibility="hidden";
			blnImageLargeVisible = false;
		} else {
			objImageFull.css.visibility="visible";

			objImage =new ConstructObject('ImageContent' + ImgNo);
			objImage.el.style.visibility = "inherit";

			if (intImageDisplayed!=null && ImgNo != intImageDisplayed) {
				objImage =new ConstructObject('ImageContent' + intImageDisplayed);
				objImage.el.style.visibility = "hidden";
			}

			blnImageLargeVisible = true;
			intImageDisplayed = ImgNo;
		}
	}

	function HideImageLarge() {
		objImageFull =new ConstructObject('ImageFull');
		blnImageLargeVisible = false;
		objImageFull.css.visibility="hidden"; 
	}

	function ConstructObject(obj,nest) {
		nest=(!nest) ? '':'document.'+nest+'.'
		this.el=bw.dom?document.getElementById(obj):bw.ie4?document.all[obj]:bw.ns4?eval(nest+'document.'+obj):0;
		this.css=bw.dom?document.getElementById(obj).style:bw.ie4?document.all[obj].style:bw.ns4?eval(nest+'document.'+obj):0;
		this.scrollHeight=bw.ns4?this.css.document.height:this.el.offsetHeight
		this.scrollWidth=bw.ns4?this.css.document.width:this.el.offsetWidth
		this.clipHeight=bw.ns4?this.css.clip.height:this.el.offsetHeight
		this.clipWidth=bw.ns4?this.css.clip.width:this.el.offsetWidth
		this.up=MoveAreaUp;
		this.down=MoveAreaDown;
		this.left=MoveAreaLeft;
		this.right=MoveAreaRight;
		this.MoveArea=MoveArea;
	  this.evnt=bw.dom? document.getElementById(obj):bw.ie4?document.all[obj]:bw.ns4?eval(nest+"document.layers." +obj):0;	
	  this.ref=bw.dom||bw.ie4?document:this.css.document;
	  this.x=parseInt(this.css.left)||this.css.pixelLeft||this.evnt.offsetLeft||0;
	  this.y=parseInt(this.css.top)||this.css.pixelTop||this.evnt.offsetTop||0
	  this.w=this.evnt.offsetWidth||this.css.clip.width||this.ref.width||this.css.pixelWidth||0; 
	  this.h=this.evnt.offsetHeight||this.css.clip.height||this.ref.height||this.css.pixelHeight||0
	  this.c=0 //Clip values
	  if((bw.dom || bw.ie4) && this.css.clip) {
		  this.c=this.css.clip; this.c=this.c.slice(5,this.c.length-1); 
		  this.c=this.c.split(' ');
		  for(var i=0;i<4;i++){this.c[i]=parseInt(this.c[i])}
	  }
	  this.ct=this.css.clip.top||this.c[0]||0; 
	  this.cr=this.css.clip.right||this.c[1]||this.w||0
	  this.cb=this.css.clip.bottom||this.c[2]||this.h||0; 
	  this.cl=this.css.clip.left||this.c[3]||0
		this.obj = obj + "Object"
		eval(this.obj + "=this")
		return this
	}

	function MoveArea(x,y) {	
		this.x=x;
		this.y=y
		this.css.left=this.x
		this.css.top=this.y
	}

	function MoveAreaDown(move) {
		if((this.y - move) > objContainer.clipHeight - this.scrollHeight) {
			this.MoveArea(scrollbarRight, this.y - move)
			objSlider.MoveArea(scrollbarRight, objSlider.y + scrollMove)
			if(loop) setTimeout(this.obj+".down("+move+")",speed)
		}else{
			objSlider.MoveArea(scrollbarRight, objDownControl.y - (parseInt(objSlider.css.height) + 5))
			objScroller.MoveArea("", intScrollerUpperBound);
		}
	}

	function MoveAreaUp(move) {
		if(this.y - move <0) {
			this.MoveArea(scrollbarRight,this.y-move)
			objSlider.MoveArea(scrollbarRight,objSlider.y-scrollMove)
			if(loop) setTimeout(this.obj+".up("+move+")",speed)
		}else{
			objScroller.MoveArea(scrollbarRight, intScrollerLowerBound);
			objSlider.MoveArea(scrollbarRight, scrollbarButtonHeight + scrollbarButtonSpace)
		}
	}

	function MoveAreaRight(move) {
		//alert("this.x=" + this.x + ", this.scrollWidth=" + this.scrollWidth + ", objGallery.clipWidth=" + objGallery.clipWidth)
		if(this.x > galleryWidth-this.scrollWidth-20) {
			this.MoveArea(this.x-move,0)
			if(loop) setTimeout(this.obj+".right("+move+")",speed)
		}
	}

	function MoveAreaLeft(move) {
		if(this.x<0) {
			this.MoveArea(this.x-move,0)
			if(loop) setTimeout(this.obj+".left("+move+")",speed)
		}
	}

	function InitialiseScrollableArea() {
		objContainer=new ConstructObject('divContainer')
		objScroller=new ConstructObject('divContent','divContainer')
		objScrollbar = new ConstructObject('divSlider','divContainerMargins')
		objSlider = new ConstructObject('divSlider','divContainerMargins')
		objSliderHandle = new ConstructObject('divSliderHandle','divSlider');
		objSliderImg = new ConstructObject('SliderHandle');
		objGallery=new ConstructObject('divGallery')
		objPanner=new ConstructObject('divPictures','divGallery')
		objPictures=new ConstructObject('tblPictures')
		objDownControl=new ConstructObject('divDownControl')
		objScrollBar =new ConstructObject('divScrollbar')
		objLeftControl =new ConstructObject('divLeftControl')
		objRightControl =new ConstructObject('divRightControl')
		objScroller.MoveArea(0, 0)
		objScrollbar.drag();

		if (objPanner.scrollWidth > 0) {
//			alert("Make the text area smaller | " + divDownControl.style.x)
			scrollerHeight = scrollerHeightDefault - galleryHeight - 10;
			objDownControl.css.top = scrollerHeight - 10;
			objDownControl.y  = scrollerHeight - 10;
			objContainer.css.height = scrollerHeight;
			objContainer.clipHeight = scrollerHeight
			objGallery.css.visibility="inherit";
		}

		if (objContainer.clipHeight / objScroller.scrollHeight > 1 || objScroller.scrollHeight < 0 ) {
			objSlider.css.height = scrollerHeight - scrollbarButtonHeight*2 - scrollbarButtonSpace*2;
			objScrollBar.css.visibility="hidden";
		} else {
			objSlider.css.height = (objContainer.clipHeight / objScroller.scrollHeight) * (scrollerHeight - scrollbarButtonHeight*2 - scrollbarButtonSpace*2);
			objScrollBar.css.visibility="inherit";

			objSliderHandle.css.top = (parseInt(objSlider.css.height) / 2 - objSliderImg.el.height / 2) + 'px';
			objSliderHandle.css.visibility = "inherit";
		}

		objSlider.MoveArea(scrollbarRight, scrollbarButtonHeight + scrollbarButtonSpace)
		scrollMove = (scrollerHeight - scrollbarButtonHeight*2 - scrollbarButtonSpace*2) / ((objScroller.scrollHeight) / 7)
		objPanner.MoveArea(0, 0)
		objPanner.scrollWidth = objPictures.scrollWidth;
		if (objGallery.clipWidth / objPanner.scrollWidth < 1) {
			objGallery.css.left = '30px';
			galleryWidth = galleryWidthDefault - 20;
			objGallery.css.clip = 'rect(0px ' + (galleryWidth - 20) + 'px ' + galleryHeight + 'px 0px)';
			objLeftControl.css.visibility = "inherit";
			objRightControl.css.visibility = "inherit";
		}

		intScrollerLowerBound = 0;
		intScrollerUpperBound = objContainer.clipHeight - objScroller.scrollHeight;
		intSliderTrackHeight = objDownControl.y - 20;
		initialised = true;
	}

	function displayStatusMsg(msgStr) {
		status=msgStr;
		document.returnValue = true;
	}

	function swapImgRestore() {
		var i,x,a=document.sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
	}

	function findObj(n, d) {
		var p,i,x;
		if (!d) d=document;
		if ((p=n.indexOf("?"))>0&&parent.frames.length) {
			d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);
		}
		if (!(x=d[n])&&d.all) x=d.all[n];
		for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
		for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=findObj(n,d.layers[i].document);
		return x;
	}

	function swapImage() {
		var i,j=0,x,a=swapImage.arguments; document.sr=new Array; for(i=0;i<(a.length-2);i+=3)
		 if ((x=findObj(a[i]))!=null) {document.sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
	}

	function slideContent(intSCLeft,intSCChange) {
		objContainerMargins =new ConstructObject('divContainerMargins');
		objContainerBackground =new ConstructObject('divContainerBackground');
		if (((intSCChange < 0) && (intSCLeft >= scrollerPosLeft)) || ((intSCChange > 0) && (intSCLeft <= 780))) {
			objContainerMargins.css.left = intSCLeft;
			objContainerBackground.css.clip='rect(' + scrollTopClip + 'px ' + (scrollerWidth + intSCLeft - scrollerPosLeft + scrollHorizClip) + 'px ' + scrollBottomClip + 'px ' + (intSCLeft - scrollerPosLeft + scrollHorizClip) + 'px)';
			//alert('intSCLeft='+intSCLeft+'; scrollerPosLeft='+scrollerPosLeft+'; scrollerWidth='+scrollerWidth+'; rect(10px ' + (scrollerWidth + intSCLeft - scrollerPosLeft) + 'px 435px ' + (intSCLeft - scrollerPosLeft) + 'px)');
			setTimeout('slideContent(' + (intSCLeft+intSCChange) + ',' + intSCChange + ');', 5);
		} else {
			if (intSCLeft >= 780){
				objContainerBackground.css.visibility="hidden";
				objContainerMargins.css.visibility="hidden";
			}
		}
	}

	function ShowScrollingArea(src) {
		objContainerBackground.css.visibility="visible";
		objContainerMargins.css.visibility="visible";
		objOpener = new ConstructObject('divOpenControl');
		objOpener.css.visibility = 'hidden';
		document.cookie = "FNAcookie=ScrollAreaVis:visible";
		slideContent(780,-10);
	}

	function HideScrollingArea() {
		objOpener = new ConstructObject('divOpenControl');
		objOpener.css.visibility = 'visible';
		document.cookie = "FNAcookie=ScrollAreaVis:hidden";
		slideContent(scrollerPosLeft,10);
	}

	function ShowAdvancedSearch(src) {
		objAdvancedSearch = new ConstructObject('divAdvancedSearch');
		if (objAdvancedSearch.css.visibility == 'visible') {
			objAdvancedSearch.css.visibility = 'hidden'
			document.cookie = "FNAcookie=AdvancedSearch:hidden";
		} else {
			objAdvancedSearch.css.visibility = 'visible'
			document.cookie = "FNAcookie=AdvancedSearch:visible";
		}
	}

	function readTheCookie(name) {
		if (document.cookie == '') {
			return false;
		} else {
			var firstChar, lastChar;
			var theBigCookie = document.cookie;
			firstChar = theBigCookie.indexOf(name);
			// find the start of 'name'
			if (firstChar != -1) {
				firstChar += name.length + 1;    
				// skip 'name' and '='
				lastChar = theBigCookie.indexOf(';', firstChar);
				// Find the end of the value string (i.e. the next ';').
				if(lastChar == -1) lastChar = theBigCookie.length;
				return unescape(theBigCookie.substring(firstChar, lastChar));
			} else {
				return false;
			}
  	}
	}

	function reloadPage(init) {	//reloads the window if Nav4 resized
		if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
			document.pgW=innerWidth; document.pgH=innerHeight; onresize=reloadPage; }}
		else if (innerWidth!=document.pgW || innerHeight!=document.pgH) location.reload();
	}

	ConstructObject.prototype.drag = function(obj){
	  if(bw.ns4){
	    document.captureEvents(Event.MOUSEMOVE|Event.MOUSEDOWN|Event.MOUSEUP)
	  }
	  document.onmousemove=DragAreaMove;
	  document.onmousedown=lib_dd_down
	  document.onmouseup=lib_dd_up
	
	  this.evnt.onmouseover=new Function("lib_dd_over("+this.obj+")")
	  this.evnt.onmouseout=new Function("dd_mobj=0")
	  if(obj) this.ddobj=obj
	}

	function DragAreaMove(e,y,rresize){
		var ScrollerMove;

	  x=(bw.ns4 || bw.ns6)?e.pageX:event.x||event.clientX
	  y=(bw.ns4 || bw.ns6)?e.pageY:event.y||event.clientY
	  if(dd_obj){
			ny=y-dd_obj.clY;
			
			if(ny < (scrollbarButtonHeight + scrollbarButtonSpace)) {
				ny = scrollbarButtonHeight + scrollbarButtonSpace;
				ScrollerMove = intScrollerLowerBound;
			}else if( (parseInt(objSlider.css.height) + ny) >= objDownControl.y - 5) {
				ny = objDownControl.y - (parseInt(objSlider.css.height) + 5);
				ScrollerMove = intScrollerUpperBound;
				t = 0;
			}else {
			ScrollerMove = -((ny - scrollbarButtonHeight - scrollbarButtonSpace)) * objScroller.scrollHeight / (intSliderTrackHeight);
				objScroller.MoveArea("", ScrollerMove);
	    		if(dd_obj.ddobj) dd_obj.ddobj.MoveArea("",ny)
	    		else dd_obj.MoveArea("",ny)
			}
	  }
	  if(!bw.ns4) return false
	}

	function lib_dd(){
	  if(bw.ns4){
	    document.captureEvents(Event.MOUSEMOVE|Event.MOUSEDOWN|Event.MOUSEUP)
	  }
	  document.onmousemove=lib_dd_move;
	  document.onmousedown=lib_dd_down
	  document.onmouseup=lib_dd_up
	}
	
	ConstructObject.prototype.dragdrop = function(obj){
		lib_dd()
	  this.evnt.onmouseover=new Function("lib_dd_over("+this.obj+")")
	  this.evnt.onmouseout=new Function("dd_mobj=0")
	  if(obj) this.ddobj=obj
	}
	
	//Drag drop event functions
	function lib_dd_over(obj){dd_mobj=obj}
	function lib_dd_up(e){dd_obj=0; if(bw.ns4) routeEvent(e)}
	function lib_dd_down(e){ //Mousedown
	  if(dd_mobj){
	    x=(bw.ns4 || bw.ns6)?e.pageX:event.x||event.clientX
	    y=(bw.ns4 || bw.ns6)?e.pageY:event.y||event.clientY
	    dd_obj=dd_mobj
	    dd_obj.clX=x-dd_obj.x; 
	    dd_obj.clY=y-dd_obj.y
	  }
	  if(bw.ns4) routeEvent(e)
	}
	
	function lib_dd_move(e,y,rresize){ //Mousemove
	  x=(bw.ns4 || bw.ns6)?e.pageX:event.x||event.clientX
	  y=(bw.ns4 || bw.ns6)?e.pageY:event.y||event.clientY
	  if(dd_obj){
	    nx=x-dd_obj.clX; ny=y-dd_obj.clY
	    if(dd_obj.ddobj) dd_obj.ddobj.MoveArea("",ny)
	    else dd_obj.MoveArea("",ny)
	  }
	  if(!bw.ns4) return false      
	}

	reloadPage(true);
