/* Set up JW Player */
jwplayer("resinPlayer").setup({
    flashplayer: "/flash/player-5.4-licensed.swf",
    file: "/flash/CR_Report.flv",
    height: 268,
    width: 478,
    skin: "/flash/modieus/modieus.xml",
    controlbar: "none",
    image: "/images/interface/resin/CR_report_placeholder.png"
});

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");
        });
        player.addControlbar();
    } catch (err) {}
    try {
        controlbarReady(obj);
    } catch (err) {}
}

jQuery.fn.addControlbar = function (options) {
    var settings = jQuery.extend({
        'prefix': 'jw_controlbar',
        'elements': {
			'play': {},
			'pause': {},
			'scrubber': {},
            'currenttime': {}			
        }
    }, options);

    $(".resinToolbar").append(buildControlbar(settings));
    var player = this[0];
    var playerSiblings = this.siblings();

    var scrubber = $("."+settings.prefix+".scrubber", playerSiblings);
    var currenttime = $("."+settings.prefix+".currenttime", playerSiblings);
	var play = $("."+settings.prefix+".play", playerSiblings);
	var pause = $("."+settings.prefix+".pause", playerSiblings);
	var stop = $("."+settings.prefix+".stop", playerSiblings);

    play.click(function() {
		player.sendEvent("PLAY", true);
	});


	pause.click(function() {
		player.sendEvent("PLAY", false);
	});
	
	currenttime.html("00:00");

    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);
        }
    });


}

function buildControlbar(settings){
	var result = "";
	result += "<div class='"+settings.prefix+"' style='width:"+settings.width+"px'>";
	for (element in settings.elements){
		var style = "";
		for (styleElement in settings.elements[element]){
			style += styleElement+":"+settings.elements[element][styleElement]+";";
		}
		result += "<div class='"+settings.prefix+" "+element+"' style='"+style+"'>&nbsp;</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 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();
    $(".scrubber", playerSiblings).slider('option', 'value', percentComplete);
    $(".currenttime", playerSiblings).html(formatTime(obj.position));
}

function playTracker(obj){
	var player = $("#"+obj['id']);
	var playerSiblings = player.siblings();
	if (obj.newstate == "PLAYING"){
		$(".jw_controlbar.pause", playerSiblings).css("display","block");
		$(".jw_controlbar.play", playerSiblings).css("display","none");
	} else {
		$(".jw_controlbar.pause", playerSiblings).css("display","none");
		$(".jw_controlbar.play", playerSiblings).css("display","block");
	}
}

/* Initialise player to reference later */
var player;

function playerReady(obj) {
    player = document.getElementById(obj['id']);

};

/* Set up seek playlist */
function seek(pos) {
    if (player.getConfig().state == 'IDLE') {
        start = pos;
        player.addModelListener('META', 'metaHandler');
        player.sendEvent('PLAY');
    } else {
        player.sendEvent('SEEK', pos);
    }
}; /* Can only seek when meta data has loaded */

function metaHandler(obj) {
    if (obj.duration) {
        player.removeModelListener('META', 'metaHandler');
        player.sendEvent('SEEK', start);
    }
};
