﻿// JScript File
var API_RegisterHdl ={
	ACTB_From: null,
	ACTB_To: null,
	AC_URL: "/clientcalls/Flight/AutoComplete.aspx?dataType=",
	KeyGen_URL: "/api/js/Keygen.ashx",
	IsFocusApfrom: false,
	IsFocusApto: false,
	CodeGenTemplate: "<script type=\"text/javascript\" src=\"http://{DomainName}/api/code-gen?key={Key}&lang={Language}\"></script>\n<script type=\"text/javascript\">\nfuncAPI.Init(\"{Language}\");\nvar searchPanel = new funcAPI.SearchPanel(\"func_canvas\");\nfunction func_onload()\n{\n\tsearchPanel.SetType({Type});\n\tsearchPanel.SetLanguage(\"{Language}\");\n\tsearchPanel.SetColor(\"{Color}\");\n\tsearchPanel.SetCurrency(\"{Currency}\");\n\tsearchPanel.SetFrom(\"{From}\");\n\tsearchPanel.SetTo(\"{To}\");\n\tsearchPanel.Render();\n}\nfuncAPI.addLoadEvent(func_onload);\n</script>\n<div id=\"func_canvas\" style=\"width: auto; height:auto;\"></div>\n<!-- Please do not remove this part, it's neccessary for the API code running -->\n<div style=\"display:none\"><a href=\"http://{DomainName}/\" name=\"func_link\">{Title1}</a></div>",
	Interval: null,
	
	StartUp: function()
	{
		LoadCurToCbBox($(Register_Elements.Currency), _arrCu, "EUR");
		this.InitAutoComplete();
		this.RegisEvt();
	},
	
	InitAutoComplete: function()
	{
		var actbWidth = document.all ? $(Register_Elements.Departure).offsetWidth : $(Register_Elements.Departure).width;
		API_RegisterHdl.ACTB_From = new actb($(Register_Elements.Departure), null, actbWidth, "", this.AC_URL, "apifrom");
		API_RegisterHdl.ACTB_To = new actb($(Register_Elements.Destination), null, actbWidth, "", this.AC_URL, "apito");
	},
	
	RegisEvt: function()
	{
		$(Register_Elements.Departure).RegisterEvt("focus", function()
		{
			API_RegisterHdl.IsFocusApfrom = true;
			$(Register_Elements.Departure).Focus();
		});
		$(Register_Elements.Departure).RegisterEvt("blur", function()
		{
			API_RegisterHdl.IsFocusApfrom = false;
		});
		$(Register_Elements.Destination).RegisterEvt("focus", function()
		{
			API_RegisterHdl.FillData("from");
			API_RegisterHdl.IsFocusApto = true;
			$(Register_Elements.Destination).Focus();
		});
		$(Register_Elements.Destination).RegisterEvt("blur", function()
		{
			API_RegisterHdl.IsFocusApto = false;
		});
		$(Register_Elements.GenCode).RegisterEvt("focus", function()
		{
			API_RegisterHdl.FillData("from");
			API_RegisterHdl.FillData("to");
		});
		$(Register_Elements.GenCode).RegisterEvt("click", function()
		{
			API_RegisterHdl.Render();
		});
	},
	
	Render:function()
	{
		if(typeof(lefttime)!="undefined")
			clearInterval(lefttime);
		clearInterval(API_RegisterHdl.Interval);
		API_RegisterHdl.FillData("from");
		API_RegisterHdl.FillData("to");
		// call ajax keygen here
		var domain = API_RegisterHdl.GetDomain($(Register_Elements.Domain).value);
		var http = new AjaxUtil();
		http.Load(API_RegisterHdl.KeyGen_URL + "?domain=" + domain, API_RegisterHdl.CodeGen, null);
	},
	
	Reload: function()
	{
		if(funcAPI==null)
			return;
		clearInterval(API_RegisterHdl.Interval);
		var type = $(Register_Elements.Type).options[$(Register_Elements.Type).selectedIndex].value;
		var color = $(Register_Elements.Color).value;
		var lang = $(Register_Elements.Language).options[$(Register_Elements.Language).selectedIndex].value;
		var cur = $(Register_Elements.Currency).options[$(Register_Elements.Currency).selectedIndex].value;
		var from = $(Register_Elements.Departure).value;
		var to = $(Register_Elements.Destination).value;
		
		// render
		$("func_canvas").innerHTML = "";
		funcAPI.Init(lang);
		searchPanel = new funcAPI.SearchPanel("func_canvas");
		searchPanel.SetType(parseInt(type));
		searchPanel.SetLanguage(lang);
		searchPanel.SetColor(color);
		searchPanel.SetCurrency(cur);
		searchPanel.SetFrom(from);
		searchPanel.SetTo(to);
		searchPanel.Render();
	},
	
	FillData:function(dest)
	{
		if(dest == "from")
		{
			if($$(API_RegisterHdl.ACTB_From.actb_tabname))
				document.body.removeChild($(API_RegisterHdl.ACTB_From.actb_tabname));
			
			for(var i=0; i<API_RegisterHdl.ACTB_From.actb_keywords.length; i++)
			{
				var keyword = API_RegisterHdl.ACTB_From.actb_keywords[i].toLowerCase();
				if(keyword.indexOf($(Register_Elements.Departure).value.toLowerCase()) > -1)
				{
					$(Register_Elements.Departure).value = API_RegisterHdl.ACTB_From.actb_keywords[i].replace(" - ","");
					break;
				}
			}
		}
		else
		{
			if($$(API_RegisterHdl.ACTB_To.actb_tabname))
				document.body.removeChild($(API_RegisterHdl.ACTB_To.actb_tabname));
			
			for(var i=0; i<API_RegisterHdl.ACTB_To.actb_keywords.length; i++)
			{
				var keyword = API_RegisterHdl.ACTB_To.actb_keywords[i].toLowerCase();
				if(keyword.indexOf($(Register_Elements.Destination).value.toLowerCase()) > -1)
				{
					$(Register_Elements.Destination).value = API_RegisterHdl.ACTB_To.actb_keywords[i].replace(" - ","");
					break;
				}
			}
		}
	},
	
	CodeGen: function(data)
	{
		var key = data.key;
		var type = $(Register_Elements.Type).options[$(Register_Elements.Type).selectedIndex].value;
		var color = $(Register_Elements.Color).value;
		var lang = $(Register_Elements.Language).options[$(Register_Elements.Language).selectedIndex].value;
		var cur = $(Register_Elements.Currency).options[$(Register_Elements.Currency).selectedIndex].value;
		var from = $(Register_Elements.Departure).value;
		var to = $(Register_Elements.Destination).value;
		var code = String.FormatTemplate(API_RegisterHdl.CodeGenTemplate, {Key:key, Type:type, Color:color, Language:lang, Currency:cur, From:from, To:to, DomainName:RegisterConfig[lang],Title1:Register_Strings.FlightTitle1});
		$(Register_Elements.CodeArea).value = code;
		
		// reload
		funcAPI = null;
		var scriptContainer = document.createElement('div');
        scriptContainer.id = "scr"+new Date().getTime();
		var myScript = document.createElement('script');
        myScript.src = "http://" + RegisterConfig[lang] + "/api/code-gen?key=" + Register_Elements.APIKey + "&lang=" + lang;
        scriptContainer.appendChild(myScript);
        document.body.appendChild(scriptContainer);
        
		API_RegisterHdl.Interval = setInterval("API_RegisterHdl.Reload()", 300);
	},
	
	GetDomain: function(str)
	{
		if (str == null || str.length == 0)
		return "";
		
		str = str.toLowerCase();
		var i = str.indexOf("//");
		if(i>-1)
		{
			str = str.substring(i+2, str.length);
		}
		
		i = str.indexOf("/");
		if(i>-1)
		{
			str = str.substring(0, i);
		}
		
		if(str.indexOf("www.") == 0)
			str = str.replace("www.", "");
		
		return str;
	}
}
