/Source/Public/WebMvc/scripts/autocomplete.js

# · JavaScript · 200 lines · 171 code · 26 blank · 3 comment · 37 complexity · 75999715486bad463421b6d3950644db MD5 · raw file

  1. /* Screens */
  2. function logon() {
  3. $(this)
  4. .f1("#username[type='text']", "demo")
  5. .f2("#username[type='text']", "test")
  6. .f("#password", "P@ssw0rd")
  7. .f("#turingnumber", nextInt(1000, 9999))
  8. .s("input[name='logon']");
  9. }
  10. function register() {
  11. $(this)
  12. .f("#username[type='text']", nextWord())
  13. .f("#displayName[type='text']", nextWord())
  14. .f("#email[type='text']", nextMail())
  15. .f("#password", "P@ssw0rd")
  16. .f("#confirmPassword", "P@ssw0rd")
  17. .f("#username[type='text']", nextWord())
  18. .f("#answer", nextInt(1, 9))
  19. .f("#turingnumber", nextInt(1000, 9999))
  20. .s("input[name='register']");
  21. }
  22. /* Foundation */
  23. document.onkeydown = function(event) {
  24. if (window.event) event = window.event;
  25. if (event.ctrlKey && event.keyCode != 17 /* Ctrl */
  26. || event.altKey && event.keyCode != 18 /* Alt */) {
  27. jQuery.fn.f = doIgnore;
  28. jQuery.fn.f1 = doIgnore;
  29. jQuery.fn.f2 = doIgnore;
  30. jQuery.fn.f3 = doIgnore;
  31. jQuery.fn.f4 = doIgnore;
  32. jQuery.fn.f5 = doIgnore;
  33. jQuery.fn.s = doIgnore;
  34. var autoFill = true;
  35. switch (event.keyCode ? event.keyCode : event.which ? event.which : null) {
  36. case 45: /* Insert */
  37. jQuery.fn.f = doReplace;
  38. break;
  39. case 46: /* Delete */
  40. jQuery.fn.f = doClear;
  41. break;
  42. case 49: /* 1 */
  43. jQuery.fn.f = doReplace;
  44. jQuery.fn.f1 = doReplace;
  45. break;
  46. case 50: /* 2 */
  47. jQuery.fn.f = doReplace;
  48. jQuery.fn.f2 = doReplace;
  49. break;
  50. case 51: /* 3 */
  51. jQuery.fn.f = doReplace;
  52. jQuery.fn.f3 = doReplace;
  53. break;
  54. case 52: /* 4 */
  55. jQuery.fn.f = doReplace;
  56. jQuery.fn.f4 = doReplace;
  57. break;
  58. case 53: /* 5 */
  59. jQuery.fn.f = doReplace;
  60. jQuery.fn.f5 = doReplace;
  61. break;
  62. case 33: /* PageUp */
  63. case 34: /* PageDown */
  64. jQuery.fn.f = doReplace;
  65. break;
  66. case 10: /* Enter */
  67. case 13:
  68. jQuery.fn.s = doSubmit;
  69. break;
  70. default:
  71. autoFill = false;
  72. break;
  73. }
  74. if (autoFill) autoFillScreen();
  75. }
  76. return true;
  77. }
  78. function autoFillScreen() {
  79. var container = $("#placeholder>div");
  80. var id = container.attr("id");
  81. if (!isFunction(id)) {
  82. if ($("form", container).length > 0)
  83. alert("Screen '{0}' is not available for auto complete yet.".format(id));
  84. else
  85. alert("Screen '{0}' has no form thus not applicable for auto complete.".format(id));
  86. return;
  87. }
  88. var screen = eval(id);
  89. $(screen);
  90. }
  91. function isFunction(name) {
  92. var type = eval("typeof(" + name + ")");
  93. return type == 'function';
  94. }
  95. function doReplace(selector, value) {
  96. var elements = $(selector+":not(:hidden)", this);
  97. if (elements.length == 0) return this;
  98. var element = elements[0];
  99. if (element.type == "checkbox" | element.type == "radio") {
  100. element.checked = value;
  101. elements.trigger('click');
  102. element.checked = value;
  103. }
  104. else {
  105. element.value = value;
  106. if (element.tagName == 'SELECT') {
  107. elements.trigger('click');
  108. }
  109. }
  110. return this;
  111. }
  112. function doClear(selector) {
  113. var elements = $(selector+":not(:hidden)", this);
  114. if (elements.length == 0) return this;
  115. var element = elements[0];
  116. if (element.type == "checkbox") {
  117. element.checked = false;
  118. elements.trigger('click');
  119. element.checked = false;
  120. }
  121. else {
  122. element.val("");
  123. if (element.tagName == 'SELECT') {
  124. elements.trigger('click');
  125. }
  126. }
  127. return this;
  128. }
  129. function doSubmit(selector) {
  130. $(selector != null ? selector : "input[type='submit']", this).click();
  131. }
  132. function doIgnore() {
  133. return this;
  134. }
  135. /* Random */
  136. function nextBool() {
  137. return Math.random() < 0.5;
  138. }
  139. function nextWord(words) {
  140. words = words != null ? words : g_words;
  141. return words[nextInt(0, words.length - 1)];
  142. }
  143. function nextSentence(wordsNumber) {
  144. var sentence = nextWord();
  145. for (i = 1; i < wordsNumber; i++) {
  146. sentence += " " + nextWord();
  147. }
  148. return sentence;
  149. }
  150. function nextInt(min, max) {
  151. if (min == max) return min;
  152. if (min > max) return nextInt(max, min);
  153. return min + Math.floor(Math.random() * (max - min + 1));
  154. }
  155. function nextOption(id, all) {
  156. if (all) start = 0; else start = 1;
  157. var options = $(id + " option");
  158. var count = options.length;
  159. if (count == 0)
  160. return 0;
  161. return options[nextInt(start, count-1)].value;
  162. }
  163. function nextMail() {
  164. return "{0}@{1}.com".format(nextWord(), nextWord());
  165. }
  166. var g_words = new Array("lorem", "ipsum", "dolor", "sit", "amet",
  167. "consetetur", "sadipscing", "elitr", "sed", "diam",
  168. "nonumy", "eirmod", "tempor", "invidunt", "ut", "labore", "et",
  169. "dolore", "magna", "aliquyam", "erat", "sed", "diam", "voluptua",
  170. "at", "vero", "eos", "accusam", "et", "justo", "duo", "dolores",
  171. "et", "ea", "rebum", "stet", "clita", "kasd", "gubergren", "no",
  172. "sea", "takimata", "sanctus", "est", "minim", "exercitation",
  173. "ullamco", "laboris", "nisi", "aliquip", "ex", "ea", "commodo",
  174. "consequat", "officia", "deserunt", "mollit");