// Copyright 1999 Dan Steinman
// http://www.dansteinman.com/dynapi/

function DL(id,n1,n2){
	t=this
	if(is.ns4){
		if(n1){
			if(n2)t.elm=d.layers[n2].document.layers[n1].document.layers[id]
			else t.elm=d.layers[n1].document.layers[id]
		}
		else t.elm=d.layers[id]
		t.css=t.event=t.elm
		t.doc=t.elm.document
		t.l=t.css.left
		t.t=t.css.top
		t.w=t.css.clip.width
		t.h=t.css.clip.height
	}
	else {
		if(is.ie4)t.elm=t.event=d.all[id]
		else t.elm=t.event=d.getElementById(id)
		t.css=t.elm.style
		t.doc=document
		t.l=t.elm.offsetLeft
		t.t=t.elm.offsetTop
		t.w=t.elm.offsetWidth
		t.h=t.elm.offsetHeight
		if(t.w==0)t.w=t.css.pixelWidth
		if(t.h==0)t.h=t.css.pixelHeight
	}
	t.obj=id+'DL'
	eval(t.obj+'=t')
	t.mvTo=DLmvTo
	t.mvBy=DLmvBy
	t.rsTo=DLrsTo
	t.sh=DLsh
	t.hd=DLhd
	t.writeLayer=DLwrite
}

function DLmvTo(l,t){
	if(l!=null){
		this.l=l
		if(!is.ie)this.css.left=this.l
		else this.css.pixelLeft=this.l
	}
	if(t!=null){
		this.t=t
		if(!is.ie)this.css.top=this.t
		else this.css.pixelTop=this.t
	}
}

function DLmvBy(l,t){this.mTo(this.l+l,this.t+t)}

function DLrsTo(w,h){
	if(w!=null){
		this.w=w
		if(is.ns4)this.css.clip.width=this.w
		else this.css.width=this.w
	}
	if(h!=null){
		this.h=h
		if(is.ns4)this.css.clip.height=this.h
		else this.css.height=this.h
	}
}

function DLsh(){this.css.visibility=(is.ns4)?'show':'visible'}

function DLhd(){this.css.visibility=(is.ns4)?'hide':'hidden'}

function newLyr(id,l,t,w,h,ct,z,v,bg,e,n1){
	d=document
	if(is.ns4){
		if(n1)var lyr=eval('d.layers.'+n1+'.document.layers.'+id+'=new Layer('+w+',d.layers.'+n1+')')
		else var lyr=d.layers[id]=new Layer(w)
		lyr.name=id
		lyr.left=l
		lyr.top=t
		if(h)lyr.clip.height=h
		if(ct){lyr.document.open();lyr.document.write(ct);lyr.document.close()}
		if(z)lyr.zIndex=z
		lyr.visibility=(v=='hidden')?'hide':'show'
		if(bg)lyr.bgColor=bg
	}
	else {
		if(n1){
			index=n1.lastIndexOf(".")
			var nestlyr=(index!=-1)?n1.substr(index+1):n1
		}
		if(is.dom){
			lyr=d.createElement('DIV')
			lyrS=lyr.style
			lyrS.position='absolute'
			lyrS.left=l+'px'
			lyrS.top=t+'px'
			if(w)lyrS.width=w+'px'
			if(h)lyrS.height=h+'px'
			else if(is.ie&&is.mac)lyrS.height='none'
			if(z)lyrS.zIndex=z
			if(v)lyrS.visibility=v
			if(bg)lyrS.backgroundColor=bg
			if(e){if(e.indexOf('border:')!=-1)lyrS.border='1px black solid'}
			lyr.innerHTML='<span '+((e)?e:'')+'>'+ct+'</span>'
			lyr.id=id
			if(n1)d.all[nestlyr].appendChild(lyr)
			else d.body.appendChild(lyr)
		}
		else{
			var S='\n<DIV id='+id+' style="position:absolute;left:'+l+';top:'+t
			if(w)S+=';width:'+w
			else S+=';width:1'
			if(h!=null)S+=';height:'+h
			if(z!=null)S+=';z-index:'+z
			if(v)S+=';visibility:'+v
			if(bg!=null)S+=';background:'+bg
			S+='" '+e+'>'+((ct)?ct:'')+'</DIV>'
			if(n1)d.all[nestlyr].insertAdjacentHTML("BeforeEnd",S)
			else d.body.insertAdjacentHTML("BeforeEnd",S)
		}
	}
	eval(id.substring(0,id.lastIndexOf('Div'))+'=new DL(\''+id+'\')')
}

function pI(src){
	o=src.substring(src.lastIndexOf('/')+1,src.lastIndexOf('.'))
	eval(o+'=new Image()')
	eval(o+'.src="'+src+'"')
}
function cI(id,o,lyr){
	if(eval('typeof('+o+')')!='undefined'){
		if(d.layers&&lyr)eval('d.layers.'+lyr+'.document.images.'+id+'.src='+o+'.src')
		else d.images[id].src=eval(o+".src")
	}
}

function DLwrite(S){
	if(is.ns4){this.doc.close();this.doc.open();this.doc.write(S);this.doc.close()}
	else this.elm.innerHTML=S
}

function checkBrowser(){
	T=this
	b=navigator.appName
	v=navigator.appVersion
	u=navigator.userAgent
	if(b=='Netscape')T.b='ns'
	else if(b=='Microsoft Internet Explorer')T.b='ie'
	else T.b=b
	T.v=parseInt(v)
	T.ns=(T.b=='ns'&&T.v>=4)
	T.ns4=(T.b=='ns'&&T.v==4)
	T.ns5=(T.b=='ns'&&T.v==5)
	T.ns6=(T.b=='ns'&&T.v==5)
	T.ie=(T.b=='ie'&&T.v>=4)
	T.ie4=(u.indexOf('MSIE 4')>0)
	T.ie5=(u.indexOf('MSIE 5.0')>0)
	T.ie55=(u.indexOf('MSIE 5.5')>0)
	T.ie6=(u.indexOf('MSIE 6.0')>0)
	T.win=(u.indexOf('Win')>0)
	T.mac=(u.indexOf('Mac')>0)
	if(T.ie5)T.v=5
	if(T.ie55)T.v=5.5
	if(T.ie6)T.v=6
	T.min=(T.ns||T.ie)
	T.dom=(T.v >= 5)
}
is=new checkBrowser()

function DLslideTo(endx,endy,inc,speed,fn) {
	if(endx==null)endx=this.l
	if(endy==null)endy=this.t
	var distx=endx-this.l
	var disty=endy-this.t
	this.slideStart(endx,endy,distx,disty,inc,speed,fn)
}

function DLslideBy(distx,disty,inc,speed,fn) {
	var endx=this.l+distx
	var endy=this.t+disty
	this.slideStart(endx,endy,distx,disty,inc,speed,fn)
}

function DLslideStart(endx,endy,distx,disty,inc,speed,fn) {
	if(this.slideActive)return
	if(!inc)inc=10
	if(!speed)speed=20
	var num=Math.sqrt(Math.pow(distx,2)+Math.pow(disty,2))/inc
	if(num==0)return
	var dx=distx/num
	var dy=disty/num
	if(!fn)fn=null
	this.slideActive=true
	this.slide(dx,dy,endx,endy,num,1,speed,fn)
}

function DLslide(dx,dy,endx,endy,num,i,speed,fn) {
	if(!this.slideActive)return
	if(i++<num){
		this.mBy(dx,dy)
		this.onSlide()
		if(this.slideActive)setTimeout(this.obj+".slide("+dx+","+dy+","+endx+","+endy+","+num+","+i+","+speed+",\""+fn+"\")",speed)
		else this.onSlideEnd()
	}
	else {
		this.slideActive=false
		this.mTo(endx,endy)
		this.onSlide()
		this.onSlideEnd()
		eval(fn)
	}
}

DL.prototype.slideTo=DLslideTo
DL.prototype.slideBy=DLslideBy
DL.prototype.slideStart=DLslideStart
DL.prototype.slide=DLslide
DL.prototype.onSlide=new Function('')
DL.prototype.onSlideEnd=new Function('')

function DLclipTo(t,r,b,l){
	if(is.ns4){
		this.css.clip.top=t
		this.css.clip.right=r
		this.css.clip.bottom=b
		this.css.clip.left=l
	}
	else this.css.clip='rect('+t+' '+r+' '+b+' '+l+')'
}
function DLclipValues(which) {
	if (is.ie) var clipv = this.css.clip.split("rect(")[1].split(")")[0].split("px")
	if (which=="t") return (is.ns)? this.css.clip.top : Number(clipv[0])
	if (which=="r") return (is.ns)? this.css.clip.right : Number(clipv[1])
	if (which=="b") return (is.ns)? this.css.clip.bottom : Number(clipv[2])
	if (which=="l") return (is.ns)? this.css.clip.left : Number(clipv[3])
}
DL.prototype.clipValues=DLclipValues
DL.prototype.clipTo=DLclipTo

function DLwipeTo(endt,endr,endb,endl,num,speed,fn) {
	var distt=endt-this.clipValues('t')
	var distr=endr-this.clipValues('r')
	var distb=endb-this.clipValues('b')
	var distl=endl-this.clipValues('l')
	this.wipeStart(distt,distr,distb,distl,endt,endr,endb,endl,num,speed,fn)
}
function DLwipeStart(distt,distr,distb,distl,endt,endr,endb,endl,num,speed,fn) {
	if (this.wipeActive) return
	if(!speed)speed=20
	num=Math.sqrt(Math.pow(distr,2)+Math.pow(distb,2))/10
	if(num==0)return
	if (!fn) fn = null
	this.wipeActive = true
	this.wipe(distt/num,distr/num,distb/num,distl/num,endt,endr,endb,endl,this.clipValues('t'),this.clipValues('r'),this.clipValues('b'),this.clipValues('l'),num,1,speed,fn)
}
function DLwipe(dt,dr,db,dl,endt,endr,endb,endl,st,sr,sb,sl,num,i,speed,fn) {
	if (!this.wipeActive) return
	if (i++<num){
		this.clipTo(st+i*dt,sr+i*dr,sb+i*db,sl+i*dl)
		setTimeout(this.obj+".wipe("+dt+","+dr+","+db+","+dl+","+endt+","+endr+","+endb+","+endl+","+st+","+sr+","+sb+","+sl+","+num+","+i+","+speed+",\""+fn+"\")",speed)
	}
	else{
		this.wipeActive = false
		this.clipTo(endt,endr,endb,endl)
		eval(fn)	
	}
}
DL.prototype.wipeTo = DLwipeTo
DL.prototype.wipeStart = DLwipeStart
DL.prototype.wipe = DLwipe

function docW(){return(is.ie?(d.body.scrollWidth):(d.width))}
function docH(){return(is.ie?(d.body.scrollHeight):(d.height))}
function winW(){return(is.ie?(d.body.clientWidth):(window.innerWidth))}
function winH(){return(is.ie?(d.body.clientHeight):(window.innerHeight))}
function bodyBottom(){return((docH()>=bodyHeight())?docH():bodyHeight())}

