function lib_doc_size(){this.x=0;this.x2=bw.ie && document.body.offsetWidth-5||innerWidth||0;
this.y=0;this.y2=bw.ie && document.body.offsetHeight-5||innerHeight-12||0; if(bw.ns6) this.x2-=15; this.x50=this.x2/2;this.y50=this.y2/2;
this.x10=(this.x2*10)/100;this.y10=(this.y2*10)/100; this.ytop=140*100/this.y2; this.avail=(this.y2*(100-this.ytop))/100
this.origy=this.y2; return this;}; function lib_message(txt){alert(txt); return false}; function lib_moveIt(x,y){this.x=x;this.y=y; this.css.left=x;this.css.top=y}
function lib_moveBy(x,y){this.moveIt(this.x+x,this.y+y)}; function lib_showIt(){this.css.visibility="visible"}; 
function lib_hideIt(){this.css.visibility="hidden"}; function lib_bg(color){if(bw.op5) this.css.background=color; else if(bw.dom || bw.ie4) this.css.backgroundColor=color; 
else if(bw.ns4) this.css.bgColor=color}; function lib_writeIt(text,startHTML,endHTML){if(bw.ns4){if(!startHTML){startHTML=""; endHTML=""}; 
this.ref.open("text/html"); this.ref.write(startHTML+text+endHTML); this.ref.close()}else this.evnt.innerHTML=text}
function lib_clipTo(t,r,b,l,setwidth){this.cr=r; this.cb=b; if(bw.ns4){this.css.clip.top=t;this.css.clip.right=r; 
this.css.clip.bottom=b;this.css.clip.left=l; }else{if(t<0)t=0;if(r<0)r=0;if(b<0)b=0;if(b<0)b=0; 
this.css.clip="rect("+t+","+r+","+b+","+l+")"; if(setwidth){if(bw.op5){this.css.pixelWidth=r; this.css.pixelHeight=b} 
else{this.css.width=r; this.css.height=b}; this.w=r; this.h=b}}}
function lib_clipBy(t,r,b,l,setwidth){this.clipTo(this.ct+t,this.cr+r,this.cb+b,this.cl+l,setwidth)}
function b_clipIt(tstop,rstop,bstop,lstop,step,fn,wh,www){if(!fn) fn=null; if(!wh) wh=null; var clipval=new Array()
if(bw.dom || bw.ie4) {clipval=this.css.clip; clipval=clipval.slice(5,clipval.length-1);
clipval=clipval.split(' '); for(var i=0;i<4;i++){clipval[i]=parseInt(clipval[i])}
}else{clipval[0]=this.css.clip.top; clipval[1]=this.css.clip.right; clipval[2]=this.css.clip.bottom; clipval[3]=this.css.clip.left}
totantstep=Math.max(Math.max(Math.abs((tstop-clipval[0])/step),Math.abs((rstop-clipval[1])/step)),
Math.max(Math.abs((bstop-clipval[2])/step),Math.abs((lstop-clipval[3])/step)))
if(!this.clipactive)this.clip(clipval[0],clipval[1],clipval[2],clipval[3],(tstop-clipval[0])/totantstep,
(rstop-clipval[1])/totantstep,(bstop-clipval[2])/totantstep,(lstop-clipval[3])/totantstep,totantstep,0, fn,wh,www)}
function b_clip(tcurr,rcurr,bcurr,lcurr,tperstep,rperstep,bperstep,lperstep,totantstep,antstep,fn,wh,www){
tcurr=tcurr+tperstep; rcurr=rcurr+rperstep; bcurr=bcurr+bperstep; lcurr=lcurr+lperstep
if(www)this.clipTo(tcurr,rcurr,bcurr,lcurr,1); else this.clipTo(tcurr,rcurr,bcurr,lcurr); eval(wh); 
if(antstep<totantstep){this.clipactive=true;	antstep++; ;setTimeout(this.obj+".clip("+tcurr+","+rcurr+","+bcurr+","+lcurr+","
+tperstep+","+rperstep+","+bperstep+","+lperstep+","+totantstep+","+antstep+",'"+fn+"','"+wh+"','"+www+"')",50)	
}else{this.clipactive=false; eval(fn)}}; function lib_slideIt(endx,endy,inc,speed,fn,wh) {
if (!this.slideactive) {var distx = endx - this.x;var disty = endy - this.y
var num = Math.sqrt(Math.pow(distx,2) + Math.pow(disty,2))/inc; var dx = distx/num;var dy = disty/num
this.slideactive = 1; blankWindows();this.slide(dx,dy,endx,endy,speed,fn,wh)}}
function lib_slide(dx,dy,endx,endy,speed,fn,wh) {if (!fn) fn = null; if(!wh) wh=null; 
if (this.slideactive && (Math.floor(Math.abs(dx))<Math.floor(Math.abs(endx-this.x)) || 
Math.floor(Math.abs(dy))<Math.floor(Math.abs(endy-this.y)))) {this.moveBy(dx,dy); eval(wh)
slidTim=setTimeout(this.obj+".slide("+dx+","+dy+","+endx+","+endy+","+speed+",'"+fn+"','"+wh+"')",speed)
}else{this.slideactive = 0;unBlankWindows();this.moveIt(endx,endy);eval(fn)}}; var slidTim;
function lib_obj2(obj,nest,dnest,ddnest,num){
if(!bw.ns4) this.evnt=bw.dom && document.getElementById(obj)||bw.ie4 && document.all[obj]
else{; if(ddnest){this.evnt=document[nest].document[dnest].document[ddnest].document[obj]?document[nest].document[dnest].document[ddnest].document[obj]:0;
}else if(dnest){this.evnt=document[nest].document[dnest].document[obj]?document[nest].document[dnest].document[obj]:0;
}else if(nest){this.evnt=document[nest].document[obj]?document[nest].document[obj]:0;
}else{this.evnt=document.layers[obj]?document.layers[obj]:0;}}
if(!this.evnt) return lib_message('The layer does not exist ('+obj+') - Exiting script\n\nIf your using Netscape please check the nesting of your tags!')
this.css=bw.dom||bw.ie4?this.evnt.style:this.evnt;  this.ref=bw.dom||bw.ie4?document:this.css.document;
this.moveIt=lib_moveIt; this.moveBy=lib_moveBy; this.showIt=lib_showIt; this.hideIt=lib_hideIt;
this.writeIt=lib_writeIt; this.bg=lib_bg; this.clipTo=lib_clipTo; this.x=0; this.y=0; this.w=0; this.h=0; 
this.clipactive=0; this.slideactive=0; this.slideIt=lib_slideIt; this.slide=lib_slide; 
this.obj = obj + "Object"; 	eval(this.obj + "=this"); return this}

/*Window script - Copyrighted 2001 Thomas Brattli.*/
var oWin=new Object(); oWin.dragover=-1; oWin.clickedY=0; oWin.clickedX=0; oWin.resizeover=-1; oWin.zIndex=10; oWin.dragobj=-1; oWin.resizeobj=-1; oWin.lastState;
var isFront, winpage, wins;

win_init();
if(!wins) wins=0;
	
//used to pop up a window. always creates new.
function popItUp(page,myID,tile,w1,h1,x1,y1){

	winpage=lib_doc_size();

	create_window(myID,0,0,1)

	if(w1){
		oWin[myID].pageRef=page;
		oWin[myID].resize(arguments[3],arguments[4]);
		oWin[myID].origw=arguments[3];
		oWin[myID].origh=arguments[4];
		oWin[myID].moveIt(eval(arguments[5]),arguments[6]);
		oWin[myID].lastx=oWin[myID].x;
		oWin[myID].lasty=oWin[myID].y
		oWin[myID].checkscroll();
		oWin[myID].showIt();
	}
	wins=wins+1;
	oWin.currwins=myID;
	
	//if more than one window and we should tile, call setWindows
	//if tile=false: for some reason we have to resize again like above, dunno why
	if(tile && wins>1) {
		isFront=1; setWindows()
	} else {
		oWin[myID].resize(arguments[3],arguments[4]);
	}
}

function oldpopItUp(page,tile,w1,h1,x1,y1){

	winpage=lib_doc_size();

	create_window(wins,0,0,1)

	if(w1){
		oWin[wins].pageRef=page;
		oWin[wins].resize(arguments[2],arguments[3]);
		oWin[wins].origw=arguments[2];
		oWin[wins].origh=arguments[3];
		oWin[wins].moveIt(eval(arguments[4]),arguments[5]);
		oWin[wins].lastx=oWin[wins].x;
		oWin[wins].lasty=oWin[wins].y
		oWin[wins].checkscroll();
		oWin[wins].showIt();
	}
	wins=wins+1;
	oWin.currwins=wins;
	
	//if more than one window and we should tile, call setWindows
	//if tile=false: for some reason we have to resize again like above, dunno why
	if(tile && wins>1) {
		isFront=1; setWindows()
	} else {
		oWin[wins-1].resize(arguments[2],arguments[3]);
	}
}

function create_window(i){
	oWin[i]=new lib_obj2('divWin'+i,'','','',i)
	oWin[i].id=i
	oWin[i].oWindow=new lib_obj2('divWindow'+i,'divWin'+i)
	oWin[i].oText=new lib_obj2('divWinText'+i,'divWin'+i,'divWindow'+i)
	oWin[i].oHead=new lib_obj2('divWinHead'+i,'divWin'+i)
	oWin[i].oButtons=new lib_obj2('divWinButtons'+i,'divWin'+i)
	oWin[i].oResize=new lib_obj2('divWinResize'+i,'divWin'+i)
	oWin[i].oHead.evnt.onmouseover=new Function("w_mmover("+i+")")
	oWin[i].oHead.evnt.onmouseout=new Function("w_mmout()")
	if(!bw.ns4) oWin[i].oHead.evnt.ondblclick=new Function("mdblclick(0,"+i+")")
	oWin[i].oResize.evnt.onmouseover=new Function("w_mmover("+i+",1)")
	oWin[i].oResize.evnt.onmouseout=new Function("w_mmout()")	
	if(!bw.ns4){oWin[i].oHead.css.cursor="move"; oWin[i].oResize.css.cursor="se-resize"
		if(!bw.op5){oWin[i].oWindow.css.overflow="hidden"; oWin[i].css.overflow="hidden"
		}
	}
	oWin[i].oUp=new lib_obj2('divWinUp'+i,'divWin'+i); oWin[i].oDown=new lib_obj2('divWinDown'+i,'divWin'+i)
	oWin[i].lastx=oWin[i].x; oWin[i].lasty=oWin[i].y; oWin[i].resize=win_resize; oWin[i].close=win_close;
	oWin[i].maximize=win_maximize;	oWin[i].minimize=win_minimize;
	oWin[i].restore=win_restore;	
	oWin[i].regwin=win_regwin; oWin[i].checkscroll=win_checkscroll;
	oWin[i].up=win_up; oWin[i].down=win_down; oWin[i].addZ=win_addZ; oWin[i].state="reg"}
function win_regwin(m){
	lib_doc_size()

	this.lastState=this.state;

	this.oResize.css.visibility="inherit"; this.resize(this.origw,this.origh)
	if(!m)this.slideIt(this.lastx,this.lasty,80,10); else this.moveIt(this.lastx,this.lasty)
  this.state="reg"; this.addZ(); this.checkscroll()}
function win_maximize(){
	lib_doc_size()

	if(this.state!="max"){
	
		this.lastState=this.state;

		if(this.state!="min"){this.lastx=this.x; this.lasty=this.y}
		
		//width and height of page
		var mw=winpage.x2 - 237, mh=winpage.y2 - 66
		
		//comment: .slideIt(xstartlocation,yStartlocation,increments,speed)
		this.slideIt(115,51,80,30,this.obj+'.resize('+mw+','+mh+');'+ this.obj+'.checkscroll();')
		this.state="max"; this.addZ();
		}
		else {
			this.regwin();
		}
}

function win_minimize(){
	lib_doc_size()
	if(this.state!="min"){
	
		this.lastState=this.state;
	
		if(this.state!="max"){this.lastx=this.x; this.lasty=this.y}

		var ox=4,oy=61,a=0;
		var interval=16;
		var bOccupied;
		
//		for(i=0;i<wins;i++){
//
//			//assume the spot is not taken.
//			bOccupied=false;
//
//			//find an occupying window:
//			for(j=0;j<wins;j++) {
//				if (oWin[j]!=null && oWin[j].state=="min" && oWin[j].x==ox && oWin[j].y==oy) {
//					bOccupied=true;
//					break;
//				}
//			}
//
//			//if the spot is taken, add an interval and keep going, otherwise break cuz we found a spot
//			if (bOccupied) {
//				oy+=interval;
//			} else {
//				break;
//			}
//    }
    y=oy;
		x=ox;
		
//		this.slideIt(x,y,30,10);
		this.slideIt(x,y,10,5);
		this.oResize.hideIt()
		this.state="min";
		this.resize(1,1);
	}else this.regwin()
}
	
function win_restore(){
	lib_doc_size();
	if(this.state=="min"){
		this.showIt();
		if (this.lastState=="max") {
			this.maximize();		
		}	else {
			this.regwin();
		}
	} else {
		this.addZ();
	}
}
	


//not used anymore.
function win_close(){this.state="closed"; this.oText.hideIt(); this.hideIt(); this.oWindow.hideIt(); this.oUp.hideIt(); this.oDown.hideIt()}

function win_resize(w,h){

	lib_doc_size()
	this.oButtons.moveIt(w-39,0); this.oResize.moveIt(w-13,h-9); this.oWindow.clipTo(0,w-2,h-23,0,1) //moveit(w-39,0) (w-13,h-9) (0,w-2,h-23,0,1)
	this.clipTo(0,w,h,0,1); this.oHead.clipTo(0,w,14,0,1); this.oText.moveIt(2,3)

	//resize the frame
	if (this.css.pixelWidth-20>0) {document.getElementById("MDIFrame"+this.id).style.width=this.css.pixelWidth-4}
	if (this.css.pixelHeight-30>0) {document.getElementById("MDIFrame"+this.id).style.height=this.css.pixelHeight-28}

	this.oUp.hideIt(); this.oDown.hideIt()
}

function win_checkscroll(w,h){
	lib_doc_size()
	this.oText.height=this.oText.evnt.offsetHeight||this.oText.css.pixelHeight||this.oText.ref.height||0
	w=this.cr; h=this.cb; if(this.oText.height>h-28 && this.state!="min"){
		this.oWindow.clipTo(0,w-14,h-23,0,1); this.oUp.moveIt(w-12,14)
		this.oUp.clipTo(0,11,h-30,0,1); this.oDown.moveIt(w-12,h-21)
		this.oDown.clipTo(0,11,12,0,1); this.oUp.showIt(); this.oDown.showIt()
	}else{this.oUp.hideIt(); this.oDown.hideIt()}
}
var sctim=100,winScroll;
function win_up(){clearTimeout(sctim);if(this.oText.y>=this.oWindow.cb-this.oText.height-10 && winScroll){this.oText.moveBy(0,-8); setTimeout(this.obj+".up()",30)}}
function win_down(){clearTimeout(sctim); if(this.oText.y<=0 && winScroll){this.oText.moveBy(0,8); setTimeout(this.obj+".down()",30)}}
function noScroll(){clearTimeout(sctim);winScroll=false}
function win_addZ(){oWin.zIndex++; this.css.zIndex=oWin.zIndex}
function win_init(){
	if(bw.ns4){document.captureEvents(Event.MOUSEMOVE | Event.MOUSEDOWN | Event.MOUSEUP | Event.DBLCLICK)
    document.ondblclick=mdblclick; }document.onmousemove=mmove;	document.onmousedown=mdown; document.onmouseup=mup;}
function w_mmover(num,resize){if(!resize) oWin.dragover=num; else oWin.resizeover=num}
function w_mmout(){oWin.dragover=-1; oWin.resizeover=-1}
function mup(e){
	if(oWin.dragobj!=-1){
		if(oWin[oWin.dragobj].state=="reg"){
			oWin[oWin.dragobj].lastx=oWin[oWin.dragobj].x; oWin[oWin.dragobj].lasty=oWin[oWin.dragobj].y;
		}
	}
	oWin.dragobj=-1	

	if(oWin.resizeobj!=-1){
		oWin[oWin.resizeobj].checkscroll()
		oWin[oWin.resizeobj].origw=oWin[oWin.resizeobj].cr
		oWin[oWin.resizeobj].origh=oWin[oWin.resizeobj].cb		
	//	oWin[oWin.resizeobj].oText.showIt();
	}else if(bw.ns4) routeEvent(e); oWin.resizeobj=-1

	//show all window contents after resizing/moving if the windows style is not min
	unBlankWindows();
}
function mdown(e){

	var x=(bw.ns4 || bw.ns6)?e.pageX:event.x||event.clientX
  var y=(bw.ns4 || bw.ns6)?e.pageY:event.y||event.clientY
	if(bw.ie5 || bw.ie6) y+=document.body.scrollTop

  var id1=oWin.dragover,id,id2=oWin.resizeover
	if(id1>-1 || id2>-1){
		if(id2>-1){
			id=id2; oWin.resizeobj=id;
		} else {
			id=id1; oWin.dragobj=id;
			oWin.clickedX=x-oWin[id].x; 
			oWin.clickedY=y-oWin[id].y;
		}

		//hide all window contents for faster resizing
		blankWindows();
		
		oWin[id].addZ()
		for(var i=0;i<wins;i++) {
			if (oWin[i]!=null) {
				if(i!=id)	oWin[i].oWindow.bg("white");
				else oWin[i].oWindow.bg("#EEF3F9")
			}
		}
	}else if(bw.ns4) routeEvent(e)
}
function mmove(e,y){
	var x=(bw.ns4 || bw.ns6)?e.pageX:event.x||event.clientX
  var y=(bw.ns4 || bw.ns6)?e.pageY:event.y||event.clientY
	if(bw.ie5 || bw.ie6) y+=document.body.scrollTop
	var id1=oWin.dragobj,id2=oWin.resizeobj
	if(id2>-1){
		var nx=x,ny=y, oldw=oWin[id2].cr,oldh=oWin[id2].cb,cw= nx -oWin[id2].x, ch= ny - oWin[id2].y; 
    if(cw<120) cw=120; if(ch<70) ch=70; oWin[id2].resize(cw,ch)
	}else if(id1>-1){nx=x-oWin.clickedX; ny=y-oWin.clickedY
		if(ny<50) ny=52; //limits to below the menu bar
		if(nx<110) nx=116; //limits x direction to right of left navbar
		//if(nx + oWin[id1].w > winpage.x2-237) nx=winpage.x2-237-oWin[id1].w; //limits x direction to left of right navbar
		oWin[id1].moveIt(nx,ny)
	}
  if(bw.op5||bw.op6&&oM) cm_resized()
	if(!bw.ns4) return false; else return true
}
function mdblclick(e,num){

	if(num>-1) oWin[num].maximize(); else if(oWin.dragover>-1) oWin[oWin.dragover].maximize()
}

function blankWindows() {
	for(var i=0;i<wins;i++) {if (oWin[i]!=null && oWin[i].state!="min" && oWin[i].state!="closed") oWin[i].oText.hideIt();}
}

function unBlankWindows() {
	for(var i=0;i<wins;i++) {if (oWin[i]!=null && oWin[i].state!="min" && oWin[i].state!="closed") {oWin[i].oText.showIt();}}
}

function setWindows(){
	var between=5;
	var j=0,a=0,c=0;
	
	var winsToTile=0;
	for(var i=0;i<wins;i++){
		if (oWin[i]!=null && oWin[i].state!="min") ++winsToTile;
	}
	oWin.columns=1;
	oWin.rows=Math.round((winsToTile/3)+0.2)
	
	yOffset=65;  //offsets start of windows
	yOffset2=92; //reduces height of window
	xOffset2=115; //offsets start of windows
	xOffset=130; //reduces width of window
	for(var i=0;i<wins;i++){
		if (oWin[i]!=null && oWin[i].state!="min") {
			if(j==oWin.columns-1){
				oWin.columns=winsToTile-a<3?winsToTile-a:winsToTile-a==4?2:3
				if(winsToTile!=1 && a!=0) c++; j=0
			}else if(a!=0) j++
			oWin[i].origw=(winpage.x2-xOffset-(between*oWin.columns))/oWin.columns 
			oWin[i].origh=(winpage.y2-yOffset-(between*oWin.rows))/oWin.rows
			oWin[i].origx=oWin[i].origw*(j)+(between*j+1) +2
			oWin[i].origy=oWin[i].origh*c+140+(between*c)  + 3
			oWin[i].lasty=oWin[i].origy-yOffset2; oWin[i].lastx=oWin[i].origx + xOffset2;
			oWin[i].regwin(1); oWin[i].moveIt(oWin[i].lastx,oWin[i].lasty); 
			oWin[i].showIt(); a++;
		}
	}
}