if (typeof acudeoComponents != "object"){
	acudeoComponents = [];

	function isAcudeoComponentsReady(){
		return true;
	}
	
	function addAcudeoComponents(node){
		for (var i=0; i<acudeoComponents.length; i++){
			if (acudeoComponents[i] == node){
				return;
			}
		}
		
		acudeoComponents[acudeoComponents.length] = node;
	}
	
	function embedJSCallback(id,node){
		if (!node){
			node = document.body;
		}
		
		try{
			var pageInfo = getPageInfo();
			
			var contentRect = {
				top:node.offsetTop,
				left:node.offsetLeft,
				width:node.offsetWidth,
				height:node.offsetHeight
			};
			
			if (contentRect.width > 0 && contentRect.height > 0){
				node.acudeoComponentCallback(id, pageInfo, contentRect);
				addAcudeoComponents(node);
			}
		}
		catch(e){}
			
		if (node.childNodes && node.childNodes.length){ 
			var evalNode = node.childNodes;
			for (var i in evalNode){
				embedJSCallback(id,evalNode[i]);
			}
		}
	}
	
	function getPageInfo() {
		var screenX = 0;
		var screenY = 0;
		var screenWidth = 0;
		var screenHeight = 0;
		
		if( typeof( window.pageYOffset ) == "number" ) {
			screenY = window.pageYOffset;
			screenX = window.pageXOffset;
		} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
			screenY = document.body.scrollTop;
			screenX = document.body.scrollLeft;
		} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
			screenY = document.documentElement.scrollTop;
			screenX = document.documentElement.scrollLeft;
		}
	
		if( typeof( window.innerWidth ) == "number" ) {
			screenWidth = window.innerWidth;
			screenHeight = window.innerHeight;
		} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
			screenWidth = document.documentElement.clientWidth;
			screenHeight = document.documentElement.clientHeight;
		} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
			screenWidth = document.body.clientWidth;
			screenHeight = document.body.clientHeight;
		}
	
		return {left:screenX, top:screenY, width:screenWidth, height:screenHeight, availWidth:screen.availWidth, availHeight:screen.availHeight, outerWidth:window.outerWidth, outerHeight:window.outerHeight};
	}
	
	function updatePageInfo(){
		var pageInfo = getPageInfo();
		for (var i=0; i<acudeoComponents.length; i++){
			acudeoComponents[i].acudeoComponentUpdatePageInfo(pageInfo);
		}
	}
	
	function addBrowserEvent( obj, type, fn ) {
		if ( obj.attachEvent ) {
			obj["e"+type+fn] = fn;
			obj[type+fn] = function(){obj["e"+type+fn]( window.event );};
			obj.attachEvent( "on"+type, obj[type+fn] );
		} else {
			obj.addEventListener( type, fn, false );
		}
	}
	
	addBrowserEvent(window, "scroll", function(event) { 
		updatePageInfo(); 
	}); 
	
	addBrowserEvent(window, "resize", function(event) { 
		updatePageInfo(); 
	}); 
};
