﻿var idVisiteur;
var idAbonne;
var idVDemande;
var modeProDemande;
var salleDemande;

var nbAWindows = 0;
var nbVWindows = 0;

var nbSilv = 2;
var nbSilvOpened = 0;
var NB_MAX_WIN = 3;

var tabSilvPos = new Array();
var tabDemande = new Array();
var tabClosing = new Array();

var tabAbonnes = new Array();

var fenetreDemandeVisible = false;
var fenetreClosingVisible = false;


function onSilverlightError(sender, args) {
	var appSource = "";
	if (sender != null && sender != 0) {
		appSource = sender.getHost().Source;
	}

	var errorType = args.ErrorType;
	var iErrorCode = args.ErrorCode;

	if (errorType == "ImageError" || errorType == "MediaError") {
		return;
	}

	var errMsg = "Unhandled Error in Silverlight Application " + appSource + "\n";

	errMsg += "Code: " + iErrorCode + "    \n";
	errMsg += "Category: " + errorType + "       \n";
	errMsg += "Message: " + args.ErrorMessage + "     \n";

	if (errorType == "ParserError") {
		errMsg += "File: " + args.xamlFile + "     \n";
		errMsg += "Line: " + args.lineNumber + "     \n";
		errMsg += "Position: " + args.charPosition + "     \n";
	}
	else if (errorType == "RuntimeError") {
		if (args.lineNumber != 0) {
			errMsg += "Line: " + args.lineNumber + "     \n";
			errMsg += "Position: " + args.charPosition + "     \n";
		}
		errMsg += "MethodName: " + args.methodName + "     \n";
	}

	throw new Error(errMsg);
}

function setAbonnes(idV, listAbonnes) {

	idContact = -1;
	if (setAbonnes.arguments.length > 2) {
		idContact = setAbonnes.arguments[2];
	}

	idVisiteur = idV;
	if (listAbonnes.length > 0) {
		var tabA = listAbonnes.split(';');
		var nbVWindowsToOpen = tabA.length;

		for (var i = 0; i < nbVWindowsToOpen; i++) {
			var tmpTab = tabA[i].split('$');
			addVisiteurWindow(tmpTab[0], true, tmpTab[1], idContact);
		}
	}
}

function setVisiteurs(idA, listVisiteurs, modePro) {
	idAbonne = idA;
	if (listVisiteurs.length > 0) {
		var tabV = listVisiteurs.split(';');
		var nbAWindowsToOpen = tabV.length;

		for (var i = 0; i < nbAWindowsToOpen; i++) {
			addAbonneWindow(tabV[i], true, modePro);
		}
	}
}

function getLastSilvPos() {
	var lastPos = 0;

	for (var i = 0; i < tabSilvPos.length; i++) {
		if (tabSilvPos[i] > lastPos) lastPos = tabSilvPos[i];
	}

	return lastPos;
}

function removeSilvPos(pos) {
	var i = 0;
	var trouve = false;

	while (!trouve && i < tabSilvPos.length) {

		trouve = (tabSilvPos[i] == pos);

		i++;
	}

	if (trouve) {
		tabSilvPos.splice(i - 1, 1);
	}

	return trouve;
}

function addVisiteurWindow(idA, reconnect, modePro,salleNom) {
	idContact = -1;
	if (addVisiteurWindow.arguments.length > 4) {
		idContact = addVisiteurWindow.arguments[4];
	}


	if (nbSilvOpened < NB_MAX_WIN) {
		var showWindow = true;
		if (!reconnect) {
			showWindow = !findFromArray(tabAbonnes, idA);
		}

		if (showWindow) {
			tabAbonnes.push(idA);
			var newDiv = document.createElement("div");
			newDiv.innerHTML = getHTMLChatWindow(nbSilv, "visiteur", "chat", idA, idVisiteur, reconnect, modePro, salleNom, idContact);
			document.getElementById('chatHolder').appendChild(newDiv);

			var divChat = document.getElementById('moduleChat' + (nbSilv));
			divChat.style.height = "35px";
			divChat.style.width = "346px";
			var rightPos = 20 + getLastSilvPos();
			divChat.style.right = rightPos + "px";
			tabSilvPos.push(346 + rightPos);
			nbVWindows++;
			nbSilv++;
			nbSilvOpened++;
		}
	} else {
		alert("Vous ne pouvez pas ouvrir plus de " + NB_MAX_WIN + " conversations simultanément.");
	}
}

function addAbonneWindow(idV, reconnect, modePro) {


	var newDiv = document.createElement("div");
	newDiv.innerHTML = getHTMLChatWindow(nbSilv, "abonne", "chat", idAbonne, idV, reconnect, modePro, -1);
	document.getElementById('chatHolder').appendChild(newDiv);

	var divChat = document.getElementById('moduleChat' + (nbSilv));
	divChat.style.height = "35px";
	var rightPos = 20 + getLastSilvPos();
	divChat.style.right = rightPos + "px";
	tabSilvPos.push(227 + rightPos);
	nbAWindows++;
	nbSilv++;
	nbSilvOpened++;
}

function showDemandeChatWindow(idV, modePro, salle) {
	var trouve = findFromArray(tabDemande, idAbonne + ";" + idV + ";" + modePro + ";" + salle);

	if (!trouve) {
		tabDemande.push(idAbonne + ";" + idV + ";" + modePro + ";" + salle);

		if (!fenetreDemandeVisible) {
			fenetreDemandeVisible = true;

			idVDemande = idV;
			modeProDemande = modePro;
			salleDemande = salle;

			var windowName = "fenetreAbonne";
			var titleZoneName = "fnAbonneTitle";
			var txtZoneName = "fnAbonneText";
			var modeName = "privée";

			if (modePro.toLocaleLowerCase() == "true") {
				windowName += "Pro";
				titleZoneName += "Pro";
				txtZoneName += "Pro";
				modeName = "professionnelle";
			}

			var divFenetre = document.getElementById(windowName);
			var divTitle = document.getElementById(titleZoneName);
			var divText = document.getElementById(txtZoneName);

			var nomSalle = salleDemande;

			if (nomSalle.length > 26) nomSalle = nomSalle.substr(0, 25) + "...";

			divTitle.innerHTML = nomSalle;
			divText.innerHTML = "Un visiteur souhaite prendre contact avec vous<br />depuis votre fiche de présentation " + modeName + "<br />1001 salles. Acceptez-vous cet entretien ? ";
			var leftWindow = (document.body.clientWidth / 2) - (divFenetre.offsetWidth / 2);
			divFenetre.style.left = leftWindow + "px";
		}

	}
}

function findFromArray(tab, value) {
	var trouve = false;
	var i = 0;
	while (!trouve && i < tab.length) {
		trouve = (tab[i] == value);
		i++;
	}

	return trouve;
}

function removeFromArray(tab, value) {
	var trouve = false;
	var i = 0;
	while (!trouve && i < tab.length) {
		trouve = (tab[i] == value);
		i++;
	}

	if (trouve) tab.splice(i - 1, 1);
}

function refuConverse(modePro) {
	var windowName = modePro ? "fenetreAbonnePro" : "fenetreAbonne";
	var divFenetre = document.getElementById(windowName);
	divFenetre.style.left = "-400px";

	var silvObj = document.getElementById("moduleChat1").getElementsByTagName("object")[0];
	silvObj.Content.ManagedCode.sendRefu(idVDemande);

	fenetreDemandeVisible = false;
	removeFromArray(tabDemande, idAbonne + ";" + idVDemande + ";" + modeProDemande + ";" + salleDemande);

	//Voir pour tempo avant réaffichage
	if (tabDemande.length > 0) {
		var tmpTab = tabDemande[0].split(';');
		var idV = tmpTab[1];
		var modePro = tmpTab[2];
		var salle = tmpTab[3];
		tabDemande.splice(0, 1);
		showDemandeChatWindow(idV, modePro, salle);
	}
}

function accepteConverse(modePro) {
	if (nbSilvOpened < NB_MAX_WIN) {

		var windowName = modePro ? "fenetreAbonnePro" : "fenetreAbonne";
		var divFenetre = document.getElementById(windowName);
		divFenetre.style.left = "-400px";

		addAbonneWindow(idVDemande, false, modeProDemande);

		fenetreDemandeVisible = false;
		removeFromArray(tabDemande, idAbonne + ";" + idVDemande + ";" + modeProDemande + ";" + salleDemande);

		//Voir pour tempo avant réaffichage
		if (tabDemande.length > 0) {
			var tmpTab = tabDemande[0].split(';');
			var idV = tmpTab[1];
			var modePro = tmpTab[2];
			var salle = tmpTab[3];
			tabDemande.splice(0, 1);
			showDemandeChatWindow(idV, modePro, salle);
		}

	} else {
		refuConverse(modePro);
		alert("Vous ne pouvez pas ouvrir plus de " + (NB_MAX_WIN) + " conversations simultanément.\nPour un nombre illimité de conversation, utilisez le plugin chat pour Windows téléchargeable depuis votre espace abonné 1001 salles.");
	}
}

function showClosingConfirmationWindow(divName, isAbonne, idUser, modePro) {
	var trouve = findFromArray(tabClosing, divName + ";" + isAbonne + ";" + idUser + ";" + modePro);

	if (!trouve) {
		tabClosing.push(divName + ";" + isAbonne + ";" + idUser + ";" + modePro);

		if (!fenetreClosingVisible) {
			fenetreClosingVisible = true;

			var windowName = "fenetreAvertissement";
			var txtZoneName = "fnAvertissementText";
			var linkAClosingName = "lnkAClosing";
			var linkRClosingName = "lnkRClosing";

			if (modePro) {
				windowName += "Pro";
				txtZoneName += "Pro";
				linkAClosingName += "Pro";
				linkRClosingName += "Pro";
			}

			var divFenetre = document.getElementById(windowName);
			var divText = document.getElementById(txtZoneName);
			divText.innerHTML = "Cette action met fin à votre entretien, êtes vous certain de vouloir terminer cette conversation ?";
			document.getElementById(linkAClosingName).setAttribute("href", "javascript:accepteClosing('" + divName + "', " + isAbonne + ", '" + idUser + "', " + modePro + ")");
			document.getElementById(linkRClosingName).setAttribute("href", "javascript:refuClosing('" + divName + "', " + isAbonne + ", '" + idUser + "', " + modePro + ")");
			var leftWindow = (document.body.clientWidth / 2) - (divFenetre.offsetWidth / 2);
			divFenetre.style.left = leftWindow + "px";
		}
	}
}

function accepteClosing(divName, isAbonne, idUser, modePro) {

	var windowName = modePro ? "fenetreAvertissementPro" : "fenetreAvertissement";

	var divFenetre = document.getElementById(windowName);
	divFenetre.style.left = "-400px";

	var silvObj = document.getElementById(divName).getElementsByTagName("object")[0];
	silvObj.Content.ManagedCode.acceptClosing();

	fenetreClosingVisible = false;
	removeFromArray(tabClosing, divName + ";" + isAbonne + ";" + idUser + ";" + modePro);

	//Voir pour tempo avant réaffichage
	if (tabClosing.length > 0) {
		divName = tabClosing[0].split(';')[0];
		isAbonne = tabClosing[0].split(';')[1];
		idUser = tabClosing[0].split(';')[2];
		modePro = tabClosing[0].split(';')[3];
		tabClosing.splice(0, 1);
		showClosingConfirmationWindow(divName, isAbonne, idUser, modePro);
	}
}

function refuClosing(divName, isAbonne, idUser, modePro) {

	var windowName = modePro ? "fenetreAvertissementPro" : "fenetreAvertissement";

	var divFenetre = document.getElementById(windowName);
	divFenetre.style.left = "-400px";

	fenetreClosingVisible = false;
	removeFromArray(tabClosing, divName + ";" + isAbonne + ";" + idUser + ";" + modePro);

	//Voir pour tempo avant réaffichage
	if (tabClosing.length > 0) {
		divName = tabClosing[0].split(';')[0];
		isAbonne = tabClosing[0].split(';')[1];
		idUser = tabClosing[0].split(';')[2];
		modePro = tabClosing[0].split(';')[3];
		tabClosing.splice(0, 1);
		showClosingConfirmationWindow(divName, isAbonne, idUser, modePro);
	}
}

function startApp(divName) {

	var silvObj = document.getElementById(divName).getElementsByTagName("object")[0];
	silvObj.Content.ManagedCode.startApplication();
}


function closeChat(divName, isAbonne, idUser) {
	var divChat = document.getElementById(divName);
	divChat.parentNode.innerHTML = '';

	if (isAbonne) {
		nbAWindows--;
	} else {
		nbVWindows--;
		removeFromArray(tabAbonnes, idUser);
	}

	var rightPos = parseInt(divChat.style.right.split('px')[0]);

	if (!removeSilvPos(227 + rightPos)) {
		removeSilvPos(346 + rightPos);
	}

	nbSilvOpened--;
}

function showFenetreInformation(idSession, modePro) {
	idContact = -1;
	if (showFenetreInformation.arguments.length > 2) {
		idContact = showFenetreInformation.arguments[2];
	}

	var silvObj = document.getElementById('objSlvInfo');
	var divFenetreInfos = document.getElementById('fenetreInformations');
	if (silvObj == null) 
	{

		var htmlString = '<object id="objSlvInfo" data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">' +
						 '  <param name="source" value="/silverchat/ClientBin/1001SallesChatInfos.xap"/>' +
						 '  <param name="onError" value="onSilverlightError" />' +
						 '  <param name="background" value="Transparent" />' +
						 '  <param name="windowless" value="true" />' +
						 '  <param name="minRuntimeVersion" value="4.0.50401.0" />' +
						 '  <param name="autoUpgrade" value="true" />' +
						 '  <param name="enableHtmlAccess" value="true" />' +
						 '  <param name="initParams" value="idContact=' + idContact + ',idSession=' + idSession + ', modePro=' + modePro + '" />' +
						 '  <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50401.0" style="text-decoration:none">' +
						 '      <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/>' +
						 '  </a>' +
						 '</object>';

		divFenetreInfos.innerHTML = htmlString;

	}
	else 
	{
		silvObj.Content.ManagedCode.setSession(idSession, modePro.toLocaleLowerCase() == "true");
		silvObj.Content.ManagedCode.setIDContact(idContact);
	}

	var leftWindow = (document.body.clientWidth / 2) - (divFenetreInfos.offsetWidth / 2);
	divFenetreInfos.style.left = leftWindow + "px";
}

function closeFenetreInformation() {
	var divFenetreInfos = document.getElementById('fenetreInformations');
	
	divFenetreInfos.style.left = "-504px";
 }

function infoEnvoyee(idS, idC) {
	closeFenetreInformation();

	var silvObj = document.getElementById("moduleChat0").getElementsByTagName("object")[0];
	silvObj.Content.ManagedCode.setInfosEnvoyees(idS, idC);
}

function test() {
	var divFenetre = document.getElementById("fenetreAbonne");
	divFenetre.innerHTML = "Un visiteur souhaite prendre contact avec vous depuis votre fiche de présentation privée 1001salles, Acceptez-vous cet entretien ? ";
	var leftWindow = (document.body.clientWidth / 2) - (divFenetre.offsetWidth / 2);
	divFenetre.style.left = leftWindow + "px";
}


function getHTMLChatWindow(numWindow, chatMode, load, idA, idV, reconnect, modePro, salleNom) {
	idContact = -1;
	if (getHTMLChatWindow.arguments.length > 8) {
		idContact = getHTMLChatWindow.arguments[8];
	}
	var htmlString = '<div id="moduleChat' + numWindow + '" class="divChat">' +
					 '  <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%" id="SilverlightControl' + numWindow + '">' +
					 '      <param name="source" value="/silverchat/ClientBin/1001SallesChat.xap"/>' +
					 '      <param name="onError" value="onSilverlightError" />' +
					 '      <param name="background" value="Transparent" />' +
					 '      <param name="windowless" value="true" />' +
					 '      <param name="minRuntimeVersion" value="4.0.50401.0" />' +
					 '      <param name="autoUpgrade" value="true" />' +
					 '      <param name="enableHtmlAccess" value="true" />' +
					 '      <param name="initParams" value="idContact=' + idContact + ', chatMode=' + chatMode + ',load=' + load + ',idAbonne=' + idA + ',idVisiteur=' + idV + ',divName=moduleChat' + numWindow + ',reconnect=' + reconnect + ', localMode=false, modePro=' + modePro + ', sallenom=' + salleNom + '" />' +
					 '      <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50401.0" style="text-decoration:none">' +
					 '          <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/>' +
					 '      </a>' +
					 '  </object>' +
					 '</div>';

	return htmlString;
}



//***** Partie Gestion de la popup contact ******
//***********************************************

var IE = document.all ? true : false

document.onmousemove = getMouseXY;

var mouseX;
var mouseY

var tempX = 0
var tempY = 0

function openContactWindow() {


	var divPopupContact = document.getElementById("popupChatContact");

	divPopupContact.onmouseout = contactMouseOut;

	var leftWindow = mouseX + 20;

	divPopupContact.style.left = leftWindow + "px";

	if (!Silverlight.isInstalled('4.0')) divPopupContact.innerHTML = '<a style="text-decoration: none;" href="http://go.microsoft.com/fwlink/?LinkID=149156&amp;v=4.0.50401.0"><img style="border-style: none;" alt="Obtenir Microsoft Silverlight" src="/silverchat/htmlWindowsElts/images/slNotInstalled.png"></a>';

	/*} else {
	alert("Vous devez avoir le plugin Silverlight installé sur votre navigateur.");
	}*/
}

function contactMouseOut(e) {
	if (!e) var e = window.event;

	var divPopupContact = document.getElementById("popupChatContact");

	var relTarg = e.relatedTarget || e.toElement;

	//alert('event: ' + e.relatedTarget == divPopupContact + " id: " + e.relatedTarget.id);
	if (relTarg != null && relTarg.getAttribute('name') != "chatPopup") {

		closeContactWindow();
	}
}

function closeContactWindow() {
	var divPopupContact = document.getElementById("popupChatContact");

	divPopupContact.onmouseout = null;

	var leftWindow = -500;

	divPopupContact.style.left = leftWindow + "px";
}

function getMouseXY(e) {

	if (IE) {
		tempX = event.clientX + document.documentElement.scrollLeft;
		tempY = event.clientY + document.documentElement.scrollTop;
	} else {
		tempX = e.pageX;
		tempY = e.pageY;
	}

	// catch possible negative values in NS4
	if (tempX < 0) { tempX = 0 }
	if (tempY < 0) { tempY = 0 }
	// show the position values in the form named Show
	// in the text fields named MouseX and MouseY
	mouseX = tempX;
	mouseY = tempY;
}
