vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
--[[--------------------------------------------------------------------------------
  ItemSyncCore Tooltip Framework

  Author:  Derkyle
  Website: http://www.manaflux.com
-----------------------------------------------------------------------------------]]


local ISync_lOriginal_GameTooltip_SetOwner;
local ISync_lOriginal_GameTooltip_SetHyperlink;
local ISync_lOriginal_GameTooltip_SetInventoryItem;
local ISync_lOriginal_GameTooltip_SetBagItem;
local ISync_lOriginal_GameTooltip_SetLootItem;
local ISync_lOriginal_GameTooltip_SetQuestItem;
local ISync_lOriginal_GameTooltip_SetQuestLogItem;
local ISync_lOriginal_GameTooltip_SetCraftItem;
local ISync_lOriginal_GameTooltip_SetTradeSkillItem;
local ISync_lOriginal_GameTooltip_SetMerchantItem;
local ISync_lOriginal_GameTooltip_SetTradePlayerItem;
local ISync_lOriginal_GameTooltip_SetTradeTargetItem;
local ISync_lOriginal_GameTooltip_SetAuctionItem;

local ISync_lOriginal_GameTooltip_OnEvent;
local ISync_lOriginal_GameTooltip_OnHide;
local ISync_lOriginal_SetItemRef;

local ISync_GameTooltip_HookedMoney;
local ISync_GameTooltip_HookedOnShow;

--GLOBALS
ISYNC_ITEMCOST = 0;

local lastTooltip = { };

---------------------------------------------------
-- ISync:HookTooltip()
---------------------------------------------------
function ISync:HookTooltip()


        ------------------------------------------------------------------
        -- DO GAMETOOLTIP HOOKS
        ------------------------------------------------------------------
        --GameTooltip.SetOwner
        ISync_lOriginal_GameTooltip_SetOwner = GameTooltip.SetOwner;
        GameTooltip.SetOwner = ISync_ToolTip_GT_SetOwner;
        
        --GameTooltip.SetHyperlink
        ISync_lOriginal_GameTooltip_SetHyperlink = GameTooltip.SetHyperlink;
        GameTooltip.SetHyperlink = ISync_ToolTip_GT_SetHyperlink;
        
        --GameTooltip.SetInventoryItem
        ISync_lOriginal_GameTooltip_SetInventoryItem = GameTooltip.SetInventoryItem;
        GameTooltip.SetInventoryItem = ISync_ToolTip_GT_SetInventoryItem;
        
        --GameTooltip.SetBagItem  
        ISync_lOriginal_GameTooltip_SetBagItem = GameTooltip.SetBagItem;
        GameTooltip.SetBagItem = ISync_ToolTip_GT_SetBagItem;
        
        --GameTooltip.SetLootItem
        ISync_lOriginal_GameTooltip_SetLootItem = GameTooltip.SetLootItem;
        GameTooltip.SetLootItem = ISync_ToolTip_GT_SetLootItem;
        
        --GameTooltip.SetQuestItem
        ISync_lOriginal_GameTooltip_SetQuestItem = GameTooltip.SetQuestItem;
        GameTooltip.SetQuestItem = ISync_ToolTip_GT_SetQuestItem;
        
        --GameTooltip.SetQuestLogItem
        ISync_lOriginal_GameTooltip_SetQuestLogItem = GameTooltip.SetQuestLogItem;
        GameTooltip.SetQuestLogItem = ISync_ToolTip_GT_SetQuestLogItem;
        
        --GameTooltip.SetCraftItem
        ISync_lOriginal_GameTooltip_SetCraftItem = GameTooltip.SetCraftItem;
        GameTooltip.SetCraftItem = ISync_ToolTip_GT_SetCraftItem;
        
        --GameTooltip.SetTradeSkillItem
        ISync_lOriginal_GameTooltip_SetTradeSkillItem = GameTooltip.SetTradeSkillItem;
        GameTooltip.SetTradeSkillItem = ISync_ToolTip_GT_SetTradeSkillItem;
        
        --GameTooltip.SetMerchantItem
        ISync_lOriginal_GameTooltip_SetMerchantItem = GameTooltip.SetMerchantItem;
        GameTooltip.SetMerchantItem = ISync_ToolTip_GT_SetMerchantItem;
        
        --GameTooltip.SetTradePlayerItem
        ISync_lOriginal_GameTooltip_SetTradePlayerItem = GameTooltip.SetTradePlayerItem;
        GameTooltip.SetTradePlayerItem = ISync_ToolTip_GT_SetTradePlayerItem;
        
        --GameTooltip.SetTradeTargetItem
        ISync_lOriginal_GameTooltip_SetTradeTargetItem = GameTooltip.SetTradeTargetItem;
        GameTooltip.SetTradeTargetItem = ISync_ToolTip_GT_SetTradeTargetItem;

        --GameTooltip.SetAuctionItem
        ISync_lOriginal_GameTooltip_SetAuctionItem = GameTooltip.SetAuctionItem;
        GameTooltip.SetAuctionItem = ISync_ToolTip_GT_SetAuctionItem;
        
        --Hook for GameTooltip_OnEvent Function
        ISync_lOriginal_GameTooltip_OnEvent = GameTooltip_OnEvent;
        GameTooltip_OnEvent = ISync_ToolTip_GT_OnEvent;
        
        --Hook the gametooltip onhide
        ISync_lOriginal_GameTooltip_OnHide = GameTooltip_OnHide;
        GameTooltip_OnHide = ISync_ToolTip_GT_OnHide;
        
        --Hook the gametooltip OnAddMoney
        ISync_GameTooltip_HookedMoney = GameTooltip:GetScript("OnTooltipAddMoney");
        GameTooltip:SetScript("OnTooltipAddMoney", ISync_ToolTip_GT_AddMoney);
        
        --Hook the gametooltip OnShow
        ISync_GameTooltip_HookedOnShow = GameTooltip:GetScript("OnShow");
        GameTooltip:SetScript("OnShow", ISync_ToolTip_GT_OnShow);
        
        ------------------------------------------------------------------
        ------------------------------------------------------------------      
        
        --for items that are clicked on in chat
        ISync_lOriginal_SetItemRef = SetItemRef;
        SetItemRef = ISync_SetItemRef;
        

end


--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------


---------------------------------------------------
-- ISync_ToolTip_GT_OnEvent
---------------------------------------------------
function ISync_ToolTip_GT_OnEvent()

    if event ~= "CLEAR_TOOLTIP" then
        return ISync_lOriginal_GameTooltip_OnEvent();
    end 
    
end


---------------------------------------------------
-- ISync_ToolTip_GT_OnHide
---------------------------------------------------
function ISync_ToolTip_GT_OnHide()
         ISync_lOriginal_GameTooltip_OnHide();
        
        --don't do anything with the parsing tooltip
        if(this:GetName() == "ISyncTooltip") then return nil; end
        
        --make sure this is only applied to the GameTooltip
        if(this:GetName() == "GameTooltip") then
        
                GameTooltip.isDisplayDone = nil;
                GameTooltip.SendtoMods = nil;
                GameTooltip_ClearMoney();
                ISync_GameTooltipIcon:Hide();
                ISync_MoneyTooltip:Hide();
        end
        
end


---------------------------------------------------
-- ISync_ToolTip_GT_SetOwner
---------------------------------------------------
function ISync_ToolTip_GT_SetOwner(this, owner, anchor)

        --return to original to prevent errors
        ISync_lOriginal_GameTooltip_SetOwner(this, owner, anchor);
                
        --we want to store this for later use (like for Auctioneer)
        this.owner = owner;
        this.anchor = anchor;
                
end


---------------------------------------------------
-- ISync_ToolTip_GT_AddMoney
---------------------------------------------------
function ISync_ToolTip_GT_AddMoney()
         ISync_GameTooltip_HookedMoney(); --call the old function

        if(ISYNC_LOADYES == 1 and arg1 and not InRepairMode()) then ISYNC_ITEMCOST = arg1; end
        
end



---------------------------------------------------
-- ISync_ToolTip_GT_OnShow
---------------------------------------------------
function ISync_ToolTip_GT_OnShow()
        if(ISync_GameTooltip_HookedOnShow) then ISync_GameTooltip_HookedOnShow(); end

        --ISync_ToolTip_GT_OnHide();
end


--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------


---------------------------------------------------
-- ISync_SetItemRef
---------------------------------------------------
function ISync_SetItemRef( link, name, button)
        ISync_lOriginal_SetItemRef(link, name, button); --return
         
        --make sure we have a link to work with
        if(not link or not name) then return nil; end
        
        --make sure we have a tooltip to work with duh
        if(not ItemRefTooltip) then return nil; end
        
        --we need to weed out item links and player tooltips.
        if( strsub(link, 1, 6) ~= "Player" ) then
        
                if( ItemRefTooltip:IsVisible() and link) then
                
                        if (link) then
                                
                                if(not DressUpFrame:IsVisible()) then
                                        ISync:AddTooltipInfo(ItemRefTooltip, link, 1);
                                end
                                
                                --reset it after it's been added so that we can always see it
                                ItemRefTooltip.isDisplayDone = nil;
                        end

                end
                
        end
        
        
end

--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------



---------------------------------------------------
-- ISync_ToolTip_GT_SetHyperlink
---------------------------------------------------
function ISync_ToolTip_GT_SetHyperlink(this, link)

        if( link ) then
        
                local _,_,id = string.find(link, "^.*item:([0-9]+):.*$");
        
                if (id) then

                        ISync_lOriginal_GameTooltip_SetHyperlink(this, link);
                        ISync:AddTooltipInfo(this, link, 1);
                end
        end
end 




---------------------------------------------------
-- ISync_ToolTip_GT_SetInventoryItem
---------------------------------------------------
function ISync_ToolTip_GT_SetInventoryItem(this, unit, slot)

        local sItem, sCooldown, sRepair = ISync_lOriginal_GameTooltip_SetInventoryItem(this, unit, slot);
        
        if(not sItem) then return nil; end

        local link = (unit) and GetInventoryItemLink(unit, slot) or GetContainerItemLink(BANK_CONTAINER,this:GetID());
        local _, qty;

        if(unit) then
                qty = GetInventoryItemCount(unit, slot);
        else
                _, qty = GetContainerItemInfo(BANK_CONTAINER,this:GetID());
        end
        
        ISync:AddTooltipInfo(this, link, qty, 1);

        --return to original one        
        return sItem, sCooldown, sRepair;

end



---------------------------------------------------
-- ISync_ToolTip_GT_SetBagItem
---------------------------------------------------
function ISync_ToolTip_GT_SetBagItem(this, bag, slot)
        ISync_lOriginal_GameTooltip_SetBagItem(this, bag, slot);
        
        local link = GetContainerItemLink(bag, slot);
        local _, qty = GetContainerItemInfo(bag, slot);
        
        ISync:AddTooltipInfo(this, link, qty, 1);
                                
end



---------------------------------------------------
-- ISync_ToolTip_GT_SetLootItem
---------------------------------------------------
function ISync_ToolTip_GT_SetLootItem(this, slot)
        ISync_lOriginal_GameTooltip_SetLootItem(this, slot);
        
        local link = GetLootSlotLink(slot);
        local _,_, qty = GetLootSlotInfo(slot);
        
        ISync:AddTooltipInfo(this, link, qty, 1);

end



---------------------------------------------------
-- ISync_ToolTip_GT_SetQuestItem
---------------------------------------------------
function ISync_ToolTip_GT_SetQuestItem(this, unit, slot)
        ISync_lOriginal_GameTooltip_SetQuestItem(this, unit, slot);

        local link = GetQuestItemLink(unit, slot);
        local _,_, qty = GetQuestItemInfo(unit, slot);

        ISync:AddTooltipInfo(this, link, qty, 1);
        
end



---------------------------------------------------
-- ISync_ToolTip_GT_SetQuestLogItem
---------------------------------------------------
function ISync_ToolTip_GT_SetQuestLogItem(this, sOpt, slot)
        ISync_lOriginal_GameTooltip_SetQuestLogItem(this, sOpt, slot);
        
        local link = GetQuestLogItemLink(sOpt, slot);
        local name, texture, qty, quality, usable = GetQuestLogRewardInfo(slot);
        
        ISync:AddTooltipInfo(this, link, qty, 1);

end



---------------------------------------------------
-- ISync_ToolTip_GT_SetCraftItem
---------------------------------------------------
function ISync_ToolTip_GT_SetCraftItem(this, skill, slot)
        ISync_lOriginal_GameTooltip_SetCraftItem(this, skill, slot);
        
        local link = (slot) and GetCraftReagentItemLink(skill, slot) or GetCraftItemLink(skill);
        local _, _, qty = GetCraftReagentInfo(skill, slot);
        
        ISync:AddTooltipInfo(this, link, qty, 1);
                                
end



---------------------------------------------------
-- ISync_ToolTip_GT_SetTradeSkillItem
---------------------------------------------------
function ISync_ToolTip_GT_SetTradeSkillItem(this, skill, slot)
        ISync_lOriginal_GameTooltip_SetTradeSkillItem(this, skill, slot);

        local link = (slot) and GetTradeSkillReagentItemLink(skill, slot) or GetTradeSkillItemLink(skill);
        local _, _, qty;

        if(slot) then
                _, _, qty = GetTradeSkillReagentInfo(skill, slot);
        else
                qty = 1;
        end

        ISync:AddTooltipInfo(this, link, qty, 1);                                       
        
end


---------------------------------------------------
-- ISync_ToolTip_GT_SetMerchantItem
---------------------------------------------------
function ISync_ToolTip_GT_SetMerchantItem(this, slot)
        ISync_lOriginal_GameTooltip_SetMerchantItem(this, slot);

        local link = GetMerchantItemLink(slot);
        local _,_,_, qty = GetMerchantItemInfo(slot);
        
        ISync:AddTooltipInfo(this, link, qty, 1);
                                                
end


---------------------------------------------------
-- ISync_ToolTip_GT_SetTradePlayerItem
---------------------------------------------------
function ISync_ToolTip_GT_SetTradePlayerItem(this, slot)
        ISync_lOriginal_GameTooltip_SetTradePlayerItem(this, slot);
        
        local link = GetTradePlayerItemLink(slot);
        local _,_, qty = GetTradeTargetItemInfo(slot);
        
        ISync:AddTooltipInfo(this, link, qty, 1);
        
end


---------------------------------------------------
-- ISync_ToolTip_GT_SetTradeTargetItem
---------------------------------------------------
function ISync_ToolTip_GT_SetTradeTargetItem(this, slot)
        ISync_lOriginal_GameTooltip_SetTradeTargetItem(this, slot);
        
        local link = GetTradeTargetItemLink(slot);
        local _,_, qty = GetTradeTargetItemInfo(slot);
        
        ISync:AddTooltipInfo(this, link, qty, 1);
end



---------------------------------------------------
-- ISync_ToolTip_GT_SetAuctionItem
---------------------------------------------------
function ISync_ToolTip_GT_SetAuctionItem(this, unit, slot)
        ISync_lOriginal_GameTooltip_SetAuctionItem(this, unit, slot);
        
        local link = GetAuctionItemLink(unit, slot);
        local _,_,qty = GetAuctionItemInfo(unit, slot);
        
        ISync:AddTooltipInfo(this, link, qty, 1);
end


--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------


---------------------------------------------------
-- ISync:AddTooltipInfo
---------------------------------------------------
function ISync:AddTooltipInfo(sTooltip, sLink, sQty, sChk)

        --check
        if(not sTooltip) then return nil; end
        if(not sLink and not sQty) then return nil; end --if we don't have both, then ignore
        if(tonumber(sLink) and tonumber(sLink) == 0) then return nil; end--if we have a link but it's zero then ignore
        if(sLink and not sQty) then sQty = 1; end --if we have an item but no qty, then set qty to 1
        if(tonumber(sQty) and tonumber(sQty) == 0) then sQty = 1; end --fix incorrect qty
        if(not tonumber(sQty)) then sQty = 1; end --fix stupid errors
        if(sTooltip.isDisplayDone) then return nil; end
        
        --we don't want the information to be placed while we are at a merchant, EXCEPT if it's the clickable links.
        if(MerchantFrame:IsVisible() and sTooltip:GetName() ~= "ItemRefTooltip") then return nil; end
        
                --grab the itemid we need
                sLink = ISync:GetItemID(sLink);
                if(not sLink) then return nil; end --exit if nothing

                --grab the coreid
                local sID = ISync:GetCoreID(sLink);
                if(not tonumber(sID)) then return nil; end --exit if nothing

                sID = tonumber(sID); --convert
                
        
        local name_X, link_X, quality_X, minLevel_X, class_X, subclass_X, maxStack_X, equipType_X, iconTexture_X  = GetItemInfo("item:"..sLink);
        if(not name_X) then return nil; end --make sure
        

        --don't show for certain things cause it's annoying
        if(ISync:SetVar({"OPT","TOOLTIPITEMICONS"}, 1, "COMPARE") and not sChk) then--show the tooltip icon
                
                getglobal("ISync_"..sTooltip:GetName().."IconTexture"):SetTexture(iconTexture_X);

                if(sTooltip:GetName() == "ItemRefTooltip") then --move if equipcompare is installed
                        if(EquipCompare_Enabled) then
                                getglobal("ISync_"..sTooltip:GetName().."Icon"):SetPoint("TOPLEFT", "ItemRefTooltip", "TOPLEFT" , 3, 39);
                        end
                end
                
                getglobal("ISync_"..sTooltip:GetName().."Icon"):Show();
        else
                getglobal("ISync_"..sTooltip:GetName().."Icon"):Hide();
        end

        --to prevent continous fetching
        if(not lastTooltip.item or lastTooltip.item ~= sID) then
                lastTooltip.getPrice = nil;
                lastTooltip.vendPrice = nil;
                lastTooltip.vendQty = nil;
                lastTooltip.getPrice = ISync:FetchDB(sID, "price");
                lastTooltip.vendPrice = ISync:FetchDB(sID, "vendor");
                lastTooltip.vendQty = ISync:FetchDB(sID, "vendorqty");
                lastTooltip.item = sID;
        end

                
                
        if(ISync:SetVar({"OPT","SHOWMONEYICONS"}, 1, "COMPARE")) then --show money icons
                
                local chkAddLine        = 0;
                local getPrice          = lastTooltip.getPrice;
                local sFrameGet;
                local priceChk = 0;
                local vendorChk = 0;
                
                if(sTooltip == ItemRefTooltip) then
                        sFrameGet = "ISync_MoneyTooltipItemRef";
                else
                        sFrameGet = "ISync_MoneyTooltip";
                end
                
                        --start off hidden
                        local text = getglobal(sFrameGet.."Text1");
                        local money = getglobal(sFrameGet.."Money1");
                        local text2 = getglobal(sFrameGet.."Text2");
                        local money2 = getglobal(sFrameGet.."Money2");
                        money:Hide();
                        text:Hide();
                        money2:Hide();
                        text2:Hide();
                                                
                                        
                if(getPrice and tonumber(getPrice) and tonumber(getPrice) == -1) then --item has no value
                        
                        local text = getglobal(sFrameGet.."Text1");
                        local money = getglobal(sFrameGet.."Money1");
                        money:Hide();
                        text:Hide();
                                        
                        if(chkAddLine == 0) then sTooltip:AddLine(" "); chkAddLine = 1; end             
                        sTooltip:AddLine("|c00FFFF00"..ISYNC_NOSELLPRICE.."|r");        
                        sTooltip.isDisplayDone = 1;
                        priceChk = 0;
        
                elseif(getPrice and tonumber(getPrice) and tonumber(getPrice) > 0) then
                
                        getPrice = tonumber(getPrice) * sQty;

                        --PRICE
                        if(ISync:SetVar({"OPT","PRICE"}, 1, "COMPARE")) then
                        
                                        if(chkAddLine == 0) then sTooltip:AddLine(" "); chkAddLine = 1; end
                                        sTooltip:AddLine(" ", 0, 0, 0);

                                        local numLines = sTooltip:NumLines();
                                        local text = getglobal(sFrameGet.."Text1");
                                        local money = getglobal(sFrameGet.."Money1");
                                        local newLine = sTooltip:GetName().."TextLeft"..numLines;

                                        MoneyFrame_Update(sFrameGet.."Money1", getPrice);
                                        text:SetText("|c00FFFF00"..ISYNC_COST.."[|r|c00BDFCC9"..sQty.."|r|c00FFFF00]:  |r");
                                        text:Show();
                                        money:Show();

                                        --set the point at it's new location
                                        text:ClearAllPoints();
                                        text:SetPoint("LEFT", newLine, "LEFT", 0, 0);
                                        text:SetWidth(text:GetStringWidth());
                                        
                                        --fix the tooltip width if small
                                        local getTextWidth = text:GetWidth();
                                        local getMoneyWidth = money:GetWidth();
                                        local getTooltipWidth= getglobal(sTooltip:GetName().."TextLeft1"):GetWidth();

                                        --check, expand the tooltip if we need to
                                        if( (getTextWidth + getMoneyWidth) > getTooltipWidth ) then

                                                getglobal(sTooltip:GetName().."TextLeft1"):SetWidth((getTextWidth + getMoneyWidth) + 10);       

                                        end
                                        
                                        sTooltip.isDisplayDone = 1;
                                        priceChk = 1;

                        end--if(ISync:SetVar({"OPT","PRICE"}, 1, "COMPARE")) then
                
                else--don't show the first money line
                
                        local text = getglobal(sFrameGet.."Text1");
                        local money = getglobal(sFrameGet.."Money1");
                        money:Hide();
                        text:Hide();

                        priceChk = 0;
                
                end--if(getPrice < 0) then
                
                
                --VENDOR
                if(ISync:SetVar({"OPT","VENDOR"}, 1, "COMPARE")) then

                        local vendPrice = lastTooltip.vendPrice;
                        local vendQty = lastTooltip.vendQty;

                        if(vendPrice and vendQty and tonumber(vendPrice) and tonumber(vendPrice) > 0) then

                                if(chkAddLine == 0) then sTooltip:AddLine(" "); chkAddLine = 1; end
                                sTooltip:AddLine(" ", 0, 0, 0);

                                local numLines = sTooltip:NumLines();
                                local text = getglobal(sFrameGet.."Text2");
                                local money = getglobal(sFrameGet.."Money2");
                                local newLine = sTooltip:GetName().."TextLeft"..numLines;


                                MoneyFrame_Update(sFrameGet.."Money2", vendPrice);
                                text:SetText("|c00FFFF00"..ISYNC_VENDORCOST.."[|r|c00BDFCC9"..vendQty.."|r|c00FFFF00]:  |r");
                                text:Show();
                                money:Show();

                                --set the point at it's new location
                                text:ClearAllPoints();
                                text:SetPoint("LEFT", newLine, "LEFT", 0, 0);
                                text:SetWidth(text:GetStringWidth());

                                --fix the tooltip width if small
                                local getTextWidth = text:GetWidth();
                                local getMoneyWidth = money:GetWidth();
                                local getTooltipWidth= getglobal(sTooltip:GetName().."TextLeft1"):GetWidth();

                                --check, expand the tooltip if we need to
                                if( (getTextWidth + getMoneyWidth) > getTooltipWidth ) then

                                        getglobal(sTooltip:GetName().."TextLeft1"):SetWidth((getTextWidth + getMoneyWidth) + 10);       

                                end

                                --set as done
                                sTooltip.isDisplayDone = 1;
                                vendorChk = 1;
                                        
                        end--if(vendPrice and vendQty) then
                        
                else
                
                        local text = getglobal(sFrameGet.."Text2");
                        local money = getglobal(sFrameGet.."Money2");
                        money:Hide();
                        text:Hide();
                        
                        vendorChk = 0;
                                        
                end
                
                --show and update the frame accordingly
                if(priceChk == 1 and vendorChk == 1) then
                
                        local getPriceWidth = getglobal(sFrameGet.."Text1"):GetWidth();
                        local getVendorWidth = getglobal(sFrameGet.."Text2"):GetWidth();
                        local diffWidth = 0;

                        --if vendor is bigger then price
                        if(getPriceWidth < getVendorWidth) then
                                 getglobal(sFrameGet.."Text1"):SetWidth(getVendorWidth);
                                 getglobal(sFrameGet.."Text1"):SetJustifyH("LEFT");
                        --if price is bigger then vendor
                        elseif(getVendorWidth < getPriceWidth) then      
                                 getglobal(sFrameGet.."Text2"):SetWidth(getPriceWidth);
                                 getglobal(sFrameGet.."Text2"):SetJustifyH("LEFT");
                        end     
                        
                end
                
                --show the tooltipmoneyframe if we have information
                if(priceChk == 1 or vendorChk == 1) then

                        if(sTooltip == ItemRefTooltip) then
                                ISync_MoneyTooltipItemRef:Show();
                        else
                                ISync_MoneyTooltip:Show();
                        end
                        
                else
                        ISync_MoneyTooltipItemRef:Hide();
                        ISync_MoneyTooltip:Hide();
                end
                
                --show the tooltip
                sTooltip:Show();
                
                return nil;
                
                
        -------------------------------------------------------------------------------------------------
        -------------------------------------------------------------------------------------------------
        -------------------------------------------------------------------------------------------------
        else--SHOW MONEY TEXT

                local chkAddLine        = 0;
                local getPrice          = lastTooltip.getPrice;
                
                        
                if(getPrice and tonumber(getPrice) and tonumber(getPrice) == -1 and ISync:SetVar({"OPT","PRICE"}, 1, "COMPARE")) then --item has no value
                        
                        if(chkAddLine == 0) then sTooltip:AddLine(" "); chkAddLine = 1; end             
                        sTooltip:AddLine("|c00FFFF00"..ISYNC_NOSELLPRICE.."|r");        
                        sTooltip.isDisplayDone = 1;
        
                elseif(getPrice and tonumber(getPrice) and tonumber(getPrice) > 0) then
                
                        getPrice = tonumber(getPrice) * sQty;
                        local gold, silver, copper = ISync:ReturnCurrency(getPrice);
                        local currencySTR = "";
                        
                        local goldLay = ISync:SetVar({"LAYOUT","GOLD"}, "|c00FFFFFF%s|r|c00E2CD54"..ISYNC_OPTGOLD1.."|r ");
                        local silverLay = ISync:SetVar({"LAYOUT","SILVER"}, "|c00FFFFFF%s|r|c00AEAEAE"..ISYNC_OPTSILVER1.."|r ");
                        local copperLay = ISync:SetVar({"LAYOUT","COPPER"}, "|c00FFFFFF%s|r|c00D7844D"..ISYNC_OPTCOPPER1.."|r");
                        
                        --PRICE
                        if(ISync:SetVar({"OPT","PRICE"}, 1, "COMPARE")) then
                        
                                if(gold and gold ~= 0) then --GOLD
                                        currencySTR = string.format(goldLay, gold);
                                end
                                
                                if(silver and silver ~= 0) then--SILVER
                                        currencySTR = currencySTR..string.format(silverLay, silver);
                                end
                                
                                if(copper and copper ~= 0) then--COPPER
                                        currencySTR = currencySTR..string.format(copperLay, copper);
                                end
                                
                                
                                if(chkAddLine == 0) then sTooltip:AddLine(" "); chkAddLine = 1; end
                                sTooltip:AddDoubleLine("|c00FFFF00"..ISYNC_COST.."[|r|c00BDFCC9"..sQty.."|r|c00FFFF00]:|r", currencySTR,1,1,1,1,1,1);
                                sTooltip.isDisplayDone = 1;
                                                
                        end
                
                
                end--if(getPrice < 0) then
                
                
                --VENDOR
                if(ISync:SetVar({"OPT","VENDOR"}, 1, "COMPARE")) then

                        local vendPrice = lastTooltip.vendPrice;
                        local vendQty = lastTooltip.vendQty;

                        if(vendPrice and vendQty and tonumber(vendPrice) and tonumber(vendPrice) > 0) then

                                vendPrice = tonumber(vendPrice);
                                vendQty = tonumber(vendQty);
                                if(vendQty < 1) then vendQty = 1; end
                                
                                local gold, silver, copper = ISync:ReturnCurrency(vendPrice);
                                local currencySTR = "";
                                
                                local goldLay = ISync:SetVar({"LAYOUT","GOLD"}, "|c00FFFFFF%s|r|c00E2CD54"..ISYNC_OPTGOLD1.."|r ");
                                local silverLay = ISync:SetVar({"LAYOUT","SILVER"}, "|c00FFFFFF%s|r|c00AEAEAE"..ISYNC_OPTSILVER1.."|r ");
                                local copperLay = ISync:SetVar({"LAYOUT","COPPER"}, "|c00FFFFFF%s|r|c00D7844D"..ISYNC_OPTCOPPER1.."|r");
                        

                                if(gold and gold ~= 0) then --GOLD
                                        currencySTR = string.format(goldLay, gold);
                                end

                                if(silver and silver ~= 0) then--SILVER
                                        currencySTR = currencySTR..string.format(silverLay, silver);
                                end

                                if(copper and copper ~= 0) then--COPPER
                                        currencySTR = currencySTR..string.format(copperLay, copper);
                                end


                                if(chkAddLine == 0) then sTooltip:AddLine(" "); chkAddLine = 1; end
                                sTooltip:AddDoubleLine("|c00FFFF00"..ISYNC_VENDORCOST.."[|r|c00BDFCC9"..vendQty.."|r|c00FFFF00]:|r", currencySTR,1,1,1,1,1,1);
                                sTooltip.isDisplayDone = 1;

                        end--if(vendPrice and vendQty) then
                end
                        
                
                --show the tooltip
                sTooltip:Show();
                
                --hide the money icons since we aren't using them
                ISync_MoneyTooltipItemRef:Hide();
                ISync_MoneyTooltip:Hide();
                
                return nil;
                
        end--if(ISync:SetVar({"OPT","SHOWMONEYICONS"}, 1, "COMPARE")) then
        

end


---------------------------------------------------
-- ISync:ReturnCurrency
---------------------------------------------------
function ISync:ReturnCurrency(sMoney)

        --convert the long money value into seperate variables
        local gold = floor(sMoney / (COPPER_PER_SILVER * SILVER_PER_GOLD));
        local silver = floor((sMoney - (gold * COPPER_PER_SILVER * SILVER_PER_GOLD)) / COPPER_PER_SILVER);
        local copper = mod(sMoney, COPPER_PER_SILVER);


        return gold, silver, copper;

end




--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------