<?xml version="1.0" encoding="UTF-8"?>
<Module>
  <ModulePrefs
	title="Digital New Zealand Images"
	title_url="http://digitalnz.org.nz/"
	description="Shows images from DigitalNZ"
	screenshot="http://hosting.gmodules.com/ig/gadgets/file/114403643548954088819/DNZ_Gadget_screenshot.png"
	thumbnail="http://hosting.gmodules.com/ig/gadgets/file/114403643548954088819/DNZ_Gadget_thumbnail.png"
	author="Douglas Campbell"
	author_location="Wellington, New Zealand"
	author_affiliation="National Library of New Zealand"
  author_email="douglas+.campbell@natlib.govt.nz"
  >
  <Require feature="settitle"/>      
 </ModulePrefs>
  <UserPref name="query" display_name="Search Query" default_value="Images"/>
  <UserPref name="title" display_name="Module Title" default_value="Digital New Zealand"/>
  <UserPref name="columns" display_name="Columns" default_value="4" datatype="enum" >
	<EnumValue value="2" />
	<EnumValue value="3" />
	<EnumValue value="4" />
	<EnumValue value="5" />
  </UserPref>
  
<Content type="html">
<![CDATA[ 
<style type="text/css">
 body {margin: 0px;}		
 .thumb {
    max-width: 100%;
    max-height: 100%;
 }
</style>
<div id="content_div">Loading...</div>
<script><!--
function loadfeed() {
  var prefs   = new gadgets.Prefs();
  var title   = prefs.getString("title") + " : " + prefs.getString("query");
  var query   = prefs.getString("query");
      query   = query.replace(/\s/,"+");
  var feedUrl = "http://api.digitalnz.org/records.xml?api_key=78d2e01ccd3d846710464c85a2b6dbd8&sort=syndication_date&direction=desc&search_text=" + query;
  // setting title doesn't seem to work
  gadgets.window.setTitle(title);  
  var params  = {};
  params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.TEXT;
  gadgets.io.makeRequest(feedUrl, response, params);
};
function response(responseObject) {
  var prefs        = new gadgets.Prefs();
  var responseText = responseObject.data;
  var output = document.getElementById("content_div");
  var colSize = 100 / prefs.getString("columns");
  var recPrefix   = '<result>';
	var recSuffix   = '</result>';
	var linkPrefix  = '<display-url>';
	var linkSuffix  = '</display-url>';
	var thumbPrefix = '<thumbnail-url>';
	var thumbSuffix = '</thumbnail-url>';
	var labelPrefix = '<title>';
	var labelSuffix = '</title>';
								 
	var starting = responseText.indexOf('<hash>');
	if (starting<0) {
    output.innerHTML = "Sorry, this feed doesn't seem to be a DigitalNZ XML feed " + responseText.substring(0,20);
    return;
	}
	var loading = true;

	output.innerHTML = "Loading now....";
	text = responseText.substring(starting);	// skip header

	var start = text.indexOf(labelPrefix);
	var maxcount = prefs.getString("columns");
	var count = 1;
	while (start>0 && count<=maxcount) {
    var labelWithTail = text.substring(start+labelPrefix.length,text.length);
    var endLabel      = labelWithTail.indexOf(labelSuffix);
    var label         = labelWithTail.substring(0,endLabel);

    start = text.indexOf(linkPrefix);
    var linkWithTail = text.substring(start+linkPrefix.length,text.length);
    var endLink      = linkWithTail.indexOf(linkSuffix);
    var link         = linkWithTail.substring(0,endLink);
				   
    start = text.indexOf(thumbPrefix);
    var thumbWithTail = text.substring(start+thumbPrefix.length,text.length);
    var endThumb      = thumbWithTail.indexOf(thumbSuffix);
    var thumb         = thumbWithTail.substring(0,endThumb);
				   
    if (loading) {
      loading = false;
      output.innerHTML =
        "<style type='text/css'>"+
        ".block { "+
        "	width: "+colSize+"%; "+
        "	float: left; "+
        "	vertical-align: middle; "+
        "	horizontal-align: middle; "+
        "	margin-left: auto; "+
        "	margin-right: auto; "+
        "	margin-bottom: 4px; "+
        "	text-align: center; "+
        "} </style>";
    }
    else{
      if (thumb.length > 0) {
        output.innerHTML = output.innerHTML +
          '<div class="block"><a target="_blank" href="'+link+'"><img class="thumb" border="0" src="'+thumb+'" title="'+label+'"></a></div>';
        count++;
      }
    }
    text = thumbWithTail;
    start = text.indexOf(labelPrefix);
	}
  gadgets.window.adjustHeight;
};
loadfeed();
//--></script>
     ]]> 
</Content>
</Module>

