
-- table containing ring access point function
game.RingAccessPointFilter = 
{
	-- map level index in the combo_box to the url param string
	LevelToURLParam = 
	{
		[0] = "",
		[1] = "sl_a",
		[2] = "sl_b",
		[3] = "sl_c",
		[4] = "sl_d",
		[5] = "sl_e"
	},
	OrientationToURLParam = 
	{
		[0] = "",
		[1] = "so_newbie_training",
		[2] = "so_story_telling",
      [3] = "so_mistery",
      [4] = "so_hack_slash",
      [5] = "so_guild_training",
      [6] = "so_other"
	},
   InitDone = false
}

-----------------------------------------------------------------------------------------
-- Get reference on the filter window
function game.RingAccessPointFilter:getWnd()
   return getUI("ui:interface:ring_access_point_filter")
end


-----------------------------------------------------------------------------------------
-- Init content of the filter window if needed
function game.RingAccessPointFilter:init()
   if self.InitDone then return end
   self.InitDone = true 
   local filterScenarioWnd = self:getWnd()
	local owner = filterScenarioWnd:find("owner"):find("edit_box_group")
	assert(owner)
	owner.input_string = ""

	local levelCB = filterScenarioWnd:find("level"):find("combo_box")
	assert(levelCB)
	levelCB:resetTexts()
	levelCB:addText(i18n.get("uiScenarioLevel_Any"))
	levelCB:addText("1-50")
	levelCB:addText("51-100")
	levelCB:addText("101-150")
	levelCB:addText("151-200")
	levelCB:addText("201-250")
	levelCB.selection = 0

	local genreCB = filterScenarioWnd:find("genre"):find("combo_box")
	assert(genreCB)
	genreCB:resetTexts()
	genreCB:addText(i18n.get("uiScenarioOrient_Any"))
	genreCB:addText(i18n.get("uiScenarioOrient_NewbieTraining"))
	genreCB:addText(i18n.get("uiScenarioOrient_StoryTelling"))
	genreCB:addText(i18n.get("uiScenarioOrient_Mistery"))
	genreCB:addText(i18n.get("uiScenarioOrient_HackSlash"))
	genreCB:addText(i18n.get("uiScenarioOrient_GuildTraining"))
	genreCB:addText(i18n.get("uiScenarioOrient_Other"))
	genreCB.selection = 0
	
	local name = filterScenarioWnd:find("name"):find("edit_box_group")
	assert(name)
	name.input_string = ""	
end


-----------------------------------------------------------------------------------------
-- Open the filter window
function game.RingAccessPointFilter:open()
   self:init()
	self:getWnd().active = true	   
end

-----------------------------------------------------------------------------------------
-- Get the url parameters to append to the url to browse with the current filter
function game.RingAccessPointFilter:getURLParameters()	
   self:init()
	local filterScenarioWnd = self:getWnd()
	assert(filterScenarioWnd)

	local owner = filterScenarioWnd:find("owner"):find("edit_box_group").input_string	
	local level = self.LevelToURLParam[filterScenarioWnd:find("level"):find("combo_box").selection]	   
	local orientation = self.OrientationToURLParam[filterScenarioWnd:find("genre"):find("combo_box").selection]
	local name = filterScenarioWnd:find("name"):find("edit_box_group").input_string	
	local charSlot = getCharSlot()

	local result = string.format("&owner=%s&level=%s&orientation=%s&name=%s&charSlot=%u", encodeURLUnicodeParam(owner), level, orientation, encodeURLUnicodeParam(name), charSlot)
    debugInfo(result)
    return result
end

-----------------------------------------------------------------------------------------
-- Validate current filter and do the browse
function game.RingAccessPointFilter:validate()   
   debugInfo('*')
   local filterScenarioWnd = self:getWnd()	
	filterScenarioWnd.active = false
	if game.NpcWebPage.UrlTextId == 0 then
		assert(0)
	end
   local ucUrl
   if config.Local == 1 then
			ucUrl = NicoMagicURL -- for test in local mode				
   else
         ucUrl = getDynString(game.NpcWebPage.UrlTextId)
   end	
   debugInfo(tostring(ucUrl))
	local utf8Url = ucUrl	
	local browser = getUI("ui:interface:npc_web_browser"):find("html")
	-- when in ring mode, add the parameters ourselves. 60 second is the timout for zope....
	browseNpcWebPage(getUIId(browser), utf8Url .. self:getURLParameters(), false, 60)
end


