function show(url) {
	// 'width=500,height=450'
	param = 'scrollbars=yes,resizable=yes,';
	param+= (show.arguments.length==2)?show.arguments[1]:'width=716,height=726';
  	popup = window.open(url,'detail',param)
  	popup.focus();
}

function XMLHTTP(){
	var http_request = false;
    if (window.XMLHttpRequest) {
        http_request = new XMLHttpRequest();
    } else if (window.ActiveXObject) { // IE
        try {
            http_request = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e) {}
    }
    if (!http_request) {
        alert('Cannot create an XMLHTTP instance');
        return false;
    }
    return http_request;
}

function addLoadEvent(func) {
  if ( typeof wpOnload != "function" ) {
    wpOnload = func;
  } else {
    var oldonload = wpOnload;
    wpOnload = function() {
      oldonload();
      func();
    }
  }
}

function subscribe_newsletter(){
	var xmlhttp = XMLHTTP();
	if (!xmlhttp) return true;

	url = '/AJAXsubscribe_newsletter.php';
	data = 'xmlhttp=1&email='+$F('newsletter');

	xmlhttp.open("POST", url, true); //ouverture asynchrone
    xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    xmlhttp.send(data);

    xmlhttp.onreadystatechange = function() {
    	if (xmlhttp.readyState == 4) {
	        if (xmlhttp.status == 200) {
	            if(xmlhttp.responseText=='true') {
	            	display_error('Votre inscription est enregistrée.');
	            	$('newsletter').value = '';
	            }
	            else display_error('Votre adresse email est incorrecte.');
	        } else {
	        	display_error('Problème lors de la connexion à la base de données.');
	    	}
		}
    };
    return false;
}

function display_error(message){
	if(!$('error')) {
		var error_div = document.createElement("DIV");
		error_div.setAttribute('id', 'error');
		$('pagewidth').appendChild(error_div);
		var error_div2 = document.createElement("DIV");
		error_div2.setAttribute('id', 'error2');
		$('pagewidth').appendChild(error_div2);
	}
	$('error').innerHTML = message;
	$('error2').innerHTML = message;
	Effect.Appear('error', { duration: 0.6 });
	Effect.Appear('error2', { duration: 0.6 });
	setTimeout('dissapear()', 3000);
}

function dissapear(){
	Effect.Fade('error', { duration: 1 });
	Effect.Fade('error2', { duration: 1 });
}

var reWhitespace = /^s+$/;
var reLetter = /^[a-zA-Z]$/;
var reAlphabetic = /^[a-zA-Z]+$/;
var reFrenchAlphabetic = /^([A-Za-z]|[àâäçéèêëîïôöùûüÀÂÄÇÉÈÊËÎÏÔÖÛÜ])+$/;
var reCurrency = /^(-)?([0-9]|\s)*((,|\.)[0-9]{0,2})?$/;
var reAlphanumeric = /^[a-zA-Z0-9]+$/;
var reDigit = /^d/;
var reLetterOrDigit = /^([a-zA-Z]|d)$/;
var reInteger = /^[0-9]+$/;
var reFloat = /^(([0-9]+(\.[0-9]*)?)|(([0-9]*\.)?[0-9]+))$/;
var reEmail = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/
var reDate = /^(([0-2]?[0-9])|(3[0-1]))\/((0[1-9])|(1[0-2]))\/(19[0-9]{2}|2[0-9]{3})$/;
var reTime = /^(0?[0-9]|1[0-9]|2[0-3])(h|:)(0[0-9]|[1-5][0-9])$/i;
var rePostcode = /^[0-9]{5}$/;


function bool_verif(f, message){
  	if(bool_verif.arguments.length>2) var bool_submit = bool_verif.arguments[1];
 	else var bool_submit=true;

  	for (var i=0; i<f.elements.length; i++)	{
		if(!check_field(f, f.elements[i])) {
			bool_submit = false;
			display_error(message);
			break;
		}
	}
  	return bool_submit;
}

function check_field(f, field){

	var bool_submit=true;
	// traitement pour trouver le nom du champ a afficher en cas d'erreur (alertname ou name)
  	var strSCR_fieldName = (field.getAttribute('alertname'))?field.getAttribute('alertname'):field.name;

  	switch(field.type){
		case "radio" : case "checkbox" :

			if(field.getAttribute('isrequired')=="yes" && int_countChecked(f,field.name)<1)	{
				//alert("Vous devez cocher un bouton "+field.type+" '"+strSCR_fieldName+"'")
				bool_submit = false;
			}
			break;

		case "select-one" : case "select-multiple" :
			if(field.getAttribute('selectAll')=="yes"){
				if(field.options.length) for(var k=0;k<field.options.length;k++) field.options[k].selected=1;
			}
			if(field.getAttribute('isrequired')=="yes" && int_countChecked(f,field.name)<1)	{
				//alert("Vous devez renseigner '"+strSCR_fieldName+"'")
				bool_submit = false;
			}
			break;
		case "text" : case "textarea": case "password":
			if((field.getAttribute('isrequired')=="yes") && (field.value=="") && (!field.disabled)){
				//alert("Le champ "+strSCR_fieldName+" est obligatoire")
				bool_submit = false;
			}
			if((field.maxlength) && (field.maxlength<field.value.length)){
				//alert("Le champ "+strSCR_fieldName+" ne doit pas comporter plus de "+field.maxlength+" caractères\n. Il comporte actuellement "+field.value.length+" caractères")
				bool_submit = false;
			}
			if(field.getAttribute('datatype') && (!field.disabled)){
				if (field.value=="") break;
				if (field.getAttribute('datatype')=="integer" && (!(reInteger.test(field.value)))){
					//alert("Le champ "+strSCR_fieldName+" doit être un nombre entier");
					bool_submit = false;
				}
				else if (field.getAttribute('datatype')=="float" && (!(reFloat.test(field.value))))	{
					//alert("Le champ "+strSCR_fieldName+" doit être un nombre");
					bool_submit = false;
				}
				else if (field.getAttribute('datatype')=="email" && (!(reEmail.test(field.value)))){
					//alert("Le champ "+strSCR_fieldName+" est invalide");
					bool_submit = false;
				}
				else if (field.getAttribute('datatype')=="date" && (!(reDate.test(field.value)))){
					//alert("Le champ "+strSCR_fieldName+" doit être une date de la forme jj/mm/aaaa");
					bool_submit = false;
				}
				else if (field.getAttribute('datatype')=="time" && (!(reTime.test(field.value)))){
					//alert("Le champ "+strSCR_fieldName+" doit être un horaire de la forme hh:mm");
					bool_submit = false;
				}
				else if (field.getAttribute('datatype')=="currency" && (!(reCurrency.test(field.value)))){
					//alert("Le champ "+strSCR_fieldName+" doit être une de type monnaie");
					bool_submit = false;
				}
				else if (field.getAttribute('datatype')=="postcode" && (!(rePostcode.test(field.value)))){
					//alert("Le champ "+strSCR_fieldName+" doit comporter 5 chiffres");
					bool_submit = false;
				}
			}
			break;
		case "file" :
			break;
	}
	return bool_submit;
}

// La fonction int_countChecked retourne le nombre d'élément coché pour une
// famille de boutons radio, checkbox ou pour une liste déroulante dans un formulaire donné.
function int_countChecked(objFCT_form, strFCT_objName){
	var intSCR_nbrChecked = 0;

	for (var i=0;i<objFCT_form.elements.length;i++)	{
		if(objFCT_form.elements[i].name==strFCT_objName){
			switch(objFCT_form.elements[i].type){
				case 'radio':
				case 'checkbox' :
					if (objFCT_form.elements[i].checked) intSCR_nbrChecked++;
					break;
				default:
					for (var j=0;j<objFCT_form.elements[i].options.length;j++){
						if (objFCT_form.elements[i].options[j].selected && objFCT_form.elements[i].options[j].value!="" && objFCT_form.elements[i].options[j].value!="null") intSCR_nbrChecked++;
						}
					break;
			}
		}
	}
	return intSCR_nbrChecked;
}