// GMap
var map;
var ov_map;
var arPoints = new Array();
var arMarkers = new Array();
var arComments = new Array();
var gLine = new GPolyline();
var l;
var gsUnits;
var gbLines=false;

function goHome(){
    map.setCenter(new GLatLng(Number(getCookie('mgoMapPosY')||-12.768946), Number(getCookie('mgoMapPosX')||-41.220703)), Number(getCookie('mgoMapZoom')||5));
}

function getCookie( name ) {
    var start = document.cookie.indexOf( name + "=" );
    var len = start + name.length + 1;
    if ((!start) && (name != document.cookie.substring(0, name.length))) {
        return null;
    }
    if ( start == -1 ) return null;
    var end = document.cookie.indexOf( ";", len );
    if ( end == -1 ) end = document.cookie.length;
    return unescape( document.cookie.substring( len, end ) );
}

function setCookie( name, value, expires, path, domain, secure ) {
    var today = new Date();
    today.setTime( today.getTime() );
    if ( expires ) {
        expires = expires * 1000 * 60 * 60 * 24;
    }
    var expires_date = new Date( today.getTime() + (expires) );
    document.cookie = name+"="+escape( value ) +
        ( ( expires ) ? ";expires="+expires_date.toGMTString() : "" ) +
            ( ( path ) ? ";path=" + path : "" ) +
                ( ( domain ) ? ";domain=" + domain : "" ) +
                ( ( secure ) ? ";secure" : "" );
}

function showBalloon(marker){
    var sHTML="<div style='color:#000'>Piloto: " + marker.MCD_ID;
    if(arComments[marker.MCD_ID]) {if(arComments[marker.MCD_ID].length>0) sHTML += " <br> " + arComments[marker.MCD_ID];}
    //sHTML += "<BR><BR><a href='javascript:deleteMarker(" + marker.MCD_ID + ");'>Delete this waypoint</a>";
    //if(marker.MCD_ID < (arMarkers.length-1)){
    //    sHTML += "<BR><a href='javascript:insertMarkerAfter(" + marker.MCD_ID + ");'>Insert waypoint after this one</a>";
    //}
    sHTML += "<BR><a href='javascript:centreMap(" + marker.MCD_ID + ");'>Centralize o mapa por esse ponto</a></div>";
    marker.openInfoWindowHtml(sHTML);
}

function createMarker(point,number,icon) {
	// // Create our "tiny" marker icon
	//var icon = new GIcon();
	//icon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
	//icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
	//icon.iconSize = new GSize(12, 20);
	//icon.shadowSize = new GSize(22, 20);
	//icon.iconAnchor = new GPoint(6, 20);
	//icon.infoWindowAnchor = new GPoint(5, 1);
	if(icon)
		var marker = new GMarker(point, {icon:icon, draggable:true, bouncy:false});
	else
    	var marker = new GMarker(point, {draggable:true, bouncy:false});
    marker.MCD_ID=number;
    arPoints[marker.MCD_ID]=marker.getPoint();
    GEvent.addListener(marker, "dragend", function() {
        arPoints[marker.MCD_ID]=marker.getPoint();
        //changeText();
        //focusTextBox(marker.MCD_ID);
        drawRoute();
    });
    GEvent.addListener(marker, "dragstart", function(){
        map.removeOverlay(gLine);
        map.closeInfoWindow();
    });
    GEvent.addListener(marker, "mouseover", function() {
        //focusTextBox(marker.MCD_ID);
    });
    drawRoute();
    return marker;
}

function deleteMarker(marker_id){
    map.closeInfoWindow();
    map.removeOverlay(arMarkers[marker_id]);
    map.removeOverlay(gLine);
    arPoints.splice(marker_id,1);
    arMarkers.splice(marker_id,1);
    arComments.splice(marker_id,1);
    // reset the marker IDs
    for(i=0; i<arMarkers.length; i++){
        arMarkers[i].MCD_ID=i;
    }
    //changeText();
    drawRoute();
}

function drawRoute(){
    map.removeOverlay(gLine);
    if(!gbLines) return;
    gLine=new GPolyline(arPoints);
    try{
      map.addOverlay(gLine);
    }
    catch(e){
      //The above line dies in IE...
    }
}

function centreMap(markerID){
    map.setCenter(new GLatLng(arPoints[markerID].y, arPoints[markerID].x));
}

function insertMarkerAfter(afterWaypoint){
    // this routine inserts a waypoint after another waypoint
    var newX=arPoints[afterWaypoint].x + (arPoints[afterWaypoint+1].x-arPoints[afterWaypoint].x)/2;
    var newY=arPoints[afterWaypoint].y + (arPoints[afterWaypoint+1].y-arPoints[afterWaypoint].y)/2;
    var point=new GPoint(newX, newY);
    arPoints.splice(afterWaypoint+1, 0,  point);
    arComments.splice(afterWaypoint+1, 0,  "");
    var mk=createMarker(point, afterWaypoint+1);
    arMarkers.splice(afterWaypoint+1, 0, mk);
    for(var i=0; i<arMarkers.length; i++){
        arMarkers[i].MCD_ID=i;
    }
    map.addOverlay(mk);
    mk.enableDragging();
    //changeText();
    focusTextBox(mk.MCD_ID);
    showBalloon(mk);
    //arMarkers[afterWaypoint+1].openInfoWindowHtml("New waypoint");
    drawRoute();
    close_popup("options-box");
}

function focusTextBox(sID){
    //changeText();
    obj=document.getElementById("txtWay	point" + sID);
    if(obj){
        obj.focus();
        obj.select();
        obj.style.backgroundColor = "#FFFF88";
    }
}

function changeText() {
    var sHTML="<table cellspacing='0px' class='waypoint'>";
    var totalKs=0;
    var totalMs=0;
    for(var i=0; i<arPoints.length; i++){
        var maxCmtLen;
        if (i<10) {
            maxCmtLen=6;
        }else if(i<100){
            maxCmtLen=5;
        }else{
            maxCmtLen=4;
        }
        sHTML+="<tr><td align='left'>";
        if (i>0){
            var metres=arMarkers[i].getPoint().distanceFrom(arMarkers[i-1].getPoint());
            totalKs+=(metres * 0.001);
            totalMs=(totalKs * 0.621371192);
        }
        sHTML += "<a href='javascript:find_waypoint(" + i + ");' title='Click to locate waypoint on map'> " +
        (i) + "</a></td><td>:  <input type='text' " +
        " id='txtWaypoint" + i + "' " +
        " class='waypoint_text' name='waypoint_" + i + "' " +
        "onkeyup=save_text(" + i + ",this.value) " +
        "onfocus=highlightTextBox(this) " +
        "onblur=highlightTextBox(this) " +
        "size='8' maxlength='" + maxCmtLen + "' " +
        "value='" + arComments[i] + "'>";
        if(gsUnits=='m'){
            sHTML+="<span title='" + totalKs.toFixed(2) + " Km'> (" + totalMs.toFixed(2) + " miles)</span><br>";
        }else{
            sHTML+="<span title='" + totalMs.toFixed(2) + " miles'> (" + totalKs.toFixed(2) + " Km)</span><br>";
        }
        sHTML+="</td></tr>";
    }
    sHTML+="</table>";
    var coords=document.getElementById('coord');
    coords.innerHTML="<b>Waypoints:</b><br>" + sHTML;
    //focusTextBox(arPoints.length-1);
}
