// ==UserScript==
// @name          Finanzen.net
// @namespace     http://www.finanzen.net/
// @include       http://www.finanzen.net/aktien/aktien_realtime.asp?AktieWKN=*
// @description	  Finanzen.net AutoRefresher fuer Realtime-Kurse Popup. Mit der Variable ReInterval im Quellcode kann die Intervalzeit veraendert werden 
// ==/UserScript==

	// Aktualisierungsinterval in Tausendstel Sekunden (1 Sekunde * 1000)
var ReInterval = 3000;


(function() {
	if (self.location.href.indexOf("aktien/aktien_realtime.asp?AktieWKN=")>-1) wkn_realtime();
})();

var refreshRealtime; var refreshRealtime_timer; var reBaDate;
function wkn_realtime() {
	var reBanner = document.body.firstChild;
	reBaDate = new Date();
	if (reBanner.innerText.indexOf("Diese Seite automatisch aktualisieren")>-1) {
		reBanner.innerHTML = "<div style=color:darkslateblue><b>"+(ReInterval/1000)+" Sek. Refresher aktiv: (<a href='javascript:void(0)' onclick='wkn_stopRefresh();' id=reBaStop>stop</a>) - <span id=reBannerTime></span></b></div>";
	}
	document.getElementsByName("AktieWKN")[0].onmousedown=function(){wkn_stopRefresh();}
	getEl("reBannerTime").innerText = formatTime(reBaDate,1);
	refreshRealtime = self.setTimeout("wkn_refreshNow()",ReInterval);
}

function wkn_stopRefresh() { self.clearTimeout(refreshRealtime); getEl("reBaStop").innerText="start"; getEl("reBaStop").onclick=wkn_startRefresh; }
function wkn_startRefresh() { getEl("reBaStop").innerText="stop"; getEl("reBaStop").onclick=wkn_stopRefresh; wkn_refreshLoad(); }
function wkn_refreshNow() {	getEl("reBannerTime").innerText = formatTime(reBaDate,1); wkn_refreshLoad();}


function wkn_refreshLoad() {
	xmlHttp = null; if (typeof(XMLHttpRequest)!="undefined") xmlHttp = new XMLHttpRequest();
	if (!xmlHttp) {
	    try { xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");
	    } catch(e) { try { xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP"); } 
		  	catch(e) { xmlHttp  = null; getEl("reBaStop").parentNode.innerHTML="<b style=color>Auto Refresher funktioniert nicht!</b>"; }   
			}
	}
	if (xmlHttp) {
	    xmlHttp.open("GET", self.location.href, true);
		getEl("reBannerTime").innerText+=" [Aktualisiere...]";
	    xmlHttp.onreadystatechange = function () {
	        if (xmlHttp.readyState == 4) {
				var erg = xmlHttp.responseText;
				erg = erg.substr(erg.indexOf("<body>")+6);
				erg = erg.substr(0,erg.indexOf("</body>"));
				document.body.innerHTML = erg;
				erg = null;
				wkn_realtime();
			}
		}
	    xmlHttp.send(null);
	}
}

// basic_jsclass
function getEl(id) { return document.getElementById(id); }
function formatDate(calObj) {
	var str = "";
	if (formatDate.arguments.length>1) {
		if (formatDate.arguments[1]>1) str = days[calObj.getDay()] + ", "; 
		else str = days[calObj.getDay()].substr(0,2) + ", "; 
	}
	return str += strfill(calObj.getDate()) + "." + strfill(calObj.getMonth()+1) + "." + calObj.getFullYear();
}
function formatTime(calObj) {
	var str = strfill(calObj.getHours())+":"+strfill(calObj.getMinutes());
	if (formatTime.arguments.length>1) str +=":"+strfill(calObj.getSeconds());
	return str;
}
function strfill(str,ch,l) {
	if (!ch) var ch="0"; 
	if (!l) var l=2;
	str = String(str);
	while (str.length<l) str=""+ch+""+str;
	return str;
}
