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("frm");
	for (idx=0 ; ((idx<Objects.length) && (idx<25)) ; idx++)
	{
		obj = Objects[idx];
		obj.disabled=NewState;
	}
	var Objects  = document.getElementsByName("relfrms");
	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("search",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("for",Search_For);
		if (Search_For != 0) {Search_For_STR = 'for='+Search_For_Var+"&"};
	}
	catch (e)
	{
	};
	

	//Only used when searching for tags
	var Search_TagsLinkType_Var;
	var Search_TagsLinkType_STR = "";
	try {
		Search_TagsLinkType_Var = QueryVar("linktype",Search_Tag_Link_Type);
		if ((Search_TagsLinkType_Var==1) || (Search_TagsLinkType_Var==2) || (Search_TagsLinkType_Var==3))
			{Search_TagsLinkType_STR = 'linktype='+Search_TagsLinkType_Var+"&"};
	}
	catch (e)
	{
	}


	Search_Order = QueryVar("order",Search_Order);
	var Search_User = QueryVar("user","");
	var Search_UserID = QueryVar("userid","");
	Search_Scope = QueryVar("scope",Search_Scope);
	Search_Category = QueryVar("cat",Search_Category);

	var Search_RelForums = QueryVar("relfrms",0);
	var Search_Global = QueryVar("global",0);
	var Search_Forums = QueryVar("frm","-1");

	var Search_AdditionalParams = "";


	var Search_User_STR = "";	
	if (Search_User != "")
		{Search_User_STR = 'user='+Search_User+"&"};


	var Search_UserID_STR = "";	
	if (Search_UserID != "")
		{Search_UserID_STR = 'userid='+Search_UserID+"&"};


	//Charset setting is optional
	var Search_CharSet = FindCharset();
	var Search_CharSet_STR = "";
	if (Search_CharSet != "")
		{Search_CharSet_STR = 'charset='+Search_CharSet+"&"};


	
	//Invision support
	var Pagenav_Additional = QueryVar("pagenav_add","");
	if (Pagenav_Additional.length>0)
	{
		Search_AdditionalParams = Search_AdditionalParams + "pagenav_add="+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("for",ToHTML(Search_For))};
	//if (Search_TagsLinkType) {SetValue_Objects_ByName("linktype",ToHTML(Search_TagsLinkType))};

	SetValue_Objects_ByName("order",Search_Order);
	SetValue_Objects_ByName("user",ToHTML(Search_User));	
	SetValue_Objects_ByName("scope",Search_Scope);
	SetValue_Objects_ByName("cat",Search_Category);
	SetCheck_Objects_ByName("relfrms",Search_RelForums);
	SetCheck_Objects_ByName("global",Search_Global);
	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("search",ToHTML(Search_SearchTerm));
		//SetValue_Objects_ByID("BT_SEARCH_INPUT",Search_SearchTerm);
		
		SetDisplay_Objects_ByName("BT_SEARCH_INPROGRESS","");


		var Search_PageNumber = QueryVar("page",1);

		var ScriptParams = 'search='+Search_SearchTerm+"&"+
			Search_For_STR+
			Search_TagsLinkType_STR+
			
			'page='+Search_PageNumber+"&"+

			Search_User_STR+
			Search_UserID_STR+
			Search_CharSet_STR+

			'cat='+Search_Category+"&"+
			'order='+Search_Order+"&"+
			'scope='+Search_Scope+"&"+

			'filter='+Search_SafeFilter+"&"+
			'boardid='+Search_BoardLimit+"&"+
			
			'global='+Search_Global+"&"+

			'relfrms='+Search_RelForums+"&"+
			'frm='+Search_Forums+"&"+
			
			Search_AdditionalParams;
			

		//var ScriptURL = '<SCRIPT SRC="http://www.boardtracker.com/search/?&isjs=1&'+ScriptParams+'"><\/SCRIPT>';
		var ScriptURL = '<SCRIPT SRC="http://v2.boardtracker.com/search/?&isjs=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();


