/*****
 *** FONCTIONS POUR LANCER LES FENETRES DE DIALOGUES
 *****/

function openVideochatWindow_da(url)
{
	
	
	var largeur	= 920,
	hauteur		= 480,
 	name		= 'videochat_communautaire';
	
	openWindow_da(url, name, largeur, hauteur, true);
}

function openChat(login,password,prenom)
{
	
	
	var largeur	= 920,
	hauteur		= 480,
 	name		= 'lechat';
	
	url='/login_chat.php?login='+login+'&password='+password+'&prenom='+prenom;
	openWindow_da(url, name, largeur, hauteur, true);
}


function openCommunicatorWindow_da(friendName, validation, uid, langId)
{
    if(!friendName) friendName = '';
    if(!uid) uid = current_userName();
    if(!langId) langId = "fr";
    if(!validation) validation = false;
    
	var name	= "communicator_" + uid + "_" + friendName,
    url			= makeUrl("communicator") + "?uid=" + uid + "&friendName=" + friendName + "&langId=" + langId;
	
	openWindow_demande_da(projectRoot + url, validation, name, 540, 400, true, 'Chat vid&eacute;o', friendName + " souhaite ouvrir un dialogue vid&eacute;o.");
}

function openMessengerWindow_da(friendName, validation, uid, langId)
{
    if(!friendName) friendName = "";
    if(!uid) uid = current_userName();
    if(!langId) langId = "fr";
    if(!validation) validation = false;
    
	var name	= "messenger_" + uid + "_" + friendName,
    url			= makeUrl("messenger") + "?uid=" + uid + "&friendName=" + friendName + "&langId=" + langId;
    
	openWindow_demande_da(projectRoot + url, validation, name, 540, 400, true, 'Chat', friendName + " souhaite ouvrir une fen&ecirc;tre de dialogue.");
}

function openSiteMailWindow_da(receiverId, uid)
{
    if (receiverId)
    	receiverId = '?dest=' + receiverId;
    else
    	receiverId = '';
    if(!uid) uid = current_userName();
    
	var name	= "site_mail_" + uid,
    //var url = makeUrl("site_mail") + "?uid=" + uid + "&receiverId=" + receiverId;
    //openWindow_da(projectRoot + url, name, 660, 404, true);
    url			= "/cgi/flashcoms/webmail.cgi" + receiverId;
	
	openWindow_da(url, name, 900, 680, true);
}



function inscriptionChatThematique(idChat)
{	
	var largeur	= 720,
	hauteur		= 480,
 	name		= 'inscription_chat_thematique',	// nom de la popup
	url			= '/cgi/flashcoms/inscription_chat_thematique.cgi?id=' + idChat;
	
	openWindow_da(url, name, largeur, hauteur, true);
}



/*****
 *** POPUPS
 *****/
 
 
function consult_non_dispo() {
	javascript:alert('Votre consultante n\'est pas disponible pour l\'instant, merci de la contacter ult&eacute;rieurement.');
}



 /*****
 *** GESTION DES ANTI-POPUPS
 *****/

// Liste des messages popups a afficher - dans le cas ou on a plusieurs en meme temps 
var liste_popups = new Array();

function validation_ok(url, name, styleStr) {
	jQuery('#msg_validation_popup').jqmHide();
	window.open(url, name, styleStr);
	liste_popups.shift();
	if ( liste_popups.length > 0) demande_de_validation(liste_popups[0]);
}

function validation_no() {
	jQuery('#msg_validation_popup').jqmHide();
	liste_popups.shift();
	if ( liste_popups.length > 0) demande_de_validation(liste_popups[0]);
}

function demande_de_validation(popup) {
	
	overShow('msg_validation_popup', popup[1], popup[0], '', true, false);
	jQuery('#bt-oui').focus();
}


function demander_validation(titre_popup, message_popup, url, name, styleStr) {

	if ( jQuery.cookie('flashcoms_do_not_disturb') ) {	return; }
	var msg, i,
	msg_existant	= false,
	popup			= new Array();

	for (i=0; i<liste_popups.length; i++)
		if ( message_popup === liste_popups[i][0] )
			msg_existant = true;
	
	msg		 = '<div style="text-align:center; width=100%;">';
	msg 	+= '<span><img align="left" style="vertical-align: middle;" src="/flashcoms/diet-avenue/images/discussion.gif"></span>';
	msg 	+= '<span style="margin-left: 20px; font:bold 12px Arial; text-align: center;">' + message_popup + '<div style="padding:10px 0px 10px 0px">L\'acceptez-vous ?</div><div style="width:100%">';
	msg 	+= '<input type="image" id="bt-oui" src="/flashcoms/diet-avenue/images/bt-oui.gif" value="Accepter" onClick="javascript:validation_ok(\'' + url + '\', \'' + name + '\', \'' + styleStr + '\');">';
	msg 	+= '<input type="image" id="bt-non" src="/flashcoms/diet-avenue/images/bt-non.gif" value="Refuser" onClick="javascript:validation_no();" style="margin-left: 50px">';
	msg 	+= '<div style="font:bold 10px Arial; text-align:right;"> Ne plus me d&eacute;ranger<input type="checkbox" onClick="jQuery.cookie(\'flashcoms_do_not_disturb\', 1);validation_no();" /></div>';
	msg 	+= '</div></span>';
	msg 	+= '</div>';
	
	popup[0] = titre_popup;
	popup[1] = msg;

	if ( !msg_existant )
		liste_popups.push(popup);

	demande_de_validation(liste_popups[0]);
}


function openWindow_demande_da(url, validation, name, width, height, isResizeAble, titre_popup, message_popup)
{
    //var test_anti_popup = openWindow(url, name, width, height, isResizeAble);
    //if ( !test_anti_popup )
    if ( !titre_popup ) titre_popup = 'Confirmation';
    if ( !message_popup ) message_popup = 'Une fen&ecirc;tre a &eacute;t&eacute; bloqu&eacute;e par un syst&egrave;me anti-popup.';
    name = name.replace(/[^\w\d]/g, "_");
    name = name.replace(/undefined/, "_");
    
	var left	= Math.round((screen.width - width) / 2),
    top			= Math.round((screen.height - height) / 2),
    styleStr	= makeStyle(left, top, width, height, isResizeAble);
	
	if (validation)
		demander_validation(titre_popup, message_popup, url, name, styleStr);
	else
		window.open(url, name, styleStr);
}

function openWindow_da(url, name, width, height, isResizeAble)
{
    name = name.replace(/[^\w\d]/g, "_");
    name = name.replace(/undefined/, "_");
    
	var left	= Math.round((screen.width - width) / 2),
    top			= Math.round((screen.height - height) / 2),
    styleStr	= makeStyle(left, top, width, height, isResizeAble);
    
	return window.open(url, name, styleStr);
}








/*****
 *** UPDATER EN AJAX
 *** (mise a jour de l'état, réception des nouveaux messages, etc.)
 *** Utilisation : 
 ***	var flashcoms_updater = new flashcoms_updater_object("nom_d_utilisateur");
 ***	flashcoms_updater.launch();
 *** Autres appels possibles :
 ***	flashcoms_updater.stop();
 ***	flashcoms_updater.set_update_interval(NB_SECONDES);
 ***	flashcoms_updater.userName = "nveau_nom_d_utilisateur_sans_accent";
 ***	var liste = flashcoms_updater.get_userlist();
 ***	flashcoms_updater.set_affichage_userlist(fonction_d_affichage);
 *****/
function flashcoms_updater_object(name, ask_validation) {

	if (ask_validation !== false) ask_validation = true;
	this.userName	= name;
	var userName	= name,
	update_interval	= 10, // secondes
	update_file		= "/flashcoms/updater/server/php/updater.php",
	user_list		= new Array(),
	timer			= false; // le set_interval

	this.launch = launch;
	this.stop = stop;
	this.request_get_user_list= request_get_user_list;
	this.set_update_interval = set_update_interval;
	
	/**
	 * Fonction qui renvoie la liste des utilisateurs
	 */
	this.get_userlist = function() {
		return user_list;
	}
	
	/**
	 * Change la fonction qui affiche la liste des utilisateurs
	 */
	this.set_affichage_userlist = function(new_function) {
		affichage_userlist = new_function;
	}



	/**
	 * Lance l'updater
	 */
	function launch() {
		updater();
		timer = setInterval(updater, update_interval*1000);
	}
	
	/**
	 * Arrête l'updater
	 */
	function stop() {
		clearInterval(timer);
	}

	/**
	 * Change l'intervalle de mise à jour
	 */
	function set_update_interval(new_value) {
		update_interval = new_value;
		// si le timer est déjà lancé, on le relance avec la nvelle valeur
		if (timer) {
			stop();
			launch();
		}
	}


	/**
	 * Objet contenant un utilisateur flashcoms
	 */
	function flashcoms_user(name, gender) {
	    this.name = name;
	    this.gender = gender;
	}


	/**
	 * Envoi de la requete AJAX 'url'
	 * Dès qu'on a un résultat, on l'envoie à la fonction 'exec_fonction'
	 */
	function flashcoms_request(url, params, exec_fonction) {
	
		// hasard est ajouté pour eviter les probleme de cache avec ie
		var hasard = Math.round(Math.random()*100000000);
		params.rand = hasard;
		jQuery.ajax({
			type: "GET",
			url: url,
			dataType: "xml",
			data: params,
			complete: 	function(result, success) {
							if (exec_fonction && result) {
								exec_fonction(result.responseXML);
							}
						}
		});
	}



	function updater_user_list(xml_result) {
		user_list = new Array();
		jQuery('user', xml_result).each(function () {
			user_list.push(new flashcoms_user(jQuery(this).find('name').text(), jQuery(this).find('gender').text()));
				// getElementsByTagName("name")[0].firstChild.data,
				// $(this).getElementsByTagName("gender")[0].firstChild.nodeValue);
		});
		affichage_userlist();
	}

	function updater_messenger(xml_result) {
		jQuery('message', xml_result).each(function () {
			openMessengerWindow_da(jQuery(this).attr('from'), ask_validation, userName);
		});
	}

	function updater_communicator(xml_result) {
		jQuery('communicator_message', xml_result).each(function () {
			openCommunicatorWindow_da(jQuery(this).attr('from'), ask_validation, userName);
		});
	}
	
	function request_connect() {
		flashcoms_request(update_file, {action: 'connect', user: userName});
	}
	function request_get_user_list() {
		flashcoms_request(update_file, {action: 'get_users_list'}, updater_user_list);
	}
	function request_check_messenger() {
		flashcoms_request(update_file, {action: 'check_messenger', user: userName}, updater_messenger);
	}
	function request_check_communicator() {
		flashcoms_request(update_file, {action: 'check_communicator', user: userName}, updater_communicator);
	}
	/**
	 * Updater à appeler régulièrement
	 * Il lance 4 requêtes ajax (définies précédemment)
	 */
	function updater() {
		if ( userName != '' ) {
			request_connect();
			//request_get_user_list();
			request_check_messenger();
			request_check_communicator();
		}
	}


	function affichage_userlist() {
		
		var name, i, 
		div_userlist	= document.getElementById("flashcoms_userlist"),
		aff				= "<ul style='padding-left:20px; list-style-type : none; '>";
		
		if (!div_userlist) {
			return;
		}
		
		for(i=0;i<user_list.length;i++) {
			name = user_list[i].name;
			if ( user_list[i].name === userName ) {
				aff += "<li> - <b>" + name + "</b></li>";
			} else {
				aff += "<li><div style='float: left; width: 200px;'> - " + name + "</div>";
				aff += "<a href=\"#\" onClick=\"openMessengerWindow_da('" + name + "')\">Messenger</a>&nbsp;&nbsp;&nbsp;";
				aff += "<a href=\"#\" onClick=\"openCommunicatorWindow_da('" + name + "')\">Communicator</a>&nbsp;&nbsp;&nbsp;";
				aff += "<a href=\"#\" onClick=\"openSiteMailWindow_da('" + name + "')\">SiteMail</a>";
				aff += "</li>";
			}
		}
		aff += "</ul>";
		
		div_userlist.innerHTML = aff;
	}
}


function flashcoms_updater_videochat(salon, flashcoms_updater) {
	setInterval(updater_videochat, 30000);
	updater_videochat();
	function updater_videochat() {
		jQuery.get("/cgi/flashcoms/chat_updater.cgi", { user: current_userName(), salon: salon });
	}
}


function current_userName() {
	if (typeof(flashcoms_updater) != 'undefined') {
		return flashcoms_updater.userName;
	}
	else if (typeof(window.parent.flashcoms_updater) != 'undefined') {
		return window.parent.flashcoms_updater.userName;
	}
	return false;
}


jQuery.cookie = function(name, value, options) {
    if (typeof value != 'undefined') { // name and value given, set cookie
        options = options || {};
        if (value === null) {
            value = '';
            options.expires = -1;
        }
		
        var cookies, cookie, i, date, expires = '',
		// CAUTION: Needed to parenthesize options.path and options.domain
        // in the following expressions, otherwise they evaluate to undefined
        // in the packed version for some reason...
        path	= options.path		? '; path=' + (options.path) : '',
        domain	= options.domain	? '; domain=' + (options.domain) : '',
        secure	= options.secure	? '; secure' : '',
		cookieValue = null;
        
		if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
            if (typeof options.expires == 'number') {
                date = new Date();
                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
            } else {
                date = options.expires;
            }
            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
        }
        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
    } else { // only name given, get cookie
        if (document.cookie && document.cookie != '') {
            cookies = document.cookie.split(';');
            for (i = 0; i < cookies.length; i++) {
                cookie = jQuery.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) == (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }
};


