
sfd.inviter = {
	popupAjaxTarget : null,
	baseUrl : null,
	userIdToInvite : null,
	inviteIdToAccept : null,
	inviteIdToIgnore : null,
	inviterUserId : null,
	recentInviteSuccessful : false,
	functionToCallAfterInvite : function() {},
	currentSuggestedFriendIds : [],
	initIndexPage : function()
	{
		$("#submitInviteButton").click(function(){
			$("#inviterForm").submit();
		});
	},
	initPopupPage : function()
	{
		
		$("#inviterForm #submitInviteButton").click(function(){
			$("#inviterForm").submit();
		});
		
		$("#inviterForm #cancelInviteButton").click(function(){
			$("#inviterDialog").dialog("close")
		});
		
		$("#okInviteButton").click(function(){
			$("#inviterDialog").dialog("close")
		});
		
		// bind to the form's submit event 
		 $('#inviterForm').bind('submit.inviterForm', sfd.inviter.inviterFormFunc); 
		
	},
	initPendingInvitesPage : function()
	{
	
		$('.acceptInviteButton').bind('click.acceptPendingInvite', sfd.inviter.acceptPendingInviteFunc); 
		$('.ignoreInviteButton').bind('click.ignorePendingInvite', sfd.inviter.ignorePendingInviteFunc); 
		
	
	},
	inviterFormFunc : function()
	{
		var inviteResponse = function (responseText, statusText, xhr, $form) 
		{ 
			
			var successInvite = $(responseText).find("#successInvite").val();
			if(successInvite)
			{
				sfd.inviter.recentInviteSuccessful = true;
			}
			else
			{
				sfd.inviter.recentInviteSuccessful = false;
			}	
			
			sfd.inviter.initPopupPage();
			sfd.ajaxLoader.hide();
			
			sfd.inviter.functionToCallAfterInvite();
			
		};
		
		
		var showLoader = function()
		{
			var loader = sfd.ajaxLoader.show();
			$("#inviterDialogContent").children().hide();
			$("#inviterDialogContent").append(loader);
		};
		
		var options = {
			success :  inviteResponse,
			beforeSubmit:  showLoader,
			target: sfd.inviter.popupAjaxTarget,
			complete : sfd.ajaxLoader.hide(),
			error: function( XMLHttpRequest, textStatus, errorThrown )
				  {
					alert('Erreur ' + textStatus + ' ' + errorThrown);
				  }
		};
		
		// inside event callbacks 'this' is the DOM element so we first 
		// wrap it in a jQuery object and then invoke ajaxSubmit 
		$('#inviterForm').ajaxSubmit(options); 

		// !!! Important !!! 
		// always return false to prevent standard browser submit and page navigation 
		return false;
	},
	acceptPendingInviteFunc : function()
	{
		
		var inviteIdToAccept = $(this).attr('inviteId');
		var inviterUserId = $(this).attr('inviterUserId');
		sfd.inviter.inviteIdToAccept = inviteIdToAccept;
		sfd.inviter.inviterUserId = inviterUserId;
		sfd.gAlert.confirm('Souhaitez-vous accepter cette invitation?');
		$("#alertDialogValider").bind('click.acceptPendingInvite', sfd.inviter.acceptPendingInviteAjax);
			
	},
	acceptPendingInviteAjax : function()
	{
		var url = sfd.inviter.baseUrl + "/inviter/acceptpendinginvite-json";
		
		
		
		var inviteIdToAccept = sfd.inviter.inviteIdToAccept;
		var data = "inviteId=" + inviteIdToAccept;
		data += '&inviterUserId=' + sfd.inviter.inviterUserId;
	
		$.ajax( 
				{ 
				  url:url, 
				  dataType : 'json',
				  type : 'POST',
				  data : data,
				  success : function( data )
				  { 
					
					//alert(data);
					var affected = data.affected;
					var message = data.message;
					var countOfPendingInvites = data.countOfPendingInvites;
					
					setTimeout('sfd.gAlert.alert("' + message + '");',500);
					
					if(affected)
					{
						$("#alertDialogOk").click(function(){
							$(".inviteDiv-" + inviteIdToAccept).fadeOut();
						});	
						$("#sidebar-countOfPendingInvites").html(countOfPendingInvites);
					}
				  },
				  error: function( XMLHttpRequest, textStatus, errorThrown )
				  {
					alert('Erreur ' + textStatus + ' ' + errorThrown);
				  },
				  complete : function(){}	  
				} 
			  ); //End of $.ajax
		
	},
	ignorePendingInviteFunc : function()
	{
		
		var inviteIdToIgnore = $(this).attr('inviteId');
		sfd.inviter.inviteIdToIgnore = inviteIdToIgnore;

		sfd.gAlert.confirm('Souhaitez-vous ignorer cette invitation?');
		$("#alertDialogValider").bind('click.acceptPendingInvite', sfd.inviter.ignorePendingInviteAjax);
			
	},
	ignorePendingInviteAjax : function()
	{
		var url = sfd.inviter.baseUrl + "/inviter/ignorependinginvite-json";
		
		// alert(url);
		// return;
		
		var inviteIdToIgnore = sfd.inviter.inviteIdToIgnore;
		var data = "inviteId=" + inviteIdToIgnore;
		
		$.ajax( 
				{ 
				  url:url, 
				  dataType : 'json',
				  type : 'POST',
				  data : data,
				  success : function( data )
				  { 
					
					
					var affected = data.affected;
					var message = data.message;
					var countOfPendingInvites = data.countOfPendingInvites;
					
					
					
					if(affected)
					{
						//sfd.gAlert.alert(message);
						setTimeout('sfd.gAlert.alert("' + message + '");',500);
						
						$("#alertDialogOk").click(function(){
							$(".inviteDiv-" + inviteIdToIgnore).fadeOut();
						});	
						$("#sidebar-countOfPendingInvites").html(countOfPendingInvites);
					}
				  },
				  error: function( XMLHttpRequest, textStatus, errorThrown )
				  {
					alert('Erreur ' + textStatus + ' ' + errorThrown);
				  }
				} 
			  ); //End of $.ajax
		
	},
	
	
	
	inviteButtonFunc : function()
	{
		var userIdToInvite = $(this).attr('userId');
		sfd.inviter.userIdToInvite = userIdToInvite;
		
		//alert(userIdToInvite);
		
		if($("#inviterDialog").size()>1)
		{
			alert("Error. There is more than one #inviterDialog on the page.");
			return;
		}
		$("#inviterDialog").dialog({
			autoOpen: false,
			modal: true,
			width: 500,
			title: 'Invitation',
			open: sfd.inviter.inviterDialogFunc,
			hide : true,
			resizable : false
		});
		$("#inviterDialog").dialog("open");
	},
	inviterDialogFunc : function()
	{
		var url = sfd.inviter.baseUrl + "/inviter/index/" + sfd.inviter.userIdToInvite;
		//alert(url);
		var loader = sfd.ajaxLoader.show();
		$("#inviterDialogContent").html(loader);
		
		/*
		$("#inviterDialogContent").load(url, '', function(){
			sfd.inviter.initPopupPage();
		});
		*/
		
		$.ajax( 
				{ 
				  url:url, 
				  success : function( data )
				  { 
					$("#inviterDialogContent").html(data);
					
					sfd.inviter.initPopupPage();
				  },
				  error: function( XMLHttpRequest, textStatus, errorThrown )
				  {
					alert('Erreur ' + textStatus + ' ' + errorThrown);
				  },
				  complete: function()
				  {
					
				  }
				} 
			  ); //End of $.ajax
		
	},
	initPageInviter : function()
	{
		$(".inviteButton").unbind('click.inviteButton');
		$(".inviteButton").bind('click.inviteButton', sfd.inviter.inviteButtonFunc);
		
		$(".btn-close").bind('click.ignoreSuggest', function(){
			sfd.inviter.inviterUserId	= $(".profil-block").attr("id");
			sfd.inviter.userIdToInvite	= $(this).parent().parent().attr("id");
			var container = $(this).parent().parent();
			
			sfd.inviter.replaceContactRecommentation(container);
			$(this).unbind('click.ignoreSuggest');
			
		});
	},
	
	afterInvite : function()
	{
		$("#div-friend-suggestions").find(".inviter-box").each( function(index, Element){
			var idFound = $(Element).attr("id");
			if(idFound==sfd.inviter.userIdToInvite)
			{
				$.ajax({
					url: '/contacts/get-contact-suggestion',
					data: 'uid='+sfd.inviter.inviterUserId+'&pid='+sfd.inviter.userIdToInvite+'&curr='+sfd.inviter.currentSuggestedFriendIds.join(", "),
					type: 'POST',
					dataType: 'json',
					success: function(data){
						$("#div-friend-suggestions .bg").append(data.body);
						sfd.inviter.currentSuggestedFriendIds.push(data.id);
					},
					error: function(XMLHttpRequest, textStatus, errorThrown){
						sfd.gAlert.alert("XMLHttpRequest="+XMLHttpRequest.responseText+"\ntextStatus="+textStatus+"\nerrorThrown="+errorThrown);
					},
					complete: function(){
						$(Element).remove();
						sfd.inviter.initPageInviter();
						var sizeOfBtns = $(".btn-close").size();
						if(sizeOfBtns == 0)
						{
							$("#div-friend-suggestions").remove();
						}
					}
				});
			}	
		});
		var sizeOfBtns = $(".btn-close").size();
		if(sizeOfBtns == 0)
		{
			$("#div-friend-suggestions").remove();
		}
	},
	
	replaceContactRecommentation : function(container)
	{
		$.ajax({
			url: '/contacts/replace-contact-suggestion',
			data: 'uid='+sfd.inviter.inviterUserId+'&pid='+sfd.inviter.userIdToInvite+'&curr='+sfd.inviter.currentSuggestedFriendIds.join(", "),
			type: 'POST',
			dataType: 'json',
			success: function(data){
				if(data.body === '')
				{
					container.remove();
					sfd.inviter.currentSuggestedFriendIds.push(data.id);
				}
				else
				{
					container.remove();
					$("#div-friend-suggestions .bg").append(data.body);
					sfd.inviter.currentSuggestedFriendIds.push(data.id);
					
					sfd.inviter.initPageInviter();
				}
				
				var sizeOfBtns = $(".btn-close").size();
				if(sizeOfBtns == 0)
				{
					$("#div-friend-suggestions").remove();
				}
			},
			error: function(XMLHttpRequest, textStatus, errorThrown){
				sfd.gAlert.alert("XMLHttpRequest="+XMLHttpRequest.responseText+"\ntextStatus="+textStatus+"\nerrorThrown="+errorThrown);
			},
			complete: function(){
				
			}
		});
		return false;
	}
	
}
