var UPDATE_KEY = "3";
var MANAGED = false;
var GZ = false;

var cScriptDependencies = [
	"script-routing.js", 
	"selection/selection-listener.js", 
	"selection/drag_n_drop.js", 
	"toolbar/yade-toolbar.js", 
	"table/table.js",
	"content/undo.js", 
	"content/commands.js", 
	"content/shortcuts.js", 	
	"content/content-drag-n-drop.js", 	
	"color/color.js",
	"properties/properties.js",	
	"properties/page-parameters.js",
	"tidy/parser.js",
	"data/xml-provider.js",
	"yade.js"
];

var cPublicMethods = ["resizeContent", "loadPage", "loadHTML", "setBOPageMode", "setFormFieldMode", "getContentXml", "getContentText"]

//Trying to fetch the editor from a parent frame
var oFrameCache = null;

var o = parent;
while( o != o.parent ) {
	if( o.__frameCache ) {
		oFrameCache = o.__frameCache;
		break;
	}
	o = o.parent;
}

var bFrameMerged = false;
if( oFrameCache ) {
	if( window.frameElement ) {
		window.bubbleParent = true;
		if( window.frameElement.id != "__yadeFrame" ) {
			bFrameMerged = true;
			if( oFrameCache.document.all.__yadeFrame ) {
				window.onload = function() {
					document.body.style.margin = "0px";
					document.body.insertAdjacentElement("BeforeEnd", oFrameCache.document.all.__yadeFrame);					
					hookEvents();					
					__yadeFrame.parseHash(document.location.hash);
				}
			}
			else {
				window.onload = function() {
					document.body.style.margin = "0px";
					document.body.innerHTML = "<iframe id=\"__yadeFrame\" frameborder=\"0\" scrolling=\"no\" style=\"width:100%; height:100%;\"></iframe>";
					__yadeFrame.navigate(document.location.href);					
				}
			}
					
			
		}
		else {
			window.attachEvent("onbeforeunload", function() {
				if( oFrameCache ) {	
					loadPage("about:blank");
					window.cleanUp();
					window.hideContent(true);
					oFrameCache.document.body.insertAdjacentElement("BeforeEnd", window.frameElement);
				}
			});
		}
	}
}


function onEditorInitialized(oEditor)
{
	hookEvents();
}

function hookEvents()
{
	for( var i = 0; i < cPublicMethods.length; i++ ) {
		if( __yadeFrame[cPublicMethods[i]] ) {
			window[cPublicMethods[i]] = __yadeFrame[cPublicMethods[i]];
		}
	}
}







function includeScript(i)
{
	if( i < cScriptDependencies.length ) {
		var oScript = document.createElement("script");				
		document.body.appendChild(oScript);		
		oScript.onreadystatechange = function() { if( this.readyState == "loaded" ) setTimeout("includeScript(" + (this.__scriptNumber + 1) + ");", 1); }
		if( MANAGED ) {
			oScript.src = "gz/default.aspx?f=../" + cScriptDependencies[i] + 
				"&exp=500" +
				"&update-key=" + UPDATE_KEY + (!GZ ? "&gz=false" : "");
		}
		else
			oScript.src = cScriptDependencies[i];
		oScript.__scriptNumber = i;

	}
}

var bScriptsLoaded = false;
function includeScripts() {
	if( !bScriptsLoaded ) {
		bScriptsLoaded = true;						
		includeScript(0);
	}
	var oHead = document.all.tags("head")[0];
	var oLink = document.createElement("link");
	oLink.rel = "stylesheet";
	oLink.href = "style.css";
	oHead.insertAdjacentElement("BeforeEnd", oLink);
}

if( !bFrameMerged ) {
	window.attachEvent("onload", includeScripts);
}	
