// Add a leading zero to month if necessary
function leadingZero(nr) {
  if (nr < 10) nr = "0" + nr;
  return nr;
}

function basicSearch(search_form) {
    var search  = document.forms[search_form];

    var start   = search.occurrence_start_dt;
    var end     = search.occurrence_end_dt;
    var event   = search.ghost_event_name;

    search.sf_ec_event_name.value = setSearchString(event.value);

    if (start.value == '') {
        setStartDate(search); // Set start day to today
    }

    setEndDate(search, start.value);

    // Need to add time to these date values if no time is included
    var start_dt = addTimeToDate(search.occurrence_start_dt.value, 0, 0, 0);
    var end_dt   = addTimeToDate(search.occurrence_end_dt.value, 23, 59, 59);

    search.sf_ec_occurrence_start_dt.value = '>= ' + start_dt;
    search.sf_ec_occurrence_end_dt.value = '<= ' + end_dt;
}

// Format the search criteria so it will be effective with Events Calendar
function Search(search_form) {
    var search = document.forms[search_form];

    var start   = search.occurrence_start_dt;
    var end     = search.occurrence_end_dt;
    var event   = search.ghost_event_name;
    var venue   = search.ghost_venue_name;
    
    search.sf_ec_event_name.value = setSearchString(event.value);
    search.sf_ec_venue_name.value = setSearchString(venue.value);

    // If no date range was entered
    if (start.value == '' && end.value == '') {
        setStartDate(search); // Set start to today
        setEndDate(search); // Set end to today plus one week
    }
      // Start was entered but end was not
    else if (start.value != '' && end.value == '') {
        setEndDate(search, start.value); // Set end to a week from user entered start
    }
      // End was entered but start was not
    else if (start.value == '' && end.value != '') {
        setStartDate(search); // Set start day to today
    }

    // Need to add time to these date values if no time is included
    var start_dt = addTimeToDate(search.occurrence_start_dt.value, 0, 0, 0);
    var end_dt   = addTimeToDate(search.occurrence_end_dt.value, 23, 59, 59);

    search.sf_ec_occurrence_start_dt.value = '>= ' + start_dt;
    search.sf_ec_occurrence_end_dt.value = '<= ' + end_dt;
}

function addTimeToDate(dateValue, hours, minutes, seconds)
{
    var current_date = new Date(dateValue);

    if (   current_date.getHours()   != 0 
        || current_date.getMinutes() != 0 
        || current_date.getMinutes() != 0)
    {
        return dateValue;
    }    
    current_date.setHours(hours);
    current_date.setMinutes(minutes);
    current_date.setSeconds(seconds);

    var month = leadingZero(current_date.getMonth() + 1);
    var day   = leadingZero(current_date.getDate());
    var year  = current_date.getFullYear();
    var h = leadingZero(current_date.getHours());
    var m = leadingZero(current_date.getMinutes());
    var s = leadingZero(current_date.getSeconds());
    var val = month + "/" + day + "/" + year + " " + h + ":" + m + ":" + s;
    return val;
}

function venueSearch(search_form) {
    var venSearch = document.forms[search_form];

    var venue = venSearch.ghost_venue_name;
    venSearch.sf_ec_venue_name.value = setSearchString(venue.value);
}

function restaurantSearch(search_form) {
    var restSearch = document.forms[search_form];

    var restaurant = restSearch.ghost_venue_name;
    var location = restSearch.ghost_geoarea_name;

    restSearch.sf_ec_venue_name.value = setSearchString(restaurant.value);
    restSearch.sf_ec_geoarea_name.value = setSearchString(location.value);
}

function setSearchString(fieldValue) {
    if (fieldValue != '') {
        while (fieldValue.charAt(0) == ' ') {
        fieldValue = fieldValue.substring(1, fieldValue.length);
    }
        if (fieldValue.charAt(0) != '~') {
            fieldValue='~ ' + fieldValue;
        }
    }
    return(fieldValue);
}

function setStartDate(frm) {
  var current_date = new Date();
  var current_month = leadingZero(current_date.getMonth() + 1);
  var current_day = current_date.getDate();
  var current_year = current_date.getFullYear();
  var start_date = current_month + "/" + current_day + "/" + current_year;
  frm.occurrence_start_dt.value = start_date;
}

function setEndDate(frm, sdate) {
  if (sdate != null)
    var current_date = new Date(sdate);
  else
    var current_date = new Date();

  var future_date = new Date(current_date.setDate(current_date.getDate() + 7));
  var future_month = leadingZero(future_date.getMonth() + 1);
  var future_day = future_date.getDate();
  var future_year = future_date.getFullYear();
  var end_date = future_month + "/" + future_day + "/" + future_year;
  frm.occurrence_end_dt.value = end_date;
}

