<?xml version="1.0" encoding="UTF-8"?>
<Module>
  <ModulePrefs title="fetchBugs" height="50" width="580"/>
  <UserPref name="urlTitle" display_name="Query title" default_value="NEW bugs in Compare, Team and CVS in-boxes"/>
  <UserPref name="url" display_name="Query URL" default_value="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&amp;short_desc_type=allwordssubstr&amp;short_desc=&amp;classification=Eclipse&amp;product=Platform&amp;component=Compare&amp;component=CVS&amp;component=Team&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;status_whiteboard_type=allwordssubstr&amp;status_whiteboard=&amp;keywords_type=allwords&amp;keywords=&amp;bug_status=NEW&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=inbox&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;cmdtype=doit&amp;order=Reuse+same+sort+as+last+time&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0="/>
  <Content type="html">
  <![CDATA[
  <div id="content_div"></div>
  <script type="text/javascript">
    var prefs = new gadgets.Prefs();
    var url = prefs.getString("url");
    var urlTitle = prefs.getString("urlTitle");
	function getHtml() {    
		var params = {};  
		params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.TEXT;  
		gadgets.io.makeRequest(url, response, params);
	};
	function response(obj) {  
		var txt = obj.text;
		var pattern = new RegExp("[0-9]+ bugs found.");
		var html = "<div style='padding:5px;background-color:#FFFFBF;font-family:Arial,Helvetica;text-align:left;font-size:90%'>";
		html += "<a target='_blank' href='"+url+"'>"+urlTitle+"</a>&nbsp;:&nbsp;<font size='5'>";
		var result = pattern.exec(txt);
		if (result != null) {
			html += result[0].split(" ", 1);
		} else {
			pattern = /Zarro Boogs found/;
			if (txt.search(pattern) != -1) {
				html += "0";
			} else {
				html += "Too long!";
			}
		}
		html += "</font></div>";		
		document.getElementById('content_div').innerHTML = html;
	};
	gadgets.util.registerOnLoadHandler(getHtml);
	</script>
  ]]>
  </Content>
</Module>