var is_gecko = /gecko/i.test(navigator.userAgent);
var is_ie    = /MSIE/.test(navigator.userAgent);

/* unlimited session time */
var timSession = setInterval("testSession()", 600000);
testSession = function(){
	var strMsg = new String('');	
	var strRequest ='strAjaxDo='+encodeURIComponent('session');
	new Ajax.Request(
		'/_ajax.php',
		{
			method: 'post',
			postBody: strRequest,
			evalScripts: true,
			asynchronous: false,
			onSuccess: function (objResponse) {
				if(objResponse.responseText=='true'){
					return true;
				} else {
					alert('Fatal Error : SESSION');
					window.location.href='/index.php';
				}
			}
		}
	);	
}
/* unlimited session time */

//Fonction qui test la validité d'un email et renvoi le messge 
function checkMail(mail,msg) {
    var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9_\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    if (!filter.test(mail)) {
        alert(msg);	
        return false;
    }			
}
//Fonction qui test la validité d'un email et renvoi True or False
function booCheckMail(mail) {
    var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9_\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    if (!filter.test(mail)) {
        return false;
    } else {
        return true;
    }
}

//Fonction qui test si une chaine contient des caractére spéciaux accent et espace (_ permit)
function booCheckFieldName(strString) {
    var filter  = /^[A-Za-z_0-9]+$/;
    if (!filter.test(strString)) {
        return false;
    } else {
        return true;
    }
}

//remplace les caractéres spéciaux et numérique dans un champ de formulaire
function checkNameForm(obj) {
    var strString = new String(obj.value);
    var intPos = new Number(getSelectionStart(obj));
    obj.value = strString.replace(/[^A-Za-z\ \-áåâäàãêéèëíîïìóôöòõûüùúñç]/g,'');
    setSelectionRange(obj, intPos, intPos);
}

//controle d'une chaine ( pas de valuer numérique )
function checkString(strString) {
    if (strString.match('[0-9]')) {
        return false;
    } else {
        return true;
    }
}


//remplace les numérique dans un champ de formulaire
function checkStringForm(obj) {
    var strString = new String(obj.value);
    var intPos = new Number(getSelectionStart(obj));
    obj.value = strString.replace(/[0-9]/g,'');
    setSelectionRange(obj, intPos, intPos);
}

//Comme son nom l'indique
function cleanNumberInString(strString) {
    strString = strString.replace(/[0-9]/g,'');	
    return strString;
}

//Passe 1 lettre en majuscule dans un champ de formulaire
function majFirstForm(obj) {
    var strString = new String(obj.value);
    if (strString.length == 1) {
        var intPos = new Number(getSelectionStart(obj));
        obj.value = strString.toUpperCase();
        setSelectionRange(obj, intPos, intPos);
    }
}

// Passe 1er lettre en majuscule
function majFirst(strString) {
    var intLength = strString.length;
    strString = strString.substr(0, 1).toUpperCase() + strString.substr(1, intLength);
    return strString;		
}

//remplace les non numerique dans un champ de formulaire
function checkIntForm(obj) {
    var strNumber = new String(obj.value);
    var intPos = new Number(getSelectionStart(obj));
    obj.value = strNumber.replace(/[^0-9]/g,'');
    setSelectionRange(obj, intPos, intPos);
}

//remplace les non numerique exepté , et . dans un champ de formulaire
function checkNumberForm(obj) {
    var strNumber = new String(obj.value);
    var intPos = new Number(getSelectionStart(obj));
    obj.value = strNumber.replace(/[^0-9,\.]/g,'');
    setSelectionRange(obj, intPos, intPos);
}

//Comme son nom l'indique
function cleanStringInInt(strNumber) {
    strNumber = strNumber.replace(/[^0-9]/g,'');		
    return strNumber;
}


//selectione ce qu'il faut dans input
function setSelectionRange(input, start, end) {
    if (is_gecko) {
        input.setSelectionRange(start, end);
    } else {
        // assumed IE
        var range = input.createTextRange();
        range.collapse(true);
        range.moveStart('character', start);
        range.moveEnd('character', end - start);
        range.select();
    }
};

function getSelectionStart(o) {
    if (o.createTextRange) {
        var r = document.selection.createRange().duplicate()
        r.moveEnd('character', o.value.length)
        if (r.text == '') return o.value.length
        return o.value.lastIndexOf(r.text)
    } else return o.selectionStart
}

function getSelectionEnd(o) {
    if (o.createTextRange) {
        var r = document.selection.createRange().duplicate()
        r.moveStart('character', -o.value.length)
        return r.text.length
    } else return o.selectionEnd
}	

//Maj en Min
function formUpperToMin(obj) {
    var strString = new String(obj.value);
    var intPos = new Number(getSelectionStart(obj));
    strString = strString.toLowerCase();
    obj.value = strString;		
    setSelectionRange(obj, intPos, intPos);
}	

//Min en Maj
function formMinToUpper(obj) {
    var strString = new String(obj.value);
    var intPos = new Number(getSelectionStart(obj));
    var intLength = strString.length;
    strString = noAccent(strString);
    strString = strString.toUpperCase();
    obj.value = strString;			
    //document.getElementById("xhrJsDebug").innerHTML = '&nbsp;&nbsp;&nbsp;&nbsp;Pos : ' + intPos + ', Longeur : ' + intLength + ' -> setSelectionRange('+obj.name+', '+intPos+', '+intPos+')';
    setSelectionRange(obj, intPos, intPos);

}	

//Controle email saisie
function saisieFormMail(obj) {
    var strString = new String(obj.value);
    var intPos = new Number(getSelectionStart(obj));		
    strString = noAccent(strString);
    strString = strString.toLowerCase();
    obj.value = strString;		
    setSelectionRange(obj, intPos, intPos);
}

//On keyup chang virgule en point
function procVirguleToPoint(strSaisi, input) {
    if (strSaisi.substr(strSaisi.length-1,1) == ",") {
        input.value = strSaisi.substr(0,strSaisi.length-1)+ "." ; 
    }
}
    
//Control le validité d'une date
function proCheckTime(strTime) {
    // Renvoi true ou le msg d'erreur
    // By Benoit Raux 
    var msg = new String();
    var separateur = ':';	
    var h=(strTime.substring(0,2)); 
    var strSep3 = strTime.substring(2,3);
    var i=(strTime.substring(3,5)); 
    var strSep4 = strTime.substring(5,6);
    var s=(strTime.substring(6,8)); 				
        
    var booTest = true; 
    if ( ((strSep3!=separateur)||(strSep4!=separateur))  && (booTest == true) ) { 
        msg+="Les séparateurs d\'heure doivent être des "+separateur+".\n";
        booTest = false; 
    }
    if ( ((isNaN(h))||(h<0)||(h>24)) && (booTest == true) ) { 
        msg+="L'heure "+h+" n'est pas correct.\n";
        booTest = false; 
    }
    if ( ((isNaN(i))||(i<0)||(i>59)) && (booTest == true) ) { 
        msg+="La minute "+i+" n'est pas correct.\n";
        booTest = false; 
    }
    if ( ((isNaN(s))||(s<0)||(s>99)) && (booTest == true) ) { 
        msg+="La seconde "+s+" n'est pas correct.\n";
        booTest = false; 
    }
            
    if ( booTest == true ) {
        return true;
    } else {
        return msg;
    }
}

function preg_replace (arrayPattern, arrayPatternReplace, stringToConvert) {
    var strNew = String (stringToConvert);
    for (i=0; i<arrayPattern.length; i++) {
        var RE = RegExp(arrayPattern[i], "gi");
        var valReplace = arrayPatternReplace[i];
        strNew = strNew.replace (RE, valReplace);
    }
    return strNew;
}

function noAccent(str) {
    var strNew = "";
    var patternAccent = new Array("é", "è", "ê", "ë", "ç", "à", "â", "ä", "î", "ï", "ù", "ô", "ó", "ö");
    var patternReplaceAccent = new Array("e", "e", "e", "e", "c", "a", "a", "a", "i", "i", "u", "o", "o", "o");
    if (str && str!= "") {
        strNew = preg_replace (patternAccent, patternReplaceAccent, str);
    }
    return strNew;
}

function formatFieldText (obj) {
    var val = obj.value;
    strNew = String(val);
    strNew = noAccent(strNew);
    strNew = strNew.toUpperCase();
    return strNew;
}

function formatFieldTextMin (obj) {
    var val = obj.value;
    strNew = String(val);
    strNew = noAccent(strNew);		
    strNew = strNew.toLowerCase();
    return strNew;
}

function AppendToList(Combo, itemText, itemVal) {
    // si elle existe pas déjà
    trouve = false;
        for (var x=Combo.length-1; x>=0; x--)
        {
            if (Combo[x].text==itemText) {
                   trouve=true;
            }
        }
    if (trouve==false)
    {
       // add blank row
       Combo.length++;
       Combo.options[Combo.length-1].text=itemText;
       Combo.options[Combo.length-1].value=itemVal;
    }
    
        return true;
}

function DeleteSelected(Combo) {
    for (var x=Combo.length-1; x>=0; x--)
    {
        if (Combo[x].value != 0 && Combo[x].selected==true)	{
            Combo[x]=null;
        }
    }
}

function procMoveToList(Combo1, Combo2 ) {
    for (var x=Combo1.length-1; x>=0; x--)	{
        if ( Combo1[x].value != 0 && Combo1[x].selected==true)	{
            AppendToList(Combo2, Combo1[x].text, Combo1[x].value);			
        }
    }
    for (var x=Combo1.length-1; x>=0; x--) {
        if ( Combo1[x] && Combo1[x].selected==true){
            DeleteSelected(Combo1);
        }
    }		
}	

function procMakeHidden(objCombo, objHidden) {
    var strIdList = new String('');
    var intComboLenght = new Number(objCombo.length);
    var intId = new Number()
    
    for ( i=0; i<intComboLenght; i++ ) {
        if (objCombo[i].value != 0 ) {
            intId = objCombo[i].value;
            strIdList+= '_'+intId;
        }
    }
    objHidden.value = strIdList;
}

function proChangeLang(strLang) {
    document.formLanguage.lang.value=strLang;
    document.formLanguage.submit();
}

function proShowPopup(strUrlPage, intWidth, intHeight)
{
    window.open (strUrlPage,'newWindow','toolbar=0, location=0, directories=0, status=0, scrollbars=0, resizable=0, copyhistory=0, menuBar=0, width='+intWidth+', height='+intHeight+'');
}

//fonction pour coloration des ligne et clique dans tableuax :
function lineClick(strUrl) {
    document.location = strUrl;
}

function lineOver(obj) {
    obj.style.backgroundColor = '#FFE8CC';		
}

function lineOut(obj,strSyle) {
    switch (strSyle) {
        case 'pairLine':
            obj.style.backgroundColor = '#ECF4F9';	
        break;
        case 'impairLine':
            obj.style.backgroundColor = '#FBFBFB';	
        break;
    }
}

function focusObj(obj) {					
    if (obj) {
        obj.focus();
    }
}

function nullToDo(){
}

function objExist(obj) {
    if(obj) {
        return true;
    } else {
        return false;
    }
}

function objExistInInterval(obj,strDiv,objTimer) {
    if (obj) {
        clearInterval(objTimer);
        obj.focus();
    } else if (document.getElementById(strDiv)) {
        clearInterval(objTimer);
    }
}

//fonction qui test l'ip et session
function testSession() {
    var XHR = new XHRConnection();
    XHR.appendData("strTestSess","true");
    XHR.sendAndLoad("/XHR/form/test_session.php", "POST", callSession);	
    
}

//fonction qui prend la réponsse de WHR ipSession
var callSession = function (objResult) {
    strResult = objResult.responseText;		
    if (strResult != 'true') {
        
    } else {
        
    }	
}

//fonction qui cache ou affiche
function hidden(objName){
    if(document.getElementById(objName).style.display == ''){
        document.getElementById(objName).style.display = 'none';
    }else{
        document.getElementById(objName).style.display = '';
    }
}
    
function modalAlert(strMsg,intWidth){
    if(!intWidth){
        intWidth = 600;
    } 
    var html = '<div class="MB_alert"><p>' + strMsg + '<\/p><input type="button" onclick="Modalbox.hide()" value="OK" \/><\/div>';
    Modalbox.show(html, {title: '' + document.title, width: intWidth});
}	

function addOtherThanIn(objInput){
    objInput = $(objInput);
	
	if(objInput.tagName == 'SELECT') {
		if(objInput.value=='##_OTHER_##'){
	        objParent = objInput.up(0);
	        var strIniName = new String(objInput.name);
	        var strIniId = new String(objInput.id);
	        objInput.blur();
	        new Element.remove(objInput);
	        objNewInput = new Element(
	            'input', 
	            {
	                name: strIniName,
	                id: strIniId,
	                value: '',
	                'class': 'input_text',
	                type: 'text'
	            }
	        );
	        objNewInput.onfocus = function(){
	            this.className='input_text_focus';
	        }
	        objNewInput.onblur = function(){
	            this.className='input_text';
	        }
	        objNewA = new Element(
	            'a', 
	            {
	                href: '#' ,
	                id: 'add_other_than_in_temp_link',
	                'class': 'a_back_to_list',
	                title: 'Retouner à la liste des valeurs'
	            }
	        );		
	        objNewA.onclick = function(){
	            objNewInput.remove();
	            $(this).remove();
	            objParent.appendChild(objInput);
	            objInput.value = '';
	            return false;
	        }            
	        objNewA.update('<img src="/images/view_list.gif" />');
	        objParent.appendChild(objNewInput);
	        objParent.appendChild(objNewA);
			objNewInput.focus();
	    }
	}
}

getRadioCheckedValue = function(objRadio){
	str = new String('');
	for(var i=0;i<objRadio.length;i++){
		if(objRadio[i].checked) {
			str = objRadio[i].value;
		}
	}
	return str;
}
setRadioCheckedValue = function(objRadio,strValue){
	for(var i=0;i<objRadio.length;i++){
		if(objRadio[i].value==strValue) {
			objRadio[i].checked = true;
		}
	}
}

openModal = function(){
	$('w_layer').style.display = 'block';
	$('w_layer_border').style.display = 'block';
}
closeModal = function(){
	$('w_layer').style.display = 'none';
	$('w_layer_border').style.display = 'none';
	$('w_layer_content').update('');
}

addOtherRadio = function(objInput, strOtherValue, strOtherId) {
	objOther = $(strOtherId);

	if(objOther != null) {
		objOther.down(1).value = '';	

		$('label_' + strOtherId.replace('p_', '')).setStyle({color: '#000000'});	
		
		if(objInput.value == strOtherValue && objInput.checked == true) {
			objOther.style.display = 'block';
		} else {
			objOther.style.display = 'none';		
		}
	}
}

addOtherCheckbox = function(objInput, strOtherValue, strOtherId) {
	objOther = $(strOtherId);	

	$('label_' + strOtherId.replace('p_', '')).setStyle({color: '#000000'});	
	
	if(objInput.value == strOtherValue) {
		if(objInput.checked == true) objOther.style.display = 'block';
		if(objInput.checked == false) {
			objOther.style.display = 'none';	
			objOther.down(1).value = '';
		}
	}
}

/* js dinamique */
document.write('<script type="text/javascript" src="/include/js/function.js.php"><\/script>');