var tab_actions = {
  
  options: {
    searchPlaceholder: 'Search for an article...',
    function_name: ''
  },
  
  tabClicked: function(function_name){
    
    this.options.function_name = function_name;
    
    log('setting function_name: ' + function_name + ' | ' + this.options.function_name);
    
    switch(function_name)
    {
      case 'featured-tab':
        log('tab_action.tabClicked | clicked: friends');
        
        // add friends flag to form
        jQuery('#featured').attr('value', 1);
        
        // set sort flag
        jQuery('#sort').attr('value', 'newest');
        
        // get search
        this.runSearch();
        
        break;
      case 'newest-tab':
        log('tab_action.tabClicked | clicked: recent');
        
        // clear friends flag from form
        jQuery('#featured').attr('value', 0);
        
        // set sort flag
        jQuery('#sort').attr('value', 'newest');
        
        // get search
        this.runSearch();
        
        break;
      case 'oldest-tab':
        log('tab_action.tabClicked | clicked: search');
        
        // clear friends flag from form
        jQuery('#featured').attr('value', 0);
        
        // set sort flag
        jQuery('#sort').attr('value', 'oldest');
        
        // get search
        this.runSearch();
        
        break;
    }
  },
  
  runSearch: function(){
    
    if(advSearchFlag)
    // run adv search
    {
      this.runAdvSearch();
    }
    else
    {
      log(jQuery('#searchForm').attr('action'));
    
      // get search query
      if(jQuery('#search_str').val() == this.options.searchPlaceholder)
      {
        var search_str = '';
      }
      else
      {
        var search_str = jQuery('#search_str').val();
      }
    
      // save cookies
      setCookies('articles', this.options.function_name, search_str, jQuery('#current_page').val());
    
      // build search obj
      var search_obj = {
        sort: jQuery('#sort').val(),
        featured: jQuery('#featured').val(),
        query: search_str,
        current_page: jQuery('#current_page').val()
      };

      this.makeSearchCall(jQuery('#searchForm').attr('action'), search_obj);
    }
  },
  
  /**
   * runs an advanced search
   */
  runAdvSearch: function(){
    
    // add search string if set
    if(jQuery('#search_str').val() != this.options.searchPlaceholder)
    {
      advSearchObject.query = jQuery('#search_str').val();
    }
    else
    {
      advSearchObject.query = '';
    }
    
    this.makeSearchCall('/v2/server/search/articlesadv.json', advSearchObject);
  },
  
  /**
   * makes the actual ajax search call
   */
  makeSearchCall: function(search_url, search_obj){
    // show loading
    jQuery('#searchResults').html('<h3>Loading...</h3>');
  
    jQuery.post(
      search_url,
      search_obj,
      function(data){
      
        // get matches
        var matches = data.matches;
      
        // clear search result area
        jQuery('#searchResults').html('');
      
        if(matches && matches.length > 0)
        {
          // parse data
          for(var i = 0; i < matches.length; i++)
          {
            if(matches[i] != null_var)
            {
              // build image
          		if(matches[i].images != null_var && matches[i].images.length > 0)
          		{
          			var image_url = matches[i].images[matches[i].images.length - 1].filename;
          		}
          		else
          		{
          			var image_url = '../../../images/placeholder.jpg';
          		}

              var html = '<div class="articleBox">'
                +	'	<div class="articleImage">'
                + '   <a href="/article/' + matches[i].articleid + '/' + matches[i].title.gsub(' ','-').gsub(/:|,|'/,'') + '">'
                + '     <img src="/image_cache.php?type=article&file=' + image_url + '&maxx=180&maxy=180&mode=crop" alt"" />'
                + '   </a>'
                + ' </div>'
                +	'	<div class="articleDescription">'
                +	'		<h3 class="articleTitle"><a href="/article/' + matches[i].articleid + '/' + matches[i].title.gsub(' ','-').gsub(/:|,|'/,'') + '">' + matches[i].title + '</a></h3>'
                +	'		<p>' + matches[i].description + '</p>'
                +	'		<p>Author(s): <span class="subtle">' + matches[i].name_display + '</span><br />'
                +	'		Published: <span class="subtle">' + timeAgo(matches[i].dateline) + '</span></p>'
                +	'	</div>'
                +	'	<div class="clear"></div>'
                +	'</div>';

              jQuery('#searchResults').append(jQuery(html));
            }
          
          }
        
          // add pagers
          jQuery.tabs_v2_pager.init(data.searchInfo.total, data.searchInfo.resultsPerPage, data.searchInfo.rows);
        }
        else
        {
          jQuery('#searchResults').html(jQuery('<h3>No Search Results</h3>'));
        }
      },
      'json'
    );
  },
  
  /**
   * runs when page initially loaded.
   */
  loadPage: function(){
    
    log('loadPage: ' + jQuery('#search_str').val() + ' | ' + this.options.searchPlaceholder);
    
    // check for cookies
    if(jQuery('#search_str').val() == this.options.searchPlaceholder && jQuery.cookie('SEARCH_ZONE') == 'articles' && jQuery('#' + jQuery.cookie('SEARCH_TAB')).length == 1)
    {
      log('loadPage: loading from cookie')
      
      // set tab active
      // make all inactive
      //jQuery('div.tab').removeClass('active');

      // make this active
      //jQuery('#' + jQuery.cookie('SEARCH_TAB')).addClass('active');
      
      // set search str
      jQuery('#search_str').val(jQuery.cookie('SEARCH_STRING'));
      jQuery('#search_str').attr('value', jQuery.cookie('SEARCH_STRING'));
      
      // set page
      jQuery('#current_page').val(jQuery.cookie('SEARCH_PAGE'));
    }
    
    // click active tab
    jQuery('.tab.active').trigger('click');
    
  }
  
};
