// JavaScript Document

/*AJAX*/

/*
fct: execute le formulaire et renvoie le callback
page: page appelant le script (page php)
method: POST/GET
dest: zone (div, tab...) pour resultat et zone loading
formulaire: formulaire des inputs
loading: id du div de l'img loading
callback: fonction a executer lorsque le traitement est fini
return: true-false
*/
function protoAjax(page,metod,dest,formulaire,loading,callback){
	
	if(formulaire && formulaire != "")
		{
		var variable = "Form.serialize('"+formulaire+"')" ;
		}
	else{
		var variable = "";
		}
	var ajax = new Ajax.Updater(dest,page,
			{
			method: metod,
			parameters: eval(variable),
			onCreate: function(){
				if(document.getElementById(loading))
				document.getElementById(dest).innerHTML = document.getElementById(loading).innerHTML;
				},
			onComplete: function (){
				eval(callback); //interprete du string comme "pot de fonction"
			}
			}
		);
	return ajax;
}

function lightAjax(page,titre,metod,formulaire,closebtn,callback)
	{
	if(formulaire && formulaire != "")
		{
		var variable = "Form.serialize('"+formulaire+"')" ;
		}
	else{
		var variable = "";
		}
	Lightview.show({
	  href: page,
	  rel: 'ajax',
	  title: titre,
	  options: {
		autosize: true,
		topclose: closebtn,
		closeButton: false,
		overlayClose: false,
		ajax: {
		  method: metod,
		  parameters: eval(variable),
		  onComplete: function(){
			  eval(callback);
		  }
		}
	  }
	});
	}

/*///VERIFICATION DE LA PRESSION DE LA TOUCHE "ENTER"///*/

function checkEnter(e,funct){ //e is event object passed from function invocation
	var characterCode ;//literal character code will be stored in this variable
	if(e && e.which){ //if which property of event object is supported (NN4)
		e = e
		characterCode = e.which //character code is contained in NN4's which property
	}
	else{
		e = event
		characterCode = e.keyCode //character code is contained in IE's keyCode property
	}

	if(characterCode == 13){ //if generated character code is equal to ascii 13 (if enter key)
		setTimeout(funct,1);
		return false;
	}
	else{
		return true;
	}
}

/*///GESTION DE CLASS CSS///*/
function changeClass(class_id,id)
	{
	var div = document.getElementById(id);
	if(div)
		{
		div.className = class_id ;
		}
	}
	

/*///EXECUTER UNE FONCTION func1 SI OK ET func2 SI NO///*/

function okOrNo(func1,func2,timing)
	{
	var ok = document.getElementById('ok');
	var no = document.getElementById('no');
	if(ok || no)
		{
		if(ok)
			{
			setTimeout(func1,timing);
			}
		else if(no)
			{
			setTimeout(func2,timing);
			}
		}
	else{
		setTimeout('okOrNo("'+func1+'","'+func2+'","'+timing+'")',100);
		}
	}
	
/*///REDIRIGER VERS UNE URL///*/

function hrefLocation(url)
	{
	window.location.href = url;
	}
	
	
/*///EXECUTER LA FONCTION QUAND LE DIV id EST DISPONIBLE///*/

function wDivLdA(id,fonction,delai)
	{
	var div = document.getElementById(id);
	var delai = (!delai)? 100 : delai;
	if(div)
		{
		setTimeout(fonction,delai);
		}
	else{
		setTimeout('wDivLdA("'+id+'","'+fonction+'")',delai);
		}
	}

//Afficher ou caché un element au moyen de son ID
function viewOrHiddenDiv(id,action)
	{
	var div = document.getElementById(id);
	
	if(action == "hidden")
		{
		div.style.visibility = "hidden";
		div.style.display = "none";
		}
	else if(action = "view")
		{
		div.style.visibility = "visible";
		div.style.display = "block";
		}
	}
	
function viewHiddenDiv(id)
	{
	var div = document.getElementById(id);
	if(div.style.visibility == "visible" && div.style.display == "block")
		{
		div.style.visibility = "hidden";
		div.style.display = "none";
		}
	else if(div.style.visibility == "hidden" && div.style.display == "none")
		{
		div.style.visibility = "visible";
		div.style.display = "block";
		}
	else{
		div.style.visibility = "visible";
		div.style.display = "block";
		}
	}
	
	
	
function viewIfChecked(id,input)
	{
	var input = document.getElementById(input);
	if(input.checked == true)
		{
		viewOrHiddenDiv(id,'view')
		}
	else{
		viewOrHiddenDiv(id,'hidden')
		}
	}
	
/*///FONCTION DE TEXTE///*/

/*Vérifier une adresse email*/

function checkMail(email)
	{
	var place = email.indexOf("@",1);
	var point = email.indexOf(".",place+1);
	var domain = email.charAt(point+1);
	domain = email.substring(point+1,email.length);
	heberg = email.substring(place+1,point);

	if((place > -1)&&(email.length >2)&&(point > 1) && (domain!="" && domain.length > 1) && (heberg.length > 1))
		{
		return true;
		}
	else{
		return false;
		}
	}
	
/*Vérifier une URL*/
	
function checkUrl(url)
	{
	var exp = new RegExp("^((http|https|ftp)://|www).{2,}[.].{2,}$","g");
	return exp.test(url);
	}

/*Vérifier que la valeur est un chiffre*/

function is_chiffre(valeur)
	{
	var exp = new RegExp("^[0-9]*$","g");
	return exp.test(valeur);
	}
	
/*Vérifier que la valeur est un prix*/

function is_money(valeur)
	{
	var exp = new RegExp("^€?[0-9]*[.,]{0,1}[0-9]{0,2}$","g");
	return exp.test(valeur);
	}
	
/*Vérifier que la valeur est une couleur valide*/

function is_color(entry)
	{
	var validChar='0123456789ABCDEF';
	entry=entry.toUpperCase();   // lowercase characters?
	var strlen = entry.length;
	if(strlen == 6)
		{
		var error =0;
		// Now scan string for illegal characters
		for (i=0;i<strlen;i++)
			{
			if(validChar.indexOf(entry.charAt(i))<0)
				{
				error++;
				} // end scanning loop
			}
		if(error == 0)
			{
			return true;
			}
		else{
			return false;
			}
		}
	else{
		return false;
		}
	}
	
/*Vérifier une date*/

function is_Date(d) {
// Cette fonction permet de vérifier la validité d'une date au format jj-mm-aaaa
if (d == "") // si la variable est vide on retourne faux
return false;

e = new RegExp("^[0-9]{1,2}-[0-9]{1,2}-([0-9]{4})$");

if (!e.test(d)) // On teste l'expression régulière pour valider la forme de la date

return false; // Si pas bon, retourne faux
// On sépare la date en 3 variables pour vérification, parseInt() converti du texte en entier
j = parseInt(d.split("-")[0], 10); // jour
m = parseInt(d.split("-")[1], 10); // mois
a = parseInt(d.split("-")[2], 10); // année


// Définition du dernier jour de février
// Année bissextile si annnée divisible par 4 et que ce n'est pas un siècle, ou bien si divisible par 400
if (a%4 == 0 && a%100 !=0 || a%400 == 0) fev = 29;
else fev = 28;

// Nombre de jours pour chaque mois
nbJours = new Array(31,fev,31,30,31,30,31,31,30,31,30,31);

// Enfin, retourne vrai si le jour est bien entre 1 et le bon nombre de jours, idem pour les mois, sinon retourn faux
return ( m >= 1 && m <=12 && j >= 1 && j <= nbJours[m-1] );
}
//--> 

/*///INITIALISATION DU DRAG AND DROP///*/

function dragOk(fct)
	{
	//Les div à trouver
	var ok = document.getElementById('dragOk');
	if(ok)
		{
		setTimeout(""+fct+"",100);
		}
	else{
		setTimeout("dragOk('"+fct+"')",200);
		}
	}
	
/*///CREATION DE LA LISTE 2 COLONNE POUR LE DRAG AND DROP///*/
function createSortable(id_1,id_2)
	{
	Sortable.create(id_2,{containment:[id_1,id_2],dropOnEmpty:true});
	Sortable.create(id_1,{containment:[id_1,id_2],dropOnEmpty:true});
	}
	

/*/ORDONNER UNE LISTE DRAG AND DROP AVEC BUTTON/*/

function moveUp(list, row) {
moveRow(list, row, 1);
}

function moveDown(list, row) {
moveRow(list, row, -1);
}

function moveRow(list, row, dir) {
var sequence=Sortable.sequence(list);
for (var j=0; j<sequence.length; j++) {
var i = j - dir;
if (sequence[j]==row && i >= 0 && i <= sequence.length) {
var temp=sequence[i];
sequence[i]=row;
sequence[j]=temp;
break;
}
}

Sortable.setSequence(list, sequence);
}


	
/*///Remplacer des caractères dans une chaine///*/

function Remplace(expr,a,b)
	{
      var i=0
      while (i!=-1) {
         i=expr.indexOf(a,i);
         if (i>=0) {
            expr=expr.substring(0,i)+b+expr.substring(i+a.length);
            i+=b.length;
         }
      }
      return expr
   }
   

/*///ALLEZ SUR LE ANCHOR///*/
	
function goAnchor(id)
	{
	window.location.href= '#anchor_'+id;
	}
	
/*/// CHECKBOX ACTION ///*/

function checkAll(what,cmd)
	{
	var statut = document.getElementById(cmd).checked;
	checkBoxAction(what,statut)
	}
	
	
function checkBoxAction(what,action)
	{
	var nb_check = document.getElementsByName(what).length;
	for(var i = 0 ; i < nb_check ; i++)
		{
		if(action == true)
			{
			document.getElementById(what+i).checked = "checked" ;
			}
		else if(action == false)
			{
			document.getElementById(what+i).checked = "" ;
			}
		}
	}

function BoxCmder(id,what)
	{
	var nb_check = document.getElementsByName(what).length;
	var statut = 0;
	for(var i = 0 ; i < nb_check ; i++)
		{
		if(document.getElementById(what+i).checked == true)
			{
			statut++;
			}
		}
	if(statut == nb_check)
		{
		document.getElementById(id).checked = "checked";
		}
	else{
		document.getElementById(id).checked = "";
		}
	}
	
function executeCopy(from,pour)
	{
	var checkbox = document.getElementById(from);
	var action = (checkbox.checked == true)? "copy" : "remove" ;
	
	if(pour == "fact_livr_address")
		{
		copyData(pour,action);
		}
	}
	

//function de transfert de donnée vers un div

function transData(value , dest , hiddendiv)
	{
	document.getElementById(dest).value = value;
	if(hiddendiv)
		{
		viewHiddenDiv(hiddendiv);
		}
	}
	
	
	
function checkCaptcha(valeur,dest)
	{
	var ajax = new Ajax.Updater(dest,'captcha_check.php',{method: 'POST',parameters: 'valeur='+valeur});
	return ajax;
	}
	
function refreshCaptcha()
	{
	var validator = document.getElementById('validator');
	validator.value = "";
	document.getElementById('captcha_img').src = "random.php?date="+escape(new Date());
	document.getElementById("check_captcha").innerHTML = "<input type=\"hidden\" value=\"0\" id=\"captcharesult\">";
	}
	
function ajustDimension(to,from,offset_w,offset_h,color){
	if(color){document.getElementById(to).style.backgroundColor = color;}
	document.getElementById(to).style.width = ($(from).getWidth() - offset_w)+"px";
	document.getElementById(to).style.height = ($(from).getHeight() - offset_h)+"px";
}

function setDimension(id,hdim,vdim){
	document.getElementById(id).style.width = vdim+"px";
	document.getElementById(id).style.height = hdim+"px";
}

function completeTxt(name,sens,base,dest){
	var base = document.getElementById(base).value;
	var name = document.getElementById(name).value;
	//Sens = s ou e (start ou end)
	if(sens == "s")
		{
		document.getElementById(dest).value = name+' '+base;
		}
	else if(sens == "e")
		{
		document.getElementById(dest).value = base+' '+name;
		}
}

function favoris(bookmarkurl,bookmarktitle) {
if ( navigator.appName != 'Microsoft Internet Explorer' ){
window.sidebar.addPanel(bookmarktitle,bookmarkurl,"");
}
else {
window.external.AddFavorite(bookmarkurl,bookmarktitle);
}
} 


function formatTextarea(text,sens){
	if(sens == 'html')
		{
		var a = '\n';
		var b = '<br/>';
		}
	else{
		var b = '\n';
		var a = '<br/>';
		}
	var text_formated = Remplace(text,a,b);
	return text_formated;
}


function soundSession(state)
	{
	var zoneaction = document.getElementById('action_execute');
	zoneaction.value = "sessionSound";
	var zoneid = document.getElementById('id_execute');
	zoneid.value = state;
	protoAjax('sound.php','POST','action_ajax','execute','loading');
	}
	
function changeLanguage(lang){
	document.getElementById('langue').value = lang;
	protoAjax("language.php","POST","language_div","change_langue","loading","location.reload(true)");
}

function checkIE6(){
	if (/MSIE (\d+\.\d+);/.test(navigator.userAgent))
	{ //test for MSIE x.x;
 	var ieversion=new Number(RegExp.$1) // capture x.x version
	if(ieversion<=6)
	return false
	else
	return true
	}
else{
	return true;
	}
	
}

/*Imposer l'introduction d'un chiffre*/

function numericOnly(id){
	var field = document.getElementById(id);
    field.value=field.value.replace(/[^0-9]/g,"");	
}

/*Imposer l'introduction de caractère alphanumérique - et blank space uniquement*/

function alphaOnly(id){
	var field = document.getElementById(id);
    field.value=field.value.replace(/[^a-zA-Z àäâéèëêïîùûüç-]/gi,"");	
}

function cityOnly(id){
	var field = document.getElementById(id);
    field.value=field.value.replace(/[^a-zA-Z àäâéèëêïîùûüç'-]/gi,"");	
}

function alphaNumericOnly(id){
	var field = document.getElementById(id);
    field.value=field.value.replace(/[^0-9a-zA-Z àäâéèëêïîùûüç.-]/gi,"");	
}


function phoneOnly(id){
	var field = document.getElementById(id);
    field.value=field.value.replace(/[^0-9.+)(/]/gi,"");	
}

function emailOnly(id){
	var field = document.getElementById(id);
    field.value=field.value.replace(/[^0-9a-zA-Z@{1,1}._-]/gi,"");	
}

function Uppercase(id) {
	var field = document.getElementById(id);
	field.value = field.value.toUpperCase();
}

function ucfirst(id){
	var field = document.getElementById(id);
	var str = field.value;
    str += '';
    var f = str.charAt(0).toUpperCase();
    field.value = f + str.substr(1);
}

