/**
 * Loads the shadow box with YUI interface
 * @fileOverview
 * @author marco.l
 * @version 1.0
 * @since 2008-10-23
 */

(function()
{
	
	//creating gadget info
	var gadget = {gadget: "shadowboxGadget", status: "waiting", start: init};
	
	//check for Guestcentric Gadgets Stack
	if(!window.gcGadgetStack)
	{
		//registering gcGadgetStack
		gadget.status = "loading";
		window.gcGadgetStack = [gadget];
		gadget.start();
	}
	else if(gcGadgetStack[gcGadgetStack.length-1].status === "loaded")
	{
		//registering gcGadgetStack
		gadget.status = "loading";
		gcGadgetStack.push(gadget);
		gadget.start();
	}
	else
	{
		//adding gadget to Guestcentric Gadgets Stack
		gcGadgetStack.push(gadget);
	}
	
	
	/**
	 * changes the gadget status
	 */
	function changeGadgetStatus()
	{
		//changing the gadget status
		for(var i=0, li=gcGadgetStack.length; i<li; i++)
		{
			var cur = gcGadgetStack[i];
			
			if(cur.status === "loading")
			{
				cur.status = "loaded";
			}
			else if(cur.status === "waiting")
			{
				cur.status = "loading";
				cur.start();
				break;
			}
		}
	} //END OF changeGadgetStatus
	
	/**
	 * initiates the shadowbox gadget
	 */
	function init()
	{
		//if there isn't YAHOO
		if(!YAHOO)
		{
			return;
		}
		
		//loading necessary files
		var loader = new YAHOO.util.YUILoader(
		{
			require: ["dom", "animation", "event"],
			loadOptional: true,
			onSuccess:	function()
						{
							initShadowbox();
						},
			onFailure:	function()
						{
							changeGadgetStatus();
						}
		});
		
		//loading necessary YUI modules
		if(!YAHOO.util.Dom || YAHOO.util.Event || YAHOO.util.Animation)
		{
			loader.insert();
		}
		else
		{
			initShadowbox();
		}
	} //END OF init


	/**
	 * starting the shadowbox
	 */
	function initShadowbox()
	{
		//change gadget loading status
		changeGadgetStatus();
		
		var interfaceXHRAttributes =
		{
			onSuccess: 	function()
						{
							var shadowXHRAttributes =
							{
								onSuccess: 	function()
											{
												Shadowbox.init();
											}
							};
							
							//call shadowbox
							YAHOO.util.Get.script(securePath+"/js/shadowbox/shadowbox.js", shadowXHRAttributes);
						}
		};
		
		//call shadowbox yui interface
		YAHOO.util.Get.script(securePath+"/js/shadowbox/shadowbox-yui.js", interfaceXHRAttributes);
	}
}
)();

