var measureControls;
var extent_ = new OpenLayers.Bounds(4983861.545212585, 5116545.875584926, 4987697.614865321, 5117489.728244539);
var pr_900913 = new OpenLayers.Projection("EPSG:900913");
var pr_EPSG4326 = new OpenLayers.Projection("EPSG:4326");

var epsg_4326 = new OpenLayers.Projection("EPSG:4326");
var wgs84 = new OpenLayers.Projection("EPSG:4326");
var epsg_900913 = new OpenLayers.Projection("EPSG:900913");

var start, stop, result, drag_points, draw_points;


//get URL's variables---------------------------------------------
function getUrlVars() {
    var vars = {};
    var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
        vars[key] = value;
    });
    return vars;
}
var url_gm      = getUrlVars()["gm"];
//EOF get URL's variables ----------------------------------

// send to ajax---------------------------------------------
var bb = false, startPoint, stopPoint;





function pgrouting(layer__){
    if(bb == true){
       // start ajax messega
       $('#loadingDiv').show();
       //--
       stopPoint = layer__.features[1];
       var point_start = [];
       var point_end   = [];
       point_start = new OpenLayers.LonLat(startPoint.geometry.x, startPoint.geometry.y)
            .transform(pr_900913,pr_EPSG4326);
       point_end   = new OpenLayers.LonLat(stopPoint.geometry.x, stopPoint.geometry.y)
            .transform(pr_900913,pr_EPSG4326);
       if (startPoint && stopPoint){
            //loading_status();
            $.post(
     
                "librouting/pgrouting.php",
                {
                  startpoint_lon:   point_start['lon'],
                  startpoint_lat:   point_start['lat'],
                  stopPoint_lon:    point_end['lon'],
                  stopPoint_lat:    point_end['lat'],
                  method:           'SPD'
                 
                }, 
                function(data){
                  drowroute___ (data.edge_id,
                                data.length_begin,
                                data.wkt,
                                data.street,
                                data.length,
                                data.length_end
                                );
                },
             "json"       
           );
        }
    }
    bb = true;
    startPoint = layer__.features[0];

}
//=======================================================



function drawmap(method, lon__, lat__, zoom__){

    map=new OpenLayers.Map('map',{
        div: "map",
        projection: pr_900913,
        displayProjection: pr_EPSG4326,
        controls:[
        new OpenLayers.Control.Navigation(
            {dragPanOptions: {
                              enableKinetic: true,
                              kineticInterval: 10
                             }
            }
        ),
        new OpenLayers.Control.Attribution()],
        units: "m",
        maxResolution: "auto",
    });
    //---

    var options = {
        minZoomLevel: 7,
        numZoomLevels: 12,
        attribution: 'Powered by <a href="http://www.city24.ge/" target="_blank">&copy; City24.ge</a> and <a href="http://www.jumpstart.ge//" target="_blank">&copy; Jumpstart.ge</a>',
        //maxExtent: new OpenLayers.Bounds(4800000,5000000,4800000,5400000)

    };
    var basic_layer = new OpenLayers.Layer.OSM("Mapnik", 'http://www.city24.ge/osm_tiles2/${z}/${x}/${y}.png', options);
    map.addLayer(basic_layer);

    //---
    var start_style = OpenLayers.Util.applyDefaults({
        //externalGraphic: 'img/marker_red_from.png',
        externalGraphic: 'img/marker_red.png',
        graphicWidth: 35,
        graphicHeight: 45,
        graphicYOffset: -45,
        cursor: 'pointer',
        graphicOpacity: 1
    }, OpenLayers.Feature.Vector.style['default']);

    var stop_style = OpenLayers.Util.applyDefaults({
        externalGraphic: 'img/marker_red_to.png',
        graphicWidth: 35,
        graphicHeight: 45,
        graphicYOffset: -45,
        cusros: 'pointer',
        graphicOpacity: 1
    }, OpenLayers.Feature.Vector.style['default']);

     var result_style = OpenLayers.Util.applyDefaults({
         strokeWidth: 3,
         strokeColor: "#ff0000",
         fillOpacity: 0
     }, OpenLayers.Feature.Vector.style['default']);
    //---
    start  = new OpenLayers.Layer.Vector("Start_point",{style: start_style});
    stop   = new OpenLayers.Layer.Vector("End_point",{style: stop_style});
    result = new OpenLayers.Layer.Vector("Routing_results",{style: result_style});
    //---
    draw_points = new DrawPoints(start);
    drag_points = new OpenLayers.Control.DragFeature(start,{autoActivate:true});
    drag_points.onComplete = function(){
        pgrouting(start);
    };
    

    
    //map.addControls([draw_points, drag_points]);
    //---
    start.events.on({
        featureadded: function(){
            pgrouting(start);
        }
    });
    //---
    // ---- IFRAME tu ar aris mashin sruldeba es --------------------------------------------------------------
   if ( url_gm != 'gm') {

        // buttons / panel
        var panel = new OpenLayers.Control.Panel({
            displayClass: 'control_panel'
        });
        var button = new OpenLayers.Control.Button({
            displayClass: "btn_bDisplay", type: 2
        });
        map.addControls([panel]);
        panel.addControls([button]);

        // button action - large / small map
        button.events.on({
            activate: function(){
                $('div#map').animate({ height: '700px'}, 500);
            },
            deactivate: function(){
                $('div#map').animate({ height: '400px'}, 500);
            }
        });
        // panel top-left
        var panel_top = new OpenLayers.Control.Panel({
            displayClass: 'control_panel_top'
        });
        var button_flscr = new OpenLayers.Control.Button({
            displayClass: "btn_button_flscr", type: 2, title: ' full screen '
        });
        //-----
        var buttonRouting = new OpenLayers.Control.Button({
            displayClass: "buttonTemp", type: 2, title: ' navigation '
        });
        //-----
     //   var buttonHand = new OpenLayers.Control.Button({
    //        displayClass: "buttonHand", type: 2, title: ' default mode '
    //    });
        
         map.addControls([panel_top]);
         panel_top.addControls([button_flscr, buttonRouting]);
         map.addLayers([start, stop, result]);
   

    //--
    
    map.addControl(new OpenLayers.Control.MouseDefaults());
    if(!panSmalSet){map.addControl(new OpenLayers.Control.PanZoomBar());}
    else{map.addControl(new OpenLayers.Control.PanZoom());}
    map.zoomToExtent(extent_);
    //---
    buttonRouting.events.on({
        activate: function(){
            activate_routing();
        },
        deactivate: function(){
            deactive_routing();
        }
    });

    // button action - big / small map
    button_flscr.events.on({
        activate: function(){
            $('div#map2').show();
           // $('div#map').hide();
            spot = '2';
            map.render("map" + spot);
            $('html').css({overflow: 'hidden'});
        },
        deactivate: function(){
            $('div#map').show();
            $('div#map2').hide();
            spot = '';
            map.render("map" + spot);
            $('html').removeAttr('style');
        }
    });
    //---
    //$('.buttonTempItemInactive').addClass('buttonTempItemActive');
    //$('.buttonTempItemInactive').removeClass('buttonTempItemInactive');
    deactive_routing();
    // ---- IFRAME tu aris, mashin sruldeb es ---------------------------------------------------------
   }else {
       map.addControl(new OpenLayers.Control.PanZoom());
       map.zoomToExtent(extent_);
   }
   
   
   
   
    //---
    // add marker with lonlat
    if(method !== undefined && method === 'lonlat'){
        this.size = new OpenLayers.Size(35, 45);
        var set = {};
        set = {
            lonlat: [ lat__, lon__  ],
            offset: new OpenLayers.Pixel(-(this.size.w/2), -this.size.h),
            icon_path: 'http://www.city24.ge/img/marker_red.png'
        };
        var marker__ = new OpenLayers.LonLat(set.lonlat[0], set.lonlat[1])
            .transform(pr_EPSG4326, pr_900913);
        map.setCenter(marker__, zoom__);
    }
    //---
    map.events.register("moveend", map, function(e){
       if( get_url('lon').length > 1 ){
           var obj = map.getCenter();
           var lonlat__ = new OpenLayers.LonLat(obj['lon'], obj['lat'])
            .transform(pr_900913, pr_EPSG4326);
           var width  = $('#sp_map_width').text();
           var height = $('#sp_map_height').text();
           if( width.length < 2 ){
               width  = 450;
               height = 350;
           }

           var link = 'http://city24.ge/?zoom='+map.getZoom()+'&lon='+lonlat__['lat']+'&lat='+lonlat__['lon'];
           var path = '<iframe id="idframe" width="'+width+'" height="'+height+'" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="'+link+'&map=tr"></iframe><br /><div style="margin-left: 25px; margin-top: 10px;"><small><a target="_blank" href="'+link+'" style="color:#0000FF;text-align:left">View Larger Map</a></small></div>';
           $('#txtarea2').val(path);
       }
    });
    //---
    var routing_switcher = true;
    // deactivate routing
    function deactive_routing(){
        start.setZIndex(1);
        stop.setZIndex(2);
        result.setZIndex(3);
        routing_switcher = false;
        map.removeControl(draw_points);
       // map.removeControl(drag_points);
        //result.removeFeatures(result.features); //nikas damatebli ----- xsnis xazs routingis deaqtivaciis shemtxvevashi
        //start.removeFeatures(start.features);

    }
    // activate routing
    function activate_routing(){
        if(routing_switcher){
           map.addControls([draw_points, drag_points]);
        }else{
           //map.addControls([draw_points]);
           start.setZIndex(725);
           stop.setZIndex(335);
           result.setZIndex(340);
        }
       // __sorder();
        
    }

} // drawmap

// // failure routing draw(no get information from server)
function failCallback(){
    $('#loadingDiv').hide();
}


//========================================================================

