/**
* Package UTIL 0.1 - 22/05/2006
* ------------------------------------
* Contient les classes suivantes :
*	- clCookie
*	- clCoord
*	- clXHR
*/

/**
* Class clCookie
* ------------------------------------
* @author Fabien Daniel
* @date 09/05/2006
*/

function clCookie() {

	// Méthodes
	this.readCookie = mReadCookie;
	this.writeCookie = mWriteCookie;
	this.deleteCookie = mDeleteCookie;
}

/*
* Ecriture du cookie
* @param name nom du cookie
* @param value valeur sauvegardé en interne au cookie
* @param expires date d'expiration (optionel)
* @param path répertoire à partir duquel le cookie peut être lu (optionel)
* @param domain domaine sur lequel le cookie peut être lu (optionel)
* @param secure transmis si repertoire securisé (optionel)
*/
function mWriteCookie(name, value, expires, path, domain, secure) {
	// Configuration du cookie
	cfgCookie = name + "=" + escape(value);
	cfgCookie += ((expires==null) ? "" : ("; expires="+expires.toGMTString()));
	cfgCookie += ((path==null) ? "" : ("; path="+path));
	cfgCookie += ((domain==null) ? "" : ("; domain="+domain));
	cfgCookie += ((secure==true) ? "; secure" : "");

	// Ecriture du cookie
	document.cookie = cfgCookie;
}

/**
* Lecture du cookie
* @param name nom du cookie
* @return valeur du cookie
*/
function mReadCookie(name) {
	chaine = document.cookie;
	chaineRecherche = name + "=";
	i = 0;
	while(i<chaine.length) {
		j = i + chaineRecherche.length;
		if(chaine.substring(i, j)==chaineRecherche) {
			// on recupere la valeur du cookie
			fin = chaine.indexOf(";", j);
			fin = (fin == -1) ? chaine.length : fin;
			return chaine.substring(j, fin);

		}
		// On se rend au parametre suivant
		i = chaine.indexOf(" ", i) + 1;
		if(i==0) return null;
	}
}

/**
* Destruction du cookie
* @param name nom du cookie à détruire
*/
function mDeleteCookie(name) {
	date = new Date;
	date.setHours(date.getHours()-1);
	this.writeCookie(name, null, date);
}


/**
* Class clCoord
* ------------------------------------
* @author Fabien Daniel
* @date 09/05/2006
*/
function clCoord(x, y) {
	this.x = x;
	this.y = y;
}

/**
* Classe clXHR - chargée de parser des fichiers
* ------------------------------------
* @author Fabien Daniel
* @date 04/05/2006
*/

function clXHR(fichier, typeFichier){
	this.objXHR;
	this.fichier = fichier;
	this.type = typeFichier;

	// Methodes
	this.initialize = mInitialize;
	this.request = mRequest;

	// Construction
	this.initialize();
	//this.request();
}

/**
* Initialisation de l'objet XHR
*/
function mInitialize() {

	// Création de l'objet
	if (window.XMLHttpRequest) {
		// Navigateurs de type Firefox
		this.objXHR = new XMLHttpRequest();
	} else if(window.ActiveXObject) {
		// Internet Explorer
		try {
			this.objXHR = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				this.objXHR = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(e) {
				return false;
			};
		};
	}else
		// Le navigateur ne supporte pas XMLHttpRequest
		return false;
};




/**
* Requete au fichier
*/
function mRequest() {
	var maDate = new Date();
	uneURL = new clURL(this.fichier);
	uneURL.ajoutParam("time", maDate.getTime());
	this.objXHR.open("GET", uneURL.anURL, false);
	this.objXHR.send(null);
}



/**
* Classe clURL - methodes de manipulation d'url
* ------------------------------------
* @author Fabien Daniel
* @date 06/06/06
*/

function clURL(url) {
	this.anURL = url;

	this.ajoutParam = mAjoutParam;
}


/**
* Methode d'ajout de parametre à l'url
*/
function mAjoutParam(param, valeur) {
	if(this.anURL.indexOf('?')>=0){
		this.anURL += "&" + param + "=" + valeur;
	} else {
		this.anURL += "?" + param + "=" + valeur;
	}
}