/* Hiermit werden Abh�ngigkeiten zwischen den Klassen definiert */
P_Dependencies = {
	autocomplete: ["html", "browser"],
	"content/suche": ["ajax"]
};

P_Framework = {
    modules:[],
    frameworkPath:"/scripts/framework/",
    addModule:function(module) {
		for(a=0;a<P_Framework.modules.length;a++) {
            if(P_Framework.modules[a] == module) return false;
        }
		if(P_Dependencies[module] != undefined) {
			for( a =0; a < P_Dependencies[module].length; a++) {
				P_Framework.addModule(P_Dependencies[module][a]);
			}
		}

		P_Framework.modules.push(module);
    },
    write:function() {
        if(P_Framework.modules.length > 0) {
            var files = [];
            for(a=0;a<P_Framework.modules.length;a++) {

				if(P_Framework.modules[a].substr(0,6) != "jquery") {
					files.push("/framework/" + P_Framework.modules[a] + ".js");
				} else {
					// document.writeln("<script type='text/javascript' src='/scripts/jquery/" + P_Framework.modules[a] + ".js'></script>");
				}
            }

            /* document.writeln("<script type='text/javascript' src='/static.php?type=javascript&files=" + files.join(",") + "'></script>"); */
            if(location.host == "praktika.lokal") {
            	for(a = 0;a < files.length; a++) {
            		document.writeln("<script type='text/javascript' src='/scripts/" + files[a] + "'></script>");
            	}
            	
            } else {
            	document.writeln("<script type='text/javascript' src='/min/?b=scripts&f=" + files.join(",") + "'></script>");
            }
        }
    },
    onload:function(fn) {
        P_Framework.addEvent(window, "load", fn);
    },
    addEvent:function (obj, evType, fn){
        if (obj.addEventListener){
             obj.addEventListener(evType, fn, true);
             return true;
        } else if (obj.attachEvent){
             var r = obj.attachEvent("on"+evType, fn);
            return r;
        } else {
            return false;
        }
    },
	checkBrowser:function(value) {
		
	},
	// http://www.andrewpeace.com/javascript-is-string.html
	is_string:function(value) {
		return typeof(value)=='string' && (isNaN(value) || value === "");
	},
	is_boolean:function(value) {
		return typeof(value)=='boolean';
	},
	is_bool:function(value) {
		return typeof(value)=='boolean';
	},
	is_number:function(value) {
		return typeof(value)=='number';
	},
	is_object:function(value) {
		return typeof(value)=='object';
	},
	is_function:function(value) {
		return typeof(value)=='function';
	},
	/**
	 * Liefert ein Element zur�ck. Egal ob ID oder Element �bergeben wurde
	 **/
	getElement:function(ele) {
		if(P_Framework.is_string(ele) && document.getElementById(ele) != undefined) return document.getElementById(ele);

		if(P_Framework.is_object(ele) === false) return false;
		
		return ele;
	},
	removeDubletten:function(a1) {
	   var a2 = new Array();
	   var a3 = new Array();
	   for(var i = 0; i < a1.length; i++)
	    {
	     if(typeof(a2[a1[i]]) == "undefined")
	      {
	       a2[a1[i]] = true;
	       a3[a3.length] = a1[i];
	      }
	    }
	   var a4 = new Array();
	   for(var i = 0; i < a3.length; i++){a4[a4.length] = a3[i]}
	   return a4;
	},
	getTop:function (el) {
		return (el.offsetParent)?el.offsetTop+P_Framework.getTop(el.offsetParent) : el.offsetTop;
	},
	getLeft:function (el) {
		return (el.offsetParent)?el.offsetLeft+P_Framework.getLeft(el.offsetParent) : el.offsetLeft;
	},
	getPos:function(owner) {
        owner = P_Framework.getElement(owner);
		if(owner === undefined){
                return {top : 0, left:0 , width : 0, height : 0};
        }

        var e = owner;
        var oTop = e.offsetTop;
        var oLeft = e.offsetLeft;
        var oWidth = e.offsetWidth;
        var oHeight = e.offsetHeight;
        while(e = e.offsetParent)
        {
                oTop += e.offsetTop;
                oLeft += e.offsetLeft;
        }

        return {
                top : oTop,
                left : oLeft,
                width : oWidth,
                height : oHeight
        };
	}
}

/**
 * Notwendige Erweiterungen der JS-Systeme f�r P_Framework
 */
/**
 * function(e) { ... }.bind(this);
 */
Function.prototype.bind = function(obj) {
    var method = this,
    temp = function() {
        return method.apply(obj, arguments);
    };

  return temp;
}

       // JSON-Klasse  -> http://www.json.org/json2.js
        if(!this.JSON){JSON={}}(function(){function f(n){return n<10?'0'+n:n}if(typeof Date.prototype.toJSON!=='function'){Date.prototype.toJSON=function(a){return this.getUTCFullYear()+'-'+f(this.getUTCMonth()+1)+'-'+f(this.getUTCDate())+'T'+f(this.getUTCHours())+':'+f(this.getUTCMinutes())+':'+f(this.getUTCSeconds())+'Z'};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(a){return this.valueOf()}}var e=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},rep;function quote(b){escapable.lastIndex=0;return escapable.test(b)?'"'+b.replace(escapable,function(a){var c=meta[a];return typeof c==='string'?c:'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+b+'"'}function str(a,b){var i,k,v,length,mind=gap,partial,value=b[a];if(value&&typeof value==='object'&&typeof value.toJSON==='function'){value=value.toJSON(a)}if(typeof rep==='function'){value=rep.call(b,a,value)}switch(typeof value){case'string':return quote(value);case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null'}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==='[object Array]'){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||'null'}v=partial.length===0?'[]':gap?'[\n'+gap+partial.join(',\n'+gap)+'\n'+mind+']':'['+partial.join(',')+']';gap=mind;return v}if(rep&&typeof rep==='object'){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==='string'){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v)}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v)}}}}v=partial.length===0?'{}':gap?'{\n'+gap+partial.join(',\n'+gap)+'\n'+mind+'}':'{'+partial.join(',')+'}';gap=mind;return v}}if(typeof JSON.stringify!=='function'){JSON.stringify=function(a,b,c){var i;gap='';indent='';if(typeof c==='number'){for(i=0;i<c;i+=1){indent+=' '}}else if(typeof c==='string'){indent=c}rep=b;if(b&&typeof b!=='function'&&(typeof b!=='object'||typeof b.length!=='number')){throw new Error('JSON.stringify');}return str('',{'':a})}}  if(typeof JSON.parse!=='function'){ JSON.parse=function(c,d){var j;function walk(a,b){var k,v,value=a[b];if(value&&typeof value==='object'){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v}else{delete value[k]}}}}return d.call(a,b,value)}e.lastIndex=0;if(e.test(c)){c=c.replace(e,function(a){return'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4)})}if(/^[\],:{}\s]*$/.test(c.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){j=eval('('+c+')');return typeof d==='function'?walk({'':j},''):j}throw new SyntaxError('JSON.parse');}}}());

