var sv;
$(document).ready(function(){
	sv = new SubjectViewAJAX();
});
function joinTo(myId, foreignId, linkType, removeWhenDone, clicker, withIntro){
	var panel, li;
	for (;clicker && !panel && clicker.tagName != 'body';clicker = clicker.parentNode){
		if (li == null && clicker.tagName == 'LI')
			li = clicker;
		if (clicker.className && clicker.className.indexOf('WidgetPanel') >= 0)
			panel = clicker;
	}
	var intro = '';
	var txt = 'Introduce yourself: <br /> <textarea></textarea>';
    if (!withIntro)
		txt = 'Are you sure?';
    $.prompt(txt,{
		callback: function (v,m) {
			if (v == 'add'){
				if (panel)
					$('div.Spinner', panel).show();
				else if (li)
					$('img', li).attr('src', spinnerSmallImage);
				sv.joinTo(myId, foreignId, linkType, panel?panel.getAttribute('rel'):0, m.children('textarea').val(), function (response){
					if (removeWhenDone){
						$(li).parent().replaceWith('<p>request sent</p>');
						if (panel)
							$('div.Spinner', panel).hide();
					}else if (panel)
						$(panel).replaceWith(response.result);
					else
						$(li).replaceWith(response.result);
					if (typeof(beginSorter) == 'function')
						beginSorter();
				});
			}
		},
      buttons: { Add: 'add', Cancel: 'cancel' }
	});
}
function removeFrom(myId, foreignId, linkType, removeWhenDone, clicker){
	var panel, li;
	for (;clicker && !panel && clicker.tagName != 'body';clicker = clicker.parentNode){
		if (!li && clicker.tagName == 'LI')
			li = clicker;
		if (clicker.className && clicker.className.indexOf('WidgetPanel') >= 0)
			panel = clicker;
	}
	if (panel)
		$('div.Spinner', panel).show();
	else if (li)
		$('img', li).attr('src', spinnerSmallImage);
	sv.removeFrom(myId, foreignId, linkType, panel?panel.getAttribute('rel'):0, function (response){
		if (removeWhenDone){
			$(li).parent().replaceWith('<p>removed</p>');
			if (panel)
				$('div.Spinner', panel).hide();
		}else if (panel)
			$(panel).replaceWith(response.result);
		else
			$(li).replaceWith(response.result);
		if (typeof(beginSorter) == 'function')
			beginSorter();
	});
}
function requestRespond(accepted, requestId, removeWhenDone, clicker){
	var panel, li;
	for (;clicker && !panel && clicker.tagName != 'body';clicker = clicker.parentNode){
		if (!li && clicker.tagName == 'LI')
			li = clicker;
		if (clicker.className && clicker.className.indexOf('WidgetPanel') >= 0)
			panel = clicker;
	}
	if (panel)
		$('div.Spinner', panel).show();
	else if (li)
		$('img', li).attr('src', spinnerSmallImage);

	sv.requestRespond(accepted,requestId, panel?panel.getAttribute('rel'):0, function (response){
		if (removeWhenDone){
			$(li).parent().replaceWith(accepted ? '<p>request accepted</p>' : '<p>request declined</p>');
			if (panel)
				$('div.Spinner', panel).hide();
		}else if (panel)
			$(panel).replaceWith(response.result);
		else
			$(li).replaceWith(response.result);
		if (typeof(beginSorter) == 'function')
			beginSorter();
	});
}
function acceptRequest(myId, foreignId, linkType, removeWhenDone, clicker, prompt, linkId){
	requestRespond(true, linkId, removeWhenDone, clicker);
}
function declineRequest(myId, foreignId, linkType, removeWhenDone, clicker, prompt, linkId){
	requestRespond(false, linkId, removeWhenDone, clicker);
}