var changeable = true;
var activenews = 0;
var maxnews = 0;
var fx_news = new Array("");
var fx_news_divs = new Array("");
var fx_from = -1;
var fx_to = -1;
var blendtime = 3*1000;
var blendtimeout;
var waiting = false;

function changeImage(isrc){
         if (changeable){
            if(isrc == 'out'){
                 document.getElementById('karte').src = 'image/landkarte/dummy.png';
            }else{
                 document.getElementById('karte').src = 'image/landkarte/'+isrc+'.png';
            }
         }
}

function openPiker(country){
         if (changeable){
            document.getElementById("karte_piker_"+country).style.display = 'block';
            changeable = false;
            document.getElementById('europakarte').style.cursor = 'default';
         }
}

function closePiker(country){
         document.getElementById("karte_piker_"+country).style.display = 'none';
         changeable = true;
         document.getElementById('europakarte').style.cursor = 'auto';
         document.getElementById('europakarte').focus();
}

function switchNews(d) {
	n = d.id.substr(d.id.lastIndexOf("_")+1);
	switchBlender(n-1);
}

function switchBlender(k) {
	i = activenews;
	n = k % maxnews;
	if (fx_to >= 0) {
		fx_news[fx_to].setNow();
		fx_news[fx_to].clearTimer();
		fx_to = -1;
	}
	if (fx_from >= 0) {
		fx_news[fx_from].setNow();
		fx_news[fx_from].clearTimer();
		fx_from = -1;
	}
	fx_news[i].set(0);
	fx_news[n].set(1);
	activenews = n;
	clearBlender();
}

function startBlender() {
	if (!waiting) {
		i = activenews++;
		n = activenews % maxnews;
		fx_news[i].start(1, 0);
		fx_from = i;
		fx_news[n].start(0, 1);
		fx_to = n;
		activenews = n;
	}
}

function clearBlender() {
	for (var i = 0; i < maxnews; i++) if (activenews != i) fx_news[i].set(0);
	fx_news[activenews].set(1);
}

function waitBlender() {
	waiting = true;
	window.clearTimeout(blendtimeout);
}

function continueBlender() {
	waiting = false;
	blendtimeout = window.setTimeout("startBlender()", blendtime);
}

function completeBlender(d) {
	op = d.getStyle('opacity');
	if (op == 1) {
		fx_to = -1;
		clearBlender();
		if (!waiting) blendtimeout = window.setTimeout("startBlender()", blendtime);
	} else fx_from = -1;
}

function createBlender(d, i) {
	fx_news[i] = new fx.Style(d.id, 'opacity', {duration : blendtime, onComplete: function() { completeBlender(d); }}).set(0);
	fx_news_divs[i] = d;
	d.setStyle({ display : 'block' });
	maxnews++;
}

/* nx code relies on prototype and lowpro */
var ohbehave = {
	'div.panel:mouseover' : function(e) { waitBlender(); switchNews(this); },
	'div.panel:mouseout' : function(e) { continueBlender(); },
	'div.blender:mouseover' : function(e) { waitBlender(); },
	'div.blender:mouseout' : function(e) { continueBlender(); }
};

function nx_init() {
	/* enable background caching on ie6 */
	if ((window.ActiveXObject) && (!window.XMLHttpRequest)) try {document.execCommand("BackgroundImageCache", false, true);} catch(e){};
	if ($("content_news_inhalt")) {
		var newsCollection = $$('div.blender');
		newsCollection.each(function(d, i) { createBlender(d, i)});
		fx_news[0].set(1);
		blendtimeout = window.setTimeout("startBlender()", 2*1000);
	}
}

/* deferred autostarter */
Event.onReady(function() {nx_init();});
Event.addBehavior(ohbehave);
