var bZipInCoverage = false;
var oActiveRegion = null;

var oDelaware =
  {
    id : "Delaware",
    name: "Delaware",
    code: "DE",
    zip5 : ["19701","19702","19703","19706","19707","19708","19709","19710","19711","19712","19713","19714","19715","19716","19717","19718","19720","19721","19725","19726","19730","19731","19732","19733","19734","19735","19736","19800","19801","19802","19803","19804","19805","19806","19807","19808","19809","19810","19850","19880","19884","19885","19886","19887","19888","19889","19890","19891","19892","19893","19894","19895","19896","19897","19898","19899","19901","19902","19903","19904","19905","19906","19930","19931","19933","19934","19936","19938","19939","19940","19941","19942","19943","19944","19945","19946","19947","19950","19951","19952","19953","19954","19955","19956","19958","19960","19961","19962","19963","19964","19966","19967","19968","19969","19970","19971","19973","19975","19977","19979","19980"],
    zip3 : [],
    products: []
  };

var oMarylandAll =
  {
    id : "Maryland All",
    name: "Maryland All",
    code: "MD",
    zip5 : [],
    zip3 : ["206","207","208","209","210","211","212","213","214","215","216","217","218","219"],
    products: []
  };

var oMarylandPGandMC =
  {
    id : "Maryland PG and MC",
    name: "Maryland PG and MC",
    code: "MD",
    zip5 : ["20623","20706","20715","20720","20731","20742","20753","20771","20780","20785","20797","20815","20825","20838","20857","20862","20875","20880","20889","20902","20907","20914","20997","20607","20608","20613","20697","20703","20704","20705","20707","20708","20709","20710","20712","20716","20717","20718","20719","20721","20722","20725","20726","20735","20737","20738","20740","20741","20743","20744","20745","20746","20748","20749","20750","20752","20757","20762","20768","20769","20770","20772","20773","20774","20775","20781","20782","20783","20784","20787","20788","20789","20790","20791","20799","20812","20813","20814","20816","20817","20818","20824","20827","20830","20832","20833","20837","20839","20841","20842","20847","20849","20850","20851","20852","20853","20854","20855","20858","20859","20860","20861","20866","20868","20871","20872","20874","20876","20877","20878","20879","20882","20884","20885","20886","20891","20892","20894","20895","20896","20898","20899","20900","20901","20903","20904","20905","20906","20908","20910","20911","20912","20913","20915","20916","20918","20990","20747","20848","20897","20792","20800","20883","20890"],
    zip3 : [],
    products: []
  };

var oVirginia =
  {
    id : "Virginia",
    name: "Virginia",
    code: "VA",
    zip5 : ["22009","22015","22027","22030","22031","22032","22036","22037","22038","22039","22040","22041","22043","22044","22046","22047","22060","22067","22081","22082","22101","22102","22116","22121","22156","22161","22183","22192","22203","22207","22217","22219","22222","22223","22225","22226","22227","22229","22230","22234","22240","22241","22242","22243","22244","22245","22246","22300","22301","22302","22303","22304","22305","22306","22307","22308","22309","22310","22311","22312","22313","22314","22315","22320","22321","22331","22333","22334","22336","22103","22106","22109","22118","22119","22120","22122","22124","22125","22151","22152","22153","22158","22159","22160","22180","22181","22182","22184","22185","22191","22199","22201","22202","22204","22205","22206","22209","22210","22211","22214","22215","22216","22218","22003","22034","22042","22079","22150","22213"],
    zip3 : [],
    products: []
  };

var oWashingtonDC =
  {
    id : "Washington DC",
    name: "Washington DC",
    code: "DC",
    zip5 : ["20001","20002","20004","20005","20006","20007","20008","20009","20010","20011","20019","20035","20044","20052","20069","20078","20097","20210","20218","20226","20235","20251","20292","20305","20306","20310","20314","20315","20317","20318","20319","20324","20330","20340","20372","20390","20398","20416","20425","20435","20447","20470","20506","20525","20535","20543","20546","20547","20548","20549","20550","20551","20552","20553","20555","20557","20571","20581","20597","20012","20013","20015","20016","20017","20018","20020","20024","20026","20029","20030","20032","20033","20036","20037","20038","20039","20040","20042","20043","20045","20046","20047","20048","20049","20050","20051","20053","20055","20056","20057","20058","20059","20060","20062","20063","20064","20065","20066","20067","20068","20070","20071","20073","20074","20075","20076","20077","20080","20081","20082","20084","20088","20090","20091","20201","20202","20203","20204","20206","20207","20208","20211","20212","20213","20214","20215","20216","20217","20219","20220","20221","20222","20223","20224","20225","20227","20228","20229","20230","20231","20232","20233","20239","20240","20241","20242","20244","20245","20250","20260","20261","20265","20266","20268","20270","20277","20301","20332","20333","20334","20336","20337","20338","20350","20360","20361","20362","20363","20370","20371","20373","20374","20375","20376","20380","20388","20389","20391","20392","20393","20394","20395","20396","20397","20401","20402","20403","20404","20405","20406","20407","20409","20410","20411","20412","20413","20414","20415","20418","20419","20420","20421","20422","20423","20424","20427","20428","20429","20430","20431","20433","20434","20436","20437","20439","20440","20441","20442","20444","20451","20453","20456","20460","20463","20468","20469","20472","20500","20501","20502","20503","20504","20505","20507","20510","20515","20520","20521","20523","20524","20526","20527","20530","20531","20532","20533","20534","20536","20537","20538","20539","20540","20541","20542","20544","20558","20559","20560","20565","20566","20570","20572","20573","20575","20576","20577","20579","20580","20585","20586","20590","20591","20593","20594","20595","20599","20003","20061","20307","20408","20554","20000","20041","20098","20099","20205","20209","20237","20238","20254","20262","20289","20299","20303","20331","20335","20426","20508","20522","20578"],
    zip3 : [],
    products: []
  };

var oRegions = [oDelaware, oMarylandAll, oMarylandPGandMC, oVirginia, oWashingtonDC];

var oProducts = new Array(55);

function loadProducts() {
  oProducts =
    [
      document.products.BCD, document.products.BCM, document.products.BPD,
      document.products.BPM, document.products.BPV, document.products.MU,
      document.products.MUD, document.products.KBD, document.products.KBM,
      document.products.KBV, document.products.KHD, document.products.KHM,
      document.products.KM,  document.products.KMD, document.products.MG,
      document.products.MGD, document.products.SUD, document.products.SUV,
      document.products.CT,  document.products.JD,  document.products.ST,
      document.products.TA,  document.products.TDE, document.products.TDV,
      document.products.TE,  document.products.DV,  document.products.JVM,
      document.products.JVD, document.products.JVV, document.products.LHD,
      document.products.LHM, document.products.LBD, document.products.LBM,
      document.products.LBV, document.products.KLV, document.products.JDN,
      document.products.MRX, document.products.VRX, document.products.CDD,
      document.products.CDM, document.products.CDV, document.products.KDV,
      document.products.CHD, document.products.CHM, document.products.CHV,
      document.products.KHV, document.products.AMB, document.products.BOD,
      document.products.JDM, document.products.JDP, document.products.JDD,
      document.products.JDV, document.products.MRX, document.products.OHD,
      document.products.MGM
    ];

  oDelaware.products =
    [
      document.products.MUD, document.products.KMD, document.products.MGD,
      document.products.TA, document.products.TDE, document.products.MRX
    ];

  oWashingtonDC.products =
    [
      document.products.BCD, document.products.BPD, document.products.KBD,
      document.products.KHD, document.products.SUD, document.products.TA,
      document.products.TDV, document.products.JVD, document.products.LHD,
      document.products.LBD, document.products.CDD, document.products.CHD,
      document.products.JDN, document.products.MRX, document.products.BOD,
      document.products.JDD, document.products.MRX, document.products.OHD
    ];

  oMarylandAll.products =
    [
      document.products.BCM, document.products.MU, document.products.KHM,
      document.products.KM, document.products.MG, document.products.CT,
      document.products.DV, document.products.JD, document.products.ST,
      document.products.TA, document.products.TE, document.products.JVM,
      document.products.LHM, document.products.LBM, document.products.JDN,
      document.products.CDM, document.products.CHM, document.products.BPM,
      document.products.MRX, document.products.AMB, document.products.JDM,
      document.products.JDP
    ];

  oMarylandPGandMC.products =
    [
      document.products.BCM, document.products.BPM, document.products.MU,
      document.products.KBM, document.products.KHM, document.products.KM,
      document.products.MG, document.products.CT, document.products.DV,
      document.products.JD, document.products.ST, document.products.TA,
      document.products.JVM, document.products.JDN, document.products.CDM,
      document.products.CHM, document.products.MRX, document.products.AMB,
      document.products.MGM
    ];

  oVirginia.products =
    [
      document.products.BPV, document.products.KBV, document.products.SUV,
      document.products.TA, document.products.TDV, document.products.JVV,
      document.products.LBV, document.products.KLV, document.products.VRX,
      document.products.CDV, document.products.KDV, document.products.CHV,
      document.products.KHV, document.products.JDV
    ];
}

function disableAllProducts() {
  for (i = 0; i < oProducts.length; i++) {
    if(oProducts[i]) {
      oProducts[i].checked = false;
      oProducts[i].disabled = true;
    }
  }
}  

function enableProducts(list) {
  for (k = 0; k < list.length; k++) {
    if(list[k]) {
      list[k].disabled = false;
    }
  }
}

function validateZipCode(zipcode)
{
  if (null == zipcode) {
    alert("You must enter a valid zip code");
    return false;
  }
  sZip = new String(zipcode);
  if ((sZip.length == 0) || isNaN(parseInt(sZip, 10)) ||
        (sZip.length != (new String("" + parseInt(sZip, 10))).length) ||
        sZip.length < 3) {
    alert("You must enter a valid zip code");
    return false;
  }
  return true;
}

function displayMatchProducts(zipcode) {  
  bZipInCoverage = false;
  disableAllProducts();
  if (!validateZipCode(zipcode)) {
    return;
  }
  sZip3 = "";
  sZip5 = "";
  if (5 == sZip.length) {
    sZip5 = new String(zipcode);
    sZip3 = sZip5.substring(0, 3);
  } else if (sZip.length >= 3) {
    sZip3 = (new String(zipcode)).substring(0, 3);
    sZip5 = null;
  }

  oActiveRegion = null;

  for (i = 0; i < oRegions.length; i++) {
    bRegionPassed = false;
    var oRegion = oRegions[i];
    for (j = 0; ((j < oRegion.zip3.length) && !bRegionPassed); j++) {
      if (sZip3 == oRegion.zip3[j]) {
        oActiveRegion = oRegion;
        document.products.state.value = oRegion.code;
        enableProducts(oRegion.products);
        bRegionPassed = true;
        bZipInCoverage = true;
      }
    }

    if (!bRegionPassed && (sZip5 != null)) {
      for (j = 0; ((j < oRegion.zip5.length) && !bRegionPassed); j++) {
        if (sZip5 == oRegion.zip5[j]) {
          oActiveRegion = oRegion;
          document.products.state.value = oRegion.code;
          enableProducts(oRegion.products);
          bRegionPassed = true;
          bZipInCoverage = true;
        }
     }
    }
  }
}

function checkState() {
  if ((null != oActiveRegion) && (document.products.state.value != oActiveRegion.code)) {
    alert(
      "Your zip code, if entered properly, indicates that you reside in the " + oActiveRegion.code + " area. \n" +
      "It does not correspond to the selected " + document.products.state.value + " state. Please correct"
    );
  }
}


//Function to disable the regular Medigap product for PG and Montgomery County zips
function disableMedigap(state, zipcode) {
   pgCountyZips = new Array("20623","20706","20715","20720","20731","20742","20753",
                            "20771","20780","20785","20797","20815","20825","20838",
                            "20857","20862","20875","20880","20889","20902","20907",
                            "20914","20997","20607","20608","20613","20697","20703",
                            "20704","20705","20707","20708","20709","20710","20712",
                            "20716","20717","20718","20719","20721","20722","20725",
                            "20726","20735","20737","20738","20740","20741","20743",
                            "20744","20745","20746","20748","20749","20750","20752",
                            "20757","20762","20768","20769","20770","20772","20773",
                            "20774","20775","20781","20782","20783","20784","20787",
                            "20788","20789","20790","20791","20799","20812","20813",
                            "20814","20816","20817","20818","20824","20827","20830",
                            "20832","20833","20837","20839","20841","20842","20847",
                            "20849","20850","20851","20852","20853","20854","20855",
                            "20858","20859","20860","20861","20866","20868","20871",
                            "20872","20874","20876","20877","20878","20879","20882",
                            "20884","20885","20886","20891","20892","20894","20895",
                            "20896","20898","20899","20900","20901","20903","20904",
                            "20905","20906","20908","20910","20911","20912","20913",
                            "20915","20916","20918","20990","20747","20848","20897",
                            "20792","20800","20883","20890");
   if (state == "MD"){
      for (i = 0; i < pgCountyZips.length; i++) {
         if (zipcode == pgCountyZips[i]) {
            document.products.MG.checked = false;
            document.products.MG.disabled = true;
    	    break;              
         }    
      }
   }           
}  
