var isSafari	= navigator.userAgent.indexOf("Safari")>=0;
var isOpera	= navigator.userAgent.indexOf("Opera")>=0;
var isGecko	= navigator.userAgent.indexOf("Gecko")>=0;
var isExplorer	= navigator.userAgent.indexOf("MSIE")>=0;
var ExplorerVersion=null;
if(isExplorer) {
	var VersionParts = navigator.appVersion.split("MSIE");
	ExplorerVersion = parseFloat(VersionParts[1]);
};


var Search_SearchTerm = "";



function BeforeSearch()
{
	var idx;
	var idx_search;
	Searchwords_Array = document.getElementById("BT_SEARCH_INPUT").value.toLowerCase().split(' ');
	for (idx_search=0 ; ((idx_search<Searchwords_Array.length) && (idx_search<500)) ; idx_search++)
	{
		for (idx=0 ; ((idx<Stopwords_Array.length) && (idx<500)) ; idx++)
		{
			if ((Searchwords_Array[idx_search]==Stopwords_Array[idx]) && (Searchwords_Array[idx_search]!=""))
			{
				var Error_message = ErrorMessage_BannedWord;
				if (Error_message.length==0) {Error_message = "The use of the word - [WORD] - is not allowed. Search aborted."};
				Error_message  = Error_message.replace(/\[WORD\]/g,Stopwords_Array[idx]);
				window.alert(Error_message);
				return(false);
			};
		}
	}
	return(true);
}

function ToggleGlobalSearch(NewState)
{

	var idx;
	var obj;
	var Objects  = document.getElementsByName("fi");
	for (idx=0 ; ((idx<Objects.length) && (idx<25)) ; idx++)
	{
		obj = Objects[idx];
		obj.disabled=NewState;
	}
	var Objects  = document.getElementsByName("rlf");
	for (idx=0 ; ((idx<Objects.length) && (idx<25)) ; idx++)
	{
		obj = Objects[idx];
		obj.disabled=NewState;
	}

	var ObjectsContainer  = document.getElementById("searchbyforum");
	if (ObjectsContainer != null)
	{
		if (NewState)
		{
			ObjectsContainer.style.filter="alpha(opacity=50)";
			ObjectsContainer.style.opacity=0.5;
		}
		else
		{
			ObjectsContainer.style.filter="alpha(opacity=100)";
			ObjectsContainer.style.opacity=1;
		}
	}
}


function QueryVar(variable,DefaultValue)
{
	var query = window.location.search.substring(1);
	var vars = query.split("&");

	var Value = "";
	var Seperator = "";

	for (var i=0;i<vars.length;i++)
	{
		var pair = vars[i].split("=");
		if (pair[0] == variable)
		{
			Value = Value + Seperator + pair[1];
			Seperator = ",";
		}
	}

	if (Value == "")
	{// variable not found
		return(DefaultValue);
	}
	else
	{
		return(Value);
	}
}




function ToHTML(string)
{
	return (string.replace(/\+/g,' '));
//	return (decodeURIComponent(string.replace(/\+/g,' ')));
}


function SetHTML_Objects_ByName(Name,valueHTML)
{
	var Objects  = document.getElementsByName(Name);

	var idx;
	var obj;
	for (idx=0 ; ((idx<Objects.length) && (idx<25)) ; idx++)
	{
			obj = Objects[idx];
			obj.innerHTML=valueHTML;
	}
};



function SetValue_Objects_ByName(Name,valueHTML)
{

	var Objects  = document.getElementsByName(Name);
	var idx;
	var obj;
	for (idx=0 ; ((idx<Objects.length) && (idx<25)) ; idx++)
	{
			obj = Objects[idx];
			obj.value=valueHTML;
	}
};



function SetCheck_Objects_ByName(Name,checkedValue)
{

	var Objects  = document.getElementsByName(Name);
	var idx;
	var obj;
	for (idx=0 ; ((idx<Objects.length) && (idx<25)) ; idx++)
	{
			obj = Objects[idx];
			obj.checked=checkedValue;
	}
};



function SetDisplay_Objects_ByName(Name,Display)
{
	var Objects  = document.getElementsByName(Name);
	var idx;
	var obj;
	for (idx=0 ; ((idx<Objects.length) && (idx<25)) ; idx++)
	{
			obj = Objects[idx];
			obj.style.display=Display;
	}
};


function SetHREF_Objects_ByName(Name,HREF)
{
	var Objects  = document.getElementsByName(Name);
	var idx;
	var obj;
	for (idx=0 ; ((idx<Objects.length) && (idx<25)) ; idx++)
	{
			obj = Objects[idx];
			obj.href=HREF;
	}
};



function PopulateResultArray (ThreadLines)
{
	var HTML="";
	var Threadline_Template = document.getElementById("BT_SEARCH_RESULTS_TEMPLATE").innerHTML;
	var Threadline;
	var ThreadlinesHTML = "";

	var ThreadHREF,ThreadTitle,ThreadSnippet,AuthorID,AuthorName,Replies,Views,Created,ThreadTags;
	for (var ArrayIndex=0;ArrayIndex<ThreadLines.length;ArrayIndex++)
	{
		ThreadHREF = ThreadLines[ArrayIndex][0];
		ThreadTitle = ThreadLines[ArrayIndex][1];
		ThreadSnippet = ThreadLines[ArrayIndex][2];
		AuthorID = ThreadLines[ArrayIndex][3];

		AuthorName = ThreadLines[ArrayIndex][4];
		AuthorHREF = ThreadLines[ArrayIndex][5];
		Replies = ThreadLines[ArrayIndex][6];
		Views = ThreadLines[ArrayIndex][7];
		Created = ThreadLines[ArrayIndex][8];

		ThreadTags = ThreadLines[ArrayIndex][9];


		Threadline = Threadline_Template;

		if (isOpera)
		{
			Threadline  = Threadline.replace(/"[^"\[]*\[HREF\]/g,ThreadHREF).replace(/"[^"\[]*%5BHREF%5D/g,ThreadHREF);
		}
		else
		{
			Threadline  = Threadline.replace(/\[HREF\]/g,ThreadHREF).replace(/%5BHREF%5D/g,ThreadHREF);
		};


		Threadline  = Threadline.replace(/%5BTITLE%5D/g,ThreadTitle).replace(/\[TITLE\]/g,ThreadTitle);

		Threadline  = Threadline.replace(/%5BSNIPPET%5D/g,ThreadSnippet).replace(/\[SNIPPET\]/g,ThreadSnippet);
		Threadline  = Threadline.replace(/%5BTAGS%5D/g,ThreadSnippet).replace(/\[TAGS\]/g,ThreadTags);
		Threadline  = Threadline.replace(/%5BAUTHOR_ID%5D/g,AuthorID).replace(/\[AUTHOR_ID\]/g,AuthorID);
		Threadline  = Threadline.replace(/%5BAUTHOR_NAME%5D/g,AuthorName).replace(/\[AUTHOR_NAME\]/g,AuthorName);
		Threadline  = Threadline.replace(/%5BAUTHOR_URL%5D/g,AuthorHREF).replace(/\[AUTHOR_URL\]/g,AuthorHREF);
		Threadline  = Threadline.replace(/%5BREPLIES%5D/g,Replies).replace(/\[REPLIES\]/g,Replies);
		Threadline  = Threadline.replace(/%5BVIEWS%5D/g,Views).replace(/\[VIEWS\]/g,Views);
		Threadline  = Threadline.replace(/%5BCREATED%5D/g,Created).replace(/\[CREATED\]/g,Created);

		Threadline  = Threadline.replace(/%5BSEARCH%5D/g,Search_SearchTerm).replace(/\[SEARCH\]/g,Search_SearchTerm);

		ThreadlinesHTML = ThreadlinesHTML + Threadline;
	}

	var TableObject = document.getElementById("BT_SEARCH_RESULTS_TABLE");

	if (isSafari || isGecko)
	{
		TableObject.innerHTML = TableObject.innerHTML + ThreadlinesHTML;
	}
	else
	{
		TableObject.outerHTML =  TableObject.outerHTML.replace(/\<\/TABLE\>/,ThreadlinesHTML+"</TABLE>");
	};
}



function FindCharset()
{
	function lc(Text){return Text.toLowerCase()}

	var METAs = document.getElementsByTagName("META");
	for (var RunIndex=0; RunIndex<METAs.length; RunIndex++)
	{
		if (lc(METAs[RunIndex].httpEquiv) == "content-type")
		{
			var RE = new RegExp("charset=([a-z0-9\-]+)");
			var Matches = RE.exec(lc(METAs[RunIndex].content));
			if (Matches) {return(Matches[1])};
		};
	};
	return("")
}


function SearchExecute()
{
	Search_SearchTerm = QueryVar("q",Search_SearchTerm_Default);

	if (Search_SearchTerm == "")
	{//Check for /tag/
		var RE = new RegExp(".*/tag/([^/]+)");
		var Matches = RE.exec(window.location);
		if (Matches) {Search_SearchTerm = Matches[1]};

	}

	//Check if advanced pane should be opened
	if (QueryVar("adv",0) == 1)
	{
		if (document.getElementById("collapseobj_search_adv")) {document.getElementById("collapseobj_search_adv").style.display=""}; //VB option
	};



	//Only used when searching for other than the default (tags search)
	var Search_For_Var;
	var Search_For_STR = "";
	try {
		Search_For_Var = QueryVar("t",Search_For);
		if (Search_For != 0) {Search_For_STR = 't='+Search_For_Var+"&"};
	}
	catch (e)
	{
	};


	//Only used when searching for tags
	var Search_TagsLinkType_Var;
	var Search_TagsLinkType_STR = "";
	try {
		Search_TagsLinkType_Var = QueryVar("lt",Search_Tag_Link_Type);
		if ((Search_TagsLinkType_Var==1) || (Search_TagsLinkType_Var==2) || (Search_TagsLinkType_Var==3))
			{Search_TagsLinkType_STR = 'lt='+Search_TagsLinkType_Var+"&"};
	}
	catch (e)
	{
	}


	Search_Order = QueryVar("o",Search_Order);
	var Search_User = QueryVar("a","");
	var Search_UserID = QueryVar("ai","");
	Search_Scope = QueryVar("d",Search_Scope);
	Search_Category = QueryVar("c",Search_Category);

	var Search_RelForums = QueryVar("rlf",0);
	var Search_Global = QueryVar("g",0);
	var Search_OpOnly = QueryVar("op",0);
	var Search_Forums = QueryVar("fi","-1");

	var Search_AdditionalParams = "";


	var Search_User_STR = "";
	if (Search_User != "")
		{Search_User_STR = 'a='+Search_User+"&"};


	var Search_UserID_STR = "";
	if (Search_UserID != "")
		{Search_UserID_STR = 'ai='+Search_UserID+"&"};


	//Charset setting is optional
	var Search_CharSet = FindCharset();
	var Search_CharSet_STR = "";
	if (Search_CharSet != "")
		{Search_CharSet_STR = 'cs='+Search_CharSet+"&"};



	//Invision support
	var Pagenav_Additional = QueryVar("pgnv","");
	if (Pagenav_Additional.length>0)
	{
		Search_AdditionalParams = Search_AdditionalParams + "pgnv="+ToHTML(Pagenav_Additional) + "&";
	};

	var PoweredByObject = document.getElementById("BT_SEARCH_POWEREDBY");
	var $PoweredBy;
	if ((isExplorer) && (ExplorerVersion<7))
	{
		$PoweredBy = "<A HREF='http://www.boardtracker.com'><SPAN STYLE=\"display:inline-block; width:1; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://www.boardtracker.com/images/dog_powered_search.png');\"></SPAN></A>";
	}
	else
	{
		$PoweredBy = "<A HREF='http://www.boardtracker.com'><IMG SRC='http://www.boardtracker.com/images/dog_powered_search.png' BORDER=0></A>";
	};
	SetHTML_Objects_ByName("BT_SEARCH_POWEREDBY",$PoweredBy);


	//if (Search_For) {SetValue_Objects_ByName("t",ToHTML(Search_For))};
	//if (Search_TagsLinkType) {SetValue_Objects_ByName("lt",ToHTML(Search_TagsLinkType))};

	SetValue_Objects_ByName("o",Search_Order);
	SetValue_Objects_ByName("a",ToHTML(Search_User));
	SetValue_Objects_ByName("d",Search_Scope);
	SetValue_Objects_ByName("c",Search_Category);
	SetCheck_Objects_ByName("rlf",Search_RelForums);
	SetCheck_Objects_ByName("g",Search_Global);
	SetCheck_Objects_ByName("op",Search_OpOnly);
	ToggleGlobalSearch(Search_Global);

	var SelectedForumsArray = Search_Forums.split(',');
	var idx;
	var val_marks = new Array;
	for (idx=0 ; ((idx<SelectedForumsArray.length) && (idx<500)) ; idx++)
	{
		val_marks[SelectedForumsArray[idx]]=1;
	}
	if (document.getElementById("BT_FORUMS_SEARCH") != null)
	{
		var forums_options = document.getElementById("BT_FORUMS_SEARCH").options;
		var obj;
		for (idx=0 ; ((idx<forums_options.length) && (idx<500)) ; idx++)
		{
			obj = forums_options[idx];
			if (val_marks[obj.value]) {obj.selected=1} else {obj.selected=0};
		}
	}


	if ((Search_SearchTerm == "") && (Search_User == "") && (Search_UserID == ""))
	{//Do nothing
	}
	else
	{
		SetValue_Objects_ByName("q",ToHTML(Search_SearchTerm));
		//SetValue_Objects_ByID("BT_SEARCH_INPUT",Search_SearchTerm);

		SetDisplay_Objects_ByName("BT_SEARCH_INPROGRESS","");


		var Search_PageNumber = QueryVar("p",1);

		var ScriptParams = 'q='+Search_SearchTerm+"&"+
			Search_For_STR+
			Search_TagsLinkType_STR+

			'p='+Search_PageNumber+"&"+

			Search_User_STR+
			Search_UserID_STR+
			Search_CharSet_STR+

			'c='+Search_Category+"&"+
			'o='+Search_Order+"&"+
			'd='+Search_Scope+"&"+

			'f='+Search_SafeFilter+"&"+
			'b='+Search_BoardLimit+"&"+

			'g='+Search_Global+"&"+
			'op='+Search_OpOnly+"&"+

			'rlf='+Search_RelForums+"&"+
			'fi='+Search_Forums+"&"+

			Search_AdditionalParams;


		var ScriptURL = '<SCRIPT SRC="http://www.boardtracker.com/search/?&js=1&'+ScriptParams+'"><\/SCRIPT>';
		if (BeforeSearch())
		{
			document.write(ScriptURL);
			if( QueryVar("debug",0)==1) {"<br>"+document.write(ScriptParams+"<br>")};
		}
		else
		{SetDisplay_Objects_ByName("BT_SEARCH_INPROGRESS","none");};

	};
};

SearchExecute();


