var varButtonSelected = "";
var varAction = "";

var myToolbarButtonLength=13;

//--------------------------------------------------
// Botões da Toolbar
//--------------------------------------------------
function dmToolbarButton(buttonId, action, selectable, title)
{
	this.buttonId=buttonId;
	this.Action=action;
	this.IsSelectable=selectable;
	this.Title = title;
	this.Selected = false;
}

var dmToolbarButtons=new Array();
dmToolbarButtons.length=myToolbarButtonLength;

dmToolbarButtons[1]=new dmToolbarButton("btnZoomWindow","zoomwindow",1);
dmToolbarButtons[2]=new dmToolbarButton("btnZoomIn","zoomin",1);
dmToolbarButtons[3]=new dmToolbarButton("btnZoomOut","zoomout",1);
dmToolbarButtons[4]=new dmToolbarButton("btnZoomAll","zoomall",0);
dmToolbarButtons[5]=new dmToolbarButton("btnPan","pan",1);
dmToolbarButtons[6]=new dmToolbarButton("btnMeasure","measure",1);
dmToolbarButtons[7]=new dmToolbarButton("btnMeasureArea","measurearea",1);
dmToolbarButtons[8]=new dmToolbarButton("btnPolygon","drawpolygon",1);
dmToolbarButtons[9]=new dmToolbarButton("btnClearMap","clearmap",0);
dmToolbarButtons[10]=new dmToolbarButton("btnZoomScale","zoomscale",0);
dmToolbarButtons[11]=new dmToolbarButton("btnLink","link",1);
dmToolbarButtons[12]=new dmToolbarButton("btnPrint","print",0);
dmToolbarButtons[13]=new dmToolbarButton("btnCoords","transcoords",1);

function TBInitialize()
{
	for (var i=1; i<= myToolbarButtonLength; i++)
	{
		 button = TBGetToolbarButton(i);
		 		 
		 tlbSetButtonEvents(button.buttonId);		 
	}
	
	button = TBGetToolbarButtonById("btnZoomIn");
	document.getElementById("btnZoomIn").className = "btnToolBarSelect";
	DoZoomInPoint();
	
    varButtonSelected = button.buttonId;
    varAction = button.Action;	
}

////////////////////////////////////////////////////////////////

function TBGetToolbarButton(index)
{
	return dmToolbarButtons[index];
}

function TBGetToolbarButtonById(btnId)
{
	var button;
	var retVal = null;
	
	for (var i=1; i<=myToolbarButtonLength; i++)
	{
		 button = TBGetToolbarButton(i);
		 
		 if(button.buttonId==btnId)
		 {
			retVal = button;
			break;
		 }
	}
	
	return retVal;
}

//-------------------------------------------------------
//Eventos da ToolBar
//--------------------------------------------------------
function tlbSetButtonEvents(buttonId)
{
	var button = document.getElementById(buttonId);
	
	if (button != null)
	{
		button.onmouseover = btnToolbar_onmouseover;
		button.onmousedown = btnToolbar_onmousedown;
		button.onmouseout = btnToolbar_onmouseout;
		button.onclick = btnToolbar_onclick;
	}
}

function btnToolbar_onmouseover(e) {
	if (!e) var e = window.event;

    this.className = "btnToolBarOver";
}

function btnToolbar_onmouseout(e) {	
	if (this.id == varButtonSelected)
	{
		this.className = "btnToolBarSelect";
	}
	else
	{
		this.className = "btnToolBar";
	}
}

function btnToolbar_onmousedown(e) {

	if (!e) var e = window.event;
	
	var button2 = document.getElementById(varButtonSelected);
	var button = TBGetToolbarButtonById(this.id);			
	
	if (button != null)
	{				
		if (button.IsSelectable == 1)
		{							
	        if (button2 != null)
	        {
	            button2.className = "btnToolBar";
	        }		
		
			varButtonSelected = this.id;
			varAction = button.Action;
		}
	}	
}

function btnToolbar_onclick(e) {
	if (!e) var e = window.event;
	
	var button = TBGetToolbarButtonById(this.id);
	
	if (button != null)
	{
		switch (button.Action)
		{
			case "zoomwindow": 
				DoZoomRectangle();
				break;
			case "zoomin": 
				DoZoomInPoint();
				break;
			case "zoomout": 
				DoZoomOutPoint();
				break;
			case "pan": 
				DoPan();
				break;
			case "zoomall": 
				DoFitView();
				break;
			case "select":
				DoSelectPoint();
				break;
			case "selectbypolygon":
				DoSelectByPolygon();
				break;
			case "clearselection":
				DoClearFeatures();
			case "measure":
				DoMeasure();
				break;
			case "measurearea":
				DoMeasureArea();
				break;
			case "transcoords":
			    showPanel('coordinates');
			    break;
			case "print":
				showPanel('print');
				break;
			case "link":
			    DoCreateLink();
			    break;
			case "zoomscale":
				DoFitToScale();
				break;
			case "shortcut":
				DoBookmark();
				break;				
			case "routepoints":
			    DoAddRoutePoints();
			    break;
			case "routing":
			    DoCreateRoute();
			    break;
			case "drawpolygon":
			    DoDrawPolygon(true);
				break;
			case "clearmap":
			    DoClearFeatures();
			    break;		
			default : alert("Função ainda não implementada");
		}			
	}
}


//////////////////////////////////////////////////////////////////////
//Actions
/////////////////////////////////////////////////////////////////////

function getSelectedButton() {
	return varButtonSelected;
}

function getAction() {
	return varAction;
}

///////////////////////////////////////////////////////////////////////

var myTocButtonLength=6;
var varTocButtonSelected = "";

var dmTocButtons=new Array();
dmTocButtons.length=myTocButtonLength;

dmTocButtons[1]=new dmToolbarButton("btnToc1","cartografia",1,"");
dmTocButtons[2]=new dmToolbarButton("btnToc2","orto2007",0,"");
dmTocButtons[3]=new dmToolbarButton("btnToc3","orto2005",0,"");
dmTocButtons[4]=new dmToolbarButton("btnToc4","ecovia",1,"");
dmTocButtons[5]=new dmToolbarButton("btnToc5","algarviana",1,"");
dmTocButtons[6]=new dmToolbarButton("btnToc6","percursos",1,"");

function TBGetSelectedButtons()
{
    var btn;
    var retVal = "";

    for (var i=1; i<=myTocButtonLength; i++)
    {
        var btn = dmTocButtons[i];
    
        if (btn.Selected)
        {	        
             retVal = retVal + " " + btn.Action;
        }
     }
     
     return retVal;
}

function TBGetTocButton(index)
{
	return dmTocButtons[index];
}

function TBGetTocButtonById(btnId)
{
	var button;
	var retVal = null;
	
	for (var i=1; i<=myTocButtonLength; i++)
	{
		 button = TBGetTocButton(i);
		 
		 if(button.buttonId==btnId)
		 {
			retVal = button;
			break;
		 }
	}
	
	return retVal;
}

function TOCInitialize()
{

    for (var i=1; i<=myTocButtonLength; i++)
    {
        var buttonId = dmTocButtons[i].buttonId;
	    var button = document.getElementById(buttonId);
	
	    if (button != null)
	    {
		    button.onmouseover = btnToc_onmouseover;
		    button.onmousedown = btnToc_onmousedown;
		    button.onmouseout = btnToc_onmouseout;
		    button.onclick = btnToc_onclick;
	    }
    } 
    
    //Definir botão seleccionado por defeito            
	var btn = TBGetTocButtonById("btnToc1");	
    btn.Selected = true;
    document.getElementById("btnToc1").className = "mapTocItemSelected";        
    
	btn = TBGetTocButtonById("btnToc2");	
    btn.Selected = true;
    document.getElementById("btnToc2").className = "mapTocItemSelected"; 
    
    if ($("#visibleLayers").attr("value") != null)
    {
        var layers = $("#visibleLayers").attr("value").split("|");
        
        if (layers.length > 0)
        {
            for (var i=1; i<=myTocButtonLength; i++)
            {
                var btn = dmTocButtons[i];
                
                btn.Selected = false;
                document.getElementById(btn.buttonId).className = "mapTocItem";
                
                for (var j=0; j<layers.length; j++)
                {
                    if (layers[j].toLowerCase() == btn.Action.toLowerCase())
                    {
                        btn.Selected = true;
                        document.getElementById(btn.buttonId).className = "mapTocItemSelected";
                        
                        break;
                    }                        
                }
            }
        }
    } 
}
function btnToc_onmouseover(e)
{
    if (!e) var e = window.event;
    
    this.className = "mapTocItemOver";
}
function btnToc_onmouseout(e) {

    var button = TBGetTocButtonById(this.id);
        
    if (button != null)
    {
	    if (button.Selected)
	    {
	       this.className = "mapTocItemSelected";
	    } else {
	        this.className = "mapTocItem";
	    }
	}
}
function btnToc_onmousedown(e)
{	
    var button = TBGetTocButtonById(this.id);
        
    if (button != null)
    {
    
        if (button.IsSelectable == 0)
        {    	
	        for (var i=1; i<=myTocButtonLength; i++)
	        {
	            var btn = dmTocButtons[i];
    	    
	            if (btn.IsSelectable == 0 && btn.buttonId != this.id)
	            {
	                var elem = document.getElementById(btn.buttonId);
	                elem.className = "mapTocItem";
    	        
	                btn.Selected = false;
	            }
	         }
	        
	        this.className = "mapTocItemSelected"; 	
			
			button.Selected = !button.Selected;	         
	    } else {
	    
            if (button.Selected)
		    {
		        this.className = "mapTocItem";
		    } else {
		        this.className = "mapTocItemSelected";
		    }
		    button.Selected = !button.Selected;	   
	    }
	}
		
}
function btnToc_onclick(e) {
	if (!e) var e = window.event;
	
	var button = TBGetTocButtonById(this.id);	
	var layers = "";

	if (button.IsSelectable == 0)	
	{
        for (var i=1; i<=myTocButtonLength; i++)
        {
            var btn = dmTocButtons[i];
	    
            if (btn.Selected)
            {	        
                 layers = layers + " " + btn.Action;
            }
         }                          
	
	    SetLayersListVisible(layers);	
	} else {
		layers = button.Action;	
		
	    SetLayerVisibility(layers, button.Selected);
	}
}
