<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="hiogi.de Fragen"
directory_title="hiogi.de Fragen"
title_url="hiogi.de Fragen"
author="Hendrik Söbbing"
author_location="Ahaus, DE"
author_affiliation="handcoding.de"
author_email="soebbing@gmail.com"
thumbnail="http://www.hiogi.de/img/bg/logo.gif"
render_inline="optional"
description="Hiogi-Fragen auf iGoogle.">
<Require feature="tabs"/>
<Require feature="analytics"/>
</ModulePrefs>
<UserPref name="title" display_name="Gadget Title" default_value="hiogi.de Fragen"/>
<Content type="html">
<![CDATA[

<style>
body {
	font-family: verdana,helvetica,sans-serif;
	font-size: 12px;
}
#hiogi_items_tab {
	display:none;
}
#hiogi_news_tab {
	display:none;
}
#hiogi_about_tab {
	display:none;
	text-align:center;
}
#hiogi_item_template {
	display:none;
	font-size: 12px;
}
#hiogi_news_template{
	display:none;
}
.item {
	width: 100%;
	border-bottom: 1px dashed #666;
	margin: 5px 0;
	padding: 0 0 5px 0;
}
.item_subtitle {
	font-size: x-small;
}
</style>

<div id="hiogi_items_tab">
	<div style="width:100%; text-align: right"><a href="javascript:hiogiRefresh()">Aktualisieren</a>&nbsp;(<span title="Sekunden bis Refresh der Fragen" id="hiogi_ttl"></span>)</div>
	<div id="hiogi_item_target">
		Werden geladen...
	</div>
</div>

<div id="hiogi_news_tab">
	News:<br/>
	<div id="hiogi_news_target">
		Werden geladen...
	</div>
</div>

<div id="hiogi_about_tab">
	<br/>
	<strong>hiogadget v0.1</strong><br/><br/>
	<i>Google Gadget für hiogi.de</i><br/><br/><br/>
	Entwickelt von <a href="http://www.soebbi.de/" target="_blank" onmousedown="_IG_Analytics("UA-612595-8", "/gadgets/click/soebbi.de");">Hendrik Söbbing</a><br/><br/>
	&copy; 2007
</div>

<div id="hiogi_item_template">
	<div class="item">
		<a href="{Link}" target="_blank">{Text}</a> <span class="item_subtitle"> um {Hour} von {User} ({Status})</span>
	</div>
</div>

<div id="hiogi_news_template">
	<div class="item">
		<a href="{Link}" target="_blank">{Text}</a>
	</div>
</div>
<script>

var hiogiXmlUrl = 'http://api.hiogi.de/open_questions.xml';
var hiogiRefreshRate = 30; // MaxAge in seconds


var tabs = new _IG_Tabs(__MODULE_ID__, "hiogi");
tabs.addTab("Fragen", { 
	contentContainer: _gel("hiogi_items_tab"), 
     callback: itemsCallback, 
     tooltip: "Stellt die gerade aktuellen Fragen da" 
});
tabs.addTab("News", { 
	contentContainer: _gel("hiogi_news_tab"), 
     callback: newsCallback, 
     tooltip: "Zeigt allgemeine hiogi-News an" 
});
tabs.addTab("Über", { 
	contentContainer: _gel("hiogi_about_tab"), 
     callback: aboutCallback, 
     tooltip: "Über dieses Gadget" 
});
tabs.setSelectedTab(0);

/**
 * INIT
 */
function hiogiInit() {
	_IG_Analytics("UA-612595-8", "/gadgets/request");
	hiogiRefresh();
	setInterval("hiogiRefresh()", (hiogiRefreshRate*1000))
}

/**
 * Refreshes the interface
 */ 
function hiogiRefresh()
{
	document.getElementById('hiogi_item_target').innerHTML = 'Daten werden geladen...';
	document.getElementById('hiogi_news_target').innerHTML = 'Daten werden geladen...';
	_IG_FetchXmlContent(hiogiXmlUrl, parseHiogiXml, {refreshInterval:300});	
}

/**
 * Parses XML
 **/
function parseHiogiXml(xml) {
	
	var questions = xml.getElementsByTagName('questions');
	var questions = questions[0].getElementsByTagName('item');
	var itemHtml = hiogiReadTemplate('hiogi_item_template');
	var newsHtml = hiogiReadTemplate('hiogi_news_template');
	var outputItemHtml=outputNewsHtml=tmp = '';

	for(var i=0;i<questions.length;i++) {
		var text = questions[i].getElementsByTagName('text')[0].firstChild.nodeValue;
		var status = questions[i].getElementsByTagName('status')[0].firstChild.nodeValue;
		var rank = questions[i].getElementsByTagName('ranking')[0].firstChild.nodeValue;
		var qDate = questions[i].getElementsByTagName('questionDate')[0].firstChild.nodeValue;
		var user = questions[i].getElementsByTagName('user')[0].firstChild.nodeValue;
		var link = questions[i].getElementsByTagName('link')[0].firstChild.nodeValue;
		
		if (user == '') {
			user = 'Anonym';
		}
		
		// Umrechnen des Datums
		tmp = qDate.split(' ');
		tmp = tmp[1].split(':');
		qDate = tmp[0]+':'+tmp[1];

		tmp = itemHtml;
		tmp = tmp.replace(/{Text}/ig, text);
		tmp = tmp.replace(/{Status}/ig, status);
		tmp = tmp.replace(/{Rank}/ig, rank);
		tmp = tmp.replace(/{Hour}/ig, qDate);
		tmp = tmp.replace(/{User}/ig, user);
		tmp = tmp.replace(/{Link}/ig, link);
		outputItemHtml += tmp;
	}
	
	if( questions.length == 0) {
		outputItemHtml = "Leider keine Fragen zur Zeit! :("
	}
	
	var news = xml.getElementsByTagName('news');
	news = news[0].getElementsByTagName('item');
	for(var i=0;i<news.length;i++) {
		var text = news[i].getElementsByTagName('text')[0].firstChild.nodeValue;
		var link = news[i].getElementsByTagName('link')[0].firstChild.nodeValue;

		tmp = newsHtml;
		tmp = tmp.replace(/{Text}/ig, text);
		tmp = tmp.replace(/{Link}/ig, link);
		outputNewsHtml += tmp;
	}

	if( news.length == 0) {
		outputNewsHtml = "Leider keine News zur Zeit! :("
	}
	hiogiLastUpdated = new Date();
	hiogiRefreshLastUpdated();
	document.getElementById('hiogi_item_target').innerHTML=outputItemHtml;
	document.getElementById('hiogi_news_target').innerHTML=outputNewsHtml;
}

/**
 * Liest Templates ein
 */
function hiogiReadTemplate(templatename) {
	return decode(document.getElementById(templatename).innerHTML);
}

function hiogiRefreshLastUpdated()
{
	var now = new Date();
	var diff = hiogiLastUpdated.getTime() + (hiogiRefreshRate*1000) - now.getTime();
	diff = Math.round(diff/1000);
	document.getElementById('hiogi_ttl').innerHTML = diff;
	setTimeout("hiogiRefreshLastUpdated()", 500);
}

function decode(v){ 
	try{
		return decodeURIComponent(v);
	}catch(e){
		return unescape(v);
	}
}

function itemsCallback(){
	_IG_Analytics("UA-612595-8", "/gadgets/click/items");
}
function newsCallback(){
	_IG_Analytics("UA-612595-8", "/gadgets/click/news");
}
function aboutCallback(){
	_IG_Analytics("UA-612595-8", "/gadgets/click/about");
}

_IG_RegisterOnloadHandler(hiogiInit);

</script>

]]>
</Content>
</Module>

