vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
--[[

        TipBuddy: ---------
                copyright 2005 by Chester

]]

--------------------------------------------------------------------------------------------------------------------------------------
-- OPTIONS FRAME
--------------------------------------------------------------------------------------------------------------------------------------
function TipBuddy_ToggleOptionsFrame()
        if ( TipBuddy_OptionsFrame:IsVisible() ) then
                HideUIPanel(TipBuddy_OptionsFrame);
                PlaySound("gsTitleOptionExit");
                -- Check if the options frame was opened by myAddOns
--[[            if (MYADDONS_ACTIVE_OPTIONSFRAME == this) then
                        ShowUIPanel(myAddOnsFrame);
                else
                        ShowUIPanel(GameMenuFrame);
                end]]
        else
                TipBuddy_OptionsFrame_UpdateCheckboxes();
                TipBuddy_OptionsFrame_UpdateSliders();
                TipBuddy_OptionsFrame_UpdateColorButtons();
                TipBuddy_OptionsFrame_UpdateColorButtons_Text();
                TipBuddy_OptionsFrame_UpdateEditBoxes();

                TipBuddy_Background_ColorPick_OnLoad();

                HideUIPanel(GameMenuFrame);
                ShowUIPanel(TipBuddy_OptionsFrame);
                PlaySound("igMainMenuQuit");
        end
end

function TipBuddy_OptionsFrame_OnLoad()
        TipBuddy_OptionsFrameHeaderText:SetText("TipBuddy Options");
        TipBuddy_UpdateTabs_Initialize();
        PanelTemplates_SetNumTabs(TipBuddy_OptionsFrame_PlayersFrame, 3);
        PanelTemplates_SetNumTabs(TipBuddy_OptionsFrame_NPCsFrame, 3);
        PanelTemplates_SetNumTabs(TipBuddy_OptionsFrame_PetsFrame, 2);
        TipBuddy_HideOptionPanels();
        TipBuddy_OptionsFrame_PlayersFrame:Show();
end

function LoadTipBuddyButtonTextures(name)
        this:RegisterForClicks("LeftButtonUp", "RightButtonUp");
        this:RegisterEvent("UPDATE_BINDINGS");
        local prefix = "Interface\\AddOns\\TipBuddy\\gfx\\UI-MicroButton-";
        this:SetNormalTexture(prefix..name.."-Up");
        this:SetPushedTexture(prefix..name.."-Down");
        this:SetDisabledTexture(prefix..name.."-Disabled");
        this:SetHighlightTexture("Interface\\Buttons\\UI-MicroButton-Hilight");
end

function TipBuddy_HideOptionPanels()
        TipBuddy_OptionsFrame_PlayersFrame:Hide();
        TipBuddy_OptionsFrame_NPCsFrame:Hide();
        TipBuddy_OptionsFrame_PetsFrame:Hide();
        TipBuddy_OptionsFrame_CORPSEFrame:Hide();
        TipBuddy_OptionsFrame_General_Options:Hide();
        TipBuddy_OptionsFrame_Anchoring_Options:Hide();
        TipBuddy_OptionsFrame_Compact_Options:Hide();
end
---------------------------------------------------------------
-- UPDATING DUE TO CHECKBOXES
---------------------------------------------------------------
function TipBuddy_OptionsFrame_UpdateGreyed()
        --[[
        if ( TB_Op_Check1:GetChecked() ) then
                TipBuddy_ToggleCheckboxFrame( TB_Op_Check1 );
        end
        if ( TB_Op_Check9:GetChecked() ) then
                TipBuddy_ToggleCheckboxFrame( TB_Op_Check9 );
        end
        if ( TB_Op_Check17:GetChecked() ) then
                TipBuddy_ToggleCheckboxFrame( TB_Op_Check17 );
        end
        if ( TB_Op_Check25:GetChecked() ) then
                TipBuddy_ToggleCheckboxFrame( TB_Op_Check25 );
        end
        if ( TB_Op_Check33:GetChecked() ) then
                TipBuddy_ToggleCheckboxFrame( TB_Op_Check33 );
        end
        if ( TB_Op_Check41:GetChecked() ) then
                TipBuddy_ToggleCheckboxFrame( TB_Op_Check41 );
        end
        if ( TB_Op_Check49:GetChecked() ) then
                TipBuddy_ToggleCheckboxFrame( TB_Op_Check49 );
        end]]
        if ( TB_Op_Check57:GetChecked() ) then
                TB_Op_Check61:Disable();
                getglobal("TB_Op_Check61Text"):SetTextColor(GRAY_FONT_COLOR.r, GRAY_FONT_COLOR.g, GRAY_FONT_COLOR.b);
        else
                TB_Op_Check61:Enable();
                getglobal("TB_Op_Check61Text"):SetTextColor(NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b);
        end
end

function TipBuddy_OptionsFrame_UpdateCheckboxes()
        for index, value in TB_Op_Checks do
                local button = getglobal( value.frame );
                local string = getglobal( value.frame.."Text");

                if (not button) then
                        return;
                end

                local tipTable = TipBuddy_SavedVars[value.type];
                ----TB_AddMessage(value.type);
                button:SetChecked( tipTable[value.var] );

                string:SetText( TEXT(value.text) );
                button.tooltipText = value.tooltipText;
                button.tooltipRequirement = value.tooltipRequirement;
                button.gxRestart = value.gxRestart;
                button.restartClient = value.restartClient;

                if ( button.disabled ) then
                        button:Disable();
                        string:SetTextColor(GRAY_FONT_COLOR.r, GRAY_FONT_COLOR.g, GRAY_FONT_COLOR.b);
                else
                        button:Enable();
                        string:SetTextColor(NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b);
                end
        end
end

function TipBuddy_OptionsFrame_UpdateSliders()
        for index, value in TipBuddy_OptionsFrame_Sliders do
                local slider = getglobal("TipBuddy_OptionsFrame_Slider"..index);
                local string = getglobal("TipBuddy_OptionsFrame_Slider"..index.."Text");
                local high = getglobal("TipBuddy_OptionsFrame_Slider"..index.."High");
                local low = getglobal("TipBuddy_OptionsFrame_Slider"..index.."Low");

                TipBuddy_OptionsFrame_SliderCalcEnabled( slider );

                if (index == 1) then
                        low:SetText( "Small" );
                        high:SetText( "Large" );                        
                else
                        low:SetText( value.minValue );
                        high:SetText( value.maxValue );                 
                end

                local tipTable = TipBuddy_SavedVars["general"];

                slider:SetMinMaxValues(value.minValue, value.maxValue);
                slider:SetValueStep(value.valueStep);

                slider:SetValue( tipTable[value.var] );

                string:SetText(TEXT(value.text));
                slider.tooltipText = value.tooltipText;
                slider.tooltipRequirement = value.tooltipRequirement;
                slider.gxRestart = value.gxRestart;
                slider.restartClient = value.restartClient;
        end
end

function TipBuddy_OptionsFrame_SliderCalcEnabled( slider )
        local thumb = getglobal(slider:GetName().."Thumb");
        local string = getglobal(slider:GetName().."Text");
        local updatetext = getglobal(slider:GetName().."TextUpdate");
        local high = getglobal(slider:GetName().."High");
        local low = getglobal(slider:GetName().."Low");
        if ( slider.disabled ) then
                slider:EnableMouse(0);
                thumb:Hide();
                string:SetVertexColor(GRAY_FONT_COLOR.r, GRAY_FONT_COLOR.g, GRAY_FONT_COLOR.b);
                updatetext:SetVertexColor(GRAY_FONT_COLOR.r, GRAY_FONT_COLOR.g, GRAY_FONT_COLOR.b);
                low:SetVertexColor(GRAY_FONT_COLOR.r, GRAY_FONT_COLOR.g, GRAY_FONT_COLOR.b);
                high:SetVertexColor(GRAY_FONT_COLOR.r, GRAY_FONT_COLOR.g, GRAY_FONT_COLOR.b);
        else
                slider:EnableMouse(1);
                thumb:Show();
                string:SetVertexColor(NORMAL_FONT_COLOR.r , NORMAL_FONT_COLOR.g , NORMAL_FONT_COLOR.b);
                updatetext:SetVertexColor(NORMAL_FONT_COLOR.r , NORMAL_FONT_COLOR.g , NORMAL_FONT_COLOR.b);
                low:SetVertexColor(HIGHLIGHT_FONT_COLOR.r, HIGHLIGHT_FONT_COLOR.g, HIGHLIGHT_FONT_COLOR.b);
                high:SetVertexColor(HIGHLIGHT_FONT_COLOR.r, HIGHLIGHT_FONT_COLOR.g, HIGHLIGHT_FONT_COLOR.b);
        end
end

function TipBuddy_OptionsFrame_UpdateEditBoxes()
        for index, value in TB_EditBoxes do
                local editbox = getglobal( value.frame );
                --local string = getglobal( value.frame.."Text");

                if (not editbox) then
                        return;
                end

                local tipTable = TipBuddy_SavedVars[value.type];
                ----TB_AddMessage(value.type);
                if (not tipTable[value.var]) then
                        DEFAULT_CHAT_FRAME:AddMessage("|cff3366ffSETTING BLANK VAR with: "..TEXT(value.type));
                        tipTable[value.var] = "";
                end
                editbox:SetText( tipTable[value.var] );
        end
end

function TipBuddy_OptionsFrame_UpdateDropDowns()
        OptionsFrame_EnableDropDown(UIOptionsFrameClickCameraDropDown);
end

---------------------------------------------------------------
-- TOGGLING ALL CHECKBOXES WHEN DISABLE ALL
---------------------------------------------------------------
function TipBuddy_ToggleCheckboxFrame( checkBox )
        local button = getglobal( checkBox:GetName() );
        local boxId = button:GetID();

--      --TB_AddMessage(button:GetID());

        if ( button:GetChecked() ) then
                for i=1, 7, 1 do
                        local boxName = getglobal( "TB_Op_Check"..(boxId + i) );
                        if (boxName == 0) then
                                return;                         
                        end
                        TipBuddy_DisableCheckBox(boxName);
                end
        else
                for i=1, 7, 1 do
                        local boxName = getglobal( "TB_Op_Check"..(boxId + i) );
                        if (boxName == 0) then
                                return;                         
                        end
                        TipBuddy_EnableCheckBox(boxName);
                end
        end
end

function TipBuddy_DisableCheckBox(checkBox)
--      checkBox:SetChecked(0);
        checkBox:Disable();
        getglobal(checkBox:GetName().."Text"):SetTextColor(GRAY_FONT_COLOR.r, GRAY_FONT_COLOR.g, GRAY_FONT_COLOR.b);
end

function TipBuddy_EnableCheckBox(checkBox, checked)
--      if ( checkBox:GetChecked() ) then
--              return;
--      end
--      checkBox:SetChecked(checked);
        checkBox:Enable();
        getglobal(checkBox:GetName().."Text"):SetTextColor(NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b);
end

function TipBuddy_UpdateTabs_Initialize()
--      local frame = getglobal( this:GetName() );
--      PanelTemplates_SetTab( TipBuddy_OptionsFrame_PlayersFrame, 1 );
        TipBuddy_OptionsFrame_PCFriend_Options:Show();
        TipBuddy_OptionsFrame_PCEnemy_Options:Hide();
        TipBuddy_OptionsFrame_PCParty_Options:Hide();

        TipBuddy_OptionsFrame_NPCFriend_Options:Show();
        TipBuddy_OptionsFrame_NPCNeutral_Options:Hide();
        TipBuddy_OptionsFrame_NPCEnemy_Options:Hide();

        TipBuddy_OptionsFrame_PETFriend_Options:Show();
        TipBuddy_OptionsFrame_PETEnemy_Options:Hide();

        TipBuddy_OptionsFrame_CORPSE_Options:Show();
end


function TipBuddy_PlayersFrameTab_OnClick(index)
        if ( not index ) then
                index = this:GetID();
        end
--      local frame = getglobal( this:GetName() );
        PanelTemplates_SetTab( TipBuddy_OptionsFrame_PlayersFrame, index );
        TipBuddy_OptionsFrame_PCFriend_Options:Hide();
        TipBuddy_OptionsFrame_PCEnemy_Options:Hide();
        TipBuddy_OptionsFrame_PCParty_Options:Hide();
        PlaySound("igCharacterInfoTab");
        if ( index == 1 ) then
                -- Friendly
                TipBuddy_OptionsFrame_PCFriend_Options:Show();
        elseif ( index == 2 ) then
                -- Enemy
                TipBuddy_OptionsFrame_PCParty_Options:Show();
        elseif ( index == 3 ) then
                -- InParty
                TipBuddy_OptionsFrame_PCEnemy_Options:Show();
        end
end

function TipBuddy_NPCsFrameTab_OnClick(index)
        if ( not index ) then
                index = this:GetID();
        end
--      local frame = getglobal( this:GetName() );
        PanelTemplates_SetTab( TipBuddy_OptionsFrame_NPCsFrame, index );
        TipBuddy_OptionsFrame_NPCFriend_Options:Hide();
        TipBuddy_OptionsFrame_NPCNeutral_Options:Hide();
        TipBuddy_OptionsFrame_NPCEnemy_Options:Hide();
        PlaySound("igCharacterInfoTab");
        if ( index == 1 ) then
                -- Friendly
                TipBuddy_OptionsFrame_NPCFriend_Options:Show();
        elseif ( index == 2 ) then
                -- Neutral
                TipBuddy_OptionsFrame_NPCNeutral_Options:Show();
        elseif ( index == 3 ) then
                -- Enemy
                TipBuddy_OptionsFrame_NPCEnemy_Options:Show();
        end
end

function TipBuddy_PetsFrameTab_OnClick(index)
        if ( not index ) then
                index = this:GetID();
        end
--      local frame = getglobal( this:GetName() );
        PanelTemplates_SetTab( TipBuddy_OptionsFrame_PetsFrame, index );
        TipBuddy_OptionsFrame_PETFriend_Options:Hide();
        TipBuddy_OptionsFrame_PETEnemy_Options:Hide();
        PlaySound("igCharacterInfoTab");
        if ( index == 1 ) then
                -- Friendly
                TipBuddy_OptionsFrame_PETFriend_Options:Show();
        elseif ( index == 2 ) then
                -- InParty
                TipBuddy_OptionsFrame_PETEnemy_Options:Show();
        end
end

function TipBuddy_OptionsFrameTab_OnClick(index)
        if ( not index ) then
                index = this:GetID();
        end
--      local frame = getglobal( this:GetName() );
        --PanelTemplates_SetTab( TipBuddy_OptionsFrame_PlayersFrame, index );
        TipBuddy_OptionsFrame_General_Options:Hide();
        TipBuddy_OptionsFrame_Compact_Options:Hide();
        PlaySound("igCharacterInfoTab");
        if ( index == 1 ) then
                TipBuddy_OptionsFrame_General_Options:Show();
                TipBuddy_OptionsFrame_GeneralOptionsTitleText:SetTextColor(1.0, 1.0, 1.0);
                TipBuddy_OptionsFrame_CompactOptionsTitleText:SetTextColor(0.3, 0.3, 0.1);
        elseif ( index == 2 ) then
                TipBuddy_OptionsFrame_Compact_Options:Show();
                TipBuddy_OptionsFrame_CompactOptionsTitleText:SetTextColor(1.0, 1.0, 1.0);
                TipBuddy_OptionsFrame_GeneralOptionsTitleText:SetTextColor(0.3, 0.3, 0.1);
        end
end

--------------------------------------------------------------------------------------------------------------------------------------
-- FRAME BACKGROUND COLOR PICKER
--------------------------------------------------------------------------------------------------------------------------------------
function TipBuddy_Background_ColorPick_OnLoad()
        cInfo = {};
end

function TipBuddy_Background_ColorPick( button )

        local name = getglobal( button:GetName() );
        local id = name:GetID();
        cInfo.type = TipBuddy_ColorPicker_Buttons[id].type;
        cInfo.var = TipBuddy_ColorPicker_Buttons[id].var;

        local targettype = TipBuddy_SavedVars[cInfo.type][cInfo.var];   
        if (not targettype) then
                TipBuddy_SavedVars[cInfo.type][cInfo.var] = { ["r"] = 0.8, ["g"] = 0.8, ["b"] = 0.9, ["a"] = 1, };
                targettype = TipBuddy_SavedVars[value.type][value.var]; 
        end
--TB_AddMessage("frame: "..button:GetName());
--TB_AddMessage("type: "..TEXT(cInfo.type));
        TBColorPickerFrame.func = TipBuddy_Background_SetColor;
        TBColorPickerFrame.hasOpacity = 1;
        TBColorPickerFrame.opacityFunc = TipBuddy_Background_SetOpacity;
        TBColorPickerFrame.cancelFunc = TipBuddy_Background_Cancel;

        TBColorPickerFrame:SetColorRGB( targettype.r, targettype.g, targettype.b);
        TBColorPickerFrame.opacity = (1- targettype.a);
        TBColorPickerFrame.previousValues = {r=targettype.r, g=targettype.g, b=targettype.b, opacity=targettype.a};

        ShowUIPanel(TBColorPickerFrame);
        --TB_AddMessage("just passed ShowUIPanel");
end

function TipBuddy_Text_ColorPick( button )

        local name = getglobal( button:GetName() );
        local id = name:GetID();
        cInfo.type = TipBuddy_ColorPicker_Buttons_Text[id].type;
        cInfo.var = TipBuddy_ColorPicker_Buttons_Text[id].var;

        local targettype = TipBuddy_SavedVars[cInfo.type][cInfo.var];   

----TB_AddMessage("frame: "..cInfo.name);
----TB_AddMessage("type: "..type);
        TBColorPickerFrame_Text.func = TipBuddy_Background_SetColor_Text;
        --TBColorPickerFrame_Text.hasOpacity = 1;
        --TBColorPickerFrame_Text.opacityFunc = TipBuddy_Background_SetOpacity;
        TBColorPickerFrame_Text.cancelFunc = TipBuddy_Background_Cancel;

        TBColorPickerFrame_Text:SetColorRGB( targettype.r, targettype.g, targettype.b);
        --TBColorPickerFrame_Text.opacity = (1- targettype.bgcolor.a);
        TBColorPickerFrame_Text.previousValues = {r=targettype.r, g=targettype.g, b=targettype.b, opacity=targettype.a};

        ShowUIPanel(TBColorPickerFrame_Text);
        --TB_AddMessage("just passed ShowUIPanel");
end

function TipBuddy_OptionsFrame_UpdateColorButtons()
        for index, value in TipBuddy_ColorPicker_Buttons do
                --TB_AddMessage(getn(TipBuddy_ColorPicker_Buttons));
                --TB_AddMessage(index);
                local button = getglobal( value.frame );
                local swatch = getglobal( value.frame.."NormalTexture");
                local string = getglobal( value.frame.."Text");
--              local type = getglobal( value.type );
                --TB_AddMessage("Color: ["..value.type.."]["..value.var.."]");
                
                if (not button) then
                        return;
                end
                        
                local targettype = TipBuddy_SavedVars[value.type][value.var];

                if (not targettype) then
                        TipBuddy_SavedVars[value.type][value.var] = { ["r"] = 0.8, ["g"] = 0.8, ["b"] = 0.9, ["a"] = 1, };
                        targettype = TipBuddy_SavedVars[value.type][value.var]; 
                end

                string:SetText(TEXT(value.text));
                if (value.text) then
                        ----TB_AddMessage("frame:"..TEXT(value.frame).."colorbutton text: "..value.text);       
                end
                button.tooltipText = value.tooltipText;
                button.tooltipRequirement = value.tooltipRequirement;
                swatch:SetVertexColor( targettype.r, targettype.g, targettype.b );
                if (index < 10 or index == 21) then
                        if (button:IsVisible()) then
                                button:GetParent():SetBackdropColor( targettype.r, targettype.g, targettype.b, TB_NoNegative(targettype.a-0.2) );                               
                        else
                                button:GetParent():SetBackdropColor( 0.2, 0.2, 0.2, 1 );                                                                
                        end
                elseif (index > 10 and index < 20 or index == 22) then
                        if (button:IsVisible()) then
                                button:GetParent():SetBackdropBorderColor( targettype.r, targettype.g, targettype.b, TB_NoNegative(targettype.a-0.2) );
                        else
                                button:GetParent():SetBackdropBorderColor( 0.8, 0.8, 0.9, 1 );
                        end
                end

        end
end

function TipBuddy_OptionsFrame_UpdateColorButtons_Text()
        for index, value in TipBuddy_ColorPicker_Buttons_Text do
                local button = getglobal( value.frame );
                local swatch = getglobal( value.frame.."NormalTexture");
                local string = getglobal( value.frame.."Text");
--              local type = getglobal( value.type );
                ----TB_AddMessage("Color: ["..value.type.."]["..value.var.."]");
                
                if (not button) then
                        return;
                end
                        
                local targettype = TipBuddy_SavedVars[value.type][value.var];

                string:SetText(TEXT(value.text));
                button.tooltipText = value.tooltipText;
                button.tooltipRequirement = value.tooltipRequirement;
                swatch:SetVertexColor( targettype.r, targettype.g, targettype.b );
                string:SetTextColor(targettype.r, targettype.g, targettype.b);
        end
end


function TipBuddy_Background_SetColor()
        local targettype = TipBuddy_SavedVars[cInfo.type][cInfo.var];

        local r,g,b = TBColorPickerFrame:GetColorRGB();
--      TipBuddy_Main_Frame:SetBackdropColor(r, g, b);

        if (not targettype) then
                TipBuddy_SavedVars[cInfo.type][cInfo.var] = {};
                targettype = TipBuddy_SavedVars[cInfo.type][cInfo.var];
        end
        targettype.r = r;
        targettype.g = g;
        targettype.b = b;               
end

function TipBuddy_Background_SetColor_Text()
        local targettype = TipBuddy_SavedVars[cInfo.type][cInfo.var];

        local r,g,b = TBColorPickerFrame_Text:GetColorRGB();
--      TipBuddy_Main_Frame:SetBackdropColor(r, g, b);

        targettype.r = r;
        targettype.g = g;
        targettype.b = b;               
end

function TipBuddy_Background_SetOpacity()
        local targettype = TipBuddy_SavedVars[cInfo.type][cInfo.var];

        local alpha = 1.0 - TBOpacitySliderFrame:GetValue();
        if (not targettype) then
                targettype = {};
        end
        targettype.a = (1- TBOpacitySliderFrame:GetValue());
end

function TipBuddy_Background_Cancel(previousValues)
        local targettype = TipBuddy_SavedVars[cInfo.type][cInfo.var];

        if (not targettype) then
                targettype = {};
        end
        if (previousValues.r and previousValues.g and previousValues.b) then
                targettype.r = previousValues.r;
                targettype.g = previousValues.g;
                targettype.b = previousValues.b;
        end
        if (previousValues.opacity) then
                local alpha = 1.0 - previousValues.opacity;
                targettype.a = previousValues.opacity;
        end
end


TipBuddy_CursorPos = {
        [1] = "Top",
        [2] = "Right",
        [3] = "Left",
        [4] = "Bottom", 
};

function TipBuddy_CursorPosDropDown_OnLoad()
        UIDropDownMenu_Initialize(this, TipBuddy_CursorPosDropDown_Initialize);
        UIDropDownMenu_SetSelectedValue(this, TipBuddy_SavedVars["general"].cursorpos);
        UIDropDownMenu_SetWidth(120, TipBuddy_CursorPosDropDown);
end

function TipBuddy_CursorPosDropDown_OnClick()
        UIDropDownMenu_SetSelectedValue(TipBuddy_CursorPosDropDown, this.value);
        TipBuddy.xpoint, TipBuddy.xpos, TipBuddy.ypos = TipBuddy_GetFrameCursorOffset();
        TipBuddy.anchor, TipBuddy.fanchor, TipBuddy.offset = TipBuddy_GetFrameAnchorPos();
        if (TipBuddy_SavedVars["general"].anchored == 1) then
                TipBuddy_Parent_Frame:SetPoint(TipBuddy.anchor, "TipBuddy_Header_Frame", TipBuddy.fanchor, 0, 0);
        end
        TipBuddy_SetFrame_Anchor( TipBuddy_Main_Frame );
        GameTooltip_SetDefaultAnchor(GameTooltip, UIParent);
end

function TipBuddy_CursorPosDropDown_Initialize()
        local selectedValue = UIDropDownMenu_GetSelectedValue(TipBuddy_CursorPosDropDown);
        local info;

        info = {};
        info.text = TipBuddy_CursorPos[1];
        info.func = TipBuddy_CursorPosDropDown_OnClick;
        info.value = "Top";
        if ( info.value == selectedValue ) then
                info.checked = 1;
        end
        info.tooltipTitle = "Postion the tooltip ABOVE your cursor";
        UIDropDownMenu_AddButton(info);

        info = {};
        info.text = TipBuddy_CursorPos[2];
        info.func = TipBuddy_CursorPosDropDown_OnClick;
        info.value = "Right";
        if ( info.value == selectedValue ) then
                info.checked = 1;
        end
        info.tooltipTitle = "Position the tooltip to the RIGHT of your cursor";
        UIDropDownMenu_AddButton(info);

        info = {};
        info.text = TipBuddy_CursorPos[3];
        info.func = TipBuddy_CursorPosDropDown_OnClick;
        info.value = "Left";
        if ( info.value == selectedValue ) then
                info.checked = 1;
        end
        info.tooltipTitle = "Position the tooltip to the LEFT of your cursor";
        UIDropDownMenu_AddButton(info);

        info = {};
        info.text = TipBuddy_CursorPos[4];
        info.func = TipBuddy_CursorPosDropDown_OnClick;
        info.value = "Bottom";
        if ( info.value == selectedValue ) then
                info.checked = 1;
        end
        info.tooltipTitle = "Position the tooltip BELOW your cursor";
        UIDropDownMenu_AddButton(info);
end

--non-unit tips
TipBuddy_NonUnitTipPos = {
        [1] = "Cursor",
        [2] = "TipBuddyAnchor",
        [3] = "Smart Anchor", 
};

function TipBuddy_NonUnitTipPosDropDown_OnLoad()
        UIDropDownMenu_Initialize(this, TipBuddy_NonUnitTipPosDropDown_Initialize);
        UIDropDownMenu_SetSelectedValue(this, TipBuddy_SavedVars["general"].nonunit_anchor);
        UIDropDownMenu_SetWidth(120, TipBuddy_NonUnitTipPosDropDown);
end

function TipBuddy_NonUnitTipPosDropDown_OnClick()
        UIDropDownMenu_SetSelectedValue(TipBuddy_NonUnitTipPosDropDown, this.value);
        TipBuddy.xpoint, TipBuddy.xpos, TipBuddy.ypos = TipBuddy_GetFrameCursorOffset();
        TipBuddy.anchor, TipBuddy.fanchor, TipBuddy.offset = TipBuddy_GetFrameAnchorPos();
        GameTooltip_SetDefaultAnchor(GameTooltip, UIParent);
        --if (UIDropDownMenu_GetSelectedValue(TipBuddy_NonUnitTipPosDropDown)) then
                TipBuddy_SavedVars["general"].nonunit_anchor = this.value;      
        --end
        --/script DEFAULT_CHAT_FRAME:AddMessage(UIDropDownMenu_GetSelectedValue(TipBuddy_NonUnitTipPosDropDown));
        --/script DEFAULT_CHAT_FRAME:AddMessage(TipBuddy_SavedVars["general"].nonunit_anchor);
end

function TipBuddy_NonUnitTipPosDropDown_Initialize()
        local selectedValue = UIDropDownMenu_GetSelectedValue(TipBuddy_NonUnitTipPosDropDown);
        local info;

        info = {};
        info.text = TipBuddy_NonUnitTipPos[1];
        info.func = TipBuddy_NonUnitTipPosDropDown_OnClick;
        info.value = 0;
        if ( info.value == selectedValue ) then
                info.checked = 1;
        end
        info.tooltipTitle = "Non-Unit tooltips will\nfollow the cursor";
        UIDropDownMenu_AddButton(info);

        info = {};
        info.text = TipBuddy_NonUnitTipPos[2];
        info.func = TipBuddy_NonUnitTipPosDropDown_OnClick;
        info.value = 1;
        if ( info.value == selectedValue ) then
                info.checked = 1;
        end
        info.tooltipTitle = "Non-Unit tooltips will\nattach themselves to\nthe TipBuddyAnchor";
        UIDropDownMenu_AddButton(info);

        info = {};
        info.text = TipBuddy_NonUnitTipPos[3];
        info.func = TipBuddy_NonUnitTipPosDropDown_OnClick;
        info.value = 2;
        if ( info.value == selectedValue ) then
                info.checked = 1;
        end
        info.tooltipTitle = "Non-Unit tooltips will attempt to\nattach themselves to the button\nor object you have your mouse\nover in a smart position";
        UIDropDownMenu_AddButton(info);

end

--Tooltip Style (Compact, Default, Advanced)
TipBuddy_TipStyle = {
        [1] = "Default Mode",
        [2] = "Compact Mode",
        [3] = "Advanced Mode", 
};

function TipBuddy_TipStyleDropDown_OnLoad( type )
        this.type = type;
        if (not TipBuddy_SavedVars[this.type].off) then
                TipBuddy_SavedVars[this.type].off = 0;  
        end
        --TB_AddMessage( this.type.." : "..TipBuddy_SavedVars[this.type].off );
        ----TB_AddMessage( this.type );
        UIDropDownMenu_Initialize(this, TipBuddy_TipStyleDropDown_Initialize, nil, this.type );
        UIDropDownMenu_SetSelectedValue(this, TipBuddy_SavedVars[this.type].off);
        UIDropDownMenu_SetWidth(120, TipBuddy_TipStyleDropDown);
        TipBuddy_TipStyleDropDown_SetFrameVisibility(this, TipBuddy_SavedVars[this.type].off);
        --/script DEFAULT_CHAT_FRAME:AddMessage(UIDropDownMenu_GetSelectedValue(TB_NPCNeutral_TipStyleDropDown));
end

function TipBuddy_TipStyleDropDown_OnClick()
        --TB_AddMessage( this.owner:GetName() );
        UIDropDownMenu_SetSelectedValue(this.owner, this.value);
        TipBuddy_SavedVars[this.owner.type].off = UIDropDownMenu_GetSelectedValue(this.owner);
        TipBuddy_TipStyleDropDown_SetFrameVisibility(this.owner, this.value)
end

function TB_TipStyle_OptionsToggleFrames( value, type, colornum )
        if (value == 0) then
                        getglobal("TipBuddy_OptionsFrame_"..type.."_Options_Checks"):Show();
                        getglobal("TipBuddy_OptionsFrame_"..type.."_Options_EB"):Hide();
                        getglobal("TB_"..type.."_BDBColorDropDown"):Show();
                        TipBuddy_BDBColorDropDown_SetFrameVisibility(getglobal("TB_"..type.."_BDBColorDropDown"), UIDropDownMenu_GetSelectedValue(getglobal("TB_"..type.."_BDBColorDropDown")));                
        elseif (value == 1) then
                        getglobal("TipBuddy_OptionsFrame_"..type.."_Options_Checks"):Show();
                        getglobal("TipBuddy_OptionsFrame_"..type.."_Options_EB"):Hide();
                        getglobal("TB_"..type.."_BDBColorDropDown"):Hide();
                        getglobal("TipBuddy_OptionsFrame_ColorPicker"..colornum):Hide();
                        getglobal("TipBuddy_OptionsFrame_"..type.."_Options"):SetBackdropBorderColor(0, 0, 0, 1);
        else
                        getglobal("TipBuddy_OptionsFrame_"..type.."_Options_Checks"):Hide();
                        getglobal("TipBuddy_OptionsFrame_"..type.."_Options_EB"):Show();
                        getglobal("TB_"..type.."_BDBColorDropDown"):Show();
                        TipBuddy_BDBColorDropDown_SetFrameVisibility(getglobal("TB_"..type.."_BDBColorDropDown"), UIDropDownMenu_GetSelectedValue(getglobal("TB_"..type.."_BDBColorDropDown")));
        end
end


function TipBuddy_TipStyleDropDown_SetFrameVisibility(frame, value)
        if (frame.type == "pc_friend") then
                TB_TipStyle_OptionsToggleFrames( value, "PCFriend", 11 );
        elseif (frame.type == "pc_party") then
                TB_TipStyle_OptionsToggleFrames( value, "PCParty", 12 );
        elseif (frame.type == "pc_enemy") then
                TB_TipStyle_OptionsToggleFrames( value, "PCEnemy", 13 );
        elseif (frame.type == "npc_friend") then
                TB_TipStyle_OptionsToggleFrames( value, "NPCFriend", 14 );
        elseif (frame.type == "npc_neutral") then
                TB_TipStyle_OptionsToggleFrames( value, "NPCNeutral", 15 );
        elseif (frame.type == "npc_enemy") then
                TB_TipStyle_OptionsToggleFrames( value, "NPCEnemy", 16 );
        elseif (frame.type == "pet_friend") then
                TB_TipStyle_OptionsToggleFrames( value, "PETFriend", 17 );
        elseif (frame.type == "pet_enemy") then
                TB_TipStyle_OptionsToggleFrames( value, "PETEnemy", 18 );
        elseif (frame.type == "corpse") then
                TB_TipStyle_OptionsToggleFrames( value, "CORPSE", 20 );
        else    
        end             
end

function TipBuddy_TipStyleDropDown_Initialize()
        local selectedValue = UIDropDownMenu_GetSelectedValue(this);
        local info;

        info = {};
        info.text = TipBuddy_TipStyle[1];
        info.func = TipBuddy_TipStyleDropDown_OnClick;
        info.value = 0;
        info.owner = this:GetParent();
        if ( info.value == selectedValue ) then
                info.checked = 1;
        end
        info.tooltipTitle = "Default mode is similar\nto Blizzard's default tooltips,\nbut much more customizable";
        UIDropDownMenu_AddButton(info);

        info = {};
        info.text = TipBuddy_TipStyle[2];
        info.func = TipBuddy_TipStyleDropDown_OnClick;
        info.value = 1;
        info.owner = this:GetParent();
        if ( info.value == selectedValue ) then
                info.checked = 1;
        end
        info.tooltipTitle = "Compact Mode has a \ncleaner, smaller style.";
        UIDropDownMenu_AddButton(info);

        info = {};
        info.text = TipBuddy_TipStyle[3];
        info.func = TipBuddy_TipStyleDropDown_OnClick;
        info.value = 2;
        info.owner = this:GetParent();
        if ( info.value == selectedValue ) then
                info.checked = 1;
        end
        info.tooltipTitle = "For Advanced Users only.";
        UIDropDownMenu_AddButton(info);

end

--Tooltip Backdrop Colors
TipBuddy_BDColor = {
        [1] = "Custom",
        [2] = "Difficulty",
        [3] = "Reaction", 
};

function TipBuddy_BDColorDropDown_OnLoad( type )
        this.type = type;
        if (not TipBuddy_SavedVars[type].c_bdp) then
                TipBuddy_SavedVars[type].c_bdp = 0;     
        end
        --TB_AddMessage( this.type.." : "..TipBuddy_SavedVars[this.type].c_bdp );
        ----TB_AddMessage( this.type );
        UIDropDownMenu_Initialize(this, TipBuddy_BDColorDropDown_Initialize, nil, this.type );
        UIDropDownMenu_SetSelectedValue(this, TipBuddy_SavedVars[this.type].c_bdp);
        UIDropDownMenu_SetWidth(110, TipBuddy_BDColorDropDown);
        TipBuddy_BDColorDropDown_SetFrameVisibility(this, TipBuddy_SavedVars[this.type].c_bdp)
end

function TipBuddy_BDColorDropDown_OnClick()
        --TB_AddMessage( this.owner:GetName().." : "..this.owner.type.." : "..this.value );
        UIDropDownMenu_SetSelectedValue(this.owner, this.value);
        TipBuddy_SavedVars[this.owner.type].c_bdp = this.value;
        TipBuddy_BDColorDropDown_SetFrameVisibility(this.owner, this.value)
end

function TipBuddy_BDColorDropDown_SetFrameVisibility(frame, value)
        local button;
        if (value == 0) then
                if (frame.type == "pc_friend") then
                        button = TipBuddy_OptionsFrame_ColorPicker1;
                elseif (frame.type == "pc_party") then
                        button = TipBuddy_OptionsFrame_ColorPicker2;
                elseif (frame.type == "pc_enemy") then
                        button = TipBuddy_OptionsFrame_ColorPicker3;
                elseif (frame.type == "npc_friend") then
                        button = TipBuddy_OptionsFrame_ColorPicker4;
                elseif (frame.type == "npc_neutral") then
                        button = TipBuddy_OptionsFrame_ColorPicker5;
                elseif (frame.type == "npc_enemy") then
                        button = TipBuddy_OptionsFrame_ColorPicker6;
                elseif (frame.type == "pet_friend") then
                        button = TipBuddy_OptionsFrame_ColorPicker7;
                elseif (frame.type == "pet_enemy") then
                        button = TipBuddy_OptionsFrame_ColorPicker8;
                elseif (frame.type == "corpse") then
                        button = TipBuddy_OptionsFrame_ColorPicker10;
                else    
                        return;
                end
                button:Show();
                local targettype = TipBuddy_SavedVars[frame.type]["bgcolor"];
                if (not targettype) then
                        TipBuddy_SavedVars[value.type]["bgcolor"] = { ["r"] = 0.8, ["g"] = 0.8, ["b"] = 0.9, ["a"] = 1, };
                        targettype = TipBuddy_SavedVars[frame.type]["bgcolor"]; 
                end             
                button:GetParent():SetBackdropColor(targettype.r, targettype.g, targettype.b, TB_NoNegative(targettype.a-0.2));
                --button:GetParent():SetBackdropBorderColor(targettype.r, targettype.g, targettype.b, TB_NoNegative(targettype.a-0.2));
        else
                if (frame.type == "pc_friend") then
                        button = TipBuddy_OptionsFrame_ColorPicker1;    
                elseif (frame.type == "pc_party") then
                        button = TipBuddy_OptionsFrame_ColorPicker2;
                elseif (frame.type == "pc_enemy") then
                        button = TipBuddy_OptionsFrame_ColorPicker3;
                elseif (frame.type == "npc_friend") then
                        button = TipBuddy_OptionsFrame_ColorPicker4;
                elseif (frame.type == "npc_neutral") then
                        button = TipBuddy_OptionsFrame_ColorPicker5;
                elseif (frame.type == "npc_enemy") then
                        button = TipBuddy_OptionsFrame_ColorPicker6;
                elseif (frame.type == "pet_friend") then
                        button = TipBuddy_OptionsFrame_ColorPicker7;
                elseif (frame.type == "pet_enemy") then
                        button = TipBuddy_OptionsFrame_ColorPicker8;
                elseif (frame.type == "corpse") then
                        button = TipBuddy_OptionsFrame_ColorPicker10;
                else    
                        return;
                end     
                button:Hide();
                button:GetParent():SetBackdropColor(0.2, 0.2, 0.2, 1);
                --button:GetParent():SetBackdropBorderColor(0.8, 0.8, 0.9, 1);
        end
end

function TipBuddy_BDColorDropDown_Initialize()
        local selectedValue = UIDropDownMenu_GetSelectedValue(this);
        local info;

        info = {};
        info.text = TipBuddy_BDColor[1];
        info.func = TipBuddy_BDColorDropDown_OnClick;
        info.value = 0;
        info.owner = this:GetParent();
        if ( info.value == selectedValue ) then
                info.checked = 1;
        end
        info.tooltipTitle = "Choose your custom color by\nclicking the box to the right.";
        UIDropDownMenu_AddButton(info);

        info = {};
        info.text = TipBuddy_BDColor[2];
        info.func = TipBuddy_BDColorDropDown_OnClick;
        info.value = 1;
        info.owner = this:GetParent();
        if ( info.value == selectedValue ) then
                info.checked = 1;
        end
        info.tooltipTitle = "Color will be determined\nby the unit's difficulty\n(red, yellow, grey, etc).";
        UIDropDownMenu_AddButton(info);

        info = {};
        info.text = TipBuddy_BDColor[3];
        info.func = TipBuddy_BDColorDropDown_OnClick;
        info.value = 2;
        info.owner = this:GetParent();
        if ( info.value == selectedValue ) then
                info.checked = 1;
        end
        info.tooltipTitle = "Color is determined by th\n unit's reaction towards you.";
        UIDropDownMenu_AddButton(info);

end

--Tooltip Backdrop BORDER Colors
TipBuddy_BDBColor = {
        [1] = "Custom",
        [2] = "Difficulty",
        [3] = "Reaction", 
};

function TipBuddy_BDBColorDropDown_OnLoad( type )
        this.type = type;
        if (not TipBuddy_SavedVars[this.type].c_bdb) then
                TipBuddy_SavedVars[this.type].c_bdb = 0;        
        end
        --TB_AddMessage( this.type.." : "..TipBuddy_SavedVars[this.type].c_bdb );
        ----TB_AddMessage( this.type );
        UIDropDownMenu_Initialize(this, TipBuddy_BDBColorDropDown_Initialize, nil, this.type );
        UIDropDownMenu_SetSelectedValue(this, TipBuddy_SavedVars[this.type].c_bdb);
        UIDropDownMenu_SetWidth(110, TipBuddy_BDBColorDropDown);
        TipBuddy_BDBColorDropDown_SetFrameVisibility(this, TipBuddy_SavedVars[this.type].c_bdb)
end

function TipBuddy_BDBColorDropDown_OnClick()
        --TB_AddMessage( this.owner:GetName() );
        UIDropDownMenu_SetSelectedValue(this.owner, this.value);
        TipBuddy_SavedVars[this.owner.type].c_bdb = this.value;
        TipBuddy_BDBColorDropDown_SetFrameVisibility(this.owner, this.value)
end

function TipBuddy_BDBColorDropDown_SetFrameVisibility(frame, value)
        local button;
        if (value == 0) then
                if (frame.type == "pc_friend") then
                        button = TipBuddy_OptionsFrame_ColorPicker11;   
                elseif (frame.type == "pc_party") then
                        button = TipBuddy_OptionsFrame_ColorPicker12;
                elseif (frame.type == "pc_enemy") then
                        button = TipBuddy_OptionsFrame_ColorPicker13;
                elseif (frame.type == "npc_friend") then
                        button = TipBuddy_OptionsFrame_ColorPicker14;
                elseif (frame.type == "npc_neutral") then
                        button = TipBuddy_OptionsFrame_ColorPicker15;
                elseif (frame.type == "npc_enemy") then
                        button = TipBuddy_OptionsFrame_ColorPicker16;
                elseif (frame.type == "pet_friend") then
                        button = TipBuddy_OptionsFrame_ColorPicker17;
                elseif (frame.type == "pet_enemy") then
                        button = TipBuddy_OptionsFrame_ColorPicker18;
                elseif (frame.type == "corpse") then
                        button = TipBuddy_OptionsFrame_ColorPicker20;
                else    
                end             
                button:Show();
                local targettype = TipBuddy_SavedVars[frame.type]["bgbcolor"];
                if (not targettype) then
                        TipBuddy_SavedVars[value.type]["bgbcolor"] = { ["r"] = 0.8, ["g"] = 0.8, ["b"] = 0.9, ["a"] = 1, };
                        targettype = TipBuddy_SavedVars[frame.type]["bgbcolor"];        
                end             
                button:GetParent():SetBackdropBorderColor(targettype.r, targettype.g, targettype.b, TB_NoNegative(targettype.a-0.2));
        else
                if (frame.type == "pc_friend") then
                        button = TipBuddy_OptionsFrame_ColorPicker11;   
                elseif (frame.type == "pc_party") then
                        button = TipBuddy_OptionsFrame_ColorPicker12;
                elseif (frame.type == "pc_enemy") then
                        button = TipBuddy_OptionsFrame_ColorPicker13;
                elseif (frame.type == "npc_friend") then
                        button = TipBuddy_OptionsFrame_ColorPicker14;
                elseif (frame.type == "npc_neutral") then
                        button = TipBuddy_OptionsFrame_ColorPicker15;
                elseif (frame.type == "npc_enemy") then
                        button = TipBuddy_OptionsFrame_ColorPicker16;
                elseif (frame.type == "pet_friend") then
                        button = TipBuddy_OptionsFrame_ColorPicker17;
                elseif (frame.type == "pet_enemy") then
                        button = TipBuddy_OptionsFrame_ColorPicker18;
                elseif (frame.type == "corpse") then
                        button = TipBuddy_OptionsFrame_ColorPicker20;
                else    
                end
                button:Hide();
                button:GetParent():SetBackdropBorderColor(0.8, 0.8, 0.9, 1);
        end
end

function TipBuddy_BDBColorDropDown_Initialize()
        local selectedValue = UIDropDownMenu_GetSelectedValue(this);
        local info;

        info = {};
        info.text = TipBuddy_BDBColor[1];
        info.func = TipBuddy_BDBColorDropDown_OnClick;
        info.value = 0;
        info.owner = this:GetParent();
        if ( info.value == selectedValue ) then
                info.checked = 1;
        end
        info.tooltipTitle = "Choose your custom color by\nclicking the box to the right.";
        UIDropDownMenu_AddButton(info);

        info = {};
        info.text = TipBuddy_BDBColor[2];
        info.func = TipBuddy_BDBColorDropDown_OnClick;
        info.value = 1;
        info.owner = this:GetParent();
        if ( info.value == selectedValue ) then
                info.checked = 1;
        end
        info.tooltipTitle = "Color will be determined\nby the unit's difficulty\n(red, yellow, grey, etc).";
        UIDropDownMenu_AddButton(info);

        info = {};
        info.text = TipBuddy_BDBColor[3];
        info.func = TipBuddy_BDBColorDropDown_OnClick;
        info.value = 2;
        info.owner = this:GetParent();
        if ( info.value == selectedValue ) then
                info.checked = 1;
        end
        info.tooltipTitle = "Color is determined by th\n unit's reaction towards you.";
        UIDropDownMenu_AddButton(info);

end

---------------------------------------------------------------
-- SAVING FRAME POSITION AFTER DRAGGED
---------------------------------------------------------------
-- this function is called when the frame should be dragged around
function TipBuddy_OnMouseDown(arg1)
        if (arg1 == "LeftButton") then
                TipBuddy_Header_Frame:StartMoving();
        end
end

-- this function is called when the frame is stopped being dragged around
function TipBuddy_OnMouseUp(arg1)
        if (arg1 == "LeftButton") then
                TipBuddy_Header_Frame:StopMovingOrSizing();

                ValidateFramePosition(this, -10);
                
                -- save the position 
                TipBuddy_SavedVars["general"].framepos_L = TipBuddy_Header_Frame:GetLeft();
                TipBuddy_SavedVars["general"].framepos_T = TipBuddy_Header_Frame:GetTop();


        end

        -- If Rightclick bring up the options menu
        if ( arg1 == "RightButton" ) then
                ToggleDropDownMenu(1, TipBuddy_SavedVars["general"].anchor_pos, TipBuddy_Header_FrameDropDown, this:GetName(), 0, 0);
                UIDropDownMenu_SetSelectedValue(this, TipBuddy_SavedVars["general"].anchor_pos);
                return;
        end
        -- Close all dropdowns
        CloseDropDownMenus();
end

function TipBuddy_ResetAnchorPos()
        TipBuddy_Header_Frame:Hide();
        TipBuddy_Header_Frame:Show();
        TipBuddy_Header_Frame:SetPoint("TOPLEFT", "UIParent", "BOTTOMLEFT", 202, 400);

        TipBuddy_SavedVars["general"].framepos_L = TipBuddy_Header_Frame:GetLeft();
        TipBuddy_SavedVars["general"].framepos_T = TipBuddy_Header_Frame:GetTop();
end

TipBuddy_AnchorPos = {
        [1] = "Top Right",
        [2] = "Top Left",
        [3] = "Bottom Right",
        [4] = "Bottom Left", 
        [5] = "Top Center", 
        [6] = "Bottom Center", 
};

function TipBuddy_Anchor_OnClick(button)
        -- If Rightclick bring up the options menu
        if ( button == "RightButton" ) then
                ToggleDropDownMenu(0, TipBuddy_SavedVars["general"].anchor_pos, TipBuddy_Header_FrameDropDown, this:GetName(), 0, 0);
                return;
        end
        -- Close all dropdowns
        CloseDropDownMenus();
end


function TipBuddy_AnchorDropDown_OnLoad()
        UIDropDownMenu_Initialize(this, TipBuddy_AnchorDropDown_Initialize, "MENU");
--      TipBuddy_SavedVars["general"]["anchor_pos"] = TipBuddy_AnchorPos[1];
--      UIDropDownMenu_SetSelectedValue(this, nil, TipBuddy_SavedVars["general"]["anchor_pos"]);
        UIDropDownMenu_SetButtonWidth(50);
        UIDropDownMenu_SetWidth(80);
end

--      /script --TB_AddMessage( TipBuddy_SavedVars["general"]["anchor_pos"] );

function TipBuddy_AnchorDropDown_OnClick()
        UIDropDownMenu_SetSelectedValue(TipBuddy_Header_FrameDropDown, this.value);
--      --TB_AddMessage( UIDropDownMenu_GetSelectedValue(TipBuddy_Header_FrameDropDown) );
        TipBuddy_SavedVars["general"].anchor_pos = UIDropDownMenu_GetSelectedValue(TipBuddy_Header_FrameDropDown);
        TipBuddy.xpoint, TipBuddy.xpos, TipBuddy.ypos = TipBuddy_GetFrameCursorOffset();
        TipBuddy.anchor, TipBuddy.fanchor, TipBuddy.offset = TipBuddy_GetFrameAnchorPos();
        TipBuddy_SetFrame_Anchor( TipBuddy_Main_Frame );
        GameTooltip_SetDefaultAnchor(GameTooltip, UIParent);
end

function TipBuddy_AnchorDropDown_Initialize()
        local selectedValue = UIDropDownMenu_GetSelectedValue(TipBuddy_Header_FrameDropDown);
        local info;

        info = {};
        info.text = TipBuddy_AnchorPos[1];
        info.func = TipBuddy_AnchorDropDown_OnClick;
        info.value = TipBuddy_AnchorPos[1];
        if ( info.value == selectedValue ) then
                info.checked = 1;
        end
        info.tooltipTitle = "Anchor tooltip to the TOP RIGHT\nof the TipBuddyAnchor";
        UIDropDownMenu_AddButton(info);

        info = {};
        info.text = TipBuddy_AnchorPos[2];
        info.func = TipBuddy_AnchorDropDown_OnClick;
        info.value = TipBuddy_AnchorPos[2];
        if ( info.value == selectedValue ) then
                info.checked = 1;
        end
        info.tooltipTitle = "Anchor tooltip to the TOP LEFT\nof the TipBuddyAnchor";
        UIDropDownMenu_AddButton(info);

        info = {};
        info.text = TipBuddy_AnchorPos[3];
        info.func = TipBuddy_AnchorDropDown_OnClick;
        info.value = TipBuddy_AnchorPos[3];
        if ( info.value == selectedValue ) then
                info.checked = 1;
        end
        info.tooltipTitle = "Anchor tooltip to the BOTTOM RIGHT\nof the TipBuddyAnchor";
        UIDropDownMenu_AddButton(info);

        info = {};
        info.text = TipBuddy_AnchorPos[4];
        info.func = TipBuddy_AnchorDropDown_OnClick;
        info.value = TipBuddy_AnchorPos[4];
        if ( info.value == selectedValue ) then
                info.checked = 1;
        end
        info.tooltipTitle = "Anchor tooltip to the BOTTOM LEFT\nof the TipBuddyAnchor";
        UIDropDownMenu_AddButton(info);

        info = {};
        info.text = TipBuddy_AnchorPos[5];
        info.func = TipBuddy_AnchorDropDown_OnClick;
        info.value = TipBuddy_AnchorPos[5];
        if ( info.value == selectedValue ) then
                info.checked = 1;
        end
        info.tooltipTitle = "Anchor tooltip to the BOTTOM CENTER\nof the TipBuddyAnchor";
        UIDropDownMenu_AddButton(info);

        info = {};
        info.text = TipBuddy_AnchorPos[6];
        info.func = TipBuddy_AnchorDropDown_OnClick;
        info.value = TipBuddy_AnchorPos[6];
        if ( info.value == selectedValue ) then
                info.checked = 1;
        end
        info.tooltipTitle = "Anchor tooltip to the TOP CENTER\nof the TipBuddyAnchor";
        UIDropDownMenu_AddButton(info);
end

function TipBuddy_SetAnchorFrameVis()
        if (TipBuddy_SavedVars["general"].anchored == 1) then
                if (not TipBuddy_SavedVars["general"].anchor_vis_first or TipBuddy_SavedVars["general"].anchor_vis == 1) then
                        TipBuddy_SavedVars["general"].anchor_vis_first = 1;
                        TipBuddy_Header_Frame:Show();   
                else
                        TipBuddy_Header_Frame:Show();
                        TipBuddy_Header_Frame:Hide();
                end     
        else
                if (TipBuddy_Header_Frame:IsVisible()) then
                        TipBuddy_Header_Frame:Show();
                else
                        TipBuddy_Header_Frame:Show();
                        TipBuddy_Header_Frame:Hide();                   
                end
        end
end

---------------------------------------------------------------
-- SAVING DATA AFTER 'OK'
---------------------------------------------------------------
function TipBuddy_OptionsFrame_OnSave()
        -- Checkboxes
        for index, value in TB_Op_Checks do
                local button = getglobal( value.frame );
                local but = value.frame; --debug
                local tipTable = TipBuddy_SavedVars[value.type];
                --tipTable.vartype = getglobal( value.var );            

                if ( button:GetChecked() ) then
                        ----TB_AddMessage( "button: "..but.." is checked.");    
                        tipTable[value.var] = 1;
                        ----TB_AddMessage( "Setting button: "..but.." checked ("..tipTable[value.var]..").");
                else
                        tipTable[value.var] = 0;
                end
        end

        -- Sliders
        for index, value in TipBuddy_OptionsFrame_Sliders do
                local tipTable = TipBuddy_SavedVars["general"];

                local slider = getglobal("TipBuddy_OptionsFrame_Slider"..index);
                --if (index == 6) then
                --      tipTable[value.var] = (UIParent:GetScale() * slider:GetValue());
                --else
                        tipTable[value.var] = slider:GetValue();
                --end
        end

        -- EditBoxes
        for index, value in TB_EditBoxes do
                local editbox = getglobal( value.frame );
                local tipTable = TipBuddy_SavedVars[value.type];
                --tipTable.vartype = getglobal( value.var );            

                tipTable[value.var] = editbox:GetText();
        end

        TipBuddy_SetAnchorFrameVis();

        if (UIDropDownMenu_GetSelectedValue(TipBuddy_CursorPosDropDown)) then
                TipBuddy_SavedVars["general"].cursorpos = UIDropDownMenu_GetSelectedValue(TipBuddy_CursorPosDropDown);  
        else
                --TB_AddMessage("|cff3366ffTipBuddy_CursorPosDropDown is nil");
        end
        if (UIDropDownMenu_GetSelectedValue(TipBuddy_NonUnitTipPosDropDown)) then
                TipBuddy_SavedVars["general"].nonunit_anchor = UIDropDownMenu_GetSelectedValue(TipBuddy_NonUnitTipPosDropDown); 
        else
                --TB_AddMessage("|cff3366ffTipBuddy_NonUnitTipPosDropDown is nil");
        end
        if (UIDropDownMenu_GetSelectedValue(TB_PCFriend_TipStyleDropDown)) then
                TipBuddy_SavedVars["pc_friend"].off = UIDropDownMenu_GetSelectedValue(TB_PCFriend_TipStyleDropDown);                    
        end
        if (UIDropDownMenu_GetSelectedValue(TB_PCParty_TipStyleDropDown)) then
                TipBuddy_SavedVars["pc_party"].off = UIDropDownMenu_GetSelectedValue(TB_PCParty_TipStyleDropDown);                      
        end
        if (UIDropDownMenu_GetSelectedValue(TB_PCEnemy_TipStyleDropDown)) then
                TipBuddy_SavedVars["pc_enemy"].off = UIDropDownMenu_GetSelectedValue(TB_PCEnemy_TipStyleDropDown);                      
        end
        if (UIDropDownMenu_GetSelectedValue(TB_NPCFriend_TipStyleDropDown)) then
                TipBuddy_SavedVars["npc_friend"].off = UIDropDownMenu_GetSelectedValue(TB_NPCFriend_TipStyleDropDown);                  
        end
        if (UIDropDownMenu_GetSelectedValue(TB_NPCNeutral_TipStyleDropDown)) then
                TipBuddy_SavedVars["npc_neutral"].off = UIDropDownMenu_GetSelectedValue(TB_NPCNeutral_TipStyleDropDown);                        
        end
        if (UIDropDownMenu_GetSelectedValue(TB_NPCEnemy_TipStyleDropDown)) then
                TipBuddy_SavedVars["npc_enemy"].off = UIDropDownMenu_GetSelectedValue(TB_NPCEnemy_TipStyleDropDown);                    
        end
        if (UIDropDownMenu_GetSelectedValue(TB_PETFriend_TipStyleDropDown)) then
                TipBuddy_SavedVars["pet_friend"].off = UIDropDownMenu_GetSelectedValue(TB_PETFriend_TipStyleDropDown);                  
        end
        if (UIDropDownMenu_GetSelectedValue(TB_PETEnemy_TipStyleDropDown)) then
                TipBuddy_SavedVars["pet_enemy"].off = UIDropDownMenu_GetSelectedValue(TB_PETEnemy_TipStyleDropDown);                    
        end
        if (UIDropDownMenu_GetSelectedValue(TB_CORPSE_TipStyleDropDown)) then
                TipBuddy_SavedVars["corpse"].off = UIDropDownMenu_GetSelectedValue(TB_CORPSE_TipStyleDropDown);                 
        end

        TipBuddy_Variable_Initialize();
        TipBuddy.xpoint, TipBuddy.xpos, TipBuddy.ypos = TipBuddy_GetFrameCursorOffset();
        TipBuddy.anchor, TipBuddy.fanchor, TipBuddy.offset = TipBuddy_GetFrameAnchorPos();
        TipBuddy.uiScale = TipBuddy_GetUIScale();

        local x, y = TipBuddy_PositionFrameToCursor();
        x = (x / TipBuddy.uiScale);
        y = (y / TipBuddy.uiScale);

        if (TipBuddy_SavedVars["general"].anchored == 1) then
                TipBuddy_Parent_Frame:SetPoint(TipBuddy.anchor, "TipBuddy_Header_Frame", TipBuddy.fanchor, 0, 0);
        else
                TipBuddy_Parent_Frame:SetPoint(TipBuddy.xpoint, "UIParent", "BOTTOMLEFT", x, y);
        end
        --/script TipBuddy_BuffFrameB1:SetPoint("BOTTOMLEFT", "TipBuddy_Main_Frame", "TOPLEFT", 0, 0); TipBuddy_BuffFrameB1:Show();
        --TipBuddy_BuffFrame

        TipBuddy_SetFrame_Anchor( TipBuddy_Main_Frame );
        GameTooltip_SetDefaultAnchor(GameTooltip, UIParent);
end

-------------------------
---- SAVE FRAME POSITION
-------------------------
-- this function is called when the frame should be dragged around
function TB_Options_OnMouseDown(arg1)
        if (arg1 == "LeftButton") then
                TipBuddy_OptionsFrame:StartMoving();
        end
end

-- this function is called when the frame is stopped being dragged around
function TB_Options_OnMouseUp(arg1)

        if (arg1 == "LeftButton") then
                TipBuddy_OptionsFrame:StopMovingOrSizing();

                ValidateFramePosition(TipBuddy_OptionsFrame, 256);
                
                -- save the position 
                TipBuddy_SavedVars["general"].opPos_L = TipBuddy_OptionsFrame:GetLeft();
                TipBuddy_SavedVars["general"].opPos_T = TipBuddy_OptionsFrame:GetTop();
                --/script TipBuddy_OptionsFrame:SetPoint("CENTER", "UIParent", "CENTER", 0, 0);
        end
end


function TipBuddy_ClickResetVarsButton() 
        StaticPopupDialogs["TIPBUDDY_RESETVARS"] = {
                text = TEXT(TB_RESETVARS_DIALOG),
                button1 = TEXT(ACCEPT),
                button2 = TEXT(DECLINE),
                OnAccept = function()
                        TipBuddy_ResetAllVariables();
                end,
                OnCancel = function()
                        this:Hide();
                end,
                timeout = 60,
                whileDead = 1
        };
        StaticPopup_Show("TIPBUDDY_RESETVARS");
end

function TipBuddy_ResetAllVariables()
        TipBuddy_SavedVars.version = 0;
        TipBuddy_SavedVars = { };
        TipBuddy_Variable_Initialize();
        TipBuddy_OptionsFrame_UpdateCheckboxes();
        TipBuddy_OptionsFrame_UpdateSliders();
        --TipBuddy_OptionsFrame_UpdateGreyed();
        TipBuddy_OptionsFrame_UpdateColorButtons();
        TipBuddy_OptionsFrame_UpdateColorButtons_Text();

        TipBuddy_Background_ColorPick_OnLoad();
end

Generated by GNU Enscript 1.6.5.90.