$(document).ready(
	function() {
		$(".open_all").click(
			function() {
				var openers = $(".open_release").length;
				for(i = 0; i <= openers; i++) {
					$(".open_release").eq(i).openRelease();
				}
				return false;
			}
		);

		$(".close_all").click(
			function() {
				var closers = $(".close_release").length;
				for(i = 0; i <= closers; i++) {
					$(".close_release").eq(i).closeRelease();
				}
				return false;
			}
		);

		$(".open_releases").bind("click",
			function() {
				$(this).openRelease();
				return false;
			}
		);

		$(".close_releases").bind("click",
			function() {
				$(this).closeRelease();
				return false;
			}
		);

		$(".artwork_small").hover(
			function() {
				$(this).parent().parent().find(".open_releases").css("backgroundPositionY", "-20px");
			},
			function() {
				$(this).parent().parent().find(".open_releases").css("backgroundPositionY", "");
			}			
		);

		$(".artwork_small").bind("click",
			function() {
				$(this).parent().parent().find(".open_releases").click();
			}
		);

		// $("div.sample a").addPlayer();
	}
);

$.fn.extend(
	{
		openRelease: function() {
			var releaseInfo = $(this).attr("href");
			var releaseId = $(this).attr("id").replace(/open_release_([0-9]+)/,'$1');

			$("#release_" + releaseId).html("<div id=\"loader_" + releaseId + "\" class=\"loader\">Loading...</div>").slideDown();

			$.ajax({
				type: "GET",
				url: releaseInfo,
				cache: true,
				success: function(html) {
					html = "<div id=\"release_extra_" + releaseId + "\" class=\"hidden\">" + html + "</div>"
					$("#loader_" + releaseId).slideUp("normal",
						function() {
							$(this).remove()
						}
					);
					$("#release_" + releaseId).prepend(html);
					// $("#release_extra_" + releaseId + " div.sample a").addPlayer();
					$("#release_extra_" + releaseId).slideDown();
				},
				error: function() {
					$("#release_" + releaseId).html("<div class=\"error\">Error loading additional information.</div>");
				}
			});

			$("#artwork_" + releaseId + "_s").animate({width:"120px",height:"120px"},
				function() {
					var source = $(this).attr("src").replace(/_s/, "_m");
					var imgId = $(this).attr("id").replace(/_s/, "_m");
					var desc = $(this).attr("alt");
					$(this).parent(".artwork").append("<img src=\"" + source + "\" width=\"120\" height=\"120\" alt=\"" + desc + "\" id=\"" + imgId + "\" class=\"artwork_medium\">");
					$(this).siblings("#" + imgId).load(
						function() {
							$(this).show();
						}
					);
					$(".artwork_medium").each(
						function() {
							var desc = $(this).attr("alt");
							var source = $(this).attr("src").replace(/_m/, "_l");
				
							var tempImage = "<img src=\"" + source + "\" id=\"measure_me\" class=\"offscreen\">";
							$("body").append(tempImage);
							var imageWidth = $(this).width();
							var imageHeight = $(this).height();
							$("#measure_me").remove();
							
							var image = "<img src=\"" + source + "\" width=\"" + imageWidth + "\" height=\"" + imageHeight + "\" alt=\"" + desc + "\">";
							
							$(this).bind("click",
								function() {
									openImageViewer(image, imageWidth, imageHeight);
									return false;
								}
							);
							$(this).addClass("linked");
						}
					);

				}
			);

			$("#more_release_" + releaseId).hide();
			$("#less_release_" + releaseId).show();
		},

		closeRelease: function() {
			var releaseId = $(this).attr("id").replace(/close_release_([0-9]+)/,'$1');;

			$("#release_" + releaseId).slideUp("normal",
				function() {
					$("#release_" + releaseId).empty();
				}
			);

			$("#artwork_" + releaseId + "_m").add("#artwork_" + releaseId + "_s").animate({width:"40px",height:"40px"},
				function() {
					$("#artwork_" + releaseId + "_m").remove();
				}
			);

			$("#less_release_" + releaseId).hide();
			$("#more_release_" + releaseId).show();
		},

		/* addPlayer: function() {
			$(this).flash(
				{ src: "player/mediaplayer.swf", height: 20, width: 200, allowscriptaccess: "always", allowfullscreen: "false" },
				{ version: 7 },
				function(htmlOptions) {
					$this = $(this);
					htmlOptions.flashvars.file = $this.attr('href');
					htmlOptions.flashvars.height = 20,
					htmlOptions.flashvars.width = 200,
					htmlOptions.flashvars.backcolor = 0x000000,
					htmlOptions.flashvars.frontcolor = 0xFFFFFF,
					htmlOptions.flashvars.lightcolor = 0xFFEA00,
					htmlOptions.flashvars.screencolor = 0x000000,
					htmlOptions.flashvars.javascriptid = "play" + $this.attr('id'),
					htmlOptions.flashvars.searchbar = false,
					htmlOptions.flashvars.usefullscreen = false,
					htmlOptions.flashvars.enablejs = true,
					htmlOptions.flashvars.type = "mp3"
					$this.before($.fn.flash.transform(htmlOptions));						
				}
			).hide();
		} */
	}
);

function openImageViewer(image,width,height) {
	var imageViewerWidth = width;
	var imageViewerHeight = height + 20;

	var imageViewerOverlay = "";
	if ($.browser.msie) {
		imageViewerOverlay += "<iframe id=\"image_viewer_blocker\" src=\"javascript:false;document.write('');\"></iframe>";
	}
	imageViewerOverlay += "<div id=\"image_viewer_overlay\">&nbsp;</div>";
	$("body").append(imageViewerOverlay);

	if (window.innerHeight) {
		var winHeight = window.innerHeight;
		var winWidth = window.innerWidth;
	}
	else {
		var winHeight = document.documentElement.clientHeight;
		var winWidth = document.documentElement.clientWidth;
	}

	var bodyHeight = document.body.parentNode.scrollHeight;
	var bodyWidth = document.body.parentNode.scrollWidth;

	if ($.browser.msie) {
		$("#image_viewer_blocker").height(bodyHeight);
		$("#image_viewer_blocker").width(bodyWidth);
	}
	$("#image_viewer_overlay").height(bodyHeight);
	$("#image_viewer_overlay").width(bodyWidth);

	var imageViewer = "";
	imageViewer += "<div id=\"image_viewer\">"
	imageViewer += "<div id=\"image_viewer_closer\"><a href=\"#\">close</a></div>";
	imageViewer += "<div id=\"image_viewer_image\">" + image + "</div>";
	imageViewer += "</div>";

	$("body").append(imageViewer);

	$("#image_viewer").width(imageViewerWidth);
	$("#image_viewer").height(imageViewerHeight);

	var scrollDown = scrollRight = 0;
	if (typeof(window.pageYOffset ) == 'number') {
		scrollDown = window.pageYOffset;
		scrollRight = window.pageXOffset;
	}
	else {
		scrollDown = document.documentElement.scrollTop;
		scrollRight = document.documentElement.scrollLeft;
	}

	var imageViewerTop  = Math.round((winHeight - imageViewerHeight) / 2);
	var imageViewerLeft = Math.round((winWidth  - imageViewerWidth)  / 2);
	imageViewerTop  = (imageViewerTop < 0)  ? scrollDown  : imageViewerTop  + scrollDown;
	imageViewerLeft = (imageViewerLeft < 0) ? scrollRight : imageViewerLeft + scrollRight;

	$("#image_viewer").css({
		top:    imageViewerTop    + "px",
		left:   imageViewerLeft   + "px",
		width:  imageViewerWidth  + "px",
		height: imageViewerHeight + "px"
	});

	$("#image_viewer").fadeIn("fast",
		function() {
			$(document).keypress(
				function(key) {
					if (key.keyCode == 27) {
						closeImageViewer();
						return false;
					}
				}
			);

			$("#image_viewer_closer a").click(
				function() {
					closeImageViewer();
					return false;
				}
			);
		}
	);
}

function closeImageViewer() {
	$("#image_viewer").fadeOut("fast",
		function() {
			$(this).empty();
			$(this).remove();

			$("#image_viewer_overlay").hide();
			$("#image_viewer_overlay").remove();

			if ($.browser.msie) {
				$("#image_viewer_blocker").hide();
				$("#image_viewer_blocker").remove();
			}
		}
	);
}
