﻿$(document).ready(function () {

    // Expand Tabs Area On Maximise
    var recentTab = $(".Selected:first").attr("id");
    $(".GigInfoExpandBtn").click(function() {
        if ($("#ArtistInfo, #PlaylistInfo").hasClass("Minimised")) {
            $("#ArtistInfo, #PlaylistInfo").removeClass("Minimised");
            $("#ArtistTabsContainer, #PlaylistInfoTabsContainer").find("#TabPanels").show();
            $("#" + recentTab).addClass("Selected");
        }
        else {
            $("#ArtistInfo, #PlaylistInfo").addClass("Minimised")
            $("#ArtistTabsContainer, #PlaylistInfoTabsContainer").find("#TabPanels").hide();
            recentTab = $(".Selected:first").attr("id");
            $(".Tabs ul.TabBtns li").removeClass("Selected");
        }
    });
    $(".Tabs ul.TabBtns li a").click(function() {
        $("#ArtistInfo, #PlaylistInfo").removeClass("Minimised");
        $("#ArtistTabsContainer, #PlaylistInfoTabsContainer").find("#TabPanels").show();
    });

    // Reply to/Post new Comment - show panel on click
    $(".ReplyToThis").each(function() {
        $(this).click(function() {
            $(this).parent().parent().parent().parent().find(".NewReply").fadeIn("slow", function() { $(this).slideDown("slow") });
        });
    });

    // Add 'Embed' Onclick Tooltip
    $("a.Embed").toggle(
        function() {
            $(".FocalBtn").append("<div id='EmbedTooltip'><input type='text' readonly='' /></div>");
            $("#EmbedTooltip").slideDown("fast", function() {
                $("#EmbedTooltip").find("input").focus().select();
            });
            $.post(ajaxPrefix + "embed/create.aspx", { videoID: VideoID }, function(data) {
                    $("#EmbedTooltip input").val(data).click(function() { $(this).select() });
            }, 'html');
        },
        function() {
            $("#EmbedTooltip").slideUp("fast", function() {
                $(".FocalBtn").find('#EmbedTooltip').remove();
            });
        }
    );
});

// *****************************************************************************************************

var currentTrack;
var scrollDelay = 100;
var scrollInterval;
var scrollDirection;
var trackHeight = 264;
var totalTracks;
var visibleTracks = 10;
var scrollableTracks = visibleTracks - 2;
var showMethod = "click";
var initted = false;
var trackInfoTimer;
var initialTrackInfoPause = 5000;
var extendedTrackInfoPause = 20000;
var trackInfoPause = initialTrackInfoPause;
var tracklistActive = true; // set to false if prerolls are playing

// *****************************
// Called from player
// *****************************

function VideoAdvertBegins()
{
	$("#CurrentTrack").addClass("Inactive");
	tracklistActive = false;
}

function VideoAdvertEnds()
{
	$("#CurrentTrack").removeClass("Inactive");
	tracklistActive = true;
}

// *****************************
// End Called from player
// *****************************

function ScrollToTrack(trackNumber, speed)
{
	$(".NewTrackList").stop().scrollTo((Number(trackNumber) - 1) * $(".NewTrackList li").first().innerHeight() - 0, speed);
	
	var useTrackNumber = currentTrack;
	if (useTrackNumber > totalTracks - scrollableTracks) useTrackNumber = totalTracks - scrollableTracks;
	
	$("#ScrollThumb").css({top:0 + ((useTrackNumber - 1) / (totalTracks - scrollableTracks - 1)) * (trackHeight - $("#ScrollThumb").height())});
}

function ScrollClick()
{
	var direction = $(this).attr("id") == "ScrollUp" ? -1 : 1;
	ScrollCheck(direction);
}

function ScrollCheck(direction)
{
	var newTrack = currentTrack + direction;
	if (newTrack > 0 && newTrack <= totalTracks - scrollableTracks) currentTrack = newTrack;
	if (newTrack > 0 && newTrack < totalTracks - scrollableTracks)
	{
		ScrollToTrack(newTrack, 250);
	}
	else if (newTrack > totalTracks - scrollableTracks)
	{
		ScrollToTrack(totalTracks - scrollableTracks);
	}
}

function Scroll()
{
	ScrollCheck(scrollDirection);
}

function ScrollDown()
{
	scrollDirection = $(this).attr("id") == "ScrollUp" ? -1 : 1;
	scrollInterval = setInterval(Scroll, scrollDelay);
}

function ScrollUp()
{
	clearInterval(scrollInterval);
}

function ShowList()
{
	$("#ScrollingTrackList").addClass("visible");
	var hash = SWFAddress.getValue();
	var trackNumber = Number(hash.substring(1, hash.indexOf('-')));
	if (!isNaN(trackNumber)) currentTrack = trackNumber;
	
	if (currentTrack > totalTracks - scrollableTracks && totalTracks - scrollableTracks > 0) currentTrack = totalTracks - scrollableTracks;
	ScrollToTrack(currentTrack, null);
	//$("#FloatingTrackList").css({opacity:0});
	$("#FloatingTrackList").show();
	var ty = videoClosed ? 54 : -316;
	$("#FloatingTrackList").stop().animate({opacity:1, top:ty, height:328}, 500, "easeOutExpo");
}

function ShowHideList()
{
	if (tracklistActive)
	{
		if ($(this).parent().hasClass("visible"))
		{
			HideList();
		}
		else
		{
			ShowList();
		}
	}
}

function HideList()
{
	$("#ScrollingTrackList").removeClass("visible");
	//$("#FloatingTrackList").hide();
	$("#FloatingTrackList").stop().animate({opacity:0, top:0, height:0}, 500, "easeOutExpo");
	if (showMethod == "over") $("#ScrollingTrackList").bind("mouseenter", ShowList);
	$("#PlaylistTool").hide();
	//$("#FloatingTrackList").css({top:0, height:0})
}

function MouseWheel(event, delta)
{
	if (totalTracks > visibleTracks) ScrollCheck(delta * -1);
	return false;
}

function LIClick()
{
	// Hide Tracklist	
	HideList();
	
	// SWFAddress
	var rel = String($(this).children("a").first().attr("rel"));
	SWFAddress.setValue(rel);
	
	//window.location = "http://internal.idstudios.net/moshcam.com/hot-water-music/metro-theatre-866.aspx#/7";
}

function LIOver()
{
	$(this).addClass("SelectedItem");
}

function LIOut()
{
	var hash = SWFAddress.getValue();
    var trackNumber = hash.substring(1, hash.indexOf('-'));
	
	if ($(this).attr("id") != "Track" + trackNumber)
	{
		$(this).removeClass("SelectedItem");
	}
}

function ShareFacebook(e)
{
	//var url = String(window.location).replace("internal.idstudios.net/", "");
	var url = String(window.location);
	url = url.replace(/#[^.]+/, "");
	url += "?TrackID=" + VideoID;
	
	var windowWidth = 660;
	var windowHeight = 350;
	var xPos = $(window).width() / 2 - windowWidth / 2;
	var yPos = $(window).height() / 2 - windowHeight / 2;
	
	var shareURL = "http://www.facebook.com/sharer.php?u=" + escape(url) + "&nc=2";
	window.open(shareURL,'facebook','width=' + windowWidth + ',height=' + windowHeight + ',screenX=' + xPos + ',screenY=' + yPos);
}

function ShareTwitter()
{
	CreateTwitterURL();
}

function CreateTwitterURL()
{
	var url = String(window.location).replace("internal.idstudios.net/", "");
	var shareURL = 'http://twitter.com/home?status=';
	var trackTitle = $("#TrackTitle").html();
	var artistName = $("#ArtistName").html();
	
	shareURL += encodeURIComponent('Watch ' + trackTitle + ' by ' + artistName  + ' on moshcam.com. ' + url);
	$("#ShareTwitter").attr("href", shareURL);
}

function DocumentClick(e)
{
	if ($(e.target).parents("#ScrollingTrackList").size() == 0 && $(e.target).attr("id") != "ScrollingTrackList")
	{
		HideList();
	}
}

function OnDrag()
{
	var pos = $("#ScrollThumb").position().top / (trackHeight - $("#ScrollThumb").height());
	var trackNumber = Math.round((totalTracks - scrollableTracks) * pos);
	//ScrollToTrack(trackNumber, null);
	var newTrack = trackNumber;
	var previousTrack = currentTrack;
	if (newTrack > 0 && newTrack <= totalTracks - scrollableTracks) currentTrack = newTrack;
	if (newTrack > 0 && newTrack < totalTracks - scrollableTracks && newTrack != previousTrack)
	{
		//Trace(trackNumber);
		ScrollToTrack(newTrack, null);
	}
}

function EmbedClick(e)
{
	e.stopPropagation();
	if ($(this).hasClass("visible"))
	{
		$(this).removeClass("visible");
		$("#EmbedCode").stop().animate({height:54, top:0, opacity:0}, 300, "easeOutExpo");
		$(document).unbind("click", HideEmbed);
	}
	else
	{
		$("#EmbedCodeInput").val("loading...");
	    $.post(ajaxPrefix + "embed/create.aspx", { videoID: 'media:' + VideoID }, function (data) {
	        $("#EmbedCodeInput").val(data).click(function () { $(this).select() }); SelectText();
	    }, 'html');

		$("#EmbedCode").stop().animate({height:164, top:-164, opacity:1}, 300, "easeOutExpo");
		//$("#EmbedCodeInner").css({height:147, top:-147});
		$(this).addClass("visible");
		$(document).bind("click", HideEmbed);
	}
}

function HideEmbed(e)
{
	if ($(e.target).parents("#EmbedCode").size() == 0)
	{
		$(document).unbind("click", HideEmbed);
		$("a#Embed").removeClass("visible");
		$("#EmbedCode").stop().animate({height:54, top:0, opacity:0}, 300, "easeOutExpo");
	}
}

function EmbedClose()
{
	$("#Embed").removeClass("visible");
	$("#EmbedCode").stop().animate({height:54, top:0, opacity:0}, 300, "easeOutExpo");
}

function EmbedSizeClick()
{
	$("#EmbedSizes a").removeClass("Selected");
	$(this).addClass("Selected");
	SelectText();
}

function SelectText()
{
	$("#EmbedCodeInput").select();
}

function Trace(string)
{
	if ($("#Tracer").size() == 0) $("body").append('<div style="position:fixed; top:0; left:0; background:#000; width:200px; height:200px; border:1px solid #444; z-index:999999999; color:#fff;" id="Tracer">test</div>');
	$("#Tracer").html(string);
}

function restartScrollTimer()
{
	clearTimeout(trackInfoTimer);
	trackInfoTimer = setTimeout(ScrollTrackInfo, trackInfoPause);
	trackInfoPause = extendedTrackInfoPause;
}

function ScrollTrackInfo()
{
	var cWidth = $("h2.ArtistName").width();
	var tWidth = $("#ScrollingTrackInfo").width();
	var position = Number($("#ScrollingTrackInfo").position().left);
	var target = position >= 0 ? - tWidth - 20 : 0;
	var speed = 75;
	var duration = Math.abs(cWidth - tWidth) * speed;

	//alert(duration);
	$("#ScrollingTrackInfo").stop().animate({left:target}, duration, "linear", fadeTrackInfoIn);
}

function fadeTrackInfoIn()
{
	$("#ScrollingTrackInfo").css({left:0, opacity:0});
	$("#ScrollingTrackInfo").animate({opacity:1}, 1000, "easeOutExpo", restartScrollTimer);
}

var predefinedTrack;
var predefinedHash;

$(document).ready(function () {

    // Embed mouse events
    $("a#Embed").click(EmbedClick);
    $("a#EmbedClose").click(EmbedClose);
    $("#EmbedSizes a").click(EmbedSizeClick);

    // Total tracks
    totalTracks = $("ul.NewTrackList li").size();

    if (totalTracks > 1) {
        // Show tracklist
        if (showMethod == "over") $("#ScrollingTrackList").bind("mouseenter", ShowList);
        if (showMethod == "over") $("#ScrollingTrackList").bind("mouseleave", HideList);
        if (showMethod == "click") $("#CurrentTrack").bind("click", ShowHideList);
        $(document).click(DocumentClick);

        // Mouse over LIs
        $(".NewTrackList li").mouseover(LIOver);
        $(".NewTrackList li").mouseout(LIOut);
        $(".NewTrackList li").click(LIClick);

        // Scroll buttons & thumb
        if (totalTracks > visibleTracks) {
            $("#ScrollUp").click(ScrollClick);
            $("#ScrollDown").click(ScrollClick);
            $("#ScrollUp").mouseup(ScrollUp);
            $("#ScrollDown").mouseup(ScrollUp);
            $("#ScrollUp").mousedown(ScrollDown);
            $("#ScrollDown").mousedown(ScrollDown);
            $("#ScrollThumb").draggable({ axis: "y", containment: "parent", drag: OnDrag });
        }
        else {
            $("#ScrollUp").hide();
            $("#ScrollDown").hide();
            $("#ScrollThumb").hide();
        }
        $("#FloatingTrackList").mousewheel(MouseWheel); // Keep the mousewheel handler to avoid scrolling away from the tracklist
    }
    else {
        $("#CurrentTrack").addClass("SingleTrack");
    }

    // Sharing
    $("#ShareFacebook").click(ShareFacebook);
    $("#ShareTwitter").click(ShareTwitter);

    // Scroll thumb
    var innerHeight = $(".NewTrackList li").height() * totalTracks;
    $("#ScrollThumb").height($(".NewTrackList li").height() * visibleTracks / innerHeight * trackHeight);
	
	/*<a class="Pop2" href="javascript:void(0)">Buy Show Popup</a>
	<a class="Pop1" href="javascript:void(0)">Buy Track Popup</a>*/ 
	
	/*$('#TrackPopup').jqm({toTop:true, trigger:'.Pop1'});
	$('#ShowPopup').jqm({toTop:true, trigger:'.Pop2'});*/
	
	/*$("a.BuyTrack").fancybox({
		'scrolling': 'no',
		'titleShow': false,
		'titlePosition': 'inside',
		'transitionIn': 'fade',
		'transitionOut': 'fade',
		'easingIn': 'easeInOutExpo',
		'easingOut': 'easeInOutExpo',
		'speedIn': 500,
		'speedOut': 500,
		'width':500,
		'height':400,
		showNavArrows: false,
		onStart:StyleFancybox
	}).attr("href", "#TrackPopup");*/
		
	function StyleFancybox(Link)
	{
		// Track Name / Artist Name
		$("#TrackPopup").find(".TrackName").html(Link.parents("li").find(".TrackTitle").html());
		$("#TrackPopup").find(".ArtistName").html($("#ArtistName").html());
		
		// DGM ID (AU or NZ)
		var DGMID = $("#DGMID").val();
		
		// Construct Link
		var Path = 'http://www.s2d6.com/x/?x=c&z=s&v=' + DGMID + '&t=' + Link.attr("rel") + '&partnerId=1002';
		$(".BuyPopupAudio").attr("href", Path);
		
		$("#TrackPopup").show();
	}
	
	$(".BuyPopupAudio").click(function()
	{
		$.fancybox.close();
	});
	
	$(".BuyPopupVideo").click(function()
	{
		return false;
	});

    // OnChange (SwfAddress)
    if (typeof (SWFAddress) != 'undefined') {

        // Check whether there is an existing hash tag on page load
        //startHashTrackNumber = 0;
        var predefinedHash = SWFAddress.getValue();
        //console.log("HASH ON PAGE LOAD: " + predefinedHash);
        predefinedTrack = predefinedHash.substring(1, predefinedHash.indexOf('-'));
        //console.log("HASH ON PAGE LOAD TRACK: " + predefinedTrack);

        SWFAddress.onChange = function () {

            // Get Hash Tag (SwfAddress)
            var hash = SWFAddress.getValue();

            var trackNumber = hash.substring(1, hash.indexOf('-'));

            // Check IsNumeric
            if (isNaN(trackNumber)) {

                trackNumber = 1;
            }

            //console.log("SWF ADDRESS CHANGE. track = " + trackNumber + " - predefinedTrack = " + predefinedTrack);

            // Highlight selected track
            $(".NewTrackList li").removeClass("SelectedItem");
            var li = $("#Track" + trackNumber);
            VideoID = String($(li).attr("rel"));
            $(li).addClass("SelectedItem");
            currentTrack = Number(trackNumber);
            if (currentTrack > totalTracks - scrollableTracks) currentTrack = totalTracks - scrollableTracks;
            ScrollToTrack(trackNumber, null);

            // Update Current Track Info
            $("#TrackNumber").html(trackNumber);
            $("#TrackTitle").html($(li).find(".TrackTitle").html());
            $("#TrackTime").html("(" + $(li).find(".TrackLength").html() + ")");
            $("#CurrentTrackAddToPlayList").click(function () { TrackID = String(trackNumber); return false; });
            $("#ScrollingTrackInfo").css({ left: 0 });

            //Trace($(li).find(".TrackTitle").html());

            // Scroll track info if necessary
            if ($("#ScrollingTrackInfo").width() > $("h2.ArtistName").width()) {
                $("#ScrollingTrackInfo").stop() // cancel callbacks and animations
                trackInfoPause = initialTrackInfoPause; // reset trackInfoPause
                restartScrollTimer(); // restart timer
            }

            // Create Twitter Share URL

            /*if (!initted)
            {
            CreateTwitterURL();
            initted = true;
            }*/

            // Update Google Analytics (NOTE: Ensure swfaddress.js?tracker=null is set to prevent double hits)
            //if (hash != "/" && trackNumber != predefinedTrack) {
            if (hash != "/") {
                
                pageTracker._trackPageview(hash);
                //console.log("HASH CHANGE: " + hash);

                predefinedTrack = -1;
            }
        }
    }
});
