local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");

    --Main AtlasLoot Frame
    local mainframe = CreateFrame("FRAME", "AtlasLootDefaultFrame", UIParent);
    mainframe:SetPoint("CENTER",0,0);
    mainframe:SetSize(880,690);
    mainframe:EnableMouse(true);
    mainframe:SetMovable(1);
    mainframe:SetFrameStrata("HIGH");
    mainframe:RegisterForDrag("LeftButton");
    mainframe:SetMovable(true);
    mainframe:EnableKeyboard(true)
    mainframe:Hide()
    mainframe:SetBackdrop({
        bgFile = "Interface\\DialogFrame\\UI-DialogBox-Background",
        edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Border",
        tile = "true",
        insets = {left = "11", right = "12", top = "12", bottom = "11"},
        edgeSize = 32,
        titleSize = 32,
    });
    mainframe:SetScript("OnShow", function()
     AtlasLootDefaultFrame_OnShow();
     end);
     mainframe:SetScript("OnHide", function() AtlasLootDefaultFrame_OnHide() end)
     mainframe:SetScript("OnDragStart", function(self)
         self:StartMoving();
         self.isMoving = true;
     end);
     mainframe:SetScript("OnDragStop", function(self)
         self:StopMovingOrSizing();
         self.isMoving = false;
     end);
     mainframe.header = mainframe:CreateTexture("AtlasLootDefaultFrameHeader","ARTWORK");
     mainframe.header:SetSize(425,64);
     mainframe.header:SetPoint("TOP",0,12);
     mainframe.header:SetTexture("Interface\\DialogFrame\\UI-DialogBox-Header");
     mainframe.header.txt = mainframe:CreateFontString(nil,"ARTWORK","GameFontNormal");
     mainframe.header.txt:SetPoint("TOP",0,-1);
     mainframe.header.txt:SetText(ATLASLOOT_VERSION);
     mainframe.header.notice = mainframe:CreateFontString("AtlasLootDefaultFrame_Notice","ARTWORK","GameFontNormal");
     mainframe.header.notice:SetPoint("BOTTOM",0,17);

    --Loot Background
local lootbground = CreateFrame("Frame", "AtlasLootDefaultFrame_LootBackground",AtlasLootDefaultFrame);
    lootbground:SetSize(540,515);
    lootbground:SetPoint("BOTTOMLEFT", AtlasLootDefaultFrame, "BOTTOMLEFT",40,90);
    lootbground.Back = lootbground:CreateTexture("AtlasLootDefaultFrame_LootBackground_Back", "BACKGROUND");
    lootbground.Back:SetAllPoints();
    lootbground.Back:SetPoint("TOPLEFT","AtlasLootDefaultFrame_LootBackground","TOPLEFT");
    lootbground.Back:SetPoint("BOTTOMRIGHT","AtlasLootDefaultFrame_LootBackground","BOTTOMRIGHT");
    lootbground:SetBackdropColor(0,0,0.5,0.5);
    lootbground:EnableMouse();
    lootbground:SetScript("OnMouseDown",function(self, button)
        if _G["AtlasLootItemsFrame_BACK"]:IsVisible() and button == "RightButton" then
            AtlasLoot:BackButton_OnClick();
        elseif AtlasLootDefaultFrame_AdvancedSearchPanel:IsVisible() and button == "RightButton" then
            AtlasLoot_AdvancedSearchClose();
        end
        AtlasLoot_Dewdrop:Close();
        AtlasLoot_DewdropSubMenu:Close();
        AtlasLoot_DewdropExpansionMenu:Close();
        AtlasLoot_WishListDrop:Close();
        AtlasLoot_WishListOptions:Close();
    end);

----------------------------------- Item Loot Panel -------------------------------------------
local itemframe = CreateFrame("Frame", "AtlasLootItemsFrame", AtlasLootDefaultFrame_LootBackground);
        itemframe:SetSize(535,510);
        itemframe:Hide();
        itemframe:SetPoint("TOPLEFT", AtlasLootDefaultFrame_LootBackground, "TOPLEFT", 2, -2);
        itemframe.Label = itemframe:CreateFontString("AtlasLoot_BossName","OVERLAY","GameFontHighlightLarge");
        itemframe.Label:SetPoint("TOP", "AtlasLootItemsFrame", "TOP");
        itemframe.Label:SetSize(512,30);
        itemframe.Label:SetJustifyH("CENTER");
        itemframe.Back = itemframe:CreateTexture("AtlasLootItemsFrame_Back", "BACKGROUND");
        itemframe.Back:SetAllPoints();
        itemframe.Back:SetPoint("TOPLEFT","AtlasLootDefaultFrame_LootBackground","TOPLEFT");
        itemframe.Back:SetPoint("BOTTOMRIGHT","AtlasLootDefaultFrame_LootBackground","BOTTOMRIGHT");
        itemframe:SetBackdropColor(0,0,0,0.7);
        itemframe:EnableMouseWheel(true);
        itemframe:SetScript("OnMouseWheel", function(self,delta)
            if AtlasLootItemsFrame_NEXT:IsVisible() and delta == -1 then
                AtlasLootItemsFrame_NEXT:Click();
            end
            if AtlasLootItemsFrame_PREV:IsVisible() and delta == 1 then
                AtlasLootItemsFrame_PREV:Click();
            end
        end);

for num = 1, 30 do
    local button = CreateFrame("Button","AtlasLootItem_"..num, AtlasLootItemsFrame);
        button:SetID(num);
        button:SetSize(236,28);
        button:SetHighlightTexture("Interface\\QuestFrame\\UI-QuestTitleHighlight", "ADD");
        button.icon = button:CreateTexture("AtlasLootItem_"..num.."_Icon","ARTWORK");
        button.icon:SetSize(25,25);
        button.icon:SetPoint("TOPLEFT", "AtlasLootItem_"..num,"TOPLEFT",1,-1);
        button.name = button:CreateFontString("AtlasLootItem_"..num.."_Name","ARTWORK","GameFontNormal");
        button.name:SetSize(205,12);
        button.name:SetPoint("TOPLEFT","AtlasLootItem_"..num.."_Icon","TOPRIGHT",3,0);
        button.name:SetJustifyH("LEFT");
        button.extra = button:CreateFontString("AtlasLootItem_"..num.."_Extra","ARTWORK","GameFontNormal");
        button.extra:SetSize(205,10);
        button.extra:SetPoint("TOPLEFT","AtlasLootItem_"..num.."_Name","BOTTOMLEFT",0,-1);
        button.extra:SetJustifyH("LEFT");
        button:RegisterForClicks("AnyDown");
        button.number = num;
        button:SetScript("OnEnter", function(self) AtlasLootItem_OnEnter(self) end);
        button:SetScript("OnLeave", function(self) AtlasLootItem_OnLeave(self) end);
        button:SetScript("OnClick", function(self, arg1) AtlasLootItem_OnClick(self, arg1) end);
        button.unsafe = button:CreateTexture("AtlasLootItem_"..num.."_Unsafe","BACKGROUND");
        button.unsafe:Hide();
        button.unsafe:SetSize(27,27);
        button.unsafe:SetPoint("TOPLEFT","AtlasLootItem_"..num,"TOPLEFT");
        button.unsafe:SetVertexColor(1,0,0,1);
        if num == 1 then
            button:SetPoint("TOPLEFT", "AtlasLootItemsFrame", "TOPLEFT",25,-35);
        elseif num == 16 then
            button:SetPoint("TOPLEFT", "AtlasLootItem_1", "TOPRIGHT",0,0);
        else
            button:SetPoint("TOPLEFT", "AtlasLootItem_"..(num - 1), "BOTTOMLEFT");
        end
end

        -- LootInfo
local lootinfo = CreateFrame("Frame", "AtlasLootInfo")
        lootinfo:SetSize(128,75);
        lootinfo.text1 = lootinfo:CreateFontString("AtlasLootInfo_Text1", "OVERLAY", "GameFontNormal");
        lootinfo.text1:SetSize(180,10);
        lootinfo.text1:SetText("ATLASLOOT_VERSION");
        lootinfo.text1:SetJustifyH("LEFT");
        lootinfo.text1:SetPoint("TOPLEFT", "AtlasLootInfo", "TOPLEFT",0,25);
        lootinfo.text2 = lootinfo:CreateFontString("AtlasLootInfo_Text2", "OVERLAY", "GameFontNormal");
        lootinfo.text2:SetSize(180,10);
        lootinfo.text2:SetJustifyH("LEFT");
        lootinfo.text2:SetText(AL["Click boss name to view loot."]);
        lootinfo.text2:SetPoint("TOPLEFT", "AtlasLootInfo", "TOPLEFT",0,-2);

        -- Next Button
local nextbtn = CreateFrame("Button", "AtlasLootItemsFrame_NEXT", AtlasLootItemsFrame);
        nextbtn:SetPoint("BOTTOMRIGHT", "AtlasLootItemsFrame", "BOTTOMRIGHT",-5,5);
        nextbtn:SetSize(32,32);
        nextbtn.texture = nextbtn:CreateTexture(nil, "BACKGROUND");
        nextbtn.texture:SetTexture("Interface\\Buttons\\UI-PageButton-Background");
        nextbtn.texture:SetSize(32,32);
        nextbtn.texture:SetPoint("CENTER",0,0);
        nextbtn:SetNormalTexture("Interface\\Buttons\\UI-SpellbookIcon-NextPage-Up");
        nextbtn:SetPushedTexture("Interface\\Buttons\\UI-SpellbookIcon-NextPage-Down");
        nextbtn:SetDisabledTexture("Interface\\Buttons\\UI-SpellbookIcon-NextPage-Disabled");
        nextbtn:SetHighlightTexture("Interface\\Buttons\\UI-Common-MouseHilight", "ADD");
        nextbtn:SetScript("OnClick", function(self) AtlasLoot:NavButton_OnClick(self) end)
        nextbtn:Hide();

        -- Previous button
local prevbtn = CreateFrame("Button", "AtlasLootItemsFrame_PREV", AtlasLootItemsFrame);
        prevbtn:SetPoint("BOTTOMLEFT", "AtlasLootItemsFrame", "BOTTOMLEFT",5,5);
        prevbtn:SetSize(32,32);
        prevbtn.texture = prevbtn:CreateTexture(nil, "BACKGROUND");
        prevbtn.texture:SetTexture("Interface\\Buttons\\UI-PageButton-Background");
        prevbtn.texture:SetSize(32,32);
        prevbtn.texture:SetPoint("CENTER",0,0);
        prevbtn:SetNormalTexture("Interface\\Buttons\\UI-SpellbookIcon-PrevPage-Up");
        prevbtn:SetPushedTexture("Interface\\Buttons\\UI-SpellbookIcon-PrevPage-Down");
        prevbtn:SetDisabledTexture("Interface\\Buttons\\UI-SpellbookIcon-PrevPage-Disabled");
        prevbtn:SetHighlightTexture("Interface\\Buttons\\UI-Common-MouseHilight", "ADD");
        prevbtn:SetScript("OnClick", function(self) AtlasLoot:NavButton_OnClick(self) end)
        prevbtn:Hide();

        -- Back button
local backbtn = CreateFrame("Button", "AtlasLootItemsFrame_BACK", AtlasLootItemsFrame, "OptionsButtonTemplate");
        backbtn:SetPoint("BOTTOM", "AtlasLootItemsFrame", "BOTTOM",0,4);
        backbtn:SetText(AL["Back"]);
        backbtn:SetScript("OnClick", function(self) AtlasLoot:BackButton_OnClick() end)
        backbtn:Hide();

        -- Wishlist Own/Swap button
local swapbtn = CreateFrame("Button", "AtlasLootItemsFrame_Wishlist_Swap", AtlasLootItemsFrame, "OptionsButtonTemplate");
        swapbtn:SetPoint("BOTTOM", "AtlasLootItemsFrame", "BOTTOM",50,4);
        swapbtn:SetScript("OnClick", function(self) AtlasLoot:WishListSwapButton("","","","","",self,true) end)
        swapbtn:Hide();

        -- Wishlist Options button
local optionsbtn = CreateFrame("Button", "AtlasLootItemsFrame_Wishlist_Options", AtlasLootItemsFrame, "OptionsButtonTemplate");
        optionsbtn:SetPoint("BOTTOM", "AtlasLootItemsFrame_Wishlist_Swap", "BOTTOM",-100,0);
        optionsbtn:SetText(AL["Options"]);
        optionsbtn:SetScript("OnClick", function(self)
            if AtlasLoot_WishListOptions:IsOpen() then
                AtlasLoot_WishListOptions:Close();
            else
                AtlasLoot_WishListOptions:Open(self);
            end
        end);
        optionsbtn:Hide();

        -- Wishlist Item Lock button
ATLASLOOT_ITEM_UNLOCK = false;
local lockbtn = CreateFrame("Button", "AtlasLootItemsFrame_Wishlist_UnLock", AtlasLootItemsFrame, "OptionsButtonTemplate");
        lockbtn:SetPoint("BOTTOM", "AtlasLootItemsFrame_Wishlist_Options", "BOTTOM",-100,0);
        lockbtn:SetScript("OnClick", function(self)
            if ATLASLOOT_ITEM_UNLOCK then
                ATLASLOOT_ITEM_UNLOCK = false;
                lockbtn:SetText("Locked");
            else
                ATLASLOOT_ITEM_UNLOCK = true;
                lockbtn:SetText("UnLocked");
            end
        end)
        lockbtn:SetScript("OnEnter", function(self)
            GameTooltip:ClearLines();
            GameTooltip:SetOwner(self, "ANCHOR_RIGHT", -(self:GetWidth() / 2), 5);
            GameTooltip:AddLine("Toggle Item Moving");
            GameTooltip:AddLine("Left Click to move item up");
            GameTooltip:AddLine("Right Click to move item down");
            GameTooltip:AddLine("Alt + Left Click to add a Custom Header");
            GameTooltip:Show();
        end);
        lockbtn:SetScript("OnLeave", function()
        if(GameTooltip:IsVisible()) then
            GameTooltip:Hide();
        end
        end);
        lockbtn:SetText("Locked");
        lockbtn:Hide();
    -- Wishlist Share button
local sharebtn = CreateFrame("Button", "AtlasLootItemsFrame_Wishlist_Share", AtlasLootItemsFrame, "OptionsButtonTemplate");
        sharebtn:SetPoint("BOTTOM", "AtlasLootItemsFrame_Wishlist_Swap", "BOTTOM",100,0);
        sharebtn:SetText(AL["Share"]);
        sharebtn:SetScript("OnClick", function() AtlasLoot:ShareWishList() end)
        sharebtn:Hide();
        -- Filter Button
local filterbtn = CreateFrame("CheckButton","AtlasLootFilterCheck",AtlasLootItemsFrame,"OptionsCheckButtonTemplate");
        filterbtn:SetPoint("BOTTOM", "AtlasLootItemsFrame", "BOTTOM",85 ,27);
        filterbtn.Label = filterbtn:CreateFontString("AtlasLootFilterCheckText","OVERLAY","GameFontNormal");
        filterbtn.Label:SetText(AL["Filter"]);
        filterbtn.Label:SetPoint("RIGHT", AtlasLootFilterCheck, 30, 2);
        filterbtn:RegisterForClicks("LeftButtonDown","RightButtonDown");
        filterbtn:SetScript("OnClick", function(self, btnclick) AtlasLoot_FilterEnableButton(self, btnclick) end);

        -- Quick Looks Button
local looksbtn = CreateFrame("Button", "AtlasLootQuickLooksButton", AtlasLootItemsFrame);
        looksbtn:SetPoint("BOTTOM", "AtlasLootItemsFrame", "BOTTOM",58,28);
        looksbtn:SetSize(25,25);
        looksbtn.Label = looksbtn:CreateFontString("AtlasLoot_QuickLooks","OVERLAY","GameFontNormal");
        looksbtn.Label:SetSize(200,25);
        looksbtn.Label:SetText(AL["Add to QuickLooks:"]);
        looksbtn.Label:SetPoint("LEFT", "AtlasLootQuickLooksButton", -125, 0);
        looksbtn.Label:SetJustifyH("LEFT");
        looksbtn:SetNormalTexture("Interface\\Buttons\\UI-SpellbookIcon-NextPage-Up");
        looksbtn:SetPushedTexture("Interface\\Buttons\\UI-SpellbookIcon-NextPage-Down");
        looksbtn:SetDisabledTexture("Interface\\Buttons\\UI-SpellbookIcon-NextPage-Disabled");
        looksbtn:SetHighlightTexture("Interface\\Buttons\\UI-Common-MouseHilight", "ADD");
        looksbtn:SetScript("OnClick", function(self) AtlasLoot:ShowQuickLooks(self) end)
        looksbtn:SetScript("OnShow", function(self)
            if (AtlasLootItemsFrame.refresh) and ((AtlasLootItemsFrame.refresh[1] == "SearchResult") or (AtlasLootItemsFrame.refresh[1] == "WishList")) then
                self:Disable();
            else
                self:Enable();
            end
        end)
        looksbtn:Hide();
        
------------------------------------ Buttons at the top of the frame ---------------------------------------

    --Close Button
local closebtn = CreateFrame("Button", "AtlasLootDefaultFrame_CloseButton", AtlasLootDefaultFrame, "UIPanelCloseButton");
    closebtn:SetPoint("TOPRIGHT", AtlasLootDefaultFrame, "TOPRIGHT",-10,-10);
    closebtn:SetScript("OnClick", function() AtlasLootDefaultFrame:Hide() end);

    --Load All Addon Moduels Button
local loadModulebtn = CreateFrame("Button", "AtlasLootDefaultFrame_LoadModules", AtlasLootDefaultFrame, "OptionsButtonTemplate");
    loadModulebtn:SetSize(105,20);
    loadModulebtn:SetPoint("TOPRIGHT", AtlasLootDefaultFrame, "TOPRIGHT",-38,-15);
    loadModulebtn:SetText(AL["Load Modules"]);
    loadModulebtn:SetScript("OnClick", function() AtlasLoot:LoadAllModules() end);

    --Options Button
local optionsbtn = CreateFrame("Button", "AtlasLootDefaultFrame_Options", AtlasLootDefaultFrame, "OptionsButtonTemplate");
    optionsbtn:SetSize(105,20);
    optionsbtn:SetPoint("TOPLEFT", AtlasLootDefaultFrame, "TOPLEFT",40,-15);
    optionsbtn:SetText(AL["Options"]);
    optionsbtn:SetScript("OnClick", function() AtlasLootOptions_Toggle() end);

    --Moduel Menu Button
local menubtn = CreateFrame("Button", "AtlasLootDefaultFrame_Menu", AtlasLootDefaultFrame, "OptionsButtonTemplate");
    menubtn:SetSize(174,25);
    menubtn:SetPoint("TOPLEFT", AtlasLootDefaultFrame, "TOPLEFT",38,-55);
    menubtn.Lable = menubtn:CreateFontString("AtlasLootDefaultFrame_SelectedCategory", "OVERLAY","GameFontNormal")
    menubtn.Lable:SetPoint("TOP",menubtn,"BOTTOM",0,37);
    menubtn.Lable:SetText("Select Module");
    menubtn.Lable:Show();
    menubtn:SetText(AL["Select Loot Table"]);
    menubtn:SetScript("OnClick", function(self) 
        if AtlasLoot_Dewdrop:IsOpen() then
            AtlasLoot_Dewdrop:Close();
        else
            AtlasLoot_Dewdrop:Open(self);
        end
    end);

    --SubMenu Button
local submenubtn = CreateFrame("Button", "AtlasLootDefaultFrame_SubMenu", AtlasLootDefaultFrame, "OptionsButtonTemplate");
    submenubtn:SetSize(200,25);
    submenubtn:SetPoint("LEFT", "AtlasLootDefaultFrame_Menu", "RIGHT",0,0);
    submenubtn.Lable = submenubtn:CreateFontString("AtlasLootDefaultFrame_SelectedTable", "OVERLAY","GameFontNormal")
    submenubtn.Lable:SetPoint("TOP","AtlasLootDefaultFrame_SubMenu","BOTTOM",0,37);
    submenubtn.Lable:SetText("Select Subcategory");
    submenubtn.Lable:Show();
    submenubtn.Text = submenubtn:CreateFontString("AtlasLootDefaultFrame_SubMenuText", "OVERLAY","GameFontNormal")
    submenubtn.Text:SetPoint("LEFT","AtlasLootDefaultFrame_SubMenu","RIGHT",0,0);
    submenubtn.Text:SetJustifyH("CENTER");
    submenubtn.Text:SetSize(190,25);
    submenubtn.Text:Show();
    submenubtn:SetScript("OnClick", function(self)
        if AtlasLoot_DewdropSubMenu:IsOpen() then
            AtlasLoot_DewdropSubMenu:Close();
        else
            AtlasLoot_DewdropSubMenu:Open(self);
        end
    end);

    --Expansion Menu Button
local expansionmenubtn = CreateFrame("Button", "AtlasLootDefaultFrame_ExpansionMenu", AtlasLootDefaultFrame, "OptionsButtonTemplate");
    expansionmenubtn:SetSize(174,25);
    expansionmenubtn:SetPoint("LEFT", "AtlasLootDefaultFrame_SubMenu", "RIGHT",0,0);
    expansionmenubtn:SetText(AtlasLoot_ExpansionMenu[GetAccountExpansionLevel()+1][1]);
    expansionmenubtn.Lable = expansionmenubtn:CreateFontString("AtlasLootDefaultFrame_SelectedTable2", "OVERLAY","GameFontNormal")
    expansionmenubtn.Lable:SetPoint("TOP",expansionmenubtn,"BOTTOM",0,37);
    expansionmenubtn.Lable:SetText("Select Expansion");
    expansionmenubtn.Lable:Show();
    expansionmenubtn:SetScript("OnClick", function(self)
        if AtlasLoot_DewdropExpansionMenu:IsOpen() then
            AtlasLoot_DewdropExpansionMenu:Close();
        else
            AtlasLoot_DewdropExpansionMenu:Open(self);
        end
    end);

---------------------------------------- Buttons Under the loot and subtable frames -------------------------------------------

    --Wish List Button
local wishbtn = CreateFrame("Button", "AtlasLootDefaultFrameWishListButton", AtlasLootDefaultFrame, "OptionsButtonTemplate");
        wishbtn:SetPoint("BOTTOMLEFT", "AtlasLootDefaultFrame", "BOTTOMLEFT", 40, 63);
        wishbtn:SetSize(105,20);
        wishbtn:RegisterForClicks("LeftButtonDown","RightButtonDown");
        wishbtn:SetScript("OnClick", function(self, btnclick)AtlasLoot:WishListButton("","","","","",self,true,btnclick) end);
        wishbtn:SetText(AL["Wishlist"]);
        wishbtn:SetScript("OnEnter", function(self)
                GameTooltip:ClearLines();
                GameTooltip:SetOwner(self, "ANCHOR_RIGHT", -(self:GetWidth() / 2), 5);
                GameTooltip:AddLine("Right Click For Menu");
                GameTooltip:Show();
        end);
        wishbtn:SetScript("OnLeave", function()
            if(GameTooltip:IsVisible()) then
                GameTooltip:Hide();
            end
        end);

    --Quick Look Buttons
local function presetcreate(preset,num)
    preset:SetSize(105,20);
    preset:SetScript("OnEnter", function(self)
        if self:IsEnabled() then
            GameTooltip:ClearLines();
            GameTooltip:SetOwner(self, "ANCHOR_RIGHT", -(self:GetWidth() / 2), 5);
            GameTooltip:AddLine(AtlasLootCharDB["QuickLooks"][num][6]);
            GameTooltip:Show();
        end
    end);
    preset:SetScript("OnLeave", function()
        if(GameTooltip:IsVisible()) then
            GameTooltip:Hide();
        end
    end);
    preset:SetScript("OnClick", function()
        if AtlasLoot:IsLootTableAvailable(AtlasLootCharDB["QuickLooks"][num][4]) then
            ATLASLOOT_LASTMODULE = AtlasLootCharDB["QuickLooks"][num][4];
            ATLASLOOT_CURRENTTABLE = AtlasLootCharDB["QuickLooks"][num][5];
            if AtlasLootCharDB["QuickLooks"][num][2] == "AtlasLootWishList" then
                AtlasLoot:ShowWishList(AtlasLootCharDB["QuickLooks"][num][1], AtlasLootCharDB["QuickLooks"][num][3]);
            else
                AtlasLoot:ShowItemsFrame(AtlasLootCharDB["QuickLooks"][num][1], AtlasLootCharDB["QuickLooks"][num][2], AtlasLootCharDB["QuickLooks"][num][3]);
            end
        end
    end);
    preset:SetScript("OnShow", function(self)
            self:SetText(AL["QuickLook"].." "..num);
            if ((not AtlasLootCharDB["QuickLooks"][num]) or (not AtlasLootCharDB["QuickLooks"][num][1])) or (AtlasLootCharDB["QuickLooks"][num][1]==nil) then
                self:Disable();
            end
    end);

end
    --QuickLook Button 1
local presetsize = 3.75;
local preset1 = CreateFrame("Button", "AtlasLootDefaultFrame_Preset1", AtlasLootDefaultFrame, "OptionsButtonTemplate");
    presetcreate(preset1,1);
    preset1:SetPoint("LEFT", AtlasLootDefaultFrameWishListButton, "RIGHT", presetsize, 0);
    --QuickLook Button 2
local preset2 = CreateFrame("Button", "AtlasLootDefaultFrame_Preset2", AtlasLootDefaultFrame, "OptionsButtonTemplate");
    presetcreate(preset2,2);
    preset2:SetPoint("LEFT", "AtlasLootDefaultFrame_Preset1", "RIGHT", presetsize, 0);
    --QuickLook Button 3
local preset3 = CreateFrame("Button", "AtlasLootDefaultFrame_Preset3", AtlasLootDefaultFrame, "OptionsButtonTemplate");
    presetcreate(preset3,3);
    preset3:SetPoint("LEFT", "AtlasLootDefaultFrame_Preset2", "RIGHT", presetsize, 0);
    --QuickLook Button 4
local preset4 = CreateFrame("Button", "AtlasLootDefaultFrame_Preset4", AtlasLootDefaultFrame, "OptionsButtonTemplate");
    presetcreate(preset4,4);
    preset4:SetPoint("LEFT", "AtlasLootDefaultFrame_Preset3", "RIGHT", presetsize, 0);

    --Search Edit Box
local searchbox = CreateFrame("EditBox","AtlasLootDefaultFrameSearchBox",AtlasLootDefaultFrame,"InputBoxTemplate");
    searchbox:SetSize(190,32);
    searchbox:SetMaxLetters(100);
    searchbox:SetAutoFocus(false);
    searchbox:SetPoint("TOPLEFT",AtlasLootDefaultFrameWishListButton,"BOTTOMLEFT",7,-3)
    searchbox:SetTextInsets(0, 8, 0, 0);
    searchbox:SetScript("OnEnterPressed", function(self)
        AtlasLoot:Search(self:GetText());
        self:ClearFocus();
    end)
    local fstring = searchbox:CreateFontString("AtlasLootDefaultFrameSearchString", "ARTWORK", "GameFontNormal");

    --Search Button
local searchbtn = CreateFrame("Button","AtlasLootDefaultFrameSearchButton",AtlasLootDefaultFrame,"UIPanelButtonTemplate2");
    searchbtn:SetSize(69,32);
    searchbtn:SetPoint("LEFT","AtlasLootDefaultFrameSearchBox","RIGHT",2,0);
	searchbtn:SetText(AL["Search"]);
    searchbtn:SetScript("OnClick", function()
        AtlasLoot:Search(AtlasLootDefaultFrameSearchBox:GetText());
        AtlasLootDefaultFrameSearchBox:ClearFocus();
    end);

    --Search Options Button
local searchopt = CreateFrame("Button", "AtlasLootDefaultFrameSearchOptionsButton", AtlasLootDefaultFrameSearchButton);
    searchopt:SetSize(28,28);
    searchopt:SetPoint("LEFT","AtlasLootDefaultFrameSearchButton","RIGHT",-5,0);
    searchopt:SetNormalTexture("Interface\\Buttons\\UI-SpellbookIcon-NextPage-Up");
    searchopt:SetPushedTexture("Interface\\Buttons\\UI-SpellbookIcon-NextPage-Down");
    searchopt:SetDisabledTexture("Interface\\Buttons\\UI-SpellbookIcon-NextPage-Disabled");
    searchopt:SetHighlightTexture("Interface\\Buttons\\UI-Common-MouseHilight","ADD");
    searchopt:SetScript("OnClick", function(self) AtlasLoot:ShowSearchOptions(self) end)

    --Clear Search Button
local searchclear = CreateFrame("Button","AtlasLootDefaultFrameSearchClearButton",AtlasLootDefaultFrameSearchBox,"UIPanelButtonTemplate2");
    searchclear:SetSize(58,32);
    searchclear:SetPoint("LEFT",AtlasLootDefaultFrameSearchOptionsButton,"RIGHT",-2,0);
    searchclear:SetText(AL["Clear"]);
    searchclear:SetScript("OnClick", function()
        AtlasLootDefaultFrameSearchBox:SetText("");
        AtlasLootDefaultFrameSearchBox:ClearFocus();
    end);

    --Last Result Button
local lastresult = CreateFrame("Button","AtlasLootDefaultFrameLastResultButton",AtlasLootDefaultFrameSearchBox,"UIPanelButtonTemplate2");
    lastresult:SetSize(100,32);
    lastresult:SetPoint("LEFT",AtlasLootDefaultFrameSearchClearButton,"RIGHT",1,0);
    lastresult:SetText(AL["Last Result"]);
    lastresult:SetScript("OnClick", function() AtlasLoot:ShowSearchResult() end);

    -- Advanced Search Button
local advSearch = CreateFrame("Button","AtlasLootDefaultFrameAdvancedSearchButton", AtlasLootDefaultFrame,"UIPanelButtonTemplate2");
    advSearch:SetSize(95,32);
    advSearch:SetPoint("LEFT",AtlasLootDefaultFrameLastResultButton,"RIGHT",2);
    advSearch:SetText("Advanced");
    advSearch:SetScript("OnClick", function()
        AtlasLoot_AdvancedSearchShow();
        AtlasLootDefaultFrameSearchBox:ClearFocus();
    end)

---------------------  Diffcuility ScrollFrame ----------------------------------
local ROW_HEIGHT = 16;   -- How tall is each row?
local MAX_ROWS = 5;      -- How many rows can be shown at once?

local scrollFrame = CreateFrame("Frame", "Atlasloot_Difficulty_ScrollFrame", AtlasLootDefaultFrame);
    scrollFrame:EnableMouse(true);
    scrollFrame:SetSize(265, ROW_HEIGHT * MAX_ROWS + 16);
    scrollFrame:SetPoint("LEFT","AtlasLootDefaultFrame_ExpansionMenu","RIGHT",0,-39);
    scrollFrame:SetBackdrop({
        bgFile = "Interface\\DialogFrame\\UI-DialogBox-Background", tile = true, tileSize = 16,
        edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border", edgeSize = 16,
        insets = { left = 4, right = 4, top = 4, bottom = 4 },
    });
    scrollFrame.Lable = scrollFrame:CreateFontString("Atlasloot_HeaderLabel", "OVERLAY","GameFontNormal")
    scrollFrame.Lable:SetPoint("TOPLEFT",Atlasloot_Difficulty_ScrollFrame,10,-10);
    scrollFrame.Lable:SetJustifyH("LEFT");
    scrollFrame.Lable:SetFont("GameFontNormal", 24);

function AtlasLoot:ScrollFrameUpdate(hide,wishlist)
    local maxValue,offset,row,value;
    scrollFrame.wishList = nil;
    if wishlist then
        scrollFrame.wishList = wishlist;
        maxValue = #AtlasLootWishList[wishlist];
        FauxScrollFrame_Update(scrollFrame.scrollBar, maxValue, MAX_ROWS, ROW_HEIGHT);
        offset = FauxScrollFrame_GetOffset(scrollFrame.scrollBar);
        for i = 1, MAX_ROWS do
            value = i + offset
            scrollFrame.rows[i]:SetChecked(false);
            scrollFrame.rows[i]:SetHighlightTexture("Interface\\QuestFrame\\UI-QuestTitleHighlight", "ADD");
            if value <= maxValue and AtlasLootWishList[wishlist][value] then
                row = scrollFrame.rows[i]
                row:SetText("|cffFFd200"..AtlasLootWishList[wishlist][value].Name);
                row.itemIndex = value;
                if row.itemIndex == ATLASLOOT_CURRENT_WISHLIST_NUM then
                    row:SetChecked(true);
                end
                row:Show()
            else
                scrollFrame.rows[i]:Hide()
            end
        end
    elseif AtlasLoot_Difficulty then
        maxValue = #AtlasLoot_Difficulty[ATLASLOOT_CURRENTTYPE];
        FauxScrollFrame_Update(scrollFrame.scrollBar, maxValue, MAX_ROWS, ROW_HEIGHT);
        offset = FauxScrollFrame_GetOffset(scrollFrame.scrollBar);
        for i = 1, MAX_ROWS do
            value = i + offset
            scrollFrame.rows[i]:SetChecked(false);
            scrollFrame.rows[i]:SetHighlightTexture("Interface\\QuestFrame\\UI-QuestTitleHighlight", "ADD");
            if value <= maxValue and AtlasLoot_Difficulty[ATLASLOOT_CURRENTTYPE][value] and hide == nil then
                row = scrollFrame.rows[i]
                row:SetText("|cffFFd200"..AtlasLoot_Difficulty[ATLASLOOT_CURRENTTYPE][value][1]);
                row.itemIndex = AtlasLoot_Difficulty[ATLASLOOT_CURRENTTYPE][value][2];
                if row.itemIndex == ItemindexID then
                    row:SetChecked(true);
                end
                row:Show()
            else
                scrollFrame.rows[i]:Hide()
            end
        end
    end
end

local scrollSlider = CreateFrame("ScrollFrame","AtlasLootDefaultFrameScroll", Atlasloot_Difficulty_ScrollFrame, "FauxScrollFrameTemplate");
    scrollSlider:SetPoint("TOPLEFT", 0, -8);
    scrollSlider:SetPoint("BOTTOMRIGHT", -30, 8);
    scrollSlider:SetScript("OnVerticalScroll", function(self, offset)
    self.offset = math.floor(offset / ROW_HEIGHT + 0.5);
    if scrollFrame.wishList then
        AtlasLoot:ScrollFrameUpdate(nil,scrollFrame.wishList);
    else
        AtlasLoot:ScrollFrameUpdate();
    end
end)

scrollSlider:SetScript("OnShow", function()
    if scrollFrame.wishList then
        AtlasLoot:ScrollFrameUpdate(nil,scrollFrame.wishList);
    else
        AtlasLoot:ScrollFrameUpdate();
    end
end)

scrollFrame.scrollBar = scrollSlider

local rows = setmetatable({}, { __index = function(t, i)
	local row = CreateFrame("CheckButton", "$parentRow"..i, Atlasloot_Difficulty_ScrollFrame)
	row:SetSize(230, ROW_HEIGHT);
    --row:SetFrameStrata("Dialog");
	row:SetNormalFontObject(GameFontHighlightLeft);
    row:SetCheckedTexture("Interface\\QuestFrame\\UI-QuestTitleHighlight", "ADD");
    row:SetScript("OnClick", function()
        if scrollFrame.wishList then
            AtlasLoot:ShowWishList(scrollFrame.wishList,row.itemIndex);
            AtlasLoot_CurrentWishList["Show"].ListNum = row.itemIndex;
            AtlasLoot:ScrollFrameUpdate(nil,scrollFrame.wishList);
        else
            ItemindexID = row.itemIndex;
            if not AtlasLootDefaultFrame_AdvancedSearchPanel:IsVisible() then
            AtlasLoot:ShowItemsFrame(AtlasLootItemsFrame.refresh[1], AtlasLootItemsFrame.refresh[2], AtlasLootItemsFrame.refresh[3]);
            end
            AtlasLoot:ScrollFrameUpdate();
        end
       
    end)
	if i == 1 then
		row:SetPoint("TOPLEFT", scrollFrame, 8, -8)
	else
		row:SetPoint("TOPLEFT", scrollFrame.rows[i-1], "BOTTOMLEFT")
	end

	rawset(t, i, row)
	return row
end })

scrollFrame.rows = rows
local MAX_ROWS2 = 26;      -- How many rows can be shown at once?

--------------------Subtable Frame--------------------
local subtableFrame = CreateFrame("Frame", "Atlasloot_SubTableFrame", AtlasLootDefaultFrame);
    subtableFrame:EnableMouse(true);
    subtableFrame:SetSize(265, ROW_HEIGHT * MAX_ROWS2 + 23);
    subtableFrame:SetPoint("BOTTOMLEFT","Atlasloot_Difficulty_ScrollFrame",0,-446);
    subtableFrame:SetBackdrop({
        bgFile = "Interface\\DialogFrame\\UI-DialogBox-Background", tile = true, tileSize = 16,
        edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border", edgeSize = 16,
        insets = { left = 4, right = 4, top = 4, bottom = 4 },
    });

function AtlasLoot:SubTableScrollFrameUpdate(tablename, dataSource, tablenum)
    local maxValue = #_G[dataSource][tablename];
    subtableFrame.tablename = tablename;
    subtableFrame.dataSource = dataSource;
    subtableFrame.tablenum = tablenum;
    FauxScrollFrame_Update(subtableFrame.scrollBar, maxValue, MAX_ROWS2, ROW_HEIGHT);
    local offset = FauxScrollFrame_GetOffset(subtableFrame.scrollBar);
    for i = 1, MAX_ROWS2 do
        local value = i + offset
        subtableFrame.rows[i]:SetChecked(false);
        subtableFrame.rows[i]:SetHighlightTexture("Interface\\QuestFrame\\UI-QuestTitleHighlight", "ADD");
        if value <= maxValue and _G[dataSource][tablename][value] and tablename ~= "SearchMENU" then
            local row = subtableFrame.rows[i]
                row.dataSource = dataSource;
                row.tablename = tablename;
                row.tablenum = value;
            if dataSource == "AtlasLoot_MapData" then
                row.Text:SetText(_G[dataSource][tablename][value][1]);
                row:SetScript("OnEnter", function(self)
                    GameTooltip:SetOwner(self, "ANCHOR_TOP");
                    GameTooltip:SetText(_G[dataSource][tablename][value][1]);
                    GameTooltip:Show();
                end)
                row:SetScript("OnLeave", function() GameTooltip:Hide() end)
            else
                row.Text:SetText("|cffFFd200".._G[dataSource][tablename][value].Name);
                row:SetScript("OnEnter", function(self)
                    GameTooltip:Hide();
                end)
                if tablenum == value and dataSource ~= "AtlasLoot_MapData" then
                    row:SetChecked(true);
                end
            end
            row:Show();
        else
            subtableFrame.rows[i]:Hide();
        end
    end
end

local scrollSlider2 = CreateFrame("ScrollFrame","AtlasLootDefaultFrameSubTableScroll",Atlasloot_SubTableFrame,"FauxScrollFrameTemplate");
    scrollSlider2:SetPoint("TOPLEFT", 0, -8)
    scrollSlider2:SetPoint("BOTTOMRIGHT", -30, 8)
    scrollSlider2:SetScript("OnVerticalScroll", function(self, offset)
        self.offset = math.floor(offset / ROW_HEIGHT + 0.5)
            AtlasLoot:SubTableScrollFrameUpdate(subtableFrame.tablename, subtableFrame.dataSource, subtableFrame.tablenum);
    end)

    subtableFrame.scrollBar = scrollSlider2

local rows2 = setmetatable({}, { __index = function(t, i)
    local row = CreateFrame("CheckButton", "$parentRow"..i, Atlasloot_SubTableFrame)
    row:SetSize(230, ROW_HEIGHT);
    --row:SetFrameStrata("Dialog");
    row:SetNormalFontObject(GameFontHighlightLeft);
    row:SetCheckedTexture("Interface\\QuestFrame\\UI-QuestTitleHighlight", "ADD");
    row.Text = row:CreateFontString("$parentRow"..i.."Text","OVERLAY","GameFontNormal");
    row.Text:SetSize(230, ROW_HEIGHT);
    row.Text:SetPoint("LEFT",row);
    row.Text:SetJustifyH("LEFT");
    row:SetScript("OnClick", function()
        if row.dataSource ~= "AtlasLoot_MapData" then
            AtlasLoot:ShowItemsFrame(row.tablename, row.dataSource, row.tablenum);
        else
            row:SetChecked(false);
        end
    end)
    if i == 1 then
        row:SetPoint("TOPLEFT", subtableFrame, 8, -8)
    else
        row:SetPoint("TOPLEFT", subtableFrame.rows[i-1], "BOTTOMLEFT")
    end

    rawset(t, i, row)
    return row
end })

subtableFrame.rows = rows2

--------------------------------- Atlas Map and map buttons -----------------------------------------------

    --Atlas Map
local map = CreateFrame("Frame", "AtlasLootDefaultFrame_Map", AtlasLootDefaultFrame);
    map:SetSize(540,515);
    map:SetPoint("BOTTOMLEFT", AtlasLootDefaultFrame, "BOTTOMLEFT",40,90);
    map:SetFrameStrata("HIGH");
    map:Hide();
    map:EnableMouse();
    map:SetScript("OnMouseDown", function(self, button)
        if button == "RightButton" then
            AtlasLoot:MapOnShow();
        end
    end);

    -- Map Button
local mapbtn = CreateFrame("Button","AtlasLootDefaultFrame_MapButton", AtlasLootDefaultFrame,"OptionsButtonTemplate");
    mapbtn:SetSize(90,24);
    mapbtn:SetPoint("BOTTOMLEFT",Atlasloot_SubTableFrame,0,-27.5);
    mapbtn:SetText("Map");
    mapbtn:SetScript("OnClick", function() AtlasLoot:MapOnShow(); end)

    -- Map Select Button
local mapSelbtn = CreateFrame("Button","AtlasLootDefaultFrame_MapSelectButton", AtlasLootDefaultFrame,"OptionsButtonTemplate");
    mapSelbtn:SetSize(180,24);
    mapSelbtn:SetPoint("BOTTOMRIGHT",Atlasloot_SubTableFrame,5,-27.5);
    mapSelbtn:SetScript("OnClick", function(self)
        if AtlasLoot_MapMenu:IsOpen() then
            AtlasLoot_MapMenu:Close();
        else
            AtlasLoot_MapMenu:Open(self);
        end
    end);
    mapSelbtn:SetText("No Map");

    -- Load Current Instance Button
local currentInstance = CreateFrame("Button","AtlasLootDefaultFrame_LoadInstanceButton", AtlasLootDefaultFrame,"OptionsButtonTemplate");
    currentInstance:SetSize(283,24);
    currentInstance:SetPoint("BOTTOMRIGHT",Atlasloot_SubTableFrame,10,-58);
    currentInstance:SetScript("OnClick", function() AtlasLoot:ShowInstance(); end)
    currentInstance:SetText("Load Current Instance");