/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
- var WorkbenchLogin = new function() {
- var form = document.getElementById('login_form');
- this.initializeForm = function(loginType) {
- var loginTypeElem = form['loginType_' + loginType];
- if (loginTypeElem === undefined) {
- alert("Unknown login type '" + loginType + "'. Check configuration!");
- return;
- }
- switchLoginTypeTo(loginTypeElem);
- if (wbLoginConfig.customServerUrl === "") {
- buildServerUrl();
- } else {
- form.serverUrl.value = wbLoginConfig.customServerUrl;
- }
- // add listeners to the loginType radio buttons
- var loginTypes = document.getElementsByName("loginType");
- for (var i = 0; i < loginTypes.length; i++) {
- bindEvent(loginTypes[i], "click", setFormForLoginType);
- }
- bindEvent(form.un, "keyup", toggleUsernamePasswordSessionDisabled);
- bindEvent(form.pw, "keyup", toggleUsernamePasswordSessionDisabled);
- bindEvent(form.sid, "keyup", toggleUsernamePasswordSessionDisabled);
- bindEvent(form.sid, "keyup", fuzzyServerUrlSelect);
-
- bindEvent(form.un, "change", toggleUsernamePasswordSessionDisabled);
- bindEvent(form.pw, "change", toggleUsernamePasswordSessionDisabled);
- bindEvent(form.sid, "change", toggleUsernamePasswordSessionDisabled);
- bindEvent(form.sid, "change", fuzzyServerUrlSelect);
-
- bindEvent(form.pw, "keypress", checkCaps); // must be keypress, not keyup
- bindEvent(form.inst, "keyup", buildServerUrl);
- bindEvent(form.api, "keyup", buildServerUrl);
- bindEvent(form.inst, "change", buildServerUrl);
- bindEvent(form.api, "change", buildServerUrl);
- };
- function setFormForLoginType() {
- var loginTypes = document.getElementsByName("loginType");
- for (var i = 0; i < loginTypes.length; i++) {
- if (loginTypes[i].checked) {
- switchLoginTypeTo(loginTypes[i]);
- break;
- }
- }
- }
- function switchLoginTypeTo(typeElem) {
- typeElem.checked = true;
- var divs = document.getElementsByTagName("div");
- for (var i = 0; i < divs.length; i++) {
- if (divs[i].className.indexOf("loginType") >= 0) {
- if (divs[i].className.indexOf(typeElem.id) >= 0) {
- divs[i].style.display = "block";
- } else {
- divs[i].style.display = "none";
- }
- }
- }
- switch (typeElem.id) {
- case "loginType_oauth":
- form.loginBtn.value = "Login with Salesforce";
- break;
- default:
- form.loginBtn.value = "Login";
- setFocus();
- break;
- }
- }
- function setFocus() {
- try {
- if (form.un.value == null || form.un.value == "") {
- form.un.focus();
- } else {
- form.pw.focus();
- }
- } catch (e) {
- // you suck IE
- }
- }
- function checkCaps(event) {
- var key = 0;
- var shifted = false;
- // IE
- if ( document.all ) {
- key = event.keyCode;
- // Everything else
- } else {
- key = event.which;
- }
- shifted = event.shiftKey;
- var pwcaps = document.getElementById('pwcaps');
- var upper = (key >= 65 && key <= 90);
- var lower = (key >= 97 && key <= 122);
- if ( (upper && !shifted) || (lower && shifted) ) {
- pwcaps.style.visibility='visible';
- } else if ( (lower && !shifted) || (upper && shifted) ) {
- pwcaps.style.visibility='hidden';
- }
- }
- function toggleUsernamePasswordSessionDisabled() {
- if (form.sid.value) {
- form.un.disabled = true;
- form.pw.disabled = true;
- } else {
- form.un.disabled = false;
- form.pw.disabled = false;
- }
- if (form.un.value || form.pw.value) {
- form.sid.disabled = true;
- } else {
- form.sid.disabled = false;
- }
- }
- function fuzzyServerUrlSelect() {
- var sid = form.sid.value
- var sidIndex = sid.indexOf('00D');
- if (sidIndex > -1) {
- var serverId = sid.substring(sidIndex + 3, sidIndex + 4);
- var inst = wbLoginConfig.serverIdMap[serverId];
- if (inst != null) {
- form.inst.value = inst;
- buildServerUrl();
- }
- }
- }
- function buildServerUrl() {
- form.serverUrl.value = 'http' +
- (wbLoginConfig.useHTTPS && (form.inst.value.search(/localhost/i) == -1) ? 's' : '') +
- '://' +
- form.inst.value +
- '.salesforce.com/services/Soap/u/' +
- form.api.value;
- }
- function bindEvent(el, eventName, eventHandler) {
- if (el.addEventListener){
- el.addEventListener(eventName, eventHandler, false);
- } else if (el.attachEvent){
- el.attachEvent("on"+eventName, eventHandler);
- }
- }
- };