var numSleeves = 0;
var numLoadedSleeves = 0;
var sleevePadding = 25;
var adressVisible = false;
var isIe = (navigator.userAgent.indexOf("MSIE") > -1);
var isSafari = (navigator.userAgent.toLowerCase().indexOf("safari") > -1);
var hasFlash = swfobject.hasFlashPlayerVersion("9");
var isOnline = (location.href.indexOf("http") == 0);
var flashRoot = isOnline ? "_includes/swf/" : "";
var musicPlayer;

if (hasFlash) {
	 var css = '<styl' + 'e type="text/css">' + 
	 	//'.sleeves .release div img { display:none }\n' + 
		'.release-content { display:none }\n' + 
		'</styl' + 'e>';
	 document.write(css);
}
		
function setImgSize(id, w, h) { // Called from flash
	$("#" + id).width(w);
	$("#" + id).height(h);
}

function setSleeveIsOpen(elmId, isOpen) { // Called from flash
	var num = elmId.replace("coverimg-", "");
    //$("#cover-" + id).siblings(".release-content").css("display", isOpen ? "block" : "none");
	$("#" + elmId).closest(".release").toggleClass("open");
	$("#" + elmId).toggleClass("open");
	$("#title-" + num).toggleClass("open");
	
}

function flashImgIsLoaded(id) { // Called from flash
	numLoadedSleeves++;
	if (numLoadedSleeves == numSleeves) {
		onAllLoaded();
	}
}



function onBuyMouseOver() {
	$(this).parent().find(".euro").html($(this).parent().find(".price-euro").html());
	$(this).parent().find(".sek").html($(this).parent().find(".price-sek").html());
	$(this).siblings(".buy-button-price").show();
	if ($(this).closest("td.title").attr("incart"))
		$(this).siblings(".buy-button-cart").hide();
}

function onBuyMouseOut() {
	$(this).siblings(".buy-button-price").hide();
	if ($(this).closest("td.title").attr("incart"))
		$(this).siblings(".buy-button-cart").show();
}

function onBuyClick() {
	$(this).closest("td.title").attr("incart", "1");
	$(this).siblings(".buy-button-cart").show();
	var itemsInCart = $(this).parent().find(".num-items").html();
	$(this).parent().find(".num-items").html(++itemsInCart);
	updateCart();
	if (!adressVisible)
		$("#place-order, #cart-info").show();
}

function onItemsInputBlur(titleNum) {
	var inputValue = $("#items-input-" + titleNum).attr("value");
	var fixedValue = (isNaN(inputValue) || inputValue.length < 1) ? 0 : parseInt(inputValue);
	$("#items-input-" + titleNum).attr("value", fixedValue);
	$("#title-" + titleNum).find(".num-items").html(fixedValue);
	updateCart();
}

function updateCart() {
	$("#cart, #cart-empty").hide();
	var cartIsEmpty = true;
	var sCart = "";
	var sumEuro = 0;
	var sumSek = 0;
	$(".releases .titles td").each(
		function(i){
			var items = parseInt($(this).find(".num-items").html());
			if (items && items > 0) {
				var titleNum = $(this).attr("id").replace("title-", "");
				var euro = parseInt($(this).find(".price-euro").html());
				var sek = parseInt($(this).find(".price-sek").html());
				var input = "<input id='items-input-" + titleNum + "' type='text' class='items-input' value='" + items + "' maxlength='2' onblur='onItemsInputBlur(" + titleNum + ")'></input>";
				var price = 
					input + " x " +
					euro + " € / " +
					sek + " SEK";
				sCart += "<p>";
				sCart += $(this).find(".band").html() + " - ";
				sCart += $(this).find(".title").html();
				sCart += "<span class='price'>" + price + "</span>";
				sCart += "</p>";
				
				sumEuro += items * euro ;
				sumSek += items * sek;
				cartIsEmpty = false;
			}
		} 
	);
	sCart += "<h2 class='normal'>Subtotal: " + sumEuro + " € / " + sumSek + " SEK</h2>";
	$("#cart").html(sCart);
	
	if (cartIsEmpty)
		$("#cart-empty").show();
	else
		$("#cart").show();
}

function emptyCart() {
	$(".releases .titles td").each(
		function(i){
			$(this).find(".num-items").html("0");
			$(this).removeAttr("incart");
			$(this).find(".buy-button-cart").hide();
		} 
	);
	updateCart();
	//$("#place-order").hide();
	$("#cart-adress").hide();
	$("#submitting").hide();
	adressVisible = false;
}

function placeOrder() {
	//$("#content").animate( { left:"375px" }, 1000);
	//$("#nav").animate( { width:"325px" }, 1000);
	$("#place-order").hide();
	$("#cart-adress").show();
	$("#nav").css( { "overflow-y":"scroll" } );
	adressVisible = true;
}

function showCartInfo() {
	$("#shipping-info").toggle();
}

function setupForm() {
	// Dessa fält har ett mellanslag i sig eftersom det blir knas med xslt annars
	if ($("#input-adress").val() == " ")
	$("#input-adress").val("");
	if ($("#input-message").val() == " ")
	$("#input-message").val("");

	var validator = $("#order-form").validate({
		rules: {
			"input-name":"required",
			"input-adress":"required",
			"input-email":{
				required: true,
				email: true
			}
		},
		messages: {
			"input-name": "Please enter your name",
			"input-adress": "Please enter your adress",
			"input-email": {
				required: "Please enter your email address",
				minlength: "Please enter your email address"
			}
		},
		errorPlacement: function(error, element) {
			error.appendTo( element.prev() );
		},
		errorClass: "invalid",
		submitHandler: function() {
			submitForm();
			//alert("ok, submitting...");
		},
		invalidHandler: function() {
			//alert("error!");
		}
	});
	//alert(validator.valid())
}

function submitForm() {
	$("#submitted-thanks").hide();
	$("#submitting").css( { width:$("#cart-wrapper").innerWidth(), height:$("#cart-wrapper").innerHeight() } ).show();
	$("#submitting-bg, #submitting-content").fadeTo(0, 0);
	$("#submitting-bg").show().fadeTo(400, .9);
	$("#submitting-content").show().fadeTo(800, 1);
	
	var xml = "<cart>\n";
	xml += "<titles>\n";
	$(".releases .titles td").each(
		function(i){
			var items = parseInt($(this).find(".num-items").html());
			if (items && items > 0) {
				var titleNum = $(this).attr("id").replace("title-", "");
				var cat = $(this).find(".cat").html();
				xml += "<title num='" + titleNum + "' cat='" + cat + "' items='" + items + "' />\n";
			}
		} 
	);
	xml += "</titles>\n";
	xml += "<name>" + $("#input-name").attr("value") + "</name>\n";
	xml += "<adress>" + $("#input-adress").attr("value") + "</adress>\n";
	xml += "<email>" + $("#input-email").attr("value") + "</email>\n";
	xml += "<message>" + $("#input-message").attr("value") + "</message>\n";
	
	xml += "</cart>";
	//alert(xml)
	
	//alert(xml);
	
	$.ajax( {
		url: "/_siteEditor/shop_sendorder.aspx",
		type: "POST",
		processData: false,
		data: xml,
		error: onOrderError,
		success: onOrderSubmitted
	} );
	
	//if (!isOnline)
	//	onOrderSubmitted("success");
}

function onOrderError(jqXHR, textStatus, errorThrown) {
	$("#submitting-content").hide();
	emptyCart();
	//alert("We're sorry, something went wrong with the order. Hoob Records are notified, please try later.\n" + textStatus + "\n" + errorThrown + "\n" + jqXHR);
	alert("We're sorry, something went wrong with the order. Hoob Records are notified, please try later.");
}

function onOrderSubmitted(response) {
	$("#submitting-content").hide();
	if (response.toLowerCase().indexOf("<success") > -1) {
		$("#submitted-thanks").show();
	}
	else
		onOrderError();
}

function onWindowResize() {
	$("#content").width($(window).width() - ($("#nav").outerWidth())).css("overflow", "scroll");
	$("#nav").height($(window).height() - (parseInt($("#nav").css("paddingTop")) + parseInt($("#nav").css("paddingBottom"))));
	$("#maintext").height("auto").css("overflow-y", "visible");
	
	if (isIe) {
		$(".releases").height("auto");
		var titleH = $(".releases .titles td").height() + parseInt($(".releases .titles td").css("padding-top"));
		$(".releases .sleeves td").height($(window).height() - titleH - 41);
	}
}

function playTrack(songUrl, artist, title) {
	$(".music-player").show();
	if (!musicPlayerCreated)
		createMusicPlayer(songUrl, artist, title);
	else
		musicPlayer.playMusic(songUrl, artist, title);
}

var musicPlayerCreated = false;

function createMusicPlayer(songUrl, artist, title) {
	musicPlayerCreated = true;
	
	var flashvars = { songUrl:songUrl, artist:artist, title:title };
	var params = {};
	var attributes = {}; 
	params.allowscriptaccess = "always"; 
	//params.bgcolor = "000000"; 
	var musicSwfUrl = isOnline ? flashRoot + "HoobMusicPlayer.swf" : "../flash/mp3player/HoobMusicPlayer.swf";
	swfobject.embedSWF(musicSwfUrl, "music-player-wrapper", "200", "36", "9.0.0", null, flashvars, params, attributes, musicPlayerCreatedHandler);
}

function onAllLoaded() {
	var w = $("#title-1").width() + $("#title-2").width() + (sleevePadding * 2) - (parseInt($("#maintext").css("padding-left")) * 2);
	if (w < 550)
		w = 550;
	$("#maintext").width(w);
	onWindowResize();
	/*var titleH = 0;
	$(".releases .titles td div").each(function(i){
		$(this).css("height", "auto");
		if ($(this).height() > titleH)
			titleH = $(this).height();
	});
	$(".releases .titles td div").each(function(i){
		$(this).css("height", titleH);
	});
	onWindowResize();*/
}

function onDocReady() {
	$("html").css("overflow", "hidden");
	$(".release:even, .titles td:even").addClass("even");
	onWindowResize();
	var h = $("#maintext").outerHeight();
	$(".releases .titles td").css("padding-top", h + 45);
	setupForm();
}

function onWindowLoad() {
	if ($("#xsltWrapper").length > 0) {
		var dataUrl = "_siteEditor/content/data.xml";
		var xsltUrl = "_siteEditor/hoob-transform_11c.xslt";
		$("#xsltWrapper").transform({xml:dataUrl, xsl:xsltUrl, complete:initialize });
	}
	else {
		initialize();
	}
}

function musicPlayerCreatedHandler(e) {
	musicPlayer = e.ref;
}

function coverCreatedHandler(e) {
	//musicPlayer = e.ref;
	//alert(e.ref)
}

var shown = false;
function showLargeCover(event) {
	var num = event.data.num;
	$("#cover-small-" + num).hide();
	$("#cover-large-" + num + " img").height($("#cover-small-" + num).height());
	$("#cover-large-" + num).show()
	$("#cover-large-" + num + " img").animate( { height:"350px" }, 500, function() {
		if (!shown)
			onAllLoaded();
		shown = true;
		$("#cover-small-" + num).closest(".release").toggleClass("open");
		$("#title-" + num).toggleClass("open");
		$("#title-" + num + " .release-like").html('<div class="fb-like" data-href="' + defaultUrl + '?&amp;release=' + arReleaseData[num].cat + '" data-send="false" data-layout="button_count" data-width="90" data-show-faces="false"></div>');
		FB.XFBML.parse( $("#title-" + num + " .release-like").get(0) );
	});
}

function hideLargeCover(event) {
	var num = event.data.num;
	$("#cover-small-" + num).closest(".release").toggleClass("open");
	$("#title-" + num).toggleClass("open");
	$("#cover-large-" + num + " img").animate( { height:$("#cover-small-" + num).height() }, 500, function() {
		$("#cover-small-" + num).show();
		//$("#cover-large-" + num + " img").height($("#cover-small-" + num).height());
		$("#cover-large-" + num).hide();
	});
}
	
function initialize() {
	// Page like
	$(".page-like").html('<div class="fb-like" data-href="http://hoob.net/" data-send="false" data-layout="button_count" data-width="90" data-show-faces="false"></div>');
	FB.XFBML.parse( $(".page-like").get(0) );
		
	// Add Buy-buttons
	$(".titles td div.title-wrapper").append(
		"<span class='buy-button'><span class='buy-link'>buy</span></span>" + 
		"<span class='buy-button-price'><span class='euro'></span> € or<br /><span class='sek'></span> SEK<span class='buy-link'>buy</span></span>" +
		"<span class='buy-button-cart'><span class='num-items'>0</span> added<br />to cart</span>" +
		"<img src='_images/design/s.gif' class='buy-hit-area' />"
	);
	$(".buy-hit-area").bind("mouseover", onBuyMouseOver);
	$(".buy-hit-area").bind("mouseout", onBuyMouseOut);
	$(".buy-hit-area").bind("click", onBuyClick);
	
	// Replace sleeve-images with flash
	if (hasFlash) {
		var coverCells = $(".sleeves .release");
		numSleeves = coverCells.length;
		coverCells.each(
			function(i){
				var num = $(this).find(".cover-small").attr("id").replace("cover-small-", "");
				$("#cover-large-" + num + " img").attr("src", arReleaseData[num].largeCover);
				$(this).on("click", ".cover-small", { num:num }, showLargeCover);
				$(this).on("click", ".cover-large", { num:num }, hideLargeCover);
				
				//$(this).find(".cover-small").click(
				/*
				var id = $(this).parent().attr("id").replace("cover-", "coverimg-");
				$(this).attr("id", id);
				var src = $(this).attr("src");
				var flashvars = { id:id, image:src, isSafari:isSafari };
				var params = { allowscriptaccess:"always" };
				var attributes = {}; 
				var coverSwfUrl = isOnline ? flashRoot + "HoobCover.swf" : "../../../_v4_test/flash/HoobCover/HoobCover.swf";
				swfobject.embedSWF(coverSwfUrl, id, "150", "150", "9.0.0", null, flashvars, params, attributes, coverCreatedHandler);
				*/
			} 
		);
	}
	
	$("#cover-small-1").click();
	
	// Fixa flash-musikspelare
	var tracklistings = $(".tracklisting");
	tracklistings.each(
		function(i){
			var songs = $(this).find("td.song");
			songs.each(
				function(j){	
					var songUrl = $(this).find("a").attr("href");
					if (songUrl && hasFlash) {
						var songTitle = $(this).children().html();
						var artist = $(this).find("a").attr("name");
						$(this).find("a").attr("href", "javascript:void(0)");
						$(this).find("a").click(
							function() { playTrack(songUrl, artist, songTitle ) }
						);
					}
				}
			);
		} 
	);
	
	$(window).bind("resize", onWindowResize);

	//$(".release:odd, .titles td:odd").css("background-image", "url(images/bg3_2.png)");
	//$(".titles td div").append("<a class='buy-button' href='#'><img src='images/buy.png' /></a>");
}

$(document).bind("ready", onDocReady);
$(window).bind("load", onWindowLoad);
