var Site = {
	init: function(){
		$("#control-panel div.row input").blur(function(e){
			var el = $(this);
			if(el.val() == ""){
				el.val(el.attr("title"));
			}
		}).focus(function(e){
			var el = $(this);
			if(el.val() == el.attr("title")){
				el.val("");
			}
		}).each(function(){
			var el = $(this);
			if(el.val() == ""){
			    el.val(el.attr("title"));
			}
		});
		
		$("#control-panel input").keyup(function(e){
			if (e.which == 13 && !(e.srcElement && (e.srcElement.tagName.toLowerCase() == "textarea"))) {
				window.location = $("#control-panel li.login a").attr("href");
				//console.log("go");
			}
		});
		
		
		$(".regAgreement").hide();
		$("a.regAgreementLink").click(function(e) {
		    e.preventDefault();
		    $(".regAgreement").toggle()
		});
	}
};
$(document).ready(Site.init);

var Settings = {
	init: function(){
		var sections = $("div.section");
		sections.each(function(){
			var el = $(this);
			if(!el.hasClass("open")){
				$("div.section-content", el).hide();
				$("h3", el).addClass("closed")
			}
		});
		$("div.section h3").click(function(e){
			var el = $(this);
			if(el.context.nodeName != "H3"){ el = el.parent("h3"); }
			
			if(el.hasClass("closed")){
				el.removeClass("closed");
				var parent = el.parent("div.section");
				var siblings = parent.siblings("div.section");
				$("div.section-content", siblings).slideUp(200);
				$("h3", siblings).addClass("closed");
				$("div.section-content", parent).slideDown(200);
			}else{
				el.addClass("closed");
				var parent = el.parent("div.section");
				$("div.section-content", parent).slideUp(200);
			}
		});
	}
}
$(document).ready(Settings.init);

var Playlists = {
	init: function(){
		$("ul.playlist li").each(function(){
			var pl = new Playlist($(this));
		});
		
		var tracks = [];
		$(".show-tracks").each(function(){
			var tr = new Tracks($(this));
			tracks.push(tr);
		});
		
		var hash = window.location.hash.indexOf("tracklist");
		var i = 1;
		$("ul.functions").each(function(){
			
			var plf = new PlaylistFunctions($(this),(i <= tracks.length ? tracks : null));
			if (hash >= 0 && tracks.length > 0 && i == 1)
			    tracks[0].openList();
			i++;
		});
		
		$("div.playlist-page div#column-1 img").after("<div class=\"shine\" />");
		
		
		
		$("ul.artist-playlist").each(function(){
			var plb = new PlaylistBrowser($(this));
		});
	}
};
var Playlist = function(el){
	this.el = el;
	this.el.mouseenter($.fnbind(this.over, this)).mouseleave($.fnbind(this.out, this));
	
	var wrap = $("<div class=\"img-wrap\" />");
	var link = $("img", this.el).parent();
	link.wrap(wrap).append("<span class=\"shine\" />");
};
Playlist.prototype = {
	over: function(e){
		this.el.addClass("over");
	},
	out: function(e){
		this.el.removeClass("over");
	}
};

var PlaylistFunctions = function(el,tracks){
    this.tracks = tracks;
	this.el = el;
	this.listen = $("li.listen", this.el);
	this.listen.mouseenter($.fnbind(this.over, this)).mouseleave($.fnbind(this.out, this)).click($.fnbind(this.click, this));
	$("div.premium-message a", this.listen).click(function(e){
		e.stopPropagation();
		window.location = this;
	});
	this.listenMenu = $("div.listen-menu", this.listen);
	if(this.listenMenu){
		$("a", this.listenMenu).click($.fnbind(this.play, this));
		var close = $("<p class=\"close\" />").append( $("<a href=\"#close\" title=\"" + TextObj.close + "\">" + TextObj.close + "</a>").click($.fnbind(this.close, this)) );
		this.listenMenu.append(close);
		this.listenMenu.appendTo(document.body);
	}
	
	var parent = el.parents("div.item, div.playlist");
	this.id = parent.attr("id");
	if(this.id){ this.id = this.id.replace("playlist-", ""); }
		
	this.user = $("#UserGUID");
	if(this.user){ this.user = this.user.val(); }
	
	$("li.like a", this.el).click($.fnbind(this.like, this));
	
	$(window).resize($.fnbind(this.position, this));
};
PlaylistFunctions.prototype = {
	urls: {
		play: "/base/logg/play/",
		like: "/base/digg/add/"
	},
	over: function(e){
		//this.listenMenu.fadeIn();
	},
	out: function(e){
		//this.listenMenu.fadeOut();
	},
	click: function(e){
		e.preventDefault();
		$(".listen-menu-open").hide();
		
		if(!this.target){
			this.target = $(e.target);
		}
		this.listenMenu.addClass("listen-menu-open");
		this.listenMenu.show();
		this.position();
	},
	position: function(){
		if(this.target && this.listenMenu.hasClass("listen-menu-open")){
			var offset = this.target.offset();
			var width = this.target.width();
			var w2 = this.listenMenu.width()  - width;
			if(offset.left > w2){
				offset.left -= w2;
			}
			this.listenMenu.css(offset);
		}
	},
	like: function(e){
		e.preventDefault();
		var el = $(e.target);
		var id = el.attr("href").replace("#like-", "");
		$.post(this.urls.like + this.user + "/" + id + ".aspx", function(data){
			var count = $("value", data).text();
			el.text(TextObj.liked);
		}, "xml");
	},
	play: function(e){
		e.stopPropagation();
		e.preventDefault();
		var el = $(e.target);
		var player = el.parents("li");
		if(player){ player = player.attr("class").replace(" over", ""); }
		
		var link = el;
		if(link.context.nodeName != "A"){
			link = link.parent("a");
		}
		
		$.post(this.urls.play + this.user + "/" + player + "/" + this.id + ".aspx", function(data){
			//console.log(data);
		}, "xml");
		/*var frame = $("<iframe src=\"" + link.attr("href") + "\" height=\"0\" width=\"0\" frameborder=\"0\" />");
		$(document.body).append(frame);*/ 
		if (player == "itunes"){
		   
		   if (this.tracks && this.tracks.length > 0) {
		        this.tracks[0].openList();
		   }
		   else {
		        window.location = link.attr("href");
		   }
		}
		else  {
		    var win = window.open(link.attr("href"));
		    if(win){ win.focus(); }
		}
	},
	close: function(e){
		e.preventDefault();
		e.stopPropagation();
		this.listenMenu.removeClass("listen-menu-open");
		this.listenMenu.hide();
	}
};

var Tracks = function(handle){
	this.handle = handle;
	this.handleLink = $("a", this.handle).click($.fnbind(this.toggle, this));
	this.tracks = this.handle.siblings("div.tracks");
	this.wrapper = $("<div class=\"tracks-wrap\" />").insertBefore(this.tracks).append(this.tracks).hide();
	
	var mainObj = this;
	$("p",this.tracks).each(function(){
	    var arr;
	    //quick fix for IE
	    if ($.browser.msie)
	        arr = $(this).html().split("<BR>");
	    else
	     arr = $(this).text().split("\n");
	     
	    //alert($(this).html());
	    /*var arr = $(this).html().split("<br />");
	    if (arr.length <= 1)
	        arr = $(this).html().split("<BR>");
	    if (arr.length <= 1)
	        arr = $(this).html().split("<br/>");*/
	    //http://clk.tradedoubler.com/click?p=23762&a=1558304&g=11617567&url=
	    $(this).empty();
	    for (var i = 0;i < arr.length;i++) {
	        var arr2 = arr[i].split("-");
	        var artist = "",title = "";
	        if (arr2.length > 0) artist = escape($.trim(arr2[0]));
	        if (arr2.length > 1) title = escape($.trim(arr2[1]));
	        $(this).append($('<a href="itms://phobos.apple.com/WebObjects/MZSearch.woa/wa/advancedSearchResults?artistTerm='+
	                        artist + '&songTerm=' + title + '&partnerId=2003" title="K&ouml;p i iTunes | ' + $.trim(arr[i])+ '">'+arr[i] + '</a><br />').click($.fnbind(mainObj.openItunes, mainObj))) ;
	    }
	});
};

Tracks.prototype = {
	text: {
		opened: TextObj.closed,
		closed: TextObj.opened
	},
	toggle: function(e){
	    if(e)
		    e.preventDefault();
		    
		if(this.open){
			this.open = false;
			this.handleLink.text(this.text.closed);
			this.wrapper.hide(200);
		}else{
			this.open = true;
			this.wrapper.show(200);
			this.handleLink.text(this.text.opened);
		}
	},
	openItunes: function(e) {
	    e.preventDefault();
	    var el = $(e.target);
		var link = el;
		if(link.context.nodeName != "A"){
			link = link.parent("a");
		}
	    var win = window.open(link.attr("href"));
		if(win){ win.focus(); }
	},
	openList: function(){
		if(!this.open){
			this.open = true;
			this.wrapper.show(200,function() {
			    $.scrollTo( $('.show-tracks'), 400);
			});
			this.handleLink.text(this.text.opened);
		}
		else
		    $.scrollTo( $('.show-tracks'), 400);
	}
};

var PlaylistBrowser = function(el){
	this.el = el;
	this.items = this.el.children("li");
	this.index = 0;;
	this.maxWidth = this.items.length * this.options.width;
	this.el.width(this.maxWidth);
	
	this.wrapper = $("<div class=\"playlist-browser\" />").insertBefore(this.el).append(
		this.el,
		$("<div class=\"next\" title=\"" + TextObj.next + "\">" + TextObj.next + "</div>").click($.fnbind(this.next, this)),
		$("<div class=\"prev\" title=\"" + TextObj.prev + "\">" + TextObj.prev + "</div>").click($.fnbind(this.prev, this))
	);
	this.el.wrap("<div class=\"list-wrapper\" />");
};
PlaylistBrowser.prototype = {
	options: {
		width: 280,
		shown: 3
	},
	next: function(e){
		if(this.index < this.items.length - this.options.shown){
			this.index++;
			this.animate();
		}
	},
	prev: function(e){
		if(this.index > 0){
			this.index--;
			this.animate();
		}
	},
	animate: function(){
		this.el.animate({
			marginLeft: -(this.options.width * this.index)
		}, 500);
	}
};
$(document).ready(Playlists.init);

var Forms = {
	init: function(){
		$(".field").focus(Forms.focus).blur(Forms.blur);
	},
	focus: function(){
		$(this).addClass("focus");
	},
	blur: function(){
		$(this).removeClass("focus");
	}
};
$(document).ready(Forms.init);