--[[
	Bongos\core\utility.lua
		Utility functions for Bongos
--]]

--takes a Bongos BarID, and performs the specified action on that bar
--this adds two special IDs, "all" for all bars and number-number for a range of IDs
function Bongos_ForBar(barID, action, ...)
	assert(barID and barID ~= "", "Invalid barID");
	
	if barID == "all" then
		BBar.ForAll(action, unpack(arg));
	else
		local _, _, startID, endID = string.find(barID, "(%d+)-(%d+)");
		startID = tonumber(startID);
		endID = tonumber(endID);
		if startID and endID then
			for id = startID, endID do
				local bar = BBar.IDToBar(id);
				if(bar) then
					action(bar, unpack(arg));
				end
			end
		else
			local bar = BBar.IDToBar(barID);
			if bar then
				action(bar, unpack(arg));
			end
		end
	end
end

--same thing as the previous function, except we pass the bar's ID as an arg instead of the bar itself
function Bongos_ForBarID(barID, action, ...)
	assert(barID and barID ~= "", "Invalid barID");
	
	if barID == "all" then
		BBar.ForAllIDs(action, unpack(arg));
	else
		local _, _, startID, endID = string.find(barID, "(%d+)-(%d+)");
		if startID and endID then
			for id = tonumber(startID), tonumber(endID) do
				action(id, unpack(arg));
			end
		else
			if tonumber(barID) then
				barID = tonumber(barID);
			end
			action(barID, unpack(arg));
		end
	end
end

--[[ Configuration Functions ]]--

function Bongos_SetLock(enable)
	if enable then
		BongosSets.locked = 1;	
		BBar.ForAll(BBar.Lock);
	else
		BongosSets.locked = nil;
		BBar.ForAll(BBar.Unlock);
	end
end

--enable disable "sticky" bars
function Bongos_SetStickyBars(enable)
	if enable then
		BongosSets.sticky = 1;
	else
		BongosSets.sticky = nil;
	end
	BBar.ForAll(BBar.Reanchor);
end

--Print a chat message
function BMsg(msg)
	ChatFrame1:AddMessage("Bongos:  " .. (msg or "error"), 0,1,0.4);
end