//*************************************************************************************************
// AJAX sourcen
// author: alexander zenglein
//*************************************************************************************************

//        Variables for 'showData'
var archivpath = "../archiv/news/";
var archivsportpath = "../archiv/sport/";
var archivfuturepath = "../archiv/futureteam/";
var chronikpath = "../archiv/";
var bildpath = "../bilder/";
var contentpath = "content/";
var downloadspath = "../downloads/";
var targetContainer;
var targetBackButton;
var targetSeparator;
var dataCategory;
var filename = "";

var requestObjArr = [new Object(), new Object(), new Object()];
var r = 0;


// ------------------------------------------------------------------------------------------------
//        Daten vom Server laden und anzeigen
//
//        targetContainer :        zur Anzeige der Daten
//        archivpath      :        Ablageverzeichnis der Daten
//        category        :        Kategorie der Daten
//        refId           :        Id des Datenbojektes
//        addDesign       :        additional back-button(s)
//                                '0'        no add. elements
//                                '1'        back-button before
//                                '2'        back-button after
//                                '3'        back-button before + after
//        addSeparator    :        add visual Separator(s)
//                                '1'        separator before
//                                '2'        separator after
//                                '3'        separator before + after
//        domain          :       z.b. 200910 (Saison)
// ------------------------------------------------------------------------------------------------

function showData(target, category, refId, addBackBtn, addSeparator, domain) {

        var reqDataObjectUrl = "";
        var METHODNAME = "showData";

        //alert(METHODNAME + ": target=" + target + ": category=" + category + ": refId=" + refId);

        targetContainer = target + "_data";
        targetBackButton = addBackBtn;
        targetSeparator = addSeparator;

        dataCategory = category;

        //alert(METHODNAME + ": targetContainer=" + targetContainer);
        var divParent = document.getElementById(target);

         //  Daten-Div vor erneuter Erzeugung ggfls. löschen
        var removeDiv = document.getElementById(targetContainer);
        if (removeDiv != null) {
               divParent.removeChild(removeDiv);
         }

         var divTargetData = document.createElement("div");
        divTargetData.setAttribute("id",targetContainer);
        divParent.appendChild(divTargetData);


         // Clear element that will receive data
         document.getElementById(targetContainer).innerHTML = "";

         if (refId == "empty")
            return;

         if (category == "archnews")
            {
            //alert(METHODNAME + ": target=" + target + ": category=" + category + ": refId=" + refId);
            reqDataObjectUrl = archivpath + category + refId + '.txt';
            filename = category + refId + '.txt';
            }
         if (category == "chronik")
            {
            filename = refId + '.txt';
            reqDataObjectUrl = chronikpath + "/" + domain + "/" + filename;
            }
         if (category == "sport")
            {
            // alert ("in showData:" + " - " + reqDataObjectUrl);
            var saison = domain;
            filename = category + refId + '.txt';
            reqDataObjectUrl = archivsportpath + saison + "/" + filename;
            }
         if (category == "content")
            reqDataObjectUrl = contentpath + refId + '.txt';
         if (category == "bild")
            reqDataObjectUrl = bildpath + refId;
         if (category == "futureteam")
            reqDataObjectUrl = archivfuturepath + refId + '.txt';

         if (category == "datagramm")
            {
            var saison = domain;
            filename = category + '.txt';
            reqDataObjectUrl = archivsportpath + saison + "/" + filename;
            //alert(METHODNAME + ": " +refId + "/" + saison + "/" + reqDataObjectUrl);
            }

         if (category == "downloads")
            reqDataObjectUrl = downloadspath + refId + '.html';

         if (category == "counter")
            reqDataObjectUrl = '../count_ab_20090610.cnt';


         //alert("ajax.showData  category=" + category + " reqDataObjectUrl=" + reqDataObjectUrl);


         requestDataFromServer(reqDataObjectUrl);

}
//-------------------------------------------------------------------------------------------------
// Daten von Server anfordern
//        send HTTP request + register Response Eventhandler
//        Parameter: reqDataObjectUrl = vollständiger Pfad inkl. Dateiname auf Server
//-------------------------------------------------------------------------------------------------
function requestDataFromServer(reqDataObjectUrl) {


         requestObjArr[r] = creXMLHttpRequestObject();

         // send asynchroner request -> event-handler (handleResponse) ist aktiv/notwendig
         //alert("ajax.reqDataObjectUrl=" + reqDataObjectUrl);

         try
            {
             // Eventhandler registrieren für die Verarbeitung der HTTP-Antwort
             requestObjArr[r].onreadystatechange = handleResponse;
             requestObjArr[r].open('get', reqDataObjectUrl, true);
             requestObjArr[r].send(null);
            }
             catch(err)
            {
             alert("Die Anwendung kann im Moment keine Verbindung zum Server herstellen." +
                   "Bitte versuchen Sie es in einigen Sekunden noch einmal.");

            }

}

// ------------------------------------------------------------------------------------------------
//    Eventhandler für den AJAX request
//    D.h. ist der Response event eingetreten, werden die Daten dem target übergeben
//
//    onreadystatechange :
//    * 0 = uninitialized
//    * 1 = loading
//    * 2 = loaded
//    * 3 = interactiv
//    * 4 = complete

// ------------------------------------------------------------------------------------------------

function handleResponse() {

       //alert("Status = ");


         if(requestObjArr[r].readyState != 4)
         {
             document.getElementById(targetContainer).innerHTML
                 = "Einen Moment bitte...";
             return;
         }

        //alert("Status = " + requestObj.status + "Response-Text: " + requestObj.responseText);

//       if(requestObj.status != 200) {alert("Status = " + requestObj.status + "Response-Text: " + requestObj.responseText);}

         var addElementsBefore = "";

//        if (targetBackButton == "1")  addElementsBefore = "<a href='javascript:window.history.back(-1)'>zur&uuml;ck</a>";
//        if (targetBackButton == "3")  addElementsBefore += "<a href='javascript:window.history.back(-1)'>zur&uuml;ck</a>";

//        if (targetSeparator == "1")   addElementsBefore += "<div class='dots_horiz'>&nbsp;</div>";
//        if (targetSeparator == "3")   addElementsBefore += "<div class='dots_horiz'>&nbsp;</div>";

         var addElementsAfter = "";

//        if (targetSeparator == "2")   addElementsAfter += "<div class='dots_horiz'>&nbsp;</div>";
//        if (targetSeparator == "3")   addElementsAfter += "<div class='dots_horiz'>&nbsp;</div>";

         addElementsAfter += "<br /><br />";

         if (targetBackButton == "2")  addElementsAfter += "<a href='../html/news.html'>zur&uuml;ck</a>";
         if (targetBackButton == "3")  addElementsAfter += "<a href='../html/news.html'>zur&uuml;ck</a>";

         addElementsAfter += "<br /><br />";

        //+++++++ Ziel-Container füllen +++++++


//        if (category == "bild")
//                 document.getElementById(targetContainer).innerHTML
//                 = '<img src="' + requestObj.responseText.src + '">';
//            else
                document.getElementById(targetContainer).innerHTML
                 = (addElementsBefore + requestObjArr[r].responseText + addElementsAfter);


//        if (targetSeparator == "2" or targetBackButton == "3")
//                 document.write("<script type='text/javascript'>content_separator_out('1',0,0);</script>");

//        if (targetBackButton == "2" or targetBackButton == "3")
//                 document.write("<a href='javascript:window.history.back()'>zurück</a>");


//       Hier werden nochmal inhaltliche Einstellungen vorgenommen
/*
         if (dataCategory == "sport")
         {
            // ------------------ Hoehe der Container angleichen ------------------
            //alert('ajax.js: Hoehe der Container angleichen');

            adaptHeight('spielbericht_spiel', 'spielbericht_spieltag');

            if (document.getElementById("spieltag_spielerdestages"))
            {
                document.getElementById("generic_container").style.height = '1280px';
                document.getElementById("spielbericht_spiel").style.height = '1180px';
            }
            else
            {
                document.getElementById("generic_container").style.height = '1100px';
                document.getElementById("spielbericht_spiel").style.height = '1000px';
            }

         }
*/
         // Sonderbehandlung: Spielbericht (generic.html) - Einblenden von Inhalten falls da

         if (dataCategory == "sport")
            {
                 //alert ("Alert : requestDataFromServer - generic sport");
                 if (document.getElementById('spielpaarung_kommentar_text'))
                 {
                      switchLayerContent('spielpaarung_bericht_text', 'spielpaarung_kommentar', 'spielpaarung_vorschau');
                 }

         }

}

// ------------------------------------------------------------------------------------------------
//        Erzeuge Objekt für den AJAX HTTP-Request
//
//        'XMLHttpRequest'        Mozilla, Safari, Opera
//        'Msxml2.XMLHTTP'        IE 5
//        'Microsoft.XMLHTTP'     IE 6
// ------------------------------------------------------------------------------------------------
function creXMLHttpRequestObject(){

         var versions=new Array("MSXML2.XMLHttp.5.0","MSXML2.XMLHttp.4.0",
                                "MSXML2.XMLHttp.3.0","MSXML2.XMLHttp",
                                "Microsoft.XMLHttp");

         var requestObj = new Object();

         //alert("creXMLHttpRequestObject: " + filename);

         if (window.ActiveXObject)
         {
            for (var i=0;i<versions.length;i++)
                {
                 try {
                      requestObj = new ActiveXObject(versions[i]);
                      return requestObj;
                     }
                 catch(Error)
                     {
                     }
                }
         }


         if (window.XMLHttpRequest)
         {
            try {
                 requestObj = new XMLHttpRequest();
                 return requestObj;
                }
            catch(Error)
                {
                }
         }
         alert("Die Anwendung möchte weitere Daten vom Server nachladen..." + "\n"
             + "Dabei ist ein Fehler aufgetreten:" + "\n"
             + "Erzeugung des AJAX-Requests nicht möglich!" + "\n\n"
             + "Sie verwenden entweder einen uralten Browser oder ihre Sicherheitseinstellungen sind zu hoch."
             );

}
