Build 389, OSK single event fixed merge

This commit is contained in:
John Durdin 2015-06-02 16:28:01 +10:00
commit 4276fc790d
3 changed files with 139 additions and 104 deletions

View file

@ -8,12 +8,12 @@ String.prototype.kmwCodePointToCodeUnit=function(a){if(null===a)return null;var
String.prototype.kmwBMPNextChar=function(a){return 0>a||a>=(""+this).length-1?null:a+1};String.prototype.kmwBMPPrevChar=function(a){return 0>=a||a>(""+this).length?null:a-1};String.prototype.kmwBMPCodePointToCodeUnit=function(a){return a};String.prototype.kmwBMPCodeUnitToCodePoint=function(a){return a};String.prototype.kmwBMPLength=function(){return(""+this).length};String.prototype.kmwBMPSubstr=function(a,b){var c=""+this;return-1<a?c.substr(a,b):c.substr(c.length+a,-a)};
String.kmwEnableSupplementaryPlane=function(a){var b=String.prototype;String._kmwFromCharCode=a?String.kmwFromCharCode:String.fromCharCode;b._kmwCharAt=a?b.kmwCharAt:b.charAt;b._kmwCharCodeAt=a?b.kmwCharCodeAt:b.charCodeAt;b._kmwIndexOf=a?b.kmwIndexOf:b.indexOf;b._kmwLastIndexOf=a?b.kmwLastIndexOf:b.lastIndexOf;b._kmwSlice=a?b.kmwSlice:b.slice;b._kmwSubstring=a?b.kmwSubstring:b.substring;b._kmwSubstr=a?b.kmwSubstr:b.kmwBMPSubstr;b._kmwLength=a?b.kmwLength:b.kmwBMPLength;b._kmwNextChar=a?b.kmwNextChar:
b.kmwBMPNextChar;b._kmwPrevChar=a?b.kmwPrevChar:b.kmwBMPPrevChar;b._kmwCodePointToCodeUnit=a?b.kmwCodePointToCodeUnit:b.kmwBMPCodePointToCodeUnit;b._kmwCodeUnitToCodePoint=a?b.kmwCodeUnitToCodePoint:b.kmwBMPCodeUnitToCodePoint};
var __BUILD__=376;
var __BUILD__=381;
(function(){var b=(window.tavultesoft={}).keymanweb={_TitleElement:null,_Enabled:1,_IE:0,legacy:0,_IsActivatingKeymanWebUI:0,_JustActivatedKeymanWebUI:0,_IgnoreNextSelChange:0,_Selection:null,_SelectionControl:null,_KeyboardStubs:[],dfltStub:null,_Keyboards:[],_ActiveKeyboard:null,_ActiveStub:null,_LoadingInternalName:null,_AnyIndices:[],_DeadKeys:[],_ActiveControl:null,_Controls:[],_AttachedElements:[],_ActiveElement:null,_LastActiveElement:null,_DfltStyle:"",_MasterDocument:null,_HotKeys:[],focusTimer:null,
focusing:!1,resizing:!1,sortedInputs:[],inputList:[],languageList:null,languagesPending:[],deferredStubs:[],deferredKRS:[],deferredKR:[],loadTimer:null,waiting:null,warned:!1,baseFont:"sans-serif",appliedFont:"",embeddedFonts:[],fontCheckTimer:null,srcPath:"",rootPath:"",mustReloadKeyboard:!1,fullInitialization:!0};b.initialized=0;b.build=__BUILD__;b.version="2.0";b.helpURL="http://help.keyman.com/go";window.KeymanWeb=b;var f=b.util={},i=b.osk={ready:!1};b.ui={};b.setDefaultDeviceOptions=function(){};
b.getStyleSheetPath=function(g){return g};b.getKeyboardPath=function(g){return g};b.KC_=function(){return""};b.handleRotationEvents=function(){};b.alignInputs=function(){};b.refreshElementContent=null;i.highlightSubKeys=function(){};i.createKeyTip=function(){};i.optionKey=function(){};i.showKeyTip=function(){};i.registerPopup=function(){return!1};i.waitForFonts=function(){return!0};b.options={root:"",resources:"",keyboards:"",fonts:"",attachType:"",ui:null};f.events=[];f.currentEvents=[];i=document.getElementsByTagName("script");
i=i[i.length-1].src;i=i.substr(0,i.lastIndexOf("/")+1);b.srcPath=i;b.rootPath=i.replace(/(https?:\/\/)([^\/]*)(.*)/,"$1$2/");b.protocol=i.replace(/(.{3,5}:)(.*)/,"$1");f.addEventListener=function(g,b){f.removeEventListener(g,b);f.events[g].push(b);return!0};f.removeEventListener=function(g,b){"undefined"==typeof f.events[g]&&(f.events[g]=[]);for(var d=0;d<f.events[g].length;d++)if(f.events[g][d]==b)return f.events[g].splice(d,1),!0;return!1};f.callEvent=function(g,b){if("undefined"==typeof f.events[g])return!0;
if("undefined"!=typeof f.currentEvents[g])return!1;f.currentEvents.push(g);for(var d=0;d<f.events[g].length;d++){var a=f.events[g][d],h=!1;try{h=a(b)}catch(j){h=!1}if(!h)return f.currentEvents.pop(),!1}f.currentEvents.pop();return!0};f.attachDOMEvent=f.attachDOMEvent=function(g,b,d,a){f.detachDOMEvent(g,b,d,a);g.attachEvent?g.attachEvent("on"+b,d):g.addEventListener&&g.addEventListener(b,d,a?!0:!1)};f.detachDOMEvent=f.detachDOMEvent=function(b,a,d,e){b.detachEvent?b.detachEvent("on"+a,d):b.removeEventListener&&
if("undefined"!=typeof f.currentEvents[g])return!1;f.currentEvents.push(g);for(var d=0;d<f.events[g].length;d++){var a=f.events[g][d],h=!1;try{h=a(b)}catch(j){h=!1}if(!h)return f.currentEvents.pop(),!1}f.currentEvents.pop();return!0};f.attachDOMEvent=f.attachDOMEvent=function(b,a,d,e){f.detachDOMEvent(b,a,d,e);b.attachEvent?b.attachEvent("on"+a,d):b.addEventListener&&b.addEventListener(a,d,e?!0:!1)};f.detachDOMEvent=f.detachDOMEvent=function(b,a,d,e){b.detachEvent?b.detachEvent("on"+a,d):b.removeEventListener&&
b.removeEventListener(a,d,e)};f.getOption=f.getOption=function(g,a){return g in b.options?b.options[g]:1<arguments.length?a:""};f.setOption=f.setOption=function(g,a){b.options[g]=a};f.getAbsoluteX=f._GetAbsoluteX=function(g){if(!g)return 0;var a=g.offsetLeft?g.offsetLeft:0,d=g;if(d.offsetParent)for(;d.offsetParent;)d=d.offsetParent,a+=d.offsetLeft;d&&(d.ownerDocument&&g.ownerDocument!=b._MasterDocument)&&(d=d.ownerDocument);return d&&d.parentWindow&&d.parentWindow.frameElement?a+f._GetAbsoluteX(d.parentWindow.frameElement)-
d.documentElement.scrollLeft:d&&d.defaultView&&d.defaultView.frameElement?a+f._GetAbsoluteX(d.defaultView.frameElement)-d.documentElement.scrollLeft:a};f.getAbsoluteY=f._GetAbsoluteY=function(g){if(!g)return 0;var a=g.offsetTop?g.offsetTop:0,d=g;if(d.offsetParent)for(;d.offsetParent;)d=d.offsetParent,a+=d.offsetTop;d&&(d.ownerDocument&&g.ownerDocument!=b._MasterDocument)&&(d=d.ownerDocument);return d&&d.parentWindow&&d.parentWindow.frameElement?a+f._GetAbsoluteY(d.parentWindow.frameElement)-d.documentElement.scrollTop:
d&&d.defaultView&&d.defaultView.frameElement?a+f._GetAbsoluteY(d.defaultView.frameElement)-d.documentElement.scrollTop:a};f.getAbsolute=f._GetAbsolute=function(b){var a={};a.x=f._GetAbsoluteX(b);a.y=f._GetAbsoluteY(b);return a};f.selectStartHandler=function(){return!1};f.mouseDownPreventDefaultHandler=function(b){b&&b.preventDefault()};f.mouseDownPreventDefaultHandler=function(b){b&&b.preventDefault()};f.createElement=f._CreateElement=function(b){b=document.createElement(b);"undefined"!=typeof b.onselectstart?
@ -26,24 +26,24 @@ navigator.userAgent){i=navigator.userAgent;0<=i.indexOf("iPad")&&(k.OS="iOS",k.f
if(f.landscapeView()){if(screen.width<screen.height)b=screen.height}else if(screen.width>screen.height)b=screen.height;return Math.round(100*b/window.innerWidth)/100}catch(a){return 1}};f.barHeight=function(){var b=0;k.formFactor=="phone"&&(b=screen.height/2-window.innerHeight-(f.landscapeView()?k.dyLandscape:k.dyPortrait));return b};f._EncodeEntities=function(b){return b.replace("&","&amp;").replace("<","&lt;").replace(">","&gt;")};f.createShim=f.createShim=function(){var b=f._CreateElement("IFRAME");
b.src="";b.style.display="none";b.style.position="absolute";b.style.filter="progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)";b.frameBorder="0";b.scrolling="no";return b};f.showShim=f.showShim=function(b,a,d){if(a)try{a.style.left=f._GetAbsoluteX(b)+"px";a.style.top=f._GetAbsoluteY(b)+"px";if(d){a.style.width=f._GetAbsoluteX(d)-f._GetAbsoluteX(b)+d.offsetWidth+"px";a.style.height=f._GetAbsoluteY(d)-f._GetAbsoluteY(b)+d.offsetHeight+"px"}else{a.style.width=b.offsetWidth+"px";a.style.height=
b.offsetHeight+"px"}a.style.zindex="9999";a.style.display="block"}catch(e){}};f.hideShim=function(b){try{if(b)b.style.display="none"}catch(a){}};f.rgba=f.rgba=function(b,a,d,e,h){var j="transparent";if(f._GetIEVersion()<9){h=Math.floor(100*h);a=a.toString(16);d=d.toString(16);e=e.toString(16);a=("00"+a).substr(-2);d=("00"+d).substr(-2);e=("00"+e).substr(-2);e=h+a+d+e;b.filter="progid:DXImageTransform.Microsoft.gradient(startColorstr=#"+e+",endColorstr=#"+e+")";b.zoom="1"}else try{j="rgba("+a+","+
d+","+e+","+h+")"}catch(s){j="rgb("+a+","+d+","+e+")"}return j};f.addStyleSheet=f.addStyleSheet=function(b){var a=document.createElement("STYLE");a.type="text/css";a.styleSheet?a.styleSheet.cssText=b:a.appendChild(document.createTextNode(b));b=document.getElementsByTagName("HEAD");b.length>0?b[0].appendChild(a):document.body.appendChild(a);return a};f.removeStyleSheet=f.removeStyleSheet=function(b){if(b==null||typeof b!="object"||b.nodeName!="STYLE"||typeof b.parentNode=="undefined"||b.parentNode==
null)return false;b.parentNode.removeChild(b);return true};f.linkStyleSheet=f.linkStyleSheet=function(b){var a=document.getElementsByTagName("head");if(a.length>0){var d=document.createElement("link");d.type="text/css";d.rel="stylesheet";d.href=b;a[0].appendChild(d)}};f.addFontFaceStyleSheet=function(g){if(typeof g!="undefined"){typeof g.files=="undefined"&&(g.files=g.source);if(typeof g.files!="undefined"){var a,d="",e="",h="",j=[];for(a=0;a<b.embeddedFonts.length;a++)if(b.embeddedFonts[a]==g.family)return;
typeof g.files=="string"?j[0]=g.files:j=g.files;for(a=0;a<j.length;a++){j[a].indexOf(".ttf")>0&&(d=j[a]);j[a].indexOf(".woff")>0&&(e=j[a]);j[a].indexOf(".eot")>0&&(h=j[a])}d!=""&&d.indexOf("/")<0&&(d=b.options.fonts+d);e!=""&&e.indexOf("/")<0&&(e=b.options.fonts+e);h!=""&&h.indexOf("/")<0&&(h=b.options.fonts+h);a="@font-face {\nfont-family:"+g.family+";\nfont-style:normal;\nfont-weight:normal;\n";j=f._GetIEVersion();if(j>=999)if(k.OS=="iOS")if(d!="")a=a+"src:url('"+d+"') format('truetype');";else return;
else if(d!=""&&e!="")a=a+"src:url('"+e+"') format('woff'),url('"+d+"') format('truetype');";else if(e!="")a=a+"src:url('"+e+"') format('woff');";else if(d!="")a=a+"src:url('"+d+"') format('truetype');";else return;else if(h!=""&&j<9)a=a+"src:url('"+h+"?#iefix') format('embedded-opentype');";else if(h!="")a=a+"src:url('"+h+"');";else return;f.addStyleSheet(a+"\n}\n");b.embeddedFonts.push(g.family)}}};f.loadCookie=f.loadCookie=function(b){var a={};if(arguments.length>0){var d=f.loadCookie(),e;for(e in d)if(e==
b)for(var h=unescape(d[e]).split(";"),j=0;j<h.length;j++){var s=h[j].split("=");a[s[0]]=s.length>1?s[1]:""}}else if(typeof document.cookie!="undefined"&&document.cookie!=""){d=document.cookie.split(/;\s*/);for(j=0;j<d.length;j++){h=d[j].split("=");h.length==2&&(a[h[0]]=h[1])}}return a};f.saveCookie=f.saveCookie=function(b,a){var d="",e;for(e in a)d=d+e+"="+a[e]+";";e=(new Date((new Date).valueOf()+2592E6)).toGMTString();document.cookie=b+"="+escape(d)+"; path=/; expires="+e};f.toNumber=f.toNumber=
function(b,a){var d=parseInt(b,10);return isNaN(d)?a:d};f.toFloat=f.toFloat=function(b,a){var d=parseFloat(b);return isNaN(d)?a:d};f.toNzString=f.nzString=function(b,a){var d="";arguments.length>1&&(d=a);return typeof b=="undefined"||b==null||b==0||b==""?d:""+b};f.deepCopy=function(b,a){var d=a||{},e;for(e in b)if(typeof b[e]==="object"){d[e]=b[e].constructor===Array?[]:{};f.deepCopy(b[e],d[e])}else d[e]=b[e];return d};"indexOf"in Array||(Array.prototype.indexOf=function(b,a){for(var d=a||0;d<this.length;d++)if(this[d]==
b)return d;return-1});f.eventTarget=function(b){return b&&b.target?b.target:window.event?window.event.srcElement:null};f.eventType=function(b){return b&&b.type?b.type:window.event?window.event.type:""};f.alert=f.alert=function(a,c){var d=b.waiting,e=d.firstChild.childNodes;e[0].style.display="block";e[1].className="kmw-alert-text";e[1].innerHTML=a;e[2].style.display="none";d.style.display="block";d.dismiss=arguments.length>1?c:null};f.prepareWait=function(){var a=document.createElement("DIV"),c=document.createElement("DIV"),
d=document.createElement("DIV"),e=document.createElement("DIV"),h=document.createElement("DIV");a.className="kmw-wait-background";c.className="kmw-wait-box";a.dismiss=null;d.className="kmw-wait-text";e.className="kmw-wait-graphic";h.className="kmw-alert-close";c.onmousedown=c.onclick=function(){if(h.style.display=="block"){a.style.display="none";a.dismiss&&a.dismiss()}};c.addEventListener("touchstart",c.onclick,false);a.onmousedown=a.onclick=function(b){b.preventDefault();b.stopPropagation()};a.addEventListener("touchstart",
a.onclick,false);c.appendChild(h);c.appendChild(d);c.appendChild(e);a.appendChild(c);document.body.appendChild(a);b.waiting=a};f.myPath=function(b){var a,d=document.getElementsByTagName("script"),e;for(a=0;a<d.length;a++){e=d[a];if(e.src.indexOf(b)>=0)return e.src.substr(0,e.src.lastIndexOf("/")+1)}return""};f.prependProtocol=function(a){return/^https?:/.test(a)?a:a.substr(0,2)=="//"?b.protocol+a:a.substr(0,1)=="/"?b.protocol+"/"+a:b.protocol+"//"+a};f.testString=function(b){var a=b.family;if("sample"in
b&&typeof b.sample=="string")return"BESbswy"+b.sample;for(var d=["TamilWeb","TibetanWeb","LatinWeb","CherokeeWeb","EgyptianWeb","SinhalaWeb","KhmerWeb","ArabicWeb","BurmeseWeb","LaoWeb","OriyaWeb","GeezWeb"],e=["\u0bbe\u0bf5","\u0f7f\u0fd0","\u02b0\u02a4","\u13d0\u13c9","\ua723\uf7d3","\u0dd8\u0da3","\u17d6\u178e","\u0639\u06b3","\u1038\u1024","\u0ec0\u0edd","\u0b03\u0b06","\u1361\u132c"],b=0;b<d.length;b++)if(a==d[b])return"BESbswy"+e[b];return"BESbswy"};f.checkFont=function(b){var a=false,a=b.family,
d=document.createElement("DIV"),e=d.style,h=document.createElement("P"),j=document.createElement("P"),s=document.createElement("SPAN"),l=s.style,i=document.createElement("SPAN"),k=i.style;e.position="absolute";e.top="10px";e.left="10px";e.visibility="hidden";document.body.appendChild(d);d.appendChild(h);d.appendChild(j);h.appendChild(s);j.appendChild(i);s.setAttribute("style","font-family:monospace !important");k.fontFamily=a+",monospace";l.fontSize=k.fontSize="24px";s.innerHTML=i.innerHTML=f.testString(b);
if(s.offsetWidth!=i.offsetWidth){s.setAttribute("style","font-family:sans-serif !important");k.fontFamily=a+",sans-serif";if(s.offsetWidth!=i.offsetWidth){s.setAttribute("style","font-family:serif !important");k.fontFamily=a+",serif"}}a=s.offsetWidth!=i.offsetWidth;h.removeChild(s);j.removeChild(i);d.removeChild(h);d.removeChild(j);document.body.removeChild(d);return a};b.isFontAvailable=function(b){return f.checkFont({family:b})};f.checkFontDescriptor=function(b){return typeof b=="undefined"||typeof b.family!=
"string"?true:f.checkFont(b)}})();(function(){var b=window.tavultesoft.keymanweb,f=b.osk,i=b.util,k=i.device;b.debug=b.debug=function(a){var c;if(null==b.debugElement){var d=document.createElement("DIV");c=d.style;c.position="absolute";c.width="30%";c.maxHeight="50%";c.top="0";c.right="0";c.minHeight="50px";c.border="1px solid blue";c.whiteSpace="pre-line";c.overflowY="scroll";c=document.createElement("P");c.id="debug_output";c.style.margin="2px";d.appendChild(c);document.body.appendChild(d);b.debugElement=c}if(null!=(c=document.getElementById("debug_output")))if(0==
d+","+e+","+h+")"}catch(o){j="rgb("+a+","+d+","+e+")"}return j};f.addStyleSheet=f.addStyleSheet=function(b){var a=document.createElement("STYLE");a.type="text/css";a.styleSheet?a.styleSheet.cssText=b:a.appendChild(document.createTextNode(b));b=document.getElementsByTagName("HEAD");b.length>0?b[0].appendChild(a):document.body.appendChild(a);return a};f.removeStyleSheet=f.removeStyleSheet=function(b){if(b==null||typeof b!="object"||b.nodeName!="STYLE"||typeof b.parentNode=="undefined"||b.parentNode==
null)return false;b.parentNode.removeChild(b);return true};f.linkStyleSheet=f.linkStyleSheet=function(b){var a=document.getElementsByTagName("head");if(a.length>0){var d=document.createElement("link");d.type="text/css";d.rel="stylesheet";d.href=b;a[0].appendChild(d)}};f.addFontFaceStyleSheet=function(g){if(typeof g!="undefined"){typeof g.files=="undefined"&&(g.files=g.source);if(typeof g.files!="undefined"){var a,d="",e="",h="",j="",o=[];for(a=0;a<b.embeddedFonts.length;a++)if(b.embeddedFonts[a]==
g.family)return;typeof g.files=="string"?o[0]=g.files:o=g.files;for(a=0;a<o.length;a++){o[a].indexOf(".ttf")>0&&(d=o[a]);o[a].indexOf(".woff")>0&&(e=o[a]);o[a].indexOf(".eot")>0&&(h=o[a]);o[a].indexOf(".svg")>0&&(j=o[a])}d!=""&&d.indexOf("/")<0&&(d=b.options.fonts+d);e!=""&&e.indexOf("/")<0&&(e=b.options.fonts+e);h!=""&&h.indexOf("/")<0&&(h=b.options.fonts+h);j!=""&&j.indexOf("/")<0&&(j=b.options.fonts+j);a="@font-face {\nfont-family:"+g.family+";\nfont-style:normal;\nfont-weight:normal;\n";if(f._GetIEVersion()>=
9)if(k.OS=="iOS")if(d!="")a=a+"src:url('"+d+"') format('truetype');";else return;else{h=[];if(k.OS=="Android"){j!=""&&h.push("url('"+j+"') format('svg')");e!=""&&h.push("url('"+e+"') format('woff')");d!=""&&h.push("url('"+d+"') format('truetype')")}else{e!=""&&h.push("url('"+e+"') format('woff')");d!=""&&h.push("url('"+d+"') format('truetype')");j!=""&&h.push("url('"+j+"') format('svg')")}if(h.length==0)return;a=a+("src:"+h.join(",")+";")}else if(h!="")a=a+"src:url('"+h+"');";else return;f.addStyleSheet(a+
"\n}\n");b.embeddedFonts.push(g.family)}}};f.loadCookie=f.loadCookie=function(b){var a={};if(arguments.length>0){var d=f.loadCookie(),e;for(e in d)if(e==b)for(var h=unescape(d[e]).split(";"),j=0;j<h.length;j++){var o=h[j].split("=");a[o[0]]=o.length>1?o[1]:""}}else if(typeof document.cookie!="undefined"&&document.cookie!=""){d=document.cookie.split(/;\s*/);for(j=0;j<d.length;j++){h=d[j].split("=");h.length==2&&(a[h[0]]=h[1])}}return a};f.saveCookie=f.saveCookie=function(b,a){var d="",e;for(e in a)d=
d+e+"="+a[e]+";";e=(new Date((new Date).valueOf()+2592E6)).toGMTString();document.cookie=b+"="+escape(d)+"; path=/; expires="+e};f.toNumber=f.toNumber=function(b,a){var d=parseInt(b,10);return isNaN(d)?a:d};f.toFloat=f.toFloat=function(b,a){var d=parseFloat(b);return isNaN(d)?a:d};f.toNzString=f.nzString=function(b,a){var d="";arguments.length>1&&(d=a);return typeof b=="undefined"||b==null||b==0||b==""?d:""+b};f.deepCopy=function(b,a){var d=a||{},e;for(e in b)if(typeof b[e]==="object"){d[e]=b[e].constructor===
Array?[]:{};f.deepCopy(b[e],d[e])}else d[e]=b[e];return d};"indexOf"in Array||(Array.prototype.indexOf=function(b,a){for(var d=a||0;d<this.length;d++)if(this[d]==b)return d;return-1});f.eventTarget=function(b){return b&&b.target?b.target:window.event?window.event.srcElement:null};f.eventType=function(b){return b&&b.type?b.type:window.event?window.event.type:""};f.alert=f.alert=function(a,c){var d=b.waiting,e=d.firstChild.childNodes;e[0].style.display="block";e[1].className="kmw-alert-text";e[1].innerHTML=
a;e[2].style.display="none";d.style.display="block";d.dismiss=arguments.length>1?c:null};f.prepareWait=function(){var a=document.createElement("DIV"),c=document.createElement("DIV"),d=document.createElement("DIV"),e=document.createElement("DIV"),h=document.createElement("DIV");a.className="kmw-wait-background";c.className="kmw-wait-box";a.dismiss=null;d.className="kmw-wait-text";e.className="kmw-wait-graphic";h.className="kmw-alert-close";c.onmousedown=c.onclick=function(){if(h.style.display=="block"){a.style.display=
"none";a.dismiss&&a.dismiss()}};c.addEventListener("touchstart",c.onclick,false);a.onmousedown=a.onclick=function(b){b.preventDefault();b.stopPropagation()};a.addEventListener("touchstart",a.onclick,false);c.appendChild(h);c.appendChild(d);c.appendChild(e);a.appendChild(c);document.body.appendChild(a);b.waiting=a};f.myPath=function(b){var a,d=document.getElementsByTagName("script"),e;for(a=0;a<d.length;a++){e=d[a];if(e.src.indexOf(b)>=0)return e.src.substr(0,e.src.lastIndexOf("/")+1)}return""};f.prependProtocol=
function(a){return/^https?:/.test(a)?a:a.substr(0,2)=="//"?b.protocol+a:a.substr(0,1)=="/"?b.protocol+"/"+a:b.protocol+"//"+a};f.testString=function(b){var a=b.family;if("sample"in b&&typeof b.sample=="string")return"BESbswy"+b.sample;for(var d=["TamilWeb","TibetanWeb","LatinWeb","CherokeeWeb","EgyptianWeb","SinhalaWeb","KhmerWeb","ArabicWeb","BurmeseWeb","LaoWeb","OriyaWeb","GeezWeb"],e=["\u0bbe\u0bf5","\u0f7f\u0fd0","\u02b0\u02a4","\u13d0\u13c9","\ua723\uf7d3","\u0dd8\u0da3","\u17d6\u178e","\u0639\u06b3",
"\u1038\u1024","\u0ec0\u0edd","\u0b03\u0b06","\u1361\u132c"],b=0;b<d.length;b++)if(a==d[b])return"BESbswy"+e[b];return"BESbswy"};f.checkFont=function(b){var a=false,a=b.family,d=document.createElement("DIV"),e=d.style,h=document.createElement("P"),j=document.createElement("P"),o=document.createElement("SPAN"),l=o.style,i=document.createElement("SPAN"),k=i.style;e.position="absolute";e.top="10px";e.left="10px";e.visibility="hidden";document.body.appendChild(d);d.appendChild(h);d.appendChild(j);h.appendChild(o);
j.appendChild(i);o.setAttribute("style","font-family:monospace !important");k.fontFamily=a+",monospace";l.fontSize=k.fontSize="24px";o.innerHTML=i.innerHTML=f.testString(b);if(o.offsetWidth!=i.offsetWidth){o.setAttribute("style","font-family:sans-serif !important");k.fontFamily=a+",sans-serif";if(o.offsetWidth!=i.offsetWidth){o.setAttribute("style","font-family:serif !important");k.fontFamily=a+",serif"}}a=o.offsetWidth!=i.offsetWidth;h.removeChild(o);j.removeChild(i);d.removeChild(h);d.removeChild(j);
document.body.removeChild(d);return a};b.isFontAvailable=function(b){return f.checkFont({family:b})};f.checkFontDescriptor=function(b){return typeof b=="undefined"||typeof b.family!="string"?true:f.checkFont(b)}})();(function(){var b=window.tavultesoft.keymanweb,f=b.osk,i=b.util,k=i.device;b.debug=b.debug=function(a){var c;if(null==b.debugElement){var d=document.createElement("DIV");c=d.style;c.position="absolute";c.width="30%";c.maxHeight="50%";c.top="0";c.right="0";c.minHeight="50px";c.border="1px solid blue";c.whiteSpace="pre-line";c.overflowY="scroll";c=document.createElement("P");c.id="debug_output";c.style.margin="2px";d.appendChild(c);document.body.appendChild(d);b.debugElement=c}if(null!=(c=document.getElementById("debug_output")))if(0==
arguments.length)"undefined"!=typeof c.textContent?c.textContent="":c.innerHTML="";else{var d=(new Date).toTimeString().substr(3,5),e=a,h;if("object"==typeof a)if(null==a)e="null";else{e="{";for(h in a){e=e+h+":";switch(typeof a[h]){case "string":case "number":case "boolean":e+=a[h];break;default:e+=typeof a[h]}e+="; "}2<e.length&&(e=e.substr(0,e.length-2));e+="}"}"undefined"!=typeof c.textContent?c.textContent=d+" "+e+"\n"+c.textContent:c.innerHTML=d+" "+e+"<br />"+c.innerHTML}};b.debugElement=null;
b.addEventListener=b.addEventListener=function(b,a){return i.addEventListener("kmw."+b,a)};b.setupTouchDevice=function(){b.cancelInput=function(){b._ActiveElement=null;b.hideCaret();f.hideNow()};b.setBlur=function(a){"relatedTarget"in a&&a.relatedTarget&&("DIV"!=a.relatedTarget.nodeName||-1==a.relatedTarget.className.indexOf("keymanweb-input"))?b.cancelInput():b.focusing||b.cancelInput()};b.setFocus=function(a){b.focusing=!0;b.focusTimer=window.setTimeout(function(){b.focusing=!1},1E3);var d=a;a?
"object"==typeof a.touches&&(d=a.touches[0]):(d={clientX:0,clientY:0},d.target=b._LastActiveElement?b._LastActiveElement.kmw_ip:b.sortedInputs[0].kmw_ip);var a=d.clientX,g=d.clientY,e=d.target,c;c="SPAN"==e.nodeName?e.parentNode:null!=e.className&&0<=e.className.indexOf("keymanweb-input")?e.firstChild:e;d=c.parentNode;b._ActiveElement!=d&&(b.hideCaret(),b._ActiveElement=d,d.focus());b._SetTargDir(d);b.useInternalKeyboard=!1;f.ready&&!f._Visible&&f._Show();if("DIV"==e.nodeName)g=i._GetAbsoluteX(c.firstChild),
"rtl"==d.dir?(g+=c.firstChild.offsetWidth,c=a>g?0:1E5):c=a<g?0:1E5,b.setTextCaret(d,c),b.scrollInput(d);else{var h,j,s,l,n,k,e=c.childNodes[1];h=0;j=b.getText(d)._kmwLength();c=b.getTextCaret(d);l=document.body.scrollTop;if("TEXTAREA"==d.base.nodeName){n=Math.round(d.base.offsetHeight/d.base.rows);for(k=0;16>k;k++){s=i._GetAbsoluteY(e)-l;if(s>g&&c>h&&c!=j)j=c,c=Math.round((c+h)/2);else if(s<g-n&&c<j&&c!=h)h=c,c=Math.round((c+j)/2);else break;b.setTextCaret(d,c)}for(;i._GetAbsoluteY(e)-l>g&&c>h;)b.setTextCaret(d,
--c);for(;i._GetAbsoluteY(e)-l<g-n&&c<j;)b.setTextCaret(d,++c)}if("rtl"==d.dir){for(k=0;16>k;k++){g=i._GetAbsoluteX(e);if(g<a&&c>h&&c!=j)j=c,c=Math.round((c+h)/2);else if(g>a&&c<j&&c!=h)h=c,c=Math.round((c+j)/2);else break;b.setTextCaret(d,c)}for(;i._GetAbsoluteX(e)<a&&c>h;)b.setTextCaret(d,--c);for(;i._GetAbsoluteX(e)>a&&c<j;)b.setTextCaret(d,++c)}else{for(k=0;16>k;k++){g=i._GetAbsoluteX(e);if(g>a&&c>h&&c!=j)j=c,c=Math.round((c+h)/2);else if(g<a&&c<j&&c!=h)h=c,c=Math.round((c+j)/2);else break;b.setTextCaret(d,
"rtl"==d.dir?(g+=c.firstChild.offsetWidth,c=a>g?0:1E5):c=a<g?0:1E5,b.setTextCaret(d,c),b.scrollInput(d);else{var h,j,o,l,r,k,e=c.childNodes[1];h=0;j=b.getText(d)._kmwLength();c=b.getTextCaret(d);l=document.body.scrollTop;if("TEXTAREA"==d.base.nodeName){r=Math.round(d.base.offsetHeight/d.base.rows);for(k=0;16>k;k++){o=i._GetAbsoluteY(e)-l;if(o>g&&c>h&&c!=j)j=c,c=Math.round((c+h)/2);else if(o<g-r&&c<j&&c!=h)h=c,c=Math.round((c+j)/2);else break;b.setTextCaret(d,c)}for(;i._GetAbsoluteY(e)-l>g&&c>h;)b.setTextCaret(d,
--c);for(;i._GetAbsoluteY(e)-l<g-r&&c<j;)b.setTextCaret(d,++c)}if("rtl"==d.dir){for(k=0;16>k;k++){g=i._GetAbsoluteX(e);if(g<a&&c>h&&c!=j)j=c,c=Math.round((c+h)/2);else if(g>a&&c<j&&c!=h)h=c,c=Math.round((c+j)/2);else break;b.setTextCaret(d,c)}for(;i._GetAbsoluteX(e)<a&&c>h;)b.setTextCaret(d,--c);for(;i._GetAbsoluteX(e)>a&&c<j;)b.setTextCaret(d,++c)}else{for(k=0;16>k;k++){g=i._GetAbsoluteX(e);if(g>a&&c>h&&c!=j)j=c,c=Math.round((c+h)/2);else if(g<a&&c<j&&c!=h)h=c,c=Math.round((c+j)/2);else break;b.setTextCaret(d,
c)}for(;i._GetAbsoluteX(e)>a&&c>h;)b.setTextCaret(d,--c);for(;i._GetAbsoluteX(e)<a&&c<j;)b.setTextCaret(d,++c)}}b._ActiveControl=null;b._LastActiveElement=d;for(a=0;a<b._Controls.length;a++)if(b._Controls[a].LControl==d){b._ActiveControl=b._Controls[a];break}null!=b._ActiveControl&&null!=b._ActiveControl.LDefaultInternalName&&(b._JustActivatedKeymanWebUI?b._ActiveControl.LDefaultInternalName=null==b._ActiveKeyboard?"":b._ActiveKeyboard.KI:b._SetActiveKeyboard(b._ActiveControl.LDefaultInternalName,
"",!0));!b._IsIEEditableIframe(d,1)||!b._IsMozillaEditableIframe(d,1)?b._DisableInput=1:(b._DisableInput=0,b._JustActivatedKeymanWebUI||(b._DeadKeys=[],b._NotifyKeyboard(0,d,1)),!b._JustActivatedKeymanWebUI&&b._SelectionControl!=d&&(b._IsActivatingKeymanWebUI=0),b._JustActivatedKeymanWebUI=0,b._SelectionControl=d)};b.caret=document.createElement("DIV");var a=b.caret.style;a.position="absolute";a.height="16px";a.width="2px";a.backgroundColor="blue";a.border="none";a.left=a.top=0;a.display="block";
a.visibility="hidden";a.zIndex="9998";b.showCaret=function(d){if(d&&d.firstChild&&!(3>d.firstChild.childNodes.length)){var a=d.firstChild,g=b.caret.style,e=a.childNodes[1];b.caret.parentNode!=a&&a.appendChild(b.caret);g.left=e.offsetLeft+"px";g.top=e.offsetTop+"px";g.height=e.offsetHeight-1+"px";g.visibility="hidden";b.scrollBody(d);b.setScrollBar(d)}};b.setScrollBar=function(b){var d=b.childNodes[0],a=b.childNodes[1].style;(d.offsetWidth>b.offsetWidth||0>d.offsetLeft)&&"TEXTAREA"!=b.base.nodeName?
@ -51,24 +51,24 @@ a.visibility="hidden";a.zIndex="9998";b.showCaret=function(d){if(d&&d.firstChild
function(){var d=b._LastActiveElement;if(d&&null!=d.className&&0<=d.className.indexOf("keymanweb-input")){d.base.value=b.getText(d);b.setText(d,null,1E5);var a=d.firstChild.style;"TEXTAREA"==d.base.nodeName?a.top="0":a.left="rtl"==d.base.dir?d.offsetWidth-d.firstChild.offsetWidth-8+"px":"0";b.caret.parentNode&&b.caret.parentNode.removeChild(b.caret);b.caret.style.visibility="hidden";1<d.childNodes.length&&(d.childNodes[1].style.visibility="hidden")}};b.timerId=window.setInterval(b.flashCaret,500);
b.setText=function(d,a,g){if(d&&0<d.childNodes.length){var e=d.firstChild,c=0;if(3<=e.childNodes.length){var h=e.childNodes[0],e=e.childNodes[2],j;null===a&&(j="string"==typeof h.textContent?h.textContent:h.innerText,a="string"==typeof e.textContent?e.textContent:e.innerText,a=j+a);0>g&&(g=0);c=a._kmwLength();if(null===g||g>c)g=c;j=a._kmwSubstr(0,g);a=a._kmwSubstr(g);"string"==typeof h.textContent?h.textContent=j:h.innerText=j;"string"==typeof e.textContent?e.textContent=a:e.innerText=a}}b.updateBaseElement(d,
c)};b.updateBaseElement=function(d,a){d.base.value=b.getText(d);d.style.backgroundColor=0==a?"transparent":window.getComputedStyle(d.base,null).backgroundColor;"iOS"==k.OS&&(d.base.style.visibility=0==a?"visible":"hidden")};b.getText=function(b){return null==b?"":"string"==typeof b.textContent?b.textContent:b.innerText};b.getTextBeforeCaret=function(b){if(b&&1<b.childNodes.length&&(b=b.firstChild,0<b.childNodes.length)){b=b.childNodes[0];if("textContent"in b)return b.textContent;if("innerText"in b)return b.innerText}return""};
b.setTextBeforeCaret=function(d,a){if(d&&0<d.childNodes.length){var g=d.firstChild,e=0;1<g.childNodes.length&&(e=g.childNodes[0],g=g.childNodes[2],"TEXTAREA"!=d.base.nodeName&&(a=a.replace(/\s+$/," ")),"textContent"in e?e.textContent=a:"innerText"in e&&(e.innerText=a),e=a.length,"textContent"in g?e+=g.textContent.length:"innerText"in g&&(e+=g.innerText.length))}b.updateBaseElement(d,e);b.scrollInput(d)};b.getTextCaret=function(d){return b.getTextBeforeCaret(d)._kmwLength()};b.setTextCaret=function(d,
b.setTextBeforeCaret=function(d,a){if(d&&0<d.childNodes.length){var e=d.firstChild,g=0;1<e.childNodes.length&&(g=e.childNodes[0],e=e.childNodes[2],"TEXTAREA"!=d.base.nodeName&&(a=a.replace(/\s+$/," ")),"textContent"in g?g.textContent=a:"innerText"in g&&(g.innerText=a),g=a.length,"textContent"in e?g+=e.textContent.length:"innerText"in e&&(g+=e.innerText.length))}b.updateBaseElement(d,g);b.scrollInput(d)};b.getTextCaret=function(d){return b.getTextBeforeCaret(d)._kmwLength()};b.setTextCaret=function(d,
a){b.setText(d,null,a);b.showCaret(d)};b.dragInput=function(d){d.preventDefault();d.stopPropagation();var a="object"==typeof d.targetTouches?d.targetTouches[0].target:d.target;if(null!=a){if(null==a.className||0>a.className.indexOf("keymanweb-input"))a=a.parentNode;if(null==a.className||0>a.className.indexOf("keymanweb-input"))a=a.parentNode;if(!(null==a.className||0>a.className.indexOf("keymanweb-input"))){var g="object"==typeof d.touches?d.touches[0].screenX:d.screenX,e="object"==typeof d.touches?
d.touches[0].screenY:d.screenY;if("undefined"==typeof b.firstTouch||null==b.firstTouch)b.firstTouch={x:g,y:e};else{var c=b.firstTouch.x,h=b.firstTouch.y,d=a.firstChild,j;if("TEXTAREA"==a.base.nodeName){if(g=parseInt(d.style.top,10),isNaN(g)&&(g=0),c=h-e,-4>c||4<c)d.style.top=(g<c?g-c:0)+"px",b.firstTouch.y=e}else if(e=parseInt(d.style.left,10),isNaN(e)&&(e=0),j=c-g,-4>j||4<j)c=0,h=i._GetAbsoluteX(a)+a.offsetWidth-d.offsetWidth-32,"rtl"==a.base.dir?c=16:h-=24,e-=j,e>c&&(e=c),e<h&&(e=h),d.style.left=
e+"px",b.firstTouch.x=g}b.setScrollBar(a)}}};b.scrollInput=function(d){if(d&&d.firstChild&&!(null==d.className||0>d.className.indexOf("keymanweb-input"))){var a=d.firstChild;if(!(3>a.childNodes.length)){var e=a.childNodes[1],g=i._GetAbsoluteX(e),e=i._GetAbsoluteY(e),c=i._GetAbsoluteX(d),h=i._GetAbsoluteY(d),j=parseInt(a.style.left,10),f=parseInt(a.style.top,10),s=0,l=0;isNaN(j)&&(j=0);isNaN(f)&&(f=0);"TEXTAREA"==d.base.nodeName?(g=Math.round(d.offsetHeight/d.base.rows),e<h&&(l=e-h),e>h+d.offsetHeight-
g&&(l=e-h-d.offsetHeight+g),0!=l&&(a.style.top=(f<l?f-l:0)+"px")):(g<c+8&&(s=g-c-12),g>c+d.offsetWidth-12&&(s=g-c-d.offsetWidth+12),0!=s&&(a.style.left=(j<s?j-s:0)+"px"));b.showCaret(d)}}};b.scrollBody=function(b){if(b&&!(null==b.className||0>b.className.indexOf("keymanweb-input")||!f.ready)){var b=b.firstChild.childNodes[1],d=i._GetAbsoluteY(b),a=window.pageYOffset,e=0;d<a?e=d-a:(e=d-a-(window.innerHeight-f._Box.offsetHeight-b.offsetHeight-2),0>e&&(e=0));0!=e&&window.scrollTo(0,e+window.pageYOffset)}};
e+"px",b.firstTouch.x=g}b.setScrollBar(a)}}};b.scrollInput=function(d){if(d&&d.firstChild&&!(null==d.className||0>d.className.indexOf("keymanweb-input"))){var a=d.firstChild;if(!(3>a.childNodes.length)){var e=a.childNodes[1],g=i._GetAbsoluteX(e),e=i._GetAbsoluteY(e),c=i._GetAbsoluteX(d),h=i._GetAbsoluteY(d),j=parseInt(a.style.left,10),f=parseInt(a.style.top,10),o=0,l=0;isNaN(j)&&(j=0);isNaN(f)&&(f=0);"TEXTAREA"==d.base.nodeName?(g=Math.round(d.offsetHeight/d.base.rows),e<h&&(l=e-h),e>h+d.offsetHeight-
g&&(l=e-h-d.offsetHeight+g),0!=l&&(a.style.top=(f<l?f-l:0)+"px")):(g<c+8&&(o=g-c-12),g>c+d.offsetWidth-12&&(o=g-c-d.offsetWidth+12),0!=o&&(a.style.left=(j<o?j-o:0)+"px"));b.showCaret(d)}}};b.scrollBody=function(b){if(b&&!(null==b.className||0>b.className.indexOf("keymanweb-input")||!f.ready)){var b=b.firstChild.childNodes[1],d=i._GetAbsoluteY(b),a=window.pageYOffset,e=0;d<a?e=d-a:(e=d-a-(window.innerHeight-f._Box.offsetHeight-b.offsetHeight-2),0>e&&(e=0));0!=e&&window.scrollTo(0,e+window.pageYOffset)}};
b.updateInput=function(b){var d=b.style,a=b.base,e=window.getComputedStyle(a,null),g=parseInt(e.marginLeft,10),c=parseInt(e.marginTop,10),h=i._GetAbsoluteX(a),j=i._GetAbsoluteY(a),f=b.offsetParent;f&&(h-=i._GetAbsoluteX(f),j-=i._GetAbsoluteY(f));isNaN(g)&&(g=0);isNaN(c)&&(c=0);d.left=h-g+"px";d.top=j-c+"px";"undefined"!=typeof e.MozBoxSizing&&(d.left=h+"px",d.top=j+"px");var g=a.offsetWidth,a=a.offsetHeight,c=parseInt(e.paddingLeft,10),h=parseInt(e.paddingRight,10),j=parseInt(e.paddingTop,10),f=parseInt(e.paddingBottom,
10),s=parseInt(e.borderLeft,10),l=parseInt(e.borderRight,10),n=parseInt(e.borderTop,10),q=parseInt(e.borderBottom,10),D="undefined";"undefined"!=typeof e.boxSizing?D=e.boxSizing:"undefined"!=typeof e.MozBoxSizing&&(D=e.MozBoxSizing);"content-box"==D&&(isNaN(c)||(g-=c),isNaN(h)||(g-=h),isNaN(s)||(g-=s),isNaN(l)||(g-=l),isNaN(j)||(a-=j),isNaN(f)||(a-=f),isNaN(n)||(a-=n),isNaN(q)||(a-=q));"Android"==k.OS&&("undefined"!=typeof e.MozBoxSizing?(d.paddingTop=j+1+"px",d.paddingLeft=c+"px","TEXTAREA"==b.base.nodeName?
10),o=parseInt(e.borderLeft,10),l=parseInt(e.borderRight,10),r=parseInt(e.borderTop,10),q=parseInt(e.borderBottom,10),D="undefined";"undefined"!=typeof e.boxSizing?D=e.boxSizing:"undefined"!=typeof e.MozBoxSizing&&(D=e.MozBoxSizing);"content-box"==D&&(isNaN(c)||(g-=c),isNaN(h)||(g-=h),isNaN(o)||(g-=o),isNaN(l)||(g-=l),isNaN(j)||(a-=j),isNaN(f)||(a-=f),isNaN(r)||(a-=r),isNaN(q)||(a-=q));"Android"==k.OS&&("undefined"!=typeof e.MozBoxSizing?(d.paddingTop=j+1+"px",d.paddingLeft=c+"px","TEXTAREA"==b.base.nodeName?
d.marginTop="1px":d.marginLeft="1px",g--,a--):(g++,a++));d.width=g+"px";d.height=a+"px"};for(var c=0;2>c;c++)for(var d=document.getElementsByTagName(0==c?"INPUT":"TEXTAREA"),a=0;a<d.length;a++)if(d[a].kmwInput){var e=document.createElement("DIV");e.base=e.base=d[a];e.base.className=e.base.className?e.base.className+" keymanweb-font":"keymanweb-font";d[a].kmw_ip=e;b.inputList.push(e)}else d[a].addEventListener("touchstart",function(){b.focusing=!1;clearTimeout(b.focusTimer);f.hideNow()},!1);for(var h,
j,s,l,n,q,a=0;a<b.inputList.length;a++)e=b.inputList[a],e.className="keymanweb-input",e.dir=e.base.dir,h=document.createElement("DIV"),d=window.getComputedStyle(e.base,null),c=e.style,c.overflow="hidden",c.position="absolute",c.border="hidden",c.border="none",c.borderRadius="5px",n=document.createElement("DIV"),j=n.style,j.position="absolute",j.height=j.width="4px",j.left=j.top="0",j.display="block",j.visibility="hidden",j.backgroundColor="#808080",j.borderRadius="2px",j=document.createElement("SPAN"),
s=document.createElement("SPAN"),l=document.createElement("SPAN"),j.innerHTML=s.innerHTML=l.innerHTML="",j.className=s.className=l.className="keymanweb-font",h.appendChild(j),h.appendChild(l),h.appendChild(s),e.appendChild(h),e.appendChild(n),h=h.style,h.position="absolute",n=j.style,q=s.style,l=l.style,n.border=q.border="none",n.height=q.height="100%",n.fontFamily=q.fontFamily=h.fontFamily=d.fontFamily,"INPUT"==e.base.nodeName&&!isNaN(parseInt(d.height,10))&&(n.lineHeight=q.lineHeight=d.height),
l.border="1px solid red",l.visibility="hidden",l.marginLeft=l.marginRight="-1px",c.padding="8px",h.padding="0px 2px",h.backgroundColor="Android"==k.OS&&"transparent"==d.backgroundColor?"#fff":d.backgroundColor,e.tabIndex="0",e.style.msTouchAction="none",e.addEventListener("touchstart",b.setFocus),e.onmspointerdown=e.onmousedown=function(d){d.preventDefault();d.stopPropagation();return b.setFocus(d)},e.addEventListener("touchend",function(b){b.stopPropagation()}),e.onmspointerup=e.onmouseup=function(b){b.stopPropagation()},
e.addEventListener("touchmove",b.dragInput,!1),e.onmspointermove=e.onmousemove=b.dragInput,e.onblur=b.setBlur,j.style.whiteSpace="TEXTAREA"==e.base.nodeName?s.style.whiteSpace="pre-wrap":s.style.whiteSpace="pre",e.base.parentNode.appendChild(e),b.updateInput(e),c=e.style,c.color=d.color,c.fontFamily=d.fontFamily,c.fontSize=d.fontSize,c.fontWeight=d.fontWeight,c.textDecoration=d.textDecoration,c.padding=d.padding,c.margin=d.margin,c.border=d.border,c.borderRadius=d.borderRadius,"webkitTapHighlightColor"in
c&&(c.webkitTapHighlightColor="rgba(0,0,0,0)"),"TEXTAREA"==e.base.nodeName?(2==e.base.rows&&(j=parseInt(d.height,10)-parseInt(d.paddingTop,10)-parseInt(d.paddingBottom,10),d=parseInt(d.fontSize,10),d=Math.round(j/d),d>e.base.rows+1&&(e.base.rows=d)),h.width=c.width,h.minHeight=c.height):(h.minWidth=c.width,h.height=c.height),e.base.style.visibility="hidden",function(d){d.base.addEventListener("resize",function(){b.updateInput(d)},false)}(e),b.setText(e,e.base.value,null)};b.setupDesktopPage=function(){for(var a=
0;2>a;a++)for(var c=document.getElementsByTagName(0==a?"INPUT":"TEXTAREA"),d=0;d<c.length;d++)0>c[d].className.indexOf("kmw-disabled")&&!c[d].readOnly&&b.inputList.push(c[d]),c[d].className=c[d].className?c[d].className+" keymanweb-font":"keymanweb-font"};b.getBaseFont=function(){var b=document.getElementsByTagName("INPUT"),a=document.getElementsByTagName("TEXTAREA"),d=0,e;0==b.length&&0==a.length?d=0:0<b.length&&0==a.length?d=1:0==b.length&&0<a.length?d=2:b[0].offsetTop<a[0].offsetTop?d=1:b[0].offsetTop>
a[0].offsetTop?d=2:b[0].offsetLeft<a[0].offsetLeft?d=1:b[0].offsetLeft>a[0].offsetLeft&&(d=2);switch(d){case 0:case 1:i.getStyleValue(b[0],"font-family");case 2:e=i.getStyleValue(a[0],"font-family")}if("undefined"==typeof e||"monospace"==e)e="Arial,sans-serif";return e};b.setFocus=function(){};b.timerID=null;b.getText=function(){return""};b.setText=function(){};b.getTextBeforeCaret=function(){return""};b.setTextBeforeCaret=function(){};b.getTextCaret=function(){return 0};b.setTextCaret=function(){};
b.hideCaret=function(){};b.flashCaret=function(){};b.updateInput=function(){};b.addKeyboards=function(a){0==arguments.length?b.keymanCloudRequest("",!1):b.addKeyboardArray(arguments)};b.addKeyboardArray=function(a){if(b.initialized){if(0!=a.length){var c,d,e,h,j,f=d="";b.cloudList=[];for(c=0;c<a.length;c++){if("string"==typeof a[c]&&0<a[c].length){e=a[c].split("@");h=[""];"english"==e[0].toLowerCase()&&(e[0]="us");1<e.length&&(h=e[1].split(","));for(d=0;d<h.length;d++)j={id:e[0]},""!=h[d]&&(j.language=
h[d]),2<e.length&&(j.version=e[2]),b.cloudList.push(j)}if("object"==typeof a[c]&&null!=a[c])if("string"==typeof a[c].filename)b.addStub(a[c])||alert("To use a custom keyboard, you must specify file name, keyboard name, language, language code and region code.");else if(h=a[c].language,"number"==typeof h.length)for(d=0;d<h.length;d++)b.cloudList.push({id:a[c].id,language:a[c].language[d].id});else b.cloudList.push({id:a[c].id,language:a[c].language.id})}if(0!=b.cloudList.length){d="&keyboardid=";for(c=
0;c<b.cloudList.length;c++)a=b.cloudList[c],e=a.id,j=h="","string"==typeof a.language&&""!=a.language&&(h=a.language),"string"==typeof a.version&&""!=a.version&&(j=a.version),""!=h?(e=e+"@"+h,""!=j&&(e=e+"@"+j)):""!=j&&(e=e+"@@"+j),d=d+f+e,f=",";b.keymanCloudRequest(d,!1)}}}else for(c=0;c<a.length;c++)b.deferredStubs.push(a[c])};b.keymanCloudRequest=function(a,c){var d="https://r.keymanweb.com/api/4.0/",e,h=i._CreateElement("SCRIPT"),d=d+(1<arguments.length&&c?"languages":"keyboards")+"?jsonp=tavultesoft.keymanweb.register";
j,o,l,r,q,a=0;a<b.inputList.length;a++)e=b.inputList[a],e.className="keymanweb-input",e.dir=e.base.dir,h=document.createElement("DIV"),d=window.getComputedStyle(e.base,null),c=e.style,c.overflow="hidden",c.position="absolute",c.border="hidden",c.border="none",c.borderRadius="5px",r=document.createElement("DIV"),j=r.style,j.position="absolute",j.height=j.width="4px",j.left=j.top="0",j.display="block",j.visibility="hidden",j.backgroundColor="#808080",j.borderRadius="2px",j=document.createElement("SPAN"),
o=document.createElement("SPAN"),l=document.createElement("SPAN"),j.innerHTML=o.innerHTML=l.innerHTML="",j.className=o.className=l.className="keymanweb-font",h.appendChild(j),h.appendChild(l),h.appendChild(o),e.appendChild(h),e.appendChild(r),h=h.style,h.position="absolute",r=j.style,q=o.style,l=l.style,r.border=q.border="none",r.height=q.height="100%",r.fontFamily=q.fontFamily=h.fontFamily=d.fontFamily,"INPUT"==e.base.nodeName&&!isNaN(parseInt(d.height,10))&&(r.lineHeight=q.lineHeight=d.height),
l.border="1px solid red",l.visibility="hidden",l.marginLeft=l.marginRight="-1px",c.padding="8px",h.padding="0px 2px",h.backgroundColor="Android"==k.OS&&"transparent"==d.backgroundColor?"#fff":d.backgroundColor,e.tabIndex="0",e.style.msTouchAction="none",e.addEventListener("touchstart",b.setFocus),e.onmspointerdown=function(d){d.preventDefault();d.stopPropagation();return b.setFocus(d)},e.addEventListener("touchend",function(b){b.stopPropagation()}),e.onmspointerup=function(b){b.stopPropagation()},
e.addEventListener("touchmove",b.dragInput,!1),e.onmspointermove=b.dragInput,e.onblur=b.setBlur,j.style.whiteSpace="TEXTAREA"==e.base.nodeName?o.style.whiteSpace="pre-wrap":o.style.whiteSpace="pre",e.base.parentNode.appendChild(e),b.updateInput(e),c=e.style,c.color=d.color,c.fontFamily=d.fontFamily,c.fontSize=d.fontSize,c.fontWeight=d.fontWeight,c.textDecoration=d.textDecoration,c.padding=d.padding,c.margin=d.margin,c.border=d.border,c.borderRadius=d.borderRadius,"webkitTapHighlightColor"in c&&(c.webkitTapHighlightColor=
"rgba(0,0,0,0)"),"TEXTAREA"==e.base.nodeName?(2==e.base.rows&&(j=parseInt(d.height,10)-parseInt(d.paddingTop,10)-parseInt(d.paddingBottom,10),d=parseInt(d.fontSize,10),d=Math.round(j/d),d>e.base.rows+1&&(e.base.rows=d)),h.width=c.width,h.minHeight=c.height):(h.minWidth=c.width,h.height=c.height),e.base.style.visibility="hidden",function(d){d.base.addEventListener("resize",function(){b.updateInput(d)},false)}(e),b.setText(e,e.base.value,null)};b.setupDesktopPage=function(){for(var a=0;2>a;a++)for(var c=
document.getElementsByTagName(0==a?"INPUT":"TEXTAREA"),d=0;d<c.length;d++)0>c[d].className.indexOf("kmw-disabled")&&!c[d].readOnly&&b.inputList.push(c[d]),c[d].className=c[d].className?c[d].className+" keymanweb-font":"keymanweb-font"};b.getBaseFont=function(){var b=document.getElementsByTagName("INPUT"),a=document.getElementsByTagName("TEXTAREA"),d=0,e;0==b.length&&0==a.length?d=0:0<b.length&&0==a.length?d=1:0==b.length&&0<a.length?d=2:b[0].offsetTop<a[0].offsetTop?d=1:b[0].offsetTop>a[0].offsetTop?
d=2:b[0].offsetLeft<a[0].offsetLeft?d=1:b[0].offsetLeft>a[0].offsetLeft&&(d=2);switch(d){case 0:case 1:i.getStyleValue(b[0],"font-family");case 2:e=i.getStyleValue(a[0],"font-family")}if("undefined"==typeof e||"monospace"==e)e="Arial,sans-serif";return e};b.setFocus=function(){};b.timerID=null;b.getText=function(){return""};b.setText=function(){};b.getTextBeforeCaret=function(){return""};b.setTextBeforeCaret=function(){};b.getTextCaret=function(){return 0};b.setTextCaret=function(){};b.hideCaret=
function(){};b.flashCaret=function(){};b.updateInput=function(){};b.addKeyboards=function(a){0==arguments.length?b.keymanCloudRequest("",!1):b.addKeyboardArray(arguments)};b.addKeyboardArray=function(a){if(b.initialized){if(0!=a.length){var c,d,e,h,j,f=d="";b.cloudList=[];for(c=0;c<a.length;c++){if("string"==typeof a[c]&&0<a[c].length){e=a[c].split("@");h=[""];"english"==e[0].toLowerCase()&&(e[0]="us");1<e.length&&(h=e[1].split(","));for(d=0;d<h.length;d++)j={id:e[0]},""!=h[d]&&(j.language=h[d]),
2<e.length&&(j.version=e[2]),b.cloudList.push(j)}if("object"==typeof a[c]&&null!=a[c])if("string"==typeof a[c].filename)b.addStub(a[c])||alert("To use a custom keyboard, you must specify file name, keyboard name, language, language code and region code.");else if(h=a[c].language,"number"==typeof h.length)for(d=0;d<h.length;d++)b.cloudList.push({id:a[c].id,language:a[c].language[d].id});else b.cloudList.push({id:a[c].id,language:a[c].language.id})}if(0!=b.cloudList.length){d="&keyboardid=";for(c=0;c<
b.cloudList.length;c++)a=b.cloudList[c],e=a.id,j=h="","string"==typeof a.language&&""!=a.language&&(h=a.language),"string"==typeof a.version&&""!=a.version&&(j=a.version),""!=h?(e=e+"@"+h,""!=j&&(e=e+"@"+j)):""!=j&&(e=e+"@@"+j),d=d+f+e,f=",";b.keymanCloudRequest(d,!1)}}}else for(c=0;c<a.length;c++)b.deferredStubs.push(a[c])};b.keymanCloudRequest=function(a,c){var d="https://r.keymanweb.com/api/4.0/",e,h=i._CreateElement("SCRIPT"),d=d+(1<arguments.length&&c?"languages":"keyboards")+"?jsonp=tavultesoft.keymanweb.register";
e="&timerid="+window.setTimeout(function(){b.serverUnavailable(a)},1E4);h.charset="UTF-8";h.src=d+a+e;h.type="text/javascript";try{document.body.appendChild(h)}catch(j){document.getElementsByTagName("head")[0].appendChild(h)}};b.addKeyboardsForLanguage=function(a){b.addLanguageKeyboards(arguments)};b.addLanguageKeyboards=function(a){var c,d,e,h=b.languageList,j,f;if(null==h){d=0==b.languagesPending.length;for(c=0;c<a.length;c++)b.languagesPending.push(a[c]);d&&b.keymanCloudRequest("",!0)}else{j="";
for(c=0;c<a.length;c++){e=a[c].toLowerCase();(f="$"==e.substr(-1,1))&&(e=e.substr(0,e.length-1));for(d=0;d<h.length;d++)if(e==h[d].name.toLowerCase()){""!=j&&(j+=",");j=j+"@"+h[d].id;f&&(j+="$");break}}""==j?i.alert("No keyboards are available for "+a[0]+". Does it have another language name?"):b.keymanCloudRequest("&keyboardid="+j,!1)}};b.addStub=function(a){if("string"!=typeof a.id||"undefined"==typeof a.language)return!1;"string"!=typeof a.name&&(a.name=a.id.replace("_"," "),a.name=a.name.substr(0,
1).toUpperCase()+a.name.substr(1));var c=a.language,d=[];"undefined"==typeof c.length?d[0]=c:d=c;for(var e={keyboardBaseUri:b.options.keyboards,fontBaseUri:b.options.fonts},c=0;c<d.length;c++)b.mergeStub(a,d[c],e);return!0};b.findStub=function(a,c){var d,e=b._KeyboardStubs;for(d=0;d<e.length;d++)if(e[d].KI=="Keyboard_"+a&&e[d].KLC==c)return e[d];return null};b.regions="World;Africa;Asia;Europe;South America;North America;Oceania;Central America;Middle East".split(";");b.regionCodes="un af as eu sa na oc ca me".split(" ");
@ -110,9 +110,9 @@ a&&(b._KeyboardStubs[h].KLC==c||"---"==c)){if(b.isCJK(b._KeyboardStubs[h])||k.to
"":b._ActiveKeyboard.KI};b.getActiveLanguage=function(){return null==b._ActiveStub?"":b._ActiveStub.KLC};b.getKeyboard=function(a,c){var d,e;for(d=0;d<b._KeyboardStubs.length;d++)if(e=b._GetKeyboardDetail(b._KeyboardStubs[d]),e.InternalName==a&&(2>arguments.length||e.LanguageCode==c))return e;return null};b.GetKeyboardDetail=function(a){for(var c=b.getKeyboards(),d=0;d<c.length;d++)if(c[d].InternalName==a)return c[d];return null};b._GetKeyboardDetail=function(a){var b=[];b.Name=a.KN;b.InternalName=
a.KI;b.LanguageName=a.KL;b.LanguageCode=a.KLC;b.RegionName=a.KR;b.RegionCode=a.KRC;b.CountryName=a.KC;b.CountryCode=a.KCC;b.KeyboardID=a.KD;b.Font=a.KFont;b.OskFont=a.KOskFont;return b};b.getKeyboards=function(){var a=[],c,d;for(c=0;c<b._KeyboardStubs.length;c++)d=b._KeyboardStubs[c],d=b._GetKeyboardDetail(d),a=b._push(a,d);return a};b._WindowUnload=function(){b.doUnloadUI();f.ready&&f._Unload();b._LastActiveElement=0};i.attachDOMEvent(window,"load",function(){document.body.scrollTop=0;"undefined"!=
typeof document.documentElement&&(document.documentElement.scrollTop=0)},!1);i.attachDOMEvent(window,"unload",b._WindowUnload,!1);b._AttachToControls=function(a){for(var c=a.getElementsByTagName("INPUT"),d=a.getElementsByTagName("TEXTAREA"),e=a.getElementsByTagName("IFRAME"),a=document.evaluate?document.evaluate('//*[@contenteditable and @contenteditable != "false"]',document,null,XPathResult.ANY_TYPE,null):null,h=0;h<c.length;h++)"text"==c[h].type.toLowerCase()&&b.attachToControl(c[h]);for(h=0;h<
d.length;h++)b.attachToControl(d[h]);for(h=0;h<e.length;h++)try{e[h].contentWindow.document&&b._AttachToIframe(e[h])}catch(j){}if(a)for(c=a.iterateNext();c;c=a.iterateNext())b.attachToControl(c);for(h=0;h<b.inputList.length;h++)b.attachToControl(b.inputList[h])};b.fixPath=function(a){if(0==a.length)return a;var b=a.substr(a.length-1,1);return"/"==b||"\\"==b?a:a+"/"};b.init=b.init=function(a){var c,d,e,h,j,s;d=function(a){if(0==a.length)return a;"/"!=a.substr(a.length-1,1)&&(a+="/");return"http"==
d.length;h++)b.attachToControl(d[h]);for(h=0;h<e.length;h++)try{e[h].contentWindow.document&&b._AttachToIframe(e[h])}catch(j){}if(a)for(c=a.iterateNext();c;c=a.iterateNext())b.attachToControl(c);for(h=0;h<b.inputList.length;h++)b.attachToControl(b.inputList[h])};b.fixPath=function(a){if(0==a.length)return a;var b=a.substr(a.length-1,1);return"/"==b||"\\"==b?a:a+"/"};b.init=b.init=function(a){var c,d,e,h,j,o;d=function(a){if(0==a.length)return a;"/"!=a.substr(a.length-1,1)&&(a+="/");return"http"==
a.replace(/^(http)s?:.*/,"$1")||"file"==a.replace(/^(file):.*/,"$1")?a:"//"==a.substr(0,2)?b.protocol+a:"/"==a.substr(0,1)?b.rootPath+a.substr(1):b.srcPath+a};c=b.options;if("object"==typeof a&&null!==a)for(h in c)a.hasOwnProperty(h)&&(c[h]=a[h]);""!=c.root&&(b.rootPath=d(c.root));""==c.resources&&(c.resources=b.srcPath);c.resources=d(c.resources);c.keyboards=d(c.keyboards);c.fonts=d(c.fonts);""==c.attachType&&(c.attachType=k.touchable?"manual":"auto");b.setDefaultDeviceOptions(c);if(!b.initialized)if("complete"!==
document.readyState)window.setTimeout(function(){b.init(a)},50);else{b._MasterDocument=window.document;if(k.touchable){j=document.getElementsByTagName("textarea");s=document.getElementsByTagName("input");for(c=0;c<j.length;c++)if(e=j[c],d=e.className,e.kmwInput=!1,(!d||0>d.indexOf("kmw-disabled"))&&!e.readOnly)e.disabled=!0,e.kmwInput=!0;for(c=0;c<s.length;c++)if(e=s[c],d=e.className,e.kmwInput=!1,(!d||0>d.indexOf("kmw-disabled"))&&!e.readOnly)if("text"==e.type||"search"==e.type)e.disabled=!0,e.kmwInput=
document.readyState)window.setTimeout(function(){b.init(a)},50);else{b._MasterDocument=window.document;if(k.touchable){j=document.getElementsByTagName("textarea");o=document.getElementsByTagName("input");for(c=0;c<j.length;c++)if(e=j[c],d=e.className,e.kmwInput=!1,(!d||0>d.indexOf("kmw-disabled"))&&!e.readOnly)e.disabled=!0,e.kmwInput=!0;for(c=0;c<o.length;c++)if(e=o[c],d=e.className,e.kmwInput=!1,(!d||0>d.indexOf("kmw-disabled"))&&!e.readOnly)if("text"==e.type||"search"==e.type)e.disabled=!0,e.kmwInput=
!0}"Android"==k.OS&&(k.dpi=i.getDPI(),k.formFactor=screen.height<4*k.dpi||screen.width<4*k.dpi?"phone":"tablet");window.removeEventListener&&window.removeEventListener("focus",b._BubbledFocus,!0);"manual"!=b.options.attachType&&b._AttachToControls(document);b.initialized=1;f.prepare();i.prepareWait();b.addKeyboardArray(b.deferredStubs);for(c=0;c<b.deferredKRS.length;c++)b.KRS(b.deferredKRS[c]);b.initializeUI();for(c=0;c<b.deferredKR.length;c++)b.KR(b.deferredKR[c]);b.fullInitialization&&(b.appliedFont=
b.baseFont=b.getBaseFont(),b.listInputs(),k.touchable&&b.handleRotationEvents(),k.touchable?b.setupTouchDevice():b.setupDesktopPage(),6==i._GetIEVersion()&&(f.shim=i.createShim()),k.touchable&&(f._Box.addEventListener("touchend",function(a){a.stopPropagation()},!1),c=document.createElement("DIV"),d=c.style,d.width="100%",d.height=screen.width/2+"px",document.body.appendChild(c),"Android"==k.OS&&0<navigator.userAgent.indexOf("Chrome")?(b.hideOskWhileScrolling=function(a){if(typeof f._Box!="undefined"&&
typeof f._Box.style!="undefined"){h=a.target.parentNode;if(typeof h!="undefined"&&h!=null){if(h.className.indexOf("keymanweb-input")>=0||h.className.indexOf("kmw-key-")>=0)return;if(typeof h.parentNode!="undefined"){h=h.parentNode;if(h.className.indexOf("keymanweb-input")>=0||h.className.indexOf("kmw-key-")>=0)return}}f.hideNow()}},document.body.addEventListener("touchstart",b.hideOskWhileScrolling,!1)):(b.conditionallyHideOsk=function(){b.hideOnRelease&&f.hideNow();b.hideOnRelease=false},b.hideOskIfOnBody=
@ -141,16 +141,16 @@ a._DivVKbd,h=j.style;if("width"in b){var f=b.width-(e.offsetWidth-j.offsetWidth)
e.stopPropagation();if(!("object"==typeof e.touches&&1<e.touches.length)){a.touchY="object"==typeof e.touches?e.touches[0].clientY:e.clientY;var c=d.id.split("-")[1];"K_LOPT"==c||"K_ROPT"==c?(a.highlightKey(d,!0),window.setTimeout(function(){a.clickKey(d)},0)):"K_BKSP"==c?(a.highlightKey(d,!0),b.KO(1,b._LastActiveElement,""),a.deleting=!0,window.setTimeout(a.repeatDelete,500)):null==a.keyPending&&(a.keyPending=d,a.highlightKey(d,!0),null!=d.subKeys&&(a.subkeyDelayTimer=window.setTimeout(function(){a.showSubKeys(d)},
a.popupDelay)))}};a.repeatDelete=function(){a.deleting&&(b.KO(1,b._LastActiveElement,""),window.setTimeout(a.repeatDelete,200))};a.highlightKey=function(b,e,c){var g=b.className,f=2<arguments.length?" "+arguments[2]:" kmw-key-touched";""!=g&&(0<=g.indexOf(f)?e||(b.className=g.replace(f,"")):e&&(b.className=g+f));a.showKeyTip(b,e)};a.moveOverKeys=function(b,e){e.preventDefault();e.cancelBubble=!0;"function"==typeof e.stopImmediatePropagation?e.stopImmediatePropagation():"function"==typeof e.stopPropagation&&
e.stopPropagation();if(null!=a.keyPending){var c="object"==typeof e.touches?e.touches[0].clientX:e.clientX,j="object"==typeof e.touches?e.touches[0].clientY:e.clientY,f=g._GetAbsoluteX(b),l=g._GetAbsoluteY(b),i=f+b.offsetWidth,k=l+b.offsetHeight,m=b.id.split("-")[1];"K_LOPT"!=m&&"K_ROPT"!=m&&a.highlightKey(b,c>f&&c<i&&j>l&&j<k);a.highlightSubKeys(b,c,j)}};a.showSubKeys=function(b){if(null!=a.keyPending){var e=document.createElement("DIV"),c,j,f,l,i,k;e.id="kmw-popup-keys";c=e.style;c.bottom=parseInt(b.style.bottom,
10)+parseInt(b.style.height,10)+10+"px";c.fontFamily=a.fontFamily;c.fontSize=g.getStyleValue(b,"font-size");c.visibility="hidden";var m=b.subKeys.length,r,p;r=Math.min(Math.ceil(m/9),2);p=Math.ceil(m/r);1<r&&(c.width=p*b.offsetWidth+5*p+"px");for(c=0;c<m;c++)j=b.subKeys[c],i=document.createElement("DIV"),i.className="kmw-key-square-ex",i.keyId=j.id,f=i.style,l=Math.floor(c/p),1<r&&0<l&&(f.marginTop="5px"),i.width="undefined"!=typeof j.width?f.width=parseInt(j.width,10)*b.offsetWidth/100+"px":f.width=
10)+parseInt(b.style.height,10)+10+"px";c.fontFamily=a.fontFamily;c.fontSize=g.getStyleValue(b,"font-size");c.visibility="hidden";var m=b.subKeys.length,s,p;s=Math.min(Math.ceil(m/9),2);p=Math.ceil(m/s);1<s&&(c.width=p*b.offsetWidth+5*p+"px");for(c=0;c<m;c++)j=b.subKeys[c],i=document.createElement("DIV"),i.className="kmw-key-square-ex",i.keyId=j.id,f=i.style,l=Math.floor(c/p),1<s&&0<l&&(f.marginTop="5px"),i.width="undefined"!=typeof j.width?f.width=parseInt(j.width,10)*b.offsetWidth/100+"px":f.width=
b.offsetWidth+"px",f.height=b.offsetHeight+"px",k=document.createElement("DIV"),a.setButtonClass(j,k),k.id="string"==typeof j.layer&&""!=j.layer?"popup-"+j.layer+"-"+j.id:"popup-default-"+j.id,"string"==typeof j.nextlayer&&""!=j.nextlayer&&(k.nextLayer=j.nextlayer),l=k.style,l.height=f.height,l.width=f.width,l.position="absolute",f=g._CreateElement("SPAN"),f.className="kmw-key-text",null==j.text||""==j.text?(f.innerHTML="\u00a0","string"==typeof j.id&&/^U_[0-9A-F]{4}$/i.test(j.id)&&(f.innerHTML=String.fromCharCode(parseInt(j.id.substr(2),
16)))):f.innerHTML=j.text,l=f.style,l.fontSize=a.fontSize,"string"==typeof j.font&&""!=j.font&&(l.fontFamily=j.font),"string"==typeof j.fontsize&&0!=j.fontsize&&(l.fontSize=j.fontsize),k.appendChild(f),i.appendChild(k),e.appendChild(i);a.registerPopup(b)||(a._Box.appendChild(e),c=e.style,m=g._GetAbsoluteX(b)+0.5*(b.offsetWidth-e.offsetWidth),f=(g.landscapeView()?screen.height:screen.width)-e.offsetWidth,m>f&&(m=f),0>m&&(m=0),c.left=m+"px",f=document.createElement("DIV"),f.className="arrow-border",
l=f.style,m=g._GetAbsoluteX(b)+0.5*b.offsetWidth-16,r=e.offsetTop+e.offsetHeight-1,l.left=m+"px",l.top=r+"px",b=document.createElement("DIV"),b.className="arrow-content",l=b.style,l.left=m+1+"px",l.top=r-1+"px",f.appendChild(b),e.appendChild(f),c.visibility="visible")}};a.getVKDictionaryCode=function(a){if(!b._ActiveKeyboard.VKDictionary){var e=[];if("string"==typeof b._ActiveKeyboard.KVKD)for(var c=b._ActiveKeyboard.KVKD.split(" "),g=0;g<c.length;g++)e[c[g]]=g+256;b._ActiveKeyboard.VKDictionary=
e}return(a=b._ActiveKeyboard.VKDictionary[a])?a:0};a.clickKey=function(d){var e=b._LastActiveElement,c,g,s,l=d.id.split("-");if(2>l.length)return!0;"popup"==l[0]&&l.splice(0,1);if(null!=e){var n=l[0],l=l[1];c=g=a.getModifierState(a.layerId);"undefined"!=typeof d.key&&(c=d.key.nextlayer);null==b._ActiveElement&&(b._ActiveElement=e);switch(l){case "K_LSHIFT":case "K_RSHIFT":case "K_SHIFT":return a.highlightKey(d,!1),a.updateLayer(c?c:"shift"),a._Show(),!0;case "K_LCONTROL":case "K_RCONTROL":case "K_LCTRL":case "K_RCTRL":case "K_CTRL":return a.highlightKey(d,
!1),a.updateLayer(c?c:"ctrl"),a._Show(),!0;case "K_LALT":case "K_RALT":case "K_ALT":return a.highlightKey(d,!1),a.updateLayer(c?c:"alt"),a._Show(),!0;case "K_ALTGR":return a.highlightKey(d,!1),a.updateLayer(c?c:"ctrlalt"),a._Show(),!0;case "K_LOPT":case "K_ROPT":return a.optionKey(d,l,!0),!0;case "K_CURRENCIES":case "K_NUMERALS":case "K_SHIFTED":case "K_UPPER":case "K_LOWER":case "K_SYMBOLS":return a.highlightKey(d,!1),a.updateLayer(c?c:"default"),a._Show(),!0}a.highlightKey(d,!1);"K_SPACE"!=l&&(s=
d.childNodes[0].innerHTML);c=e._KeymanWebSelectionStart;g=e._KeymanWebSelectionEnd;s=b._Selection;b._IsActivatingKeymanWebUI=1;b._IgnoreNextSelChange=100;b._FocusLastActiveElement();b._IsMozillaEditableIframe(e,0)&&(e=e.documentElement);document.selection&&null!=s&&s.select();e._KeymanWebSelectionStart=c;e._KeymanWebSelectionEnd=g;b._IgnoreNextSelChange=0;b._CachedSelectionStart=null;b._DeadkeyDeleteMatched();c={Ltarg:e,Lmodifiers:0,Lcode:f[l],LisVirtualKey:!0};"U_"==l.substr(0,2)&&(c.LisVirtualKey=
!1);"undefined"==typeof c.Lcode&&(c.Lcode=a.getVKDictionaryCode(l),!c.Lcode&&"U_"==l.substr(0,2)&&(g=parseInt(l.substr(2),16),isNaN(g)||(c.Lcode=g)));g="undefined"==typeof d.key?null:d.key.layer;g=null==g?a.getModifierState(n):a.getModifierState(g);c.Lmodifiers=16*g;b._ActiveKeyboard&&b._ActiveKeyboard.KM?(s=d.firstChild.firstChild.wholeText,c.LisVirtualKey=!1,c.LisVirtualKeyCode=!1,c.vkCode=c.Lcode,32!=c.Lcode&&(c.Lcode="string"==typeof s&&""!=s?s.charCodeAt(0):0,160==c.Lcode&&(c.Lcode=0)),c.Lmodifiers=
l=f.style,m=g._GetAbsoluteX(b)+0.5*b.offsetWidth-16,s=e.offsetTop+e.offsetHeight-1,l.left=m+"px",l.top=s+"px",b=document.createElement("DIV"),b.className="arrow-content",l=b.style,l.left=m+1+"px",l.top=s-1+"px",f.appendChild(b),e.appendChild(f),c.visibility="visible")}};a.getVKDictionaryCode=function(a){if(!b._ActiveKeyboard.VKDictionary){var e=[];if("string"==typeof b._ActiveKeyboard.KVKD)for(var c=b._ActiveKeyboard.KVKD.split(" "),g=0;g<c.length;g++)e[c[g]]=g+256;b._ActiveKeyboard.VKDictionary=
e}return(a=b._ActiveKeyboard.VKDictionary[a])?a:0};a.clickKey=function(d){var e=b._LastActiveElement,c,g,o,l=d.id.split("-");if(2>l.length)return!0;"popup"==l[0]&&l.splice(0,1);if(null!=e){var r=l[0],l=l[1];c=g=a.getModifierState(a.layerId);"undefined"!=typeof d.key&&(c=d.key.nextlayer);null==b._ActiveElement&&(b._ActiveElement=e);switch(l){case "K_LSHIFT":case "K_RSHIFT":case "K_SHIFT":return a.highlightKey(d,!1),a.updateLayer(c?c:"shift"),a._Show(),!0;case "K_LCONTROL":case "K_RCONTROL":case "K_LCTRL":case "K_RCTRL":case "K_CTRL":return a.highlightKey(d,
!1),a.updateLayer(c?c:"ctrl"),a._Show(),!0;case "K_LALT":case "K_RALT":case "K_ALT":return a.highlightKey(d,!1),a.updateLayer(c?c:"alt"),a._Show(),!0;case "K_ALTGR":return a.highlightKey(d,!1),a.updateLayer(c?c:"ctrlalt"),a._Show(),!0;case "K_LOPT":case "K_ROPT":return a.optionKey(d,l,!0),!0;case "K_CURRENCIES":case "K_NUMERALS":case "K_SHIFTED":case "K_UPPER":case "K_LOWER":case "K_SYMBOLS":return a.highlightKey(d,!1),a.updateLayer(c?c:"default"),a._Show(),!0}a.highlightKey(d,!1);"K_SPACE"!=l&&(o=
d.childNodes[0].innerHTML);c=e._KeymanWebSelectionStart;g=e._KeymanWebSelectionEnd;o=b._Selection;b._IsActivatingKeymanWebUI=1;b._IgnoreNextSelChange=100;b._FocusLastActiveElement();b._IsMozillaEditableIframe(e,0)&&(e=e.documentElement);document.selection&&null!=o&&o.select();e._KeymanWebSelectionStart=c;e._KeymanWebSelectionEnd=g;b._IgnoreNextSelChange=0;b._CachedSelectionStart=null;b._DeadkeyDeleteMatched();c={Ltarg:e,Lmodifiers:0,Lcode:f[l],LisVirtualKey:!0};"U_"==l.substr(0,2)&&(c.LisVirtualKey=
!1);"undefined"==typeof c.Lcode&&(c.Lcode=a.getVKDictionaryCode(l),!c.Lcode&&"U_"==l.substr(0,2)&&(g=parseInt(l.substr(2),16),isNaN(g)||(c.Lcode=g)));g="undefined"==typeof d.key?null:d.key.layer;g=null==g?a.getModifierState(r):a.getModifierState(g);c.Lmodifiers=16*g;b._ActiveKeyboard&&b._ActiveKeyboard.KM?(o=d.firstChild.firstChild.wholeText,c.LisVirtualKey=!1,c.LisVirtualKeyCode=!1,c.vkCode=c.Lcode,32!=c.Lcode&&(c.Lcode="string"==typeof o&&""!=o?o.charCodeAt(0):0,160==c.Lcode&&(c.Lcode=0)),c.Lmodifiers=
0):c.vkCode=c.Lcode;"undefined"==typeof b._ActiveKeyboard.KM&&(c.Lcode=b._USKeyCodeToCharCode(c),c.LisVirtualKey=!1);if(!b._ActiveKeyboard||0!=c.Lcode&&!b._ActiveKeyboard.gs(e,c))switch(c.Lcode=c.vkCode,l){case "K_BKSP":b.KO(1,b._LastActiveElement,"");break;case "K_TAB":b.moveToNext("shift"==a.layerId);break;case "K_TABBACK":b.moveToNext(!0);break;case "K_TABFWD":b.moveToNext(!1);break;case "K_ENTER":"TEXTAREA"==e.nodeName||"undefined"!=typeof e.base&&"TEXTAREA"==e.base.nodeName?b.KO(0,e,"\n"):"INPUT"==
e.nodeName&&("search"==e.type||"submit"==e.type)?e.form.submit():"undefined"!=typeof e.base&&("search"==e.base.type||"submit"==e.base.type)?(e.base.disabled=!1,e.base.form.submit()):b.moveToNext(!1);break;case "K_SPACE":b.KO(0,e," ");break;default:n=0,c=c.Lcode,"U_"==l.substr(0,2)&&32<c&&!(127<c&&!1>c)?n=String.fromCharCode(c):48<=c&&57>=c?n=i[g][0][c-48]:65<=c&&90>=c?n=String.fromCharCode(c+(g?0:32)):186<=c&&192>=c?n=i[g][1][c-186]:219<=c&&222>=c&&(n=i[g][2][c-219]),n&&b.KO(0,e,n)}"undefined"!=typeof d.key&&
e.nodeName&&("search"==e.type||"submit"==e.type)?e.form.submit():"undefined"!=typeof e.base&&("search"==e.base.type||"submit"==e.base.type)?(e.base.disabled=!1,e.base.form.submit()):b.moveToNext(!1);break;case "K_SPACE":b.KO(0,e," ");break;default:r=0,c=c.Lcode,"U_"==l.substr(0,2)&&32<c&&!(127<c&&!1>c)?r=String.fromCharCode(c):48<=c&&57>=c?r=i[g][0][c-48]:65<=c&&90>=c?r=String.fromCharCode(c+(g?0:32)):186<=c&&192>=c?r=i[g][1][c-186]:219<=c&&222>=c&&(r=i[g][2][c-219]),r&&b.KO(0,e,r)}"undefined"!=typeof d.key&&
null!==d.key.nextlayer?a.nextLayer=d.key.nextlayer:"undefined"!=typeof d.nextLayer&&null!==d.nextLayer&&(a.nextLayer=d.nextLayer);a.nextLayer!=a.layerId&&(a.layerId=a.nextLayer,a._Show());e._KeymanWebSelectionStart=null;e._KeymanWebSelectionEnd=null}b._IsActivatingKeymanWebUI=0;return!0};a.getLayerId=function(a){var b="";if(0==a)return"default";a&1&&(b="shift");a&4&&(b="alt"+b);a&2&&(b="ctrl"+b);return b};a.getModifierState=function(a){var b=0;0<=a.indexOf("shift")&&(b+=1);0<=a.indexOf("ctrl")&&(b+=
2);0<=a.indexOf("alt")&&(b+=4);return b};a.updateLayer=function(b){var e=a.layerId,c;c=b.replace("shift","");c=c.replace("ctrl","");c=c.replace("alt","");if("default"==a.layerId||"numeric"==a.layerId||"symbol"==a.layerId||"currency"==a.layerId||""!=c)e=b;else{c=a.getModifierState(e);e=e.replace("shift","");e=e.replace("ctrl","");e=e.replace("alt","");switch(b){case "shift":c^=1;break;case "ctrl":c^=2;break;case "alt":c^=4;break;default:e=b}"default"!=e&&(c&1&&(e="shift"+e),c&2&&(e="ctrl"+e),c&4&&
(e="alt"+e))}""==e&&(e="default");a.layerId=e.replace("altctrl","ctrlalt");for(b=0;b<a.layers.length;b++)if(a.layerId==a.layers[b].id)return;a.layerId="default"};a.showLanguage=function(){var d="",e="";b._ActiveStub?(d=b._ActiveStub.KL,e=b._ActiveStub.KN):d=b._ActiveLanguage?b._ActiveLanguage.KN:"English";try{var c=a.spaceBar.firstChild.firstChild;c.parentNode.className="undefined"==typeof c.parentNode.className||""==c.parentNode.className?"kmw-spacebar":c.parentNode.className+" kmw-spacebar";c.className=
@ -161,76 +161,76 @@ d>a.spaceBar.offsetLeft&&(d<a.spaceBar.offsetLeft+a.spaceBar.offsetWidth&&b>a.sp
g._CreateElement("P"),i.innerHTML=String.fromCharCode(l+64),j.appendChild(i);j.addEventListener("touchstart",function(b){a.scrollToLanguage(b,h,f)},!1);j.addEventListener("touchend",function(a){a.stopPropagation();a.preventDefault()},!1);e.appendChild(j);e.addEventListener("scroll",function(){a.lgList.scrolling=true},!1);h.addEventListener("scroll",function(){if(h.scrollTop<1)h.scrollTop=1;if(h.scrollTop>h.scrollHeight-h.offsetHeight-1)h.scrollTop=h.scrollHeight-h.offsetHeight-1},!1);a.lgList.activeLgNo=
a.addLanguagesToMenu(f,d);a.lgList.visibility="hidden";document.body.appendChild(a.lgList);"Android"==c.OS&&"devicePixelRatio"in window&&(a.lgList.style.fontSize=2/window.devicePixelRatio+"em");if("Android"==c.OS&&("tablet"==c.formFactor&&"devicePixelRatio"in window)&&(l=parseInt(g.getStyleValue(e,"width"),10),d=e.style,isNaN(l)||(d.width=d.maxWidth=2*l/window.devicePixelRatio+"px"),l=parseInt(g.getStyleValue(h,"width"),10),d=h.style,isNaN(l)||(d.width=d.maxWidth=2*l/window.devicePixelRatio+"px"),
l=parseInt(g.getStyleValue(f,"width"),10),d=f.style,!isNaN(l)))d.width=d.maxWidth=2*l/window.devicePixelRatio+"px";a.adjustLanguageMenu(0);d=Math.floor(e.offsetHeight/26);i=Math.round(100*d/(j.childNodes[1].offsetTop-j.childNodes[0].offsetTop))/100;var k=0.6<i?1:2;1.25<i&&(i=1.25);for(l=0;26>l;l++){var m=j.childNodes[l].style;2==k&&1==l%2?m.display="none":(m.fontSize=i*k+"em",m.lineHeight=d*k+"px")}l=h.offsetWidth;h.scrollHeight>h.offsetHeight+3?l+=j.offsetWidth:j.style.display="none";e.style.width=
l+"px";a.lgList.visibility="";e=f.firstChild.offsetHeight*a.lgList.activeLgNo+1;h.scrollTop=e;h.scrollTop<e&&(h.scrollTop=h.scrollHeight-h.offsetHeight);h.scrollTop>h.scrollHeight-h.offsetHeight-1&&(h.scrollTop=h.scrollHeight-h.offsetHeight-1)}};a.adjustLanguageMenu=function(b){var e=a.lgList,h=e.firstChild,j=h.firstChild,f=0,i=e.style,e=e.childNodes[1],n=window.innerHeight-a.lgKey.offsetHeight-16,b=(j.childNodes.length+b-1)*j.firstChild.firstChild.offsetHeight;"iOS"==c.OS&&("phone"==c.formFactor?
(f=g.landscapeView()?36:0,n=(window.innerHeight-f-16)*g.getViewportScale()):"tablet"==c.formFactor&&(f=g.landscapeView()?16:0,n-=f));i.left=g._GetAbsoluteX(a.lgKey)+"px";b>n&&(b=n);i.height=b+"px";i.top=g._GetAbsoluteY(a._Box)+a._Box.offsetHeight-b+window.pageYOffset-6+"px";i.bottom="auto";e.style.height=h.style.height=i.height};a.scrollToLanguage=function(a,b,c){a.stopImmediatePropagation();a.stopPropagation();a.preventDefault();if("P"==a.touches[0].target.nodeName){var g,f,i=0,a=a.touches[0].target.innerHTML.charCodeAt(0),
n=c.childNodes;try{for(g=0;g<n.length-1&&!(f=n[g].firstChild.innerHTML.toUpperCase().charCodeAt(0),f>=a);g++);}catch(k){}try{i=c.firstChild.offsetHeight*g+1,b.scrollTop=i}catch(m){i=0}try{if(b.scrollTop<i&&(b.scrollTop=b.scrollHeight-b.offsetHeight),b.scrollTop>b.scrollHeight-b.offsetHeight-1)b.scrollTop=b.scrollHeight-b.offsetHeight-1}catch(r){}}};a.addLanguagesToMenu=function(d,e){var h=e.length,j,f,i,n=[];for(f=0;f<h;f++)i=e[f].KL,-1==n.indexOf(i)&&n.push(i);n.sort();var k=Math.round(100/g.getViewportScale())/
100,m,r,p;i=-1;for(j=0;j<n.length;j++){m=g._CreateElement("DIV");m.className="kbd-list-closed";r=g._CreateElement("P");r.kList=[];for(f=0;f<h;f++)e[f].KL==n[j]&&r.kList.push(e[f]);"iOS"==c.OS&&(r.style.fontSize=k+"em");m.appendChild(r);d.appendChild(m);n[j]==b._ActiveStub.KL&&(i=j);if(1<r.kList.length){r.className="kbd-list";r.innerHTML=n[j]+"...";r.scrolled=!1;r.ontouchend=function(b){b.preventDefault();b.stopPropagation();b.target.scrolled?b.target.scrolled=false:this.parentNode.className=this.parentNode.className==
"kbd-list-closed"?"kbd-list-open":"kbd-list-closed";a.adjustLanguageMenu(this.parentNode.className=="kbd-list-closed"?0:this.kList.length)};r.addEventListener("touchstart",function(a){a.stopPropagation()},!1);r.addEventListener("touchmove",function(a){a.target.scrolled=true;a.stopPropagation()},!1);for(f=0;f<r.kList.length;f++)p=g._CreateElement("P"),p.className="kbd-list-entry","iOS"==c.OS&&(p.style.fontSize=k+"em"),a.addKeyboardToMenu(r.kList[f],p,!1),m.appendChild(p)}else r.innerHTML=n[j],r.className=
"kbd-single-entry",a.addKeyboardToMenu(r.kList[0],r,!0);j==i&&(r.className+=" current")}h=g._CreateElement("DIV");h.id="kmw-menu-footer";n=function(a){a.preventDefault();a.stopPropagation()};h.addEventListener("touchstart",n,!1);h.addEventListener("touchmove",n,!1);h.addEventListener("touchend",n,!1);d.appendChild(h);return i};a.addKeyboardToMenu=function(d,e,c){e.kn=d.KI;e.kc=d.KLC;e.innerHTML=c?d.KL:d.KN.replace(" Keyboard","");var d=function(b){b.stopPropagation();0>=this.className.indexOf("selected")&&
(this.className+=" selected");a.lgList.scrolling=!1;a.lgList.y0=b.touches[0].pageY;return!0},c=function(b){b.stopImmediatePropagation();var d=a.lgList.childNodes[0],e=d.scrollHeight-d.offsetHeight,c=b.touches[0].pageY,h=c-a.lgList.y0;if(0>h)d.scrollTop>=e-1&&(b.preventDefault(),a.lgList.y0=c);else if(0<h)2>d.scrollTop&&(b.preventDefault(),a.lgList.y0=c);else return;if(-5>h||5<h)a.lgList.scrolling=!0,this.className=this.className.replace(/\s*selected/,""),a.lgList.y0=c;return!0},g=function(d){d.preventDefault();
"undefined"!=typeof d.stopImmediatePropagation?d.stopImmediatePropagation():d.stopPropagation();a.lgList.scrolling?this.className=this.className.replace(/\s*selected/,""):(b.focusing=!0,b.focusTimer=window.setTimeout(function(){b.focusing=!1},1E3),a.lgList.style.display="none",b._SetActiveKeyboard(this.kn,this.kc,!0),b.doKeyboardChange(this.kn,this.kc),b._FocusLastActiveElement(),a.hideLanguageList(),a._Show());return!0};e.onmspointerdown=d;e.addEventListener("touchstart",d,!1);e.onmspointermove=
c;e.addEventListener("touchmove",c,!1);e.onmspointerout=g;e.addEventListener("touchend",g,!1)};a.hideLanguageList=function(){a.lgList&&(a.highlightKey(a.lgKey.firstChild,!1),a.lgList.style.visibility="hidden",window.setTimeout(function(){document.body.removeChild(a.lgList.shim);document.body.removeChild(a.lgList);a.lgList=null},500))};a._UpdateVKShift=function(b,e,c){var g=0,g=b?b.Lmodifiers/16:c?g|e:g&~e;a.layerId=a.getLayerId(g);a._Visible&&a._Show();return!0};a._CancelMouse=function(a){(a=b._GetEventObject(a))&&
a.preventDefault&&a.preventDefault();a&&(a.cancelBubble=!0,a.returnValue=!1);return!1};a.showLayer=function(d){if(b._ActiveKeyboard)for(var e=0;e<a.layers.length;e++)if(a.layers[e].id==d)return a.layerId=d,a._Show(),!0;return!1};a.getHeight=function(){if("function"==typeof b.getOskHeight)return b.getOskHeight();var a=Math.floor(Math.min(screen.availHeight,screen.availWidth)/2);if("phone"==c.formFactor)var e=Math.min(screen.height,screen.width),h=Math.max(screen.height,screen.width),a=g.portraitView()?
Math.floor(Math.max(screen.availHeight,screen.availWidth)/3):a*(h/e)/1.6;"iOS"==c.OS&&(a/=g.getViewportScale());"Android"==c.OS&&"phone"==c.formFactor&&"devicePixelRatio"in window&&/Firefox|Chrome|OPR/.test(navigator.userAgent)&&(a*=window.devicePixelRatio);return a};a.getWidth=function(){if("function"==typeof b.getOskWidth)return b.getOskWidth();var a=screen.width;if("Android"==c.OS)try{a=document.documentElement.clientWidth}catch(e){a=screen.availWidth}return a};a.mouseOverMouseDownHandler=function(b){var e=
g.eventTarget(b);null!==e&&(("SPAN"==e.nodeName&&(e=e.parentNode),"mousedown"==g.eventType(b))?(a.currentKey=e.id,a._CancelMouse(b),a.highlightKey(e,!0)):e.id==a.currentKey&&a.highlightKey(e,!0))};a.mouseUpMouseOutHandler=function(b){var e=g.eventTarget(b);if(null!==e&&("SPAN"==e.nodeName&&(e=e.parentNode),a.highlightKey(e,!1),"mouseup"==g.eventType(b)))e.id==a.currentKey&&a.clickKey(e),a.currentKey=""};a.mspointerdownHandler=function(b){a.touchKey(this,b)};a.mspointerupHandler=function(b){a.releaseKey(this,
b)};a.mspointermoveHandler=function(b){a.moveOverKeys(this,b)};a.deviceDependentLayout=function(b,e){var h=g._CreateElement("DIV"),j=h.style,i=0;h.className="kmw-key-layer-group";switch(e){case "phone":case "tablet":i=a.getHeight(),j.height=i+"px"}if(null==b)return h;j.fontSize="undefined"==typeof b.fontsize||null==b.fontsize?"1em":b.fontsize;a.fontSize=j.fontSize;var l,k,q,m,r,p,A,x,t,o,w,B,u,y;q=b.layer;var F={text:""};F.fontsize=j.fontSize;F.width="100";F.pad="5";F.sp="0";F.layer=null;F.nextlayer=
null;for(var H=/\*\w+\*/,i=0;i<q.length;i++){m=q[i];p=m.row;for(l=p.length;0<l&&!(0<p[l-1].key.length);l--);l<p.length&&p.splice(l-p.length,p.length-l)}A=100/p.length;"desktop"==e&&(A=100/p.length);var D,E;"desktop"==e?(D=function(a){return a+"%"},E=100):(D=function(a){return Math.round(a)+"px"},E=a.getWidth());for(i=0;i<q.length;i++){m=q[i];m.aligned=!1;r=g._CreateElement("DIV");p=r.style;r.className="kmw-key-layer";p.display=0==i?"block":"none";p.height=j.height;p.fontFamily="font"in b?b.font:"";
r.layer=r.nextLayer=m.id;"string"==typeof m.nextlayer&&(r.nextLayer=m.nextlayer);p=m.row;var C=0;for(l=0;l<p.length;l++){x=0;k=p[l];t=k.key;for(k=0;k<t.length;k++)if(o=t[k],null==o)t.length-=1;else{var z;B="string"==typeof o.width&&""!=o.width?parseInt(o.width,10):100;if(isNaN(B)||0==B)B=100;o.width=B.toString();z="string"==typeof o.pad&&""!=o.pad?parseInt(o.pad,10):5;if(isNaN(z)||0==z)z=5;o.pad=z.toString();x+=B+z}x>C&&(C=x)}C="desktop"==e?C+5:C+15;for(l=0;l<p.length;l++){x=g._CreateElement("DIV");
x.className="kmw-key-row";x.onmousedown=g.mouseDownPreventDefaultHandler;k=p[l];B=x.style;B.maxHeight=B.height=A+"%";t=k.key;for(k=0;k<t.length;k++){o=t[k];for(var G in F)"string"!=typeof o[G]&&(o[G]=F[G]);switch(o.sp){case "1":H.test(o.text)||(o.sp="3");break;case "2":H.test(o.text)||(o.sp="4")}}for(k=z=0;k<t.length-1;k++)o=parseInt(t[k].width,10)*E/C,t[k].widthpc=o,w=parseInt(t[k].pad,10)*E/C,t[k].padpc=w,z+=w+o;z+=15*E/C;1==t.length&&0>parseInt(t[0].pad,10)?(o=parseInt(t[0].width,10)*E/C,t[0].widthpc=
o,z+=o,t[0].padpc=E-z):0<t.length&&(k=t.length-1,w=parseInt(t[k].pad,10)*E/C,t[k].padpc=w,z+=w,t[k].widthpc=E-z);for(k=z=0;k<t.length;k++){o=t[k];w=g._CreateElement("DIV");w.keyId=o.id;w.className="kmw-key-square";u=w.style;"desktop"!=e&&(u.left=D(z+t[k].padpc));z=z+t[k].padpc+t[k].widthpc;w.width=u.width=D(o.widthpc);"desktop"!=e?(u.bottom=B.bottom,u.height=B.height):u.marginLeft=D(o.padpc);y=g._CreateElement("DIV");a.setButtonClass(o,y);c.touchable&&(y.style.left=u.left,y.style.width=u.width);u=
null;if(b.keyLabels||"desktop"==e){var v=f[o.id];switch(v){case 186:v=59;break;case 187:v=61;break;case 188:v=44;break;case 189:v=45;break;case 190:v=46;break;case 191:v=47;break;case 192:v=96;break;case 219:v=91;break;case 220:v=92;break;case 221:v=93;break;case 222:v=39;break;default:if(48>v||90<v)v=0}0<v&&(u=g._CreateElement("DIV"),u.className="kmw-key-label",u.innerHTML=String.fromCharCode(v),w.appendChild(u))}y.id=m.id+"-"+o.id;y.key=o;if("undefined"!=typeof o.sk&&null!=o.sk){v=y.subKeys=o.sk;
for(u=0;u<v.length;u++)if("1"==v[u].sp||"2"==v[u].sp)v[u].text=a.renameSpecialKey(v[u].text)}else y.subKeys=null;"ontouchstart"in window?(g.attachDOMEvent(y,"touchstart",function(b){a.touchKey(this,b)}),g.attachDOMEvent(y,"touchend",function(b){a.releaseKey(this,b)}),g.attachDOMEvent(y,"touchmove",function(b){a.moveOverKeys(this,b)}),y.onclick=function(a){a.preventDefault();a.stopPropagation()}):c.touchable&&"Windows"==c.OS?(y.style.msTouchAction="none",y.onmspointerdown=a.mspointerdownHandler,y.onmspointerup=
a.mspointerupHandler,y.onmspointermove=a.mspointermoveHandler):(y.onmouseover=y.onmousedown=a.mouseOverMouseDownHandler,y.onmouseup=y.onmouseout=a.mouseUpMouseOutHandler);u=g._CreateElement("SPAN");v=u.style;null==o.text||""==o.text?(u.innerHTML="\u00a0","string"==typeof o.id&&/^U_[0-9A-F]{4}$/i.test(o.id)&&(u.innerHTML=String.fromCharCode(parseInt(o.id.substr(2),16)))):u.innerHTML=o.text;u.className="kmw-key-text";if("1"==o.sp||"2"==o.sp)u.innerHTML=a.renameSpecialKey("*Tab*"==o.text&&1==i?"*TabLeft*":
o.text);"font"in o&&(v.fontFamily=o.font);"fontsize"in o&&(v.fontSize=o.fontsize);y.appendChild(u);w.appendChild(y);"undefined"!=typeof o.sk&&null!=o.sk&&(o=g._CreateElement("DIV"),o.className="kmw-key-popup-icon",w.appendChild(o));x.appendChild(w)}r.appendChild(x)}h.appendChild(r)}return h};a.renameSpecialKey=function(a){for(var b="*Shift* *Enter* *Tab* *BkSp* *Menu* *Hide* *Alt* *Ctrl* *Caps* *ABC* *abc* *123* *Symbol* *Currency* *Shifted* *AltGr* *TabLeft*".split(" "),c=[8,5,6,4,11,10,25,1,3,16,
17,19,21,20,8,2,7],g=0;g<b.length;g++)if(a==b[g])return String.fromCharCode(57344+c[g]);return a};a.setButtonClass=function(b,e){var c=0,f="default shift shift-on special special-on deadkey blank hidden".split(" ");"string"==typeof b.dk&&"1"==b.dk&&(c=8);"string"==typeof b.sp&&(c=parseInt(b.sp,10));if(0>c||10<c)c=0;e.className=4<a.layout.layer[0].row.length&&"phone"==g.device.formFactor?"kmw-key kmw-5rows kmw-key-"+f[c]:"kmw-key kmw-key-"+f[c]};a.buildDefaultLayout=function(a,b){var c;c=b;var f=
window.dfltLayout;"object"!=typeof f[c]&&(c="desktop");c=g.deepCopy(f[c]);var i=c.layer,l=a.BK,n=a.K102,q,m,r,p,A;r=/\*\w+\*/;for(var x="default shift ctrl ctrlshift alt altshift ctrlalt ctrlaltshift".split(" "),f=0;8>f;f++){0<f&&(i[f]=g.deepCopy(i[0]));i[f].id=x[f];i[f].nextlayer=x[f];for(q=0;q<i[f].row.length;q++){m=i[f].row[q];A=m.key;for(m=0;m<A.length;m++)switch(p=A[m],p.id){case "K_SHIFT":case "K_LSHIFT":case "K_RSHIFT":1==(f&1)&&(p.sp="2");"desktop"!=b&&0<f&&(p.nextlayer="default");break;case "K_CONTROL":case "K_LCTRL":case "K_LCONTROL":case "K_RCTRL":case "K_RCONTROL":2==
(f&2)&&(p.sp="2");break;case "K_ALT":case "K_LALT":case "K_RALT":4==(f&4)&&(p.sp="2")}}if("undefined"==typeof n||!n)for(q=0;q<i[f].row.length;q++)for(m=0;m<i[f].row[q].key.length;m++)"K_oE2"==i[f].row[q].key[m].id&&("desktop"==b?(i[f].row[q].key.splice(m,1),i[f].row[q].key[0].width="200"):i[f].row[q].key[m].sp="10")}for(f=0;f<i.length;f++){var t=i[f],o,w=null,B="",n=t.row;for(q=0;q<n.length;q++){A=n[q].key;for(m=0;m<A.length;m++)p=A[m],o=k.indexOf(p.id),"undefined"!=typeof l&&(0<=o&&o+65*f<l.length)&&
(p.text=l[o+65*f]),""==p.text&&("K_SPACE"!=p.id&&130>o+65*f)&&(p.text="`1234567890-=\u00a7~~qwertyuiop[]\\~~~asdfghjkl;'~~~~~?zxcvbnm,./~~~~~ ~!@#$%^&*()_+\u00a7~~QWERTYUIOP{}\\~~~ASDFGHJKL:\"~~~~~?ZXCVBNM<>?~~~~~ "[o+65*f]),"undefined"==typeof p.text&&(p.text=""),"K_SHIFT"==p.id&&(w=p),r.test(p.text)||(B+=p.text)}t.valid=0<B.trim().length;t.shiftKey=w;if("desktop"!=b&&0<f&&null!=w)switch(w.sp="2",w.sk=null,i[f].id){case "ctrl":w.text="*Ctrl*";break;case "alt":w.text="*Alt*";break;case "ctrlalt":w.text=
"*AltGr*"}}for(f=0;8>f;f++){n=i[f].row;for(q=0;q<n.length;q++){A=n[q].key;for(m=0;m<A.length;m++)if(p=A[m],null!=p.sk){for(r=0;8>r;r++)for(l=0;l<p.sk.length;l++)if(p.sk[l].nextlayer==x[r]){i[r].valid||p.sk.splice(l,1);break}0==p.sk.length&&(p.sk=null)}}}return c};a._GenerateVisualKeyboard=function(d,e,h){e=g._CreateElement("DIV");if("object"!=typeof h||null==h)h=a.buildDefaultLayout(d,c.formFactor);a.layout=h;a.layers=h.layer;a.fontFamily="font"in h?h.font:"";h.keyLabels=b._ActiveKeyboard&&"undefined"!=
typeof b._ActiveKeyboard.KDU&&b._ActiveKeyboard.KDU;d=a.deviceDependentLayout(h,c.formFactor);a.ddOSK=!0;a.keyMap=d;e.appendChild(d);a._DivVKbdHelp=a._DivVKbd=e;a._Box.className=c.formFactor+" "+c.OS.toLowerCase()+" kmw-osk-frame";e.className=c.formFactor+" kmw-osk-inner-frame";"desktop"==c.formFactor&&a._Box.appendChild(a.controlBar());a._Box.appendChild(e);"desktop"==c.formFactor?a._Box.appendChild(a.resizeBar()):a.adjustHeights()};b.BuildVisualKeyboard=b.buildOSK=function(d,e,c,g){var f=b._ActiveKeyboard,
e=null,i="undefined"==typeof c?"desktop":c,g="undefined"==typeof g?"default":g;if(null!=d){e=d.toLowerCase().replace("keyboard_","");for(c=0;c<b._Keyboards.length;c++)if(e==b._Keyboards[c].KI.toLowerCase().replace("keyboard_","")){f=b._Keyboards[c];break}}if(!f)return null;e=f.KVKL;d=null;c=f.KV;"object"==typeof e&&("object"==typeof e[i]&&null!=e[i]?d=e[i]:"phone"==i&&"object"==typeof e.tablet&&null!=e.tablet?d=e.tablet:"tablet"==i&&"object"==typeof e.phone&&null!=e.phone?d=e.phone:"object"==typeof e.desktop&&
null!=e.desktop&&(d=e.desktop));null==d&&null!=c&&(d=a.buildDefaultLayout(c,i));null!=d&&(d.keyLabels="undefined"!=typeof f.KDU&&f.KDU);e=a.deviceDependentLayout(d,i);e.className="desktop kmw-osk-inner-frame";if(null!=d)for(var k,q,m,c=0;c<d.layer.length;c++){f=e.childNodes[c];f.style.height="100%";for(q=0;q<f.childNodes.length;q++){i=f.childNodes[q];for(m=0;m<i.childNodes.length;m++)k=i.childNodes[m],k.style.height="100%",k.style.left="auto",k.style.padding="0%"}f.style.display="number"==typeof g?
c==g&&0<=g?"block":"none":"string"==typeof g?d.layer[c].id==g?"block":"none":0==c?"block":"none"}else e.innerHTML="<p style='color:#c40; font-size:0.5em;margin:10px;'>No "+i+" layout is defined for "+f.KN+".</p>";e.style.border="1px solid #ccc";return e};a.adjustHeights=function(){var b=a._Box.firstChild.firstChild.childNodes,e=b[0].childNodes.length,h=a.getHeight(),f=Math.floor(h/e),i,l,k,q,m,r,p,A,x,t=4;i=1;"Android"==c.OS&&"devicePixelRatio"in window&&(f/=window.devicePixelRatio);h=e*f;l=a._Box;
k=l.style;k.height=k.maxHeight=h+3+"px";l=l.firstChild.firstChild;k=l.style;k.height=k.maxHeight=h+3+"px";"phone"==c.formFactor&&(t=2,i=0.6);"iOS"==c.OS&&(i/=g.getViewportScale());k.fontSize=i+"em";var o="iOS"==c.OS&&"phone"==c.formFactor&&g.landscapeView();for(i=0;i<b.length;i++){b[i].style.height=h+3+"px";for(l=0;l<e;l++){k=b[i].childNodes[l].style;k.bottom=(e-l-1)*f+"px";k.maxHeight=k.height=f+"px";q=b[i].childNodes[l].childNodes;m=q.length;for(r=0;r<m;r++){p=q[r];for(x=0;x<p.childNodes.length&&
!(0>p.childNodes[x].className.indexOf("key-label"));x++);A=p.childNodes[x].style;A.bottom=k.bottom;A.height=f-t+"px";o&&0<x&&(p.childNodes[0].style.fontSize="6px")}}}};a.controlBar=function(){var d=g._CreateElement("DIV"),e="";d.id="keymanweb_title_bar";d.className="kmw-title-bar";d.onmousedown=a._VMoveMouseDown;b._ActiveKeyboard&&(e=b._ActiveKeyboard.KN);var c=g._CreateElement("SPAN");c.className="kmw-title-bar-caption";c.innerHTML=e;d.appendChild(c);e=a.closeButton=g._CreateElement("DIV");e.id=
"kmw-close-button";e.className="kmw-title-bar-image";e.onmousedown=a._CancelMouse;e.onclick=function(){a._Hide(!0)};d.appendChild(e);e=a.helpImg=g._CreateElement("DIV");e.id="kmw-help-image";e.className="kmw-title-bar-image";e.title="KeymanWeb Help";e.onclick=function(){g.callEvent("osk.helpclick",{});window.event&&(window.event.returnValue=!1);return!1};e.onmousedown=a._CancelMouse;d.appendChild(e);e=a.configImg=g._CreateElement("DIV");e.id="kmw-config-image";e.className="kmw-title-bar-image";e.title=
"KeymanWeb Configuration Options";e.onclick=function(){g.callEvent("osk.configclick",{});window.event&&(window.event.returnValue=!1);return!1};e.onmousedown=a._CancelMouse;d.appendChild(e);e=a.pinImg=g._CreateElement("DIV");e.id="kmw-pin-image";e.className="kmw-title-bar-image";e.title="Pin the On Screen Keyboard to its default location on the active text box";e.onclick=function(){a.loadCookie();a.userPositioned=!1;a.saveCookie();a._Show();a.doResizeMove();a.pinImg&&(a.pinImg.style.display="none");
window.event&&(window.event.returnValue=!1);return!1};e.onmousedown=a._CancelMouse;d.appendChild(e);return d};a.showBuild=function(){g.alert("KeymanWeb Build "+b.build+'<br /><br /><span style="font-size:0.8em">Copyright &copy; 2013 Tavultesoft Pty Ltd</span>')};a.resizeBar=function(){var b=g._CreateElement("DIV");b.className="kmw-footer";b.onmousedown=a._CancelMouse;var c=g._CreateElement("DIV");c.className="kmw-footer-caption";c.innerHTML="Keyboard &copy; 2013 Tavultesoft Pty Ltd";c.id="keymanweb-osk-footer-caption";
g.attachDOMEvent(c,"dblclick",function(b){b&&b.shiftKey&&a.showBuild()},!1);"onselectstart"in c&&(c.onselectstart=g.selectStartHandler);b.appendChild(c);c=g._CreateElement("DIV");c.className="kmw-footer-resize";c.onmousedown=a._VResizeMouseDown;c.onmouseover=c.onmouseout=a._VResizeMouseOut;b.appendChild(c);a.resizeIcon=c;return b};a._VKbdMouseOver=function(){b._IsActivatingKeymanWebUI=1};a._VKbdMouseOut=function(){b._IsActivatingKeymanWebUI=0};a._VResizeMouseOver=a._VResizeMouseOut=function(d){d=
b._GetEventObject(d);if(!d)return!1;d&&d.preventDefault&&d.preventDefault();var c=a.getRect();a.width=c.width;a.height=c.height;d.cancelBubble=!0;return!1};a._VResizeMouseDown=function(d){b._JustActivatedKeymanWebUI=1;d=b._GetEventObject(d);if(!d)return!0;a.resizing=1;var c,g;d.pageX?(c=d.pageX,g=d.pageY):d.clientX&&(c=d.clientX+document.body.scrollLeft,g=d.clientY+document.body.scrollTop);a._ResizeMouseX=c;a._ResizeMouseY=g;document.onmousemove!=a._VResizeMouseMove&&document.onmousemove!=a._VMoveMouseMove&&
(a._VPreviousMouseMove=document.onmousemove,a._VPreviousMouseUp=document.onmouseup);a._VPreviousCursor=document.body.style.cursor;a._VPreviousMouseButton="undefined"==typeof d.which?d.button:d.which;a._VOriginalWidth=a._DivVKbd.offsetWidth;a._VOriginalHeight=a._DivVKbd.offsetHeight;document.onmousemove=a._VResizeMouseMove;document.onmouseup=a._VResizeMoveMouseUp;document.body.style.cursor&&(document.body.style.cursor="se-resize");d&&d.preventDefault&&d.preventDefault();d.cancelBubble=!0;return!1};
a._VResizeMouseMove=function(d){var c,h,d=b._GetEventObject(d);if(!d)return!0;a.resizing=1;if(a._VPreviousMouseButton!=("undefined"==typeof d.which?d.button:d.which))return a._VResizeMoveMouseUp(d);d.pageX?(c=d.pageX,h=d.pageY):d.clientX&&(c=d.clientX+document.body.scrollLeft,h=d.clientY+document.body.scrollTop);c=a._VOriginalWidth+c-a._ResizeMouseX;h=a._VOriginalHeight+h-a._ResizeMouseY;c<0.2*screen.width&&(c=0.2*screen.width);h<0.1*screen.height&&(h=0.1*screen.height);c>0.9*screen.width&&(c=0.9*
screen.width);h>0.5*screen.height&&(c=0.5*screen.height);a._DivVKbd.style.width=c+"px";a._DivVKbd.style.height=h+"px";a._DivVKbd.style.fontSize=h/8+"px";g.showShim(a._DivVKbd,a.shim,a._DivVKbdHelp);d&&d.preventDefault&&d.preventDefault();d.cancelBubble=!0;return!1};a._VMoveMouseDown=function(d){var c,g;b._JustActivatedKeymanWebUI=1;d=b._GetEventObject(d);if(!d)return!0;a.resizing=1;d.pageX?(c=d.pageX,g=d.pageY):d.clientX&&(c=d.clientX+document.body.scrollLeft,g=d.clientY+document.body.scrollTop);
document.onmousemove!=a._VResizeMouseMove&&document.onmousemove!=a._VMoveMouseMove&&(a._VPreviousMouseMove=document.onmousemove,a._VPreviousMouseUp=document.onmouseup);a._VPreviousCursor=document.body.style.cursor;a._VPreviousMouseButton="undefined"==typeof d.which?d.button:d.which;a._VMoveX=c-a._Box.offsetLeft;a._VMoveY=g-a._Box.offsetTop;b.isCJK()&&(a.pinImg.style.left="15px");document.onmousemove=a._VMoveMouseMove;document.onmouseup=a._VResizeMoveMouseUp;document.body.style.cursor&&(document.body.style.cursor=
"move");d&&d.preventDefault&&d.preventDefault();d.cancelBubble=!0;return!1};a._VMoveMouseMove=function(d){var c,h,d=b._GetEventObject(d);if(!d||a.noDrag)return!0;a.resizing=1;a.userPositioned=!0;a.pinImg.style.display="block";if(a._VPreviousMouseButton!=("undefined"==typeof d.which?d.button:d.which))return a._VResizeMoveMouseUp(d);d.pageX?(c=d.pageX,h=d.pageY):d.clientX&&(c=d.clientX+document.body.scrollLeft,h=d.clientY+document.body.scrollTop);a._Box.style.left=c-a._VMoveX+"px";a._Box.style.top=
h-a._VMoveY+"px";a._DivVKbd?g.showShim(a._DivVKbd,a.shim,a._DivVKbdHelp):g.showShim(a._Box,a.shim);d&&d.preventDefault&&d.preventDefault();c=a.getRect();a.width=c.width;a.height=c.height;d.cancelBubble=!0;return!1};a._VResizeMoveMouseUp=function(d){d=b._GetEventObject(d);if(!d)return!0;a.resizing=0;a.currentKey=null;document.onmousemove=a._VPreviousMouseMove;document.onmouseup=a._VPreviousMouseUp;document.body.style.cursor&&(document.body.style.cursor=a._VPreviousCursor);b._FocusLastActiveElement();
d&&d.preventDefault&&d.preventDefault();b._JustActivatedKeymanWebUI=0;b._IsActivatingKeymanWebUI=0;a._DivVKbd&&(a._VOriginalWidth=a._DivVKbd.offsetWidth,a._VOriginalHeight=a._DivVKbd.offsetHeight);a.doResizeMove();d.cancelBubble=!0;a.saveCookie();return!1};a.userLocated=function(){return a.userPositioned};a.show=function(b){0<arguments.length?(a._Enabled=b)?a._Show():a._Hide(!0):a._Visible?a._Hide(!0):a._Show()};a.doShow=function(a){return g.callEvent("osk.show",a)};a.doHide=function(a){return g.callEvent("osk.hide",
a)};a.doResizeMove=function(a){return g.callEvent("osk.resizemove",a)};a._Show=function(d,e){if(!(null==a._Box||null==b._ActiveElement))if(c.touchable||null!=b._ActiveKeyboard&&a._Enabled){var h=a._Box.style;c.touchable&&""==h.bottom&&(h.visibility="hidden");if(a.ddOSK){var f,i=-1,l=a._DivVKbd.childNodes[0].childNodes;for(f=0;f<l.length;f++)l[f].layer==a.layerId?(l[f].style.display="block",a.nextLayer=a.layerId,a.layerIndex=i=f,"string"==typeof a.layers[f].nextlayer&&(a.nextLayer=a.layers[f].nextlayer)):
l[f].style.display="none";c.touchable&&(h.position="fixed",h.left=h.bottom="0px",h.height=h.maxHeight=a._Box.firstChild.firstChild.style.height,h.border="none",h.borderTop="1px solid gray",a._Enabled=1,a._Visible=1,a._DivVKbd.style.fontSize="phone"==c.formFactor?"120%":"Android"==c.OS&&"tablet"==c.formFactor&&300>parseInt(h.height,10)?"120%":"200%",a.lgKey=a.getSpecialKey(i,"K_LOPT"),a.hkKey=a.getSpecialKey(i,"K_ROPT"),"iOS"==c.OS&&"phone"==c.formFactor&&a.adjustHeights());a.spaceBar=a.getSpecialKey(i,
"K_SPACE")}h.display="block";a.showLanguage();if("desktop"==c.formFactor&&(h.position="absolute",h.display="block",h.left="0px",a.loadCookie(),0<=d?(h.left=d+"px",h.top=e+"px"):a.userPositioned?(h.left=a.x+"px",h.top=a.y+"px"):(f=b._ActiveElement,""!=a.dfltX?h.left=a.dfltX:"undefined"!=typeof f&&null!=f&&(h.left=g._GetAbsoluteX(f)+"px"),""!=a.dfltY)?h.top=a.dfltY:"undefined"!=typeof f&&null!=f&&(h.top=g._GetAbsoluteY(f)+f.offsetHeight+"px"),a._Enabled=1,a._Visible=1,a._DivVKbd&&(a.width=a._DivVKbd.offsetWidth,
a.height=a._DivVKbd.offsetHeight),a.saveCookie(),f=a.pinImg,"undefined"!=typeof f&&null!=f))f.style.display=a.userPositioned?"block":"none";"hidden"==h.visibility&&window.setTimeout(function(){a._Box.style.visibility="visible"},0);c.touchable||(h={},h.x=a._Box.offsetLeft,h.y=a._Box.offsetTop,h.userLocated=a.userPositioned,a.doShow(h))}};a.adjustRowLengths=function(b){if(!(0<=b)){var e,f=a._DivVKbd.childNodes[0].childNodes;if(!(0>b||b>=f.length||f[b].aligned)&&"block"==f[b].style.display){e=a._DivVKbd.childNodes[0].offsetWidth-
6;"Windows"==c.OS&&(e-=g.landscapeView()?4:40);var i,k=f[b].childNodes,l,n,q;for(i=0;i<k.length;i++)l=k[i].childNodes,n=l.length,q=l[n-2].offsetLeft+l[n-2].offsetWidth,l=l[n-1],l.style.width=e-q+"px";f[b].aligned=!0}}};a.resetRowLengths=function(){var b,c=a._DivVKbd.childNodes[0].childNodes,g=-1;for(b=0;b<c.length;b++)"block"==c[b].style.display&&(g=b),c[b].aligned=!1;return g};a.getSpecialKey=function(b,c){var g,f;g=a._DivVKbd.childNodes[0].childNodes;if(0<=b&&b<g.length){g=g[b].childNodes;f=g[g.length-
1].childNodes;for(g=0;g<f.length;g++)if(f[g].keyId==c)return f[g]}return null};a.hide=function(){a._Enabled=0;a._Hide(!0)};a._Hide=function(d){a._Box&&("block"==a._Box.style.display&&a._DivVKbd)&&(a.width=a._DivVKbd.offsetWidth,a.height=a._DivVKbd.offsetHeight);if(d)a._Enabled=b.isCJK()||c.touchable?1:0,a.saveCookie();else if("desktop"==c.formFactor&&0<=document.body.className.indexOf("osk-always-visible"))return;a._Visible=0;if(a._Box&&c.touchable&&0<a._Box.offsetHeight){var e=a._Box.style;e.transition=
"string"==typeof e.MozBoxSizing?"opacity 0.8s linear":e.msTransition=e.WebkitTransition="opacity 0.5s linear 0";window.setTimeout(function(){var b=a._Box.style;if(a._Visible)b.transition=b.msTransition=b.MozTransition=b.WebkitTransition="";else{b.opacity="0";a._Box.addEventListener("transitionend",a.hideNow,false);a._Box.addEventListener("webkitTransitionEnd",a.hideNow,false)}},200)}else a._Box&&(a._Box.style.display="none"),g.hideShim(a.shim);e={};e.HiddenByUser=d;a.doHide(e);d&&b._FocusLastActiveElement()};
a.hideNow=function(){a._Box.removeEventListener("transitionend",a.hideNow,!1);a._Box.removeEventListener("webkitTransitionEnd",a.hideNow,!1);var b=a._Box.style;b.display="none";b.opacity="1";a._Visible=0;b.transition=b.msTransition=b.mozTransition=b.WebkitTransition="";a.hkKey&&"undefined"!=typeof a.hkKey&&a.highlightKey(a.hkKey.firstChild,!1)};a.prepare=function(){b.initialized?(a.ready||(a._Box=g._CreateElement("DIV"),document.body.appendChild(a._Box),g.linkStyleSheet(b.getStyleSheetPath("kmwosk.css")),
g.attachDOMEvent(a._Box,"mousedown",function(){b._IsActivatingKeymanWebUI=1}),c.touchable&&(g.attachDOMEvent(a._Box,"touchstart",function(a){b._IsActivatingKeymanWebUI=1;a.preventDefault();a.stopPropagation()}),g.attachDOMEvent(a._Box,"touchend",function(a){a.preventDefault();a.stopPropagation()}),g.attachDOMEvent(a._Box,"touchmove",function(a){a.preventDefault();a.stopPropagation()}),g.attachDOMEvent(a._Box,"touchcancel",function(a){a.preventDefault();a.stopPropagation()}),a.vpScale=g.getViewportScale())),
a.loadCookie(),a.ready=!0):window.setTimeout(a.prepare,200)};a._Load=function(){if(null==a._Box)99<=a.loadRetry||(window.setTimeout(a._Load,100),a.loadRetry++);else{a.loadRetry=0;b._TitleElement&&(b._TitleElement.innerHTML="Tavultesoft KeymanWeb");a._Visible=0;a.layerId="default";var d=a._Box.style;d.zIndex="9999";d.display="none";d.width="auto";d.position="desktop"==c.formFactor?"absolute":"fixed";"phone"==c.formFactor&&(d.fontSize="1.6em");a._DivVKbd=a._DivVKbdHelp=null;a._Box.innerHTML="";a._Box.onmouseover=
a._VKbdMouseOver;a._Box.onmouseout=a._VKbdMouseOut;if(null==b._ActiveKeyboard&&!c.touchable){var e=g._CreateElement("DIV");e.className="kmw-title-bar";e.appendChild(a._TitleBarInterior());e.onmousedown=a._VMoveMouseDown;a._Box.appendChild(e);e=g._CreateElement("DIV");e.className="kmw-osk-none";a._Box.appendChild(e)}else{var f=e=null,i=null,d="";a._Box.className="";if(null!=b._ActiveKeyboard&&(e=b._ActiveKeyboard.KV,d=b._ActiveKeyboard.KH,f=b._ActiveKeyboard.KVKL,"undefined"!=typeof f&&null!=f&&(i=
f[c.formFactor],"undefined"==typeof i||null==i)))if("phone"==c.formFactor?i=f.tablet:"tablet"==c.formFactor&&(i=f.phone),"undefined"==typeof i||null==i)i=f.desktop;if(null!=e&&null!=e.BK){for(var f=e.BK,k=!0,l=0;l<f.length;l++)if(0<f[l].length){k=!1;break}k&&(e=null)}null!=e||""==d||c.touchable?(null==e&&(e={F:"Tahoma",BK:"`1234567890-=\u00a7~~qwertyuiop[]\\~~~asdfghjkl;'~~~~~?zxcvbnm,./~~~~~ ~!@#$%^&*()_+\u00a7~~QWERTYUIOP{}\\~~~ASDFGHJKL:\"~~~~~?ZXCVBNM<>?~~~~~ "}),a._GenerateVisualKeyboard(e,d,
i)):(a.ddOSK=!1,e=g._CreateElement("DIV"),e.className="kmw-title-bar",e.appendChild(a._TitleBarInterior()),e.onmousedown=a._VMoveMouseDown,a._Box.appendChild(e),e=g._CreateElement("DIV"),e.className="kmw-osk-static",e.innerHTML=d,a._Box.appendChild(e),b._ActiveKeyboard.KHF&&b._ActiveKeyboard.KHF(a._Box));b._TitleElement&&(b._TitleElement.innerHTML="<span style='font-weight:bold'>"+b._ActiveKeyboard.KN+"</span> - "+b._TitleElement.innerHTML,b._TitleElement.className="",b._TitleElement.style.color=
"#fff")}a.createKeyTip();d=a._Box.firstChild;e=" kmw-keyboard-"+(b._ActiveKeyboard?b._ActiveKeyboard.KI.replace("Keyboard_",""):"");"keymanweb_title_bar"==d.id&&(d=d.nextSibling);d.className="kmw-osk-inner-frame"+e;a.appendStyleSheet();a._Enabled&&a._Show()}};a.appendStyleSheet=function(){if(null!=b._ActiveStub){a.styleSheet&&g.removeStyleSheet(a.styleSheet);var d=b._ActiveStub,c=d.KFont,d=d.KOskFont;g.addFontFaceStyleSheet(c);g.addFontFaceStyleSheet(d);b.alignInputs(!1);var f=a.addFontStyle(c,d);
null!=b._ActiveKeyboard&&"string"==typeof b._ActiveKeyboard.KCSS&&(f+=b._ActiveKeyboard.KCSS);a.styleSheet=g.addStyleSheet(f);a.waitForFonts(c,d)&&b.alignInputs(!0)}};a.addFontStyle=function(a,c){var g=b.baseFont;"undefined"!=typeof a&&"undefined"!=typeof a.family&&(g=a.family);var f=b.appliedFont,f=f.replace(RegExp("s?"+g+",?"),""),f=f.replace(/,$/,""),f=""==f?g:g+","+f,g=".keymanweb-font{\nfont-family:"+f+" !important;\n}\n";"undefined"!=typeof c?g=g+".kmw-key-text{\nfont-family:"+c.family+";\n}\n":
"undefined"!=typeof a&&(g=g+".kmw-key-text{\nfont-family:"+a.family+";\n}\n");b.appliedFont=f;return g};a._Unload=function(){a._VShift=a._DivVKbd=a._VKeySpans=a._Box=0};a.saveCookie=function(){var b=g.loadCookie("KeymanWeb_OnScreenKeyboard"),c=a.getPos();b.visible=a._Enabled?1:0;b.userSet=a.userPositioned?1:0;b.left=c.left;b.top=c.top;a._DivVKbd&&(b.width=a.width,b.height=a.height);g.saveCookie("KeymanWeb_OnScreenKeyboard",b)};a.loadCookie=function(){var b=g.loadCookie("KeymanWeb_OnScreenKeyboard");
l+"px";a.lgList.visibility="";e=f.firstChild.offsetHeight*a.lgList.activeLgNo+1;h.scrollTop=e;h.scrollTop<e&&(h.scrollTop=h.scrollHeight-h.offsetHeight);h.scrollTop>h.scrollHeight-h.offsetHeight-1&&(h.scrollTop=h.scrollHeight-h.offsetHeight-1)}};a.adjustLanguageMenu=function(b){var e=a.lgList,h=e.firstChild,j=h.firstChild,f=0,i=e.style,e=e.childNodes[1],r=window.innerHeight-a.lgKey.offsetHeight-16,b=(j.childNodes.length+b-1)*j.firstChild.firstChild.offsetHeight;"iOS"==c.OS&&("phone"==c.formFactor?
(f=g.landscapeView()?36:0,r=(window.innerHeight-f-16)*g.getViewportScale()):"tablet"==c.formFactor&&(f=g.landscapeView()?16:0,r-=f));i.left=g._GetAbsoluteX(a.lgKey)+"px";b>r&&(b=r);i.height=b+"px";i.top=g._GetAbsoluteY(a._Box)+a._Box.offsetHeight-b+window.pageYOffset-6+"px";i.bottom="auto";e.style.height=h.style.height=i.height};a.scrollToLanguage=function(a,b,c){a.stopImmediatePropagation();a.stopPropagation();a.preventDefault();if("P"==a.touches[0].target.nodeName){var g,f,i=0,a=a.touches[0].target.innerHTML.charCodeAt(0),
r=c.childNodes;try{for(g=0;g<r.length-1&&!(f=r[g].firstChild.innerHTML.toUpperCase().charCodeAt(0),f>=a);g++);}catch(k){}try{i=c.firstChild.offsetHeight*g+1,b.scrollTop=i}catch(m){i=0}try{if(b.scrollTop<i&&(b.scrollTop=b.scrollHeight-b.offsetHeight),b.scrollTop>b.scrollHeight-b.offsetHeight-1)b.scrollTop=b.scrollHeight-b.offsetHeight-1}catch(s){}}};a.addLanguagesToMenu=function(d,e){var h=e.length,j,f,i,k=[];for(f=0;f<h;f++)i=e[f].KL,-1==k.indexOf(i)&&k.push(i);k.sort();var q=Math.round(100/g.getViewportScale())/
100,m,s,p;i=-1;for(j=0;j<k.length;j++){m=g._CreateElement("DIV");m.className="kbd-list-closed";s=g._CreateElement("P");s.kList=[];for(f=0;f<h;f++)e[f].KL==k[j]&&s.kList.push(e[f]);"iOS"==c.OS&&(s.style.fontSize=q+"em");m.appendChild(s);d.appendChild(m);k[j]==b._ActiveStub.KL&&(i=j);if(1<s.kList.length){s.className="kbd-list";s.innerHTML=k[j]+"...";s.scrolled=!1;s.ontouchend=function(b){b.preventDefault();b.stopPropagation();b.target.scrolled?b.target.scrolled=false:this.parentNode.className=this.parentNode.className==
"kbd-list-closed"?"kbd-list-open":"kbd-list-closed";a.adjustLanguageMenu(this.parentNode.className=="kbd-list-closed"?0:this.kList.length)};s.addEventListener("touchstart",function(a){a.stopPropagation()},!1);s.addEventListener("touchmove",function(a){a.target.scrolled=true;a.stopPropagation()},!1);for(f=0;f<s.kList.length;f++)p=g._CreateElement("P"),p.className="kbd-list-entry","iOS"==c.OS&&(p.style.fontSize=q+"em"),a.addKeyboardToMenu(s.kList[f],p,!1),m.appendChild(p)}else s.innerHTML=k[j],s.className=
"kbd-single-entry",a.addKeyboardToMenu(s.kList[0],s,!0);j==i&&(s.className+=" current")}h=g._CreateElement("DIV");h.id="kmw-menu-footer";k=function(a){a.preventDefault();a.stopPropagation()};h.addEventListener("touchstart",k,!1);h.addEventListener("touchmove",k,!1);h.addEventListener("touchend",k,!1);d.appendChild(h);return i};a.addKeyboardToMenu=function(d,e,c){e.kn=d.KI;e.kc=d.KLC;e.innerHTML=c?d.KL:d.KN.replace(" Keyboard","");var d=function(b){b.stopPropagation();0>=this.className.indexOf("selected")&&
(this.className+=" selected");a.lgList.scrolling=!1;a.lgList.y0=b.touches[0].pageY;return!0},c=function(b){b.stopImmediatePropagation();var d=a.lgList.childNodes[0],e=d.scrollHeight-d.offsetHeight,c,h;if("undefined"!=typeof b.pageY)c=b.pageY;else if("undefined"!=typeof b.touches)c=b.touches[0].pageY;else return;h=c-a.lgList.y0;if(0>h)d.scrollTop>=e-1&&(b.preventDefault(),a.lgList.y0=c);else if(0<h)2>d.scrollTop&&(b.preventDefault(),a.lgList.y0=c);else return;if(-5>h||5<h)a.lgList.scrolling=!0,this.className=
this.className.replace(/\s*selected/,""),a.lgList.y0=c;return!0},g=function(d){d.preventDefault();"undefined"!=typeof d.stopImmediatePropagation?d.stopImmediatePropagation():d.stopPropagation();a.lgList.scrolling?this.className=this.className.replace(/\s*selected/,""):(b.focusing=!0,b.focusTimer=window.setTimeout(function(){b.focusing=!1},1E3),a.lgList.style.display="none",b._SetActiveKeyboard(this.kn,this.kc,!0),b.doKeyboardChange(this.kn,this.kc),b._FocusLastActiveElement(),a.hideLanguageList(),
a._Show());return!0};e.onmspointerdown=d;e.addEventListener("touchstart",d,!1);e.onmspointermove=c;e.addEventListener("touchmove",c,!1);e.onmspointerout=g;e.addEventListener("touchend",g,!1)};a.hideLanguageList=function(){a.lgList&&(a.highlightKey(a.lgKey.firstChild,!1),a.lgList.style.visibility="hidden",window.setTimeout(function(){null!=a.lgList&&"undefined"!=typeof a.lgList&&(document.body.removeChild(a.lgList.shim),document.body.removeChild(a.lgList));a.lgList=null},500))};a._UpdateVKShift=function(b,
e,c){var g=0,g=b?b.Lmodifiers/16:c?g|e:g&~e;a.layerId=a.getLayerId(g);a._Visible&&a._Show();return!0};a._CancelMouse=function(a){(a=b._GetEventObject(a))&&a.preventDefault&&a.preventDefault();a&&(a.cancelBubble=!0,a.returnValue=!1);return!1};a.showLayer=function(d){if(b._ActiveKeyboard)for(var e=0;e<a.layers.length;e++)if(a.layers[e].id==d)return a.layerId=d,a._Show(),!0;return!1};a.getHeight=function(){if("function"==typeof b.getOskHeight)return b.getOskHeight();var a=Math.floor(Math.min(screen.availHeight,
screen.availWidth)/2);if("phone"==c.formFactor)var e=Math.min(screen.height,screen.width),h=Math.max(screen.height,screen.width),a=g.portraitView()?Math.floor(Math.max(screen.availHeight,screen.availWidth)/3):a*(h/e)/1.6;"iOS"==c.OS&&(a/=g.getViewportScale());"Android"==c.OS&&"phone"==c.formFactor&&"devicePixelRatio"in window&&/Firefox|Chrome|OPR/.test(navigator.userAgent)&&(a*=window.devicePixelRatio);return a};a.getWidth=function(){if("function"==typeof b.getOskWidth)return b.getOskWidth();var a=
screen.width;if("Android"==c.OS)try{a=document.documentElement.clientWidth}catch(e){a=screen.availWidth}return a};a.mouseOverMouseDownHandler=function(b){var e=g.eventTarget(b);null!==e&&(("SPAN"==e.nodeName&&(e=e.parentNode),"mousedown"==g.eventType(b))?(a.currentKey=e.id,a._CancelMouse(b),a.highlightKey(e,!0)):e.id==a.currentKey&&a.highlightKey(e,!0))};a.mouseUpMouseOutHandler=function(b){var e=g.eventTarget(b);if(null!==e&&("SPAN"==e.nodeName&&(e=e.parentNode),a.highlightKey(e,!1),"mouseup"==g.eventType(b)))e.id==
a.currentKey&&a.clickKey(e),a.currentKey=""};a.mspointerdownHandler=function(b){a.touchKey(this,b)};a.mspointerupHandler=function(b){a.releaseKey(this,b)};a.mspointermoveHandler=function(b){a.moveOverKeys(this,b)};a.deviceDependentLayout=function(b,e){var h=g._CreateElement("DIV"),j=h.style,i=0;h.className="kmw-key-layer-group";switch(e){case "phone":case "tablet":i=a.getHeight(),j.height=i+"px"}if(null==b)return h;j.fontSize="undefined"==typeof b.fontsize||null==b.fontsize?"1em":b.fontsize;a.fontSize=
j.fontSize;var l,k,q,m,s,p,A,x,t,n,w,B,u,y;q=b.layer;var F={text:""};F.fontsize=j.fontSize;F.width="100";F.pad="5";F.sp="0";F.layer=null;F.nextlayer=null;for(var H=/\*\w+\*/,i=0;i<q.length;i++){m=q[i];p=m.row;for(l=p.length;0<l&&!(0<p[l-1].key.length);l--);l<p.length&&p.splice(l-p.length,p.length-l)}A=100/p.length;"desktop"==e&&(A=100/p.length);var D,E;"desktop"==e?(D=function(a){return a+"%"},E=100):(D=function(a){return Math.round(a)+"px"},E=a.getWidth());for(i=0;i<q.length;i++){m=q[i];m.aligned=
!1;s=g._CreateElement("DIV");p=s.style;s.className="kmw-key-layer";p.display=0==i?"block":"none";p.height=j.height;p.fontFamily="font"in b?b.font:"";s.layer=s.nextLayer=m.id;"string"==typeof m.nextlayer&&(s.nextLayer=m.nextlayer);p=m.row;var C=0;for(l=0;l<p.length;l++){x=0;k=p[l];t=k.key;for(k=0;k<t.length;k++)if(n=t[k],null==n)t.length-=1;else{var z;B="string"==typeof n.width&&""!=n.width?parseInt(n.width,10):100;if(isNaN(B)||0==B)B=100;n.width=B.toString();z="string"==typeof n.pad&&""!=n.pad?parseInt(n.pad,
10):5;if(isNaN(z)||0==z)z=5;n.pad=z.toString();x+=B+z}x>C&&(C=x)}C="desktop"==e?C+5:C+15;for(l=0;l<p.length;l++){x=g._CreateElement("DIV");x.className="kmw-key-row";x.onmousedown=g.mouseDownPreventDefaultHandler;k=p[l];B=x.style;B.maxHeight=B.height=A+"%";t=k.key;for(k=0;k<t.length;k++){n=t[k];for(var G in F)"string"!=typeof n[G]&&(n[G]=F[G]);switch(n.sp){case "1":H.test(n.text)||(n.sp="3");break;case "2":H.test(n.text)||(n.sp="4")}}for(k=z=0;k<t.length-1;k++)n=parseInt(t[k].width,10)*E/C,t[k].widthpc=
n,w=parseInt(t[k].pad,10)*E/C,t[k].padpc=w,z+=w+n;z+=15*E/C;1==t.length&&0>parseInt(t[0].pad,10)?(n=parseInt(t[0].width,10)*E/C,t[0].widthpc=n,z+=n,t[0].padpc=E-z):0<t.length&&(k=t.length-1,w=parseInt(t[k].pad,10)*E/C,t[k].padpc=w,z+=w,t[k].widthpc=E-z);for(k=z=0;k<t.length;k++){n=t[k];w=g._CreateElement("DIV");w.keyId=n.id;w.className="kmw-key-square";u=w.style;w.width=u.width=D(n.widthpc);"desktop"!=e?(u.left=D(z+t[k].padpc),u.bottom=B.bottom,u.height=B.height):u.marginLeft=D(n.padpc);z=z+t[k].padpc+
t[k].widthpc;y=g._CreateElement("DIV");a.setButtonClass(n,y,b);"desktop"!=e&&(y.style.left=u.left,y.style.width=u.width);u=null;if(b.keyLabels||"desktop"==e){var v=f[n.id];switch(v){case 186:v=59;break;case 187:v=61;break;case 188:v=44;break;case 189:v=45;break;case 190:v=46;break;case 191:v=47;break;case 192:v=96;break;case 219:v=91;break;case 220:v=92;break;case 221:v=93;break;case 222:v=39;break;default:if(48>v||90<v)v=0}0<v&&(u=g._CreateElement("DIV"),u.className="kmw-key-label",u.innerHTML=String.fromCharCode(v),
w.appendChild(u))}y.id=m.id+"-"+n.id;y.key=n;if("undefined"!=typeof n.sk&&null!=n.sk){v=y.subKeys=n.sk;for(u=0;u<v.length;u++)if("1"==v[u].sp||"2"==v[u].sp)v[u].text=a.renameSpecialKey(v[u].text)}else y.subKeys=null;"ontouchstart"in window?(g.attachDOMEvent(y,"touchstart",function(b){a.touchKey(this,b)}),g.attachDOMEvent(y,"touchend",function(b){a.releaseKey(this,b)}),g.attachDOMEvent(y,"touchmove",function(b){a.moveOverKeys(this,b)}),y.onclick=function(a){a.preventDefault();a.stopPropagation()}):
c.touchable&&"Windows"==c.OS?(y.style.msTouchAction="none",y.onmspointerdown=a.mspointerdownHandler,y.onmspointerup=a.mspointerupHandler,y.onmspointermove=a.mspointermoveHandler):(y.onmouseover=y.onmousedown=a.mouseOverMouseDownHandler,y.onmouseup=y.onmouseout=a.mouseUpMouseOutHandler);u=g._CreateElement("SPAN");v=u.style;null==n.text||""==n.text?(u.innerHTML="\u00a0","string"==typeof n.id&&/^U_[0-9A-F]{4}$/i.test(n.id)&&(u.innerHTML=String.fromCharCode(parseInt(n.id.substr(2),16)))):u.innerHTML=
n.text;u.className="kmw-key-text";if("1"==n.sp||"2"==n.sp)u.innerHTML=a.renameSpecialKey("*Tab*"==n.text&&1==i?"*TabLeft*":n.text);"font"in n&&(v.fontFamily=n.font);"fontsize"in n&&(v.fontSize=n.fontsize);y.appendChild(u);w.appendChild(y);"undefined"!=typeof n.sk&&null!=n.sk&&(n=g._CreateElement("DIV"),n.className="kmw-key-popup-icon",w.appendChild(n));x.appendChild(w)}s.appendChild(x)}h.appendChild(s)}return h};a.renameSpecialKey=function(a){for(var b="*Shift* *Enter* *Tab* *BkSp* *Menu* *Hide* *Alt* *Ctrl* *Caps* *ABC* *abc* *123* *Symbol* *Currency* *Shifted* *AltGr* *TabLeft*".split(" "),
c=[8,5,6,4,11,10,25,1,3,16,17,19,21,20,8,2,7],g=0;g<b.length;g++)if(a==b[g])return String.fromCharCode(57344+c[g]);return a};a.setButtonClass=function(b,e,c){var f=0,i="default shift shift-on special special-on deadkey blank hidden".split(" ");"string"==typeof b.dk&&"1"==b.dk&&(f=8);"string"==typeof b.sp&&(f=parseInt(b.sp,10));if(0>f||10<f)f=0;c=c||a.layout;e.className=4<c.layer[0].row.length&&"phone"==g.device.formFactor?"kmw-key kmw-5rows kmw-key-"+i[f]:"kmw-key kmw-key-"+i[f]};a.buildDefaultLayout=
function(a,b){var c;c=b;var f=window.dfltLayout;"object"!=typeof f[c]&&(c="desktop");c=g.deepCopy(f[c]);var i=c.layer,l=a.BK,r=a.K102,q,m,s,p,A;s=/\*\w+\*/;for(var x="default shift ctrl ctrlshift alt altshift ctrlalt ctrlaltshift".split(" "),f=0;8>f;f++){0<f&&(i[f]=g.deepCopy(i[0]));i[f].id=x[f];i[f].nextlayer=x[f];for(q=0;q<i[f].row.length;q++){m=i[f].row[q];A=m.key;for(m=0;m<A.length;m++)switch(p=A[m],p.id){case "K_SHIFT":case "K_LSHIFT":case "K_RSHIFT":1==(f&1)&&(p.sp="2");"desktop"!=b&&0<f&&(p.nextlayer=
"default");break;case "K_CONTROL":case "K_LCTRL":case "K_LCONTROL":case "K_RCTRL":case "K_RCONTROL":2==(f&2)&&(p.sp="2");break;case "K_ALT":case "K_LALT":case "K_RALT":4==(f&4)&&(p.sp="2")}}if("undefined"==typeof r||!r)for(q=0;q<i[f].row.length;q++)for(m=0;m<i[f].row[q].key.length;m++)"K_oE2"==i[f].row[q].key[m].id&&("desktop"==b?(i[f].row[q].key.splice(m,1),i[f].row[q].key[0].width="200"):i[f].row[q].key[m].sp="10")}for(f=0;f<i.length;f++){var t=i[f],n,w=null,B="",r=t.row;for(q=0;q<r.length;q++){A=
r[q].key;for(m=0;m<A.length;m++)p=A[m],n=k.indexOf(p.id),"undefined"!=typeof l&&(0<=n&&n+65*f<l.length)&&(p.text=l[n+65*f]),""==p.text&&("K_SPACE"!=p.id&&130>n+65*f)&&(p.text="`1234567890-=\u00a7~~qwertyuiop[]\\~~~asdfghjkl;'~~~~~?zxcvbnm,./~~~~~ ~!@#$%^&*()_+\u00a7~~QWERTYUIOP{}\\~~~ASDFGHJKL:\"~~~~~?ZXCVBNM<>?~~~~~ "[n+65*f]),"undefined"==typeof p.text&&(p.text=""),"K_SHIFT"==p.id&&(w=p),s.test(p.text)||(B+=p.text)}t.valid=0<B.trim().length;t.shiftKey=w;if("desktop"!=b&&0<f&&null!=w)switch(w.sp=
"2",w.sk=null,i[f].id){case "ctrl":w.text="*Ctrl*";break;case "alt":w.text="*Alt*";break;case "ctrlalt":w.text="*AltGr*"}}for(f=0;8>f;f++){r=i[f].row;for(q=0;q<r.length;q++){A=r[q].key;for(m=0;m<A.length;m++)if(p=A[m],null!=p.sk){for(s=0;8>s;s++)for(l=0;l<p.sk.length;l++)if(p.sk[l].nextlayer==x[s]){i[s].valid||p.sk.splice(l,1);break}0==p.sk.length&&(p.sk=null)}}}return c};a._GenerateVisualKeyboard=function(d,e,h){e=g._CreateElement("DIV");if("object"!=typeof h||null==h)h=a.buildDefaultLayout(d,c.formFactor);
a.layout=h;a.layers=h.layer;a.fontFamily="font"in h?h.font:"";h.keyLabels=b._ActiveKeyboard&&"undefined"!=typeof b._ActiveKeyboard.KDU&&b._ActiveKeyboard.KDU;d=a.deviceDependentLayout(h,c.formFactor);a.ddOSK=!0;a.keyMap=d;e.appendChild(d);a._DivVKbdHelp=a._DivVKbd=e;a._Box.className=c.formFactor+" "+c.OS.toLowerCase()+" kmw-osk-frame";e.className=c.formFactor+" kmw-osk-inner-frame";"desktop"==c.formFactor&&a._Box.appendChild(a.controlBar());a._Box.appendChild(e);"desktop"==c.formFactor?a._Box.appendChild(a.resizeBar()):
a.adjustHeights()};b.BuildVisualKeyboard=b.buildOSK=function(d,e,c,g){var f=b._ActiveKeyboard,e=null,i="undefined"==typeof c?"desktop":c,g="undefined"==typeof g?"default":g;if(null!=d){e=d.toLowerCase().replace("keyboard_","");for(c=0;c<b._Keyboards.length;c++)if(e==b._Keyboards[c].KI.toLowerCase().replace("keyboard_","")){f=b._Keyboards[c];break}}if(!f)return null;e=f.KVKL;d=null;c=f.KV;"object"==typeof e&&("object"==typeof e[i]&&null!=e[i]?d=e[i]:"phone"==i&&"object"==typeof e.tablet&&null!=e.tablet?
d=e.tablet:"tablet"==i&&"object"==typeof e.phone&&null!=e.phone?d=e.phone:"object"==typeof e.desktop&&null!=e.desktop&&(d=e.desktop));null==d&&null!=c&&(d=a.buildDefaultLayout(c,i));null!=d&&(d.keyLabels="undefined"!=typeof f.KDU&&f.KDU);e=a.deviceDependentLayout(d,i);e.className=i+"-static kmw-osk-inner-frame";if(null!=d)for(var k,q,m,c=0;c<d.layer.length;c++){f=e.childNodes[c];for(q=0;q<f.childNodes.length;q++){i=f.childNodes[q];for(m=0;m<i.childNodes.length;m++)k=i.childNodes[m],k.style.height=
"100%"}f.style.display="number"==typeof g?c==g&&0<=g?"block":"none":"string"==typeof g?d.layer[c].id==g?"block":"none":0==c?"block":"none"}else e.innerHTML="<p style='color:#c40; font-size:0.5em;margin:10px;'>No "+i+" layout is defined for "+f.KN+".</p>";e.style.border="1px solid #ccc";return e};a.adjustHeights=function(){if(a._Box&&a._Box.firstChild&&a._Box.firstChild.firstChild&&a._Box.firstChild.firstChild.childNodes){var b=a._Box.firstChild.firstChild.childNodes,e=b[0].childNodes.length,h=a.getHeight(),
f=Math.floor(h/e),i,l,k,q,m,s,p,A,x,t=4;i=1;"Android"==c.OS&&"devicePixelRatio"in window&&(f/=window.devicePixelRatio);h=e*f;l=a._Box;k=l.style;k.height=k.maxHeight=h+3+"px";l=l.firstChild.firstChild;k=l.style;k.height=k.maxHeight=h+3+"px";"phone"==c.formFactor&&(t=2,i=0.6);"iOS"==c.OS&&(i/=g.getViewportScale());k.fontSize=i+"em";var n="iOS"==c.OS&&"phone"==c.formFactor&&g.landscapeView();for(i=0;i<b.length;i++){b[i].style.height=h+3+"px";for(l=0;l<e;l++){k=b[i].childNodes[l].style;k.bottom=(e-l-
1)*f+"px";k.maxHeight=k.height=f+"px";q=b[i].childNodes[l].childNodes;m=q.length;for(s=0;s<m;s++){p=q[s];for(x=0;x<p.childNodes.length&&!(0>p.childNodes[x].className.indexOf("key-label"));x++);A=p.childNodes[x].style;A.bottom=k.bottom;A.height=f-t+"px";n&&0<x&&(p.childNodes[0].style.fontSize="6px")}}}}};a.controlBar=function(){var d=g._CreateElement("DIV"),e="";d.id="keymanweb_title_bar";d.className="kmw-title-bar";d.onmousedown=a._VMoveMouseDown;b._ActiveKeyboard&&(e=b._ActiveKeyboard.KN);var c=
g._CreateElement("SPAN");c.className="kmw-title-bar-caption";c.innerHTML=e;d.appendChild(c);e=a.closeButton=g._CreateElement("DIV");e.id="kmw-close-button";e.className="kmw-title-bar-image";e.onmousedown=a._CancelMouse;e.onclick=function(){a._Hide(!0)};d.appendChild(e);e=a.helpImg=g._CreateElement("DIV");e.id="kmw-help-image";e.className="kmw-title-bar-image";e.title="KeymanWeb Help";e.onclick=function(){g.callEvent("osk.helpclick",{});window.event&&(window.event.returnValue=!1);return!1};e.onmousedown=
a._CancelMouse;d.appendChild(e);e=a.configImg=g._CreateElement("DIV");e.id="kmw-config-image";e.className="kmw-title-bar-image";e.title="KeymanWeb Configuration Options";e.onclick=function(){g.callEvent("osk.configclick",{});window.event&&(window.event.returnValue=!1);return!1};e.onmousedown=a._CancelMouse;d.appendChild(e);e=a.pinImg=g._CreateElement("DIV");e.id="kmw-pin-image";e.className="kmw-title-bar-image";e.title="Pin the On Screen Keyboard to its default location on the active text box";e.onclick=
function(){a.loadCookie();a.userPositioned=!1;a.saveCookie();a._Show();a.doResizeMove();a.pinImg&&(a.pinImg.style.display="none");window.event&&(window.event.returnValue=!1);return!1};e.onmousedown=a._CancelMouse;d.appendChild(e);return d};a.showBuild=function(){g.alert("KeymanWeb Build "+b.build+'<br /><br /><span style="font-size:0.8em">Copyright &copy; 2013 Tavultesoft Pty Ltd</span>')};a.resizeBar=function(){var b=g._CreateElement("DIV");b.className="kmw-footer";b.onmousedown=a._CancelMouse;var c=
g._CreateElement("DIV");c.className="kmw-footer-caption";c.innerHTML="Keyboard &copy; 2013 Tavultesoft Pty Ltd";c.id="keymanweb-osk-footer-caption";g.attachDOMEvent(c,"dblclick",function(b){b&&b.shiftKey&&a.showBuild()},!1);"onselectstart"in c&&(c.onselectstart=g.selectStartHandler);b.appendChild(c);c=g._CreateElement("DIV");c.className="kmw-footer-resize";c.onmousedown=a._VResizeMouseDown;c.onmouseover=c.onmouseout=a._VResizeMouseOut;b.appendChild(c);a.resizeIcon=c;return b};a._VKbdMouseOver=function(){b._IsActivatingKeymanWebUI=
1};a._VKbdMouseOut=function(){b._IsActivatingKeymanWebUI=0};a._VResizeMouseOver=a._VResizeMouseOut=function(d){d=b._GetEventObject(d);if(!d)return!1;d&&d.preventDefault&&d.preventDefault();var c=a.getRect();a.width=c.width;a.height=c.height;d.cancelBubble=!0;return!1};a._VResizeMouseDown=function(d){b._JustActivatedKeymanWebUI=1;d=b._GetEventObject(d);if(!d)return!0;a.resizing=1;var c,g;d.pageX?(c=d.pageX,g=d.pageY):d.clientX&&(c=d.clientX+document.body.scrollLeft,g=d.clientY+document.body.scrollTop);
a._ResizeMouseX=c;a._ResizeMouseY=g;document.onmousemove!=a._VResizeMouseMove&&document.onmousemove!=a._VMoveMouseMove&&(a._VPreviousMouseMove=document.onmousemove,a._VPreviousMouseUp=document.onmouseup);a._VPreviousCursor=document.body.style.cursor;a._VPreviousMouseButton="undefined"==typeof d.which?d.button:d.which;a._VOriginalWidth=a._DivVKbd.offsetWidth;a._VOriginalHeight=a._DivVKbd.offsetHeight;document.onmousemove=a._VResizeMouseMove;document.onmouseup=a._VResizeMoveMouseUp;document.body.style.cursor&&
(document.body.style.cursor="se-resize");d&&d.preventDefault&&d.preventDefault();d.cancelBubble=!0;return!1};a._VResizeMouseMove=function(d){var c,h,d=b._GetEventObject(d);if(!d)return!0;a.resizing=1;if(a._VPreviousMouseButton!=("undefined"==typeof d.which?d.button:d.which))return a._VResizeMoveMouseUp(d);d.pageX?(c=d.pageX,h=d.pageY):d.clientX&&(c=d.clientX+document.body.scrollLeft,h=d.clientY+document.body.scrollTop);c=a._VOriginalWidth+c-a._ResizeMouseX;h=a._VOriginalHeight+h-a._ResizeMouseY;c<
0.2*screen.width&&(c=0.2*screen.width);h<0.1*screen.height&&(h=0.1*screen.height);c>0.9*screen.width&&(c=0.9*screen.width);h>0.5*screen.height&&(c=0.5*screen.height);a._DivVKbd.style.width=c+"px";a._DivVKbd.style.height=h+"px";a._DivVKbd.style.fontSize=h/8+"px";g.showShim(a._DivVKbd,a.shim,a._DivVKbdHelp);d&&d.preventDefault&&d.preventDefault();d.cancelBubble=!0;return!1};a._VMoveMouseDown=function(d){var c,g;b._JustActivatedKeymanWebUI=1;d=b._GetEventObject(d);if(!d)return!0;a.resizing=1;d.pageX?
(c=d.pageX,g=d.pageY):d.clientX&&(c=d.clientX+document.body.scrollLeft,g=d.clientY+document.body.scrollTop);document.onmousemove!=a._VResizeMouseMove&&document.onmousemove!=a._VMoveMouseMove&&(a._VPreviousMouseMove=document.onmousemove,a._VPreviousMouseUp=document.onmouseup);a._VPreviousCursor=document.body.style.cursor;a._VPreviousMouseButton="undefined"==typeof d.which?d.button:d.which;a._VMoveX=c-a._Box.offsetLeft;a._VMoveY=g-a._Box.offsetTop;b.isCJK()&&(a.pinImg.style.left="15px");document.onmousemove=
a._VMoveMouseMove;document.onmouseup=a._VResizeMoveMouseUp;document.body.style.cursor&&(document.body.style.cursor="move");d&&d.preventDefault&&d.preventDefault();d.cancelBubble=!0;return!1};a._VMoveMouseMove=function(d){var c,h,d=b._GetEventObject(d);if(!d||a.noDrag)return!0;a.resizing=1;a.userPositioned=!0;a.pinImg.style.display="block";if(a._VPreviousMouseButton!=("undefined"==typeof d.which?d.button:d.which))return a._VResizeMoveMouseUp(d);d.pageX?(c=d.pageX,h=d.pageY):d.clientX&&(c=d.clientX+
document.body.scrollLeft,h=d.clientY+document.body.scrollTop);a._Box.style.left=c-a._VMoveX+"px";a._Box.style.top=h-a._VMoveY+"px";a._DivVKbd?g.showShim(a._DivVKbd,a.shim,a._DivVKbdHelp):g.showShim(a._Box,a.shim);d&&d.preventDefault&&d.preventDefault();c=a.getRect();a.width=c.width;a.height=c.height;d.cancelBubble=!0;return!1};a._VResizeMoveMouseUp=function(d){d=b._GetEventObject(d);if(!d)return!0;a.resizing=0;a.currentKey=null;document.onmousemove=a._VPreviousMouseMove;document.onmouseup=a._VPreviousMouseUp;
document.body.style.cursor&&(document.body.style.cursor=a._VPreviousCursor);b._FocusLastActiveElement();d&&d.preventDefault&&d.preventDefault();b._JustActivatedKeymanWebUI=0;b._IsActivatingKeymanWebUI=0;a._DivVKbd&&(a._VOriginalWidth=a._DivVKbd.offsetWidth,a._VOriginalHeight=a._DivVKbd.offsetHeight);a.doResizeMove();d.cancelBubble=!0;a.saveCookie();return!1};a.userLocated=function(){return a.userPositioned};a.show=function(b){0<arguments.length?(a._Enabled=b)?a._Show():a._Hide(!0):a._Visible?a._Hide(!0):
a._Show()};a.doShow=function(a){return g.callEvent("osk.show",a)};a.doHide=function(a){return g.callEvent("osk.hide",a)};a.doResizeMove=function(a){return g.callEvent("osk.resizemove",a)};a._Show=function(d,e){if(!(null==a._Box||null==b._ActiveElement))if(c.touchable||null!=b._ActiveKeyboard&&a._Enabled){var h=a._Box.style;c.touchable&&""==h.bottom&&(h.visibility="hidden");if(a.ddOSK){var f,i=-1,k=a._DivVKbd.childNodes[0].childNodes;for(f=0;f<k.length;f++)k[f].layer==a.layerId?(k[f].style.display=
"block",a.nextLayer=a.layerId,a.layerIndex=i=f,"string"==typeof a.layers[f].nextlayer&&(a.nextLayer=a.layers[f].nextlayer)):k[f].style.display="none";c.touchable&&(h.position="fixed",h.left=h.bottom="0px",h.height=h.maxHeight=a._Box.firstChild.firstChild.style.height,h.border="none",h.borderTop="1px solid gray",a._Enabled=1,a._Visible=1,a._DivVKbd.style.fontSize="phone"==c.formFactor?"120%":"Android"==c.OS&&"tablet"==c.formFactor&&300>parseInt(h.height,10)?"120%":"200%",a.lgKey=a.getSpecialKey(i,
"K_LOPT"),a.hkKey=a.getSpecialKey(i,"K_ROPT"),"iOS"==c.OS&&"phone"==c.formFactor&&a.adjustHeights());a.spaceBar=a.getSpecialKey(i,"K_SPACE")}h.display="block";a.showLanguage();if("desktop"==c.formFactor&&(h.position="absolute",h.display="block",h.left="0px",a.loadCookie(),0<=d?(h.left=d+"px",h.top=e+"px"):a.userPositioned?(h.left=a.x+"px",h.top=a.y+"px"):(f=b._ActiveElement,""!=a.dfltX?h.left=a.dfltX:"undefined"!=typeof f&&null!=f&&(h.left=g._GetAbsoluteX(f)+"px"),""!=a.dfltY)?h.top=a.dfltY:"undefined"!=
typeof f&&null!=f&&(h.top=g._GetAbsoluteY(f)+f.offsetHeight+"px"),a._Enabled=1,a._Visible=1,a._DivVKbd&&(a.width=a._DivVKbd.offsetWidth,a.height=a._DivVKbd.offsetHeight),a.saveCookie(),f=a.pinImg,"undefined"!=typeof f&&null!=f))f.style.display=a.userPositioned?"block":"none";"hidden"==h.visibility&&window.setTimeout(function(){a._Box.style.visibility="visible"},0);c.touchable||(h={},h.x=a._Box.offsetLeft,h.y=a._Box.offsetTop,h.userLocated=a.userPositioned,a.doShow(h))}};a.adjustRowLengths=function(b){if(!(0<=
b)){var e,f=a._DivVKbd.childNodes[0].childNodes;if(!(0>b||b>=f.length||f[b].aligned)&&"block"==f[b].style.display){e=a._DivVKbd.childNodes[0].offsetWidth-6;"Windows"==c.OS&&(e-=g.landscapeView()?4:40);var i,k=f[b].childNodes,l,r,q;for(i=0;i<k.length;i++)l=k[i].childNodes,r=l.length,q=l[r-2].offsetLeft+l[r-2].offsetWidth,l=l[r-1],l.style.width=e-q+"px";f[b].aligned=!0}}};a.resetRowLengths=function(){var b,c=a._DivVKbd.childNodes[0].childNodes,g=-1;for(b=0;b<c.length;b++)"block"==c[b].style.display&&
(g=b),c[b].aligned=!1;return g};a.getSpecialKey=function(b,c){var g,f;g=a._DivVKbd.childNodes[0].childNodes;if(0<=b&&b<g.length){g=g[b].childNodes;f=g[g.length-1].childNodes;for(g=0;g<f.length;g++)if(f[g].keyId==c)return f[g]}return null};a.hide=function(){a._Enabled=0;a._Hide(!0)};a._Hide=function(d){a._Box&&("block"==a._Box.style.display&&a._DivVKbd)&&(a.width=a._DivVKbd.offsetWidth,a.height=a._DivVKbd.offsetHeight);if(d)a._Enabled=b.isCJK()||c.touchable?1:0,a.saveCookie();else if("desktop"==c.formFactor&&
0<=document.body.className.indexOf("osk-always-visible"))return;a._Visible=0;if(a._Box&&c.touchable&&0<a._Box.offsetHeight){var e=a._Box.style;e.transition="string"==typeof e.MozBoxSizing?"opacity 0.8s linear":e.msTransition=e.WebkitTransition="opacity 0.5s linear 0";window.setTimeout(function(){var b=a._Box.style;if(a._Visible)b.transition=b.msTransition=b.MozTransition=b.WebkitTransition="";else{b.opacity="0";a._Box.addEventListener("transitionend",a.hideNow,false);a._Box.addEventListener("webkitTransitionEnd",
a.hideNow,false)}},200)}else a._Box&&(a._Box.style.display="none"),g.hideShim(a.shim);e={};e.HiddenByUser=d;a.doHide(e);d&&b._FocusLastActiveElement()};a.hideNow=function(){a._Box.removeEventListener("transitionend",a.hideNow,!1);a._Box.removeEventListener("webkitTransitionEnd",a.hideNow,!1);var b=a._Box.style;b.display="none";b.opacity="1";a._Visible=0;b.transition=b.msTransition=b.mozTransition=b.WebkitTransition="";a.hkKey&&"undefined"!=typeof a.hkKey&&a.highlightKey(a.hkKey.firstChild,!1)};a.prepare=
function(){b.initialized?(a.ready||(a._Box=g._CreateElement("DIV"),document.body.appendChild(a._Box),g.linkStyleSheet(b.getStyleSheetPath("kmwosk.css")),g.attachDOMEvent(a._Box,"mousedown",function(){b._IsActivatingKeymanWebUI=1}),c.touchable&&(g.attachDOMEvent(a._Box,"touchstart",function(a){b._IsActivatingKeymanWebUI=1;a.preventDefault();a.stopPropagation()}),g.attachDOMEvent(a._Box,"touchend",function(a){a.preventDefault();a.stopPropagation()}),g.attachDOMEvent(a._Box,"touchmove",function(a){a.preventDefault();
a.stopPropagation()}),g.attachDOMEvent(a._Box,"touchcancel",function(a){a.preventDefault();a.stopPropagation()}),a.vpScale=g.getViewportScale())),a.loadCookie(),a.ready=!0):window.setTimeout(a.prepare,200)};a._Load=function(){if(null==a._Box)99<=a.loadRetry||(window.setTimeout(a._Load,100),a.loadRetry++);else{a.loadRetry=0;b._TitleElement&&(b._TitleElement.innerHTML="Tavultesoft KeymanWeb");a._Visible=0;a.layerId="default";var d=a._Box.style;d.zIndex="9999";d.display="none";d.width="auto";d.position=
"desktop"==c.formFactor?"absolute":"fixed";"phone"==c.formFactor&&(d.fontSize="1.6em");a._DivVKbd=a._DivVKbdHelp=null;a._Box.innerHTML="";a._Box.onmouseover=a._VKbdMouseOver;a._Box.onmouseout=a._VKbdMouseOut;if(null==b._ActiveKeyboard&&!c.touchable){var e=g._CreateElement("DIV");e.className="kmw-title-bar";e.appendChild(a._TitleBarInterior());e.onmousedown=a._VMoveMouseDown;a._Box.appendChild(e);e=g._CreateElement("DIV");e.className="kmw-osk-none";a._Box.appendChild(e)}else{var f=e=null,i=null,d=
"";a._Box.className="";if(null!=b._ActiveKeyboard&&(e=b._ActiveKeyboard.KV,d=b._ActiveKeyboard.KH,f=b._ActiveKeyboard.KVKL,"undefined"!=typeof f&&null!=f&&(i=f[c.formFactor],"undefined"==typeof i||null==i)))if("phone"==c.formFactor?i=f.tablet:"tablet"==c.formFactor&&(i=f.phone),"undefined"==typeof i||null==i)i=f.desktop;if(null!=e&&null!=e.BK){for(var f=e.BK,k=!0,l=0;l<f.length;l++)if(0<f[l].length){k=!1;break}k&&(e=null)}null!=e||""==d||c.touchable?(null==e&&(e={F:"Tahoma",BK:"`1234567890-=\u00a7~~qwertyuiop[]\\~~~asdfghjkl;'~~~~~?zxcvbnm,./~~~~~ ~!@#$%^&*()_+\u00a7~~QWERTYUIOP{}\\~~~ASDFGHJKL:\"~~~~~?ZXCVBNM<>?~~~~~ "}),
a._GenerateVisualKeyboard(e,d,i)):(a.ddOSK=!1,e=g._CreateElement("DIV"),e.className="kmw-title-bar",e.appendChild(a._TitleBarInterior()),e.onmousedown=a._VMoveMouseDown,a._Box.appendChild(e),e=g._CreateElement("DIV"),e.className="kmw-osk-static",e.innerHTML=d,a._Box.appendChild(e),b._ActiveKeyboard.KHF&&b._ActiveKeyboard.KHF(a._Box));b._TitleElement&&(b._TitleElement.innerHTML="<span style='font-weight:bold'>"+b._ActiveKeyboard.KN+"</span> - "+b._TitleElement.innerHTML,b._TitleElement.className="",
b._TitleElement.style.color="#fff")}a.createKeyTip();d=a._Box.firstChild;e=" kmw-keyboard-"+(b._ActiveKeyboard?b._ActiveKeyboard.KI.replace("Keyboard_",""):"");"keymanweb_title_bar"==d.id&&(d=d.nextSibling);d.className="kmw-osk-inner-frame"+e;a.appendStyleSheet();a._Enabled&&a._Show()}};a.appendStyleSheet=function(){if(null!=b._ActiveStub){a.styleSheet&&g.removeStyleSheet(a.styleSheet);var d=b._ActiveStub,c=d.KFont,d=d.KOskFont;g.addFontFaceStyleSheet(c);g.addFontFaceStyleSheet(d);b.alignInputs(!1);
var f=a.addFontStyle(c,d);null!=b._ActiveKeyboard&&"string"==typeof b._ActiveKeyboard.KCSS&&(f+=b._ActiveKeyboard.KCSS);a.styleSheet=g.addStyleSheet(f);a.waitForFonts(c,d)&&b.alignInputs(!0)}};a.addFontStyle=function(a,c){var g=b.baseFont;"undefined"!=typeof a&&"undefined"!=typeof a.family&&(g=a.family);var f=b.appliedFont,f=f.replace(RegExp("s?"+g+",?"),""),f=f.replace(/,$/,""),f=""==f?g:g+","+f,g=".keymanweb-font{\nfont-family:"+f+" !important;\n}\n";"undefined"!=typeof c?g=g+".kmw-key-text{\nfont-family:"+
c.family+";\n}\n":"undefined"!=typeof a&&(g=g+".kmw-key-text{\nfont-family:"+a.family+";\n}\n");b.appliedFont=f;return g};a._Unload=function(){a._VShift=a._DivVKbd=a._VKeySpans=a._Box=0};a.saveCookie=function(){var b=g.loadCookie("KeymanWeb_OnScreenKeyboard"),c=a.getPos();b.visible=a._Enabled?1:0;b.userSet=a.userPositioned?1:0;b.left=c.left;b.top=c.top;a._DivVKbd&&(b.width=a.width,b.height=a.height);g.saveCookie("KeymanWeb_OnScreenKeyboard",b)};a.loadCookie=function(){var b=g.loadCookie("KeymanWeb_OnScreenKeyboard");
if("undefined"==typeof b||null==b)return a.userPositioned=!1;a._Enabled=g.toNumber(b.visible,!0);a.userPositioned=g.toNumber(b.userSet,!1);a.x=g.toNumber(b.left,-1);a.y=g.toNumber(b.top,-1);var c=g.toNumber(b.width,0.3*screen.width),b=g.toNumber(b.height,0.15*screen.height);c<0.2*screen.width&&(c=0.2*screen.width);b<0.1*screen.height&&(b=0.1*screen.height);c>0.9*screen.width&&(c=0.9*screen.width);b>0.5*screen.height&&(c=0.5*screen.height);a._DivVKbd&&(a._DivVKbd.style.width=c+"px",a._DivVKbd.style.height=
b+"px",a._DivVKbd.style.fontSize=b/8+"px");if(-1==a.x||-1==a.y||!a._Box)a.userPositioned=!1;a.x<window.pageXOffset-0.8*c&&(a.x=window.pageXOffset-0.8*c);0>a.y&&(a.x=-1,a.y=-1,a.userPositioned=!1);a.userPositioned&&a._Box&&a.setPos({left:a.x,top:a.y});return!0};b.executePopupKey=function(c){if(!b._ActiveKeyboard)return!1;var c=c.replace("popup-",""),c=c.split("-"),e=1<c.length?c[0]:a.layerId,c=c[c.length-1];"undefined"==e&&(e=a.layerId);var g=b._LastActiveElement,j,e=a.getModifierState(e);null==b._ActiveElement&&
(b._ActiveElement=g);switch(c){case "K_LSHIFT":case "K_RSHIFT":case "K_SHIFT":return a.updateLayer("shift"),a._Show(),!0;case "K_LCONTROL":case "K_RCONTROL":case "K_LCTRL":case "K_RCTRL":case "K_CTRL":return a.updateLayer("ctrl"),a._Show(),!0;case "K_LMENU":case "K_RMENU":case "K_LALT":case "K_RALT":case "K_ALT":return a.updateLayer("alt"),a._Show(),!0;case "K_ALTGR":return a.updateLayer("ctrlalt"),a._Show(),!0}j={Ltarg:g,Lmodifiers:0,Lcode:f[c],LisVirtualKey:!0};"undefined"==typeof j.Lcode&&(j.Lcode=
a.getVKDictionaryCode(c));if(!j.Lcode&&"U_"==c.substr(0,2)){var k=parseInt(c.substr(2),16);isNaN(k)||(j.Lcode=k)}if(isNaN(j.Lcode)||!j.Lcode)return!1;j.vkCode=j.Lcode;"U_"==c.substr(0,2)&&(j.isVirtualKey=!1);j.Lmodifiers=16*e;if(!b._ActiveKeyboard||0==j.Lcode)return!1;if(b._ActiveKeyboard.gs(g,j))return!0;k=0;j=j.Lcode;"U_"==c.substr(0,2)&&32<j&&!(127<j&&!1>j)?k=String.fromCharCode(j):48<=j&&57>=j?k=i[e][0][j-48]:65<=j&&90>=j?k=String.fromCharCode(j+(e?0:32)):186<=j&&192>=j?k=i[e][1][j-186]:219<=
j&&222>=j&&(k=i[e][2][j-219]);k&&b.KO(0,g,k);return!0};b.touchMenuPos=function(){if(null==a.lgKey)return"";var b=g._GetAbsoluteX(a.lgKey)-g._GetAbsoluteX(a._DivVKbd)+a.lgKey.offsetWidth/2,c=g._GetAbsoluteY(a.lgKey)-g._GetAbsoluteY(a._DivVKbd);return b+","+c}})();(function(){var b=window.tavultesoft.keymanweb,f=b.osk,i=b.util,k=i.device;b.fullInitialization=!0;b.setDefaultDeviceOptions=function(a){""==a.attachType&&(a.attachType=k.touchable?"manual":"auto")};i.wait=function(a){var g=b.waiting;if(!("undefined"==typeof g||null==g||b.warned)){var c=g.firstChild.childNodes;a?(g.pending=!0,window.setTimeout(function(){g.pending&&(window.scrollTo(0,0),c[0].style.display="none",c[1].className="kmw-wait-text",c[1].innerHTML=a,c[2].style.display="block",g.style.display=
j&&222>=j&&(k=i[e][2][j-219]);k&&b.KO(0,g,k);return!0}})();(function(){var b=window.tavultesoft.keymanweb,f=b.osk,i=b.util,k=i.device;b.fullInitialization=!0;b.setDefaultDeviceOptions=function(a){""==a.attachType&&(a.attachType=k.touchable?"manual":"auto")};i.wait=function(a){var g=b.waiting;if(!("undefined"==typeof g||null==g||b.warned)){var c=g.firstChild.childNodes;a?(g.pending=!0,window.setTimeout(function(){g.pending&&(window.scrollTo(0,0),c[0].style.display="none",c[1].className="kmw-wait-text",c[1].innerHTML=a,c[2].style.display="block",g.style.display=
"block")},1E3)):g.pending&&(c[1].innerHTML="",g.pending=!1,g.style.display="none")}};b.getStyleSheetPath=function(a){return i.getOption("resources")+"osk/"+a};b.getKeyboardPath=function(a){return(/^(([.]\/)|([.][.]\/)|(\/))|(:)/.test(a)?"":b.options.keyboards)+a};b.keyboardUnavailable=function(a){return window.setTimeout(function(){i.wait(!1);var g=b._KeyboardStubs[a],c=g.KN,g=g.KL,c=c.replace(/\s*keyboard\s*/i,"");i.alert("Sorry, the "+c+" keyboard for "+g+" is not currently available!",b.setDfltKeyboard);
0<a&&(g=b._KeyboardStubs[0],b._SetActiveKeyboard(g.KI,g.KLC,!0))},1E4)};b.KC_=function(a,g,c){var d,e=c.body?c:c.ownerDocument;if(k.touchable)return b.getTextBeforeCaret(c)._kmwSubstr(-a)._kmwSubstr(0,g);if(b.legacy)return c.value._kmwSubstr(c.length-a,g);if(e&&(d=e.defaultView)&&d.getSelection&&("on"==e.designMode.toLowerCase()||"true"==c.contentEditable||"plaintext-only"==c.contentEditable||""===c.contentEditable)){if(c=d.getSelection(),3==c.focusNode.nodeType)return c.focusOffset>2*a?c.focusNode.substringData(c.focusOffset-
2*a,2*a)._kmwSubstr(-a)._kmwSubstr(0,g):c.focusNode.substringData(0,c.focusOffset)._kmwSubstr(-a)._kmwSubstr(0,g)}else{if(c.setSelectionRange){if(c._KeymanWebSelectionStart)d=c._KeymanWebSelectionStart;else{if(null===b._CachedSelectionStart||c.selectionStart!==b._LastCachedSelection)b._LastCachedSelection=c.selectionStart,b._CachedSelectionStart=c.value._kmwCodeUnitToCodePoint(c.selectionStart),b._CachedSelectionEnd=c.value._kmwCodeUnitToCodePoint(c.selectionEnd);d=b._CachedSelectionStart}return d<
a?c.value._kmwSubstr(0,d):c.value._kmwSubstring(d-a,d-a+g)}if(e&&(d=e.selection))return c=d.createRange(),c.moveStart("character",-2*a),c.text._kmwSubstr(-a)._kmwSubstring(0,g)}return""};b.alignInputs=function(a){if(k.touchable)for(var g=0;g<b.inputList.length;g++)a?(b.updateInput(b.inputList[g]),b.inputList[g].style.visibility="visible",0<b.inputList[g].base.textContent.length&&(b.inputList[g].base.style.visibility="hidden")):(b.inputList[g].style.visibility="hidden",b.inputList[g].base.style.visibility=
"visible")};f.highlightSubKeys=function(a,b,c){if(null!=a.subKeys){var d,e,h,j,k,l,n,q;h=document.getElementById("kmw-popup-keys");5<f.touchY-c&&null==h&&(f.subkeyDelayTimer&&window.clearTimeout(f.subkeyDelayTimer),f.showSubKeys(a),h=document.getElementById("kmw-popup-keys"));for(d=0;d<a.subKeys.length;d++)try{e=h.childNodes[d].firstChild,j=i._GetAbsoluteX(e),k=i._GetAbsoluteY(e),l=j+e.offsetWidth,n=k+e.offsetHeight,q=b>j&&b<l&&c>k&&c<n,f.highlightKey(e,q),q&&f.highlightKey(a,!1)}catch(m){}}};f.createKeyTip=
"visible")};f.highlightSubKeys=function(a,b,c){if(null!=a.subKeys){var d,e,h,j,k,l,r,q;h=document.getElementById("kmw-popup-keys");5<f.touchY-c&&null==h&&(f.subkeyDelayTimer&&window.clearTimeout(f.subkeyDelayTimer),f.showSubKeys(a),h=document.getElementById("kmw-popup-keys"));for(d=0;d<a.subKeys.length;d++)try{e=h.childNodes[d].firstChild,j=i._GetAbsoluteX(e),k=i._GetAbsoluteY(e),l=j+e.offsetWidth,r=k+e.offsetHeight,q=b>j&&b<l&&c>k&&c<r,f.highlightKey(e,q),q&&f.highlightKey(a,!1)}catch(m){}}};f.createKeyTip=
function(){"phone"==k.formFactor&&(null==f.keytip&&(f.keytip=i._CreateElement("DIV"),f.keytip.className="kmw-keytip"),f._Box.appendChild(f.keytip))};f.optionKey=function(a,g,c){c&&(0<=g.indexOf("K_LOPT")?f.showLanguageMenu():0<=g.indexOf("K_ROPT")&&(b._IsActivatingKeymanWebUI=0,f._Hide(!0),b.hideCaret(),b._LastActiveElement=0))};f.showKeyTip=function(a,b){if(null!=f.keytip)if(b){if(0<a.className.indexOf("kmw-key-default")&&0>a.id.indexOf("K_SPACE")&&0>a.id.indexOf("popup")){var c=a.firstChild,d=f.keytip,
e=d.style;d.textContent=c.textContent;e.fontFamily=i.getStyleValue(c,"font-family");var h=i.getStyleInt(c,"font-size");0!=h&&(e.fontSize=1.5*h+"px");h=i._GetAbsoluteX(a);i._GetAbsoluteY(a);var j=a.offsetWidth,k=1.5*c.offsetWidth+i.getStyleInt(d,"padding-left")+i.getStyleInt(d,"padding-right"),l=i.getStyleInt(a,"margin-right"),c=1.5*c.offsetHeight+i.getStyleInt(d,"padding-top")+i.getStyleInt(d,"padding-bottom"),d=i.getStyleInt(a,"margin-top");e.left=h-l+(j-k)/2+"px";e.top=i._GetAbsoluteY(a)-d-f._Box.offsetTop-
c+"px";e.display="block"}}else f.keytip.style.display="none"};b.handleRotationEvents=function(){"iOS"==k.OS&&i.attachDOMEvent(window,"orientationchange",b.rotateDevice);"Android"==k.OS&&(f.wasVisible=f.isVisible,"onmozorientationchange"in screen?i.attachDOMEvent(screen,"mozorientationchange",f.hideNow):i.attachDOMEvent(window,"orientationchange",f.hideNow),i.attachDOMEvent(window,"resize",function(){b.alignInputs(!0);f.hideLanguageList();f._Load();f.wasVisible&&f._Show()}))};b.rotateDevice=function(){f.hideLanguageList();
@ -244,7 +244,7 @@ a+1};b.KCM=b.KCM=function(a,b,c,d){a=this.KC(a,d,b);if(!1!==a&&a===c)return!0;th
b.code=a.Lcode;b.modifiers=a.Lmodifiers;return b};b.KDM=b.KDM=function(a,g,c){if(0==b._DeadKeys.length)return!1;a=b._SelPos(g)-a;for(g=0;g<b._DeadKeys.length;g++)if(b._DeadKeys[g].p==a&&b._DeadKeys[g].d==c)return b._DeadKeys[g].matched=1;this._DeadkeyResetMatched();return!1};b.KBR=b.KBR=function(){b.cachedContext.reset();var a;for(a=b._BeepTimeout=0;a<b._BeepObjects.length;a++)b._BeepObjects[a].e.style.backgroundColor=b._BeepObjects[a].c;b._BeepObjects=[]};b.KB=b.KB=function(a){b.cachedContext.reset();
a.body&&(a=a.body);if(a.style&&"undefined"!=typeof a.style.backgroundColor){for(var g=0;g<b._BeepObjects.length;g++)if(b._BeepObjects[g].e==a)return;b._BeepObjects=b._push(b._BeepObjects,{e:a,c:a.style.backgroundColor});a.style.backgroundColor="#000000";0==b._BeepTimeout&&(b._BeepTimeout=1,window.setTimeout(b.KBR,50))}};b.KA=b.KA=function(a,g,c){if(""==g)return 0;g=c._kmwIndexOf(g);b._AnyIndices[a]=g;return 0<=g};b.KO=b.KO=function(a,g,c){b.cachedContext.reset();if("oninserttext"in b)b.oninserttext(a,
c);var d=g.body?g:g.ownerDocument,e;if(0<=g.className.indexOf("keymanweb-input")){var f=b.getTextBeforeCaret(g),f=0<a?f._kmwSubstr(0,f._kmwLength()-a)+c:f+c;b.setTextBeforeCaret(g,f)}else{if(b.legacy)g.value=0<a?g.value._kmwSubstr(0,g.value._kmwLength()-a)+c:g.value+c;else if(d&&(e=d.defaultView)&&e.getSelection&&("on"==d.designMode.toLowerCase()||"true"==g.contentEditable||"plaintext-only"==g.contentEditable||""===g.contentEditable)){var i="on"==d.designMode.toLowerCase();if(i)var k=b._CacheCommands(d);
e=e.getSelection();f=e.focusNode.nodeValue?e.focusNode.substringData(0,e.focusOffset)._kmwLength():0;e.isCollapsed||e.deleteFromDocument();var l=e.getRangeAt(0);0<a&&(l.setStart(e.focusNode,e.focusOffset-e.focusNode.nodeValue.substr(0,e.focusOffset)._kmwSubstr(-a).length),l.deleteContents());if(0<c._kmwLength())if(3==e.focusNode.nodeType){l=e.focusOffset;e.focusNode.insertData(e.focusOffset,c);try{e.extend(e.focusNode,l+c.length)}catch(n){e.focusNode.parentNode.scrollIntoView(),e.extend(e.focusNode,
e=e.getSelection();f=e.focusNode.nodeValue?e.focusNode.substringData(0,e.focusOffset)._kmwLength():0;e.isCollapsed||e.deleteFromDocument();var l=e.getRangeAt(0);0<a&&(l.setStart(e.focusNode,e.focusOffset-e.focusNode.nodeValue.substr(0,e.focusOffset)._kmwSubstr(-a).length),l.deleteContents());if(0<c._kmwLength())if(3==e.focusNode.nodeType){l=e.focusOffset;e.focusNode.insertData(e.focusOffset,c);try{e.extend(e.focusNode,l+c.length)}catch(r){e.focusNode.parentNode.scrollIntoView(),e.extend(e.focusNode,
l+c.length)}}else{var q=d.createTextNode(c);l.insertNode(q);e.extend(q,c.length)}i&&b._CacheCommandsReset(d,k,null);e.collapseToEnd();0<=a&&(b._DeadkeyDeleteMatched(),b._DeadkeyAdjustPos(f,-a+c._kmwLength()))}else if(d&&(e=d.selection)){if(d.body.isContentEditable||"on"==d.designMode.toLowerCase())k=b._CacheCommands(d);l=e.createRange();""!=l.text?(e.clear(),a=0):l.collapse(!0);0<a?(l.moveStart("character",-2*a),i=l.text._kmwSubstr(-a),l.collapse(!1),l.moveStart("character",-i.length)):a=0;l.text=
c;if(d.body.isContentEditable||"on"==d.designMode.toLowerCase())l.moveStart("character",-c.length),b._CacheCommandsReset(d,k,l.select),l.moveStart("character",c.length),l.select();0<=a&&(b._DeadkeyDeleteMatched(),b._DeadkeyAdjustPos(f,-a+c._kmwLength()));b._Selection=e.createRange();b._Selection.select();b._Selection.scrollIntoView()}else g.setSelectionRange&&(null!=g._KeymanWebSelectionStart?(f=g._KeymanWebSelectionStart,d=g._KeymanWebSelectionEnd):(f=g.value._kmwCodeUnitToCodePoint(g.selectionStart),
d=g.value._kmwCodeUnitToCodePoint(g.selectionEnd)),"textarea"==g.type.toLowerCase()&&"undefined"!=typeof g.scrollTop&&(i=g.scrollTop,l=g.scrollLeft),0>a?(g.value=g.value._kmwSubstring(0,f)+c+g.value._kmwSubstring(d),a=0):g.value=f<a?c+g.value._kmwSubstring(d):g.value._kmwSubstring(0,f-a)+c+g.value._kmwSubstring(d),0<=a&&(b._DeadkeyDeleteMatched(),b._DeadkeyAdjustPos(f,-a+c._kmwLength())),"undefined"!=typeof i&&(g.scrollTop=i,g.scrollLeft=l),a=f-a+c._kmwLength(),a=g.value._kmwCodePointToCodeUnit(a),

View file

@ -197,3 +197,38 @@ body div.kmw-key-shift-on span.kmw-key-text {font-family:SpecialOSK !important;f
.kmw-alert-text{margin:10px;white-space:default;font-family:Arial,sans-serif;}
.kmw-spacebar-caption{font:0.6em Arial !important;color:rgba(0,0,0,0.15);}
/* Static styles */
.desktop-static.kmw-osk-inner-frame{margin:0;background-color:#666;border:2px solid #ad4a28;box-sizing:border-box;-moz-box-sizing:border-box;}
.desktop-static .kmw-key-layer-group{width:100%;height:100%;margin:0;padding:0;border:none;background:transparent;}
.desktop-static .kmw-key-layer{width:100%;height:100%;margin:0;padding:0;background-color:transparent;overflow:hidden;}
.desktop-static .kmw-key-row{position:static;width:100%;height:20%;margin:0;padding:0;border:none;overflow:hidden;}
.desktop-static .kmw-key-square{position:relative;height:100%;display:inline-block;float:left;margin:0 0 0 5px;z-index:10000; font-size:0.8em;overflow:hidden;
padding:1px 0 1px 0;background-color:transparent;cursor:default;box-sizing:border-box;-moz-box-sizing:border-box;border:solid 1px transparent}
.desktop-static .kmw-key {display:block;margin:0;border-radius:6px;text-align:center;box-sizing:border-box;-moz-box-sizing:border-box;
overflow:hidden;width:100%;height:100%;}
.desktop-static .kmw-key-label{position:absolute;left:2px;top:2px;font:0.5em Arial;color:#888;background-color:transparent;}
.desktop-static .kmw-key-text{position:relative;left:2px;top:2px;}
.phone-static.kmw-osk-inner-frame{margin:0;background-color:#666;border:2px solid #ad4a28;box-sizing:border-box;-moz-box-sizing:border-box;}
.phone-static .kmw-key-layer-group{width:100%;height:100%;margin:0;padding:0;border:none;background:transparent;}
.phone-static .kmw-key-layer{width:100%;height:100%;margin:0;padding:0;background-color:transparent;overflow:hidden;}
.phone-static .kmw-key-row{position:relative;width:100%;height:20%;margin:0;padding:0;border:none;overflow:hidden;}
.phone-static .kmw-key-square{position:absolute;height:100%;display:inline-block;float:left;margin:0 0 0 5px;z-index:10000; font-size:0.8em;overflow:hidden;
padding:1px 0 1px 0;background-color:transparent;cursor:default;box-sizing:border-box;-moz-box-sizing:border-box;}
.phone-static .kmw-key {display:block;margin:0;border-radius:6px;text-align:center;box-sizing:border-box;-moz-box-sizing:border-box;
overflow:hidden;width:100%;height:100%;}
.phone-static .kmw-key-label{position:absolute;left:2px;top:2px;font:0.5em Arial;color:#888;background-color:transparent;}
.phone-static .kmw-key-text{position:relative;left:2px;top:2px;}
.tablet-static.kmw-osk-inner-frame{margin:0;background-color:#666;border:2px solid #ad4a28;box-sizing:border-box;-moz-box-sizing:border-box;}
.tablet-static .kmw-key-layer-group{width:100%;height:100%;margin:0;padding:0;border:none;background:transparent;}
.tablet-static .kmw-key-layer{width:100%;height:100%;margin:0;padding:0;background-color:transparent;overflow:hidden;}
.tablet-static .kmw-key-row{position:relative;width:100%;height:20%;margin:0;padding:0;border:none;overflow:hidden;}
.tablet-static .kmw-key-square{position:absolute;height:100%;display:inline-block;float:left;margin:0 0 0 5px;z-index:10000; font-size:0.8em;overflow:hidden;
padding:1px 0 1px 0;background-color:transparent;cursor:default;box-sizing:border-box;-moz-box-sizing:border-box;}
.tablet-static .kmw-key {display:block;margin:0;border-radius:6px;text-align:center;box-sizing:border-box;-moz-box-sizing:border-box;
overflow:hidden;width:100%;height:100%;}
.tablet-static .kmw-key-label{position:absolute;left:2px;top:2px;font:0.5em Arial;color:#888;background-color:transparent;}
.tablet-static .kmw-key-text{position:relative;left:2px;top:2px;}

View file

@ -1864,7 +1864,7 @@
osk.setButtonClass(key,btn,layout);
// Set distinct phone and tablet button position properties
if(device.touchable)
if(formFactor != 'desktop')
{
btn.style.left=ks.left;
btn.style.width=ks.width;