// Note: the actual signature calculation implementation should be on server side
function verifyTheLogin(loginEventObj) {
	encodedUID = encodeURIComponent(loginEventObj.UID);
	encodedSig = encodeURIComponent(loginEventObj.signature);
	
	if(loginEventObj.user==null){
		return;
	}
	
	var user = loginEventObj.user;
	
	$.ajax({
		url: '/uncachable/socialize.jsp',
		type: 'post',
		data: "action=login&UID="+encodedUID+"&signature="+encodedSig+"&timestamp="+loginEventObj.timestamp+"&isSiteUID="+user.isSiteUID,
		async: false,
		dataType: "json",
		success: function(data) {
			if (data['error']!="") {
				alert(data['error']);
			} else {
				if(data['new']==true) {
					//alert("User without network connection");
					gigyaNotLinked(encodedUID);
					// affiche Register New User / Complete registration
				} else {
					if(data['notified']!=true) {
						var params = {  
							siteUID: data['mplusID'],   
							timestamp:data['timestampSig'],  
							signature:data['mplusIDSig'],
							callback:reload
						}; 
						gigya.services.socialize.notifyLogin(conf, params);
					} else {
						location.reload();
					}
				}
			}
		}
	});
}

function addConnection(addEventObj){
	
	if(addEventObj.user==null){
		return;
	}
	
	var user = addEventObj.user;
	
	encodedUID = encodeURIComponent(user.UID);
	encodedSig = encodeURIComponent(user.UIDSignature);
	
	$.ajax({
		url: '/uncachable/socialize.jsp',
		type: 'post',
		data: "action=ADD_CONNECTION&UID="+encodedUID+"&signature="+encodedSig+"&timestamp="+user.timestamp,
		async: false,
		dataType: "json",
		success: function(data) {
			if (data['error']!="") {
				alert(data['error']);
			} else {
				if(data['new']==true) {
					//alert("User without network connection");
					gigyaNotLinked(encodedUID);
					// affiche Register New User / Complete registration
				} else {
					
					if(data['notified']!=true) {
						
					} else {
						
					}
					//alert(data['mplusID']); //reload de page ?
					//location.reload();
				}
			}
		}
	});
}


function reload(response){
	location.reload();
}

function renderHeaderUI(res){
	if (res.user != null && res.user.isConnected) {  
		//background: transparent url(overlay.png) no-repeat
		document.getElementById("gigyaheadersmallprovider").src = "http://socialize.gigya.com/gs/i/comments/providers/"+res.user.loginProvider+"User_14x14.gif";
    	
    	document.getElementById("gigyaheadername").innerHTML = res.user.nickname;  
    	if (res.user.thumbnailURL.length > 0)  
        	document.getElementById("gigyaheaderpicture").src = res.user.thumbnailURL; 
    	else  
        	document.getElementById("gigyaheaderpicture").src  
                         = "http://cdn.gigya.com/site/images/bsAPI/Placeholder.gif";  
    	
    	
     	document.getElementById("gigyaheaderprofile").style.display = "block";  
	} else {
    	document.getElementById("gigyaheaderprofile").style.display = "none";  
	}
}

function renderRegisterationUI(res){
	
	if (res.user != null && res.user.isConnected) {  
    	document.getElementById("gigyaname").innerHTML = res.user.nickname;  
    	document.getElementById("gigyaprovider").innerHTML = res.user.loginProvider;
    	if (res.user.thumbnailURL.length > 0)  
        	document.getElementById("gigyaphoto").src = res.user.thumbnailURL;  
    	else  
        	document.getElementById("gigyaphoto").src  
                         = "http://cdn.gigya.com/site/images/bsAPI/Placeholder.gif";  
     	document.getElementById("gigyaprofile").style.display = "block";  
     	$('#gigyaUID').val(res.UID);
     	$('#gigyaSignature').val(res.signature);
     	$('#gigyaTimestamp').val(res.timestamp);
     	
     	//Autoupdate des champs obligatoire (sauf mot de passe)
     	
     	//Prenom
     	if(res.user.firstName !=null && res.user.firstName.length > 0){
     		$('#mp_first_name').val(res.user.firstName);
     		$('#div_mp_first_name').hide();
     	}
     	
     	//Nom de famille
     	if(res.user.lastName !=null && res.user.lastName.length > 0){
     		$('#mp_last_name').val(res.user.lastName);
     		$('#div_mp_last_name').hide();
     	}
     	
     	//email
     	if(res.user.email !=null && res.user.email.length > 0){
     		$('#mp_email').val(res.user.email);
     		$('#div_mp_email').hide();
     	}
     	
	} else {
		document.getElementById("gigyaprofile").style.display = "none";
		//remove all popup
		remove_ppt();
		
		$('#gigyaHidden').attr({
			"href" : "/ajax/cookieProblem.html?ajax=true&width=300&height=150",
			"rel" : "prettyPhoto"
		}).prettyPhoto({theme:'dark_rounded',allowresize: false});
		
		
		$('#gigyaHidden').bind("click", function(){
			return false;
		});
		
		$('#gigyaHidden').trigger('click');
		//alert("Un probl&#232;me de cookie avec votre navigateur vous emp&ecirc;che d'utiliser la connection avec un r&eacute;seau social.");
	}
	
	gigyaRegisterationValidation();
	gigyaConnectionValidation();
}
function commentLoginHandler(event){
	switchToLogin();
}

function gigyaNotLinked(UID){
	//remove all popup
	remove_ppt();
	
	$('#gigyaHidden').attr({
		"href" : "/ajax/sociallogin.html?ajax=true&width=560&height=350&login=true",
		"rel" : "prettyPhoto"
	}).prettyPhoto({theme:'dark_rounded',allowresize: false 
		, changepicturecallback: function(){
			gigya.services.socialize.getUserInfo(conf, { callback: renderRegisterationUI });	
		}
	});
	
	$('#gigyaHidden').bind("click", function(){
		return false;
	});
	
	$('#gigyaHidden').trigger('click');
}


var gigyaConnectionValidation = function(data){
	$(".mp_quick-register").find(".mp_forgotPasswordLink").live('click',function(){
		remove_ppt();
		$(this).prettyPhoto({theme:'dark_rounded',allowresize: false, callback: function(){
			$(".mp_forgot-password").find('#loginSubmit').die();
			$(".mp_forgot-password").find("#mp_full_name").die();
		}});
		$(this).bind('click', function(){
			return forgotMyPasswordValidation();
		});
		$(this).trigger('click');
		return false;
	});
	
	var quickConnectionPassword =  [false, "mot de passe"];
	var quickConnectionEmail    =  [false, "courriel"];
	//submit button lilstener
	$(".mp_quick-register").find('#loginSubmit').live('click', function(){
		return gigyaConnectionValidator();
	});
	//key up listener for email
	$(".mp_quick-register").find("#mp_email_login").live("keyup",function(){
		$elem = $(this);
		var email = $elem.val();
		if(email != ""){
			//email is valid. We are ready to ajaxify our form
			if(isValidEmailAddress(email)){
				quickConnectionEmail[0] = true;
				$elem.parents().find('#valid_login_email').css({"background-position": "left top"});
				$elem.parents().find('#loginSubmit').die();
				$elem.find('#loginSubmit').live('click', function(e){
					return gigyaConnectionValidator();
				});
			}
			//invalid email
			else {
				quickConnectionEmail[0] = false;
				$elem.parent().find('#valid_login_email').css({"background-position": "right top"});
				$elem.parents().find('#loginSubmit').die();
				$elem.find('#loginSubmit').live('click', function(e){
					return gigyaConnectionValidator();
				});
			}
		//email input is empty
		} else {
			quickConnectionEmail[0] = false;
			$elem.parent().find('#valid_login_email').css({"background-position": "16px top"});
			$elem.parents().find('#loginSubmit').die();
			$elem.find('#loginSubmit').live('click', function(e){
				return gigyaConnectionValidator();
			});
		}
	});
	//validator and error output function
	var gigyaConnectionValidator = function(errMessage){
		quickConnectionEmail[0] = $(".mp_quick-register").find("#mp_email_login").val() != "";
		quickConnectionPassword[0] = $(".mp_quick-register").find("#mp_password").val() != "";
		if(!quickConnectionPassword[0] || !quickConnectionEmail[0]){
			if(errMessage==null || errMessage==""){
				htmlMessage = "";
				msgSeparator = ", ";

				if (!quickConnectionEmail[0]) {
					if(htmlMessage!="")	htmlMessage += msgSeparator;
					htmlMessage += quickConnectionEmail[1];
				}
				if(!quickConnectionPassword[0]){
					if(htmlMessage!="")	htmlMessage += msgSeparator;
					htmlMessage += quickConnectionPassword[1];
				}
				
				htmlMessage = "Une erreur est survenue:\n" + htmlMessage + ".";
				$(".mp_quick-register").find('#err_login').text(htmlMessage).slideDown().animate({alpha:1},4500).slideUp();
			}
			else{
				$(".mp_quick-register").find('#err_login').text(errMessage).slideDown().animate({alpha:1},4500).slideUp();
			}
		}
		else{

			var password    	= $(".mp_quick-register").find("#mp_password").val();
			var email       	= $(".mp_quick-register").find("#mp_email_login").val();
			var gigyaUID 		= $(".mp_quick-register").find("#gigyaUID").val();
			var gigyaSignature 	= $(".mp_quick-register").find("#gigyaSignature").val();
			var gigyaTimestamp 	= $(".mp_quick-register").find("#gigyaTimestamp").val();
			
			encodedUID = encodeURIComponent(gigyaUID);
			encodedSig = encodeURIComponent(gigyaSignature);
			
			$('.mp_quick-register').parents().find('.state1').hide();
			$('.mp_quick-register').parents().find('.state2').show();
			$.ajax({
				type: "get",
				url: "/uncachable/socialize.jsp",
				data: "action=add_connection&password="+password+"&email="+email+"&UID="+encodedUID+"&signature="+encodedSig+"&timestamp="+gigyaTimestamp,
				dataType: 'json',
				timeout: 20000,
				contentType: "text/html; charset=ISO-8859-1",
				success: function(data){
					$('.mp_quick-register').find('.state2').hide();
					//show confirmations message
					if(data['error']!='') {
						alert(data['error']);
						//remove all popup
						remove_ppt();
					} else {
						if(data['mplusID']!="") {
							//Already loggued, GO !
							//register with Gigya
							var params = {  
								siteUID: data['mplusID'],   
								UID: encodedUID,
								timestamp:data['timestampSig'],  
								cid:'',  
								signature:data['mplusIDSig']  
							};
							
							//if(data['notified']!=true) {
								//gigya.services.socialize.notifyRegistration(conf, params);
							//}
							
							location.reload();
						} else {
							//Confirm with email
							alert(data['msg']);
							remove_ppt();
						}
					}
				}
			});
		}
		return false;
	};
	return false;
};


var gigyaRegisterationValidation = function(data){

	$(".mp_quick-register").find('.submit').die();
	
	var quickRegisterFirstname = [false, "prenom"];
	var quickRegisterLastname =  [false, "nom"];
	var quickRegisterEmail    =  [false, "courriel"];
	//submit button lilstener
	$(".mp_quick-register").find('#subscribeSubmit').live('click', function(){
		return gigyaRegisterValidator();
	});
	//key up listener for email
	$(".mp_quick-register").find("#mp_email").live("keyup",function(){
		$elem = $(this);
		var email = $elem.val();
		if(email != ""){
			//email is valid. We are ready to ajaxify our form
			if(isValidEmailAddress(email)){
				quickRegisterEmail[0] = true;
				$elem.parents().find('#valid_subscribe').css({"background-position": "left top"});
				$elem.parents().find('#subscribeSubmit').die();
				$elem.find('#subscribeSubmit').live('click', function(e){
					return gigyaRegisterValidator();
				});
			}
			//invalid email
			else {
				quickRegisterEmail[0] = false;
				$elem.parent().find('#valid_subscribe').css({"background-position": "right top"});
				$elem.parents().find('#subscribeSubmit').die();
				$elem.find('#subscribeSubmit').live('click', function(e){
					return gigyaRegisterValidator();
				});
			}
		//email input is empty
		} else {
			quickRegisterEmail[0] = false;
			$elem.parent().find('#valid_subscribe').css({"background-position": "16px top"});
			$elem.parents().find('#subscribeSubmit').die();
			$elem.find('#subscribeSubmit').live('click', function(e){
				return gigyaRegisterValidator();
			});
		}
	});
	//validator and error output function
	var gigyaRegisterValidator = function(errMessage){
		quickRegisterLastname[0] = $(".mp_quick-register").find("#mp_last_name").val() != "";
		quickRegisterFirstname[0] = $(".mp_quick-register").find("#mp_first_name").val() != "";
		quickRegisterEmail[0] = $(".mp_quick-register").find("#mp_email").val() != "";
		if(!quickRegisterFirstname[0] || !quickRegisterLastname[0] || !quickRegisterEmail[0]){
			if(errMessage==null || errMessage==""){
				htmlMessage = "";
				msgSeparator = ", ";
				if(!quickRegisterFirstname[0]){
					htmlMessage += quickRegisterFirstname[1];
				}
				if(!quickRegisterLastname[0]){
					if(htmlMessage!="")	htmlMessage += msgSeparator;
					htmlMessage += quickRegisterLastname[1];
				}
				if (!quickRegisterEmail[0]) {
					if(htmlMessage!="")	htmlMessage += msgSeparator;
					htmlMessage += quickRegisterEmail[1];
				}
				
				htmlMessage = "Une erreur est survenue:\n" + htmlMessage + ".";
				$(".mp_quick-register").find('#error_subscribe').text(htmlMessage).slideDown().animate({alpha:1},4500).slideUp();
			}
			else{
				$(".mp_quick-register").find('#error_subscribe').text(errMessage).slideDown().animate({alpha:1},4500).slideUp();
			}
		}
		else{
			prenom         = $(".mp_quick-register").find("#mp_first_name").val();
			nom            = $(".mp_quick-register").find("#mp_last_name").val();
			email          = $(".mp_quick-register").find("#mp_email").val();
			
			gigyaUID 		= $(".mp_quick-register").find("#gigyaUID").val();
			gigyaSignature 	= $(".mp_quick-register").find("#gigyaSignature").val();
			gigyaTimestamp 	= $(".mp_quick-register").find("#gigyaTimestamp").val();
			
			encodedUID = encodeURIComponent(gigyaUID);
			encodedSig = encodeURIComponent(gigyaSignature);
			
			if($(".mp_quick-register").find("#mp_mplus_news").is(':checked')){
				cb_mp = $(".mp_quick-register").find("#mp_mplus_news").val();
			}else{
				cb_mp = -1;
			}
			
			if($(".mp_quick-register").find("#mp_mplus_partners").is(':checked')){
				cb_partenaires = $(".mp_quick-register").find("#mp_mplus_partners").val();
			}else{
				cb_partenaires = -1;
			}
			
			$('.mp_quick-register').parents().find('.state1').hide();
			$('.mp_quick-register').parents().find('.state2').show();
			$.ajax({
				type: "get",
				url: "/uncachable/socialize.jsp",
				data: "action=inscription&prenom="+prenom+"&nom="+nom+"&email="+email+"&UID="+encodedUID+"&signature="+encodedSig+"&timestamp="+gigyaTimestamp+"&cb_mp="+cb_mp+"&cb_partenaires="+cb_partenaires,
				dataType: 'json',
				timeout: 20000,
				contentType: "text/html; charset=ISO-8859-1",
				success: function(data){
					$('.mp_quick-register').find('.state2').hide();
					//show confirmations message
					if(data['error']!='') {
						alert(data['error']);
						//remove all popup
						remove_ppt();
					} else {
						if(data['mplusID']!="") {
							//Already loggued, GO !
							//register with Gigya
							var params = {  
								siteUID: data['mplusID'],   
								UID: encodedUID,
								timestamp:data['timestampSig'],  
								cid:'',  
								signature:data['mplusIDSig']  
							};  
							
							//if(data['notified']!=true) {
								//gigya.services.socialize.notifyRegistration(conf, params);
							//}
							
							location.reload();
						} else {
							//Confirm with email
							alert(data['msg']);
							remove_ppt();
						}
					}
				}
			});
		}
		return false;
	};
	return false;
};

$(document).ready(function() {
	gigya.services.socialize.addEventHandlers(conf, {
			context: { str: 'congrats on your' }
			, onLogin: verifyTheLogin 
			, onLogout: onLogoutHandler
			//, onConnectionAdded: addConnection
			//, onConnectionRemoved: removeConnection
	});
});


// Logout from Gigya platform. This method is activated when "Logout" button is clicked 
function logoutFromGS() {
    gigya.services.socialize.logout(conf, {}); // logout from Gigya platform
}

// onLogout Event handler
function onLogoutHandler(eventObj) {
	document.getElementById('status').style.color = "red";
	document.getElementById('status').innerHTML = "Status: You are now signed out";
}

