title: Uncaught TypeError: Cannot read property 'options' of null
body: <p>I cannot figure out why I keep getting this error:
  Uncaught TypeError: Cannot read property 'options' of null
  getFSREPlist
  (anonymous function)</p>
  
  <p>The error is referencing this line of code (21):</p>
  
  <pre><code>document.getElementById(elementidupdate).options.length=0;
  </code></pre>
  
  <p>What is weird is that it was working prior to this new google map api I just put on. Also, it is pulling the country code "1" and putting it in the drop down, but not the province code "19".</p>
  
  <p>Here is the on page script:</p>
  
  <pre><code>getFSREPlist('1', 'fsrep-search-province', 'CountryID', '19');getFSREPlist('19', 'fsrep-search-city', 'ProvinceID', '3');           request.send(null);
  </code></pre>
  
  <p>Here is the full file:</p>
  
  <pre><code>   function sack(file) {
      this.xmlhttp = null;
      this.resetData = function () {
          this.method = "POST";
          this.queryStringSeparator = "?";
          this.argumentSeparator = "&amp;";
          this.URLString = "";
          this.encodeURIString = true;
          this.execute = false;
          this.element = null;
          this.elementObj = null;
          this.requestFile = file;
          this.vars = new Object();
          this.responseStatus = new Array(2);
      };
      this.resetFunctions = function () {
          this.onLoading = function () {};
          this.onLoaded = function () {};
          this.onInteractive = function () {};
          this.onCompletion = function () {};
          this.onError = function () {};
          this.onFail = function () {};
      };
      this.reset = function () {
          this.resetFunctions();
          this.resetData();
      };
      this.createAJAX = function () {
          try {
              this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
          } catch (e1) {
              try {
                  this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
              } catch (e2) {
                  this.xmlhttp = null;
              }
          }
          if (!this.xmlhttp) {
              if (typeof XMLHttpRequest != "undefined") {
                  this.xmlhttp = new XMLHttpRequest();
              } else {
                  this.failed = true;
              }
          }
      };
      this.setVar = function (name, value) {
          this.vars[name] = Array(value, false);
      };
      this.encVar = function (name, value, returnvars) {
          if (true == returnvars) {
              return Array(encodeURIComponent(name), encodeURIComponent(value));
          } else {
              this.vars[encodeURIComponent(name)] = Array(encodeURIComponent(value), true);
          }
      }
      this.processURLString = function (string, encode) {
          encoded = encodeURIComponent(this.argumentSeparator);
          regexp = new RegExp(this.argumentSeparator + "|" + encoded);
          varArray = string.split(regexp);
          for (i = 0; i &lt; varArray.length; i++) {
              urlVars = varArray[i].split("=");
              if (true == encode) {
                  this.encVar(urlVars[0], urlVars[1]);
              } else {
                  this.setVar(urlVars[0], urlVars[1]);
              }
          }
      }
      this.createURLString = function (urlstring) {
          if (this.encodeURIString &amp;&amp; this.URLString.length) {
              this.processURLString(this.URLString, true);
          }
          if (urlstring) {
              if (this.URLString.length) {
                  this.URLString += this.argumentSeparator + urlstring;
              } else {
                  this.URLString = urlstring;
              }
          }
          this.setVar("rndval", new Date().getTime());
          urlstringtemp = new Array();
          for (key in this.vars) {
              if (false == this.vars[key][1] &amp;&amp; true == this.encodeURIString) {
                  encoded = this.encVar(key, this.vars[key][0], true);
                  delete this.vars[key];
                  this.vars[encoded[0]] = Array(encoded[1], true);
                  key = encoded[0];
              }
              urlstringtemp[urlstringtemp.length] = key + "=" + this.vars[key][0];
          }
          if (urlstring) {
              this.URLString += this.argumentSeparator + urlstringtemp.join(this.argumentSeparator);
          } else {
              this.URLString += urlstringtemp.join(this.argumentSeparator);
          }
      }
      this.runResponse = function () {
          eval(this.response);
      }
      this.runAJAX = function (urlstring) {
          if (this.failed) {
              this.onFail();
          } else {
              this.createURLString(urlstring);
              if (this.element) {
                  this.elementObj = document.getElementById(this.element);
              }
              if (this.xmlhttp) {
                  var self = this;
                  if (this.method == "GET") {
                      totalurlstring = this.requestFile + this.queryStringSeparator + this.URLString;
                      this.xmlhttp.open(this.method, totalurlstring, true);
                  } else {
                      this.xmlhttp.open(this.method, this.requestFile, true);
                      try {
                          this.xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
                      } catch (e) {}
                  }
                  this.xmlhttp.onreadystatechange = function () {
                      switch (self.xmlhttp.readyState) {
                          case 1:
                              self.onLoading();
                              break;
                          case 2:
                              self.onLoaded();
                              break;
                          case 3:
                              self.onInteractive();
                              break;
                          case 4:
                              self.response = self.xmlhttp.responseText;
                              self.responseXML = self.xmlhttp.responseXML;
                              self.responseStatus[0] = self.xmlhttp.status;
                              self.responseStatus[1] = self.xmlhttp.statusText;
                              if (self.execute) {
                                  self.runResponse();
                              }
                              if (self.elementObj) {
                                  elemNodeName = self.elementObj.nodeName;
                                  elemNodeName.toLowerCase();
                                  if (elemNodeName == "input" || elemNodeName == "select" || elemNodeName == "option" || elemNodeName == "textarea") {
                                      self.elementObj.value = self.response;
                                  } else {
                                      self.elementObj.innerHTML = self.response;
                                  }
                              }
                              if (self.responseStatus[0] == "200") {
                                  self.onCompletion();
                              } else {
                                  self.onError();
                              }
                              self.URLString = "";
                              break;
                      }
                  };
                  this.xmlhttp.send(this.URLString);
              }
          }
      };
      this.reset();
      this.createAJAX();
  }
  var ajax = new Array();
  
  function getFSREPlist(sel, elementidupdate, fsrepvariable, currentvalue) {
      if (sel == '[object]' || sel == '[object HTMLSelectElement]') {
          var FSREPID = sel.options[sel.selectedIndex].value;
      } else {
          var FSREPID = sel;
      }
      document.getElementById(elementidupdate).options.length = 0;
      var index = ajax.length;
      ajax[index] = new sack();
      ajax[index].requestFile = 'http://www.cabcot.com/wp-content/plugins/firestorm-real-estate-plugin/search.php?' + fsrepvariable + '=' + FSREPID + '&amp;cvalue=' + currentvalue;
      ajax[index].onCompletion = function () {
          ElementUpdate(index, elementidupdate)
      };
      ajax[index].runAJAX();
  }
  
  function ElementUpdate(index, elementidupdate) {
      var obj = document.getElementById(elementidupdate);
      eval(ajax[index].response);
  }
  </code></pre>