var null_var;

// flag for fresh page
var new_tabs = 1;

// advanced search object
var advSearchObject = new Object();

// advanced search flag
var advSearchFlag = false;

// general search flag
var generalSearch = false;

jQuery(document).ready(function(){
  
  // add city vars if needed
  if(jQuery('div#cityDisplayWrap').length > 0)
  {
    // if city override set then use it
    if(jQuery('#cityOverride').val() != '')
    {
      jQuery('span.currentCityDisplay').html('Current City: ' + jQuery('#cityOverride').val());
    }
    else
    {
      jQuery('span.currentCityDisplay').html('Current City: ' + geoip_city() + ', ' + geoip_region());

      jQuery('input#city').val(geoip_city() + ', ' + geoip_region());
    }
    
    jQuery('#citySelectWrap').dialog({
      bgiframe: true,
      autoOpen: false,
      height: 340,
      modal: true,
      buttons: {
        'Select City': function(){
          toggleCitySelect();
        },
        Cancel: function(){
          jQuery(this).dialog('close');
        } 
      },
      open: function(event, ui){
        jQuery('input#city').val('');
      }
    });
  }
  
  try
  {
    // look for tabs and tab functions
    if(tab_actions && jQuery('div#tabWrap').length == 1)
    {
      jQuery('div#tabWrap div.tab').click(function(){
    
        // only execute if not already active
        if(new_tabs == 1 || !jQuery(this).hasClass('active'))
        {
          // make all inactive
          jQuery('div#tabWrap div.tab').removeClass('active');

          // make this active
          jQuery(this).addClass('active');
          
          // reset page if not new page
          if(new_tabs == 0)
          {
            jQuery('#current_page').val(1);
          }
          
          new_tabs = 0;
          
          // call tab function (unless non-search tab)
          if(!jQuery(this).hasClass('noSearch'))
          {
            // make sure search areas are visible (showSearch from registration.js)
            showSearch();
            
            tab_actions.tabClicked(jQuery(this).attr('id'));
          };
          
        }
    
      });
    }
    
    // add the search placeholder
    if(jQuery('#search_str').val() == '')
    {
      jQuery('#search_str').val(tab_actions.options.searchPlaceholder);
    }
    
    // add focus / blur functionality
    jQuery('#search_str').focus(function(){
      if(jQuery('#search_str').val() == tab_actions.options.searchPlaceholder)
      {
        jQuery('#search_str').val('');
      }
    });
    
    jQuery('#search_str').blur(function(){
      if(jQuery('#search_str').val() == '')
      {
        jQuery('#search_str').val(tab_actions.options.searchPlaceholder);
      }
    });
    
    // add submit event to form
    jQuery('#searchForm').submit(function(){
      
      // reset page
      jQuery('#current_page').val(1);
      
      // run search
      tab_actions.runSearch();
      
      // stop form submit
      return false;
    });  
      
    // run initially selected tab
    tab_actions.loadPage();
  }
  catch(e)
  {
    // do nothing
  }
  
  // set up adv search tabs
  jQuery('div#tabWrapMini div.tab').click(function(){

    // only execute if not already active
    if(!jQuery(this).hasClass('active'))
    {
      // make all inactive
      jQuery('div#tabWrapMini div.tab').removeClass('active');

      // make this active
      jQuery(this).addClass('active');
    }

  });
  
});

/**
 * log function, only output if console present
 */
function log(log_str)
{
  if(window.console)
  {
    console.log(log_str);
  }
}

function timeAgo(dateline) {
	if(dateline)
	{
		//var now = new Date();
		//var ago = new Date(now.getTime() - dateline);
		var ago = new Date();
		ago.setTime(dateline*1000);
		return ago.format('fullDate');
	}
	else
	{
		return "no dateline";
	}
}

/**
 * no search results
 * clear search area, remove pagers and display message to user
 */
function emptySearch()
{
  // display message
  jQuery('#searchResults').html(jQuery('<h3>No Search Results</h3>'));
  
  // clear pagers
  jQuery('div.searchPager').html('');
}

/**
 * sets the search cookies
 * 
 */
function setCookies(search_zone, search_tab, search_str, page)
{
  log('setting search cookies: ' + search_zone + ' | ' + search_tab + ' | ' + search_str + ' | ' + page);
  
  if(search_str == 'null')
  {
    search_str = '';
    
    log('search_str is null');
  }
  else
  {
    log('search_str is not null');
  }
  
  // set cookies
  jQuery.cookie('SEARCH_ZONE', search_zone, {path: "/", expires: 10});
  jQuery.cookie('SEARCH_TAB', search_tab, {path: "/", expires: 10});
  jQuery.cookie('SEARCH_STRING', search_str, {path: "/", expires: 10});
  jQuery.cookie('SEARCH_PAGE', page, {path: "/", expires: 10});
}

/**
 * toggles city select area
 * 
 */
function toggleCitySelect()
{
  log('toggleCitySelect');
  
  if(jQuery('#citySelectWrap').is(':visible'))
  {
    // show display wrap
    // jQuery('#cityDisplayWrap').show('fast');
    
    // close city select
    // jQuery('#citySelectWrap').hide('fast');
    jQuery('#citySelectWrap').dialog('close');
    
    // populate city override fields if required
    if(jQuery('#city').val() != '')
    {
      jQuery('span.currentCityDisplay').html('Current City: ' + jQuery('#city').val());
      
      jQuery('#cityOverride').val(jQuery('#city').val());
    }
    
    // run search, basic or adv
    tab_actions.runSearch();
  }
  else
  {
    // hide display wrap
    // jQuery('#cityDisplayWrap').hide('hide');
    
    // show city select
    // jQuery('#citySelectWrap').show('fast');
    jQuery('#citySelectWrap').dialog('open');
  }
}

/**
 * toggles the adv search area.
 * 
 */
function toggleAdvSearch()
{
  // jQuery('#searchFormWrap').toggle('fast');
  
  jQuery('#advSearchWrap').toggle('fast');
  
  // set advanced search flag
  if(!advSearchFlag)
  {
    jQuery('#advSearchToggle').html('Basic Search');
    
    advSearchFlag = true;
  }
  else
  {
    advSearchFlag = false;
    
    jQuery('#advSearchToggle').html('Advanced Search');
  }
}

/**
 * show selected filter area
 */
function openFilterSelect(id)
{
  // remove active class
  jQuery('div.filterSelectorWrap.active').removeClass('active');
  
  // make selected active
  jQuery('#' + id).addClass('active');
  
}

/**
 * set the filter to apply or remove if filter active
 */
function addFilter(link_id, filter_name, filter_id)
{
  log(link_id + '|' + filter_name + '|' + filter_id);
  
  // reset pager
  jQuery('#current_page').val(1);
  advSearchObject.current_page = 1;
  
  // test if active
  if(jQuery('#' + link_id).hasClass('active'))
  {
    // remove active state
    jQuery('#' + link_id).removeClass('active');
    
    // remove indicator
    jQuery('#indicator_' + link_id).remove();
    
    // remove filter from search object
    advSearchObject[filter_name] = '';
    
    // run query
    tab_actions.runAdvSearch();
  }
  else
  {
    // remove current active in parent div only
    var active_link = jQuery('#' + link_id).parent().find('a.filterLink.active');
    
    if(active_link.length > 0)
    {
      // get id of active for indicator removal
      var active_id = active_link.attr('id');
      
      // remove indicator
      jQuery('#indicator_' + active_id).remove();

      // remove active
      active_link.removeClass('active');
    }
    
    // add active state
    jQuery('#' + link_id).addClass('active');
    
    // add indicator
    if(!jQuery('#indicatorWrap').is(':visible'))
    {
      jQuery('#indicatorWrap').show('normal');
    }
    
    // get filter category from mini tab active heading
    var filter_cat = jQuery('div#tabWrapMini div.tab.active div.tabCenter a').html() + ': ';
    
    var indicator = jQuery('#' + link_id).clone();
    
    indicator.attr('id', 'indicator_' + indicator.attr('id'));
    
    indicator.html(filter_cat + indicator.html());
    
    jQuery('#indicatorWrap').append(indicator);
    
    // add filter to search object
    advSearchObject[filter_name] = filter_id;
    
    // run query
    tab_actions.runAdvSearch();
  }
  
  // hide indicator area if empty
  if(jQuery('#indicatorWrap a').length == 0)
  {
    jQuery('#indicatorWrap').hide('normal');
  }
}

