var player;
var playlist;

var oldPos;
var duration = -1;
var time;
var volumeSlider;

function log(m) {
	// document.getElementById('debug').innerHTML += m + "<br>";
}

var MediaItem, MediaBar;
Ext.onReady(function() {
	log('Ext.onReady');
	MediaBar = new Ext.ux.Carousel('bar', {
		itemSelector : 'div.item',
		hideCaption : true
	});

	time = document.getElementById('time');	
});

function getVolumeSlider() {
	if (volumeSlider == null) {
		volumeSlider = $('volumeSlider');
	}
	return volumeSlider;
};

function playerReady(obj) {
	log('playerReady(' + obj.id + ')');
	addListeners(obj['id']);
};

function addListeners(id) {
	log('addListeners(' + id + ')');
	player = document.getElementById(id);
	try {
		playlist = player.getPlaylist();
	} catch (e) {
		setTimeout("addListeners(" + id + ")", 100);
		return;
	}
	if (playlist.length > 0) {
		player.addControllerListener("ITEM", "itemTracker");
		//player.addModelListener("BUFFER", "bufferTracker");
		player.addModelListener("STATE", "stateTracker");
		slider.setValue(100-player.getConfig().volume);
		//player.addModelListener("TIME", "timeTracker");
	} else {
		setTimeout("addListeners(" + id + ")", 100);
	}
};

function bufferTracker(obj) {
	//$('ext-player-caption').innerHTML += 'lade ... ' + obj.percentage + " %\n";
};

function stateTracker(obj) {
	if (obj.newstate == "BUFFERING") {
		$('ext-player-caption').innerHTML = 'lade ...\n';
	} else if (obj.newstate == "PLAYING" && obj.oldstate == "BUFFERING"){
		$('ext-player-caption').innerHTML = playlist[player.getConfig().item].title;
	}
};

function itemTracker(obj) {
	log('itemTracker(' + obj.id + ')');
	var conf = player.getConfig();
	log(' -> switched to Item ' + conf.item);

	// Media-Bar verschieben
	MediaBar.setSlide(Math.floor(conf.item / 3), false);

	// Caption ändern
	document.getElementById('ext-player-caption').innerHTML = playlist[conf.item].title;
	
	// an die richtige Stelle schieben
	if (getVolumeSlider().getStyle('marginLeft') != '404px') {
		getVolumeSlider().setStyle({marginLeft:'404px',display:'none'});
	}
	
	// einblenden
	if (playlist[conf.item].type == 'video' || playlist[conf.item].type == 'sound') {
		getVolumeSlider().appear({duration:0.5});
	} else {
		getVolumeSlider().fade({duration:0.5});
	}	

	duration = -1;
};

function timeTracker(obj) {
	/*if (duration == -1) {
		duration = Math.floor(obj.duration);
	}

	var newPos = Math.floor(obj.position);
	if (newPos != oldPos) {
		time.innerHTML = newPos + "/" + duration;
		oldPos = newPos;
	}*/
};

function toSlide(i) {
	log('toSlide(' + i + ')');
	player.sendEvent("ITEM", i);
};

function setVolume(v) {
	player.sendEvent("VOLUME", "" + Math.round(v));
};


