(function($){  
	$.fn.briefcase = function(options) {
		var defaults = {
			linkContent: ["Add to Briefcase", "Remove from Briefcase"],
			briefcaseName: '',
			titlePrefix: '',
			briefcaseAction: '',
			encoding: 'utf8',
			//acceptedType: ["pdf"],
			onSuccessAdd: function(title, url) {
				alert("Add successful");
			},
			onSuccessRemove: function(title, url) {
				alert("Remove successful");
			},
			onFailAdd: function(title, url) {
				alert("Add failed");
			},
			onFailRemove: function(title, url) {
				alert("Remove failed");
			}
		};
		var options = $.extend(defaults, options);
		var currentBriefcase = [];
		var type = 'addOnly';
		function addToBriefcase(item, options) {
			$.ajax({
				type: "POST",
				url: options.briefcaseAction,
				data: "action=add&name="+ options.briefcaseName +"&encoding="+ options.encoding +"&title="+$(item).attr('briefcaseTitle')+"&url="+$(item).attr('briefcaseLink'),
				success: function(e) {
					if (type == 'addAndRemove') {
						$('a[briefcaseLink='+$(item).attr('briefcaseLink')+']').html(options.linkContent[1]).removeClass('canAdd').addClass('canRemove');
					}
					options.onSuccessAdd($(item).attr('briefcaseTitle'), $(item).attr('briefcaseLink'));
				},
				error: function(e) {
					options.onFailAdd($(item).attr('briefcaseTitle'), $(item).attr('briefcaseLink'));
				}
			});
		}
		function removeFromBriefcase(item, options) {
			$.ajax({
				type: "POST",
				url: options.briefcaseAction,
				data: "action=remove&name="+ options.briefcaseName +"&url="+$(item).attr('briefcaseLink'),
				success: function(e) {
					if (type == 'addAndRemove') {
						$('a[briefcaseLink='+$(item).attr('briefcaseLink')+']').html(options.linkContent[0]).removeClass('canRemove').addClass('canAdd');
					}
					options.onSuccessRemove($(item).attr('briefcaseTitle'), $(item).attr('briefcaseLink'));
				},
				error: function(e) {
					options.onFailRemove($(item).attr('briefcaseTitle'), $(item).attr('briefcaseLink'));
				}
			});
		}

		if (!jQuery.isArray(options.linkContent)) { // Single status
			options.linkContent = [options.linkContent, options.linkContent];
		} else {
			type = 'addAndRemove';

			$.ajax({
				type: "POST",
				url: options.briefcaseAction,
				data: "action=check&name="+ options.briefcaseName,
				dataType: "json",
				success: function(e) {
					currentBriefcase = e;
					$("span[briefcase_id]").each(function() {
						//alert ($(this).attr("briefcase_id"));
						if (jQuery.inArray($(this).find('a').attr("briefcaseLink"), currentBriefcase) != -1) {
							$(this).find("a").html(options.linkContent[1]).removeClass('canAdd').addClass('canRemove');
						}
					});
				}
			});
		}

		$("span[briefcase_id] a.canAdd").die('click');
		$("span[briefcase_id] a.canAdd").live('click',function(){
			addToBriefcase(this, options);
		});
		
		$("span[briefcase_id] a.canRemove").die('click');
		$("span[briefcase_id] a.canRemove").live('click',function(){
			removeFromBriefcase(this, options);
		});


		return this.each(function() {

			$("span[briefcase_id="+ $(this).attr("briefcase_id") +"]")
			.html('')
			.append('<a href="javascript:;" >'+ options.linkContent[0] +'</a>')
			.find('a')
			.attr("briefcaseLink", ($(this).attr('briefcase_url'))?$(this).attr('briefcase_url'):$(this).attr('href'))
			.attr("briefcaseTitle", ($(this).attr('briefcase_title'))?$(this).attr('briefcase_title'):options.titlePrefix+$(this).html())
			.addClass('canAdd');
		
		});
	};
})(jQuery);


function removeFromBriefcase(name, url) {
	$.ajax({
		type: "POST",
		url: "../../briefcase/briefcase.php",
		data: "action=remove&name="+ name +"&url="+url,
		success: function(e) {
			location.href=location.href;
		},
		error: function(e) {
			alert("Communication Error: Unable to remove briefcase");
		}
	});
}
