MW.namespace("modules.apps.entry");

(function(){
	
	var logging = true;
	var Event = YAHOO.util.Event;
	var Dom = YAHOO.util.Dom;
	var Con = YAHOO.util.Connect;
	var Json = YAHOO.lang.JSON; //
	
	MW.modules.apps.entry.Select = {
		"getCategories": function(location)
		{
			if (!location) {return;}
			var url = "/apps/gateway/locale/get-regions/?format=json&country="+encodeURI(location);
			Con.asyncRequest("GET",url,MW.modules.apps.entry.Select.callback,null);
		},
		"populateSelect": function(sel,objArray,value,label)
		{
			// first option may be a label with no value
			if (sel.options.length > 0 && sel.options[0].value == "")
			{
				sel.options.length = 1;
			}
			else
			{
				sel.options.length = 0;
			} 
			for(var i = 0; i < objArray.length; i++)
			{
				obj = objArray[i];
				var o = new Option(
					obj,
					obj,
					false,
					false
				);
				sel.options[sel.options.length] = o;
			}
		},
		"callback" :
		{
			"success": function(o)
			{
				var trigger = o.argument.trigger;
				var target = o.argument.target;
				var response = Json.parse(o.responseText);
				if (response.valid && response.regions.length > 0)
				{
					MW.modules.apps.entry.Select.populateSelect(target,response.regions,"id","name");
				}
				target.disabled = false;
			},
			"failure": function(o)
			{
				var trigger = o.argument.trigger;
				var target = o.argument.target;
				target.disabled = false;
			},
			"cache": false,
			"argument": {trigger: null, target: null}
		},
		"initGetCategoriesOnChange": function(trigger,target)
		{
			trigger = Dom.get(trigger);
			target = Dom.get(target);
			
			MW.modules.apps.entry.Select.callback.argument.trigger = trigger;
			MW.modules.apps.entry.Select.callback.argument.target = target;
			
			Event.addListener(
					trigger,
					"change",
					function(e)
					{
						if (this.value)
						{
							target.disabled = true;
							MW.modules.apps.entry.Select.getCategories(this.value);
						}
					},
					trigger,
					true
			);
		}
	};
	
}());
