/*
 * Ajax library to communicate with gateway.php
 */
var imgOptions = { fileType:'img', background: 'FFFFDF', barColor: 'FF00FF', allowedExt: '*.jpg; *.jpeg; *.png; *.gif', allowedExtDescr: 'Images (*.jpg; *.jpeg; *.png; *.gif)' };
var docOptions = { fileType:'doc', background: 'FFFFDF', barColor: 'FF00FF', allowedExt: '*.*', allowedExtDescr: 'Fichier' };

function ajaxComplete(xhr, ok) {
	if(ok == "error") {
		var xmlstring = '<?xml version=\"1.0\"?><error><bo>error</bo><message>';
		xmlstring += 'Il y a un problème de requette AJAX... Merci de recommencer.';
		xmlstring += '</message><action></action><sessionId></sessionId><token></token></error>';
		manageServerResponse(xmlstring);
	}
}

function loadPub(elementSelector, sourceUrl) {
	$(""+elementSelector+"").load(""+sourceURL+"");
}

function manageServerResponse(xml, statusText) {
	var className = 'serverAnswerActive';
	var message = '';
	// Access XML to check object status and inform based on it...
	// <answer>
	//	<vo>
	//		<id>1</id>
	//		<description>
	//		...
	$('vo', xml).each(function(i) {
		var action = $(this).find("action").text();
		// Checking for id
		var idBrowser = (document.getElementById('idInput')).value;
		var idServer = $(this).find("id").text();
		var prixHT= $(this).find("prixHT").text();
		var prixTTC= $(this).find("prixTTC").text();
		if (idBrowser != idServer && action == 'updateItem')
		{
			message = "Attention ! L'identifiant de cet objet, retourné par le serveur (" + idServer + "), est différent du précédent (" + idBrowser + ")... Contactez l'administrateur. Erreur n=82.";
			className = 'serverAnswerError';
		} else {
			// Checking for session, riaId... tbd
			// Checking for server error
			var transactionStatus = $(this).find("transactionStatus").text();
			if (transactionStatus == '') {
				var curtime = new Date();
				var theDate = curtime.getHours() + ':' + curtime.getMinutes();
				if (action == 'createItem') {
					message += 'Enregistrement créé à ' + theDate;
					$("form[enctype='multipart/form-data']").removeClass("hidden");
				}
				else if (action == 'deleteItem') { message += 'Enregistrement effacé à ' + theDate; $("form").clearForm(); }
				else if (action == 'updateItem') { message += 'Enregistrement modifié à ' + theDate; }
				else if (action == 'login') {
					//window.location
					message += "Bienvenue " + $(this).find("loginName").text();
					setTimeout (
						function(){
							window.location = goprivate;
						},
						1500
					);
				}
				else if (action == 'loginHelp') { message = $(this).find('loginTip').text(); }
				else if (action == 'passwordHelp') { message = $(this).find('passwordHelp').text(); }
				else if (action == 'searchItem') {
					//window.location
					message += "Redirection vers la page de résultats...";
					setTimeout (
						function(){
							var actionURL = "" + window.location;
							actionURL = actionURL.replace("mode=edition", "mode=search");
							actionURL = actionURL.replace("/recherche.html", "/resultat-de-recherche-1.html");
							window.location = actionURL;
						},
						1000
					);
				}
				else if (action == 'doAction') { message += $(this).find("message").text(); className = 'serverAnswerNotice'; }
				else if (action != '') { message += 'Action [' + action + '] inconnue !'; className = 'serverAnswerCritical'; }
			} else {
				if (transactionStatus == 'criticalErrorIt')	{ message = "Erreur critique ! "; className = 'serverAnswerCritical'; }
				else if (transactionStatus == 'errorIt')	{ message = "Erreur ! "; className = 'serverAnswerError'; }
				else if (transactionStatus == 'noticeIt')	{ message = "Information. "; className = 'serverAnswerNotice'; }
				else if (transactionStatus == 'warnIt')	{ message = "Attention ! "; className = 'serverAnswerWarn'; }
				else { message += 'Status de transaction inconnu !'; className = 'serverAnswerCritical'; }

				// Checking for server message
				var messageKey = $(this).find("messageKey").text();
				if (messageKey == 'itemAlreadyExists')	{ message += "Enregistrement existant..."; }
				else if (messageKey == 'emailNotExists')	{ message += "Aucun compte présent avec cette adresse email..."; }
				else if (messageKey == 'emailAlreadyExists')	{ message += "Email déja utilisé avec un autre compte..."; }
				else if (messageKey == 'deleteItemFailure')	{ message += "Enregistrement non effacé..."; }
				else if (messageKey == 'updateItemFailure')	{ message += "Enregistrement non mis à jour..."; }
				else if (messageKey == 'itemAddedButNotModified')	{ message += "Enregistrement ajouté comme nouveau et l'ancien reste non modifié..."; }
				else if (messageKey == 'itemSyncFailure')	{ message += "Enregistrement non synchronisé..."; }
				else if (messageKey == 'itemNotRecognized')	{ message += "Enregistrement non reconnu..."; }
				else if (messageKey == 'itemNotUnique')	{ message += "Enregistrement non unique dans la base..."; }
				else if (messageKey == 'loginFailed')	{ message += "L'identification a échouée, merci de recommencer..."; }
				else {
					className = 'serverAnswerCritical';
					message += 'Clef de message inconnue ! ';
				}
			}
		}

		// Checking for values
		var unchecked = ['id', 'riaId', 'sessionId', 'token', 'timeStamp', 'action', 'bo', 'messageKey', 'transactionStatus'];
		var servAns = document.getElementById('serverAnswer');
		
		if ((action == 'createItem')&&(messageKey==undefined)) {
			document.getElementById('idInput').value=idServer;
			document.forms[0].action.value="updateItem";

		    if (document.getElementById('prixFacture')!= undefined)
		    {
			    servAnsMessage=document.getElementById('prixFacture');
				servAnsMessage.style.display = 'block';
				document.getElementById("billprixHT").value=prixHT;
				document.getElementById("billprixTTC").value=prixTTC;
			}			
		    if (document.getElementById('messageAdhesion')!= undefined)
		    {
			    servAnsMessage=document.getElementById('messageAdhesion');
				//document.bodyElement.scrollTop='0px';
				servAnsMessage.innerHTML="Vous allez recevoir par email vos identifiants afin de vous connecter dans votre espace personnel<br />";
				servAnsMessage.className="serverAnswerActive";
			}
		    if (document.downloadImg!= undefined)
		    {
				document.getElementById('messagedownload').innerHTML="Vous pouvez insérer des images ci-dessous<br />";
				document.downloadImg.className="downloadVisible";
			}
		    if (document.downloadDoc!= undefined)
			{
				if (document.getElementById('messagedownload').innerHTML==""){
					document.getElementById('messagedownload').innerHTML="Vous pouvez insérer un fichier ci-desous<br />";
				}
				document.downloadDoc.className="downloadVisible";
			}
		}else if (action== 'deleteItem')
		{
			if (document.getElementById('pageAvant')!= undefined)
			{
				if (document.getElementById('pageAvant').value!='')
				{

					setTimeout(window.location=document.getElementById('pageAvant').value,2000);
				}
				else{
					setTimeout (
						function(){
							var actionURL = "" + window.location;
							var reg=new RegExp("suppression-[0-9]+","g");

							actionURL = actionURL.replace(reg,"recherche");
							window.location = actionURL;
						},
						2000
					);

				}

			}
			else{
			setTimeout (
				function(){
					var actionURL = "" + window.location;
					var reg=new RegExp("suppression-[0-9]+","g");

					actionURL = actionURL.replace(reg,"gestion");
					window.location = actionURL;
				},
				2000
			);
			}
		}else if (action=='updateItem')
		{

		    if (document.getElementById('prixFacture')!= undefined)
		    {
			    servAnsMessage=document.getElementById('prixFacture');
				servAnsMessage.style.display = 'block';
				document.getElementById("billprixHT").value=prixHT;
				document.getElementById("billprixTTC").value=prixTTC;
			}	
		    if (document.getElementById('messageAdhesion')!= undefined)
		    {
			    servAnsMessage=document.getElementById('messageAdhesion');
				//document.bodyElement.scrollTop='0px';
				message="Vous allez recevoir par email une confirmation de demande d'inscription<br />";
				//servAnsMessage.className="serverAnswerActive";
			}
		}
		window.scrollTo(0, 0);
		servAns.innerHTML = message;
		servAns.className = className;

	});
	$('error', xml).each(function(i) {
		var error = $(this).find("message").text();
		error = error.replace('serverError#', '<span style="background-color=yellow">Arghhhhh.... </span>');
		var servAns = document.getElementById('serverAnswer');
		servAns.className = 'serverAnswerCritical';
		servAns.innerHTML = "<p>Message à l'attention de l'administrateur&nbsp;:</p><p>[" + error + "]</p>";
	});
}

function raz () {
	$("form").clearForm();
	$("#idInput").val(0);
	$("#createItem").attr({checked: "checked"});
	$("#deleteItem").attr({disabled: "disabled"});
	$("#updateItem").attr({disabled: "disabled"});
}

function remove_message () {
	alert('change');
	$("#serverAnswer").css({"display": "none"});
}

var tinyElements = {
	language: "fr",
	mode: "exact",
	elements: '',
	entity_encoding: "raw",
	plugins : "safari,spellchecker,pagebreak,style,advlink,preview,paste,visualchars,xhtmlxtras,template",
	theme:"advanced",
	paste_auto_cleanup_on_paste : true,
	theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,fontselect,fontsizeselect",
	theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,cleanup,preview,|,hr,removeformat,|,sub,sup,|,charmap",
	theme_advanced_buttons3 : "",
	theme_advanced_toolbar_location : "top",
	theme_advanced_toolbar_align : "left",
	theme_advanced_resizing : true
};

function validateForm(formData, jqForm, options) {
	var message = "Merci de sélectionner une action...";

	for (var i=0; i < formData.length; i++)
	{
		var action = formData[i].value;
		if (action == 'createItem')
		{
			formData['idInput'] = 0;
			message = "Création d'enregistrement demandée...";
			break;
		}
		else if (action == 'deleteItem') { message = "Effacement demandé..."; return true; }
		else if (action == 'updateItem') { message = "Modification demandée..."; break; }
		else if (action == 'login') { message = "Identification demandée..."; break; }
		else if (action == 'searchItem') { message = "Recherche en cours..."; break; }
		else if (action == 'doAction') { message = "Action en cours..."; break; }
	}
	if (tinyElements['elements'] != '')
	{
		var elts = tinyElements['elements'].split(/,/);
		for (var j=0; j < elts.length; j++)
		{
			var eltName = $('#'+elts[j]).attr('name');
			for (i=0; i < formData.length; i++)
			{
				if (formData[i].name == eltName)
				{
					formData[i].value = tinyMCE.get(elts[j]).getContent();
					break;
				}
			}
		}
	}
	var servAns = document.getElementById('serverAnswer');
	// When searching, no validation is needed
	if (action != 'searchItem' && !jqForm.valid()) {	/*$("form")*/
		servAns.innerHTML = 'Merci de corriger les erreurs indiquées.';
		servAns.className = 'serverAnswerNotice';
		return false;
	}
	servAns.innerHTML = message;
	servAns.className = 'serverAnswerActive';
	return true;
}