Studio.Toolbar = 
{
    aButtonsH : new Array(),
    aButtons  : new Array(),

    init : function()
    {
        this.aButtons['btnVectorObject']  = '/img/design-studio/btn_control/objects.gif';
        this.aButtonsH['btnVectorObject'] = '/img/design-studio/btn_control/objects_h.gif';
        this.aButtons['btnUploadImage']   = '/img/design-studio/btn_control/pic.gif';
        this.aButtonsH['btnUploadImage']  = '/img/design-studio/btn_control/pic_h.gif';
        this.aButtons['btnText']          = '/img/design-studio/btn_control/font.gif';
        this.aButtonsH['btnText']         = '/img/design-studio/btn_control/font_h.gif';
        this.aButtons['btnMove']          = '/img/design-studio/btn_control/move.gif';
        this.aButtonsH['btnMove']         = '/img/design-studio/btn_control/move_h.gif';
        this.aButtons['btnZoom']          = '/img/design-studio/btn_control/lup.gif';
        this.aButtonsH['btnZoom']         = '/img/design-studio/btn_control/lup_h.gif';
        this.aButtons['btnResize']        = '/img/design-studio/btn_control/resize.gif';
        this.aButtonsH['btnResize']       = '/img/design-studio/btn_control/resize_h.gif';
        
        dojo.connect(dojo.byId('linkVectorObject'), 'onclick', this, 'linkVectorObject_onclick');
        dojo.connect(dojo.byId('linkMoveLayer'),    'onclick', this, 'linkMoveLayer_onclick');
        dojo.connect(dojo.byId('linkResizeLayer'),  'onclick', this, 'linkResizeLayer_onclick');
        dojo.connect(dojo.byId('linkColorPicker'),  'onclick', this, 'linkColorPicker_onclick');
        dojo.connect(dojo.byId('linkText'),         'onclick', this, 'linkText_onclick');
        dojo.connect(dojo.byId('linkUploadImage'),  'onclick', this, 'linkUploadImage_onclick');
        dojo.connect(dojo.byId('linkUndo'),         'onclick', this, 'linkUndo_onclick');
        dojo.connect(dojo.byId('linkRedo'),         'onclick', this, 'linkRedo_onclick');
        dojo.connect(dojo.byId('linkZoom'),         'onclick', this, 'linkZoom_onclick');
        dojo.connect(dojo.byId('linkPrint'),        'onclick', this, 'linkPrint_onclick');
    },
    
    resetButtons : function()
    {
        dojo.byId('btnVectorObject').src = this.aButtons['btnVectorObject'];
        dojo.byId('btnUploadImage').src  = this.aButtons['btnUploadImage'];
        dojo.byId('btnText').src         = this.aButtons['btnText'];
        dojo.byId('btnMove').src         = this.aButtons['btnMove'];
        dojo.byId('btnResize').src       = this.aButtons['btnResize'];
        dojo.byId('btnZoom').src         = this.aButtons['btnZoom'];
    },
    
    linkPrint_onclick : function()
    {
        Studio.bViewPrintable = true;
        Studio.saveAndExit();
    },
    
    linkZoom_onclick : function()
    {
        Studio.resetState();
        this.highlightButton('btnZoom');
        Studio.Options.showPanel('tool', 'zoom');
        Studio.Zoom.initZoom();
        return false;
    },
    
    linkUndo_onclick : function()
    {
        Studio.History.undo();
        return false;
    },
    
    linkRedo_onclick : function()
    {
        Studio.History.redo();
        return false;
    },
    
    linkVectorObject_onclick : function()
    {
    	Studio.Zoom.endZoom();
        Studio.resetState();
        this.highlightButton('btnVectorObject');
        Studio.Options.showPanel('create', 'shape');
        Studio.Canvas.initDraw();
        return false;
    },
    
    linkUploadImage_onclick : function()
    {
        Studio.resetState();
        this.highlightButton('btnUploadImage');
        Studio.Options.showPanel('create', 'image');
        return false;
    },
    
    linkText_onclick : function()
    {
        Studio.resetState();
        this.highlightButton('btnText');
        Studio.Options.showPanel('create', 'text');
        return false;
    },
    
    linkMoveLayer_onclick : function()
    {
    	Studio.Zoom.endZoom();
        iLayerId = Studio.LayerHandler.Select.getSelected();
        if (iLayerId)
        {
        	if (Studio.LayerHandler.aLayers[iLayerId].bVisible)
        	{
	            Studio.Moveable.setMovable('imgdiv_' + iLayerId);
	            this.highlightButton('btnMove');
        	} else 
        	{
        		alert('Can not move hidden layer! Please unhide it first.');
        	}
        } else 
        {
            alert('No Layer Is Selected!');
        }
        return false;
    },
    
    linkResizeLayer_onclick : function()
    {
    	Studio.Zoom.endZoom();
        iLayerId = Studio.LayerHandler.Select.getSelected();
        if (iLayerId)
        {
        	if (Studio.LayerHandler.aLayers[iLayerId].bVisible)
        	{
	            Studio.Resizable.setResizable(Studio.LayerHandler.aLayers[iLayerId]);
	            this.highlightButton('btnResize');
        	} else 
        	{
        		alert('Can not resize hidden layer! Please unhide it first.');
        	}
        } else 
        {
            alert('No Layer Is Selected!');
        }
        return false;
    },
    
    linkColorPicker_onclick : function()
    {
    	return false;
    },
    
    highlightButton : function(sButton)
    {
        this.resetButtons();
        dojo.byId(sButton).src = this.aButtonsH[sButton];
        return false;
    },
    
    removeToolsListeners : function()
    {
        dojo.forEach(Studio.Canvas.aConnection, 
                     function(oConn, idx)
                     {
                         dojo.disconnect(oConn);
                         Studio.Canvas.aConnection[idx] = null;
                     });
        dojo.forEach(Studio.Moveable.aConnection, 
                     function(oConn, idx)
                     {
                         dojo.disconnect(oConn);
                         Studio.Canvas.aConnection[idx] = null;
                     });
        dojo.forEach(Studio.Resizable.aConnection, 
                     function(oConn, idx)
                     {
                         dojo.disconnect(oConn);
                         Studio.Canvas.aConnection[idx] = null;
                     });
        dojo.forEach(Studio.Zoom.aConnection, 
                     function(oConn, idx)
                     {
                         dojo.disconnect(oConn);
                         Studio.Zoom.aConnection[idx] = null;
                     });
    }
};