package com.guru.component.lang 
{
	import com.adobe.utils.ArrayUtil;
	import com.guru.call.ICall;
	/**
	 * ...
	 * @author Eddy Lee
	 */
	public class LangModel
	{
		private static var sChangeLangCall_array:Array;
		private static var sCurrentLang_str:String;
		private static var sCounter_num:Number;
		private static var sLangAvailable_array:Array;
		
		public static function setLang(pLang_str:String):void
		{
			if (sCurrentLang_str != pLang_str)
			{
				sCurrentLang_str = pLang_str;
				refresh();
			}
		}
		
		public static function getLang():String
		{
			return sCurrentLang_str;
		}
		
		public static function cancelChangeLangCall(pId_num:Number):Boolean
		{
			if (sChangeLangCall_array["langCall" + pId_num])
			{
				delete sChangeLangCall_array["langCall" + pId_num];
				return true;
			}
			
			return false;
		}
		
		public static function addLang(pLang_str:String):void
		{
			if (ArrayUtil.arrayContainsValue(sLangAvailable_array, pLang_str))
			{
				Logger.eddy("WARNING: Lang \"" + pLang_str + "\" already exist!");
			}
			else
			{
				sLangAvailable_array.push(pLang_str);
			}
		}
		
		public static function getLangAvailable():Array
		{
			return sLangAvailable_array;
		}
		
		public static function setChangeLangCall(pCall:ICall):Number
		{
			sChangeLangCall_array["langCall" + sCounter_num] = pCall;
			return sCounter_num++;
		}
		
		public static function init():void
		{
			sCurrentLang_str = "";
			sChangeLangCall_array = new Array();
			sLangAvailable_array = new Array();
			sCounter_num = 0;
		}
		
		private static function refresh():void
		{
			for (var i in sChangeLangCall_array)
			{
				ICall(sChangeLangCall_array[i]).execute();
			}
		}
		
		public function LangModel()
		{
			
		}
	}

}