// JavaScript Document
var newSavedArea = new Array;
var drawType = "Square";
var g_squareDrawInicial = null;
var FncEndDraw = null;
var g_currentShape = null;
var g_shapePoints = new Array();
var g_tempShape = null;
var g_tempPoints = null;
var g_drawMode = true;

function drawPolygons()
{
	drawType = "Polygons";
	drawArea();
}

function drawSquare()
{
	drawType = "Square";
	drawArea();
}
		
function deleteAllArea()
{
	if ($('#div_my_map_info').html()=='') return false;
	removeAllArea();
	g_currentShape = null;
	g_shapePoints = new Array();
	g_tempShape = null;
	g_tempPoints = null;
	g_squareDrawInicial = null;
	
}

function drawSquareMouseClickUp()
{
	try
	{
			
		ve_map.DetachEvent('onmousedown', drawSquareMouseClick);
		ve_map.DetachEvent('onmouseup', drawSquareMouseClickUp);
		ve_map.DetachEvent('onmousemove', drawSquareMouseMove);
		g_veslArea.DeleteShape(g_tempShape);
	}
	catch(err){}

	g_drawMode = false;
	g_squareDrawInicial = null;
	if (g_tempPoints != null){
		g_shapePoints = g_tempPoints;
		g_tempPoints = null;
		g_currentShape = new VEShape(VEShapeType.Polygon, g_shapePoints);
		try{g_veslArea.AddShape(g_currentShape);}catch(err){}

		showTempPolygon();
		
		
		tb_show('Name the Area', DOCUMENT_ROOT + '/POP/AreaNamePopup.php?height=80&width=300', '');
		/*if (FncEndDraw != null && FncEndDraw != undefined)
			DataFloat.Agora.Global.MapObjectCurrentInstance.FncEndDraw(newDrawArea)*/
	}
}

function drawSquareMouseClick(e)
{
	try
	{
		cursorX = e.mapX /*+ getDocumentBody().scrollLeft*/;
		cursorY = e.mapY /*+ getDocumentBody().scrollTop*/;
		if (g_squareDrawInicial == null)
			g_squareDrawInicial = {'x' : cursorX, 'y' : cursorY};
		$('#divMap1').css('cursor','crosshair');
	}
	catch(err)
	{
		console.log('[DataFloat.Agora.RealMap.drawSquareMouseClick] - ERROR - ' + err.description); 
	}

	return true;
}

function drawSquareMouseMove(e)
{
	try
	{
		
		if (g_squareDrawInicial != null){

			try
			{
				g_veslArea.DeleteShape(g_tempShape);
			}
			catch(err){//alert('draw Square Mouse Move ' + e.description); 
			}
			
			cursorX = e.mapX /*+ getDocumentBody().scrollLeft*/;
			cursorY = e.mapY /*+ getDocumentBody().scrollTop*/;
			
					
				g_tempPoints = new Array();

				g_tempPoints.push(ve_map.PixelToLatLong(new VEPixel(g_squareDrawInicial.x, g_squareDrawInicial.y)));
				g_tempPoints.push(ve_map.PixelToLatLong(new VEPixel(g_squareDrawInicial.x, cursorY))); //Second point
				g_tempPoints.push(ve_map.PixelToLatLong(new VEPixel(cursorX, cursorY)));
				g_tempPoints.push(ve_map.PixelToLatLong(new VEPixel(cursorX, g_squareDrawInicial.y))); //Second point
				g_tempPoints.push(ve_map.PixelToLatLong(new VEPixel(g_squareDrawInicial.x, g_squareDrawInicial.y)));
				
				g_tempShape = new VEShape(VEShapeType.Polyline, g_tempPoints);
				g_tempShape.HideIcon();
				try{
					g_veslArea.AddShape(g_tempShape);
				}catch(err){}
				
				g_veslArea.Show();
		}
	}
	catch(e)
	{
		//alert('Draw Sqaure Mouse Move ' + e.description); 
	}
}

function drawArea()
{
    try
    {
        g_currentShape = null;
        g_shapePoints = new Array();
        g_tempShape = null;
        g_tempPoints = null;
		g_drawMode = true;

		if (drawType == 'Square'){
			ve_map.AttachEvent('onmouseup', drawSquareMouseClickUp);
			ve_map.AttachEvent("onmousedown", drawSquareMouseClick);
			ve_map.AttachEvent('onmousemove', drawSquareMouseMove);

		}else{
			ve_map.AttachEvent('onclick', drawPolygonMouseClick);
			ve_map.AttachEvent('onmousemove', drawPolygonMouseMove);
		}

        $('#divMap1').css('cursor','crosshair');
        
    }
	catch(e) 
	{ 
		//alert('ve_AreaMapSearch.js::drawArea: ' + e.description); 
	}
}

function removeAllArea()
{
	var confirmDelete = confirm('Are you going to delete all area search?');
	if (confirmDelete)
	{	
		for (var i=0; i<g_shapeCollection.length;i++)
		{
			deleteAreas(g_shapeCollection[i].GUID);
			i--;
		}
	}
}


function drawPolygonMouseClick(e)
{
    try
    {
        //if (g_shapePoints.length == 0) ve_map.AttachEvent('onmousemove', drawPolygonMouseMove);
		cursorX = e.mapX /*+ getDocumentBody().scrollLeft*/;
		cursorY = e.mapY /*+ getDocumentBody().scrollTop*/;
		
        g_shapePoints.push(ve_map.PixelToLatLong(new VEPixel(cursorX, cursorY)));
        
        if (e.rightMouseButton && g_shapePoints.length >= 3)
        {
            g_divTooltip.style.display = 'none';

            try
            {
                ve_map.DetachEvent('onmousemove', drawPolygonMouseMove);
                ve_map.DetachEvent('onclick', drawPolygonMouseClick);
                g_veslArea.DeleteShape(g_tempShape);
            }
            catch(e){}

            g_currentShape = new VEShape(VEShapeType.Polygon, g_shapePoints);
            try{g_veslArea.AddShape(g_currentShape);}catch(e){}
			showTempPolygon();
			tb_show('Name the Area', DOCUMENT_ROOT + '/POP/AreaNamePopup.php?height=80&width=300', '');
        }
        else
        {
            $('#divMap1').css('cursor','crosshair');
        }
    }
	catch(e)
	{
	    //alert('ve_mapsearch.js::drawPolygonMouseClick: ' + e.description); 
	}
}

function drawPolygonMouseMove(e)
{
    try
    {
		cursorX = e.mapX /*+ getDocumentBody().scrollLeft*/;
		cursorY = e.mapY /*+ getDocumentBody().scrollTop*/;
		
        g_tempPoints = g_shapePoints.slice(0, g_shapePoints.length);
        g_tempPoints.push(ve_map.PixelToLatLong(new VEPixel(cursorX, cursorY)));
		
        try
        {
            g_veslArea.DeleteShape(g_tempShape);
        }
        catch(e){}

        if (g_tempPoints.length >= 2)
        {
            g_tempShape = new VEShape(VEShapeType.Polyline, g_tempPoints);
            g_tempShape.HideIcon();
            try{g_veslArea.AddShape(g_tempShape);}catch(e){}
            g_veslArea.Show();
        }

        /*if (g_shapePoints.length == 0)
            g_divTooltip.innerHTML = startMsg;
        else if (g_shapePoints.length == 1)
            g_divTooltip.innerHTML = drawingMsg;
        else
            g_divTooltip.innerHTML = endMsg;
			

        positionToolTip();*/
    }
	catch(e)
	{
	    //alert('ve_mapsearch.js::drawPolygonMouseMove: ' + e.description); 
	}
}

function saveAreaSearch(divID, shapeID)
{
	var index = '';
	var GUID='';
	var shapeTitle='';
	var theLat='';
	var theLng='';
	var totalPoints=0;
	var latLongCollection='';
	var fieldValueXML='';				
	
	for (var i=0;i<g_shapeCollection.length;i++)
	{
		if (g_shapeCollection[i].GUID==shapeID)
		{
			GUID       	= g_shapeCollection[i].GUID;
			shapeTitle 	= g_shapeCollection[i].Title;
			theLat = parseFloat(g_shapeCollection[i].Latitude);
			theLng = parseFloat(g_shapeCollection[i].Longitude);
			totalPoints = parseInt(g_shapeCollection[i].TotalPoints);
			fieldValueXML += '<Polygon Count="'+totalPoints+'" Title="'+shapeTitle+'" Latitude="'+theLat+'" Longitude="'+theLng+'">';
			for (var j = 0; j < totalPoints - 1; j++)
			{
				fieldValueXML += '<LatLong>';
				var Lat = parseFloat(g_shapeCollection[i].LatLong[j].Lat);
				var Long = parseFloat(g_shapeCollection[i].LatLong[j].Long);
				fieldValueXML += '<Latitude>'+Lat+'</Latitude>';
				fieldValueXML += '<Longitude>'+Long+'</Longitude>';
				fieldValueXML += '</LatLong>';
			}
			fieldValueXML += '</Polygon>';
			break;
		}
	}
	
	$('#' + divID).html('<img src="'+DOCUMENT_ROOT+'/img/indicator.gif" border="0"/> Saving Area');
	$.ajax({
	  type: "POST",
	  url: DOCUMENT_ROOT+"/PRC/ProcessHomeAlertAddArea.php",
	  data: 'GUID='+GUID+'&AreaName='+shapeTitle+'&latitude='+theLat+'&longitude='+theLng+'&fieldValueXML='+escape(fieldValueXML),
	  success: function(msg){
		if ($.trim(msg)=='0')	$('#' + divID).html('Area is already saved');
		else if ($.trim(msg)=='-1')	$('#' + divID).html('Error on saving');
		else if (IsNumeric($.trim(msg)))		
		{
			$('#' + divID).html('Area is saved');
			if (typeof newSavedArea!='undefined')
				newSavedArea.push({'AreaSearchCriteriaKEY':msg, 'Title':Title});
		}		
		$('#' + divID).css('color','red');
	  }
	});
}

function showTempPolygon()
{
	var g_lineColor = new VEColor(0,0,255,0.5);
	var g_fillColor = new VEColor(0,128,0,0.3);	
	g_drawMode = false;
	g_currentShape.SetTitle("Temp Area");
	g_currentShape.SetDescription('<a href="javascript:deleteMarketArea(\'' + g_currentShape.GetID() + '\', \'Temp Area\')">Remove this Area</a>');
	g_currentShape.SetLineColor(g_lineColor);
	g_currentShape.SetFillColor(g_fillColor);
	g_currentShape.SetCustomIcon('<span style="' + g_areaStyle + '"><nobr>Temp Area</nobr></span>');
	$('#divMap1').css('cursor','url(http://maps.live.com/cursors/grab.cur)');	
	g_veslArea.Show();
}

function showPolygon()
{
	var g_lineColor = new VEColor(0,0,255,0.5);
	var g_fillColor = new VEColor(0,128,0,0.3);	
	g_drawMode = false;
	g_currentShape.SetTitle(shapeTitle);
	g_currentShape.SetDescription('<a href="javascript:deleteMarketArea(\'' + g_currentShape.GetID() + '\', \'' + shapeTitle + '\')">Remove this Area</a>');
	g_currentShape.SetLineColor(g_lineColor);
	g_currentShape.SetFillColor(g_fillColor);
	g_currentShape.SetCustomIcon('<span style="' + g_areaStyle + '"><nobr>' + shapeTitle + '</nobr></span>');
	$('#divMap1').css('cursor','url(http://maps.live.com/cursors/grab.cur)');
	g_veslArea.Show();
	saveArea();
	updateMyMapInfo();
	updateViewBySavedMaps();
	MapFormSubmit();
}

function deleteAreas(shapeID)
{
    try
    {
		var objShape = g_veslArea.GetShapeByID(shapeID);
		if (!objShape) return;
		g_veslArea.DeleteShape(objShape);
		for (var i=0;i<g_shapeCollection.length;i++)
		{
			if (g_shapeCollection[i].GUID==shapeID)
			{
				if (typeof deleteAreaKEY!='undefined')
				{
					if (i<mapPointsJSON.length)
						deleteAreaKEY = mapPointsJSON[i].AreaSearchCriteriaKEY;
					else if (newSavedArea.length > 0)
					{
						for (var j=0; j<newSavedArea.length; j++)
						{
							if (newSavedArea[j].Title == g_shapeCollection[i].Title)
								deleteAreaKEY = newSavedArea[j].AreaSearchCriteriaKEY;
						}
					}
				}
				g_shapeCollection.splice(i,1);
				
			}
		}
		$('#tr_'+shapeID).html('');

		if (typeof deleteAreaKEY!='undefined' && deleteAreaKEY)
		{
			$.ajax({
			  type: "POST",
			  url: DOCUMENT_ROOT+"/PRC/ProcessHomeAlertRemoveArea.php",
			  data: 'AreaSearchCriteriaKEY='+deleteAreaKEY,
			  success: function(msg){
				if ($.trim(msg)=='1')		alert('Area is removed');
				else if ($.trim(msg)=='-1')	alert('Error on saving');
			  }
			});
			deleteAreaKEY = 0;
		}
    }
	catch(e)
	{
	    alert('ve_mapsearch.js::deleteMarketArea: ' + e.description); 
	}
}

function deleteMarketArea(shapeID, shapeTitle)
{
    try
    {
		var confirmDelete = confirm('Are you going to delete this area search?');
		if (confirmDelete)
			deleteAreas(shapeID);
    }
	catch(e)
	{
	    alert('ve_mapsearch.js::deleteMarketArea: ' + e.description); 
	}
}

function saveArea()
{
    try
    {
        var strXML = '';
		var g_shapeInformation = {};
		var LatLongPoints = [];
        if (g_veslArea)
        {	
            for (var i = 0; i < g_veslArea.GetShapeCount(); i++)
            {
                var curShape = g_veslArea.GetShapeByIndex(i);
                var curAnchor = curShape.GetIconAnchor();
				GUID  = curShape.GetID();
				Title = escape(curShape.GetTitle());
				Latitude = curAnchor.Latitude;
				Longitude = curAnchor.Longitude;
				
                var curPoints = curShape.GetPoints();
				TotalPoints = curPoints.length;
				
                for (var j = 0; j < curPoints.length - 1; j++)
					LatLongPoints[j] = {'Lat':curPoints[j].Latitude, 'Long':curPoints[j].Longitude};
		
            }
			g_shapeCollection.push({'GUID':GUID, 'Title':Title,'TotalPoints':TotalPoints,'Latitude':Latitude,'Longitude':Longitude,'LatLong':LatLongPoints});
        }
        //initMap();
    }
	catch(e) 
	{ 
		alert('ve_mapsearch.js::saveArea: ' + e.description); 
	}
}

function updateMyMapInfo()
{
    try
    {
        if (!document.getElementById('div_my_map_info')) return;
        var strMyMapInfo = '<table class="saveAreaTitle"><tr>';
        var cbxMyAreas = $('.cbx_myareas');
        for (var i = 0; i < 1; i++)
        {
            var shapeID = g_shapeCollection[g_shapeCollection.length-1].GUID;
            var shapeTitle = g_shapeCollection[g_shapeCollection.length-1].Title;
            var theLat = g_shapeCollection[g_shapeCollection.length-1].Latitude;
            var theLng = g_shapeCollection[g_shapeCollection.length-1].Longitude;
            strMyMapInfo += '<tr id="tr_'+shapeID+'"><td><input type="checkbox" onclick="updateViewBySavedMaps()" class="cbx_myareas" value="' 
                + shapeID + '" name="cbx_myareas" checked="true"/></td><td class="fieldLabelBold">'
                + unescape(shapeTitle)+ '&#160;&#160;<BR><a href="javascript:ve_map.SetCenter(new VELatLong(' + theLat + ', ' + theLng + '))">'
				+ 'Center</a>&#160;&#160;<a href="javascript:deleteMarketArea(\'' + shapeID + '\', \'' + escape(shapeTitle)
                + '\')">Remove</a>&#160;&#160;<a href="javascript:checkLogin(\'Msg_'+shapeID+'\',\'' + shapeID + '\',\'3\')">Save</a></td><td id="Msg_'+shapeID+'"></td></tr>';
        }
        strMyMapInfo += '</table>';
        $('#div_my_map_info').append(strMyMapInfo);
		
		/*if (SavedAreaMap)
		{
			checkLogin('Msg_'+shapeID, shapeID,'3');
		}*/
    }
	catch(e) 
	{ 
		alert('ve_mapsearch.js::updateMyMapInfo: ' + e.description); 
	}
}

function positionToolTip()
{
    g_divTooltip.style.display = '';
    g_divTooltip.style.left = (cursorX + 10) + 'px';
    g_divTooltip.style.top = (cursorY + 10) + 'px';
}


function updateViewBySavedMaps()
{
    var cbxMyAreas = $('.cbx_myareas');
    var arrPoints = new Array();
	var latLongCollection = '';
    for (var i = 0; i < cbxMyAreas.length; i++)
    {
        if (cbxMyAreas[i].checked)
        {
            var totalPoints = parseInt(g_shapeCollection[i].TotalPoints);
            for (var j = 0; j < totalPoints - 1; j++)
            {
                var theLat = parseFloat(g_shapeCollection[i].LatLong[j].Lat);
                var theLng = parseFloat(g_shapeCollection[i].LatLong[j].Long);
                arrPoints.push(new VELatLong(theLat, theLng));
				if (j==0 && latLongCollection!='') latLongCollection += "?";
				if (j!=0) latLongCollection += '|';
				latLongCollection += theLat+','+theLng;
            }
        }
    }

	$('#Area_LatLong').val(latLongCollection);
    if (arrPoints.length > 0)
    {
        ve_map.SetMapView(arrPoints);
        if (ve_map.GetZoomLevel() >= 15) ve_map.SetZoomLevel(15);
    }
    /*else
        ve_map.SetCenterAndZoom(new VELatLong(g_dftLatitude, g_dftLongitude), 13);*/
}



function cleanAllUnusedArea()
{
    try
    {
		for(var i=0; i < g_veslArea.GetShapeCount(); ++i)
		{
			var shape = g_veslArea.GetShapeByIndex(i);
			var shapeID = shape.GetID();
			var foundShape =false;
			for (var j=0;j<g_shapeCollection.length;j++)
			{
				if (g_shapeCollection[j].GUID==shapeID && g_shapeCollection[j].Title != null)
				{
					foundShape = true;
				}
			}

			if (!foundShape)
			{
				var objShape = g_veslArea.GetShapeByID(shapeID);
				if (!objShape) continue;
				g_veslArea.DeleteShape(objShape);	
				i--;
			}
		}
	}catch (e){
		alert("Error on cleanAllUnnameArea " + e);
	}
	
}