
/*

    Javascript for toolbar stuff

*/

// -------------------------- CLASSES

function IMS2_ClientToolbarManager(){
    var self = this;
    
    this.toolbars = new Array();
    
    function AddToolbar(id,mapid){
        if( (null != id) && (!self.ContainsToolbar(id)) ){
            var newToolbar = new IMS2_Toolbar(id,mapid);
            self.toolbars[self.toolbars.length] = newToolbar;
        }
    }
    this.AddToolbar = AddToolbar;
    
    function ApplyMapAction(action,mapid){
        if(mapid){
            for(var i = 0; i < self.toolbars.length; i++){
                var curToolbar = self.toolbars[i];
                if(curToolbar){
                    if(mapid == curToolbar.mapid){
                        curToolbar.ApplyMapAction(action);
                    }
                }
            }
        }
    }
    this.ApplyMapAction = ApplyMapAction;
    
    function ContainsToolbar(id){
        return(false);
    }
    this.ContainsToolbar = ContainsToolbar;
    
    function GetToolbar(id){
        var toolbarobj = null;
        for(var i = 0; i < self.toolbars.length; i++){
            var curToolbar = self.toolbars[i];
            if((null != curToolbar) && curToolbar.id == id){
                toolbarobj = curToolbar;
                break;
            }
        }
        return(toolbarobj);
    }
    this.GetToolbar = GetToolbar;
    
    function RegisterButton(id,toolbarid){
        var toolbar =  GetToolbar(toolbarid);
        if(toolbar){
            return(toolbar.AddButon(id));
        }
        return(null);
    }
    this.RegisterButton = RegisterButton;
}

function IMS2_Toolbar(id,mapid){
    var self = this;
    
    this.id = id;
    this.mapid = mapid;
    this.buttons = new Array();
    
    function AddButon(id){
        if( (null != id) ){
            var newBttn = new IMS2_ToolbarButton(id);
            self.buttons[self.buttons.length] = newBttn;
            return(newBttn);
        }
        return(null);
    }
    this.AddButon = AddButon;
    
    function GetButton(id){
        var bttnobj = null;
        for(var i = 0; i < self.buttons.length; i++){
            var curBttn = self.buttons[i];
            if((null != curBttn) && curBttn.id == id){
                bttnobj = curBttn;
                break;
            }
        }
        return(bttnobj);
    }
    this.GetButton = GetButton;
    
    function ApplyMapAction(action){
        for(var i = 0; i < self.buttons.length; i++){
            var curBttn = self.buttons[i];
            if(curBttn){
                curBttn.active = (curBttn.action == action);
                curBttn.RestoreImage();
            }
        }
    }
    this.ApplyMapAction = ApplyMapAction;
    
    function MouseEvent(bttnid,eType){
        if(bttnid && eType){
            var btn = self.GetButton(bttnid);
            if(btn){
                btn.UpdateButton(eType);
            }
        }
    }
    this.MouseEvent = MouseEvent;
}

function IMS2_ToolbarButton(id){
    var self = this;
    
    this.id = id;
    this.type = "SimpleText";
    this.imageurl = "";
    this.imageurl_hover = "";
    this.imageurl_active = "";
    this.imageurl_click = "";
    this.action = "";
    this.active = false;
    
    function UpdateButton(eType){
        if("ImageButton" == self.type){
            if("over" == eType){
                self.SetHoverImage();
            }else if("out" == eType){
                self.RestoreImage();
            }else if("click" == eType){
                ;
            }else{
                self.RestoreImage();       
            }
        }
    }
    this.UpdateButton = UpdateButton;
    
    function SetHoverImage(){
        var imgTag = document.getElementById('_toolbarbttn_' + self.id);
        if(imgTag && self.imageurl_hover){
            imgTag.src = self.imageurl_hover;
        }
    }
    this.SetHoverImage = SetHoverImage;
    
    function RestoreImage(imgTag){
        var imgTag = document.getElementById('_toolbarbttn_' + self.id);
        if(imgTag){
            if(self.active && self.imageurl_active){
                imgTag.src = self.imageurl_active;
            }else{
                imgTag.src = self.imageurl;
            }
        }
    }
    this.RestoreImage = RestoreImage;
}

// -------------------------- FUNCTIONS

function IMS2_SetupToolbar(id,mapid){
    if(null != id && IMS2_ToolbarManager){
        IMS2_ToolbarManager.AddToolbar(id,mapid);
    }
}

function IMS2_RegisterToolbarButton(id,toolbarid,action,type,imgurl,imgurl_hover,imgurl_active){
    if(id && toolbarid && IMS2_ToolbarManager){
        var btn = IMS2_ToolbarManager.RegisterButton(id,toolbarid);
        if(btn){
            btn.action = action;
            btn.type = type;
            btn.imageurl = imgurl;
            btn.imageurl_hover = imgurl_hover;
            btn.imageurl_active = imgurl_active;
        }
    }
}

function IMS2_ToolbarButtonMouseEvent(bttnid,toolbarid,eType){
    if(bttnid && toolbarid && IMS2_ToolbarManager){
        var toolbar = IMS2_ToolbarManager.GetToolbar(toolbarid);
        if(toolbar){
            toolbar.MouseEvent(bttnid,eType);
        }
    }
}

function IMS2_ToolbarChangeMapAction(mapid,action){
    if(IMS2_MapManager && mapid){
        IMS2_MapManager.ChangeMapAction(mapid,action);
    }
}

function IMS2_GetToolbarDiv(tbid){
    return(document.getElementById("_toolbar_" + tbid));
}

// ------------------------- GLOBALS

var IMS2_ToolbarManager = new IMS2_ClientToolbarManager();