
// Prüfen, ob der Namenspace schon angelegt wurde. Wenn Nein, dann wir er hier
// mit neu angelegt.
if (typeof $.global == 'undefined') $.extend({ global : {} });


// Namespace um die Admin-Methoden erweitern
$.extend({

	global : {

    	/**
    	 * Diese Methode wird aufgerufen, wenn der User erfolgreich eingeloggt
    	 * wurde.
    	 */
		handleLogin : function(XMLHttpRequest, textStatus)
		{
			if (textStatus == 'success')
			{
				var response = XMLHttpRequest.responseText;
				var jsonObject = eval('(' + response + ')');

				// Prüfen, ob ein Fehler angezeigt werden muss
				if (jsonObject['error'] != undefined)
				{
					// Fehler anzeigen
					$('#errorContainerDiv').html(jsonObject['error']);
				}
				else
				{
					// Formular darf nicht mehr geschlossen werden
					$('#dialogoverlay-shadow').unbind('click');
					$('#dialogoverlay-close').unbind('click');

					// Erfolgsmeldung anzeigen und Seite neu laden
					$('#loginForm').hide('fast', function() {

						// HTML austauschen
						$('#loginForm').html(jsonObject['view']);

						// Wieder einblenden
						$('#loginForm').show('fast', function() {
							// Der Login wurde erfolgreich ausgeführt und die Seite kann
							// somit neu geladen werden, da der User im System
							// eingeloggt ist.
							var url = window.location.href;

							// Prüfen, ob nicht ein Anker in der URL vorhanden ist, da
							// dieser dann entfernt werden muss, sonst ändert der Browser
							// die URL nicht, sondern springt nur an die entsprechende
                            // Stelle
                            if (url.lastIndexOf('#') > -1)
                            {
                                url = url.substr(0, url.lastIndexOf('#'));
                            }

							// Aktuelle Seite neu laden
							setTimeout( function() {
								window.location = url;
							} , 5000);
						});
					});
				}
			}
			else
			{
				alert('Beim Übertragen der Daten ist ein Fehler aufgetreten.');
			}
		},

		/**
		 * Diese Methode wird aufgerufen, wenn der Server die Kontakt-eMail
		 * versendet hat. Es werden de Benutzer hierüber Fehlermeldungen oder
		 * eine Erfolgsmeldung angezeigt.
		 */
		handleContactForm : function(XMLHttpRequest, textStatus)
		{
			if (textStatus == 'success')
			{
				var response = XMLHttpRequest.responseText;
				var jsonObject = eval('(' + response + ')');

				// Prüfen, ob ein Fehler angezeigt werden muss
				if (jsonObject['error'] != undefined)
				{
					// Fehler anzeigen
					$('#errorContainerDiv').html(jsonObject['error']);
				}
				else
				{
					// Antwort des Versendens anzeigen
					$('#contact-container').hide('fast', function() {
						// HTML des Container ersetzen
						$('#contact-container').html(jsonObject['view']);

						$('#contact-container').show('fast');
					});
				}
			}
			else
			{
				alert('Beim Übertragen der Daten ist ein Fehler aufgetreten.');
			}
		},

		/**
		 * Diese Methode prüft, ob x eine Zahl ist.
		 */
		isInt : function(x)
		{
			var y = parseInt(x);
			if (isNaN(y))
			{
				return false;
			}
			return (x == y) && (x.toString() == y.toString());
		},

		/**
		 * Diese Methode extrahiert aus einem übergebenen String (die ID eines
		 * Tags) die eigentliche ID, also die Zahl, welche in der Tag-ID steckt.
		 */
	 	extractId : function(id)
	 	{
	 		id = id.substr( id.indexOf('-') + 1, id.length );
	 		return id.substr( 0, id.indexOf('-') );
 		},

		/**
		 * Diese Methode wird aufgerufen, wenn der TinyMCE, wenn ein Dialog
		 * geöffnet wird, auf dem der TinyMCE gesetzt ist. Der Dialog wird so
		 * lange nicht angezeigt, bis der TinyMCE geladen ist und diese
		 * callback-Methode aufruft. Über diese wird dann der Dialog explizit
		 * angezeigt.
		 */
 		entryFormTinyMCECallback : function()
 		{
 			// Dialog anzeigen
 			$.dialogoverlay.showInnerDialog();
		}
	}
});


/**
 * Methode, die zwei benachbarte Einträge vertauscht.
 */
jQuery.fn.swap = function(b){
    b = jQuery(b)[0];
    var a = this[0];
    var t = a.parentNode.insertBefore(document.createTextNode(''), a);
    b.parentNode.insertBefore(a, b);
    t.parentNode.insertBefore(b, t);
    t.parentNode.removeChild(t);
    return this;
};

/**
 * Diese Methode ersetzt einen HTML-Code mit einem anderen.
 */
jQuery.fn.replace = function() {
    return this.domManip(arguments, true, 1, function(a) {
        this.parentNode.replaceChild( a, this );
    });
};



