F_addCommand ("lyr", "Freeze Region", "freezeRegion(NOFparameters)");

function freezeRegion(parameters) {
	parameters.objectRef.freeze = getState(parameters.containerStyle);
	
	//Get text reference to region
	var textRef = "document.objectModel";
	if(parent!=self) {	//In frames
		var f = self;
		while(f!=top) {
			textRef="frames['"+f.name+"']."+textRef;
			f = f.parent;
		}
		textRef="top."+textRef;
	}
	textRef = textRef + "['" + parameters.id+ "']";
	var CB = 'freezeRegionCB("'+textRef+'")';
	if(F_NN) {
		setInterval(CB,  parameters.message.data)
	} else {
 		window.onscroll=new Function(CB);
	}
}

function freezeRegionCB(regionRef) {
	var theRegion = eval(regionRef);
	var state = getState(theRegion.style);
	var oldState = theRegion.freeze;
	var topMove = state.scrollTop - oldState.scrollTop;
	var leftMove = state.scrollLeft - oldState.scrollLeft;
	theRegion.style.top = state.regionTop + topMove;
	theRegion.style.left = state.regionLeft +leftMove;
	theRegion.freeze = state;
}

function getState(theStyle) {
	var O = new Object();
	if(F_NN) {
		O.scrollLeft = window.pageXOffset;
		O.scrollTop = window.pageYOffset;
		O.regionTop = theStyle.top;
		O.regionLeft = theStyle.left;
	} else {
		O.scrollLeft = parseInt(document.body.scrollLeft);
		O.scrollTop = parseInt(document.body.scrollTop);
		O.regionTop = theStyle.pixelTop;
		O.regionLeft = theStyle.pixelLeft;
	}
	return(O);
}