var PREVgeoPointSearchService="Panoramio";
var geoSearchService;
var oldFilter;

function searchGEOOBJEKT()
{
    getSearchOptions();

    geoSearchService = "geonames.org";

    var derFilter = document.getElementById("txtFilter").value;

    if(oldFilter == derFilter)
    {
        document.getElementById("tdspanselResult").innerHTML = tdSearchResult;
        document.getElementById("selGEONAMES")[tdSearchResultIdx].selected=true;
        return true;
    }

    oldFilter = derFilter;

    if(document.implementation && document.implementation.createDocument)
    {
        var theUrl = aspProxy;
        var theParams  = QuestionMark + "url=http://ws.geonames.org/" + geoNameSearchService;
        //var theParams  = "http://ws.geonames.org/searchJSON";
            theParams     += "&q=" + derFilter + "&maxRows="+geoSearchRows;
    }
    else
    {
        var theUrl = "http://ws.geonames.org/" + geoNameSearchService;
        //var theUrl = "http://ws.geonames.org/searchJSON";
        var theParams  = QuestionMark + "q=" + derFilter + "&maxRows="+geoSearchRows;
    }

    var myAjax = new OpenLayers.Ajax.Request(
    	theUrl,
    	{
    		method: 'get',
    		parameters: theParams,
    		onComplete: showResponse0,
    		onFailure: showResponseFailure
    	});
}

function showResponse0(originalRequest)
{
//alert("Anfang:showResponse0");
    if(originalRequest.responseText=="Permission denied")
    {   document.getElementById("tdspanselResult").innerHTML = "";
        showResponseFailure(originalRequest);
    }
    else if(originalRequest.responseText.substr(0,6)=="Error:")
    {   if(tdSearchResult == '')
            oldFilter="";
        document.getElementById("tdspanselResult").innerHTML = tdSearchResult;
        document.getElementById("selGEONAMES")[tdSearchResultIdx].selected=true;
        showResponseFailure(originalRequest);
        return false;
    }

    try{
        bana = eval('(' + originalRequest.responseText + ')');
    }catch(err){
        ;//bana['geonames'] = "";
    }

    var derString = "";
    var vbCrLf = "\r\n";

    var theObj = bana["geonames"];

    if(!bana['geonames'] || bana['geonames'] == "")
    {
        if(bana['status'])
            alert(bana['status']['message']);
        else if(bana['geonames'] == "")
            alert('Keine Einträge gefunden');
        else
            alert('Undefined error!' + '\r\n' + originalRequest.responseText);

        document.getElementById("tdspanselResult").innerHTML = tdSearchResult;
        document.getElementById("selGEONAMES")[tdSearchResultIdx].selected=true;
        return false;
    }

    var theSelHTML = "<select id='selGEONAMES'>" + vbCrLf;

    var geoNames = new Array();
    for(var i=0;i<theObj.length;i++){
        geoNames[i] = new Array();
        geoNames[i]["countryName"] = theObj[i]["countryName"];
        geoNames[i]["adminCode1"] = theObj[i]["adminCode1"];
        geoNames[i]["fclName"] = theObj[i]["fclName"];
        geoNames[i]["countryCode"] = theObj[i]["countryCode"];
        geoNames[i]["lng"] = theObj[i]["lng"];
        geoNames[i]["fcodeName"] = theObj[i]["fcodeName"];
        geoNames[i]["fcl"] = theObj[i]["fcl"];
        geoNames[i]["name"] = theObj[i]["name"];
        geoNames[i]["fcode"] = theObj[i]["fcode"];
        geoNames[i]["geonameId"] = theObj[i]["geonameId"];
        geoNames[i]["lat"] = theObj[i]["lat"];
        geoNames[i]["population"] = theObj[i]["population"];
        geoNames[i]["adminName1"] = theObj[i]["adminName1"];

        geoNames[i]["summary"] = theObj[i]["summary"];
        geoNames[i]["title"] = theObj[i]["title"];
        geoNames[i]["wikipediaUrl"] = theObj[i]["wikipediaUrl"];
        geoNames[i]["lng"] = theObj[i]["lng"];
        geoNames[i]["thumbnailImg"] = theObj[i]["thumbnailImg"];
        geoNames[i]["lang"] = theObj[i]["lang"];
        geoNames[i]["lat"] = theObj[i]["lat"];
        geoNames[i]["population"] = theObj[i]["population"];
        geoNames[i]["elevation"] = theObj[i]["elevation"];
        geoNames[i]["feature"] = theObj[i]["feature"];

        if(geoNames[i]["name"] && selGEONAMEStext=="SHORT")
            theSelHTML += "<option value='" + i + "," + geoNames[i]["lng"] + "," + geoNames[i]["lat"] + "'>" + geoNames[i]["name"] + ", " + geoNames[i]["adminName1"] + vbCrLf;
        else if(geoNames[i]["name"])
            theSelHTML += "<option value='" + i + "," + geoNames[i]["lng"] + "," + geoNames[i]["lat"] + "'>" + geoNames[i]["name"] + ", " + geoNames[i]["countryCode"] + ", " + geoNames[i]["adminName1"] + vbCrLf;
        else
            theSelHTML += "<option value='" + i + "," + geoNames[i]["lng"] + "," + geoNames[i]["lat"] + "'>" + geoNames[i]["title"] + vbCrLf;
    }

    theSelHTML += "</select>";
    document.getElementById("tdspanselResult").innerHTML = theSelHTML;
    tdSearchResult = document.getElementById("tdspanselResult").innerHTML;

}

function showResponseFailure(originalRequest)
{
    alert("Es ist ein Fehler aufgetreten!" + "\r\n" + originalRequest.responseText);
}

/* siehe clickpoint.html

function centerOnGEOOBJEKT()
{
    togglesearchTools(1);
    var newZoomLevel = map.getZoom();

    var tmpCenter = document.getElementById("selGEONAMES").value.split(",");

    var SRS = map.projection;
    var srcSRS = "EPSG:4326";
    var projSupported = false;

    if( (Math.round(tmpCenter[1])==0 || Math.round(tmpCenter[2])==0) && srcSRS!="EPSG:4326")
    {   alert("Nullpunkt. Kein Center! " + tmpCenter);
        return false;
    }

    var lon = parseFloat(tmpCenter[1]);
    var lat = parseFloat(tmpCenter[2]);

    if(SRS=="EPSG:4326")
    {
        var RECHTS = GK2Geo(lon, lat, 6, 0, 0,  0, 3);
        var HOCH   = GK2Geo(lon, lat, 6, 0, 0, 10, 3);
        //alert(RECHTS + ", " + HOCH);

        lon = RECHTS;
        lat = HOCH;
        projSupported = true;
    }
    else if(SRS=="EPSG:31466")
    {
        projSupported = true;
    }
    else if(SRS=="EPSG:900913")
    {
        var point = OpenLayers.Layer.SphericalMercator.forwardMercator(lon, lat);
        lon = point.lon;
        lat = point.lat;
        projSupported = true;
    }

    if(projSupported == false)
        alert("Projektion " + SRS + " wird nicht unterstützt.");
    else
        map.setCenter(new OpenLayers.LonLat(lon, lat), map.getZoom());


    if(geoSearchService=="NearByWikipedia")
    {
        var msg = "<b>" + geoSearchService + "</b><br><br>";
        var theUrl = "<a href='http://" + tmpCenter[3] + "' target='_new'>" + document.getElementById("selGEONAMES")[tmpCenter[0]].textContent + "</a>";

        if( (typeof geoNames[tmpCenter[0]]["thumbnailImg"]) != 'undefined')
            msg += "<img src='" + geoNames[tmpCenter[0]]["thumbnailImg"] + "'><br>";
        msg += "<b>Summary:</b> ... " + geoNames[tmpCenter[0]]["summary"] + "<br>";
        msg += theUrl;

        parent.frames['fr_R'].document.getElementById("divMessage").innerHTML =  msg + "<br><br>";
        parent.frames['fr_R'].document.getElementById("taMessage").style.display = "none";
        parent.frames['fr_R'].document.getElementById("divMessage").style.display = "block";
    }
    else if(geoSearchService=="NearBygeonames.org")
    {
    }

}

siehe clickpoint.html */

function startSearch()
{
    tdSearchResultIdx = document.getElementById("selGEONAMES").selectedIndex;
    tdSearchResult = document.getElementById("tdspanselResult").innerHTML;
    document.getElementById("tdspanselResult").innerHTML = "<img height='8px' src='images/working.gif'>";
    searchGEOOBJEKT();
}

function toggleTools(flag)
{
    if(flag==-1)
    {   document.getElementById("mybuttonsshow").style.visibility="hidden";
        document.getElementById("mybuttonshide").style.visibility="visible";
    }
    else if(flag==1)
    {   document.getElementById("mybuttonshide").style.visibility="hidden";
        document.getElementById("mybuttonsshow").style.visibility="visible";
        document.getElementById("queryFilter").style.visibility="hidden";
        document.getElementById("queryFilterhide").style.visibility="hidden";
    }
}
function togglesearchTools(flag)
{
    if(flag==-1) //showSearch
    {   document.getElementById("queryFilterhide").style.visibility="hidden";
        document.getElementById("queryFilter").style.visibility="visible";
    }
    else if(flag==1) //hideSearch
    {   document.getElementById("queryFilter").style.visibility="hidden";
        document.getElementById("queryFilterhide").style.visibility="visible";
    }
}

function showsearchTool()
{
    document.getElementById("mybuttonsshow").style.visibility="hidden";
    document.getElementById("mybuttonshide").style.visibility="hidden";
    document.getElementById("queryFilter").style.visibility="visible";
    document.getElementById("queryFilterhide").style.visibility="hidden";

}

function populateLayer()
{
    //populate select for layers in tools div
    var theHTML = '<select id="selAktLyr" onchange="setAktLyr();">';
    for(var i=0;i<map.layers.length;i++)
    {
        theHTML += '<option value=' + i + '>' + map.layers[i].name;
    }
    document.getElementById("spanselAktLyr").innerHTML = theHTML + '</select>';
}

//##############################################################################
//Some Utilities
//##############################################################################

var counter = 0;
function refreshTiles()
{
    map.layers[AktLyr].mergeNewParams({ counter : counter++ });
}

var removeLyrIdx;
function removeAktLayer()
{
    if(AktLyr>removeLyrIdx)
    {
        map.removeLayer(map.layers[AktLyr]);
        if(editableLayer == map.layers[AktLyr])
            swapPanel(5);
        //populate select for layers in tools div
        var theHTML = '<select id="selAktLyr" onchange="setAktLyr();">';
        for(var i=0;i<map.layers.length;i++)
        {
            theHTML += '<option value=' + i + '>' + map.layers[i].name;
        }
        document.getElementById("spanselAktLyr").innerHTML = theHTML + '</select>';
        AktLyr=0;
    }
}

var AktLyr  = 0;
function setAktLyr()
{
    //selectedFeature des vorigen Layers prüfen, wenn vorhanden, dann unselecten (s.u.)
    var selectedFeatures = (typeof map.layers[AktLyr].selectedFeatures) != "undefined" ? map.layers[AktLyr].selectedFeatures : [];

    AktLyr = document.getElementById("selAktLyr").value;
    //Layer 0-5 dürfen nicht gelöscht werden, Funktion in toolbar disablen
    if(AktLyr>5)
        document.getElementById("remove").className = "ico";
    else
        document.getElementById("remove").className = "icos";

    //Aktueller Layer ist Vectorlayer, dann eventuell vorhandene featureSelection des vorigen Layers aufheben
    //und editcontrol verbinden
    if( (typeof map.layers[AktLyr].isVector != 'undefined') && map.layers[AktLyr].isVector == true)
    {
       if (selectedFeatures.length > 0)
            editControl.controls[5].unselect(selectedFeatures[0]);
       swapPanel(AktLyr);
    }
/*
    FeatureCollection into select-input zwecks zoomen auf
        loadZoomToFeature(vlayer);
*/
}

function newOpacity(flag)
{

    if(window.ActiveXObject && map.layers[AktLyr].name.substr(0,6).toUpperCase() == "GOOGLE")
    {   alert("IE hat Probleme mit Google Layern und Opacity.");
        return false;
    }

    var aktOpacity = map.layers[AktLyr].opacity;

    if(typeof aktOpacity=='undefined')
       aktOpacity=1;

    if(flag==-1)
    {   var tmp = (aktOpacity>0) ? aktOpacity - 0.10 : 0;
        map.layers[AktLyr].setOpacity(tmp);
    }
    if(flag==1)
    {   var tmp = (aktOpacity<1) ? aktOpacity + 0.10 : 1;
        map.layers[AktLyr].setOpacity(tmp);
    }
}

var debugWin;

function PopupWindow(Links, Oben, dieBreite, dieHoehe, dieUrl, targetValue)
{
    // neues Fenster öffnen

    var szWinStyle = new String ("");
    szWinStyle =  'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes';
    szWinStyle += ', top=' + Oben + ', left=' + Links + ', width=' + dieBreite + 'px, height=' + dieHoehe +'px';

    debugWin = window.open (dieUrl, targetValue, szWinStyle);
    debugWin.focus();

    return(true);
}

function reSizeWindow()
{
    parent.window.resizeTo(860,650); //html
    parent.window.moveTo(262,0); //html
}

