// Set up Event Listener - the script that allows us to use the addEvent call below
var test__hideList = false;
var test1__hideList = false;
var test2__hideList = false;

function addEvent(elm, evType, fn, useCapture) {
	if (elm.addEventListener) {
	elm.addEventListener(evType, fn, useCapture);
	return true;
	} else if (elm.attachEvent) {
	var r = elm.attachEvent('on' + evType, fn);
	return r;
	} else {
	elm['on' + evType] = fn;
	}
}

// tabs function
function showDbmTabs(id){
	var tabCont = document.getElementById("tPoolTabsContainer");
	var tabs = document.getElementById("tPoolTabs");
	for(var i=0;i<tabCont.childNodes.length;i++)
		if(tabCont.childNodes[i]&&tabCont.childNodes[i].style)
			tabCont.childNodes[i].style.display = "none";
	for(var i=0;i<(tabs.childNodes.length);i++)
		if(tabs.childNodes[i]&&tabs.childNodes[i].style&&tabs.childNodes[i].tagName=="DIV") {
			tabs.childNodes[i].className = "activeIn";
			tabs.childNodes[i].childNodes[0].className = "leftImg";
			document.getElementById("tabCont"+id).style.display = "block";
			document.getElementById("tab"+id).className = "active";
			//document.getElementById("_tImg"+id).src = "images/tPoolTabs_active_left.jpg";
			document.getElementById("_tImg"+id).className = "leftImgActive";
		}
}
// tabs search function
function showSTabs(id){
	var tabs = document.getElementById("tSearchTabs");
	for(var i=0;i<(tabs.childNodes.length);i++)
		if(tabs.childNodes[i]&&tabs.childNodes[i].style&&tabs.childNodes[i].tagName=="DIV") {
			tabs.childNodes[i].className = "";
			document.getElementById("tabS"+id).className = "active";
		}
}
function makeFloatRight(){
	var divs = document.body.getElementsByTagName("DIV");
	for(var i=0;i<divs.length;i++){
		if(divs[i].className=="aThemeDouble" || divs[i].className=="aThemeNDouble" || divs[i].className=="aThemeHDouble"){
			//if(divs[i].parentNode.className=="leftContent"){
				var childDivs = divs[i].childNodes;
				var counter1 = 0;
				for(var j=0;j<childDivs.length;j++){
					if(childDivs[j].tagName && childDivs[j].tagName=="DIV" && (childDivs[j].className=="aThemeBig" || childDivs[j].className=="aThemeSimple")){
						counter1++;
						if(counter1%2==0){
							childDivs[j].style.styleFloat="right";
							childDivs[j].style.cssFloat="right";
						}
						// Let's determine the maximum height out of all columns specified
						//if(counter1%2!=0) {
						var maxHeight = 0;
						for (var y=0; y<childDivs.length; y++) {
								if (childDivs[y].offsetHeight > maxHeight) maxHeight = childDivs[y].offsetHeight;
							}
	
						// Let's set all columns to that maximum height
						for (var y = 0; y < childDivs.length; y++) {
							//alert(maxHeight);
							childDivs[j].style.height = maxHeight + 'px';
		
							// Now, if the browser's in standards-compliant mode, the height property
							// sets the height excluding padding, so we figure the padding out by subtracting the
							// old maxHeight from the new offsetHeight, and compensate!  So it works in Safari AND in IE 5.x
							if (childDivs[j].offsetHeight > maxHeight) {
								childDivs[j].style.height = (maxHeight - (childDivs[j].offsetHeight - maxHeight)) + 'px';
							}
						}
						//}
						//childDivs[j].style.width=divs[i].parentNode.offsetWidth/2-5+"px";

						/*if((counter1%2-1)==0){
							childDivs[j].style.clear="both";
						}*/
					}
				}
		//}
		}
	}
}
function JSTextAnimation(){

  this.textString = "";
  this.container = null;
  this.timeout = 0;
  this.timer = null;
  this.charNum = 0;  

  this.startAnimation = function(txt,container,timeout){
  this.textString = txt;
    this.container = (typeof container=="string")?document.getElementById(container):container;
    this.timeout = timeout;
		this.animateText();
  }
  
  this.stopAnimation = function(){
  	if(this.timer) window.clearTimeout(this.timer);
  }
  
  function animateText(){
  	if(TextAnimation.charNum>TextAnimation.textString.length){
        TextAnimation.container.innerHTML = TextAnimation.container.innerHTML.replace(/_$/g,"");
    	TextAnimation.stopAnimation();
      return false;
    }
    TextAnimation.container.innerHTML = TextAnimation.textString.substr(0,TextAnimation.charNum)+"_";
    TextAnimation.charNum++;
    window.setTimeout(TextAnimation.animateText,TextAnimation.timeout);
  }
  this.animateText = animateText;
} 
var TextAnimation = new JSTextAnimation();

function typeText() {
	var analyseTitle = document.getElementById('analyseTitle');
	if(analyseTitle){
		var analyseLink = document.getElementById('analyseLink');      
		if(analyseLink){
				TextAnimation.startAnimation(analyseTitle.innerHTML,'analyseLink',100);
		}
	}
}

function reageren() {
	rPopup = window;
	rPopup.open("reageren.html","","toolbar=false,status=false,width=423,height=353");
}
function reagerenH() {
	rPopup = window;
	rPopup.open("hdb-reageren.html","","toolbar=false,status=false,width=423,height=475");
}
function printen() {
	rPopup = window;
	rPopup.open("printen.html","");
}

var __hideList = true;

function cloneList(mainId,className){
  var id = mainId+"_main";
 var list = document.getElementById(id);
 if(!list){
  list = document.getElementById(mainId);
 }
 if(!list) return;
 var clonedList = list.cloneNode(true);
 clonedList.style.display="block";
 clonedList.className=className;
 clonedList.id = mainId;
 var divContainer = document.getElementById("_listContainer"+mainId);
 if(!divContainer){
  divContainer = createDivContainer(id);
 }
 divContainer.appendChild(clonedList);
 if(list.id.indexOf("_main")==-1) list.id+="_main";
 list.className="";
 list.style.display="none";
}

//cloneList("test","twoColums");

function divideUls(mainId){
  var c = 0;
  var container = mainId?document.getElementById(mainId).parentNode:document.body;
  var uls = container.getElementsByTagName("UL");
  for(var i=0;i<uls.length;i++){
   if(uls[i].className=="twoColums" && uls[i].id.indexOf(String("__dividedUL_"+c))!=0){
    c++;
    divideList(uls[i],2,String("__dividedUL_"+(mainId||"_")+c));
   }
  }
}

function divideList(parentId,n,prefix){
 var counter=1;
 var tag=(typeof parentId=="object")?parentId:document.getElementById(parentId);
 var ch = getChildren(tag);
 if(tag.tagName=="DL") assignSubChildren(ch);
 for(var x=n;x>1;x--){
  var arrA = getChildren(tag);
  var newTag = document.createElement(tag.tagName);
  newTag.className = tag.className+"1";
  var dividedListnum = Math.ceil(arrA.length/x);
  newTag.id = prefix+counter;
  if(tag.nextSibling) tag.parentNode.insertBefore(newTag,tag.nextSibling);
  else tag.parentNode.appendChild(newTag);
  for(i=dividedListnum;i<arrA.length;i++){
   var newChild = arrA[i].cloneNode(true);
   appendNewChild(newTag.id,newChild);
  }
  for(var j=arrA.length-1;j>=dividedListnum;j--){
   if(arrA[j].removeNode) arrA[j].removeNode(true);
   else if(arrA[j].parentNode.removeChild) arrA[j].parentNode.removeChild(arrA[j]);
  }
  tag = document.getElementById(newTag.id);
  counter++;
 }
 if(tag.tagName=="DL") appendSubChildren(n,prefix);
}

function getChildren(o){
 if(o.tagName=="UL") return o.getElementsByTagName("LI");
 else if(o.tagName=="DL") return o.getElementsByTagName("DT");
}

function assignSubChildren(dtArr){
  var resArr = [];
  for(var i=0;i<dtArr.length;i++){
   var ddArr = [];
   dtArr[i].setAttribute("__index__",String(i))
   var dd = dtArr[i].nextSibling;
   while(dd){
    if(dd.tagName){
     ddArr[ddArr.length] = dd;
    }
    dd = dd.nextSibling;
    if(dd && dd.tagName && dd.tagName=="DT") break;
   }
   resArr[resArr.length] = [String(i),ddArr];
  }
  window.tempNodesArray = resArr;
}

function appendNewChild(newTagId,o){
 if(o.tagName=="LI") document.getElementById(newTagId).appendChild(o);
 else if(o.tagName=="DT"){
  document.getElementById(newTagId).appendChild(o);
 }
}

function appendSubChildren(n,prefix){
 for(var z=1;z<n;z++){
  var dl = document.getElementById(prefix+z);
  var dtChildren = dl.getElementsByTagName("DT");
  for(var v=0;v<dtChildren.length;v++){
   for(var i=0;i<window.tempNodesArray.length;i++){
    if(window.tempNodesArray[i][0]==dtChildren[v].getAttribute("__index__")){
     for(var j=0;j<window.tempNodesArray[i][1].length;j++){
      var cloneDD = window.tempNodesArray[i][1][j].cloneNode(true);
      if(window.tempNodesArray[i][1][j].removeNode) window.tempNodesArray[i][1][j].removeNode(true);
      else if(window.tempNodesArray[i][1][j].parentNode.removeChild) window.tempNodesArray[i][1][j].parentNode.removeChild(window.tempNodesArray[i][1][j]);
      if(dtChildren[v+1]){
       dl.insertBefore(cloneDD,dtChildren[v+1]);
      }else{
       dl.appendChild(cloneDD);
      }
     }
     break;
    }
   }
  }
 }
}

/**
  * @param mainId String Id of main list
  * @param num Number Number of visible items
  * @param toggle Boolean Specifies if list must be hided or showed
  * @param btn Object Button object
  */

function toggleColumns(mainId, num, hideItems, generateClass, btn) {
 var tmp = [];
 var divContainer = document.getElementById("_listContainer"+mainId);
 if(!divContainer){
  divContainer = createDivContainer(mainId);
 }
 if(!num){
  alert("Number of visible items not set.");
  return;
 }
 divContainer.innerHTML="";
 cloneList(mainId,"twoColums");
 if(hideItems){
  var items = divContainer.firstChild.getElementsByTagName("li");
  for(var i=num;i<items.length;i++){
   tmp[tmp.length] = items[i];
  }
  for(var i=0;i<tmp.length;i++){
   var item = tmp[i];
   if(item.removeNode) item.removeNode(true);
   else if(item.parentNode.removeChild) item.parentNode.removeChild(item);
  }
  if(btn){
   btn.innerHTML="bekijk alle trefwoorden<img src='images/trefwoorden_open.gif' alt='bekijk alle trefwoorden' />";
  }
  eval(mainId+"__hideList = false");
 }else{
  if(btn){
   btn.innerHTML="lijst inklappen<img src='images/trefwoorden_close.gif' alt='lijst inklappen' />";
  }
  eval(mainId+"__hideList = true");
 }
 divideUls(mainId);
 
 //divideList(mainId,2,"__dividedUL_"+mainId)
}

function createDivContainer(mainId){
 var list = document.getElementById(mainId);
 var divContainer = document.createElement("div");
 divContainer.id = "_listContainer"+mainId;
 list.parentNode.insertBefore(divContainer, list);
 return divContainer;
}


//addEvent(window, 'load', typeText, false);
addEvent(window, 'load', typeText, false);
addEvent(window, 'load', makeFloatRight, false);
//addEvent(window, 'resize', makeFloatRight, false);

function addHintByClassName(className){
	var o, i, d=document;
	var all = (d.all) ? d.all : d.getElementsByTagName("*");
	for(i=0;i<all.length;i++){
		o=all[i];
		if(o.className==className) {          
			if(o.firstChild && o.firstChild.className=="layerP"){
				o.onmouseover=function(){
					if(addHintByClassName.current)addHintByClassName.current.firstChild.style.display="none";
					this.firstChild.style.display="block";
					addHintByClassName.current=this;
					this.firstChild.onmousemove=function(e){
						addHintByClassName.donotHide=true;
					};
					this.firstChild.onmouseout=function(e){
						addHintByClassName.donotHide=!true;
						setTimeout("addHintByClassName.hide("+this.key+")", 1000);
					};
				};
				o.onmouseout=function(e){
					var key = new Date().getTime();
					
					if(!addHintByClassName.active) addHintByClassName.active=[];
					addHintByClassName.active[key] = this;
					this.firstChild.key=key;
					
					addHintByClassName.hide=function(k){
						if(!addHintByClassName.donotHide) {
							addHintByClassName.active[k].firstChild.style.display='none';
						}
					};
					
					setTimeout("addHintByClassName.hide("+key+")", 1000);
				};
			}
		}
	}
}

var foo=function(){
	addHintByClassName("hint");
};

function hintLocation(btn) {
document.location = btn.value;
}

if(window.attachEvent)window.attachEvent("onload", foo);
else if(window.addEventListener)window.addEventListener("load", foo, false);



	function buildTop10(top10Container) {
	var doc =document;
	var divs = doc.getElementsByTagName("DIV");
	for (var d = 0; d < divs.length; d++) { 
		if (divs[d].className == top10Container) {
			var top10List = divs[d].getElementsByTagName("OL");
			for (var i = 0; i < top10List.length; i++){
			var top10ListItem = top10List[i].childNodes;
				for (var j = 0; j <top10ListItem.length; j++) {
				top10ListItem[j].innerHTML = '<div>'+String(j+1)+'</div>'+ top10ListItem[j].innerHTML;
				}
			}
		}
		}
	}
	buildTop10('top10');

function GoGoGo(listClass) {
	var d =document;
	var divs = d.getElementsByTagName("DIV");
	for (var n = 0; n < divs.length; n++) 
		if (divs[n].className == listClass){

			var OLs = divs[n].getElementsByTagName("OL");
			for (var j = 0; j < OLs.length; j++) {
				LetsDoIt(OLs[j]);
			}

			ULs = document.getElementsByTagName("UL");
			for ( j = 0; j < ULs.length; j++ ) {
				ULs[j].innerHTML = ULs[j].innerHTML.replace(/<li>((\d+\. )*)/gi, "<li>");
			}
		}
	}

function LetsDoIt(element) {
	var undefined='';
	element.style.listStyleType = 'none';
	oM = element.childNodes.length;
	var k = 0;
	for ( i = 0; i < oM; i++ ) {
		var oLI = element.childNodes[i];
		if ( oLI.tagName ){
			k++;
			oLI.innerHTML = k + '. ' + oLI.innerHTML;
			oLI.innerHTML = oLI.innerHTML.replace(/((\d+\. )(\d+\. )*)/, "$1$2");
			oLI.innerHTML = oLI.innerHTML.replace(/\d+\. /, '');
		}
		if ( oLI.tagName && oLI.innerHTML!=undefined ){
			oLI.innerHTML = oLI.innerHTML.replace(/<li>((\d+\. )*)/gi, "<li>$1" + k + '. ');
		}
	}
}
GoGoGo('buildOList');


function ImageViewer() {
  this.timer=null;
  this.active=null;

  
  this.templates=[];
  this.setTemplate=function(str,id){
    this.templates[this.templates.length]={id:id,str:str};
  };
  
  this.show=function(a,src){
    var cache=ImageViewer.cache(src);
    var div=this.previewer;
    if(div){
      var img=div.firstChild;
      var span=div.lastChild;
      if(img&&span){
        if(this.active)this.active.className="";
        this.active=a;
        this.active.className="active";
        span.style.display="none";
        img.style.display="block";
        if (window.opera) {// se: nothing clever :(
          img.style.display="inline";
        } else {
          img.onload=function(e){
            img.style.display="inline";
          }
        } 
        img.src=cache.src;
        img.title=(a.title)?a.title:(a.alt)?a.alt:"";
		/* Extra eruit gehaald  */
          if (cache.width >= 360) {
			img.width = 360;
			img.height = cache.height/(cache.width/360);
          }
          else {
			img.width = cache.width;
       	    img.height = cache.height;
          } 
		/*
        if ((cache.width/4 >= cache.height/3) && (cache.height/4 != cache.width/3) && (cache.height/4 < cache.width/3)) {
          if (cache.width<360) {
        	  img.width = cache.width;
       	          img.height = cache.height;
          } 
          if (cache.width >= 360) {
                  img.width = 360;
		  img.height = cache.height/(cache.width/360);
          }
	} 
        if ((cache.height/4 >= cache.width/3) && (cache.width/4 != cache.height/3) && (cache.width/4 <cache.height/3)) {
          if (cache.height<270) {
        	  img.height = cache.height;
	 	  img.width = cache.width;
          } 
          if (cache.height >= 270) {
                  img.height = 270;
		  img.width = cache.width/(cache.height/270);
          }
	}
	if ((cache.width >= cache.height) && (cache.height/3 >= cache.width/4)) {
	  if (cache.height<270) {
        	  img.height = cache.height;
	 	  img.width = cache.width;
          } 
          if (cache.height >= 270) {
                  img.height = 270;
		  img.width = cache.width/(cache.height/270);
          }
	}
	if ((cache.width <= cache.height) && (cache.height/3 <= cache.width/4)) {
          if (cache.width<360) {
        	  img.width = cache.width;
       	          img.height = cache.height;
          } 
          if (cache.width >= 360) {
                  img.width = 360;
		  img.height = cache.height/(cache.width/360);
          }
	}
          */
        this.parseTemplates();
      }
    } else {// se added
      setTimeout(function(){viewer.show(a,src)},200);
    }
    return false;
  };

  this.getImagePath=function(){
    var path="";
    var div=this.previewer;
    if(div){
      var img=div.firstChild;
      if(img){
        /*
        path=img.src.split("/");
        path=path[path.length-1];
        */
        img.galleryImg=false;
        path=(img.title!="")?img.title:img.alt;
      }
    }
    return path;
  };
  
  this.getCurrentImageIndex=function(){
    if(this.thumbnail){
      var pos=0;
			var firstItem=document.getElementById("fIt");
      var layer = Scrollbar.getFirstChild(this.thumbnail);
      if(layer){
        for(i=0;i<layer.childNodes.length;i++){
          a=layer.childNodes[i];
          if(a.tagName=="A"){ //se fix
	    for(j=0;j<a.firstChild.childNodes.length;j++) {
	      if(a.firstChild.childNodes[j].tagName=="IMG") {
            pos++;
            if(a==this.active){
							if(pos==1){firstItem.style.display="block"}else{firstItem.style.display="none"}
							return pos;
			
	  						}
	      }			
	    }
          }
        }
      }
    }
    return 1;
  };

  this.getCurrentImageInfo=function(){
    if(this.thumbnail){
			var pos=0;
      var info="a";
      var layer = Scrollbar.getFirstChild(this.thumbnail);
      if(layer){
        for(i=0;i<layer.childNodes.length;i++){
          a=layer.childNodes[i];
          if(a.tagName=="A"){ //se fix
            pos++;
            if(a==this.active){
							for(y=0;y<a.firstChild.childNodes.length;y++){
								if(a.firstChild.childNodes[y].tagName == "SPAN"){
									return a.firstChild.childNodes[y].innerHTML;

				}
}
}				}
		
          }
      }
    }
    return "";
  };

  this.getImagesCount=function(){

    var total=0;

    if(this.thumbnail){
      var i,layer = Scrollbar.getFirstChild(this.thumbnail);
      if(layer){
	for(i=0;i<layer.childNodes.length;i++) {
          a=layer.childNodes[i];
	  if (a&&a.tagName=="A") { 
        for(j=0;j<a.firstChild.childNodes.length;j++) {
	      if(a.firstChild.childNodes[j].tagName=="IMG") {
	      total++;
	}
	}
	  }	  
        }
      }
    }
    return total;

        
  };
  
  this.init=function(id){
    this.previewer=document.getElementById(id);
    if(!this.previewer){
      var viewer=this;
      EventUtil.add(window,"load",function(){viewer.init(id)},false);
    }else{
      this.parseTemplates();
    }
  };
  
  this.parseTemplates=function(){
    for(var i=0;i<this.templates.length;i++){
      var tpl=this.templates[i];
      var obj=document.getElementById(tpl.id);
      if(obj){
        var str=tpl.str;
        str = str.replace(/\{current\}/g,this.getCurrentImageIndex());
        str = str.replace(/\{total\}/g,this.getImagesCount());
        str = str.replace(/\{fileName\}/g,this.getImagePath());
				str = str.replace(/\{info\}/g,this.getCurrentImageInfo());
        obj.innerHTML=str;
      }
    }
  };
  
  this.resize=function(id){
    this.thumbnail=document.getElementById(id);
    if(this.thumbnail){
      var w,a,i,layer = Scrollbar.getFirstChild(this.thumbnail);
      if(layer){
        w=0;
        for(i=0;i<layer.childNodes.length;i++){
          a=layer.childNodes[i];
          if(a&&a.tagName=="A"){
            w+=a.offsetWidth;
            if(a.className=="active"){
              this.active=a;
            }
          }
        }
        w+=4;
      }
      layer.style.width=w+"px";
      Scrollbar.create(id);
      this.parseTemplates();
      
      if(this.active){
        this.scrollIntoView();
      }
      
    }else{
      var viewer=this;
      EventUtil.add(window,"load",function(){viewer.resize(id)},false);
    }
  };
  
  this.scrollIntoView=function(){
    var o,s=Scrollbar;
    var id=this.thumbnail.id;
    o=s.map[id];
    //alert(this.active.offsetLeft);
    if(o) {
      var viewer=this;
      s.initScroll(id,"right",Scrollbar.speed);
      var foo = function(){
        if(viewer.active.offsetLeft <= (o.lyr.offsetLeft*-1)+2){
          s.stopScroll(id);
          //o.startScroll(Scrollbar.speed);
          s.stopScroll(id);
          var a=viewer.active;
          if(a.click)a.click();
          else if(a.onclick)a.onclick();
        }else{
          setTimeout(foo,5);
        }
      };
      foo();
    }
  };
  
  var a=arguments;
  if(a[0])this.init(a[0]);
  if(a[1])this.resize(a[1]);
}

ImageViewer.step = 10;
ImageViewer.timeout = 5;

ImageViewer.cache=function(src){
  if(!ImageViewer.images)ImageViewer.images={};
  var i,a=arguments;
  for(i=0;i<a.length;i++) {
    src=a[i];
    if(!ImageViewer.images[src]){
      ImageViewer.images[src]=new Image();
      ImageViewer.images[src].src=src;
    }
  }
  return ImageViewer.images[src];
};

ImageViewer.slowDisplay=function(maxWidth,img,viewer){
  try {
	  if(!ImageViewer.stack)ImageViewer.stack={};
	  if(typeof img=="string")img=ImageViewer.stack[img].image;
	  else if(img.tagName=="IMG")ImageViewer.stack[img.src]={image:img,viewer:viewer};
  
    if(ImageViewer.stack[img.src].viewer.timer) {
      clearTimeout(ImageViewer.stack[img.src].viewer.timer)
    }
	  var ie_opacity = (window.VBArray)?parseInt(img.style.filter.match(/(\d)+/)):null;
	  var moz_opacity = parseFloat(img.style.MozOpacity);
	  var opacity = parseFloat(img.style.opacity);
	  if(img){
	    var timeout = ImageViewer.timeout;
	    if(ie_opacity && ie_opacity<100){
	      img.style.filter="Alpha(opacity="+(ie_opacity+10)+")";
	      timeout += 25;
	      ImageViewer.stack[img.src].viewer.timer=setTimeout("ImageViewer.slowDisplay("+maxWidth+",'"+img.src+"')",timeout);
	    } else if(moz_opacity<1&&!window.opera){
	      img.style.MozOpacity=moz_opacity+0.1;
	      timeout += 15;
	      ImageViewer.stack[img.src].viewer.timer=setTimeout("ImageViewer.slowDisplay("+maxWidth+",'"+img.src+"')",timeout);
	    } else if(opacity<1){
	      img.style.opacity=opacity+0.1;
	      timeout-=10;
	      ImageViewer.stack[img.src].viewer.timer=setTimeout("ImageViewer.slowDisplay("+maxWidth+",'"+img.src+"')",timeout);
	    }
	  }
  }
  catch(e) {

  };
}
ImageViewer.slowResize=function(maxWidth,img,viewer) {
  if(!ImageViewer.stack)ImageViewer.stack={};
  if(typeof img=="string")img=ImageViewer.stack[img].image;
  else if(img.tagName=="IMG")ImageViewer.stack[img.src]={image:img,viewer:viewer};
  
  clearTimeout(ImageViewer.stack[img.src].viewer.timer);
  if(img&&img.offsetWidth<=maxWidth){
    img.style.width=img.offsetWidth+ImageViewer.step+"px";
    ImageViewer.stack[img.src].viewer.timer=setTimeout("ImageViewer.slowResize("+maxWidth+",'"+img.src+"')",ImageViewer.timeout);
  }
};

var Scrollbar={
  speed:200,
  map:{},
  //c=container;t=track;l=layer;f=face;
  bind:function(c,t){
    var h=function(){
      Scrollbar.create(c,t);
    }
    if(window.attachEvent)window.attachEvent("onload",h);
    else window.addEventListener("load",h,false)
  },
  create:function(c,t){
    var l,f,o,s=Scrollbar;o=s.getObject(c);
    if(o){
      l=s.getFirstChild(o);
      if(l){
        c=new Scroller(c,l);
        t=s.getObject(t);
        if(t){
          f=s.getFirstChild(t);
          if(f)c.setUpScrollbar(f,t,"v",1,1)
        }
        s.__fix__(c)
      }
    }
  },
  //a=arrow;w=div;d=direction;s=Scrollbar;
  bindArrow:function(a,w,d){
    a=this.getObject(a);
    if(a){
      var s=Scrollbar;
      var o=Scrollbar.map[w];
      if(o){
        if(!o.arrows)o.arrows={};
        o.arrows[d]=a;
      }
      function over(){
        if(o){
          if(d=="left"){var b=o.arrows["right"];if(b)b.className=""}
          else if(d=="right"){var b=o.arrows["left"];if(b)b.className=""}
          else if(d=="up"){var b=o.arrows["down"];if(b)b.className=""}
          else if(d=="down"){var b=o.arrows["up"];if(b)b.className=""}
        }
        s.initScroll(w,d);
      }
      over();
      a.onmouseover=function(){over()};
      a.onmouseout=function(){s.stopScroll(w)};
      a.onmousedown=function(){s.doubleSpeed(w)};
      a.onmouseup=function(){s.resetSpeed(w)};
      a.onclick=function(){return false}
    }
  },
  getFirstChild:function(o){o=o.firstChild;if(o.nodeType!=1)o=this.getNextSibling(o);return o},
  getNextSibling:function(o){o=o.nextSibling;while(o.nodeType!=1)o=o.nextSibling;return o},
  getObject:function(o){if(typeof o=="string") o=document.getElementById(o);return o},
  init:function(){try{document.execCommand("BackgroundImageCache",false,true)}catch(e){}},
  stopScroll:function(w){var o=Scrollbar.map[w];if(o)o.endScroll()},
  doubleSpeed:function(w){var o=Scrollbar.map[w];if(o)o.speed*=2},
  resetSpeed:function(w){var o=Scrollbar.map[w];if(o)o.speed/=2},
  initScroll:function(w,d,sp){
    var a,s,c,o=Scrollbar.map[w];
    if(o){
      if(typeof d=="string"){ switch(d){case "up":d=90;break;case "down":d=270;break;case "left":d=180;break;case "right":d=0;break}}
      d=d%360;
      if(d%90==0){c=(d==0)?-1:(d==180)?1:0;s=(d==90)?1:(d==270)?-1:0}
      else{a=d*Math.PI/180;c=-Math.cos(a);s=Math.sin(a)}
      o.fx=c/(Math.abs(c)+Math.abs(s));
      o.fy=s/(Math.abs(c)+Math.abs(s));
      o.endX=(d==90||d==270)?o.x:(d<90||d>270)?-o.maxX:0;o.endY=(d==0||d==180)?o.y:(d<180)?0:-o.maxY;
      o.startScroll(sp)
    }
  },
  getWndoLyrRef:function(){this.wnLyr=Scrollbar.getObject(this.wn.layer)},
  tossWndoLyrRef:function(){this.wnLyr=null},
  __pos__:function(x,y){var nx,ny;if(this.axis=="v"){nx=this.wn.x;ny=-(y-this.minY)*(this.wn.maxY/(this.maxY-this.minY))||0}else{ny=this.wn.y;nx=-(x-this.minX)*(this.wn.maxX/(this.maxX-this.minX))||0}this.wn.shiftTo(this.wnLyr,nx,ny)},
  __fix__:function(){var s,ua=navigator.userAgent;s=Scrollbar;if(ua.indexOf("Gecko")>-1&&ua.indexOf("Firefox")==-1&&ua.indexOf("Safari")==-1&&ua.indexOf("Konqueror")==-1){s.hold=[];for(var i=0;arguments[i];i++){if(s.map[arguments[i]]){var wndo=s.getObject(arguments[i]);var holderId=wndo.parentNode.id;var holder=s.getObject(holderId);document.body.appendChild(holder.removeChild(wndo));wndo.style.zIndex=1000;var pos=s.getPageOffsets(holder);wndo.style.left=pos.x+"px";wndo.style.top=pos.y+"px";s.hold[i]=[arguments[i],holderId]}}window.addEventListener("resize",s.rePositionGecko,true)}},
  rePositionGecko:function(){var p,h,i,w,s=Scrollbar;if(s.hold){for(i=0;s.hold[i];i++){w=s.getObject(s.hold[i][0]);h=s.getObject(s.hold[i][1]);p=s.getPageOffsets(h);with(w.style){left=p.x+"px";top=p.y+"px"}}}},
  getPageOffsets:function(e){var t,l=e.offsetLeft;t=e.offsetTop;if(e.offsetParent&&e.offsetParent.clientLeft||e.offsetParent.clientTop){l+=e.offsetParent.clientLeft;t+=e.offsetParent.clientTop}while(e=e.offsetParent){l+=e.offsetLeft;t+=e.offsetTop}return{x:l,y:t}}
};
Scrollbar.init();
function Scroller(win,layer) {
    this.id=win;
    Scrollbar.map[this.id]=this;
    this.animString="Scrollbar.map."+this.id;
    this.load=function(layer){if(this.layer){layer=Scrollbar.getObject(this.layer);layer.style.visibility="hidden"}layer=Scrollbar.getObject(layer);var win=Scrollbar.getObject(this.id);layer.style.top=this.y=0;layer.style.left=this.x=0;this.maxY=(layer.offsetHeight-win.offsetHeight>0)?layer.offsetHeight-win.offsetHeight:0;this.wd=layer.offsetWidth;this.maxX=(this.wd-win.offsetWidth>0)?this.wd-win.offsetWidth:0;this.layer=layer;layer.style.visibility="visible";this.onload();this.ready=true};
    this.shiftTo=function(layer,x,y){if(!layer||!layer.style)return;layer.style.left=(this.x=x)+"px";layer.style.top=(this.y=y)+"px"};
    this.startScroll=function(speed){if(!this.ready)return;if(this.timerId)clearInterval(this.timerId);this.speed=speed||Scrollbar.speed;this.lyr=Scrollbar.getObject(this.layer);this.lastTime=(new Date()).getTime();this.on_scroll_start();this.timerId=setInterval(this.animString+".scroll()",10)};
    this.scroll=function(){
      var now=(new Date()).getTime();
      var y,x,d=(now-this.lastTime)/1000*this.speed;
      if(d>0){
      x=this.x+this.fx*d;y=this.y+this.fy*d;
      if(this.fx==0||this.fy==0){
        if((this.fx==-1&&x>-this.maxX)||(this.fx==1&&x<0)||(this.fy==-1&&y>-this.maxY)||(this.fy==1&&y<0)){this.lastTime=now;this.shiftTo(this.lyr,x,y);this.on_scroll(x,y)}
        else{clearInterval(this.timerId);this.timerId=0;this.shiftTo(this.lyr,this.endX,this.endY);this.on_scroll_end(this.endX,this.endY)}
      }else{
        if((this.fx<0&&x>=-this.maxX&&this.fy<0&&y>=-this.maxY)||(this.fx>0&&x<=0&&this.fy>0&&y<=0)||(this.fx<0&&x>=-this.maxX&&this.fy>0&&y<=0)||(this.fx>0&&x<=0&&this.fy<0&&y>=-this.maxY)){this.lastTime=now;this.shiftTo(this.lyr,x,y);this.on_scroll(x,y)}
        else{clearInterval(this.timerId);this.timerId=0;this.on_scroll_end(this.x, this.y)}
      }
      }
    };
    this.endScroll=function(){if(!this.ready)return;if(this.timerId)clearInterval(this.timerId);this.timerId=0;this.lyr=null};
    this.bSizeDragBar = false;
    this.setUpScrollbar = function(id, trkId, axis, offx, offy) {
      var bar = Scrollbar.getObject(id);
      var trk = Scrollbar.getObject(trkId);
      Slider.init(bar, trk, axis, offx, offy);
      bar.wn = Scrollbar.map[this.id];
      if (axis == "v") this.vBarId = id;else this.hBarId = id;
      if (this.bSizeDragBar) this.setBarSize();
      bar.on_drag_start = bar.on_slide_start = Scrollbar.getWndoLyrRef;
      bar.on_drag_end =   bar.on_slide_end =   Scrollbar.tossWndoLyrRef;
      bar.on_drag =       bar.on_slide =       Scrollbar.__pos__;
    };
  
    // Keep position of dragBar in sync with position of layer onscroll
    this.updateScrollbar = function(x, y) {
      var nx, ny;
      if ( this.vBarId ) {
      if (!this.maxY) return;
      ny = -( y * ( (this.vbar.maxY - this.vbar.minY) / this.maxY ) - this.vbar.minY );
      ny = Math.min( Math.max(ny, this.vbar.minY), this.vbar.maxY);  
      nx = parseInt(this.vbar.style.left);
      this.vbar.style.left = nx + "px"; this.vbar.style.top = ny + "px";
      } if ( this.hBarId ) {
      if (!this.maxX) return;
      nx = -( x * ( (this.hbar.maxX - this.hbar.minX) / this.maxX ) - this.hbar.minX );
      nx = Math.min( Math.max(nx, this.hbar.minX), this.hbar.maxX);
      ny = parseInt(this.hbar.style.top);
      this.hbar.style.left = nx + "px";
      this.hbar.style.top = ny + "px";
      } 
      
    };

    // Restore dragBar to start position when loading new layer
    this.restoreScrollbars = function() {
      var bar;
      if (this.vBarId) {
      bar = Scrollbar.getObject(this.vBarId);
      bar.style.left = bar.minX + "px"; bar.style.top = bar.minY + "px";
      }
      if (this.hBarId) {
      bar = Scrollbar.getObject(this.hBarId);
      bar.style.left = bar.minX + "px"; bar.style.top = bar.minY + "px";
      }
    };
    
    // Size dragBar in proportion to size of content in layer
    // called on_load of layer if bSizeDragBar prop true
    this.setBarSize = function() {
      var bar;
      var lyr = Scrollbar.getObject(this.layer);
      var wn = Scrollbar.getObject(this.id);
      if (this.vBarId) {
      bar = Scrollbar.getObject(this.vBarId);
      bar.style.height = (lyr.offsetHeight > wn.offsetHeight)? bar.trkHt / ( lyr.offsetHeight / wn.offsetHeight ) + "px": bar.trkHt - 2*bar.minY + "px";
      bar.maxY = bar.trkHt - bar.offsetHeight - bar.minY; 
      }
      if (this.hBarId) {
      bar = Scrollbar.getObject(this.hBarId);
      bar.style.width = (this.wd > wn.offsetWidth)? bar.trkWd / ( this.wd / wn.offsetWidth ) + "px": bar.trkWd - 2*bar.minX + "px";
      bar.maxX = bar.trkWd - bar.offsetWidth - bar.minX; 
      }
    }

    this.on_scroll = function(x,y) { this.updateScrollbar(x,y); };
    this.on_slide = this.on_scroll;
    
    this.on_scroll_start=function(){
      if ( this.vBarId ) this.vbar = Scrollbar.getObject(this.vBarId);
      if ( this.hBarId ) this.hbar = Scrollbar.getObject(this.hBarId);
    };
    this.on_slide_start = this.on_scroll_start;
  
    this.on_scroll_end=function(x, y) { 
      this.updateScrollbar(x,y);
      this.lyr = null;
      this.bar = null;
      
      var dir=(x==0)?"left":"right";
      var a=this.arrows[dir];
      if(a)a.className="disabled";
      
      var dir=(y==0)?"up":"down";
      var a=this.arrows[dir];
      if(a)a.className="disabled";
    };
    this.on_slide_end = this.on_scroll_end;
    
    this.onload=function(){
      this.restoreScrollbars();
      if (this.bSizeDragBar) this.setBarSize();
    };
    
    
    this.load(layer);
  }

Scrollbar.map = {};



var EventUtil={
  add:function(o,e,h,c){if(o.addEventListener)o.addEventListener(e,h,(c||false));else if(o.attachEvent)o.attachEvent("on"+e,h)}, 
  remove:function(o,e,h,c){if(o.removeEventListener)o.removeEventListener(e,h,(c||false));else if(o.detachEvent)o.detachEvent("on"+e,h)}, 
  getEvent:function(e){e=e?e:window.event;e.tgt=e.srcElement?e.srcElement:e.target;if(!e.preventDefault)e.preventDefault=function(){return false};if(!e.stopPropagation)e.stopPropagation=function(){if(window.event)window.event.cancelBubble=true};return e}
}


// model: Aaron Boodman's dom drag at www.youngpup.net
var Slider = {
  obj: null,
  slideDur: 500,  // duration of glide onclick of track  
  init: function (bar, track, axis, x, y) {
    x = x || 0; y = y || 0;
    bar.style.left = x + "px"; bar.style.top = y + "px";
    bar.axis = axis; track.bar = bar;
    if (axis == "h") {
      bar.trkWd = track.offsetWidth; // hold for setBarSize
      bar.maxX = bar.trkWd - bar.offsetWidth - x; 
      bar.minX = x; bar.maxY = y; bar.minY = y;
    } else {
      bar.trkHt = track.offsetHeight;
      bar.maxY = bar.trkHt - bar.offsetHeight - y; 
      bar.maxX = x; bar.minX = x; bar.minY = y;
    }
    bar.on_drag_start =  bar.on_drag =   bar.on_drag_end = 
    bar.on_slide_start = bar.on_slide =  bar.on_slide_end = function() {}
    bar.onmousedown = this.startDrag; track.onmousedown = this.startSlide;
  },
  
  startSlide: function(e) { // called onmousedown of track 
    if ( Slider.aniTimer ) clearInterval(Slider.aniTimer);
    e = e? e: window.event;
    var bar = Slider.obj = this.bar; // i.e., track's bar
    e.offX = (typeof e.layerX != "undefined")? e.layerX: e.offsetX;
    e.offY = (typeof e.layerY != "undefined")? e.layerY: e.offsetY;
    bar.startX = parseInt(bar.style.left); bar.startY = parseInt(bar.style.top);
    if (bar.axis == "v") {
      bar.destX = bar.startX;
      bar.destY = (e.offY < bar.startY)? e.offY: e.offY - bar.offsetHeight;
      bar.destY = Math.min( Math.max(bar.destY, bar.minY), bar.maxY );
    } else {
      bar.destX = (e.offX < bar.startX)? e.offX: e.offX - bar.offsetWidth;
      bar.destX = Math.min( Math.max(bar.destX, bar.minX), bar.maxX );
      bar.destY = bar.startY;
    }
    bar.distX = bar.destX - bar.startX; bar.distY = bar.destY - bar.startY;
    Slider.per = Math.PI/(2 * Slider.slideDur);
    Slider.slideStart = (new Date()).getTime();
    bar.on_slide_start(bar.startX, bar.startY);
    Slider.aniTimer = setInterval("Slider.doSlide()",10);
  },
  
  doSlide: function() {
    if ( !Slider.obj ) { clearInterval(Slider.aniTimer); return; }    
    var bar = Slider.obj;     
    var elapsed = (new Date()).getTime() - this.slideStart;
    if (elapsed < this.slideDur) {
      var x = bar.startX + bar.distX * Math.sin(this.per*elapsed);
      var y = bar.startY + bar.distY * Math.sin(this.per*elapsed);
      bar.style.left = x + "px"; bar.style.top = y + "px";
      bar.on_slide(x, y);
    } else {  // if time's up
      clearInterval(this.aniTimer);
      bar.style.left = bar.destX + "px"; bar.style.top = bar.destY + "px";
      bar.on_slide_end(bar.destX, bar.destY);
      this.obj = null;
    }
  },
  
  startDrag:function(e){
    e=EventUtil.getEvent(e);
    if(Slider.aniTimer)clearInterval(Slider.aniTimer);
    var bar = Slider.obj = this;
    bar.downX = e.clientX; bar.downY = e.clientY;
    bar.startX = parseInt(bar.style.left);
    bar.startY = parseInt(bar.style.top);
    bar.on_drag_start(bar.startX, bar.startY);
    EventUtil.add( document, "mousemove", Slider.doDrag, true );
    EventUtil.add( document, "mouseup",   Slider.endDrag,  true );
    e.stopPropagation();
  },

  doDrag: function (e) {
    e = e? e: window.event;
    if (!Slider.obj) return;
    var bar = Slider.obj; 
    var nx = bar.startX + e.clientX - bar.downX;
    var ny = bar.startY + e.clientY - bar.downY;
    nx = Math.min( Math.max( bar.minX, nx ), bar.maxX);
    ny = Math.min( Math.max( bar.minY, ny ), bar.maxY);
    bar.style.left = nx + "px"; bar.style.top  = ny + "px";
    bar.on_drag(nx,ny);
    return false;  
  },
  endDrag:function(){
    EventUtil.remove(document,"mousemove",Slider.doDrag,true);
    EventUtil.remove(document,"mouseup",Slider.endDrag,true);
    if(!Slider.obj)return;
    Slider.obj.on_drag_end(parseInt(Slider.obj.style.left),parseInt(Slider.obj.style.top));
    Slider.obj=null;
  } 
}
