YAHOO={};
YAHOO.yodel = {
	init: function(){
		$("a.image-replace").each(YAHOO.yodel.image.replace_images);
		$("#favourites li").hover(YAHOO.yodel.favourites.hover, YAHOO.yodel.favourites.hover_off);
	
		$("#share-twitter").click(YAHOO.yodel.share.twitter);
		$("#share-facebook").click(YAHOO.yodel.share.facebook);
		$("#share-email").click(YAHOO.yodel.share.mail);
		
		$("#webpage-tag-url").focus(YAHOO.yodel.tag.handle_focus);
		$("#webpage-tag-url").blur(YAHOO.yodel.tag.handle_blur);
		$("#webpage-tag").click(YAHOO.yodel.tag.tag_website);
		
		$("#flag").click(YAHOO.yodel.frameset.show_report_panel);
		$(".report-back").click(YAHOO.yodel.frameset.hide_report_panel);
		$("#report-offensive").click(YAHOO.yodel.frameset.report_yodel);
		$("#report-mysite").click(YAHOO.yodel.frameset.report_yodel);
		
		$("#get-badge").click(YAHOO.yodel.ui.show_embed_panel);
		$("#embed-close").click(YAHOO.yodel.ui.hide_embed_panel);
		
		YAHOO.yodel.ui.show_site();
		
		if(flashvars.yodelID){
			YAHOO.yodel.set_yodel(flashvars.yodelID);
		}
		
	},
	
	_yodel: null,
	
	created: function(){
		return YAHOO.yodel._yodel !== null;
	},
	
	set_yodel: function(yodel_id){
		$.get('/api/yodel/' + yodel_id + '/url/', function(json){
			urls = JSON.parse(json);
			YAHOO.yodel._yodel = { 'id': yodel_id, 'url': urls.url, 'home_url': urls.home_url };
			$("#download-link").attr("href", "/download/mp3/" + yodel_id + "/");
		});
		
		var t = $("textarea");
		if(t.val){
			t.val(t.val().replace("REPLACE_YODEL_ID", yodel_id));
			t.val(t.val().replace("REPLACE_YODEL_ID", yodel_id));
		}
	},
	
	url: function(){
		return YAHOO.yodel._yodel.url;
	},
	
	home_url: function(){
		return YAHOO.yodel._yodel.home_url;
	}

};

YAHOO.yodel.frameset = {
	show_report_panel: function(){
		$("#flash-content").fadeOut(200, function(){
			$("#flash-content").addClass("hidden");
			$("#report").fadeIn(200);
		});
		return false;
	},
	
	hide_report_panel: function(){
		$("#report").fadeOut(200, function(){
			$("#thanks").hide();
			$("#flash-content").removeClass("hidden");
			$("#flash-content").fadeIn(200);
		});
		return false;
	},
	
	report_yodel: function(){
		var url = $(this).attr("href");
		$.get(url, function(data){
			YAHOO.yodel.frameset.show_thanks();
		});
		return false;
	},
	
	show_thanks: function(){
		$("#report").fadeOut(200, function(){
			$("#thanks").fadeIn();
		});
	}
};

YAHOO.yodel.tag = {
	tag_website: function(){
		var url = $('#webpage-tag-url').val();
		var http_index = url.indexOf('http');
		if(http_index == -1){
			url = "http://" + url;
		}
		
		$.post("/api/yodel/" + YAHOO.yodel._yodel.id + "/tag/", { 'url': url }, function(rsp){
			if(rsp == "NOT_ALLOWED"){
				YAHOO.yodel.ui.display_bad_url_error();
			}
			else {
				window.location = rsp;
			}
		});
		return false;
	},
	
	handle_focus: function(){
		if($(this).val() == "Enter a URL here..."){
			$(this).val('');
		}
	},
	
	handle_blur: function(){
		if($(this).val() == ''){
			$(this).val('Enter a URL here...');
		}
	}
};

YAHOO.yodel.image = {
	replace_images: function(i, link){
		var src = $(link).attr("rel");
		$(link).html('<img class="png" src="' + src + '"/>');
		return true;
	}
};

YAHOO.yodel.flash = {
	recorded_successfully: function(yodel_id){
		YAHOO.yodel.set_yodel(yodel_id);
		YAHOO.yodel.ui.open_controls();
	},
	
	on_flash_loaded: function(){
		YAHOO.yodel.ui.show_site();
		$("#flash-content").focus();
	}
};

YAHOO.yodel.ui = {
	show_site: function(){
		setTimeout(YAHOO.yodel.ui._fade_site_in, 1000);
	},
	
	_fade_site_in: function(){
		$("#editorial").fadeIn(200, function(){
			$("#carousel").jCarouselLite({
		        btnNext: "#carousel-next",
		        btnPrev: "#carousel-prev",
				visible: 5,
				circular: false,
				start: 0,
				afterEnd: function(elements){
					var last = elements[4];
					if($(last).hasClass("last")){
						$("#carousel-next").hide();
					}
					else {
						$("#carousel-next").show();
					}
					
					var first = elements[0];
					if($(first).hasClass("first")){
						$("#carousel-prev").css('visibility', 'hidden');
					}
					else {
						$("#carousel-prev").css('visibility', 'visible');
					}
				}
		    });
		});
	},
	
	open_controls: function(){
		$("#controls-wrapper").slideDown();
	},
	
	show_embed_panel: function(){
		$("#embed-badge-wrapper").slideDown(200, function(){
			$.scrollTo('400px', 200);
		});
		return false;
	},
	
	hide_embed_panel: function(){
		$("#embed-badge-wrapper").slideUp(200, function(){
			$.scrollTo('#logo', 200);
		});
	},
	
	display_bad_url_error: function(){
		$("#bad-url-error").fadeIn(200);
	}
};

YAHOO.yodel.favourites = {
	hover: function(){
		$(this).find("p").show();
	},
	
	hover_off: function(){
		$(this).find("p").hide();
	}
};

YAHOO.yodel.share = {
	
	copy: {
		home: {
			twitter: function(){
				return "Check out my Yodel: " + YAHOO.yodel.home_url();
			},

			facebook: function(){
				return escape(YAHOO.yodel.home_url()) + "&t=" + escape("Check out my Yodel");
			},

			mail: function(){
				return "My Latest Yodel!&body=I've started making Yodels. Here's one I thought you might like: " + YAHOO.yodel.home_url() + "%0D%0A%0D%0ACreate your own Yahoo! Yodel at - http://www.yodelizer.co.uk";
			}
		},
		
		frameset: {
			twitter: function(){
				return "I've Yodelized something, check it out: " + YAHOO.yodel.url();
			},

			facebook: function(){
				return escape(YAHOO.yodel.url()) + "&t=" + escape("I've Yodelized something, check it out");
			},

			mail: function(){
				return "I Yodelized a Little Something For You&body=Here's something I thought you'd like. And I added a Yodel to make it a bit special: " + YAHOO.yodel.url() + "%0D%0A%0D%0ACreate your own Yahoo! Yodel at - http://www.yodelizer.co.uk";
			}
		}
	},
	
	get_copy: function(el, network){
		var key;
		if(el.hasClass("home")){
			key = 'home';
		}
		else {
			key = 'frameset';
		}
		return YAHOO.yodel.share.copy[key][network]();
	},
	
	twitter: function(){
		if(YAHOO.yodel.created()){
			var url = "http://twitter.com/home?status=" + YAHOO.yodel.share.get_copy($(this), 'twitter');
			$(this).attr('href', url);
		}
		else {
			alert("No yodel!");
			return false;
		}
	},
	
	facebook: function(){
		if(YAHOO.yodel.created()){
			var url = "http://www.facebook.com/sharer.php?u=" + YAHOO.yodel.share.get_copy($(this), 'facebook');
			window.open(url, 'sharer', 'toolbar=0,status=0,width=626,height=436,resizable=1');
			return false;
		}
		else {
			return YAHOO.yodel.share.no_yodel();
		}
	},
	
	mail: function(){
		if(YAHOO.yodel.created()){
			$(this).attr("href", "mailto:" + '' + "?subject=" + YAHOO.yodel.share.get_copy($(this), 'mail'));
		}
		else {
			return YAHOO.yodel.share.no_yodel();
		}
	},
	
	no_yodel: function(){
		alert("No yodel!");
		return false;
	}
};