security/nss/cmd/certcgi/index.html

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 <HTML>	<!-- -*- Mode: Java; tab-width: 8 -*- -->
     2 <!-- This Source Code Form is subject to the terms of the Mozilla Public
     3    - License, v. 2.0. If a copy of the MPL was not distributed with this
     4    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
     5 <HEAD>
     6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
     7 <SCRIPT LANGUAGE="JavaScript1.2">
     9 script_url = 'http://interzone.mcom.com/cgi-bin/certomatic/bin/certcgi.cgi'
    11 ext_page_ver1 =
    12   make_page_intro('Version 1 extensions', "#FFFFFF") +
    13   '<IFRAME WIDTH="100%" HEIGHT="100%" FRAMEBORDER=0 ID="ext1">' +
    14   'Version 1 X.509 certs do not support extensions' +
    15   '</IFRAME>' +
    16   '</body></html>';
    18 num_ca = 0;
    20 your_certificate_index_label       = 'Your Certificate';
    21 netscape_extensions_index_label    = 'Netscape X.509 Extensions';
    22 standard_extensions_index_label    = 'Standard X.509 Extensions';
    23 certifying_authorities_index_label = 'Certifying Authorities';
    24 add_sub_alt_name_index_label       = 'Add Subject Alternative Name';
    26 index_list = 
    27   '0, your_certificate_index_label,' +
    28   '0, netscape_extensions_index_label,' +
    29   '0, standard_extensions_index_label,' +
    30   '0, certifying_authorities_index_label';
    32 add_index_list = '';
    34 ver = 3
    36 max_pages = 13;
    37 cur_page = 1;
    39 ext_page_array = new Array(max_pages);
    41 index_label = 'Options';
    43 var main_page = 
    44   make_page_intro('Your Key', "#FFFFFF") +
    45   '<IFRAME WIDTH="100%" HEIGHT="100%" FRAMEBORDER=0 ID="main" SRC="main.html">' +
    46   '</IFRAME>' +
    47   '</body></html>' ;
    49 function setSubAltNameType(form)
    50 {
    51   with(form) {
    52     if (SubAltNameRadio[0].checked) {
    53       return true;
    54     }
    55     if (SubAltNameRadio[3].checked || SubAltNameRadio[5].checked) {
    56       SubAltNameDataType.checked = true;
    57       return true;
    58     }
    59     if (SubAltNameRadio[1].checked || SubAltNameRadio[2].checked ||
    60 	SubAltNameRadio[4].checked || SubAltNameRadio[6].checked ||
    61 	SubAltNameRadio[7].checked || SubAltNameRadio[8].checked) {
    62       SubAltNameDataType.checked = false;
    63       return true;
    64     }
    65   }
    66   return true;
    67 }
    69 function setIssuerAltNameType(form)
    70 {
    71   with(form) {
    72     if (IssuerAltNameRadio[0].checked) {
    73       return true;
    74     }
    75     if (IssuerAltNameRadio[3].checked || IssuerAltNameRadio[5].checked) {
    76       IssuerAltNameDataType.checked = true;
    77       return true;
    78     }
    79     if (IssuerAltNameRadio[1].checked || IssuerAltNameRadio[2].checked ||
    80 	IssuerAltNameRadio[4].checked || IssuerAltNameRadio[6].checked ||
    81 	IssuerAltNameRadio[7].checked || IssuerAltNameRadio[8].checked) {
    82       IssuerAltNameDataType.checked = false;
    83       return true;
    84     }
    85   }
    86   return true;
    87 }
    90 function setNameConstraintNameType(form)
    91 {
    92   with(form) {
    93     if (NameConstraintRadio[0].checked) {
    94       return true;
    95     }
    96     if (NameConstraintRadio[3].checked || NameConstraintRadio[5].checked) {
    97       NameConstraintNameDataType.checked = true;
    98       return true;
    99     }
   100     if (NameConstraintRadio[1].checked || NameConstraintRadio[2].checked ||
   101 	NameConstraintRadio[4].checked || NameConstraintRadio[6].checked ||
   102 	NameConstraintRadio[7].checked || NameConstraintRadio[8].checked) {
   103       NameConstraintNameDataType.checked = false;
   104       return true;
   105     }
   106   }
   107   return true;
   108 }
   111 function addSubAltName(form)
   112 {
   113   with(form) {
   114     var len = SubAltNameSelect.length;
   115     var value;
   116     var i = 0;
   117     while(!(i == (SubAltNameRadio.length - 1)) & 
   118           !(SubAltNameRadio[i].checked == true)) {
   119       i++;
   120     }
   121     if (i != 0) {
   122       value = SubAltNameText.value + " - " + (i + 1);
   123     } else {
   124       value = SubAltNameText.value + " - " + 
   125               SubAltNameOtherNameOID.value + " - ";
   126       if (SubAltNameDataType.checked) {
   127 	value += "1 - ";
   128       } else {
   129 	value += "0 - ";
   130       }
   131       value += (i + 1);
   132       if (SubAltNameOtherNameOID.value == "") {
   133 	alert("Other names must include an OID");
   134 	return false;
   135       }
   136     }
   138     if ((SubAltNameText.value == "") | (SubAltNameRadio[i].checked != true)) {
   139       alert("Alternative Names must include values for name and name type.");
   140     } else {
   141       SubAltNameSelect.options[len] = new Option(value, value);
   142     }
   143   }
   144   return true;
   145 }
   147 function deleteSubAltName(form)
   148 {
   149   with(form) {
   150     while (SubAltNameSelect.selectedIndex >= 0) {
   151       SubAltNameSelect[SubAltNameSelect.selectedIndex] = null;
   152     }
   153   }
   154 }
   156 function addIssuerAltName(form)
   157 {
   158   with(form)
   159   {
   160     var len = IssuerAltNameSelect.length;
   161     var value;
   162     var i = 0;
   164     while(!(i == (IssuerAltNameRadio.length -1)) & 
   165           !(IssuerAltNameRadio[i].checked == true)) {
   166       i++;
   167     }
   168     if (i != 0) {
   169       value = IssuerAltNameText.value + " - " + (i + 1);
   170     } else {
   171       value = IssuerAltNameText.value + " - " + 
   172               IssuerAltNameOtherNameOID.value + " - ";
   173       if (IssuerAltNameDataType.checked) {
   174 	value += "1 - ";
   175       } else {
   176 	value += "0 - ";
   177       }
   178       value += (i + 1);
   179       if (IssuerAltNameOtherNameOID.value == "") {
   180 	  alert("Other names must include an OID");
   181 	  return false;
   182       }
   183     }
   184     if ((IssuerAltNameText.value == "") | 
   185         (IssuerAltNameRadio[i].checked != true)) {
   186       alert("Alternative Names must include values for name and name type.")
   187     } else {
   188       IssuerAltNameSelect.options[len] = new Option(value, value);
   189     }
   190   }
   191   return true;
   192 }
   194 function deleteIssuerAltName(form)
   195 {
   196   with(form) {
   197     while (IssuerAltNameSelect.selectedIndex >= 0) {
   198       IssuerAltNameSelect[IssuerAltNameSelect.selectedIndex] = null;
   199     }
   200   }
   201 }
   205 function addNameConstraint(form)
   206 {
   207   with(form) {
   208     var len = NameConstraintSelect.length;
   209     var value;
   210     var i = 0;
   211     var min = NameConstraintMin.value;
   212     var max = NameConstraintMax.value;
   214     while(!(i == (NameConstraintRadio.length - 1) ) & 
   215           !(NameConstraintRadio[i].checked == true)) {
   216       i++;
   217     }
   218     value = NameConstraintText.value + " - ";
   219     if (i == 0) {
   220       value += NameConstraintOtherNameOID.value + " - ";
   221       if (NameConstraintNameDataType.checked) {
   222 	value += "1 - ";
   223       } else {
   224 	value += "0 - ";
   225       }
   226       if (NameConstraintOtherNameOID.value == "") {
   227 	alert("Other names must include an OID");
   228 	return false;
   229       }
   230     }
   231     value += (i + 1) + " - ";
   232     if (NameConstraintTypeRadio[0].checked == true) {
   233       value += "p - ";
   234     } else {
   235       value += "e - ";
   236     }
   237     value += min + " - " + max;
   238     if ((min == "") | (NameConstraintText.value == "") | 
   239         (NameConstraintRadio[i].checked != true)) {
   240       alert("Name Constraints must include values for minimum, name, and name type.")
   241     } else {
   242       NameConstraintSelect.options[len] = new Option(value, value);
   243     }
   244   }
   245   return true;
   246 }
   248 function deleteNameConstraint(form)
   249 {
   250   with(form) {
   251     while (NameConstraintSelect.selectedIndex >= 0) {
   252       NameConstraintSelect[NameConstraintSelect.selectedIndex] = null;
   253     }
   254   }
   255 }
   258 function submit_it()
   259 {
   260   save_cur_page(cur_page);
   262   var ver1 = (ver == 1);
   263   var ver3 = (ver == 3);
   264   var array_string;
   265   var serial        = ext_page_array[0][10][0];
   266   var serial_number = ext_page_array[0][12][0];
   267   var manValidity   = ext_page_array[0][19][0];
   268   var notBefore     = ext_page_array[0][20][0];
   269   var notAfter      = ext_page_array[0][21][0];
   270   var subject       = ext_page_array[0][22][0];
   272   if (subject == "") {
   273     alert("The DN field must contain some data");
   274     return false;
   275   }
   276   if (!serial & serial_number == "") {
   277     alert("No serial number specified");
   278     return false;
   279   }
   280   if (ext_page_array[0][15][0]) {
   281     var keygen = "<keygen name=\"key\" challenge=\"foo\">";
   282   } else {
   283     switch (ext_page_array[0][17][0]) {
   284       case 2:
   285         var keygen = "<keygen keytype=\"dsa\" pqg=\"MIGdAkEAjfKklEkidqo9JXWbsGhpy+rA2Dr7jQz3y7gyTw14guXQdi/FtyEOr8Lprawyq3qsSWk9+/g3JMLsBzbuMcgCkQIVAMdzIYxzfsjumTtPLe0w9I7azpFfAkEAYm0CeDnqChNBMWOlW0y1ACmdVSKVbO/LO/8Q85nOLC5xy53l+iS6v1jlt5UhklycxC6fb0ZLCIzFcq9T5teIAg==\" name=\"key\" challenge=\"foo\">";
   286 	break;
   287       case 1:
   288         var keygen = "<keygen keytype=\"dsa\" pqg=\"MIHaAmDCboVgX0+6pEeMlbwsasWDVBcJNHPKMzkq9kbCRK2U3k+tE15n+Dc2g3ZjDYr1um51e2iLC34/BwAAAAAAAAAAAAAAAAAAAAAAAAABbBhnlFN5Djmt0Mk8cdEBY5H8iPMCFMhUnFtbpjn3EyfH2DjVg3ALh7FtAmA2zWzhpeCwvOTjYnQorlXiv0WcnSiWmaC79CRYkFt5i+UEfRxwP1eNGJBVB1T+CPW6JGd4WhgsqtSf53pn5DEtv++O7lNfXyOhWhb3KaWHYIx8fuAXtioIWkWmpfEIVZA=\" name=\"key\" challenge=\"foo\">";
   289 	break;
   290       case 0:
   291         var keygen = "<keygen keytype=\"dsa\" pqg=\"MIIBHAKBgId8SiiWrcdua5zbsBhPkKfFcnHBG7T/bQla7c6OixGjjmSSuq2fJLvMKa579CaxHxLZzZZXIHmAk9poRgWl2GUUkCJ68XSum8OQzDPXPsofcEdeANjw3mIAAAAAAAAAAAAAAAAAAAAAAAAIE+MkW5hguLIQqWvEVi9dMpbNu6OZAhTIA+y3TgyiwA0D8pt686ofaL1IOQKBgAiZQC6UCXztr2iXxJrAC+51gN5oX/R9Thilln9RGegsWnHrdxUOpcm5vAWp1LU8TOXtujE8kqkm3UxIRhUWQORe9IxLANAXmZJqkw9FEVHkxj6Cy9detwT2MyBzSwS6avsf7aLisgHmI/IHSeapJsQ3NQa3rikb6zRiqIV+TVa6\" name=\"key\" challenge=\"foo\">";
   292         break;
   293     }
   294   }
   295   array_string =  build_array_string();
   296   hiddens = "<input type=\"hidden\" name=\"subject\" value=\'" + subject + "\'> \n" +
   297             "<input type=\"hidden\" name=\"serial-auto\" value=\"" + serial + "\"> \n" +
   298             "<input type=\"hidden\" name=\"serial_value\" value=\"" + serial_number + "\"> \n" +
   299             "<input type=\"hidden\" name=\"ver-1\" value=\"" + ver1 + "\"> \n" +
   300             "<input type=\"hidden\" name=\"ver-3\" value=\"" + ver3 + "\"> \n" +
   301             "<input type=\"hidden\" name=\"notBefore\" value=\"" + notBefore + "\"> \n" +
   302             "<input type=\"hidden\" name=\"notAfter\" value=\"" + notAfter + "\"> \n" +
   303             "<input type=\"hidden\" name=\"manValidity\" value=\"" + manValidity + "\"> \n" +
   304             array_string;
   306   var good_submit_page =
   307     '<html>' +
   308     '<BODY TEXT="#000000" LINK="#000000" VLINK="#000000" ALINK="#FF0000" BGCOLOR="#FFFFFF">' +
   309     '<form method="post" action="' + script_url + '">' +
   310     'Select size for your key:' + keygen + '</p>' +
   311     '<input type="submit"></p>' +
   312     hiddens +
   313     '</form>\n' +
   314     '</body>\n' +
   315     '</html>\n';
   317   window.frames['right'].document.write(good_submit_page);
   318   window.frames['right'].document.close();
   319   cur_page = max_pages + 1;
   320   make_left_frame(window);
   321   return false;
   322 }
   326 function build_array_string()
   327 {
   328   var pg;
   329   var array_string = '';
   330   var pages;
   332   if ((ext_page_array[3][4][0] > 0) && ext_page_array[3][3][0]) {
   333     pages = 4 + parseInt(ext_page_array[3][4][0]);
   334   } else {
   335     pages = 4;
   336   }
   337   for (pg = 1; pg < pages; pg++) {
   338     if ((pg > 1 || (ver == 3)) && (ext_page_array[pg].length > 1)) {
   339       if (pg < 4) {
   340 	for (i = 0; i < ext_page_array[pg].length; i++) {
   341 	  if (ext_page_array[pg][i][3].indexOf("radio") == -1) {
   342 	    if (ext_page_array[pg][i][3].indexOf("multiple") == -1) {
   343 	      array_string +=  '<input type=\"hidden\" name=\"' + 
   344                                ext_page_array[pg][i][1] + '\" value=\'' + 
   345                                ext_page_array[pg][i][0] + '\'> \n';
   346 	    } else {
   347 	      for (k = 0; k < ext_page_array[pg][i][0].length; k++) {
   348 		array_string += '<input type=\"hidden\" name=\"' + 
   349                                 ext_page_array[pg][i][1] + k + '\" value=\'' + 
   350                                 ext_page_array[pg][i][0][k] + '\'> \n';
   351 	      }
   352 	    }
   353 	  } else {
   354 	    array_string += '<input type=\"hidden\" name=\"' + 
   355                             ext_page_array[pg][i][1] + '-' + 
   356 			    ext_page_array[pg][i][2] + '\" value=\'' + 
   357 			    ext_page_array[pg][i][0] + '\'> \n';
   358 	  }
   359 	}
   360       } else {
   361 	for (i = 0; i < ext_page_array[pg].length; i++) {
   362 	  if (ext_page_array[pg][i][3].indexOf("radio") == -1) {
   363 	    if (ext_page_array[pg][i][3].indexOf("multiple") == -1) {
   364 	      array_string += '<input type=\"hidden\" name=\"' + 
   365 	                      'CA#' + (pg - 3) + '-' + 
   366 			      ext_page_array[pg][i][1] + '\" value=\'' + 
   367 			      ext_page_array[pg][i][0] +'\'> \n';
   368 	    } else {
   369 	      for (k = 0; k < ext_page_array[pg][i][0].length; k++) {
   370 		array_string += '<input type=\"hidden\" name=\"' + 
   371 		                'CA#' + (pg - 3) + '-' + 
   372 				ext_page_array[pg][i][1] + k + '\" value=\'' + 
   373 				ext_page_array[pg][i][0][k] + '\'> \n';
   374 	      }
   375 	    }
   376 	  } else {
   377 	    array_string += '<input type=\"hidden\" name=\"' + 
   378 	                    'CA#' + (pg - 3) + '-' + 
   379 			    ext_page_array[pg][i][1] + '-' + 
   380 			    ext_page_array[pg][i][2] + '\" value=\'' + 
   381 			    ext_page_array[pg][i][0] + '\'> \n';
   382 	  }
   383 	}
   384       }
   385     }
   386   }
   387   return array_string;
   388 }
   392 function init_ext_page_array()
   393 {
   394   for (i = 0; i < max_pages; i++) {
   395     ext_page_array[i] = '';
   396   }
   397 }
   399 function ca_num_change(n,ca_form)
   400 {
   401   with(ca_form) {
   402     n = parseInt(n,10);
   403     if (caChoiceradio[2].checked) {
   404       if (n) {
   405 	update_left_frame(n);
   406       } else {
   407 	update_left_frame(0);
   408       }
   409     }
   410   }
   411 }
   413 function choice_change(ca_form)
   414 {
   415   with(ca_form) {
   416     if (caChoiceradio[2].checked) {
   417       ca_num_change(manCAs.value,ca_form);
   418     } else {
   419       update_left_frame(0);
   420     }
   421   }
   422 }
   424 function update_left_frame(n)
   425 {
   426   var add_string = '';
   427   for (var i = 0; i < n; i++) {
   428     var j = i + 1;
   429     add_string = add_string + ',1, \'CA #' + j + '\'';
   430   }
   431   top.add_index_list = add_string;
   432   num_ca = n;
   433   make_left_frame(window);
   434 }
   436 function set_ver1()
   437 // redraws the extensions page for version 1 certificates
   438 {
   439   ver = 1
   440   if (cur_page == 2 || cur_page == 3) {
   441     switch_right_frame(window, cur_page, cur_page);
   442   }
   443 }
   446 function set_ver3()
   447 // redraws the extensions page for version 3 certificates
   448 {
   449   ver = 3
   450   if (cur_page == 2) {
   451     switch_right_frame(window, 0, 2);
   452   } else if (cur_page == 3) {
   453     switch_right_frame(window, 0, 3);
   454   }
   455 }
   457 function reset_subject(marker, value, form)
   458 // Updates the subject field from a subordinate field
   459 {
   460   with(form) {
   461     var field_sep = '", ';
   462     var begin_index = subject.value.indexOf(marker);
   463     if (begin_index != 0 && subject.value[begin_index - 1] != ' ') {
   464       begin_index = subject.value.indexOf(marker, begin_index +1);
   465     }
   466     var end_index = subject.value.indexOf(field_sep, begin_index);
   467     if (begin_index > -1) {       // is it a delete/change?
   468       if (end_index == -1) {      // is it the last one (includes only one)?
   469         if (value.length > 0) {   // do I have to change it?
   470           if (begin_index == 0) { // is is the only one?
   471             subject.value = marker + '"' + value + '"';
   472           } else {                // it is the last of many
   473             subject.value = subject.value.substring(0,begin_index) + 
   474 	                    marker + '"' + value + '"';
   475           }
   476         } else {                  //  must be a delete
   477           if (begin_index == 0) { // is it the only one?
   478             begin_index += 2;
   479           }
   480           subject.value = subject.value.substring(0,(begin_index - 2));
   481         }
   482       } else {                    // it is the first of many or a middle one
   483         if (value.length >0) {    // do I have to change it?
   484           subject.value = 
   485 	  	subject.value.substring(0,(begin_index + marker.length + 1)) + 
   486 		value + subject.value.substring(end_index,subject.length);
   487         } else {                  // it is a delete
   488           subject.value = subject.value.substring(0,begin_index) + 
   489 	        subject.value.substring((end_index + 3),subject.length);
   490         }
   491       }
   492     } else {                      // It is either an insert or a do nothing
   493       if (value.length > 0) {     // is it an insert?
   494         if (subject.value.length == 0) {  // is subject currently empty?
   495           subject.value = marker + '"' + value + '"';
   496         } else {
   497           subject.value = subject.value + ', ' + marker + '"' + value + '"';
   498         }
   499       }
   500     }
   501   }
   502 }
   506 function reset_subjectFields(form)
   507 // updates all the subordinate fields from the subject field of a form
   508 // **** move the strings to global variables, to make maintentance easier ****
   509 {
   511   update_subject_Field(form, 'CN=\"', form.name);
   512   update_subject_Field(form, 'MAIL=\"', form.email);
   513   update_subject_Field(form, 'O=\"', form.org);
   514   update_subject_Field(form, 'C=\"', form.country);
   515   update_subject_Field(form, ' L=\"', form.loc);
   516   update_subject_Field(form, 'ST=\"', form.state);
   517   update_subject_Field(form, 'E=\"', form.email);
   518   update_subject_Field(form, 'OU=\"', form.org_unit);
   519   update_subject_Field(form, 'UID=\"', form.uid);
   520 }
   522 function update_subject_Field(form, marker, update_field)
   523 //updates a single subordinate field from the subject field of a form
   524 // *** need to deal with the two types of e-mail addresses **************
   525 {
   526   with(form) {
   527     var field_sep = '", ';
   528     var begin_index = subject.value.indexOf(marker) + marker.length;
   529     var end_index = subject.value.indexOf(field_sep, begin_index);
   530     if (end_index == -1) {
   531       end_index = subject.value.indexOf('"',begin_index);
   532     }
   533     if (begin_index != (-1 + marker.length) ) {
   534       update_field.value = subject.value.substring(begin_index, end_index);
   535     } else {
   536       update_field.value = '';
   537     }
   538   }
   539 }
   542 function switch_mail(form)
   543 // **** Do I want to delete the other type of e-mail address ? ************
   544 {
   545   if (form.email_type[0].checked) {
   546     var del = 'E=';
   547     var ins = 'MAIL=';
   548   } else {
   549     var del = 'MAIL=';
   550     var ins = 'E=';
   551   }
   552   reset_subject(del, '', form);
   553   reset_subject(ins, form.email.value, form);
   554 }
   556 function make_page_intro(title, bgcolor)
   557 {
   558   var style = '<STYLE TYPE="text/css">BODY{' +
   559     'font-family: Geneva,MS Sans Serif,Arial,Lucida,Helvetica,sans-serif;' +
   560     'font-size: 10pt;' +
   561     '}' +
   562     'TD{' +
   563     'font-family: Geneva,MS Sans Serif,Arial,Lucida,Helvetica,sans-serif;' +
   564     'font-size: 10pt;}' +
   565     '</STYLE>';
   567   if (bgcolor == null) { bgcolor = "#C0C0C0"; }
   568   return '<HTML><HEAD>' +
   569     '<TITLE>' + title + '</TITLE>' +
   570     '</HEAD>' +
   571     '<BODY TEXT="#000000" LINK="#000000" VLINK="#000000" ALINK="#FF0000" ' +
   572           'BGCOLOR="' + bgcolor + '">';
   573 }
   576 function make_left_frame(window)
   577 {
   578   with (window.frames['index']) {
   579     eval ('index_string = make_left_frame_page(cur_page, ' 
   580            + index_list + add_index_list + ' )');
   581     fool1 = make_page_intro(index_label, "#FFFFFF") +
   582       index_string + '</BODY></HTML>';
   583     document.write(fool1);
   584     document.close();
   585   }
   586 }
   589 function save_cur_page(page_number)
   590 {
   591   var len;
   592   var pg = page_number - 1;
   593   if (window.frames['right'].document.forms.length != 0) {
   594     with (window.frames['right'].document) {
   595       if ((page_number != 2 && page_number != 3 && page_number <= max_pages) || 
   596 	  ver == 3) {
   597         ext_page_array[pg] = new Array(forms[0].elements.length);
   598         for (i = 0; i < forms[0].elements.length; i++) {
   599 	  ext_page_array[pg][i] = new Array(4);
   600 	  switch (forms[0].elements[i].type) {
   601 	  case 'radio': 
   602           case 'checkbox':
   603 	    ext_page_array[pg][i][0] = forms[0].elements[i].checked;
   604 	    break;
   605 	  case 'select-one':
   606 	    ext_page_array[pg][i][0] = forms[0].elements[i].selectedIndex;
   607 	    break;
   608 	  case 'select-multiple':
   609 	    len = forms[0].elements[i].options.length;
   610 	    ext_page_array[pg][i][0] = new Array(len);
   611 	    for(k = 0; k < len; k++) {
   612 	      ext_page_array[pg][i][0][k] = forms[0].elements[i].options[k].value;
   613 	    }
   614 	    break;
   615 	  default:
   616 	    ext_page_array[pg][i][0] = forms[0].elements[i].value;
   617 	  }
   618 	  ext_page_array[pg][i][1] = forms[0].elements[i].name;
   619 	  ext_page_array[pg][i][2] = forms[0].elements[i].value;
   620 	  ext_page_array[pg][i][3] = forms[0].elements[i].type;
   621         }
   622       }
   623     }
   624   }
   625 }
   627 function reload_form(page_number)
   628 {
   629   var j = page_number - 1;
   630   with (window.frames['right'].document) {
   631     if (((page_number < 2 || page_number > 3) || ver == 3) 
   632 	&& page_number != 0 && (ext_page_array[j].length > 1)) {
   633       for (i = 0; i < ext_page_array[j].length; i++) {
   634 	switch (forms[0].elements[i].type) {
   635 	case 'radio': case 'checkbox':
   636 	  forms[0].elements[i].checked = ext_page_array[j][i][0];
   637 	  break;
   638 	case 'select-one':
   639 	  forms[0].elements[i].selectedIndex = ext_page_array[j][i][0];
   640 	  break;
   641 	case 'select-multiple':
   642 	  for (k = 0; k < ext_page_array[j][i][0].length; k++) {
   643 	    forms[0].elements[i].options[k] = 
   644 	        new Option(ext_page_array[j][i][0][k], 
   645 			   ext_page_array[j][i][0][k]);
   646 	  }
   647 	  break;
   648 	default:
   649 	  forms[0].elements[i].value = ext_page_array[j][i][0];
   650 	}
   651       }
   652     }
   653   }
   654 }
   656 function switch_right_frame(top_window, old_pane, new_pane)
   657 {
   658   var ext_page_stnd =
   659     make_page_intro(standard_extensions_index_label, "#FFFFFF") +
   660     '<IFRAME WIDTH="100%" HEIGHT="100%" FRAMEBORDER=0 ID="ext" ' +
   661     'SRC="stnd_ext_form.html">' +
   662     '</IFRAME></body></html>';
   664   var ext_page_nscp = 
   665     make_page_intro(netscape_extensions_index_label, "#FFFFFF") +
   666     '<IFRAME WIDTH="100%" HEIGHT="100%" FRAMEBORDER=0 ID="ext" ' +
   667     'SRC="nscp_ext_form.html">' +
   668     '</IFRAME></body></html>';
   670   var ext_page_ca =
   671     make_page_intro(certifying_authorities_index_label, "#FFFFFF") +
   672     '<IFRAME WIDTH="100%" HEIGHT="100%" FRAMEBORDER=0 ID="ext" ' +
   673     'SRC="ca.html">' +
   674     '</IFRAME></body</html>';
   676   var ext_page_ca_exp =
   677     make_page_intro('Certifying Authority Details', "#FFFFFF") +
   678     '<IFRAME WIDTH="100%" HEIGHT="100%" FRAMEBORDER=0 ID="ext" ' +
   679     'SRC="ca_form.html">' +
   680     '</IFRAME></body></html>';
   683   if (old_pane > 0 && cur_page <= max_pages) {
   684     save_cur_page(old_pane);
   685   }
   686   cur_page = new_pane;
   687   make_left_frame(top_window);
   688   if (new_pane == 2 || new_pane == 3) {
   689     if (ver == 1) {
   690       frames['right'].document.write(ext_page_ver1);
   691       frames['right'].document.close();
   692     } else if (new_pane == 2) {
   693       frames['right'].document.write(ext_page_nscp);
   694       frames['right'].document.close();
   695       reload_form(new_pane);
   696     } else {
   697       frames['right'].document.write(ext_page_stnd);
   698       frames['right'].document.close();
   699       reload_form(new_pane);
   700     }
   701   } else if (new_pane == 4) {
   702     frames['right'].document.write(ext_page_ca);
   703     frames['right'].document.close();
   704     reload_form(new_pane);
   705   } else if (new_pane == 1) {
   706     frames['right'].document.write(main_page);
   707     frames['right'].document.close();
   708     reload_form(new_pane);
   709   } else {
   710     frames['right'].document.write(ext_page_ca_exp);
   711     frames['right'].document.close();
   712     reload_form(new_pane);
   713   }
   714 }
   716 function make_left_frame_page(selected)
   717 {
   718   var n_strings = ( make_left_frame_page.arguments.length - 1 ) / 2;
   719   var table_background;
   720   var command;
   721   var indent;
   722   var label;
   723   var ret_string = "";
   725   ret_string += '<TABLE CELLSPACING=4>';
   726   for ( var i = 1; i <= n_strings; i++ ) {
   727     if ( i == selected ) {
   728       table_background = 'BGCOLOR=#BBCCBB';
   729     } else {
   730       table_background = '';
   731     }
   733     indent = make_left_frame_page.arguments[(i*2) - 1];
   734     label =  make_left_frame_page.arguments[(i*2)];
   736     if ( indent == 0 ) {
   737       ret_string += ('<TR><TD COLSPAN=2 ' + table_background + '>');
   738     } else {
   739       ret_string += ('<TR><TD>&nbsp;&nbsp;</TD><TD ' + table_background + '>');
   740     }
   742     command = "'parent.switch_right_frame(parent," + selected + "," + i + ")'";
   743     ret_string += ('<A HREF="javascript:void setTimeout(' + command + ',0)">');
   744     if ( indent == 0 ) { ret_string += "<B>"; }
   745     ret_string += label;
   746     if ( indent == 0 ) { ret_string += "</B>"; }
   747     ret_string += '</A></TD></TR>';
   748   }
   749   if (selected == (max_pages + 1)) {
   750     table_background = 'BGCOLOR=#BBCCBB';
   751   } else {
   752     table_background = '';
   753   }
   754   ret_string +=
   755     '<TR><TD COLSPAN=2 ' + table_background + 
   756     '><b><A HREF="javascript:void setTimeout(\'top.submit_it()\', 0)">Finish</A></b>' +
   757     '</TD></TR>' +
   758     '<input type="submit"></form>' + 
   759     '</TABLE>';
   760   return(ret_string);
   761 }
   764 function make_page(window)
   765 // Draws the initial page setup
   766 {
   767   selected = cur_page
   768   init_ext_page_array()
   770   with (window.frames['right']) {
   771     location="main.html";
   772 //  document.write(main_page);
   773 //  document.close();
   774   }
   776   make_left_frame(window);
   778 }
   779 </script>
   781 </HEAD>
   782 <title>Cert-O-Matic</title>
   783   <FRAMESET cols="150,*" BORDER=3 ONLOAD="make_page(window)">
   784       <FRAME SRC="about:blank" ID="index" NAME="index"
   785            MARGINWIDTH=15 MARGINHEIGHT=10 BORDER=3>
   786       <FRAME SRC="about:blank" ID="right" NAME="right"
   787            MARGINWIDTH=15 MARGINHEIGHT=10 BORDER=3>
   788   </FRAMESET>
   789 </HTML>

mercurial