// Site search engine script

//Search engine fade animations
var fadeThread;
var opacity = 0.2;
var searchBoxFocused = false; //True if the search box is focused

function mouseOverSearch()
{
	clearInterval(fadeThread);
	fadeThread = setInterval("fadeInSearch();", 30);
}

function mouseLeaveSearch()
{
	if (!searchBoxFocused) 
	{
		clearInterval(fadeThread);
	    fadeThread = setInterval("fadeOutSearch();", 30);
		
		var searchBox = document.getElementById("searchBox");
		if (searchBox.value == "")
		{
		    searchBox.value = "Search";
			retrieveContent();
		}
	}
}

function fadeInSearch()
{
	setSearchOpacity(opacity += 0.1);
	
	if (opacity >= 1)
	{
		clearInterval(fadeThread);
		setSearchOpacity(opacity = 1);
	}
}

function fadeOutSearch()
{
	setSearchOpacity(opacity -= 0.1);
	
	if (opacity <= 0.2)
	{
		clearInterval(fadeThread);
		setSearchOpacity(opacity = 0.2);
	}
}

function setSearchOpacity (opacityValue)
{
	var searchImage = document.getElementById("searchImage");
	var searchBox = document.getElementById("searchBox");
	
	var fadeObjects = [searchBox, searchImage];
	
	for (var i = 0; i < fadeObjects.length; i++)
	{
		fadeObjects[i].style.opacity = opacityValue;
		fadeObjects[i].style.filter = "alpha (opacity = " + (opacityValue * 100) + ")";
	}
}

//Search using Ajax method
var xmlHttp = new XMLHttpRequest();
var pageContent; //Contains the page origianl content

function onLoad()
{
	//Fixes the XmlHttp issue
	xmlHttp = (window.XMLHttpRequest) ? (new XMLHttpRequest()) : (new ActiveXObject("Microsoft.XMLHTTP")); 
	pageContent = document.getElementById("content").innerHTML;
}

function updateSearch()
{
	var keyword = document.getElementById("searchBox").value;
	
	if (keyword != "") //Search keyword is not null, start the search
	{
		xmlHttp.onreadystatechange = readyStateChanged;
	    xmlHttp.open("GET","library/search_results.php?keyword=" + keyword,true);
	    xmlHttp.send();
	}
	else //Search keyword is empty
	{
		retrieveContent();
	}

}

function retrieveContent()
{
	document.getElementById("content").innerHTML = pageContent;
}

function readyStateChanged()
{
	if (xmlHttp.readyState == 4 && xmlHttp.status == 200) //Search finished
	{
		var results = xmlHttp.responseText;
		document.getElementById("content").innerHTML = results;
		document.getElementById("searchImage").src = "images/search.gif"; //Replace loading animation to search image when search ended
	}
	else if (xmlHttp.readyState == 1) //Search started
	{
		document.getElementById("searchImage").src = "images/loading.gif"; //Replace search image with loading animation
	}
}
