	// Site specific functions

	//set the search url based on the domain
	var myCustomSearchUrl = (location.hostname.indexOf('turner.com') > 0) ? "http://srchp1devws1.turner.com:8080/pgatour-search/query.jsp" : "http://searchapp.pgatour.com/pgatour-search/query.jsp";
	var myPgaMetaSearchUrl = (location.hostname.indexOf('turner.com') > 0) ? "http://srchp1devws1.turner.com/pgatour/golfMetas.jsp" : "http://searchapp.pgatour.com/pgatour/golfMetas.jsp";
	var cdnUrl = (location.hostname.indexOf('turner.com') > 0) ? "" : "http://i.cdn.turner.com/pgatour";
	var relatedLinks = "<div class='tourSearchSubhead'>Related Links</div>";
	var allStats = "&gt; All Stats: <a href='http://www.pgatour.com/r/stats/' class='tourSearchBold'>PGA TOUR</a> | <a href='http://www.pgatour.com/s/stats/' class='tourSearchBold'>Champions Tour</a> | <a href='http://www.pgatour.com/h/stats/' class='tourSearchBold'>Nationwide Tour</a><br />";
	
	function escapeQuery(q){
		if(q.indexOf('+')>0){
			q = q.replace(/\+/g,' ');
		}
		return unescape(q);
	}
	
	Array.prototype.contains = function(obj) {
	  var i = this.length;
	  while (i--) {
	    if (this[i] === obj) {
		  return true;
	    }
	  }
	  return false;
	}
	
	function golfMetas(jsonObj)
	{
		var results = jsonObj.results[0];
		var queryTerm = jsonObj.criteria[0].queries;
		var html = new Array();
		var rCount = results.length;
		var finalHtml = '';
		var metas = '';
		
		/* Marketing terms display in a different format
			Any updates to marketingTerms will also need to be captured
			in marketingFormat() unless it's shot tracker.
			If it's shot tracker, only marketingTerms need to be updated.
		*/
		var marketingTerms = ["iphone","i phone","ipod","itouch","live@","live at","liveat","charles schwab cup points","driving","greens","putting","putts","scoring", "money","fedexcup","fec","fedex","fedex cup","fedexcup race","fedexcup title","fedexcup winner","fedexcup champion","kodak","kodak challenge","citi","mentor","citi mentor program","shot tracker","pga tour shot tracker","shottracker","charity","together","tap","together anything is possible"];
		var isMarketingTerm = marketingTerms.contains(searchTerm.toLowerCase());
		
		if (jsonObj.results[0][0] && !isMarketingTerm){
			html.push("<div class='searchHeader'>You searched for: \""+ queryTerm +"\"</div>");
			//another hardcode hack for Presidents Cup, that would be nice to fix
			if (rCount > 1  && queryTerm != 'Presidents Cup') {
				var mSearchHdr = "<span class='tourSearchSubhead'>Also matching: </span>";
				var mHtml = new Array();
				for (var count = 0; count < rCount; count++) {
					metas = results[count];
					var queryArgs = escape(metas.name) + "&id=" + metas.id;
					if (metas.spotlight == 'y'){
						html = buildPlayerRelateds(metas, queryTerm);
					} else {
						mHtml.push(" <a href='/search/?text="+ queryArgs +"'>" + metas.name + "</a>");
					}
				}
				html.push("<div class='tourSearchAlso'>" + mSearchHdr + mHtml + "</div>");
				
			} else {
				metas = results[0];
				var metaType = metas.type;
				if (metaType == 'player') {
					html = buildPlayerRelateds(metas, queryTerm);
				} else if (metaType == 'tournament') {
					/*
					 * Add tournament code to offDomainIds[], then
					 * add html to offDomainTerms()
					 */
					var offDomainIds = ["r014","r026","r100","r033"];
					var isOffDomain = offDomainIds.contains(metas.url);
					// Ends check for off domain tournament
					if (!isOffDomain) {
						html = buildTournamentRelateds(metas, queryTerm);
					} else {
						html = offDomainTerms(metas.url);
					}
				} else {
					html.push(relatedLinks);
					html.push("&gt; " + metas.name + ": <a href='http://www.pgatour.com/r/stats/info/?" + metas.url + "' class='tourSearchBold'>PGA TOUR</a> | <a href='http://www.pgatour.com/s/stats/info/?" + metas.url + "' class='tourSearchBold'>Champions Tour</a> | <a href='http://www.pgatour.com/h/stats/info/?" + metas.url + "' class='tourSearchBold'>Nationwide Tour</a><br />");
					html.push(allStats);
				}
			}
		} else if (isMarketingTerm) {
			html = marketingFormat(searchTerm);
		}

		finalHtml = html.join("");
		return finalHtml;
	}
	
	function buildPlayerRelateds (metasObj, queryTerm) {
		var html = new Array();
		var playerUrl = 'http://www.pgatour.com/players/';
		var name = metasObj.name;
		var url = metasObj.url;
		var tour = metasObj.tour;
		var performanceTitle = "FedExCup Performance";

		if (tour == 'h'){
			performanceTitle = "The 25 (Money List) Performance";
		} else if (tour == 's') {
			performanceTitle = "Charles Schwab Cup Performance";
		}
		html.push("<div class='searchHeader'>You searched for: \""+ queryTerm +"\"</div>");
		html.push("<div class='ThreeColLeft'><a href='http://www.pgatour.com/players/" + url + "/'><img src='http://i.pgatour.com/pgatour/players/" + url + "/images/headshot-72x82.jpg' width='72' height='82'/></a></div>");
		html.push("<div class='ThreeColMid'>");
			html.push(relatedLinks);
			html.push("<a href='" + playerUrl + url + "/' class='tourSearchBold'>&gt; " + name + " Page</a><br />");
			html.push("<a href='" + playerUrl + tour + "/?/" + url + "/perform' class='tourSearchBold'>&gt; " + performanceTitle + "</a><br />");
			html.push("<a href='" + playerUrl + tour + "/?/" + url + "/results' class='tourSearchBold'>&gt; Year-to-Date & Career Results</a><br />");
			html.push("<a href='" + playerUrl + tour + "/?/" + url + "/stats' class='tourSearchBold'>&gt; Year-to-Date & Career Stats</a><br />");
		html.push("</div>");
		html.push("<div class='ThreeColRight'>");
			html.push("<a href='" + playerUrl + tour + "/?/" + url + "/career' class='tourSearchBold'>&gt; Year-to-Date & Career Details</a><br />");
			html.push("<a href='" + playerUrl + tour + "/?/" + url + "/streak' class='tourSearchBold'>&gt; Year-to-Date & Career Streaks</a><br />");
			html.push("<a href='" + playerUrl + tour + "/?/" + url + "/media' class='tourSearchBold'>&gt; Media Guide</a><br />");
			html.push("<a href='" + playerUrl + tour + "/?/" + url + "/scorecards' class='tourSearchBold'>&gt; Archived Scorecards</a><br />");
		html.push("</div>");
		return html;
	}
	
	function buildTournamentRelateds(metasObj, queryTerm) {
		var html = new Array();
		var tournyUrl = 'http://www.pgatour.com/tournaments/';
		var ldrBoardUrl = 'http://www.pgatour.com/leaderboards/current/'
		var name = metasObj.name;
		var url = metasObj.url;
		
		//hardcoded overrides for president's cup
		//TODO: create a way to handle custom related links that won't require bad hacks like this
		if (url == 'r500'){
			url = 'presidentscup';
			
			html.push("<div class='searchHeader'>You searched for: \""+ queryTerm +"\"</div>");
			html.push("<div class='ThreeColLeft'><a href='http://www.pgatour.com/tournaments/" + url + "/'><img src='http://i.pgatour.com/pgatour/.element/img/3.0/sect/tournaments/" + url + "/tourn_logo.gif' width='145' height='90'/></a></div>");
			html.push("<div class='ThreeColMid'>");
			html.push(relatedLinks);
			html.push("<a href='" + tournyUrl + url + "/' class='tourSearchBold'>&gt; Tournament Homepage</a><br />");
			html.push("<a href='" + tournyUrl + url + "/scoring/' class='tourSearchBold'>&gt; Leaderboard</a><br />");
			html.push("<a href='" + tournyUrl + url + "/tickets.html' class='tourSearchBold'>&gt; Tickets</a><br />");
			html.push("<a href='http://www.pgatour.com/2009/tournaments/presidentscup/09/21/about2009/index.html' class='tourSearchBold'>&gt; Field</a><br />");
			html.push("</div>");
			html.push("<div class='ThreeColRight'>");
			html.push("<a href='" + tournyUrl + url + "/spectator-schedule/' class='tourSearchBold'>&gt; Tee Times</a><br />");
			html.push("<a href='" + tournyUrl + url + "/course.html' class='tourSearchBold'>&gt; Course</a><br />");
			html.push("<a href='" + tournyUrl + url + "/past_results.html' class='tourSearchBold'>&gt; Past Results</a><br />");
			html.push("<a href='" + tournyUrl + url + "/career_records.html' class='tourSearchBold'>&gt; Past Winners</a><br />");
			html.push("</div>");	
		} else {
			html.push("<div class='searchHeader'>You searched for: \""+ queryTerm +"\"</div>");
			html.push("<div class='ThreeColLeft'><a href='http://www.pgatour.com/tournaments/" + url + "/'><img src='http://i.pgatour.com/pgatour/.element/img/3.0/sect/tournaments/" + url + "/tourn_logo.gif' width='145' height='90'/></a></div>");
			html.push("<div class='ThreeColMid'>");
			html.push(relatedLinks);
			html.push("<a href='" + tournyUrl + url + "/' class='tourSearchBold'>&gt; Tournament Homepage</a><br />");
			html.push("<a href='" + ldrBoardUrl + url + "/' class='tourSearchBold'>&gt; Leaderboard</a><br />");
			html.push("<a href='" + tournyUrl + url + "/tickets.html' class='tourSearchBold'>&gt; Tickets</a><br />");
			html.push("<a href='" + tournyUrl + url + "/field.html' class='tourSearchBold'>&gt; Field</a><br />");
			html.push("</div>");
			html.push("<div class='ThreeColRight'>");
			html.push("<a href='" + tournyUrl + url + "/tee-times.html' class='tourSearchBold'>&gt; Tee Times</a><br />");
			html.push("<a href='" + tournyUrl + url + "/course.html' class='tourSearchBold'>&gt; Course</a><br />");
			html.push("<a href='" + tournyUrl + url + "/results.html' class='tourSearchBold'>&gt; Past Results</a><br />");
			html.push("<a href='" + tournyUrl + url + "/winners.html' class='tourSearchBold'>&gt; Past Winners</a><br />");
			html.push("</div>");
		}
		return html;	
	}
	
	function offDomainTerms (url){
		var tournyId = url;
		var html = new Array();
		var d = new Date();
		var tournyDomain = 'http://www.majorschampionships.com';
		var tournyName = '';
		var tournyUrl = '';
		var tTickets = '';
		var tournyYear = d.getFullYear();
		var tLdrTTimes = tournyYear + '/scoring';
		var tNews = tournyYear + '/news';
		var tPhotoG = tournyYear + '/multimedia/photo';
		var tField = tournyYear + '/players/field.cfm';
		var tCourse = tournyYear + '/course/';
		var tPstWins = tournyYear + '/history/';
		var pgaShop = "http://www.shoppga.com";
		
		if (tournyId == 'r014'){
			tournyName = '/masters/';
		} else if (tournyId == 'r026') {
			tournyName = '/usopen/';
			tField = tournyYear + '/players/usopen_field.cfm';
		} else if (tournyId == 'r100') {
			tournyDomain = 'http://www.pga.com';
			tournyName = '/openchampionship/';
			tField = tournyYear + '/players/open_championship_field.cfm';
		} else if (tournyId == 'r033') {
			tournyDomain = 'http://www.pga.com';
			tournyName = '/pgachampionship/';
			tField = tournyYear + '/players/';
			tTickets = 'https://ems.pgalinks.com/ticketing/index.cfm?action=sale&sale_id=22';
		}
		
		tournyUrl = tournyDomain + tournyName;

		html.push("<div class='ThreeColLeft'><a target='new' href='" + tournyUrl + "'><img src='http://i.pgatour.com/pgatour/.element/img/3.0/sect/tournaments/" + tournyId + "/tourn_logo.gif' width='145' height='90'/></a></div>");
		html.push("<div class='ThreeColMid'>");
		html.push(relatedLinks);
		html.push("<a target='new' href='" + tournyUrl + "' class='tourSearchBold'>&gt; Tournament Homepage</a><br />");
		html.push("<a target='new' href='" + tournyUrl + tLdrTTimes + "' class='tourSearchBold'>&gt; Leaderboard & Tee Times</a><br />");
		if (tournyId == 'r033') {
			html.push("<a target='new' href='" + tournyUrl + tTickets + "' class='tourSearchBold'>&gt; Tickets</a><br />");
		}
		html.push("<a target='new' href='" + tournyUrl + tNews + "' class='tourSearchBold'>&gt; News</a><br />");
		html.push("<a target='new' href='" + tournyUrl + tPhotoG + "' class='tourSearchBold'>&gt; Photo Gallery</a><br />");
		html.push("</div>");
		html.push("<div class='ThreeColRight'>");
		html.push("<a target='new' href='" + tournyUrl + tField + "' class='tourSearchBold'>&gt; Field</a><br />");
		html.push("<a target='new' href='" + tournyUrl + tCourse + "' class='tourSearchBold'>&gt; Course</a><br />");
		html.push("<a target='new' href='" + tournyUrl + tPstWins + "' class='tourSearchBold'>&gt; Past Winners</a><br />");
		if (tournyId == 'r033') {
			html.push("<a target='new' href='" + pgaShop + "' class='tourSearchBold'>&gt; PGA Shop</a><br />");
		}
		html.push("</div>");

		return html;
	}
	
	function marketingFormat(queryTerm){
		var html = new Array();
		var marketTerm = queryTerm.toLowerCase();
			
		html.push("<div class='searchHeader'>You searched for: \""+ queryTerm +"\"</div>");
		if (marketTerm.match(/(fedexcup|fec|fedex|fedex cup|fedexcup race|fedexcup title|fedexcup winner|fedexcup champion)/g)){
			html.push("<div class='ThreeColLeft'><a href='/fedexcup/'><img src='http://i.pgatour.com/pgatour/.element/img/3.0/sect/fedexcup/fedexcup.gif' width='145' height='90'/></a></div>");
			html.push("<div class='ThreeColMid'>");
				html.push(relatedLinks);
				html.push("<a href='/fedexcup/' class='tourSearchBold'>&gt; FedExCup homepage</a><br />");
				html.push("<a href='/r/stats/info/?02394' class='tourSearchBold'>&gt; FedExCup Standings</a><br />");
				html.push("<a href='/r/stats/info/?02396' class='tourSearchBold'>&gt; FedExCup Bonus Money</a><br />");
			html.push("</div>");
			html.push("<div class='ThreeColRight'>");
				html.push("<a href='/2008/fedexcup/11/25/2009changes.release/index.html' class='tourSearchBold'>&gt; Playoffs Guide</a><br />");
				html.push("<a href='/2008/fedexcup/08/18/trophy_story/index.html' class='tourSearchBold'>&gt; About the FedExCup Trophy</a><br />");
				html.push("&gt; All Stats: <a href='/r/stats/' class='tourSearchBold'>PGA TOUR</a><br />");
			html.push("</div>");
		} else if (marketTerm.match(/(driving)/g)){
			html.push("<div class='ThreeColLeft'>");
				html.push(relatedLinks);
				html.push("&gt; Driving Accuracy Percentage: <a href='http://www.pgatour.com/r/stats/info/xm.html?102' class='tourSearchBold'>PGA TOUR</a> | <a href='http://www.pgatour.com/s/stats/info/?102' class='tourSearchBold'>Champions Tour</a> | <a href='http://www.pgatour.com/h/stats/info/?102' class='tourSearchBold'>Nationwide Tour</a><br />");
				html.push("&gt; Driving Distance: <a href='http://www.pgatour.com/r/stats/info/xm.html?101' class='tourSearchBold'>PGA TOUR</a> | <a href='http://www.pgatour.com/s/stats/info/?101' class='tourSearchBold'>Champions Tour</a> | <a href='http://www.pgatour.com/h/stats/info/?101' class='tourSearchBold'>Nationwide Tour</a><br />");
				html.push("&gt; Longest Drives: <a href='http://www.pgatour.com/r/stats/info/xm.html?159' class='tourSearchBold'>PGA TOUR</a> | <a href='http://www.pgatour.com/s/stats/info/?159' class='tourSearchBold'>Champions Tour</a> | <a href='http://www.pgatour.com/h/stats/info/?159' class='tourSearchBold'>Nationwide Tour</a><br />");
			html.push("</div>");
			html.push("<div class='ThreeColRight'>");
				html.push("&gt; Total Driving: <a href='http://www.pgatour.com/r/stats/info/xm.html?129' class='tourSearchBold'>PGA TOUR</a> | <a href='http://www.pgatour.com/s/stats/info/?129' class='tourSearchBold'>Champions Tour</a> | <a href='http://www.pgatour.com/h/stats/info/?129' class='tourSearchBold'>Nationwide Tour</a><br />");
				html.push(allStats);
			html.push("</div>");
		} else if (marketTerm.match(/(scoring)/g)){
			html.push("<div class='ThreeColLeft'>");
				html.push(relatedLinks);
				html.push("&gt; Live Scoring (PGA TOUR): <a href='http://www.pgatour.com/r/leaderboard/' class='tourSearchBold'>Leaderboard</a> | <a href='http://www.pgatour.com/shottracker/' class='tourSearchBold'>Shot Tracker</a><br />");
				html.push("&gt; Live Scoring (Champions Tour): <a href='http://www.pgatour.com/s/leaderboard/' class='tourSearchBold'>Leaderboard</a><br />");
				html.push("&gt; Live Scoring (Nationwide Tour): <a href='http://www.pgatour.com/h/leaderboard/' class='tourSearchBold'>Leaderboard</a><br />");
			html.push("</div>");
			html.push("<div class='ThreeColRight'>");
				html.push("&gt; Scoring Average (actual): <a href='http://www.pgatour.com/r/stats/info/xm.html?108' class='tourSearchBold'>PGA TOUR</a> | <a href='http://www.pgatour.com/s/stats/info/?108' class='tourSearchBold'>Champions Tour</a> | <a href='http://www.pgatour.com/h/stats/info/?108' class='tourSearchBold'>Nationwide Tour</a><br />");
				html.push("&gt; Scoring Average (adjusted): <a href='http://www.pgatour.com/r/stats/info/xm.html?120' class='tourSearchBold'>PGA TOUR</a><br />");
				html.push(allStats);
			html.push("</div>");
		} else if (marketTerm.match(/(citi|mentor|citi mentor program)/g)){
			html.push("<div class='ThreeColLeft'>");
				html.push(relatedLinks);
				html.push("<a href='/citi/' class='tourSearchBold'>&gt;  Citi Mentor Program homepage</a><br />");
				html.push("<a href='/2008/r/01/10/citi/' class='tourSearchBold'>&gt; What is the Citi Mentor Program?</a><br />");
				html.push("<a href='/photos/?/photos/2009/r/02/19/citi2009' class='tourSearchBold'>&gt; Photo Gallery</a><br />");
			html.push("</div>");
		} else if (marketTerm.match(/(greens)/g)){
			html.push("<div class='ThreeColLeft'>");
				html.push(relatedLinks);
				html.push("&gt; Greens in Regulation: <a href='http://www.pgatour.com/r/stats/info/xm.html?103' class='tourSearchBold'>PGA TOUR</a> | <a href='http://www.pgatour.com/s/stats/info/?103' class='tourSearchBold'>Champions Tour</a> | <a href='http://www.pgatour.com/h/stats/info/?103' class='tourSearchBold'>Nationwide Tour</a><br />");
				html.push("&gt; Putts per Greens in Regulation: <a href='http://www.pgatour.com/r/stats/info/xm.html?104' class='tourSearchBold'>PGA TOUR</a> | <a href='http://www.pgatour.com/s/stats/info/?104' class='tourSearchBold'>Champions Tour</a> | <a href='http://www.pgatour.com/h/stats/info/?104' class='tourSearchBold'>Nationwide Tour</a><br />");
				html.push(allStats);
			html.push("</div>");
		} else if (marketTerm.match(/(money)/g)){
			html.push("<div class='ThreeColLeft'>");
				html.push(relatedLinks);
				html.push("&gt; Money Leaders (YTD): <a href='http://www.pgatour.com/r/stats/info/?109' class='tourSearchBold'>PGA TOUR</a> | <a href='http://www.pgatour.com/s/stats/info/?109' class='tourSearchBold'>Champions Tour</a> | <a href='http://www.pgatour.com/h/stats/info/?109' class='tourSearchBold'>Nationwide Tour</a><br />");
				html.push(allStats);
			html.push("</div>");
		} else if (marketTerm.match(/(putting|putts)/g)){
			html.push("<div class='ThreeColLeft'>");
				html.push(relatedLinks);
				html.push("&gt; Putts Per Round: <a href='http://www.pgatour.com/r/stats/info/xm.html?119' class='tourSearchBold'>PGA TOUR</a> | <a href='http://www.pgatour.com/s/stats/info/?119' class='tourSearchBold'>Champions Tour</a> | <a href='http://www.pgatour.com/h/stats/info/?119' class='tourSearchBold'>Nationwide Tour</a><br />");
				html.push("&gt; Putts per Greens in Regulation: <a href='http://www.pgatour.com/r/stats/info/xm.html?104' class='tourSearchBold'>PGA TOUR</a> | <a href='http://www.pgatour.com/s/stats/info/?104' class='tourSearchBold'>Champions Tour</a> | <a href='http://www.pgatour.com/h/stats/info/?104' class='tourSearchBold'>Nationwide Tour</a><br />");
				html.push(allStats);
			html.push("</div>");
		} else if (marketTerm.match(/(kodak|kodak challenge)/g)){
			html.push("<div class='ThreeColLeft'><a href='/kodakchallenge/'><img src='http://i.pgatour.com/pgatour/.element/img/3.0/sect/kodakchallenge/kodak_challenge.gif' width='145' height='90'/></a></div>");
			html.push("<div class='ThreeColMid'>");
				html.push(relatedLinks);
				html.push("<a href='/kodakchallenge/' class='tourSearchBold'>&gt;  KODAK Challenge homepage</a><br />");
				html.push("<a href='/kodakchallenge/2010/tourofholes/' class='tourSearchBold'>&gt; Hole Tour</a><br />");
				html.push("<a href='/kodakchallenge/2010/standings/' class='tourSearchBold'>&gt; Standings</a><br />");
			html.push("</div>");
			html.push("<div class='ThreeColRight'>");
				html.push("<a href='/kodakchallenge/2010/challenge_schedule/' class='tourSearchBold'>&gt; Schedule</a><br />");
				html.push("<a href='/kodakchallenge/2010/gallery_archive/index.html' class='tourSearchBold'>&gt; Photo Gallery</a><br />");
			html.push("</div>");
		} else if (marketTerm.match(/(iphone|i phone|ipod|itouch)/g)){
			html.push("<div class='ThreeColLeft'><a href='/iphone/'><img src='http://i.pgatour.com/pgatour/.element/img/3.0/sect/iphone/iphone.gif' width='145' height='90'/></a></div>");
			html.push("<div class='ThreeColMid'>");
				html.push(relatedLinks);
				html.push("<a href='/iphone/' class='tourSearchBold'>&gt;  Find out more about our FREE PGA TOUR iPhone app!</a><br />");
			html.push("</div>");
		} else if (marketTerm.match(/(live@|live at|liveat)/g)){
			html.push("<div class='ThreeColLeft'><a href='/livegolf/'><img src='http://i.pgatour.com/pgatour/.element/img/3.0/sect/liveat/live_at.gif' width='145' height='90'/></a></div>");
			html.push("<div class='ThreeColMid'>");
				html.push(relatedLinks);
				html.push("<a href='/livegolf/' class='tourSearchBold'>&gt;  View upcoming live video schedule & watch video highlights</a><br />");
			html.push("</div>");
					} else if (marketTerm.match(/(charity|together|tap|together anything is possible)/g)){
			html.push("<div class='ThreeColLeft'><a href='http://together.pgatour.com/'><img src='http://i.pgatour.com/pgatour/.element/img/3.0/sect/charity/logo_charity_tap.gif'/></a></div>");
			html.push("<div class='ThreeColMid'>");
				html.push(relatedLinks);
				html.push("<a href='http://together.pgatour.com/' class='tourSearchBold'>&gt;  Together Anything's Possible (official website)</a><br />");
			html.push("</div>");
		} else {
			html.push("<div class='ThreeColLeft'><a href='/shottracker/'><img src='http://i.pgatour.com/pgatour/.element/img/3.0/sect/shottracker/shot_tracker.gif' width='145' height='90'/></a></div>");
			html.push("<div class='ThreeColMid'>");
				html.push(relatedLinks);
				html.push("<a href='/shottracker/' class='tourSearchBold'>&gt;  Launch PGA TOUR Shot Tracker</a><br />");
			html.push("</div>");
		}
		
		return html;
	}
	
	function sortSearchBy(type, metaID, index)
	{
		var html = (type == 'Date') ? "<a class='tourSearchBold'>Date</a> | <a href=\"javascript:sortSearchBy('Relevance','"+ metaID +"','"+ index +"')\">Relevance</a>" : "<a href=\"javascript:sortSearchBy('Date','"+ metaID +"','"+ index +"')\">Date</a> | <a class='tourSearchBold'>Relevance</a>";
		document.getElementById(metaID).innerHTML = html;
		type = '&sort='+type;
		coreAddSearchAttribute(type, index);
	}

	function formatTourDate(utsDate){
		var date = new Date(utsDate*1000);
		var month = date.getMonth() + 1;
		var year = date.getFullYear();
		var day  = date.getDate();
		day = (day<10) ? '0'+day.toString() : day.toString();
		month = (month<10) ? '0'+month.toString() : month.toString();
		date = month+'.'+day+'.'+year;
		
		return date;
	}
	
	function totalResults(ContentObj, metaID, resultType){
		var meta = ContentObj.metaResults;
		var firstRes = (ContentObj.criteria[0].startAt);
		var lastRes = (ContentObj.criteria[0].maxResults)
		var nowShowing = firstRes + " - " + lastRes;
		if (meta[resultType]>0){
			if (lastRes > meta[resultType]) {
				nowShowing = firstRes;
			}
			document.getElementById(metaID).innerHTML = "Showing results " + nowShowing + " of " + meta[resultType] + " returned";
		}
	}
	
	function readFile(URL){
		
		var oRequest = null;
		if (window.XMLHttpRequest) {
			oRequest = new XMLHttpRequest();
		} else {
			oRequest = new ActiveXObject("Microsoft.XMLHTTP");
		} 
		var sURL = URL;
		var rText = '';
		oRequest.open("GET",sURL,false);
		oRequest.setRequestHeader("User-Agent",navigator.userAgent);
		oRequest.send(null)

		if (oRequest.status == 200) {
			rText = oRequest.responseText;
		}
		else {
			alert("The following file does not exist: " + sURL);
		}
		
		return rText;
	}

	function noResultsFound (metaID, resultType, didYouMean){

		var finalHtml = '';
		var html = new Array();
		var urlHost = location.host;

		html.push("<div class='tourSearchResultsHead'>");

		if (resultType=='videos'){
			html.push("<div class='tourSearchSubheadRed'>");
			html.push("No video matches for \""+ searchTerm +"\" on PGATOUR.COM</div>");
			html.push("<span class='tourSearchSubhead'>View our latest Video</span> <img src='http://i.cdn.turner.com/pgatour/.element/img/4.0/sect/search/s_video.gif' width='19' height='9'/></div>");
			html.push(readFile('http://' + urlHost + '/.element/ssi/auto/3.0/aps/sect/search/latest_video.html'));
			html.push("<div class='tourSearchMore'><a href='/video'>Video Archive</a></div>");
		} else if(resultType=='audio') {
			html.push("<div class='tourSearchSubheadRed'>");
			html.push("No audio matches for \""+ searchTerm +"\" on PGATOUR.COM</div>");
			html.push("<span class='tourSearchSubhead'>Hear our latest Audio</span> <img src='http://i.cdn.turner.com/pgatour/.element/img/4.0/sect/search/s_audio.gif' width='19' height='9'/></div>");
			html.push(readFile('http://' + urlHost + '/.element/ssi/auto/3.0/aps/sect/search/latest_audio.html'));
			html.push("<div class='tourSearchMore'><a href='/video/?c=/audio/interviews'>Audio Archive</a></div>");
		} else {
			html.push("<div class='tourSearchSubheadRed'>No article matches for \""+ searchTerm +"\" on PGATOUR.COM");
			if (didYouMean != ''){
				html.push("<br/>Did you mean: " + "<a href='/search/?text=" + didYouMean + "'>" + didYouMean + "</a>");
			}
			html.push("</div><p>We recommend you try the following:");			
			html.push("<div class='tourSearchList'>");
			html.push("<li> Check your spelling</li>");
			html.push("<li> Try using fewer words; your search may be too specific</li>");
			html.push("</div></p>");
			html.push("<p>Search again: <form style=\"tourSearhFrom\" action=\"http://" + urlHost +"/search/\" method=\"get\" >");
			html.push("<input name=\"text\" value=\"\" type=\"text\" size=\"30\" />&nbsp;&nbsp;");
			html.push("<input type=\"image\" src=\"http://i.cdn.turner.com/pgatour/.element/img/4.0/sect/search/tourSearchButton.gif\" /></form></p></div></div>");
		}
		
		finalHtml = html.join("");
		document.getElementById(metaID).innerHTML = finalHtml;
		
	}

	//Configuration Objects for each instance must be added even if we are calling multiple instances per call.
	var articleSearchParameters = {
    		queryVariable:'text',
    		contentTypeVariable:'type',
    		firstResultVariable:'start',
    		resultsPerPageVariable:'npp',
    		siteSiloVariable:'s',
    		customSearchUrl: myCustomSearchUrl,
		    extraUrlParameters:'&sort=Date asc',
    		siteSilo: 'all',
			disableDefaultNoContentMessage:true,
    		siteSilo: 'all',
    		maxResultsToRequest: 30, // unused at present
    		pagination: {
		        resultsPerPage: 10,
		        isNumberPaginationActive: true,
		        isPrevNextPaginationActive: true,
		        prevNextMiddleMarkup: '',
		        prevMarkup: '&lt; Back',
		        nextMarkup: 'Next &gt;',
		        isElipseEnabled: false,
		        maxPaginationLinks: 10
		    },
		    contentTypes: [
			    {
			        contentType: 'articles',
			        contentPublishingFunction: articlesPublishingFunction,
			        contentContainerId: 'tourSearchArticle',
			        contentId: 'tourArticleResultsContainer',
			        contentMetaId: 'totalArticleResults',
			        numberPaginationIds: ['tourArticlesPagination', 'tourArticlesPaginationBottom'],
			        prevNextIds: []
			    }
		    ]
		};
			
		var videoSearchParameters = {
	    		queryVariable:'text',
	    		contentTypeVariable:'type',
	    		firstResultVariable:'start',
	    		resultsPerPageVariable:'npp',
	    		siteSiloVariable:'s',
	    		customSearchUrl: myCustomSearchUrl,
			    extraUrlParameters:'&sort=Date asc',
	    		siteSilo: 'all',
				disableDefaultNoContentMessage:true,
				maxResultsToRequest:10,
				pagination:{
					resultsPerPage:5,
					isNumberPaginationActive:true,
					isPrevNextPaginationActive:true,
					prevNextMiddleMarkup: '',
			        prevMarkup: '&lt; Back',
			        nextMarkup: 'Next &gt;',
		        	isElipseEnabled: false,
					maxPaginationLinks:10
				},
				contentTypes:[
					{
						contentType:'videos',
						contentPublishingFunction:videoPublishingFunction,
						contentContainerId:'tourSearchVideo',
						contentId:'tourVideoResultsContainer',
						contentMetaId:'totalVideoResults',
						numberPaginationIds:['tourVideoPagination', 'tourVideoPaginationBottom'],
						prevNextIds:[]
					}
				]
			};
			
		var audioSearchParameters = {
	    		queryVariable:'text',
	    		contentTypeVariable:'type',
	    		firstResultVariable:'start',
	    		resultsPerPageVariable:'npp',
	    		siteSiloVariable:'s',
	    		customSearchUrl: myCustomSearchUrl,
			    extraUrlParameters:'&sort=Date asc',
	    		siteSilo: 'all',
				disableDefaultNoContentMessage:true,
				siteSilo:'',
				maxResultsToRequest:10,
				pagination:{
					resultsPerPage:3,
					isNumberPaginationActive:true,
					isPrevNextPaginationActive:true,
					prevNextMiddleMarkup: '',
			        prevMarkup: '&lt; Back',
			        nextMarkup: 'Next &gt;',
		        	isElipseEnabled: false,
					maxPaginationLinks:10
				},
				contentTypes:[
					{
						contentType:'audio',
						contentPublishingFunction:audioPublishingFunction,
						contentContainerId:'tourSearchAudio',
						contentId:'tourAudioResultsContainer',
						contentMetaId:'totalAudioResults',
						numberPaginationIds:['tourAudioPagination', 'tourAudioPaginationBottom'],
						prevNextIds:[]
					}
				]
			};
			
		//Configuration for multiple instances.
		var multipleSearchParameters = {
    		queryVariable:'text',
    		contentTypeVariable:'type',
    		firstResultVariable:'start',
    		resultsPerPageVariable:'npp',
    		siteSiloVariable:'s',
    		customSearchUrl: myCustomSearchUrl,
		    extraUrlParameters:'&sort=Date asc',
    		siteSilo: 'all',
		    instances: [
			    {
			        configuration: articleSearchParameters
			    },
			    {
			        configuration: videoSearchParameters
			    },
			    {
			        configuration: audioSearchParameters
			    } 
		    ]
		};
			
			
			//Callback functions that create the response markup based on incoming content.
			function articlesPublishingFunction(textContObj, aLookupString)
			{
				var html = new Array();
				var didYouMean = '';
				var metaId = articleSearchParameters.contentTypes[0].contentMetaId;
				var containerID = articleSearchParameters.contentTypes[0].contentContainerId;
				var cntType = articleSearchParameters.contentTypes[0].contentType;
				if(textContObj.results[0][0])
				{
					var resData = textContObj.results[0];
					var resCount = textContObj.criteria[0].startAt;
					totalResults(textContObj, metaId, cntType);
					for(var count=0; count < resData.length; count++)
					{
						if(resData[count])
						{
							var result = resData[count];
							var resultCount = resCount + count;
							var tourDate = formatTourDate(result.mediaDateUts);
							if (result.url)
							{
								html.push("<div class='tourSearchResultsNumber'>"+ resultCount + ".</div>");
								html.push("<div class='tourSearchResultsText'>");
								html.push("<a href='" + result.url + "' class='tourSearchBold'>" + result.title + "</a>");
								html.push("<span class='tourSearchResultsDate'>&nbsp;("+ tourDate +")</span> <br />");
								if (result.metadata.media.excerpt)
								{
									html.push(result.metadata.media.excerpt);
								}
								html.push("</div>");
							}
						}
					}
				}
				else
				{
					if (textContObj.didYouMean) { didYouMean = textContObj.didYouMean; }
					noResultsFound(containerID, cntType, didYouMean);
				}
				var finalContent = html.join("");
				return finalContent;
			}
			
			function videoPublishingFunction(videoContObj, vLookupString)
			{
				
				var html = new Array();
				var metaID = videoSearchParameters.contentTypes[0].contentMetaId;
				var containerID = videoSearchParameters.contentTypes[0].contentContainerId;
				var cntID = videoSearchParameters.contentTypes[0].contentType;
				if(videoContObj.results[0][0])
				{
					var resData = videoContObj.results[0];
					var resCount = videoContObj.criteria[0].startAt;
					totalResults(videoContObj, metaID, cntID);
					for(var count=0; count < resData.length; count++)
					{
						if(resData[count])
						{
							var result = resData[count];
							var resultCount = resCount + count;
							var tourDate = formatTourDate(result.mediaDateUts);
							if (result.url && result.title)
							{
								html.push("<div class='tourSearchResultsNumber'>"+ resultCount + ".</div>");
								if(result.metadata.media.thumbnail.url) {
									html.push("<div class='tourSearchResultsImage'><a href=\"javascript:tourOpen('" + result.url + "');\"><img src='" + result.metadata.media.thumbnail.url +"' width='88' height='49' border='0' class='tourSearchImageBorder' /><img src='http://i.cdn.turner.com/pgatour/.element/img/4.0/sect/search/s_play_arrow.png' width='29' height='27' class='tourSearchPlayArrow' /></a></div>");
								}
								html.push("<div class='tourSearchResultsMedia'>");
								html.push("<img src='http://i.cdn.turner.com/pgatour/.element/img/4.0/sect/search/s_video.gif' width='19' height='9' /><a href=\"javascript:tourOpen('" + result.url + "');\" class='tourSearchBold'>" + result.title +"</a><br />");
								if(result.metadata.media.excerpt) {
									html.push(result.metadata.media.excerpt);
								}
						 		html.push("<br /><span class='tourSearchResultsDate'>" + tourDate);
								if(result.metadata.video.length) {
									html.push("&nbsp;|&nbsp;" + result.metadata.video.length);
								}
								html.push("</span></div>");
							}
						}
					}
				}
				else
				{
					noResultsFound(containerID,cntID);
				}
				
				var finalContent = html.join('');
				return finalContent;
			}
			
			function audioPublishingFunction(audioContObj, pLookupString)
			{
				
				var html = new Array();
				var metaID = audioSearchParameters.contentTypes[0].contentMetaId;
				var containerID = audioSearchParameters.contentTypes[0].contentContainerId;
				var cntID = audioSearchParameters.contentTypes[0].contentType;
				if(audioContObj.results[0][0])
				{
					var resData = audioContObj.results[0];
					var resCount = audioContObj.criteria[0].startAt;
					totalResults(audioContObj, metaID, cntID);
					for(var count=0; count < resData.length; count++)
					{
						if(resData[count])
						{
							var result = resData[count];
							var resultCount = resCount + count;
							var tourDate = formatTourDate(result.mediaDateUts);
							if (result.url && result.title)
							{
								html.push("<div class='tourSearchResultsNumber'>"+ resultCount + ".</div>");
								if(result.metadata.media.thumbnail.url) {
									html.push("<div class='tourSearchResultsImage'><a href=\"javascript:tourOpen('" + result.url + "');\"><img src='" + result.metadata.media.thumbnail.url +"' width='88' height='49' class='tourSearchImageBorder' /></a></div>");
								}
								html.push("<div class='tourSearchResultsMedia'>");
								html.push("<img src='http://i.cdn.turner.com/pgatour/.element/img/4.0/sect/search/s_audio.gif' width='19' height='11' /><a href=\"javascript:tourOpen('" + result.url + "');\" class='tourSearchBold'>" + result.title +"</a><br />");
								if(result.metadata.media.excerpt) {
									html.push(result.metadata.media.excerpt);
								}
						 		html.push("<br /><span class='tourSearchResultsDate'>" + tourDate);
								if(result.metadata.audio.length) {
									html.push("&nbsp;|&nbsp;" + result.metadata.audio.length);								}
								html.push("</span></div>");
							}
						}
					}
				}
				else
				{
					noResultsFound(containerID,cntID);
				}
				var finalContent = html.join("");
				return finalContent;
			}
			
			//for multiple instances per call use this call only at the very end of the configuration document.
			//Make sure all configuration objects and callback functions are present
			SearchProcessor.getInstance().addMultipleSearchInstances(multipleSearchParameters);
			
			//Run this to initialize the Search Processor. This line is required irregardless of configuration above. Must run last.
			SearchProcessor.getInstance().initialize();
			

	function getQueryString(key){
		var queryString = window.location.search.substring(1);
		var query = queryString.split("&");
		for (i=0;i<query.length;i++) {
			var finalText = query[i].split("=");
			if(finalText[0] == key){	
	            return finalText[1];
	        }
		}
	}
		
	var searchTerm = escapeQuery(getQueryString(multipleSearchParameters.queryVariable));
	var csiMgrExtraArgs = '';
	if (getQueryString('id')){
		csiMgrExtraArgs = "&id=" + getQueryString('id');
	}
	var csiMgrArgs = "term=" + escape(searchTerm) + csiMgrExtraArgs;
	CSIManager.getInstance().call(myPgaMetaSearchUrl, csiMgrArgs, 'tourSearchRelatedLinks', golfMetas);

	document.getElementById('searchTerm').innerHTML = "\"" + searchTerm + "\"";
	document.getElementById('videoSearchTerm').innerHTML = "\"" + searchTerm + "\"";
	document.getElementById('audioSearchTerm').innerHTML = "\"" + searchTerm + "\"";
