﻿
var isFirstPageLoad = true;
var isPreset = false;
var beginRequestElem;

/* Art der Aktion, die vom PostBack-Control ausgelöst wird. Um die Routine auszulösen, muss der Action_String in einem "Action"-Tag des Controls eingetragen sein. */
var action = new Object();
action.geocode = "geocode";
action.reverseGeocode = "reverseGeocode";
action.routing = "routing";
action.shortInfo = "shortInfo";
action.clusterInfo = "clusterInfo";
action.detailInfo = "detailInfo";
action.statistic = "statistic";
action.clusterPager = "clusterPager"
action.itemclusterclick = "ItemClusterClick";
action.routingDetails = "routingDetails";
action.routingStopCounter = "RoutingStopCounter";
action.destinationSet = "destinationSet";
action.routingGeocode = "routingGeocode";

var _updateProgressDiv;
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_beginRequest(beginRequest);
prm.add_endRequest(endRequest);
prm.add_pageLoaded(pageLoadedHandler);

// Ist der Parameter "preset" auf 'true', so wird die Initialisierung per Url-Parameter und DB angestossen.
function pageLoadedHandler(sender, pageLoadedEventArgs)
{
    if (!isFirstPageLoad) return;

    isFirstPageLoad = false;
    var referer = document.referrer;
    var preset = getQueryString('preset');

    if (preset != null && preset.trim().toLowerCase() == 'true')
    {
        isPreset = true;
        WEBTREKK.writeMapStart(preset);
        // In "presetScreen" werden die weiteren Paramter (ID, Location...) ausgewertet. Der Name des Navigationsarrays (ADAC vorerst hart kodiert) wird übergeben.
        //window.setTimeout('presetScreen("adacnavi")', 100);
        presetScreen("adacnavi");
    }
    else
    {
        WEBTREKK.writeMapStart(referer);
    }
}

function beginRequest(sender, beginRequestEventArgs)
{
    beginRequestElem = beginRequestEventArgs.get_postBackElement();

    if (beginRequestElem != null && beginRequestElem.attributes["Action"] != undefined && beginRequestElem.attributes["Action"].value != undefined)
    {
        if (beginRequestElem.attributes["ActionName"] != null)
        {
            if (beginRequestElem.attributes["ActionName"] != undefined && beginRequestElem.attributes["ActionName"].value != undefined && beginRequestElem.attributes["ActionName"].value == "Liste")
            {

                //sonne auf der Liste Zeigen
                MAPSGUI.showTableLoader();
            }
        }
        // ActionInfo über das HiddenInput schleifen, da sie sonst nach Postback im Firefox nicht mehr verfügbar ist.
        // Stichwort: sender._postBackSettings.sourceElement geht verloren...
        var actionInfo = $get(GetRenderedId("Action"));
        actionInfo.value = beginRequestElem.attributes["Action"].value;

        switch (actionInfo.value)
        {
            case action.geocode:
                beginRequestElem.value = "Geocoding...";
                OnGeocodeStarted();
                break;

            case action.routingGeocode:
                MAPSGUI.Route.showLoader();
                break;

            case action.reverseGeocode:
                beginRequestElem.value = "ReverseGeocoding";
                OnReverseGeocodeStarted();
                break;

            case action.routing:
                // Layer "Weitere Zusatzinformationen entlang der Route" ausblenden
                MAPSGUI.Route.controlRouteDetail('close');

                // Layer "Länder von der Route ausschließen" ausblenden
                hideLayer('box_excluded_lands');

                MAPSGUI.Route.showLoader();
                break;

             
            default:

                //Achtung: Shortinfo und DetailInfo. Es kann auch noch mehr werden.              
                // alert("Unknown actiontype " + elem.Action);                
                if (actionInfo.value != '')
                {
                    //Liste
                    //MAPSGUI.showTableLoader();
                }
        }
    }
}

function endRequest(sender, endRequestEventArgs)
{
    if (endRequestEventArgs._error == null)
    {
        // Anhand der im beginRequest gesetzten ActionInfo unterscheiden.
        var actionInfo = $get(GetRenderedId("Action"));
        if (beginRequestElem != null)
        {
            if (beginRequestElem.attributes["ActionName"] != null)
            {
                if (beginRequestElem.attributes["ActionName"] != undefined && beginRequestElem.attributes["ActionName"].value != undefined && beginRequestElem.attributes["ActionName"].value == "Liste")
                {
                    //Liste
                    var rubric = HELPER.getRubricFromRubricString();
                    if (rubric != 'route') // für die Route gibt es keinen Informationen zu zeigen
                    {
                        var rubricpanel = 'pnl_tabdiv_' + rubric;
                        if (rubricpanel != 'pnl_tabdiv_')
                        {
                            var thePanelview = $(rubricpanel);
                            thePanelview.style.cssText = "DISPLAY:Block";

                            MAPSGUI.hideTableLoader();

                            var counter = $(rubric + '_ActiveListRowsCounter');
                            if (counter.value == '0')
                            {
                                MAPSGUI.showNoResultsText(rubric);
                            }
                            else if (counter.value == '100')
                            {
                                MAPSGUI.showMoreThan100(rubric);
                            }
                            else
                            {
                                MAPSGUI.showWithoutErrors(rubric);
                            }
                        }
                        else
                        {
                            MAPSGUI.hideTableLoader();
                        }
                        //window.scrollTo(0, MAPSGUI.offsetTopToNav);
                        //					beginRequestElem.attributes["ActionName"].value="";
                        //					actionInfo.value = "";								
                    }
                }
            }
        }
        switch (actionInfo.value)
        {
            case action.geocode:
                OnGeocodeFinished();
                break;

            case action.routingGeocode:
                MAPSGUI.hideTableLoader();
                OnRoutingGeocodeFinished()
                break;

            case action.reverseGeocode:
                OnReverseGeocodeFinished();
                actionInfo.value = "";
                break;

            case action.shortInfo:
                OnShortInfoFinished();
                actionInfo.value = "";
                break;

            case action.clusterInfo:
                OnClusterInfoFinished();
                actionInfo.value = "";
                break;

            case action.clusterPager:
                OnPagerClusterFinished();
                actionInfo.value = "";
                break;

            case action.itemclusterclick:
                OnPagerClusterFinished();
                actionInfo.value = "";
                break;

            case action.detailInfo:
                OnDetailInfoFinished();
                actionInfo.value = "";
                break;

            case action.statistic:
                OnStatisticFinished();
                actionInfo.value = "";
                break;

            case action.routingDetails:
                OnRoutingDetailsFinished();
                actionInfo.value = "";
                break;

            case action.routingStopCounter:
                var id = MAPSGUI.Route.generateId();

                jQuery('#station_wrap').find('.box-stop').each(function (index, item)
                {
                    if (index < 2)
                    {
                        jQuery(item).remove();
                    }
                });




                // enable link for reset routesearch
                $('box_reset_routesearch_default').className = '';
                $('box_reset_routesearch_default').onclick = function ()
                {
                    MAPSGUI.Route.resetRouteSearch();
                }

                // disable link for add stations
                if (MAPSGUI.Route._allStops.length > MAPSGUI.Route._maxStops)
                {
                    var lnb = $('UcTabsNaviTop_UcRouting_lnbAddStation');
                    lnb.className = 'box-inactive';
                    $('UcTabsNaviTop_UcRouting_lnbAddStation').onclick = function () { }
                    $('UcTabsNaviTop_UcRouting_lnbAddStation').href = "javascript: void (0);";
                }

                MAPSGUI.Route.addStop(id);


                //                var newstopid = $(GetRenderedId("stopid")).value;
                //                MAPSGUI.Route._stopCounter = parseInt($(GetRenderedId("stopscounter")).value);
                //                MAPSGUI.Route.addStop(newstopid);
                break;

            case action.routing:
                MAPSGUI.Route.hideLoader();
                MAPSGUI.mapSizeControling();
                MAPSGUI.Route.sendRouteRequest();

                var actTab = MAPSGUI.activeTab;

                drawPOILayer();
                MAPSGUI.Routecalculating = false;
                //die Route wurde neu berechnet und das Routing Ergebnis ist neu
                //reset auch routinglastListeIndexSelected                
                HELPER.routinglastListeIndexSelected = '';

                // Einblenden der "Drucken und Schließen"-Leiste
                if (MAPSGUI.Tabnav._activeIndex == 1)
                {
                    showLayer('actions_routenempfehlung');
                }

                //Falls eine Route neu berechnet wurde, aber ein anderer Tab aktiv ist 
                //muss auch der Listeninhalt dieses Tabs neu aufgebaut werden.
                //var actTab = MAPSGUI.activeTab;
                MAPSGUI.hideTableLoader(); // falls da ist (Beispiel: Route mit bp dann bearbeiten und dann mit aral statt bp)
                var rubr = HELPER.getRubricFromRubricString();
                var TabToClick = $(GetRenderedId('tabdiv_' + rubr));

                if (TabToClick != null)
                {
                    var butName = TabToClick.name;

                    if (actTab != undefined && actTab != "" && actTab != 'route')
                    {
                        __doPostBack(butName, rubr);
                    }
                }

                break;

            case action.destinationSet:
                //Liste
                actionInfo.value = "";
                var rubric = HELPER.getRubricFromRubricString();
                if (GEOCODING.destination == '')
                {
                    HELPER.destinationSet = false;
                }
                //u.U. Liste nochmal neu aufbauen.
                if (rubric != '')
                {
                    var TabToClick = $get(GetRenderedId('tabdiv_' + rubric));
                    if (TabToClick != null)
                    {
                        var butName = TabToClick.name;
                        __doPostBack(butName, rubric + '|Destination=true');
                    }
                }
                break;

            default:
                //alert("Unknown actiontype " + actionInfo.value);
        }
    }

}

function OnPagerClusterFinished()
{
    displayClusterXslt();
    //    var BtnToClick = $get(GetRenderedId('ButHeaderBox'));
    //    if (BtnToClick != null)
    //    {
    //        var butName = BtnToClick.name;
    //        __doPostBack(butName, '');
    //    }
}

function OnGeocodeStarted()
{
    MAPSGUI.Route.showLoader();
}

function OnGeocodeFinished()
{
	MAPSGUI.Route.hideLoader();
	GEOCODING.oldFlagID = undefined;
    GEOCODING.showResults(true);
}


function OnRoutingGeocodeFinished()
{
    GEOCODING.onGeocodeFinished(); 
}

function OnReverseGeocodeStarted()
{
    document.body.style.cursor = 'wait';
}

function OnReverseGeocodeFinished()
{
    document.body.style.cursor = 'default';
    //REVGEODODING.showInfo();
    ROUTING.setStationFromMap();
}

function OnShortInfoFinished()
{
    displayShortInfo();
}

function OnClusterInfoFinished()
{
    displayClusterInfo();
}

function OnDetailInfoFinished()
{
    displayDetailInfo();
}

function OnRoutingDetailsFinished()
{
    ROUTING.showDetails();
}

function OnStatisticFinished()
{
}

function OnDestinationSetFinished()
{
}

if (typeof (Sys) !== "undefined") Sys.Application.notifyScriptLoaded();

