/**
 * @author: Benjamin Lasdiant
 */

/********************* AJAX *****************/
/**
* @return Object XMLHttpRequest
*/
function getHTTPObject()
{
	var xmlhttp;
    /*@cc_on
    @if (@_jscript_version >= 5)
        try
        {
            xmlhttp = new ActiveXObject('Msxml2.XMLHTTP');
        }
        catch (e)
        {
            try
            {
                xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
            }
            catch (E)
            {
                xmlhttp = false;
            }
        }
    @else
        xmlhttp = false;
    @end @*/

    if (!xmlhttp && typeof XMLHttpRequest != 'undefined')
    {
        try
        {
            xmlhttp = new XMLHttpRequest();
        }
        catch (e)
        {
            xmlhttp = false;
        }
    }
    return xmlhttp;
}

/**
 * Verarbeitet die reinkommen daten.
 *
 * Die Datensätze müssen im String mit "@@@" getrennt sein, und die Array spalten mit "@@"
 *
 * @param string data
 * @return array
 */
function requestStringToArray(data) {
    var dataArray = new Array();
    var returnData = new Array();

    // Datensätze teilen
    dataArray = data.split('@@@');
    for (var i = 0; i < (dataArray.length); i++) {
        returnData[i] = new Array();
        returnData[i] = dataArray[i].split('@@');
    }

    return returnData;
}

var httpReceive = Array();
var myBackFunctionHandle = Array();

/**
 * Sendet eine anfrage per http request.
 *
 * @param string myGetVars      => Übergabe der Variablen an die ajax.php
 * @param string myBackFunction => Funktionsname die in Folge aufgerufen wird und die Daten übergeben werden sollen
 */
function getAjaxData (myGetVars, myBackFunction) {
	var timestamp = new Date().getTime();
	if(myBackFunction == '')
    {
        myBackFunction = 'default';
    }

    myBackFunctionHandle[timestamp] = myBackFunction;

    if (typeof httpReceive[timestamp] == 'undefined')
    {
        httpReceive[timestamp] = getHTTPObject();
    }

    if (httpReceive[timestamp].readyState == 4 || httpReceive[timestamp].readyState == 0)
    {
        httpReceive[timestamp].open('GET', '/wp-content/themes/modeseite/element_tagestarot.php?' + myGetVars + '&timestamp=' + timestamp, true);
        httpReceive[timestamp].send(null);
        httpReceive[timestamp].onreadystatechange = function() {handleHttpReceive(timestamp);};
    }
}

/**
 * Verarbeitet den zurückkommenden Request von reciveConnect.
 *
 * 0	UNINITIALIZED Das Objekt wurde noch nicht initialisiert, d. h., es erfolgte noch kein Aufruf der Funktion open.
 * 1	LOADING 	  Das Request-Objekt wurde initialisiert, aber der Request noch nicht abgesetzt (mittels send).
 * 2	LOADED 	      Der Request wurde mittels der Funktion send -abgesetzt.
 * 3	INTERACTIVE   Teile der Antwort sind bereits verfügbar.
 *                    Über das Feld responseText kann auf die empfangenen Daten zugegriffen werden.
 * 4	COMPLETED 	  Die Bearbeitung des Requests ist beendet.
 *
 */
function handleHttpReceive(handle) {

    switch (httpReceive[handle].readyState) {
        case 0 : // UNINITIALIZED
            break;
        case 1 : // LOADING
            httpReceive.send();
            break;
        case 2 : // LOADED
            break;
        case 3 : // INTERACTIVE
            break;
        case 4 : // COMPLETED
            if (httpReceive[handle].responseText != 'error' && httpReceive[handle].responseText != '') {
                var data = new Array();
                data = requestStringToArray(httpReceive[handle].responseText);
                httpReceive[handle] = null;
                if(myBackFunctionHandle[handle] != 'default')
                {
                    self[myBackFunctionHandle[handle]](data);
                }

            }
            break;
        default :  // fehlerhafter Status
    }
}
