//drjs.main.js
//Main file

if(typeof(_drjsPath)=="undefined") {
	_drjsPath = "";
}
var _drjsLoadTimeout = 50;
var drjs = {
	Version:	"0.3",
	ImagePath: "../img/",
	includedFiles: [],
	files: {
		//namespacename: [loading, loaded, filename, varname, dependencies]
		core:			[0, 0, "drjs.core.js", "drjs.files.core"],
		ajax:			[0, 0, "drjs.ajax.js", "drjs.files.ajax"],
		bigfile:		[0, 0, "drjs.bigfile.js?"+Date.UTC(new Date()).toString(), "drjs.files.bigfile"],
		calendar:		[0, 0, "drjs.calendar.js", "drjs.files.calendar"],
		contextmenu:	[0, 0, "drjs.contextmenu.js", "drjs.files.contextmenu"],
		form:			[0, 0, "drjs.form.js", "drjs.files.form"],
		historycontrol:	[0, 0, "drjs.historycontrol.js", "drjs.files.historycontrol"],
		string:			[0, 0, "drjs.string.js", "drjs.files.string"],
		ui:				[0, 0, "drjs.ui.js", "drjs.files.ui"],
		wysiwyg:		[0, 0, "drjs.wysiwyg.js", "drjs.files.wysiwyg"],
		xml:			[0, 0, "drjs.xml.js", "drjs.files.xml"],
		xsl:			[0, 0, "drjs.xsl.js", "drjs.files.xsl"],
		
		uiFloatBox:		[0, 0, "drjs.ui.floatbox.js", "drjs.files.uiFloatBox"],
		uiWizardBox:	[0, 0, "drjs.ui.wizardbox.js", "drjs.files.uiWizardBox", ["drjs.files.uiFloatBox"]],
		uiMessageBox:	[0, 0, "drjs.ui.messagebox.js", "drjs.files.uiMessageBox", ["drjs.files.uiFloatBox"]],
		uiWindowBox:	[0, 0, "drjs.ui.windowbox.js", "drjs.files.uiWindowBox", ["drjs.files.uiFloatBox"]],
		
		uiSpecialForms:	[0, 0, "drjs.ui.specialforms.js", "drjs.files.uiSpecialForms"],
		
		formStyle:		[0, 0, null, "drjs.form.style.js", "drjs.files.formStyle"],

		onLoad:null
	},
	loadComplete: function(file) {
		if(file!=null) {
			file[1] = 1;
		}
		if(this.files.onLoad!=null) {
			var allLoaded = true;
			for(var property in this.files) {				
				try {
					if(this.files[property][0]==1 && this.files[property][1]==0) {					
						allLoaded = false;
					}
				} catch(e) {}
			}			
			if(allLoaded) {
				this.files.onLoad();
				this.files.onLoad = null;
			}
		}
	},
	setOnLoad: function(fn) {
		this.files.onLoad = fn;
		this.loadComplete();
	}
}
function includeCss(file) {
	var cssNode = document.createElement('link');
	cssNode.setAttribute('rel', 'stylesheet');
	cssNode.setAttribute('type', 'text/css');
	cssNode.setAttribute('href', file);
	document.getElementsByTagName('head')[0].appendChild(cssNode); 	
}
function include(file, callback) {
	if(drjs.files.core[1]!=1) {
		setTimeout("includeLater('"+file+"')", _drjsLoadTimeout);
	} else {
		drjs.includedFiles.push([1, 0, file]);
		if(file.indexOf("?")>0) {
			drjs.includedFiles[file.substring(file.lastIndexOf("/")+1, file.indexOf("?"))] = [];
			drjs.includedFiles[file.substring(file.lastIndexOf("/")+1, file.indexOf("?"))][0] = 0
			drjs.includedFiles[file.substring(file.lastIndexOf("/")+1, file.indexOf("?"))][1] = callback;
		} else {
			drjs.includedFiles[file.substring(file.lastIndexOf("/")+1)] = [];
			drjs.includedFiles[file.substring(file.lastIndexOf("/")+1)][0] = 0;
			drjs.includedFiles[file.substring(file.lastIndexOf("/")+1)][1] = callback;
		}
		var newScript=document.createElement("script");
		document.getElementsByTagName("head")[0].appendChild(newScript);
		newScript.language="javascript";
		newScript.src=file;
	}
}
function includeLater(file) {
	include(file);
}
function using(drjsFile) {
	drjsFile[0]=1;
	var dLoaded = true;	
	if(drjsFile.length==5) {
		for(var i=0; i<drjsFile[4].length; i++) {
			if(eval(drjsFile[4][i])[1]!=1) {
				dLoaded = false;
				setTimeout("usingLater('"+drjsFile[3]+"')", _drjsLoadTimeout);
			}
		}
	}
	if((drjsFile!=drjs.files.core && drjs.files.core[1]!=1) || !dLoaded) {
		setTimeout("usingLater('"+drjsFile[3]+"')", _drjsLoadTimeout);
	} else if(drjsFile.length==4 || drjsFile.length==5 && drjsFile[1]==0) {		
		var newScript=document.createElement("script");
		document.getElementsByTagName("head")[0].appendChild(newScript);
		newScript.language="javascript";
		newScript.src=_drjsPath+drjsFile[2];				
	}
	
}
function usingLater(drjsFile) {
	using(eval(drjsFile));
}
using(drjs.files.core);