if(function(n){typeof define=="function"&&define.amd?define(["jquery"],n):typeof module=="object"&&typeof module.exports=="object"?module.exports=n(require("jquery")):n(jQuery)}(function(n){"use strict";var t=n.keyboard=function(i,r){var u=this,f;u.version="1.25.5";u.$el=n(i);u.el=i;u.$el.data("keyboard",u);u.init=function(){var e,i=t.css,o;u.settings=r||{};r&&r.position&&(e=n.extend({},r.position),r.position=null);u.options=f=n.extend(!0,{},t.defaultOptions,r);e&&(f.position=e,r.position=e);u.el.active=!0;u.namespace=".keyboard"+Math.random().toString(16).slice(2);u.extensionNamespace=[];u.shiftActive=u.altActive=u.metaActive=u.sets=u.capsLock=!1;u.rows=["","-shift","-alt","-alt-shift"];u.inPlaceholder=u.$el.attr("placeholder")||"";u.watermark=t.watermark&&u.inPlaceholder!=="";u.repeatTime=1e3/(f.repeatRate||20);f.preventDoubleEventTime=f.preventDoubleEventTime||100;u.isOpen=!1;u.wheel=n.isFunction(n.fn.mousewheel);u.alwaysAllowed=[20,33,34,35,36,37,38,39,40,45,46];u.$keyboard=[];u.enabled=!0;n.isEmptyObject(f.position)||(f.position.orig_at=f.position.at);u.checkCaret=f.lockInput||t.checkCaretSupport();u.last={start:0,end:0,key:"",val:"",layout:"",virtual:!0,keyset:[!1,!1,!1],wheel_$Keys:null,wheelIndex:0,wheelLayers:[]};u.temp=["",0,0];n.each("initialized beforeVisible visible hidden canceled accepted beforeClose".split(" "),function(t,i){n.isFunction(f[i])&&u.$el.bind(i+u.namespace,f[i])});f.alwaysOpen&&(f.stayOpen=!0);o=function(t){var f,r;u.opening||(u.escClose(t),f=n(t.target),f.hasClass(i.input)&&(r=f.data("keyboard"),r!==u||r.$el.hasClass(i.isCurrent)||t.type!==r.options.openOn||r.focusOn()))};n(document).bind("mousedown keyup touchstart checkkeyboard ".split(" ").join(u.namespace+" "),o);u.el.ownerDocument!==document&&n(u.el.ownerDocument).bind("mousedown keyup touchstart checkkeyboard ".split(" ").join(u.namespace+" "),o);u.$el.addClass(i.input+" "+f.css.input).attr({"aria-haspopup":"true",role:"textbox"});(u.$el.is(":disabled")||u.$el.attr("readonly")&&!u.$el.hasClass(i.locked))&&u.$el.addClass(i.noKeyboard);f.openOn&&u.$el.bind(f.openOn+u.namespace,function(){u.focusOn()});u.watermark||u.$el.val()!==""||u.inPlaceholder===""||u.$el.attr("placeholder")===""||u.$el.addClass(i.placeholder).val(u.inPlaceholder);u.$el.trigger(t.events.kbInit,[u,u.el]);f.alwaysOpen&&u.reveal()};u.toggle=function(){var i=u.$keyboard.find("."+t.css.keyToggle),n=!u.enabled;u.$preview.prop("readonly",n||u.options.lockInput);u.$keyboard.toggleClass(t.css.keyDisabled,n).find("."+t.css.keyButton).not(i).prop("disabled",n).attr("aria-disabled",n);i.toggleClass(t.css.keyDisabled,n);n&&u.typing_options&&(u.typing_options.text="")};u.setCurrent=function(){var i=t.css;n("."+i.hasFocus).removeClass(i.hasFocus);n("."+i.isCurrent).removeClass(i.isCurrent);u.$el.addClass(i.isCurrent);u.$keyboard.addClass(i.hasFocus);u.isCurrent(!0);u.isOpen=!0};u.isCurrent=function(n){var i=t.currentKeyboard||!1;return n?i=t.currentKeyboard=u.el:n===!1&&i===u.el&&(i=t.currentKeyboard=""),i===u.el};u.isVisible=function(){return u.$keyboard&&u.$keyboard.length?u.$keyboard.is(":visible"):!1};u.focusOn=function(){(u||!u.el.active)&&(u.$el.is(":visible")&&(u.timer2=setTimeout(function(){var n;/(number|email)/i.test(u.el.type)||f.caretToEnd||u.saveCaret(n,n,u.$el)},20)),u.isVisible()||(clearTimeout(u.timer),u.reveal()),f.alwaysOpen&&u.setCurrent())};u.reveal=function(i){u.isOpen&&(i=!0);var r=t.css;if(u.opening=!0,n("."+r.keyboard).not("."+r.alwaysOpen).remove(),i&&(u.isOpen=!1,u.last.val=u.$preview&&u.$preview.val()||"",u.$keyboard.length&&(u.$keyboard.remove(),u.$keyboard=[],u.shiftActive=u.altActive=u.metaActive=!1)),u.$el.is(":disabled")||u.$el.attr("readonly")&&!u.$el.hasClass(r.locked)){u.$el.addClass(r.noKeyboard);return}return u.$el.removeClass(r.noKeyboard),f.openOn&&u.$el.unbind(f.openOn+u.namespace),(!u.$keyboard||u.$keyboard&&(!u.$keyboard.length||n.contains(document.body,u.$keyboard[0])))&&u.startup(),u.watermark||u.el.value!==u.inPlaceholder||u.$el.removeClass(r.placeholder).val(""),u.originalContent=u.$el.val(),u.$preview.val(i?u.last.val:u.originalContent),f.acceptValid&&u.checkValid(),f.resetDefault&&(u.shiftActive=u.altActive=u.metaActive=!1),u.showSet(),u.$el.trigger(t.events.kbBeforeVisible,[u,u.el]),u.setCurrent(),u.toggle(),u.$keyboard.show(),f.usePreview&&t.msie&&(typeof u.width=="undefined"&&(u.$preview.hide(),u.width=Math.ceil(u.$keyboard.width()),u.$preview.show()),u.$preview.width(u.width)),u.position=n.isEmptyObject(f.position)?!1:f.position,n.ui&&n.ui.position&&u.position&&(u.position.of=u.position.of||u.$el.data("keyboardPosition")||u.$el,u.position.collision=u.position.collision||"flipfit flipfit",f.position.at=f.usePreview?f.position.orig_at:f.position.at2,u.$keyboard.position(u.position)),u.checkDecimal(),u.lineHeight=parseInt(u.$preview.css("lineHeight"),10)||parseInt(u.$preview.css("font-size"),10)+4,f.caretToEnd&&u.saveCaret(u.originalContent.length,u.originalContent.length),t.allie&&(u.last.end===0&&u.last.start>0&&(u.last.end=u.last.start),u.last.start<0&&(u.last.start=u.last.end=u.originalContent.length)),u.timer2=setTimeout(function(){u.opening=!1;f.initialFocus&&t.caret(u.$preview,u.last);u.last.eventTime=(new Date).getTime();u.$el.trigger(t.events.kbVisible,[u,u.el]);u.timer=setTimeout(function(){u&&u.saveCaret()},200)},10),u};u.updateLanguage=function(){var e=t.layouts,i=f.language||e[f.layout]&&e[f.layout].lang&&e[f.layout].lang||[f.language||"en"],r=t.language;i=(n.isArray(i)?i[0]:i).split("-")[0];f.display=n.extend(!0,{},r.en.display,r[i]&&r[i].display||{},u.settings.display);f.combos=n.extend(!0,{},r.en.combos,r[i]&&r[i].combos||{},u.settings.combos);f.wheelMessage=r[i]&&r[i].wheelMessage||r.en.wheelMessage;f.rtl=e[f.layout]&&e[f.layout].rtl||r[i]&&r[i].rtl||!1;u.regex=r[i]&&r[i].comboRegex||t.comboRegex;u.decimal=/^\./.test(f.display.dec);u.$el.toggleClass("rtl",f.rtl).css("direction",f.rtl?"rtl":"")};u.startup=function(){var i=t.css;u.$preview=u.$el;u.$keyboard&&u.$keyboard.length||(f.layout==="custom"&&(f.layoutHash="custom"+u.customHash()),u.layout=f.layout==="custom"?f.layoutHash:f.layout,u.last.layout=u.layout,u.updateLanguage(),typeof t.builtLayouts[u.layout]=="undefined"&&(n.isFunction(f.create)?u.$keyboard=f.create(u):u.$keyboard.length||u.buildKeyboard(u.layout,!0)),u.$keyboard=t.builtLayouts[u.layout].$keyboard.clone(),u.$keyboard.data("keyboard",u),(u.el.id||"")!==""&&u.$keyboard.attr("id",u.el.id+t.css.idSuffix),f.usePreview?(n.isEmptyObject(f.position)||(f.position.at=f.position.orig_at),u.$preview=u.$el.clone(!1).removeAttr("id").data("keyboard",u).removeClass(i.placeholder+" "+i.input).addClass(i.preview+" "+f.css.input).removeAttr("aria-haspopup").attr("tabindex","-1").show(),u.$preview.attr("type")=="number"&&u.$preview.attr("type","text"),n("<div />").addClass(i.wrapper).append(u.$preview).prependTo(u.$keyboard)):n.isEmptyObject(f.position)||(f.position.at=f.position.at2));u.preview=u.$preview[0];u.$decBtn=u.$keyboard.find("."+i.keyPrefix+"dec");(f.enterNavigation||u.el.nodeName==="TEXTAREA")&&u.alwaysAllowed.push(13);f.lockInput&&u.$preview.addClass(i.locked).attr({readonly:"readonly"});u.bindKeyboard();u.$keyboard.appendTo(f.appendLocally?u.$el.parent():f.appendTo||"body");u.bindKeys();f.reposition&&n.ui&&n.ui.position&&f.appendTo=="body"&&n(window).bind("resize"+u.namespace,function(){u.position&&u.isVisible()&&u.$keyboard.position(u.position)})};u.saveCaret=function(n,i,r){var f=t.caret(r||u.$preview,n,i);u.last.start=typeof n=="undefined"?f.start:n;u.last.end=typeof i=="undefined"?f.end:i};u.setScroll=function(){if(u.last.virtual){var n,i,t,r,e=u.preview.nodeName==="TEXTAREA",o=u.last.val.substring(0,Math.max(u.last.start,u.last.end));u.$previewCopy||(u.$previewCopy=u.$preview.clone().removeAttr("id").css({position:"absolute",left:0,zIndex:-10,visibility:"hidden"}).addClass("ui-keyboard-preview-clone"),e||u.$previewCopy.css({"white-space":"pre",width:0}),f.usePreview?u.$preview.after(u.$previewCopy):u.$keyboard.prepend(u.$previewCopy));e?(u.$previewCopy.height(u.lineHeight).val(o),u.preview.scrollTop=u.lineHeight*(Math.floor(u.$previewCopy[0].scrollHeight/u.lineHeight)-1)):(u.$previewCopy.val(o.replace(/\s/g," ")),t=/c/i.test(f.scrollAdjustment)?u.preview.clientWidth/2:f.scrollAdjustment,n=u.$previewCopy[0].scrollWidth-1,typeof u.last.scrollWidth=="undefined"&&(u.last.scrollWidth=n,u.last.direction=!0),r=u.last.scrollWidth===n?u.last.direction:u.last.scrollWidth<n,i=u.preview.clientWidth-t,u.preview.scrollLeft=r?n<i?0:n-i:n>=u.preview.scrollWidth-i?u.preview.scrollWidth-t:n-t>0?n-t:0,u.last.scrollWidth=n,u.last.direction=r)}};u.bindKeyboard=function(){var i,r=t.builtLayouts[u.layout];u.$preview.unbind("keypress keyup keydown mouseup touchend ".split(" ").join(u.namespace+" ")).bind("click"+u.namespace,function(){u.timer2=setTimeout(function(){u.saveCaret()},150)}).bind("keypress"+u.namespace,function(e){if(f.lockInput)return!1;var o=e.charCode||e.which,s=u.last.key=String.fromCharCode(o);if(u.last.virtual=!1,u.last.event=e,u.last.$key=[],u.checkCaret&&u.saveCaret(),u.capsLock=o>=65&&o<=90&&!e.shiftKey||o>=97&&o<=122&&e.shiftKey?!0:!1,f.restrictInput){if((e.which===8||e.which===0)&&n.inArray(e.keyCode,u.alwaysAllowed))return;n.inArray(o,r.acceptedKeys)===-1&&(e.preventDefault(),i=n.extend({},e),i.type=t.events.inputRestricted,u.$el.trigger(i,[u,u.el]),n.isFunction(f.restricted)&&f.restricted(i,u,u.el))}else if((e.ctrlKey||e.metaKey)&&(e.which===97||e.which===99||e.which===118||e.which>=120&&e.which<=122))return;r.hasMappedKeys&&r.mappedKeys.hasOwnProperty(s)&&(u.last.key=r.mappedKeys[s],u.insertText(u.last.key),e.preventDefault());u.checkMaxLength()}).bind("keyup"+u.namespace,function(i){u.last.virtual=!1;switch(i.which){case 9:if(u.tab&&f.tabNavigation&&!f.lockInput){u.shiftActive=i.shiftKey;var r=t.keyaction.tab(u);if(u.tab=!1,!r)return!1}else i.preventDefault();break;case 27:return f.ignoreEsc||u.close(f.autoAccept&&f.autoAcceptOnEsc?"true":!1),!1}return clearTimeout(u.throttled),u.throttled=setTimeout(function(){u.isVisible()&&u.checkCombos()},100),u.checkMaxLength(),u.$el.trigger(t.events.kbChange,[u,u.el]),u.last.val=u.$preview.val(),n.isFunction(f.change)?(f.change(n.Event(t.events.inputChange),u,u.el),!1):void 0}).bind("keydown"+u.namespace,function(n){if(n.which===9)return u.tab=!0,!1;if(f.lockInput)return!1;u.last.virtual=!1;switch(n.which){case 8:t.keyaction.bksp(u,null,n);n.preventDefault();break;case 13:t.keyaction.enter(u,null,n);break;case 20:u.shiftActive=u.capsLock=!u.capsLock;u.showSet();break;case 86:if(n.ctrlKey||n.metaKey){if(f.preventPaste){n.preventDefault();return}u.checkCombos()}}}).bind("mouseup touchend ".split(" ").join(u.namespace+" "),function(){u.last.virtual=!0;u.checkCaret&&u.saveCaret()});u.$keyboard.bind("mousedown click touchstart ".split(" ").join(u.namespace+" "),function(t){t.stopPropagation();u.isCurrent()||(u.reveal(),n(document).trigger("checkkeyboard"+u.namespace));f.noFocus||u.$preview.focus()});f.preventPaste&&(u.$preview.bind("contextmenu"+u.namespace,function(n){n.preventDefault()}),u.$el.bind("contextmenu"+u.namespace,function(n){n.preventDefault()}))};u.bindKeys=function(){var i=t.css;u.$allKeys=u.$keyboard.find("button."+i.keyButton).unbind(u.namespace+" "+u.namespace+"kb").bind(f.keyBinding.split(" ").join(u.namespace+" ")+u.namespace+" "+t.events.kbRepeater,function(r){if(r.preventDefault(),!u.$keyboard.is(":visible"))return!1;var e,h,o=u.last,l=this,s=n(l),c=(new Date).getTime();if(f.useWheel&&u.wheel&&(h=o.wheel_$Keys,s=h?h.eq(o.wheelIndex):s),e=s.attr("data-action"),e=e===":"?":":(e||"").split(":")[0],!(c-(o.eventTime||0)<f.preventDoubleEventTime)){if(o.eventTime=c,o.event=r,o.virtual=!0,f.noFocus||u.$preview.focus(),o.$key=s,o.key=s.attr("data-value"),u.checkCaret&&t.caret(u.$preview,o),e.match("meta")&&(e="meta"),e===o.key&&typeof t.keyaction[e]=="string")o.key=e=t.keyaction[e];else if(e in t.keyaction&&n.isFunction(t.keyaction[e])){if(t.keyaction[e](u,this,r)===!1)return!1;e=null}return typeof e!="undefined"&&e!==null&&(o.key=n(this).hasClass(i.keyAction)?e:o.key,u.insertText(o.key),u.capsLock||f.stickyShift||r.shiftKey||(u.shiftActive=!1,u.showSet(s.attr("data-name")))),t.caret(u.$preview,o),u.checkCombos(),u.$el.trigger(t.events.kbChange,[u,u.el]),o.val=u.$preview.val(),n.isFunction(f.change)?(f.change(n.Event(t.events.inputChange),u,u.el),!1):void 0}}).bind("mouseenter mouseleave touchstart ".split(" ").join(u.namespace+" "),function(t){if(u.isCurrent()){var e,o,r=u.last,i=n(this),s=t.type;f.useWheel&&u.wheel&&(e=u.getLayers(i),o=(e.length?e.map(function(){return n(this).attr("data-value")||""}).get():"")||[i.text()],r.wheel_$Keys=e,r.wheelLayers=o,r.wheelIndex=n.inArray(i.attr("data-value"),o));s!=="mouseenter"&&s!=="touchstart"||u.el.type==="password"||i.hasClass(f.css.buttonDisabled)||(i.addClass(f.css.buttonHover),f.useWheel&&u.wheel&&i.attr("title",function(n,t){return u.wheel&&t===""&&u.sets&&o.length>1&&s!=="touchstart"?f.wheelMessage:t}));s==="mouseleave"&&(i.removeClass(u.el.type==="password"?"":f.css.buttonHover),f.useWheel&&u.wheel&&(r.wheelIndex=0,r.wheelLayers=[],r.wheel_$Keys=null,i.attr("title",function(n,t){return t===f.wheelMessage?"":t}).html(i.attr("data-html"))))}}).bind("mouseup"+u.namespace+" "+"mouseleave touchend touchmove touchcancel ".split(" ").join(u.namespace+"kb "),function(i){u.last.virtual=!0;var r,e=n(this);if(i.type==="touchmove"){if(r=e.offset(),r.right=r.left+e.outerWidth(),r.bottom=r.top+e.outerHeight(),i.originalEvent.touches[0].pageX>=r.left&&i.originalEvent.touches[0].pageX<r.right&&i.originalEvent.touches[0].pageY>=r.top&&i.originalEvent.touches[0].pageY<r.bottom)return!0}else/(mouseleave|touchend|touchcancel)/i.test(i.type)?e.removeClass(f.css.buttonHover):(!f.noFocus&&u.isVisible()&&u.isCurrent()&&u.$preview.focus(),u.checkCaret&&t.caret(u.$preview,u.last));return u.mouseRepeat=[!1,""],clearTimeout(u.repeater),!1}).bind("click"+u.namespace,function(){return!1}).not("."+i.keyAction).bind("mousewheel"+u.namespace,function(t,i){if(f.useWheel&&u.wheel){i=i||t.deltaY;var r,e=u.last.wheelLayers||[];return e.length>1?(r=u.last.wheelIndex+(i>0?-1:1),r>e.length-1&&(r=0),r<0&&(r=e.length-1)):r=0,u.last.wheelIndex=r,n(this).html(e[r]),!1}}).add("."+i.keyPrefix+"tab bksp space enter".split(" ").join(",."+i.keyPrefix),u.$keyboard).bind("mousedown touchstart ".split(" ").join(u.namespace+"kb "),function(){if(f.repeatRate!==0){var t=n(this);u.mouseRepeat=[!0,t];setTimeout(function(){u.mouseRepeat[0]&&u.mouseRepeat[1]===t&&u.repeatKey(t)},f.repeatDelay)}return!1})};u.insertText=function(n){if(typeof n!="undefined"){var e,f,o=n==="\b",r=u.$preview.val(),i=t.caret(u.$preview),s=r.length;i.end<i.start&&(i.end=i.start);i.start>s&&(i.end=i.start=s);u.preview.nodeName==="TEXTAREA"&&t.msie&&r.substr(i.start,1)==="\n"&&(i.start+=1,i.end+=1);n==="{d}"&&(n="",f=i.start,i.end+=1);e=o&&i.start===i.end;n=o?"":n;r=r.substr(0,i.start-(e?1:0))+n+r.substr(i.end);f=i.start+(e?-1:n.length);u.$preview.val(r);u.saveCaret(f,f);u.setScroll()}};u.checkMaxLength=function(){var i,n,r=u.$preview.val();f.maxLength!==!1&&r.length>f.maxLength&&(i=t.caret(u.$preview).start,n=Math.min(i,f.maxLength),f.maxInsert||(r=u.last.val,n=i-1),u.$preview.val(r.substring(0,f.maxLength)),u.saveCaret(n,n));u.$decBtn.length&&u.checkDecimal()};u.repeatKey=function(n){n.trigger(t.events.kbRepeater);u.mouseRepeat[0]&&(u.repeater=setTimeout(function(){u.repeatKey(n)},u.repeatTime))};u.showKeySet=function(n){typeof n=="string"?(u.last.keyset=[u.shiftActive,u.altActive,u.metaActive],u.shiftActive=/shift/i.test(n),u.altActive=/alt/i.test(n),/meta/.test(n)?(u.metaActive=!0,u.showSet(n.match(/meta\d+/i)[0])):(u.metaActive=!1,u.showSet())):u.showSet(n)};u.showSet=function(n){f=u.options;var r=t.css,e="."+r.keyPrefix,o=f.css.buttonActive,i="",s=(u.shiftActive?1:0)+(u.altActive?2:0);if(u.shiftActive||(u.capsLock=!1),u.metaActive?(i=/meta/i.test(n)?n:"",i===""?i=u.metaActive===!0?"":u.metaActive:u.metaActive=i,(f.stickyShift||u.last.keyset[2]===u.metaActive)&&(!(u.shiftActive||u.altActive)||u.$keyboard.find("."+r.keySet+"-"+i+u.rows[s]).length)||(u.shiftActive=u.altActive=!1)):!f.stickyShift&&u.last.keyset[2]!==u.metaActive&&u.shiftActive&&(u.shiftActive=u.altActive=!1),s=(u.shiftActive?1:0)+(u.altActive?2:0),i=s===0&&!u.metaActive?"-normal":i===""?"":"-"+i,!u.$keyboard.find("."+r.keySet+i+u.rows[s]).length){u.shiftActive=u.last.keyset[0];u.altActive=u.last.keyset[1];u.metaActive=u.last.keyset[2];return}u.$keyboard.find(e+"alt,"+e+"shift,."+r.keyAction+"[class*=meta]").removeClass(o).end().find(e+"alt").toggleClass(o,u.altActive).end().find(e+"shift").toggleClass(o,u.shiftActive).end().find(e+"lock").toggleClass(o,u.capsLock).end().find("."+r.keySet).hide().end().find("."+r.keySet+i+u.rows[s]).show().end().find("."+r.keyAction+e+i).addClass(o);u.metaActive&&u.$keyboard.find(e+u.metaActive).toggleClass(o,u.metaActive!==!1);u.last.keyset=[u.shiftActive,u.altActive,u.metaActive];u.$el.trigger(t.events.kbKeysetChange,[u,u.el])};u.checkCombos=function(){if(!u.isVisible())return u.$preview.val();var o,h,r,e,i=u.$preview.val(),n=t.caret(u.$preview),c=t.builtLayouts[u.layout],s=i.length;if(i==="")return i;if(n.end<n.start&&(n.end=n.start),n.start>s&&(n.end=n.start=s),t.msie&&i.substr(n.start,1)==="\n"&&(n.start+=1,n.end+=1),f.useCombos&&(t.msie?i=i.replace(u.regex,function(n,t,i){return f.combos.hasOwnProperty(t)?f.combos[t][i]||n:n}):u.$preview.length&&(r=n.start-(n.start-2>=0?2:0),t.caret(u.$preview,r,n.end),e=(t.caret(u.$preview).text||"").replace(u.regex,function(n,t,i){return f.combos.hasOwnProperty(t)?f.combos[t][i]||n:n}),u.$preview.val(t.caret(u.$preview).replaceStr(e)),i=u.$preview.val())),f.restrictInput&&i!==""){for(r=i,h=c.acceptedKeys.length,o=0;o<h;o++)r!==""&&(e=c.acceptedKeys[o],i.indexOf(e)>=0&&(/[\[|\]|\\|\^|\$|\.|\||\?|\*|\+|\(|\)|\{|\}]/g.test(e)&&(e="\\"+e),r=r.replace(new RegExp(e,"g"),"")));r!==""&&(i=i.replace(r,""))}return n.start+=i.length-s,n.end+=i.length-s,u.$preview.val(i),u.saveCaret(n.start,n.end),u.setScroll(),u.checkMaxLength(),f.acceptValid&&u.checkValid(),i};u.checkValid=function(){var i=t.css,r=!0;n.isFunction(f.validate)&&(r=f.validate(u,u.$preview.val(),!1));u.$keyboard.find("."+i.keyPrefix+"accept").toggleClass(i.inputInvalid,!r).toggleClass(i.inputValid,r)};u.checkDecimal=function(){u.decimal&&/\./g.test(u.preview.value)||!u.decimal&&/\,/g.test(u.preview.value)?u.$decBtn.attr({disabled:"disabled","aria-disabled":"true"}).removeClass(f.css.buttonHover).addClass(f.css.buttonDisabled):u.$decBtn.removeAttr("disabled").attr({"aria-disabled":"false"}).addClass(f.css.buttonDefault).removeClass(f.css.buttonDisabled)};u.getLayers=function(i){var r=t.css,u=i.attr("data-pos"),f=i.closest("."+r.keyboard).find('button[data-pos="'+u+'"]');return f.filter(function(){return n(this).find("."+r.keyText).text()!==""}).add(i)};u.switchInput=function(t,i){if(n.isFunction(f.switchInput))f.switchInput(u,t,i);else{u.$keyboard.length&&u.$keyboard.hide();var o,s=!1,e=n("button, input, textarea, a").filter(":visible").not(":disabled"),r=e.index(u.$el)+(t?1:-1);if(u.$keyboard.length&&u.$keyboard.show(),r>e.length-1&&(s=f.stopAtEnd,r=0),r<0&&(s=f.stopAtEnd,r=e.length-1),!s){if(i=u.close(i),!i)return;o=e.eq(r).data("keyboard");o&&o.options.openOn.length?o.focusOn():e.eq(r).focus()}}return!1};u.close=function(i){if(u.isOpen){clearTimeout(u.throttled);var e=t.css,r=t.events,o=i?u.checkCombos():u.originalContent;if(i&&n.isFunction(f.validate)&&!f.validate(u,o,!0)&&(o=u.originalContent,i=!1,f.cancelClose))return;u.isCurrent(!1);u.isOpen=!1;u.$preview.val(o);u.$el.removeClass(e.isCurrent+" "+e.inputAutoAccepted).addClass(i||!1?i===!0?"":e.inputAutoAccepted:"").val(o).trigger(r.inputChange).trigger(f.alwaysOpen?"":r.kbBeforeClose,[u,u.el,i||!1]).trigger(i||!1?r.inputAccepted:r.inputCanceled,[u,u.el]).trigger(f.alwaysOpen?r.kbInactive:r.kbHidden,[u,u.el]).blur();u&&(u.last.eventTime=(new Date).getTime(),f.openOn&&(u.timer=setTimeout(function(){u&&u.el.active&&(u.$el.bind(f.openOn+u.namespace,function(){u.focusOn()}),n(":focus")[0]===u.el&&u.$el.blur())},500)),!f.alwaysOpen&&u.$keyboard&&(u.$keyboard.remove(),u.$keyboard=[]),u.watermark||u.el.value!==""||u.inPlaceholder===""||u.$el.addClass(e.placeholder).val(u.inPlaceholder))}return!!i};u.accept=function(){return u.close(!0)};u.escClose=function(i){if(i&&i.type==="keyup")return i.which===27&&!f.ignoreEsc?u.close(f.autoAccept&&f.autoAcceptOnEsc?"true":!1):"";if(u.isOpen&&(!u.isCurrent()&&u.isOpen||u.isOpen&&i.target!==u.el)){if(f.stayOpen&&!n(i.target).hasClass("ui-keyboard-input"))return;t.allie&&i.preventDefault();u.close(f.autoAccept?"true":!1)}};u.keyBtn=n("<button />").attr({role:"button",type:"button","aria-disabled":"false",tabindex:"-1"}).addClass(t.css.keyButton);u.processName=function(n){var t,i,u=(n||"").replace(/[^a-z0-9-_]/gi,""),r=u.length,f=[];if(r>1&&n===u)return n;if(r=n.length,r){for(t=0;t<r;t++)i=n[t],f.push(/[a-z0-9-_]/i.test(i)?/[-_]/.test(i)?"":i:(t===0?"":"-")+i.charCodeAt(0));return f.join("")}return n};u.addKey=function(i,r,e){var v,y,c,s,a=t.css,l=r.split(":"),p=l.length-1,h=e===!0?i:f.display[l[0]]||i,o={isAction:!e,action:i,name:u.processName(i.split(/[(:]/)[0])};return/\(.+\)/.test(h)&&(c=h.replace(/\(([^()]+)\)/,""),y=h.match(/\(([^()]+)\)/)[1],h=c,s=c.split(":"),c=s[0]!==""&&s.length>1?s[0]:c,t.builtLayouts[u.layout].mappedKeys[y]=c),s=h.split(":"),s[0]===""&&s[1]===""&&(h=":"),h=s[0]!==""&&s.length>1?s[0]:h,o.value=n.trim(e?h:l[1]||h),o.title=s.length>1?n.trim(s[1]).replace(/_/g," ")||"":p>0?l[p]||"":"",v=o.value.length>2?" "+a.keyWide:"",v+=e?"":" "+a.keyAction,o.html='<span class="'+a.keyText+'">'+o.value.replace(/[\u00A0-\u9999<>\&]/gim,function(n){return"&#"+n.charCodeAt(0)+";"})+"<\/span>",o.$key=u.keyBtn.clone().attr({"data-value":o.value,"data-name":o.name,"data-pos":u.temp[1]+","+u.temp[2],title:o.title,"data-action":o.action,"data-html":o.html}).addClass((o.name===""?"":a.keyPrefix+o.name+v+" ")+f.css.buttonDefault).html(o.html).appendTo(u.temp[0]),typeof f.buildKey=="function"&&(o=f.buildKey(u,o),l=o.$key.html(),o.$key.attr("data-html",l)),o.$key};u.customHash=function(n){var r,u,t,o,e,s=[],i=[];n=typeof n=="undefined"?f.customLayout:n;for(u in n)n.hasOwnProperty(u)&&s.push(n[u]);if(i=i.concat.apply(i,s).join(" "),t=0,e=i.length,e===0)return t;for(r=0;r<e;r++)o=i.charCodeAt(r),t=(t<<5)-t+o,t=t&t;return t};u.buildKeyboard=function(i,r){n.isEmptyObject(f.display)&&u.updateLanguage();var o,c,a,e=t.css,v=0,s=t.builtLayouts[i||u.layout||f.layout]={mappedKeys:{},acceptedKeys:[]},y=s.acceptedKeys=[],h=e.keyboard+" "+f.css.popup+" "+f.css.container+(f.alwaysOpen?" "+e.alwaysOpen:""),l=n("<div />").addClass(h).attr({role:"textbox"}).hide();return r&&f.layout==="custom"||!t.layouts.hasOwnProperty(f.layout)?(f.layout="custom",h=t.layouts.custom=f.customLayout||{normal:["{cancel}"]}):h=t.layouts[r?f.layout:i||u.layout||f.layout],n.each(h,function(t,i){if(t!==""&&!/^(name|lang|rtl)$/i.test(t))for(t==="default"&&(t="normal"),v++,c=n("<div />").attr("name",t).addClass(e.keySet+" "+e.keySet+"-"+t).appendTo(l).toggle(t==="normal"),o=0;o<i.length;o++)a=n.trim(i[o]).replace(/\{(\.?)[\s+]?:[\s+]?(\.?)\}/g,"{$1:$2}"),u.buildRow(c,o,a.split(/\s+/),y),c.find("."+e.keyButton+":last").after('<br class="'+e.endRow+'"/>')}),v>1&&(u.sets=!0),s.hasMappedKeys=!n.isEmptyObject(s.mappedKeys),s.$keyboard=l,l};u.buildRow=function(i,r,e,o){for(var a,v,y,s,l,h=t.css,c=0;c<e.length;c++)if(u.temp=[i,r,c],y=!1,e[c].length!==0)if(/^\{\S+\}$/.test(e[c])){if(s=e[c].match(/^\{(\S+)\}$/)[1],/\!\!/.test(s)&&(s=s.replace("!!",""),y=!0),/^sp:((\d+)?([\.|,]\d+)?)(em|px)?$/i.test(s)&&(l=parseFloat(s.replace(/,/,".").match(/^sp:((\d+)?([\.|,]\d+)?)(em|px)?$/i)[1]||0),n('<span class="'+h.keyText+'"><\/span>').width(s.match(/px/i)?l+"px":l*2+"em").addClass(h.keySpacer).appendTo(i)),/^empty(:((\d+)?([\.|,]\d+)?)(em|px)?)?$/i.test(s)&&(l=/:/.test(s)?parseFloat(s.replace(/,/,".").match(/^empty:((\d+)?([\.|,]\d+)?)(em|px)?$/i)[1]||0):"",u.addKey(""," ").addClass(f.css.buttonDisabled+" "+f.css.buttonEmpty).attr("aria-disabled",!0).width(l?s.match("px")?l+"px":l*2+"em":"")),/^meta\d+\:?(\w+)?/i.test(s)){u.addKey(s.split(":")[0],s).addClass(h.keyHasActive);continue}v=s.split(":");switch(v[0].toLowerCase()){case"a":case"accept":u.addKey("accept",s).addClass(f.css.buttonAction+" "+h.keyAction);break;case"alt":case"altgr":u.addKey("alt",s).addClass(h.keyHasActive);break;case"b":case"bksp":u.addKey("bksp",s);break;case"c":case"cancel":u.addKey("cancel",s).addClass(f.css.buttonAction+" "+h.keyAction);break;case"combo":u.addKey("combo",s).addClass(h.keyHasActive).toggleClass(f.css.buttonActive,f.useCombos);break;case"dec":o.push(u.decimal?".":",");u.addKey("dec",s);break;case"e":case"enter":u.addKey("enter",s).addClass(f.css.buttonAction+" "+h.keyAction);break;case"lock":u.addKey("lock",s).addClass(h.keyHasActive);break;case"s":case"shift":u.addKey("shift",s).addClass(h.keyHasActive);break;case"sign":o.push("-");u.addKey("sign",s);break;case"space":o.push(" ");u.addKey("space",s);break;case"t":case"tab":u.addKey("tab",s);break;default:t.keyaction.hasOwnProperty(v[0])&&u.addKey(v[0],s).toggleClass(f.css.buttonAction+" "+h.keyAction,y)}}else a=e[c],o.push(a===":"?a:a.split(":")[0]),u.addKey(a,a,!0)};u.removeBindings=function(t){n(document).unbind(t);u.el.ownerDocument!==document&&n(u.el.ownerDocument).unbind(t);n(window).unbind(t);u.$el.unbind(t)};u.destroy=function(n){var r,i=t.css,e=u.extensionNamespace.length,o=[i.input,i.locked,i.placeholder,i.noKeyboard,i.alwaysOpen,f.css.input].join(" ");for(clearTimeout(u.timer),clearTimeout(u.timer2),u.removeBindings(u.namespace),r=0;r<e;r++)u.removeBindings(u.extensionNamespace[r]);u.el.active=!1;u.$keyboard.length&&u.$keyboard.remove();u.$el.removeClass(o).removeAttr("aria-haspopup").removeAttr("role").removeData("keyboard");u=null;typeof n=="function"&&n()};u.init()};return t.css={idSuffix:"_keyboard",input:"ui-keyboard-input",wrapper:"ui-keyboard-preview-wrapper",preview:"ui-keyboard-preview",keyboard:"ui-keyboard",keySet:"ui-keyboard-keyset",keyButton:"ui-keyboard-button",keyWide:"ui-keyboard-widekey",keyPrefix:"ui-keyboard-",keyText:"ui-keyboard-text",keyHasActive:"ui-keyboard-hasactivestate",keyAction:"ui-keyboard-actionkey",keySpacer:"ui-keyboard-spacer",keyToggle:"ui-keyboard-toggle",keyDisabled:"ui-keyboard-disabled",locked:"ui-keyboard-lockedinput",alwaysOpen:"ui-keyboard-always-open",noKeyboard:"ui-keyboard-nokeyboard",placeholder:"ui-keyboard-placeholder",hasFocus:"ui-keyboard-has-focus",isCurrent:"ui-keyboard-input-current",inputValid:"ui-keyboard-valid-input",inputInvalid:"ui-keyboard-invalid-input",inputAutoAccepted:"ui-keyboard-autoaccepted",endRow:"ui-keyboard-button-endrow"},t.events={kbChange:"keyboardChange",kbBeforeClose:"beforeClose",kbBeforeVisible:"beforeVisible",kbVisible:"visible",kbInit:"initialized",kbInactive:"inactive",kbHidden:"hidden",kbRepeater:"repeater",kbKeysetChange:"keysetChange",inputAccepted:"accepted",inputCanceled:"canceled",inputChange:"change",inputRestricted:"restricted"},t.keyaction={accept:function(n){return n.close(!0),!1},alt:function(n){n.altActive=!n.altActive;n.showSet()},bksp:function(n){n.insertText("\b")},cancel:function(n){return n.close(),!1},clear:function(n){n.$preview.val("");n.$decBtn.length&&n.checkDecimal()},combo:function(n){var i=!n.options.useCombos;return n.options.useCombos=i,n.$keyboard.find("."+t.css.keyPrefix+"combo").toggleClass(n.options.css.buttonActive,i),i&&n.checkCombos(),!1},dec:function(n){n.insertText(n.decimal?".":",")},del:function(n){n.insertText("{d}")},"default":function(n){n.shiftActive=n.altActive=n.metaActive=!1;n.showSet()},enter:function(t,i,r){var f=t.el.nodeName,u=t.options;if(r.shiftKey)return u.enterNavigation?t.switchInput(!r[u.enterMod],!0):t.close(!0);if(u.enterNavigation&&(f!=="TEXTAREA"||r[u.enterMod]))return t.switchInput(!r[u.enterMod],u.autoAccept?"true":!1);f==="TEXTAREA"&&n(r.target).closest("button").length&&t.insertText(" \n")},lock:function(n){n.last.keyset[0]=n.shiftActive=n.capsLock=!n.capsLock;n.showSet()},left:function(n){var i=t.caret(n.$preview);i.start-1>=0&&(n.last.start=n.last.end=i.start-1,t.caret(n.$preview,n.last),n.setScroll())},meta:function(t,i){var r=n(i);t.metaActive=!r.hasClass(t.options.css.buttonActive);t.showSet(r.attr("data-name"))},next:function(n){return n.switchInput(!0,n.options.autoAccept),!1},normal:function(n){n.shiftActive=n.altActive=n.metaActive=!1;n.showSet()},prev:function(n){return n.switchInput(!1,n.options.autoAccept),!1},right:function(n){var i=t.caret(n.$preview);i.start+1<=n.$preview.val().length&&(n.last.start=n.last.end=i.start+1,t.caret(n.$preview,n.last),n.setScroll())},shift:function(n){n.last.keyset[0]=n.shiftActive=!n.shiftActive;n.showSet()},sign:function(n){/^\-?\d*\.?\d*$/.test(n.$preview.val())&&n.$preview.val(n.$preview.val()*-1)},space:function(n){n.insertText(" ")},tab:function(n){var t=n.el.nodeName,i=n.options;if(t==="INPUT")return i.tabNavigation?n.switchInput(!n.shiftActive,!0):!1;n.insertText("\t")},toggle:function(n){n.enabled=!n.enabled;n.toggle()},NBSP:" ",ZWSP:"​",ZWNJ:"‌",ZWJ:"‍",LRM:"‎",RLM:"‏"},t.builtLayouts={},t.layouts={alpha:{normal:["` 1 2 3 4 5 6 7 8 9 0 - = {bksp}","{tab} a b c d e f g h i j [ ] \\","k l m n o p q r s ; ' {enter}","{shift} t u v w x y z , . / {shift}","{accept} {space} {cancel}"],shift:["~ ! @ # $ % ^ & * ( ) _ + {bksp}","{tab} A B C D E F G H I J { } |",'K L M N O P Q R S : " {enter}',"{shift} T U V W X Y Z < > ? {shift}","{accept} {space} {cancel}"]},qwerty:{normal:["` 1 2 3 4 5 6 7 8 9 0 - = {bksp}","{tab} q w e r t y u i o p [ ] \\","a s d f g h j k l ; ' {enter}","{shift} z x c v b n m , . / {shift}","{accept} {space} {cancel}"],shift:["~ ! @ # $ % ^ & * ( ) _ + {bksp}","{tab} Q W E R T Y U I O P { } |",'A S D F G H J K L : " {enter}',"{shift} Z X C V B N M < > ? {shift}","{accept} {space} {cancel}"]},international:{normal:["` 1 2 3 4 5 6 7 8 9 0 - = {bksp}","{tab} q w e r t y u i o p [ ] \\","a s d f g h j k l ; ' {enter}","{shift} z x c v b n m , . / {shift}","{accept} {alt} {space} {alt} {cancel}"],shift:["~ ! @ # $ % ^ & * ( ) _ + {bksp}","{tab} Q W E R T Y U I O P { } |",'A S D F G H J K L : " {enter}',"{shift} Z X C V B N M < > ? {shift}","{accept} {alt} {space} {alt} {cancel}"],alt:["~ ¡ ² ³ ¤ € ¼ ½ ¾ ‘ ’ ¥ × {bksp}","{tab} ä å é ® þ ü ú í ó ö « » ¬","á ß ð f g h j k ø ¶ ´ {enter}","{shift} æ x © v b ñ µ ç > ¿ {shift}","{accept} {alt} {space} {alt} {cancel}"],"alt-shift":["~ ¹ ² ³ £ € ¼ ½ ¾ ‘ ’ ¥ ÷ {bksp}","{tab} Ä Å É ® Þ Ü Ú Í Ó Ö « » ¦","Ä § Ð F G H J K Ø ° ¨ {enter}","{shift} Æ X ¢ V B Ñ µ Ç . ¿ {shift}","{accept} {alt} {space} {alt} {cancel}"]},colemak:{normal:["` 1 2 3 4 5 6 7 8 9 0 - = {bksp}","{tab} q w f p g j l u y ; [ ] \\","{bksp} a r s t d h n e i o ' {enter}","{shift} z x c v b k m , . / {shift}","{accept} {space} {cancel}"],shift:["~ ! @ # $ % ^ & * ( ) _ + {bksp}","{tab} Q W F P G J L U Y : { } |",'{bksp} A R S T D H N E I O " {enter}',"{shift} Z X C V B K M < > ? {shift}","{accept} {space} {cancel}"]},dvorak:{normal:["` 1 2 3 4 5 6 7 8 9 0 [ ] {bksp}","{tab} ' , . p y f g c r l / = \\","a o e u i d h t n s - {enter}","{shift} ; q j k x b m w v z {shift}","{accept} {space} {cancel}"],shift:["~ ! @ # $ % ^ & * ( ) { } {bksp}",'{tab} " < > P Y F G C R L ? + |',"A O E U I D H T N S _ {enter}","{shift} : Q J K X B M W V Z {shift}","{accept} {space} {cancel}"]},num:{normal:["= ( ) {b}","{clear} / * -","7 8 9 +","4 5 6 {sign}","1 2 3 %","0 {dec} {a} {c}"]}},t.language=n.extend({},t.language,{en:{display:{a:"✔:Accept (Shift+Enter)",accept:"Accept:Accept (Shift+Enter)",alt:"Alt:⌥ AltGr",b:"⌫:Backspace",bksp:"Bksp:Backspace",c:"✖:Cancel (Esc)",cancel:"Cancel:Cancel (Esc)",clear:"C:Clear",combo:"ö:Toggle Combo Keys",dec:".:Decimal",e:"⏎:Enter",empty:" ",enter:"Enter:Enter ⏎",left:"←",lock:"Lock:⇪ Caps Lock",next:"Next ⇨",prev:"⇦ Prev",right:"→",s:"⇧:Shift",shift:"Shift:Shift",sign:"±:Change Sign",space:" :Space",t:"⇥:Tab",tab:"⇥ Tab:Tab",toggle:" "},wheelMessage:"Use mousewheel to see other keys",comboRegex:/([`\'~\^\"ao])([a-z])/mig,combos:{"`":{a:"à",A:"À",e:"è",E:"È",i:"ì",I:"Ì",o:"ò",O:"Ò",u:"ù",U:"Ù",y:"ỳ",Y:"Ỳ"},"'":{a:"á",A:"Á",e:"é",E:"É",i:"í",I:"Í",o:"ó",O:"Ó",u:"ú",U:"Ú",y:"ý",Y:"Ý"},'"':{a:"ä",A:"Ä",e:"ë",E:"Ë",i:"ï",I:"Ï",o:"ö",O:"Ö",u:"ü",U:"Ü",y:"ÿ",Y:"Ÿ"},"^":{a:"â",A:"Â",e:"ê",E:"Ê",i:"î",I:"Î",o:"ô",O:"Ô",u:"û",U:"Û",y:"ŷ",Y:"Ŷ"},"~":{a:"ã",A:"Ã",e:"ẽ",E:"Ẽ",i:"ĩ",I:"Ĩ",o:"õ",O:"Õ",u:"ũ",U:"Ũ",y:"ỹ",Y:"Ỹ",n:"ñ",N:"Ñ"}}}}),t.defaultOptions={language:null,rtl:!1,layout:"qwerty",customLayout:null,position:{of:null,my:"center top",at:"center top",at2:"center bottom"},reposition:!0,usePreview:!0,alwaysOpen:!1,initialFocus:!0,noFocus:!1,stayOpen:!1,ignoreEsc:!1,css:{input:"ui-widget-content ui-corner-all",container:"ui-widget-content ui-widget ui-corner-all ui-helper-clearfix",popup:"",buttonDefault:"ui-state-default ui-corner-all",buttonHover:"ui-state-hover",buttonAction:"ui-state-active",buttonActive:"ui-state-active",buttonDisabled:"ui-state-disabled",buttonEmpty:"ui-keyboard-empty"},autoAccept:!1,autoAcceptOnEsc:!1,lockInput:!1,restrictInput:!1,acceptValid:!1,cancelClose:!0,tabNavigation:!1,enterNavigation:!1,enterMod:"altKey",stopAtEnd:!0,appendLocally:!1,appendTo:"body",stickyShift:!0,preventPaste:!1,caretToEnd:!1,scrollAdjustment:10,maxLength:!1,maxInsert:!0,repeatDelay:500,repeatRate:20,resetDefault:!0,openOn:"focus",keyBinding:"mousedown touchstart",useWheel:!0,useCombos:!0,validate:function(){return!0}},t.comboRegex=/([`\'~\^\"ao])([a-z])/mig,t.currentKeyboard="",n('<!--[if lte IE 8]><script>jQuery("body").addClass("oldie");<\/script><![endif]--><!--[if IE]><script>jQuery("body").addClass("ie");<\/script><![endif]-->').appendTo("body").remove(),t.msie=n("body").hasClass("oldie"),t.allie=n("body").hasClass("ie"),t.watermark=typeof document.createElement("input").placeholder!="undefined",t.checkCaretSupport=function(){if(typeof t.checkCaret!="boolean"){var i=n('<div style="height:0px;width:0px;overflow:hidden;"><input type="text" value="testing"/><\/div>').prependTo("body");t.caret(i.find("input"),3,3);t.checkCaret=t.caret(i.find("input").hide().show()).start!==3;i.remove()}return t.checkCaret},t.caret=function(n,t,i){if(!n.length||n.is(":hidden")||n.css("visibility")==="hidden")return{};var r,u,f,e,o=n.getkeyboard()&&n.getkeyboard().options.noFocus;return(o||n.focus(),typeof t!="undefined")?(typeof t=="object"&&"start"in t&&"end"in t?(r=t.start,u=t.end):typeof i=="undefined"&&(i=t),typeof t=="number"&&typeof i=="number"?(r=t,u=i):t==="start"?r=u=0:typeof t=="string"&&(r=u=n.val().length),n.caret(r,u,o)):(e=n.caret(),r=e.start,u=e.end,f=n[0].value||n.text()||"",{start:r,end:u,text:f.substring(r,u),replaceStr:function(n){return f.substring(0,r)+n+f.substring(u,f.length)}})},n.fn.keyboard=function(t){return this.each(function(){n(this).data("keyboard")||new n.keyboard(this,t)})},n.fn.getkeyboard=function(){return this.data("keyboard")},n.fn.caret=function(n,t,i){if(typeof this[0]=="undefined"||this.is(":hidden")||this.css("visibility")==="hidden")return this;var o,u,h,s,f,c=document.selection,e=this,r=e[0],v=r.scrollTop,l=!1,a=!0;try{l="selectionStart"in r}catch(y){a=!1}return a&&typeof n!="undefined"?(/(email|number)/i.test(r.type)||(l?(r.selectionStart=n,r.selectionEnd=t):(o=r.createTextRange(),o.collapse(!0),o.moveStart("character",n),o.moveEnd("character",t-n),o.select())),!i&&(e.is(":visible")||e.css("visibility")!=="hidden")&&r.focus(),r.scrollTop=v,this):(/(email|number)/i.test(r.type)?n=t=e.val().length:l?(n=r.selectionStart,t=r.selectionEnd):c?r.nodeName==="TEXTAREA"?(f=e.val(),u=c.createRange(),h=u.duplicate(),h.moveToElementText(r),h.setEndPoint("EndToEnd",u),n=h.text.replace(/\r/g,"\n").length,t=n+u.text.replace(/\r/g,"\n").length):(f=e.val().replace(/\r/g,"\n"),u=c.createRange().duplicate(),u.moveEnd("character",f.length),n=u.text===""?f.length:f.lastIndexOf(u.text),u=c.createRange().duplicate(),u.moveStart("character",-f.length),t=u.text.length):n=t=(r.value||"").length,s=r.value||"",{start:n,end:t,text:s.substring(n,t),replace:function(i){return s.substring(0,n)+i+s.substring(t,s.length)}})},t}),$.keyboard.layouts["russian-qwerty"]={alt:["` 1 2 3 4 5 6 7 8 9 0 - = {bksp}","q w e r t y u i o p [ ] \\","a s d f g h j k l ; '","{shift} z x c v b n m , . / {shift}","{alt} {space} {cancel}"],"alt-shift":["~ ! @ # $ % ^ & * ( ) _ + {bksp}","Q W E R T Y U I O P { } |",'A S D F G H J K L : "',"{shift} Z X C V B N M < > ? {shift}","{alt} {space} {cancel}"],"default":["ё 1 2 3 4 5 6 7 8 9 0 - = {bksp}","й ц у к е н г ш щ з х ъ \\","ф ы в а п р о л д ж э","{shift} я ч с м и т ь б ю . {shift}","{alt} {space} {cancel}"],shift:['Ё ! " № ; % : ? * ( ) _ + {bksp}',"Й Ц У К Е Н Г Ш Щ З Х Ъ /","Ф Ы В А П Р О Л Д Ж Э","{shift} Я Ч С М И Т Ь Б Ю , {shift}","{alt} {space} {cancel}"]},typeof language=="undefined")var language={};language.russian={display:{a:"✔:Accept (Shift-Enter)",accept:"Ввод:Ввод (Shift-Enter)",alt:"Ru/En:Switch language",b:"←:Backspace",bksp:"Bksp:Backspace",c:"✖:Cancel (Esc)",cancel:"Отмена:Отмена (Esc)",clear:"C:Clear",combo:"ö:Toggle Combo Keys",dec:".:Decimal",e:"↵:Enter",enter:"Enter:Enter",lock:"⇪ Lock:Caps Lock",s:"⇧:Shift",shift:"Shift:Shift",sign:"±:Change Sign",space:"&nbsp;:Space",t:"⇥:Tab",tab:"⇥ Tab:Tab"},wheelMessage:"Use mousewheel to see other keys"};$.extend(!0,$.keyboard.defaultOptions,language.russian)