.namespace LeftInventory

g_vignettes = {}
g_mainvignette = nil
g_needhl = false
g_hlmaxtime = 4
g_hltime =0
g_hlinout= true
STEPVIGNETTEX = 100
toclose = false
INITPOSXY={
			{
			{200,30},
			},
			{
			{200,-10},
			{200,75},
			},
			{
			{200,-20},
			{280,30},
			{200,90},
			},
			{
			{200,-30},
			{275,-5},
			{275,70},
			{200,100},
			},
			{
			{200,-30},
			{270,-15},
			{340,30},
			{270,80},
			{200,100},
			},					
}

function OnEnable()
	
	UpdateVignettes()
	
end
function OnDisable()
end
function UpdateVignettes(obj)
	CloseVignettes()
	CreateVignette(obj)	
end
-- function UpdateTextPos(inventbox)
	-- Search_Inventory_NameSprite.Position_X = inventbox.Position_X + INITPOSX - INITPOSVIGNETTEX
-- end


function CloseVignettes()
	--Search_NewObject.Parent = Search_ButtonInventory
	for u,unit in pairs(g_vignettes) do
		-- OPLog.Log("closing unit :"..unit.Name)
		OPUnitFactory.CloseUnit(unit)
		-- OPUnitFactory.CloseUnit(OPUnitFactory.GetUnit(unit.Name.."_Bg","Sprite"))
	end
	if g_mainvignette ~= nil then
		-- OPLog.Log("closing unit :"..g_mainvignette.Name)
		OPUnitFactory.CloseUnit(g_mainvignette)
		Inventory_txt.Flags_Visible = false
	end
	
	g_vignettes = {}
	g_mainvignette = nil
end


function CreateVignette()
	g_vignettes = {}
	self.compteur = 0
	g_mainvignette = nil

	ApplyToClass("InventoryObject",CreateOneVignette)

	-- Search_NewObject.Parent = g_mainvignette -- MODIF
	
	-- if self.compteur <= 1 then
		-- g_curendposx = INITPOSX + STEPVIGNETTEX --pour montrer qu'on peut l'ouvrir pour le tuto -- MODIF
	-- else 
		-- g_curendposx = INITPOSX + ((self.compteur-1) * STEPVIGNETTEX) -- MODIF
	-- end
	
	-- if self.compteur == 0 then
		-- Search_Inventory_NameSprite.Flags_Visible = false -- MODIF 
	-- else
		-- Search_Inventory_NameSprite.Flags_Visible = true -- MODIF
		--UpdateTextPos(g_mainvignette)  -- MODIF
		--SetTextToInventoryName(unit(g_mainvignette.obj).NameLoc) -- MODIF
		--OPLog.Log("tetx mis à jour : "..g_mainvignette.obj)
	-- end
end

function SetHighlight(obj)
	AssertPopup(type(obj) == "string" , "prob param")
	--OPLog.Log("sethilight "..obj)
	InventoryManager.SetSelectedObject(obj)
	g_mainvignette.obj = obj
	g_mainvignette.Name = obj.."_BoxMain"
	g_mainvignette.Image = unit(obj).Image
	-- SetTextToInventoryName(unit(g_mainvignette.obj).NameLoc)
	Inventory_txt.Flags_Visible = true
	Inventory_txt.Text = GlobalFunctions.GetText(unit(g_mainvignette.obj).NameLoc)

end

function OnFaderEnd()
	if g_hltime < g_hlmaxtime then
		OPLog.Log(g_hltime)
		g_hlinout = not g_hlinout
		g_hltime = g_hltime+1
		SpriteFader.Fade(Inventory_hl,g_hlinout,0.8,LeftInventory)
	else
		SpriteFader.Fade(Inventory_hl,false,0.8)
		g_hlinout=true
	end
end
function CreateOneVignette(ut)
	if ut.Equipped then
		local vignette = OPUnitFactory.CreateUnit("ValuableItem")

		vignette.AlphaTest= false
		vignette.Parent = Inventory_bg
		vignette.Image = ut.Image
		-- vignette.Position_Y = 30
		-- vignette.Position_X = 39 + ((self.compteur) * STEPVIGNETTEX)
		vignette.obj = ut.Name
		vignette.Flags_Visible = false
		vignette.Name = ut.Name.."_Box"
		vignette.NameLoc = ut.NameLoc
		table.insert(g_vignettes,vignette)
		self.compteur = self.compteur +1
	


		if (self.compteur == 1) then
			-- self.compteur = self.compteur+1
			--on crée le slot principal
			OPLog.Log("111	On crée la mainbox "..ut.Name.." compteur: "..self.compteur)
			g_mainvignette = OPUnitFactory.CreateUnit("ValuableItem")
			g_mainvignette.AlphaTest= false
			-- if self.Parent ~= nil then
				-- g_mainvignette.Parent = self.Parent
			-- else
				g_mainvignette.Parent = Inventory_bg
			-- end
			g_mainvignette.Image = ut.Image
			g_mainvignette.Position_Y = 30
			g_mainvignette.Position_X = 39
			g_mainvignette.obj = ut.Name
			g_mainvignette.Name = ut.Name.."_BoxMain"
			Inventory_txt.Flags_Visible = true
			Inventory_txt.Text = GlobalFunctions.GetText(unit(g_mainvignette.obj).NameLoc)
			g_mainvignette.Flags_Visible = true
			g_mainvignette = g_mainvignette
			--on indique c'est celui là qui actuellement sélectionné
			InventoryManager.SetSelectedObject(g_mainvignette.obj)
		end
	end
end



function CloseInventory()
	
	if toclose == true then

		for i,vignette in pairs(LeftInventory.g_vignettes) do
			--	if vignette.Name ~= LeftInventory.g_mainvignette.Name.."Main" then
					OPUnitFactory.CloseUnit(OPUnitFactory.GetUnit(vignette.Name.."_Bg","Sprite"))
					vignette.Flags_Visible = false

			--	end
		end
		toclose = false
	end
end



function OnWbpMouseLUp()

	if self.Name == "Inventory_hotspot" then
			
		if toclose == false then
			local z = table.getn(g_vignettes)
			z=z-1
			local j=1
			-- OPLog.Log("compteur inventaire : "..z)
			for i,vignette in pairs(g_vignettes) do
				
					-- OPLog.Log(vignette.Name.." "..g_mainvignette.Name)
					if vignette.Name.."Main" ~= g_mainvignette.Name then						
						vignette.Position_X = INITPOSXY[z][j][1]
						vignette.Position_Y = INITPOSXY[z][j][2]
						vignette.g_x = vignette.Position_X
						vignette.g_y = vignette.Position_Y
						
						SpriteZoom.Zoom(vignette,0.75, 0.3*j, nil,nil)
						vignette.Flags_Visible = true
						vignette.Layer = LayerPopup
						local vignette_bg = OPUnitFactory.CreateUnit("Sprite")
						vignette_bg.Image = "media/common/graph/interface/InGame/LeftInterface/inventory_item_bg.png"
						vignette_bg.Name = vignette.Name.."_Bg"
						vignette_bg.Parent = Inventory_bg
			
						vignette_bg.Position_X = INITPOSXY[z][j][1]
						vignette_bg.Position_Y = INITPOSXY[z][j][2]-15
						SpriteZoom.Zoom(vignette_bg,0.75, 0.3*j, nil,nil)
						vignette.g_background = vignette_bg
						j=j+1
						-- if vignette.obj == self.curflashobj then
							-- Search_NewObject.Parent = Load(vignette.Name,"InventoryBox")
						-- end
					end
				end
				-- newpos = 100
				PlaySoundEffect("int_inventory")
				toclose = true
		else
			CloseInventory()
			toclose = false		
		end
		
	end
end

-- function OnUpdate(dt)
	-- if g_needhl == true then
		-- g_hltime = g_hltime+dt
		-- OPLog.Log(g_hltime)
		-- if g_hltime < 3 then
			-- Inventory_hl.Enabled = true
		-- else
			-- Inventory_hl.Enabled = true
			-- g_needhl = false
			-- g_hltime = 0
		-- end
	-- end

-- end
function OnMouseOn()
	if not self.CanClickOn() then
		return
	end
	if self.Name == "Inventory_hotspot" then
		Inventory_arrow.Flags_Visible = true
	end		
end

function OnMouseOff()

	if self.Name == "Inventory_hotspot" then
		Inventory_arrow.Flags_Visible = false
	end	

end

function CanClickOn()
	return IsEqualVariables("CurrentGamePhase","SearchSite") 
	or IsEqualVariables("CurrentGamePhase","Closeup") 
	or (IsEqualVariables("CurrentGamePhase","Tutorial") and NewTutorialManager.g_state == "waitopenlocation")
end