﻿/// <reference path="jquery-1.3.2-vsdoc.js"/>

/**
	Panda Utils.
	© Buttercup Classics Ltd, 2009
*/
Array.prototype.each = function(lambda) {
	for (var i = 0; i < this.length; i++) {
		lambda(this[i], i);
	}
};

Array.prototype.map = function(lambda) {
	var result = [];
	for (var i = 0; i < this.length; i++) {
		result[i] = lambda(this[i]);	
	}
	return result;
};

function appendToUrl(url, more) {
	return (url.match("^.*/$") ? url : url + "/") + (more.match("^/.*$") ? more.toString().substring(1) : more);
}



$.fn.hoverTarget = function(specifiedOptions) {
	var options = { 
		clickURL: null,
		hoverClass: null
	}
	
	if (specifiedOptions)
		$.extend(options, specifiedOptions);
	
	this.each(function() {
		var hoverable = $(this);
		hoverable.hover(
			function() {
				var targets = $(this).find("td").andSelf();
				targets.addClass(options.hoverClass);
				if (options.clickURL) {
					targets.click(function() {
						window.location.href = options.clickURL.apply(hoverable);
					});
				}
			},
			function() {
				var targets = $(this).find("td").andSelf();
				targets.removeClass(options.hoverClass);
				if (options.clickURL) {
					targets.unbind("click");
				}
			});
	});	
	
	return this;
};

$.fn.addToCart = function(currentPageURL, addToCartClass, addedToCartClass) {
	$(this).each(function() {
		$(this).click(function() {
			var form = $(this).parents("form:first");
			var cartURL = form.attr("action");
			
			var me = $(this);
			me.blur();
			me.attr("disabled", "true");
			me.blur();
			me.removeClass(addToCartClass);
			me.blur();
			me.addClass("add-button-loading");
			me.blur();
			
			$.ajax({
				type: "POST",
				dataType: "html",
				url: cartURL,
				cache: false,
				data: {
					AlbumWebID: form.find("[name=AlbumWebID]").val(),
					trackNumber: form.find("[name=trackNumber]").val(),
					DownloadFormatWebID: form.find("[name=DownloadFormatWebID]").val(),
					returnFromCartAddURL: currentPageURL
				},
				error: function(XMLHttpRequest, textStatus, errorThrown) {
					me.removeClass("add-button-loading");
					me.addClass(addToCartClass);
					me.blur();
				},
				success: function(data, textStatus) {
					me.removeClass("add-button-loading");
					me.addClass(addedToCartClass);
					me.blur();
					$("#cart-widget").replaceWith(data);
				}
			});
			
			return false;
		});
	});
	
	return this;
}

var playingPreviewBox;

function embedPlayer(playerPath, expressInstallPath, skinPath, id, url) {
	if (swfobject) {
		swfobject.embedSWF(playerPath, id, "100%", "21", "7", expressInstallPath, 
			{file: url, skin: skinPath, autostart: true},
			{allowscriptaccess: "always", allowfullscreen: "true", wmode: "opaque"},
			{});
	}
}

function initPreviews(playerPath, expressInstallPath, skinPath, previewURLs) {
	$(".preview-placeholder")
		.live("click", function() {
			if (playingPreviewBox) {
				var playingPlayer = $(playingPreviewBox).children(":first"); 
				var playingID = playingPlayer.attr("id");
				swfobject.removeSWF(playingID);
				$(playingPreviewBox).children(":second").attr("id", playingID).show(0);
			}
			playingPreviewBox = $(this).parent();
			playingPreviewBox.append($(this).clone().removeAttr("id").hide(0));
			var id = $(this).attr("id");
			embedPlayer(playerPath, expressInstallPath, skinPath, id, previewURLs[id]);
		})
		.hover(function() {
			$(this).addClass("cursor-move");
		});
}
