// * * * * * * * * * * * * * * * * * * * * * * * *
// * * * * * * * * * * * * * * * * * * * * * * * *
// * * * * * * * * * * * * * * * * * * * * * * * *
window.onload = function() {
	FP_SetupAreaPositions();
	
	var i;
	for( i=0 ; i<_FP_LoadHandlers.length ; i++ ) {
		eval( _FP_LoadHandlers[i] );
	}
	
	window.onresize = function() {
		for( i=0 ; i<_FP_ResizeHandlers.length ; i++ ) {
			eval( _FP_ResizeHandlers[i] );
		}
	}
}



// * * * * * * * * * * * * * * * * * * * * * * * *
// * * * * * * * * * * * * * * * * * * * * * * * *
// * * * * * * * * * * * * * * * * * * * * * * * *
function FP_TriggerResize() {
	for( i=0 ; i<_FP_ResizeHandlers.length ; i++ ) {
		eval( _FP_ResizeHandlers[i] );
	}
}



// * * * * * * * * * * * * * * * * * * * * * * * *
// * * * * * * * * * * * * * * * * * * * * * * * *
// * * * * * * * * * * * * * * * * * * * * * * * *
var _FP_LoadHandlers = [];
function FP_RegisterLoadHandler( s ) {
	_FP_LoadHandlers[ _FP_LoadHandlers.length ] = s;
}



// * * * * * * * * * * * * * * * * * * * * * * * *
// * * * * * * * * * * * * * * * * * * * * * * * *
// * * * * * * * * * * * * * * * * * * * * * * * *
var _FP_ResizeHandlers = [];
function FP_RegisterResizeHandler( s ) {
	_FP_ResizeHandlers[ _FP_ResizeHandlers.length ] = s;
}



// * * * * * * * * * * * * * * * * * * * * * * * *
// * * * * * * * * * * * * * * * * * * * * * * * *
// * * * * * * * * * * * * * * * * * * * * * * * *
function FP_TriggerLoadHandlers() {
	var i;
	for( i=0 ; i<_FP_LoadHandlers.length ; i++ ) {
		eval( _FP_LoadHandlers[i] );
	}	
}



// * * * * * * * * * * * * * * * * * * * * * * * *
// * * * * * * * * * * * * * * * * * * * * * * * *
// * * * * * * * * * * * * * * * * * * * * * * * *
function FP_SetupAreaPositions() {
	if( ! window.FP_Areas )
		return;
	
	var i;
	for( i=0 ; i<FP_Areas.length ; i++ ) {
		var area = FP_Areas[i];
		if( area.Ofr == 1 ) {
			// Others should be relative to this
			var j;
			for( j=0 ; j<FP_Areas.length ; j++ ) {
				var compareArea = FP_Areas[j];
				var a_l = area.X;
				var a_r = area.X + area.W;
				var c_l = compareArea.X;
				var c_r = compareArea.X + compareArea.W;
				if( area.ID != compareArea.ID ) {
					if( compareArea.Y > area.Y ) {
						var s = "";
						s += (c_l <= a_l && c_r >= a_l ).toString() + "\n";
						s += (c_r >= a_r && c_l <= a_r ).toString() + "\n";
						s += (c_r <= a_r && c_l >= a_l ).toString() + "\n";
						
						//alert( s );
						
						if( 
							(c_l <= a_l && c_r >= a_l ) || 
							(c_r >= a_r && c_l <= a_r ) || 
							(c_r <= a_r && c_l >= a_l ) 
						) {
						FP_SetRelativePosition( area , compareArea );
					}
				}
			}
		}
	}	
	}	
}



// * * * * * * * * * * * * * * * * * * * * * * * *
// * * * * * * * * * * * * * * * * * * * * * * * *
// * * * * * * * * * * * * * * * * * * * * * * * *
function FP_SetRelativePosition( area , compareArea ) {
	var areaObject;
	var compareObject;
	
	if( document.getElementById ) {
		areaObject = document.getElementById( area.ID );
		compareObject = document.getElementById( compareArea.ID );
	} else if( document.all ) {
		areaObject = document.all[ area.ID ];
		compareObject = document.all[ compareArea.ID ];
	} else if( document.layers ) {
		areaObject = document.layers[ area.ID ];
		compareObject = document.layers[ compareArea.ID ];
	}

	var realHeight = areaObject.offsetHeight;
	var offY = compareArea.Y - (area.Y + area.H);
	
	var finalPos = parseInt( areaObject.style.top ) + realHeight + offY;
	
	if( _FP_PositionAdjusted[compareArea.ID] == null || finalPos > parseInt( compareObject.style.top ) ) {
	compareObject.style.top = finalPos;
		_FP_PositionAdjusted[compareArea.ID] = 1;
	}
}



// * * * * * * * * * * * * * * * * * * * * * * * *
// * * * * * * * * * * * * * * * * * * * * * * * *
// * * * * * * * * * * * * * * * * * * * * * * * *
function FP_GetWindowWidth() {
	return (document.layers)? window.innerWidth : document.body.offsetWidth;
}



// * * * * * * * * * * * * * * * * * * * * * * * *
// * * * * * * * * * * * * * * * * * * * * * * * *
// * * * * * * * * * * * * * * * * * * * * * * * *
function FP_GetAreaTotalHeight() {
	if( ! window.FP_Areas )
		return 0;	
		
	var maxHeight = 0;
		
	for( i=0 ; i<FP_Areas.length ; i++ ) {
		var area = FP_Areas[i];
		var areaObject;
		var height = 0;
		var top = 0;
		
		if( document.getElementById ) {
			areaObject = document.getElementById( area.ID );
		} else if( document.all ) {
			areaObject = document.all[ area.ID ];
		} else if( document.layers ) {
			areaObject = document.layers[ area.ID ];
		}

		height = areaObject.offsetHeight;
		top = areaObject.offsetTop;
		
		var areaEnd = top + height;
		
		if( areaEnd > maxHeight ) 
			maxHeight = areaEnd;
	}
	
	return maxHeight;
}




// * * * * * * * * * * * * * * * * * * * * * * * *
// * * * * * * * * * * * * * * * * * * * * * * * *
// * * * * * * * * * * * * * * * * * * * * * * * *
function FP_GetContentBottomPos() {
	if( ! window.FP_Areas )
		return 0;
		
	var maxHeight = 0;
	for( i=0 ; i<FP_Areas.length ; i++ ) {
		var area = FP_Areas[i];
		var areaObject;
		var height = 0
		
		if( document.getElementById ) {
			areaObject = document.getElementById( area.ID );
		} else if( document.all ) {
			areaObject = document.all[ area.ID ];
		} else if( document.layers ) {
			areaObject = document.layers[ area.ID ];
		}

		height = areaObject.offsetHeight + area.Y;
		
		if( height > maxHeight ) 
			maxHeight = height;
	}
	
	return maxHeight;
}




// * * * * * * * * * * * * * * * * * * * * * * * *
// * * * * * * * * * * * * * * * * * * * * * * * *
// * * * * * * * * * * * * * * * * * * * * * * * *
function FP_GetStyleElement( id ) {
	if ( document.getElementById ) {
		var o = document.getElementById( id );
		if( o != null )
			return o.style;
		else
			return null;
	} else if ( document.all ) {
		return document.all[ id ].style;
	} else if ( document.layers ) {
		return document.layers[ id ];
	}
}



// * * * * * * * * * * * * * * * * * * * * * * * *
// * * * * * * * * * * * * * * * * * * * * * * * *
// * * * * * * * * * * * * * * * * * * * * * * * *
var _FP_PositionAdjusted = {};
