/*
ctrlSelectFeature.selectStyle = null;

IMG_0007.JPG;Kirche
IMG_0002.JPG;Treppe
IMG_0003.JPG;Denkmal
IMG_0004.JPG;Dekmal
IMG_0006.JPG;Treppe

=> Zuordnung STICHWORTE

*/

OLCpatches[OLCpatches.length] = ["function toggle_toolbarZoom2AllFeatures()", "!toolbarZoom2Feature.js"];
function toggle_toolbarZoom2AllFeatures()
{

    try{
        tbftsDeletetoolbarZoom2AllFeatures();
    }catch(err){
        toolbarZoom2feature()
    }

}

OLCpatches[OLCpatches.length] = ["function toolbarZoom2feature()", "!toolbarZoom2Feature.js"];
function toolbarZoom2feature()
{
    try{
        tbftsDeletetoolbarZoom2AllFeatures();
    }catch(err){}

    if(window.ActiveXObject)
        var myDiv  = document.createElement("div");
    else
        var myDiv  = document.createElement("div");

//####################################### ID for drag ####
    myDiv.id = "AberHallo";
//########################################################
    myDiv.style.position         = "absolute";
    myDiv.style.padding          = "0px";
    myDiv.style.border           = "0px solid black";
    myDiv.style.top              = "5px";
    myDiv.style.left             = "250px";
    myDiv.style.width            = "0px";
    myDiv.style.height           = "0px";
    myDiv.style.zIndex           = 1000;
    myDiv.style.backgroundColor  = "#FFFFFF";

    var anArr = [];
    //anArr[anArr.length] = ["onclick", "img src", "id", "title"];
    anArr[anArr.length] = ["tbfts2SearchFeaturesMode();",    "etc/tb2img/application_edit.png","tbfts2SearchFeaturesMode"];
    anArr[anArr.length] = ["tbfts2SearchFeatures();",        "etc/tb2img/add_green.gif","tbfts2SearchFeatures"];

    anArr[anArr.length] = ["tbfts2SelectPrev();",            "etc/tb2img/control_play_revers.png","tbfts2SelectPrevious"];
    anArr[anArr.length] = ["tbfts2SelectActive();",          "etc/tb2img/control_stop.png",       "tbfts2SelectActive"];
    anArr[anArr.length] = ["tbfts2SelectNext();",            "etc/tb2img/control_play.png",       "tbfts2SelectNext"];

    anArr[anArr.length] = ["tbftsPopulateFtSelect();",       "etc/icons/table_refresh.png",       "tbftsPopulateFtSelect"];
    anArr[anArr.length] = ["tbftsZoomMode();",               "etc/tb2img/add_red.gif",            "tbfts2zoomToGeoFeature"];
    anArr[anArr.length] = ["tbfts2AllLayerMode()",           "etc/icons/pictures.png",            "tbfts2toggleMode"];

    theHTML='';
    theHTML += '<table id="ToolsB2" style="position: absolute; top: 5px; left: 5px; width:60px;height:20px;border:1px solid black; background-color:#BEBEBE">';
    theHTML += '<tbody><tr>';

    try{
        var ft2Count  = 0;//map.layers[map.aktLayer].features.length;
        //document.getElementById("tdlyrvisibility").innerHTML = (editableLayer.getVisibility()==true ? 'visible' : 'hidden');
        var ft2Select = "";//GeoloadZoomToAllFeatures();
    }catch(err){};


    theHTML += '<td><span style="width:4px;padding: 1px;cursor:pointer;background-color:#999999" onmousedown="dragStart(event, \'' + myDiv.id + '\')">&#160;&#160;</span></td>';
    theHTML += '<td id="ift2Count">' + ft2Count + '</td><td id="iFt2Select" style="width:200px;">' + ft2Select + '</td>';

    for(var i=0;i<anArr.length;i++)
    {
        theHTML += '<td><img title="' + anArr[i][2] + '" onclick="' + anArr[i][0] + '" src="' + anArr[i][1] + '" class="ico" id="anArr' + (i+10) + '"/></td>';
    }

    theHTML += '</tr>';
    theHTML += '</tbody></table>';

    myDiv.innerHTML = theHTML;
    document.body.appendChild(myDiv);
    prevLayerOfSelect = map.layers[0];
//    tbPopulateFtSelect();
    //zoomToGeoFeatureFlag = !zoomToGeoFeatureFlag;
    tbfts2AllLayerModeFlag = !tbfts2AllLayerModeFlag;
    tbftsZoomModeImg();
    tbfts2AllLayerMode();
}

OLCpatches[OLCpatches.length] = ["function tbftsDeletetoolbarZoom2AllFeatures()", "!toolbarZoom2Feature.js"];
function tbftsDeletetoolbarZoom2AllFeatures()
{
    var obj = document.getElementById("AberHallo");
    obj.parentNode.removeChild(obj);
}

OLCpatches[OLCpatches.length] = ["function tbfts2AllLayerMode()", "!toolbarZoom2Feature.js"];
function tbfts2AllLayerMode()
{
    var imgObj = document.getElementById("anArr17");
    tbfts2AllLayerModeFlag=!tbfts2AllLayerModeFlag;
    if(tbfts2AllLayerModeFlag)
        imgObj.src = "etc/icons/pictures.png";
    else
        imgObj.src = "etc/icons/table.png";
    tbftsPopulateFtSelect();
}

OLCpatches[OLCpatches.length] = ["function tbftsZoomMode()", "!toolbarZoom2Feature.js"];
function tbftsZoomMode()
{
    var imgObj = document.getElementById("anArr16");
    zoomToGeoFeatureFlag= (typeof map.layers[map.aktLayer].vendor.zoomToGeoFeatureFlag != 'undefined') ? !map.layers[map.aktLayer].vendor.zoomToGeoFeatureFlag : !zoomToGeoFeatureFlag;
    if(zoomToGeoFeatureFlag)
        imgObj.src = "etc/tb2img/add_red.gif";
    else
        imgObj.src = "etc/tb2img/add_blue.gif";

    map.layers[map.aktLayer].vendor.zoomToGeoFeatureFlag = zoomToGeoFeatureFlag;
}

OLCpatches[OLCpatches.length] = ["function tbftsZoomModeImg()", "!toolbarZoom2Feature.js"];
function tbftsZoomModeImg()
{
    var imgObj = document.getElementById("anArr16");
    zoomToGeoFeatureFlag= (typeof map.layers[map.aktLayer].vendor.zoomToGeoFeatureFlag != 'undefined') ? map.layers[map.aktLayer].vendor.zoomToGeoFeatureFlag : zoomToGeoFeatureFlag;
    if(zoomToGeoFeatureFlag)
        imgObj.src = "etc/tb2img/add_red.gif";
    else
        imgObj.src = "etc/tb2img/add_blue.gif";

    map.layers[map.aktLayer].vendor.zoomToGeoFeatureFlag = zoomToGeoFeatureFlag;
}

OLCpatches[OLCpatches.length] = ["function x_tbZoomMode()", "!toolbarZoom2Feature.js"];
function x_tbZoomMode()
{
    var imgObj = document.getElementById("anArr16");
    zoomToGeoFeatureFlag=!zoomToGeoFeatureFlag
    if(zoomToGeoFeatureFlag)
        imgObj.src = "etc/tb2img/add_red.gif";
    else
        imgObj.src = "etc/tb2img/add_blue.gif";
}

OLCpatches[OLCpatches.length] = ["function tbftsPopulateFtSelect()", "!toolbarZoom2Feature.js"];
function tbftsPopulateFtSelect()
{
    document.getElementById("iFt2Select").innerHTML = GeoloadZoomToAllFeatures();
}

var movePoint = false;
var nextPoint = true;
var zoomToGeoFeatureFlag = false;
var tbfts2AllLayerModeFlag = false;

var prevLayerOfSelect;

OLCpatches[OLCpatches.length] = ["function tbfts2SelectActive()", "!toolbarZoom2Feature.js"];
function tbfts2SelectActive()
{
    //selectedFeature des vorigen Layers prüfen, wenn vorhanden, dann unselecten (s.u.)
    var selectedFeatures = (typeof prevLayerOfSelect.selectedFeatures) != "undefined" ? prevLayerOfSelect.selectedFeatures : [];
       if (selectedFeatures.length > 0)
            ctrlSelectFeature.unselect(selectedFeatures[0]);

    var idx = document.getElementById("sel2GeoFeatures").selectedIndex;

    if(idx < document.getElementById("sel2GeoFeatures").length)
        document.getElementById("sel2GeoFeatures")[idx].selected=true;
    else if(idx == document.getElementById("sel2GeoFeatures").length)
    {   document.getElementById("sel2GeoFeatures")[0].selected=true;
        idx=0;
    }

    var idxSelect = document.getElementById("sel2GeoFeatures").value.split("_");
    var vlayer = map.layers[idxSelect[0]];
    var feature = vlayer.features[idxSelect[1]];
    vlayer.vendor["tbftsLastSelect"]=idxSelect;

    if(zoomToGeoFeatureFlag==true) tbfts2zoomToAllGeoFeatures();
    prevLayerOfSelect = vlayer;
    ctrlSelectFeature.select(feature);
    //was();
}

OLCpatches[OLCpatches.length] = ["function tbfts2SelectNext()", "!toolbarZoom2Feature.js"];
function tbfts2SelectNext()
{
    //selectedFeature des vorigen Layers prüfen, wenn vorhanden, dann unselecten (s.u.)
    var selectedFeatures = (typeof prevLayerOfSelect.selectedFeatures) != "undefined" ? prevLayerOfSelect.selectedFeatures : [];
       if (selectedFeatures.length > 0)
            ctrlSelectFeature.unselect(selectedFeatures[0]);

    var idx = document.getElementById("sel2GeoFeatures").selectedIndex + 1;

    if(idx < document.getElementById("sel2GeoFeatures").length)
        document.getElementById("sel2GeoFeatures")[idx].selected=true;
    else if(idx == document.getElementById("sel2GeoFeatures").length)
    {   document.getElementById("sel2GeoFeatures")[0].selected=true;
        idx=0;
    }

    var idxSelect = document.getElementById("sel2GeoFeatures").value.split("_");
    var vlayer = map.layers[idxSelect[0]];
    var feature = vlayer.features[idxSelect[1]];
    vlayer.vendor["tbftsLastSelect"]=idxSelect;

    //document.getElementById("ift2Count").innerHTML = idx;
    if(zoomToGeoFeatureFlag==true) tbfts2zoomToAllGeoFeatures();
    prevLayerOfSelect = vlayer;
    ctrlSelectFeature.select(feature);
    //was();
}

OLCpatches[OLCpatches.length] = ["function tbfts2SelectPrev()", "!toolbarZoom2Feature.js"];
function tbfts2SelectPrev()
{
    var idxSelect = document.getElementById("sel2GeoFeatures").value.split("_");
    var vlayer = map.layers[idxSelect[0]];

    //selectedFeature des vorigen Layers prüfen, wenn vorhanden, dann unselecten (s.u.)
    var selectedFeatures = (typeof prevLayerOfSelect.selectedFeatures) != "undefined" ? prevLayerOfSelect.selectedFeatures : [];
       if (selectedFeatures.length > 0)
            ctrlSelectFeature.unselect(selectedFeatures[0]);

    var idx = document.getElementById("sel2GeoFeatures").selectedIndex - 1;

    if(idx > -1)
        document.getElementById("sel2GeoFeatures")[idx].selected=true;
    else if(idx == -1)
    {   document.getElementById("sel2GeoFeatures")[0].selected=true;
        idx=0;
    }

    var idxSelect = document.getElementById("sel2GeoFeatures").value.split("_");
    var vlayer = map.layers[idxSelect[0]];
    var feature = vlayer.features[idxSelect[1]];
    vlayer.vendor["tbftsLastSelect"]=idxSelect;

    //document.getElementById("ift2Count").innerHTML = idx;
    if(zoomToGeoFeatureFlag==true) tbfts2zoomToAllGeoFeatures();
    prevLayerOfSelect = vlayer;
    ctrlSelectFeature.select(feature);
    //was();
}

OLCpatches[OLCpatches.length] = ["function SelectFeatureEvent(flag, lyr)", "!toolbarZoom2Feature.js"];
function SelectFeatureEvent(flag, lyr)
{
}

function DownAndUp()
{
        map.setCenter(map.getCenter(), map.getZoom()-1);
        map.setCenter(map.getCenter(), map.getZoom()+1);
}

OLCpatches[OLCpatches.length] = ["function Rundherum(Wert,Stellen)", "!toolbarZoom2Feature.js"];
function Rundherum(Wert,Stellen)
{
    return(Math.round(Wert*Math.pow(10,Stellen))/Math.pow(10,Stellen));
}

OLCpatches[OLCpatches.length] = ["function tbfts2zoomToAllGeoFeatures()", "!toolbarZoom2Feature.js"];
function tbfts2zoomToAllGeoFeatures()
{
    var idxSelect = document.getElementById("sel2GeoFeatures").value.split("_");
    var vlayer = map.layers[idxSelect[0]];
    var feature = vlayer.features[idxSelect[1]];

    var idx = idxSelect[1];

    var msg = "";
    if (typeof vlayer.isVector != "undefined" && vlayer.isVector == true && idx!=-1)
    {
        var featureCount = vlayer.features.length;
        if (idx < featureCount) {
            if (vlayer.features[idx].geometry.CLASS_NAME == "OpenLayers.Geometry.Point")
            {   var x = vlayer.features[idx].geometry.x;
                var y = vlayer.features[idx].geometry.y;
            }
            else
            {   var x = (vlayer.features[idx].geometry.getBounds().left + vlayer.features[idx].geometry.bounds.right) / 2;
                var y = (vlayer.features[idx].geometry.bounds.top + vlayer.features[idx].geometry.bounds.bottom) / 2;
            }
            map.setCenter(new OpenLayers.LonLat(x, y), map.getZoom());
        }
        else
            msg = "Index > FeatureCount";
    }
    else
        msg = vlayer.name + " ist kein Vektorlayer.";

    return msg;
}

OLCpatches[OLCpatches.length] = ["function GeoloadZoomToAllFeatures()", "!toolbarZoom2Feature.js"];
function GeoloadZoomToAllFeatures()
{
    var theHTML = "<select id='sel2GeoFeatures' style='width:200px;'>";

    var SumFeatureCount = 0;

    for(var j=0;j<map.layers.length;j++)
    {
        var msg = map.layers[j].name;
        var vlayer = map.layers[j];
        if (typeof vlayer.isVector != "undefined" && vlayer.isVector == true && (tbfts2AllLayerModeFlag==true || (tbfts2AllLayerModeFlag!=true && j==map.aktLayer)) )
        {
            var featureCount = vlayer.features.length;
            SumFeatureCount += featureCount;

//alert(msg);
            if(featureCount>0)
            {
                vlayer["vendor"].AttRefName = (typeof vlayer["vendor"].AttRefName == 'undefined') ? 'name' : vlayer["vendor"].AttRefName;

                var name = vlayer["vendor"].AttRefName;
                for(var i=0;i<featureCount;i++)
                {
                    if(i==2500)
                    {   var optionText = "Zuviele Features";
                        theHTML += "<option value='-1'>" + optionText;
                        break;
                    }
                    else
                    {
                        var optionText = (typeof vlayer.features[i].attributes[name] == "undefined") ? vlayer.features[i].id : vlayer.features[i].attributes[name];
                        if(vlayer.vendor["tbftsLastSelect"] != undefined && map.aktLayer == j && parseInt(vlayer.vendor["tbftsLastSelect"][1],10) == i)
                        {    theHTML += "<option value='" + j + "_" + i + "' selected>" + j + "_" + i + " " + optionText;
                             //alert("Halla");
                        }
                        else
                            theHTML += "<option value='" + j + "_" + i + "'>" + j + "_" + i + " " + optionText;
                    }
                }
            }
            else
                theHTML += "<option value='" + j + "'>Layer " + msg + " has no features.</option>";
        }

    }
    theHTML += "</select>";

    if(SumFeatureCount==0)
    {
        theHTML = "<select id='sel2GeoFeatures' style='width:200px;'>";
        theHTML += "<option value='nixda'>Layers have no features.</option>";
        theHTML += "</select>";
    }

    document.getElementById("ift2Count").innerHTML = SumFeatureCount;
    saveFeaturesSelect = theHTML;
    return(theHTML);
}

//!!!Achtung!!! : search für WFS layer nach Zentrieren (d.h. in der Regel neuer Abruf der Daten) löschen!!!
var saveFeaturesSelect;
var SearchFeaturesModeFlag = false;

OLCpatches[OLCpatches.length] = ["function tbfts2SearchFeaturesMode()", "!toolbarZoom2Feature.js"];
function tbfts2SearchFeaturesMode()
{
    SearchFeaturesModeFlag = !SearchFeaturesModeFlag;
    if(SearchFeaturesModeFlag==true)
    {
        var inputHTML = '<input id="tbfts2FtSearchString" type="text" style="font-size:12px;200px;">';
        document.getElementById("iFt2Select").innerHTML = inputHTML;
        document.getElementById("anArr10").src = "etc/tb2img/cancel.png";
    }
    else
    {   document.getElementById("anArr10").src = "etc/tb2img/application_edit.png";
        document.getElementById("iFt2Select").innerHTML = saveFeaturesSelect;
    }
}

OLCpatches[OLCpatches.length] = ["function xtb2SearchFeatures()", "!toolbarZoom2Feature.js"];
function xtb2SearchFeatures()
{
    if(SearchFeaturesModeFlag != true)
        return;

    var Suche = document.getElementById("tb2FtSearchString").value;
    var Treffer = false;

    document.getElementById("iFt2Select").innerHTML = saveFeaturesSelect;

    var obj = document.getElementById("sel2GeoFeatures");

    var theHTML = "<select id='sel2GeoFeatures' style='width:200px;'>";
    for(var i=0;i<obj.length;i++)
    {
        var derText = obj[i].text;
        if(derText.search(Suche)!=-1)
        {   theHTML += "<option value='" + obj[i].value + "'>" + derText + "</option>\r\n";
            Treffer = true;
        }
    }
    theHTML += "</select>";

    if(Treffer==false)
    {
        theHTML = "<select id='sel2GeoFeatures' style='width:200px;'>";
        theHTML += "<option value='nixda'>Search was successless.</option>";
        theHTML += "</select>";
    }
    document.getElementById("iFt2Select").innerHTML = theHTML;
    SearchFeaturesModeFlag = false;
}

OLCpatches[OLCpatches.length] = ["function tbfts2SearchFeatures()", "!toolbarZoom2Feature.js"];
function tbfts2SearchFeatures()
{
    if(SearchFeaturesModeFlag != true)
        return;

    var Suche = document.getElementById("tbfts2FtSearchString").value;
    var Treffer = false;

    document.getElementById("iFt2Select").innerHTML = saveFeaturesSelect;

    var obj = document.getElementById("sel2GeoFeatures");

    var theHTML = "<select id='sel2GeoFeatures' style='width:200px;'>";
    for(var i=0;i<obj.length;i++)
    {
        var derText = obj[i].text;

        var re = new RegExp(Suche,"ig");
        var arrReEx = re.exec(derText);
        if(arrReEx!=null)
        //if(derText.search(Suche)!=-1)
        {   theHTML += "<option value='" + obj[i].value + "'>" + derText + "</option>\r\n";
            Treffer = true;
        }
    }
    theHTML += "</select>";

    if(Treffer==false)
    {
        theHTML = "<select id='sel2GeoFeatures' style='width:200px;'>";
        theHTML += "<option value='nixda'>Search was successless.</option>";
        theHTML += "</select>";
    }
    document.getElementById("iFt2Select").innerHTML = theHTML;
    SearchFeaturesModeFlag = false;
}
//toolbarZoom2feature();


