var CoreClass = Class.create();
CoreClass.prototype = {
	initialize:function(){
		this.deleteProtection();
	},

	url:function(s){
		var url = baseDir+'/'+s;
		url = this.filterUrl(url);

		//wenn keine Cookies existieren dann sid anhängen
		if(!document.cookie)
		{
			if(url.indexOf("&sid") == -1 && url.indexOf("?sid") == -1)
			{
				if(url.indexOf("?") > 0)
				{
					url += "&sid="+current_session;
				}
				else
				{
					url += "?sid="+current_session; 
				}
			}
		}
		return url;
	},

	goTo:function(s){
		window.location = this.url(s);
	},

	filterUrl:function(s){
		s = s.replace(/[\/]+/g,"/");
		return s;
	},
	
	parseDate:function(datetime){
		var ts = datetime.split('-');
		return ts[0]+'.'+ts[1]+'.'+ts[2].substr(0,4);
	},
	
	/**
	 * DeleteRequest
	 * Sicherheitsabfrage vor dem Löschen eines Datensatzes
	 */
	deleteProtection:function(){
		var els = document.getElementsByTagName("A");
		if (els) {
			for (var i = 0; i < els.length; i++) {
				var el = els[i];
				var at = el.getAttribute("deleteRequest");
				if (at || at == '') {
					Event.observe(el, 'click', function(e){
						var sel = Event.element(e);
						var sat = sel.getAttribute("deleteRequest");
						if (sat == '') {
							sat = 'Soll das gewählte Element gelöscht werden?'
						}
						if (!confirm(sat)) 
							Event.stop(e);
					});
				}
			}
		}
	},
	
	enableLoading:function(s){
		var status = s;
		var ldiv = 'core_loading';
		
		if(!$(ldiv)){
			var ld = Element.extend(Builder.node('div',{id:ldiv},'Loading...'));
			$(ld).addClassName('coreLoader');
			$(ld).setStyle({
 				backgroundColor: '#333',
 				position: 'absolute',
				top:'0px',
				left:'0px',
				width:'300px',
				height:'300px'
			});
			Element.hide(ld);
			document.body.appendChild(ld);
		}
		
		if(status){
			Element.show(ldiv);
		}else{
			Element.hide(ldiv);
		}
	},

	object2string: function (name, arr, path)
	{
		if (typeof path == 'undefined') {
			path = '';
		}

        var ret='';

        if(typeof arr == 'object')
        {
                for(var i in arr)
                {         
                		if (typeof arr[i] == 'object') {
                			ret += this.object2string(name,arr[i], path+'['+i+']');
                		} else {
                			if(typeof arr[i] != 'function')
                				ret += '&'+name+path+'['+i+']='+encodeURIComponent(arr[i]);
                		}
                }

        }
        return ret;
	}
}
var Core = new CoreClass();

Event.fireEvent = function(eventType,element) {
	if (document.createEvent) {
		var evt = document.createEvent("Events");
		evt.initEvent(eventType, true, true);
		$(element).dispatchEvent(evt);
	} else if (document.createEventObject) {
		var evt = document.createEventObject();
		$(element).fireEvent('on' + eventType, evt);
	}
}

function encodeRE(s) {
	return s.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1');
}


/* Arbeit mit InputFeldern, "Value"-Text wird bei Click entfernt */
var clearInput = Class.create({
	
	initialize: function()
	{
		this.inputFieldControl();
	},
	inputFieldControl: function()
	{
		if($$('.inputTextClear'))
	 	{
			var self=this;
		 	$$('.inputTextClear').invoke('observe','click',function()
		 	{
		 		self.removeValue(this);
		 	});
			$$('.inputTextClear').invoke('observe','focus',function()
		 	{
		 		self.removeValue(this);
		 	});
	 	}
	},
	removeValue: function(obj)
	{
		var htmlValue = obj.readAttribute('value');  	//prüft Wert HTML-Attribute 'value'
 		var tempValue = obj.value;						//prüft neuen Wert des temporären 'value'
 		if(htmlValue === tempValue)
 		{
 			obj.value = "";
 		}
	}
});


//Liest ein Cookie aus (bspw. für Drag ME's)
function readCookie(name)
{
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++)
    {
        var c = ca[i];
        while (c.charAt(0)==' ')
        {
            c = c.substring(1,c.length);
        }

        if (c.indexOf(nameEQ) == 0)
        {
            return c.substring(nameEQ.length,c.length).split(',');
        }
    }
    return null;
}


Event.observe(window,'load',function()
		{
var inputUsability = new clearInput();
		});


/*
 * global vars
 */
	// initialization of __GLOBALS
	__GLOBALS = new Object();

		// duration of animations
			// please use one of this 3 types for every animation
			__GLOBALS.animation = new Object();
				__GLOBALS.animation.durationShort = 0.3;
				__GLOBALS.animation.durationNormal = 0.6;
				__GLOBALS.animation.durationLong = 1;
		// global counter as workaround for clustering
			__GLOBALS.cluster = new Object();
				__GLOBALS.cluster.counter = 0;

		// current Browser
			__GLOBALS.browser = new Object();
				__GLOBALS.browser.fullName = navigator.userAgent;
				__GLOBALS.browser.shortName = setBrowserShortName();
				__GLOBALS.browser.version = setBrowserVersion();


function setBrowserShortName()
{
	var shortName = '';

	if(__GLOBALS.browser.fullName.indexOf("MSIE")>=0)
		shortName = 'IE';
	else if(__GLOBALS.browser.fullName.indexOf("Firefox")>=0)
		shortName = 'FF';
	else if(__GLOBALS.browser.fullName.indexOf("Chrome")>=0)
		shortName = 'GC';
	else if(__GLOBALS.browser.fullName.indexOf("Safari")>=0)
		shortName = 'SF';
	else
		shortName = 'XX';

	return shortName;
}

function setBrowserVersion()
{
	var version;

	if(/MSIE (\d+\.\d+);/.test(__GLOBALS.browser.fullName))
	{
		version = new Number(RegExp.$1);

		if (version>=8)
			return 8;
		else if (version>=7)
			return 7;
		else if (version>=6)
			return 6;
		else if (version>=5)
			return 5;
		else
			return false;
	}
	else if(/Firefox[\/\s](\d+\.\d+)/.test(__GLOBALS.browser.fullName))
	{
		version=new Number(RegExp.$1);

		if (version>=3)
			return 3;
		else if (version>=2)
			return 2;
		else if (version>=1)
			return 1;
		else
			return false;
	}
	else
	{
		return false;
	}
}
