if (!window.ccs) { window.ccs = {}; } ccs.Login = function(whoToGreet) { var self; var sessionId; var userDisplay; var loginLink = "loginUrl"; var logoutLink; var editLink; var showForm; var showForgottenPassword; var registrationLink; var isLoggedIn = false; var lastUsername; var userUUIDCookie; var emailDomain; var fromAddress; var loginModulePage; var requestURI; var resetMessage; var sectionId; var mustRememberMe; var goToGroupHomepage; var postLoginPage; var postLogoutPage; var canLoad; //Set my the loginFormFooter, to notify js that the lightbox has loaded. var whoToGreet; var greetingSuffix; var isActive; var loginStatusEstablished = false; var goToUrl = ""; //If user clicks on a link, it can either take them there, or popup the login form. var postLoginFunction; function constructorFn(whoToGreet) { self = this; sessionId = getCookie("JSESSIONID"); self.canLoad = false; self.getLoggedInUser(); self.whoToGreet = whoToGreet; self.isActive = false; } constructorFn.prototype.setVar = function(name, value) { val = value + ""; //convert to string (may be boolean) if (val == "true" || val == "false") { eval("self." + name + " = " + value + ""); } else { value = value.replace(/'/g, "\\'"); eval("self." + name + " = '" + value + "'"); } } constructorFn.prototype.hasLoginStatusBeenEstablished = function() { return loginStatusEstablished; } constructorFn.prototype.isUserLoggedIn = function() { return isLoggedIn; } constructorFn.prototype.setCanLoad = function() { canLoad = true; } constructorFn.prototype.showThrobber = function() { $('loginWait').style.display = "inline"; } constructorFn.prototype.hideThrobber = function() { $('loginWait').style.display = "none"; } constructorFn.prototype.showForgotPassword = function() { self.setMsg('forgottenPassword'); } constructorFn.prototype.register = function() { location.href = self.registrationLink; } constructorFn.prototype.authClick = function(callback) { if (self.hasLoginStatusBeenEstablished()) { if (self.isUserLoggedIn()) { callback(); } else { postLoginFunction = callback; loginTop(); } } else { setTimeout(function() { self.authClick(callback); }, 500); } } constructorFn.prototype.logout = function() { deleteCookie(self.userUUIDCookie, ccs.contextPath); new Ajax.Request(ccs.contextPath + '/json/' + ccs.appName + '/' + ccs.languageCode + '/modules/login_form/logout.json', { method:'get', onSuccess: function(transport) { if (self.postLogoutPage != "" && self.postLogoutPage != null) { location.href = self.postLogoutPage; } else { location.href = ccs.contextPath; } }, onFailure: function() { // alert('Something went wrong...') } }); } constructorFn.prototype.getLoggedInUser = function() { //alert(self.showUsername); var url = ccs.contextPath + '/json/' + ccs.appName + '/' + ccs.languageCode + '/modules/login_form/checkStatus.json?whoToGreet=' + whoToGreet + '&rnd=' + Math.random(); new Ajax.Request(url, { method:'get', onSuccess: function(transport) { var response = transport.responseText || "no response text"; var json = eval('(' + response + ')'); if (json.status == "") { isLoggedIn = false; } else { isLoggedIn = true; } loginStatusEstablished = true; self.displayForm(json); }, onFailure: function() { // alert('Something went wrong...') } }); } constructorFn.prototype.goToUrl = function(url) { goToUrl = url; if (loginStatusEstablished) { if (isLoggedIn) { location.href = url; } else { loginTop(); } } else { setTimeout(function() { self.goToUrl(url) }, 500); } } constructorFn.prototype.displayForm = function(json) { if (canLoad) { if (json.status == "") { $('statusCheck').style.display = "none"; $('notLoggedIn').style.display = "inline"; } else { $('statusCheck').style.display = "none"; $('logged_in_fullname').innerHTML = json.status + self.greetingSuffix; $('loggedIn').style.display = "inline"; } } else { setTimeout(function() { self.displayForm(json) }, 500); } } constructorFn.prototype.setForgotCredentialsEmail = function(emailAddress) { $('forgottenPasswordEmail').value = emailAddress; } constructorFn.prototype.changeRememberMe = function() { self.mustRememberMe = $('mustRememberMe').checked; } constructorFn.prototype.showMsgBox = function() { if (!isActive) { Modalbox.show($('loginMsgBox'), {title: "none", width: 420}); isActive = true; } /* var elm = $('loginMsgBox'); elm.style.display = "block"; var top = Math.round((document.documentElement.clientHeight / 2) - (elm.style.height / 2) + document.documentElement.scrollTop); if (top < 100) top = 100; elm.style.top = top + "px"; */ } constructorFn.prototype.closeMsgBox = function() { Modalbox.hide(); isActive = false; //msgBox.deactivate(); //$('loginMsgBox').style.display = "none"; } constructorFn.prototype.setMsg = function(srcDiv) { window.scroll(0, 0); var src = $(srcDiv).innerHTML; if (srcDiv == 'forgottenPassword') { src = src.replace(/forgottenPasswordUsername/g, "forgottenPasswordUsername2"); src = src.replace(/forgottenPasswordEmail/g, "forgottenPasswordEmail2"); src = src.replace(/forgottenPasswordMsg/g, "forgottenPasswordMsg2"); } if (srcDiv == 'altLoginForm') { src = src.replace(/login_username_alt/g, "login_username_alt2"); src = src.replace(/login_password_alt/g, "login_password_alt2"); } // Modalbox.hide(); //Modalbox.show($(srcDiv), {title: "none", width: 420}); $('loginMsg').innerHTML = src; //alert($('loginMsg').innerHTML); self.showMsgBox(); } constructorFn.prototype.getParams = function(alt) { if (alt != "_alt2") alt = ""; var username = $('login_username' + alt).value; var password = $('login_password' + alt).value; var parameters = new Object(); parameters['password'] = password; parameters['username'] = username; parameters['emailDomain'] = self.emailDomain; parameters['fromAddress'] = self.fromAddress; parameters['loginModulePage'] = self.loginModulePage; parameters['remember_me'] = self.mustRememberMe; parameters['sectionId'] = self.sectionId; parameters['requestURI'] = self.requestURI; return parameters; } constructorFn.prototype.resetPassword = function() { self.showThrobber(); var parameters = self.getParams(); parameters['username'] = self.lastUsername; new Ajax.Request(ccs.contextPath + '/json/' + ccs.appName + '/' + ccs.languageCode + '/modules/login_form/resetPassword.json', { method:'post', parameters: parameters, onSuccess: function(transport) { var response = transport.responseText || "no response text"; var json = eval('(' + response + ')'); var status = json.status; self.hideThrobber(); $('resetPasswordDone').innerHTML = $('resetPasswordDone').innerHTML.replace(/EMAIL/, json.email); self.setMsg('resetPasswordDone'); }, onFailure: function() { // alert('Something went wrong...') } }); } constructorFn.prototype.logMeIn = function(alt) { var parameters = self.getParams(alt); if (parameters['username'] == "" || parameters['password'] == "") return; if (self.goToGroupHomepage) { parameters['goToGroupHomepage'] = "true"; } new Ajax.Request(ccs.contextPath + '/json/' + ccs.appName + '/' + ccs.languageCode + '/modules/login_form/checkUser.json', { method:'post', parameters: parameters, onSuccess: function(transport) { var response = transport.responseText || "no response text"; var json = eval('(' + response + ')'); var status = json.status; if (status == 'success') { var uuid = json.uuid; if (self.mustRememberMe) { setFixedCookie(self.userUUIDCookie, uuid, ccs.contextPath); } else { deleteCookie(self.userUUIDCookie, ccs.contextPath); } if (postLoginFunction !=null) { postLoginFunction(); } setTimeout(function() { //Slight delay to ensure postLoginFunction is called. if (goToUrl != "") { location.href = goToUrl; } else if (self.postLoginPage != "" && self.postLoginPage != null) { location.href = self.postLoginPage; } else if (self.goToGroupHomepage) { location.href = json.groupHomepage; } else { location.reload(); } }, 500); } else if (status == "incorrect_password" && (self.resetMessage != "null" && !self.resetMessage == "" && !self.resetMessage.toLowerCase() == "not set")) { self.lastUsername = parameters['username']; //Used for forgotten password, so they don't change it in the login form and set to the wrong user. $('loginMsg').innerHTML = self.resetMessage; self.showMsgBox(); } else if (status == "incorrect_username") { self.setMsg("wrongCredentials_username"); } else if (status == "incorrect_password") { self.setMsg("wrongCredentials_password") } else if (status == "not_opted_in") { $('optIn').innerHTML = $('optIn').innerHTML.replace(/EMAIL/, json.email); self.setMsg("optIn") } }, onFailure: function() { // alert('Something went wrong...') } }); } constructorFn.prototype.showResetPassword = function() { self.setMsg("resetPassword"); } constructorFn.prototype.forgottenPasswordSubmit = function(type) { var value = ''; if (type == 'username') { value = $('forgottenPasswordUsername2').value; } else { value = $('forgottenPasswordEmail2').value; } var parameters = self.getParams(); parameters['type'] = type; parameters['value'] = value; self.showThrobber(); new Ajax.Request(ccs.contextPath + '/json/' + ccs.appName + '/' + ccs.languageCode + '/modules/login_form/forgotten.json', { method:'post', parameters: parameters, onSuccess: function(transport) { var response = transport.responseText || "no response text"; var json = eval('(' + response + ')'); var status = json.status; if (status == 'true') { $('forgottenPasswordMsg2').innerHTML = $('successfulNotification').innerHTML; } else { $('forgottenPasswordMsg2').innerHTML = json.info; } self.hideThrobber(); }, onFailure: function() { self.hideThrobber(); } }); } return new constructorFn(whoToGreet); }