local addonName, addon = ...
local childName = addon['childName']
local child = addon[childName]
local events = child['events']
local L = LibStub("AceLocale-3.0"):GetLocale(childName, true)
local db
local NUM_BAG_SLOTS = NUM_BAG_SLOTS
local bagTypes = {
	[0] = L['Unspecified'],
	[1] = L['Quiver'],
	[2] = L['Ammo Pouch'],
	[4] = L['Soul Bag'],
	[8] = L['Leatherworking Bag'],--4
	[16] = L['Inscription Bag'],--5
	[32] = L['Herb Bag'],--6
	[64] = L['Enchanting Bag'],--7
	[128] =	L['Engineering Bag'],--8
	[256] = L['Keyring'],--9?
	[512] = L['Gem Bag'], --10
	[1024] = L['Mining Bag'], --11
	[2048] = L['Unknown'], --12
	[4096] = L['Vanity Pets'],  --13
	[32768] = L['Fishing Supplies'], --16
	[65536] = L['Cooking Supplies'], --17
	[524288] = L['Toys'], --20
	[1048576] = L['Archaeology'], --21
	[2097152] = L['Alchemy'], --22
	[4194304] = L['Blacksmithing'], --23
	[8388608] = L['First Aid'], --24
	[16777216] = L['Jewelcrafting'], --25
	[33554432] = L['Skinning'], --26
	[67108864] = L['Tailoring'], --27
}
child['L'] = L
child['bagStatus'] = {
	['bagTypes'] = bagTypes,
	['full'] = {},
	['free'] = {}
}
local function OnDataUpdate()
	local bagID = 0
	local n,m = 0,0
	local free = child['bagStatus']['free']
	local full = child['bagStatus']['full']
	wipe(free)
	wipe(full)
	while(bagID<=NUM_BAG_SLOTS) do
		local b = GetContainerNumSlots(bagID)
		local c = GetContainerNumFreeSlots(bagID)
		local bagType = GetItemFamily(GetBagName(bagID))
		if(not bagType or bagType==0) then
			bagType = 0
			full[0] = full[0] or 0
			free[0] = free[0] or 0
			free[0] = free[0] + c
			full[0] = full[0] + b
		else
			full[bagType] = full[bagType] or 0
			free[bagType] = free[bagType] or 0
			free[bagType] = free[bagType] + c
			full[bagType] = full[bagType] + b
		end
		if(db['bagTypes'][bagTypes[bagType]]==true) then
			n = n + c
			m = m + b
		end
		bagID = bagID + 1
	end
	if(not db['showFree']) then
		n = m - n
	end
	child:OnText(childName, format("%d/%d",n,m))
end
local function prepareDB()
	db = addon['db']['profile'][childName]
	db['bagTypes'] = db['bagTypes'] or {
		[L['Unspecified']] = true
	}
	child['db'] = db
	addon['callbacks']:Fire(format("Init%s", childName))
	OnDataUpdate()
end
child['update'] = OnDataUpdate
child['specs'] = {
	['name'] = childName,
	['sv'] = true,
	['cfg'] = true,
	['cfgReset'] = prepareDB,
	['ldb'] = child['ldb'],
	['defaults'] = {
		['profile'] = {
			[childName] = {
				['bagTypes'] = {
					[L['Unspecified']] = true
				}
			}
		}
	}
}
events.BAG_UPDATE_DELAYED = OnDataUpdate
child:NewAddOn(...)