﻿
// **************************************** creation d'un POST "inbox" ou "friends" par WS ****************************************
// string XML pour inputData WS creation d'un POST
var gCreatePostXMLString = '<?xml version="1.0" encoding="utf-8"?>';
gCreatePostXMLString += "<Loreal_Reference_IN_SaveForumAdvPostInfo>";
gCreatePostXMLString += "<SessionID>XXXuserIdXXX</SessionID>";
gCreatePostXMLString += "<ForumAdvId>XXXforumXXX</ForumAdvId>";
gCreatePostXMLString += "<ForumAdvPostId></ForumAdvPostId>";
gCreatePostXMLString += "<FpParentId></FpParentId>";
gCreatePostXMLString += "<FpSubject><![CDATA[A message from somebody to someone]]></FpSubject>";
gCreatePostXMLString += "<FpText><![CDATA[XXXmessageXXX]]></FpText>";
gCreatePostXMLString += "<FpApproved>1</FpApproved>";
gCreatePostXMLString += "<FpValid>1</FpValid>";
gCreatePostXMLString += "<FpPrdCode></FpPrdCode>";
gCreatePostXMLString += "<FpExtendedProperties>";
	gCreatePostXMLString += "<VIP_OWNER>XXXownerXXX</VIP_OWNER>";
	gCreatePostXMLString += "<VIP_FRIEND>XXXfriendXXX</VIP_FRIEND>";
	gCreatePostXMLString += "<VIP_READ>XXXreadXXX</VIP_READ>";
	gCreatePostXMLString += "<VIP_TYP>XXXtypXXX</VIP_TYP>";
gCreatePostXMLString += "</FpExtendedProperties>";
gCreatePostXMLString += "</Loreal_Reference_IN_SaveForumAdvPostInfo>";
// fonction envoi d'un message dans une inbox
function sendInboxMessage(type, user, secondcallback){
	var message = document.getElementById("message").value;
	//webservice perd les sauts de ligne avec IE ! il faut ruser comme un chacal:
	//on remplace les sauts de ligne par "XOXOXO" en entrée
	//et on remplacera les "XOXOXO" par des <br/> en sortie (ondomload pages inbox clubVIP.js)
	message = message.replace(/(\r\n|[\r\n])/g, "XOXOXO");
	var leStringXML = gCreatePostXMLString.replace("XXXownerXXX", gUserId).replace("XXXfriendXXX", user).replace("XXXreadXXX", "0").replace("XXXuserIdXXX", gUserId).replace("XXXtypXXX", type).replace("XXXmessageXXX", message).replace("XXXforumXXX", gInboxForum);
	var inputDataText = leStringXML;
	var inputData = XML.parse(inputDataText);
	var callback2 = secondcallback;
	var callback = function(msg){
		var xmldata = msg; // le msg retourne par les WS est deja un objet XML
		if(xmldata.getElementsByTagName("ForumAdvPostId")[0]){
			openPopinMessage(gLabels.confirmation, gLabels.messageSent);
			if(callback2) callback2.apply();
		}
		else{
			//erreur WS
			var error = xmldata.getElementsByTagName("Message")[0].firstChild.data;
			openPopinMessage(gLabels.error, error);
		}
	}
	$.ajax({
		type: "POST",
		url: "../../../ws/forumAdv.asmx/SaveForumAdvPostInfo",
		data: "inputData="+inputDataText,
		success: callback
	});
	return false;
}
// **************************************** FIN creation d'un POST "inbox" ou "friends" par WS ****************************************



// **************************************** MAJ USER Extended Properties ****************************************
function majCustomerProp(userID, properties, values, type, secondcallback){
	var callback2 = secondcallback;
	var callback = function(msg, textStatus, XMLHttpRequest){
		var msg = (typeof selector == "string") ? msg : msg.toString();//on transforme le msg en string 
		if(callback2) callback2.apply();
	}
	$.ajax({
		type: "GET",
		url: gVIPpath + "webboxtools/update-customer-properties.aspx",
		data: "userID="+userID+"&prop="+properties+"&val="+values+"&typ="+type,
		success: callback
	});
	return false;
}
//maj MOOD user
function majMood(){
	//properties: 'VIP_FRIEND#VIP_OWNER#VIP_READ'
	//values: '@@Container_ForumAdvPost.Message.Text@@#ad396f49-6627-441a-a98f-f6cfcb5ada0a#1'
	//type: 'string#string#int'
	//majCustomerProp(gUserId, "VIP_mood", document.getElementById("user_mood").value, "string");
	var callback = function(msg, textStatus, XMLHttpRequest){
		var msg = (typeof selector == "string") ? msg : msg.toString();//on transforme le msg en string 
		openPopinMessage(gLabels.confirmation, gLabels.moodUploaded);
	}
	var zemood = encodeURI(document.getElementById("user_mood").value);
	$.ajax({
		type: "GET",
		url: gVIPpath + "webboxtools/update-customer-properties.aspx",
		data: "userID="+gUserId+"&prop=VIP_mood&val="+zemood+"&typ=string",
		success: callback
	});
}
//maj STATUS
function majCustomerStatus(){
	var callback = function(msg, textStatus, XMLHttpRequest){
		var msg = (typeof selector == "string") ? msg : msg.toString();//on transforme le msg en string
	}
	$.ajax({
		type: "GET",
		url: gVIPpath + "webboxtools/update-customer-status.aspx",
		data: "userID="+gUserId,
		success: callback
	});
	return false;
}
$(document).ready(function(){
	majCustomerStatus();
});
// **************************************** FIN MAJ USER Extended Properties ****************************************


// **************************************** MAJ POST Extended Properties ****************************************
function majForumPost(idForum, idpost, properties, values, type, callback){
	$.ajax({
		type: "GET",
		url: gVIPpath + "webboxtools/update-post-properties.aspx",
		data: "idForum="+idForum+"&postID="+idpost+"&prop="+properties+"&val="+values+"&typ="+type,
		success: callback
	});
}
//read a POST
function readPost(id){
	var inboxItem = "#inbox" + id;
	var postID = id;
	var param_arr = top.location.search.substr(1).split("&");
	var zobj = new Object();
	for(var i=0; i<param_arr.length; i++){
		var param = param_arr[i].split("=");
		zobj[param[0]] = param[1];
	}
	var callback = function(msg, textStatus, XMLHttpRequest){
		var msg = (typeof selector == "string") ? msg : msg.toString();//on transforme le msg en string 
		$(inboxItem).removeClass("read0");
		$(inboxItem).addClass("read1");
		var rajoupage = (zobj.page) ? zobj.page : "";
		var rajoufiltres = (zobj.filtres) ? zobj.filtres : "";
		var rajoucombotitre = (zobj.combotitre) ? zobj.combotitre : "";
		top.location.href = gVIPpath + "my-inbox-message.aspx?cur=VIP_inbox&curMenu=VIP_myNetwork&curSsMenu=VIP_inbox&postId="+postID+"&page="+rajoupage+"&combotitre="+rajoucombotitre+"&filtres="+rajoufiltres;
	}
	majForumPost(gInboxForum, id, "VIP_READ", "1", "int", callback);
}
// **************************************** MAJ POST Extended Properties ****************************************


// **************************************** delete posts (remove inbox ou remove friends) ****************************************
function deletePost(forum){
	if(gSelectedPosts.length == 0){
		openPopinMessage(gLabels.error, gLabels.noSelect);
	}
	else{
		var callback = function(msg, textStatus, XMLHttpRequest){
			var msg = (typeof selector == "string") ? msg : msg.toString();//on transforme le msg en string 
			top.location.reload();
		}
		var liste = gSelectedPosts.concat(gSelectedFriendsPosts);
		liste = liste.join(",");
		$.ajax({
			type: "GET",
			url: gVIPpath + "webboxtools/delete-posts.aspx",
			data: "listeId="+liste,
			success: callback
		});
	}
}
//
function deleteFriends(){
	if(gSelectedPosts.length == 0){
		openPopinMessage(gLabels.error, gLabels.noSelect);
	}
	else{
		//ouverture popin de confirmation
		var classe = "popinRemoveFriends";
		//callback apres chargement AJAH
		var callback = function(msg){
			//action bouton YES
			$("#popinCib #yesbtn").click(function(){
				deletePost(gFriendsForum);
			});
			$("#popinCib").attr("class", "");
			$("#popinCib").addClass(classe);
			$("#popinCib").fadeIn("slow");
			//drag
			if(!navig.IE6){
				var dragPopin = new BOX.SimpleDrag({
					'root': '#popinCib',
					'handle': '#popinTitle',
					'minX': -200,
					'minY': 78,
					'maxX': 814,
					'maxY': 350
				});
			}
		}
		//creation cible pour popin
		createPopinCib("popinCib", classe);
		//chargement page HTML dans cible via AJAH
		$("#popinCib").load(gVIPpath + "popins/remove-friends.aspx", callback);
		return false;
	}
}
// **************************************** FIN delete posts (remove inbox ou remove friends) ****************************************



// ****************************************  envoi d'un message a plusieurs amis ****************************************
//multimessage, appel sur bouton "send" de la page "send-message.html"
var params;
function sendMessageMulti(type){
	if(gSelectedFriendsPosts.length == 0){
		openPopinMessage(gLabels.error, gLabels.noSelect);
	}
	else{
		var liste = gSelectedPosts.concat(gSelectedFriendsPosts);
		liste = liste.join(",");
		var message = escape(document.getElementById("message").value);
		//chargement page HTML avec paramètres en GET
		top.location.href = "send-message-process.aspx"+top.location.search+"&listeId="+liste+"&forumId="+gInboxForum+"&type="+type+"&message="+message;
		/*
		//chargement page HTML avec passage parametres en POST
		$("#hiddenForm input").each(function(){
			if($(this).attr("id").indexOf("listeId") >= 0) $(this).attr("value", liste);
			if($(this).attr("id").indexOf("typ") >= 0) $(this).attr("value", type);
			if($(this).attr("id").indexOf("forumId") >= 0) $(this).attr("value", gInboxForum);
		});
		document.forms["aspnetForm"].action = "send-message-process.aspx"+top.location.search;
		document.forms["aspnetForm"].submit();
		//__doPostBack('','');
		*/
	}
}
//fonction appel sur onDomLoad de la page "send-message-process.html" (voir declaration plus bas)
//et qui met a jour les values des inputs EP et submit le formulaire
var sendMessageMultiProcess = function(){
	/*
	*/
	var param_arr = top.location.search.substr(1).split("&");
	var zobj = new Object();
	for(var i=0; i<param_arr.length; i++){
		var param = param_arr[i].split("=");
		zobj[param[0]] = param[1];
	}
	var liste = zobj.listeId;
	var type = zobj.type;
	var message = zobj.message;
	var liste_arr = liste.split(",");
	for (var i=0; i<liste_arr.length; i++){
		if(document.getElementById("div_" + liste_arr[i])){
			var cib = document.getElementById("div_" + liste_arr[i]);
			if(cib.getElementsByTagName("input")){
				var cib_input_arr = cib.getElementsByTagName("input");
				cib_input_arr[0].value = liste_arr[i];
				cib_input_arr[1].value = type;
				cib_input_arr[2].value = message;
				var lien = cib.getElementsByTagName("a")[0];
				var id_lien = lien.id;
			}
		}
	}
	//on active le dernier input (a priori ca suffit pour tous les activer !)
	//__doPostBack(id_lien,'');
}
$(document).ready(function(){
	if(document.getElementById("messageProcess")) {
		sendMessageMultiProcess();
	}
});
// **************************************** FIN envoi d'un message a plusieurs amis ****************************************

// **************************************** MESSAGES PAR DEFAUT POUR send-recommandation et send-message ****************************************
$(document).ready(function(){
	if(document.getElementById("sendReco") || document.getElementById("sendMessage")) {
		var initMessage = $("#message").text();
		$("#message").focus(function(){
			if($(this).text() == initMessage){
				$(this).text("");
			}
		});
		$("#message").blur(function(){
			if($(this).text() == ""){
				$(this).text(initMessage);
			}
		});
		//affichage popin confirmation envoi message quand retour de page process
		var param_arr = top.location.search.substr(1).split("&");
		var zobj = new Object();
		for(var i=0; i<param_arr.length; i++){
			var param = param_arr[i].split("=");
			zobj[param[0]] = param[1];
		}
		if(zobj.backFromProcess == "1"){
			openPopinMessage(gLabels.confirmation, gLabels.messageSent);
		}		
	}
});
// **************************************** MESSAGES PAR DEFAUT ****************************************

// ****************************************  envoi d'une reco a plusieurs amis ****************************************
//multimessage, appel sur bouton "send" de la page "send-recommendation.html"
function sendRecoMulti(type){
	if(gSelectedFriendsPosts.length == 0){
		openPopinMessage(gLabels.error, gLabels.noSelect);
	}
	else{
		var liste = gSelectedPosts.concat(gSelectedFriendsPosts);
		liste = liste.join(",");
		var message = escape(document.getElementById("message").value);
		//chargement page HTML
		top.location.href = gVIPpath + "send-recommendation-process.aspx"+top.location.search+"&listeId="+liste+"&forumId="+gInboxForum+"&type="+type+"&message="+message;
	}
}
//fonction appel au onDomLoad de la page "send-message-process.html" (voir declaration plus bas)
//et qui met a jour les values des inputs EP et submit le formulaire
var sendRecoMultiProcess = function(){
	var param_arr = top.location.search.substr(1).split("&");
	var zobj = new Object();
	for(var i=0; i<param_arr.length; i++){
		var param = param_arr[i].split("=");
		zobj[param[0]] = param[1];
	}
	var liste = (zobj.listeId) ? zobj.listeId : "";
	var type = (zobj.type) ? zobj.type : "";
	var message = (zobj.message) ? zobj.message : "&nbsp;";
	var reco = (zobj.reco) ? zobj.reco : "";
	var liste_arr = liste.split(",");
	for (var i=0; i<liste_arr.length; i++){
		if(document.getElementById("div_" + liste_arr[i])){
			var cib = document.getElementById("div_" + liste_arr[i]);
			if(cib.getElementsByTagName("input")){
				var cib_input_arr = cib.getElementsByTagName("input");
				cib_input_arr[0].value = liste_arr[i];
				cib_input_arr[1].value = type;
				cib_input_arr[2].value = reco;
				if(message != "") cib_input_arr[3].value = message;//unescape(message);
				var lien = cib.getElementsByTagName("a")[0];
				var id_lien = lien.id;
			}
		}
	}
	//on active le dernier input (a priori ca suffit pour tous les activer !)
	__doPostBack(id_lien,'');
}
$(document).ready(function(){
	if(document.getElementById("recoProcess")) {
		sendRecoMultiProcess();
	}
});
// **************************************** FIN envoi d'une reco a plusieurs amis ****************************************


// **************************************** creation Paire d'amis ****************************************
//string pour inputData WS, variable "CreatePostXMLString" declare plus haut
//var globales pour stocker owner et friend selectionnes
var gOwner, gFriend;
// gSecondRetour pour assurer les 2 appels AJAX successifs au WS
var gSecondRetour = false;
//gFriendPost1 et gFriendPost2 pour PostId des POSTS "friends" des 2 nouveaux amis
var gFriendPost1;
var gFriendPost2;
function makePairOfFriends(owner, friend, postId){
	gSecondRetour = gSecondRetour ? false : true;
	gOwner = owner;
	gFriend = friend;
	var callback = function(msg, textStatus, XMLHttpRequest){
		makeFriends(gSecondRetour);
	}
	majForumPost(gInboxForum, postId, "VIP_REQ_ACCEPTED", "1", "int", callback);
	return false;
}
function makeFriends(firstcallback){
	var leStringXML = gCreatePostXMLString.replace("XXXownerXXX", gOwner).replace("XXXfriendXXX", gFriend).replace("XXXreadXXX", "1").replace("XXXuserIdXXX", gUserId).replace("XXXforumXXX", gFriendsForum);
	var inputDataText = leStringXML;
	var inputData = XML.parse(inputDataText);
	if(firstcallback){
		var callback = function(msg){
			var xmldata = msg; // le msg retourne par les WS est deja un objet XML
			if(xmldata.getElementsByTagName("ForumAdvPostId")[0]){
				var ForumAdvPostId = xmldata.getElementsByTagName("ForumAdvPostId")[0].firstChild.data;
				//on stocke l'ID du POST cree
				gFriendPost1 = ForumAdvPostId;
				//on inverse owner/friend pour 2e appel AJAX au WS
				var friend = gOwner;
				var owner = gFriend;
				makePairOfFriends(owner, friend);
			}
			else{
				//erreur WS
				var error = xmldata.getElementsByTagName("Message")[0].firstChild.data;
				openPopinMessage(gLabels.error, error);
			}
		}
	}
	else{
		var callback = function(msg){
			var xmldata = msg; // le msg retourne par les WS est deja un objet XML
			if(xmldata.getElementsByTagName("ForumAdvPostId")[0]){
				var ForumAdvPostId = xmldata.getElementsByTagName("ForumAdvPostId")[0].firstChild.data;
				//on stocke l'ID du POST cree
				gFriendPost2 = ForumAdvPostId;
				//process creation paire d'amis presque fini !
				//il faut maintenant mettre a jour les EP "VIP_FRIEND_POST" des 2 POST "friends" crees...
				majPostFriend1(gFriendPost1, gFriendPost2);
			}
			else{
				//erreur WS
				var error = xmldata.getElementsByTagName("Message")[0].firstChild.data;
				openPopinMessage(gLabels.error, error);
			}
		}
	}
	$.ajax({
		type: "POST",
		url: "../../../ws/forumAdv.asmx/SaveForumAdvPostInfo",
		data: "inputData="+inputDataText,
		success: callback
	});
	return false;
}
function majPostFriend1(idpost1, idpost2){
	var post1 = idpost1;
	var post2 = idpost2;
	var callback = function(msg, textStatus, XMLHttpRequest){
		var msg = (typeof selector == "string") ? msg : msg.toString();//on transforme le msg en string 
		majPostFriend2(post2, post1);
	}
	majForumPost(gFriendsForum, idpost1, "VIP_FRIEND_POST", idpost2, "string", callback);
}
function majPostFriend2(idpost1, idpost2){
	//callback2 = envoi d'un POST "message" a l'ami qui vient d'etre accepte
	var callbaback2 = function(){
		var nom = gUserFirstName + " " + gUserLastName
		var messageMail = gLabels.requestAcceptedMessage.replace("XXXnomXXX", nom);
		var leStringXMLMail = gCreatePostXMLString.replace("XXXownerXXX", gFriend).replace("XXXfriendXXX", gOwner).replace("XXXreadXXX", "0").replace("XXXuserIdXXX", gUserId).replace("XXXtypXXX", "message").replace("XXXmessageXXX", messageMail).replace("XXXforumXXX", gInboxForum);
		var inputDataText = leStringXMLMail;
		var callback = function(msg){
			var xmldata = msg; // le msg retourne par les WS est deja un objet XML
			if(xmldata.getElementsByTagName("ForumAdvPostId")[0]){
			}
			else{
				//erreur WS
				var error = xmldata.getElementsByTagName("Message")[0].firstChild.data;
			}
		}
		$.ajax({
			type: "POST",
			url: "../../../ws/forumAdv.asmx/SaveForumAdvPostInfo",
			data: "inputData="+inputDataText,
			success: callback
		});
	}
	var callback = function(msg, textStatus, XMLHttpRequest){
		var msg = (typeof selector == "string") ? msg : msg.toString();//on transforme le msg en string
		openPopinMessage(gLabels.confirmation, gLabels.requestAccepted, callbaback2);
		$("#inboxList .accept").replaceWith('<span class="accept">' + gLabels.requestAccepted + '</span>');
		$("#accepted").hide();
	}
	majForumPost(gFriendsForum, idpost1, "VIP_FRIEND_POST", idpost2, "string", callback);
}
// **************************************** fin creation Paire d'amis ****************************************

// **************************************** ajouter à sa liste d'ami (friend-request) ****************************************
function sendRequest(type, user){
	var secondcallback = function(){
		$("#friend_" + user + " .infos .req").replaceWith('<a href="#" onclick="seeProfile(\''+user+'\')" class="req">'+gLabels.seeProfile+'</a>');
	}
	sendInboxMessage(type, user, secondcallback);
	return false;
}
// **************************************** fin ajouter à sa liste d'ami (friend-request) ****************************************

// **************************************** repondre a un message ****************************************
function sendAnswer(user){
	sendInboxMessage("message", user);
}
// **************************************** fin repondre a un message ****************************************