$(function() {
	$(".jw_controlbar").remove();
});

try {
	var controlbarReady = playerReady;
} catch (err){
}

playerReady = function(obj) {
	try {
		var player = $("#"+obj['id']);
		player.each(function (){
			this.addModelListener("TIME","timeTracker");
			this.addModelListener("STATE","playTracker");
			this.addControllerListener("MUTE","muteTracker");
			this.addControllerListener("VOLUME","volumeTracker");
			if ($("#"+this['id']).parent().hasClass("no-vid")) {
				$("#"+this['id']).addControlbar();
			}
		});

		//$(".no-vid").siblings(".jw_controlbar").remove();
		//$(".no-vid").addControlbar();
	} catch (err){
	}
	try {
		controlbarReady(obj);
	} catch (err){
	}
}

jQuery.fn.addControlbar = function (options){
	var settings = jQuery.extend({
		'width': this.width(),
		'prefix': 'jw_controlbar',
		'elements': {'play':{},'pause':{},'loading':{},'stop':{},'scrubber':{},'currenttime':{},'timedivider':{},'totaltime':{},'fullscreen':{},'mute':{},'unmute':{},'volume':{}}
	}, options);
	
	this.after(buildControlbar(settings));
	var player = this[0];
	var playerSiblings = this.siblings();
	var play = $("."+settings.prefix+".play", playerSiblings);
	var pause = $("."+settings.prefix+".pause", playerSiblings);
	var stop = $("."+settings.prefix+".stop", playerSiblings);
	var scrubber = $("."+settings.prefix+".scrubber", playerSiblings);
	var currenttime = $("."+settings.prefix+".currenttime", playerSiblings);
	var timedivider = $("."+settings.prefix+".timedivider", playerSiblings);
	var totaltime = $("."+settings.prefix+".totaltime", playerSiblings);
	var fullscreen = $("."+settings.prefix+".fullscreen", playerSiblings);
	var mute = $("."+settings.prefix+".mute", playerSiblings);
	var unmute = $("."+settings.prefix+".unmute", playerSiblings);
	var volume = $("."+settings.prefix+".volume", playerSiblings);

	play.click(function() {
		player.sendEvent("PLAY", true);
		$(".jw_controlbar.loading", playerSiblings).show();
	});

	pause.click(function() {
		player.sendEvent("PLAY", false);
	});

	stop.click(function() {
		player.sendEvent("STOP");
	});

	scrubber.slider({
			range: "min",
			min: 0,
			max: 100000,
			slide: function(event, ui) {
				var duration = player.getPlaylist()[player.getConfig()['item']].duration;
				var seekTime = Math.round(duration * ui.value / 100000);
				player.sendEvent("SEEK", seekTime);
			}
	});
	
	currenttime.html("00:00");	
	
	timedivider.html("/");

	totaltime.html("00:00");

	fullscreen.click(function() {
		player.sendEvent("FULLSCREEN", true);
	});

	mute.click(function() {
		player.sendEvent("MUTE", true);
	});

	unmute.click(function() {
		player.sendEvent("MUTE", false);
	});

	volume.slider({
			range: "min",
			min: 0,
			max: 100,
			value: player.getConfig()['volume'],
			slide: function(event, ui) {
				player.sendEvent("VOLUME", ui.value);
			}
		});
}

function buildControlbar(settings){
	var result = "";
	result += "<div class='"+settings.prefix+"' style='width:"+settings.width+"px'>";
	for (element in settings.elements){
		result += "<div class='"+settings.prefix+" "+element+"'><span class='move_'>"+element+"</span></div>";
	}
	result += "</div>";
	return result;
}

function pad(s,l) {
	return( l.substr(0, (l.length-s.length) )+s );
}

function formatTime(seconds){
	var result = "";
	var remaining = Math.floor(seconds);
	
	if (seconds > 3600){
		result += pad((Math.floor(remaining/3600)).toString(),"00")+":";
		remaining = remaining % 3600;
	}
	
	result += pad((Math.floor(remaining/60)).toString(),"00")+":";
	remaining = remaining % 60;

	result += pad(remaining.toString(),"00")+"";
	
	return result;
}

function play(player){
	player.sendEvent("PLAY");
	return false;
}

function stop(player){
	player.sendEvent("STOP");
	return false;
}

function seek(player){
	player.sendEvent("STOP");
	return false;
}

function timeTracker(obj){
	var percentComplete = Math.round(100000 * obj.position / obj.duration);
	var player = $("#"+obj['id']);
	var playerSiblings = player.siblings();
	$(".jw_controlbar.scrubber", playerSiblings).slider('option', 'value', percentComplete);
	$(".jw_controlbar.currenttime", playerSiblings).html(formatTime(obj.position));
	$(".jw_controlbar.totaltime", playerSiblings).html(formatTime(obj.duration));
}

function playTracker(obj){
	var player = $("#"+obj['id']);
	var playerSiblings = player.siblings();
	if (obj.newstate == "PLAYING"){
		$(".jw_controlbar.pause", playerSiblings).show();
		$(".jw_controlbar.loading", playerSiblings).hide();
		$(".jw_controlbar.play", playerSiblings).hide();
	} else {
		$(".jw_controlbar.pause", playerSiblings).hide();
		$(".jw_controlbar.play", playerSiblings).show();
	}
}

function muteTracker(obj){
	var player = $("#"+obj['id']);
	var playerSiblings = player.siblings();
	if (!obj.state){
		$(".jw_controlbar.mute", playerSiblings).show();
		$(".jw_controlbar.unmute", playerSiblings).hide();
		setVolume($(".jw_controlbar.volume", playerSiblings), player[0].getConfig()['volume']);
	} else {
		$(".jw_controlbar.mute", playerSiblings).hide();
		$(".jw_controlbar.unmute", playerSiblings).show();
		setVolume($(".jw_controlbar.volume", playerSiblings), 0);
	}
}

function volumeTracker(obj){
	var player = $("#"+obj['id']);
	var playerSiblings = player.siblings();
	setVolume($(".jw_controlbar.volume", playerSiblings),obj.percentage);
}

function setVolume(slider, value){
	slider.slider('option', 'value', value);
}
