/******************
ROI section
******************/
//var roiPoints = new Array();
var roimap; 
var roiPoly = new Array();
var roiMarkers = new Array();
var roiLine = null;

// red marker icon
var roiIcon = new GIcon();
roiIcon.image = "/biomaps2/images/maptools/mm_20_red.png";
roiIcon.shadow = "/biomaps2/images/maptools/mm_20_shadow.png";
roiIcon.iconSize = new GSize(12, 20);
roiIcon.shadowSize = new GSize(22, 20);
roiIcon.iconAnchor = new GPoint(6, 20);
//icon.infoWindowAnchor = new GPoint(5, 1);

function loadROIMap() {
    if (GBrowserIsCompatible()) {
        roimap=new GMap2(document.getElementById('roitype-map'));
        
        roimap.setCenter(new GLatLng(-25.734,134.489),4);
        roimap.savePosition();        
        roimap.addControl(new GSmallMapControl()); 
        
        var roiMenu = '<div class="htmlControl" style="padding:0px 3px 3px 3px; text-align:left">';
        roiMenu += '<input type="button" name="btnClearROI" value="Clear ROI" onclick="clearPlot()" />'; 
        roiMenu += ''; 
        roiMenu += '</div>'; 
        
        var roiMenuControl = new HtmlControl(roiMenu);
        roimap.addControl(roiMenuControl, new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(7,7)));
        
        startROI(); 
    }
}

function startROI() {
    //clearPlot(); 
    mcroi = GEvent.addListener(roimap, "click", function(ol,ll){
        if (ol==null) {
            // add marker
            roiMarkers[roiMarkers.length] = new GMarker(ll, {icon:roiIcon, draggable: true});
            roimap.addOverlay(roiMarkers[roiMarkers.length-1]);
            roiMarkers[roiMarkers.length-1].enableDragging();
            GEvent.addListener(roiMarkers[roiMarkers.length-1],'drag',function(){
                plotROI();
            });
            
            // add point to array    
            //roiPoints.push(ll); 
            plotROI(); 
        } 
        // end if original marker clicked
        if (roiMarkers.length == 1) {
            mcroi2 = GEvent.addListener(roiMarkers[0], "click", function(ol2,ll2){
                endROI(); 
            });
        }
    });    
}

function endROI() {
    GEvent.removeListener(mcroi2); 
    GEvent.removeListener(mcroi); 
}

function plotROI(){
    if (roiMarkers.length > 2) {
        // clear the polygon first
        roiPoly.length = 0; 
        for (i=0;i<roiMarkers.length;i++) {
            roiPoly.push(roiMarkers[i].getLatLng());            
        }
        if(roiLine){roimap.removeOverlay(roiLine)};
        // recreate the polygon
        roiLine=new GPolygon(roiPoly,'#FF0000', 3, 1,'#FF0000',0.2);
        // add it to the map
        roimap.addOverlay(roiLine);
        $('roiCustom').value = getWKT(); 
        var roi_sw = roiLine.getBounds().getSouthWest(); 
        var roi_ne = roiLine.getBounds().getNorthEast(); 
        $('roiCustomBounds').value = roi_sw.lng() + "," + roi_sw.lat() + " " + roi_ne.lng() + "," + roi_ne.lat();
    } 
}

function getWKT() {
    var wkt = ""; 
    if (roiMarkers.length > 2) {
        wkt = "POLYGON(("
        for (i=0;i<roiMarkers.length;i++) {
            var mll = roiMarkers[i].getLatLng(); 
             wkt += mll.lng() + " " + mll.lat() + ", "; 
        }
        var mll = roiMarkers[0].getLatLng();
        wkt += mll.lng() + " " + mll.lat() + "))"; 
    }
    return wkt; 
}

function clearPlot() {
    roiPoly.length = 0; 
    if(roiLine){roimap.removeOverlay(roiLine)};
    for (i=0;i<roiMarkers.length;i++) {
        roimap.removeOverlay(roiMarkers[i]); 
    }
    roiMarkers.length = 0; 
    
}
