/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is mozilla.org code. * * The Initial Developer of the Original Code is * Netscape Communications Corporation. * Portions created by the Initial Developer are Copyright (C) 1998 * the Initial Developer. All Rights Reserved. * * Contributor(s): * Alec Flett * Seth Spitzer * Håkan Waara * * Alternatively, the contents of this file may be used under the terms of * either of the GNU General Public License Version 2 or later (the "GPL"), * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ var gCurrentDomain; var gPrefsBundle; function identityPageValidate() { var name = document.getElementById("fullName").value; if (!name) { var alertText = gPrefsBundle.getString("enterName"); window.alert(alertText); return false; } if (!validateEmail()) return false; var pageData = parent.GetPageData(); setPageData(pageData, "identity", "fullName", name); return true; } // this is kind of wacky.. basically it validates the email entered in // the text field to make sure it's in the form "user@host".. // // However, if there is a current domain (retrieved during onInit) // then we have to do some special tricks: // - if the user ALSO entered an @domain, then we just chop it off // - at some point it would be useful to keep the @domain, in case they // wish to override the domain. function validateEmail() { var emailElement = document.getElementById("email"); var email = trim(emailElement.value); var emailArray = email.split('@'); if (gCurrentDomain) { // check if user entered an @ sign even though we have a domain if (emailArray.length >= 2) { email = emailArray[0]; emailElement.value = email; } if (!email.length || containsIllegalChar(email)) { var alertText = gPrefsBundle.getString("enterValidEmailPrefix"); window.alert(alertText); return false; } } else { if (emailArray.length != 2 || !emailArray[0].length || !emailArray[1].length || containsIllegalChar(emailArray[0]) || containsIllegalChar(emailArray[1])) { alertText = gPrefsBundle.getString("enterValidEmail"); window.alert(alertText); return false; } } var pageData = parent.GetPageData(); setPageData(pageData, "identity", "email", email); return true; } // This function mimics validateEmail() except that // it runs on prefilled text and does not alert the user. // This is for the case when the code appends the domain // unnecessarily. // This simply gets rid of "@domain" from "foo@domain" function fixPreFilledEmail() { var emailElement = document.getElementById("email"); var email = emailElement.value; var emailArray = email.split('@'); if (gCurrentDomain) { // check if user entered an @ sign even though we have a domain if (emailArray.length >= 2) { email = emailArray[0]; emailElement.value = email; } } } // This function checks for common illegal // characters. This shouldn't be too strict, since // we do more extensive tests later. -Håkan function containsIllegalChar(aString) { for (var i=0; i < aString.length; i++) { var code = aString.charCodeAt(i); if (code > 127) return true; // non-ASCII else if (code == 9 || code == 10 || code == 11 || code == 32) return true; // white space else if (code == 64) return true; // '@' } return false; } function identityPageInit() { gCurrentDomain = null; gPrefsBundle = document.getElementById("bundle_prefs"); clearEmailTextItems(); setEmailDescriptionText(); checkForDomain(); checkForFullName(); checkForEmail(); fixPreFilledEmail(); } function clearEmailTextItems() { var emailDescText = document.getElementById("emailDescText"); if (emailDescText.firstChild) emailDescText.removeChild(emailDescText.firstChild); var postEmailText = document.getElementById("postEmailText"); postEmailText.setAttribute("value", ""); } // Use email example data that ISP has provided. ISP data, if avaialble // for the choice user has made, will be read into CurrentAccountData. // Default example data from properties will be used when the info is missing. function setEmailDescriptionText() { var emailDescText = document.getElementById("emailDescText"); var emailFieldLabel = document.getElementById("emailFieldLabel"); var currentAccountData = parent.gCurrentAccountData; var displayText = null; var emailFieldLabelData = null; var setDefaultEmailDescStrings = true; // Set the default field label emailFieldLabel.setAttribute("value", gPrefsBundle.getString("emailFieldText")); // Get values for customized data from current account if (currentAccountData) { var emailProvider = currentAccountData.emailProviderName; var sampleEmail = currentAccountData.sampleEmail; var sampleUserName = currentAccountData.sampleUserName; var emailIDDesc = currentAccountData.emailIDDescription; var emailIDTitle = currentAccountData.emailIDFieldTitle; if (emailProvider && sampleEmail && sampleUserName && emailIDDesc && emailIDTitle) { // Get email description data displayText = gPrefsBundle.getFormattedString("customizedEmailText", [emailProvider, emailIDDesc, sampleEmail, sampleUserName]); // Set emailfield label emailFieldLabelData = emailIDTitle; emailFieldLabel.setAttribute("value", emailFieldLabelData); // Need to display customized data. Turn off default settings. setDefaultEmailDescStrings = false; } } if (setDefaultEmailDescStrings) { // Check for obtained values and set with default values if needed var username = gPrefsBundle.getString("exampleEmailUserName"); var domain = gPrefsBundle.getString("exampleEmailDomain"); displayText = gPrefsBundle.getFormattedString("defaultEmailText", [username, domain]); } // Create a text nodes with text to be displayed var emailDescTextNode = document.createTextNode(displayText); // Display the dynamically generated text for email description emailDescText.appendChild(emailDescTextNode); } // retrieve the current domain from the parent wizard window, // and update the UI to add the @domain static text function checkForDomain() { var accountData = parent.gCurrentAccountData; if (!accountData) return; if (!accountData.domain) return; // save in global variable gCurrentDomain = accountData.domain; var postEmailText = document.getElementById("postEmailText"); postEmailText.setAttribute("value", "@" + gCurrentDomain); } function checkForFullName() { var name = document.getElementById("fullName"); if (name.value=="") { try { var userInfo = Components.classes["@mozilla.org/userinfo;1"].getService(Components.interfaces.nsIUserInfo); name.value = userInfo.fullname; } catch (ex) { // dump ("checkForFullName failed: " + ex + "\n"); } } } function checkForEmail() { var email = document.getElementById("email"); var pageData = parent.GetPageData(); if (pageData && pageData.identity && pageData.identity.email) { email.value = pageData.identity.email.value; } if (email.value=="") { try { var userInfo = Components.classes["@mozilla.org/userinfo;1"].getService(Components.interfaces.nsIUserInfo); email.value = userInfo.emailAddress; } catch (ex) { // dump ("checkForEmail failed: " + ex + "\n"); } } }