
(function($){
	$.fn.swapCard = function(){
		var $this = $(this);
		var $card = $(".card");
		if($this.is("a")){
			var url = $this.attr("href");
			var post_data = null;			
		}else if($this.is("form")){
			var url = $this.attr("action");
			var post_data = $this.serialize();
		}else{
			console.log("No match", $this);
		}
		if($card.length > 0){
			$card.attr("card_url", url);
			$card.attr("card_post", post_data);
			$this.hideCard();
		}else{
			$this.loadCard(url, post_data);
		}
	};
	$.fn.hideCard = function(){
		var $this = $(this);
		var $card = $(".card");
		var transitions;
		if(window.orientation == undefined){
			transitions = {
				opacity:0,
				left:"+=30px"
			};
		}else{
			transitions = {
				opacity:0,
				height:0
			};				
		}
		$card.animate(transitions, 300, "swing", function(){
			$this = $(this);
			var url = $this.attr("card_url");
			if(url != "#") $this.loadCard($this.attr("card_url"), $this.attr("card_post"));
			$this.remove();
		});
	}
	$.fn.showCard = function(){
		var start;
		var end;
		var callback;
		if(window.orientation == undefined){
			start = {
				opacity:0,
				left:"332px"
			};
			end = {
				opacity:1,
				left:"-=30px"
			};
		}else{
			start = {
				opacity:0,
				height:0
			}
			end = {
				opacity:1,
				height:$(".card").height()
			}
			callback = function(){
				$(this).css({height:"auto"});
			}
		}
		$(".card").css(start).animate(end, callback);
	}
	$.fn.loadCard = function(url, post_data){
		url += ((url.indexOf("?") == -1) ? "?" : "&") + "xhr=1";
		$.ajax({
			url:url,
			type:(post_data) ? "POST" : "GET",
			data:post_data,
			success:function(data, textStatus){
				$(".card").remove();
				$("#content").append(data)
				$(".close_link").click(function(e){
					e.preventDefault();
					$(this).swapCard();
				});
				$(".card form").submit(function(e){
					e.preventDefault();
					$(this).swapCard();
				});
				$(this).showCard();
				$("#throbber").remove();
			}
		});
		$("#content").append("<div id=\"throbber\"></div>");
	};
})(jQuery);
