// ------------[+]-- DynamicHTML SlideMenu 
// ------------[+]-- Copyright (C) 2002- HP-DESIGN.NET. 
// ------------[+]-- Takeru [ http://hp-design.net/ ] 
// No reproduction , no republication without written permission of HP-DESIGN.NET 
// Must not delete this copyright in order to use this script 

function initSlideMenu(id,subid,top,left,mtop,mbottom) {

	this.id = getObjectById(id) ;
	this.subid = getObjectById(subid,id);
	this.divw = ( _bw.opera ) ? getObjectWidth(this.id) : getObjectWidth(this.subid) ;
	this.divh = ( _bw.opera ) ? getObjectWidth(this.id) : getObjectHeight(this.subid) ;

	this.topY = this.currentY = top ? top : 0 ;
	this.leftX = left ? left : 20 ;
	this.currentX = this.minX = this.leftX - this.divw ;

	this.mTop = mtop ? mtop : 0 ;
	this.mBottom = mbottom ? mbottom : 0 ;
	this.opened = 0 ; this.xflag = 0 ; this.timerID = 1 ;
	this.setup = setSlideMenu ;
	this.flag = false ;
	return this ;
}

var oSlideMenu ; 
function SlideMenu(id,subid,top,left,mtop,mbottom) { 
	if( _bw.ie4up || _bw.net4up || _bw.opera6 ) { 
		oSlideMenu = new initSlideMenu(id,subid,top,left,mtop,mbottom) ;
		oSlideMenu.flag = 1 ; oSlideMenu.setup() ; 
		moveySlideMenu() ;
	} 
}

function setSlideMenu() {
	this.currentX = this.leftX - this.divw ;
	if( !_bw.opera ){
		setObjectSizeTo( this.id , this.divw , this.divh ) ;
		setClipTo( this.id , 0 , this.divw , this.divh , 0 ) ;
	}
	setObjectTo( this.id , this.currentX , this.topY ) ;
	setObjectVisibility( this.id , 1 ) ;
}

function openSlideMenu() {
	if( oSlideMenu.flag ) { oSlideMenu.xflag = 1 ; movexSlideMenu() }
}

function movexSlideMenu() { 
	var pal = oSlideMenu ;
	if( pal.xflag ){
		var vx = ( !pal.opened ) ? 
			pal.currentX * 0.25 : ( pal.minX - pal.currentX ) * 0.25 ;
		if( Math.abs(vx) < 1 ) { vx = ( vx > 0 ) ? 1 : ( vx < 0 ) ? -1 : 0 }
		pal.currentX = ( !pal.opened ) ? 
			pal.currentX - Math.round(vx) : pal.currentX + Math.round(vx) ;

		var flag = ( !pal.opened ) ? ( pal.currentX >= 0 ) ? 1 : 0 :
				( pal.currentX <= pal.minX ) ? 1 : 0 ;
		if( flag ) { pal.xflag = 0 ; 
			pal.currentX = ( !pal.opened ) ? 0 : pal.minX ;
			pal.opened = ( !pal.opened ) ? 1 : 0 ;
			clearTimeout( pal.timerID ) ;
		} setObjectTo( pal.id , pal.currentX , pal.currentY ) ;
		pal.timerID = setTimeout('movexSlideMenu()', 20) 
	}
}

function moveySlideMenu() { 
	var pal = oSlideMenu ; 
	var winh = getWindowHeight() ; var yt = getScrollY() ;

	if( winh >= pal.divh ) {
		if( winh >= pal.mTop + pal.divh + pal.mBottom ) {
			yt = Math.max( yt + pal.mTop , pal.topY ) ;
		} else {
			var yt1 = Math.max( yt + pal.mTop, pal.topY ) ;
			var f1 = ( yt1 > pal.currentY ) ? 1 : 0 ;
			var yt2 = yt - ( pal.divh + pal.mBottom - winh ) ;
			yt2 = Math.max( yt2, pal.topY ) ;
			var f2 = ( yt2 < pal.currentY ) ? 1 : 0 ;
			if ( f1 && f2 ) { yt = pal.currentY }
			else { yt = f2 ? Math.max( yt1 , yt2 ) : Math.min( yt1 , yt2 ) }
		}
		if( yt != pal.currentY ) {
			var vy = ( yt - pal.currentY ) * 0.25 ;
			if ( Math.abs(vy) < 1 ) { vy = (vy > 0) ? 1 : (vy < 0) ? -1 : 0 }
			pal.currentY += Math.round( vy );
			setObjectTo( pal.id , pal.currentX , pal.currentY ) ;
		}
	} setTimeout('moveySlideMenu()', 20);
}

