github.com/versent/saml2aws@v2.17.0+incompatible/pkg/provider/f5apm/example/loginpage.html (about)

     1  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
     2  <html>
     3  <head>
     4  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     5  <meta http-equiv="pragma" content="no-cache">
     6  <meta http-equiv="cache-control" content="no-cache">
     7  <title>federate.example.com</title>
     8  <link rel="stylesheet" type="text/css" HREF="/public/include/css/apm.css">
     9  <script language="JavaScript" src="/public/include/js/session_check.js?v=13" ></script>
    10  <script language="JavaScript" src="/public/include/js/agent_common.js" ></script>
    11  <script language="JavaScript" src="/public/include/js/web_host.js" ></script>
    12  <script language="javascript">
    13  <!--
    14  if(!String.prototype.trim){ String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ""); }; }
    15  
    16  /////////////////////////////////////////////////////////////////////////
    17  // function to return the customized screen when session expiration
    18  // is detected on the client-side
    19  /////////////////////////////////////////////////////////////////////////
    20  function SessionExpired_CustomizedScreenGet()
    21  {
    22    return '<br><h3>Session Expired/Timeout</h3><br>Due to user inactivity, your session expired. Click the following link to start a new session.<br><br><table id="IHoptions"><tr><td><a href="[SESSION_RESTART_URL]" class="option"><img src="/public/images/sq-positive.gif" ></a><a href="[SESSION_RESTART_URL]">Start a new session</a></td></tr></table>';
    23  }
    24  
    25  var globalRestartOnSubmit = false;
    26  
    27  function sessionTimedOut()
    28  {
    29      // restart session automatically upon "submit" for edge-like clients if logon form is compatibile
    30      if (externalWebHost.hasWebLogonResetSession() && logonFormCompatible) {
    31         globalRestartOnSubmit = true;
    32      }
    33      else {
    34         // display session expired msg for non-compatible forms or
    35         // non-edge clients
    36         sessionTimeout.showSplashLayer("MessageDIV", SessionExpired_CustomizedScreenGet());
    37      }
    38  }
    39  
    40  /**
    41   * Place the focus and init the form fields
    42   */
    43  
    44  if(self != top) { top.location = self.location; }
    45  window.onerror=function(){ return function(){ return; } }
    46  
    47  //--------------------------------------------------------------------
    48  var doAutoSubmit = true;
    49  
    50  var globalFormId = 'auth_form';
    51  var globalTableId = 'credentials_table';
    52  var globalSubmitTrId = 'submit_row';
    53  
    54  var globalSavePasswordCheckbox = null;
    55  var logonFormCompatible = false;
    56  
    57  var softTokenInput = null;
    58  var softTokenFieldId = "";
    59  var softTokenState = "";
    60  var softTokenNewPIN = "";
    61  var softTokenPINAutoPopulate = false;
    62  if( !softTokenState ) {
    63      softTokenState = "SECURID_AUTH_STATE_START";}
    64  
    65      var challengeMode = false;
    66  
    67  function getInputField(fieldId)
    68  {
    69      var form = document.getElementById( globalFormId );
    70      if( form == null ){
    71          return null;
    72      }
    73  
    74      if(fieldId == null || fieldId == ""){
    75          return null;
    76      }
    77  
    78      var inputs = form.getElementsByTagName("input");
    79      for( var i=0; i<inputs.length; i++ ){
    80          if(  inputs[i].name == fieldId){
    81              return inputs[i];
    82          }
    83      }
    84      return null;
    85  }
    86  
    87  function getSoftTokenInput()
    88  {
    89      return getInputField(softTokenFieldId);
    90  }
    91  
    92  function getUsernameInput()
    93  {
    94      return getInputField("username");
    95  }
    96  
    97  function getPasswordInput()
    98  {
    99      return getInputField("password");
   100  }
   101  
   102  function edgeClientSoftTokenSupport()
   103  {
   104      try {
   105          return externalWebHost.hasWebLogonSoftTokenSupport();
   106      } catch(e) {}
   107      return false;
   108  }
   109  
   110  function getSoftTokenPrompt()
   111  {
   112      if ( softTokenFieldId != "" && edgeClientSoftTokenSupport()) {
   113          var div = document.getElementById("formHeaderSoftToken");
   114          if (div)  {
   115              return div.innerHTML;
   116          }
   117      }
   118      return  null;
   119  }
   120  
   121  function setSoftTokenChallengeResponse(challengeResponse)
   122  {
   123      var challengeElements = document.getElementsByName('_F5_challenge');
   124      if((challengeElements.length == 0) || (null == challengeElements[0])) {
   125          return;
   126      }
   127  
   128      var challengeElement = challengeElements[0];
   129      if(challengeElement.tagName.toLowerCase() == 'select') {
   130          var challengeOptions = challengeElement.options;
   131          if(null == challengeOptions){
   132              return;
   133          }
   134          for (var i = 0, optionsLength = challengeOptions.length; i < optionsLength; i++) {
   135              if (challengeOptions[i].value == challengeResponse) {
   136                  challengeElement.selectedIndex = i;
   137                  break;
   138              }
   139          }
   140      }else if(challengeElement.tagName.toLowerCase() == 'input') {
   141          challengeElement.value = challengeResponse;
   142      }
   143  }
   144  
   145  function OnSubmitEdgeRSASoftToken()
   146  {
   147      var support = edgeClientSoftTokenSupport();
   148      if( true != support ) {
   149          return;
   150      }
   151      var form = document.getElementById( globalFormId );
   152      if( form == null ){
   153          return;
   154      }
   155      var inputs = form.getElementsByTagName("input");
   156  
   157      var hiddenInput = document.createElement("input");
   158      hiddenInput.setAttribute("type", "hidden");
   159          hiddenInput.setAttribute("name", "softTokenError");
   160      //append to form element that you want .
   161      form.appendChild(hiddenInput);
   162  
   163      try{
   164          if(softTokenInput != null) { //normal mode
   165              // if the client cannot request soft-token PIN,
   166              // ask user to enter it in the logon page and pass the value to the client
   167              // Otherwise, the client already has the PIN
   168              if(!softTokenPINAutoPopulate) {
   169                  externalWebHost.setWebLogonSoftTokenPIN(softTokenInput.value);
   170              }
   171              var passcode = externalWebHost.getWebLogonSoftTokenPasscode();
   172              if( passcode ) {
   173                  softTokenInput.value = passcode;
   174              }
   175          } else if( challengeMode ) { //challenge mode
   176              // If the client can provide response to the challenge, use it instead of user input
   177              if(externalWebHost.hasWeblogonSoftTokenChallengeResponse()){
   178                  var challengeResponse = externalWebHost.getWeblogonSoftTokenChallengeResponse();
   179                  if(null != challengeResponse){
   180                       setSoftTokenChallengeResponse(challengeResponse);
   181                  }
   182              }else{
   183                  // Request user input by default
   184                  externalWebHost.setWebLogonSoftTokenPIN(inputs[0].value);
   185  
   186                  var passcode = externalWebHost.getWebLogonSoftTokenPasscode();
   187                  if( passcode ) {
   188                      inputs[0].value = passcode;
   189                  }
   190              }
   191  
   192          }
   193          hiddenInput.value = externalWebHost.getWebLogonSoftTokenError();
   194      } catch(e) { }
   195  
   196      return;
   197  }
   198  
   199  // check whether logon form is compatible with the client for auto-population and auto-submission
   200  // only "username", "password" and soft token field (the name is stored in softTokenFieldId ) are supported
   201  // fields can be configured in either order, but can only be text, password or checkbox types
   202  // form is not considered compatible if it contains any additional fields not supported by the client
   203  // The form is compatible even if it contains a subset of the supported fields
   204  // In this case the client will auto-populate only those fields
   205  function getFormCompatibility()
   206  {
   207      var form = document.getElementById( globalFormId );
   208      if( form == null ){
   209          return false;
   210      }
   211      // check if form suites
   212      var inputs = [];
   213      var inputsTemp = form.getElementsByTagName("input");
   214      // filter submit, reset, hidden and little green men
   215      for( var i=0; i<inputsTemp.length; i++ ){
   216          if( inputsTemp[i].type == "text" || inputsTemp[i].type == "password"){
   217              inputs[ inputs.length ] = inputsTemp[i];
   218          }
   219      }
   220  
   221      var softTokenSupported = edgeClientSoftTokenSupport() && (null != softTokenInput);
   222      // Check if there are any custom fields that are not supported by Edge Client for auto-population and auto-submission
   223      for( var i=0; i<inputs.length; i++ ){
   224         if((inputs[i].type == "text" && inputs[i].name == "username") ||
   225            (inputs[i].type == "password" && inputs[i].name == "password") ||
   226            (softTokenSupported && inputs[i].type == "password" && inputs[i].name == softTokenInput.name)){
   227                 continue;
   228         }else {
   229            return false;
   230         }
   231      }
   232      return true;
   233  }
   234  
   235  function setOrigUriLink()
   236  {
   237      var params = parseQueryParams(window.location.search.substr(1));
   238      if (!params.hasOwnProperty('ORIG_URI')) {
   239          return;
   240      }
   241  
   242      var credTable = document.getElementById('credentials_table');
   243      if (credTable == null) {
   244          return;
   245      }
   246      var tBody = credTable.tBodies[0];
   247      if (tBody == null) {
   248          return;
   249      }
   250  
   251      var trTag = document.createElement("TR");
   252      tBody.insertBefore(trTag, tBody.children[tBody.children.length - 1]);
   253  
   254      var tdTag = document.createElement("TD");
   255      tdTag.setAttribute("class", "credentials_table_unified_cell");
   256      tdTag.setAttribute("colspan", "2");
   257      trTag.appendChild(tdTag);
   258  
   259      var tdText = document.createTextNode("Click here if already logged in ");
   260      tdTag.appendChild(tdText);
   261  
   262      var origUri = atob(decodeURIComponent(params['ORIG_URI']));
   263      var tdLink = document.createElement("A");
   264      tdLink.innerHTML = origUri;
   265      tdLink.setAttribute("href", origUri);
   266      tdTag.appendChild(tdLink);
   267  
   268  }
   269  
   270  function OnLoad()
   271  {
   272      var header = document.getElementById("credentials_table_header");
   273      var softTokenHeaderStr = getSoftTokenPrompt();
   274      if ( softTokenHeaderStr ) {
   275          header.innerHTML = softTokenHeaderStr;
   276      }
   277      setFormAttributeByQueryParams("auth_form", "action", "/subsession_logon_submit.php3");
   278      setFormAttributeByQueryParams("v2_original_url", "href", "/subsession_logon_submit.php3");
   279      setOrigUriLink();
   280  
   281      // check if form suites
   282      var form = document.getElementById( globalFormId );
   283      if( form == null ){
   284          return;
   285      }
   286      // check if form suites
   287      var inputs = form.getElementsByTagName("input");
   288      // filter submit, reset, hidden and little green men
   289      for( var i=0; i<inputs.length; i++ ){
   290          if( ( inputs[i].type == "text" || inputs[i].type == "password" ) && inputs[i].value == "" ){
   291              inputs[i].focus();
   292              if (inputs[i].type == "password") {
   293                  window.setTimeout( function(elem){ return function(){ elem.blur(); elem.focus(); } }(inputs[i]) , 266 );
   294              }
   295              return;
   296          }
   297      }
   298  }
   299  
   300  function disableSubmit(form)
   301  {
   302      // disable!
   303      var inputs = form.getElementsByTagName( "input" );
   304      for( var i=0; i<inputs.length; i++ ){
   305          if( inputs[i].type == "submit" || inputs[i].type == "reset" ){
   306              inputs[i].disabled = true;
   307          }
   308      }
   309  
   310      return true;
   311  }
   312  
   313  //This function is called from Edge Client. Update setWeblogonCallbacks call if renamed
   314  function challengeAutoSubmit()
   315  {
   316      if(!challengeMode) {
   317         return false;
   318      }
   319  
   320      var form = document.getElementById( globalFormId );
   321      if( form == null ){
   322         return false;
   323      }
   324  
   325      disableSubmit(form);
   326  
   327      form.onsubmit();
   328      form.submit();
   329      return true;
   330  }
   331  
   332  //This function is called from Edge Client. Update setWeblogonCallbacks call if renamed
   333  function weblogonAutoSubmit()
   334  {
   335        if(!logonFormCompatible){
   336            return false;
   337        }
   338  
   339        var form = document.getElementById( globalFormId );
   340        if( form == null ){
   341            return false;
   342        }
   343  
   344        // autosubmit check
   345        if(externalWebHost.hasWebLogonAutoLogon() && externalWebHost.getWebLogonAutoLogon() && doAutoSubmit){
   346  
   347           disableSubmit(form);
   348  
   349           form.onsubmit();
   350           form.submit();
   351           return true;
   352        }else{
   353          return false;
   354        }
   355  }
   356  
   357  
   358  // support for autologon from Client API
   359  function checkExternalAddCheckbox()
   360  {
   361      var checkbox_txt = 'Save Password';
   362  
   363      if( !logonFormCompatible ){
   364          try {
   365              if (externalWebHost.hasWebLogonNotifyUser()){
   366                  externalWebHost.WebLogonNotifyUser();
   367              }
   368          } catch(e){};
   369          return;
   370      }
   371  
   372      // find form
   373      var form = document.getElementById( globalFormId );
   374      if( form == null ){
   375          return;
   376      }
   377  
   378      // find table
   379      var table = document.getElementById( globalTableId );
   380      if( table == null ){
   381          return;
   382      }
   383  
   384      // find tr
   385      var submitTr = document.getElementById( globalSubmitTrId );
   386      if( submitTr == null ){
   387          return;
   388      }
   389  
   390      try {
   391          if(externalWebHost.isAvailable()){
   392              // push values
   393              var usernameInput = getUsernameInput();
   394              if( null != usernameInput && externalWebHost.hasWebLogonUserName() && usernameInput.value == ""){
   395                  usernameInput.value = externalWebHost.getWebLogonUserName();
   396              }
   397  
   398              var passwordInput = getPasswordInput();
   399                          var allowSavingPassword = ((null != passwordInput) && (passwordInput.name != softTokenFieldId));
   400              //don't populate RSA SecurID token field with the cached password
   401              if(allowSavingPassword) {
   402                  if( externalWebHost.hasWebLogonPassword() && (passwordInput.value == "")){
   403                       passwordInput.value =  externalWebHost.getWebLogonPassword();
   404                  }
   405              }else{
   406                  doAutoSubmit = false;
   407              }
   408  
   409              // push data to cells
   410              if(allowSavingPassword && externalWebHost.isWebLogonSavePasswordAvailable()){
   411                  // right - text
   412  
   413                  // create cells
   414                  var newTr = table.insertRow( submitTr.rowIndex );
   415                  var leftTd = newTr.insertCell( 0 );
   416                  var rightTd = newTr.insertCell( 1 );
   417  
   418                  leftTd.className = "credentials_table_label_cell";
   419                  rightTd.className = "credentials_table_field_cell credentials_table_field_checkbox_fix";
   420  
   421                  rightTd.innerHTML = checkbox_txt;
   422                  // left - checkbox
   423                  globalSavePasswordCheckbox = document.createElement("input");
   424                  globalSavePasswordCheckbox.type = "checkbox";
   425                  globalSavePasswordCheckbox.className = "credentials_input_checkbox";
   426                  globalSavePasswordCheckbox.value = 1;
   427                  globalSavePasswordCheckbox = leftTd.appendChild( globalSavePasswordCheckbox );
   428                  globalSavePasswordCheckbox.checked = externalWebHost.getWebLogonSavePasswordChecked();
   429                  if( globalSavePasswordCheckbox.autocomplete ) {
   430                      globalSavePasswordCheckbox.autocomplete = "off";
   431                  }
   432              }
   433  
   434              // autosubmit if possible
   435              if(weblogonAutoSubmit()){
   436                 return;
   437              }
   438          }
   439      } catch (e) { }
   440  }
   441  
   442  function OnSubmit()
   443  {
   444      // find form
   445      var form = document.getElementById( globalFormId );
   446      if( form == null ){
   447          return;
   448      }
   449      try{
   450        if( externalWebHost.isAvailable() ){
   451           // pass weblogon credentials back to the client
   452           if( logonFormCompatible ){
   453                var usernameInput = getUsernameInput();
   454                if( null != usernameInput && externalWebHost.hasWebLogonUserName() ){
   455                    externalWebHost.setWebLogonUserName(usernameInput.value);
   456                }
   457  
   458                var passwordInput = getPasswordInput();
   459                if( null != passwordInput && externalWebHost.hasWebLogonPassword() ){
   460                    externalWebHost.setWebLogonPassword(passwordInput.value);
   461                }
   462                // pass user decision to save the password back to the client
   463                if( externalWebHost.hasWebLogonSavePasswordChecked() ){
   464                    externalWebHost.setWebLogonSavePasswordChecked((null != globalSavePasswordCheckbox) && globalSavePasswordCheckbox.checked);
   465                }
   466            }
   467            if (softTokenFieldId != "") {
   468                OnSubmitEdgeRSASoftToken();
   469            }
   470        }
   471      } catch(e) { }
   472  
   473      return;
   474  }
   475  
   476  function verifyNewPassword()
   477  {
   478      var form = document.getElementById( globalFormId );
   479      if( form == null ){
   480          return true;
   481      }
   482  
   483      var inputs = form.getElementsByTagName("input");
   484      if( inputs.length >= 2 && inputs[0].name == "_F5_challenge" && inputs[0].type == "password" && inputs[1].name == "_F5_verify_password" && inputs[1].type == "password" ){
   485          if( inputs[0].value != inputs[1].value ){
   486              alert("Password and confirmation do not match.");
   487              inputs[0].focus();
   488              return false;
   489          } else {
   490              // Not sending the second field.
   491              inputs[1].disabled = true;
   492  
   493              try{
   494                    if( externalWebHost.hasWebLogonPassword() ){
   495                        externalWebHost.setWebLogonPassword(inputs[0].value);
   496                    }
   497              } catch(e) { }
   498          }
   499      }
   500      return true;
   501  }
   502  
   503  function masterSubmit(form)
   504  {
   505      if( !verifyNewPassword() /* || ... */){
   506          return false;
   507      }
   508  
   509      OnSubmit(); // this required by edge
   510  
   511      if (globalRestartOnSubmit) {
   512          try {
   513              var usernameInput = getUsernameInput();
   514              var passwordInput = getPasswordInput();
   515              externalWebHost.setWebLogonAutoLogon((usernameInput != null ) && ("" != usernameInput.value) && (null != passwordInput) && ("" != passwordInput.value));
   516          }
   517          catch (e) {}
   518          // restart session
   519          externalWebHost.webLogonResetSession();
   520          return false;
   521      }
   522  
   523      disableSubmit(form);
   524      return true;
   525  }
   526  //-->
   527  </script>
   528  </head>
   529  
   530  <body onload="OnLoad()">
   531  
   532  
   533  <!-- CSS Order Is Important, order should be Shared-UI, Shared-Logos, Custom-Skin -->
   534  <link id="customcss" rel="stylesheet" type="text/css" href="https://cdn.example.com/websites/globalapm/css/shared-logos-text.css"> 
   535  <link id="customcss" rel="stylesheet" type="text/css" href="https://cdn.example.com/websites/globalapm/css/shared-ui.css"> 
   536  <link id="customcss" rel="stylesheet" type="text/css" href="https://cdn.example.com/websites/globalapm/css/federate-skin.css">
   537  
   538  <meta name="viewport" id="viewport" content="initial-scale=1.0" />       
   539  <meta name="robots" context="noindex,nofollow">
   540  <script language="javascript">
   541  //orientation toolbox
   542  function setViewport(){
   543      document.getElementById("viewport").setAttribute('content', Math.abs(window.orientation) == 90 ? 'width=device-height, initial-scale=1' : 'width=device-width, initial-scale=1.0' );
   544  }
   545  setViewport();
   546  window.onorientationchange = function() {
   547      setViewport();
   548  }    
   549  </script>
   550  <table id="page_header">
   551    <tr >
   552      <td id="header_leftcell"><img src='/public/images/my/flogo.png'/></td>             
   553      <td id="new_header_leftcell"><img src='https://cdn.example.com/websites/globalapm/logos/logo-federate.svg'/></td>             
   554      <td id="header_rightcell"></td>
   555    </tr>
   556    <tr>
   557       <td></td>
   558       <td id="maxTimeoutTd"><span id="maxTimeoutTag" title=""></span></td>
   559    </tr>
   560  </table>
   561  <noscript>
   562  <div id="noscript_warning_red">JavaScript is not enabled. Please enable JavaScript in your browser or contact your system administrator for assistance.</div>
   563  <div id="noscript_warning_newsession">To open a new session, please  <A href="/">click here.</A></div>
   564  </noscript>
   565  
   566  <table id="main_table" class="logon_page">
   567  <tr>
   568          <td id="main_table_info_cell">
   569      <form id="auth_form" name="e1" method="post" onsubmit="javascript: return masterSubmit(this);" autocomplete="off">
   570      <table id="credentials_table">
   571      <tr>
   572          <td colspan=2 id="credentials_table_header" ><span class="info-text">Please sign in below</span></td>
   573      </tr>
   574      <tr>
   575          <td colspan=2 id="credentials_table_postheader" ></td>
   576      </tr>
   577      <tr>
   578          <td colspan=2 class="credentials_table_unified_cell" ><label for='input_1' id='label_input_1'>Username</label><input type='text' name='username' class='credentials_input_text' value='' id='input_1' autocomplete='off' autocapitalize='off' /></td>
   579      </tr>
   580      <tr>
   581          <td colspan=2 class="credentials_table_unified_cell" ><label for='input_2' id='label_input_2'>Password</label><input type='password' name='password' class='credentials_input_password' value='' id='input_2' autocomplete='off' autocapitalize='off' /></td>
   582      </tr>
   583      <tr id="submit_row">
   584          <td class="credentials_table_unified_cell"><input type=submit class="credentials_input_submit" value="Sign In"></td>
   585      </tr>
   586      <tr>
   587          <td colspan=2 id="credentials_table_footer" ></td>
   588      </tr>
   589      </table>
   590      <input type=hidden name="vhost" value="standard">
   591      </form>
   592      <script language="javascript"><!--//
   593          softTokenInput = getSoftTokenInput();
   594          logonFormCompatible = getFormCompatibility();
   595          // Pass method names to the client for auto-submit triggered by the client
   596          externalWebHost.setWeblogonCallbacks(
   597               "weblogonAutoSubmit();",
   598               "challengeAutoSubmit();"
   599          );
   600  
   601          // Check if the softTokenInput exists or in case of RSA challenge mode
   602          if((softTokenFieldId != "") && (null != softTokenInput || challengeMode ) && edgeClientSoftTokenSupport()){
   603              externalWebHost.setWebLogonSoftTokenPrompt(getSoftTokenPrompt());
   604              externalWebHost.setWebLogonSoftTokenState(softTokenState);
   605          }
   606  
   607          // Check if the client can ask user for soft-token PIN
   608          if((softTokenFieldId != "") && (softTokenInput != null)
   609                 && edgeClientSoftTokenSupport()
   610                 && externalWebHost.canRequestWeblogonSoftTokenPIN()){
   611              softTokenInput.readOnly = true;
   612              softTokenPINAutoPopulate = true;
   613              // No need to request input of RSA PIN, as the client can show PIN input UI if needed,
   614              // make the field read-only
   615              // set bogus value to display
   616              softTokenInput.value = "********";
   617          }
   618  
   619          checkExternalAddCheckbox();
   620          setTimeout(function(){ window.sessionTimeout = new APMSessionTimeout(sessionTimedOut); }, 200);
   621  
   622          function dontChangePasswordClick(){
   623              var checkbox = document.getElementById("dont_change_password_checkbox");
   624              var password = document.getElementById("input_1");
   625              var verify = document.getElementById("input_2");
   626              if( checkbox.checked ){
   627                  password.value = "";
   628                  password.disabled = true;
   629                  verify.value = "";
   630                  verify.disabled = true;
   631              }else{
   632                  password.disabled = false;
   633                  verify.disabled = false;
   634              }
   635          }
   636  
   637          var finitvalues=['','','','',''];
   638          var sessionLogonCustomizations = ["","","","",""];
   639          var sessionLogonCustomizationPairs = [[], [], [], [], []];
   640          for( var i=0; i<sessionLogonCustomizations.length; i++ ){
   641              var pairs = ( sessionLogonCustomizations[i].indexOf(";") == -1 ? [ sessionLogonCustomizations[i] ] : sessionLogonCustomizations[i].trim().split(";") );
   642              for( var j=0; j<pairs.length; j++ ){
   643                  if( pairs[j].indexOf("=>") != -1 ){
   644                      var pair = pairs[j].split("=>");
   645                      sessionLogonCustomizationPairs[i][pair[0]] = pair[1];
   646                  }
   647              }
   648          }
   649  
   650          var sessionLogonValuesets = [ "", "", "", "", "" ];
   651          for( var i=0; i<sessionLogonValuesets.length; i++ ){
   652              var inpx = document.getElementById("input_" + (i+1) );
   653              if( inpx !== null && inpx.tagName.toUpperCase() == "SELECT" ){
   654                  if( sessionLogonValuesets[i].trim() != "" ){
   655                      inpx.options.length = 0;
   656                      var options = sessionLogonValuesets[i].trim().split(";");
   657                      for( var j=0; j<options.length; j++ ){
   658                          inpx.options.add( new Option( options[j], options[j] ) );
   659                      }
   660                  }
   661                  if( sessionLogonCustomizations[i].trim() != "" ){
   662                      for( var j=0; j<inpx.options.length; j++ ){
   663                          if( typeof sessionLogonCustomizationPairs[i][ inpx.options[j].value ] != "undefined" ){
   664                              inpx.options[j].text = sessionLogonCustomizationPairs[i][ inpx.options[j].value ];
   665                          }
   666                      }
   667                  }
   668                  // set value
   669                  for( var j=0; j<inpx.options.length; j++ ){
   670                      if( inpx.options[j].value == finitvalues[i] ){
   671                          inpx.value = finitvalues[i];
   672                          break;
   673                      }
   674                  }
   675              }else if( document.getElementById("input_" + (i+1) + "_0" ) ){ // RADIO
   676                  var initValue = finitvalues[i];
   677                  var radio = null;
   678                  var name = document.getElementById("input_" + (i+1) + "_0" ).name;
   679                  if( sessionLogonValuesets[i].trim() != "" ){
   680                      var parent = document.getElementById( "label_input_" + (i+1) ).parentNode;
   681                      while( parent.childNodes.length > 1 ){
   682                          parent.removeChild( parent.lastChild );
   683                      }
   684                      var options = sessionLogonValuesets[i].trim().split(";");
   685                      for( var j=0; j<options.length; j++ ){
   686                          var div = parent.appendChild( document.createElement( "div" ) );
   687                          var elmdef = document.all && navigator.userAgent.match(/MSIE (\d+)/)[1] < 9 ? "<input type='radio'>" : "input";
   688                          var input = div.appendChild( document.createElement( elmdef ) );
   689                          if( input.type != 'radio' ){ input.type = 'radio'; }
   690                          input.id = "input_" + (i+1) + "_" + j;
   691                          input.name = "name";
   692                          input.value = options[j];
   693                          var label = div.appendChild( document.createElement( "label" ) );
   694                          label.htmlFor = input.id;
   695                          label.id = "label_" + input.id;
   696                          label.className = "radio-label";
   697                          label.style.display = "inline";
   698                          label.innerHTML = options[j];
   699                      }
   700                  }
   701                  if( sessionLogonCustomizations[i].trim() != "" ){
   702                      var j = 0;
   703                      while( ( radio = document.getElementById("input_" + (i+1) + "_" + j++ ) ) !== null ){ // what number
   704                          if( typeof sessionLogonCustomizationPairs[i][ radio.value ] != "undefined" ){
   705                              document.getElementById("label_input_" + (i+1) + "_" + (j-1) ).innerHTML = sessionLogonCustomizationPairs[i][ radio.value ];
   706                          }
   707                      }
   708                  }
   709                  var anyChecked = false, j = 0;
   710                  while( initValue != "" && ( radio = document.getElementById("input_" + (i+1) + "_" + j++ ) ) !== null ){
   711                      radio.checked = ( radio.value == initValue );
   712                      if( radio.checked ){ anyChecked = true; }
   713                  }
   714                  if( !anyChecked && ( radio = document.getElementById("input_" + (i+1) + "_" + 0 ) ) !== null ){
   715                      radio.checked = true;
   716                  }
   717              }else if( inpx !== null && inpx.tagName.toUpperCase() == "INPUT" && inpx.type.toUpperCase() == "CHECKBOX" ){
   718                  if( inpx.disabled && finitvalues[i] != "" ){
   719                      inpx.checked = true;
   720                  }else if( !inpx.disabled && inpx.value == "" ){
   721                      inpx.value = "1";
   722                  }
   723              }
   724          }
   725      --></script>
   726      </td>
   727      <td id="main_table_image_cell"><img src="/public/images/my/tr.gif"></td></tr>
   728  </table>
   729  
   730  <script language="JavaScript" src="https://cdn.example.com/websites/globalapm/js/shared.js" ></script>
   731  <script language="JavaScript" src="https://cdn.example.com/websites/globalapm/js/shared-mfapage.js" ></script>
   732  <script language="JavaScript" src="https://cdn.example.com/websites/globalapm/js/shared-webtop.js" ></script>
   733  <script>
   734      if (typeof(mfamethod) != 'undefined' && mfamethod != null)
   735      {
   736          // Check for browser support of event handling capability
   737                 if (window.addEventListener)
   738                 window.addEventListener("load", customizemfapage(), false);
   739                 else if (window.attachEvent)
   740                 window.attachEvent("onload", customizemfapage);
   741                 else window.onload = customizemfapage();
   742      }
   743      if (typeof(updatewebtopdiv) != 'undefined' && updatewebtopdiv != null)
   744      {
   745          // Check for browser support of event handling capability
   746                 if (window.addEventListener)
   747                 window.addEventListener("load", customizewebtop(), false);
   748                 else if (window.attachEvent)
   749                 window.attachEvent("onload", customizewebtop);
   750                 else window.onload = customizewebtop();
   751      }
   752  </script>
   753  <div id="page_footer"><div>Protected using F5 APM. All rights reserved.</div></div>
   754  <script type="text/javascript">
   755      function F5_include_JS(jsFile)
   756      {
   757          document.write('<script type="text/javascript" src="'
   758                           + jsFile + '"></scr' + 'ipt>'); // <-- IE7 workaround
   759      }
   760  
   761      if ("" == "1") {
   762          var f5VirtualKeyboardMove = ( "" == 1 ? "1" : "0" );
   763          var f5VirtualKeyboardForceBlur = ( "" == 1 ? "0" : "1" );
   764          function VirtualKeyboard_CustomizedMessageTextGet()
   765  {
   766    return 'Virtual Keyboard';
   767  }
   768  
   769  function VirtualKeyboard_CustomizedHideTextGet()
   770  {
   771    return 'Hide Keyboard';
   772  }
   773  
   774          var f5VirtualKeyboardMessageText =  VirtualKeyboard_CustomizedMessageTextGet();
   775          var f5VirtualKeyboardHideText =  VirtualKeyboard_CustomizedHideTextGet();
   776          F5_include_JS('/public/include/js/vk/f5_vk.js');
   777      }
   778  </script>
   779  <div id="MessageDIV" class="inspectionHostDIVSmall"></div>
   780  <div id="formHeaderSoftToken" style="overflow: hidden; visibility: hidden; height: 0; width: 0;"></div>
   781  </body>
   782  </html>