/**
 * Objet compte : permet de stocker les données d'un compte
 * client dans la page courante et dans la session.
 *
 * @param _urlRecord : URL permettant d'enregistrer le compte en cas de modification
 */
function Compte(_urlRecord){
	var urlRecord=_urlRecord;
	var site;
	var codeClient;
	var client;

	/**
	 * Permet de récupérer l'identifiant numérique du compte client.
	 */
	this.getClient=function(){
		return client;
	}

	/**
	 * Permet de choisir le site et le code client
	 * du compte.
	 *
	 * @param _site : ID du site
	 * @param _codeClient : code client du compte (si on souhaite utiliser le compte principal du site, ce paramètre est facultatif)
	 */
	this.setBySiteAndCode=function(_site, _codeClient){
		if(_site!=undefined){
			// init du compte à partir des paramètres donnés
			site=_site;
			codeClient=_codeClient;
			client=undefined;
		}
	}

	/**
	 * Permet de choisir le compte client courant à
	 * partir de son identifiant numérique.
	 *
	 * @param _client : ID du compte client
	 */
	this.setCompteByClient=function(_client){
		if(_client!=undefined){
			// init du compte à partir du paramètre donné
			site=undefined;
			codeClient=undefined;
			client=_client;
		}
	}

	/**
	 * Permet de construire un document XML (chaîne de caractères)
	 * à partir de l'objet compte.
	 */
	this.objetToXML=function(){
		var xml="<compte>";
		if(site!=undefined){
			xml+="<site>"+site+"</site>";
		}
		if(codeClient!=undefined){
			xml+="<codeClient>"+codeClient+"</codeClient>";
		}
		if(client!=undefined){
			xml+="<client>"+client+"</client>";
		}
		xml+="</compte>";
		return xml;	 
	}
	
	/**
	 * Fonction qui permet d'alimenter un objet compte à partir d'un objet XMLDocument passé en paramètre
	 * @param {Object} _doc : objet XMLDocument à parcourir
	 */
	this.DOMToObjet=function(_doc){
		if(_doc==undefined) throw new Error("impossible de creer un objet compte à partir du document donné");
		var nodeTmp=_doc.getElementsByTagName("site")[0];
		if(nodeTmp!=undefined&&nodeTmp.firstChild!=undefined){
			site=nodeTmp.firstChild.nodeValue;	
		}
		nodeTmp=_doc.getElementsByTagName("codeClient")[0];
		if(nodeTmp!=undefined&&nodeTmp.firstChild!=undefined){
			codeClient=nodeTmp.firstChild.nodeValue;	
		}
		nodeTmp=_doc.getElementsByTagName("client")[0];
		if(nodeTmp!=undefined&&nodeTmp.firstChild!=undefined){
			client=nodeTmp.firstChild.nodeValue;	
		}
	}

	/**
	 * Méthode permettant un affichage plus clair
	 * lors de trace de débogage.
	 */
	this.toString=function(){
		return "Compte{"+(site? site: '')+"/"+(codeClient? codeClient: '')+" - "+(client? client: '')+"}";
	}
}
if (typeof(log)=='function') log("me3/Compte.js ok", "info");
