var currentNavItem = "";
var currentSubnavItem = "";
var displayAdvancedSearch = false;
var HELPER_TEXT_KEYWORDS = "Keywords";
var HELPER_TEXT_MIN_FEE = "Minimum fee ($USD)";
var HELPER_TEXT_MAX_FEE = "Maximum fee ($USD)";
var isSearchPage = false;
var hasNewsTicker = false;

//XHTML does not accept the target attribute in links anymore
//So here's code to open links in a new window
//Pulled from http://www.sitepoint.com/article/standards-compliant-world
function externalLinks() {
 if (!document.getElementsByTagName) return;
 var anchors = document.getElementsByTagName("a");
 for (var i=0; i<anchors.length; i++) {
   var anchor = anchors[i];
   if (anchor.getAttribute("href") &&
       anchor.getAttribute("rel") == "external")
     anchor.target = "_blank";
 }
} 

function setCurrentNavItem(navId, subnavId) {
  currentNavItem = "nav_" + navId;
  currentSubnavItem = subnavId;
};

function setDisplayAdvancedSearch(doDisplay) {
  displayAdvancedSearch = doDisplay;
}

function setIsSearchPage(is) {
  isSearchPage = is;
}

function setNewsTicker(has) {
    hasNewsTicker = has;
}

function showAdvancedSearch() {
    $('#show_advanced_search').hide();
    $('#advanced_search').fadeIn("slow");
    $('div.search').height(370);
    $('#keywords').val(HELPER_TEXT_KEYWORDS);
    $('#minFee').val(HELPER_TEXT_MIN_FEE);
    $('#maxFee').val(HELPER_TEXT_MAX_FEE);
    return false;
}

function initListings() {
    $(".listing").tooltip({
	track: true,
	delay: 0,
	showURL: false,
	fixPNG: true,
	showBody: " :: ",
	top: -15,
	left: 5,
	extraClass: "tooltip"
    });
}

function setDefaultHowInfoCopy() {
    $("#how_info").html("Salesconx offers tailored programs for every type of member&mdash;whether a prospective client or a potential Selling Expert.");
}

function initHowRollovers() {
    $('#how_smb_link').hover(function() {
      $("#how_info").html("Maximize budgets and decrease spending. Salesconx's pay-per-performance model is ideal for established and growing businesses.");
	}, function() {setDefaultHowInfoCopy()});

    $('#how_enterprise_link').hover(function() {
      $("#how_info").html("Dedicated support and individually tailored solutions available for organizations interested in larger programs.");
	}, function() {setDefaultHowInfoCopy()});

    $('#how_selling_expert_link').hover(function() {
      $("#how_info").html("Qualify to participate in opportunities that could earn generous referral fees just by leveraging your experience.");
	}, function() {setDefaultHowInfoCopy()});
}

function categoryTemplate(item) {
  return "<option value='" + item.Value + "'>" + item.Text + "</option>"; 
};

function categoryMatch(selectedValue) {
  return this.When == selectedValue; 
};

function cascadeCategories(parentElementName, childElementName, isSearchCascade) {
    if (typeof isSearchCascade == "undefined") {
	isSearchCascade = false;
    }
    $(childElementName).cascade($(parentElementName),{				
      ajax: { 
		url: '/category/update_cascade.php' + (isSearchCascade ? '?include_all' : '')
      },		
      template: categoryTemplate,
      match: categoryMatch 			
    });
}

function getSearchParameters(scrub) {
    //Get rid of all the helper text
    keywords = $("#keywords").val();
    if(keywords == HELPER_TEXT_KEYWORDS) {
     keywords = "";
     if(scrub) $("#keywords").val("")
    }

    min_fee = $("#minFee").val();
    if(min_fee == HELPER_TEXT_MIN_FEE) {
      min_fee = "";
      if(scrub) $("#minFee").val("")
    }

    max_fee = $("#maxFee").val();
    if(max_fee == HELPER_TEXT_MAX_FEE) {
      max_fee = "";
      if(scrub) $("#maxFee").val("")
    }

    // Strip out helper dollar signs
    min_fee = min_fee.replace("$","");
    max_fee = max_fee.replace("$","");

    search_parameters = {
      keywords: keywords,
      minFee: min_fee,
      maxFee: max_fee,
      state:   $("#state").val(),
      // Listing::formInputToArray looks for categoryId if industry_type is not set
      categoryId:   $("#business_sector_search").val(), 
      industry_type:   $("#industry_type_search").val(), 
      listing_type:   $("#listing_type").val() };

    return search_parameters;
}

function newsTicker(elementName) {
    $(elementName).serialScroll({
		items:'div',
		duration:4000,
		force:true,
		axis:'y',
		easing:'linear',
		interval:1, // yeah! I now added auto-scrolling
		step:2, // scroll 2 news each time
		cycle: true
	});
}

$(document).ready(function(){
  //Prepare any links that need to open in a new window
  externalLinks(); 

  // Highlight current tab
  $("#" + currentNavItem).addClass("current");
  $("#" + currentSubnavItem).addClass("current");

  // Show categories cascade
  if($("#industry_type").length > 0 && $("#business_sector").length > 0) {
      cascadeCategories("#business_sector","#industry_type");
  }

  // Show categories cascade with All option for subcategory on search pages
  if($("#industry_type_search").length > 0 && $("#business_sector_search").length > 0) {
      cascadeCategories("#business_sector_search","#industry_type_search",true);
  }

  // Hide advanced search
  if(!displayAdvancedSearch)
    $("#advanced_search").hide();
  else
    showAdvancedSearch();

  // Homepage rollovers
  setDefaultHowInfoCopy();
  initHowRollovers();

  // Homepage ticker
  if(hasNewsTicker)
    newsTicker("#recent-activity");

  // Init listings
  if($(".listing").length > 0)
    initListings();

  // Handle search form submissions
  $("form#search_form").submit(function(){ 
  if(!isSearchPage) {
      getSearchParameters(true);
      return;
  }
  $("#marketplace").fadeOut("fast");
  $("#marketplace").hide();
  $.post("/listing/update_listing_set.php",
	  getSearchParameters(),
          function(html) { 
	    $("#marketplace").fadeIn("slow");
            $("#marketplace").html(html); 
	  });
    return false;
  });

  // Subscribe to search
  $("a#subscribe_link").click(function() {
    $.post("/search_feed/subscribe.php",
      getSearchParameters(),
      function(html) { 
	$("#subscribe_container").hide();
        $("#thanks_container").fadeIn("slow"); 
        $("#thanks_container").html(html); 
      });
    return false;
  });
});

