/**
* @file input-multiling.js
* @version 20191006 ms
* @type JS
* GUI-Komponente zur Darstellung mehrsprachiger Text-Input-Felder mit Landesflagge zum Umschalten der Sprache
*/
class KLangSelector {
/**
* @class KLangSelector
* @constructor komplex
* @param parent
* @param w
* @param h
* @param langs
* @param lang
* @param {function} onChange
*/
constructor(parent,w,h,langs,lang,onChange){
this.flag={
de:"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PHN2ZyB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjEwIiB2aWV3Qm94PSIwIDAgMC4wOCAwLjA1Ij48cmVjdCB3aWR0aD0iMC4wNzk5OTk5OTgiIGhlaWdodD0iMC4wNTAwMDAwMDEiIHg9IjEuNDEyMzQ4N2UtMDMzIiB5PSI3LjQ1MDU4MDdlLTAxMCIgc3R5bGU9ImZpbGw6IzAwMDAwMCIvPjxyZWN0IHdpZHRoPSIwLjA3OTk5OTk5OCIgaGVpZ2h0PSIwLjAzMzMzMzMzMSIgeD0iMS40MTIzNDg3ZS0wMzMiIHk9IjAuMDE2NjY2NDUxIiBzdHlsZT0iZmlsbDojZGQwMDAwIi8+PHJlY3Qgd2lkdGg9IjAuMDc5OTk5OTk4IiBoZWlnaHQ9IjAuMDE2NjY2NjY2IiB4PSIxLjQxMjM0ODdlLTAzMyIgeT0iMC4wMzMzMzMyMzgiIHN0eWxlPSJmaWxsOiNmZmNlMDAiLz48L3N2Zz4=",
en:"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PHN2ZyB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjEwIiB2aWV3Qm94PSIwIDAgMC44IDAuNSI+PGNsaXBQYXRoPjxwYXRoIGQ9Im0gMzAsMTUgaCAzMCB2IDE1IHogbSAwLDAgViAzMCBIIDAgeiBtIDAsMCBIIDAgViAwIHogbSAwLDAgViAwIGggMzAgeiIvPjwvY2xpcFBhdGg+PHBhdGggZD0iTSAyLjgzOTQ3MjhlLTUsNi4zMTA2ODcyZS01IFYgMC41MDA1OTA5MiBIIDAuNzk5OTcxNiBWIDYuMzEwNjg3MmUtNSB6IiBzdHlsZT0iZmlsbDojMDAyNDdkIi8+PHBhdGggZD0iTSAyLjgzOTQ3MjhlLTUsNi4zMTA2ODcyZS01IDAuNzk5OTcxNiwwLjUwMDU5MDkyIG0gMCwtMC41MDA1Mjc4MTMxMjggTCAyLjgzOTQ3MjhlLTUsMC41MDA1OTA5MiIgc3R5bGU9InN0cm9rZTojZmZmZmZmO3N0cm9rZS13aWR0aDowLjA4OTQ4Njc1Ii8+PHBhdGggZD0iTSAwLDAgNjAsMzAgTSA2MCwwIDAsMzAiIHRyYW5zZm9ybT0ibWF0cml4KDAuMDEzMzMyMzgsMCwwLDAuMDE2Njg0MjUsMi44Mzk0NzI4ZS01LDYuMzEwNjg3MmUtNSkiIGNsaXAtcGF0aD0idXJsKCN0KSIgc3R5bGU9InN0cm9rZTojY2YxNDJiO3N0cm9rZS13aWR0aDo0Ii8+PHBhdGggZD0iTSAwLjQwMDAwMDA0LDYuMzEwNjg3MmUtNSBWIDAuNTAwNTkwOTIgTSAyLjgzOTQ3MjhlLTUsMC4yNTAzMjU3OCBIIDAuNzk5OTcxNiIgc3R5bGU9InN0cm9rZTojZmZmZmZmO3N0cm9rZS13aWR0aDowLjE0OTE0NDU5Ii8+PHBhdGggZD0iTSAwLjQwMDAwMDA0LDYuMzEwNjg3MmUtNSBWIDAuNTAwNTkwOTIgTSAyLjgzOTQ3MjhlLTUsMC4yNTAzMjU3OCBIIDAuNzk5OTcxNiIgc3R5bGU9InN0cm9rZTojY2YxNDJiO3N0cm9rZS13aWR0aDowLjA4OTQ4Njc1Ii8+PC9zdmc+",
pl:"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PHN2ZyB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjEwIiB2aWV3Qm94PSIwIDAgMC4yIDAuMTI1Ij48cmVjdCB3aWR0aD0iMC4yIiBoZWlnaHQ9IjAuMTI1IiB4PSIwIiB5PSI2LjkzODg5MzllLTAxOCIgc3R5bGU9ImZpbGw6I2ZmZmZmZiIvPjxyZWN0IHdpZHRoPSIwLjIiIGhlaWdodD0iMC4wNjI1IiB4PSIwIiB5PSIwLjA2MjUiIHN0eWxlPSJmaWxsOiNkYzE0M2MiLz48L3N2Zz4="
};
this.langs=langs;
this.onChange=onChange;
this.img=document.createElement("img");
this.img.style.cursor="pointer";
if(w) this.img.width=w;
if(h) this.img.height=h;
parent.appendChild(this.img);
var m=this;
/// add DOMEvent click
this.img.addEventListener("click",function(e){m.Show();e.stopPropagation();});
///add DOMEvent load
this.img.addEventListener("load",function(){
var w=this.offsetWidth,h=this.offsetHeight;
if(!w){
var c=this.cloneNode(true);
document.body.appendChild(c);
w=c.offsetWidth;h=c.offsetHeight;
document.body.removeChild(c);
}
m.OnResize(w,h);
});
this.img.src=this.flag[lang];
this.LangCaptions={"en":"English","de":"Deutsch","pl":"Polski"};
}
/**
* @fn Show
* @memberof KLangSelector
* Private method.
*/
Show(){
if(this.win){this.Close();return;}
var r=this.img.getBoundingClientRect();
var x=r.right+pageXOffset;
this.win=document.createElement("div");
var st=this.win.style;st.position="absolute";st.right=(document.documentElement.clientWidth-x-2)+"px";st.zIndex="2099";st.border="1px solid #73808D";st.backgroundColor="#FFFFFF";st.padding="4px";
if(document.documentElement.clientHeight-r.bottom>r.top)
this.win.style.top=(r.bottom+1+pageYOffset)+"px";
else
this.win.style.bottom=(document.documentElement.clientHeight-r.top-pageYOffset+1)+"px";
var t=document.createElement("table");st=t.style;st.borderSpacing="0";st.borderCollapse="collapse";this.win.appendChild(t);
for(var a=0;a