
/* Init Script Library
 *
 * Die grundsaetzliche Methode zum Laden der benoetigten bzw. angeforderten Scriptbibliotheken
 * entstammt ScriptAculoUs (http://script.aculo.us/)
 */
var JSLIB = {
	standard  : ['extend','widget','mooprompt','slimbox','calendar'],
	calendar  : {path: 'calendar/', f: ['calendar.js','lang/calendar-{lang}.js','calendar-setup.js']},
	extend    : {path: 'extends/',  f: ['string.js']},
	mooprompt : {path: 'mooprompt/',  f: ['mooprompt.js']},
	slimbox   : {path: 'slimbox/',  f: ['slimbox.js']},
	widget    : {path: 'widgets/',  f: ['datecheck.js','validate-form.js']},
	path_lib  : 'jscript-library/',
	path_root : '',
	lang      : 'de',
	load      : {},

	require: function(lib){
		document.write("<script language=\"javascript\" type=\"text/javascript\" src=\""+lib+"\"></script>");
	},

	load: function(){
		var t  = this;

		if (!( $type(Class) && $type(Object.extend) && $type(Object.Native) )) {
			throw("JScriptLibrary(JSL) requires the object-oriented javascript framework 'mootools' >= release 1.00 (mootools.net)");
		} else {

			if ($ES('script',$$('head'))) {
				$ES('script',$$('head')).each(function(o){
					if (o.src && o.src.match(/jscript-library\.js(\?.*)?$/)) {
						t.path_root = o.src.replace(/jscript-library\.js(\?.*)?$/,'');

						if (o.src.indexOf("?")!=-1){
							var q_string = o.src.split('?');

							if (q_string[1].indexOf("&")!=-1) {
								q_string[1].split('&').each(function(e){
									if (e.indexOf("=")!=-1) {
										var modul_dat = e.split('=');
										t.load[modul_dat[0]] = modul_dat[1];
									}
								});
							} else {
								if (q_string[1].indexOf("=")!=-1) {
									var modul_dat = q_string[1].split('=');
									t.load[modul_dat[0]] = modul_dat[1];
								}
							}
						}

						// Sprache überschreiben?
						if( t.load.lang ) t.lang = t.load.lang.toLowerCase();

						// Standardmodule durchlaufen. Alle Module komplett laden, außer wenn durch User auf FALSE gesetzt
						t.standard.each(function(m) {
							if (t.load[m]!='false')
			                    t[m].f.each(function(file) {
			                    	t.require(t.path_root+t.path_lib+t[m].path+file.replace(/\{lang\}/,t.lang.toLowerCase()));
			                    	//t.require(t.path_root+t.path_lib+t[m].path+file);
			                    });
						});

						// Eigene JS-Files gleich mit laden?
						if (t.load.root) {
							if (t.load.root.indexOf(",")!=-1){
								t.load.root.split(',').each(function(e){ t.require(t.path_root+e+'.js'); });
							} else {
		                    	t.require(t.path_root+t.load.root+'.js');
							}
						}

					}
				});
			}
		}
	}
}

JSLIB.load();
