
// REDIRECTS TO A NEW URL BASED ON THE ADVANCED AVAIL SEARCHING OPTIONS
function advAvailSearch(url) {
  milesAway = document.getElementById("milesAway");
  url = urlGetVarReplace(url, "milesAway", milesAway.value);
  
  var sortBy = document.getElementById('availSortBy');
  if (sortBy.value == "price") { url = urlGetVarReplace(url, "sort", "unitCost"); }
  else if (sortBy.value == "distance") { url = urlGetVarReplace(url, "distance", "distance"); }
  
  window.location = url;
}


function deleteAvail(availId, row) {
  $.ajax({
    url: "/food/availDelete?id="+availId,
    success: function(data) {
	  if (data === "1") {
	    alert("Availability information deleted!");
		document.getElementById("avRow"+row).style.display = 'none';
	  } 
	  else {
	    alert("Error deleting availability information!");
	  }	  
    }
  });
}



function clearAvailData(view) {
  if (view === 0) { document.getElementById('avList').innerHTML = ""; }
  else {
    var table = document.getElementById('av');
    table.innerHTML = table.innerHTML.substr(0,113);
  } 
}



function addAvailItem(list, i, place, lat, lng, cost, unitCost, distDiff, view) {
  // calculate row color
  if ((i % 2) === 0) { trClass = "eeven"; }
  else { trClass = "eodd"; }
  
  // create place link
  var placeLnk = "";
  
  if (place !== '') { 
    placeLink = "<a class=\"placeLink\" " + 
               "onclick=\"center(" + lat + "," + lng + ", 13);\">" + 
               place + "</a>";
  } 
  else { placeLink = ''; }

  
  if (view === 0) {
  	var newHtml = "<div id=\"avRow"+i+"\" class=\"" + trClass + "\">" + 
                  "<div class=\"mile\">" + distDiff + "</div>";
                  
  	// add div to divList view
    if (placeLink !== "") { newHtml += placeLink + "<br/> &nbsp; " + cost + " (" + unitCost + ")</div>"; }
    else { newHtml += placeLink + "<br/> &nbsp; " + cost + " " + unitCost + "</div><br/> </div>"; }
    list.innerHTML += newHtml;
  }
  else {
  	// add row to table view
    list.innerHTML += "<tr id=\"avRow"+i+"\" class=\"" + trClass + "\">" + 
                     "<td class=\"av\">" + placeLink + "</td>" + 
                     "<td class=\"cost\">" + cost + "</td>" + 
                     "<td class=\"uCost\">" + unitCost + "</td>" + 
                     "<td class=\"dist\">" + distDiff + "</td></tr>";
  }                   
}

function addAvailInfo(lat, lng, data, view) {
  var list, numItems;
  
  // load the correct list view for adding avail info
  if (view === 0) { 
  	list = document.getElementById('avList'); 
    numItems = 8;
  }
  else { 
  	list = document.getElementById('av'); 
  	numItems = 10;
  }
  
  // tokenize the server response
  var tok = data.split("|");
  var i = 0;
  
  // Center the map at the returned zoom level
  center(lat, lng, parseInt(tok[0],10));

  // add the item
  for (j = 1; j < (tok.length-1); j+=8) {
    addGMarker(tok[j+2], tok[j+3], '');
    addAvailItem(list, i, tok[j], tok[j+2], tok[j+3], tok[j+4], tok[j+7], 
           tok[j+5]+" mi", view);
    i++;
  }
  for (; i < numItems; i++) { addAvailItem(list, i, '', '', '', '', '', '&nbsp;', view); }
}



function relocateAvailMap(lat, lng, itemId, view) {
  var url = "availSearch?lat=" + lat + "&lng=" + lng + "&itemId=" + itemId;
  $.ajax({
    url: url,
    success: function(data) { 
      clearAvailData(view);
      map.clearOverlays();
      addAvailInfo(lat, lng, data, view);
    }});
}



function mapSearch(itemId, view) {
  var search = document.getElementById("avMapSrch");

  // GEOCODE FOR THE REQUESTED LOCATION
  var geocoder = new GClientGeocoder();
  if (geocoder) {
    geocoder.getLatLng(search.value,
      function(pt) {
        // if geocoding fails, provide a message
        if (pt === null) { alert('Requested location was not found!'); }

        // search for availability within 50 miles of new location
        else {
          relocateAvailMap(pt.lat(), pt.lng(), itemId, view);
        }
      }
    );
  }
}



function checkEnter(event, id, view) {
  // check for enter key
  if(event.keyCode == 13){ mapSearch(id, view); }
}



function showAddAvail() {
  $('#avList').fadeOut(250);
  $('#avList').html("TEST");
  $('#avList').fadeIn(250);
  /*
  document.getElementById("addAvailStep2").style.visibility = "hidden";
  document.getElementById("addAvailStep1").style.visibility = "visible";
  document.getElementById("addAvail").style.visibility = "visible";
  */
}


function hideAddAvail() {
  document.getElementById("addAvailStep2").style.visibility = "hidden";
  document.getElementById("addAvailStep1").style.visibility = "hidden";	
  document.getElementById("addAvail").style.visibility = "hidden";
}


function selectAvailPlaceFromRecent() {
  var recentPlaces = document.getElementById("recentPlaceId");
  document.getElementById("placeNameLocked").value = recentPlaces.options[recentPlaces.selectedIndex].value;
  document.getElementById("placeId").value = recentPlaces.options[recentPlaces.selectedIndex].value;
  alert(recentPlaces.options[recentPlaces.selectedIndex].value);
  
  document.getElementById("addAvailStep1").style.visibility = "hidden";	
  document.getElementById("addAvailStep2").style.visibility = "visible";
}


function selectAvailPlaceFromSearch() {
  document.getElementById("addAvailStep1").style.visibility = "hidden";	
  document.getElementById("addAvailStep2").style.visibility = "visible";
  var searchResults = document.getElementById("searchPlaceId");  
  document.getElementById("placeNameLocked").value = searchResults.options[searchResults.selectedIndex].innerHTML;
  document.getElementById("placeId").value = searchResults.value;
}


function setLocationSearchForAvail() {
  document.getElementById("locationId").value = ddMatchId;	
  document.getElementById("locationInput").value = ddMatchStr;
  var placeName = document.getElementById("placeName").value;
  var opt;
  
  // tokenize the ddMatchId return
  var tokens = ddMatchId.split("_");
  var lng = tokens[0];
  var lat = tokens[1];
  var sel = document.getElementById("searchPlaceId");
  var loading = document.getElementById("loading");
  loading.style.visibility = "visible";

  $.ajax({
    url: "/ajax/placeSearch?lat="+lat+"&lng="+lng+"&name="+placeName,
    success: function(data) {
	  sel.style.color = "black";
	  if (data === "0"){ 
	    opt = document.createElement("option");
		sel.innerHTML = null;
		opt.setAttribute("value", "-1");
		sel.style.color = "red";
		opt.innerHTML = "No results found!";
		opt.selected=true;
		sel.appendChild(opt);
	  }
	  else if (data === "-1") {
	    alert("An error occured during the search");
	  }
	  else if (data !== "-1" ) {
		var tok = data.split("|");
		sel.innerHTML = null;
		for (var i = 0; i < (tok.length-1); i += 10){
		  opt = document.createElement("option");
		  opt.setAttribute("value", tok[i]);
		  opt.innerHTML = tok[i+1]+" ("+tok[i+2]+", "+tok[i+4]+")";
		  if (i===0) { opt.selected=true; }
		  sel.appendChild(opt);				
		}
	  }
	  loading.style.visibility = "hidden";	  
    }
  });
}
