var UKISA = UKISA || {};
UKISA.widget = UKISA.widget || {};
UKISA.widget.SoundManager = {};

UKISA.widget.SoundManager.Playlist = function(el) {
	var playing, canvas, list, li, a, play, playA, stop, stopA, next, nextA, prev, prevA, Event, Dom, sm, loaded;

	el = document.getElementById(el);

	if (!el) { return; }

	Event = YAHOO.util.Event;
	Dom = YAHOO.util.Dom;
	instance = this;
	loaded = false;

	canvas = document.createElement("div");
	canvas.className = "sm-playlist";
	canvas.id = el.id + "-sm-playlist";

	list = document.createElement("ul");
	li = document.createElement("li");

	a = document.createElement("a");
	a.href = "#";

	playing = document.createElement("p");
	playing.className = "sm-playing";
	playing.innerHTML = "Loading..";

	playA = a.cloneNode(false);
	playA.innerHTML = "Play";
	play = li.cloneNode(false);
	play.appendChild(playA);
	play.className = "sm-play sm-start disabled";
	Event.addListener(play, "click", function(e) {	
		Event.preventDefault(e);	
		if (!loaded) { return; }

		if (Dom.hasClass(play, "sm-play")) {
			Dom.removeClass(play, "sm-play");
			Dom.addClass(play, "sm-pause");

			if (Dom.hasClass(play, "sm-start")) {
				Dom.removeClass(play, "sm-start");
				sm.play();
			} else {
				sm.resume();
			}

			playing.innerHTML = "Now playing: " + files[index].innerHTML;

		} else {
			Dom.removeClass(play, "sm-pause");
			Dom.addClass(play, "sm-play");
			sm.pause();
			
			playing.innerHTML = files[index].innerHTML + " (paused)";
		}

	}, instance);
	
	stopA = a.cloneNode(false);
	stopA.innerHTML = "stop";
	stop = li.cloneNode(false);
	stop.appendChild(stopA);
	stop.className = "sm-stop disabled";
	Event.addListener(stop, "click", function(e) {
		Event.preventDefault(e);	
		if (!loaded) { return; }
		
		if (!Dom.hasClass(play, "sm-start")) {
			Dom.addClass(play, "sm-start");
		}
		
		if (Dom.hasClass(play, "sm-pause")) {
			Dom.removeClass(play, "sm-pause");
			Dom.addClass(play, "sm-play");
		}
			
		sm.stop();
		playing.innerHTML = files[index].innerHTML + " (stopped)";
		
	}, instance);

	nextA = a.cloneNode(false);
	nextA.innerHTML = "next";
	next = li.cloneNode(false);
	next.appendChild(nextA);
	next.className = "sm-next disabled";
	Event.addListener(next, "click", function(e) {	
		Event.preventDefault(e);	
		if (!loaded) { return; }	

		if (files.length === index + 1) {
			return;
		}	

		soundManager.destroySound("sm-playlist");
		
		index = index + 1;

		if (files.length === index + 1) {
			Dom.addClass(next, "disabled");
		}

		if (index + 1 > 0) {
			Dom.removeClass(prev, "disabled");
		}
		
		if (Dom.hasClass(play, "sm-play")) {
			Dom.removeClass(play, "sm-play");
			Dom.addClass(play, "sm-pause");
		}

		sm = soundManager.createSound({
			id: "sm-playlist",
			url: files[index].href,
			volume: 50
		});
		
		sm.play();

		playing.innerHTML = "Now playing: " + files[index].innerHTML;
		
	}, instance);

	prevA = a.cloneNode(false);
	prevA.innerHTML = "prev";
	prev = li.cloneNode(false);
	prev.appendChild(prevA);
	prev.className = "sm-prev disabled";
	Event.addListener(prev, "click", function(e) {		
		Event.preventDefault(e);
		if (!loaded) { return; }

		if (index === 0) {
			return;
		}	

		soundManager.destroySound("sm-playlist");
		
		index = index - 1;

		if (index === 0) {
			Dom.addClass(prev, "disabled");
		}

		if (index > 0) {
			Dom.removeClass(next, "disabled");
		}
		
		if (Dom.hasClass(play, "sm-play")) {
			Dom.removeClass(play, "sm-play");
			Dom.addClass(play, "sm-pause");
		}

		sm = soundManager.createSound({
			id: "sm-playlist",
			url: files[index].href,
			volume: 50
		});

		sm.play();

		playing.innerHTML = "Now playing: " + files[index].innerHTML;

	}, instance);

	list.appendChild(play);
	list.appendChild(stop);
	list.appendChild(prev);
	list.appendChild(next);

	canvas.appendChild(playing);
	canvas.appendChild(list);
	
	Dom.insertAfter(canvas, el);
	Dom.addClass(el, "sm-hide");

	var files = el.getElementsByTagName("a");
	var index = 0;

	soundManager.debugMode = false; 
	soundManager.url = '/web/flash/';
	soundManager.defaultOptions.onfinish = function() {
		Dom.removeClass(play, "sm-pause");
		Dom.addClass(play, "sm-play");
		Dom.addClass(play, "sm-start");
	};
	soundManager.onload = function() {
		sm = soundManager.createSound({
			id: "sm-playlist",
			url: files[index].href,
			volume: 50
		});
		
		playing.innerHTML = "Now playing: " + files[index].innerHTML;

		loaded = true;
		
		Dom.removeClass(play, "disabled");
		Dom.removeClass(stop, "disabled");
		Dom.removeClass(next, "disabled");
	}; 

};
