
var intervalTime = 7000;
var slideTime = 2000;
//var blankTime = 100;
var items;
var prevItems;
var soundOn = 1;
var marker = '';
var currentTickerPanel = 1;

function printError(XMLHttpRequest, textStatus, errorThrown) {
	//console.log(textStatus);
	//console.log(errorThrown);
	//console.log(XMLHttpRequest);
}


function startTicker(xml) {
	items = jQuery(xml);
	prevItems = items;

	tick(0);
}


function tick(i) {
	var itemCount = jQuery('entry', items).length;
	var nextIndex = i + 1;
	var timeout = intervalTime;

	//console.log('tick got index ' + i);
	var currentItem = items.find('entry:eq(' + i + ')');

	// Set timeout to 200 first time
	if(i == 0) {
		timeout = 200;
	}

	jQuery('#tickerMarker').html('<img src="/images/_layout/_modules/news/plingikon.png">');
	marker = '<img src="/images/_layout/_modules/news/plingikon.png">';
	if(prevItems) {
		// Pling?
		if(!xml_in_array(currentItem)) {
			if(soundOn) {
				marker = '<img src="/images/_layout/_modules/news/plingikon-text.png"><embed src="/media/sounds/pling.wav" hidden=true align=baseline border=0 autostart=true autoplay=true /></embed>';
			} else {
				marker = '<img src="/images/_layout/_modules/news/plingikon-text.png">';
			}

			timeout = intervalTime*3;
			soundOn = 0;
		}
	}
	jQuery('#tickerMarker').html(marker);

	// render the news item
	showItem(currentItem);

	// time to start over?
	if(i > itemCount-2) {
		nextIndex = 0;
		reloadFeed();
	}

	var nextTickerPanel = 1; //currentTickerPanel > 2 ? 1 : currentTickerPanel+1;

	tickFunctionCall = function() {
		tick(nextIndex);
	};
	setTimeout(tickFunctionCall, timeout);
	//alert('b'+currentTickerPanel);
	currentTickerPanel = nextTickerPanel;
	//alert('after'+currentTickerPanel);
}


function showItem(itemXml) {
	var title = itemXml.find('title').text();
	var date = itemXml.find('updated').text();
	var link = itemXml.find('link').attr('href');

	// format the date
	date = String(date);
	date = date.split('T')[1];
	date = date.substr(0, 5);

	tickIn();
	// render data
	jQuery('.tickerTitle'+currentTickerPanel).text(title);
	jQuery('.tickerTitle'+currentTickerPanel).slideDown('fast');
	jQuery('.tickerDate'+currentTickerPanel).html(date);
	jQuery('.tickerLink').attr('href', link);
}

function reloadFeed() {
	jQuery.ajax({
		type: "GET",
		url: "/feed/all.xml",
		dataType: "xml",
		success: feedSuccessfullyLoaded,
		error: printError
	});
}

function feedSuccessfullyLoaded(xml) {
	prevItems = items;
	soundOn = 1;
	items = jQuery(xml);
}


function tickIn() {
	//alert('Panel GO ' + currentTickerPanel);
	var tickerPanel = jQuery('div.tickerPanel'+currentTickerPanel);
	tickerPanel.css('left', '-720px');
	tickerPanel.animate({ left: '5px' }, slideTime);
	/*tickerPanel.css('margin-left', '-520px');
	tickerPanel.animate({ "margin-left": '1px' }, slideTime);*/
}


function tickOut() {
	var tickerPanel = jQuery('div.tickerPanel'+currentTickerPanel);
	tickerPanel.css('left', '5px');
	tickerPanel.animate({ left: '720px' }, slideTime);
}

// Checks if the given value exists in the array
//
// version: 1008.1718
// discuss at: http://phpjs.org/functions/in_array
// +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
function in_array (needle, haystack, argStrict) {
    var key = '', strict = !!argStrict;

    if (strict) {
        for (key in haystack) {
            if (haystack[key] === needle) {
                return true;
            }
        }
    } else {
        for (key in haystack) {
            if (haystack[key] == needle) {
                return true;
            }
        }
    }

    return false;
}

// Check if xml Item is in the PrevItems array
function xml_in_array(itemXml) {

	var itemCount = jQuery('entry', prevItems).length;

	var title = itemXml.find('title').text();
	var titleTmp;
	var itemTmp;

	for (i=0; i<itemCount; i++) {
		itemTmp = prevItems.find('entry:eq(' + i + ')');

		titleTmp = itemTmp.find('title').text();
		if(title == titleTmp) {
			return true;
		}
	}
	return false;
}

jQuery.ajax({
	type: "GET",
	url: "/feed/all.xml",
	dataType: "xml",
	success: startTicker,
	error: printError
});



