﻿/// <reference path="jquery-1.3.1-vsdoc.js" />
(function($) {
	var index = 0;
	var player = null
	var currentControl = null;

	$.fn.audioplayer = function() {
		this.each(function() {
			if (navigator.appName.indexOf("Microsoft") != -1) player = window[this.id];
			else player = document[this.id];
			setTimeout(createPlayer, 1000);
		});
	}

	function createPlayer() {
		player.loaded = function() {
			return player.GetVariable('loadingState') == 'loaded';
		};

		player.running = function() {
			return player.GetVariable('playingState') == 'playing';
		};

		player.load = function(url) {
			if (player.loaded() && player.url == url)
				return;

			player.SetVariable('currentSong', url);
			player.TCallLabel('/', 'load');
			player.url = url;
		};

		player.go = function(url) {
			player.load(url);
			player.TCallLabel('/', 'play');
		};

		player.pause = function() {
			player.TCallLabel('/', 'pause');
		};

		player.SetVariable("onSongOver", "$.fn.songOverHandle()");
	}

	$.fn.audioplay = function() {
		return this.each(function() {
			var $this = $(this);
			var urls = [];

			$this.each(function() {
				var url = this.toString();

				if (url.length - url.toLowerCase().lastIndexOf(".mp3") == 4)
					urls.push(url);
			});

			if (urls.length != 1)
				throw new Error("Element must contain one reference to a mp3 file.");

			$this.after(getBehavior(urls[0]));
		});
	};

	function getBehavior(url) {
		var id = 'audio-flash-' + (++index);

		var behavior =
			$('<div id="audioplayer-' + id + '" title="Слушать"><span class="audiocontrol"></span></div>')
				.addClass("audioplayer");

		behavior.click(function() {
			if (behavior.hasClass("playing")) {
				behavior.removeClass("playing");
				behavior.attr("title", "Слушать");
				player.pause();
			} else {
				if (player.url != url && currentControl)
					currentControl.removeClass("playing");

				behavior.addClass("playing");
				behavior.attr("title", "Остановить");
				player.go(url);
				currentControl = $(this);
			}

		});

		return behavior;
	};

	$.fn.songOverHandle = function() {
		if (!currentControl) return;

		currentControl.removeClass("playing");
	}

})(jQuery);
