var generique_cars = '<>\?!|;';	// liste de caractères génériques automatiquement rejetés.

/*	Définit un objet dans la page	*/
function _g(nom){
	if (document.getElementById) {return document.getElementById(nom);}
	if (document.layers) {return document.nom.document;}
	if ((document.all)&&(!document.getElementById)) {return document.all[nom];}
return false;
}

/*	ajuste hauteur d'un élément html en prenant comme référence un autre élément	*/
function _adjustHeight(obj){
	if(_g(obj)){
	var heightO = _g(obj).offsetHeight ? _g(obj).offsetHeight : _g(obj).style.pixelHeight;	// hauteur originale
	var height = _g('content').offsetHeight ? _g('content').offsetHeight : _g('content').style.pixelHeight;
		_g(obj).style.height = height>=heightO ? height+'px' : false;
	}
}

/*	fonction masque and show 	*/
function _hidshw(o, l){
	for(i=1; i<=l; i++){
		if(typeof i!=undefined){
			_g(i).style.display = 'none';
		}
	}

	var type = typeof o;
	if(type=='string' || type=='number'){

		_g(o).style.display = 'block';

	}else{

		var c = o.length;
		for(i=0; i<c; i++){
			if(typeof i!=undefined){
				_g(o[i]).style.display = 'block';
			}
		}

	}
}

/*	generateur de mot de passe	*/
function _gencode(o, l){
	var str	= 'abcdefghijklmnopqrstuvwxz123456789_[]:*';
	var code= '';
	var l = l!=undefined || !isNaN(l) ? l : 9;
	for(i=0; i<l; i++){
		var car	= str.charAt(Math.floor(Math.random()*str.length));
		code+= i%4 ? car : car.toUpperCase();
	}
	_g(o).value = _g(o)!=undefined ? code : false;
}

/*	generateur de mot de passe	*/
function _genpass(t, o){
	var txt  = _g(o)!=undefined && _g(o).value!='' ? _g(o).value.replace(/^\s+/g,'').replace(/\s+$/g,'') : false;
	var code = txt!=false ? txt.toLowerCase() : false;
	if(txt!=false){	_g(t).value = code;	}else{	alert('Renseignez le champ "'+_g(o).id+'" !');	_g(o).focus();}
}

/*	redirection à retardement	*/
function _redirect(url, time){
	setTimeout("window.location.replace('"+url+"')", time*1000);
}

/*	renvoi vers le haut	*/
function _gotoTop(){
	window.scrollTo(0,0);
}

/*	fonction de validation d'une entreprise	*/
function _chkSoc(t, o, v){
	_g(o).value	= v;
	var b = t.substring(0,3);
	for(i=1; i<=parseInt(_g('long').value); i++){
		if(_g(b+i)){
		_g(b+i).className = _g(o).value!='' && b+i==t ? 'selected' : '';
		}
	}
}

/*	fonction permettant la mise à jour du nombre d'actions disponibles
o	= champs indiquant la quantité à calculer
t	= le champs lui même impliquer dans l'affichage du résultat
d	= élément html sur lequel on travail visuellement
r	= champs récupérant le reste après le calcule
s	= champs conditionnant le calcule des actions restante, si celle élément n'est pas égale à true alors pas de calcule
*/
function _rta(o, t, d, r, s){	// rta pour real time actions = nombre d'actions en temps réel
	if(_g(s).checked==true && d!=''){
		if(!isNaN(_g(t).value) && _g(t).value>=0 && _g(r).value.indexOf('-')==-1){
			_g(d).innerHTML	= _g(r).value = _g(o).value-_g(t).value;
		}else{_g(t).value = _g(r).value = '';	_g(d).innerHTML = _g(o).value;}
	}
}

/*	testeur d'expression singulière	*/
function _expSIN(exclusion, chaine, field){
	for (var i=0; i<chaine.length; i++) {
		for (var e=0; e<exclusion.length; e++) {
			if(exclusion.charAt(e)==chaine.charAt(i)){
				alert('Ce champs contient des informations incorrectes !');
				_g(field).value='';
				_g(field).focus();
				return false;
				break;
			}
		}
	}
	return true;
}

/*	fonction de clignotement	*/
var state_visible = false;
function _blink(o, t){
	var d = _g(o);
	if(d){
		if(state_visible==true){
			d.style.visibility='hidden';
			state_visible = false;
			setTimeout('_blink("'+o+'", '+t+')', t*300);
		}else{
			d.style.visibility='visible';
			state_visible = true;
			setTimeout('_blink("'+o+'", '+t+')', t*1000);
		}
		//setTimeout('_blink("'+o+'", '+t+')', t*1000);
	}
}

function _isCHECK(array){
	for (i=0; i<array.length; i++) {
		if(_g(array[i]).checked == true){return true;}
	}
	alert('Veuillez cocher une case.');
	return false;
}

function _isSELECT(o){
	if(_g(o).selectedIndex==0){
	_g(o).focus();	alert('Veuillez sélectionner une option dans la liste.');	return false;
	}
	return true;
}

/*
* Fonction de log d'une annonce avant son envoi
*@return null
*/
function _logOn(){
	var xhr_object	= null;
	var souhait		= _g('achat').checked==true ? "Souhaite : acheter" : '';
		souhait		= _g('vente').checked==true ? "Souhaite : vendre" : souhait;
	var actionnaire	= _g('non').checked==true ? "\nEst-ce un actionnaire ? non" : '';
		actionnaire	= _g('oui').checked==true ? "\nEst-ce un actionnaire ? oui" : actionnaire;
	var champs		= new Array('quantite', 'prix_unitaire', 'date_limite', 'nom', 'prenom', 'adresse', 'code_postal', 'ville', 'telephone', 'email');
	var donnees		= '';
	for(i=0; i<champs.length; i++)
	{
		var e	= champs[i];
		donnees += "\n"+e+' : '+ _g(e).value;
	}
	var data= 'd='+escape(souhait+actionnaire+donnees)+'&sa='+_g('id_sa').value;

	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
	{	return;	}

	xhr_object.open("POST", "./logOndata.php", true);
	xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xhr_object.send(data);
}

/*	vérifie le formulaire de souscription	*/
function _checkSouscription(){
	if(_g('civilite').selectedIndex==0){
		alert('Veuillez indiquer votre civilit\351 !'); /*_g('civilite').style.borderColor='red';*/ return false;
		}
	else if(_g('nom').value=='' || /[^a-zA-Z ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ]+/g.test(_g('nom').value)){
		alert('Veuillez indiquer votre nom !'); _g('nom').focus(); return false;
		}
	else if(_g('prenom').value=='' || /[^a-zA-Z ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ-]+/g.test(_g('prenom').value)){
		alert('Veuillez indiquer votre pr\351nom !'); _g('prenom').focus(); return false;
		}
	else if(_g('adresse').value==''){
		alert('Veuillez indiquer votre adresse de r\351sidence !'); _g('adresse').focus(); return false;
		}
	else if(_g('code_postal').value=='' || /[^0-9]+/g.test(_g('code_postal').value)){
		alert('Veuillez indiquer votre code postal !'); _g('code_postal').focus(); return false;
		}
	else if(_g('ville').value=='' || /[^a-zA-Z \-]+/g.test(_g('ville').value)){
		alert('Veuillez indiquer votre ville de r\351sidence !'); _g('ville').focus(); return false;
		}
	else if(_g('telephone').value=='' || /[^0-9\+ \(\)]+/g.test(_g('telephone').value)){
		alert('Veuillez indiquer votre num\351ro de t\351l\351phone !'); _g('telephone').focus(); return false;
		}
	else if(_g('email').value=='' || /[^a-zA-Z0-9@\.\-_]+/g.test(_g('email').value) || _g('email').value=='ciib@bourse-introduction.com'){
		alert('Veuillez indiquer votre adresse de messagerie \351lectronique !'); _g('email').focus(); return false;
		}

	var txt =	"\nCivilit\351 : "+_g('civilite').options[_g('civilite').selectedIndex].text+
				"\nNom : "+_g('nom').value+
				"\nPr\351nom : "+_g('prenom').value+
				"\nAdresse : "+_g('adresse').value+
				"\nCode postal : "+_g('code_postal').value+
				"\nVille : "+_g('ville').value+
				"\nT\351l\351phone : "+_g('telephone').value+
				"\nE-mail : "+_g('email').value;

		if(!confirm('Confirmez-vous ces informations ?\n'+txt)){
			return false;
		}else{
			_g('sys_valid').value = 1;
			return true;
		}
}

/*	vérifie le formulaire d'annonce	*/
function _checkAnnonce(){
	if(_g('achat').checked==false && _g('vente').checked==false){
		alert('S\351lectionnez une action : Achat ou Vente !'); return false;
		}
	else if(_g('quantite').value=='' || /[^0-9]+/g.test(_g('quantite').value)){
		alert('Veuillez indiquer un nombre d\'actions, sans virgule ni espaces !'); _g('quantite').focus(); return false;
		}
	else if(_g('prix_unitaire').value=='' || /[^0-9\.]+/g.test(_g('prix_unitaire').value)){
		alert('Veuillez indiquer le prix par action !'); _g('prix_unitaire').focus(); return false;
		}
	else if(_g('date_limite').value=='' || /[^0-9\-]+/g.test(_g('date_limite').value)){
		alert('Veuillez indiquer la date limite de validit\351 de votre annonce !'); _g('date_limite').focus(); return false;
		}
	else if(_g('oui').checked==false && _g('non').checked==false){
		alert('Indiquez si vous \352tes un actionnaire ou pas !'); return false;
		}
	else if(_g('nom').value=='' || /[^a-zA-Z ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ]+/g.test(_g('nom').value)){
		alert('Veuillez indiquer votre nom !'); _g('nom').focus(); _logOn(); return false;
		}
	else if(_g('prenom').value=='' || /[^a-zA-Z ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ-]+/g.test(_g('prenom').value)){
		alert('Veuillez indiquer votre prenom !'); _g('prenom').focus(); _logOn(); return false;
		}
	else if(_g('adresse').value==''){
		alert('Veuillez indiquer votre adresse de r\351sidence !'); _g('adresse').focus(); _logOn(); return false;
		}
	else if(_g('code_postal').value=='' || /[^0-9]+/g.test(_g('code_postal').value)){
		alert('Veuillez indiquer votre code postal !'); _g('code_postal').focus(); _logOn(); return false;
		}
	else if(_g('ville').value=='' || /[^a-zA-Z \-]+/g.test(_g('ville').value)){
		alert('Veuillez indiquer votre ville de r\351sidence !'); _g('ville').focus(); _logOn(); return false;
		}
	else if(_g('telephone').value=='' || /[^0-9\+ \(\)]+/g.test(_g('telephone').value)){
		alert('Veuillez indiquer votre num\351ro de t\351l\351phone !'); _g('telephone').focus(); _logOn(); return false;
		}
	else if(_g('email').value=='' || /[^a-zA-Z0-9@\.\-_]+/g.test(_g('email').value) || _g('email').value=='ciib@bourse-introduction.com'){
		alert('Veuillez indiquer votre adresse de messagerie \351lectronique !'); _g('email').focus(); _logOn(); return false;
		}

	var souhait		= _g('achat').checked==false ? 'vendre' : 'acheter';
	var actionnaire	= _g('oui').checked==false ? 'non' : 'oui';
	var txt =	"\n\nVous souhaitez : "+souhait+
				"\nQuantit\351 : "+_g('quantite').value+
				"\nPrix : "+_g('prix_unitaire').value+" EUR"+
				"\nValide jusqu'au : "+_g('date_limite').value+
				"\n\312tes vous actionnaire ? "+actionnaire+
				"\nNom : "+_g('nom').value+
				"\nPr\351nom : "+_g('prenom').value+
				"\nAdresse : "+_g('adresse').value+
				"\nCode postal : "+_g('code_postal').value+
				"\nVille : "+_g('ville').value+
				"\nT\351l\351phone : "+_g('telephone').value+
				"\nE-mail : "+_g('email').value;

		if(!confirm('Confirmez-vous ces informations ?'+txt)){
			return false;
		}else{
			return true;
		}
}

/*	vérifie le formulaire de demande d'accès	*/
function _checkAccess(){
	if(_g('nom').value=='' || /[^a-zA-Z ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ\-]+/g.test(_g('nom').value)){
		alert('Veuillez indiquer votre nom !'); _g('nom').focus(); return false;
		}
	else if(_g('prenom').value=='' || /[^a-zA-Z ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ\-]+/g.test(_g('prenom').value)){
		alert('Veuillez indiquer votre pr\351nom !'); _g('prenom').focus(); return false;
		}
	else if(_g('email').value=='' || /[^a-zA-Z0-9@\.\-_]+/g.test(_g('email').value) || _g('email').value=='ciib@bourse-introduction.com'){
		alert('Veuillez indiquer votre adresse de messagerie \351lectronique !'); _g('email').focus(); return false;
		}
	else if(_g('phone').value=='' || /[^0-9]+/g.test(_g('telephone').value)){
		alert('Veuillez indiquer votre numéro de t\351l\351phone !'); _g('phone').focus(); return false;
		}
	//return true;
}

/*	vérifie le formulaire de transferts	*/
function _checkUpload(){
	var array_one	= new Array('chk0', 'chk1', 'chk2', 'chk3', 'chk4', 'chk5');

	if(_g('id_sa').value==''){
		alert('S\351lectionnez la soci\351t\351 pour laquelle vous souhaitez transf\351rer un fichier !'); return false;
	}
	else if(_g('fichier').value==''){
		alert('Indiquez le document \340 transf\351rer avec le bouton "Parcourir..." !'); _g('fichier').focus(); return false;
	}
	else if(!_isCHECK(array_one)){return false;}
	return true;
}

/*	vérifie le formulaire des augmentations de capital	*/
function _checkCapital(){
	if(_g('id').value=='' || /[^0-9]+/g.test(_g('id').value)){
		alert('Veuillez sélectionner une société !'); _g('search').focus(); return false;
		}
	else if(_g('st_date').value=='' || /[^0-9\-]+/g.test(_g('st_date').value)){
		alert('Veuillez indiquer la date de début d\'augmentation !'); _g('st_date').focus(); return false;
		}
	else if(_g('en_date').value=='' || /[^0-9\-]+/g.test(_g('en_date').value)){
		alert('Veuillez indiquer la date de fin d\'augmentation !'); _g('en_date').focus(); return false;
		}
	else if(_g('actions').value=='' || /[^0-9]+/g.test(_g('actions').value)){
		alert('Veuillez indiquer un nombre (entier) d\'actions à vendre !'); _g('actions').focus(); return false;
		}
	else if(_g('nominal').value=='' || /[^0-9\.]+/g.test(_g('nominal').value)){
		alert('Veuillez indiquer le prix nominal par action !'); _g('nominal').focus(); return false;
		}
	else if(_g('prime').value=='' || /[^0-9\.]+/g.test(_g('prime').value)){
		alert('Veuillez indiquer le prix de la prime d\'émission par action !'); _g('prime').focus(); return false;
		}	
	return true;
}

/*	vérifie le formulaire des utilisateurs	*/
function _checkUsers(){	
	if(_g('nom').value=='' || /[^a-zA-Z ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ]+/g.test(_g('nom').value)){
		alert('Veuillez indiquer le nom !'); _g('nom').focus(); return false;
		}
	else if(_g('prenom').value=='' || /[^a-zA-Z ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ\-]+/g.test(_g('prenom').value)){
		alert('Veuillez indiquer le pr\351nom !'); _g('prenom').focus(); return false;
		}
	else if(_g('mail').value=='' || /[^a-zA-Z0-9@\.\-_]+/g.test(_g('mail').value)){
		alert('Veuillez indiquer votre adresse de messagerie \351lectronique !'); _g('mail').focus(); return false;
		}
	else if(_g('lvl').selectedIndex==0){alert('Veuillez indiquer le niveau d\'acc\350s de l\'utilisateur !'); return false;}

	return true;
}

/*	vérifie le formulaire de connection	*/
function _checkLogon(){
	if(_g('login').value==''){
		alert('Veuillez indiquer votre nom d\'utilisateur !'); _g('login').focus(); return false;
	}else if(_g('password').value=='' || /[^a-z \-]+/g.test(_g('password').value)){
		alert('Veuillez indiquer votre mot de passe !'); _g('password').focus(); return false;
	}
	return true;
}

var code = detail = word = '';
/*	vérifie le formulaire des sociétés	*/
function _checkSocietes(){
	code	= _g('code').value=='' && code=='' ? false : true;
	detail	= _g('detail').value=='' && detail=='' ? false : true;
	word	= _g('word').value=='' && detail==''? false : true;

	if(code==false){
		if(!confirm('Laissez vous cette soci\351t\351 sans code valeur ?')){_g('code').focus();}
		else{code = true;}
		return false;
	}
	else if(_g('nom').value=='' || /[^a-zA-Z ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ\-&]+/g.test(_g('nom').value)){
		alert('Veuillez indiquer la raison sociale de la soci\351t\351 !'); _g('nom').focus(); return false;
	}
	else if(_g('mail').value=='' || /[^a-zA-Z0-9@\.\-_]+/g.test(_g('mail').value)){
		alert('Veuillez indiquer votre adresse de messagerie \351lectronique !'); _g('mail').focus(); return false;
	}
	else if(_g('adr').value==''){
		alert('Veuillez indiquer le si\350ge social de la soci\351t\351 !'); _g('adr').focus(); return false;
	}
	else if(detail==false){
		if(!confirm('Laissez vous cette soci\351t\351 sans description ?')){_g('detail').focus();}
		else{detail = true;}
		return false;
	}
	else if(word==false){
		if(!confirm('Laissez vous cette soci\351t\351 sans mot du président ?')){_g('word').focus();}
		else{word = true;}
		return false;
	}

	return true;
}


/*	vérifie le formulaire d'ajout d'historique	*/
function _checkHistory(){
	if(_g('sa').selectedIndex==0){alert('Sélectionnez une société !'); return false;}
	else if(_g('vrai').checked==false && _g('faux').checked==false){alert('Sélectionnez un vrai ou faux historique !'); return false;}
	else if(_g('vrai').checked==true && (_g('acheteur').selectedIndex==0 && _g('vendeur').selectedIndex==0)){alert('Veuillez indiquer un acheteur et un vendeur !'); return false;}
	else if(_g('date').value=='' || /[a-zA-Z]+/g.test(_g('date').value)){alert('Veuillez indiquer la date de transaction !'); return false;}
	else if(_g('qte').value=='' || /[a-zA-Z]+/g.test(_g('qte').value)){alert('Veuillez indiquer la quantité d\'actions échangées !'); return false;}
	else if(_g('p_u').value=='' || /[a-zA-Z]+/g.test(_g('p_u').value)){alert('Veuillez indiquer le prix unitaire des actions !'); return false;}
	return true;
}

window.onload = function(){
	if(_g('login')){	_g('login').focus();	}
}
