/*	This Javascript is compatible with only the following browser versions **
** Internet Explorer - Versions 6.0,5.5,5.0
** Netscape navigator - Version 7.0 and later
** Mozilla Firefox - Versions 1.0 and later
**************************************************/

var currentSelectedShapeId;
var attributeWindow;
function getCOGOStartPoint(shp)
{
//    if(shapesCol)
//    {
//	    var shp =  GetLastShape();
       
        if(!sessionExpired)
        {
	        if(shp)
	        {
    	        var x1=shp.xmin;
    	        var y1=shp.ymin;
		        //RemoveLastShape();
		       
		       PageMethods.GetMapPoint(x1,y1,HandleCogo); 

            }
        }
        else
	    {
	        HandleSessionExpired();
	    }	
//    }  
    
    return false; //To prevent any post backs      
}
//function HandleVertexMove(editShape, vertexIndex)
//{
//    if(editShape != null && editShape.points != null)
//    {
//        document.forms[0].__EVENTTARGET.value = m_cogoToolId;
//        document.forms[0].__EVENTARGUMENT.value = vertexIndex + ';' + editShape.points[vertexIndex].x + ';' +  editShape.points[vertexIndex].y;
//        __doPostBack(document.forms[0].__EVENTTARGET.value,document.forms[0].__EVENTARGUMENT.value);        
//    }
//}

function HandleCogo(mapPoints)
{
    
     if(mapPoints && mapPoints.length==2)
    {
        document.getElementById(nameTxtStartX).value = mapPoints[0];
        document.getElementById(nameTxtStartY).value = mapPoints[1];
    }

}

function UpdateFeatureVertex()
{
    if(!sessionExpired)
    {
        if(currentSelectedShapeId)
        {
    	    var shp = shapesCol.GetLastShape();
    	    var pointsStr="";
		    if(shp)
		    {
			    if(IsMultiPartShape(shp))
			    {
				    for(var i=0;i<shp.GetPartCount();i++)
				    {
				        var internalShape = shp.GetPart(i);
				        if(internalShape != null)
				        {
				            if(internalShape.type==DrawMode.POLY_LINE || internalShape.type==DrawMode.POLYGON)
					            pointsStr+=addPoint(internalShape.points) + ";";
					        else if(internalShape.type==DrawMode.LINE)
					            pointsStr+=internalShape.xmin + ',' + internalShape.ymin + ',' + internalShape.xmax + ',' + internalShape.ymax + ';';
					    }
				    }				
			    }
			    else
			    {
			        if(shp.type==DrawMode.POLY_LINE || shp.type==DrawMode.POLYGON)
				        pointsStr=addPoint(shp.points);
				    else if(shp.type==DrawMode.LINE)
				        pointsStr=shp.xmin + ',' + shp.ymin + ',' + shp.xmax + ',' + shp.ymax;
			    }
    			
			    showLoading();
			    PageMethods.UpdateFeatureVertex(pointsStr, currentSelectedShapeId, HandleUpdateVertex);
		    }	
        }
        else
        {
            alert("No feature selected.");
        }
    }
    else
	{
	    HandleSessionExpired();
	}	
}
	
function HandleUpdateVertex(obj)
{
    hideLoading();
    RemoveAllShapes();
    if(obj !=null && obj.error == null) 
    {
        var url = null;
        //In Atlas,obj sends the response instead of object.value (AjaxPro sends in ajax.value)
          if (obj.value)
            url = obj.value;
          else
            url = obj;	    
        if(url != null) 
            SetMapImages(url);
    }
    else
    {
        alert("Update vertex failed");
    }
    HideLayer(_EditingVertexToolbarPan);
	ClickTool('ZoomIn');
    
}
function addPoint(tpoints)
{
	var pointsStr="";
	if(tpoints){
		for(j=0; j<tpoints.length; j++)
		{
		    if(j>0)
		        pointsStr+=",";
			pointsStr+=tpoints[j].x+","+tpoints[j].y
		}
	}
	return pointsStr;
}
function ModeAddPoint()
{
    CurrentEditingMode('AddPoint');
}
function ModeAddLine()
{
     CurrentEditingMode('AddLine');
}
function ModeAddPolyLine()
{
     CurrentEditingMode('AddPolyLine');
}
function ModeAddPolygon()
{
     CurrentEditingMode('AddPolygon');
}

function ModeMoveFeature()
{
      document.forms[0].__EVENTTARGET.value = "tb_EDITTOOLS_APPLY";
     document.forms[0].elements['editorButton'].value='MoveFeature';
     setAutoPostback(window.autoPostBack);
}

function CurrentEditingMode(mode)
{
   document.forms[0].__EVENTTARGET.value = "tb_EDITTOOLS_APPLY";
    document.forms[0].elements['editMode'].value="true";
    if(window.autoPostBack)
    {
        document.forms[0].elements['editorButton'].value=mode;
    }
}

function EditVertex(id , itemId)
{	
	currentSelectedShapeId = itemId;
	SetDrawMode(DrawMode.EDIT);
	GetSelectionShape(itemId);	
	EnableEditVertex();
}

function EnableEditVertex()
{
    try
	{
		ShowLayer(_EditingVertexToolbarPan, null, null);
	}
	catch(e)
	{alert("ExceptionHandler::EnableEditVertex:" + e.message);}

	HideToolBar('VERTEX_TOOLS');
	ShowToolBar('EDITING_VERTEX_TOOLS');
 }
 
//function CallAdd()
//{
//    var startX = document.getElementById(nameTxtStartX).value;
//    var startY = document.getElementById(nameTxtStartY).value;
//    var distance = document.getElementById(nameTxtDistance).value;
//    var elevation = document.getElementById(nameTxtElevation).value;
//    var distanceUnit = document.getElementById(nameLstDistanceUnit).value;
//    var elevationUnit = document.getElementById(nameLstElevationUnit).value;
//    var baseAngle = document.getElementById(nameBaseAngle).checked;
//    var traverseAngle = document.getElementById(nameTraverseAngle).checked;

//    CogoTool.AddPointClick(startX,startY,distance,elevation,distanceUnit,elevationUnit,baseAngle,traverseAngle);
//}
//ShowAttributeEditor();
function ShowAttributeEditor(url)
{
    
    //var EditorControl = OnPointWebControls.Editor.EditorControl;
    if(!sessionExpired)
    {
    if (url ==null)
   { 
        
        url='/Webpages/Editor/AttributeEditorPage.aspx';
    }
    try
    {
        tempURL=url;
        PageMethods.ShowAttributeEditor(HandleShowAttributeEditor);
    }
   catch(err){ }
   }
   else
   {
         HandleSessionExpired();
   }
 
}

function HandleShowAttributeEditor(response)
{
    
     if(response == "1" )
     {
            var Theurl=NGServerUrl()+tempURL;
            if(window.HandleAttributeEditerFrame)
              { 
             
                HandleAttributeEditerFrame(Theurl);          
              }
          else
              {               
               var attributeWindow = window.open(Theurl,"attributeWin","toolbar=no, directories=no, location=no,status=yes, menubar=no, resizable=yes, scrollbars=yes, width=600, height=400");
              }
       }
      else if(attributeWindow && !attributeWindow.closed)
        {
            attributeWindow.closed();
        }

}