var tab_actions = {
  
  options: {
    searchPlaceholder: 'Search for a recipe...',
    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 'recipes-tab':
        log('tab_action.tabClicked | clicked: recipes');
        
        // clear favs flag from form
        jQuery('#favs').attr('value', 0);
        
        // clear featured flag
        jQuery('#featured').attr('value', 0);
        
        // clear use uid flag
        jQuery('#use_uid').attr('value', 0);
        
        // show categories list if not searching specific category
        log('#recipe_category.val(): ' + jQuery('#recipe_category').val());
        
        //         if(jQuery('#recipe_category').val() == 0 && jQuery('#search_str').val() == this.options.searchPlaceholder)
        // {
        //   this.showCategories();
        // }
        // else
        // {
        //   // get search
        //           this.runSearch();
        // }
        
        // get search
        this.runSearch();
        
        break;
      case 'featured-tab':
        log('tab_action.tabClicked | clicked: featured');
        
        // clear favs flag from form
        jQuery('#favs').attr('value', 0);
        
        // set featured flag
        jQuery('#featured').attr('value', 1);
        
        // clear use uid flag
        jQuery('#use_uid').attr('value', 0);
        
        // clear category search flag
        jQuery('#recipe_category').val(0);
        
        // hide categories listing
        this.hideCategories();
        
        // get search
        this.runSearch();
        
        break;
      case 'favourites-tab':
        log('tab_action.tabClicked | clicked: favourites');
        
        // add friends flag to form
        jQuery('#favs').attr('value', 1);
        
        // clear featured flag
        jQuery('#featured').attr('value', 0);
        
        // set use uid flag
        jQuery('#use_uid').attr('value', 1);
        
        // clear category search flag
        jQuery('#recipe_category').val(0)
        
        // hide categories listing
        this.hideCategories();
        
        // get search
        this.runSearch();
        
        break;
      case 'myrecipes-tab':
        log('tab_action.tabClicked | clicked: myrecipes');
        
        // clear favs flag from form
        jQuery('#favs').attr('value', 0);
        
        // clear featured flag
        jQuery('#featured').attr('value', 0);
        
        // set use uid flag
        jQuery('#use_uid').attr('value', 1);
        
        // clear category search flag
        jQuery('#recipe_category').val(0);
        
        // hide categories listing
        this.hideCategories();
        
        // get search
        this.runSearch();
        
        break;
    }
    
  },
  
  showCategories: function () {
    // jQuery('#recipeCategoryContainer').show();
    //     jQuery('#categoryHead').hide();
    // jQuery('#liveSearchWrap').hide();
    
    jQuery('#recipeCategoryContainer').hide();
    jQuery('#categoryHead').hide();
    jQuery('#liveSearchWrap').show();
	},
	
	hideCategories: function(){
    jQuery('#recipeCategoryContainer').hide();
    // if(recipeCategory == null)
    // {
      jQuery('#categoryHead').hide();
    // };
    jQuery('#liveSearchWrap').show();
	},
  
  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('recipes', this.options.function_name, search_str, jQuery('#current_page').val());

      // add featured to string if searching featured
      if(jQuery('#featured').val() == 1)
      {
        search_str += ' @featured_search _feat1';
      }

      // add uid to string if searching friends
      if(jQuery('#use_uid').val() == 1)
      {
        search_str += ' @memberid _uid' + jQuery('#uid').val();
      }

      // apply category filter if needed
      if(jQuery('#recipe_category').val() > 0)
      {
        search_str += ' @category_id _cat' + jQuery('#recipe_category').val();
      }

      // build search obj
      var search_obj = {
        favs: jQuery('#favs').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/recipesadv.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[0].filename != null_var)
          		{
          			var image_url = '/image_cache.php?type=recipe&file=' + matches[i].images[0].filename + '&maxx=150&maxy=150&mode=crop';
          		}
          		else
          		{
          		  var image_url = '/image_cache.php?type=recipe&file=../../../images/placeholder.jpg&maxx=150&maxy=150&mode=crop';
          		}

              var html =	'<div class="articleBox"><ul class="listTwoColumns">'
          				+	'	<li>'
          				+	'<a href="/recipe/' + matches[i].recipeid + '/' + matches[i].title.gsub(' ','-') + '">' + '<img src="'+image_url+'"/>' + '</a>'
          				+	'	</li>'
          				+	'	<li>'
          				+	'		<h3>'
          				+	'			<a href="/recipe/' + matches[i].recipeid + '/' + matches[i].title.gsub(' ','-') + '">' + matches[i].title + '</a>'
          				+	'		</h3>'
          				+	'		<!--<p class="subtle">Published: ' + timeAgo(matches[i].dateline) + '</p>-->'
          				+	'	</li>'
          				+	'</ul>'
          				+	'<div class="clear"></div>'
          				+ '</div>';

              jQuery('#searchResults').append(jQuery(html));
              
              // insert text ad
              if(i == 2 || i == 7)
              {
                var ad_frame = '<div class="texAdWrap" class="articleBox"><iframe src="includes/ad_server/searchAds/recipeSearchTextAd.php" style="" width="100%"></iframe></div>';
                
                jQuery('#searchResults').append(ad_frame);
              }
            }
            
          }
          
          // add pagers
          jQuery.tabs_v2_pager.init(data.searchInfo.total, data.searchInfo.resultsPerPage, data.searchInfo.rows);
        }
        else
        {
          emptySearch();
        }
      },
      'json'
    );
  },
  
  /**
   * runs when page initially loaded.
   */
  loadPage: function(){
    
    // check for cookies
    if(jQuery('#search_str').val() == this.options.searchPlaceholder && jQuery.cookie('SEARCH_ZONE') == 'recipes' && jQuery('#' + jQuery.cookie('SEARCH_TAB')).length == 1)
    {
      // set tab active
      // make all inactive
      //jQuery('div#tabWrap 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');
    
  }
};
