vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
WIM_Options_CurrentSwatch = nil;
WIM_Options_AlreadyShown = false;

WIM_Alias_Selected = "";
WIM_Filter_Selected = "";
WIM_History_Selected = "";

function WIM_Options_OnShow()
        local tRGB;
        
        WIM_OptionsEnableWIM:SetChecked(WIM_Data.enableWIM);
        
        --[ Initialize Minimap Icon Frame 
                WIM_OptionsMiniMapIconPosition:SetValue(WIM_Data.iconPosition);
                WIM_OptionsMiniMapIconPositionTitle:SetText("Icon Position");
                WIM_OptionsMiniMapEnabled:SetChecked(WIM_Data.showMiniMap);
                WIM_OptionsMiniMapFreeMoving:SetChecked(WIM_Data.miniFreeMoving.enabled);
        
        --[ Initialize Display Settings Frame 
                --[Swatches
                WIM_Options_CurrentSwatch = "WIM_OptionsDisplayIncomingWisp";
                tRGB = WIM_Data.displayColors.wispIn;
                WIM_Options_UpdateSwatchColor(tRGB.r, tRGB.g, tRGB.b);
                WIM_Options_CurrentSwatch = "WIM_OptionsDisplayOutgoingWisp";
                tRGB = WIM_Data.displayColors.wispOut;
                WIM_Options_UpdateSwatchColor(tRGB.r, tRGB.g, tRGB.b);
                WIM_Options_CurrentSwatch = "WIM_OptionsDisplaySystemMessage";
                tRGB = WIM_Data.displayColors.sysMsg;
                WIM_Options_UpdateSwatchColor(tRGB.r, tRGB.g, tRGB.b);
                WIM_Options_CurrentSwatch = "WIM_OptionsDisplayErrorMessage";
                tRGB = WIM_Data.displayColors.errorMsg;
                WIM_Options_UpdateSwatchColor(tRGB.r, tRGB.g, tRGB.b);
                WIM_Options_CurrentSwatch = "WIM_OptionsDisplayWebAddress";
                tRGB = WIM_Data.displayColors.webAddress;
                WIM_Options_UpdateSwatchColor(tRGB.r, tRGB.g, tRGB.b);
                WIM_OptionsDisplayShowTimeStamps:SetChecked(WIM_Data.showTimeStamps);
                WIM_OptionsDisplayShowShortcutBar:SetChecked(WIM_Data.showShortcutBar);
                --[Character Info
                WIM_OptionsDisplayShowCharacterInfo:SetChecked(WIM_Data.characterInfo.show);
                WIM_OptionsDisplayShowCharacterInfoClassIcon:SetChecked(WIM_Data.characterInfo.classIcon);
                WIM_OptionsDisplayShowCharacterInfoClassColor:SetChecked(WIM_Data.characterInfo.classColor);
                WIM_OptionsDisplayShowCharacterInfoDetails:SetChecked(WIM_Data.characterInfo.details);
                
                --[Sliders
                WIM_OptionsDisplayFontSize:SetValue(WIM_Data.fontSize);
                WIM_OptionsDisplayFontSizeTitle:SetText("Font Size");
                WIM_OptionsDisplayWindowSize:SetValue(WIM_Data.windowSize * 100);
                WIM_OptionsDisplayWindowSizeTitle:SetText("Window Size (Percent)");
                WIM_OptionsDisplayWindowAlpha:SetValue(WIM_Data.windowAlpha * 100);
                WIM_OptionsDisplayWindowAlphaTitle:SetText("Transparency (Percent)");
        --[ Initialize General Settings
                WIM_OptionsTabbedFrameGeneralKeepFocus:SetChecked(WIM_Data.keepFocus);
                WIM_OptionsTabbedFrameGeneralAutoFocus:SetChecked(WIM_Data.autoFocus);
                WIM_OptionsTabbedFrameGeneralShowToolTips:SetChecked(WIM_Data.showToolTips);
                WIM_OptionsTabbedFrameGeneralSupress:SetChecked(WIM_Data.supressWisps);
                WIM_OptionsTabbedFrameGeneralPopNew:SetChecked(WIM_Data.popNew);
                WIM_OptionsTabbedFrameGeneralPopUpdate:SetChecked(WIM_Data.popUpdate);
                WIM_Options_PopNewClicked();
                WIM_OptionsTabbedFrameGeneralPlaySoundWisp:SetChecked(WIM_Data.playSoundWisp);
                WIM_OptionsTabbedFrameGeneralSortOrderAlpha:SetChecked(WIM_Data.sortAlpha);
                WIM_OptionsTabbedFrameGeneralPopCombat:SetChecked(WIM_Data.popCombat);
                WIM_OptionsTabbedFrameGeneralPopOnSend:SetChecked(WIM_Data.popOnSend);
                
        --[ Window Settings
                WIM_OptionsTabbedFrameWindowWindowWidthTitle:SetText("Window Width");
                WIM_OptionsTabbedFrameWindowWindowWidth:SetValue(WIM_Data.winSize.width);
                WIM_OptionsTabbedFrameWindowWindowHeightTitle:SetText("Window Height");
                WIM_OptionsTabbedFrameWindowWindowHeight:SetValue(WIM_Data.winSize.height);
                WIM_OptionsTabbedFrameWindowWindowCascade:SetChecked(WIM_Data.winCascade.enabled);
                
        --[ Filter Settings
                WIM_OptionsTabbedFrameFilterAliasEnabled:SetChecked(WIM_Data.enableAlias);
                WIM_OptionsTabbedFrameFilterFilteringEnabled:SetChecked(WIM_Data.enableFilter);
                WIM_OptionsTabbedFrameFilterAliasShowAsComment:SetChecked(WIM_Data.aliasAsComment);
                
        --[ History
                WIM_OptionsTabbedFrameHistoryEnabled:SetChecked(WIM_Data.enableHistory);
                WIM_OptionsTabbedFrameHistoryRecordEveryone:SetChecked(WIM_Data.historySettings.recordEveryone);
                WIM_OptionsTabbedFrameHistoryRecordFriends:SetChecked(WIM_Data.historySettings.recordFriends);
                WIM_OptionsTabbedFrameHistoryRecordGuild:SetChecked(WIM_Data.historySettings.recordGuild);
                WIM_Options_HistoryRecordEveryoneClicked();
                WIM_Options_CurrentSwatch = "WIM_OptionsTabbedFrameHistoryColorIn";
                tRGB = WIM_Data.historySettings.colorIn;
                WIM_Options_UpdateSwatchColor(tRGB.r, tRGB.g, tRGB.b);
                WIM_Options_CurrentSwatch = "WIM_OptionsTabbedFrameHistoryColorOut";
                tRGB = WIM_Data.historySettings.colorOut;
                WIM_Options_UpdateSwatchColor(tRGB.r, tRGB.g, tRGB.b);
                WIM_OptionsTabbedFrameHistoryShowInMessage:SetChecked(WIM_Data.historySettings.popWin.enabled);
                WIM_OptionsTabbedFrameHistorySetMaxToStore:SetChecked(WIM_Data.historySettings.maxMsg.enabled);
                WIM_OptionsTabbedFrameHistorySetAutoDelete:SetChecked(WIM_Data.historySettings.autoDelete.enabled);
        --[ Other
                
                WIM_Options_ShowShortcutBarClicked();
                WIM_HistoryScrollBar_Update();
                
        if(not WIM_Options_AlreadyShown) then
                WIM_Options_General_Click();
                WIM_Options_AlreadyShown = true;
        end
end


function WIM_Options_ShowMiniMapClick()
        if(WIM_OptionsMiniMapEnabled:GetChecked()) then
                WIM_Data.showMiniMap = true;
                if(WIM_Data.miniFreeMoving.enabled) then
                        WIM_IconFrame:SetPoint("TOPLEFT", "UIParent", "BOTTOMLEFT",WIM_Data.miniFreeMoving.left,WIM_Data.miniFreeMoving.top);
                        WIM_IconFrame:Show();
                        return;
                end
        else
                WIM_Data.showMiniMap = false;
        end
        WIM_Icon_UpdatePosition();
end

function WIM_Options_OpenColorPicker(button)
        CloseMenus();
        WIM_Options_CurrentSwatch = button:GetName();
        ColorPickerFrame.hasOpacity = false;
        ColorPickerFrame.func = WIM_Options_ColorPickerChanged;
        ColorPickerFrame:SetColorRGB(button.r, button.g, button.b);
        ColorPickerFrame.previousValues = {button.r, button.g, button.b};
        ColorPickerFrame.cancelFunc = WIM_Options_ColorPickerCanceled;
        ColorPickerFrame:SetFrameStrata("DIALOG");
        ColorPickerFrame:Show();
end

function WIM_Options_ColorPickerChanged()
        local r,g,b = ColorPickerFrame:GetColorRGB();
        WIM_Options_UpdateSwatchColor(r,g,b);
end

function WIM_Options_ColorPickerCanceled(prevvals)
        local r,g,b = unpack(prevvals)
        WIM_Options_UpdateSwatchColor(r,g,b);
end


function WIM_Options_UpdateSwatchColor(r,g,b)
        if(WIM_Options_CurrentSwatch == "WIM_OptionsDisplayIncomingWisp") then
                WIM_Data.displayColors.wispIn.r = r;
                WIM_Data.displayColors.wispIn.g = g;
                WIM_Data.displayColors.wispIn.b = b;
        elseif(WIM_Options_CurrentSwatch == "WIM_OptionsDisplayOutgoingWisp") then
                WIM_Data.displayColors.wispOut.r = r;
                WIM_Data.displayColors.wispOut.g = g;
                WIM_Data.displayColors.wispOut.b = b;
        elseif(WIM_Options_CurrentSwatch == "WIM_OptionsDisplaySystemMessage") then
                WIM_Data.displayColors.sysMsg.r = r;
                WIM_Data.displayColors.sysMsg.g = g;
                WIM_Data.displayColors.sysMsg.b = b;
        elseif(WIM_Options_CurrentSwatch == "WIM_OptionsDisplayErrorMessage") then
                WIM_Data.displayColors.errorMsg.r = r;
                WIM_Data.displayColors.errorMsg.g = g;
                WIM_Data.displayColors.errorMsg.b = b;
        elseif(WIM_Options_CurrentSwatch == "WIM_OptionsDisplayWebAddress") then
                WIM_Data.displayColors.webAddress.r = r;
                WIM_Data.displayColors.webAddress.g = g;
                WIM_Data.displayColors.webAddress.b = b;
        elseif(WIM_Options_CurrentSwatch == "WIM_OptionsTabbedFrameHistoryColorIn") then
                WIM_Data.historySettings.colorIn.r = r;
                WIM_Data.historySettings.colorIn.g = g;
                WIM_Data.historySettings.colorIn.b = b;
        elseif(WIM_Options_CurrentSwatch == "WIM_OptionsTabbedFrameHistoryColorOut") then
                WIM_Data.historySettings.colorOut.r = r;
                WIM_Data.historySettings.colorOut.g = g;
                WIM_Data.historySettings.colorOut.b = b;
        end

        getglobal(WIM_Options_CurrentSwatch).r = r;
        getglobal(WIM_Options_CurrentSwatch).g = g;
        getglobal(WIM_Options_CurrentSwatch).b = b;
        getglobal(WIM_Options_CurrentSwatch.."_ColorSwatchNormalTexture"):SetVertexColor(r,g,b);
end

function WIM_Options_General_Click()
        PanelTemplates_SelectTab(WIM_OptionsOptionTab1);
        PanelTemplates_DeselectTab(WIM_OptionsOptionTab2);
        PanelTemplates_DeselectTab(WIM_OptionsOptionTab3);
        PanelTemplates_DeselectTab(WIM_OptionsOptionTab4);
        WIM_OptionsTabbedFrameGeneral:Show();
        WIM_OptionsTabbedFrameWindow:Hide();
        WIM_OptionsTabbedFrameFilter:Hide();
        WIM_OptionsTabbedFrameHistory:Hide();
end

function WIM_Options_Windows_Click()
        PanelTemplates_SelectTab(WIM_OptionsOptionTab2);
        PanelTemplates_DeselectTab(WIM_OptionsOptionTab1);
        PanelTemplates_DeselectTab(WIM_OptionsOptionTab3);
        PanelTemplates_DeselectTab(WIM_OptionsOptionTab4);
        WIM_OptionsTabbedFrameGeneral:Hide();
        WIM_OptionsTabbedFrameFilter:Hide();
        WIM_OptionsTabbedFrameHistory:Hide();
        WIM_OptionsTabbedFrameWindow:Show();
end

function WIM_Options_Filter_Click()
        PanelTemplates_SelectTab(WIM_OptionsOptionTab3);
        PanelTemplates_DeselectTab(WIM_OptionsOptionTab1);
        PanelTemplates_DeselectTab(WIM_OptionsOptionTab2);
        PanelTemplates_DeselectTab(WIM_OptionsOptionTab4);
        WIM_OptionsTabbedFrameGeneral:Hide();
        WIM_OptionsTabbedFrameWindow:Hide();
        WIM_OptionsTabbedFrameHistory:Hide();
        WIM_OptionsTabbedFrameFilter:Show();
end

function WIM_Options_History_Click()
        PanelTemplates_SelectTab(WIM_OptionsOptionTab4);
        PanelTemplates_DeselectTab(WIM_OptionsOptionTab1);
        PanelTemplates_DeselectTab(WIM_OptionsOptionTab2);
        PanelTemplates_DeselectTab(WIM_OptionsOptionTab3);
        WIM_OptionsTabbedFrameGeneral:Hide();
        WIM_OptionsTabbedFrameWindow:Hide();
        WIM_OptionsTabbedFrameFilter:Hide();
        WIM_OptionsTabbedFrameHistory:Show();
end

function WIM_Options_SupressWispsClicked()
        if(WIM_OptionsTabbedFrameGeneralSupress:GetChecked()) then
                WIM_Data.supressWisps = true;
        else
                WIM_Data.supressWisps = false;
        end
end

function WIM_Options_KeepFocusClicked()
        if(WIM_OptionsTabbedFrameGeneralKeepFocus:GetChecked()) then
                WIM_Data.keepFocus = true;
        else
                WIM_Data.keepFocus = false;
        end
end

function WIM_Options_AutoFocusClicked()
        if(WIM_OptionsTabbedFrameGeneralAutoFocus:GetChecked()) then
                WIM_Data.autoFocus = true;
        else
                WIM_Data.autoFocus = false;
        end
end

function WIM_Options_PopNewClicked()
        if(WIM_OptionsTabbedFrameGeneralPopNew:GetChecked()) then
                WIM_Data.popNew = true;
                WIM_OptionsTabbedFrameGeneralPopUpdate:Enable();
                WIM_OptionsTabbedFrameGeneralPopCombat:Enable();
        else
                WIM_Data.popNew = false;
                WIM_OptionsTabbedFrameGeneralPopUpdate:Disable();
                WIM_OptionsTabbedFrameGeneralPopCombat:Disable();
        end
end

function WIM_Options_PopUpdateClicked()
        if(WIM_OptionsTabbedFrameGeneralPopUpdate:GetChecked()) then
                WIM_Data.popUpdate = true;
        else
                WIM_Data.popUpdate = false;
        end
end

function WIM_Options_PopOnSendClicked()
        if(WIM_OptionsTabbedFrameGeneralPopOnSend:GetChecked()) then
                WIM_Data.popOnSend = true;
        else
                WIM_Data.popOnSend = false;
        end
end

function WIM_Options_PlaySoundWispClicked()
        if(WIM_OptionsTabbedFrameGeneralPlaySoundWisp:GetChecked()) then
                WIM_Data.playSoundWisp = true;
        else
                WIM_Data.playSoundWisp = false;
        end
end

function WIM_Options_ShowToolTipsClicked()
        if(WIM_OptionsTabbedFrameGeneralShowToolTips:GetChecked()) then
                WIM_Data.showToolTips = true;
        else
                WIM_Data.showToolTips = false;
        end
end

function WIM_Options_SortOrderAlphaClicked()
        if(WIM_OptionsTabbedFrameGeneralSortOrderAlpha:GetChecked()) then
                WIM_Data.sortAlpha = true;
        else
                WIM_Data.sortAlpha = false;
        end
        WIM_Icon_DropDown_Update();
end

function WIM_Options_FreeMoving_Clicked()
        if(WIM_OptionsMiniMapFreeMoving:GetChecked()) then
                WIM_Data.miniFreeMoving.enabled = true;
                WIM_Data.miniFreeMoving.left = WIM_IconFrame:GetLeft();
                WIM_Data.miniFreeMoving.top = WIM_IconFrame:GetTop();
                WIM_IconFrame:ClearAllPoints();
                WIM_IconFrame:SetFrameStrata("HIGH");
                WIM_IconFrame:SetPoint("TOPLEFT", "UIParent", "BOTTOMLEFT", WIM_Data.miniFreeMoving.left, WIM_Data.miniFreeMoving.top);
        else
                WIM_IconFrame:SetFrameStrata("LOW");
                WIM_Data.miniFreeMoving.enabled = false;
                WIM_Icon_UpdatePosition();
        end
end

function WIM_Options_PopCombatClicked()
        if(WIM_OptionsTabbedFrameGeneralPopCombat:GetChecked()) then
                WIM_Data.popCombat = true;
        else
                WIM_Data.popCombat = false;
        end
end

function WIM_Options_CharacerInfoClicked()
        if(WIM_OptionsDisplayShowCharacterInfo:GetChecked()) then
                WIM_Data.characterInfo.show = true;
                WIM_OptionsDisplayShowCharacterInfoClassIcon:Enable();
                WIM_OptionsDisplayShowCharacterInfoClassColor:Enable();
        else
                WIM_Data.characterInfo.show = false;
                WIM_OptionsDisplayShowCharacterInfoClassIcon:Disable();
                WIM_OptionsDisplayShowCharacterInfoClassColor:Disable();
        end
end

function WIM_Options_CharacerInfoClassIconClicked()
        if(WIM_OptionsDisplayShowCharacterInfoClassIcon:GetChecked()) then
                WIM_Data.characterInfo.classIcon = true;
        else
                WIM_Data.characterInfo.classIcon = false;
        end
end

function WIM_Options_CharacerInfoClassColorClicked()
        if(WIM_OptionsDisplayShowCharacterInfoClassColor:GetChecked()) then
                WIM_Data.characterInfo.classColor = true;
        else
                WIM_Data.characterInfo.classColor = false;
        end
end

function WIM_Options_CharacerInfoDetailsClicked()
        if(WIM_OptionsDisplayShowCharacterInfoDetails:GetChecked()) then
                WIM_Data.characterInfo.details = true;
        else
                WIM_Data.characterInfo.details = false;
        end
end

function WIM_Options_ShowTimeStampsClicked()
        if(WIM_OptionsDisplayShowTimeStamps:GetChecked()) then
                WIM_Data.showTimeStamps = true;
        else
                WIM_Data.showTimeStamps = false;
        end
end

function WIM_Options_EnableWIMClicked()
        if(WIM_OptionsEnableWIM:GetChecked()) then
                WIM_Data.enableWIM = true;
        else
                WIM_Data.enableWIM = false;
        end
        WIM_SetWIM_Enabled(WIM_Data.enableWIM);
end

function WIM_Options_ShowShortcutBarClicked()
        if(WIM_OptionsDisplayShowShortcutBar:GetChecked()) then
                WIM_Data.showShortcutBar = true;
                WIM_OptionsTabbedFrameWindowWindowHeightTitle:SetText("Window Height |cffffffff(Limited by shortcut bar)|r");
        else
                WIM_Data.showShortcutBar = false;
                WIM_OptionsTabbedFrameWindowWindowHeightTitle:SetText("Window Height");
        end
        WIM_SetAllWindowProps();
end

function WIM_AliasScrollBar_Update()
        local line;
        local lineplusoffset;
        local AliasNames = {};
        
        for key in WIM_Alias do
                table.insert(AliasNames, key);
        end
        
        FauxScrollFrame_Update(WIM_OptionsTabbedFrameFilterAliasPanelScrollBar,table.getn(AliasNames),5,16);
        for line=1,5 do
                lineplusoffset = line + FauxScrollFrame_GetOffset(WIM_OptionsTabbedFrameFilterAliasPanelScrollBar);
                if (lineplusoffset <= table.getn(AliasNames)) then
                        getglobal("WIM_OptionsTabbedFrameFilterAliasPanelButton"..line.."Name"):SetText(AliasNames[lineplusoffset]);
                        getglobal("WIM_OptionsTabbedFrameFilterAliasPanelButton"..line.."Alias"):SetText(WIM_Alias[AliasNames[lineplusoffset]]);
                        getglobal("WIM_OptionsTabbedFrameFilterAliasPanelButton"..line).theAliasName = AliasNames[lineplusoffset];
                        if ( WIM_Alias_Selected == AliasNames[lineplusoffset] ) then
                                getglobal("WIM_OptionsTabbedFrameFilterAliasPanelButton"..line):LockHighlight();
                        else
                                getglobal("WIM_OptionsTabbedFrameFilterAliasPanelButton"..line):UnlockHighlight();
                        end
                        getglobal("WIM_OptionsTabbedFrameFilterAliasPanelButton"..line):Show();
                else
                        getglobal("WIM_OptionsTabbedFrameFilterAliasPanelButton"..line):Hide();
                end
        end

end

function WIM_Options_AliasWindow_Click()
        local name = WIM_Options_AliasWindow_Name:GetText();
        local alias = WIM_Options_AliasWindow_Alias:GetText();
        
        name = string.gsub(name, " ", "");
        name = string.gsub(name, "^%l", string.upper)
        alias = string.gsub(alias, " ", "");
        
        if(name == "") then
                WIM_Options_AliasWindow_Error:SetText("ERROR: Invalid name!");
                return;
        end
        if(alias == "") then
                WIM_Options_AliasWindow_Error:SetText("ERROR: Invalid alias!");
                return;
        end
        if(WIM_Options_AliasWindow.theMode == "add" and WIM_Alias[name] ~= nil) then
                WIM_Options_AliasWindow_Error:SetText("ERROR: Name is already used!");
                return;
        end
        
        WIM_Alias[name] = alias;
        
        if(WIM_Options_AliasWindow.theMode == "edit" and name ~= WIM_Options_AliasWindow.prevName)then
                WIM_Alias[WIM_Options_AliasWindow.prevName] = nil;
        end

        
        WIM_AliasScrollBar_Update();
        PlaySound("igMainMenuClose");
        WIM_Options_AliasWindow:Hide();
end


function WIM_Options_AliasEnabledClicked()
        if(WIM_OptionsTabbedFrameFilterAliasEnabled:GetChecked()) then
                WIM_Data.enableAlias = true;
        else
                WIM_Data.enableAlias = false;
        end
end

function WIM_Options_FilteringEnabledClicked()
        if(WIM_OptionsTabbedFrameFilterFilteringEnabled:GetChecked()) then
                WIM_Data.enableFilter = true;
        else
                WIM_Data.enableFilter = false;
        end
end

function WIM_FilteringScrollBar_Update()
        local line;
        local lineplusoffset;
        local FilteringNames = {};
        
        for key in WIM_Filters do
                table.insert(FilteringNames, key);
        end
        
        FauxScrollFrame_Update(WIM_OptionsTabbedFrameFilterFilteringPanelScrollBar,table.getn(FilteringNames),5,16);
        for line=1,5 do
                lineplusoffset = line + FauxScrollFrame_GetOffset(WIM_OptionsTabbedFrameFilterFilteringPanelScrollBar);
                if lineplusoffset <= table.getn(FilteringNames) then
                        getglobal("WIM_OptionsTabbedFrameFilterFilteringPanelButton"..line.."Name"):SetText(FilteringNames[lineplusoffset]);
                        getglobal("WIM_OptionsTabbedFrameFilterFilteringPanelButton"..line.."Action"):SetText(WIM_Filters[FilteringNames[lineplusoffset]]);
                        getglobal("WIM_OptionsTabbedFrameFilterFilteringPanelButton"..line).theFilterName = FilteringNames[lineplusoffset];
                        if ( WIM_Filter_Selected == FilteringNames[lineplusoffset] ) then
                                getglobal("WIM_OptionsTabbedFrameFilterFilteringPanelButton"..line):LockHighlight();
                        else
                                getglobal("WIM_OptionsTabbedFrameFilterFilteringPanelButton"..line):UnlockHighlight();
                        end
                        getglobal("WIM_OptionsTabbedFrameFilterFilteringPanelButton"..line):Show();
                else
                        getglobal("WIM_OptionsTabbedFrameFilterFilteringPanelButton"..line):Hide();
                end
        end

end


function WIM_Options_FilteringIgnoreClicked()
        if(WIM_Options_FilterWindow_ActionIgnore:GetChecked()) then
                WIM_Options_FilterWindow.theAction = "Ignore";
                WIM_Options_FilterWindow_ActionBlock:SetChecked(false);
        else
                WIM_Options_FilterWindow_ActionBlock:SetChecked(true);
        end
end

function WIM_Options_FilteringBlockClicked()
        if(WIM_Options_FilterWindow_ActionBlock:GetChecked()) then
                WIM_Options_FilterWindow.theAction = "Block";
                WIM_Options_FilterWindow_ActionIgnore:SetChecked(false);
        else
                WIM_Options_FilterWindow_ActionIgnore:SetChecked(true);
        end
end

function WIM_Options_FilterWindow_Click()
        local name = WIM_Options_FilterWindow_Name:GetText();
        local action = WIM_Options_FilterWindow.theAction;
        
        local tname = string.gsub(name, " ", "");
        
        if(tname == "") then
                WIM_Options_FilterWindow_Error:SetText("ERROR: Invalid Keyword/Phrase!");
                return;
        end
        if(WIM_Options_FilterWindow.theMode == "add" and WIM_Filters[name] ~= nil) then
                WIM_Options_FilterWindow_Error:SetText("ERROR: Keyword/Phrase is already used!");
                return;
        end
        
        WIM_Filters[name] = action;
        
        if(WIM_Options_FilterWindow.theMode == "edit" and name ~= WIM_Options_FilterWindow.prevName)then
                WIM_Filters[WIM_Options_FilterWindow.prevName] = nil;
        end
        
        WIM_FilteringScrollBar_Update();
        PlaySound("igMainMenuClose");
        WIM_Options_FilterWindow:Hide();
end

function WIM_Options_AliasShowAsCommentClicked()
        if(WIM_OptionsTabbedFrameFilterAliasShowAsComment:GetChecked()) then
                WIM_Data.aliasAsComment = true;
        else
                WIM_Data.aliasAsComment = false;
        end
end

function WIM_Options_HistoryEnabledClicked()
        if(WIM_OptionsTabbedFrameHistoryEnabled:GetChecked()) then
                WIM_Data.enableHistory = true;
        else
                WIM_Data.enableHistory = false;
        end
end

function WIM_Options_HistoryRecordEveryoneClicked()
        if(WIM_OptionsTabbedFrameHistoryRecordEveryone:GetChecked()) then
                WIM_Data.historySettings.recordEveryone = true;
                WIM_OptionsTabbedFrameHistoryRecordFriends:Disable();
                WIM_OptionsTabbedFrameHistoryRecordGuild:Disable();
        else
                WIM_Data.historySettings.recordEveryone = false;
                WIM_OptionsTabbedFrameHistoryRecordFriends:Enable();
                WIM_OptionsTabbedFrameHistoryRecordGuild:Enable();
        end
end

function WIM_Options_HistoryRecordFriendsClicked()
        if(WIM_OptionsTabbedFrameHistoryRecordFriends:GetChecked()) then
                WIM_Data.historySettings.recordFriends = true;
        else
                WIM_Data.historySettings.recordFriends = false;
        end
end

function WIM_Options_HistoryRecordGuildClicked()
        if(WIM_OptionsTabbedFrameHistoryRecordGuild:GetChecked()) then
                WIM_Data.historySettings.recordGuild = true;
        else
                WIM_Data.historySettings.recordGuild = false;
        end
end

function WIM_Options_HistoryShowInMessageClicked()
        if(WIM_OptionsTabbedFrameHistoryShowInMessage:GetChecked()) then
                WIM_Data.historySettings.popWin.enabled = true;
        else
                WIM_Data.historySettings.popWin.enabled = false;
        end
end

function WIM_Options_HistorySetMaxToStoreClicked()
        if(WIM_OptionsTabbedFrameHistorySetMaxToStore:GetChecked()) then
                WIM_Data.historySettings.maxMsg.enabled = true;
        else
                WIM_Data.historySettings.maxMsg.enabled = false;
        end
end

function WIM_Options_HistorySetAutoDeleteClicked()
        if(WIM_OptionsTabbedFrameHistorySetAutoDelete:GetChecked()) then
                WIM_Data.historySettings.autoDelete.enabled = true;
        else
                WIM_Data.historySettings.autoDelete.enabled = false;
        end
end

function WIM_Options_HistoryMessageCount_OnShow()
        UIDropDownMenu_Initialize(this, WIM_Options_HistoryMessageCount_Initialize);
        UIDropDownMenu_SetSelectedValue(this, WIM_Data.historySettings.popWin.count);
        UIDropDownMenu_SetWidth(60, WIM_OptionsTabbedFrameHistoryMessageCount);
end

function WIM_Options_HistoryMessageCount_Initialize()
        local info = {};
        info = { };
        info.text = "1";--.."           "; --[spaces for quick width fix
        info.value = 1;
        info.justifyH = "LEFT";
        info.func = WIM_Options_HistoryMessageClick;
        UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL);
        
        info = { };
        info.text = "5";
        info.value = 5;
        info.justifyH = "LEFT";
        info.func = WIM_Options_HistoryMessageClick;
        UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL);
        
        info = { };
        info.text = "10";
        info.value = 10;
        info.justifyH = "LEFT";
        info.func = WIM_Options_HistoryMessageClick;
        UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL);
        
        info = { };
        info.text = "25";
        info.value = 25;
        info.justifyH = "LEFT";
        info.func = WIM_Options_HistoryMessageClick;
        UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL);
        
        info = { };
        info.text = "50";
        info.value = 50;
        info.justifyH = "LEFT";
        info.func = WIM_Options_HistoryMessageClick;
        UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL);
end

function WIM_Options_HistoryMessageClick()
        WIM_Data.historySettings.popWin.count = this.value;
        UIDropDownMenu_SetSelectedValue(WIM_OptionsTabbedFrameHistoryMessageCount, WIM_Data.historySettings.popWin.count);
end

function WIM_Options_HistoryMaxCount_OnShow()
        UIDropDownMenu_Initialize(this, WIM_Options_HistoryMaxCount_Initialize);
        UIDropDownMenu_SetSelectedValue(this, WIM_Data.historySettings.maxMsg.count);
        UIDropDownMenu_SetWidth(60, WIM_OptionsTabbedFrameHistoryMaxCount);
end

function WIM_Options_HistoryMaxCount_Initialize()
        local info = {};
        info = { };
        info.text = "50";--.."           "; --[spaces for quick width fix
        info.value = 50;
        info.justifyH = "LEFT";
        info.func = WIM_Options_HistoryMaxClick;
        UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL);
        
        info = { };
        info.text = "100";
        info.value = 100;
        info.justifyH = "LEFT";
        info.func = WIM_Options_HistoryMaxClick;
        UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL);
        
        info = { };
        info.text = "200";
        info.value = 200;
        info.justifyH = "LEFT";
        info.func = WIM_Options_HistoryMaxClick;
        UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL);
        
        info = { };
        info.text = "300";
        info.value = 300;
        info.justifyH = "LEFT";
        info.func = WIM_Options_HistoryMaxClick;
        UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL);
        
        info = { };
        info.text = "400";
        info.value = 400;
        info.justifyH = "LEFT";
        info.func = WIM_Options_HistoryMaxClick;
        UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL);
        
        info = { };
        info.text = "500";
        info.value = 500;
        info.justifyH = "LEFT";
        info.func = WIM_Options_HistoryMaxClick;
        UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL);
end

function WIM_Options_HistoryMaxClick()
        WIM_Data.historySettings.maxMsg.count = this.value;
        UIDropDownMenu_SetSelectedValue(WIM_OptionsTabbedFrameHistoryMaxCount, WIM_Data.historySettings.maxMsg.count);
end

function WIM_Options_HistoryAutoDeleteTime_OnShow()
        UIDropDownMenu_Initialize(this, WIM_Options_HistoryAutoDeleteTime_Initialize);
        UIDropDownMenu_SetSelectedValue(this, WIM_Data.historySettings.autoDelete.days);
        UIDropDownMenu_SetWidth(75, WIM_OptionsTabbedFrameHistoryAutoDeleteTime);
end

function WIM_Options_HistoryAutoDeleteTime_Initialize()
        local info = {};
        info = { };
        info.text = "Day";--.."           "; --[spaces for quick width fix
        info.value = 1;
        info.justifyH = "LEFT";
        info.func = WIM_Options_HistoryAutoDeleteTimeClick;
        UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL);
        
        info = { };
        info.text = "Week";
        info.value = 7;
        info.justifyH = "LEFT";
        info.func = WIM_Options_HistoryAutoDeleteTimeClick;
        UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL);
        
        info = { };
        info.text = "Month";
        info.value = 30;
        info.justifyH = "LEFT";
        info.func = WIM_Options_HistoryAutoDeleteTimeClick;
        UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL);
end

function WIM_Options_HistoryAutoDeleteTimeClick()
        WIM_Data.historySettings.autoDelete.days = this.value;
        UIDropDownMenu_SetSelectedValue(WIM_OptionsTabbedFrameHistoryAutoDeleteTime, WIM_Data.historySettings.autoDelete.days);
end

function WIM_HistoryScrollBar_Update()
        local line;
        local lineplusoffset;
        local HistoryNames = {};
        
        for key in WIM_History do
                table.insert(HistoryNames, key);
        end
        table.sort(HistoryNames);
        
        FauxScrollFrame_Update(WIM_OptionsTabbedFrameHistoryPanelScrollBar,table.getn(HistoryNames),5,16);
        for line=1,5 do
                lineplusoffset = line + FauxScrollFrame_GetOffset(WIM_OptionsTabbedFrameHistoryPanelScrollBar);
                if lineplusoffset <= table.getn(HistoryNames) then
                        getglobal("WIM_OptionsTabbedFrameHistoryPanelButton"..line.."Name"):SetText(HistoryNames[lineplusoffset]);
                        getglobal("WIM_OptionsTabbedFrameHistoryPanelButton"..line.."MessageCount"):SetText(table.getn(WIM_History[HistoryNames[lineplusoffset]]));
                        getglobal("WIM_OptionsTabbedFrameHistoryPanelButton"..line).theName = HistoryNames[lineplusoffset];
                        if ( WIM_History_Selected == HistoryNames[lineplusoffset] ) then
                                getglobal("WIM_OptionsTabbedFrameHistoryPanelButton"..line):LockHighlight();
                        else
                                getglobal("WIM_OptionsTabbedFrameHistoryPanelButton"..line):UnlockHighlight();
                        end
                        getglobal("WIM_OptionsTabbedFrameHistoryPanelButton"..line):Show();
                else
                        getglobal("WIM_OptionsTabbedFrameHistoryPanelButton"..line):Hide();
                end
        end
end

function WIM_Options_WindowAnchorToggle_Click()
        if(WIM_WindowAnchor:IsVisible()) then
                WIM_WindowAnchor:Hide();
                GameTooltip:Hide();
        else
                WIM_WindowAnchor:SetPoint(
                        "TOPLEFT",
                        "UIParent",
                        "BOTTOMLEFT",
                        WIM_Data.winLoc.left, 
                        WIM_Data.winLoc.top
                );
                WIM_WindowAnchor:Show();
                GameTooltip:SetOwner(WIM_WindowAnchor, "ANCHOR_RIGHT");
                GameTooltip:SetText("Drag to set default spawn\nposition for message windows.");
        end
end

function WIM_Options_WindowCascadeClicked()
        if(WIM_OptionsTabbedFrameWindowWindowCascade:GetChecked()) then
                WIM_Data.winCascade.enabled = true;
        else
                WIM_Data.winCascade.enabled = false;
        end
end

function WIM_Options_CascadeDirection_OnShow()
        UIDropDownMenu_Initialize(this, WIM_Options_CascadeDirection_Initialize);
        UIDropDownMenu_SetSelectedValue(this, WIM_Data.winCascade.direction);
        UIDropDownMenu_SetWidth(100, WIM_OptionsTabbedFrameWindowCascadeDirection);
end

function WIM_Options_CascadeDirection_Initialize()
        local info = {};
        info = { };
        info.text = "Up";
        info.value = "up";
        info.justifyH = "LEFT";
        info.func = WIM_Options_CascadeDirectionClick;
        UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL);
        
        info = { };
        info.text = "Down";
        info.value = "down";
        info.justifyH = "LEFT";
        info.func = WIM_Options_CascadeDirectionClick;
        UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL);
        
        info = { };
        info.text = "Left";
        info.value = "left";
        info.justifyH = "LEFT";
        info.func = WIM_Options_CascadeDirectionClick;
        UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL);
        
        info = { };
        info.text = "Right";
        info.value = "right";
        info.justifyH = "LEFT";
        info.func = WIM_Options_CascadeDirectionClick;
        UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL);
        
        info = { };
        info.text = "Up & Left";
        info.value = "upleft";
        info.justifyH = "LEFT";
        info.func = WIM_Options_CascadeDirectionClick;
        UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL);
        
        info = { };
        info.text = "Up & Right";
        info.value = "upright";
        info.justifyH = "LEFT";
        info.func = WIM_Options_CascadeDirectionClick;
        UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL);
        
        info = { };
        info.text = "Down & Left";
        info.value = "downleft";
        info.justifyH = "LEFT";
        info.func = WIM_Options_CascadeDirectionClick;
        UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL);
        
        info = { };
        info.text = "Down & Right";
        info.value = "downright";
        info.justifyH = "LEFT";
        info.func = WIM_Options_CascadeDirectionClick;
        UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL);
end

function WIM_Options_CascadeDirectionClick()
        WIM_Data.winCascade.direction = this.value;
        WIM_CascadeStep = 0;
        UIDropDownMenu_SetSelectedValue(WIM_OptionsTabbedFrameWindowCascadeDirection, WIM_Data.winCascade.direction);
end

function WIM_Help_Description_Click()
        PanelTemplates_SelectTab(WIM_HelpTab1);
        PanelTemplates_DeselectTab(WIM_HelpTab2);
        
        WIM_HelpScrollFrameScrollChildText:SetText(WIM_DESCRIPTION);
        WIM_HelpScrollFrameScrollBar:SetValue(0);
        WIM_HelpScrollFrame:UpdateScrollChildRect();
end

function WIM_Help_ChangeLog_Click()
        PanelTemplates_SelectTab(WIM_HelpTab2);
        PanelTemplates_DeselectTab(WIM_HelpTab1);
        
        WIM_HelpScrollFrameScrollChildText:SetText(WIM_CHANGE_LOG);
        WIM_HelpScrollFrameScrollBar:SetValue(0);
        WIM_HelpScrollFrame:UpdateScrollChildRect();
end