function getAll(region, onlyThese)
{
    jQuery.get("php/getAll.php", {'region': region}, function(js){callbackGetAll(js, onlyThese)});
}

function callbackGetAll(js, onlyThese)
{
    if (!js)
    {

        jAlert("Fehler beim Ermitteln der Standorte!", txt["warning"]);
        //alert("Fehler beim Ermitteln der Standorte!");
        return;
    }

    js = eval(js);

    if (!(js.length > 0))
    {
        jAlert("Keine Standorte ermittelt!", txt["warning"]);
        //alert();
        return;
    }

    for (var i = 0; i < js.length; i++)
    {
            
        if ((!onlyThese) || (onlyThese.length == 0) || (jQuery.inArray(js[i].objectid, onlyThese) > -1))
        {
            addMarker(js[i].objectid, makePretty(js[i].name), js[i].nutzung, js[i].lon, js[i].lat);
        }
        
    }

    //jAlert("Marker: " + markers.length, "Folgende Marker hinzu");
    //alert("Marker: " + markers.length);

    if (onlyThese && onlyThese.length > 0 && markers.length > 0)
    {
        var BBox = new GLatLngBounds();
        for (var i = 0; i < markers.length; i++)
        {
            BBox.extend(markers[i].getLatLng());
        }

        if (zoomscale &&  markers.length == 1)
        {
             mapObject.setCenter(BBox.getCenter(), zoomscale);
        } else
        {
            mapObject.setCenter(BBox.getCenter(), mapObject.getBoundsZoomLevel(BBox) > 15 ? 15 : mapObject.getBoundsZoomLevel(BBox)-1);
        }
    }

    $(".LabeledMarker_Grundstueck").addClass('LabeledMarker_markerLabelSmall');
    $(".LabeledMarker_BueroPraxis").addClass('LabeledMarker_markerLabelSmall');
    $(".LabeledMarker_Einzelhandel").addClass('LabeledMarker_markerLabelSmall');
    $(".LabeledMarker_ProduktionLager").addClass('LabeledMarker_markerLabelSmall');
    $(".LabeledMarker_GastronomieHotel").addClass('LabeledMarker_markerLabelSmall');
    $(".LabeledMarker_Medienareal").addClass('LabeledMarker_markerLabelSmall');
    $(".LabeledMarker_Business").addClass('LabeledMarker_markerLabelSmall');
    $(".LabeledMarker_Projekt").addClass('LabeledMarker_markerLabelSmall');
    $(".LabeledMarker_Gruenderzentrum").addClass('LabeledMarker_markerLabelSmall');
    $(".LabeledMarker_Sonstiges").addClass('LabeledMarker_markerLabelSmall');

    // geht nicht wirklich gut....Browser?
    //$(".LabeledMarker_markerLabelSmall").attr("style", $(".LabeledMarker_markerLabelSmall").attr("style")+" z-Index: -160000000;");

    $(".LabeledMarker_markerLabelSmall").each(function() {
        this.style.zIndex = -180000000;
         });

}

function addMarker(objectid, label, nutzung, lon, lat)
{

    var opts = {
        "icon": new GIcon({
            'iconSize': new GSize(14,12),
            'image': iconsArray[nutzung],
            'iconAnchor': new GPoint(7,6),
            'infoWindowAnchor': new GPoint(7,6)
            }),
        "title": label.replace(/<br>/g, "\n"),
        "clickable": true,
        "labelText": label,
        "labelOffset": new GSize(8, -20),
        "labelClass": 'LabeledMarker_' + nutzung.replace("/", "")
    };

    var point = new GLatLng(lat, lon);

    var marker = new LabeledMarker(point, opts);
    marker.nutzung = nutzung;
    marker.label = label;

    /*
    GEvent.addListener(marker, "mouseover", overfunc);
    GEvent.addListener(marker, "mouseout", outfunc);

    GEvent.addListener(marker, "click", function() {
        //marker.openInfoWindowHtml('<exposeelink><a title="' + txt["OpenExposee"] + '" href="' + exposeeurl + objectid + '" target="_blank">' + label + '</a><br>' +txt["nutzung"] +': ' + txt[nutzung] + '</exposeelink>');
        //funktioniert unten
        //marker.openInfoWindowHtml('<exposeelink><b>' + label + '</b><br>' +txt["nutzung"] +': ' + txt[nutzung] + '<br><a title="' + txt["OpenExposee"] + '" href="' + exposeeurl + objectid + '" target="_blank">' + txt["OpenExposee"]+'</a></exposeelink>');
        marker.openInfoWindowHtml('<div class="exposeelink"><b>' + label + '</b><br>' +txt["nutzung"] +': ' + txt[nutzung] + '<br><a title="' + txt["OpenExposee"] + '" href="' + exposeeurl + objectid + '" target="_blank">' + txt["OpenExposee"]+'</a></div>');
    });
    */
   
        
    GEvent.addListener(marker, "click", function() {window.open(exposeeurl + objectid, 'exposewindow', 'resizable=yes,scrollbars=yes,width=990,height=' + (screen.height > 830 ? 820 : (screen.height - 10))).focus() });

    // Ein-/Ausblenden
    if (gZoomLevel < labelSmall[0])
        marker.setLabelVisibility(false);


    markers.push(marker);

    mapObject.addOverlay(marker);


}


function showMarkersOnlyOne(cb, nutzung)
{
    for (var i = 0; i < markers.length; i++)
    {
        if (markers[i].nutzung == nutzung)
        {
            markers[i].show();
        } else
        {
            markers[i].hide();
        }
    }

    var chb = document.getElementsByName("layercontrol");
    for (var i = 0; i < chb.length; i++)
    {
        if (chb[i].id == 'layercontrol' + cb) {
            chb[i].checked = true;
        } else
        {
            chb[i].checked = false;
        }
    }
    


}

function showMarkers(nutzung, visi)
{

    for (var i = 0; i < markers.length; i++)
    {
        if (markers[i].nutzung == nutzung)
        {
            if (visi) {
                markers[i].show();
            } else
            {
                markers[i].hide();
            }
        }
    }
}

function showMarkersAll()
{
    for (var i = 0; i < markers.length; i++)
    {
        markers[i].show();
    }

    var chb = document.getElementsByName("layercontrol");
    for (var i = 0; i < chb.length; i++)
    {
        chb[i].checked = true;
    }
}


function zoomChanged(lvlold, lvlnew)
{
    //alert(lvlnew + "  " + lvlold);
    gZoomLevel = lvlnew;

    //Labels ausblenden
    if (lvlnew < labelSmall[0] && lvlold >= labelSmall[0])
    {
        for (var i = 0; i < markers.length; i++)
        {
             markers[i].setLabelVisibility(false);
        }
    }
    //Labels Small class hinzu
    if (lvlnew < labelLarge[0] && lvlold >= labelLarge[0])
    {
       $(".LabeledMarker_Grundstueck").addClass('LabeledMarker_markerLabelSmall');
       $(".LabeledMarker_BueroPraxis").addClass('LabeledMarker_markerLabelSmall');
       $(".LabeledMarker_Einzelhandel").addClass('LabeledMarker_markerLabelSmall');
       $(".LabeledMarker_ProduktionLager").addClass('LabeledMarker_markerLabelSmall');
       $(".LabeledMarker_GastronomieHotel").addClass('LabeledMarker_markerLabelSmall');
       $(".LabeledMarker_Medienareal").addClass('LabeledMarker_markerLabelSmall');
       $(".LabeledMarker_Business").addClass('LabeledMarker_markerLabelSmall');
       $(".LabeledMarker_Projekt").addClass('LabeledMarker_markerLabelSmall');
       $(".LabeledMarker_Gruenderzentrum").addClass('LabeledMarker_markerLabelSmall');
       $(".LabeledMarker_Sonstiges").addClass('LabeledMarker_markerLabelSmall');
    }

    //Labels Small class entfernen
    if (lvlnew >= labelLarge[0] && lvlold < labelLarge[0])
    {
       $(".LabeledMarker_Grundstueck").removeClass('LabeledMarker_markerLabelSmall');
       $(".LabeledMarker_BueroPraxis").removeClass('LabeledMarker_markerLabelSmall');
       $(".LabeledMarker_Einzelhandel").removeClass('LabeledMarker_markerLabelSmall');
       $(".LabeledMarker_ProduktionLager").removeClass('LabeledMarker_markerLabelSmall');
       $(".LabeledMarker_GastronomieHotel").removeClass('LabeledMarker_markerLabelSmall');
       $(".LabeledMarker_Medienareal").removeClass('LabeledMarker_markerLabelSmall');
       $(".LabeledMarker_Business").removeClass('LabeledMarker_markerLabelSmall');
       $(".LabeledMarker_Projekt").removeClass('LabeledMarker_markerLabelSmall');
       $(".LabeledMarker_Gruenderzentrum").removeClass('LabeledMarker_markerLabelSmall');
       $(".LabeledMarker_Sonstiges").removeClass('LabeledMarker_markerLabelSmall');
    }

    //Labels einblenden
    if (lvlnew >= labelSmall[0] && lvlold < labelSmall[0])
    {
        for (var i = 0; i < markers.length; i++)
        {
             markers[i].setLabelVisibility(true);
        }
    }


    $(".LabeledMarker_markerLabelSmall").each(function() {
        this.style.zIndex = -180000000;
         });


}

function gMoveEnd()
{

       $(".LabeledMarker_Grundstueck").each(setLabelZIndex);
       $(".LabeledMarker_BueroPraxis").each(setLabelZIndex);
       $(".LabeledMarker_Einzelhandel").each(setLabelZIndex);
       $(".LabeledMarker_ProduktionLager").each(setLabelZIndex);
       $(".LabeledMarker_GastronomieHotel").each(setLabelZIndex);
       $(".LabeledMarker_Medienareal").each(setLabelZIndex);
       $(".LabeledMarker_Business").each(setLabelZIndex);
       $(".LabeledMarker_Projekt").each(setLabelZIndex);
       $(".LabeledMarker_Gruenderzentrum").each(setLabelZIndex);
       $(".LabeledMarker_Sonstiges").each(setLabelZIndex);

    /*
    $(".LabeledMarker_markerLabelSmall").each(function() {
        this.style.zIndex = -180000000;
         });
$(".LabeledMarker_markerLabelSmall").each(setLabelZIndex);
     */
    

}

function setLabelZIndex()
{
    this.style.zIndex = -180000000;
}

function overfunc(latlong)
{
    //alert(this);
    //alert("over " + 	latlong);
    //this.showMapBlowup();  // öffnet Kartenfenster, nicht Info
    mouseOverMarker = this;
    timeoutControl = window.setTimeout("GEvent.trigger(mouseOverMarker,'click');", 1000);
}

function outfunc()
{
    window.clearTimeout(timeoutControl);
}


function doParts(t, splits)
{
	var tmparray = []
	var lastindex = 0;

	for (var i = 0; i < t.length; i++)
	{
		for (var n = 0; n < splits.length; n++)
		{
			if (t[i] == splits[n])
			{
				tmparray.push(t.substring(lastindex, i));
				lastindex = i;
			}
		}
	}
	tmparray.push(t.substring(lastindex, i));

	return tmparray;

}

function makePretty(t)
{
    var len_allow = 28;
    var len_allow_min =15;

    if (t.length < len_allow || t.search(/[\s-]/) < 0)
        return t;


    var theSplitted = doParts(t, [" ", "-", "/"]);
    //alert(theSplitted);

    var theConstruct = '';
    var thePart = '';

    for (var i = 0; i < theSplitted.length; i++)
    {
        if (thePart.length < len_allow_min)
        {
            thePart += theSplitted[i];
        } else
        {
            if ((thePart + theSplitted[i]).length > len_allow)
            {
                theConstruct = (theConstruct + thePart).replace(/ $/, '') + "<br>";
                thePart = theSplitted[i];
            } else
            {
                thePart += theSplitted[i];
            }

        }
    }

    theConstruct += thePart;

    //alert(theConstruct);
    return theConstruct;
}
