// Copyright (c) 2002-2005 Openwave Systems Inc. All rights reserved.
// 
// The copyright to the computer software herein is the property of
// Openwave Systems Inc. The software may be used and/or copied only
// with the written permission of Openwave Systems Inc. or in accordance
// with the terms and conditions stipulated in the agreement/contract
// under which the software has been supplied.
// 
// $Id: common_js.jsp,v 1.7 2008/04/30 16:25:04 crwhite Exp $







// Temporary functions for disabled client side validation


function validateLoginForm(form) { return true; }

function validateMailSettingsBlockingForm(form) { return true; }

function validateComposeForm(form) { return true; }

function validateDestinationForm(form) { return true; }

function validateMailSettingsListExternalForm(form) { return true; }

function validateFamilyMboxForm(form) { return true; }

function validateFilterForm(form) { return true; }

function validateFilterListForm(form) { return true; }

function validateAddEditFolderForm(form) { return true; }

function validateMailSettingsFilterForm(form) { return true; }

function validateMailSettingsForwardingForm(form) { return true; }

function validateMailSettingsJunkMailForm(form) { return true; }

function validateMailSettingsJunkMailCMForm(form) { return true; }

function validateMailSettingsJunkMailCTForm(form) { return true; }

function validateMailSettingsAntivirusCTForm(form) { return true; }

function validateMailSettingsAntivirusForm(form) { return true; }

function validateMailSettingsAliasForm(form) { return true; }

function validateMailSettingsExternalForm(form) { return true; }

function validateMailSettingsPreferencesForm(form) { return true; }

function validateMessageSearchForm(form) { return true; }

function validateMailSettingsSignatureForm(form) { return true; }

function validateMailSettingsVacationForm(form) { return true; }

function validateNotificationForm(form) { return true; }

function validateMailSettingsReturnReceiptForm(form) { return true; }

function validateGeneralSettingsGreetingsForm(form) { return true; }

function validateGeneralSettingsPasswordForm(form) { return true; }

function validateGeneralSettingsPinForm(form) { return true; }

function validateGeneralSettingsTimeZoneForm(form) { return true; }

function validateGeneralSettingsUserLocaleForm(form) { return true; }

function validateMailSettingsSendersControlForm(form) { return true; }

function validateVoicemailSettingsPreferencesForm(form) { return true; }
 
function validateVoicemailSettingsFaxForm(form) { return true; }
 
function validateVoicemailSettingsLanguagesForm(form) { return true; }
 
function validateVoicemailSettingsPhoneNumberForm(form) { return true; }

function validateVoicemailSettingsFmfmForm(form) { return true; }

function validateVoicemailSettingsNewFmfmForm(form) { return true; }



// Displays a hint in the status line.
function hint(s) {
    window.status = (s ? s : '');
    return true;
}

// Move message(s) to folder
// page: specifies if the move operation is started from messagelist page ("list")
//       or from the message page ("msg")
function doMoveTop(page) {
    for (var i=0; i < document.topbar.top_folderid.length; i++) {
        if (document.topbar.top_folderid[i].selected) {
            document.TheForm.destfid.value = 
                document.topbar.top_folderid[i].value;
            i = document.topbar.top_folderid.length;
        }
    }

    document.TheForm.inbox_create_folder.value = 0;
    if(document.TheForm.destfid.value == '') {
        document.TheForm.inbox_create_folder.value = 1;
    }
    if (page == "list") {
        if (isMessageSelected()) {
            document.TheForm.action = '/do/mail/message/move?update=true&ref=list&name=x';
            document.TheForm.submit();
        }
    } else if (page == "search") {
        if (isMessageSelected()) {
            document.TheForm.action = '/do/mail/message/move?update=true&ref=search&name=x';
            document.TheForm.submit();
        }
    } else {
        document.TheForm.action = '/do/mail/message/move?update=true&ref=msg&name=x';
        document.TheForm.submit();
    }
}

// field: document.topbar
function doMoveTop10(field, page) {
    for (var i=0; i < field.top_folderid.length; i++) {
        if (field.top_folderid[i].selected) {
            document.TheForm.destfid.value = 
                field.top_folderid[i].value;
            i = field.top_folderid.length;
        }
    }

    document.TheForm.inbox_create_folder.value = 0;
    if(document.TheForm.destfid.value == '') {
        document.TheForm.inbox_create_folder.value = 1;
    }
    if (page == "list") {
        if (isMessageSelected()) {
            document.TheForm.action = '/do/mail/message/move?update=true&ref=list&name=x';
            document.TheForm.submit();
        }
    } else {
        document.TheForm.action = '/do/mail/message/move?update=true&ref=msg&name=x';
        document.TheForm.submit();
    }
}


function confirmDelete() {
    var page = "";
    var deleteNow = false;

    switch (arguments.length) {
      case 1:
        page = arguments[0];
        break;
      case 2:
        page = arguments[0];
        deleteNow = arguments[1];
        break;
    }

    if (page == "list") {
        if (isMessageSelected()) {
            if (confirm('Are you sure you want to delete the selected messages?') ) {
                doDelete(page, deleteNow);
            }
        }
    } else {
        if (confirm('Are you sure you want to delete this message?') ) {
            doDelete(page, deleteNow); 
        }
    }
}

function doDelete() {
    var page = "";
    var deleteNow = false;

    switch (arguments.length) {
      case 1:
        page = arguments[0];
        break;
      case 2:
        page = arguments[0];
        deleteNow = arguments[1];
        break;
    }

    if (page == "list") {
        if (isMessageSelected()) {
            if (deleteNow) {
                document.TheForm.action = '/do/mail/message/delete?update=true&ref=list&deleteNow=true';
            } else {
                document.TheForm.action = '/do/mail/message/delete?update=true&ref=list';
            }
            document.TheForm.submit();
        }
    } else {
        if (deleteNow) {
            document.TheForm.action = '/do/mail/message/delete?update=true&ref=msg&deleteNow=true';
        } else {
            document.TheForm.action = '/do/mail/message/delete?update=true&ref=msg';
        }
        document.TheForm.submit();
    }
}

function confirmForwardAsSpam(page) {
    if (page == "list") {
        if (isMessageSelected()) {
            
            if (confirm('Do you want to forward the selected messages to a spam abuse center and delete them?') ) {
                doForwardAsSpam(page);
            }
            
        }
    } else {
        
        if (confirm('Do you want to forward this message to a spam abuse center and delete it?') ) {
            doForwardAsSpam(page); 
        }
        
    }
}

function doForwardAsSpam(page) {
    if (page == "list") {
        if (isMessageSelected()) {
            document.TheForm.action = '/do/mail/message/forwardAsSpam?update=true&ref=list';
            document.TheForm.submit();
        }
    } else {
        document.TheForm.action = '/do/mail/message/forwardAsSpam?update=true&ref=msg';
        document.TheForm.submit();
    }
}

function confirmForwardAsPhishing(page) {
    if (page == "list") {
        if (isMessageSelected()) {
            
            if (confirm('???') ) {
                doForwardAsPhishing(page);
            }
            
        }
    } else {
        
        if (confirm('Do you want to forward this message to a phishing abuse center?') ) {
            doForwardAsPhishing(page); 
        }
        
    }
}

function doForwardAsPhishing(page) {
    if (page == "list") {
        if (isMessageSelected()) {
            document.TheForm.action = '/do/mail/message/forwardAsPhishing?update=true&ref=list';
            document.TheForm.submit();
        }
    } else {
        document.TheForm.action = '/do/mail/message/forwardAsPhishing?update=true&ref=msg';
        document.TheForm.submit();
    }
}

function selectAllCheckboxes(form, selection, checkboxname) {
    var length = document.forms[form].elements.length;
    var i = 0;
    if (document.forms[form].elements[selection].checked == false) {
        document.forms[form].elements[selection].checked = false;
        for (i=0; i < length; i++) {
            if (document.forms[form].elements[i].name == checkboxname) {
                document.forms[form].elements[i].checked = false;
            }
        }
    } else {
        document.forms[form].elements[selection].checked = true;
        for (i=0; i < length; i++) {
            if (document.forms[form].elements[i].name == checkboxname) {
                document.forms[form].elements[i].checked = true;
            }
        }
    }
}

function selectAllCheckboxes2(form, selection, checkboxname) {
    var length = form.elements.length;
    var i = 0;
    if (selection.checked == false) {
        selection.checked = false;
        for (i=0; i < length; i++) {
            if (form.elements[i].name == checkboxname) {
                form.elements[i].checked = false;
            }
        }
    } else {
        selection.checked = true;
        for (i=0; i < length; i++) {
            if (form.elements[i].name == checkboxname) {
                form.elements[i].checked = true;
            }
        }
    }
}

function selectAllCheckboxesN(form, selection, selection2, checkboxname) {
    var length = document.forms[form].elements.length;
    var i = 0;
    if (document.forms[form].elements[selection].checked == false) {
        document.forms[form].elements[selection].checked = false;
        selection2.checked = false;
        for (i=0; i < length; i++) {
            if (document.forms[form].elements[i].name == checkboxname) {
                document.forms[form].elements[i].checked = false;
            }
        }
    } else {
        document.forms[form].elements[selection].checked = true;
        selection2.checked = true;
        for (i=0; i < length; i++) {
            if (document.forms[form].elements[i].name == checkboxname) {
                document.forms[form].elements[i].checked = true;
            }
        }
    }
}

function selectAllCheckboxesN2(form, selection, selection2, checkboxname) {
    var length = form.elements.length;
    var i = 0;
    if (selection.checked == false) {
        selection.checked = false;
        selection2.checked = false;
        for (i=0; i < length; i++) {
            if (form.elements[i].name == checkboxname) {
                form.elements[i].checked = false;
            }
        }
    } else {
        selection.checked = true;
        selection2.checked = true;
        for (i=0; i < length; i++) {
            if (form.elements[i].name == checkboxname) {
                form.elements[i].checked = true;
            }
        }
    }
}

function selectAllEnabledCheckboxes(form, selection, checkboxname) {
    var length = document.forms[form].elements.length;
    var i = 0;
    if (document.forms[form].elements[selection].checked == false) {
        document.forms[form].elements[selection].checked = false;
        for (i=0; i < length; i++) {
            if (document.forms[form].elements[i].name == checkboxname) {
                if (document.forms[form].elements[i].disabled == false) {
                    document.forms[form].elements[i].checked = false;
                }
            }
        }
    } else {
        document.forms[form].elements[selection].checked = true;
        for (i=0; i < length; i++) {
            if (document.forms[form].elements[i].name == checkboxname) {
                if (document.forms[form].elements[i].disabled == false) {
                    document.forms[form].elements[i].checked = true;
                }
            }
        }
    }
}

function capitalize(s) {
    initialCap = "";
    rest = "";

    if (s.length > 0) {
        initialCap = s.substr(0, 1).toUpperCase();
    }
    if (s.length > 1) {
        rest = s.substr(1);
    }
    
    return initialCap + rest;
}

// TODO: Remove below functions
function validateData(formObject, validationCommand, errorString) { 
    var equalPosition = validationCommand.search("="); 
    var command  = ""; 
    var commandValue = ""; 
    if(equalPosition >= 0) { 
     command  = validationCommand.substring(0,equalPosition); 
     commandValue = validationCommand.substr(equalPosition+1); 
    } else { 
     command = validationCommand; 
    } 

    switch(command) { 
        case "required": {       
            if (formObject.value.length == 0) { 
                alert(errorString); 
                return false; 
            }
            break;             
        }
        case "greaterthan": { 
            if(formObject.value.length > commandValue) {
                alert(errorString); 
                return false;                 
            }     
            break; 
        }
        case "greaterthanvalue": { 
            if(parseInt(formObject.value) > commandValue) {
                alert(errorString); 
                return false;                 
            }     
            break; 
        }
        case "lessthanvalue": { 
            if(parseInt(formObject.value) < commandValue) {
                alert(errorString); 
                return false;                 
            }     
            break; 
        }
    }
}


// This is a generic function that checks specified fields in a form (using 
// parameters from validationRules defined in each page's javascript.jsp), and
// either displays an error message or submits the form if there are no errors.
// validationRules provides the name of the field, the type of checking to be 
// done or a function name, and the error string.
function verifyAndSubmit(form, validationRules) { 
    for(var object=0; object < validationRules.length; object++) { 
        for (var rule=0; rule < validationRules[object].length; rule++) {
            var valFunction = validationRules[object][rule][1];
            if (typeof valFunction == "function") {
                if (valFunction(form) == false) {
                    return;
                }
            } else {
                if (validateData(document.forms[form].elements[validationRules[object][rule][0]], 
                    validationRules[object][rule][1], 
                    validationRules[object][rule][2]) == false) { 
                    document.forms[form].elements[validationRules[object][rule][0]].focus();
                    return; 
                }
            }
        }
    }
    document.forms[form].submit();
} 

// checks if some checkbox has been selected.
// If not selected then displays a error message and returns false.
function isCheckBoxSelected(form, checkboxName, errorString) {
    var length = document.forms[form].elements.length;
    var isSelected = false;
    for (var i=0; i < length; i++) {
        if (document.forms[form].elements[i].name == checkboxName &&
            document.forms[form].elements[i].checked) {
            isSelected = true;
        }
    }
    if(!isSelected) {
        alert(errorString);
    }
    return isSelected;
}

function validateSendersForm(error) {
    if(isCheckBoxSelected('addressesSendersControlForm', 'senders', error)) {
        document.addressesSendersControlForm.submit();
    }
}

function validateAddressesContactsForm(error) {
    if(isCheckBoxSelected('addressesAddEntriesForm', 'emails', error)) {
        document.addressesAddEntriesForm.submit();
    }
}

function openWin(dlink) {
  window.open(dlink, '_blank', 'toolbar=1,location=0,directories=0,status=1,menubar=1,scrollbars=1,resizable=1,width=550,height=420,screenX=125,screenY=30,left=125,top=30' );
}

function doSwitchFolder10(update, fid, remoteAccountUID, resetAccount) {
   document.folderForm.action='/do/mail/folder/view';
   document.folderForm.fid.value=fid;
   document.folderForm.update.value=update;
   if (remoteAccountUID != null) {
       document.folderForm.remoteAccountUID.value=remoteAccountUID;
   }
   if (resetAccount != null) {
       document.folderForm.resetAccount.value=resetAccount;
   }
   document.folderForm.submit();
}

///////////////////////////////////////////////////
function doRefresh() {
    var url = '/do/mail/folder/view';
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
    }
    req.onreadystatechange = processRequest;
    req.open("GET", url, true);
    req.send(null);
}

function processRequest() {
    //alert(req.responseText);
}

function parseMessages() {
}
///////////////////////////////////////////////////
//webmail session timeout IN MINUTES
//var timeout = 3;
var timeout = 30;

//amount of time IN MINUTES prior to timeout that the message window is displayed
var windowtime = 2; //2 minutes

var logoutURL = "/do/logout";

//message to be displayed if frames are disabled
SessionNoticeText = 'Warning- Your WebMail session is about to expire.\n'
									+'To avoid losing your current message, please click the "Save Draft" button,'
									+'located on the lower right corner of the page.\n'
									+'Your message will be placed in the Drafts folder; you can retrieve it from '
									+'that folder to continue working on it at any time.\n'
									+'This action will also allow you to continue your current WebMail session.';

									
var _mtimeout = timeout * 60000;
var _mwindowtime = windowtime * 60000;
var _timer = _mtimeout - _mwindowtime;
var i = 0;

function resetSession(){
				
				 //if (parent.header != null){
				doRefresh();
				 //		parent.header.location.reload(true);
				 //}
				 
				waitForAlert();
}


function doAlert(){
				 
                if(confirm("Warning-- Your WebMail session is about to expire.\n Click OK to continue the session, or Cancel to log out.")){
                	 resetSession();
                }else{
                	 logout();
                }
}

function logout(){
				 top.location.href = logoutURL;
}

function waitForAlert(){
				 setTimeout("doAlert()", _timer);
}
