/*
	Livechat Difuzer
	
	26 décembre 2008
	Alexandre Lepage
	a.lepage@difuzer.com
*/

client_id = '';
op_id = '';
op_name = '';
   function Remplacer(expr,a,b) {
		var i = 0;
		while (i!=-1) 
		{
			i=expr.indexOf(a,i);
			if (i >= 0) 
			{
            expr=expr.substring(0,i)+b+expr.substring(i+a.length);
            i+=b.length;
			}
		}
    return expr;
   }
function get_Xhr() {
   try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
   try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
   try { return new XMLHttpRequest(); } catch(e) {}
   alert("AJAX n'est pas supporté par votre navigateur");
   return null;
}
function focuson(field) {
	field.focus();
	return true;
}
function sendmsg() {	

	inputmsg = document.forms['formmsg'].elements['inputmsg'];
	msg = inputmsg.value;
	
	msg = Remplacer(msg, '<', '&lt;');
	msg = Remplacer(msg, '<', '&gt;');
	document.getElementById('chatwindow').innerHTML += '<br /><span style="color: blue;"><strong>Vous : </strong>'+msg+'</span>';
	msg = Remplacer(msg, '&', '__LIVECHATDIFUZER_SPECIALCHAR_AND');
	sendr('QUERY=TOOPERATOR;CLIENTID='+client_id+';OPERATORID='+op_id+';MESSAGE='+msg);

	document.getElementById('chatwindow').scrollTop = 50000;
	inputmsg.value = '';
	focuson(inputmsg);
	return false;
}

function openchat() {
	str = "<h3>Support en direct Difuzer</h3>";
	str += "<div id=\"chatwindow\"><em>Votre session a été ouverte... l'opérateur s'adressera à vous d'ici quelques secondes.</em></div>";
	str += "<form action=\"#\" method=\"post\" id=\"formmsg\" onsubmit=\"return sendmsg();\"><div id=\"sendmsg\"><input type=\"text\" name=\"msg\" id=\"inputmsg\" />&nbsp;<input style=\"width: 50px;\" type=\"submit\" value=\"OK\" id=\"submiti\" /></div></form>";
	document.getElementById('livechat').innerHTML = str;
	return true;
}
function form_contact() {
	str = "<h3>Aucun opérateur n'est disponible</h3>";
	str += "<p>Nous sommes sincèrement désolé, aucun opérateur n'est disponible pour vous répondre présentement. Vous pouvez retenter plus tard, ou nous laisser un message à l'aide du formulaire ci-dessous.</p>";
	str += "<fieldset>";
	str += "<form action=\"/difuzer/fr/contact.html\" method=\"post\">";
	str += "<p>";
	str += "<label for=\"email\" class=\"flabel\">Email : </label>";
	str += "<input type=\"text\" name=\"email\" id=\"email\" /><br />";
	str += "<label for=\"msg1\" class=\"flabel\">Message : </label>";
	str += "<textarea name=\"msg\" id=\"msg1\" style=\"width: 300px; height: 150px;\"></textarea>";
	str += "</p>";
	str += "<p class=\"submit\">";
	str += "<input type=\"submit\" value=\"Envoyer\" />";
	str += "</p>";
	str += "</form>";
	str += "</fieldset>";
	document.getElementById('livechat').innerHTML = str;
	
	return true;
}

req = null;
i = 0;
function callback() {
	if (req.readyState == 4) {
		if(req.status == 200) {

			res = req.responseText.split(";");
			fres = new Array();
			for (j = 0; j < res.length; ++j) {
				tres = res[j].split("=");
				fres[j] = tres[1];
			}
			doit = true;
			switch (fres[0]) {
				case 'ASSIGNOPERATOR':
					//login okidoo
					op_id = fres[1];
					if (op_id == 'FAILED')
						form_contact();
					else {
						client_id = fres[2];
						op_name = fres[3];
						openchat();
					}
				break;
				case 'MESSAGE':
					fres[1] = Remplacer(fres[1], '__LIVECHATDIFUZER_SPECIALCHAR_SEMICOLON', ';');
					fres[1] = Remplacer(fres[1], '__LIVECHATDIFUZER_SPECIALCHAR_EQUALS', '=');
					fres[1] = Remplacer(fres[1], '__LIVECHATDIFUZER_SPECIALCHAR_AND', '&');
					newSpan = document.createElement('span');
					newSpan.setAttribute('style', 'color: red;');
					newStrong = document.createElement('strong');
					newStrong.appendChild(document.createTextNode(op_name + ' : '));
					newSpan2 = document.createElement('span');
					newSpan2.appendChild(document.createTextNode(fres[1]));
					newSpan.appendChild(newStrong);
					newSpan.appendChild(newSpan2);
				
					document.getElementById('chatwindow').appendChild(document.createElement('br'));
					document.getElementById('chatwindow').appendChild(newSpan);
					document.getElementById('chatwindow').scrollTop = 50000;
				break;
				case 'TRANSFER':
					op_id = fres[1];
					op_name = fres[2];
					document.getElementById('chatwindow').innerHTML += "<br /><em>Vous avez été transféré à "+op_name+".</em>";
					document.getElementById('chatwindow').scrollTop = 50000;
				break;
				case 'FAILED':
					document.getElementById('chatwindow').innerHTML += "<br /><em>La connexion a été perdue.</em>";
					document.getElementById('chatwindow').scrollTop = 50000;
					document.getElementById('inputmsg').disabled = 'disabled';
					document.getElementById('submiti').disabled = 'disabled';
					client_id = '';
				break;
				case 'INFOSMBR':
					doit = false;
					sendr("QUERY=INFOSMBR;CLIENTID="+client_id+";OPERATORID="+op_id);
					document.getElementById('chatwindow').innerHTML += "<br /><em>L'opérateur a récupéré les informations sur votre compte afin de vous identifier.</em>";
				break;
				case 'CLOSE':
					document.forms['formmsg'].elements['inputmsg'].disabled = 'disabled';
					document.forms['formmsg'].elements['submiti'].disabled = 'disabled';
					document.getElementById('chatwindow').innerHTML += "<br /><em>Session terminée. L'opérateur a mis fin à cette conversation.</em>";
					
				break;
			}
			if (client_id != '' && doit) 
				sendr("QUERY=CHANGESOCKET;CLIENTID="+client_id);
			else if (client_id == '')
				form_contact();
		}
	}
	return true;
}
function sendr(rstr) { 
	if (req != null)
		req.abort();
	req = get_Xhr();
	req.open('POST', '/livechat.php', true);
	req.onreadystatechange = callback;
	par = "req="+rstr;
	req.setRequestHeader("Content-type", "application/x-www-form-urlencoded;");// charset=ISO-8859-1");
	req.setRequestHeader("Content-length", par.length);
	req.send(par);
	
	return true;
}
