var fp_rteXmlDoc_;


function fp_rteReadXML() {
  var filename = "routes.xml";
  if(!fp_IE_) {
    fp_rteXmlDoc_ = document.implementation.createDocument("", "", null);
    fp_rteXmlDoc_.onload = fp_rteProcessXML;
    fp_rteXmlDoc_.load(filename);
  }
  else {
    fp_rteXmlDoc_ = new ActiveXObject("Microsoft.XMLDOM");
    fp_rteXmlDoc_.async = false;
    fp_rteXmlDoc_.load(filename);
    fp_rteProcessXML();
  }
}

function fp_rteProcessXML() {
  fp_rteArr_ = new Array(); //Object();
  fp_rteLookup_ = new Object();
  var topNode = fp_rteXmlDoc_.documentElement;
  //alert("topNode "+topNode);

  var arrIndex = 0;
  for (var ri = 0; ri < topNode.childNodes.length; ri++) {
    var riNode = topNode.childNodes.item(ri);
    if(riNode.nodeName == "route") {
      var provID = riNode.getAttribute("provider");
      var rteID = riNode.getAttribute("id");
      fp_rteArr_[arrIndex] = new fp_routeObj(provID, rteID, riNode.getAttribute("name"));
      var subArr = new Object();
      var dirArr = new Array();
      for (var si = 0; si < riNode.childNodes.length; si++) { // process subroutes
        var siNode = riNode.childNodes.item(si);
        if(siNode.nodeName == "sub" && siNode.childNodes != null & siNode.childNodes.length > 0) {
          var subID = siNode.getAttribute("id");
          var mode = siNode.getAttribute("mode");
          var days = siNode.childNodes[0].nodeValue;
          subArr[subID] = new fp_subrouteObj(subID, siNode.getAttribute("name"), mode, days.toLowerCase());
          if(fp_rteArr_[arrIndex].mode == "") fp_rteArr_[arrIndex].mode = mode;
          else if(fp_rteArr_[arrIndex].mode != mode) fp_rteArr_[arrIndex].mode = "multi";
          var dirStr = subID.split('_')[0];
          dirArr[dirStr] = fp_rteMergeDayStrings(days, (dirStr in dirArr) ? dirArr[dirStr]: "");
        }
      }
      fp_rteArr_[arrIndex].setSubArray(subArr);
      fp_rteArr_[arrIndex].setDirArray(dirArr);
      fp_rteLookup_[provID+rteID] = fp_rteArr_[arrIndex];
      //fp_dbg("loaded "+(provID+rteID));
      arrIndex++;
    }
  }
  
  //populateRouteList();
  //rd_processedRoutes();
  fp_routesLoaded();
}

function fp_rteMergeDayStrings(str1, str2) {
  var merged = "";
  var s1lc = str1.toLowerCase();
  var s2lc = str2.toLowerCase();
  if(s1lc.indexOf("w") != -1 || s2lc.indexOf("w") != -1) merged += (merged.length > 0 ? "," : "")+"W";
  if(s1lc.indexOf("sat") != -1 || s2lc.indexOf("sat") != -1) merged += (merged.length > 0 ? "," : "")+"Sat";
  if(s1lc.indexOf("sun") != -1 || s2lc.indexOf("sun") != -1) merged += (merged.length > 0 ? "," : "")+"Sun";
  //alert(str1+" | "+str2+" | "+merged);
  return merged;
}
