if (!window.SUI) {
	var SUI = { util: {} };
}
else if (!SUI.util) {
SUI.util = {};
}


SUI.util.Music = {
	store: {
		id: false,
		playlist: [],
		current: false,
		curVol: 50,
		disp: {}
	},
	timeFormat: function (t) {
		//document.title = t;
		var sec = Math.floor((t / 1000) % 60);
		var min = Math.floor((t / (1000 * 60)) % 60);
		var cur = '';
		if (sec < 10) {
			cur = min + ":0" + sec;
		}
		else if (sec >= 10) {
			cur = min + ":" + sec;
		}
		return cur;
	},
	load: function (n, p) {
		var st = SUI.util.Music.store;
		st.current = n;
		if (st.sound) {
			st.sound.destruct();
		}

		st.disp.progress.style.width = '';

		soundManager.onready(function (oStatus) {
			if (oStatus.success) {
				st.sound = soundManager.createSound({
					id: 'SUI-Music' + st.id,
					url: st.playlist[n]['audioUrl'],
					autoPlay: p,
					volume: st.curVol,
					onfinish: function () {
						SUI.util.Music.action('next');
					},
					onload: function () {
						var st = SUI.util.Music.store;
						st.playlist[st.current].title = st.playlist[st.current].title || '';
						st.playlist[st.current].artist = st.playlist[st.current].artist || '';
						st.disp.title.innerHTML = st.playlist[st.current].title + (st.playlist[st.current].artist != '' ? ' - ' : '') + st.playlist[st.current].artist;
						st.disp.total.innerHTML = SUI.util.Music.timeFormat(st.sound.duration);
					},
					onplay: function () {
						st.Y.one(st.disp.play).addClass('pause');
					},
					onresume: function () {
						st.Y.one(st.disp.play).addClass('pause');
					},
					onpause: function () {
						st.Y.one(st.disp.play).removeClass('pause');
					},
					whileplaying: function () {

						st.disp.time.innerHTML = SUI.util.Music.timeFormat(st.sound.position);
						var per = (st.sound.position / (st.sound.duration / 100));
						st.disp.progress.style.width = per + '%';
						st.playlist[st.current].title = st.playlist[st.current].title || '';
						st.playlist[st.current].artist = st.playlist[st.current].artist || '';
						st.disp.title.innerHTML = st.playlist[st.current].title + (st.playlist[st.current].artist != '' ? ' - ' : '') + st.playlist[st.current].artist;
						st.disp.total.innerHTML = SUI.util.Music.timeFormat(st.sound.duration);
					}
				});
				st.sound.load();
			}
		});
		SUI.util.Music.drawlist();
	},
	setVol: function (n) {
		SUI.util.Music.store.curVol = n;
		SUI.util.Music.store.sound.setVolume(n);
	},
	popOut: function () {
		var st = SUI.util.Music.store;
		var id = st.Y.one(st.disp.playlist).ancestor('div.element-container').get('id').replace('element', '');
		window.open("/popout.asp?eleid=" + id, "suimusic", "toolbar=no,location=no,directories=no,status=no,menubar=no,width=200,height=" + (60 + (SUI.util.Music.store.listnum * 27)));
		st.sound.pause();
	},
	action: function (a, node) {
		var st = SUI.util.Music.store;
		var Y = st.Y;
		node = Y.one(node);
		YUI().use('yui2-menu', function (Y2) {
			if (a == 'play' || a == 'play pause') {
				// Check if playing?
				st.sound.togglePause();
			}
			else if (a == 'next') {
				if (st.playlist[st.current + 1]) {
					SUI.util.Music.load(st.current + 1, true);
				}
				else {
					SUI.util.Music.load(0, true);
				}
			}
			else if (a == 'prev') {
				if (st.playlist[st.current - 1]) {
					SUI.util.Music.load(st.current - 1, true);
				}
				else {
					SUI.util.Music.load(st.playlist.length - 1, true);
				}
			}
			else if (a == 'vol') {

				if (st.volMenu) {
					try {
						st.volMenu.destroy();
					} catch (e) { }
				}
				Y.one("#" + st.id + " .menus").setContent('<div id="' + st.id + '-volmenu"></div>');
				st.volMenu = new Y2.YUI2.widget.Menu(st.id + '-volmenu', {
					width: '55px',
					zIndex: 50000,
					visible: true,
					context: [Y.Node.getDOMNode(node), 'tl', 'bl']
				});

				st.volMenu.addItems([
					{ text: "<span class='vol1' title='25%'>25%</span>", url: "#", checked: (st.sound.volume == 25), onclick: { fn: function () { SUI.util.Music.setVol(25) } } },
					{ text: "<span class='vol2' title='50%'>50%</span>", url: "#", checked: (st.sound.volume == 50), onclick: { fn: function () { SUI.util.Music.setVol(50) } } },
					{ text: "<span class='vol3' title='75%'>75%</span>", url: "#", checked: (st.sound.volume == 75), onclick: { fn: function () { SUI.util.Music.setVol(75) } } },
					{ text: "<span class='vol4' title='100%'>100%</span>", url: "#", checked: (st.sound.volume == 100), onclick: { fn: function () { SUI.util.Music.setVol(100) } } },
				]);

				st.volMenu.render();



			}
			else if (a == 'pop') {

				if (st.popMenu) {
					try {
						st.popMenu.destroy();
					} catch (e) { }
				}
				Y.one("#" + st.id + " .menus.pop").setContent('<div id="' + st.id + '-popmenu"></div>');
				st.popMenu = new Y2.YUI2.widget.Menu(st.id + '-popmenu', {
					zIndex: 50000,
					visible: true,
					context: [Y.Node.getDOMNode(node), 'tl', 'bl']
				});
				
				var menuItems = window.location.href.search('/member/') == -1 ? [
					
					{ text: "Pop-Out", url: "#", onclick: { fn: SUI.util.Music.popOut} }
					
					/*,
					{ text: "Add to My Playlist", url: "#", onclick: { fn: function () { } } },
					{ text: "Feature", url: "#", onclick: { fn: function () { } } },*/
				] : [];
				var addurl = st.playlist[st.current].addurl;
				if (addurl && addurl != '') {
					menuItems.push({ text: "Add to My Playlist", url: "#", onclick: { fn: function () { window.location.href = addurl } } });
				}
				st.popMenu.addItems(menuItems);

				st.popMenu.render();



			}
		});
	},
	drawlist: function () {
		var st = SUI.util.Music.store;
		var count = st.listnum * 1;
		if (typeof count == 'string') count = 10;
		var h1 = '';
		var h2 = '';
		for (var i = 0; st.playlist[i]; i++) {
			if (count == 0) break;
			var li = '<li onclick="SUI.util.Music.load(' + i + ',true);" class="element-row2" onmouseover="this.className = \'element-row1\'" onmouseout="this.className = \'element-row2\'"><span class="title">' + st.playlist[i].title + '</span>' + (st.playlist[i].artist ? (st.playlist[i].artist != '' ? ' <span class="artist">' + st.playlist[i].artist + '</span>' : '') : '') + '</li>';
			if (i < st.current) {
				h2 += li;
				count--;
			}
			else if (i > st.current) {
				h1 += li;
				count--;
			}
		}
		st.disp.playlist.innerHTML = (h1 + h2);
	},
	init: function (id, disp, auto, shuffle, mc) {
		//base server call on id
		//disp num, 
		var st = SUI.util.Music.store;
		st.id = id;
		st.listnum = disp;
		/*
		var mc = [
		{ "id": "1993951", "contributor": "2415v5el3dflc", "featurl":"", "addurl","" "title": "Forevermore", "artist": "Katie Herzig", "audioUrl": "http://api.ning.com/files/RfPwYJDjhREie*RkWM*dKJpv1t9ot8cBWqZz36trQqkOXt9kyoH5CbdWo10LAQAT4M*PW6-UzeKS1-DgxKM0mB7cKJ4xh42G/Forevermore.mp3" },
		{ "id": "1993951", "contributor": "2415v5el3dflc", "title": "Hologram", "artist": "Katie Herzig", "audioUrl": "http://api.ning.com/files/RfPwYJDjhRFddMPvaQI02vI8hoq8ietDMo*OySn9wKVTH2aPI5RCgkTyYQgzlgE1dHXMlB8kHIKh0wRymjzJPOCzMd3u72BR/Hologram.mp3" },
		{ "id": "1993951", "contributor": "2415v5el3dflc", "title": "Shovel", "artist": "Katie Herzig", "audioUrl": "http://api.ning.com/files/RfPwYJDjhRELsNNxthsOrQQwUpu41IQZowX5RmFa8jrEQP8DFvYXFh72-L-s2odrsxStK2JZ6GCwky4YsCb6JJ1ygSC*Isj5/Shovel.mp3" },
		{ "id": "1993951", "contributor": "2415v5el3dflc", "title": "Wish You Well", "artist": "Katie Herzig", "audioUrl": "http://api.ning.com/files/RfPwYJDjhREBh9E0Wee0gsxaOVRdGi13DifE0b3HMLACw9UytT3eyj5foJZMIpdT6RXcYefu5e8r8myADJjeTM3p5wT7Pb04/WishYouWell.mp3" }
		];
		*/
		// If shuffle mix playlist array.
		if (shuffle) {
			mc.sort(function () { return (Math.round(Math.random()) - 0.5) });
		}
		st.playlist = mc;
		YUI().use('node', function (Y) {
			//document.title = 'y loaded';
			st.Y = Y;
			var canvas = document.getElementById(id);
			canvas.innerHTML =
				'<div id="' + id + '-player" class="player element-row2">' +
					'<button class="prev">Prev</button>' +
					'<button class="play">Play/Pause</button>' +
					'<button class="next">Next</button>' +
					'<button class="vol">Volume</button>' +
					'<button class="pop">Options</button>' +
					'<div class="overlay"></div>' +
					'<div class="progress"></div>' +
					'<div class="title">Loading...</div>' +
					'<div class="time">0:00</div>' +
					'<div class="time total">0:00</div>' +
				'</div><ul id="' + id + '-playlist" class="playlist"' + (disp <= 0 ? 'style="display: none;"' : '') + '></ul><div class="menus"></div><div class="menus pop"></div>';

			//Y.all('#' + id + ' li').on('click', function (e) {
			//	var node = e.currentTarget;
			//	alert(node.get('innerHTML'));
			//});
			var buttons = document.getElementById(id + '-player').getElementsByTagName('button');
			for (var i = 0; buttons[i]; i++) {
				buttons[i].title = buttons[i].innerHTML;
				buttons[i].innerHTML = '<span>' + buttons[i].innerHTML + '</span>'
				buttons[i].onclick = function (e) {
					SUI.util.Music.action(this.className, this);
					try { window.event ? window.event.cancelBubble = true : arguments[0].cancelBubble = true; } catch (e) { }
					return false;
				};
				st.disp[buttons[i].className] = buttons[i];
			}
			/*
			Y.all('#' + id + ' .player button').each(function (node) {
			node.set('title', node.get('innerHTML'));
			node.setContent('<span>' + node.get('innerHTML') + '</span>');
			node.on('click', function (e) {
			SUI.util.Music.action(e.currentTarget.get('className'), e.currentTarget);
			e.stopPropagation();
			});
			st.disp[node.get('className')] = node;
			});
			*/

			/*
			document.getElementById(id + '-player').onclick = function (e) {
			//var per = (e.pageX - e.currentTarget.getX()) / (this.offsetWidth / 100);
			//document.title = per;
			//if (st.sound) {
			//	st.sound.setPosition(Math.floor(per * (st.sound.duration / 100)));
			//}
			};
			*/
			Y.one('#' + id + ' .player').on('click', function (e) {
				var per = (e.pageX - e.currentTarget.getX()) / (e.currentTarget._node.offsetWidth / 100);
				//document.title = per;
				if (st.sound) {
					st.sound.setPosition(Math.floor(per * (st.sound.duration / 100)));
				}
			});


			st.disp.title = Y.Node.getDOMNode(Y.one('#' + id + ' .player .title'));
			st.disp.time = Y.Node.getDOMNode(Y.one('#' + id + ' .player .time'));
			st.disp.total = Y.Node.getDOMNode(Y.one('#' + id + ' .player .time.total'));
			st.disp.progress = Y.Node.getDOMNode(Y.one('#' + id + ' .player .progress'));
			st.disp.playlist = Y.Node.getDOMNode(Y.one('#' + id + ' .playlist'));

			SUI.util.Music.load(0, auto);
		});
	}
};


