<?xml version="1.0" encoding="UTF-8" ?> 
<Module>  
	<ModulePrefs
		title="UK Parliament - Search"
		description="Search the United Kingdom Parliament website"
		author="Parliament Web Centre"
		author_email="webmaster@parliament.uk"
		screenshot="http://www.parliament.uk/gadgets/images/search-screenshot.gif"
		thumbnail="http://www.parliament.uk/gadgets/images/parliament-logo.gif"
		author_location="London, UK"
		author_affiliation="United Kingdom Parliament"
		title_url="http://www.parliament.uk/" 
		directory_title="UK Parliament - Search"
		>
		<Require feature="setprefs" />
		<Require feature="dynamic-height" /> 
	</ModulePrefs>
	<UserPref name="favs" default_value="" datatype="hidden"/>
  
	<Content type="html">
		<![CDATA[
			<script language="JavaScript"
				src="http://www.parliament.uk/gadgets/json.js"></script>
			<script language="JavaScript">
				var favs; 
				var prefs;
				var max_prefs = 5;
		
				_IG_RegisterOnloadHandler(
					function loadfavs() {					
						prefs = new _IG_Prefs(__MODULE_ID__);
						var favstring = prefs.getString("favs");
						if (favstring == "") {
							favs = {"array":[]};
						} else {
							favs = JSON.parse(favstring);
						}
						outputFavs();
						_IG_AdjustIFrameHeight();
					}
				)

				function saveFavs(){
					prefs.set("favs", JSON.stringify(favs));
				}

				function addFav(name) {
					if (name == "")
						return;
					name = escapeName(name);
					
					var matched = false;
					
					for (i = 0; i < numFavs(); i++) {
						if (favs.array[i].name == name) {
							matched = true;
							break;
						}
					}
					
					if (matched == false) {
						favs.array[numFavs()] = {"name": name};
						saveFavs();
						if (numFavs() > (max_prefs)) {
							deleteFav(0)
							return;
						}
						outputFavs();
					}
				}
			
				function deleteFav(number) {
					var beginning = favs.array.slice(0, number);
					var end = favs.array.slice(number + 1, numFavs());
					favs.array = beginning.concat(end);
					saveFavs();
					outputFavs();
				}
				
				function numFavs() {
					return favs.array.length;
				}
				
				function outputFavs() {
					var html = "<table cellspacing=\"0\" border=\"0\" width=\"100%\">";
					for (i = 0; i < numFavs(); i++) {
						if (favs.array[i] == null)
							break;
						var name = favs.array[i].name;
						html += "<tr" + rowClass(i) + "\"><td>";
						html += "<a href=\"javascript: chooseFav('" + name + "')\">";
						html += name + "</a>";
						html += "</td></tr>";
					}
					if (html == "<table cellspacing=\"0\" border=\"0\" width=\"100%\">") 
						html += "<tr><td>Your search history is empty</td></tr>";
					html += "</table>";
					_gel("savedResults").innerHTML = html;
					_IG_AdjustIFrameHeight();
				}
				
				function chooseFav(chosen) {
					_gel('search').value = chosen;
					doSearch();
				}
				
				function escapeName(name) {
					name = name.replace(/&/g,"&#38;")
					name = name.replace(/</g,"&#60;")
					name = name.replace(/>/g,"&#62;")
					name = name.replace(/"/g,"&#34;")
					name = name.replace(/'/g,"&#39;")
					return name;
				}
				
				function doSearch()
				{
					pleaseWait('results');
					
					var searchTerm = _gel('search').value.replace(/ /g, '+');
					var searchURL = 'http://www.google.com/search?cx=009235156257972297288%3Ac3zploqlzek&client=google-csbe&output=xml_no_dtd&q=' + searchTerm;
					addFav(searchTerm);
					
					_IG_FetchXmlContent(searchURL, function (response) {
						if (response == null || typeof(response) != "object" || response.firstChild == null) {
							_gel("results").innerHTML = "<i>Invalid data.</i>";
							return;
						}

						var html = "";

						var resultList = response.getElementsByTagName("R");
						
						_gel('results').style.height = 310;
						_gel('results').style.overflow = "auto";
						_gel('resultsContainer').style.border = "1px solid #A9A9A9";
						
						for (var i = 0; i < resultList.length; i++) {
							var url = "";
							var summary = "";
							var title = "";
							var nodeList = resultList.item(i).childNodes;
							for (var j = 0; j < nodeList.length ; j++) {
								var node = nodeList.item(j);
								if (node.nodeName == "U") {
									url = node.firstChild.nodeValue;
								}
								if (node.nodeName == "T") {
									title = node.firstChild.nodeValue;
								}
								if (node.nodeName == "S") {
									if (node.firstChild) {
										summary = node.firstChild.nodeValue;
									}
								}
							}
							html += "<div " + rowClass(i) + " result\">";
							html += "<a href=\"" + url + "\" target=\"_top\">" + title + "</a>";
							html += "<span>" + summary + "</span>";
							html+= "</div>";
						}
						
						if (html == "") {
							html = "Your search did not match any documents";
						}
						_gel('results').innerHTML = html;
						setTimeout('_IG_AdjustIFrameHeight()', 400); 
					});
					return;
				}
			
				function pleaseWait(parent) {
					var div = document.createElement('div');
					div.setAttribute('align', 'center');
					var spinner = _IG_GetImage('http://www.parliament.uk/gadgets/images/pleasewait.gif');
					div.appendChild(spinner);
					_gel(parent).innerHTML = '';
					_gel(parent).appendChild(div);
				}
				
				function toggleHistory() {
					_toggle(_gel('savedResults'));
					if (_gel('savedResults').style.display == "none") {
						_gel('toggle').innerHTML = 'SHOW +';
					} else {
						_gel('toggle').innerHTML = 'HIDE -';
					}
					_IG_AdjustIFrameHeight();
				}
				
				function rowClass(number) {
					if (number % 2 != 0)
						return " class=\"odd";
					else
						return " class=\"even";
				}
			</script>
		
			<style> 	
				#main_content { 
					width: 100%;
					font-size: 0.8em;  
					margin: 0; 
					padding: 0;
					background-color: #ffffff;
					float: left;
				}
				
				#logo {
					float: left;
					clear: both;
					border: 0;
					margin: 6px 0 2px 3px;
					padding: 0;
				}
				
				.divider {
					width: 100%;
					float: left;
					clear: both;
					margin: 0;
					border: 0;
					padding: 0;
				}
				
				.divider hr {
					width: 100%;
					height: 1px;
					border: 0;
					color: #F2F0F0;
					background-color: #F2F0F0;
					clear: both;
				}
				
				#search_box {
					float: left;
					margin: 0;
					padding: 0
					border: 0;
					clear: both;	
				}

				#search {
					margin: 0 8px 0 0;
					padding: 0;
				}
				
				#resultsContainer {
					width: 99%;
					float: left;
					clear: both;
					padding: 1px 0 5px 0;
					margin: 0;
					border: 1px solid #FFFFFF;
				}
				
				#results {
					width: 95%;
					margin: 8px 0 0 0;
					padding: 8px 2%;
					border: 0;
					height: 20px;
					clear: both;
					float: left;
				}
				
				#history {
					float: left;
					width: 100%;
					clear: both;
					margin: 8px 0;
				}
				
				#historyTitle {
					float: left;
					width: 100%;
					padding: 0.2em;
					background-color: #666666;
					color: #FFFFFF;
					font-weight: bold;
				}
				
				#savedResults {
					float: left;
					border: 1px solid #666666;
				}
				
				#savedResults td {
					font-size: 0.8em;
					padding: 0.2em;
				}
				
				#savedResults a {
					color: #000000;
				}
				
				.result {
					width: 95%;
					float: left;
					margin: 0 2px 0 0;
					padding: 4px 2% 12px 2%;
					clear: both;
					border: 0;
				}
				
				.result a {
					font-weight: bold;
				}
				
				.result span {
					float: left;
					display: block;
					clear: both;
				}
				
				#toggle {
					float: right;
					margin-right: 8px;
				}
				
				a#toggle {
					color: #FFFFFF;
				}
				
				.titleText {
					float: left;
				}
				
				.odd {
					background-color: #F2F0F0;
				}
				
				.even {
					background-color: #FFFFFF;
				}
			</style>
			
			<div id="main_content">
				<form name="form" action="" method="get" onsubmit="doSearch(); return false;">
				<div id="logo"><img src="http://www.parliament.uk/gadgets/images/parliamentuk.gif" alt="" width="155" height="22" /></div>
				<div class="divider"><hr /></div>
				<div id="search_box">
					<table border="0" cellpadding="0" cellspacing="0">
						<tr>
							<td><input type="text" name="QUERY00" id="search" class="searchBox"></td>
							<td><input type="image" id="search_button" src="http://www.parliament.uk/images/header_menu/search_button.gif" alt="search" name="go" /></td>
						</tr>
					</table>
				</div>
				</form>
				
				<div id="history">
					<div id="historyTitle"><span class="titleText">Search History</span><span><a id="toggle" href="javascript:toggleHistory();">HIDE -</a></span></div>
					<div id="savedResults"></div>
				</div>
				
				<div id="resultsContainer">
					<div id="results"></div>
				</div>
			</div>
		]]>
	</Content>
</Module>