var DEBUG_FILTERS = 0;
var totalResults = 0;
var resultsPerPage = 15;
var minDisplay = 1;
var maxDisplay = minDisplay + resultsPerPage - 1;
var filterHandles = { 'departTimeSlider' : null,
		      'arriveTimeSlider' : null,
		      'totalTimeSlider'  : null,
		      'layoverSlider'    : null,
		      'taxiFareSlider'   : null,
		      'walkDistSlider'   : null,
		      'stopMaxSlider'    : null,
		      'fareSlider'       : null
};

function F_DEBUG(a_text) {
  if(DEBUG_FILTERS)
    console.log(a_text);
}

function showFirst() {
  minDisplay = 1;
  maxDisplay = resultsPerPage;
  $("#prev-results-link").hide();
}

function showMore() {
  if((minDisplay + resultsPerPage) < totalResults) {
    minDisplay += resultsPerPage;
    maxDisplay += resultsPerPage;
    $("#prev-results-link").show();
  } else {
    //minDisplay = 1;
    //maxDisplay = resultsPerPage;
  }
  applyFilters(1);
}

function showPrev() {
  if((minDisplay - resultsPerPage) < 1) {
    showFirst();
  } else {
    minDisplay -= resultsPerPage;
    maxDisplay -= resultsPerPage;
  }
  if(minDisplay == 1) {
    $("#prev-results-link").hide();
  }
  applyFilters(1);
}

function showHubs() {
  $("#hubplus").toggleClass("plus");
  $("#hubplus").toggleClass("minus");
  $("#hubfilter").toggle();
  $("#more-hubs").toggle();
}

function showAgencies() {
  $("#agencyplus").toggleClass("plus");
  $("#agencyplus").toggleClass("minus");
  $("#agencyfilter").toggle();
  $("#more-providers").toggle();
}

function selectAllAgencies() {
  $(".agencyfilter").each(function() { $(this).attr("checked", true); });
  applyFilters();
}
function clearAgencies() {
  $(".agencyfilter").each(function() { $(this).attr("checked", false); });
  applyFilters();
}

function selectAllHubs() {
  $(".hubfilter").each(function() { $(this).attr("checked", true); });
  applyFilters();
}
function clearHubs() {
  $(".hubfilter").each(function() { $(this).attr("checked", false); });
  applyFilters();
}

function showDiv(a_id) {
  $("#" + a_id).show();
}
function hideDiv(a_id) {
  $("#" + a_id).hide();
}

function timeHHMMToFTime(time_hhmm) {
  var time_min = timeHHMMToMin(time_hhmm);
  var mins = time_min % 60;
  var hours = Math.round((time_min - mins)/ 60,0);
  var ftime = (((hours % 12) == 0) ? "12" : hours % 12) + ":";
  mins = ((mins < 10) ? "0":"") + mins;
  ftime += mins;
  ftime += (hours > 11) ? "pm" : "am";
  return ftime;

}

function timeHHMMToFDuration(time_hhmm) {
  var time_min = timeHHMMToMin(time_hhmm);
  var mins = time_min % 60;
  var hours = Math.round((time_min - mins)/ 60,0);
  var ftime = "";
  if(hours > 0)
    ftime += hours + "h";
  mins = ((mins < 10) ? "0":"") + mins;
  ftime += mins + "m";
  return ftime;

}

function timeMinToFTime(time_min) {
  if(time_min < 0) 
    time_min += 1440;
  var mins = time_min % 60;
  var hours = Math.round((time_min - mins)/ 60,0);
  var ftime = (((hours % 12) == 0) ? "12" : hours % 12) + ":";
  mins = ((mins < 10) ? "0":"") + mins;
  ftime += mins;
  if((hours % 24) > 11)
    ftime += "pm";
  else
    ftime += "am";  
  return ftime;
}

function timeMinToFDuration(time_min) {
  var mins = time_min % 60;
  var hours = Math.round((time_min - mins)/ 60,0);
  var ftime = "";
  if(hours > 0)
    ftime += hours + "h";
  mins = ((mins < 10) ? "0":"") + mins;
  ftime += mins + "m";
  return ftime;
}

function timeHHMMToMin(time_hhmm) {
  var time_min = 60*((time_hhmm - (time_hhmm % 100)) / 100) + (time_hhmm % 100);
  return time_min;
}

function timeMinToHHMM(a_time) {
  var time_min = parseInt(a_time);
  if(time_min < 0) {  time_min += 1440; }
  if(time_min > 1440) { time_min -= 1440; }
  var mins = time_min % 60;
  var hours = (time_min - mins) / 60;
  var time_hhmm = 100*hours + mins;
  return time_hhmm;
}

function timeSubtractHHMM(time1, time2) {
  var min1 = timeHHMMToMin(time1);
  var min2 = timeHHMMToMin(time2);
  var newTime = min1 - min2;
  if(newTime < 0) {
    newTime += 1440;
  }
  return timeMinToHHMM(newTime);
}

function timeAddHHMM(time1, time2) {
  var min1 = timeHHMMToMin(time1);
  var min2 = timeHHMMToMin(time2);
  var newTime = min1 + min2;
  if(newTime > 1440) {
    newTime -= 1440;
  }
  return timeMinToHHMM(newTime);
}

function updateNumResults(amt) {
  /*
  $(".resultdiv").each(function() {
			 if($(this).css('display') != "none") {
			   amt++;
			 }
		       }); */
  if(amt == 0) {
    $("#noresults").css("display", "block");
  } else {
    $("#noresults").css("display", "none");
  }

  $("#numresults").html(parseInt(amt));
}

function getSliderMinMaxValues(sliderHandle) {
  var minVal = sliderHandle.slider('values',0);
  var maxVal = sliderHandle.slider('values',1);
  return [ minVal, maxVal ];
}

function getFilterSettings() {
  //var departtimemin = $("#departslider_depart").slider('values',0);
  //var departtimemax = $("#departslider_depart").slider('values',1);
  //var arrivetimemin = $(".timer").find("#departslider_arrive").slider('values',0);
  //var arrivetimemax = $(".timer").find("#departslider_arrive").slider('values',1);
  //var totaltimemax = $(".timer").find("#durationslider").slider('value');
  //var faremax = $(".timer").find("#fareslider").slider('value');
  //var layovermax = $(".timer").find("#layoverslider").slider('value');
  //var taxifaremax = $(".timer").find("#taxifareslider").slider('value');
  //var walkdistmax = $(".timer").find("#walkdistslider").slider('value');
  //var stopmax = $(".timer").find("#stopslider").slider('value');

  var departtimes = getSliderMinMaxValues(filterHandles.departTimeSlider);
  var arrivetimes = getSliderMinMaxValues(filterHandles.arriveTimeSlider);
  var layoverlengths = getSliderMinMaxValues(filterHandles.layoverSlider);

  var totaltimemax   = filterHandles.totalTimeSlider.slider('value');
  var f_totaltimemax = timeMinToFDuration(totaltimemax);
  var faremax        = filterHandles.fareSlider.slider('value');
  var taxifaremax    = filterHandles.taxiFareSlider.slider('value');
  var walkdistmax    = filterHandles.walkDistSlider.slider('value');
  var stopmax        = filterHandles.stopMaxSlider.slider('value');

  var layovermin = layoverlengths[0];
  var layovermax = layoverlengths[1];
  var f_departtimemin = timeMinToFTime(departtimes[0]);
  var f_departtimemax = timeMinToFTime(departtimes[1]);
  var f_arrivetimemin = timeMinToFTime(arrivetimes[0]);
  var f_arrivetimemax = timeMinToFTime(arrivetimes[1]);

  var mainModeActive = new Array();
  mainModeActive['walk'] = $("input#mode-walk-main").attr("checked");
  mainModeActive['bus']  = $("input#mode-bus-main").attr("checked");
  mainModeActive['metro']= $("input#mode-metro-main").attr("checked");
  mainModeActive['rail'] = $("input#mode-rail-main").attr("checked");
  mainModeActive['taxi'] = $("input#mode-taxi-main").attr("checked");
  mainModeActive['boat'] = $("input#mode-ferry-main").attr("checked");
  mainModeActive['limo'] = $("input#mode-limo-main").attr("checked");
  var originModeActive = new Array();
  originModeActive['walk']  = $("input#mode-walk-origin").attr("checked");
  originModeActive['bus']  = $("input#mode-bus-origin").attr("checked");
  originModeActive['metro']= $("input#mode-metro-origin").attr("checked");
  originModeActive['rail'] = $("input#mode-rail-origin").attr("checked");
  originModeActive['taxi'] = $("input#mode-taxi-origin").attr("checked") || $("input#get-ride-origin").attr("checked");
  originModeActive['boat'] = $("input#mode-ferry-origin").attr("checked");
  originModeActive['none'] = (!originModeActive['walk'] && !originModeActive['taxi']) || !filterControl.dtdOrigin;
  var destModeActive = new Array();
  destModeActive['walk']  = $("input#mode-walk-dest").attr("checked");
  destModeActive['metro']= $("input#mode-metro-dest").attr("checked");
  destModeActive['rail'] = $("input#mode-rail-dest").attr("checked");
  destModeActive['taxi'] = $("input#mode-taxi-dest").attr("checked") || $("input#get-ride-dest").attr("checked");
  destModeActive['boat'] = $("input#mode-ferry-dest").attr("checked");
  destModeActive['none'] = (!destModeActive['walk'] && !destModeActive['taxi']) || !filterControl.dtdDest;
  var agencyActive = new Array();
  $(".agencyfilter").each(function() {
			    var agency = $(this).attr("id");
			    agencyActive[agency] = $(this).attr("checked");
			  });
  var hubActive = new Array();
  $(".hubfilter").each(function() {
			    var hub = $(this).attr("id");
			    hubActive[hub] = $(this).attr("checked");
			  });
  hubActive["hub-0"] = true;
  var wifiOn = $("#wifi-field").attr("checked");
  var powerOn = $("#power-field").attr("checked");


  var filters =   { "departTimeMin" : departtimes[0],
		    "departTimeMax" : departtimes[1],
		    "departTimeMinFormatted" : f_departtimemin,
		    "departTimeMaxFormatted" : f_departtimemax,
		    "arriveTimeMin" : arrivetimes[0],
		    "arriveTimeMax" : arrivetimes[1],
		    "arriveTimeMinFormatted" : f_arrivetimemin,
		    "arriveTimeMaxFormatted" : f_arrivetimemax,
		    "totalTimeMax" : totaltimemax,
		    "totalTimeMaxFormatted" : f_totaltimemax,
		    "fareMax" : faremax,
		    "layoverMin" : layovermin,
		    "layoverMax" : layovermax,
		    "taxifareMax" : taxifaremax,
		    "walkdistMax" : walkdistmax,
		    "stopMax" : stopmax,
		    "mainModeFilter" : mainModeActive,
		    "originModeFilter" : originModeActive,
		    "destModeFilter" : destModeActive,		    
		    "agencyFilter" : agencyActive,
		    "hubFilter"    : hubActive,
		    "wifiOn" : wifiOn,
		    "powerOn" : powerOn
  };
  return filters;
}

function updateFilterDisplays(filters) {
  updateDepartTime(filters.departTimeMinFormatted, filters.departTimeMaxFormatted,
		   filters.departTimeMin, filters.departTimeMax);
  updateArriveTime(filters.arriveTimeMinFormatted, filters.arriveTimeMaxFormatted,
		   filters.arriveTimeMin, filters.arriveTimeMax);
  updateTotalTime(filters.totalTimeMaxFormatted);
  updateFare(filters.fareMax);
  updateLayovers(filters.layoverMin, filters.layoverMax);
  updateTaxiFare(filters.taxifareMax);
  updateWalkDist(filters.walkdistMax);
  updateStop(filters.stopMax);
}

//FIXME: philly to boston 4 results filtered out at start?
function applyFilters(noreset) {
  $(".recalculating").show();
  var results_length = RESULTS.length;
  var result_count = 0;
  var resultid;
  var filterSettings = getFilterSettings();
  updateFilterDisplays(filterSettings);
  if(noreset != 1)
    showFirst();
  clearDetails();
  //$(".resultdiv").show();
  $(".resultdiv").empty().remove();
  $(".detail").empty().remove();

  handleGetRide();

  for(var i =0; i < results_length; i++) {
    resultid = RESULTS[i].id;    
    thisresult = $("#" + RESULTS[i].id);
    //$("#" + resultid).show();
    RESULTS[i].filtered = 0;
    filterDepartTime(thisresult, i, resultid, 
		     RESULTS[i].calcDepartTimeMin, 
		     filterSettings.departTimeMin,
		     filterSettings.departTimeMax);
    filterArriveTime(thisresult, i, resultid, 
		     RESULTS[i].calcArriveTimeMin,
		     filterSettings.arriveTimeMin,
		     filterSettings.arriveTimeMax);
    filterTotalTime(thisresult, i, resultid, 
		    RESULTS[i].totalTime,
		    filterSettings.totalTimeMax);
    
    filterMainModes(thisresult, RESULTS[i],
		    filterSettings.mainModeFilter);
    
    filterOriginModes(thisresult, RESULTS[i], 
		      filterSettings.originModeFilter);
    filterDestModes(thisresult, RESULTS[i],
		    filterSettings.destModeFilter);

    filterAgencies(thisresult, RESULTS[i], 
		   filterSettings.agencyFilter);
    filterHubs(thisresult, RESULTS[i], 
	       filterSettings.hubFilter);
    filterAmenities(thisresult, RESULTS[i],
		    filterSettings.wifiOn,
		    filterSettings.powerOn);
    filterFare(thisresult, i, resultid, 
	       RESULTS[i].fare, 
	       0,//RESULTS[i].origin.fare, 
	       0,//RESULTS[i].destination.fare,
	       filterSettings.fareMax);
    filterLayovers(thisresult, i, resultid, 
		   RESULTS[i].layoverTime,
		   filterSettings.layoverMin,
		   filterSettings.layoverMax);		   
    filterTaxiFare(thisresult, i, resultid, 
		   RESULTS[i].origin.mode == 'taxi' ? RESULTS[i].origin.fare : 0, 
		   RESULTS[i].destination.mode =='taxi' ?RESULTS[i].destination.fare : 0,
		   filterSettings.taxifareMax);
    filterWalkDist(thisresult, RESULTS[i], 
    		   filterSettings.walkdistMax);    
    filterStop(thisresult, i, resultid, 
	       RESULTS[i].numHops, 
	       filterSettings.stopMax);

    filterAvailability(RESULTS[i]);

    if(RESULTS[i].filtered == 0) {
      result_count++;
    } else {
      F_DEBUG("filtered RESULTS[" + i + "]");
    }
    filterDisplay(RESULTS[i], result_count);
  }
  //doFilterDisplay();
  displayResults();
  setTimeout(function() {$(".recalculating").hide();}, 700);
  updateNumResults(result_count);
}

function filterDisplay(result, count) {
  //var count = 0;
  //if($("#" + result.id).css('display') != "none") {
  //count++;
  //}
  if(count > maxDisplay || count < minDisplay) {
    //$("#all-results").find("div#" + result.id).hide();
    result.filtered = 1;
  } 
}

function doFilterDisplay() {
  var results_length = RESULTS.length;
  var count = 0;
  var allresults = $("#all-results");
  
  $(".resultdiv").each(function() {
			 if($(this).css('display') != "none") {
			   count++;
			   if(count > maxDisplay || count < minDisplay) {
			     $(this).css({'display':'none'});
			   }
			 }
		       });
  /*
  for(var i = 0; i < results_length; i++) {
    if(RESULTS[i].filtered == 0) {
      count++;
    }
    if(count > maxDisplay || count < minDisplay) {
      //$("#all-results").find("div#" + RESULTS[i].id).hide();
      //$(allresults).find("div#" + RESULTS[i].id).css({'display':'none'});
      RESULTS[i].filtered = 1;
    } 
  }
  */
}

function filterAgencies(thisresult, result, agencyActive) {
  var numhops = result.hops.length;
  for(var j = 0; j < numhops; j++) {
    if(!agencyActive[result.hops[j].agency]) {
      //$("#all-results").find("div#" + result.id).hide();
      //$(thisresult).css({'display':'none'});
      result.filtered = 1;
      F_DEBUG("agencies" + result.id);
    }
  }
}

function filterHubs(thisresult, result, hubActive) { 
  var numhops = result.hops.length;
  for(var j = 0; j < numhops; j++) {
    if(!hubActive["hub-" + result.hops[j].sourceNodeId] ||
       !hubActive["hub-" + result.hops[j].destNodeId]) {
      result.filtered = 1;
      F_DEBUG("hubs " + result.id+ " "+ "hub-" + result.hops[j].sourceNodeId+ " "+ "hub-" + result.hops[j].destNodeId);
    }
  }
}

function filterAmenities(thisresult, result, wifiOn, powerOn) { 
  var someWifi = 1;
  var somePower = 1;
  var numhops = result.hops.length;
  if(wifiOn || powerOn) {
    someWifi = 1;
    somePower = 1;
    for(var j = 0; j < numhops; j++) {
      if(result.hops[j].wifi != 1) {
	someWifi = 0;
      }
      if(result.hops[j].power != 1) {
	somePower = 0;
      }
    }
    if(someWifi == 0 && wifiOn == 1) {
      result.filtered = 1;
      F_DEBUG("wifi " + result.id);
    }
    if(somePower == 0 && powerOn == 1) {
      result.filtered = 1;
      F_DEBUG("power " + result.id);
    }
  }
}

function filterMainModes(thisresult, result, modeactive) { 
  var numhops = result.hops.length;
  for(var j =0; j< numhops; j++) {
    if(modeactive[result.hops[j].mode] == 0) {
      result.filtered = 1;
      F_DEBUG("main " + result.id);
    }
  }
}


function filterOriginModes(thisresult, result, modeactive) { 
  if(modeactive[result.origin.mode] == 0 &&
     result.hops[0].mode != "walk" &&
     result.hops[0].mode != "taxi" &&
     result.hops[0].mode != "intracity" &&
     result.hops[0].mode != "limo") {
    result.filtered = 1;
    F_DEBUG("origin " +  result.id + "  " + result.origin.mode + " " + result.hops[0].mode);
  }
}

function filterDestModes(thisresult, result, modeactive) { 
  if(modeactive[result.destination.mode] == 0 &&
     result.hops[0].mode != "walk" &&
     result.hops[0].mode != "taxi" &&
     result.hops[0].mode != "intracity" &&
     result.hops[0].mode != "limo") {
    result.filtered = 1;
    F_DEBUG("dest " +  result.id + "  " + result.destination.mode);
  }
}

function filterStop(thisresult, index, id, stops, maxstop) {
  if(maxstop == 5) { 
    maxstop == 99;
  }
  if(maxstop < (stops - 1)) {
    RESULTS[index].filtered = 1;
    F_DEBUG("stops" + index);
  } 
}

function updateStop(stopmax) {
  if(!stopmax) {
    stopmax = $("#stopslider").slider('value');
  }
  if(stopmax == 5) { 
    $(".timer").find("#stops_maxtext").html("5+");
  } else {
    $(".timer").find("#stops_maxtext").html(stopmax);
  }
}

function filterAvailability(result) {
  if(result.unavailable == 1) {
    result.filtered = 1;
    F_DEBUG("unavailable " + result.id + " " + result.hops[0].agency + " " + result.calcDepartTimeMin);
  }
}

function filterFare(thisresult, index, id, fare, originfare, destfare, maxfare) {
  var totalfare = parseInt(fare) + parseInt(originfare) + parseInt(destfare);
  if(maxfare < totalfare) {
    RESULTS[index].filtered = 1;
    //console.log(originfare + " + " + fare + " + " + destfare + " = " + totalfare);
    F_DEBUG("FILTERED: " + id + ": fare (" + totalfare + ") > " + maxfare);
  }
}

function updateFare(faremax) {
  if(!faremax) {
    faremax = $("#fareslider").slider('value');
  }
  $("#maxfare").html(faremax);
}

function filterLayovers(thisresult, index, id, layoverTime, minlayover, maxlayover) {
  if(maxlayover < layoverTime ||
     minlayover > layoverTime) {
    RESULTS[index].filtered = 1;
    F_DEBUG("layovers " + index);
  }
}

function updateLayovers(layovermin, layovermax) {
  if(!layovermin) {
    layovermin = $("#layoverslider").slider('values', 0);    
  }
  if(!layovermax) {
    layovermax = $("#layoverslider").slider('values', 1);    
  }
  $(".timer").find("#layover_mintext").html(timeMinToFDuration(layovermin));
  $(".timer").find("#layover_maxtext").html(timeMinToFDuration(layovermax));
}

function filterDepartTime(result, index, id, departTime, timemin, timemax) {
  var idxtime = departTime;//timeHHMMToMin(departTime);
  if(idxtime < timemin || idxtime > timemax) {
    //$("#all-results").find("div#" + id).hide();
    //$(result).css({'display': 'none'});
    RESULTS[index].filtered = 1;
    F_DEBUG("depart time: " + departTime);
  }  
}

function updateDepartTime(minTime, maxTime, minTimeMinutes, maxTimeMinutes) {
  if(!minTime) {
    minTime = timeMinToFTime($("#departslider_depart").slider('values',0));
    minTimeMinutes = $("#departslider_depart").slider('values',0);
  }
  if(!maxTime) {
    maxTime = timeMinToFTime($("#departslider_depart").slider('values',1));
    maxTimeMinutes = $("#departslider_depart").slider('values',1);
  }
  $(".timer").find("#departdepart_mintext").html(minTime);
  $(".timer").find("#departdepart_maxtext").html(maxTime);

  // FIXME: update when slider crosses day boundary
  if(minTimeMinutes < 0) {
    $(".timer").find("#departdepart_mintextday").html(prevDow);
  } else if(minTimeMinutes > 1439) {
    $(".timer").find("#departdepart_mintextday").html(nextDow);
  } else {
    $(".timer").find("#departdepart_mintextday").html(dayOfWeek);
  }

  if(maxTimeMinutes < 0) {
    $(".timer").find("#departdepart_maxtextday").html(prevDow);
  } else if(maxTimeMinutes > 1439) {
    $(".timer").find("#departdepart_maxtextday").html(nextDow);
  } else {
    $(".timer").find("#departdepart_maxtextday").html(dayOfWeek);
  }

}

function filterArriveTime(result, index, id, arriveTime, timemin, timemax) {
  var idxtime = arriveTime;//timeHHMMToMin(arriveTime);
  if(idxtime < timemin || idxtime > timemax) {
    //$("#all-results").find("div#" + id).hide();
    //$(result).css({'display': 'none'});
    RESULTS[index].filtered = 1;
    F_DEBUG("arrive time mins: " + arriveTime + " max: " + timemax);
  }
}

function updateArriveTime(minTime, maxTime, minTimeMinutes, maxTimeMinutes) {
  if(!minTime) {
    minTime = timeMinToFTime($("#departslider_arrive").slider('values',0));
    minTimeMinutes = $("#departslider_arrive").slider('values',0);
  }
  if(!maxTime) {
    maxTime = timeMinToFTime($("#departslider_arrive").slider('values',1));
    maxTimeMinutes = $("#departslider_arrive").slider('values',1);
  }
  $(".timer").find("#departarrive_mintext").html(minTime);
  $(".timer").find("#departarrive_maxtext").html(maxTime);

  // FIXME: update when day crosses boundary
  if(minTimeMinutes < 0) {
    $(".timer").find("#departarrive_mintextday").html(prevDow);
  } else if(minTimeMinutes > 1439) {
    $(".timer").find("#departarrive_mintextday").html(nextDow);
  } else {
    $(".timer").find("#departarrive_mintextday").html(dayOfWeek);
  }

  if(maxTimeMinutes < 0) {
    $(".timer").find("#departarrive_maxtextday").html(prevDow);
  } else if(maxTimeMinutes > 1439) {
    $(".timer").find("#departarrive_maxtextday").html(nextDow);
  } else {
    $(".timer").find("#departarrive_maxtextday").html(dayOfWeek);
  }

}

function filterTotalTime(result, index, id, totalTime, timemax) {
  var idxtime = timeHHMMToMin(totalTime);
  if(idxtime > timemax) {
    //$("#all-results").find("div#" + id).hide();
    //$(result).css({'display': 'none'});
    F_DEBUG("total time "+ index + " totalMin"+ idxtime+ " totalHHMM" + totalTime+ " maxinmin:"+ timemax);
    RESULTS[index].filtered = 1;
  }  
}

function updateTotalTime(maxTime) {
  if (!maxTime) {
    maxTime = timeMinToFDuration($("#durationslider").slider('value'));
  }
  $(".timer").find("#duration_maxtext").html(maxTime);
}

function filterTaxiFare(thisresult, index, id, originfare, destfare, faremax) {
  if(originfare > faremax ||
     destfare > faremax) {
    //$("#all-results").find("div#" + id).hide();
    //$(thisresult).css({'display':'none'});    
    RESULTS[index].filtered = 1;
    F_DEBUG("taxi fare " +index);
  }  
}

function updateTaxiFare(faremax) {
  if(!faremax) {
    faremax = $("#taxifareslider").slider('value');
  }
  $(".timer").find("#taxifare_maxtext").html("$" + faremax);
}

function filterWalkDist(thisresult, result, distmax) {
  var origindist = (result.origin.mode == "walk") ? result.origin.distance : 0;
  var destdist   = (result.destination.mode == "walk") ? result.destination.distance : 0;
  if(origindist > distmax ||
     destdist > distmax ) {
    //$("#all-results").find("div#" + result.id).hide();
    //$(thisresult).css({'display':'none'});    
    result.filtered = 1;
    F_DEBUG("walk dist: " + result.id + " origindist: " + origindist + " destdist: " + destdist + " distmax: " + distmax);
  }
}

function updateWalkDist(distmax) {
  if(!distmax) {
    distmax = $("#walkdistslider").slider('value');
  }
  $(".timer").find("#walkdist_maxtext").html(distmax);
}


function toggleHubCheckboxes(nodeIDs)
{
	for(var i = 0; i < nodeIDs.length; i++){		
		document.getElementById("hub-" + nodeIDs[i]).checked = !document.getElementById("hub-" + nodeIDs[i]).checked;
		//alert("Hub ID " + nodeIDs[i] + "is now " + document.getElementById("hub-" + nodeIDs[i]).checked);
	}
}


