/*
______________________________________________________________________________________

	basic js stuff, you're always gonna need this...
	
	v1.1
	
___________________________________________________________________ << sm | 06.02.2005
*/

var appVer		= navigator.appVersion;
var appAgent	= navigator.userAgent;
var mac			= appAgent.indexOf("Mac") > -1;
var dhtml		= ( document.getElementById || document.all || document.layers );
var dom			= document.getElementById ? 1 : 0;	
var op5			= appAgent.indexOf("Opera 5") > -1;
var op			= op5;	
var ie6			= ( appVer.indexOf("MSIE 6") > -1 && dom && !op ) ? 1 : 0;
var ie5			= ( appVer.indexOf("MSIE 5") > -1 && dom && !op ) ? 1 : 0; 
var ie4			= ( document.all && !dom && !op ) ? 1 : 0;
var ie			= ( ie4 || ie5 || ie6 );	
var ns6			= ( dom && parseInt( appVer ) >= 5) ? 1 : 0; 
var ns4			= ( document.layers && !dom ) ? 1 : 0;
var ns			= ( ns4 || ns6 );

function cBrowser(){ //Browsercheck (needed)  
	this.ver	= navigator.appVersion;
	this.agent	= navigator.userAgent;
	this.mac	= this.agent.indexOf("Mac") > -1;
	this.dhtml	= ( document.getElementById || document.all || document.layers );
	this.dom	= document.getElementById ? 1 : 0;	
	this.op5	= this.agent.indexOf("Opera 5") > -1;
	this.op		= this.op5;	
	this.ie6	= ( this.ver.indexOf("MSIE 6") > -1 && this.dom && !this.op ) ? 1 : 0;
	this.ie5	= ( this.ver.indexOf("MSIE 5") > -1 && this.dom && !this.op ) ? 1 : 0; 
	this.ie4	= ( document.all && !this.dom && !this.op ) ? 1 : 0;
	this.ie		= ( this.ie4 || this.ie5 || this.ie6 );	
	this.ns6	= ( this.dom && parseInt(this.ver) >= 5) ? 1 : 0; 
	this.ns4	= ( document.layers && !this.dom) ? 1 : 0;
	this.ns		= ( this.ns4 || this.ns6 );
	this.bw		= ( this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.op5 );
	return this;
}

cBrowser.prototype.w		= cBrowserW;
cBrowser.prototype.h		= cBrowserH;
cBrowser.prototype.x		= cBrowserX;
cBrowser.prototype.y		= cBrowserY;
cBrowser.prototype.scrw		= cBrowserScrw;
cBrowser.prototype.scrh		= cBrowserScrh;

function cBrowserW() {		
	if ( ns )	return Math.ceil( self.innerWidth );
	else			return Math.ceil( document.body.clientWidth );
}
function cBrowserH() {		
	if ( ns )	return Math.ceil( self.innerHeight );
	else			return Math.ceil( document.body.clientHeight );
}
function cBrowserScrw(){		
	if ( ns )	return Math.ceil( screen.availWidth );
	else			return Math.ceil( screen.availWidth );
}
function cBrowserScrh() {		
	if ( ns )	return Math.ceil( screen.availHeight );
	else			return Math.ceil( screen.availHeight );
}
function cBrowserX(){		
	if ( ns )	return Math.ceil( screen.screenX );
	else			return Math.ceil( window.screenLeft );
}
function cBrowserY() {		
	if ( ns )	return Math.ceil( screen.screenY );
	else			return Math.ceil( window.screenTop );
}


// ________________________________________________________________________________________
	
function cMouse( relation ) {
	this.relation	= relation;	// "doc" = refers to top/left of document ( if scrolled ); "win" = refers to window
	this.x			= 0;
	this.y			= 0;
	this.oldx		= 0;
	this.oldy		= 0;
	this.offx		= 0;
	this.offy		= 0;
	this.isdown		= 0;
	this.btn		= 0;	
	eval( this.obj + "=this" );
}

cMouse.prototype.down		= cMouseDown;
cMouse.prototype.up			= cMouseUp;
cMouse.prototype.move		= cMouseMove;
cMouse.prototype.getButton	= cMouseGetButton;

function cMouseDown( e ) {
	this.isdown = 1;
	this.getButton( e );
	return false;
}

function cMouseUp( e ) {
	this.isdown = 0;
	this.getButton( e );
	if ( this.btn == 1 ) return true;
}

function cMouseMove( e ) {
	if( ns ) {
		this.x = e.pageX;
		this.y = e.pageY;
	} else if( bw.ie || bw.dom ) {
		this.x = event.x + document.body.scrollLeft;
		this.y = event.y + document.body.scrollTop;
	}	
	this.offx		= this.x - this.oldx;
	this.offy		= this.y - this.oldy;
	this.oldx		= this.x;
	this.oldy		= this.y;
	return true;
}

function cMouseGetButton( e ) {
	var thebutton;
	if( ns )	thebutton = parseInt( e.which );
	else		thebutton = parseInt( event.button );	
	if( thebutton != 1 ) thebutton = 2;
	this.btn = thebutton;
	return 1;
}

// ________________________________________________________________________________________

function doondown( func ) {	ondowns[ondowns.length] = func;		}
function doonup( func ) {		onups[onups.length] = func;			}
function doonmove( func ) {	onmoves[onmoves.length] = func;		}

function msdown( e ) {
	var ret = true;
	var tmp;
	for( var i = 0; i < ondowns.length; i++ ) {
		tmp = eval( ondowns[i] + "( e )" );
		if( ( ret == true ) && ( tmp == false ) )
			ret = false;
	}
	ms.down( e );
	return ret;
}

function msup( e ) {
	var ret = true;
	var tmp;
	for( var i = 0; i < onups.length; i++ ) {
		tmp = eval( onups[i] + "( e )" );
		if( ( ret == true ) && ( tmp == false ) )
			ret = false;
	}
	ms.up( e );
	return ret;
}

function msmove( e ) {
	var ret = true;
	var tmp;
	for( var i = 0; i < onmoves.length; i++ ) {
		tmp = eval( onmoves[i] + "( e )" );
		if( ( ret == true ) && ( tmp == false ) )
			ret = false;
	}
	ms.move( e );
	return ret;
}

// ________________________________________________________________________________________

function doonresize( func ) {	onresizes[onresizes.length] = func;	}

function bwresize() {
	for( var i = 0; i < onresizes.length; i++ )
		eval( onresizes[i] + "()" );
	return true;
}

// ________________________________________________________________________________________

function fixns4() {	// ns4 resize fix
	if( ns4 ){
	    document.scrX = innerWidth;
		document.scrY = innerHeight;
		doonresize( "fixns4do" ); 
	}
}

function fixns4do() {
	if( document.scrX != innerWidth || document.scrY != innerHeight )
		location.reload();
}

// ________________________________________________________________________________________ >> functions

function maximizeWindow() {
	if( bw ) {
		window.resizeTo( bw.scrw(), bw.scrh() );
		window.moveTo( 0, 0 );
	} else {
		setTimeout( "centerWindow()", 250 );
	}
}

function supersizeWindow() {
	if( bw ) {
		window.resizeTo( bw.scrw() + 100, bw.scrh() + 100 );
		x = ( bw.scrw() / 2 ) - ( bw.w() / 2 );
		y = ( bw.scrh() / 2 ) - ( bw.h() / 2 );
		window.moveTo( x, y );
	} else {
		setTimeout( "centerWindow()", 250 );
	}
}

function centerWindow() {
	if( bw ) {
		x = ( bw.scrw() / 2 ) - ( bw.w() / 2 );
		y = ( bw.scrh() / 2 ) - ( bw.h() / 2 );
		window.moveTo( x, y );
	} else {
		setTimeout( "centerWindow()", 250 );
	}
}

function fitImage() {
	var img = arguments[0];
	var addw = 0;
	var addh = 0;
	
	if( arguments[1] )
		addw = arguments[1];
	if( arguments[2] )
		addh = arguments[2];
		
	if( document.images[ img ].complete != true ) {
		setTimeout( "fitImage( '" + img + "', " + addw + ", " + addh + " )", 25 );
	} else {
		if ( ns4 || dom ) {
			var w = document.images[ img ].width + addw;
			var h = document.images[ img ].height + addh;
			window.resizeTo( w, h );
		} else if ( ie ) {
			window.resizeTo(500, 500);
			var w = 500 - ( document.body.clientWidth - ( document.images[ img ].width + addw ) );
			var h = 500 - ( document.body.clientHeight - ( document.images[ img ].height + addh ) );
			window.resizeTo( w, h );
		} else {
			setTimeout( "fitImage( " + img + ", " + addw + ", " + addh + " )", 2000 );
		}
		centerWindow();
		// supersizeWindow();
	}
}

// ________________________________________________________________________________________


var bw = new cBrowser();
window.bw = bw;


// window.onerror 			= null;
window.onresize 		= bwresize;
document.onmousedown	= msdown;
document.onmouseup		= msup;
document.onmousemove	= msmove;
if ( ns ) document.captureEvents( Event.MOUSEDOWN | Event.MOUSEMOVE | Event.MOUSEUP );

var onresizes	= new Array();
var onmoves		= new Array();
var ondowns		= new Array();
var onups		= new Array();

var ms = new cMouse("doc");