var arrEPSG = [];
arrEPSG["WGS84"]        = "4326";
arrEPSG["ETRS89_LL"]    = "4258";
arrEPSG["DE_DHDN_LL"]   = "4314";
arrEPSG["DE_DHDN_3GK2"] = "31466";
arrEPSG["DE_DHDN_3GK3"] = "31467";
arrEPSG["DE_DHDN_3GK4"] = "31468";
arrEPSG["DE_DHDN_3GK5"] = "31469";
arrEPSG["ETRS89_UTM32"] = "25832";
arrEPSG["ETRS89_UTM33"] = "25833";

var deltaX = 10;

function init()
{
    document.getElementById("selSomeWas").innerHTML = setPointDropDownList();
    getNewImages();
}

function setPointDropDownList()
{
    var theHTML = "<select id='SomeWas''>\r\n";
    for(var i=0;i<testdatenArr.length;i++)
    {
        theHTML += "<option value='" + testdatenArr[i][0] + "'>" + testdatenArr[i][0] + " : " + testdatenArr[i][2] + " - " + testdatenArr[i][5] + "\r\n";
    }
    theHTML += "</select><input type='button' value='Go' onclick='getNewImages();'>\r\n";
    return(theHTML);
}

function getNewImages()
{
    deltaX = parseInt(document.getElementById("txtDX").value,10);

    if(deltaX==0 || deltaX<0)
        deltaX=10;

//var mapfile    = "http://gis.ibbeck.de/include/mapserver/nad_beta2007.asp";
//var mapfileB   = "http://gis.ibbeck.de/include/mapserver/nad_germany.asp";

    if(document.getElementById("cbxProj").checked == true)
    {   serverWMS  = "http://gis.ibbeck.de/include/mapserv561/nad_germany.asp"; //mapserv + "?map=" + mapfileB;
        serverWMS52= "http://gis.ibbeck.de/include/mapserv52/nad_germany.asp"; //mapserv + "?map=" + mapfileB;
        serverWFS  = "http://gis.ibbeck.de/include/mapserv561/nad_germany.asp"; //mapservWFS + "?map=" + mapfileB;
    }
    else
    {   serverWMS  = "http://gis.ibbeck.de/include/mapserv561/nad_beta2007.asp"; //mapserv + "?map=" + mapfile;
        serverWMS52= "http://gis.ibbeck.de/include/mapserv52/nad_beta2007.asp"; //mapserv + "?map=" + mapfile;
        serverWFS  = "http://gis.ibbeck.de/include/mapserv561/nad_beta2007.asp"; //mapservWFS + "?map=" + mapfile;
    }
    var idx = document.getElementById("SomeWas").selectedIndex;

    document.getElementById("fromImg").src = serverWMS + getParamsWMS(idx, "FROM");
    document.getElementById("toImg").src   = serverWMS + getParamsWMS(idx, "TO");

    document.getElementById("tdFromText").innerHTML = testdatenArr[idx][2].replace(/Lat-Lon/i, "LL");
    document.getElementById("tdToText").innerHTML   = testdatenArr[idx][5].replace(/Lat-Lon/i, "LL");

    //Links Originaldaten R11 R12
    document.getElementById("tdR11").innerHTML = testdatenArr[idx][3];
    document.getElementById("tdR12").innerHTML = testdatenArr[idx][4];

    //Rechts Originaldaten R13 R14
    document.getElementById("tdR13").innerHTML = testdatenArr[idx][6];
    document.getElementById("tdR14").innerHTML = testdatenArr[idx][7];

    //Make a Query
    //document.getElementById("tdR21").innerHTML = "<a href='" + serverWMS + makeAquery(idx, "FROM") + "' target='new'>Hallo</a>";
    //document.getElementById("tdR22").innerHTML = "<a href='" + serverWMS + makeAquery(idx, "TO") + "' target='new'>Hallo</a>";
    document.getElementById("tdR41").innerHTML = "<input type='button' value='GetFeatureInfo' onclick='OpenGetFeatureInfo(0," + idx + ")'>";
    document.getElementById("tdR43").innerHTML = "<input type='button' value='GetFeatureInfo' onclick='OpenGetFeatureInfo(1," + idx + ")'>";

    document.getElementById("tdR21").innerHTML = "&#160;";
    document.getElementById("tdR22").innerHTML = "&#160;";
    document.getElementById("tdR23").innerHTML = "&#160;";
    document.getElementById("tdR24").innerHTML = "&#160;";

    GetFeatureInfoWFS(idx, "FROM");
    GetFeatureInfoWFS(idx, "TO");

}

function OpenGetFeatureInfo(What, idx)
{
    if(What==1)
        var url = serverWMS52 + makeAquery(idx, "FROM");
    else
        var url = serverWMS52 + makeAquery(idx, "TO");

    var szWinStyle = new String ("");
    szWinStyle =  'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes';
    szWinStyle += ', top=10, left=10, width=420px, height=350px';

    window.open(url, "GetfeatureInfo", szWinStyle);

}

function getParamsWMS(idx, flag)
{
    if(flag=="FROM")
    {
        var LAYER = testdatenArr[idx][2].replace(/Lat-Lon/i, "LL");
        var toLAYER   = testdatenArr[idx][5].replace(/Lat-Lon/i, "LL");

        if(LAYER.search(/_LL/i) != -1)
            dx = deltaX / 10000;
        else
            dx = deltaX;

        var X = testdatenArr[idx][3];
        var Y = testdatenArr[idx][4];

        var BBOX = (X-dx) + "," + (Y-dx) + "," + (X+dx) + "," + (Y+dx);
        var LAYERS = LAYER + "," + toLAYER;
    }
    else
    {
        var fromLAYER = testdatenArr[idx][2].replace(/Lat-Lon/i, "LL");
        var LAYER   = testdatenArr[idx][5].replace(/Lat-Lon/i, "LL");

        if(LAYER.search(/_LL/i) != -1)
            dx = deltaX / 10000;
        else
            dx = deltaX;

        var X = testdatenArr[idx][6];
        var Y = testdatenArr[idx][7];

        var BBOX = (X-dx) + "," + (Y-dx) + "," + (X+dx) + "," + (Y+dx);
        var LAYERS = fromLAYER + "," + LAYER;
    }

    var paramsWMS = "";
    paramsWMS += "?LAYERS=" + LAYERS;
    paramsWMS += "&FORMAT=image%2Fpng";
    paramsWMS += "&VERSION=1.1.1";
    paramsWMS += "&TRANSPARENT=true";
    paramsWMS += "&SERVICE=WMS";
    paramsWMS += "&REQUEST=GetMap";
    paramsWMS += "&STYLES=";
    paramsWMS += "&EXCEPTIONS=application%2Fvnd.ogc.se_inimage";
    paramsWMS += "&SRS=EPSG%3A" + arrEPSG[LAYER];

    paramsWMS += "&BBOX=" + BBOX;

    paramsWMS += "&WIDTH=256";
    paramsWMS += "&HEIGHT=256";

    return (paramsWMS);
}

function makeAquery(idx, flag)
{
    if(flag=="TO")
    {
        var LAYER = testdatenArr[idx][2].replace(/Lat-Lon/i, "LL");
        var toLAYER   = testdatenArr[idx][5].replace(/Lat-Lon/i, "LL");

        if(LAYER.search(/_LL/i) != -1)
            dx = deltaX / 10000;
        else
            dx = deltaX;

        var X = testdatenArr[idx][3];
        var Y = testdatenArr[idx][4];

        var BBOX = (X-dx) + "," + (Y-dx) + "," + (X+dx) + "," + (Y+dx);
        var LAYERS = LAYER;// + "," + toLAYER;
        var vonLAYER = LAYER;
    }
    else
    {
        var fromLAYER = testdatenArr[idx][2].replace(/Lat-Lon/i, "LL");
        var LAYER   = testdatenArr[idx][5].replace(/Lat-Lon/i, "LL");

        if(LAYER.search(/_LL/i) != -1)
            dx = deltaX / 10000;
        else
            dx = deltaX;

        var X = testdatenArr[idx][6];
        var Y = testdatenArr[idx][7];

        var BBOX = (X-dx) + "," + (Y-dx) + "," + (X+dx) + "," + (Y+dx);
        var LAYERS = LAYER;// + "," + LAYER;
        var vonLAYER = LAYER;
    }

    var paramsWMS = "";
    paramsWMS += "?QUERY_LAYERS=" + LAYERS;
    paramsWMS += "&LAYERS=" + LAYERS;
    paramsWMS += "&FORMAT=image%2Fpng";
    paramsWMS += "&VERSION=1.1.1";
    paramsWMS += "&TRANSPARENT=true";
    paramsWMS += "&SERVICE=WMS";
    paramsWMS += "&REQUEST=GetFeatureInfo";
    paramsWMS += "&STYLES=";
    paramsWMS += "&EXCEPTIONS=application%2Fvnd.ogc.se_xml";
    paramsWMS += "&SRS=EPSG%3A" + arrEPSG[vonLAYER];
    paramsWMS += "&BBOX=" + BBOX;
    paramsWMS += "&X=128";
    paramsWMS += "&Y=128";
    paramsWMS += "&WIDTH=256";
    paramsWMS += "&HEIGHT=256";
    paramsWMS += "&INFO_FORMAT=text%2Fhtml";
    paramsWMS += "&FEATURE_COUNT=1";

    return (paramsWMS);


}

function getParamsWFS(idx, flag)
{
    if(flag=="FROM")
    {
        var typename = testdatenArr[idx][5].replace(/Lat-Lon/i, "LL");
        var TYPENAME = testdatenArr[idx][2].replace(/Lat-Lon/i, "LL");
        if(TYPENAME.search(/_LL/i) != -1)
            dx = deltaX / 10000;
        else
            dx = deltaX;

        var X = testdatenArr[idx][3];
        var Y = testdatenArr[idx][4];

        var BBOX = (X-dx) + "," + (Y-dx) + "," + (X+dx) + "," + (Y+dx);
    }
    else
    {
        var typename = testdatenArr[idx][2].replace(/Lat-Lon/i, "LL");
        var TYPENAME = testdatenArr[idx][5].replace(/Lat-Lon/i, "LL");
        if(TYPENAME.search(/_LL/i) != -1)
            dx = deltaX / 10000;
        else
            dx = deltaX;

        var X = testdatenArr[idx][6];
        var Y = testdatenArr[idx][7];

        var BBOX = (X-dx) + "," + (Y-dx) + "," + (X+dx) + "," + (Y+dx);
    }

    var paramsWFS = "";
    paramsWFS += "?SERVICE=WFS";
    paramsWFS += "&VERSION=1.0.0";
    paramsWFS += "&REQUEST=GetFeature";
    paramsWFS += "&TYPENAME=" + typename;
    paramsWFS += "&MAP_PROJECTION=init=EPSG:" + arrEPSG[TYPENAME];
    paramsWFS += "&BBOX=" + BBOX;

    return(paramsWFS);
}

var formats = {
    wkt:     new OpenLayers.Format.WKT(),
    geojson: new OpenLayers.Format.GeoJSON(),
    georss:  new OpenLayers.Format.GeoRSS(),
    gml:     new OpenLayers.Format.GML(),
    kml:     new OpenLayers.Format.KML()
};

function GetFeatureInfoWFS(idx, flag)
{
    //alert(document.getElementById("ID").src);
    //document.getElementById("hal").value = document.getElementById("ID").src;

    OpenLayers.Request.GET({
        url: serverWFS + getParamsWFS(idx, flag),
        success: function(originalRequest) { parseDataSuccess (originalRequest, idx, flag);},
        failure: parseDataFailure
    });
}

function parseDataFailure(originalRequest)
{
    alert(originalRequest.responseText);
}

function parseDataSuccess(originalRequest, idx, flag)
{

    var theParser = formats["gml"];
    theParser.internalProjection = null;
    theParser.externalProjection = null;
    theParser.extractStyles     = false;
    theParser.extractAttributes = true;
    var features = theParser.read(originalRequest.responseXML);

    if(features)
    {
        if(features.constructor != Array)
            features = [features];

        if(features.length>0)
        {   var geom = features[0].geometry;
            if(flag=="FROM")
            {   document.getElementById("tdR21").innerHTML = geom.x;
                document.getElementById("tdR22").innerHTML = geom.y;

                var x0 = parseFloat(document.getElementById("tdR11").innerHTML);
                var x1 = parseFloat(document.getElementById("tdR21").innerHTML);
                document.getElementById("tdR31").innerHTML = (x0-x1).toFixed(6);

                var y0 = parseFloat(document.getElementById("tdR12").innerHTML);
                var y1 = parseFloat(document.getElementById("tdR22").innerHTML);
                document.getElementById("tdR32").innerHTML = (y0-y1).toFixed(6);

            }
            else
            {   document.getElementById("tdR23").innerHTML = geom.x;
                document.getElementById("tdR24").innerHTML = geom.y;

                var x0 = parseFloat(document.getElementById("tdR13").innerHTML);
                var x1 = parseFloat(document.getElementById("tdR23").innerHTML);
                document.getElementById("tdR33").innerHTML = (x0-x1).toFixed(6);

                var y0 = parseFloat(document.getElementById("tdR14").innerHTML);
                var y1 = parseFloat(document.getElementById("tdR24").innerHTML);
                document.getElementById("tdR34").innerHTML = (y0-y1).toFixed(6);
            }
        }
        else
        {
            if(flag=="FROM")
            {   document.getElementById("tdR21").innerHTML = "Fehler";
                document.getElementById("tdR22").innerHTML = "Fehler";
            }
            else
            {   document.getElementById("tdR23").innerHTML = "Fehler";
                document.getElementById("tdR24").innerHTML = "Fehler";
            }
        }
    }
    else
        alert('Bad input ' + type);

}


