var CoreClass = Class.create();
CoreClass.prototype = {
	initialize:function(){
		this.deleteProtection();
		this.logging = false;
	},

	log:function(s) {
		if(this.logging)
			console.log(s);
	},
	
	url:function(s){
		var url = baseDir+'/'+s;
		url = this.filterUrl(url);
		return url;
	},
	
	fullUrl:function(s){
		return 'http://'+document.domain+this.url(s);
	},

	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);
	},
	
    trim:function(s) {
      return s.replace (/^\s+/, '').replace (/\s+$/, '');  
    },

	/**
	 * 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, persist){
		if(s && persist) this.stayBusy = true;
		if(!s && persist) this.stayBusy = false;
		if(!s && this.stayBusy) return;
		
		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(obj){
		if (typeof(obj) == 'object') {
			var tmpString = '';
			
			for (var key in obj) {
				tmpString += '&' + key +'=' + encodeURIComponent(obj[key]);
			}
			return tmpString;
		}
	},
	
	html_entity_decode:function(str) {
		var ta = document.createElement("textarea");
		ta.innerHTML=str.replace(/</g,"&lt;").replace(/>/g,"&gt;");
		toReturn = ta.value;
		ta = null;
		return toReturn
	},
	
	trimStr:function(s,length) {
		var length = parseInt(length);
		if(s.length > length)
			s =  s.substring(0,(length-3)) + '...';
		return s;
	},
	
	stristr:function( haystack, needle, bool ) {
   
	    var pos = 0;
	 
	    haystack += '';
	    pos = haystack.toLowerCase().indexOf( (needle+'').toLowerCase() );
	    if( pos == -1 ){
	        return false;
	    } else{
	        if( bool ){
	            return haystack.substr( 0, pos );
	        } else{
	            return haystack.slice( pos );
	        }
	    }
	},
	
	//gibt aus einem String "rgb(255,35,24)" ein Array r:255, g:35, b;24 zurück
	getRGBFromString:function(rgbString)
	{
		if(this.stristr(rgbString, 'rgb('))
		{
			var temp = rgbString.split("(");
			var c = temp[1].split(",");
			
			c[2]=c[2].replace(/\)/, "");
			var ret = new Array(c[0],c[1],c[2]); 
			return ret;	
		}
		else
		{
			return false;
		}
	}	
}
var Core = new CoreClass();

var TextClass = Class.create();
TextClass.prototype = {
	initialize:function(){},
	numberFormat:function(number, decimals, dec_point, thousands_sep ) {
	    var n = number, c = isNaN(decimals = Math.abs(decimals)) ? 2 : decimals;
	    var d = dec_point == undefined ? "," : dec_point;
	    var t = thousands_sep == undefined ? "." : thousands_sep, s = n < 0 ? "-" : "";
	    var i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0;
	    return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
	}
}

var Text = new TextClass();


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 str_replace(search, replace, subject)
{
    var s = subject;
    var ra = r instanceof Array, sa = s instanceof Array;
    var f = [].concat(search);
    var r = [].concat(replace);
    var i = (s = [].concat(s)).length;
    var j = 0;
    
    while (j = 0, i--) {
        if (s[i]) {
            while (s[i] = (s[i]+'').split(f[j]).join(ra ? r[j] || "" : r[0]), ++j in f){};
        }
    }
 
    return sa ? s : s[0];
}

function encodeRE(s) {
	return s.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1');
}

function debug(debugvar)
{
	alert("DEBUG: \n" + debugvar.type + "\n" + debugvar.toSource());
}

function openHilfePopup(link)
{
	window.open(link.href, 'popup', 
		'width=640,height=750,scrollbars=yes,toolbar=no,status=no,resizable=yes,menubar=no,location=no,directories=no');
		
	return false;	
}
