/static/{{WORKBENCH_VERSION}}/script/login.js

http://forceworkbench.googlecode.com/ · JavaScript · 164 lines · 133 code · 27 blank · 4 comment · 42 complexity · b933f889e701a4159e00e3fae774e4fa MD5 · raw file

  1. var WorkbenchLogin = new function() {
  2. var form = document.getElementById('login_form');
  3. this.initializeForm = function(loginType) {
  4. var loginTypeElem = form['loginType_' + loginType];
  5. if (loginTypeElem === undefined) {
  6. alert("Unknown login type '" + loginType + "'. Check configuration!");
  7. return;
  8. }
  9. switchLoginTypeTo(loginTypeElem);
  10. if (wbLoginConfig.customServerUrl === "") {
  11. buildServerUrl();
  12. } else {
  13. form.serverUrl.value = wbLoginConfig.customServerUrl;
  14. }
  15. // add listeners to the loginType radio buttons
  16. var loginTypes = document.getElementsByName("loginType");
  17. for (var i = 0; i < loginTypes.length; i++) {
  18. bindEvent(loginTypes[i], "click", setFormForLoginType);
  19. }
  20. bindEvent(form.un, "keyup", toggleUsernamePasswordSessionDisabled);
  21. bindEvent(form.pw, "keyup", toggleUsernamePasswordSessionDisabled);
  22. bindEvent(form.sid, "keyup", toggleUsernamePasswordSessionDisabled);
  23. bindEvent(form.sid, "keyup", fuzzyServerUrlSelect);
  24. bindEvent(form.un, "change", toggleUsernamePasswordSessionDisabled);
  25. bindEvent(form.pw, "change", toggleUsernamePasswordSessionDisabled);
  26. bindEvent(form.sid, "change", toggleUsernamePasswordSessionDisabled);
  27. bindEvent(form.sid, "change", fuzzyServerUrlSelect);
  28. bindEvent(form.pw, "keypress", checkCaps); // must be keypress, not keyup
  29. bindEvent(form.inst, "keyup", buildServerUrl);
  30. bindEvent(form.api, "keyup", buildServerUrl);
  31. bindEvent(form.inst, "change", buildServerUrl);
  32. bindEvent(form.api, "change", buildServerUrl);
  33. };
  34. function setFormForLoginType() {
  35. var loginTypes = document.getElementsByName("loginType");
  36. for (var i = 0; i < loginTypes.length; i++) {
  37. if (loginTypes[i].checked) {
  38. switchLoginTypeTo(loginTypes[i]);
  39. break;
  40. }
  41. }
  42. }
  43. function switchLoginTypeTo(typeElem) {
  44. typeElem.checked = true;
  45. var divs = document.getElementsByTagName("div");
  46. for (var i = 0; i < divs.length; i++) {
  47. if (divs[i].className.indexOf("loginType") >= 0) {
  48. if (divs[i].className.indexOf(typeElem.id) >= 0) {
  49. divs[i].style.display = "block";
  50. } else {
  51. divs[i].style.display = "none";
  52. }
  53. }
  54. }
  55. switch (typeElem.id) {
  56. case "loginType_oauth":
  57. form.loginBtn.value = "Login with Salesforce";
  58. break;
  59. default:
  60. form.loginBtn.value = "Login";
  61. setFocus();
  62. break;
  63. }
  64. }
  65. function setFocus() {
  66. try {
  67. if (form.un.value == null || form.un.value == "") {
  68. form.un.focus();
  69. } else {
  70. form.pw.focus();
  71. }
  72. } catch (e) {
  73. // you suck IE
  74. }
  75. }
  76. function checkCaps(event) {
  77. var key = 0;
  78. var shifted = false;
  79. // IE
  80. if ( document.all ) {
  81. key = event.keyCode;
  82. // Everything else
  83. } else {
  84. key = event.which;
  85. }
  86. shifted = event.shiftKey;
  87. var pwcaps = document.getElementById('pwcaps');
  88. var upper = (key >= 65 && key <= 90);
  89. var lower = (key >= 97 && key <= 122);
  90. if ( (upper && !shifted) || (lower && shifted) ) {
  91. pwcaps.style.visibility='visible';
  92. } else if ( (lower && !shifted) || (upper && shifted) ) {
  93. pwcaps.style.visibility='hidden';
  94. }
  95. }
  96. function toggleUsernamePasswordSessionDisabled() {
  97. if (form.sid.value) {
  98. form.un.disabled = true;
  99. form.pw.disabled = true;
  100. } else {
  101. form.un.disabled = false;
  102. form.pw.disabled = false;
  103. }
  104. if (form.un.value || form.pw.value) {
  105. form.sid.disabled = true;
  106. } else {
  107. form.sid.disabled = false;
  108. }
  109. }
  110. function fuzzyServerUrlSelect() {
  111. var sid = form.sid.value
  112. var sidIndex = sid.indexOf('00D');
  113. if (sidIndex > -1) {
  114. var serverId = sid.substring(sidIndex + 3, sidIndex + 4);
  115. var inst = wbLoginConfig.serverIdMap[serverId];
  116. if (inst != null) {
  117. form.inst.value = inst;
  118. buildServerUrl();
  119. }
  120. }
  121. }
  122. function buildServerUrl() {
  123. form.serverUrl.value = 'http' +
  124. (wbLoginConfig.useHTTPS && (form.inst.value.search(/localhost/i) == -1) ? 's' : '') +
  125. '://' +
  126. form.inst.value +
  127. '.salesforce.com/services/Soap/u/' +
  128. form.api.value;
  129. }
  130. function bindEvent(el, eventName, eventHandler) {
  131. if (el.addEventListener){
  132. el.addEventListener(eventName, eventHandler, false);
  133. } else if (el.attachEvent){
  134. el.attachEvent("on"+eventName, eventHandler);
  135. }
  136. }
  137. };