﻿/**
 * Standard-Scripts fuer thueringen.de
 * - Initiierung UserControls; Kennzeichnung durch css-classes
 *
 * (c) 2010 <i-D> internet & Design GmbH & Co. KG
 * Erfurter Str. 35
 * 99423 Weimar
 * Deutschland
 * Fon:     03643 7785 0
 * Fax:     03643 7785 29
 * E-Mail:  office@i-d.de
 * Web:     http://www.i.d.de/
 *
 * @author Michael Waack <m.waack@i-d.de>, Niels Bobogk <niels@i-d.de>
 */

/* -------------------------------------------------------------------------------- */


/**
 * Namespacing Thueringen
 */
var Thueringen = {		
	/**
	 * string Version
	 */
	VERSION: '0.1'
};

// ----------------------------------------------------------------------

/**
 * Standard-Klasse UserControl
 */
var ucClass = Class.create({
	/**
	 * Konstruktor
	 */
	initialize: function () {

		this.DEBUG   = true;
		this.CALLER  = false;
		this.appName = "uc";
		this.items   = new Array();
	},
	
	/**
	 * UserControl hinzufuegen
	 * @param {Object} obj
	 */
	add: function (obj) {
		this.items.push(obj);
	},
	
	/**
	 * 
	 * @param {Object} func
	 */
	initFunc: function (func) {
		this.inits.push(func);
	},

	/**
	 * Aufrufen um ein Event abzubrechen, z.B. wenn ein Link nicht ausgefuehrt werden soll,
	 * da ein onClick gesetzt wurde.
	 * @example uc.stopEvent(ev);
	 * @param {Object} ev - Event
	 */
	stopEvent: function (ev) {
		
		if (!ev) { // falls IE
			ev = window.Event;
			ev.cancelBubble = true;
			ev.returnValue = false;
		} else {
			ev.preventDefault();
			ev.stopPropagation();
		}
		if(typeof event != 'undefined') {
			if (event.cancelBubble) {
			        event.cancelBubble = true;
			}
			if (event.returnValue) {
			        event.returnValue = false;
			}
			if (event.stopPropagation) {
			        event.stopPropagation();
			}
			if (event.preventDefault) {
			        event.preventDefault();
			}
		}
	},

	/**
	 * Ermittelt die Position eines Elements auf der Seite von
	 * der Ecke oben links aus gesehen; das Prototype-Equivalent dazu
	 * ist augenscheinlich fehlerhaft
	 * @param {Object} obj
	 */
	cumulativeOffset: function(obj) {
		var pos = { y : 0, x : 0 };
		
		if (obj) {
			var elem = obj;
			while (elem && elem.tagName.toLowerCase() != 'body') {
				pos.y += elem.offsetTop;
				pos.x += elem.offsetLeft;
				elem = elem.offsetParent;
			}
		}
		return pos;
	},
	
	/**
	 * Ausgabe von Debuginformationen auf der Konsole
	 * @param {Object} msg - Nachricht
	 */
	debug : function(msg) {
		if ((typeof console) == 'object' && this.DEBUG) {
			if (this.CALLER) {
				console.debug(this.debug.caller);
			}
//			if(typeof opera.postError == 'function') {
//				opera.postError(msg);
//			} else {
//				console.debug(" -->\t" + msg);	
//			}
			console.debug(" -->\t" + msg);	
		} else if (this.DEBUG) {
			try {
				if (this.CALLER) {
					Debug.write(this.debug.caller);
				}
				Debug.write(msg);
			} 
			catch (ex) {
				//alert("Debug: " + msg);
			}
		}
	
	},
	
	/**
	 * Zeitverzögerung (prototype.delay verliert this. )
	 * @param {int} sec Anzahl Sekunden
	 * @param {object} obj das uc-Object (erstellt wegen ucStats (Fakten über Thüringen))
	 * @param {Funktion} fn Die Funktion welche aufgerufen werden soll (z.B. this.fillData bei den Fakten)
	 * @param {args} args Argument(e) die an die Funktion übergeben werden soll
	 */
	delay : function(sec,obj,fn,args) {
		var self = obj;
		self.fn = fn;
		self.args = args;
		window.setTimeout(
			function(){
				self.fn(self.args);}
				, sec*1000
			);
	},	
	
	/**
	 * Fehlerbehandlung
	 * @param {Object} err
	 */
	logError: function(err) {
		if ((typeof console) == 'object' && this.DEBUG) {
			console.error(err);	
		} else if (this.DEBUG) {
			alert("Error: " + err.description + "\n\r" + err.message + "\n\r" + err.name);
		}
	},
	/* Pfad vom root aus definieren, falls das web nicht im root liegt */
	rootPath : ''
	
});
/* -------------------------------------------------------------------------------- */

/**
 * Hauptklasse der UserControls
 */
var uc = new ucClass();



function cReload() {
	for (i=0;i<$$('.captcha').length;i++) {
		$$('.captcha')[i].src="/apps/CaptchaImage/JpegImage.aspx?" + parseInt( Math.random() * 999999 );	
	}
}



function changeImages() {
	return true;	
}

/*
 * korrigiert die maillinks at und punkt
 */
if (!d) var d = document;
function decodeEMail() {
	var a = d.links;
	for (i=0;i<a.length;i++) {
		if (a[i].href.match(/^mailto:/i)) {
			a[i].href = repMail(a[i].href);
			a[i].innerHTML = repMail(a[i].innerHTML);
		}
	}
}
function repMail(item) {
	item = decodeURI(item);
	item = item.replace(/\[punkt\]/g,'.');
	item = item.replace(/\[at\]/g,'@');
	item = item.replace(/\{punkt\}/g,'.');
	item = item.replace(/\{at\}/g,'@');
	return item;
}
document.observe('dom:loaded', decodeEMail);

/* Ende Emaildecode */



//window.onload = init;	




