Studio.Options = 
{
    aShape : new Array(),
    
    aText  : new Array(),
    
    init : function()
    {
        Studio.Options.Listener.attach();
        this.setDefaultValues();
    },
    
    setDefaultValues : function()
    {
        // for shape
        this.aShape['type']      = 'rect';
        this.aShape['keepratio'] = false;
        
        // for text
        this.aText['font']       = "Aetherfox";
        this.aText['size']       = "24";
        this.aText['align']      = "none";
        this.aText['bold']       = 0;
        this.aText['italic']     = 0;
        this.aText['underlined'] = 0;
        this.aText['text']       = "";
        
        setTimeout("Studio.Options.resetColors()", 1200);
    },
    
    resetColors : function()
    {
        Studio.ColorPicker.effectSetBoxColor('studio_color',               '#000000', true);
        Studio.ColorPicker.effectSetBoxColor('options_create_text__color', '#000000', true);
        Studio.ColorPicker.effectSetBoxColor('options_create_shape__fill', '#000000', true);
        Studio.ColorPicker.effectSetBoxColor('options_gradient_color1',    '#FFFFFF', true);
        Studio.ColorPicker.effectSetBoxColor('options_gradient_color2',    '#000000', true);
        Studio.ColorPicker.effectSetBoxColor('options_outlines_color1',    '#000000', true);
    },
    
    panelsToDefault : function()
    {
        dojo.byId('options_edit_text__shadow').checked = false;
        dojo.byId('options_edit_text__gradient').checked = false;
        dojo.byId('options_edit_text__outlines').checked = false;
        dojo.byId('options_edit_text__opacity').checked = false;
        
        dojo.byId('options_edit_shape__shadow').checked = false;
        dojo.byId('options_edit_shape__opacity').checked = false;
        
        dojo.byId('options_edit_image__shadow').checked = false;
        dojo.byId('options_edit_image__opacity').checked = false;
        
        Studio.Options.Popup.toggleShadow(dojo.byId('options_edit_text__shadow'), 'shadowLink_edittext');
        Studio.Options.Popup.toggleGradient(dojo.byId('options_edit_text__gradient'), 'gradientLink_edittext');
        Studio.Options.Popup.toggleOutlines(dojo.byId('options_edit_text__outlines'), 'outlinesLink_edittext');
        Studio.Options.Popup.toggleOpacity(dojo.byId('options_edit_text__opacity'), 'opacityLink_edittext');
        
        Studio.Options.Popup.toggleShadow(dojo.byId('options_edit_shape__shadow'), 'shadowLink_editshape');
        Studio.Options.Popup.toggleOpacity(dojo.byId('options_edit_shape__opacity'), 'opacityLink_editshape');
        
        Studio.Options.Popup.toggleShadow(dojo.byId('options_edit_image__shadow'), 'shadowLink_editimage');
        Studio.Options.Popup.toggleOpacity(dojo.byId('options_edit_image__opacity'), 'opacityLink_editimage');
        
        dojo.byId('options_create_text__font').value  = 'Aetherfox';
        dojo.byId('options_create_text__size').value  = '24';
        dojo.byId('options_create_text__align').value = 'none';
        dojo.byId('options_create_text__text').value  = '';
        dojo.byId('options_create_text__bold').checked       = false;
        dojo.byId('options_create_text__italic').checked     = false;
        dojo.byId('options_create_text__underlined').checked = false;
        
        Studio.Options.setOption('text', 'bold', 0);
        Studio.Options.setOption('text', 'italic', 0);
        Studio.Options.setOption('text', 'underlined', 0);
        Studio.Options.setOption('text', 'font', dojo.byId('options_create_text__font').value);
        Studio.Options.setOption('text', 'size', dojo.byId('options_create_text__size').value);
        Studio.Options.setOption('text', 'align', dojo.byId('options_create_text__align').value);
        Studio.Options.setOption('text', 'text', dojo.byId('options_create_text__text').value);
        
        Studio.ColorPicker.effectSetBoxColor('options_create_text__color', dojo.byId('studio_color').style.backgroundColor);
        Studio.ColorPicker.effectSetBoxColor('options_create_shape__fill', dojo.byId('studio_color').style.backgroundColor);
    },
    
    cancelAction : function()
    {
        Studio.Options.hideAllPanels();
        Studio.LayerHandler.Select.removeSelection();
        Studio.Options.Setter.resetOptions();
    },
    
    loadEditLayerOptions : function(iLayerId)
    {
        Studio.Options.hideAllPanels();
        if ('rect' == Studio.LayerHandler.aLayers[iLayerId].oObject.sType 
                || 'ellipse' == Studio.LayerHandler.aLayers[iLayerId].oObject.sType)
        {
            dojo.style('options_edit_shape', 'display', '');
            this.loadEditShapeOptions(iLayerId);
        }
        if ('image' == Studio.LayerHandler.aLayers[iLayerId].oObject.sType)
        {
            dojo.style('options_edit_image', 'display', '');
            this.loadEditImageOptions(iLayerId);
        }
        if ('text' == Studio.LayerHandler.aLayers[iLayerId].oObject.sType)
        {
            dojo.style('options_edit_text', 'display', '');
            this.loadEditTextOptions(iLayerId);
        }
    },
    
    loadEditShapeOptions : function(iLayerId)
    {
        if (null != Studio.LayerHandler.aLayers[iLayerId].aEffects[Studio.Effect.iOpacity])
        {
            dojo.byId('options_edit_shape__opacity').checked = true;
            Studio.Options.Popup.toggleOpacity(dojo.byId('options_edit_shape__opacity'), 'opacityLink_editshape');
            dojo.byId('options_opacity_level').value = Studio.LayerHandler.aLayers[iLayerId].aEffects[Studio.Effect.iOpacity].iOpacity;
        }
        if (null != Studio.LayerHandler.aLayers[iLayerId].aEffects[Studio.Effect.iShadow])
        {
            dojo.byId('options_edit_shape__shadow').checked = true;
            Studio.Options.Popup.toggleShadow(dojo.byId('options_edit_shape__shadow'), 'shadowLink_editshape');
            dojo.byId('options_shadow_size').value = Studio.LayerHandler.aLayers[iLayerId].aEffects[Studio.Effect.iShadow].iSize;
            dojo.byId('options_shadow_angle').value = Studio.LayerHandler.aLayers[iLayerId].aEffects[Studio.Effect.iShadow].iAngle;
        }
        dojo.byId('options_edit_shape__fill').style.backgroundColor = '#' + Studio.LayerHandler.aLayers[iLayerId].oObject.oShape.color_fill;
        if (Studio.LayerHandler.aLayers[iLayerId].oObject.oShape.color_stroke)
        {
            dojo.byId('options_edit_shape__border').style.backgroundColor = '#' + Studio.LayerHandler.aLayers[iLayerId].oObject.oShape.color_stroke;
        }
        dojo.byId('options_edit_shape__thickness').value = Studio.LayerHandler.aLayers[iLayerId].oObject.oShape.width_stroke;
    },
    
    loadEditImageOptions : function(iLayerId)
    {
        if (null != Studio.LayerHandler.aLayers[iLayerId].aEffects[Studio.Effect.iOpacity])
        {
            dojo.byId('options_edit_image__opacity').checked = true;
            Studio.Options.Popup.toggleOpacity(dojo.byId('options_edit_image__opacity'), 'opacityLink_editimage');
            dojo.byId('options_opacity_level').value = Studio.LayerHandler.aLayers[iLayerId].aEffects[Studio.Effect.iOpacity].iOpacity;
        } else 
        {
            dojo.byId('options_edit_image__opacity').checked = false;
            Studio.Options.Popup.toggleOpacity(dojo.byId('options_edit_image__opacity'), 'opacityLink_editimage');
        }
        if (null != Studio.LayerHandler.aLayers[iLayerId].aEffects[Studio.Effect.iShadow])
        {
            dojo.byId('options_edit_image__shadow').checked = true;
            Studio.Options.Popup.toggleShadow(dojo.byId('options_edit_image__shadow'), 'shadowLink_editimage');
            dojo.byId('options_shadow_size').value = Studio.LayerHandler.aLayers[iLayerId].aEffects[Studio.Effect.iShadow].iSize;
            dojo.byId('options_shadow_angle').value = Studio.LayerHandler.aLayers[iLayerId].aEffects[Studio.Effect.iShadow].iAngle;
        } else 
        {
            dojo.byId('options_edit_image__shadow').checked = false;
            Studio.Options.Popup.toggleShadow(dojo.byId('options_edit_image__shadow'), 'shadowLink_editimage');
        }
    },
    
    loadEditTextOptions : function(iLayerId)
    {
        var oText = Studio.LayerHandler.aLayers[iLayerId].oObject.oShape;
        dojo.byId('options_edit_text__font').value         = oText.font;
        dojo.byId('options_edit_text__size').value         = oText.size;
        dojo.byId('options_edit_text__align').value        = oText.align;
        dojo.byId('options_edit_text__text').value         = oText.text;
        dojo.byId('options_edit_text__shape').value        = (null != oText.shape) ? oText.shape : "";
        dojo.byId('options_edit_text__bold').checked       = oText.bold;
        dojo.byId('options_edit_text__italic').checked     = oText.italic;
        dojo.byId('options_edit_text__underlined').checked = oText.underlined;
        this.setOption('text', 'font',       oText.font);
        this.setOption('text', 'size',       oText.size);
        this.setOption('text', 'align',      oText.align);
        this.setOption('text', 'bold',       oText.bold);
        this.setOption('text', 'italic',     oText.italic);
        this.setOption('text', 'underlined', oText.underlined);
        this.setOption('text', 'text',       oText.text);
        dojo.byId('options_edit_text__color').style.backgroundColor = '#' + oText.color;
        
        if (null != Studio.LayerHandler.aLayers[iLayerId].aEffects[Studio.Effect.iOpacity])
        {
            dojo.byId('options_edit_text__opacity').checked = true;
            Studio.Options.Popup.toggleOpacity(dojo.byId('options_edit_text__opacity'), 'opacityLink_edittext');
            dojo.byId('options_opacity_level').value = Studio.LayerHandler.aLayers[iLayerId].aEffects[Studio.Effect.iOpacity].iOpacity;
        } else 
        {
            dojo.byId('options_edit_text__opacity').checked = false;
            Studio.Options.Popup.toggleOpacity(dojo.byId('options_edit_text__opacity'), 'opacityLink_edittext');
        }
        
        if (null != Studio.LayerHandler.aLayers[iLayerId].aEffects[Studio.Effect.iShadow])
        {
            dojo.byId('options_edit_text__shadow').checked = true;
            Studio.Options.Popup.toggleShadow(dojo.byId('options_edit_text__shadow'), 'shadowLink_edittext');
            dojo.byId('options_shadow_size').value = Studio.LayerHandler.aLayers[iLayerId].aEffects[Studio.Effect.iShadow].iSize;
            dojo.byId('options_shadow_angle').value = Studio.LayerHandler.aLayers[iLayerId].aEffects[Studio.Effect.iShadow].iAngle;
        } else 
        {
            dojo.byId('options_edit_text__shadow').checked = false;
            Studio.Options.Popup.toggleShadow(dojo.byId('options_edit_text__shadow'), 'shadowLink_edittext');
        }
        
        if (null != Studio.LayerHandler.aLayers[iLayerId].aEffects[Studio.Effect.iGradient])
        {
            dojo.byId('options_edit_text__gradient').checked = true;
            Studio.Options.Popup.toggleGradient(dojo.byId('options_edit_text__gradient'), 'gradientLink_edittext');
            dojo.byId('options_gradient_color1').style.backgroundColor = '#' + new RGBColor(Studio.LayerHandler.aLayers[iLayerId].aEffects[Studio.Effect.iGradient].sColor1).toHex();
            dojo.byId('options_gradient_color2').style.backgroundColor = '#' + new RGBColor(Studio.LayerHandler.aLayers[iLayerId].aEffects[Studio.Effect.iGradient].sColor2).toHex();
            dojo.byId('options_gradient_angle').value = Studio.LayerHandler.aLayers[iLayerId].aEffects[Studio.Effect.iGradient].iAngle;
        } else 
        {
            dojo.byId('options_edit_text__gradient').checked = false;
            Studio.Options.Popup.toggleGradient(dojo.byId('options_edit_text__gradient'), 'gradientLink_edittext');
        }
        
        if (null != Studio.LayerHandler.aLayers[iLayerId].aEffects[Studio.Effect.iOutlines])
        {
            dojo.byId('options_edit_text__outlines').checked = true;
            Studio.Options.Popup.toggleOutlines(dojo.byId('options_edit_text__outlines'), 'outlinesLink_edittext');
            for (var i = 1; i <= 4; i++)
            {
                dojo.byId('options_outlines_color' + i).style.backgroundColor = '#' + new RGBColor(Studio.LayerHandler.aLayers[iLayerId].aEffects[Studio.Effect.iOutlines].aColor[i-1]).toHex();
                dojo.byId('options_outlines_thickness' + i).value = Studio.LayerHandler.aLayers[iLayerId].aEffects[Studio.Effect.iOutlines].aThickness[i-1];
            }
        } else 
        {
            dojo.byId('options_edit_text__outlines').checked = false;
            Studio.Options.Popup.toggleOutlines(dojo.byId('options_edit_text__outlines'), 'outlinesLink_edittext');
        }
    },
    
    hideEditLayerOptions : function(iLayerId)
    {
        this.hideAllPanels();
    },
    
    getOption : function(sType, sOption)
    {
        if ('shape' == sType)
        {
            if (null != this.aShape[sOption])
            {
                return this.aShape[sOption];
            }
        }
        if ('text' == sType)
        {
            if (null != this.aText[sOption])
            {
                return this.aText[sOption];
            }
        }
    },
    
    setOption : function(sType, sOption, sValue)
    {
        if ('shape' == sType)
        {
            this.aShape[sOption] = sValue;
        }
        if ('text' == sType)
        {
            this.aText[sOption] = sValue;
        }
    },
    
    showPanel : function(sAction, sObject)
    {
        this.hideAllPanels();
        dojo.style('options_' + sAction + '_' + sObject, 'display', '');
    },
    
    hidePanel : function(sAction, sObject)
    {
        dojo.style('options_' + sAction + '_' + sObject, 'display', 'none');
    },
    
    hideAllPanels : function()
    {
        this.hidePanel('edit', 'text');
        this.hidePanel('edit', 'shape');
        this.hidePanel('edit', 'image');
        this.hidePanel('create', 'text');
        this.hidePanel('create', 'shape');
        this.hidePanel('create', 'image');
        this.hidePanel('tool', 'zoom');
        Studio.Toolbar.resetButtons();
    }
};