
/**
  @version: 2.0
  @author: Struppi
  */

  
/**
	 @param {String} Modul  Name des einzubindenen Moduls
	 @param {Object} Parameter Der Parameter für die ini() Funktion des Moduls
	this.include = function( modul, param )	{
*/

// Globale Variabeln
var JS_PATH = './';
var JS_INCLUDE = {};
var JS_SELF = 'include.js';

function include(src) {
	if( !is_string(src) ) return;
	
	src = src.toLowerCase();
    
	// für die Schreibweise:  Pfad::Datei
	if(src.indexOf('::') > -1) {
         var tmp = src.split('::');
         src = tmp[0] + '/' + tmp[1] + '.js';
    }
	
	if(src.indexOf('.') != 0) {
		//  mit Punkt wird der JS_LIB Pfad nicht verwendet
		src = JS_PATH + '/' + src
	}
	if( JS_INCLUDE[src] ) return;
	
	document.write( '<script type="text/javascript" src="' + src + '"><\/script>' );

	
	JS_INCLUDE[src] = true;
};
window.onload = function() { if(typeof main == 'function') main();};
/**
* Den Basispfad zu den Bibliotheken finden.
*/
if(document.all && !window.opera)	{
	// IE
	var o = document.all.tags('script');
	for(var i = 0; i < o.length; i++)
	{
		if( o[i].src.lastIndexOf( JS_SELF ) != -1)
		{
			var src = o[i].src;
			var idx = src.lastIndexOf('/');
			var base = '';
			if(src.indexOf('http://') == -1)
			{
				base = self.location.href;
				base = base.substring(0, base.lastIndexOf('/') + 1) ;
			}
			if(idx == -1) idx = 0;
			JS_PATH = base + src.substring(0, idx);
			break;
		}
	}
		
}	
else if(document.getElementsByTagName)	{
	// DOM
	var o = window.document.getElementsByTagName('script');
	for(var i = 0; i < o.length; i++)
	{
		var src = o[i].src;
		var idx = src.lastIndexOf(JS_SELF);
		if(src && idx > -1)
		{
			JS_PATH = src.substring(0, idx - 1) ;
			break;
		}
	}
	JS_PATH += '/';
}
	

/**
	Testet den Parameter auf eine Zahl
	@type Boolean
*/
function is_number(w){ return (typeof w == 'number') && !isNaN(w); };
/**
	Testet den Parameter auf einen String
	@type Boolean
*/
function is_string(w){ return typeof w == 'string'; };
/**
	Testet den Parameter auf ein Objekt
	@type Boolean
*/
function is_object(w){ return typeof w == 'object'; };
/**
Testet den Parameter auf eine Funktion
@type Boolean
*/
function is_function(a){ return typeof a == 'function'; };
/**
Testet die Parameter auf Gleichheit
@type Boolean
*/
function is_equal(a, b){ a && b && a.constructor == b.constructor; };
/**
Testet ob der Parameter defniert ist
@type Boolean
*/
function defined(w){ return typeof w != 'undefined' && w != null; }	

/**
Eine Funktion an ein Objekt koppeln
*/
Function.prototype.bind = function(obj)
{
	var self = this;
	var args = [];
	for(var i = 0; i < arguments.length; i++) args.push( arguments[i] );
	
	return function(evt) { self.call(obj, args); };
}
Function.prototype.bindEvent = function(obj)
{
	var self = this;
	
	return function(evt) { self.call(obj, evt || window.event); };
}

// Für alte Browser
if(!document.getElementById) include('getelementById.js');
if(!Array.prototype.push) include('Array::Push');


// Noch in Arbeit

//include('Std::Liste');
//include('String::Trim');

String.prototype.camelize = function()
{
	// CSS Format umwandeln in das JS Format
	var i = this.indexOf('-');
	
	if(i == -1) return this;
	var tmp = this.substring(0, i)
	+ this.substr(i + 1, 1).toUpperCase()
	+ this.substring(i + 2)
	;
	return tmp.trim();
}

function $()
{
    var elements = new Array();
    for (var i = 0; i < arguments.length; i++)
    {
        var element = arguments[i];
        if (is_string( element )) element = document.getElementById(element);

        // Das Objekt wird um die Funktionen
        // eines Elementes erweitert
        //if(!element.Element) extendObj(element, new Element() );

        if (arguments.length == 1) return element;
        elements.push(element);

    }
    return elements;
}
function findPath(link)
{
	if(!link) return './';
	var idx = link.lastIndexOf('/');
	var start = 0; //link.lastIndexOf('//');
	return link.substring(start + 1, idx + 1);
}

function height(){ return window.innerHeight || this.Body.offsetHeight;}
function width () { return window.innerWidth || this.Body.offsetWidth; }
Body = window.document.documentElement || window.document.body;
