Best JavaScript code snippet using root
keyboard.js
Source:keyboard.js
12var VKI_attach, VKI_close;3 function VKI_buildKeyboardInputs() {4 var self = this;5 this.VKI_version = "1.37";6 this.VKI_showVersion = false;7 this.VKI_target = false;8 this.VKI_shift = this.VKI_shiftlock = false;9 this.VKI_altgr = this.VKI_altgrlock = false;10 this.VKI_dead = false;11 this.VKI_deadkeysOn = false;12 this.VKI_kts = this.VKI_kt = "US Int'l"; // Default keyboard layout13 //this.VKI_kts = this.VKI_kt = "US"; 14 this.VKI_langAdapt = true; // Use lang attribute of input to select keyboard15 this.VKI_size = 2; // Default keyboard size (1-5)16 this.VKI_sizeAdj = false; // Allow user to adjust keyboard size17 this.VKI_clearPasswords = false; // Clear password fields on focus18 this.VKI_imageURI = rcmail.env.skin == "classic" ? "plugins/vkeyboard/skins/classic/keyboard.png" : "program/resources/blank.gif"; // If empty string, use imageless mode19 this.VKI_clickless = 0; // 0 = disabled, > 0 = delay in ms20 this.VKI_keyCenter = 3;2122 this.VKI_isIE = /*@cc_on!@*/false;23 this.VKI_isIE6 = /*@if(@_jscript_version == 5.6)!@end@*/false;24 this.VKI_isIElt8 = /*@if(@_jscript_version < 5.8)!@end@*/false;25 this.VKI_isWebKit = window.opera;26 this.VKI_isOpera = RegExp("Opera").test(navigator.userAgent);27 this.VKI_isMoz = (!this.VKI_isWebKit && navigator.product == "Gecko");282930 /* ***** i18n text strings ************************************* */31 this.VKI_i18n = {32 '00': rcmail.gettext('vk00','vkeyboard'),33 '01': rcmail.gettext('vk01','vkeyboard'),34 '02': rcmail.gettext('vk02','vkeyboard'),35 '03': rcmail.gettext('vk03','vkeyboard'),36 '04': rcmail.gettext('vk04','vkeyboard'),37 '05': rcmail.gettext('vk05','vkeyboard'),38 '06': rcmail.gettext('vk06','vkeyboard'),39 '07': rcmail.gettext('vk07','vkeyboard'),40 '08': rcmail.gettext('vk08','vkeyboard'),41 '09': rcmail.gettext('vk09','vkeyboard'),42 '10': rcmail.gettext('vk10','vkeyboard')43 };444546 /* ***** Create keyboards ************************************** */47 this.VKI_layout = {};4849 // - Lay out each keyboard in rows of sub-arrays. Each sub-array50 // represents one key.51 //52 // - Each sub-array consists of four slots described as follows:53 // example: ["a", "A", "\u00e1", "\u00c1"]54 //55 // a) Normal character56 // A) Character + Shift/Caps57 // \u00e1) Character + Alt/AltGr/AltLk58 // \u00c1) Character + Shift/Caps + Alt/AltGr/AltLk59 //60 // You may include sub-arrays which are fewer than four slots.61 // In these cases, the missing slots will be blanked when the62 // corresponding modifier key (Shift or AltGr) is pressed.63 //64 // - If the second slot of a sub-array matches one of the following65 // strings:66 // rcmail.gettext('tab','vkeyboard'), rcmail.gettext('caps','vkeyboard'), rcmail.gettext('shift','vkeyboard'), rcmail.gettext('enter','vkeyboard'), rcmail.gettext('bksp','vkeyboard'),67 // "Alt" OR "AltGr", "AltLk"68 // then the function of the key will be the following,69 // respectively:70 // - Insert a tab71 // - Toggle Caps Lock (technically a Shift Lock)72 // - Next entered character will be the shifted character73 // - Insert a newline (textarea), or close the keyboard74 // - Delete the previous character75 // - Next entered character will be the alternate character76 // - Toggle Alt/AltGr Lock77 //78 // The first slot of this sub-array will be the text to display79 // on the corresponding key. This allows for easy localisation80 // of key names.81 //82 // - Layout dead keys (diacritic + letter) should be added as83 // arrays of two item arrays with hash keys equal to the84 // diacritic. See the "this.VKI_deadkey" object below the layout85 // definitions. In each two item child array, the second item86 // is what the diacritic would change the first item to.87 //88 // - To disable dead keys for a layout, simply assign true to the89 // DDK property of the layout (DDK = disable dead keys). See the90 // Numpad layout below for an example.91 //92 // - Note that any characters beyond the normal ASCII set should be93 // entered in escaped Unicode format. (eg \u00a3 = Pound symbol)94 // You can find Unicode values for characters here:95 // http://unicode.org/charts/96 //97 // - To remove a keyboard, just delete it, or comment it out of the98 // source code. If you decide to remove the US Int'l keyboard99 // layout, make sure you change the default layout (this.VKI_kt)100 // above so it references an existing layout. 101102 this.VKI_layout.Arabic = [ // Arabic Keyboard103 [["\u0630", "\u0651 "], ["1", "!", "\u00a1", "\u00b9"], ["2", "@", "\u00b2"], ["3", "#", "\u00b3"], ["4", "$", "\u00a4", "\u00a3"], ["5", "%", "\u20ac"], ["6", "^", "\u00bc"], ["7", "&", "\u00bd"], ["8", "*", "\u00be"], ["9", "(", "\u2018"], ["0", ")", "\u2019"], ["-", "_", "\u00a5"], ["=", "+", "\u00d7", "\u00f7"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],104 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["\u0636", "\u064e"], ["\u0635", "\u064b"], ["\u062b", "\u064f"], ["\u0642", "\u064c"], ["\u0641", "\u0644"], ["\u063a", "\u0625"], ["\u0639", "\u2018"], ["\u0647", "\u00f7"], ["\u062e", "\u00d7"], ["\u062d", "\u061b"], ["\u062c", "\u003c"], ["\u062f", "\u003e"], ["\u005c", "\u007c"]],105 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["\u0634", "\u0650"], ["\u0633", "\u064d"], ["\u064a", "\u005d"], ["\u0628", "\u005b"], ["\u0644", "\u0644"], ["\u0627", "\u0623"], ["\u062a", "\u0640"], ["\u0646", "\u060c"], ["\u0645", "\u002f"], ["\u0643", "\u003a"], ["\u0637", "\u0022"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],106 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["\u0626", "\u007e"], ["\u0621", "\u0652"], ["\u0624", "\u007d"], ["\u0631", "\u007b"], ["\u0644", "\u0644"], ["\u0649", "\u0622"], ["\u0629", "\u2019"], ["\u0648", "\u002c"], ["\u0632", "\u002e"], ["\u0638", "\u061f"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],107 [[" ", " ", " ", " "], ["Alt", "Alt"]]108 ]; this.VKI_layout.Arabic.lang = ["ar_SA"];109110 this.VKI_layout["Armenian East"] = [ // Eastern Armenian Keyboard111 [["\u055D", "\u055C"], [":", "1"], ["\u0571", "\u0541"], ["\u0575", "\u0545"], ["\u055B", "3"], [",", "4"], ["-", "9"], [".", "\u0587"], ["\u00AB", "("], ["\u00BB", ")"], ["\u0585", "\u0555"], ["\u057C", "\u054C"], ["\u056A", "\u053A"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],112 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["\u056D", "\u053D"], ["\u0582", "\u0552"], ["\u0567", "\u0537"], ["\u0580", "\u0550"], ["\u057F", "\u054F"], ["\u0565", "\u0535"], ["\u0568", "\u0538"], ["\u056B", "\u053B"], ["\u0578", "\u0548"], ["\u057A", "\u054A"], ["\u0579", "\u0549"], ["\u057B", "\u054B"], ["'", "\u055E"]],113 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["\u0561", "\u0531"], ["\u057D", "\u054D"], ["\u0564", "\u0534"], ["\u0586", "\u0556"], ["\u0584", "\u0554"], ["\u0570", "\u0540"], ["\u0573", "\u0543"], ["\u056F", "\u053F"], ["\u056C", "\u053C"], ["\u0569", "\u0539"], ["\u0583", "\u0553"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],114 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["\u0566", "\u0536"], ["\u0581", "\u0551"], ["\u0563", "\u0533"], ["\u057E", "\u054E"], ["\u0562", "\u0532"], ["\u0576", "\u0546"], ["\u0574", "\u0544"], ["\u0577", "\u0547"], ["\u0572", "\u0542"], ["\u056E", "\u053E"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],115 [[" ", " "]]116 ]; this.VKI_layout["Armenian East"].lang = ["hy_AM"];117118 this.VKI_layout["Armenian West"] = [ // Western Armenian Keyboard119 [["\u055D", "\u055C"], [":", "1"], ["\u0571", "\u0541"], ["\u0575", "\u0545"], ["\u055B", "3"], [",", "4"], ["-", "9"], [".", "\u0587"], ["\u00AB", "("], ["\u00BB", ")"], ["\u0585", "\u0555"], ["\u057C", "\u054C"], ["\u056A", "\u053A"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],120 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["\u056D", "\u053D"], ["\u057E", "\u054E"], ["\u0567", "\u0537"], ["\u0580", "\u0550"], ["\u0564", "\u0534"], ["\u0565", "\u0535"], ["\u0568", "\u0538"], ["\u056B", "\u053B"], ["\u0578", "\u0548"], ["\u0562", "\u0532"], ["\u0579", "\u0549"], ["\u057B", "\u054B"], ["'", "\u055E"]],121 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["\u0561", "\u0531"], ["\u057D", "\u054D"], ["\u057F", "\u054F"], ["\u0586", "\u0556"], ["\u056F", "\u053F"], ["\u0570", "\u0540"], ["\u0573", "\u0543"], ["\u0584", "\u0554"], ["\u056C", "\u053C"], ["\u0569", "\u0539"], ["\u0583", "\u0553"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],122 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["\u0566", "\u0536"], ["\u0581", "\u0551"], ["\u0563", "\u0533"], ["\u0582", "\u0552"], ["\u057A", "\u054A"], ["\u0576", "\u0546"], ["\u0574", "\u0544"], ["\u0577", "\u0547"], ["\u0572", "\u0542"], ["\u056E", "\u053E"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],123 [[" ", " "]]124 ]; this.VKI_layout["Armenian West"].lang = ["hy-arevmda"];125126 this.VKI_layout.Belarusian = [ // Belarusian Standard Keyboard127 [["\u0451", "\u0401"], ["1", "!"], ["2", '"'], ["3", "\u2116"], ["4", ";"], ["5", "%"], ["6", ":"], ["7", "?"], ["8", "*"], ["9", "("], ["0", ")"], ["-", "_"], ["=", "+"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],128 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["\u0439", "\u0419"], ["\u0446", "\u0426"], ["\u0443", "\u0423"], ["\u043a", "\u041a"], ["\u0435", "\u0415"], ["\u043d", "\u041d"], ["\u0433", "\u0413"], ["\u0448", "\u0428"], ["\u045e", "\u040e"], ["\u0437", "\u0417"], ["\u0445", "\u0425"], ["'", "'"], ["\\", "/"]],129 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["\u0444", "\u0424"], ["\u044b", "\u042b"], ["\u0432", "\u0412"], ["\u0430", "\u0410"], ["\u043f", "\u041f"], ["\u0440", "\u0420"], ["\u043e", "\u041e"], ["\u043b", "\u041b"], ["\u0434", "\u0414"], ["\u0436", "\u0416"], ["\u044d", "\u042d"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],130 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["/", "|"], ["\u044f", "\u042f"], ["\u0447", "\u0427"], ["\u0441", "\u0421"], ["\u043c", "\u041c"], ["\u0456", "\u0406"], ["\u0442", "\u0422"], ["\u044c", "\u042c"], ["\u0431", "\u0411"], ["\u044e", "\u042e"], [".", ","], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],131 [[" ", " "]]132 ]; this.VKI_layout.Belarusian.lang = ["be"];133134 this.VKI_layout.Belgian = [ // Belgian Standard Keyboard135 [["\u00b2", "\u00b3"], ["&", "1", "|"], ["\u00e9", "2", "@"], ['"', "3", "#"], ["'", "4"], ["(", "5"], ["\u00a7", "6", "^"], ["\u00e8", "7"], ["!", "8"], ["\u00e7", "9", "{"], ["\u00e0", "0", "}"], [")", "\u00b0"], ["-", "_"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],136 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["a", "A"], ["z", "Z"], ["e", "E", "\u20ac"], ["r", "R"], ["t", "T"], ["y", "Y"], ["u", "U"], ["i", "I"], ["o", "O"], ["p", "P"], ["\u005e", "\u00a8", "["], ["$", "*", "]"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],137 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["q", "Q"], ["s", "S"], ["d", "D"], ["f", "F"], ["g", "G"], ["h", "H"], ["j", "J"], ["k", "K"], ["l", "L"], ["m", "M"], ["\u00f9", "%", "\u00b4"], ["\u03bc", "\u00a3", "`"]],138 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["<", ">", "\\"], ["w", "W"], ["x", "X"], ["c", "C"], ["v", "V"], ["b", "B"], ["n", "N"], [",", "?"], [";", "."], [":", "/"], ["=", "+", "~"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],139 [[" ", " ", " ", " "], ["AltGr", "AltGr"]]140 ]; this.VKI_layout.Belgian.lang = ["nl_BE", "fr_BE"];141142 this.VKI_layout.Bengali = [ // Bengali Standard Keyboard143 [[""], ["1", "", "\u09E7"], ["2", "", "\u09E8"], ["3", "\u09CD\u09B0", "\u09E9"], ["4", "\u09B0\u09CD", "\u09EA"], ["5", "\u099C\u09CD\u09B0", "\u09EB"], ["6", "\u09A4\u09CD\u09B7", "\u09EC"], ["7", "\u0995\u09CD\u09B0", "\u09ED"], ["8", "\u09B6\u09CD\u09B0", "\u09EE"], ["9", "(", "\u09EF"], ["0", ")", "\u09E6"], ["-", "\u0983"], ["\u09C3", "\u098B", "\u09E2", "\u09E0"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],144 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["\u09CC", "\u0994", "\u09D7"], ["\u09C8", "\u0990"], ["\u09BE", "\u0986"], ["\u09C0", "\u0988", "\u09E3", "\u09E1"], ["\u09C2", "\u098A"], ["\u09AC", "\u09AD"], ["\u09B9", "\u0999"], ["\u0997", "\u0998"], ["\u09A6", "\u09A7"], ["\u099C", "\u099D"], ["\u09A1", "\u09A2", "\u09DC", "\u09DD"], ["\u09BC", "\u099E"]],145 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["\u09CB", "\u0993", "\u09F4", "\u09F5"], ["\u09C7", "\u098F", "\u09F6", "\u09F7"], ["\u09CD", "\u0985", "\u09F8", "\u09F9"], ["\u09BF", "\u0987", "\u09E2", "\u098C"], ["\u09C1", "\u0989"], ["\u09AA", "\u09AB"], ["\u09B0", "", "\u09F0", "\u09F1"], ["\u0995", "\u0996"], ["\u09A4", "\u09A5"], ["\u099A", "\u099B"], ["\u099F", "\u09A0"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],146 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], [""], ["\u0982", "\u0981", "\u09FA"], ["\u09AE", "\u09A3"], ["\u09A8"], ["\u09AC"], ["\u09B2"], ["\u09B8", "\u09B6"], [",", "\u09B7"], [".", "{"], ["\u09AF", "\u09DF"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],147 [[" ", " ", " ", " "], ["AltGr", "AltGr"]]148 ]; this.VKI_layout.Bengali.lang = ["bn_BD"];149150 this.VKI_layout['Bulgarian Ph'] = [ // Bulgarian Phonetic Keyboard151 [["\u0447", "\u0427"], ["1", "!"], ["2", "@"], ["3", "#"], ["4", "$"], ["5", "%"], ["6", "^"], ["7", "&"], ["8", "*"], ["9", "("], ["0", ")"], ["-", "_"], ["=", "+"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],152 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["\u044F", "\u042F"], ["\u0432", "\u0412"], ["\u0435", "\u0415"], ["\u0440", "\u0420"], ["\u0442", "\u0422"], ["\u044A", "\u042A"], ["\u0443", "\u0423"], ["\u0438", "\u0418"], ["\u043E", "\u041E"], ["\u043F", "\u041F"], ["\u0448", "\u0428"], ["\u0449", "\u0429"], ["\u044E", "\u042E"]],153 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["\u0430", "\u0410"], ["\u0441", "\u0421"], ["\u0434", "\u0414"], ["\u0444", "\u0424"], ["\u0433", "\u0413"], ["\u0445", "\u0425"], ["\u0439", "\u0419"], ["\u043A", "\u041A"], ["\u043B", "\u041B"], [";", ":"], ["'", '"'], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],154 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["\u0437", "\u0417"], ["\u044C", "\u042C"], ["\u0446", "\u0426"], ["\u0436", "\u0416"], ["\u0431", "\u0411"], ["\u043D", "\u041D"], ["\u043C", "\u041C"], [",", "<"], [".", ">"], ["/", "?"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],155 [[" ", " "]]156 ]; this.VKI_layout['Bulgarian Ph'].lang = ["bg_BG"];157158 this.VKI_layout['Bulgarian BDS'] = [ // Bulgarian BDS Keyboard159 [["`", "~"], ["1", "!"], ["2", "?"], ["3", "+"], ["4", '"'], ["5", "%"], ["6", "="], ["7", ":"], ["8", "/"], ["9", "_"], ["0", "\u2116"], ["-", "\u0406"], ["=", "V"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],160 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], [",", "\u044b"], ["\u0443", "\u0423"], ["\u0435", "\u0415"], ["\u0438", "\u0418"], ["\u0448", "\u0428"], ["\u0449", "\u0429"], ["\u043a", "\u041a"], ["\u0441", "\u0421"], ["\u0434", "\u0414"], ["\u0437", "\u0417"], ["\u0446", "\u0426"], [";", "\u00a7"], ["(", ")"]],161 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["\u044c", "\u042c"], ["\u044f", "\u042f"], ["\u0430", "\u0410"], ["\u043e", "\u041e"], ["\u0436", "\u0416"], ["\u0433", "\u0413"], ["\u0442", "\u0422"], ["\u043d", "\u041d"], ["\u0412", "\u0412"], ["\u043c", "\u041c"], ["\u0447", "\u0427"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],162 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["\u042e", "\u044e"], ["\u0439", "\u0419"], ["\u044a", "\u042a"], ["\u044d", "\u042d"], ["\u0444", "\u0424"], ["\u0445", "\u0425"], ["\u043f", "\u041f"], ["\u0440", "\u0420"], ["\u043b", "\u041b"], ["\u0431", "\u0411"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],163 [[" ", " "]]164 ];165166 this.VKI_layout.Burmese = [ // Burmese Keyboard167 [["\u1039`", "~"], ["\u1041", "\u100D"], ["\u1042", "\u100E"], ["\u1043", "\u100B"], ["\u1044", "\u1000\u103B\u1015\u103A"], ["\u1045", "%"], ["\u1046", "\u002F"], ["\u1047", "\u101B"], ["\u1048", "\u1002"], ["\u1049", "("], ["\u1040", ")"], ["-", "_"], ["=", "+"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],168 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["\u1006", "\u1029"], ["\u1010", "\u1040"], ["\u1014", "\u103F"], ["\u1019", "\u1023"], ["\u1021", "\u1024"], ["\u1015", "\u104C"], ["\u1000", "\u1009"], ["\u1004", "\u104D"], ["\u101E", "\u1025"], ["\u1005", "\u100F"], ["\u101F", "\u1027"], ["\u2018", "\u2019"], ["\u104F", "\u100B\u1039\u100C"]],169 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["\u200B\u1031", "\u1017"], ["\u200B\u103B", "\u200B\u103E"], ["\u200B\u102D", "\u200B\u102E"], ["\u200B\u103A","\u1004\u103A\u1039\u200B"], ["\u200B\u102B", "\u200B\u103D"], ["\u200B\u1037", "\u200B\u1036"], ["\u200B\u103C", "\u200B\u1032"], ["\u200B\u102F", "\u200B\u102F"], ["\u200B\u1030", "\u200B\u1030"], ["\u200B\u1038", "\u200B\u102B\u103A"], ["\u1012", "\u1013"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],170 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["\u1016", "\u1007"], ["\u1011", "\u100C"], ["\u1001", "\u1003"], ["\u101C", "\u1020"], ["\u1018", "\u1026"], ["\u100A", "\u1008"], ["\u200B\u102C", "\u102A"], ["\u101A", "\u101B"], ["\u002E", "\u101B"], ["\u104B", "\u104A"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],171 [[" ", " "]]172 ]; this.VKI_layout.Burmese.lang = ["ms_MY"];173174 this.VKI_layout.Czech = [ // Czech Keyboard175 [[";", "\u00b0", "`", "~"], ["+", "1", "!"], ["\u011B", "2", "@"], ["\u0161", "3", "#"], ["\u010D", "4", "$"], ["\u0159", "5", "%"], ["\u017E", "6", "^"], ["\u00FD", "7", "&"], ["\u00E1", "8", "*"], ["\u00ED", "9", "("], ["\u00E9", "0", ")"], ["=", "%", "-", "_"], ["\u00B4", "\u02c7", "=", "+"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],176 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["q", "Q"], ["w", "W"], ["e", "E", "\u20AC"], ["r", "R"], ["t", "T"], ["y", "Y"], ["u", "U"], ["i", "I"], ["o", "O"], ["p", "P"], ["\u00FA", "/", "[", "{"], [")", "(", "]", "}"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],177 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["a", "A"], ["s", "S"], ["d", "D"], ["f", "F"], ["g", "G"], ["h", "H"], ["j", "J"], ["k", "K"], ["l", "L"], ["\u016F", '"', ";", ":"], ["\u00A7", "!", "\u00a4", "^"], ["\u00A8", "'", "\\", "|"]],178 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["\\", "|", "", "\u02dd"], ["z", "Z"], ["x", "X"], ["c", "C"], ["v", "V"], ["b", "B"], ["n", "N"], ["m", "M"], [",", "?", "<", "\u00d7"], [".", ":", ">", "\u00f7"], ["-", "_", "/", "?"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],179 [[" ", " ", " ", " "], ["Alt", "Alt"]]180 ]; this.VKI_layout.Czech.lang = ["cs_CZ"];181182 this.VKI_layout.Danish = [ // Danish Standard Keyboard183 [["\u00bd", "\u00a7"], ["1", "!"], ["2", '"', "@"], ["3", "#", "\u00a3"], ["4", "\u00a4", "$"], ["5", "%", "\u20ac"], ["6", "&"], ["7", "/", "{"], ["8", "(", "["], ["9", ")", "]"], ["0", "=", "}"], ["+", "?"], ["\u00b4", "`", "|"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],184 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["q", "Q"], ["w", "W"], ["e", "E", "\u20ac"], ["r", "R"], ["t", "T"], ["y", "Y"], ["u", "U"], ["i", "I"], ["o", "O"], ["p", "P"], ["\u00e5", "\u00c5"], ["\u00a8", "^", "~"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],185 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["a", "A"], ["s", "S"], ["d", "D"], ["f", "F"], ["g", "G"], ["h", "H"], ["j", "J"], ["k", "K"], ["l", "L"], ["\u00e6", "\u00c6"], ["\u00f8", "\u00d8"], ["'", "*"]],186 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["<", ">", "\\"], ["z", "Z"], ["x", "X"], ["c", "C"], ["v", "V"], ["b", "B"], ["n", "N"], ["m", "M", "\u03bc", "\u039c"], [",", ";"], [".", ":"], ["-", "_"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],187 [[" ", " ", " ", " "], ["AltGr", "AltGr"]]188 ]; this.VKI_layout.Danish.lang = ["da_DK"];189190 this.VKI_layout.Dutch = [ // Dutch Standard Keyboard191 [["@", "\u00a7", "\u00ac"], ["1", "!", "\u00b9"], ["2", '"', "\u00b2"], ["3", "#", "\u00b3"], ["4", "$", "\u00bc"], ["5", "%", "\u00bd"], ["6", "&", "\u00be"], ["7", "_", "\u00a3"], ["8", "(", "{"], ["9", ")", "}"], ["0", "'"], ["/", "?", "\\"], ["\u00b0", "~", "\u00b8"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],192 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["q", "Q"], ["w", "W"], ["e", "E", "\u20ac"], ["r", "R", "\u00b6"], ["t", "T"], ["y", "Y"], ["u", "U"], ["i", "I"], ["o", "O"], ["p", "P"], ["\u00a8", "^"], ["*", "|"], ["<", ">"]],193 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["a", "A"], ["s", "S", "\u00df"], ["d", "D"], ["f", "F"], ["g", "G"], ["h", "H"], ["j", "J"], ["k", "K"], ["l", "L"], ["+", "\u00b1"], ["\u00b4", "\u0060"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],194 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["]", "[", "\u00a6"], ["z", "Z", "\u00ab"], ["x", "X", "\u00bb"], ["c", "C", "\u00a2"], ["v", "V"], ["b", "B"], ["n", "N"], ["m", "M", "\u00b5"], [",", ";"], [".", ":", "\u00b7"], ["-", "="], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],195 [[" ", " ", " ", " "], ["AltGr", "AltGr"]]196 ]; this.VKI_layout.Dutch.lang = ["nl_NL"];197198 this.VKI_layout.Dvorak = [ // Dvorak Keyboard199 [["`", "~"], ["1", "!"], ["2", "@"], ["3", "#"], ["4", "$"], ["5", "%"], ["6", "^"], ["7", "&"], ["8", "*"], ["9", "("], ["0", ")"], ["[", "{"], ["]", "}"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],200 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')],["'", '"'], [",", "<"], [".", ">"], ["p", "P"], ["y", "Y"], ["f", "F"], ["g", "G"], ["c", "C"], ["r", "R"], ["l", "L"], ["/", "?"], ["=", "+"], ["\\", "|"]],201 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["a", "A"], ["o", "O"], ["e", "E"], ["u", "U"], ["i", "I"], ["d", "D"], ["h", "H"], ["t", "T"], ["n", "N"], ["s", "S"], ["-", "_"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],202 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], [";", ":"], ["q", "Q"], ["j", "J"], ["k", "K"], ["x", "X"], ["b", "B"], ["m", "M"], ["w", "W"], ["v", "V"], ["z", "Z"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],203 [[" ", " "]]204 ];205206 this.VKI_layout.Farsi = [ // Farsi Keyboard207 [["\u067e", "\u0651 "], ["1", "!", "\u00a1", "\u00b9"], ["2", "@", "\u00b2"], ["3", "#", "\u00b3"], ["4", "$", "\u00a4", "\u00a3"], ["5", "%", "\u20ac"], ["6", "^", "\u00bc"], ["7", "&", "\u00bd"], ["8", "*", "\u00be"], ["9", "(", "\u2018"], ["0", ")", "\u2019"], ["-", "_", "\u00a5"], ["=", "+", "\u00d7", "\u00f7"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],208 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["\u0636", "\u064e"], ["\u0635", "\u064b"], ["\u062b", "\u064f"], ["\u0642", "\u064c"], ["\u0641", "\u0644"], ["\u063a", "\u0625"], ["\u0639", "\u2018"], ["\u0647", "\u00f7"], ["\u062e", "\u00d7"], ["\u062d", "\u061b"], ["\u062c", "\u003c"], ["\u0686", "\u003e"], ["\u0698", "\u007c"]],209 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["\u0634", "\u0650"], ["\u0633", "\u064d"], ["\u064a", "\u005d"], ["\u0628", "\u005b"], ["\u0644", "\u0644"], ["\u0627", "\u0623"], ["\u062a", "\u0640"], ["\u0646", "\u060c"], ["\u0645", "\u005c"], ["\u06af", "\u003a"], ["\u0643", "\u0022"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],210 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["\u0626", "\u007e"], ["\u0621", "\u0652"], ["\u0632", "\u007d"], ["\u0631", "\u007b"], ["\u0630", "\u0644"], ["\u062f", "\u0622"], ["\u0626", "\u0621"], ["\u0648", "\u002c"], [".", "\u002e"], ["/", "\u061f"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],211 [[" ", " ", " ", " "], ["Alt", "Alt"]]212 ]; this.VKI_layout.Farsi.lang = ["fa"];213214 this.VKI_layout.French = [ // French Standard Keyboard215 [["\u00b2", "\u00b3"], ["&", "1"], ["\u00e9", "2", "~"], ['"', "3", "#"], ["'", "4", "{"], ["(", "5", "["], ["-", "6", "|"], ["\u00e8", "7", "\u0060"], ["_", "8", "\\"], ["\u00e7", "9", "\u005e"], ["\u00e0", "0", "\u0040"], [")", "\u00b0", "]"], ["=", "+", "}"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],216 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["a", "A"], ["z", "Z"], ["e", "E", "\u20ac"], ["r", "R"], ["t", "T"], ["y", "Y"], ["u", "U"], ["i", "I"], ["o", "O"], ["p", "P"], ["^", "\u00a8"], ["$", "\u00a3", "\u00a4"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],217 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["q", "Q"], ["s", "S"], ["d", "D"], ["f", "F"], ["g", "G"], ["h", "H"], ["j", "J"], ["k", "K"], ["l", "L"], ["m", "M"], ["\u00f9", "%"], ["*", "\u03bc"]],218 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["<", ">"], ["w", "W"], ["x", "X"], ["c", "C"], ["v", "V"], ["b", "B"], ["n", "N"], [",", "?"], [";", "."], [":", "/"], ["!", "\u00a7"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],219 [[" ", " ", " ", " "], ["AltGr", "AltGr"]]220 ]; this.VKI_layout.French.lang = ["fr_FR"];221222 this.VKI_layout.German = [ // German Standard Keyboard223 [["\u005e", "\u00b0"], ["1", "!"], ["2", '"', "\u00b2"], ["3", "\u00a7", "\u00b3"], ["4", "$"], ["5", "%"], ["6", "&"], ["7", "/", "{"], ["8", "(", "["], ["9", ")", "]"], ["0", "=", "}"], ["\u00df", "?", "\\"], ["\u00b4", "\u0060"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],224 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["q", "Q", "\u0040"], ["w", "W"], ["e", "E", "\u20ac"], ["r", "R"], ["t", "T"], ["z", "Z"], ["u", "U"], ["i", "I"], ["o", "O"], ["p", "P"], ["\u00fc", "\u00dc"], ["+", "*", "~"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],225 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["a", "A"], ["s", "S"], ["d", "D"], ["f", "F"], ["g", "G"], ["h", "H"], ["j", "J"], ["k", "K"], ["l", "L"], ["\u00f6", "\u00d6"], ["\u00e4", "\u00c4"], ["#", "'"]],226 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["<", ">", "\u00a6"], ["y", "Y"], ["x", "X"], ["c", "C"], ["v", "V"], ["b", "B"], ["n", "N"], ["m", "M", "\u00b5"], [",", ";"], [".", ":"], ["-", "_"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],227 [[" ", " ", " ", " "], ["AltGr", "AltGr"]]228 ]; this.VKI_layout.German.lang = ["de_DE"];229230 this.VKI_layout.Greek = [ // Greek Standard Keyboard231 [["`", "~"], ["1", "!"], ["2", "@", "\u00b2"], ["3", "#", "\u00b3"], ["4", "$", "\u00a3"], ["5", "%", "\u00a7"], ["6", "^", "\u00b6"], ["7", "&"], ["8", "*", "\u00a4"], ["9", "(", "\u00a6"], ["0", ")", "\u00ba"], ["-", "_", "\u00b1"], ["=", "+", "\u00bd"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],232 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], [";", ":"], ["\u03c2", "^"], ["\u03b5", "\u0395"], ["\u03c1", "\u03a1"], ["\u03c4", "\u03a4"], ["\u03c5", "\u03a5"], ["\u03b8", "\u0398"], ["\u03b9", "\u0399"], ["\u03bf", "\u039f"], ["\u03c0", "\u03a0"], ["[", "{", "\u201c"], ["]", "}", "\u201d"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],233 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["\u03b1", "\u0391"], ["\u03c3", "\u03a3"], ["\u03b4", "\u0394"], ["\u03c6", "\u03a6"], ["\u03b3", "\u0393"], ["\u03b7", "\u0397"], ["\u03be", "\u039e"], ["\u03ba", "\u039a"], ["\u03bb", "\u039b"], ["\u0384", "\u00a8", "\u0385"], ["'", '"'], ["\\", "|", "\u00ac"]],234 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["<", ">"], ["\u03b6", "\u0396"], ["\u03c7", "\u03a7"], ["\u03c8", "\u03a8"], ["\u03c9", "\u03a9"], ["\u03b2", "\u0392"], ["\u03bd", "\u039d"], ["\u03bc", "\u039c"], [",", "<"], [".", ">"], ["/", "?"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],235 [[" ", " ", " ", " "], ["AltGr", "AltGr"]]236 ]; this.VKI_layout.Greek.lang = ["el_GR"];237238 this.VKI_layout.Hebrew = [ // Hebrew Standard Keyboard239 [["~", "`"], ["1", "!"], ["2", "@"], ["3", "#"], ["4" , "$", "\u20aa"], ["5" , "%"], ["6", "^"], ["7", "&"], ["8", "*"], ["9", ")"], ["0", "("], ["-", "_"], ["=", "+"], ["\\", "|"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],240 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["/", "Q"], ["'", "W"], ["\u05e7", "E", "\u20ac"], ["\u05e8", "R"], ["\u05d0", "T"], ["\u05d8", "Y"], ["\u05d5", "U", "\u05f0"], ["\u05df", "I"], ["\u05dd", "O"], ["\u05e4", "P"], ["]", "}"], ["[", "{"]],241 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["\u05e9", "A"], ["\u05d3", "S"], ["\u05d2", "D"], ["\u05db", "F"], ["\u05e2", "G"], ["\u05d9", "H", "\u05f2"], ["\u05d7", "J", "\u05f1"], ["\u05dc", "K"], ["\u05da", "L"], ["\u05e3", ":"], ["," , '"'], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],242 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["\u05d6", "Z"], ["\u05e1", "X"], ["\u05d1", "C"], ["\u05d4", "V"], ["\u05e0", "B"], ["\u05de", "N"], ["\u05e6", "M"], ["\u05ea", ">"], ["\u05e5", "<"], [".", "?"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],243 [[" ", " ", " ", " "], ["AltGr", "AltGr"]]244 ]; this.VKI_layout.Hebrew.lang = ["he_IL"];245246 this.VKI_layout.Hindi = [ // Hindi Traditional Keyboard247 [["\u200d", "\u200c", "`", "~"], ["1", "\u090D", "\u0967", "!"], ["2", "\u0945", "\u0968", "@"], ["3", "\u094D\u0930", "\u0969", "#"], ["4", "\u0930\u094D", "\u096A", "$"], ["5", "\u091C\u094D\u091E", "\u096B", "%"], ["6", "\u0924\u094D\u0930", "\u096C", "^"], ["7", "\u0915\u094D\u0937", "\u096D", "&"], ["8", "\u0936\u094D\u0930", "\u096E", "*"], ["9", "(", "\u096F", "("], ["0", ")", "\u0966", ")"], ["-", "\u0903", "-", "_"], ["\u0943", "\u090B", "=", "+"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],248 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["\u094C", "\u0914"], ["\u0948", "\u0910"], ["\u093E", "\u0906"], ["\u0940", "\u0908"], ["\u0942", "\u090A"], ["\u092C", "\u092D"], ["\u0939", "\u0919"], ["\u0917", "\u0918"], ["\u0926", "\u0927"], ["\u091C", "\u091D"], ["\u0921", "\u0922", "[", "{"], ["\u093C", "\u091E", "]", "}"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],249 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["\u094B", "\u0913"], ["\u0947", "\u090F"], ["\u094D", "\u0905"], ["\u093F", "\u0907"], ["\u0941", "\u0909"], ["\u092A", "\u092B"], ["\u0930", "\u0931"], ["\u0915", "\u0916"], ["\u0924", "\u0925"], ["\u091A", "\u091B", ";", ":"], ["\u091F", "\u0920", "'", '"'], ["\u0949", "\u0911", "\\", "|"]],250 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], [""], ["\u0902", "\u0901", "", "\u0950"], ["\u092E", "\u0923"], ["\u0928"], ["\u0935"], ["\u0932", "\u0933"], ["\u0938", "\u0936"], [",", "\u0937", ",", "<"], [".", "\u0964", ".", ">"], ["\u092F", "\u095F", "/", "?"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],251 [[" ", " ", " ", " "], ["AltGr", "AltGr"]]252 ]; this.VKI_layout.Hindi.lang = ["hi_IN"];253254 this.VKI_layout.Hungarian = [ // Hungarian Standard Keyboard255 [["0", "\u00a7"], ["1", "'", "\u007e"], ["2", '"', "\u02c7"], ["3", "+", "\u02c6"], ["4", "!", "\u02d8"], ["5", "%", "\u00b0"], ["6", "/", "\u02db"], ["7", "=", "\u0060"], ["8", "(", "\u02d9"], ["9", ")", "\u00b4"], ["\u00f6", "\u00d6", "\u02dd"], ["\u00fc", "\u00dc", "\u00a8"], ["\u00f3", "\u00d3", "\u00b8"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],256 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["q", "Q", "\u005c"], ["w", "W", "\u007c"], ["e", "E", "\u00c4"], ["r", "R"], ["t", "T"], ["z", "Z"], ["u", "U", "\u20ac"], ["i", "I", "\u00cd"], ["o", "O"], ["p", "P"], ["\u0151", "\u0150", "\u00f7"], ["\u00fa", "\u00da", "\u00d7"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],257 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["a", "A", "\u00e4"], ["s", "S","\u0111"], ["d", "D","\u0110"], ["f", "F","\u005b"], ["g", "G","\u005d"], ["h", "H"], ["j", "J","\u00ed"], ["k", "K","\u0141"], ["l", "L","\u0142"], ["\u00e9", "\u00c9","\u0024"], ["\u00e1", "\u00c1","\u00df"], ["\u0171", "\u0170","\u00a4"]],258 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["\u00ed", "\u00cd","\u003c"], ["y", "Y","\u003e"], ["x", "X","\u0023"], ["c", "C","\u0026"], ["v", "V","\u0040"], ["b", "B","\u007b"], ["n", "N","\u007d"], ["m", "M","\u003c"], [",", "?","\u003b"], [".", ":","\u003e"], ["-", "_","\u002a"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],259 [[" ", " ", " ", " "], ["AltGr", "AltGr"]]260 ]; this.VKI_layout.Hungarian.lang = ["hu_HU"];261262 this.VKI_layout.Italian = [ // Italian Standard Keyboard263 [["\u005c", "\u007c"], ["1", "!"], ["2", '"'], ["3", "\u00a3"], ["4", "$", "\u20ac"], ["5", "%"], ["6", "&"], ["7", "/"], ["8", "("], ["9", ")"], ["0", "="], ["'", "?"], ["\u00ec", "\u005e"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],264 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["q", "Q"], ["w", "W"], ["e", "E", "\u20ac"], ["r", "R"], ["t", "T"], ["y", "Y"], ["u", "U"], ["i", "I"], ["o", "O"], ["p", "P"], ["\u00e8", "\u00e9", "[", "{"], ["+", "*", "]", "}"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],265 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["a", "A"], ["s", "S"], ["d", "D"], ["f", "F"], ["g", "G"], ["h", "H"], ["j", "J"], ["k", "K"], ["l", "L"], ["\u00f2", "\u00e7", "@"], ["\u00e0", "\u00b0", "#"], ["\u00f9", "\u00a7"]],266 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["<", ">"], ["z", "Z"], ["x", "X"], ["c", "C"], ["v", "V"], ["b", "B"], ["n", "N"], ["m", "M"], [",", ";"], [".", ":"], ["-", "_"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],267 [[" ", " ", " ", " "], ["AltGr", "AltGr"]]268 ]; this.VKI_layout.Italian.lang = ["it_IT"];269270 this.VKI_layout["\u65e5\u672c\u8a9e"] = [ // Basic Japanese Hiragana/Katakana Keyboard271 [["\uff5e"], ["\u306c", "\u30cc"], ["\u3075", '\u30d5'], ["\u3042", "\u30a2", "\u3041", "\u30a1"], ["\u3046", "\u30a6", "\u3045", "\u30a5"], ["\u3048", "\u30a8", "\u3047", "\u30a7"], ["\u304a", "\u30aa", "\u3049","\u30a9"], ["\u3084", "\u30e4", "\u3083", "\u30e3"], ["\u3086", "\u30e6", "\u3085", "\u30e5"], ["\u3088", "\u30e8", "\u3087", "\u30e7"], ["\u308f", "\u30ef", "\u3092", "\u30f2"], ["\u307b", "\u30db", "\u30fc", "\uff1d"], ["\u3078", "\u30d8" ,"\uff3e", "\uff5e"], ['"', '"', "\uffe5", "\uff5c"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],272 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["\u305f", "\u30bf"], ["\u3066", "\u30c6"], ["\u3044", "\u30a4", "\u3043", "\u30a3"], ["\u3059", "\u30b9"], ["\u304b", "\u30ab"], ["\u3093", "\u30f3"], ["\u306a", "\u30ca"], ["\u306b", "\u30cb"], ["\u3089", "\u30e9"], ["\u305b", "\u30bb"],["\u3001", "\u3001", "\uff20", "\u2018"],["\u3002", "\u3002", "\u300c", "\uff5b"],["\uffe5","", "", "\uff0a"]],273 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["\u3061", "\u30c1"], ["\u3068", "\u30c8"], ["\u3057", "\u30b7"], ["\u306f", "\u30cf"], ["\u304d", "\u30ad"], ["\u304f", "\u30af"], ["\u307e", "\u30de"], ["\u306e", "\u30ce"], ["\u308c", "\u30ec", "\uff1b", "\uff0b"], ["\u3051", "\u30b1", "\uff1a", "\u30f6"], ["\u3080", "\u30e0", "\u300d", "\uff5d"],[rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],274 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["\u3064", "\u30c4"], ["\u3055", "\u30b5"], ["\u305d", "\u30bd"], ["\u3072", "\u30d2"], ["\u3053", "\u30b3"], ["\u307f", "\u30df"], ["\u3082", "\u30e2"], ["\u306d", "\u30cd", "\u3001", "\uff1c"], ["\u308b", "\u30eb", "\u3002", "\uff1e"], ["\u3081", "\u30e1", "\u30fb", "\uff1f"], ["\u308d", "\u30ed", "", "\uff3f"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],275 [["AltLk", "AltLk"], [" ", " ", " ", " "], ["Alt", "Alt"]]276 ]; this.VKI_layout["\u65e5\u672c\u8a9e"].lang = ["ja_JP"];277278 this.VKI_layout.Kazakh = [ // Kazakh Standard Keyboard279 [["(", ")"], ['"', "!"], ["\u04d9", "\u04d8"], ["\u0456", "\u0406"], ["\u04a3", "\u04a2"], ["\u0493", "\u0492"], [",", ";"], [".", ":"], ["\u04af", "\u04ae"], ["\u04b1", "\u04b0"], ["\u049b", "\u049a"], ["\u04e9", "\u04e8"], ["\u04bb", "\u04ba"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],280 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["\u0439", "\u0419"], ["\u0446", "\u0426"], ["\u0443", "\u0423"], ["\u043A", "\u041A"], ["\u0435", "\u0415"], ["\u043D", "\u041D"], ["\u0433", "\u0413"], ["\u0448", "\u0428"], ["\u0449", "\u0429"], ["\u0437", "\u0417"], ["\u0445", "\u0425"], ["\u044A", "\u042A"], ["\\", "/"]],281 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["\u0444", "\u0424"], ["\u044B", "\u042B"], ["\u0432", "\u0412"], ["\u0430", "\u0410"], ["\u043F", "\u041F"], ["\u0440", "\u0420"], ["\u043E", "\u041E"], ["\u043B", "\u041B"], ["\u0434", "\u0414"], ["\u0436", "\u0416"], ["\u044D", "\u042D"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],282 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["\\", "|"], ["\u044F", "\u042F"], ["\u0447", "\u0427"], ["\u0441", "\u0421"], ["\u043C", "\u041C"], ["\u0438", "\u0418"], ["\u0442", "\u0422"], ["\u044C", "\u042C"], ["\u0431", "\u0411"], ["\u044E", "\u042E"], ["\u2116", "?"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],283 [[" ", " "]]284 ]; this.VKI_layout.Kazakh.lang = ["kk"];285286 this.VKI_layout.Lithuanian = [ // Lithuanian Standard Keyboard287 [["`", "~"], ["\u0105", "\u0104"], ["\u010D", "\u010C"], ["\u0119", "\u0118"], ["\u0117", "\u0116"], ["\u012F", "\u012E"], ["\u0161", "\u0160"], ["\u0173", "\u0172"], ["\u016B", "\u016A"], ["\u201E", "("], ["\u201C", ")"], ["-", "_"], ["\u017E", "\u017D"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],288 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["q", "Q"], ["w", "W"], ["e", "E"], ["r", "R"], ["t", "T"], ["y", "Y"], ["u", "U"], ["i", "I"], ["o", "O"], ["p", "P"], ["[", "{"], ["]", "}"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],289 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["a", "A"], ["s", "S"], ["d", "D"], ["f", "F"], ["g", "G"], ["h", "H"], ["j", "J"], ["k", "K"], ["l", "L"], [";", ":"], ["'", '"'], ["\\", "|"]],290 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["\u2013", "\u20AC"], ["z", "Z"], ["x", "X"], ["c", "C"], ["v", "V"], ["b", "B"], ["n", "N"], ["m", "M"], [",", "<"], [".", ">"], ["/", "?"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],291 [[" ", " "]]292 ]; this.VKI_layout.Lithuanian.lang = ["lt_LT"];293294 this.VKI_layout.Macedonian = [ // Macedonian Cyrillic Standard Keyboard295 [["`", "~"], ["1", "!"], ["2", "\u201E"], ["3", "\u201C"], ["4", "\u2019"], ["5", "%"], ["6", "\u2018"], ["7", "&"], ["8", "*"], ["9", "("], ["0", ")"], ["-", "_"], ["=", "+"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],296 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["\u0459", "\u0409"], ["\u045A", "\u040A"], ["\u0435", "\u0415", "\u20AC"], ["\u0440", "\u0420"], ["\u0442", "\u0422"], ["\u0455", "\u0405"], ["\u0443", "\u0423"], ["\u0438", "\u0418"], ["\u043E", "\u041E"], ["\u043F", "\u041F"], ["\u0448", "\u0428", "\u0402"], ["\u0453", "\u0403", "\u0452"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],297 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["\u0430", "\u0410"], ["\u0441", "\u0421"], ["\u0434", "\u0414"], ["\u0444", "\u0424", "["], ["\u0433", "\u0413", "]"], ["\u0445", "\u0425"], ["\u0458", "\u0408"], ["\u043A", "\u041A"], ["\u043B", "\u041B"], ["\u0447", "\u0427", "\u040B"], ["\u045C", "\u040C", "\u045B"], ["\u0436", "\u0416"]],298 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["\u0451", "\u0401"], ["\u0437", "\u0417"], ["\u045F", "\u040F"], ["\u0446", "\u0426"], ["\u0432", "\u0412", "@"], ["\u0431", "\u0411", "{"], ["\u043D", "\u041D", "}"], ["\u043C", "\u041C", "\u00A7"], [",", ";"], [".", ":"], ["/", "?"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],299 [[" ", " ", " ", " "], ["AltGr", "AltGr"]]300 ]; this.VKI_layout.Macedonian.lang = ["mk_MK"];301302 this.VKI_layout.Norwegian = [ // Norwegian Standard Keyboard303 [["|", "\u00a7"], ["1", "!"], ["2", '"', "@"], ["3", "#", "\u00a3"], ["4", "\u00a4", "$"], ["5", "%"], ["6", "&"], ["7", "/", "{"], ["8", "(", "["], ["9", ")", "]"], ["0", "=", "}"], ["+", "?"], ["\\", "`", "\u00b4"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],304 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["q", "Q"], ["w", "W"], ["e", "E", "\u20ac"], ["r", "R"], ["t", "T"], ["y", "Y"], ["u", "U"], ["i", "I"], ["o", "O"], ["p", "P"], ["\u00e5", "\u00c5"], ["\u00a8", "^", "~"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],305 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["a", "A"], ["s", "S"], ["d", "D"], ["f", "F"], ["g", "G"], ["h", "H"], ["j", "J"], ["k", "K"], ["l", "L"], ["\u00f8", "\u00d8"], ["\u00e6", "\u00c6"], ["'", "*"]],306 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["<", ">"], ["z", "Z"], ["x", "X"], ["c", "C"], ["v", "V"], ["b", "B"], ["n", "N"], ["m", "M", "\u03bc", "\u039c"], [",", ";"], [".", ":"], ["-", "_"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],307 [[" ", " ", " ", " "], ["AltGr", "AltGr"]]308 ]; this.VKI_layout.Norwegian.lang = ["nb_NO", "nb", "nn"];309310 this.VKI_layout.Numpad = [ // Number pad311 [["$"], ["\u00a3"], ["\u20ac"], ["\u00a5"], ["/"], ["^"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],312 [["."], ["7"], ["8"], ["9"], ["*"], ["<"], ["("], ["["]],313 [["="], ["4"], ["5"], ["6"], ["-"], [">"], [")"], ["]"]],314 [["0"], ["1"], ["2"], ["3"], ["+"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],315 [[" "]]316 ]; this.VKI_layout.Numpad.DDK = true;317318 this.VKI_layout.Pashto = [ // Pashto Keyboard319 [["\u200d", "\u00f7", "\u0060"], ["\u06f1", "\u0021", "\u0060"], ["\u06f2", "\u066c", "\u0040"], ["\u06f3", "\u066b", "\u066b"], ["\u06f4", "\u00a4", "\u00a3"], ["\u06f5", "\u066a", "\u0025"], ["\u06f6", "\u00d7", "\u005e"], ["\u06f7", "\u00ab", "\u0026"], ["\u06f8", "\u00bb", "\u002a"], ["\u06f9", "(", "\ufdf2"], ["\u06f0", ")", "\ufefb"], ["\u002d", "\u0640", "\u005f"], ["\u003d", "\u002b", "\ufe87", "\u00f7"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],320 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["\u0636", "\u0652", "\u06d5"], ["\u0635", "\u064c", "\u0653"], ["\u062b", "\u064d", "\u20ac"], ["\u0642", "\u064b", "\ufef7"], ["\u0641", "\u064f", "\ufef5"], ["\u063a", "\u0650", "\u0027"], ["\u0639", "\u064e", "\ufe84"], ["\u0647", "\u0651", "\u0670"], ["\u062e", "\u0681", "\u0027"], ["\u062d", "\u0685", "\u0022"], ["\u062c", "\u005d", "\u007d"], ["\u0686", "\u005b", "\u007b"], ["\u005c", "\u066d", "\u007c"]],321 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["\u0634", "\u069a", "\ufbb0"], ["\u0633", "\u06cd", "\u06d2"], ["\u06cc", "\u064a", "\u06d2"], ["\u0628", "\u067e", "\u06ba"], ["\u0644", "\u0623", "\u06b7"], ["\u0627", "\u0622", "\u0671"], ["\u062a", "\u067c", "\u0679"], ["\u0646", "\u06bc", "\u003c"], ["\u0645", "\u0629", "\u003e"], ["\u06a9", "\u003a", "\u0643"], ["\u06af", "\u061b", "\u06ab"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],322 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["\u0638", "\u0626", "\u003f"], ["\u0637", "\u06d0", "\u003b"], ["\u0632", "\u0698", "\u0655"], ["\u0631", "\u0621", "\u0654"], ["\u0630", "\u200c", "\u0625"], ["\u062f", "\u0689", "\u0688"], ["\u0693", "\u0624", "\u0691"], ["\u0648", "\u060c", "\u002c"], ["\u0696", "\u002e", "\u06c7"], ["\u002f", "\u061f", "\u06c9"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard'), "\u064d"]],323 [[" ", " ", " ", " "], ["Alt", "Alt"]]324 ]; this.VKI_layout.Pashto.lang = ["ps"];325326 this.VKI_layout.Pinyin = [ // Pinyin Keyboard327 [["`", "~", "\u4e93", "\u301C"], ["1", "!", "\uFF62"], ["2", "@", "\uFF63"], ["3", "#", "\u301D"], ["4", "$", "\u301E"], ["5", "%", "\u301F"], ["6", "^", "\u3008"], ["7", "&", "\u3009"], ["8", "*", "\u302F"], ["9", "(", "\u300A"], ["0", ")", "\u300B"], ["-", "_", "\u300E"], ["=", "+", "\u300F"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],328 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["q", "Q", "\u0101", "\u0100"], ["w", "W", "\u00E1", "\u00C1"], ["e", "E", "\u01CE", "\u01CD"], ["r", "R", "\u00E0", "\u00C0"], ["t", "T", "\u0113", "\u0112"], ["y", "Y", "\u00E9", "\u00C9"], ["u", "U", "\u011B", "\u011A"], ["i", "I", "\u00E8", "\u00C8"], ["o", "O", "\u012B", "\u012A"], ["p", "P", "\u00ED", "\u00CD"], ["[", "{", "\u01D0", "\u01CF"], ["]", "}", "\u00EC", "\u00CC"], ["\\", "|", "\u3020"]],329 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["a", "A", "\u014D", "\u014C"], ["s", "S", "\u00F3", "\u00D3"], ["d", "D", "\u01D2", "\u01D1"], ["f", "F", "\u00F2", "\u00D2"], ["g", "G", "\u00fc", "\u00dc"], ["h", "H", "\u016B", "\u016A"], ["j", "J", "\u00FA", "\u00DA"], ["k", "K", "\u01D4", "\u01D3"], ["l", "L", "\u00F9", "\u00D9"], [";", ":"], ["'", '"'], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],330 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["z", "Z", "\u01D6", "\u01D5"], ["x", "X", "\u01D8", "\u01D7"], ["c", "C", "\u01DA", "\u01D9"], ["v", "V", "\u01DC", "\u01DB"], ["b", "B"], ["n", "N"], ["m", "M"], [",", "<", "\u3001"], [".", ">", "\u3002"], ["/", "?"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],331 [["AltLk", "AltLk"], [" ", " ", " ", " "], ["Alt", "Alt"]]332 ]; this.VKI_layout.Pinyin.lang = ["zh-CN"];333334 this.VKI_layout["Polish Prog"] = [ // Polish Programmers Keyboard335 [["`", "~"], ["1", "!"], ["2", "@"], ["3", "#"], ["4", "$"], ["5", "%"], ["6", "^"], ["7", "&"], ["8", "*"], ["9", "("], ["0", ")"], ["-", "_"], ["=", "+"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],336 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["q", "Q"], ["w", "W"], ["e", "E", "\u0119", "\u0118"], ["r", "R"], ["t", "T"], ["y", "Y"], ["u", "U"], ["i", "I"], ["o", "O", "\u00f3", "\u00d3"], ["p", "P"], ["[", "{"], ["]", "}"], ["\\", "|"]],337 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["a", "A", "\u0105", "\u0104"], ["s", "S", "\u015b", "\u015a"], ["d", "D"], ["f", "F"], ["g", "G"], ["h", "H"], ["j", "J"], ["k", "K"], ["l", "L", "\u0142", "\u0141"], [";", ":"], ["'", '"'], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],338 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["z", "Z", "\u017c", "\u017b"], ["x", "X", "\u017a", "\u0179"], ["c", "C", "\u0107", "\u0106"], ["v", "V"], ["b", "B"], ["n", "N", "\u0144", "\u0143"], ["m", "M"], [",", "<"], [".", ">"], ["/", "?"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],339 [[" ", " ", " ", " "], ["Alt", "Alt"]]340 ]; this.VKI_layout["Polish Prog"].lang = ["pl_PL"];341342 this.VKI_layout["Portuguese Br"] = [ // Portuguese (Brazil) Standard Keyboard343 [["'", '"'], ["1", "!", "\u00b9"], ["2", "@", "\u00b2"], ["3", "#", "\u00b3"], ["4", "$", "\u00a3"], ["5", "%", "\u00a2"], ["6", "\u00a8", "\u00ac"], ["7", "&"], ["8", "*"], ["9", "("], ["0", ")"], ["-", "_"], ["=", "+", "\u00a7"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],344 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["q", "Q", "/"], ["w", "W", "?"], ["e", "E", "\u20ac"], ["r", "R"], ["t", "T"], ["y", "Y"], ["u", "U"], ["i", "I"], ["o", "O"], ["p", "P"], ["\u00b4", "`"], ["[", "{", "\u00aa"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],345 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["a", "A"], ["s", "S"], ["d", "D"], ["f", "F"], ["g", "G"], ["h", "H"], ["j", "J"], ["k", "K"], ["l", "L"], ["\u00e7", "\u00c7"], ["~", "^"], ["]", "}", "\u00ba"], ["/", "?"]],346 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["\\", "|"], ["z", "Z"], ["x", "X"], ["c", "C", "\u20a2"], ["v", "V"], ["b", "B"], ["n", "N"], ["m", "M"], [",", "<"], [".", ">"], [":", ":"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],347 [[" ", " ", " ", " "], ["AltGr", "AltGr"]]348 ]; this.VKI_layout["Portuguese Br"].lang = ["pt_BR"];349350 this.VKI_layout["Portuguese Pt"] = [ // Portuguese (Portugal) Standard Keyboard351 [["\\", "|"], ["1", "!"], ["2", '"', "@"], ["3", "#", "\u00a3"], ["4", "$", "\u00a7"], ["5", "%"], ["6", "&"], ["7", "/", "{"], ["8", "(", "["], ["9", ")", "]"], ["0", "=", "}"], ["'", "?"], ["\u00ab", "\u00bb"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],352 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["q", "Q"], ["w", "W"], ["e", "E", "\u20ac"], ["r", "R"], ["t", "T"], ["y", "Y"], ["u", "U"], ["i", "I"], ["o", "O"], ["p", "P"], ["+", "*", "\u00a8"], ["\u00b4", "`"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],353 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["a", "A"], ["s", "S"], ["d", "D"], ["f", "F"], ["g", "G"], ["h", "H"], ["j", "J"], ["k", "K"], ["l", "L"], ["\u00e7", "\u00c7"], ["\u00ba", "\u00aa"], ["~", "^"]],354 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["<", ">", "\\"], ["z", "Z"], ["x", "X"], ["c", "C"], ["v", "V"], ["b", "B"], ["n", "N"], ["m", "M"], [",", ";"], [".", ":"], ["-", "_"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],355 [[" ", " ", " ", " "], ["AltGr", "AltGr"]]356 ]; this.VKI_layout["Portuguese Pt"].lang = ["pt_PT"];357358 this.VKI_layout.Romanian = [ // Romanian Standard Keyboard359 [["\u201E", "\u201D", "\u0060", "~"], ["1", "!","~"], ["2", "\u0040", "\u02C7"], ["3", "#","\u005E"], ["4", "$", "\u02D8"], ["5", "%", "\u00B0"], ["6", "\u005E", "\u02DB"], ["7", "&", "\u0060"], ["8", "*", "\u02D9"], ["9", "(", "\u00B4"], ["0", ")", "\u02DD"], ["-", "_", "\u00A8"], ["=", "+", "\u00B8", "\u00B1"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],360 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["q", "Q"], ["w", "W"], ["e", "E", "\u20AC"], ["r", "R"], ["t", "T"], ["y", "Y"], ["u", "U"], ["i", "I"], ["o", "O"], ["p", "P", "\u00A7"], ["\u0103", "\u0102", "[", "{"], ["\u00EE", "\u00CE", "]","}"], ["\u00E2", "\u00C2", "\\", "|"]],361 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["a", "A"], ["s", "S", "\u00df"], ["d", "D", "\u00f0", "\u00D0"], ["f", "F"], ["g", "G"], ["h", "H"], ["j", "J"], ["k", "K"], ["l", "L", "\u0142", "\u0141"], [(this.VKI_isIElt8) ? "\u015F" : "\u0219", (this.VKI_isIElt8) ? "\u015E" : "\u0218", ";", ":"], [(this.VKI_isIElt8) ? "\u0163" : "\u021B", (this.VKI_isIElt8) ? "\u0162" : "\u021A", "\'", "\""], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],362 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["\\", "|"], ["z", "Z"], ["x", "X"], ["c", "C", "\u00A9"], ["v", "V"], ["b", "B"], ["n", "N"], ["m", "M"], [",", ";", "<", "\u00AB"], [".", ":", ">", "\u00BB"], ["/", "?"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],363 [[" ", " ", " ", " "], ["AltGr", "AltGr"]]364 ]; this.VKI_layout.Romanian.lang = ["ro_RO"];365366 this.VKI_layout.Russian = [ // Russian Standard Keyboard367 [["\u0451", "\u0401"], ["1", "!"], ["2", '"'], ["3", "\u2116"], ["4", ";"], ["5", "%"], ["6", ":"], ["7", "?"], ["8", "*"], ["9", "("], ["0", ")"], ["-", "_"], ["=", "+"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],368 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["\u0439", "\u0419"], ["\u0446", "\u0426"], ["\u0443", "\u0423"], ["\u043A", "\u041A"], ["\u0435", "\u0415"], ["\u043D", "\u041D"], ["\u0433", "\u0413"], ["\u0448", "\u0428"], ["\u0449", "\u0429"], ["\u0437", "\u0417"], ["\u0445", "\u0425"], ["\u044A", "\u042A"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],369 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["\u0444", "\u0424"], ["\u044B", "\u042B"], ["\u0432", "\u0412"], ["\u0430", "\u0410"], ["\u043F", "\u041F"], ["\u0440", "\u0420"], ["\u043E", "\u041E"], ["\u043B", "\u041B"], ["\u0434", "\u0414"], ["\u0436", "\u0416"], ["\u044D", "\u042D"], ["\\", "/"]],370 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["/", "|"], ["\u044F", "\u042F"], ["\u0447", "\u0427"], ["\u0441", "\u0421"], ["\u043C", "\u041C"], ["\u0438", "\u0418"], ["\u0442", "\u0422"], ["\u044C", "\u042C"], ["\u0431", "\u0411"], ["\u044E", "\u042E"], [".", ","], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],371 [[" ", " "]]372 ]; this.VKI_layout.Russian.lang = ["ru_RU"];373374 this.VKI_layout.SerbianCyr = [ // Serbian Cyrillic Standard Keyboard375 [["`", "~"], ["1", "!"], ["2", '"'], ["3", "#"], ["4", "$"], ["5", "%"], ["6", "&"], ["7", "/"], ["8", "("], ["9", ")"], ["0", "="], ["'", "?"], ["+", "*"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],376 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["\u0459", "\u0409"], ["\u045a", "\u040a"], ["\u0435", "\u0415", "\u20ac"], ["\u0440", "\u0420"], ["\u0442", "\u0422"], ["\u0437", "\u0417"], ["\u0443", "\u0423"], ["\u0438", "\u0418"], ["\u043e", "\u041e"], ["\u043f", "\u041f"], ["\u0448", "\u0428"], ["\u0452", "\u0402"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],377 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["\u0430", "\u0410"], ["\u0441", "\u0421"], ["\u0434", "\u0414"], ["\u0444", "\u0424"], ["\u0433", "\u0413"], ["\u0445", "\u0425"], ["\u0458", "\u0408"], ["\u043a", "\u041a"], ["\u043b", "\u041b"], ["\u0447", "\u0427"], ["\u045b", "\u040b"], ["\u0436", "\u0416"]],378 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["<", ">"], ["\u0455", "\u0405"], ["\u045f", "\u040f"], ["\u0446", "\u0426"], ["\u0432", "\u0412"], ["\u0431", "\u0411"], ["\u043d", "\u041d"], ["\u043c", "\u041c"], [",", ";", "<"], [".", ":", ">"], ["-", "_", "\u00a9"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],379 [[" ", " ", " ", " "], ["AltGr", "AltGr"]]380 ]; this.VKI_layout.SerbianCyr.lang = ["sr-Cyrl"];381382 this.VKI_layout.SerbianLat = [ // Serbian Latin Standard Keyboard383 [["\u201a", "~"], ["1", "!", "~"], ["2", '"', "\u02c7"], ["3", "#", "^"], ["4", "$", "\u02d8"], ["5", "%", "\u00b0"], ["6", "&", "\u02db"], ["7", "/", "`"], ["8", "(", "\u02d9"], ["9", ")", "\u00b4"], ["0", "=", "\u02dd"], ["'", "?", "\u00a8"], ["+", "*", "\u00b8"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],384 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["q", "Q", "\\"], ["w", "W","|"], ["e", "E", "\u20ac"], ["r", "R"], ["t", "T"], ["z", "Z"], ["u", "U"], ["i", "I"], ["o", "O"], ["p", "P"], ["\u0161", "\u0160", "\u00f7"], ["\u0111", "\u0110", "\u00d7"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],385 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["a", "A"], ["s", "S"], ["d", "D"], ["f", "F", "["], ["g", "G", "]"], ["h", "H"], ["j", "J"], ["k", "K", "\u0142"], ["l", "L", "\u0141"], ["\u010d", "\u010c"], ["\u0107", "\u0106", "\u00df"], ["\u017e", "\u017d", "\u00a4"]],386 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["<", ">"], ["y", "Y"], ["x", "X"], ["c", "C"], ["v", "V", "@"], ["b", "B", "{"], ["n", "N", "}"], ["m", "M", "\u00a7"], [",", ";", "<"], [".", ":", ">"], ["-", "_", "\u00a9"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],387 [[" ", " ", " ", " "], ["AltGr", "AltGr"]]388 ]; this.VKI_layout.SerbianLat.lang = ["sr_CS"];389390 this.VKI_layout.Slovak = [ // Slovak Keyboard391 [[";", "\u00b0"], ["+", "1", "~"], ["\u013E", "2", "\u02C7"], ["\u0161", "3", "\u005E"], ["\u010D", "4", "\u02D8"], ["\u0165", "5", "\u00B0"], ["\u017E", "6", "\u02DB"], ["\u00FD", "7", "\u0060"], ["\u00E1", "8", "\u02D9"], ["\u00ED", "9", "\u00B4"], ["\u00E9", "0", "\u02DD"], ["=", "%", "\u00A8"], ["\u00B4", "\u02c7", "\u00B8"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],392 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["q", "Q","\u005C"], ["w", "W","\u007C"], ["e", "E", "\u20AC"], ["r", "R"], ["t", "T"], ["z", "Z"], ["u", "U"], ["i", "I"], ["o", "O"], ["p", "P","\u0027"], ["\u00FA", "/", "\u00F7"], ["\u00E4", "(", "\u00D7"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],393 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["a", "A"], ["s", "S","\u0111"], ["d", "D","\u0110"], ["f", "F","\u005B"], ["g", "G","\u005D"], ["h", "H"], ["j", "J"], ["k", "K","\u0142"], ["l", "L","\u0141"], ["\u00F4", '"', "\u0024"], ["\u00A7", "!", "\u00DF"], ["\u0148", ")","\u00A4"]],394 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["&", "*", "\u003C"], ["y", "Y","\u003E"], ["x", "X","\u0023"], ["c", "C","\u0026"], ["v", "V","\u0040"], ["b", "B","\u007B"], ["n", "N","\u007D"], ["m", "M"], [",", "?", "<"], [".", ":", ">"], ["-", "_", "\u002A"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],395 [[" ", " ", " ", " "], ["AltGr", "AltGr"]]396 ]; this.VKI_layout.Slovak.lang = ["sk_SK"];397398 this.VKI_layout.Slovenian = [ // Slovenian Standard Keyboard399 [["\u00a8", "\u00a8", "\u00b8"], ["1", "!", "~"], ["2", '"', "\u02c7"], ["3", "#", "^"], ["4", "$", "\u02d8"], ["5", "%", "\u00b0"], ["6", "&", "\u02db"], ["7", "/", "\u0060"], ["8", "(", "\u00B7"], ["9", ")", "\u00b4"], ["0", "=", "\u2033"], ["'", "?", "\u00a8"], ["+", "*", "\u00b8"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],400 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["q", "Q", "\\"], ["w", "W","|"], ["e", "E", "\u20ac"], ["r", "R"], ["t", "T"], ["z", "Z"], ["u", "U"], ["i", "I"], ["o", "O"], ["p", "P"], ["\u0161", "\u0160", "\u00f7"], ["\u0111", "\u0110", "\u00d7"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],401 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["a", "A"], ["s", "S"], ["d", "D"], ["f", "F", "["], ["g", "G", "]"], ["h", "H"], ["j", "J"], ["k", "K", "\u0142"], ["l", "L", "\u0141"], ["\u010D", "\u010C"], ["\u0107", "\u0106", "\u00df"], ["\u017E", "\u017D", "\u00a4"]],402 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["<", ">"], ["y", "Y"], ["x", "X"], ["c", "C"], ["v", "V", "@"], ["b", "B", "{"], ["n", "N", "}"], ["m", "M", "\u00a7"], [",", ";"], [".", ":"], ["-", "_"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],403 [[" ", " ", " ", " "], ["AltGr", "AltGr"]]404 ]; this.VKI_layout.Slovenian.lang = ["sl_SI"];405406 this.VKI_layout["Spanish Es"] = [ // Spanish (Spain) Standard Keyboard407 [["\u00ba", "\u00aa", "\\"], ["1", "!", "|"], ["2", '"', "@"], ["3", "'", "#"], ["4", "$", "~"], ["5", "%", "\u20ac"], ["6", "&","\u00ac"], ["7", "/"], ["8", "("], ["9", ")"], ["0", "="], ["'", "?"], ["\u00a1", "\u00bf"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],408 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["q", "Q"], ["w", "W"], ["e", "E"], ["r", "R"], ["t", "T"], ["y", "Y"], ["u", "U"], ["i", "I"], ["o", "O"], ["p", "P"], ["\u0060", "^", "["], ["\u002b", "\u002a", "]"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],409 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["a", "A"], ["s", "S"], ["d", "D"], ["f", "F"], ["g", "G"], ["h", "H"], ["j", "J"], ["k", "K"], ["l", "L"], ["\u00f1", "\u00d1"], ["\u00b4", "\u00a8", "{"], ["\u00e7", "\u00c7", "}"]],410 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["<", ">"], ["z", "Z"], ["x", "X"], ["c", "C"], ["v", "V"], ["b", "B"], ["n", "N"], ["m", "M"], [",", ";"], [".", ":"], ["-", "_"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],411 [[" ", " ", " ", " "], ["AltGr", "AltGr"]]412 ]; this.VKI_layout["Spanish Es"].lang = ["es_ES"];413414 this.VKI_layout.Swedish = [ // Swedish Standard Keyboard415 [["\u00a7", "\u00bd"], ["1", "!"], ["2", '"', "@"], ["3", "#", "\u00a3"], ["4", "\u00a4", "$"], ["5", "%", "\u20ac"], ["6", "&"], ["7", "/", "{"], ["8", "(", "["], ["9", ")", "]"], ["0", "=", "}"], ["+", "?", "\\"], ["\u00b4", "`"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],416 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["q", "Q"], ["w", "W"], ["e", "E", "\u20ac"], ["r", "R"], ["t", "T"], ["y", "Y"], ["u", "U"], ["i", "I"], ["o", "O"], ["p", "P"], ["\u00e5", "\u00c5"], ["\u00a8", "^", "~"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],417 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["a", "A"], ["s", "S"], ["d", "D"], ["f", "F"], ["g", "G"], ["h", "H"], ["j", "J"], ["k", "K"], ["l", "L"], ["\u00f6", "\u00d6"], ["\u00e4", "\u00c4"], ["'", "*"]],418 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["<", ">", "|"], ["z", "Z"], ["x", "X"], ["c", "C"], ["v", "V"], ["b", "B"], ["n", "N"], ["m", "M", "\u03bc", "\u039c"], [",", ";"], [".", ":"], ["-", "_"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],419 [[" ", " ", " ", " "], ["AltGr", "AltGr"]]420 ]; this.VKI_layout.Swedish.lang = ["sv_SE"];421422 this.VKI_layout["Turkish-F"] = [ // Turkish F Keyboard Layout423 [['+', "*", "\u00ac"], ["1", "!", "\u00b9", "\u00a1"], ["2", '"', "\u00b2"], ["3", "^", "#", "\u00b3"], ["4", "$", "\u00bc", "\u00a4"], ["5", "%", "\u00bd"], ["6", "&", "\u00be"], ["7", "'", "{"], ["8", "(", '['], ["9", ")", ']'], ["0", "=", "}"], ["/", "?", "\\", "\u00bf"], ["-", "_", "|"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],424 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["f", "F", "@"], ["g", "G"], ["\u011f", "\u011e"], ["\u0131", "\u0049", "\u00b6", "\u00ae"], ["o", "O"], ["d", "D", "\u00a5"], ["r", "R"], ["n", "N"], ["h", "H", "\u00f8", "\u00d8"], ["p", "P", "\u00a3"], ["q", "Q", "\u00a8"], ["w", "W", "~"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],425 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["u", "U", "\u00e6", "\u00c6"], ["i", "\u0130", "\u00df", "\u00a7"], ["e", "E", "\u20ac"], ["a", "A", " ", "\u00aa"], ["\u00fc", "\u00dc"], ["t", "T"], ["k", "K"], ["m", "M"], ["l", "L"], ["y", "Y", "\u00b4"], ["\u015f", "\u015e"], ["x", "X", "`"]],426 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["<", ">", "|", "\u00a6"], ["j", "J", "\u00ab", "<"], ["\u00f6", "\u00d6", "\u00bb", ">"], ["v", "V", "\u00a2", "\u00a9"], ["c", "C"], ["\u00e7", "\u00c7"], ["z", "Z"], ["s", "S", "\u00b5", "\u00ba"], ["b", "B", "\u00d7"], [".", ":", "\u00f7"], [",", ";", "-"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],427 [[" ", " ", " ", " "], ["AltGr", "AltGr"]]428 ];429430 this.VKI_layout["Turkish-Q"] = [ // Turkish Q Keyboard Layout431 [['"', "\u00e9", "<"], ["1", "!", ">"], ["2", "'", "\u00a3"], ["3", "^", "#"], ["4", "+", "$"], ["5", "%", "\u00bd"], ["6", "&"], ["7", "/", "{"], ["8", "(", '['], ["9", ")", ']'], ["0", "=", "}"], ["*", "?", "\\"], ["-", "_", "|"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],432 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["q", "Q", "@"], ["w", "W"], ["e", "E", "\u20ac"], ["r", "R"], ["t", "T"], ["y", "Y"], ["u", "U"], ["\u0131", "\u0049", "\u0069", "\u0130"], ["o", "O"], ["p", "P"], ["\u011f", "\u011e", "\u00a8"], ["\u00fc", "\u00dc", "~"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],433 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["a", "A", "\u00e6", "\u00c6"], ["s", "S", "\u00df"], ["d", "D"], ["f", "F"], ["g", "G"], ["h", "H"], ["j", "J"], ["k", "K"], ["l", "L"], ["\u015f", "\u015e", "\u00b4"], ["\u0069", "\u0130"], [",", ";", "`"]],434 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["<", ">", "|"], ["z", "Z"], ["x", "X"], ["c", "C"], ["v", "V"], ["b", "B"], ["n", "N"], ["m", "M"], ["\u00f6", "\u00d6"], ["\u00e7", "\u00c7"], [".", ":"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],435 [[" ", " ", " ", " "], ["AltGr", "AltGr"]]436 ]; this.VKI_layout["Turkish-Q"].lang = ["tr_TR"];437438 this.VKI_layout.UK = [ // UK Standard Keyboard439 [["`", "\u00ac", "\u00a6"], ["1", "!"], ["2", '"'], ["3", "\u00a3"], ["4", "$", "\u20ac"], ["5", "%"], ["6", "^"], ["7", "&"], ["8", "*"], ["9", "("], ["0", ")"], ["-", "_"], ["=", "+"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],440 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["q", "Q"], ["w", "W"], ["e", "E", "\u00e9", "\u00c9"], ["r", "R"], ["t", "T"], ["y", "Y"], ["u", "U", "\u00fa", "\u00da"], ["i", "I", "\u00ed", "\u00cd"], ["o", "O", "\u00f3", "\u00d3"], ["p", "P"], ["[", "{"], ["]", "}"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],441 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["a", "A", "\u00e1", "\u00c1"], ["s", "S"], ["d", "D"], ["f", "F"], ["g", "G"], ["h", "H"], ["j", "J"], ["k", "K"], ["l", "L"], [";", ":"], ["'", "@"], ["#", "~"]],442 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["\\", "|"], ["z", "Z"], ["x", "X"], ["c", "C"], ["v", "V"], ["b", "B"], ["n", "N"], ["m", "M"], [",", "<"], [".", ">"], ["/", "?"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],443 [[" ", " ", " ", " "], ["AltGr", "AltGr"]]444 ]; this.VKI_layout.UK.lang = ["en_GB"];445446 this.VKI_layout.Ukrainian = [ // Ukrainian Standard Keyboard447 [["\u00b4", "~"], ["1", "!"], ["2", '"'], ["3", "\u2116"], ["4", ";"], ["5", "%"], ["6", ":"], ["7", "?"], ["8", "*"], ["9", "("], ["0", ")"], ["-", "_"], ["=", "+"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],448 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["\u0439", "\u0419"], ["\u0446", "\u0426"], ["\u0443", "\u0423"], ["\u043A", "\u041A"], ["\u0435", "\u0415"], ["\u043D", "\u041D"], ["\u0433", "\u0413"], ["\u0448", "\u0428"], ["\u0449", "\u0429"], ["\u0437", "\u0417"], ["\u0445", "\u0425"], ["\u0457", "\u0407"], ["\u0491", "\u0490"]],449 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["\u0444", "\u0424"], ["\u0456", "\u0406"], ["\u0432", "\u0412"], ["\u0430", "\u0410"], ["\u043F", "\u041F"], ["\u0440", "\u0420"], ["\u043E", "\u041E"], ["\u043B", "\u041B"], ["\u0434", "\u0414"], ["\u0436", "\u0416"], ["\u0454", "\u0404"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],450 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["\u044F", "\u042F"], ["\u0447", "\u0427"], ["\u0441", "\u0421"], ["\u043C", "\u041C"], ["\u0438", "\u0418"], ["\u0442", "\u0422"], ["\u044C", "\u042C"], ["\u0431", "\u0411"], ["\u044E", "\u042E"], [".", ","], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],451 [[" ", " "]]452 ]; this.VKI_layout.Ukrainian.lang = ["uk_UA"];453454 this.VKI_layout.US = [ // US Standard Keyboard455 [["`", "~"], ["1", "!"], ["2", "@"], ["3", "#"], ["4", "$"], ["5", "%"], ["6", "^"], ["7", "&"], ["8", "*"], ["9", "("], ["0", ")"], ["-", "_"], ["=", "+"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],456 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["q", "Q"], ["w", "W"], ["e", "E"], ["r", "R"], ["t", "T"], ["y", "Y"], ["u", "U"], ["i", "I"], ["o", "O"], ["p", "P"], ["[", "{"], ["]", "}"], ["\\", "|"]],457 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["a", "A"], ["s", "S"], ["d", "D"], ["f", "F"], ["g", "G"], ["h", "H"], ["j", "J"], ["k", "K"], ["l", "L"], [";", ":"], ["'", '"'], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],458 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["z", "Z"], ["x", "X"], ["c", "C"], ["v", "V"], ["b", "B"], ["n", "N"], ["m", "M"], [",", "<"], [".", ">"], ["/", "?"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],459 [[" ", " "]]460 ]; this.VKI_layout.US.lang = ["en_US"];461462 this.VKI_layout["US Int'l"] = [ // US International Keyboard463 [["`", "~"], ["1", "!", "\u00a1", "\u00b9"], ["2", "@", "\u00b2"], ["3", "#", "\u00b3"], ["4", "$", "\u00a4", "\u00a3"], ["5", "%", "\u20ac"], ["6", "^", "\u00bc"], ["7", "&", "\u00bd"], ["8", "*", "\u00be"], ["9", "(", "\u2018"], ["0", ")", "\u2019"], ["-", "_", "\u00a5"], ["=", "+", "\u00d7", "\u00f7"], [rcmail.gettext('bksp','vkeyboard'), rcmail.gettext('bksp','vkeyboard')]],464 [[rcmail.gettext('tab','vkeyboard'), rcmail.gettext('tab','vkeyboard')], ["q", "Q", "\u00e4", "\u00c4"], ["w", "W", "\u00e5", "\u00c5"], ["e", "E", "\u00e9", "\u00c9"], ["r", "R", "\u00ae"], ["t", "T", "\u00fe", "\u00de"], ["y", "Y", "\u00fc", "\u00dc"], ["u", "U", "\u00fa", "\u00da"], ["i", "I", "\u00ed", "\u00cd"], ["o", "O", "\u00f3", "\u00d3"], ["p", "P", "\u00f6", "\u00d6"], ["[", "{", "\u00ab"], ["]", "}", "\u00bb"], ["\\", "|", "\u00ac", "\u00a6"]],465 [[rcmail.gettext('caps','vkeyboard'), rcmail.gettext('caps','vkeyboard')], ["a", "A", "\u00e1", "\u00c1"], ["s", "S", "\u00df", "\u00a7"], ["d", "D", "\u00f0", "\u00d0"], ["f", "F"], ["g", "G"], ["h", "H"], ["j", "J"], ["k", "K"], ["l", "L", "\u00f8", "\u00d8"], [";", ":", "\u00b6", "\u00b0"], ["'", '"', "\u00b4", "\u00a8"], [rcmail.gettext('enter','vkeyboard'), rcmail.gettext('enter','vkeyboard')]],466 [[rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')], ["z", "Z", "\u00e6", "\u00c6"], ["x", "X"], ["c", "C", "\u00a9", "\u00a2"], ["v", "V"], ["b", "B"], ["n", "N", "\u00f1", "\u00d1"], ["m", "M", "\u00b5"], [",", "<", "\u00e7", "\u00c7"], [".", ">"], ["/", "?", "\u00bf"], [rcmail.gettext('shift','vkeyboard'), rcmail.gettext('shift','vkeyboard')]],467 [[" ", " ", " ", " "], ["Alt", "Alt"]]468 ]; this.VKI_layout["US Int'l"].lang = ["en"];469470471 /* ***** Define Dead Keys ************************************** */472 //this.VKI_deadkey = {};473 this.VKI_deadkey = false;474475 // - Lay out each dead key set in one row of sub-arrays. The rows476 // below are wrapped so uppercase letters are below their477 // lowercase equivalents.478 //479 // - The first letter in each sub-array is the letter pressed after480 // the diacritic. The second letter is the letter this key-combo481 // will generate.482 //483 // - Note that if you have created a new keyboard layout and want484 // it included in the distributed script, PLEASE TELL ME if you485 // have added additional dead keys to the ones below.486487 this.VKI_deadkey['"'] = this.VKI_deadkey['\u00a8'] = [ // Umlaut / Diaeresis / Greek Dialytika488 ["a", "\u00e4"], ["e", "\u00eb"], ["i", "\u00ef"], ["o", "\u00f6"], ["u", "\u00fc"], ["y", "\u00ff"], ["\u03b9", "\u03ca"], ["\u03c5", "\u03cb"], ["\u016B", "\u01D6"], ["\u00FA", "\u01D8"], ["\u01D4", "\u01DA"], ["\u00F9", "\u01DC"],489 ["A", "\u00c4"], ["E", "\u00cb"], ["I", "\u00cf"], ["O", "\u00d6"], ["U", "\u00dc"], ["Y", "\u0178"], ["\u0399", "\u03aa"], ["\u03a5", "\u03ab"], ["\u016A", "\u01D5"], ["\u00DA", "\u01D7"], ["\u01D3", "\u01D9"], ["\u00D9", "\u01DB"],490 ["\u304b", "\u304c"], ["\u304d", "\u304e"], ["\u304f", "\u3050"], ["\u3051", "\u3052"], ["\u3053", "\u3054"],491 ["\u305f", "\u3060"], ["\u3061", "\u3062"], ["\u3064", "\u3065"], ["\u3066", "\u3067"], ["\u3068", "\u3069"],492 ["\u3055", "\u3056"], ["\u3057", "\u3058"], ["\u3059", "\u305a"], ["\u305b", "\u305c"], ["\u305d", "\u305e"],493 ["\u306f", "\u3070"], ["\u3072", "\u3073"], ["\u3075", "\u3076"], ["\u3078", "\u3079"], ["\u307b", "\u307c"],494 ["\u30ab", "\u30ac"], ["\u30ad", "\u30ae"], ["\u30af", "\u30b0"], ["\u30b1", "\u30b2"], ["\u30b3", "\u30b4"],495 ["\u30bf", "\u30c0"], ["\u30c1", "\u30c2"], ["\u30c4", "\u30c5"], ["\u30c6", "\u30c7"], ["\u30c8", "\u30c9"],496 ["\u30b5", "\u30b6"], ["\u30b7", "\u30b8"], ["\u30b9", "\u30ba"], ["\u30bb", "\u30bc"], ["\u30bd", "\u30be"],497 ["\u30cf", "\u30d0"], ["\u30d2", "\u30d3"], ["\u30d5", "\u30d6"], ["\u30d8", "\u30d9"], ["\u30db", "\u30dc"]498 ];499 this.VKI_deadkey['~'] = [ // Tilde / Stroke500 ["a", "\u00e3"], ["l", "\u0142"], ["n", "\u00f1"], ["o", "\u00f5"],501 ["A", "\u00c3"], ["L", "\u0141"], ["N", "\u00d1"], ["O", "\u00d5"]502 ];503 this.VKI_deadkey['^'] = [ // Circumflex504 ["a", "\u00e2"], ["e", "\u00ea"], ["i", "\u00ee"], ["o", "\u00f4"], ["u", "\u00fb"], ["w", "\u0175"], ["y", "\u0177"],505 ["A", "\u00c2"], ["E", "\u00ca"], ["I", "\u00ce"], ["O", "\u00d4"], ["U", "\u00db"], ["W", "\u0174"], ["Y", "\u0176"]506 ];507 this.VKI_deadkey['\u02c7'] = [ // Baltic caron508 ["c", "\u010D"], ["d", "\u010f"], ["e", "\u011b"], ["s", "\u0161"], ["l", "\u013e"], ["n", "\u0148"], ["r", "\u0159"], ["t", "\u0165"], ["u", "\u01d4"], ["z", "\u017E"], ["\u00fc", "\u01da"],509 ["C", "\u010C"], ["D", "\u010e"], ["E", "\u011a"], ["S", "\u0160"], ["L", "\u013d"], ["N", "\u0147"], ["R", "\u0158"], ["T", "\u0164"], ["U", "\u01d3"], ["Z", "\u017D"], ["\u00dc", "\u01d9"]510 ];511 this.VKI_deadkey['\u02d8'] = [ // Romanian and Turkish breve512 ["a", "\u0103"], ["g", "\u011f"],513 ["A", "\u0102"], ["G", "\u011e"]514 ];515 this.VKI_deadkey['-'] = this.VKI_deadkey['\u00af'] = [ // Macron516 ["a", "\u0101"], ["e", "\u0113"], ["i", "\u012b"], ["o", "\u014d"], ["u", "\u016B"], ["y", "\u0233"], ["\u00fc", "\u01d6"],517 ["A", "\u0100"], ["E", "\u0112"], ["I", "\u012a"], ["O", "\u014c"], ["U", "\u016A"], ["Y", "\u0232"], ["\u00dc", "\u01d5"]518 ];519 this.VKI_deadkey['`'] = [ // Grave520 ["a", "\u00e0"], ["e", "\u00e8"], ["i", "\u00ec"], ["o", "\u00f2"], ["u", "\u00f9"], ["\u00fc", "\u01dc"],521 ["A", "\u00c0"], ["E", "\u00c8"], ["I", "\u00cc"], ["O", "\u00d2"], ["U", "\u00d9"], ["\u00dc", "\u01db"]522 ];523 this.VKI_deadkey["'"] = this.VKI_deadkey['\u00b4'] = this.VKI_deadkey['\u0384'] = [ // Acute / Greek Tonos524 ["a", "\u00e1"], ["e", "\u00e9"], ["i", "\u00ed"], ["o", "\u00f3"], ["u", "\u00fa"], ["y", "\u00fd"], ["\u03b1", "\u03ac"], ["\u03b5", "\u03ad"], ["\u03b7", "\u03ae"], ["\u03b9", "\u03af"], ["\u03bf", "\u03cc"], ["\u03c5", "\u03cd"], ["\u03c9", "\u03ce"], ["\u00fc", "\u01d8"],525 ["A", "\u00c1"], ["E", "\u00c9"], ["I", "\u00cd"], ["O", "\u00d3"], ["U", "\u00da"], ["Y", "\u00dd"], ["\u0391", "\u0386"], ["\u0395", "\u0388"], ["\u0397", "\u0389"], ["\u0399", "\u038a"], ["\u039f", "\u038c"], ["\u03a5", "\u038e"], ["\u03a9", "\u038f"], ["\u00dc", "\u01d7"]526 ];527 this.VKI_deadkey['\u02dd'] = [ // Hungarian Double Acute Accent528 ["o", "\u0151"], ["u", "\u0171"],529 ["O", "\u0150"], ["U", "\u0170"]530 ];531 this.VKI_deadkey['\u0385'] = [ // Greek Dialytika + Tonos532 ["\u03b9", "\u0390"], ["\u03c5", "\u03b0"]533 ];534 this.VKI_deadkey['\u00b0'] = this.VKI_deadkey['\u00ba'] = [ // Ring535 ["a", "\u00e5"], ["u", "\u016f"],536 ["A", "\u00c5"], ["U", "\u016e"]537 ];538 this.VKI_deadkey['\u02DB'] = [ // Ogonek539 ["a", "\u0106"], ["e", "\u0119"], ["i", "\u012f"], ["o", "\u01eb"], ["u", "\u0173"], ["y", "\u0177"],540 ["A", "\u0105"], ["E", "\u0118"], ["I", "\u012e"], ["O", "\u01ea"], ["U", "\u0172"], ["Y", "\u0176"]541 ];542 this.VKI_deadkey['\u02D9'] = [ // Dot-above543 ["c", "\u010B"], ["e", "\u0117"], ["g", "\u0121"], ["z", "\u017C"],544 ["C", "\u010A"], ["E", "\u0116"], ["G", "\u0120"], ["Z", "\u017B"]545 ];546 this.VKI_deadkey['\u00B8'] = this.VKI_deadkey['\u201a'] = [ // Cedilla547 ["c", "\u00e7"], ["s", "\u015F"],548 ["C", "\u00c7"], ["S", "\u015E"]549 ];550 this.VKI_deadkey[','] = [ // Comma551 ["s", (this.VKI_isIElt8) ? "\u015F" : "\u0219"], ["t", (this.VKI_isIElt8) ? "\u0163" : "\u021B"],552 ["S", (this.VKI_isIElt8) ? "\u015E" : "\u0218"], ["T", (this.VKI_isIElt8) ? "\u0162" : "\u021A"]553 ];554 this.VKI_deadkey['\u3002'] = [ // Hiragana/Katakana Point555 ["\u306f", "\u3071"], ["\u3072", "\u3074"], ["\u3075", "\u3077"], ["\u3078", "\u307a"], ["\u307b", "\u307d"],556 ["\u30cf", "\u30d1"], ["\u30d2", "\u30d4"], ["\u30d5", "\u30d7"], ["\u30d8", "\u30da"], ["\u30db", "\u30dd"]557 ];558559560 /* ***** Define Symbols **************************************** */561 this.VKI_symbol = {562 '\u200c': "ZW\r\nNJ", '\u200d': "ZW\r\nJ"563 };564565566567 /* ****************************************************************568 * Attach the keyboard to an element569 *570 */571 this.VKI_attachKeyboard = VKI_attach = function(elem) {572 if (elem.VKI_attached) return false;573 if (this.VKI_imageURI) {574 var keybut = document.createElement('img');575 keybut.src = this.VKI_imageURI;576 keybut.alt = this.VKI_i18n['00'];577 keybut.className = "keyboardInputInitiator myrc_sprites";578 keybut.title = this.VKI_i18n['01'];579 keybut.elem = elem;580 keybut.onclick = function() { self.VKI_show(this.elem); };581 elem.parentNode.insertBefore(keybut, (elem.dir == "rtl") ? elem : elem.nextSibling);582 } else elem.onfocus = function() { if (self.VKI_target != this) self.VKI_show(this); };583 elem.VKI_attached = true;584 if (this.VKI_isIE) {585 elem.onclick = elem.onselect = elem.onkeyup = function(e) {586 if ((e || event).type != "keyup" || !this.readOnly)587 this.range = document.selection.createRange();588 };589 }590 };591592593 /* ***** Find tagged input & textarea elements ***************** */594 var inputElems = [595 document.getElementsByTagName('input'),596 document.getElementsByTagName('textarea')597 ];598 for (var x = 0, elem; elem = inputElems[x++];)599 for (var y = 0, ex; ex = elem[y++];)600 if ((ex.nodeName == "TEXTAREA" || ex.type == "text" || ex.type == "password") && ex.className.indexOf("keyboardInput") > -1)601 this.VKI_attachKeyboard(ex);602603604 /* ***** Build the keyboard interface ************************** */605 this.VKI_keyboard = document.createElement('table');606 this.VKI_keyboard.id = "keyboardInputMaster";607 this.VKI_keyboard.dir = "ltr";608 this.VKI_keyboard.cellSpacing = this.VKI_keyboard.border = "0";609610 var thead = document.createElement('thead');611 var tr = document.createElement('tr');612 var th = document.createElement('th');613 var abbr = document.createElement('abbr');614 //abbr.title = this.VKI_i18n['00'];615 // abbr.appendChild(document.createTextNode('VKI'));616 th.appendChild(abbr);617618 var kblist = document.createElement('select');619 kblist.title = this.VKI_i18n['02'];620 for (ktype in this.VKI_layout) {621 if (typeof this.VKI_layout[ktype] == "object") {622 if (!this.VKI_layout[ktype].lang) this.VKI_layout[ktype].lang = [];623 var opt = document.createElement('option');624 opt.value = ktype;625 opt.appendChild(document.createTextNode(ktype));626 kblist.appendChild(opt);627 }628 }629 if (kblist.options.length) {630 kblist.value = this.VKI_kt;631 kblist.onchange = function() {632 self.VKI_kts = self.VKI_kt = this.value;633 self.VKI_buildKeys();634 self.VKI_position(true);635 };636 th.appendChild(kblist);637 }638639 if (this.VKI_sizeAdj) {640 this.VKI_size = Math.min(5, Math.max(1, this.VKI_size));641 var kbsize = document.createElement('select');642 kbsize.title = this.VKI_i18n['10'];643 for (var x = 1; x <= 5; x++) {644 var opt = document.createElement('option');645 opt.value = x;646 opt.appendChild(document.createTextNode(x));647 kbsize.appendChild(opt);648 } kbsize.value = this.VKI_size;649 kbsize.change = function() {650 self.VKI_size = this.value;651 self.VKI_keyboard.className = self.VKI_keyboard.className.replace(/ ?keyboardInputSize\d ?/, "");652 if (this.value != 2) self.VKI_keyboard.className += " keyboardInputSize" + this.value;653 self.VKI_position(true);654 };655 kbsize.onchange = kbsize.change;656 th.appendChild(kbsize);657 }658659 var label = document.createElement('label');660 var checkbox = document.createElement('input');661 checkbox.type = "checkbox";662 checkbox.title = this.VKI_i18n['03'] + ": " + ((this.VKI_deadkeysOn) ? this.VKI_i18n['04'] : this.VKI_i18n['05']);663 checkbox.defaultChecked = this.VKI_deadkeysOn;664 checkbox.onclick = function() {665 self.VKI_deadkeysOn = this.checked;666 this.title = self.VKI_i18n['03'] + ": " + ((this.checked) ? self.VKI_i18n['04'] : self.VKI_i18n['05']);667 self.VKI_modify("");668 return true;669 };670 label.appendChild(this.VKI_deadkeysElem = checkbox);671 checkbox.checked = this.VKI_deadkeysOn;672 th.appendChild(label);673 tr.appendChild(th);674675 var td = document.createElement('td');676 var clearer = document.createElement('span');677 clearer.id = "keyboardInputClear";678 clearer.appendChild(document.createTextNode(this.VKI_i18n['07']));679 clearer.title = this.VKI_i18n['08'];680 clearer.onmousedown = function() { this.className = "pressed"; };681 clearer.onmouseup = function() { this.className = ""; };682 clearer.onclick = function() {683 self.VKI_target.value = "";684 self.VKI_target.focus();685 return false;686 };687 td.appendChild(clearer);688689 var closer = document.createElement('strong');690 closer.id = "keyboardInputClose";691 closer.appendChild(document.createTextNode('X'));692 closer.title = this.VKI_i18n['06'];693 closer.onmousedown = function() { this.className = "pressed"; };694 closer.onmouseup = function() { this.className = ""; };695 closer.onclick = function() { self.VKI_close(); };696 td.appendChild(closer);697698 tr.appendChild(td);699 thead.appendChild(tr);700 this.VKI_keyboard.appendChild(thead);701702 var tbody = document.createElement('tbody');703 var tr = document.createElement('tr');704 var td = document.createElement('td');705 td.colSpan = "2";706 var div = document.createElement('div');707 div.id = "keyboardInputLayout";708 td.appendChild(div);709 if (this.VKI_showVersion) {710 var div = document.createElement('div');711 var ver = document.createElement('var');712 ver.title = this.VKI_i18n['09'] + " " + this.VKI_version;713 ver.appendChild(document.createTextNode("v" + this.VKI_version));714 div.appendChild(ver);715 td.appendChild(div);716 }717 tr.appendChild(td);718 tbody.appendChild(tr);719 this.VKI_keyboard.appendChild(tbody);720721 if (this.VKI_isIE6) {722 this.VKI_iframe = document.createElement('iframe');723 this.VKI_iframe.style.position = "absolute";724 this.VKI_iframe.style.border = "0px none";725 this.VKI_iframe.style.filter = "mask()";726 this.VKI_iframe.style.zIndex = "999999";727 this.VKI_iframe.src = this.VKI_imageURI;728 }729730731 /* ****************************************************************732 * Build or rebuild the keyboard keys733 *734 */735 this.VKI_buildKeys = function() {736 this.VKI_shift = this.VKI_shiftlock = this.VKI_altgr = this.VKI_altgrlock = this.VKI_dead = false;737 this.VKI_deadkeysOn = (this.VKI_layout[this.VKI_kt].DDK) ? false : this.VKI_keyboard.getElementsByTagName('label')[0].getElementsByTagName('input')[0].checked;738739 var container = this.VKI_keyboard.tBodies[0].getElementsByTagName('div')[0];740 while (container.firstChild) container.removeChild(container.firstChild);741742 for (var x = 0, hasDeadKey = false, lyt; lyt = this.VKI_layout[this.VKI_kt][x++];) {743 var table = document.createElement('table');744 table.cellSpacing = table.border = "0";745 if (lyt.length <= this.VKI_keyCenter) table.className = "keyboardInputCenter";746 var tbody = document.createElement('tbody');747 var tr = document.createElement('tr');748 for (var y = 0, lkey; lkey = lyt[y++];) {749 var td = document.createElement('td');750 if (this.VKI_symbol[lkey[0]]) {751 var span = document.createElement('span');752 span.className = lkey[0];753 span.appendChild(document.createTextNode(this.VKI_symbol[lkey[0]]));754 td.appendChild(span);755 } else td.appendChild(document.createTextNode(lkey[0] || "\xa0"));756757 var className = [];758 if (this.VKI_deadkeysOn)759 for (key in this.VKI_deadkey)760 if (key === lkey[0]) { className.push("alive"); break; }761 if (lyt.length > this.VKI_keyCenter && y == lyt.length) className.push("last");762 if (lkey[0] == " ") className.push("space");763 td.className = className.join(" ");764765 td.VKI_clickless = 0;766 if (!td.click) {767 td.click = function() {768 var evt = this.ownerDocument.createEvent('MouseEvents');769 evt.initMouseEvent('click', true, true, this.ownerDocument.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, null);770 this.dispatchEvent(evt);771 };772 }773 td.onmouseover = function() {774 if (self.VKI_clickless) {775 var _self = this;776 clearTimeout(this.VKI_clickless);777 this.VKI_clickless = setTimeout(function() { _self.click(); }, self.VKI_clickless);778 }779 if ((this.firstChild.nodeValue || this.firstChild.className) != "\xa0") this.className += " hover";780 };781 td.onmouseout = function() {782 if (self.VKI_clickless) clearTimeout(this.VKI_clickless);783 this.className = this.className.replace(/ ?(hover|pressed)/g, "");784 };785 td.onmousedown = function() {786 if (self.VKI_clickless) clearTimeout(this.VKI_clickless);787 if ((this.firstChild.nodeValue || this.firstChild.className) != "\xa0") this.className += " pressed";788 };789 td.onmouseup = function() {790 if (self.VKI_clickless) clearTimeout(this.VKI_clickless);791 this.className = this.className.replace(/ ?pressed/g, "");792 };793 td.ondblclick = function() { return false; };794 switch (lkey[1]) {795 case rcmail.gettext('caps','vkeyboard'): case rcmail.gettext('shift','vkeyboard'):796 case "Alt": case "AltGr": case "AltLk":797 td.onclick = (function(type) { return function() { self.VKI_modify(type); return false; }; })(lkey[1]);798 break;799 case rcmail.gettext('tab','vkeyboard'):800 td.onclick = function() { self.VKI_insert("\t"); return false; };801 break;802 case rcmail.gettext('bksp','vkeyboard'):803 td.onclick = function() {804 self.VKI_target.focus();805 if (self.VKI_target.setSelectionRange) {806 if (self.VKI_target.readOnly && self.VKI_isWebKit) {807 var rng = [self.VKI_target.selStart || 0, self.VKI_target.selEnd || 0];808 } else var rng = [self.VKI_target.selectionStart, self.VKI_target.selectionEnd];809 if (rng[0] < rng[1]) rng[0]++;810 self.VKI_target.value = self.VKI_target.value.substr(0, rng[0] - 1) + self.VKI_target.value.substr(rng[1]);811 self.VKI_target.setSelectionRange(rng[0] - 1, rng[0] - 1);812 if (self.VKI_target.readOnly && self.VKI_isWebKit) {813 var range = window.getSelection().getRangeAt(0);814 self.VKI_target.selStart = range.startOffset;815 self.VKI_target.selEnd = range.endOffset;816 }817 } else if (self.VKI_target.createTextRange) {818 try {819 self.VKI_target.range.select();820 } catch(e) { self.VKI_target.range = document.selection.createRange(); }821 if (!self.VKI_target.range.text.length) self.VKI_target.range.moveStart('character', -1);822 self.VKI_target.range.text = "";823 } else self.VKI_target.value = self.VKI_target.value.substr(0, self.VKI_target.value.length - 1);824 if (self.VKI_shift) self.VKI_modify(rcmail.gettext('shift','vkeyboard'));825 if (self.VKI_altgr) self.VKI_modify("AltGr");826 self.VKI_target.focus();827 return true;828 };829 break;830 case rcmail.gettext('enter','vkeyboard'):831 td.onclick = function() {832 if (self.VKI_target.nodeName != "TEXTAREA") {833 $("form").submit();834 self.VKI_close();835 this.className = this.className.replace(/ ?(hover|pressed)/g, "");836 } else self.VKI_insert("\n");837 return true;838 };839 break;840 default:841 td.onclick = function() {842 var character = this.firstChild.nodeValue || this.firstChild.className;843 if (self.VKI_deadkeysOn && self.VKI_dead) {844 if (self.VKI_dead != character) {845 for (key in self.VKI_deadkey) {846 if (key == self.VKI_dead) {847 if (character != " ") {848 for (var z = 0, rezzed = false, dk; dk = self.VKI_deadkey[key][z++];) {849 if (dk[0] == character) {850 self.VKI_insert(dk[1]);851 rezzed = true;852 break;853 }854 }855 } else {856 self.VKI_insert(self.VKI_dead);857 rezzed = true;858 } break;859 }860 }861 } else rezzed = true;862 } self.VKI_dead = false;863864 if (!rezzed && character != "\xa0") {865 if (self.VKI_deadkeysOn) {866 for (key in self.VKI_deadkey) {867 if (key == character) {868 self.VKI_dead = key;869 this.className += " dead";870 if (self.VKI_shift) self.VKI_modify(rcmail.gettext('shift','vkeyboard'));871 if (self.VKI_altgr) self.VKI_modify("AltGr");872 break;873 }874 }875 if (!self.VKI_dead) self.VKI_insert(character);876 } else self.VKI_insert(character);877 }878879 self.VKI_modify("");880 if (self.VKI_isOpera) {881 this.style.width = "50px";882 var foo = this.offsetWidth;883 this.style.width = "";884 }885 return false;886 };887888 }889 tr.appendChild(td);890 tbody.appendChild(tr);891 table.appendChild(tbody);892893 for (var z = 0; z < 4; z++)894 if (this.VKI_deadkey[lkey[z] = lkey[z] || "\xa0"]) hasDeadKey = true;895 }896 container.appendChild(table);897 }898 this.VKI_deadkeysElem.style.display = (!this.VKI_layout[this.VKI_kt].DDK && hasDeadKey) ? "inline" : "none";899 };900901 this.VKI_buildKeys();902 VKI_disableSelection(this.VKI_keyboard);903904905 /* ****************************************************************906 * Controls modifier keys907 *908 */909 this.VKI_modify = function(type) {910 switch (type) {911 case "Alt":912 case "AltGr": this.VKI_altgr = !this.VKI_altgr; break;913 case "AltLk": this.VKI_altgrlock = !this.VKI_altgrlock; break;914 case rcmail.gettext('caps','vkeyboard'): this.VKI_shiftlock = !this.VKI_shiftlock; break;915 case rcmail.gettext('shift','vkeyboard'): this.VKI_shift = !this.VKI_shift; break;916 } var vchar = 0;917 if (!this.VKI_shift != !this.VKI_shiftlock) vchar += 1;918 if (!this.VKI_altgr != !this.VKI_altgrlock) vchar += 2;919920 var tables = this.VKI_keyboard.getElementsByTagName('table');921 for (var x = 0; x < tables.length; x++) {922 var tds = tables[x].getElementsByTagName('td');923 for (var y = 0; y < tds.length; y++) {924 var className = [], lkey = this.VKI_layout[this.VKI_kt][x][y];925926 if (tds[y].className.indexOf('hover') > -1) className.push("hover");927928 switch (lkey[1]) {929 case "Alt":930 case "AltGr":931 if (this.VKI_altgr) className.push("dead");932 break;933 case "AltLk":934 if (this.VKI_altgrlock) className.push("dead");935 break;936 case rcmail.gettext('shift','vkeyboard'):937 if (this.VKI_shift) className.push("dead");938 break;939 case rcmail.gettext('caps','vkeyboard'):940 if (this.VKI_shiftlock) className.push("dead");941 break;942 case rcmail.gettext('tab','vkeyboard'): case rcmail.gettext('enter','vkeyboard'): case rcmail.gettext('bksp','vkeyboard'): break;943 default:944 if (type) {945 tds[y].removeChild(tds[y].firstChild);946 if (this.VKI_symbol[lkey[vchar]]) {947 var span = document.createElement('span');948 span.className = lkey[vchar];949 span.appendChild(document.createTextNode(this.VKI_symbol[lkey[vchar]]));950 tds[y].appendChild(span);951 } else tds[y].appendChild(document.createTextNode(lkey[vchar]));952 }953 if (this.VKI_deadkeysOn) {954 var character = tds[y].firstChild.nodeValue || tds[y].firstChild.className;955 if (this.VKI_dead) {956 if (character == this.VKI_dead) className.push("dead");957 for (var z = 0; z < this.VKI_deadkey[this.VKI_dead].length; z++) {958 if (character == this.VKI_deadkey[this.VKI_dead][z][0]) {959 className.push("target");960 break;961 }962 }963 }964 for (key in this.VKI_deadkey)965 if (key === character) { className.push("alive"); break; }966 }967 }968969 if (y == tds.length - 1 && tds.length > this.VKI_keyCenter) className.push("last");970 if (lkey[0] == " ") className.push("space");971 tds[y].className = className.join(" ");972 }973 }974 };975976977 /* ****************************************************************978 * Insert text at the cursor979 *980 */981 this.VKI_insert = function(text) {982 this.VKI_target.focus();983 if (this.VKI_target.maxLength) this.VKI_target.maxlength = this.VKI_target.maxLength;984 if (typeof this.VKI_target.maxlength == "undefined" ||985 this.VKI_target.maxlength < 0 ||986 this.VKI_target.value.length < this.VKI_target.maxlength) {987 if (this.VKI_target.setSelectionRange) {988 if (this.VKI_target.readOnly && this.VKI_isWebKit) {989 var rng = [this.VKI_target.selStart || 0, this.VKI_target.selEnd || 0];990 } else var rng = [this.VKI_target.selectionStart, this.VKI_target.selectionEnd];991 this.VKI_target.value = this.VKI_target.value.substr(0, rng[0]) + text + this.VKI_target.value.substr(rng[1]);992 if (text == "\n" && window.opera) rng[0]++;993 this.VKI_target.setSelectionRange(rng[0] + text.length, rng[0] + text.length);994 if (this.VKI_target.readOnly && this.VKI_isWebKit) {995 var range = window.getSelection().getRangeAt(0);996 this.VKI_target.selStart = range.startOffset;997 this.VKI_target.selEnd = range.endOffset;998 }999 } else if (this.VKI_target.createTextRange) {1000 try {1001 this.VKI_target.range.select();1002 } catch(e) { this.VKI_target.range = document.selection.createRange(); }1003 this.VKI_target.range.text = text;1004 this.VKI_target.range.collapse(true);1005 this.VKI_target.range.select();1006 } else this.VKI_target.value += text;1007 if (this.VKI_shift) this.VKI_modify(rcmail.gettext('shift','vkeyboard'));1008 if (this.VKI_altgr) this.VKI_modify("AltGr");1009 this.VKI_target.focus();1010 } else if (this.VKI_target.createTextRange && this.VKI_target.range)1011 this.VKI_target.range.select();1012 };101310141015 /* ****************************************************************1016 * Show the keyboard interface1017 *1018 */1019 this.VKI_show = function(elem) {1020 if (!this.VKI_target) {1021 this.VKI_target = elem;1022 if (this.VKI_langAdapt && this.VKI_target.lang) {1023 var chg = false, sub = [];1024 for (ktype in this.VKI_layout) {1025 if (typeof this.VKI_layout[ktype] == "object") {1026 for (var x = 0; x < this.VKI_layout[ktype].lang.length; x++) {1027 if (this.VKI_layout[ktype].lang[x].toLowerCase() == this.VKI_target.lang.toLowerCase()) {1028 chg = kblist.value = this.VKI_kt = ktype;1029 break;1030 } else if (this.VKI_layout[ktype].lang[x].toLowerCase().indexOf(this.VKI_target.lang.toLowerCase()) == 0)1031 sub.push([this.VKI_layout[ktype].lang[x], ktype]);1032 }1033 } if (chg) break;1034 } if (sub.length) {1035 sub.sort(function (a, b) { return a[0].length - b[0].length; });1036 chg = kblist.value = this.VKI_kt = sub[0][1];1037 } if (chg) this.VKI_buildKeys();1038 }1039 if (this.VKI_isIE) {1040 if (!this.VKI_target.range) {1041 this.VKI_target.range = this.VKI_target.createTextRange();1042 this.VKI_target.range.moveStart('character', this.VKI_target.value.length);1043 } this.VKI_target.range.select();1044 }1045 try { this.VKI_keyboard.parentNode.removeChild(this.VKI_keyboard); } catch (e) {}1046 if (this.VKI_clearPasswords && this.VKI_target.type == "password") this.VKI_target.value = "";10471048 var elem = this.VKI_target;1049 this.VKI_target.keyboardPosition = "absolute";1050 do {1051 if (VKI_getStyle(elem, "position") == "fixed") {1052 this.VKI_target.keyboardPosition = "fixed";1053 break;1054 }1055 } while (elem = elem.offsetParent);10561057 if (this.VKI_isIE6) document.body.appendChild(this.VKI_iframe);1058 document.body.appendChild(this.VKI_keyboard);1059 this.VKI_keyboard.style.position = this.VKI_target.keyboardPosition;1060 if (this.VKI_isOpera) {1061 if (this.VKI_sizeAdj) kbsize.value = this.VKI_size;1062 kblist.value = this.VKI_kt;1063 }10641065 this.VKI_position(true);1066 if (self.VKI_isMoz || self.VKI_isWebKit) this.VKI_position(true);1067 this.VKI_target.focus();1068 } else this.VKI_close();1069 };107010711072 /* ****************************************************************1073 * Position the keyboard1074 *1075 */1076 this.VKI_position = function(force) {1077 if (self.VKI_target) {1078 var kPos = VKI_findPos(self.VKI_keyboard), wDim = VKI_innerDimensions(), sDis = VKI_scrollDist();1079 var place = false, fudge = self.VKI_target.offsetHeight + 3;1080 if (force !== true) {1081 if (kPos[1] + self.VKI_keyboard.offsetHeight - sDis[1] - wDim[1] > 0) {1082 place = true;1083 fudge = -self.VKI_keyboard.offsetHeight - 3;1084 } else if (kPos[1] - sDis[1] < 0) place = true;1085 }1086 if (place || force === true) {1087 var iPos = VKI_findPos(self.VKI_target);1088 self.VKI_keyboard.style.top = iPos[1] - ((self.VKI_target.keyboardPosition == "fixed" && !self.VKI_isIE && !self.VKI_isMoz) ? sDis[1] : 0) + fudge + "px";1089 self.VKI_keyboard.style.left = Math.max(10, Math.min(wDim[0] - self.VKI_keyboard.offsetWidth - 25, iPos[0])) + "px";1090 if (self.VKI_isIE6) {1091 self.VKI_iframe.style.width = self.VKI_keyboard.offsetWidth + "px";1092 self.VKI_iframe.style.height = self.VKI_keyboard.offsetHeight + "px";1093 self.VKI_iframe.style.top = self.VKI_keyboard.style.top;1094 self.VKI_iframe.style.left = self.VKI_keyboard.style.left;1095 }1096 }1097 if (force === true) self.VKI_position();1098 }1099 };110011011102 if (window.addEventListener) {1103 window.addEventListener('resize', this.VKI_position, false);1104 window.addEventListener('scroll', this.VKI_position, false);1105 } else if (window.attachEvent) {1106 window.attachEvent('onresize', this.VKI_position);1107 window.attachEvent('onscroll', this.VKI_position);1108 }1109 if (this.VKI_sizeAdj) kbsize.change();111011111112 /* ****************************************************************1113 * Close the keyboard interface1114 *1115 */1116 this.VKI_close = VKI_close = function() {1117 if (this.VKI_target) {1118 try {1119 this.VKI_keyboard.parentNode.removeChild(this.VKI_keyboard);1120 if (this.VKI_isIE6) this.VKI_iframe.parentNode.removeChild(this.VKI_iframe);1121 } catch (e) {}1122 if (this.VKI_kt != this.VKI_kts) {1123 kblist.value = this.VKI_kt = this.VKI_kts;1124 this.VKI_buildKeys();1125 }1126 this.VKI_target.focus();1127 this.VKI_target = false;1128 }1129 };1130 }11311132 function VKI_findPos(obj) {1133 var curleft = curtop = 0;1134 do {1135 curleft += obj.offsetLeft;1136 curtop += obj.offsetTop;1137 } while (obj = obj.offsetParent);1138 return [curleft, curtop];1139 }11401141 function VKI_innerDimensions() {1142 if (self.innerHeight) {1143 return [self.innerWidth, self.innerHeight];1144 } else if (document.documentElement && document.documentElement.clientHeight) {1145 return [document.documentElement.clientWidth, document.documentElement.clientHeight];1146 } else if (document.body)1147 return [document.body.clientWidth, document.body.clientHeight];1148 return [0, 0];1149 }11501151 function VKI_scrollDist() {1152 var html = document.getElementsByTagName('html')[0];1153 if (html.scrollTop && document.documentElement.scrollTop) {1154 return [html.scrollLeft, html.scrollTop];1155 } else if (html.scrollTop || document.documentElement.scrollTop) {1156 return [html.scrollLeft + document.documentElement.scrollLeft, html.scrollTop + document.documentElement.scrollTop];1157 } else if (document.body.scrollTop)1158 return [document.body.scrollLeft, document.body.scrollTop];1159 return [0, 0];1160 }11611162 function VKI_getStyle(obj, styleProp) {1163 if (obj.currentStyle) {1164 var y = obj.currentStyle[styleProp];1165 } else if (window.getComputedStyle)1166 var y = window.getComputedStyle(obj, null)[styleProp];1167 return y;1168 }11691170 function VKI_disableSelection(elem) {1171 elem.onselectstart = function() { return false; };1172 elem.unselectable = "on";1173 elem.style.MozUserSelect = "none";1174 elem.style.cursor = "default";1175 if (window.opera) elem.onmousedown = function() { return false; };
...
pga_schedule.js
Source:pga_schedule.js
1/////////////////////////////////////////////////////////////2//3// pgAdmin 4 - PostgreSQL Tools4//5// Copyright (C) 2013 - 2019, The pgAdmin Development Team6// This software is released under the PostgreSQL Licence7//8//////////////////////////////////////////////////////////////9define('pgadmin.node.pga_schedule', [10 'sources/gettext', 'sources/url_for', 'jquery', 'underscore',11 'underscore.string', 'sources/pgadmin', 'moment', 'pgadmin.browser', 'alertify',12 'pgadmin.backform', 'pgadmin.backgrid',13], function(14 gettext, url_for, $, _, S, pgAdmin, moment, pgBrowser, Alertify, Backform,15 Backgrid16) {17 if (!pgBrowser.Nodes['coll-pga_schedule']) {18 pgBrowser.Nodes['coll-pga_schedule'] =19 pgBrowser.Collection.extend({20 node: 'pga_schedule',21 label: gettext('Schedules'),22 type: 'coll-pga_schedule',23 columns: ['jscid', 'jscname', 'jscenabled'],24 hasStatistics: false,25 });26 }27 if (!pgBrowser.Nodes['pga_schedule']) {28 var weekdays = [29 gettext('Sunday'), gettext('Monday'), gettext('Tuesday'),30 gettext('Wednesday'), gettext('Thursday'), gettext('Friday'),31 gettext('Saturday'),32 ],33 monthdays = [34 gettext('1st'), gettext('2nd'), gettext('3rd'),35 gettext('4th'), gettext('5th'), gettext('6th'),36 gettext('7th'), gettext('8th'), gettext('9th'),37 gettext('10th'), gettext('11th'), gettext('12th'),38 gettext('13th'), gettext('14th'), gettext('15th'),39 gettext('16th'), gettext('17th'), gettext('18th'),40 gettext('19th'), gettext('20th'), gettext('21st'),41 gettext('22nd'), gettext('23rd'), gettext('24th'),42 gettext('25th'), gettext('26th'), gettext('27th'),43 gettext('28th'), gettext('29th'), gettext('30th'),44 gettext('31st'), gettext('Last day'),45 ],46 months = [47 gettext('January'), gettext('February'), gettext('March'),48 gettext('April'), gettext('May'), gettext('June'),49 gettext('July'), gettext('August'), gettext('September'),50 gettext('October'), gettext('November'), gettext('December'),51 ],52 hours = [53 gettext('00'), gettext('01'), gettext('02'), gettext('03'),54 gettext('04'), gettext('05'), gettext('06'), gettext('07'),55 gettext('08'), gettext('09'), gettext('10'), gettext('11'),56 gettext('12'), gettext('13'), gettext('14'), gettext('15'),57 gettext('16'), gettext('17'), gettext('18'), gettext('19'),58 gettext('20'), gettext('21'), gettext('22'), gettext('23'),59 ],60 minutes = [61 gettext('00'), gettext('01'), gettext('02'), gettext('03'),62 gettext('04'), gettext('05'), gettext('06'), gettext('07'),63 gettext('08'), gettext('09'), gettext('10'), gettext('11'),64 gettext('12'), gettext('13'), gettext('14'), gettext('15'),65 gettext('16'), gettext('17'), gettext('18'), gettext('19'),66 gettext('20'), gettext('21'), gettext('22'), gettext('23'),67 gettext('24'), gettext('25'), gettext('26'), gettext('27'),68 gettext('28'), gettext('29'), gettext('30'), gettext('31'),69 gettext('32'), gettext('33'), gettext('34'), gettext('35'),70 gettext('36'), gettext('37'), gettext('38'), gettext('39'),71 gettext('40'), gettext('41'), gettext('42'), gettext('43'),72 gettext('44'), gettext('45'), gettext('46'), gettext('47'),73 gettext('48'), gettext('49'), gettext('50'), gettext('51'),74 gettext('52'), gettext('53'), gettext('54'), gettext('55'),75 gettext('56'), gettext('57'), gettext('58'), gettext('59'),76 ],77 AnyDatetimeCell = Backgrid.Extension.MomentCell.extend({78 editor: Backgrid.Extension.DatetimePickerEditor,79 render: function() {80 this.$el.empty();81 var model = this.model;82 this.$el.text(this.formatter.fromRaw(model.get(this.column.get('name')), model) || gettext('<any>'));83 this.delegateEvents();84 return this;85 },86 }),87 DatetimeCell = Backgrid.Extension.MomentCell.extend({88 editor: Backgrid.Extension.DatetimePickerEditor,89 }),90 BooleanArrayFormatter = function(selector, indexes) {91 var self = this;92 self.selector = selector;93 self.indexes = indexes;94 this.fromRaw = function(rawData) {95 if (!_.isArray(rawData)) {96 return rawData;97 }98 var res = [], idx = 0, resIdx = [];99 for (; idx < rawData.length; idx++) {100 if (!rawData[idx])101 continue;102 res.push(self.selector[idx]);103 resIdx.push(idx + 1);104 }105 return self.indexes ? resIdx : res.join(', ');106 };107 this.toRaw = function(d) {108 if (!self.indexes)109 return d;110 var res = [], i = 0, l = self.selector.length;111 for (; i < l; i++) {112 res.push(_.indexOf(d, String(i + 1)) != -1);113 }114 return res;115 };116 return self;117 },118 BooleanArrayOptions = function(ctrl) {119 var selector = ctrl.field.get('selector'),120 val = ctrl.model.get(ctrl.field.get('name')),121 res = [];122 if (selector) {123 res = _.map(124 selector, function(v, i) {125 return {label: v, value: i + 1, selected: val[i]};126 }127 );128 }129 return res;130 },131 ExceptionModel = pgBrowser.Node.Model.extend({132 defaults: {133 jexid: undefined,134 jexdate: null,135 jextime: null,136 },137 idAttribute: 'jexid',138 schema: [{139 id: 'jexdate', type: 'text', label: gettext('Date'),140 editable: true, placeholder: gettext('<any>'),141 cell: AnyDatetimeCell, options: {format: 'YYYY-MM-DD'},142 displayFormat: 'YYYY-MM-DD', modelFormat: 'YYYY-MM-DD',143 cellHeaderClasses:'width_percent_50', allowEmpty: true,144 },{145 id: 'jextime', type: 'text', placeholder: gettext('<any>'),146 label: gettext('Time'), editable: true, cell: AnyDatetimeCell,147 options: {format: 'HH:mm', buttons: {148 showToday: false,149 }}, displayFormat: 'HH:mm',150 modelFormat: 'HH:mm:ss', displayInUTC: true, allowEmpty: true,151 cellHeaderClasses:'width_percent_50', modalInUTC: true,152 }],153 validate: function() {154 var self = this, exceptions = this.collection,155 errMsg, hasExceptionErr = false,156 d = (this.get('jexdate') || '<any>'),157 t = this.get('jextime') || '<any>',158 id = this.get('jexid') || this.cid;159 self.errorModel.unset('jscdate');160 if (d == t && d == '<any>') {161 errMsg = gettext('Please specify date/time.');162 self.errorModel.set('jscdate', errMsg);163 return errMsg ;164 }165 exceptions.each(function(ex) {166 if (hasExceptionErr || id == (ex.get('jexid') || ex.cid))167 return;168 if (169 d == (ex.get('jexdate') || '<any>') &&170 t == (ex.get('jextime') || '<any>')171 ) {172 errMsg = gettext('Please specify unique set of exceptions.');173 if (ex.errorModel.get('jscdate') != errMsg)174 self.errorModel.set('jscdate', errMsg);175 hasExceptionErr = true;176 }177 });178 return errMsg;179 },180 });181 var CustomInfoControl = Backform.Control.extend({182 template: _.template([183 '<div>',184 ' <%=infotext%>',185 '</div>',186 ].join('\n')),187 className: 'pgadmin-control-group',188 });189 pgBrowser.Nodes['pga_schedule'] = pgBrowser.Node.extend({190 parent_type: 'pga_job',191 type: 'pga_schedule',192 dialogHelp: url_for('help.static', {'filename': 'pgagent_jobs.html'}),193 hasSQL: true,194 hasDepends: false,195 hasStatistics: false,196 canDrop: true,197 label: gettext('Schedule'),198 node_image: 'icon-pga_schedule',199 Init: function() {200 /* Avoid mulitple registration of menus */201 if (this.initialized)202 return;203 this.initialized = true;204 pgBrowser.add_menus([{205 name: 'create_pga_schedule_on_job', node: 'pga_job', module: this,206 applies: ['object', 'context'], callback: 'show_obj_properties',207 category: 'create', priority: 4, label: gettext('Schedule...'),208 icon: 'wcTabIcon icon-pga_schedule', data: {action: 'create'},209 },{210 name: 'create_pga_schedule_on_coll', node: 'coll-pga_schedule', module: this,211 applies: ['object', 'context'], callback: 'show_obj_properties',212 category: 'create', priority: 4, label: gettext('Schedule...'),213 icon: 'wcTabIcon icon-pga_schedule', data: {action: 'create'},214 },{215 name: 'create_pga_schedule', node: 'pga_schedule', module: this,216 applies: ['object', 'context'], callback: 'show_obj_properties',217 category: 'create', priority: 4, label: gettext('Schedule...'),218 icon: 'wcTabIcon icon-pga_schedule', data: {action: 'create'},219 }]);220 },221 model: pgBrowser.Node.Model.extend({222 defaults: {223 jscid: null,224 jscjobid: null,225 jscname: '',226 jscdesc: '',227 jscenabled: true,228 jscstart: null,229 jscend: null,230 jscweekdays: _.map(weekdays, function() { return false; }),231 jscmonthdays: _.map(monthdays, function() { return false; }),232 jscmonths: _.map(months, function() { return false; }),233 jschours: _.map(hours, function() { return false; }),234 jscminutes: _.map(minutes, function() { return false; }),235 jscexceptions: [],236 },237 idAttribute: 'jscid',238 parse: function(d) {239 d.jscexceptions = [];240 if (d.jexid && d.jexid.length) {241 var idx = 0;242 for (; idx < d.jexid.length; idx++) {243 d.jscexceptions.push({244 'jexid': d.jexid[idx],245 'jexdate': d.jexdate[idx],246 'jextime': d.jextime[idx],247 });248 }249 }250 delete d.jexid;251 delete d.jexdate;252 delete d.jextime;253 return pgBrowser.Node.Model.prototype.parse.apply(this, arguments);254 },255 schema: [{256 id: 'jscid', label: gettext('ID'), type: 'int',257 cellHeaderClasses: 'width_percent_5', mode: ['properties'],258 },{259 id: 'jscname', label: gettext('Name'), type: 'text',260 cellHeaderClasses: 'width_percent_45',261 disabled: function() { return false; },262 },{263 id: 'jscenabled', label: gettext('Enabled?'), type: 'switch',264 disabled: function() { return false; },265 cellHeaderClasses: 'width_percent_5',266 },{267 id: 'jscstart', label: gettext('Start'), type: 'text',268 control: 'datetimepicker', cell: DatetimeCell,269 disabled: function() { return false; }, displayInUTC: false,270 displayFormat: 'YYYY-MM-DD HH:mm:ss Z',271 modelFormat: 'YYYY-MM-DD HH:mm:ss Z', options: {272 format: 'YYYY-MM-DD HH:mm:ss Z',273 minDate: moment().add(0, 'm'),274 }, cellHeaderClasses: 'width_percent_25',275 },{276 id: 'jscend', label: gettext('End'), type: 'text',277 control: 'datetimepicker', cell: DatetimeCell,278 disabled: function() { return false; }, displayInUTC: false,279 displayFormat: 'YYYY-MM-DD HH:mm:ss Z', options: {280 format: 'YYYY-MM-DD HH:mm:ss Z',281 minDate: moment().add(0, 'm'),282 }, cellHeaderClasses: 'width_percent_25',283 modelFormat: 'YYYY-MM-DD HH:mm:ss Z',284 },{285 id: 'jscweekdays', label: gettext('Week days'), type: 'text',286 control: Backform.Control.extend({287 formatter: new BooleanArrayFormatter(weekdays, false),288 }), mode: ['properties'],289 },{290 id: 'jscmonthdays', label: gettext('Month days'), type: 'text',291 control: Backform.Control.extend({292 formatter: new BooleanArrayFormatter(monthdays, false),293 }), mode: ['properties'],294 },{295 id: 'jscmonths', label: gettext('Months'), type: 'text',296 control: Backform.Control.extend({297 formatter: new BooleanArrayFormatter(months, false),298 }), mode: ['properties'],299 },{300 id: 'jschours', label: gettext('Hours'), type: 'text',301 control: Backform.Control.extend({302 formatter: new BooleanArrayFormatter(hours, false),303 }), mode: ['properties'],304 },{305 id: 'jscminutes', label: gettext('Minutes'), type: 'text',306 control: Backform.Control.extend({307 formatter: new BooleanArrayFormatter(minutes, false),308 }), mode: ['properties'],309 },{310 id: 'jscexceptions', label: gettext('Exceptions'), type: 'text',311 control: Backform.Control.extend({312 formatter: new function() {313 this.fromRaw = function(rawData) {314 var res = '', idx = 0, d;315 if (!rawData) {316 return res;317 }318 for (; idx < rawData.length; idx++) {319 d = rawData[idx];320 if (idx)321 res += ', ';322 res += '[' + String((d.jexdate || '') + ' ' + (d.jextime || '')).replace(/^\s+|\s+$/g, '') + ']';323 }324 return res;325 };326 this.toRaw = function(data) { return data; };327 return this;328 },329 }), mode: ['properties'],330 },{331 type: 'control', mode: ['create', 'edit'], group: gettext('Repeat'),332 infotext: gettext('Schedules are specified using a <b>cron-style</b> format.<br/><ul><li>For each selected time or date element, the schedule will execute.<br/>e.g. To execute at 5 minutes past every hour, simply select â05â in the Minutes list box.<br/></li><li>Values from more than one field may be specified in order to further control the schedule.<br/>e.g. To execute at 12:05 and 14:05 every Monday and Thursday, you would click minute 05, hours 12 and 14, and weekdays Monday and Thursday.</li><li>For additional flexibility, the Month Days check list includes an extra Last Day option. This matches the last day of the month, whether it happens to be the 28th, 29th, 30th or 31st.</li></ul>'),333 control: CustomInfoControl,334 },{335 type: 'nested', label: gettext('Days'), group: gettext('Repeat'),336 mode: ['create', 'edit'],337 control: Backform.FieldsetControl.extend({338 render: function() {339 var res = Backform.FieldsetControl.prototype.render.apply(340 this, arguments341 );342 // $(343 // '<div>' +344 // gettext('Schedules are specified using a <b>cron-style</b> format.<br/><ul><li>For each selected time or date element, the schedule will execute.<br/>e.g. To execute at 5 minutes past every hour, simply select â05â in the Minutes list box.<br/></li><li>Values from more than one field may be specified in order to further control the schedule.<br/>e.g. To execute at 12:05 and 14:05 every Monday and Thursday, you would click minute 05, hours 12 and 14, and weekdays Monday and Thursday.</li><li>For additional flexibility, the Month Days check list includes an extra Last Day option. This matches the last day of the month, whether it happens to be the 28th, 29th, 30th or 31st.</li></ul>') +345 // '</div>'346 // ).insertBefore(this.$el);347 return res;348 },349 }),350 schema:[{351 id: 'jscweekdays', label: gettext('Week Days'), cell: 'select2',352 group: gettext('Days'), control: 'select2', type: 'array',353 select2: {354 first_empty: false,355 multiple: true,356 allowClear: true,357 placeholder: gettext('Select the weekdays...'),358 width: 'style',359 dropdownAdapter: $.fn.select2.amd.require(360 'select2/selectAllAdapter'361 ),362 },363 selector: weekdays,364 formatter: new BooleanArrayFormatter(weekdays, true),365 options: BooleanArrayOptions,366 },{367 id: 'jscmonthdays', label: gettext('Month Days'), cell: 'select2',368 group: gettext('Days'), control: 'select2', type: 'array',369 select2: {370 first_empty: false,371 multiple: true,372 allowClear: true,373 placeholder: gettext('Select the month days...'),374 width: 'style',375 dropdownAdapter: $.fn.select2.amd.require(376 'select2/selectAllAdapter'377 ),378 },379 formatter: new BooleanArrayFormatter(monthdays, true),380 selector: monthdays, options: BooleanArrayOptions,381 },{382 id: 'jscmonths', label: gettext('Months'), cell: 'select2',383 group: gettext('Days'), control: 'select2', type: 'array',384 select2: {385 first_empty: false,386 multiple: true,387 allowClear: true,388 placeholder: gettext('Select the months...'),389 width: 'style',390 dropdownAdapter: $.fn.select2.amd.require(391 'select2/selectAllAdapter'392 ),393 },394 formatter: new BooleanArrayFormatter(months, true),395 selector: months, options: BooleanArrayOptions,396 }],397 },{398 type: 'nested', control: 'fieldset', label: gettext('Times'),399 group: gettext('Repeat'), mode: ['create', 'edit'],400 schema:[{401 id: 'jschours', label: gettext('Hours'), cell: 'select2',402 group: gettext('Times'), control: 'select2', type: 'array',403 select2: {404 first_empty: false,405 multiple: true,406 allowClear: true,407 placeholder: gettext('Select the hours...'),408 width: 'style',409 dropdownAdapter: $.fn.select2.amd.require(410 'select2/selectAllAdapter'411 ),412 },413 formatter: new BooleanArrayFormatter(hours, true),414 selector: hours, options: BooleanArrayOptions,415 },{416 id: 'jscminutes', label: gettext('Minutes'), cell: 'select2',417 group: gettext('Times'), control: 'select2', type: 'array',418 select2: {419 first_empty: false,420 multiple: true,421 allowClear: true,422 placeholder: gettext('Select the minutes...'),423 width: 'style',424 dropdownAdapter: $.fn.select2.amd.require(425 'select2/selectAllAdapter'426 ),427 },428 formatter: new BooleanArrayFormatter(minutes, true),429 selector: minutes, options: BooleanArrayOptions,430 }],431 },{432 id: 'jscexceptions', type: 'collection', mode: ['edit', 'create'],433 label: '', canEdit: false, model: ExceptionModel, canAdd: true,434 group: gettext('Exceptions'), canDelete: true,435 cols: ['jexdate', 'jextime'], control: 'sub-node-collection',436 },{437 id: 'jscdesc', label: gettext('Comment'), type: 'multiline',438 }],439 validate: function() {440 var val = this.get('jscname'),441 errMsg = null, msg;442 if (_.isUndefined(val) || _.isNull(val) ||443 String(val).replace(/^\s+|\s+$/g, '') == '') {444 msg = gettext('Name cannot be empty.');445 this.errorModel.set('jscname', msg);446 errMsg = msg;447 } else {448 this.errorModel.unset('jscname');449 }450 val = this.get('jscstart');451 if (_.isUndefined(val) || _.isNull(val) ||452 String(val).replace(/^\s+|\s+$/g, '') == '') {453 msg = gettext('Please enter the start time.');454 if (val == '') {455 this.set('jscstart', undefined);456 }457 this.errorModel.set('jscstart', msg);458 errMsg = errMsg || msg;459 } else {460 this.errorModel.unset('jscstart');461 }462 // End time must be greater than Start time463 if(!errMsg) {464 val = this.get('jscend');465 // No further validation required if end date is not provided by466 // the user467 if (_.isUndefined(val) || _.isNull(val) ||468 String(val).replace(/^\s+|\s+$/g, '') == '') {469 if (val == '') {470 this.set('jscend', undefined);471 }472 return;473 }474 var start_time = this.get('jscstart'),475 end_time = this.get('jscend'),476 start_time_js = start_time.split(' '),477 end_time_js = end_time.split(' ');478 start_time_js = moment(start_time_js[0] + ' ' + start_time_js[1]);479 end_time_js = moment(end_time_js[0] + ' ' + end_time_js[1]);480 if(end_time_js.isBefore(start_time_js)) {481 errMsg = gettext('Start time must be less than end time');482 this.errorModel.set('jscstart', errMsg);483 }484 }485 return errMsg;486 },487 }),488 });489 }490 return pgBrowser.Nodes['pga_schedule'];...
lang.js
Source:lang.js
1{% load i18n %}2if (window.GeoExt && GeoExt.Lang) {3 GeoExt.Lang.set("{{ LANGUAGE_CODE }}");4}5if (window.GeoNode && GeoNode.plugins && GeoNode.plugins.Save) {6 Ext.apply(GeoNode.plugins.Save.prototype, {7 metadataFormCancelText : gettext("Cancel"),8 metadataFormSaveAsCopyText : gettext("Save as Copy"),9 metaDataHeader: gettext("About this Map"),10 metaDataMapAbstract: gettext("Abstract"),11 metadataFormSaveText : gettext("Save"),12 metaDataMapTitle: gettext("Title")13 });14}15if (window.GeoNode && GeoNode.plugins && GeoNode.plugins.XHRTrouble) {16 Ext.apply(GeoNode.plugins.XHRTrouble.prototype, {17 connErrorTitleText: gettext("Connection Error"),18 connErrorText: gettext("The server returned an error"),19 connErrorDetailsText: gettext("Details...")20 });21}22if (window.GeoExplorer) {23 Ext.apply(GeoExplorer.prototype, {24 addLayersButtonText: gettext("Add Layers"),25 areaActionText: gettext("Area"),26 backgroundContainerText: gettext("Background"),27 capGridAddLayersText: gettext("Add Layers"),28 capGridDoneText: gettext("Done"),29 capGridText: gettext("Available Layers"),30 exportDialogMessage: '<p>Your map is ready to be published to the web! </p>' + '<p> Simply copy the following HTML to embed the map in your website: </p>',31 heightLabel: gettext("Height"),32 infoButtonText: gettext("Get Feature Info"),33 largeSizeLabel: gettext("Large"),34 layerAdditionLabel: gettext("or add a new server."),35 layerContainerText: gettext("Map Layers"),36 layerSelectionLabel: gettext("View available data from:"),37 layersContainerText: gettext("Data"),38 layersPanelText: gettext("Layers"),39 legendPanelText: gettext("Legend"),40 lengthActionText: gettext("Length"),41 loadingMapMessage: gettext("Loading Map..."),42 mapSizeLabel: gettext("Map Size"), 43 measureSplitText: gettext("Measure"),44 metaDataMapContact: gettext("Contact"),45 metaDataMapId: gettext("Permalink"),46 miniSizeLabel: gettext("Mini"),47 navActionTipText: gettext("Pan Map"),48 navNextAction: gettext("Zoom to Next Extent"),49 navPreviousActionText: gettext("Zoom to Previous Extent"),50 noPermalinkText: gettext("This map has not yet been saved."),51 permalinkLabel: gettext("Permalink"),52 premiumSizeLabel: gettext("Premium"),53 printTipText: gettext("Print Map"),54 printWindowTitleText: gettext("Print Preview"),55 propertiesText: gettext("Properties"),56 publishActionText: gettext("Publish Map"),57 removeLayerActionText: gettext("Remove Layer"),58 removeLayerActionTipText: gettext("Remove Layer"),59 saveFailMessage: gettext("Sorry, your map could not be saved."),60 saveFailTitle: gettext("Error While Saving"),61 saveMapText: gettext("Save Map"),62 saveNotAuthorizedMessage: gettext("You must be logged in to save this map."),63 smallSizeLabel: gettext("Small"),64 sourceLoadFailureMessage: gettext("Error contacting server.\n Please check the url and try again."),65 layerPropertiesText: gettext('Layer Properties'),66 layerPropertiesTipText: gettext('Change layer format and style'),67 layerStylesText: gettext('Edit Styles'),68 layerStylesTipText: gettext('Edit layer styles'),69 switchTo3DActionText: gettext("Switch to Google Earth 3D Viewer"),70 unknownMapMessage: gettext("The map that you are trying to load does not exist. Creating a new map instead."),71 unknownMapTitle: gettext("Unknown Map"),72 widthLabel: gettext("Width"),73 zoomInActionText: gettext("Zoom In"),74 zoomOutActionText: gettext("Zoom Out"),75 zoomSelectorText: gettext("Zoom level"),76 zoomSliderTipText: gettext("Zoom Level"),77 zoomToLayerExtentText: gettext("Zoom to Layer Extent"),78 zoomVisibleButtonText: gettext("Zoom to Visible Extent")79 });80}81if (window.Embed) {82 Ext.apply(Embed.prototype, {83 zoomLevelText: gettext("Zoom Level {zoom}")84 });85}86if (window.GeoNode && GeoNode.MapGrid) {87 Ext.apply(GeoNode.MapGrid.prototype, {88 createMapText : gettext("Create Map"),89 exportMapText: gettext("Export Map"),90 mapAbstractLabelText: gettext("Abstract"),91 mapContactLabelText: gettext("Contact"),92 mapGridText : gettext("Map"),93 mapLinkLabelText: gettext("View this Map"),94 mapTitleLabelText: gettext("Title"),95 openMapText : gettext("Open Map")96 });97}98if (window.GeoExplorer && GeoExplorer.CapabilitiesGrid) {99 Ext.apply(GeoExplorer.CapabilitiesGrid.prototype, {100 nameHeaderText : gettext("Name"),101 queryableHeaderText : gettext("Queryable"),102 titleHeaderText : gettext("Title")103 });104}105if (window.GeoNode && GeoNode.ConfigManager) {106 Ext.apply(GeoNode.ConfigManager.prototype, {107 backgroundDisabledText : gettext("No background")108 });109}110if (window.gxp && gxp.EmbedMapDialog) {111 Ext.apply(gxp.EmbedMapDialog.prototype, {112 heightLabel: gettext("Height"),113 largeSizeLabel: gettext("Large"),114 mapSizeLabel: gettext("Map Size"),115 miniSizeLabel: gettext("Mini"),116 premiumSizeLabel: gettext("Premium"),117 publishActionText: gettext("Publish Map"),118 publishMessage: gettext('Your map is ready to be published to the web! Simply copy the following HTML to embed the map in your website:'),119 smallSizeLabel: gettext("Small"),120 widthLabel: gettext("Width")121 });122}123if (window.GeoExplorer && GeoExplorer.CapabilitiesRowExpander) {124 Ext.apply(GeoExplorer.CapabilitiesRowExpander.prototype, {125 abstractText: gettext("Abstract:"),126 attributionEmptyText: gettext("No attribution information is provided for this layer."),127 attributionText: gettext("Provided by:"),128 downloadText : gettext("Download:"),129 keywordEmptyText: gettext("No keywords are listed for this layer."),130 keywordText: gettext("Keywords:"),131 metadataEmptyText: gettext("No metadata URLs are defined for this layer."),132 metadataText: gettext("Metadata Links:")133 });134}135if (window.GeoExt && GeoExt.ux && GeoExt.ux.PrintPreview) {136 Ext.apply(GeoExt.ux.PrintPreview.prototype, {137 paperSizeText: gettext("Paper size:"),138 resolutionText: gettext("Resolution:"),139 printText: gettext("Print"),140 emptyTitleText: gettext("Enter map title here."),141 includeLegendText: gettext("Include legend?"),142 emptyCommentText: gettext("Enter comments here."),143 creatingPdfText: gettext("Creating PDF...")144 });145}146if (window.GeoNode && GeoNode.MapSearchTable) {147 Ext.apply(GeoNode.MapSearchTable.prototype, {148 titleHeaderText: gettext('Title'),149 contactHeaderText: gettext("Contact"),150 lastModifiedHeaderText: gettext("Last Modified"),151 mapAbstractLabelText: gettext("Abstract"),152 mapLinkLabelText: gettext("View this Map"),153 previousText: gettext('Prev'),154 nextText: gettext('Next'),155 ofText: gettext('of'),156 noResultsText: gettext('Your search did not match any items.'),157 searchLabelText: gettext('Search Maps'),158 searchButtonText: gettext('Search'),159 showingText: gettext('Showing'),160 loadingText: gettext('Loading'),161 permalinkText: gettext('permalink')162 });163}164if (window.GeoNode && GeoNode.SearchTable) {165 Ext.apply(GeoNode.SearchTable.prototype, {166 selectHeaderText: gettext('Select'),167 nameHeaderText: gettext('Name'),168 titleHeaderText: gettext('Title'),169 selectText: gettext('Select:'),170 selectAllText: gettext('All'),171 selectNoneText: gettext('None'),172 previousText: gettext('Prev'),173 nextText: gettext('Next'),174 ofText: gettext('of'),175 noResultsText: gettext('Your search did not match any items.'),176 searchButtonText: gettext('Search'),177 showingText: gettext('Showing'),178 loadingText: gettext("Loading..."),179 permalinkText: gettext('permalink'),180 unviewableTooltip: gettext('You do not have permission to view this data'),181 remoteTooltip: gettext('This data is stored on a remote server') 182 });183}184if (window.GeoNode && GeoNode.SearchTableRowExpander) {185 Ext.apply(GeoNode.SearchTableRowExpander.prototype, {186 abstractText: gettext("Abstract:"),187 abstractEmptyText: gettext('No abstract is provided for this layer.'),188 attributionEmptyText: gettext("No attribution information is provided for this layer."),189 attributionText: gettext("Provided by:"),190 downloadText : gettext("Download:"),191 downloadEmptyText: gettext("No download URLs are definied for this layer."),192 keywordEmptyText: gettext("No keywords are listed for this layer."),193 keywordText: gettext("Keywords:"),194 metadataEmptyText: gettext("No metadata URLs are defined for this layer."),195 metadataText: gettext("Metadata Links:"),196 dataDetailText: 'Click here for more information about this layer.'197 });198}199if (window.GeoNode && GeoNode.DataCart) {200 Ext.apply(GeoNode.DataCart.prototype, {201 selectedLayersText: gettext('Selected Layers'),202 emptySelectionText: gettext('No Layers Selected'),203 titleText: gettext('Title'),204 clearSelectedButtonText: gettext('Clear Selected'),205 clearAllButtonText: gettext('Clear All') 206 });207}208if (window.GeoNode && GeoNode.DataCartOps) {209 Ext.apply(GeoNode.DataCartOps.prototype, {210 failureText: gettext('Operation Failed'),211 noLayersText: gettext('No layers are currently selected.')212 });213}214if (window.GeoNode && GeoNode.BatchDownloadWidget) {215 Ext.apply(GeoNode.BatchDownloadWidget.prototype, {216 downloadingText: gettext('Downloading...'),217 cancelText: gettext('Cancel'),218 windowMessageText: gettext('Please wait')219 });220}221{% block extra_lang %}...
strings.js
Source:strings.js
1export const BibFieldTitles = {2 'abstract': gettext('Abstract'),3 'addendum': gettext('Addendum'),4 'afterword': gettext('Afterword'),5 'annotation': gettext('Annotation'),6 'annotator': gettext('Annotations author(s)'),7 'author': gettext('Author(s)'),8 'authortype': gettext('Author type'),9 'bookauthor': gettext('Book author(s)'),10 'bookpagination': gettext('Book pagination'),11 'booksubtitle': gettext('Book subtitle'),12 'booktitle': gettext('Book title'),13 'booktitleaddon': gettext('Book title annex'),14 'chapter': gettext('Chapter or section'),15 'commentator': gettext('Author(s) of a commentary'),16 'date': gettext('Publication date'),17 'doi': gettext('Digital Object Identifier'),18 'edition': gettext('Edition'),19 'editor': gettext('Editor(s)'),20 'editora': gettext('Secondary editor'),21 'editorb': gettext('Secondary editor 2'),22 'editorc': gettext('Secondary editor 3'),23 'editortype': gettext('Role of editor(s)'),24 'editoratype': gettext('Role of secondary editor'),25 'editorbtype': gettext('Role of secondary editor 2'),26 'editorctype': gettext('Role of secondary editor 3'),27 'eid': gettext('Electronic identifier of an article'),28 'entrysubtype': gettext('Entry subtype'),29 'eprint': gettext('Electronic identifier of an online publication'),30 'eprintclass': gettext('Additional information to an online publication'),31 'eprinttype': gettext('Eprint identifier type'),32 'eventdate': gettext('Event date'),33 'eventtitle': gettext('Event title'),34 'file': gettext('Local link to the work'),35 'foreword': gettext('Foreword author(s)'),36 'holder': gettext('Patent holder(s)'),37 'howpublished': gettext('Publication notice'),38 'indextitle': gettext('Title for indexing'),39 'institution': gettext('Institution'),40 'introduction': gettext('Author(s) of an introduction to the work'),41 'isan': gettext('ISAN'),42 'isbn': gettext('ISBN'),43 'ismn': gettext('ISMN'),44 'isrn': gettext('ISRN'),45 'issn': gettext('ISSN'),46 'issue': gettext('Issue'),47 'issuesubtitle': gettext('Issue subtitle'),48 'issuetitle': gettext('Issue title'),49 'iswc': gettext('ISWC'),50 'journalsubtitle': gettext('Subtitle of publication'),51 'journaltitle': gettext('Title of publication'),52 'keywords': gettext('Keywords'),53 'label': gettext('Label'),54 'language': gettext('Language(s) of work'),55 'langid': gettext('Language of bibliography item'),56 'library': gettext('Library information'),57 'location': gettext('Location(s) of publication'),58 'mainsubtitle': gettext('Main subtitle'),59 'maintitle': gettext('Maintitle'),60 'maintitleaddon': gettext('Annex to the maintitle'),61 'nameaddon': gettext('author name addon'),62 'note': gettext('Note'),63 'number': gettext('Number of the work in a series'),64 'organization': gettext('Organization(s)'),65 'origdate': gettext('Publication date of the original work'),66 'origlanguage': gettext('Language of the original work'),67 'origlocation': gettext('Publication location of the original edition'),68 'origpublisher': gettext('Publisher of the original edition'),69 'origtitle': gettext('Title of the original work'),70 'pages': gettext('Pages'),71 'pagetotal': gettext('Total number of pages'),72 'pagination': gettext('Pagination'),73 'part': gettext('Number of a partial volume'),74 'publisher': gettext('Publisher(s)'),75 'pubstate': gettext('Publication state of the work'),76 'reprinttitle': gettext('Title of reprint'),77 'series': gettext('Name of series'),78 'shortauthor': gettext('Abbreviated author(s)'),79 'shorteditor': gettext('Abbreviated editor(s)'),80 'shorthand': gettext('Shorthand'),81 'shorthandintro': gettext('Shorthand intro'),82 'shortjournal': gettext('Acronym of the publication\'s title'),83 'shortseries': gettext('Acronym of the series'),84 'shorttitle': gettext('Abridged title'),85 'subtitle': gettext('Subtitle'),86 'title': gettext('Title'),87 'titleaddon': gettext('Title addon'),88 'translator': gettext('Translator(s)'),89 'type': gettext('Manual type'),90 'url': gettext('URL'),91 'urldate': gettext('Access date'),92 'venue': gettext('Location of a conference'),93 'version': gettext('Version'),94 'volume': gettext('Volume'),95 'volumes': gettext('Total number of volumes')96}97const edtfExplanation = gettext(98 'In <em>Extended Date Time Format</em> (EDTF) 1.0<br>Level 0 or 1'99)100const nameExplanation = gettext(101 'Prefixed is "used" when it is used in cases where only the last name is used. \102 For example: "Ludwig van Beethoven" turns into "Beethoven", so the prefix "van" \103 is not used. "Vincent van Gogh" turns into "van Gogh", so the prefix "van" is used.'104)105export const BibFieldHelp = {106 'date': edtfExplanation,107 'origdate': edtfExplanation,108 'pages': gettext('Range or single page, column, paragraph, section, line'),109 'author': nameExplanation,110 'editor': nameExplanation,111 'editora': nameExplanation,112 'editorb': nameExplanation,113 'editorc': nameExplanation,114 'translator': nameExplanation115}116export const BibTypeTitles = {117 'article': gettext('Article'),118 'book': gettext('Book'),119 'mvbook': gettext('Multi-volume book'),120 'inbook': gettext('In book'),121 'bookinbook': gettext('Book in book'),122 'suppbook': gettext('Supplemental material in a book'),123 'booklet': gettext('Booklet'),124 'collection': gettext('Collection'),125 'mvcollection': gettext('Multi-volume collection'),126 'incollection': gettext('In collection'),127 'suppcollection': gettext('Supplemental material in a collection'),128 'manual': gettext('Manual'),129 'misc': gettext('Miscellany'),130 'online': gettext('Online resource'),131 'patent': gettext('Patent'),132 'periodical': gettext('Periodical'),133 'suppperiodical': gettext('Supplemental material in a periodical'),134 'proceedings': gettext('Proceedings'),135 'mvproceedings': gettext('Multi-volume proceedings'),136 'inproceedings': gettext('Article in a proceedings'),137 'reference': gettext('Reference'),138 'mvreference': gettext('Multi-volume work of reference'),139 'inreference': gettext('Article in a work of reference'),140 'report': gettext('Report'),141 'thesis': gettext('Thesis'),142 'unpublished': gettext('Unpublished'),143 'article-magazine': gettext('Magazine article'),144 'article-newspaper': gettext('Newspaper article'),145 'article-journal': gettext('Journal article'),146 'entry-encyclopedia': gettext('Encyclopedia entry'),147 'entry-dictionary': gettext('Dictionary entry'),148 'post-weblog': gettext('Blog post'),149 'post': gettext('Forum post')150}151export const BibOptionTitles = {152 'manual': gettext('Manual'),153 'patent': gettext('Patent'),154 'report': gettext('Report'),155 'thesis': gettext('Thesis'),156 'editor': gettext('Editor'),157 'compiler': gettext('Compiler'),158 'founder': gettext('Founder'),159 'continuator': gettext('Continuator'),160 'redactor': gettext('Redactor'),161 'reviser': gettext('Reviser'),162 'collaborator': gettext('Collaborator'),163 'page': gettext('Page'),164 'column': gettext('Column'),165 'section': gettext('Section'),166 'paragraph': gettext('Paragraph'),167 'verse': gettext('Verse'),168 'line': gettext('Line'),169 'inpreparation': gettext('In preparation'),170 'submitted': gettext('Submitted'),171 'forthcoming': gettext('Forthcoming'),172 'inpress': gettext('In press'),173 'prepublished': gettext('Pre-published'),174 'mathesis': gettext('M.A. thesis'),175 'phdthesis': gettext('Ph.D. thesis'),176 'candthesis': gettext('Candidate thesis'),177 'techreport': gettext('Technical report'),178 'resreport': gettext('Research report'),179 'software': gettext('Computer software'),180 'datacd': gettext('Data CD'),181 'audiocd': gettext('Audio CD'),182 "acadian": gettext('Acadian'),183 "afrikaans": gettext('Afrikaans'),184 "arabic": gettext('Arabic'),185 "basque": gettext('Basque'),186 "bulgarian": gettext('Bulgarian'),187 "catalan": gettext('Catalan'),188 "chinese": gettext('Chinese'),189 "pinyin": gettext('Chinese'),190 "croatian": gettext('Croatian'),191 "czech": gettext('Czech'),192 "danish": gettext('Danish'),193 "dutch": gettext('Dutch'),194 "auenglish": gettext('Australian English'),195 "caenglish": gettext('Canadian English'),196 "nzenglish": gettext('New Zealand English'),197 "ukenglish": gettext('UK English'),198 "english": gettext('UK English'),199 "american": gettext('US English'),200 "usenglish": gettext('US English'),201 "estonian": gettext('Estonian'),202 "farsi": gettext('Farsi'),203 "finnish": gettext('Finnish'),204 "french": gettext('French'),205 "cafrench": gettext('Canadian French'),206 "german": gettext('German'),207 "atgerman": gettext('Austrian German'),208 "greek": gettext('Greek'),209 "hebrew": gettext('Hebrew'),210 "hungarian": gettext('Hungarian'),211 "icelandic": gettext('Icelandic'),212 "italian": gettext('Italian'),213 "japanese": gettext('Japanese'),214 "latin": gettext('Latin'),215 "latvian": gettext('Latvian'),216 "lithuanian": gettext('Lithuanian'),217 "magyar": gettext('Magyar'),218 "mongolian": gettext('Mongolian'),219 "norwegian": gettext('Norwegian'),220 "newnorwegian": gettext('New Norwegian'),221 "polish": gettext('Polish'),222 "portuguese": gettext('Portuguese'),223 "brazilian": gettext('Brazilian Portuguese'),224 "brportuguese": gettext('Brazilian Portuguese'),225 "romanian": gettext('Romanian'),226 "russian": gettext('Russian'),227 "serbian": gettext('Serbian'),228 "cyrillicserbian": gettext('Cyrillic Serbian'),229 "slovak": gettext('Slovak'),230 "slovene": gettext('Slovene'),231 "spanish": gettext('Spanish'),232 "swedish": gettext('Swedish'),233 "thai": gettext('Thai'),234 "turkish": gettext('Turkish'),235 "ukrainian": gettext('Ukrainian'),236 "vietnamese": gettext('Vietnamese')...
images.module.js
Source:images.module.js
1/**2 * (c) Copyright 2015 Hewlett-Packard Development Company, L.P.3 *4 * Licensed under the Apache License, Version 2.0 (the "License"); you may5 * not use this file except in compliance with the License. You may obtain6 * a copy of the License at7 *8 * http://www.apache.org/licenses/LICENSE-2.09 *10 * Unless required by applicable law or agreed to in writing, software11 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the13 * License for the specific language governing permissions and limitations14 * under the License.15 */16(function() {17 'use strict';18 /**19 * @ngdoc overview20 * @ngname horizon.app.core.images21 *22 * @description23 * Provides all of the services and widgets required24 * to support and display images related content.25 */26 angular27 .module('horizon.app.core.images', [28 'ngRoute',29 'horizon.app.core.images.actions',30 'horizon.app.core.images.details'31 ])32 .constant('horizon.app.core.images.events', events())33 .constant('horizon.app.core.images.non_bootable_image_types', ['aki', 'ari'])34 .constant('horizon.app.core.images.validationRules', validationRules())35 .constant('horizon.app.core.images.imageFormats', imageFormats())36 .constant('horizon.app.core.images.resourceType', 'OS::Glance::Image')37 .constant('horizon.app.core.images.statuses', {38 'active': gettext('Active'),39 'saving': gettext('Saving'),40 'queued': gettext('Queued'),41 'pending_delete': gettext('Pending Delete'),42 'killed': gettext('Killed'),43 'deactivated': gettext('Deactivated'),44 'deleted': gettext('Deleted')45 })46 .constant('horizon.app.core.images.transitional-statuses', [47 "saving",48 "queued",49 "pending_delete"50 ])51 .run(run)52 .config(config);53 run.$inject = [54 'horizon.framework.conf.resource-type-registry.service',55 'horizon.app.core.images.basePath',56 'horizon.app.core.images.service',57 'horizon.app.core.images.statuses',58 'horizon.app.core.images.resourceType',59 'horizon.framework.util.filters.$memoize',60 'horizon.app.core.openstack-service-api.keystone'61 ];62 function run(registry,63 basePath,64 imagesService,65 statuses,66 imageResourceType,67 $memoize,68 keystone) {69 registry.getResourceType(imageResourceType)70 .setNames('Image', 'Images', ngettext('Image', 'Images', 1))71 .setSummaryTemplateUrl(basePath + 'details/drawer.html')72 .setDefaultIndexUrl('/project/images/')73 .setItemInTransitionFunction(imagesService.isInTransition)74 .setProperties(imageProperties(imagesService, statuses))75 .setListFunction(imagesService.getImagesPromise)76 .setNeedsFilterFirstFunction(imagesService.getFilterFirstSettingPromise)77 .tableColumns78 .append({79 id: 'owner',80 priority: 1,81 filters: [$memoize(keystone.getProjectName)],82 policies: [{rules: [['identity', 'identity:get_project']]}]83 })84 .append({85 id: 'name',86 priority: 1,87 sortDefault: true,88 classes: "word-wrap",89 urlFunction: imagesService.getDetailsPath90 })91 .append({92 id: 'type',93 priority: 194 })95 .append({96 id: 'status',97 priority: 1,98 itemInTransitionFunction: imagesService.isInTransition99 })100 .append({101 id: 'visibility',102 priority: 1103 })104 .append({105 id: 'protected',106 priority: 1107 })108 .append({109 id: 'disk_format',110 priority: 2111 })112 .append({113 id: 'size',114 priority: 2115 });116 registry.getResourceType(imageResourceType).filterFacets117 .append({118 label: gettext('Name'),119 name: 'name',120 isServer: true,121 singleton: true,122 persistent: true123 })124 .append({125 label: gettext('Status'),126 name: 'status',127 isServer: true,128 singleton: true,129 options: [130 {label: gettext('Active'), key: 'active'},131 {label: gettext('Saving'), key: 'saving'},132 {label: gettext('Queued'), key: 'queued'},133 {label: gettext('Pending Delete'), key: 'pending_delete'},134 {label: gettext('Killed'), key: 'killed'},135 {label: gettext('Deactivated'), key: 'deactivated'},136 {label: gettext('Deleted'), key: 'deleted'}137 ]138 })139 .append({140 label: gettext('Visibility'),141 name: 'visibility',142 isServer: true,143 singleton: true,144 options: [145 {label: gettext('Public'), key: 'public'},146 {label: gettext('Private'), key: 'private'},147 {label: gettext('Shared With Project'), key: 'shared'},148 {label: gettext('Community'), key: 'community'}149 ]150 })151 .append({152 label: gettext('Protected'),153 name: 'protected',154 isServer: true,155 singleton: true,156 options: [157 {label: gettext('Yes'), key: 'true'},158 {label: gettext('No'), key: 'false'}159 ]160 })161 .append({162 label: gettext('Format'),163 name: 'disk_format',164 isServer: true,165 singleton: true,166 options: [167 {label: gettext('AKI'), key: 'aki'},168 {label: gettext('AMI'), key: 'ami'},169 {label: gettext('ARI'), key: 'ari'},170 {label: gettext('Docker'), key: 'docker'},171 {label: gettext('ISO'), key: 'iso'},172 {label: gettext('OVA'), key: 'ova'},173 {label: gettext('PLOOP'), key: 'ploop'},174 {label: gettext('QCOW2'), key: 'qcow2'},175 {label: gettext('Raw'), key: 'raw'},176 {label: gettext('VDI'), key: 'vdi'},177 {label: gettext('VHD'), key: 'vhd'},178 {label: gettext('VMDK'), key: 'vmdk'}179 ]180 })181 .append({182 label: gettext('Min. Size (bytes)'),183 name: 'size_min',184 isServer: true,185 singleton: true186 })187 .append({188 label: gettext('Max. Size (bytes)'),189 name: 'size_max',190 isServer: true,191 singleton: true192 });193 }194 /**195 * @ngdoc constant196 * @name horizon.app.core.images.validationRules197 * @description constants for use in validation fields198 */199 function validationRules() {200 return {201 integer: /^[0-9]+$/,202 fieldMaxLength: 255203 };204 }205 /**206 * @ngdoc constant207 * @name horizon.app.core.images.imageFormats208 * @description constants for list of image types in dropdowns209 */210 function imageFormats() {211 return {212 iso: gettext('ISO - Optical Disk Image'),213 ova: gettext('OVA - Open Virtual Appliance'),214 ploop: gettext('PLOOP - Virtuozzo/Parallels Loopback Disk'),215 qcow2: gettext('QCOW2 - QEMU Emulator'),216 raw: gettext('Raw'),217 vdi: gettext('VDI - Virtual Disk Image'),218 vhd: gettext('VHD - Virtual Hard Disk'),219 vmdk: gettext('VMDK - Virtual Machine Disk'),220 aki: gettext('AKI - Amazon Kernel Image'),221 ami: gettext('AMI - Amazon Machine Image'),222 ari: gettext('ARI - Amazon Ramdisk Image'),223 docker: gettext('Docker')224 };225 }226 /**227 * @name imageProperties228 * @description resource properties for image module229 */230 function imageProperties(imagesService, statuses) {231 return {232 id: gettext('ID'),233 checksum: gettext('Checksum'),234 members: gettext('Members'),235 min_disk: gettext('Min. Disk'),236 min_ram: gettext('Min. RAM'),237 name: gettext('Name'),238 owner: gettext('Owner'),239 tags: gettext('Tags'),240 'updated_at': {label: gettext('Updated At'), filters: ['simpleDate'] },241 virtual_size: gettext('Virtual Size'),242 visibility: gettext('Visibility'),243 description: gettext('Description'),244 architecture: gettext('Architecture'),245 kernel_id: gettext('Kernel ID'),246 ramdisk_id: gettext('Ramdisk ID'),247 'created_at': {label: gettext('Created At'), filters: ['simpleDate'] },248 container_format: { label: gettext('Container Format'), filters: ['uppercase'] },249 disk_format: { label: gettext('Disk Format'), filters: ['noValue', 'uppercase'] },250 is_public: { label: gettext('Is Public'), filters: ['yesno'] },251 type: { label: gettext('Type')},252 'protected': { label: gettext('Protected'), filters: ['yesno'] },253 size: { label: gettext('Size'), filters: ['bytes'] },254 status: { label: gettext('Status'), values: statuses }255 };256 }257 /**258 * @ngdoc value259 * @name horizon.app.core.images.events260 * @description a list of events for images261 * @returns {Object} The event object262 */263 function events() {264 return {265 IMAGE_UPLOAD_PROGRESS: 'horizon.app.core.images.IMAGE_UPLOAD_PROGRESS'266 };267 }268 config.$inject = [269 '$provide',270 '$windowProvider',271 '$routeProvider',272 'horizon.app.core.detailRoute'273 ];274 /**275 * @name config276 * @param {Object} $provide277 * @param {Object} $windowProvider278 * @param {Object} $routeProvider279 * @description Routes used by this module.280 * @returns {undefined} Returns nothing281 */282 function config($provide, $windowProvider, $routeProvider, detailRoute) {283 var path = $windowProvider.$get().STATIC_URL + 'app/core/images/';284 $provide.constant('horizon.app.core.images.basePath', path);285 $routeProvider.when('/project/images/:id', {286 redirectTo: goToAngularDetails287 });288 $routeProvider.when('/admin/images/:id/detail', {289 redirectTo: goToAngularDetails290 });291 $routeProvider.when('/project/images', {292 templateUrl: path + 'panel.html'293 });294 $routeProvider.when('/admin/images', {295 templateUrl: path + 'admin-panel.html'296 });297 function goToAngularDetails(params) {298 return detailRoute + 'OS::Glance::Image/' + params.id;299 }300 }...
user_profile.spec.js
Source:user_profile.spec.js
...17 return MM.openSideMenu();18 }).then(function () {19 return MM.clickOnElement($('a[userid="56"]'));20 }).then(function () {21 expect(MM.getNavBar().getText()).toMatch('Barbara Gardner');22 expect(MM.getView().getText()).toContain('Barbara Gardner');23 expect(MM.getView().getText()).toContain('Orange City, Australia');24 }).then(function () {25 done();26 });27 });28 it('View user details page', function (done) {29 return MM.loginAsStudent().then(function () {30 return MM.openSideMenu();31 }).then(function () {32 return MM.clickOnElement($('a[userid="56"]'));33 }).then(function () {34 return MM.clickOn('Details');35 }).then(function () {36 expect(MM.getView().getText()).toContain('Contact');37 expect(MM.getView().getText()).toContain('Email address');38 expect(MM.getView().getText()).toContain('User details');39 expect(MM.getView().getText()).toContain('Interests');40 expect(MM.getView().getText()).toContain('music, horses, friends, Films');41 expect(MM.getView().getText()).toContain("Description");42 expect(MM.getView().getText()).toContain("I'm Barbara but friends call me B");43 }).then(function () {44 done();45 });46 });47 it('View user learning plans incompetent one', function (done) {48 return MM.loginAsStudent().then(function () {49 return MM.openSideMenu();50 }).then(function () {51 return MM.clickOnElement($('a[userid="56"]'));52 }).then(function () {53 return MM.clickOn('Learning plans');54 }).then(function () {55 expect(MM.getNavBar().getText()).toMatch('Learning plans');56 return MM.clickOn('Digital Literacies Basics');57 }).then(function () {58 expect(MM.getNavBar().getText()).toMatch('Digital Literacies Basics');59 expect($('progress').isDisplayed()).toBeTruthy();60 expect(MM.getView().getText()).toContain('Learning plan competencies');61 }).then(function () {62 return MM.clickOn('220221072');63 }).then(function () {64 expect(MM.getNavBar().getText()).toContain('220221072');65 expect(MM.getView().getText()).toContain('remix content into something new');66 expect(MM.getView().getText()).toContain('Proficient');67 expect(MM.getView().getText()).toContain('No');68 expect(MM.getView().getText()).toContain('Cross-referenced competencies');69 expect(MM.getView().getText()).toContain('Digital Literacies (Starter level)');70 }).then(function () {71 done();72 });73 });74 it('View user learning plans competent one', function (done) {75 return MM.loginAsStudent().then(function () {76 return MM.openSideMenu();77 }).then(function () {78 return MM.clickOnElement($('a[userid="56"]'));79 }).then(function () {80 return MM.clickOn('Learning plans');81 }).then(function () {82 expect(MM.getNavBar().getText()).toMatch('Learning plans');83 return MM.clickOn('Digital Literacies Basics');84 }).then(function () {85 expect(MM.getNavBar().getText()).toMatch('Digital Literacies Basics');86 expect($('progress').isDisplayed()).toBeTruthy();87 expect(MM.getView().getText()).toContain('Learning plan competencies');88 }).then(function () {89 return MM.clickOn('220220174');90 }).then(function () {91 expect(MM.getNavBar().getText()).toContain('220220174');92 expect(MM.getView().getText()).toContain('get involved locally and nationally');93 expect(MM.getView().getText()).toContain('Proficient');94 expect(MM.getView().getText()).toContain('Yes');95 expect(MM.getView().getText()).toContain('Cross-referenced competencies');96 expect(MM.getView().getText()).toContain('Competent');97 expect(MM.getView().getText()).toContain('Digital Literacies (Starter level)');98 }).then(function () {99 done();100 });101 });102 it('View user badge page', function (done) {103 return MM.loginAsStudent().then(function () {104 return MM.openSideMenu();105 }).then(function () {106 return MM.clickOnElement($('a[userid="56"]'));107 }).then(function () {108 return MM.clickOn('Badges');109 }).then(function () {110 expect(MM.getNavBar().getText()).toContain('Badges');111 expect(MM.getView().getText()).toContain('Analysis');112 expect(MM.getView().getText()).toContain('2014');113 expect(MM.getView().getText()).toContain('Subject Knowledge');114 expect(MM.getView().getText()).toContain('Moodle Support Hero');115 expect(MM.getView().getText()).toContain('Assignment Superstar');116 }).then(function () {117 return MM.clickOn('Analysis');118 }).then(function () {119 expect(MM.getNavBar().getText()).toContain('Analysis');120 expect($('img[ng-src="http://school.demo.moodle.net/pluginfile.php/411/user/icon/boost/f1?rev=2472"]').isPresent()).toBeTruthy();121 expect(MM.getView().getText()).toContain('Recipient details');122 expect(MM.getView().getText()).toContain('Barbara Gardner');123 expect(MM.getView().getText()).toContain('Issuer details');124 expect(MM.getView().getText()).toContain('Mount Orange school');125 }).then(function () {126 done();127 });128 });...
index.js
Source:index.js
1module.exports = angular.module('stf.device-status', [])2 .filter('statusNameAction', function(gettext) {3 return function(text) {4 return {5 absent: gettext('Disconnected'),6 present: gettext('Connected'),7 offline: gettext('Offline'),8 unauthorized: gettext('Unauthorized'),9 preparing: gettext('Preparing'),10 ready: gettext('Ready'),11 using: gettext('Stop Using'),12 busy: gettext('Busy'),13 available: gettext('Use'),14 automation: gettext('Stop Automation')15 }[text] || gettext('Unknown')16 }17 })18 .filter('statusNamePassive', function(gettext) {19 return function(text) {20 return {21 absent: gettext('Disconnected'),22 present: gettext('Connected'),23 offline: gettext('Offline'),24 unauthorized: gettext('Unauthorized'),25 preparing: gettext('Preparing'),26 ready: gettext('Ready'),27 using: gettext('Using'),28 busy: gettext('Busy'),29 available: gettext('Available'),30 automation: gettext('Automating'),31 }[text] || gettext('Unknown')32 }33 })34 .filter('likelyLeaveReason', function(gettext) {35 return function(text) {36 return {37 ungroup_request: gettext('You (or someone else) kicked the device.'),38 owner_change: gettext('Someone stole your device.'),39 automatic_timeout: gettext('Device was kicked by automatic timeout. '),40 device_absent: gettext('Device is not present anymore for some reason.'),41 status_change: gettext('Device is present but offline.')42 }[text] || gettext('Unknown reason.')43 }44 })45 .filter('batteryHealth', function(gettext) {46 return function(text) {47 return {48 cold: gettext('Cold'),49 good: gettext('Good'),50 dead: gettext('Dead'),51 over_voltage: gettext('Over Voltage'),52 overheat: gettext('Overheat'),53 unspecified_failure: gettext('Unspecified Failure')54 }[text] || gettext('-')55 }56 })57 .filter('batterySource', function(gettext) {58 return function(text) {59 return {60 ac: gettext('AC'),61 usb: gettext('USB'),62 wireless: gettext('Wireless')63 }[text] || gettext('-')64 }65 })66 .filter('batteryStatus', function(gettext) {67 return function(text) {68 return {69 charging: gettext('Charging'),70 discharging: gettext('Discharging'),71 full: gettext('Full'),72 not_charging: gettext('Not Charging')73 }[text] || gettext('-')74 }75 })76 .filter('displayDensity', function() {77 return function(text) {78 return {79 '0.5': 'LDPI', // (120 dpi)80 '1': 'MDPI', // (160 dpi)81 '1.5': 'HDPI', // (240 dpi)82 '2': 'XHDPI', // (320 dpi)83 '3': 'XXHDPI', // (480 dpi)84 '4': 'XXXHDPI' // (640 dpi)85 }[text] || text86 }87 })88 .filter('networkType', function(gettext) {89 return function(text) {90 return {91 bluetooth: gettext('Bluetooth'),92 dummy: gettext('Dummy'),93 ethernet: gettext('Ethernet'),94 mobile: gettext('Mobile'),95 mobile_dun: gettext('Mobile DUN'),96 mobile_hipri: gettext('Mobile High Priority'),97 mobile_mms: gettext('Mobile MMS'),98 mobile_supl: gettext('Mobile SUPL'),99 mobile_wifi: gettext('WiFi'),100 wimax: gettext('WiMAX')101 }[text] || text102 }103 })104 .filter('networkSubType', function(gettext) {105 return function(text) {106 return {107 mobile_wifi: gettext('WiFi')108 }[text] || text109 }110 })111 .filter('humanizedBool', function(gettext) {112 return function(text) {113 switch (text) {114 case true:115 return gettext('Yes')116 case false:117 return gettext('No')118 default:119 return gettext('-')120 }121 }...
browser_editor_movelines.js
Source:browser_editor_movelines.js
...10 ed.setText(simpleProg);11 // Move first line up12 ed.setCursor({ line: 0, ch: 0 });13 ed.moveLineUp();14 is(ed.getText(0), "function foo() {", "getText(num)");15 ch(ed.getCursor(), { line: 0, ch: 0 }, "getCursor");16 // Move last line down17 ed.setCursor({ line: 4, ch: 0 });18 ed.moveLineDown();19 is(ed.getText(4), "}", "getText(num)");20 ch(ed.getCursor(), { line: 4, ch: 0 }, "getCursor");21 // Move line 2 up22 ed.setCursor({ line: 1, ch: 5});23 ed.moveLineUp();24 is(ed.getText(0), " let i = 1;", "getText(num)");25 is(ed.getText(1), "function foo() {", "getText(num)");26 ch(ed.getCursor(), { line: 0, ch: 5 }, "getCursor");27 // Undo previous move by moving line 1 down28 ed.moveLineDown();29 is(ed.getText(0), "function foo() {", "getText(num)");30 is(ed.getText(1), " let i = 1;", "getText(num)");31 ch(ed.getCursor(), { line: 1, ch: 5 }, "getCursor");32 // Move line 2 and 3 up33 ed.setSelection({ line: 1, ch: 0 }, { line: 2, ch: 0 });34 ed.moveLineUp();35 is(ed.getText(0), " let i = 1;", "getText(num)");36 is(ed.getText(1), " let j = 2;", "getText(num)");37 is(ed.getText(2), "function foo() {", "getText(num)");38 ch(ed.getCursor("start"), { line: 0, ch: 0 }, "getCursor(string)");39 ch(ed.getCursor("end"), { line: 1, ch: 0 }, "getCursor(string)");40 // Move line 1 to 3 down twice41 ed.dropSelection();42 ed.setSelection({ line: 0, ch: 7 }, { line: 2, ch: 5 });43 ed.moveLineDown();44 ed.moveLineDown();45 is(ed.getText(0), " return bar;", "getText(num)");46 is(ed.getText(1), "}", "getText(num)");47 is(ed.getText(2), " let i = 1;", "getText(num)");48 is(ed.getText(3), " let j = 2;", "getText(num)");49 is(ed.getText(4), "function foo() {", "getText(num)");50 ch(ed.getCursor("start"), { line: 2, ch: 7 }, "getCursor(string)");51 ch(ed.getCursor("end"), { line: 4, ch: 5 }, "getCursor(string)");52 teardown(ed, win);53 });...
Using AI Code Generation
1var text = root.getText();2root.setText(text);3var text = root.getText();4root.setText(text);5var text = root.getText();6root.setText(text);7var text = root.getText();8root.setText(text);9var text = root.getText();10root.setText(text);11var text = root.getText();12root.setText(text);13var text = root.getText();14root.setText(text);15var text = root.getText();16root.setText(text);17var text = root.getText();18root.setText(text);19var text = root.getText();20root.setText(text);21var text = root.getText();22root.setText(text);23var text = root.getText();24root.setText(text);25var text = root.getText();26root.setText(text);27var text = root.getText();28root.setText(text);
Using AI Code Generation
1var root = document.getRootNode();2root.getText();3var root = document.getRootNode();4var child = root.getChildNodes()[0];5child.getText();6var root = document.getRootNode();7var child = root.getChildNodes()[0];8child.getText();9var root = document.getRootNode();10var child = root.getChildNodes()[0];11child.getAttributes();12var root = document.getRootNode();13var child = root.getChildNodes()[0];14child.getAttributes();15var root = document.getRootNode();16var child = root.getChildNodes()[0];17child.getAttributes();18var root = document.getRootNode();19var child = root.getChildNodes()[0];20child.getAttributes();21var root = document.getRootNode();22var child = root.getChildNodes()[0];23child.getAttributes();24var root = document.getRootNode();25var child = root.getChildNodes()[0];26child.getAttributes();27var root = document.getRootNode();28var child = root.getChildNodes()[0];29child.getAttributes();30var root = document.getRootNode();31var child = root.getChildNodes()[0];32child.getAttributes();33var root = document.getRootNode();34var child = root.getChildNodes()[0];35child.getAttributes();36var root = document.getRootNode();37var child = root.getChildNodes()[0];38child.getAttributes();39var root = document.getRootNode();40var child = root.getChildNodes()[0];41child.getAttributes();
Using AI Code Generation
1var root = require('root');2var text = root.getText();3console.log(text);4var text = 'Hello World';5exports.getText = function() {6 return text;7};8var text = 'Hello World';9module.exports = {10 getText: function() {11 return text;12 }13};14var root = require('root');15var text = root.getText();16console.log(text);17In this article, you have learned about how to export and import a
Using AI Code Generation
1var text = root.getText();2root.setText("hello world");3var text = root.getText();4root.setText("hello world");5var text = root.getText();6root.setText("hello world");7var text = root.getText();8root.setText("hello world");9var text = root.getText();10root.setText("hello world");11var text = root.getText();12root.setText("hello world");13var text = root.getText();14root.setText("hello world");15var text = root.getText();16root.setText("hello world");17var text = root.getText();18root.setText("hello world");
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!