function remove(divName) {
        document.getElementById(divName).style.display = "none";
}

function display(divName) {
        document.getElementById(divName).style.display = "block";
}

function renom07_showBenefitsForTier(tierBenefitDivToShow, imageUrl)
{
   for(i=0;i<tierBenefitDivs.length;i++)
   {

    var currentDiv = tierBenefitDivs [i];


    if (currentDiv != tierBenefitDivToShow)
    {
        document.getElementById(currentDiv).style.display = 'none';
        document.getElementById('menutab_' + currentDiv + '_selected').style.display = 'none';
        document.getElementById('menutab_' + currentDiv).style.display = 'block';
    }
    else
    {
            document.getElementById(currentDiv).style.display = 'block';
            document.getElementById('menutab_' + currentDiv).style.display = 'none';
            document.getElementById('menutab_' + currentDiv + '_selected').style.display = 'block';
    }

   }
}

var dialogAsOf = new dialog(false);

function checkFunnyChar(str){

    var regExp = "[^a-zA-Z \-]";
    var regex = new RegExp(regExp);
    return regex.test(str);
}

function isEnteredAENumber(AENumber)
{
    var completeEnteredAENumber = '';
    enteredAENumber1 = document.getElementById('mll_spouseAENumber1').value;
    enteredAENumber2 = document.getElementById('mll_spouseAENumber2').value;
    enteredAENumber3 = document.getElementById('mll_spouseAENumber3').value;
    completeEnteredAENumber = enteredAENumber1 + enteredAENumber2 + enteredAENumber3;

   //alert("Own: " + AENumber);
   //alert("Complete: " + completeEnteredAENumber);
    return (AENumber == completeEnteredAENumber);
}

function benefitSelected(bundle, submitButtonID)
{
    var correctNumberSelectedForBundle1 = updateDisplayForBundle(1);
    var correctNumberSelectedForBundle2 = updateDisplayForBundle(2);
    var correctNumberSelectedForBundle3 = updateDisplayForBundle(3);

    if (correctNumberSelectedForBundle1 && correctNumberSelectedForBundle2 && correctNumberSelectedForBundle3)
    {
        document.getElementById(submitButtonID).disabled  = false;
    }
    else
    {
        document.getElementById(submitButtonID).disabled  = true;
    }
}

function updateDisplayForBundle(bundle)
{
    //alert('benefitSelected called: bundle=' + bundle);

    var numberOfBenefitsSelected = 0;


    var bundleList;

    if (bundle == 1)
    {
        bundleList = benefitBundle1List;
    }
    else if (bundle == 2)
    {
        bundleList = benefitBundle2List;
    }
    else
    {
        bundleList = benefitBundle3List;
    }


    for (i=0; i<bundleList.length; i++)
    {
        var checkBoxID = bundleList[i];

        //alert('checkBoxID=' + checkBoxID);

        var checkBox = document.getElementById(checkBoxID);

        var isChecked = checkBox.checked;

        //alert('isChecked=' + isChecked);

        if (isChecked )
        {
            numberOfBenefitsSelected++;
        }
    }
    
    return updateHtmlForBundle(numberOfBenefitsSelected, bundle);
}

function updateHtmlForBundle(numberOfBenefitsSelected, bundle) {

    var messageStatusID ;
    var correctNumberBenefitsSelected;

    if (bundle == 1)
    {
        messageStatusID = 'CategoryOneStatus';
        correctNumberBenefitsSelected = NUMBER_BENEFITS_FROM_BUNDLE_1;
    }
    else if (bundle == 2)
    {
        messageStatusID = 'CategoryTwoStatus';
        correctNumberBenefitsSelected = NUMBER_BENEFITS_FROM_BUNDLE_2;
    }
    else
    {
        messageStatusID = 'CategoryThreeStatus';
        correctNumberBenefitsSelected = NUMBER_BENEFITS_FROM_BUNDLE_3;
    }

    if ( numberOfBenefitsSelected == correctNumberBenefitsSelected)
    {
        document.getElementById(messageStatusID).innerHTML = CORRECT_BENFITS_IMAGE + CORRECT_BENFITS_MESSAGE;
        return true;
    }
    else if (numberOfBenefitsSelected < correctNumberBenefitsSelected)
    {
        document.getElementById(messageStatusID).innerHTML = TOO_FEW_BENFITS_IMAGE + (correctNumberBenefitsSelected-numberOfBenefitsSelected) + ' ' + TOO_FEW_BENFITS_MESSAGE;
        return false;
    }
    else
    {
        document.getElementById(messageStatusID).innerHTML = TOO_MANY_BENFITS_IMAGE + TOO_MANY_BENFITS_MESSAGE;
        return false;
    }

}

function customizeBenefitsCancel()
{
    document.Renom07CancelBenefitsForm.submit();
    return false;
}


function customizeBenefitsSubmit()
{
    setHiddenBenefitsVariables();

    document.Renom07SelectBenefitsForm.submit();
    return false;
}

function setHiddenBenefitsVariables()
{
    setHiddenBenefitsVariablesForBundle(benefitBundle1List, 1);
    setHiddenBenefitsVariablesForBundle(benefitBundle2List, 2);
    setHiddenBenefitsVariablesForBundle(benefitBundle3List, 3);
}

function setHiddenBenefitsVariablesForBundle(bundleList, bundleNum)
{
    var benefitCount = 1;

    for (i=0; i<bundleList.length; i++)
    {
        var checkBoxID = bundleList[i];

        //alert('checkBoxID=' + checkBoxID);

        var checkBox = document.getElementById(checkBoxID);

        var isChecked = checkBox.checked;

        //alert('isChecked=' + isChecked);

        if (isChecked )
        {
            var inputID = 'Bundle' + bundleNum + 'Benefit' + benefitCount;
            var benefitCode = getBenefitCodeOfCheckbox(checkBoxID);

            //alert ('input=' + inputID + ', benefitCode=' + benefitCode);

            document.getElementById(inputID).value = benefitCode;

            benefitCount++;
        }
    }

}


function getBenefitCodeOfCheckbox( checkBoxCode)
{
    //Example of 'checkBoxCode' is "Benefit_Bundle1_R6S10".

    var index = checkBoxCode.indexOf('_');

    //alert('index=' + index);

    var benefitCode = checkBoxCode.substring(index + 1);

    //alert('benefitCode=' + benefitCode);

    index = benefitCode.indexOf('_');
    benefitCode = benefitCode.substring(index + 1);

    return benefitCode;
}

function checkSpousalProfile(url, selectorsAENumber, div)
    {
      if (url == null) return;
      //alert(url);

      if ((errorMsg = checkMLLFieldsEntered()) != "")
      {
          outputResponseMsg(errorMsg);
          refreshMLLFields();
          return;
      }

      if (isEnteredAENumber(selectorsAENumber))
      {
          outputResponseMsg(checkProfileOwnAENumber);
          refreshMLLFields();
          return;
      }

       //disable MLL form fields while sending 'check profile' request
      lockActiveMLL();

      if (window.XMLHttpRequest) // Non-IE browsers
      {
        var xmlreq = new XMLHttpRequest();
        xmlreq.open("POST", url, true);
        xmlreq.onreadystatechange=
          function()
          {
            if (xmlreq.readyState==4)
            {

              var response = xmlreq.responseText;

              //alert(xmlreq.responseText);

              if (xmlreq.status == '200')
              {

                  if (response.indexOf("FORM_OK") > 0)
                  {
                      //set hidden values for MLL Card values?
                      //ouput a message in div? clear the div message?
                      hide('MLLCardForm');
                      //unlockPageAfterMLL();
                      closeMLLForm();
                      //alert(xmlreq.status + ":" + xmlreq.responseText);
                      submitFormAfterMllIfNeeded();
                  }
                  else if (response.indexOf("NAME_INCORRECT") > 0)
                  {
                      outputResponseMsg(checkProfileNameIncorrectMsg);
                      //alert(xmlreq.status + ":" +checkProfileNameIncorrectMsg);
                  }
                  else if (response.indexOf("PROFILE_NOT_FOUND") > 0)
                  {
                      outputResponseMsg(checkProfileNotFoundMsg);
                      //alert("NOTFOUND:" + xmlreq.status + ":" + xmlreq.responseText);
                  }
              }
              else
              {
                  //alert("an Error: " + response);
                  outputResponseMsg(checkProfileErrorMsg);
              }

              //Always re-enable MLL form fields upon return
              unlockMLL();
            }
          }
        xmlreq.send(null);
      }
      else if (window.ActiveXObject) // IE
      {
        var xmlreq = new ActiveXObject("Microsoft.XMLHTTP");
        xmlreq.open("POST", url, true);
        xmlreq.onreadystatechange=
          function()
          {
            if (xmlreq.readyState==4)
            {

                if (xmlreq.status == '200')
                {
                    //alert(xmlreq.responseText);
                    var response = xmlreq.responseText;


                    if (response.indexOf("FORM_OK") > 0)
                    {
                        //set hidden values for MLL Card values?
                        //ouput a message in div? clear the div message?
                        hide('MLLCardForm');
                        //unlockPageAfterMLL();
                        closeMLLForm();
                        //alert(xmlreq.status + ":" + xmlreq.responseText);
                        submitFormAfterMllIfNeeded();
                    }
                    else if (response.indexOf("NAME_INCORRECT") > 0)
                    {
                        outputResponseMsg(checkProfileNameIncorrectMsg);
                        //alert(xmlreq.status + ":" + xmlreq.responseText);
                    }
                    else if (response.indexOf("PROFILE_NOT_FOUND") > 0)
                    {
                        outputResponseMsg(checkProfileNotFoundMsg);
                        //alert("NOTFOUND:" + xmlreq.status + ":" + xmlreq.responseText);
                    }
                }
                else
                {
                    //alert("an Error");
                    outputResponseMsg(checkProfileErrorMsg);
                }

                //Always re-enable MLL form fields upon return
                unlockMLL();
            }
          }
        xmlreq.send();
      }
    }

function buildSpouseCheckQueryString()
{
    var spouseAENumberPart1 = document.getElementById("mll_spouseAENumber1");
    var spouseAENumberPart2 = document.getElementById("mll_spouseAENumber2");
    var spouseAENumberPart3 = document.getElementById("mll_spouseAENumber3");

    var spouseAENumber = spouseAENumberPart1.value + spouseAENumberPart2.value + spouseAENumberPart3.value;


    var firstName = document.getElementById("mll_firstName");

    var lastName = document.getElementById("mll_lastName");

    var queryStr = "spouseAENumber=" + spouseAENumber + "&firstName=" + firstName.value + "&lastName=" + lastName.value;

    //for testing only
    //var queryStr = "spouseAENumber=123123123&firstName=andrew&lastName=kelly";

    //alert(queryStr);

    return queryStr;
}

/**** ************************************************************************** ****/

/*
**
**FUNCTIONS USED ON VerfifyAddress PAGE.
**profileChanged() sets a value in the Renom07AddressForm (main form on the page) to 'true',
**indicating that the user has made a change to their profile thru this form. Used to tell
**the processing JSP to update the users profile.
**
**checkProfileUpdated() pops up a dialog to ask the user if they want to proceed, since doing so will
**update their profile. Checks the value of profileChanged hidden field to see if user changed their profile
**values. Called when Renom07AddressForm submit button is clicked.
**
*/
function setProfileChanged()
{
    document.Renom07AddressForm.profileChanged.value = 'true';
}

function checkProfileUpdated(event)
{
    //alert(document.Renom07AddressForm.profileChanged.value);
    if (document.Renom07AddressForm.profileChanged.value != 'false')
    {
        showDialog('ProfileChangeVerify', event, 8, 10);
    }
    else
    {
        document.Renom07AddressForm.submit();
    }
}

function displayMLLDetails(firstName, surname, memberID, event)
{
    var mllRecipientPopup = document.getElementById('MLLRecipientDetails');

    document.getElementById('recipient-name').innerHTML = firstName + ' ' + surname;
    document.getElementById('recipient-id').innerHTML = memberID.substring(0, 3) + ' ' + memberID.substring(3, 6) + ' ' + memberID.substring(6, 9);

    showDialog(mllRecipientPopup.id, event, 8, 10);
}


/*************************************************************************/

function agentManageFormResend()
{
    agentManageFormSubmit('RESEND');
    return false;
}

function agentManageFormModify()
{
    agentManageFormSubmit('MODIFY');
    return false;
}

function agentManageFormSubmit(selMeth)
{
    setHiddenBenefitsVariables();

    if(selMeth != 'RESEND') {
        // MODIFY or MODIFYFP
        // Test if flight pass bundle (bundle 3) have changed
        var oldB3Sel;
        if(document.Renom07ManageBenefitsForm.initialFPSelection) {
            oldB3Sel = document.Renom07ManageBenefitsForm.initialFPSelection.value;
        }
        else {
            oldB3Sel = '';
        }
        var newB3Sel = document.Renom07ManageBenefitsForm.Bundle3Benefit1.value;
        if(oldB3Sel != newB3Sel) {
            document.Renom07ManageBenefitsForm.SelectionMethod.value = 'MODIFYFP';
        }
        else {
            document.Renom07ManageBenefitsForm.SelectionMethod.value = 'MODIFY';
        }
    }
    else {
        // RESEND
        document.Renom07ManageBenefitsForm.SelectionMethod.value = 'RESEND';
    }

    document.Renom07ManageBenefitsForm.submit();
    return false;
}

function agentDisplayFormSubmit()
{
    setHiddenBenefitsVariables();

    document.Renom07SelectBenefitsForm.submit();
    return false;
}

// This method validates the following rules:
// - Must contain one and only one @ sign
// - There is a minimum of one period (.) to the right side of the @ symbol
// - Must have at least 2 characters after the last period to the right side of the @ symbol
// - Must have at least 2 characters before @ symbol
// - Must have at least 4 characters after @ symbol (including period)
// - Cannot end with an @ sign or a period
// - Cannot contain consecutive combinations of periods
// - Cannot contain consecutive combination of hyphens, underscores and @ symbol
// - Cannot contain space or special characters such as *&%#!~^?(){}[]"/<>,:;\$`+=
function memberEmailSubmit(errmsg)
{
    var badEmail = false;
    if(!/^([a-zA-Z0-9_\.\-]{2,})+\@(([a-zA-Z0-9_\-])+\.)+([a-zA-Z0-9_]{2,})+$/.test(document.EmailUpdateForm.email_email.value)) {
        badEmail = true;
    }
    else if(/.*\.\..*/.test(document.EmailUpdateForm.email_email.value)) {
        badEmail = true;
    }
    else if(/.*[\-_\@][\-_\@].*/.test(document.EmailUpdateForm.email_email.value)) {
        badEmail = true;
    }

    if(badEmail) {
        alert(errmsg);
        return false;
    }
    document.EmailUpdateForm.submit();
}

function disabledAllCheckBoxForm()
{
	var form = document.Renom07SelectBenefitsForm;
	if(form){
		var inputs = form.getElementsByTagName("input");
		for (var i=0;i<inputs.length;i++) {
			inputs[i].disabled = true;
		}
	}
}


function agentFindAnotherMemberFormSubmit()
{
    document.AgentLoginForm.submit();
    return false;
}

function renom07_popUp(url) {
    l = ((window.outerWidth - 500) / 2);
    t = ((window.outerHeight - 500) / 2);

	if (parseInt(navigator.appVersion)>3) {
		if (navigator.appName=="Netscape") { 
			hh='510';
		}	
		if (navigator.appName.indexOf("Microsoft")!=-1) {
			hh='520';
		}				
	}			


    window.open(url, "popup",

    // Size
    "width=500px," +
    "height="+hh+"px," +

    // Position
    "left=" + l + "px," +
    "top=" + t + "px," +
    "screenX=" + l + "px," +
    "screenY=" + t + "px," +

    // Remove bars etc.
    "menubar=no," +
    "location=no," +
    "status=no," +
    "directories=no," +
    "toolbar=no," +

    // Sizing issues
    "scrollbars=no," +
    "resizable=no," +

    // No minimise/maximise button?
    "dialog=yes," +

    "");
}

function displayAgentFindAnotherMemberForm()
{
    document.getElementById("findAnotherMemberLink").style.display = 'none';
    document.getElementById("findAnotherMemberForm").style.display = 'block';
}

function replaceQuote(myString){
    return replaceChar(myString, "'", "\'");
}

function replaceChar(myString, inChar, outChar) {
    var newString = '';
    var prevPos = 0;
    var curPos = myString.indexOf(inChar);
    if(curPos == 0) {
        newString += outChar; prevPos = curPos = curPos+inChar.length;
    }
    while(curPos != -1) {
        newString += myString.substring(prevPos, curPos) + outChar;
        prevPos = curPos = curPos+inChar.length;
        curPos = myString.indexOf(inChar, curPos);
    }
    return(newString + myString.substring(prevPos, myString.length));
}

function togglePOBox(){
    poBox(document.getElementById('divPOBox').style.display == 'none');
}

function poBox(enabled){

    if (enabled){
        document.getElementById('divPOBox').style.display = 'block';
    }else{
        document.getElementById('divPOBox').style.display = 'none';

        document.Renom07AddressForm.addr_boxNumber.value = '';
        document.Renom07AddressForm.addr_postalStationName.value = '';
        document.Renom07AddressForm.addr_ruralRouteNumber.value = '';
    }
}

function disableZoneCode(sel){

    var country = sel.value;

    if (country == 'CA' || country == 'US' || country == ''){
        document.Renom07AddressForm.contact_zoneH.value = '';
        document.Renom07AddressForm.contact_zoneB.value = '';
        document.Renom07AddressForm.contact_zoneF.value = '';
        document.Renom07AddressForm.contact_zoneH.disabled = true;
        document.Renom07AddressForm.contact_zoneB.disabled = true;
        document.Renom07AddressForm.contact_zoneF.disabled = true;
    }else{
        document.Renom07AddressForm.contact_zoneH.disabled = false;
        document.Renom07AddressForm.contact_zoneB.disabled = false;
        document.Renom07AddressForm.contact_zoneF.disabled = false;
    }
}

function renom07_PDF_popUp(url) {
    l = ((window.outerWidth - 800) / 2);
    t = ((window.outerHeight - 600) / 2);

    window.open(url, "popup",

    // Size
    "width=800px," +
    "height=600px," +

    // Position

    "left=" + l + "px," +
    "top=" + t + "px," +
    "screenX=" + l + "px," +
    "screenY=" + t + "px," +

    // Remove bars etc.
    "menubar=yes," +
    "location=yes," +
    "status=yes," +
    "directories=yes," +
    "toolbar=yes," +

    // Sizing issues
    "scrollbars=yes," +
    "resizable=yes," +

    // No minimise/maximise button?
    "dialog=yes" +

    "");
}

function profile_fieldfocus(sel){

    var country = document.Renom07AddressForm.addr_countryCode.value;

    if (country == 'CA' || country == 'US' || country == ''){
            new Function(sel.blur());
    }
}

function renom07_Build_StarAlliance_table(tab) {

            var build_table = "";
            var cnt = 0;
            var dark_row = true;
            var css_class = "row-dark-border";
            var start_line = true;

            for (i in tab){

                if(start_line){
                    build_table = build_table + '<div style="padding:0;margin:0;">';
                    start_line = false;
                }

                build_table = build_table + '<div class="' + css_class + '">' + tab[i] + '</div>';

                cnt ++;

                if (cnt == 3){
                    cnt = 0;
                    dark_row = !dark_row;

                    if (dark_row){
                        css_class = "row-dark-border";
                    }else{
                        css_class = "row-light-border";
                    }
                    start_line = true;
                    build_table = build_table + '</div>';
                }

            }

            if (start_line == false)
                build_table = build_table + '</div>';

            build_table = '<div class="alternate-rows-container">' + build_table + '</div>';

            document.write(build_table);

}

// For Threshold 2007 gift selection
function submitGiftID(giftID, supplier, evt) {
    document.forms['Renom07SelectGiftsForm'].elements['giftID'].value = giftID;
    if(supplier == 'MLL') {
        formToSubmitAfterMll = 'Renom07SelectGiftsForm';
        openMLLForm(evt, 0, -191);
    }
    else {
        document.forms['Renom07SelectGiftsForm'].submit();
    }
}

function submitFormAfterMllIfNeeded() {
    if(formToSubmitAfterMll != null) {
        document.forms[formToSubmitAfterMll].submit();
        formToSubmitAfterMll = null;
    }
}

/* --------------------------------------------------------------- */

function showElement(id) {
    var element = document.getElementById(id);
    if(element != null) {
        element.style.display = 'inline';
    }
}

/* --------------------------------------------------------------- */

function hideElement(id) {
    var element = document.getElementById(id);
    if(element != null) {
        element.style.display = 'none';
    }
}

/* --------------------------------------------------------------- */

function findPosElt(obj) {
    var pos = new Object();
    pos.left = 0;
    pos.top = 0;
    if (obj.offsetParent) {
        while (obj.offsetParent) {
            pos.left += obj.offsetLeft;
            pos.top  += obj.offsetTop;
            obj = obj.offsetParent;
        }
    }
    else if (obj.x) {
        pos.left = obj.x;
        pos.top = obj.y;
    }
    return pos;

}

/* --------------------------------------------------------------- */

function dialog(bodyOnclick) {
    var pos,x,y,ph,c,t,o,backup;
    this.o = bodyOnclick;

    // Hide dialog box
    dialog.prototype.hide = function () {
        hideElement(this.dialogBox);
        if(this.o) document.body.onclick = this.backup;
    };

    // Show dialog box
     dialog.prototype.show = function (launcher,dialogBox,text,corrX,corrY) {

        // id
        this.dialogBox = dialogBox;
        this.ph = document.getElementById(launcher);
        this.db = document.getElementById(dialogBox);
        this.t = document.getElementById(dialogBox + '_text');
        // Set Text
        if (text != null && text != '') this.t.innerHTML = text;

        // Get Object Height
        //this.db.style.visibility = 'hidden';
        this.top = '-1000px';
        showElement(this.dialogBox);
        var H = this.db.offsetHeight;

        // Position
        if( ! this.pos) {
            this.pos = findPosElt(this.ph);
        }

        // Adjustment
        if (corrX != null) this.x = parseInt(corrX) + this.pos.left;
        else this.x = this.pos.left;

        if (corrY != null) this.y = parseInt(corrY) + this.pos.top - H ;
        else this.y = this.pos.top - H;
        
        if(isXRezDebug) {
            this.x = 100;
            this.y = 100;
        }

        // Set style
        this.db.style.position = 'absolute';
        this.db.style.top = this.y + 'px';
        this.db.style.left = this.x + 'px';

        // Onclick on body
        if (this.o) {
            this.backup = document.body.onclick;
            document.body.onclick = this.hide.bindAsEventListener(this);
        }

        // Show box
        this.db.style.visibility = '';
    };
}

function openFPLayer(comp) {
    if(comp.checked) {
        Layer.init('flight_passes','/renom07/flight_passes.do');
    }
    return true;
}
