
float_init=1;
function DHTML_Init(Object) {
	if (navigator.userAgent.match(/Mozilla\/5\../) && float_init) {
		SetObjectOffsetTop(Object, undefined);
	}
}

function All (ID) {
	if (document.all) {
		return document.all[ID];
	}
	else if (document.documentElement){
		return document.getElementById (ID);
	}
        else if (document.layers){
		return document.layers[ID];
	}
}

function GetWindowOffsetTop() {
	if (window.innerHeight) {
		return window.pageYOffset;
	}
	else if (document.body){
		return document.body.scrollTop;
	}
}

function GetWindowHeight() {
	if (window.innerHeight) {
		return window.innerHeight;
	}
	else if (document.body){
		return document.body.clientHeight;
	}
}

function GetObjectHeight(Object) {
	DHTML_Init(Object);
	if (document.all || document.documentElement){
		Clip = Object.style.clip;
		if (! Clip) {
			return Object.offsetHeight;
		}
		else{
			return GetClipElement (Clip, 'Bottom');
		}
	}
	else if (document.layers)  {
		return Object.clip.height;
	}
}

function GetClipElement (Clip, Element) {
	Clip = Clip.substr(Clip.indexOf('(') + 1);
	Clip = Clip.substr(0, Clip.length - 1);
	Clippers = Clip.split (" ");
	for (i = 0; i < Clippers.length; i++) {
		if (Clippers[i] != 'auto'){
			Clippers[i] = Clippers[i].replace (/D/g, "");
		}
	}
	ClipTop = Number(Clippers[0]);
	ClipRight = Number(Clippers[1]);
	ClipBottom = Number(Clippers[2]);
	ClipLeft = Number(Clippers[3]);
	if (Element == 'Top')			{ return ClipTop;}
	else if (Element == 'Right')	{ return ClipRight;}
	else if (Element == 'Bottom')	{ return ClipBottom;}
	else if (Element == 'Left')		{ return ClipLeft;}
	else							{ return undefined; }
}

function GetObjectOffsetTop(Object) {
	DHTML_Init(Object);
	if (Object.offsetTop)		{ return Object.offsetTop; }
	else if (document.layers)	{ return Object.top; }
}

 function SetObjectOffsetTop(Object, Offset) {
	if (Object.style)		{ Object.style.top = Offset; }
	else if (Object.top)	{ Object.top = Offset; }
}
CenterMenu = 1;
MenuBorder = 100;
TimeCheck  = 250;
TimeUpdate = 15;
DivUpdate  = 15;
Minimum    = 50;
AddHeight  = -18;

function ScrollMenu() {
	Menu = All('persistMenu');
	WinTop = GetWindowOffsetTop();
	WinHeight = GetWindowHeight() + AddHeight;
	MenuTop = GetObjectOffsetTop(Menu);
	MenuHeight = GetObjectHeight (Menu);
	MenuNew = (CenterMenu) ? Math.round (WinTop + (WinHeight - MenuHeight)) : WinTop + MenuBorder;
	if (MenuNew < Minimum){
		MenuNew = Minimum;
	}
	if (MenuTop != MenuNew) {
		if ( (MenuTop + MenuHeight) < WinTop || MenuTop > (WinTop + WinHeight) ) {
			SetObjectOffsetTop (Menu, (MenuTop < MenuNew) ? (WinTop - MenuHeight) : (WinTop + WinHeight));
		}
		else {
			Add = (MenuTop < MenuNew) ? 1 : -1;
			SetObjectOffsetTop (Menu, MenuTop + Math.round((MenuNew - MenuTop) / DivUpdate) + Add);
		}
	}
	window.setTimeout('ScrollMenu()', (GetObjectOffsetTop(Menu) == MenuNew) ? TimeCheck : TimeUpdate);
}


