function datosServidor() {
};
datosServidor.prototype.iniciar = function() {
	try {
		// Mozilla / Safari
		this._xh = new XMLHttpRequest();
	} catch (e) {
		// Explorer
		var _ieModelos = new Array(
		'MSXML2.XMLHTTP.5.0',
		'MSXML2.XMLHTTP.4.0',
		'MSXML2.XMLHTTP.3.0',
		'MSXML2.XMLHTTP',
		'Microsoft.XMLHTTP'
		);
		var success = false;
		for (var i=0;i < _ieModelos.length && !success; i++) {
			try {
				this._xh = new ActiveXObject(_ieModelos[i]);
				success = true;
			} catch (e) {
				// Implementar manejo de excepciones
			}
		}
		if ( !success ) {
			// Implementar manejo de excepciones, mientras alerta.
			return false;
		}
		return true;
	}
}
datosServidor.prototype.ocupado = function() {
	estadoActual = this._xh.readyState;
	return (estadoActual && (estadoActual < 4));
}
datosServidor.prototype.procesa = function() {
	if (this._xh.readyState == 4 && this._xh.status == 200) {
		this.procesado = true;
	}
}
datosServidor.prototype.enviar = function(urlget,datos) {
	if (!this._xh) {
		this.iniciar();
	}
	if (!this.ocupado()) {
		this._xh.open("GET",urlget,false);
		this._xh.send(datos);
		if (this._xh.readyState == 4 && this._xh.status == 200) {
			return this._xh.responseText;
		}
		
	}
	return false;
}

// retourne un objet xmlHttpRequest.
// méthode compatible entre tous les navigateurs (IE/Firefox/Opera)
function getXMLHTTP(){
    var xhr = null;
    if(window.XMLHttpRequest)
    { // Firefox et autres
        xhr = new XMLHttpRequest();
    }
    else if(window.ActiveXObject)
    { // Internet Explorer
        try
        {
            xhr = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch(e)
        {
            try
            {
                xhr = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch(e1)
            {
                xhr = null;
            }
        }
    }
    else
    { // XMLHttpRequest non supporté par le navigateur
        alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
    }

    return xhr;
}


//Fonction renvoyant le code de la touche appuyée lors d'un événement clavier
function getKeyCode(evenement){
    for (prop in evenement)
    {
        if(prop == 'which')
        {
            return evenement.which;
        }
    }

    return event.keyCode;
}


//Suppression des espaces/sauts de ligne inutiles (http://www.breakingpar.com/bkp/home.nsf/0/87256B280015193F87256C0C0062AC78)
function trim(value) {
   var temp = value;
   var obj = /^(\s*)([\W\w]*)(\b\s*$)/;
   if (obj.test(temp)) { temp = temp.replace(obj, '$2'); }
   var obj = /  /g;
   while (temp.match(obj)) { temp = temp.replace(obj, " "); }
   return temp;
}

//Fonction donnant la largeur en pixels du texte donné (merci SpaceFrog !)
function getTextWidth(texte){
	//Valeur par défaut : 150 pixels
	var largeur = 150;

	if(trim(texte) == ""){
		return largeur;
	}

	//Création d'un span caché que l'on "mesurera"
	var span = document.createElement("span");
	span.style.visibility = "hidden";
	span.style.position = "absolute";

	//Ajout du texte dans le span puis du span dans le corps de la page
	span.appendChild(document.createTextNode(texte));
	document.getElementsByTagName("body")[0].appendChild(span);

	//Largeur du texte
	largeur = span.offsetWidth;

	//Suppression du span
	document.getElementsByTagName("body")[0].removeChild(span);
	span = null;

	return largeur;
}


//Fonction renvoyant une valeur "aléatoire" pour forcer le navigateur (ie...)
//à envoyer la requête de mise à jour
function ieTrick(sep){
	d = new Date();
	trick = d.getYear() + "ie" + d.getMonth() + "t" + d.getDate() + "r" + d.getHours() + "i" + d.getMinutes() + "c" + d.getSeconds() + "k" + d.getMilliseconds();

	if (sep != "?"){
		sep = "&";
	}

	return sep + "ietrick=" + trick;
}



//On ne pourra éditer qu'une valeur à la fois
var editionEnCours = false;

//variable évitant une seconde sauvegarde lors de la suppression de l'input
var sauve = false;

//Fonction de modification inline de l'élément double-cliqué
function inlineMod(id, obj, nomValeur, type, price,idArticle,ecotax,weight,path_html){
	document.getElementById("result").innerHTML = 'Saisie en cours...';
	if(editionEnCours){
		return false;
	} else{
		editionEnCours = true;
		sauve = false;
	}

	//Objet servant à l'édition de la valeur dans la page
	var input = null;

	//On crée un composant différent selon le type de la valeur à modifier
	switch(type){
		//Valeur de type texte ou nombre
		case "texte":
		case "nombre":
			input = document.createElement("input");
			break;

		//Valeur de type texte multilignes
		case  "texte-multi":
			input = document.createElement("textarea");
			break;
	}

	//Assignation de la valeur
	if (obj.innerText)
		input.value = obj.innerText;
	else
		input.value = obj.textContent;
		
	input.value = trim(input.value);
	vInput = input.value;
	//On lui donne une taille un peu plus large que le texte à modifier
	input.style.width  = getTextWidth(input.value) + 30 + "px";
	//Remplacement du texte par notre objet input
	obj.replaceChild(input, obj.firstChild);

	//On donne le focus à l'input et on sélectionne le texte qu'il contient
	input.focus();
	input.select();

	//Assignation des deux événements qui déclencheront la sauvegarde de la valeur

	//Sortie de l'input
	input.onblur = function sortir(){
		sauverMod(id, obj, nomValeur, input.value, type, price,vInput,idArticle,ecotax,weight,path_html);
		delete input;
	};

	//Appui sur la touche Entrée
	input.onkeydown = function keyDown(event){
		if (!event&&window.event) {
			event = window.event;
		}
		if(getKeyCode(event) == 13) {
			sauverMod(id, obj, nomValeur, input.value, type, price,vInput,idArticle,ecotax,weight,path_html);
			delete input;
		}
	};
}


//Objet XMLHTTPRequest
var XHR = null;

//Fonction de sauvegarde des modifications apportées
function sauverMod(id, obj, nomValeur, valeur, type, price,vInput,idArticle,ecotax,weight,path_html){
	var div_affichage=document.getElementById("result");
	div_affichage.innerHTML = 'Le produit est en cours de modification...';
	//Si on a déjà sauvé la valeur en cours, on sort
	if(sauve){
		return false;
	} else {
		sauve = true;
	}	

	//Si l'objet existe déjà on abandonne la requête et on le supprime
	if(XHR && XHR.readyState != 0)	{
		XHR.abort();
		delete XHR;
	}

	//Création de l'objet XMLHTTPRequest
	XHR = getXMLHTTP();

	if(!XHR) {
		return false;
	}

	//URL du script de sauvegarde auquel on passe la valeur à modifier
	XHR.open("GET", "include/incPHP/modifycaddy.inc.php?id=" + id + "&idArticle=" + idArticle + "&valeur=" + escape(valeur) + "&type=" + type +"&path_html="+path_html+ ieTrick(), true);
	
	//On se sert de l'événement OnReadyStateChange pour supprimer l'input et le replacer par son contenu
	XHR.onreadystatechange = function()	{
		//Si le chargement est terminé
		if (XHR.readyState == 4) {
			resultat = XHR.responseText;
			if (resultat == 2){
				//alert("Erreur de saisie");
				div_affichage.innerHTML = 'Erreur de saisie';
				//div_affichage.innerHTML = XHR.responseText;
				obj.replaceChild(document.createTextNode(vInput), obj.firstChild);
				//Réinitialisation de la variable d'état d'édition
			}else{
				tableau=resultat.split('|###|');
				//alert('x'+tableau[2]+'x');
				if (trim(tableau[2]) == 'erreur2'){
					//alert("Désolé, les quantités disponibles pour ce produit sont insuffisantes");
					div_affichage.innerHTML = 'La quantité disponible pour ce produit est insuffisante pour satisfaire votre demande, vous avez à présent la quantité maximale dans le panier';
					//div_affichage.innerHTML = XHR.responseText;
					//obj.replaceChild(document.createTextNode(vInput), obj.firstChild);
					//Réinitialisation de la variable d'état d'édition
				}else{
					div_affichage.innerHTML = 'Le produit a bien été modifié!';
				}
					//Remplacement de l'input par le texte qu'il contient
					//obj.replaceChild(document.createTextNode(valeur), obj.firstChild);
					//total = Math.round(100*parseFloat(valeur * (price - (-ecotax))))/100;
					//document.getElementById("total"+id+"HT").innerHTML = total;
					//pds = Math.round(100*parseFloat(valeur * (weight)))/100;
					//document.getElementById("poids"+id).innerHTML = pds;
					//pds1 = document.getElementById("poids").innerHTML - (vInput * (weight)) + pds;
					//document.getElementById("poids").innerHTML =  Math.round(100*parseFloat(pds1))/100;
					//total1 = document.getElementById("totalHT").innerHTML - (vInput * (price - (-ecotax))) + total;
					//document.getElementById("totalHT").innerHTML =  Math.round(100*parseFloat(total1))/100;
					//total2 = Math.round(100*parseFloat(total1 * 1.196))/100;
					//document.getElementById("totalTTC").innerHTML = total2;
					//document.getElementById("totalTVA").innerHTML = Math.round(100*parseFloat(total2 - total1))/100;
					//div_affichage.innerHTML = 'Quantité du produit modifiée';
					//window.location.reload();
					//tableau=resultat.split('|###|');
					document.getElementById("showCaddy").innerHTML = tableau[0];
					document.getElementById("qte_tot_panier").innerHTML = tableau[1];
					if (tableau[1] > 1){
						document.getElementById("art_panier_pluriel").innerHTML = "s";
					} else {
						document.getElementById("art_panier_pluriel").innerHTML = "";
					}
			}
			editionEnCours = false;
		}
	}

	//Envoi de la requête
	
	XHR.send(null);
}
function deleteMod(id, obj,path_html){
	XHR = getXMLHTTP();
	if(!XHR) {
		return false;
	}

	//URL du script de sauvegarde auquel on passe la valeur à modifier
	//XHR.open("GET", "../include/incPHP/deletecaddy.inc.php?id=" + id + "&idArticle=" + obj + ieTrick(), true);
	document.getElementById("result").innerHTML = 'Le produit est en cours de suppression...';
	XHR.open("GET", "include/incPHP/deletecaddy.inc.php?id=" + id + "&idArticle=" + obj + "&path_html="+path_html+ ieTrick(), true);
	
	//On se sert de l'événement OnReadyStateChange pour supprimer l'input et le replacer par son contenu
	XHR.onreadystatechange = function()	{
		//Si le chargement est terminé
		if (XHR.readyState == 4) {
			resultat = XHR.responseText;
			if (resultat == 1){
				alert("Une erreur est survenue!");
			}else{
				document.getElementById("result").innerHTML = 'Le produit a bien été supprimé!';
				tableau=resultat.split('|###|');
				document.getElementById("showCaddy").innerHTML = tableau[0];
				//lignes suivantes pour mise à jour de l'affichage du panier
				document.getElementById("qte_tot_panier").innerHTML = tableau[1];
				if (tableau[1] > 1){
					document.getElementById("art_panier_pluriel").innerHTML = "s";
				} else {
					document.getElementById("art_panier_pluriel").innerHTML = "";
				}
				//màj affichage des derniers articles
				document.getElementById("aff_art_panier").innerHTML = tableau[2];
				
			}
		}
	}

	//Envoi de la requête
	XHR.send(null);
}

function caddy(nn,id,price) {
	var champ ="qte"+nn+"x";
	var qte = document.getElementsByName(champ)[0].value;
	var div_affichage=document.getElementById("result");
	if (qte == '') qte=1;
	div_affichage.innerHTML = '<span class="LittleText"><font color="#FF0000"><strong>Ajout en cours...</strong></font></span>';
	remotos = new datosServidor;
	nt = remotos.enviar("include/incPHP/send_caddy.inc.php?id=" + id + "&qte=" + qte + "&price=" + price);
	tableau=nt.split('|####|');
	if (tableau[1] != 'erreur1'){
			document.getElementById("aff_art_panier").innerHTML = tableau[1];
			document.getElementById("qte_tot_panier").innerHTML = tableau[0];
			if (tableau[0] > 1){
				document.getElementById("art_panier_pluriel").innerHTML = "s";
			} else {
				document.getElementById("art_panier_pluriel").innerHTML = "";
			}
		if (tableau[2] != 'erreur2'){
			div_affichage.innerHTML = '<span class="LittleText"><strong>Le produit a bien été ajouté</strong></span>';
		}else{
			div_affichage.innerHTML = '<span class="LittleText"><font color="#FF0000"><strong>La quantité disponible pour ce produit est insuffisante pour satisfaire votre demande, vous avez à présent la quantité maximale dans le panier</strong></font></span>';
		}
	}else{
		div_affichage.innerHTML = '<span class="LittleText"><strong>Erreur de saisie : </strong>'+tableau[2]+'</span>';	
	}
	document.getElementsByName(champ)[0].value = '';
	//document.getElementById(champ).value = '';
}

function sortTableNewPromo(id,num,typ_liste) {
	//alert (""+typ_liste);
	//alert (""+id);
	remotos = new datosServidor;
	nt = remotos.enviar("include/incPHP/sortListNewPromo.inc.php?id=" + id + "&num="+num+"&typ_liste="+typ_liste);
	tableau=nt.split('|####|');
	if (tableau[0]!=''){
		document.getElementById("tri").innerHTML = tableau[0];
	}
	if (tableau[1]!=''){
		document.getElementById("manuf").innerHTML = tableau[1];
	}
	if (tableau[2]!=''){
		document.getElementById("categ").innerHTML = tableau[2];
	}
	if (tableau[3]!=''){
		document.getElementById("type").innerHTML = tableau[3];
	}
	if (tableau[4]!=''){
		document.getElementById("spanDevis").innerHTML = tableau[4];
	}
	document.getElementById("tabContent").innerHTML = tableau[5];
}

function modifProfil(id,num,typ_liste,path_html) {
	var div_affichage=document.getElementById("result");
	div_affichage.innerHTML="<font color=\"#FF0000\"><strong>Modification du profil en cours...</strong></font>";
	remotos = new datosServidor;
	nt = remotos.enviar("include/incPHP/modifProfil.inc.php?id=" + id + "&num="+num+"&typ_liste="+typ_liste+"&path_html="+path_html + ieTrick());
	tableau=nt.split('|####|');
	if (tableau[0]!=''){
		document.getElementById("result").innerHTML = tableau[0];
	}
}


function delHistoric(id, obj,path_html){
	var div_affichage=document.getElementById("result");
	div_affichage.innerHTML="<font color=\"#FF0000\"><strong>Suppression de la commande "+ obj+" dans l'historique en cours...</strong></font>";
	XHR = getXMLHTTP();
	if(!XHR){
		return false;
	}
	//URL du script de sauvegarde auquel on passe la valeur à modifier
	XHR.open("GET", "include/incPHP/delHistoric.inc.php?id=" + id + "&valeur=" + obj+"&path_html="+path_html + ieTrick(), true);
	XHR.onreadystatechange = function()	{
		//div_affichage.innerHTML="Suppression en cours...";
		//Si le chargement est terminé
		if (XHR.readyState == 4) {
			document.getElementById("container").innerHTML = XHR.responseText;
			div_affichage.innerHTML="Suppression de la commande "+ obj+" dans l'historique terminée.";
		}
		//div_affichage.innerHTML="";
	}
	//Envoi de la requête
	XHR.send(null);
}
