/* ================================================================ 
       Language: JavaScript
        Program: ICD10formfunc.js
         Folder:                             
        Purpose: Validates form input and loads hidden form variables for ICD10 Cause of Death query with the functions:
    Source Data: 
         Output:                  
     Written by: John D. Morgan
          Notes:                   
Version History:
================================================================
09-01-2005/JDMorgan/ Corrected handling of drilldowns of both code and description to eliminate uncorresponding combinations.
                     Also corrected $DESCRIP. format length to prevent description truncation.
05-23-2005/JDMorgan/ Added checking for overlapping causes of death and modified code accordingly.
05-18-2005/JDMorgan/ Corrected example table at bottom of form to match actual report output
03-28-2005/JDMorgan/ Added age-specific death rate and age selection
02-28-2005/JDMorgan/ Added and removed summaries.
02-16-2005/JDMorgan/ Added ALLCAUSES to JavaScript variables and form hidden parameters
01-06-2005/JDMorgan/ Created for ICD10 cause of death query
mm-dd-yyyy/FMLastname/ Description of changes
================================================================
*/
/*  alert("Mark this top");   */ 
function BuildICD10Arrays()
{
/*  alert("Entering BuildICD10Arrays()\n" 
  +"\n"+"document.ICD10form.countytext="+document.ICD10form.countytext.value                       
  +"\n"+"document.ICD10form.regiontext="+document.ICD10form.regiontext.value                       
  +"\n"+"document.ICD10form.allLevel1 ="+document.ICD10form.allLevel1.value                        
  +"\n"+"document.ICD10form.allLevel2 ="+document.ICD10form.allLevel2.value                        
  +"\n"+"document.ICD10form.allLevel3 ="+document.ICD10form.allLevel3.value
  +"\n"+"document.ICD10form.allLevel4 ="+document.ICD10form.allLevel4.value);
*/
  
/*allLevel4 level1ICD10 is a list of major categories of diagnoses, some of which have subcategories in level2ICD10 */
  level1ICD10=new Array(54);
/*  alert("level1ICD10 dimensioned "+level1ICD10.length); */
  level1ICD10[  0]="000 All Causes";  
  level1ICD10[  1]="001 Salmonella infections.  ICD10 Codes A01–A02";
  level1ICD10[  2]="002 Shigellosis and amebiasis.  ICD10 Codes A03,A06";
  level1ICD10[  3]="003 Certain other intestinal infections.  ICD10 Codes A04,A07–A09";
  level1ICD10[  4]="004* Tuberculosis.  ICD10 Codes A16–A19";
  level1ICD10[  5]="007 Whooping cough.  ICD10 Code A37";
  level1ICD10[  6]="008 Scarlet fever and erysipelas.  ICD10 Codes A38,A46";
  level1ICD10[  7]="009 Meningococcal infection.  ICD10 Code A39";
  level1ICD10[  8]="010 Septicemia.  ICD10 Codes A40–A41";
  level1ICD10[  9]="011 Syphilis.  ICD10 Codes A50–A53";
  level1ICD10[ 10]="012 Acute poliomyelitis.  ICD10 Code A80";
  level1ICD10[ 11]="013 Arthropod–borne viral encephalitis.  ICD10 Codes A83–A84,A85.2";
  level1ICD10[ 12]="014 Measles.  ICD10 Code B05";
  level1ICD10[ 13]="015 Viral hepatitis.  ICD10 Codes B15–B19";
  level1ICD10[ 14]="016 Human immunodeficiency virus (HIV) disease.  ICD10 Codes B20–B24";
  level1ICD10[ 15]="017 Malaria.  ICD10 Codes B50–B54";
  level1ICD10[ 16]="018 Other and unspecified infectious and parasitic diseases and their sequelae.  ICD10 Codes A00,A05,A20–A36,A42–A44,A48–A49,A54–A79,A81–A82,A85.0–A85.1,A85.8,A86–B04,B06–B09,B25–B49,B55–B99";
  level1ICD10[ 17]="019* Malignant neoplasms.  ICD10 Codes C00–C97";
  level1ICD10[ 18]="044 In situ neoplasms, benign neoplasms and neoplasms of uncertain or unknown behavior.  ICD10 Codes D00–D48";
  level1ICD10[ 19]="045 Anemias.  ICD10 Codes D50–D64";
  level1ICD10[ 20]="046 Diabetes mellitus.  ICD10 Codes E10–E14";
  level1ICD10[ 21]="047* Nutritional deficiencies.  ICD10 Codes E40–E64";
  level1ICD10[ 22]="050 Meningitis.  ICD10 Codes G00,G03";
  level1ICD10[ 23]="051 Parkinson’s disease.  ICD10 Codes G20–G21";
  level1ICD10[ 24]="052 Alzheimer’s disease.  ICD10 Code G30";
  level1ICD10[ 25]="053* Major cardiovascular diseases.  ICD10 Codes I00–I78";
  level1ICD10[ 26]="075 Other disorders of circulatory system.  ICD10 Codes I80–I99";
  level1ICD10[ 27]="076* Influenza and pneumonia.  ICD10 Codes J10–J18";
  level1ICD10[ 28]="079* Other acute lower respiratory infections.  ICD10 Codes J20–J22";
  level1ICD10[ 29]="082* Chronic lower respiratory diseases.  ICD10 Codes J40–J47";
  level1ICD10[ 30]="087 Pneumoconioses and chemical effects.  ICD10 Codes J60–J66,J68";
  level1ICD10[ 31]="088 Pneumonitis due to solids and liquids.  ICD10 Code J69";
  level1ICD10[ 32]="089 Other diseases of respiratory system.  ICD10 Codes J00–J06,J30–J39,J67,J70–J98";
  level1ICD10[ 33]="090 Peptic ulcer.  ICD10 Codes K25–K28";
  level1ICD10[ 34]="091 Diseases of appendix.  ICD10 Codes K35–K38";
  level1ICD10[ 35]="092 Hernia.  ICD10 Codes K40–K46";
  level1ICD10[ 36]="093* Chronic liver disease and cirrhosis.  ICD10 Codes K70,K73–K74";
  level1ICD10[ 37]="096 Cholelithiasis and other disorders of gallbladder.  ICD10 Codes K80–K82";
  level1ICD10[ 38]="097* Nephritis, nephrotic syndrome and nephrosis.  ICD10 Codes N00–N07,N17–N19,N25–N27";
  level1ICD10[ 39]="102 Infections of kidney.  ICD10 Codes N10–N12,N13.6,N15.1";
  level1ICD10[ 40]="103 Hyperplasia of prostate.  ICD10 Code N40";
  level1ICD10[ 41]="104 Inflammatory diseases of female pelvic organs.  ICD10 Codes N70–N76";
  level1ICD10[ 42]="105* Pregnancy, childbirth and the puerperium.  ICD10 Codes O00–099";
  level1ICD10[ 43]="108 Certain conditions originating in the perinatal period.  ICD10 Codes P00–P96";
  level1ICD10[ 44]="109 Congenital malformations, deformations, and chromosomal abnormalities.  ICD10 Codes Q00–Q99";
  level1ICD10[ 45]="110 Symptoms, signs and abnormal clinical and laboratory findings, not elsewhere classified.  ICD10 Codes R00–R99";
  level1ICD10[ 46]="111 All other diseases (Residual).  ICD10 Codes Residual";
  level1ICD10[ 47]="112* Accidents (unintentional injuries).  ICD10 Codes V01–X59,Y85–Y86";
  level1ICD10[ 48]="124* Intentional self-harm (suicide).  ICD10 Codes X60–X84,Y87.0";
  level1ICD10[ 49]="127* Assault (homicide).  ICD10 Codes X85–Y09,Y87.1";
  level1ICD10[ 50]="130 Legal intervention.  ICD10 Codes Y35,Y89.0";
  level1ICD10[ 51]="131* Events of undetermined intent.  ICD10 Codes Y10–Y34,Y87.2,Y89.9";
  level1ICD10[ 52]="134 Operations of war and their sequelae.  ICD10 Codes Y36,Y89.1";
  level1ICD10[ 53]="135 Complications of medical and surgical care.  ICD10 Codes Y40–Y84,Y88";
/*  alert("level1ICD10 loaded"); */
  level1ListNums=new Array(level1ICD10.length);
  for (iList = 0; iList < level1ICD10.length; iList++)
  {
    level1ListNums[iList]=level1ICD10[iList].substring(0,4);
  }

/* Load select box ICD10Level1 on form with values from level1ICD10. */
  document.ICD10form.ICD10Level1.options.length=level1ICD10.length;
  document.ICD10form.ICD10Level1.size=level1ICD10.length; 
/*  alert("ICD10Level1 dimensioned "+document.ICD10form.ICD10Level1.options.length); */
  for (iLevel1 = 0; iLevel1 < (document.ICD10form.ICD10Level1.options.length); iLevel1++)
  {
    document.ICD10form.ICD10Level1.options[iLevel1].text=level1ICD10[iLevel1];
    document.ICD10form.ICD10Level1.options[iLevel1].value=level1ListNums[iLevel1];
  }
  
/* level2ICD10 is a list of subcategories of some level1ICD10 diagnoses, some of which have further subcategories in level3ICD10 */
  level2ICD10=new Array(52);
/*  alert("level2ICD10 dimensioned "+level2ICD10.length); */
  level2ICD10[  0]="005 Respiratory tuberculosis.  ICD10 Code A16 (Subset of Cause 004)";                       
  level2ICD10[  1]="006 Other tuberculosis.  ICD10 Codes A17–A19 (Subset of Cause 004)";                       
  level2ICD10[  2]="020 Malignant neoplasms of lip, oral cavity and pharynx.  ICD10 Codes C00–C14 (Subset of Cause 019)";                       
  level2ICD10[  3]="021 Malignant neoplasm of esophagus.  ICD10 Code C15 (Subset of Cause 019)";                       
  level2ICD10[  4]="022 Malignant neoplasm of stomach.  ICD10 Code C16 (Subset of Cause 019)";                       
  level2ICD10[  5]="023 Malignant neoplasms of colon, rectum and anus.  ICD10 Codes C18–C21 (Subset of Cause 019)";                       
  level2ICD10[  6]="024 Malignant neoplasms of liver and intrahepatic bile ducts.  ICD10 Code C22 (Subset of Cause 019)";                       
  level2ICD10[  7]="025 Malignant neoplasm of pancreas.  ICD10 Code C25 (Subset of Cause 019)";                       
  level2ICD10[  8]="026 Malignant neoplasm of larynx.  ICD10 Code C32 (Subset of Cause 019)";                       
  level2ICD10[  9]="027 Malignant neoplasms of trachea, bronchus and lung.  ICD10 Codes C33–C34 (Subset of Cause 019)";                       
  level2ICD10[ 10]="028 Malignant melanoma of skin.  ICD10 Code C43 (Subset of Cause 019)";                       
  level2ICD10[ 11]="029 Malignant neoplasm of breast.  ICD10 Code C50 (Subset of Cause 019)";                       
  level2ICD10[ 12]="030 Malignant neoplasm of cervix uteri.  ICD10 Code C53 (Subset of Cause 019)";                       
  level2ICD10[ 13]="031 Malignant neoplasms of corpus uteri and uterus, part unspecified.  ICD10 Codes C54–C55 (Subset of Cause 019)";                       
  level2ICD10[ 14]="032 Malignant neoplasm of ovary.  ICD10 Code C56 (Subset of Cause 019)";                       
  level2ICD10[ 15]="033 Malignant neoplasm of prostate.  ICD10 Code C61 (Subset of Cause 019)";                       
  level2ICD10[ 16]="034 Malignant neoplasms of kidney and renal pelvis.  ICD10 Codes C64–C65 (Subset of Cause 019)";                       
  level2ICD10[ 17]="035 Malignant neoplasm of bladder.  ICD10 Code C67 (Subset of Cause 019)";                       
  level2ICD10[ 18]="036 Malignant neoplasms of meninges, brain and other parts of central nervous system.  ICD10 Codes C70–C72 (Subset of Cause 019)";                       
  level2ICD10[ 19]="037* Malignant neoplasms of lymphoid, hematopoietic and related tissue.  ICD10 Codes C81–C96 (Subset of Cause 019)";                       
  level2ICD10[ 20]="043 All other and unspecified malignant neoplasms.  ICD10 Codes C17,C23–C24,C26–C31,C37–C41,C44–C49,C51–C52,C57–C60,C62–C63,C66,C68–C69,C73–C80,C97 (Subset of Cause 019)";                       
  level2ICD10[ 21]="048 Malnutrition.  ICD10 Codes E40–E46 (Subset of Cause 047)";                       
  level2ICD10[ 22]="049 Other nutritional deficiencies.  ICD10 Codes E50–E64 (Subset of Cause 047)";                       
  level2ICD10[ 23]="054* Diseases of the heart.  ICD10 Codes I00–I09,I11,I13,I20–I51 (Subset of Cause 053)";                       
  level2ICD10[ 24]="069 Essential (primary) hypertension and hypertensive renal disease.  ICD10 Codes I10,I12 (Subset of Cause 053)";                       
  level2ICD10[ 25]="070 Cerebrovascular diseases.  ICD10 Codes I60–I69 (Subset of Cause 053)";                       
  level2ICD10[ 26]="071 Atherosclerosis.  ICD10 Code I70 (Subset of Cause 053)";                       
  level2ICD10[ 27]="072* Other diseases of circulatory system.  ICD10 Codes I71–I78 (Subset of Cause 053)";                       
  level2ICD10[ 28]="077 Influenza.  ICD10 Codes J10–J11 (Subset of Cause 076)";                       
  level2ICD10[ 29]="078 Pneumonia.  ICD10 Codes J12–J18 (Subset of Cause 076)";                       
  level2ICD10[ 30]="080 Acute bronchitis and bronchiolitis.  ICD10 Codes J20–J21 (Subset of Cause 079)";                       
  level2ICD10[ 31]="081 Unspecified acute lower respiratory infection.  ICD10 Code J22 (Subset of Cause 079)";                       
  level2ICD10[ 32]="083 Bronchitis, chronic and unspecified.  ICD10 Codes J40–J42 (Subset of Cause 082)";                       
  level2ICD10[ 33]="084 Emphysema.  ICD10 Code J43 (Subset of Cause 082)";                       
  level2ICD10[ 34]="085 Asthma.  ICD10 Codes J45–J46 (Subset of Cause 082)";                       
  level2ICD10[ 35]="086 Other chronic lower respiratory diseases.  ICD10 Codes J44,J47 (Subset of Cause 082)";                       
  level2ICD10[ 36]="094 Alcoholic liver disease.  ICD10 Code K70 (Subset of Cause 093)";                       
  level2ICD10[ 37]="095 Other chronic liver disease and cirrhosis.  ICD10 Codes K73–K74 (Subset of Cause 093)";                       
  level2ICD10[ 38]="098 Acute and rapidly progressive nephritic and nephrotic syndrome.  ICD10 Codes N00–N01,N04 (Subset of Cause 097)";                       
  level2ICD10[ 39]="099 Chronic glomerulonephritis, nephritis and nephropathy not specified as acute or chronic, and renal sclerosis unspecified.  ICD10 Codes N02–N03,N05–N07,N26 (Subset of Cause 097)";                       
  level2ICD10[ 40]="100 Renal failure.  ICD10 Codes N17–N19 (Subset of Cause 097)";                       
  level2ICD10[ 41]="101 Other disorders of kidney.  ICD10 Codes N25,N27 (Subset of Cause 097)";                       
  level2ICD10[ 42]="106 Pregnancy with abortive outcome.  ICD10 Codes O00–O07 (Subset of Cause 105)";                       
  level2ICD10[ 43]="107 Other complications of pregnancy, childbirth and the puerperium.  ICD10 Codes O10–O99 (Subset of Cause 105)";                       
  level2ICD10[ 44]="113* Transport accidents.  ICD10 Codes V01–V99,Y85 (Subset of Cause 112)";                       
  level2ICD10[ 45]="117* Nontransport accidents.  ICD10 Codes W00–X59,Y86 (Subset of Cause 112)";                       
  level2ICD10[ 46]="125 Intentional self-harm (suicide) by discharge of firearms.  ICD10 Codes X72–X74 (Subset of Cause 124)";                       
  level2ICD10[ 47]="126 Intentional self-harm (suicide) by other and unspecified means and their sequelae.  ICD10 Codes X60–X71,X75–X84,Y87.0 (Subset of Cause 124)";                       
  level2ICD10[ 48]="128 Assault (homicide) by discharge of firearms.  ICD10 Codes X93–X95 (Subset of Cause 127)";                       
  level2ICD10[ 49]="129 Assault (homicide) by other and unspecified means and their sequelae.  ICD10 Codes X85–X92,X96–Y09,Y87.1 (Subset of Cause 127)";                       
  level2ICD10[ 50]="132 Discharge of firearms, undetermined intent.  ICD10 Codes Y22–Y24 (Subset of Cause 131)";                       
  level2ICD10[ 51]="133 Other and unspecified events of undetermined intent and their sequelae.  ICD10 Codes Y10–Y21,Y25–Y34,Y87.2,Y89.9 (Subset of Cause 131)";                       

  level2ListNums=new Array(level2ICD10.length);
  for (iList = 0; iList < level2ICD10.length; iList++)
  {
    level2ListNums[iList]=level2ICD10[iList].substring(0,4);
  }
/*  alert("level2ListNums="+level2ListNums+"\n has length "+level2ListNums.length); */
  
/* level1level2 gives the listnum of the level1ICD10 major category which "contains" a given level2ICD10 subcategory. */
  level1level2=new Array(52);
/*  alert("level1level2 dimensioned "+level1level2.length); */
  level1level2[  0]="004";
  level1level2[  1]="004";
  level1level2[  2]="019";
  level1level2[  3]="019";
  level1level2[  4]="019";
  level1level2[  5]="019";
  level1level2[  6]="019";
  level1level2[  7]="019";
  level1level2[  8]="019";
  level1level2[  9]="019";
  level1level2[ 10]="019";
  level1level2[ 11]="019";
  level1level2[ 12]="019";
  level1level2[ 13]="019";
  level1level2[ 14]="019";
  level1level2[ 15]="019";
  level1level2[ 16]="019";
  level1level2[ 17]="019";
  level1level2[ 18]="019";
  level1level2[ 19]="019";
  level1level2[ 20]="019";
  level1level2[ 21]="047";
  level1level2[ 22]="047";
  level1level2[ 23]="053";
  level1level2[ 24]="053";
  level1level2[ 25]="053";
  level1level2[ 26]="053";
  level1level2[ 27]="053";
  level1level2[ 28]="076";
  level1level2[ 29]="076";
  level1level2[ 30]="079";
  level1level2[ 31]="079";
  level1level2[ 32]="082";
  level1level2[ 33]="082";
  level1level2[ 34]="082";
  level1level2[ 35]="082";
  level1level2[ 36]="093";
  level1level2[ 37]="093";
  level1level2[ 38]="097";
  level1level2[ 39]="097";
  level1level2[ 40]="097";
  level1level2[ 41]="097";
  level1level2[ 42]="105";
  level1level2[ 43]="105";
  level1level2[ 44]="112";
  level1level2[ 45]="112";
  level1level2[ 46]="124";
  level1level2[ 47]="124";
  level1level2[ 48]="127";
  level1level2[ 49]="127";
  level1level2[ 50]="131";
  level1level2[ 51]="131";
  
/* index1level2 gives the array index of the level1ICD10 major category which "contains" a given level2ICD10 subcategory. */
  index1level2=new Array(52);
/*  alert("index1level2 dimensioned "+index1level2.length); */
  index1level2[  0]=4;
  index1level2[  1]=4;
  index1level2[  2]=17;
  index1level2[  3]=17;
  index1level2[  4]=17;
  index1level2[  5]=17;
  index1level2[  6]=17;
  index1level2[  7]=17;
  index1level2[  8]=17;
  index1level2[  9]=17;
  index1level2[ 10]=17;
  index1level2[ 11]=17;
  index1level2[ 12]=17;
  index1level2[ 13]=17;
  index1level2[ 14]=17;
  index1level2[ 15]=17;
  index1level2[ 16]=17;
  index1level2[ 17]=17;
  index1level2[ 18]=17;
  index1level2[ 19]=17;
  index1level2[ 20]=17;
  index1level2[ 21]=21;
  index1level2[ 22]=21;
  index1level2[ 23]=25;
  index1level2[ 24]=25;
  index1level2[ 25]=25;
  index1level2[ 26]=25;
  index1level2[ 27]=25;
  index1level2[ 28]=27;
  index1level2[ 29]=27;
  index1level2[ 30]=28;
  index1level2[ 31]=28;
  index1level2[ 32]=29;
  index1level2[ 33]=29;
  index1level2[ 34]=29;
  index1level2[ 35]=29;
  index1level2[ 36]=36;
  index1level2[ 37]=36;
  index1level2[ 38]=38;
  index1level2[ 39]=38;
  index1level2[ 40]=38;
  index1level2[ 41]=38;
  index1level2[ 42]=42;
  index1level2[ 43]=42;
  index1level2[ 44]=47;
  index1level2[ 45]=47;
  index1level2[ 46]=48;
  index1level2[ 47]=48;
  index1level2[ 48]=49;
  index1level2[ 49]=49;
  index1level2[ 50]=51;
  index1level2[ 51]=51;
  
/* level3ICD10 is a list of subcategories of some level2ICD10 diagnoses, some of which have further subcategories in level4ICD10 */
  level3ICD10=new Array(21);
/*  alert("level3ICD10 dimensioned "+level3ICD10.length); */
  level3ICD10[  0]="038 Hodgkin’s disease.  ICD10 Code C81 (Subset of Cause 037)";                   
  level3ICD10[  1]="039 Non-Hodgkin’s lymphoma.  ICD10 Codes C82–C85 (Subset of Cause 037)";                   
  level3ICD10[  2]="040 Leukemia.  ICD10 Codes C91–C95 (Subset of Cause 037)";                   
  level3ICD10[  3]="041 Multiple myeloma and immunoproliferative neoplasms.  ICD10 Codes C88,C90 (Subset of Cause 037)";                   
  level3ICD10[  4]="042 Other and unspecified malignant neoplasms of lymphoid, hematopoietic and related tissue.  ICD10 Code C96 (Subset of Cause 037)";                   
  level3ICD10[  5]="055 Acute rheumatic fever and chronic rheumatic heart diseases.  ICD10 Codes I00–I09 (Subset of Cause 054)";                   
  level3ICD10[  6]="056 Hypertensive heart disease.  ICD10 Code I11 (Subset of Cause 054)";                   
  level3ICD10[  7]="057 Hypertensive heart and renal disease.  ICD10 Code I13 (Subset of Cause 054)";                   
  level3ICD10[  8]="058* Ischemic heart diseases.  ICD10 Codes I20–I25 (Subset of Cause 054)";                   
  level3ICD10[  9]="064* Other heart diseases.  ICD10 Codes I26–I51 (Subset of Cause 054)";                   
  level3ICD10[ 10]="073 Aortic aneurysm and dissection.  ICD10 Code I71 (Subset of Cause 072)";                   
  level3ICD10[ 11]="074 Other diseases of arteries, arterioles and capillaries.  ICD10 Codes I72–I78 (Subset of Cause 072)";                   
  level3ICD10[ 12]="114 Motor vehicle accidents.  ICD10 Codes V02–V04,V09.0,V09.2,,V12–V14,V19.0–V19.2,V19.4–V19.6,V20–V79,V80.3–V80.5,V81.0–V81.1,V82.0–V82.1,V83–V86,V87.0–V87.8,V88.0–V88.8,V89.0,V89.2 (Subset of Cause 113)";                   
  level3ICD10[ 13]="115 Other land transport accidents.  ICD10 Codes V01,V05–V06,V09.1,V09.3–V09.9,V10–V11,V15–V18,V19.3,V19.8–V19.9,V80.0–V80.2,V80.6–V80.9,V81.2–V81.9,V82.2–V82.9,V87.9,V88.9,V89.1,V89.3,V89.9 (Subset of Cause 113)";                   
  level3ICD10[ 14]="116 Water, air and space, and other and unspecified transport accidents and their sequelae.  ICD10 Codes V90–V99,Y85 (Subset of Cause 113)";                   
  level3ICD10[ 15]="118 Falls.  ICD10 Codes W00–W19 (Subset of Cause 117)";                   
  level3ICD10[ 16]="119 Accidental discharge of firearms.  ICD10 Codes W32–W34 (Subset of Cause 117)";                   
  level3ICD10[ 17]="120 Accidental drowning and submersion.  ICD10 Codes W65–W74 (Subset of Cause 117)";                   
  level3ICD10[ 18]="121 Accidental exposure to smoke, fire and flames.  ICD10 Codes X00–X09 (Subset of Cause 117)";                   
  level3ICD10[ 19]="122 Accidental poisoning and exposure to noxious substances.  ICD10 Codes X40–X49 (Subset of Cause 117)";                   
  level3ICD10[ 20]="123 Other and unspecified nontransport accidents and their sequelae.  ICD10 Codes W20–W31,W35–W64,W75–W99,X10–X39,X50–X59,Y86 (Subset of Cause 117)";                   

  level3ListNums=new Array(level3ICD10.length);
  for (iList = 0; iList < level3ICD10.length; iList++)
  {
    level3ListNums[iList]=level3ICD10[iList].substring(0,4);
  }
  
/* level2level3 gives the listnum of the level2ICD10 subcategory which "contains" a given level3ICD10 subcategory. */
  level2level3=new Array(21);
/*  alert("level2level3 dimensioned "+level2level3.length); */
  level2level3[  0]="037";         
  level2level3[  1]="037";         
  level2level3[  2]="037";         
  level2level3[  3]="037";         
  level2level3[  4]="037";         
  level2level3[  5]="054";         
  level2level3[  6]="054";         
  level2level3[  7]="054";         
  level2level3[  8]="054";         
  level2level3[  9]="054";         
  level2level3[ 10]="072";         
  level2level3[ 11]="072";
  level2level3[ 12]="113";         
  level2level3[ 13]="113";         
  level2level3[ 14]="113";         
  level2level3[ 15]="117";         
  level2level3[ 16]="117";         
  level2level3[ 17]="117";         
  level2level3[ 18]="117";         
  level2level3[ 19]="117";         
  level2level3[ 20]="117";         
  
/* index2level3 gives the array index of the level2ICD10 subcategory which "contains" a given level3ICD10 subcategory. */
  index2level3=new Array(21);
/*  alert("index2level3 dimensioned "+index2level3.length); */
  index2level3[  0]=19;         
  index2level3[  1]=19;         
  index2level3[  2]=19;         
  index2level3[  3]=19;         
  index2level3[  4]=19;         
  index2level3[  5]=23;         
  index2level3[  6]=23;         
  index2level3[  7]=23;         
  index2level3[  8]=23;         
  index2level3[  9]=23;         
  index2level3[ 10]=27;         
  index2level3[ 11]=27;
  index2level3[ 12]=44;         
  index2level3[ 13]=44;         
  index2level3[ 14]=44;         
  index2level3[ 15]=45;         
  index2level3[ 16]=45;         
  index2level3[ 17]=45;         
  index2level3[ 18]=45;         
  index2level3[ 19]=45;         
  index2level3[ 20]=45;         
  
/* level4ICD10 is a list of subcategories of some level3ICD10 diagnoses.  These have no further subcategories. */
  level4ICD10=new Array(9);
/*  alert("level4ICD10 dimensioned "+level4ICD10.length); */
  level4ICD10[  0]="059 Acute myocardial infarction.  ICD10 Codes I21–I22 (Subset of Cause 058)";                       
  level4ICD10[  1]="060 Other acute ischemic heart diseases.  ICD10 Code I24 (Subset of Cause 058)";                       
  level4ICD10[  2]="061 Other forms of chronic ischemic heart disease.  ICD10 Codes I20,I25 (Subset of Cause 058)";                       
  level4ICD10[  3]="062 Atherosclerotic cardiovascular disease, so described.  ICD10 Code I25.0 (Subset of Cause 058)";                       
  level4ICD10[  4]="063 All other forms of chronic ischemic heart disease.  ICD10 Codes I20,I25.1–I25.9 (Subset of Cause 058)";                       
  level4ICD10[  5]="065 Acute and subacute endocarditis.  ICD10 Codes I33 (Subset of Cause 064)";                       
  level4ICD10[  6]="066 Diseases of pericardium and acute myocarditis.  ICD10 Codes I30–I31,I40 (Subset of Cause 064)";                       
  level4ICD10[  7]="067 Heart failure.  ICD10 Code I50 (Subset of Cause 064)";                       
  level4ICD10[  8]="068 All other forms of heart disease.  ICD10 Codes I26–I28,I34–I38,I42–I49,I51 (Subset of Cause 064)";                       

  level4ListNums=new Array(level4ICD10.length);
  for (iList = 0; iList < level4ICD10.length; iList++)
  {
    level4ListNums[iList]=level4ICD10[iList].substring(0,4);
  }

/* level3level4 gives the listnum of the level2ICD10 subcategory which "contains" a given level3ICD10 subcategory. */
  level3level4=new Array(9);
/*  alert("level3level4 dimensioned "+level3level4.length); */
  level3level4[  0]="058";              
  level3level4[  1]="058";              
  level3level4[  2]="058";              
  level3level4[  3]="058";              
  level3level4[  4]="058";              
  level3level4[  5]="064";              
  level3level4[  6]="064";              
  level3level4[  7]="064";              
  level3level4[  8]="064";      
  
/* index3level4 gives the array index of the level2ICD10 subcategory which "contains" a given level3ICD10 subcategory. */
  index3level4=new Array(9);
/*  alert("index3level4 dimensioned "+index3level4.length); */
  index3level4[  0]=8;              
  index3level4[  1]=8;              
  index3level4[  2]=8;              
  index3level4[  3]=8;              
  index3level4[  4]=8;              
  index3level4[  5]=9;              
  index3level4[  6]=9;              
  index3level4[  7]=9;              
  index3level4[  8]=9;  
   
  allLevel1="";
  allLevel2="";
  allLevel3="";
  allLevel4="";
  allCauses="";
  allCauses1="";
  allCauses2="";
  allCauses3="";
  allCauses4="";
  if (document.ICD10form.allLevel1.value != "")
  {
    reloadCauses();
  }
/*  alert("Leaving BuildICD10Arrays()");  */ 
}  

function reloadCauses()
{
/*  alert("reloadCauses(). Start Level 1 loop.");  */
  for (iLevel1 = 0; iLevel1 < level1ICD10.length; iLevel1++)
  {
    if (document.ICD10form.allLevel1.value.indexOf(document.ICD10form.ICD10Level1.options[iLevel1].value.substring(0,3)) > -1)
    {
      document.ICD10form.ICD10Level1.options[iLevel1].selected=true;
/*      alert(" SELECTED LEVEL 1:"+document.ICD10form.ICD10Level1.options[iLevel1].value.substring(0,3)+"\n"+  
      document.ICD10form.ICD10Level1.options[iLevel1].selected); */ 
    }
    else
    {
      document.ICD10form.ICD10Level1.options[iLevel1].selected=false;
/*      alert("NOT SELECTED LEVEL 1:"+document.ICD10form.ICD10Level1.options[iLevel1].value.substring(0,3)+"\n"+  
      document.ICD10form.ICD10Level1.options[iLevel1].selected); */ 
    }
  }
  
/*  alert("Finished Level 1 loop. Now call buildLevel2()");  */
  buildLevel2();
/*  alert("Finished buildLevel2(). Now start Level 2 loop");  */
  
  for (iLevel2 = 0; iLevel2 < document.ICD10form.ICD10Level2.options.length; iLevel2++)
  {
    if (document.ICD10form.allLevel2.value.indexOf(document.ICD10form.ICD10Level2.options[iLevel2].value.substring(0,3)) > -1)
    {
      document.ICD10form.ICD10Level2.options[iLevel2].selected=true;
/*      alert(" SELECTED LEVEL 2:"+document.ICD10form.ICD10Level2.options[iLevel2].value.substring(0,3));  */
    }
    else
    {
      document.ICD10form.ICD10Level2.options[iLevel2].selected=false;
/*      alert("NOT SELECTED LEVEL 2:"+document.ICD10form.ICD10Level2.options[iLevel2].value.substring(0,3)+"\n"+  
      document.ICD10form.ICD10Level2.options[iLevel2].selected);   */ 
    }
  }
  
/*  alert("Finished Level 2 loop. Now call buildLevel3()");  */
  buildLevel3();
/*  alert("Finished buildLevel3(). Now start Level 3 loop");  */
  
  for (iLevel3 = 0; iLevel3 < document.ICD10form.ICD10Level3.options.length; iLevel3++)
  {
    if (document.ICD10form.allLevel3.value.indexOf(document.ICD10form.ICD10Level3.options[iLevel3].value.substring(0,3)) > -1)
    {
      document.ICD10form.ICD10Level3.options[iLevel3].selected=true;
/*      alert(" SELECTED LEVEL 3:"+document.ICD10form.ICD10Level3.options[iLevel3].value.substring(0,3));  */
    }
    else
    {
      document.ICD10form.ICD10Level3.options[iLevel3].selected=false;
/*      alert("NOT SELECTED LEVEL 3:"+document.ICD10form.ICD10Level3.options[iLevel3].value.substring(0,3)+"\n"+  
      document.ICD10form.ICD10Level3.options[iLevel3].selected);  */ 
    }
  }

/*  alert("Finished Level 3 loop. Now call buildLevel4()");  */
  buildLevel4();
/*  alert("Finished buildLevel4(). Now start Level 4 loop");  */
  
  for (iLevel4 = 0; iLevel4 < document.ICD10form.ICD10Level4.options.length; iLevel4++)
  {
    if (document.ICD10form.allLevel4.value.indexOf(document.ICD10form.ICD10Level4.options[iLevel4].value.substring(0,3)) > -1)
    {
      document.ICD10form.ICD10Level4.options[iLevel4].selected=true;
/*      alert(" SELECTED LEVEL 4:"+document.ICD10form.ICD10Level4.options[iLevel4].value.substring(0,3))  */
    }
    else
    {
      document.ICD10form.ICD10Level4.options[iLevel4].selected=false;
/*      alert("NOT SELECTED LEVEL 4:"+document.ICD10form.ICD10Level4.options[iLevel4].value.substring(0,3)+"\n"+  
      document.ICD10form.ICD10Level4.options[iLevel4].selected);  */ 
    }
  }
  clickLevel4();
/*  alert("Finished Level 4 loop. Now exit reloadCauses()");  */
}
function buildLevel2()
{
/*      alert("Entering buildLevel2()");  */ 
  allLevel1="";
  allCauses1="";
  document.ICD10form.ICD10Level2.style.visibility="visible";
  document.ICD10form.ICD10Level2.disabled=false;
  document.ICD10form.ICD10Level2.options.length=0;
  document.ICD10form.ICD10Level2.size=0;
  jList2=0;
  noLevel1=true;
  
  for (iLevel1 = 0; iLevel1 < level1ICD10.length; iLevel1++)
  {
    if (document.ICD10form.ICD10Level1.options[iLevel1].selected)
    {
/*      alert("document.ICD10form.ICD10Level1.options["+iLevel1+"].selected");   */ 
      listNum1=level1ICD10[iLevel1].substring(0,3);
      allLevel1=allLevel1+document.ICD10form.ICD10Level1.options[iLevel1].value;
      if (document.ICD10form.ICD10Level1.options[iLevel1].value.substring(3,4) != "*")
      {
/*      alert("Inside if block"); */
/* alert("document.ICD10form.ICD10Level1.options[iLevel1].value="+document.ICD10form.ICD10Level1.options[iLevel1].value
     +"document.ICD10form.ICD10Level1.options[iLevel1].value.substring(3,4)="+document.ICD10form.ICD10Level1.options[iLevel1].value.substring(3,4));
*/     
        allCauses1=allCauses1+" C"+document.ICD10form.ICD10Level1.options[iLevel1].value.substring(0,3);
      }
      firstSelected1=true;
/*      alert("listNum1="+listNum1);  */ 
      for (iLevel2 = 0; iLevel2 < level2ICD10.length; iLevel2++)
      {
        if (level1level2[iLevel2] == listNum1)
        {
/*      alert("level1level2["+iLevel2+"] == "+listNum1);  */ 
         noLevel1=false;
         if (firstSelected1)
         {
            document.ICD10form.ICD10Level2.options.length++;
            document.ICD10form.ICD10Level2.size++; 
            document.ICD10form.ICD10Level2.options[jList2].text="Subtotal "+(level1ICD10[iLevel1].replace("*"," "));
            document.ICD10form.ICD10Level2.options[jList2].value=listNum1+" ";
            document.ICD10form.ICD10Level2.options[jList2].selected=true;
            jList2++;
            firstSelected1=false;
          }
          document.ICD10form.ICD10Level2.options.length++;
          document.ICD10form.ICD10Level2.size++; 
          listNum2=level2ListNums[iLevel2];
/*      alert("for iLevel2="+iLevel2+" listNum2="+listNum2+"<");  */
          document.ICD10form.ICD10Level2.options[jList2].text=level2ICD10[iLevel2];
          document.ICD10form.ICD10Level2.options[jList2].value=listNum2;
          if (allLevel2.indexOf(listNum2) != -1)
          {
/*                  alert("listNum2="+listNum2+" is contained in allLevel2="+allLevel2);   */ 
            document.ICD10form.ICD10Level2.options[jList2].selected=true;
          }
          else
          {
 /*                 alert("listNum2="+listNum2+" is NOT contained in allLevel2="+allLevel2); */ 
            document.ICD10form.ICD10Level2.options[jList2].selected=false;
          }
          jList2++;
        }
      }
    }
  }
  if (noLevel1)
  {
    document.ICD10form.ICD10Level2.style.visibility="hidden";
    document.ICD10form.ICD10Level2.disabled=true;
  }
  buildLevel3();
/*      alert("Leaving buildLevel2()");   */ 
}  

function buildLevel3()
{
/*      alert("Entering buildLevel3()");    */
  allLevel2="";
  allCauses2="";
  document.ICD10form.ICD10Level3.style.visibility="visible";
  document.ICD10form.ICD10Level3.disabled=false;
  document.ICD10form.ICD10Level3.options.length=0;
  document.ICD10form.ICD10Level3.size=0;
  jList3=0;
  noLevel2=true;
  
  for (iLevel2 = 0; iLevel2 < document.ICD10form.ICD10Level2.options.length; iLevel2++)
  {
/*      alert("Loop over ICD10Level2. iLevel2="+iLevel2);   */
    if (document.ICD10form.ICD10Level2.options[iLevel2].selected)
    {
/*      alert("Mark this"); */
      listNum2=document.ICD10form.ICD10Level2.options[iLevel2].value.substring(0,3);
/*      alert("Mark this"); */
      allLevel2=allLevel2+document.ICD10form.ICD10Level2.options[iLevel2].value;
      if (document.ICD10form.ICD10Level2.options[iLevel2].value.substring(3,4) != "*")
      {
/* alert("document.ICD10form.ICD10Level2.options["+iLevel2+"].value="+document.ICD10form.ICD10Level2.options[iLevel2].value
     +"document.ICD10form.ICD10Level2.options["+iLevel2+"].value.substring(3,4)="+document.ICD10form.ICD10Level2.options[iLevel2].value.substring(3,3));
*/     
        allCauses2=allCauses2+" C"+document.ICD10form.ICD10Level2.options[iLevel2].value.substring(0,3);
      }
/*      alert("document.ICD10form.ICD10Level2.options["+iLevel2+"].selected, listNum2="+listNum2);   */ 
      firstSelected2=true;
/*      alert("listNum2="+listNum2);  */ 
      for (iLevel3 = 0; iLevel3 < level3ICD10.length; iLevel3++)
      {
        if (level2level3[iLevel3] == listNum2)
        {
/*      alert("level2level3["+iLevel3+"] == "+listNum2);  */ 
         noLevel2=false;
         if (firstSelected2)
         {
            document.ICD10form.ICD10Level3.options.length++;
            document.ICD10form.ICD10Level3.size++; 
            document.ICD10form.ICD10Level3.options[jList3].text="Subtotal "+(document.ICD10form.ICD10Level2.options[iLevel2].text.replace("*"," "));
            document.ICD10form.ICD10Level3.options[jList3].value=listNum2+" ";
            document.ICD10form.ICD10Level3.options[jList3].selected=true;
            jList3++;
            firstSelected2=false;
          }
          document.ICD10form.ICD10Level3.options.length++;
          document.ICD10form.ICD10Level3.size++; 
          listNum3=level3ListNums[iLevel3];
          document.ICD10form.ICD10Level3.options[jList3].text=level3ICD10[iLevel3];
          document.ICD10form.ICD10Level3.options[jList3].value=listNum3;
          if (allLevel3.indexOf(listNum3) != -1)
          {
/*      alert("listNum3="+listNum3+" is contained in allLevel3="+allLevel3);    */ 
            document.ICD10form.ICD10Level3.options[jList3].selected=true;
          }
          else
          {
/*      alert("listNum3="+listNum3+" is NOT contained in allLevel3="+allLevel3);  */ 
            document.ICD10form.ICD10Level3.options[jList3].selected=false;
          }
          jList3++;
        }
      }
    }
  }
  if (noLevel2)
  {
    document.ICD10form.ICD10Level3.style.visibility="hidden";
    document.ICD10form.ICD10Level3.disabled=true;
  }
  buildLevel4();
/*      alert("Leaving buildLevel3()");   */ 
}


function buildLevel4()
{
/*      alert("Entering buildLevel4()");    */ 
  allLevel3="";
  allCauses3="";
  document.ICD10form.ICD10Level4.style.visibility="visible";
  document.ICD10form.ICD10Level4.disabled=false;
  document.ICD10form.ICD10Level4.options.length=0;
  document.ICD10form.ICD10Level4.size=0;
  jList4=0;
  noLevel3=true;
  
  for (iLevel3 = 0; iLevel3 < document.ICD10form.ICD10Level3.options.length; iLevel3++)
  {
/*      alert("Loop over ICD10Level3. iLevel3="+iLevel3);  */ 
    if (document.ICD10form.ICD10Level3.options[iLevel3].selected)
    {
      listNum3=document.ICD10form.ICD10Level3.options[iLevel3].value.substring(0,3);
      allLevel3=allLevel3+document.ICD10form.ICD10Level3.options[iLevel3].value;
      if (document.ICD10form.ICD10Level3.options[iLevel3].value.substring(3,4) != "*")
      {
/* alert("document.ICD10form.ICD10Level3.options[iLevel3].value="+document.ICD10form.ICD10Level3.options[iLevel3].value
     +"document.ICD10form.ICD10Level3.options[iLevel3].value.substring(3,4)="+document.ICD10form.ICD10Level3.options[iLevel3].value.substring(3,3));
*/     
        allCauses3=allCauses3+" C"+document.ICD10form.ICD10Level3.options[iLevel3].value.substring(0,3);
      }
/*      alert("document.ICD10form.ICD10Level3.options["+iLevel3+"].selected, listNum3="+listNum3);   */ 
      firstSelected3=true;
/*      alert("listNum3="+listNum3);  */ 
      for (iLevel4 = 0; iLevel4 < level4ICD10.length; iLevel4++)
      {
        if (level3level4[iLevel4] == listNum3)
        {
/*      alert("level3level4["+iLevel4+"] == "+listNum3);  */ 
         noLevel3=false;
         if (firstSelected3)
         {
            document.ICD10form.ICD10Level4.options.length++;
            document.ICD10form.ICD10Level4.size++; 
            document.ICD10form.ICD10Level4.options[jList4].text="Subtotal "+(document.ICD10form.ICD10Level3.options[iLevel3].text.replace("*"," "));
            document.ICD10form.ICD10Level4.options[jList4].value=listNum3+" ";
            document.ICD10form.ICD10Level4.options[jList4].selected=true;
            jList4++;
            firstSelected3=false;
          }
          document.ICD10form.ICD10Level4.options.length++;
          document.ICD10form.ICD10Level4.size++; 
          listNum4=level4ListNums[iLevel4];
          document.ICD10form.ICD10Level4.options[jList4].text=level4ICD10[iLevel4];
          document.ICD10form.ICD10Level4.options[jList4].value=listNum4;
          if (allLevel4.indexOf(listNum4) != -1)
          {
/*      alert("listNum4="+listNum4+"< is contained in allLevel4="+allLevel4+"<");   */ 
            document.ICD10form.ICD10Level4.options[jList4].selected=true;
          }
          else
          {
/*      alert("listNum4="+listNum4+"< is NOT contained in allLevel4="+allLevel4+"<"); */  
            document.ICD10form.ICD10Level4.options[jList4].selected=false;
          }
          jList4++;
        }
      }
    }
  }
  if (noLevel3)
  {
    document.ICD10form.ICD10Level4.style.visibility="hidden";
    document.ICD10form.ICD10Level4.disabled=true;
  }
/*      alert("Leaving buildLevel4()");   */ 
  clickLevel4();
}

function clickLevel4()
{
  allLevel4="";
  allCauses4="";
  for (iLevel4 = 0; iLevel4 < document.ICD10form.ICD10Level4.options.length; iLevel4++)
  {
    if (document.ICD10form.ICD10Level4.options[iLevel4].selected)
    {
      allLevel4=allLevel4+document.ICD10form.ICD10Level4.options[iLevel4].value;
      if (document.ICD10form.ICD10Level4.options[iLevel4].value.substring(3,4) != "*")
      {
/* alert("document.ICD10form.ICD10Level4.options[iLevel4].value="+document.ICD10form.ICD10Level4.options[iLevel4].value
     +"document.ICD10form.ICD10Level4.options[iLevel4].value.substring(3,4)="+document.ICD10form.ICD10Level4.options[iLevel4].value.substring(3,3));
*/     
        allCauses4=allCauses4+" C"+document.ICD10form.ICD10Level4.options[iLevel4].value.substring(0,3);
      }
    }
  }
}

/* Based on type of rates to display (crude and age-adjusted OR age-specific, display different headings in sample
   report table at bottom of form.
*/
function tableHeadings()
{
/*  alert("tableHeadings"); */
  document.ICD10form.age.selectedIndex=-1;
  if (document.ICD10form.RATETYPE[1].checked)
  {
    Stat1.innerText="Age Group";
    Stat2.innerText="Expected Population of Age Group";
    Stat3.innerText="Number of Selected Deaths";
    Stat4.innerText="Actual Population of Age Group";
    Stat5.innerText="Death Rate Per 100,000 Population";
    SELAGETITLE.style.visibility="visible";
    SELAGECELL.style.visibility="visible";
    document.ICD10form.graphValue.length=2;
    document.ICD10form.graphValue.options[0].value="CRATE";
    document.ICD10form.graphValue.options[0].text="Age-specific Death Rate";
    document.ICD10form.graphValue.options[1].value="SELECTED_DEATHS";
    document.ICD10form.graphValue.options[1].text="Number of Deaths";
    document.ICD10form.graphValue.selectedIndex=0;
  }
  else
  {
    Stat1.innerText="Number of Selected Deaths";
    Stat2.innerText="Total Population";
    Stat3.innerText="Crude Death Rate Per 100,000 Population";
    Stat4.innerText="95% Confidence Interval";
    Stat5.innerText="Age-Adjusted Death Rate Per 100,000 Population";
    SELAGETITLE.style.visibility="hidden";
    SELAGECELL.style.visibility="hidden";
    document.ICD10form.graphValue.options.length=3;
    document.ICD10form.graphValue.options[0].value="ARATE";
    document.ICD10form.graphValue.options[0].text="Age-adjusted Death Rate";
    document.ICD10form.graphValue.options[1].value="CRATE";
    document.ICD10form.graphValue.options[1].text="Crude Death Rate";
    document.ICD10form.graphValue.options[2].value="SELECTED_DEATHS";
    document.ICD10form.graphValue.options[2].text="Number of Deaths";
    document.ICD10form.graphValue.selectedIndex=0;
  }
  
  ngraph=2;
  for (igraph = 1; igraph < (ngraph+1); igraph++)
  {
    document.ICD10form["graphValue"+igraph].length=document.ICD10form.graphValue.options.length;
    for (iopt = 0; iopt < (document.ICD10form.graphValue.options.length); iopt++)
    {
      document.ICD10form["graphValue"+igraph].options[iopt].value=document.ICD10form.graphValue.options[iopt].value;
      document.ICD10form["graphValue"+igraph].options[iopt].text=document.ICD10form.graphValue.options[iopt].text;
    }
  }
}  

/* From here on down, the functions were borrowed from ICD10formfunc.js */  
function showHideGraphicsVar(jgraph)
{
/* This is the number of graphics selections NOT including the one at the bottom of the page */
  ngraph=2;
/* This is the graphics selection at the bottom of the page */
  if (jgraph == 0)
  {
    thisGraph=document.ICD10form.graphics;
  }
  else
  
/* These are the other graphics selections NOT at the bottom of the page */
  {
    thisGraph=document.ICD10form["graphics"+jgraph];
  }
  
/* Allow choice of variable to plot if "ActiveX" is selected.   */
  if (thisGraph.selectedIndex == 1) 
  {
    document.getElementById("BChartTitle").style.visibility="visible";
    document.ICD10form.graphValue.style.visibility="visible";

/* graphics1 - graphics2 must match graphics.    */
    selIdx=thisGraph.selectedIndex
    document.ICD10form.graphics.selectedIndex=selIdx;
    for (igraph = 1; igraph < (ngraph+1); igraph++)
    {
/*     alert("selIdx="+selIdx+ " igraph="+igraph); */
      document.ICD10form["graphics"+igraph].selectedIndex = 1;
      document.getElementById("BChartTitle"+igraph).style.visibility="visible";
      document.ICD10form["graphValue"+igraph].style.visibility="visible";
    }
  }
  else

/* Hide graphics variable selection list if "None" is selected */  
  {
    document.getElementById("BChartTitle").style.visibility="hidden";
    document.ICD10form.graphValue.style.visibility="hidden";

/* graphics1 - graphics2 must match graphics.    */
    selIdx=thisGraph.selectedIndex
    document.ICD10form.graphics.selectedIndex=selIdx;
    for (igraph = 1; igraph < (ngraph+1); igraph++)
    {
      document.ICD10form["graphics"+igraph].selectedIndex = selIdx;
      document.getElementById("BChartTitle"+igraph).style.visibility="hidden";
      document.ICD10form["graphValue"+igraph].style.visibility="hidden";
      document.ICD10form["graphValue"+igraph].selectedIndex=0;
    }
  }
}

/* Select variable to plot in graphics if "ActiveX" is chosen for graphics */
function selectGraphicsVar(jgraph)
{

  ngraph=2;
/* This is the graphics selection at the bottom of the page */
  if (jgraph == 0)
  {
    thisValue=document.ICD10form.graphValue;
  }
  else
  
/* These are the other graphics selections NOT at the bottom of the page */
  {
    thisValue=document.ICD10form["graphValue"+jgraph];
  }
  
/* graphValue1 - graphValue2 must match graphValue.    */
    selIdxV=thisValue.selectedIndex
    document.ICD10form.graphValue.selectedIndex=selIdxV;
    for (igraph = 1; igraph < (ngraph+1); igraph++)
    {
      document.ICD10form["graphValue"+igraph].selectedIndex=selIdxV;
    }
}

/* Allow option to choose graphics unless firstclass = Neither (no primary drilldown)
   AND rowby2 = None AND rowby3 = None.  In this case, there would be no class variables.
*/   
function checkFirstClass()
{
/*    alert("Entering checkFirstClass()");   */ 
  if ((document.ICD10form.firstclass[2].checked == true ) && 
      (document.ICD10form.rowby2.selectedIndex == 0)      &&
      (document.ICD10form.rowby3.selectedIndex == 0))
  {
    setMenuforNOGraphics();
  }
  else
  {
    setMenuforGraphics();
  }
/*    alert("Entering checkFirstClass()");   */ 
}

function setMenuforGraphics()
{
  document.ICD10form.graphics.options.length=2;
  document.ICD10form.graphics.options[0].text="None";
  document.ICD10form.graphics.options[0].value="None";
  document.ICD10form.graphics.options[1].text="3-D Interactive";
  document.ICD10form.graphics.options[1].value="Java";
}

function setMenuforNOGraphics()
{
  document.ICD10form.graphics.options.length=1;
  document.ICD10form.graphics.options[0].text="Not Available";
  document.ICD10form.graphics.options[0].value="None";
}

/* Synchronise all radio button sets for output format (HTML, Excel, PDF) */
function resetRadios(radioset,index)
{
  theRadioName = radioset[index].name;
  theRadioValue = radioset[index].value;
  for (iset = 0; iset < (document.ICD10form.elements.length); iset++ )
  {
/*    alert("Element Number "+iset+" is of type="+document.ICD10form.elements[iset].type+
          "\n with name="+document.ICD10form.elements[iset].name+
          "\n and value="+document.ICD10form.elements[iset].value);
*/          
    if (document.ICD10form.elements[iset].type !=  "radio") continue;
    if ((document.ICD10form.elements[iset].name !=  theRadioName) &&
        (document.ICD10form.elements[iset].value  ==  theRadioValue))
    {
      document.ICD10form.elements[iset].checked = true;
    }
  }
}

/* If the entire state is selected, allow choice for primary sort variable (firstclass) to be
   county, death year, or neither.  If one or more counties or regions are selected, firstclass
   must be county.
*/   
function stateChecked()
{
/*    alert("Entering stateChecked()");   */ 
  if (document.ICD10form.allstate.checked == true)
  {
    selectClear(document.ICD10form.county);
  /*  selectClear(document.ICD10form.region);*/
    document.ICD10form.firstclass[0].disabled = false;
    document.ICD10form.firstclass[1].disabled = false;
    document.ICD10form.firstclass[2].disabled = false;
  }
  else
  {
    document.ICD10form.firstclass[0].disabled = true;
    document.ICD10form.firstclass[0].checked = true;
    document.ICD10form.firstclass[1].disabled = true;
    document.ICD10form.firstclass[2].disabled = true;
  }
/*    alert("Before checkFirstClass() call");   */ 
  checkFirstClass();
/*    alert("Leaving stateChecked()");     */ 
}

function clickCounty()
{
  if (document.ICD10form.allstate.checked == true)
  {
    alert('You have requested a records search for the entire state.  '
        + 'Any county selections you make will be ignored.  '
        + 'If you wish to select only individual counties, please deselect ' 
        + '"Entire State" and continue.');
    stateChecked();
  }
}

/* Clear selections in multiselect box (used by all multiselect boxes) */
function selectClear(selectBox)
{
  selectBox.selectedIndex = -1;
}

/* Validate sort variable controls */
function checkSorts()
{

  if ((document.ICD10form.firstclass[2].checked == true ) && 
      (document.ICD10form.rowby2.selectedIndex == 0)      &&
      (document.ICD10form.rowby3.selectedIndex == 0))
  {
    return true;
  }
  else
  {
    if ((document.ICD10form.rowby2.selectedIndex > 0) && 
        (document.ICD10form.rowby2.selectedIndex == document.ICD10form.rowby3.selectedIndex))
    {
      alert('The two drilldown levels you have selected are the same.  ' +
            'Please correct and resubmit.');
      document.ICD10form.rowby2.focus();
      return false;
    }     
       
    if (((document.ICD10form.firstclass[0].checked == true) && 
         (document.ICD10form.rowby2.value == "COUNTY"))
     || ((document.ICD10form.firstclass[1].checked == true) && 
         (document.ICD10form.rowby2.value == "DYEAR")))
    {
      alert('The first drilldown level you have selected is the same as the first sort column.  ' +
            'Please correct and resubmit.');
      document.ICD10form.rowby2.focus();
      return false;
    }
     
    if (((document.ICD10form.firstclass[0].checked == true) && 
         (document.ICD10form.rowby3.value == "COUNTY"))
     || ((document.ICD10form.firstclass[1].checked == true) && 
         (document.ICD10form.rowby3.value == "DYEAR")))
    {
       alert('The second drilldown level you have selected is the same as the first sort column.  ' +
             'Please correct and resubmit.');
       document.ICD10form.rowby3.focus();
       return false;
    }
     
    if ((document.ICD10form.rowby2.selectedIndex == 0)  &&
        (document.ICD10form.rowby3.selectedIndex > 0))
    {
      alert('To select a "Drill Level 3" value, you must also select a ' +
            '"Drill Level 2" value.  Please correct and resubmit.');
      document.ICD10form.rowby2.focus();
      return false;
    }
  }
  return true;
}

/* Final processing of query choices.  This is called by submit button before passing along to CGI application
   broker.exe.
*/   
function checkICD10Form()
{
  var counties = "";
 /* var regions = ""; */
  var genders = "";
  var race = "";
  var hispanics = "";
  var ages = "";
/* This Array gives the number of counties in each region.  The zeroth element will store the total selected */
  regNCounties = new Array(0,19,17,7,18,14); 

/* Check for inconsistencies in query choices. */
  if ((document.ICD10form.county.selectedIndex < 0) &&
    /*  (document.ICD10form.region.selectedIndex < 0) && */
      (document.ICD10form.allstate.checked == false))
  {
    alert('At least one county must be selected or "Entire State" must be checked.  ' +
          'Please correct and resubmit.');
    document.ICD10form.county.focus();
    return false;
  }
     
  if (document.ICD10form.startyear.selectedIndex > document.ICD10form.endyear.selectedIndex)
  {
    alert('Start year should be before or the same as the end year.  ' +
          'Please correct and resubmit.');
    document.ICD10form.startyear.focus();
    return false;
  }

  if ((allLevel1 == "") &&
      (allLevel2 == "") &&
      (allLevel3 == "") &&
      (allLevel4 == ""))
  {
    alert("You MUST Select at Least One Cause of Death Diagnosis");
    document.ICD10form.ICD10Level1.focus();
    return false;
  }
  else
  {
          allCauses=allCauses1+allCauses2+allCauses3+allCauses4;
/* alert("Call findOverlap()");           */
          findOverlap();
/* alert("Return from findOverlap() with causeOverlap="+causeOverlap); */
/* alert("document.ICD10form.rowby2.value="+document.ICD10form.rowby2.value+
      "\ndocument.ICD10form.rowby3.value="+document.ICD10form.rowby3.value);
*/      
          if ((causeOverlap == true) &&
              (document.ICD10form.rowby2.value != "CODE10") &&
              (document.ICD10form.rowby3.value != "CODE10") && 
              (document.ICD10form.rowby2.value != "DESCRIPTION") &&
              (document.ICD10form.rowby3.value != "DESCRIPTION"))
          {
            alert("You have selected overlapping causes of death,"+
                  " but you have chosen NEITHER Cause of Death Code(s) NOR Cause of Death Description as Drilldowns.  \n\n"+
                  "The numbers you get will not be meaningful, because they double count some deaths.\n\n"+
                  "Please modify your selections for either cause of death or drilldowns or both.")
            document.ICD10form.ICD10Level1.focus();
            return false;
          }
          
          document.ICD10form.completetypes.value="COMPLETETYPES";
          if (((document.ICD10form.rowby2.value == "CODE10") &&
               (document.ICD10form.rowby3.value == "DESCRIPTION")) || 
              ((document.ICD10form.rowby2.value == "DESCRIPTION") &&
               (document.ICD10form.rowby3.value == "CODE10")))
          {
            document.ICD10form.completetypes.value="";
          }
          
 /*   alert("allLevel1="+allLevel1+"<\n" +
          "allLevel2="+allLevel2+"<\n" +
          "allLevel3="+allLevel3+"<\n" +
          "allLevel4="+allLevel4+"<\n" +
          "allCauses1="+allCauses1+"<\n" +
          "allCauses2="+allCauses2+"<\n" +
          "allCauses3="+allCauses3+"<\n" +
          "allCauses4="+allCauses4+"<\n" +
          "allCauses="+allCauses+"<\n" +
          "Looks OK.");
 */         
  }
  
     
  if (document.ICD10form.allstate.checked == true)
  {
    counties = "Entire State (All Counties)";
   /* regions = "Entire State (All Regions)"; */
  }
  
/* Process single select box for gender */
  if (document.ICD10form.gender.selectedIndex < 0)
  {
    genders = "None";
  }
  else
  {
    genders = document.ICD10form.gender.options[document.ICD10form.gender.selectedIndex].text;
  }

/* Process multiselect box for counties */
  if (document.ICD10form.county.selectedIndex >= 0)
  { 
    for (var i=0; i < document.ICD10form.county.options.length; i++)
    {
      if (document.ICD10form.county.options[i].selected == true)
      {
        if (counties.length > 0) counties = counties + ", " + document.ICD10form.county.options[i].text;
        else counties = counties + document.ICD10form.county.options[i].text;
      }
    }
  }
  else 
/* Process multiselect box for regions */
 /* { 
    for (var i=0; i < document.ICD10form.region.options.length; i++)
    {
      if (document.ICD10form.region.options[i].selected == true)
      {
        regNCounties[0]=regNCounties[0]+regNCounties[i+1];
        if (regions.length > 0) regions = regions + ", " + document.ICD10form.region.options[i].text;
        else regions = regions + document.ICD10form.region.options[i].text;
      }
    }
  } */

/* Process multiselect box for race */
  if (document.ICD10form.race.selectedIndex < 0)
  {
    race = "None";
  }
  else
  {
    for (var i=0; i < document.ICD10form.race.options.length; i++)
    {
      if (document.ICD10form.race.options[i].selected == true)
      {
        if (race.length > 0) race = race + ", " + document.ICD10form.race.options[i].text;
        else race = race + document.ICD10form.race.options[i].text;
      }
    }
  }

/* Process multiselect box for ethnicity */
  if (document.ICD10form.hispanic.selectedIndex < 0)
  {
    hispanics = "None";
  }
  else
  {
    for (var i=0; i < document.ICD10form.hispanic.options.length; i++)
    {
       if (document.ICD10form.hispanic.options[i].selected == true)
       {
         if (hispanics.length > 0) hispanics = hispanics + ", " + document.ICD10form.hispanic.options[i].text;
         else hispanics = hispanics + document.ICD10form.hispanic.options[i].text;
       }
    }
  }

/* Process multiselect box for ages, but only if age-specific death rate is chosen. */
  if (document.ICD10form.RATETYPE[1].checked == true)
  { 
    if (document.ICD10form.age.selectedIndex >= 0)
    { 
      for (var i=0; i < document.ICD10form.age.options.length; i++)
      {
        if (document.ICD10form.age.options[i].selected == true)
        {
          if (ages.length > 0) ages = ages + ' Q' + document.ICD10form.age.options[i].text + 'Q';
          else ages = 'Q' + document.ICD10form.age.options[i].text + 'Q';
        }
      }
    }
    
/* If NO ages are chosen, put ALL age groups in variable ages -> hidden control agetext.  This is used for graphics. */    
    else
    { 
      for (var i=0; i < document.ICD10form.age.options.length; i++)
      {
          if (ages.length > 0) ages = ages + ' Q' + document.ICD10form.age.options[i].text + 'Q';
          else ages = 'Q' + document.ICD10form.age.options[i].text + 'Q';
      }
    }
  }
  
     
  document.ICD10form.countytext.value = counties;
 /* document.ICD10form.regiontext.value = regions;*/
  document.ICD10form.regNCounty.value = regNCounties[0];
  document.ICD10form.allLevel1.value = allLevel1;
  document.ICD10form.allLevel2.value = allLevel2;
  document.ICD10form.allLevel3.value = allLevel3;
  document.ICD10form.allLevel4.value = allLevel4;
  document.ICD10form.allCauses.value = allCauses;
  document.ICD10form.causeOverlap.value = causeOverlap;
  document.ICD10form.gendertext.value = genders;
  document.ICD10form.racetext.value = race;
  document.ICD10form.hispanictext.value = hispanics;
  document.ICD10form.agetext.value = ages;
  
  for (isel = 0; isel < 3; ++isel)
  {
    document.ICD10form.firstclass[isel].disabled = false;
  }
   
  document.ICD10form.submit();
}

function findOverlap()
{
/* alert("allCauses="+allCauses); */
  causeOverlap=false;
/* Parse lists of causes at each level */
  eachCause1=allCauses1.substring(1).split(" ");  
  eachCause2=allCauses2.substring(1).split(" ");  
  eachCause3=allCauses3.substring(1).split(" ");  
  eachCause4=allCauses4.substring(1).split(" ");
/* alert("eachCause1="+eachCause1+
    "\neachCause2="+eachCause2+ 
    "\neachCause3="+eachCause3+ 
    "\neachCause4="+eachCause4); 
*/    

/* "All Causes" overlaps any other cause */
/* alert("Check All Causes"); */
  if ((eachCause1[0]=="C000") && (allCauses.length > 5))
  {
    causeOverlap=true;
    return true;
  }
  
/* alert("Check level4 Causes"); */
/* Loop over level4 selected causes and check if immediate superset causes are also selected */
  for (iCause4 = 0; iCause4 < eachCause4.length; iCause4++)
  {
    if (eachCause4[iCause4].length < 3)
    {
/*      alert("Short eachCause4["+iCause+"]="+eachCause4[iCause4]); */
      continue;
    }
    inList=4;
    iList4=(level4ListNums.toString()).indexOf(eachCause4[iCause4].substring(1,4));
    if (iList4 == -1)
    {      
      inList=3;
      iList4=(level3ListNums.toString()).indexOf(eachCause4[iCause4].substring(1,4));
    }
/* alert("inList="+inList+" and iList4 before divide="+iList4);    */
    if (iList4 == -1)
    {
      alert("ERROR! Cause "+eachCause4[iCause4]+" NOT in level4ListNums NOR level3ListNums"); 
      return false;
    }
    iList4=iList4/5;
/* alert("iList4 after divide="+iList4);    */

/*    for (iList4 = 0; iList4 < level4ICD10.length; iList4++)
    {
alert("Testing eachCause4["+iCause4+"] =? level4ICD10["+iList4+"].substring(0,3)\n"+
      eachCause4[iCause4].substring(1,4) +"=?"+ level4ICD10[iList4].substring(0,3));
      
      if (eachCause4[iCause4].substring(1,4) == level4ICD10[iList4].substring(0,3))
      {
*/
      
        if (inList == 4)
        {
          upOne=level3level4[iList4];
        }
        else
        {
          upOne=level2level3[iList4];
        }
/* alert("upOne="+upOne);        */
        
        if (allCauses.indexOf(upOne) != -1)
        {
          causeOverlap=true;
/* alert("Overlap Found for level4 cause >"+eachCause4[iCause4]+"< and level3 cause >C"+upOne+"<");         */
          return true;          
        }
        
        
/*  Otherwise, add immediate superset cause to level3 causes to check. */
        else
        {
/* alert("NO Overlap Found for level4 cause >"+eachCause4[iCause4]+"< and level3 cause >C"+upOne+"<");          */
          oldlength=eachCause3.length;
          eachCause3.length++;
          eachCause3[oldlength]="C"+upOne;
        }
/*      } 
    }    */ 
  }
  
/* alert("Check level3 Causes"); */
/* Loop over level3 selected causes and check if immediate superset causes are also selected */
  for (iCause3 = 0; iCause3 < eachCause3.length; iCause3++)
  {
    if (eachCause3[iCause3].length < 3)
    {
/*      alert("Short eachCause3["+iCause3+"]="+eachCause3[iCause3]); */
      continue;
    }
    inList=3;
    iList3=(level3ListNums.toString()).indexOf(eachCause3[iCause3].substring(1,4));
    if (iList3 == -1)
    {
      inList=2;
      iList3=(level2ListNums.toString()).indexOf(eachCause3[iCause3].substring(1,4));
    }
/* alert("inList="+inList+" and iList3 before divide="+iList3);    */
    if (iList3 == -1)
    {
      alert("ERROR! Cause "+eachCause3[iCause3]+" NOT in level3ListNums NOR level2ListNums");
      return false;
    }
    iList3=iList3/5;
/* alert("iList3 after divide="+iList3);    */

/*    for (iList3 = 0; iList3 < level3ICD10.length; iList3++)
    {
alert("Testing eachCause3["+iCause3+"] =? level3ICD10["+iList3+"].substring(0,3)\n"+
      eachCause3[iCause3].substring(1,4) +"=?"+ level3ICD10[iList3].substring(0,3));
      
      if (eachCause3[iCause3].substring(1,4) == level3ICD10[iList3].substring(0,3))
      {
*/      
      
        if (inList == 3)
        {
          upOne=level2level3[iList3];
        }
        else
        {
          upOne=level1level2[iList3];
        }
/* alert("upOne="+upOne);        */
        
        if (allCauses.indexOf(upOne) != -1)
        {
          causeOverlap=true;
/* alert("Overlap Found for level3 cause >"+eachCause3[iCause3]+"< and level2 cause >C"+upOne+"<");          */
          return true;
        }
        
/*  Otherwise, add immediate superset cause to level2 causes to check. */
        else
        {
/* alert("NO Overlap Found for level3 cause >"+eachCause3[iCause3]+"< and level2 cause >C"+upOne+"<");          */
          oldlength=eachCause2.length;
          eachCause2.length++;
          eachCause2[oldlength]="C"+upOne;
        }
/*      }
    } */
  }
  
/* alert("Check level2 Causes"); */
/* alert("level2ListNums=>"+level2ListNums+"<"); */
/* Loop over level2 selected causes and check if immediate superset causes are also selected */
  for (iCause2 = 0; iCause2 < eachCause2.length; iCause2++)
  {
    if (eachCause2[iCause2].length < 3)
    {
/*      alert("Short eachCause2["+iCause2+"]="+eachCause2[iCause2]); */
      continue;
    }
    inList=2;    
    iList2=(level2ListNums.toString()).indexOf(eachCause2[iCause2].substring(1,4));
    if (iList2 == -1)
    {
      inList=1;
      iList2=(level1ListNums.toString()).indexOf(eachCause2[iCause2].substring(1,4));
    }
/* alert("inList="+inList+" and iList2 before divide="+iList2);    */
    if (iList2 == -1)
    {
      alert("ERROR! Cause "+eachCause2[iCause2]+" NOT in level2ListNums NOR level1ListNums");
      return false;
    }
    iList2=iList2/5;
/* alert("iList2 after divide="+iList2);    */

/*    for (iList2 = 0; iList2 < level2ICD10.length; iList2++)
    {
alert("Testing eachCause2["+iCause2+"] =? level2ICD10["+iList2+"].substring(0,3)\n"+
      eachCause2[iCause2].substring(1,4) +"=?"+ level2ICD10[iList2].substring(0,3));
      
      if (eachCause2[iCause2].substring(1,4) == level2ICD10[iList2].substring(0,3))
      {
*/
      
        if (inList == 2)
        {
          upOne=level1level2[iList2];
        }
        else
        {
/*          alert("Cause "+eachCause2[iCause2]+" NOT in level2ListNums"); */
          upOne="XXX";
        }
/* alert("upOne="+upOne);        */
        
        if (allCauses.indexOf(upOne) != -1)
        {
          causeOverlap=true;
/* alert("Overlap Found for level2 cause >"+eachCause2[iCause2]+"< and level1 cause >C"+upOne+"<");          */
          return true;
        }
        
/*  Otherwise, add immediate superset cause to level1 causes to check. */
        else
        {
/* alert("NO Overlap Found for level2 cause >"+eachCause2[iCause2]+"< and level1 cause >C"+upOne+"<");          */
        }
/*      }
    } */
  }
/* alert("No overlapping causes found");  */
}
/*      alert("Mark this bottom"); */
