/**
 * 
 * @param {String}
 *            n identifiant
 * @param {String}
 *            d document
 */
function findObj(n, d) { // v4.01
	var p, i, x;
	if (!d)
		d = document;
	if ((p = n.indexOf("?")) > 0 && parent.frames.length) {
		d = parent.frames[n.substring(p + 1)].document;
		n = n.substring(0, p);
	}
	if (!(x = d[n]) && d.all)
		x = d.all[n];
	for (i = 0; !x && i < d.forms.length; i++)
		x = d.forms[i][n];
	for (i = 0; !x && d.layers && i < d.layers.length; i++)
		x = findObj(n, d.layers[i].document);
	if (!x && d.getElementById)
		x = d.getElementById(n);
	return x;
}

/**
 * 
 * @param {String}
 *            email
 */
function checkMail(email) {
	var reg = /^[a-z0-9._-]+@[a-z0-9.-]{2,}[.][a-z]{2,3}$/
	return (reg.exec(email) != null)
}

/**
 * 
 * @param {String}
 *            contratSFR
 */
function checkContratSFR(contratSFR) {
	var reg = /^[A-Z]{3}[0-9]{3}$/
	return (reg.exec(contratSFR) != null)
}

/**
 * 
 * @param {String}
 *            cp
 */
function checkCP(cp) {
	var reg = /^[0-9]{5}$/
	return (reg.exec(cp) != null)
}

/**
 * 
 * @param {String}
 *            gsm
 */
function checkGSM(gsm) {
	// var reg = /^[0-9]{10}$/
	var reg = /^(06[0-9]{8})?$/
	return (reg.exec(gsm) != null)
}

/**
 * 
 * @param {String}
 *            fixe
 */
function checkTelFixe(fixe) {
	// var reg = /^[0-9]{10}$/
	var reg = /^(0[1-9][0-9]{8})?$/
	return (reg.exec(fixe) != null)
}

/**
 * 
 * @param {String}
 *            codePIN
 */
function checkCodePIN(codePIN) {
	var reg = /^[0-9]{4}$/
	return (reg.exec(codePIN) != null)
}

/**
 * 
 * @param {String}
 *            IMSI
 */
function checkIMSI(IMSI) {
	var reg = /^[0-9]{20}$/
	return (reg.exec(IMSI) != null)
}

/**
 * 
 * @param {String}
 *            IMEI
 */
function checkIMEI(IMEI) {
	var reg = /^[0-9]{15}$/
	return (reg.exec(IMEI) != null)
}

/**
 * 
 * @param {String}
 *            chaine
 */
function trim(chaine) {
	return chaine.replace(/(^\s*)|(\s*$)/g, '');
}

/**
 * 
 * @param {String}
 *            id
 * @param {String}
 *            open
 * @param {String}
 *            close
 */
function insertText(id, open, close) {
	if (document.getElementById) {
		msgfield = document.getElementById(id);
	} else if (document.all) {
		msgfield = document.all[id];
	} else if (document.layers) {
		msgfield = document.layers[id];
	}

	// IE support
	if (document.selection && document.selection.createRange) {
		msgfield.focus();
		sel = document.selection.createRange();
		sel.text = open + sel.text + close;
		msgfield.focus();
	}

	// Moz support
	else if (msgfield.selectionStart || msgfield.selectionStart == '0') {
		var startPos = msgfield.selectionStart;
		var endPos = msgfield.selectionEnd;

		msgfield.value = msgfield.value.substring(0, startPos) + open
				+ msgfield.value.substring(startPos, endPos) + close
				+ msgfield.value.substring(endPos, msgfield.value.length);
		msgfield.selectionStart = msgfield.selectionEnd = endPos + open.length
				+ close.length;
		msgfield.focus();
	}

	// Fallback support for other browsers
	else {
		msgfield.value += open + close;
		msgfield.focus();
	}

	return;
}

/**
 * @param {String}
 *            chaineDate
 */
function checkDate(d) {
	if (d == '')
		return false;
	var ladate = (d).split("/");
	if ((ladate.length != 3) || isNaN(parseInt(ladate[0]))
			|| isNaN(parseInt(ladate[1])) || isNaN(parseInt(ladate[2])))
		return false;
	var unedate = new Date(eval(ladate[2]), eval(ladate[1]) - 1,
			eval(ladate[0]));
	var annee = unedate.getYear();
	if ((Math.abs(annee) + "").length < 4)
		annee = annee + 1900;
	return ((unedate.getDate() == eval(ladate[0]))
			&& (unedate.getMonth() == eval(ladate[1]) - 1) && (annee == eval(ladate[2])));
}

/**
 * @param {String}
 *            param
 */
function getUrlValue(param) {
	var contenu = '';
	var chaine = window.location.search;
	chaine = chaine.substring(1);
	var dz = chaine.indexOf("#", 0);
	if (dz != -1) {
		chaine = chaine.substring(0, dz);
	}
	chaine = chaine + "&";
	if (chaine.indexOf(param, 0) != -1) {
		var pos = chaine.indexOf(param, 0);
		var pos2 = chaine.indexOf("=", pos);
		var pos3 = chaine.indexOf("&", pos);
		contenu = chaine.substring(pos2 + 1, pos3);
	}
	return contenu;
}

/**
 * @param {String}
 *            id identifiant
 * @param {String}
 *            texte texte param
 */
function setInnerHTML(id, texte) {
	if (document.getElementById) {
		document.getElementById(id).innerHTML = texte;
	} else if (document.all) {
		document.all[id].innerHTML = texte;
	}
}

/**
 * @param {String}
 *            fichier fichier a charger
 */
function chargeFichierGET(fichier) {
	if (window.XMLHttpRequest) { // firefox
		xhr_object = new XMLHttpRequest();
	} else if (window.ActiveXObject) { // ie
		xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		return (false);
	}
	xhr_object.open("GET", fichier, false);
	xhr_object.send(null);
	if (xhr_object.readyState == 4) {
		return (xhr_object.responseText);
	} else {
		return (false);
	}
}

/**
 * @param {String}
 *            fichier fichier a charger
 */
function chargeFichierPOST(fichier, data) {
	var xhr_object = null;

	if (window.XMLHttpRequest) // Firefox
		xhr_object = new XMLHttpRequest();
	else if (window.ActiveXObject) // Internet Explorer
		xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
	else { // XMLHttpRequest non supporté par le navigateur
		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
		return;
	}

	xhr_object.open("POST", fichier, true);

	xhr_object.onreadystatechange = function() {
		if (xhr_object.readyState == 4)
			eval(xhr_object.responseText);
	}

	xhr_object.setRequestHeader("Content-type",
			"application/x-www-form-urlencoded");
	xhr_object.send(data);
}

/**
 * 
 * @param {String}
 *            time heure au format hh:mm:ss
 */
function checkTime(time) {
	var bool = true;
	var heure = parseInt(time.substring(0, 2));
	var minute = parseInt(time.substring(3, 5));
	var seconde = parseInt(time.substring(-2));
	if (!isNaN(heure) && !isNaN(minute) && !isNaN(seconde)) {
		if (heure > 23 || heure < 0 || minute > 59 || minute < 0
				|| seconde > 59 || seconde < 0) {
			bool = false;
		}
	} else {
		bool = false;
	}
	return bool;
}

/**
 * Formatte la date en francais pour un affichage plus clair sur la page du site
 * 
 * @param {Object}
 *            strDate
 * @param {Object}
 *            strHeure
 */
function formatDatePourAffichage(strDate, strHeure, afficheJour) {
	var tabMois = new Array();
	tabMois[0] = 'janvier';
	tabMois[1] = 'février';
	tabMois[2] = 'mars';
	tabMois[3] = 'avril';
	tabMois[4] = 'mai';
	tabMois[5] = 'juin';
	tabMois[6] = 'juillet';
	tabMois[7] = 'août';
	tabMois[8] = 'septembre';
	tabMois[9] = 'octobre';
	tabMois[10] = 'novembre';
	tabMois[11] = 'décembre';

	var tabJour = new Array();
	tabJour[0] = 'dimanche';
	tabJour[1] = 'lundi';
	tabJour[2] = 'mardi';
	tabJour[3] = 'mercredi';
	tabJour[4] = 'jeudi';
	tabJour[5] = 'vendredi';
	tabJour[6] = 'samedi';

	var date = new Date();
	var jourDuMois = Math.abs(strDate.substr(0, 2));
	date.setDate(Math.abs(strDate.substr(0, 2)));
	date.setMonth(Math.abs(strDate.substr(3, 2)) - 1);
	date.setYear(strDate.substr(6, 4));

	if (afficheJour) {
		// version avec affichage literal du jour
		return tabJour[date.getDay()] + ' ' + jourDuMois.toString() + ' '
				+ tabMois[date.getMonth()] + ' à ' + strHeure.substr(0, 5);
	} else {
		// version sans l'affichage literal du jour
		return 'le ' + jourDuMois.toString() + ' ' + tabMois[date.getMonth()]
				+ ' à ' + strHeure.substr(0, 5);
	}
}
