<?xml version="1.0" encoding="UTF-8" ?> 
<Module>
  <ModulePrefs title="__MSG_modTitle__"
  	directory_title="__MSG_modDirTitle__"
  	description="__MSG_modDescription__"
  	height="330"
  	author="Robert Stupp"
  	author_email="snazy@snazy.de"
  	screenshot="http://www.deutscher-pinscher.info/goolooop/screenshot.png"
  	thumbnail="http://www.imagelooop.de/_img/imagelooop_logo.gif"
  	singleton="false">
    <Require feature="dynamic-height"/>
    <Locale messages="http://www.deutscher-pinscher.info/goolooop/ALL_ALL.xml"/> 
    <Locale lang="de" messages="http://www.deutscher-pinscher.info/goolooop/de_ALL.xml"/> 
    <!--
    <Locale lang="en" messages="http://www.deutscher-pinscher.info/goolooop/en_ALL.xml"/> 
    -->
  </ModulePrefs>
  <Content type="html">
     <![CDATA[
<style>
	div#gooLooopRootContent__MODULE_ID__ {
		border: none;
		margin: 0;
		padding: 0;
	}
	div#gooLooopRootContent__MODULE_ID__, div#gooLooopRootContent__MODULE_ID__ a, div#gooLooopRootBottom__MODULE_ID__ a, div#gooLooopRootTop__MODULE_ID__ a {
		font-size: 9pt;
	}

	div#gooLooopRootTop__MODULE_ID__ img, div#gooLooopRootContent__MODULE_ID__ img, div#gooLooopRootBottom__MODULE_ID__ img {
		border: none;
		margin: 0;
		padding: 0;
	}
	div#gooLooopRootTop__MODULE_ID__ {
		margin-bottom: 5px;
	}
	div#gooLooopRootBottom__MODULE_ID__ {
		margin-top: 5px;
		border-top: 1px solid blue;
		margin-bottom: 7px;
	}
	div#gooLooopRootContent__MODULE_ID__ img {
		margin: 4px;
	}
</style>
<div id="gooLooopRoot__MODULE_ID__">
	<div id="gooLooopRootTop__MODULE_ID__">
		<a href="#" onclick="return showRandomLooop__MODULE_ID__();" id="aShowRandomLooop__MODULE_ID__"></a>
		<a href="#" onclick="return showRandomPhotos__MODULE_ID__();" id="aShowRandomPhotos__MODULE_ID__"></a>
	</div>
	<div id="gooLooopRootContent__MODULE_ID__">
	</div>
	<div id="gooLooopRootBottom__MODULE_ID__">
		<a href="http://www.imagelooop.de/setuplooop.htm?clean" target="_parent" id="lnkMakeYourOwn__MODULE_ID__"></a>
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
		<a href="http://www.imagelooop.de/" target="_parent"><img src="http://www.imagelooop.de/images/imagelooop.gif" align="absmiddle"/></a>&nbsp;<a href="http://www.imagelooop.de/" target="_parent">imagelooop.de</a>
	</div>
</div>

<script type="text/javascript">

	var GooLooop__MODULE_ID__ = function() {
		this.prefs = new _IG_Prefs(__MODULE_ID__);
        this.apiKey="d434dc05-a39c-18e0-8882-001422b1aff2";
		this.accessToken="googleGadget";
		this.thumbRendition="rw83h61f";
		this.rootUrl="http://www.imagelooop.de/";
		this.urlPrefix=this.rootUrl+"httprpc/?apiKey="+this.apiKey+"&accessToken="+this.accessToken;
		
		_gel("lnkMakeYourOwn__MODULE_ID__").appendChild(document.createTextNode(this.prefs.getMsg("makeYourOwn.link")));
		_gel("aShowRandomLooop__MODULE_ID__").appendChild(document.createTextNode(this.prefs.getMsg("showRandomLooop.link")));
		_gel("aShowRandomPhotos__MODULE_ID__").appendChild(document.createTextNode(this.prefs.getMsg("showRandomPhotos.link")));

		var el = _gel("gooLooopRoot__MODULE_ID__");
		this.rootElement=el;
		el = _gel("gooLooopRootContent__MODULE_ID__");
		this.contentElement=el;
	};

	GooLooop__MODULE_ID__.prototype.clearContent = function() {
		while (this.contentElement.firstChild)
			this.contentElement.removeChild(this.contentElement.firstChild);
		return this.contentElement;
	};

	GooLooop__MODULE_ID__.prototype.rpcCall = function(callback,f,params) {
		var url = this.urlPrefix+"&f="+f;
		if (params!=null)
			url+="&"+params;
		_IG_FetchXmlContent(url, callback);
	};

	function makeValue__MODULE_ID__(val) {
		var nval = Math.round(val);
		if (Number.NaN==nval || nval!=val)
			return val;
		else {
			if (val.indexOf('x')!=-1 || 
				val.indexOf('X')!=-1 || 
				val.indexOf('.')!=-1)
				return val;
			return nval;
		}
	}

	function xmlMapContent__MODULE_ID__(lc) {
		var map = {};
		for (var lnc = lc.firstChild ; lnc!=null ; lnc = lnc.nextSibling) {
			if (lnc.nodeName=="namedvalue") {
				if (lnc.firstChild) {
					var nli = makeValue__MODULE_ID__(lnc.firstChild.data);
					map[lnc.getAttribute("name")]=nli;
				}
			}
		}
		return map;
	}

	function xmlListContent__MODULE_ID__(rc) {
		var lst = new Array();
		for (var lc = rc.firstChild ; lc!=null ; lc = lc.nextSibling) {
			if (lc.nodeName=="value") {
				var v = makeValue__MODULE_ID__(lc.firstChild.data);
				lst.push(v);
			}
			else if (lc.nodeName=="map") {
				var map = xmlMapContent__MODULE_ID__(lc);
				lst.push(map);
			}
		}
		return lst;
	}

	function rpcResponse__MODULE_ID__(response) {
		var docEl = response;
		var ret = {};
		if (docEl) docEl=docEl.firstChild;
		if (docEl) for (var c = docEl.firstChild ; c!=null ; c = c.nextSibling) {
			if (c.nodeName=="response") {
				for (var rc = c.firstChild ; rc!=null ; rc = rc.nextSibling) {
					if (rc.nodeName=="value") {
						if (rc.firstChild!=null)
							ret[c.getAttribute("name")]=makeValue__MODULE_ID__(rc.firstChild.data);
						else
							ret[c.getAttribute("name")]=null;
					}
					else if (rc.nodeName=="list") {
						var lst = xmlListContent__MODULE_ID__(rc);
						ret[c.getAttribute("name")]=lst;
					}
					else if (rc.nodeName=="map") {
						ret[c.getAttribute("name")]=xmlMapContent__MODULE_ID__(rc);
					}
				}
			}
			else if (c.nodeName=="error") {
				var toException = function(c) {
					var r = {};
					for (var ec = c.firstChild ; ec!=null ; ec = ec.nextSibling) {
						if (ec.nodeName=="errorCode")
							r.errorCode=(ec.firstChild!=null)?ec.firstChild.data:null;
						else if (ec.nodeName=="errorType")
							r.errorType=(ec.firstChild!=null)?ec.firstChild.data:null;
						else if (ec.nodeName=="message")
							r.message=(ec.firstChild!=null)?ec.firstChild.data:null;
					}
					r.toString = function() {
						alert("error#"+this.errorCode+" "+this.errorType);
					};
					return r;
				};

				return toException(c);
			}
		}

		return ret;
	}	

	GooLooop__MODULE_ID__.prototype.apiPing = function() {
		this.rpcCall( function(response) {
			},
			"imagelooop.ping");
	};

	GooLooop__MODULE_ID__.prototype.apiGetSessionId = function() {
		this.rpcCall( function(response) {
				response=rpcResponse__MODULE_ID__(response);
			},
			"imagelooop.getSessionId");
	};

	GooLooop__MODULE_ID__.prototype.randomLooop = function(count) {
		this.rpcCall( function(response) {
			response=rpcResponse__MODULE_ID__(response);

			var lid = response.looopIds[0];
       		gl__MODULE_ID__.rpcCall( function(response) {
				response=rpcResponse__MODULE_ID__(response);

				var el = gl__MODULE_ID__.clearContent();
				var prl_dispWidth = el.offsetWidth;
		   		var player = document.createElement("iframe");
		   		player.src=response.permalink+"/jsScroller.htm?w="+(prl_dispWidth-63)+"&h=150&noflash";
		   		player.width=prl_dispWidth;
		   		player.height=150+7;
		   		player.frameborder=0;
		   		player.scrolling="no";
		   		player.allowtransparency="true";
		   		player.backgroundColor="transparent"
		   		player.style.cssText="border:0; margin:0px; padding:0px;";
				el.appendChild(player);
				el.appendChild(document.createElement("br"));
				var a = document.createElement("a");
				a.href=response.permalink;
				if (response.descriptiveName)
					a.appendChild(document.createTextNode(response.descriptiveName));
				else
					a.appendChild(document.createTextNode("details"));
				a.target="_parent";
				el.appendChild(a);
				el.appendChild(document.createTextNode(" "));
				if (response.description) {
					el.appendChild(document.createTextNode(response.description));
					el.appendChild(document.createTextNode(" "));
				}

				el.style.width = "";
				el.style.height = "";
			},"imagelooop.getLooopMetaData","looopId="+lid);

		},"imagelooop.getRandomLooops","count=1&h="+(new Date().getTime()));
	};

	GooLooop__MODULE_ID__.prototype.randomPhotos = function(count) {
		this.rpcCall( function(response) {
			response=rpcResponse__MODULE_ID__(response);

			var el = gl__MODULE_ID__.clearContent();

			var cnt = response.looopImageIds.length;
			for (var n=0;n<cnt;n++) {
				var looopImage = response.looopImageIds[n];
				var idx = looopImage.indexOf(',');
				var looopId = looopImage.substring(0,idx);
				var imageId = looopImage.substring(idx+1);
				
				var elA = document.createElement("a");
				elA.href=gl__MODULE_ID__.rootUrl+"/looop/"+looopId+"/"+imageId+"/x.jpg";
				elA.target="_parent";

				var elImg = document.createElement("img");
				elImg.src=gl__MODULE_ID__.rootUrl+"/looop/"+looopId+"/content/"+imageId+","+gl__MODULE_ID__.thumbRendition+"/x.jpg";
				elImg.width=83;
				elImg.height=61;
				elA.appendChild(elImg);

				el.appendChild(elA);
			}

			el.style.width = (Math.floor(cnt/4)*91)+"px";
			el.style.height = (4 * 69)+"px";

		},"imagelooop.getRandomImages","count="+count+"&h="+(new Date().getTime()));
	};

	var gl__MODULE_ID__ = new GooLooop__MODULE_ID__();

	function showRandomPhotos__MODULE_ID__() {
		gl__MODULE_ID__.randomPhotos( Math.floor(gl__MODULE_ID__.contentElement.scrollWidth/91)*4 );
		return false;
	}
	function showRandomLooop__MODULE_ID__() {
		gl__MODULE_ID__.randomLooop();
		return false;
	}

	showRandomLooop__MODULE_ID__();

</script>

     ]]>
  </Content> 
</Module>