/**
* API of javascript function
*
* @package		HTML
* @version		Version 1.0 - 2005-01-18
* @author		Sebastien Garrouste | Matthieu
* @copyright	Imago - ? Copyright Metapages - All rights reserved.
*/

/**
* Global Javascript VAR
*/
var stateSelectAllPicture = false;
var pathname=location.pathname;
var myDomainCookie=pathname.substring(0,pathname.lastIndexOf('/')) +'/';
var dateExpCookie = new Date();
dateExpCookie.setTime(dateExpCookie.getTime()+(365*24*3600*1000));

/**
* Global Javascript FUNCTIONS
*/

// Function of Macromedia /////////////////////////////////////////////////////////////////////////
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_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=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);

function MM_showHideLayers() { //v3.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v='hide')?'hidden':v; }
    obj.visibility=v; }
}

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

function MM_goToURL() { //v3.0
  var i, args=MM_goToURL.arguments;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location=\'"+args[i+1]+"\'");
}

function MM_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}
///////////////////////////////////////////////////////////////////////////////////////////////////

// Gestion de cookie //////////////////////////////////////////////////////////////////////////////
function getCookieVal(offset) {
	var endstr=document.cookie.indexOf (";", offset);
	if (endstr==-1){
		endstr=document.cookie.length;
	}
	return unescape(document.cookie.substring(offset, endstr));
}

function GetCookie (name) {
	var arg=name+"=";
	var alen=arg.length;
	var clen=document.cookie.length;
	var i=0;
	while (i<clen) {
		var j=i+alen;
		if (document.cookie.substring(i, j) == arg){
			return getCookieVal (j);
		}
        i = document.cookie.indexOf(" ",i)+1;
        if (i==0) break;
	}
	return null;
}

function SetCookie (name, value) {
	var argv=SetCookie.arguments;
	var argc=SetCookie.arguments.length;
	var expires=(argc > 2) ? argv[2] : null;
	var path=(argc > 3) ? argv[3] : null;
	var domain=(argc > 4) ? argv[4] : null;
	var secure=(argc > 5) ? argv[5] : false;
	document.cookie=name+"="+escape(value)+
		((expires==null) ? "" : ("; expires="+expires.toGMTString()))+
		((path==null) ? "" : ("; path="+path))+
		((domain==null) ? "" : ("; domain="+domain))+
		((secure==true) ? "; secure" : "");
}

function DeleteCookie (name) {
	var exp = new Date();
	exp.setTime (exp.getTime() - 1); 
	var cval = GetCookie (name);
	document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();
}
///////////////////////////////////////////////////////////////////////////////////////////////////

// Function of Matthieu ///////////////////////////////////////////////////////////////////////////
function imgcopy() {
	var elm = document.getElementsByName('viewerfunction');
	elm[0].value = "addtoset";

	elm = document.getElementsByName('viewerdata');
	elm[0].value = getValueSelecteur("idset");
	
	validerFormulaire("viewerbox");
}

function imgcopyreport() {
	document.viewerbox.viewerfunction.value = "addtosetreport";

	elm = document.getElementsByName('viewerdata');
	elm[0].value = getValueSelecteur("idset_report");

	validerFormulaire("viewerbox");
}

function addimgcart() {
	var elm = document.getElementsByName('viewerfunction');
	elm[0].value = "cartimg";
	validerFormulaire("viewerbox");
}

function actOnViewer(act,data) {

	// Require :
	// triggerdelete = true/false @ imagestatus_id_delete is set
	// isdid = imagestatus_id_delete
	// triggerundo = true/false @ user is admin

	var elm = document.getElementsByName('viewerfunction');
	elm[0].value = act;
	if(act == 'chstatus') {
		elm = document.getElementsByName('viewerdata');
		elm[0].value = data;
	}
	if(act == 'chgroup') {
		elm = document.getElementsByName('viewerdata');
		elm[0].value = getValueSelecteur('selectchangegroup');
	}
	if(act == 'chowner') {
		elm = document.getElementsByName('viewerdata');
		elm[0].value = getValueSelecteur('selectchangeowner');
	}

	var agree = true;
	if(triggerdelete) {
		if((act == 'chstatus') & (data == isdid)) {
			var nb = getNbImageSelected();
			if(triggerundo) {
				var agree = confirm(sprintf(msg_image_delete, nb));
			} else {
				var agree = confirm(sprintf(msg_image_move, nb));
			}
		}
	}

	if(agree){
		validerFormulaire('viewerbox');
	}
}

function getNbImageSelected(){
	// Search nb asset
	var elmForm = document.getElementsByName('viewerbox');
	eval("var reg = /^isel/");
	
	nb = 0;
	for (i = 0; i < elmForm[0].elements.length; i++){
		if (elmForm[0].elements[i].type == 'checkbox' && reg.exec(elmForm[0].elements[i].name) != null){
			if(elmForm[0].elements[i].checked && elmForm[0].elements[i].value != ''){
				nb = nb + 1;
			}
		}
	}
	return nb;
}

function contract_sumup_value(rid){
	form = document.forms['form_contract_edit_'+rid];
	
	var sum = 0;
	var n = form.elements.length;
	for(var i=0;i<n;i++) {
		var Obj = form.elements[i];
		var ObjName = Obj.name.substr(0,12);

		if(ObjName == 'child_value[') {
			sum += Obj.options[Obj.selectedIndex].value/1.0;
		}
	}

	document.getElementById('total_value_'+rid).innerText = sum + '%';
}

function sprintf(){
	if (!arguments || arguments.length < 1 || !RegExp)
	{
		return;
	}
	var str = arguments[0];
	var re = /([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X)(.*)/;
	var a = b = [], numSubstitutions = 0, numMatches = 0;
	while (a = re.exec(str))
	{
		var leftpart = a[1], pPad = a[2], pJustify = a[3], pMinLength = a[4];
		var pPrecision = a[5], pType = a[6], rightPart = a[7];
		
		//alert(a + '\n' + [a[0], leftpart, pPad, pJustify, pMinLength, pPrecision);

		numMatches++;
		if (pType == '%')
		{
			subst = '%';
		}
		else
		{
			numSubstitutions++;
			if (numSubstitutions >= arguments.length)
			{
				alert('Error! Not enough function arguments (' + (arguments.length - 1) + ', excluding the string)\nfor the number of substitution parameters in string (' + numSubstitutions + ' so far).');
			}
			var param = arguments[numSubstitutions];
			var pad = '';
			       if (pPad && pPad.substr(0,1) == "'") pad = leftpart.substr(1,1);
			  else if (pPad) pad = pPad;
			var justifyRight = true;
			       if (pJustify && pJustify === "-") justifyRight = false;
			var minLength = -1;
			       if (pMinLength) minLength = parseInt(pMinLength);
			var precision = -1;
			       if (pPrecision && pType == 'f') precision = parseInt(pPrecision.substring(1));
			var subst = param;
			       if (pType == 'b') subst = parseInt(param).toString(2);
			  else if (pType == 'c') subst = String.fromCharCode(parseInt(param));
			  else if (pType == 'd') subst = parseInt(param) ? parseInt(param) : 0;
			  else if (pType == 'u') subst = Math.abs(param);
			  else if (pType == 'f') subst = (precision > -1) ? Math.round(parseFloat(param) * Math.pow(10, precision)) / Math.pow(10, precision): parseFloat(param);
			  else if (pType == 'o') subst = parseInt(param).toString(8);
			  else if (pType == 's') subst = param;
			  else if (pType == 'x') subst = ('' + parseInt(param).toString(16)).toLowerCase();
			  else if (pType == 'X') subst = ('' + parseInt(param).toString(16)).toUpperCase();
		}
		str = leftpart + subst + rightPart;
	}
	return str;
}
///////////////////////////////////////////////////////////////////////////////////////////////////

// Function of Sebastien //////////////////////////////////////////////////////////////////////////
function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}

/**
* Fonction de fermeture d'une fenetre
*/
function fermeWindow(){
	window.close();
}

/**
* Affiche un message dans la barre de status
*
* @param string msg
*/
function msgToStatusBar(msg){
	window.status = msg;
}

/**
* Fonction de validation du formulaire passe en parametre
*
* @param string formulaire Nom du formulaire
*/
function validerFormulaire(formulaire){
	var elm = document.getElementsByName(formulaire);
	elm[0].submit();
}

/**
* Verifie si un champ correspond a une valeur et retourne le resultat
*
* @param string variable Nom de la variable a assigner
* @param string valeur Valeur a affecter
* @return boolean
*/
function testFieldsValue(variable, valeur){
	var elm = document.getElementsByName(variable);
	if(elm[0]){
		if(elm[0].value == valeur){
			return true;
		} else {
			return false;
		}
	}
}

/**
* Assigne une valeur a une variable
*
* @param string variable Nom de la variable a assigner
* @param string valeur Valeur a affecter
*/
function assignValue(variable, valeur){
	var elm = document.getElementsByName(variable);
	if(elm[0]){
		elm[0].value = valeur;
	}
}

/**
* Assigne une valeur a une variable qui se trouve dans un formulaire
*
* @param string formulaire Nom du formulaire
* @param string variable Nom de la variable a assigner
* @param string valeur Valeur a affecter
*/
function assignValueIntoForm(formulaire, variable, valeur){
	var elmForm = document.getElementsByName(formulaire);
	
	for (var i = 0; i < elmForm[0].elements.length; i++){
		if (elmForm[0].elements[i].name == variable){
			elmForm[0].elements[i].value = valeur;
			break;
		}
	}
}

/**
* Assigne une valeur a une variable
*
* @param string variable Nom de la variable a assigner
* @param string valeur Valeur a affecter
*/
function assignProperty(field, property, value){
	var elm = document.getElementsByName(field);
	if(elm[0]){
		eval("elm[0]."+property+" = value;");
	}
}

/**
* Assigne une valeur a une variable et valide le formulaire si il est renseigner
*
* @param string formulaire Nom du formulaire
* @param string variable Nom de la variable a assigner
* @param string valeur Valeur a affecter
*/
function assignValid(formulaire, variable, valeur){
	assignValue(variable, valeur)
	if(formulaire != ""){
		validerFormulaire(formulaire);
	}
}

/**
* Assigne une valeur a une variable et valide le formulaire si il est renseigner
*
* @param string formulaire Nom du formulaire
* @param string variable Nom de la variable a assigner
* @param string valeur Valeur a affecter
*/
function assignValidIntoForm(formulaire, variable, valeur){
	assignValueIntoForm(formulaire, variable, valeur)
	if(formulaire != ""){
		validerFormulaire(formulaire);
	}
}

/**
* Execute une action en fonction d'un selecteur pour les vues
*
* @param string formulaire Nom du formulaire
* @param string var_action Nom de la variable d'action
*/
function viewsetAction(div_name, formulaire, name_select, name_action, action){
	// Search value of the select
	var elmSelect = document.getElementsByName(name_select);
	var select_selected = elmSelect[0].options[elmSelect[0].selectedIndex].value;
	
	if(action == ""){
		if(select_selected == 'new'){
			var elm = document.getElementsByName(name_action);
			elm[0].value = 'display_empty';
			validerFormulaire(formulaire);
		} else {
			var elm = document.getElementsByName(name_action);
			elm[0].value = 'change_viewset';
			validerFormulaire(formulaire);
		}
	} else {
		if(select_selected != 'new'){
			var elm = document.getElementsByName(name_action);
			elm[0].value = 'display_full';
			validerFormulaire(formulaire);
		}
		if(select_selected == 'new' && action == 'edit') {
			var elm = document.getElementsByName(name_action);
			elm[0].value = 'display_empty';
			validerFormulaire(formulaire);
		}
	}
}

/**
* Disabled an element
*
* @param string name
* @param string value
*/
function disabledElement(name, value){
	var elm = document.getElementsByName(name);
	elm[0].disabled = value;
}

/**
* Invert disabled an element
*
* @param string name
*/
function invertDisabledElement(name){
	var elm = document.getElementsByName(name);
	if(elm[0].disabled){
		elm[0].disabled = false;
	} else {
		elm[0].disabled = true;
	}
}

/**
* Retourne la valeur selctionner d'un selecteur
*
* @param object object
* @return string
*/
function getValueThisSelect(object){
	return object.options[object.selectedIndex].value;
}

/**
* Retourne le texte selctionner d'un selecteur
*
* @param object object
* @return string
*/
function getTextThisSelect(object){
	return object.options[object.selectedIndex].text;
}

/**
* Retourne la valeur selctionner d'un selecteur
*
* @param string name
* @return string
*/
function getValueInput(name){
	var elm = document.getElementsByName(name);
	return elm[0].value;
}

/**
* Retourne la valeur selctionner d'un selecteur
*
* @param string name
* @return string
*/
function getValueInputPopup(name){
	var elm = window.opener.document.getElementsByName(name);
	return elm[0].value;
}

/**
* Retourne la valeur selctionner d'un selecteur
*
* @param string name
* @return string
*/
function getValueSelecteur(name){
	var elm = document.getElementsByName(name);
	return getValueThisSelect(elm[0]);
}

/**
* Retourne le text selctionner d'un selecteur
*
* @param string name
* @return string
*/
function getTextSelecteur(name){
	var elm = document.getElementsByName(name);
	return getTextThisSelect(elm[0]);
}

/**
* Retourne la valeur selctionner d'un radio
*
* @param object object
* @return string
*/
function getValueThisRadio(radio) {
	for (var i = 0; i < radio.length; i++) {
		if (radio[i].checked) {
			return radio[i].value;
		}
	}
}

/**
* Retourne la valeur selctionner d'un radio
*
* @param string name
* @return string
*/
function getValueRadio(name) {
	var elm = document.getElementsByName(name);
	for (var i = 0; i < elm.length; i++) {
		if(elm[i].checked){
			return elm[i].value;
		}
	}
}

/**
* Augmente la taille d'un textarea
*
* @param object object
* @param integer value
*/
function changeRowTextarea(object, value) {
	object.rows = value;
}

/**
* Change le display d'un calque
*
* @param string div Identifiant du calque
*/
function changeDisplay(div, value){
	document.getElementById(div).style.display = value;
}

/**
* Alterne le display d'un calque
*
* @param string div Identifiant du calque
*/
function alternDisplay(div){
	if(document.getElementById(div).style.display == "none"){
		document.getElementById(div).style.display = "block";
	} else {
		document.getElementById(div).style.display = "none";
	}
}

/**
* Alterne le display d'un calque pour les div imago
*
* @param string div Identifiant du calque
*/
function alternDisplayImago(div){
	if(document.getElementById(div).style.display == "none"){
		document.getElementById(div).style.display = "block";
		SetCookie(div, "block");
	} else {
		document.getElementById(div).style.display = "none";
		SetCookie(div, "none");
	}
}

/**
* Alterne le display d'un calqueet redimension un autre calque en fonction du display du premier
*
* @param string div_first
* @param string div_second
* @param integer size_div_first
* @param integer size_total
*/
function alternDisplayAndResize(div_first, div_second, size_div_first, size_total){
	if(document.getElementById(div_first).style.display == "none"){
		document.getElementById(div_first).style.display = "block";
		setDivHeight(div_second, size_total);
	} else {
		document.getElementById(div_first).style.display = "none";
		setDivHeight(div_second, size_div_first);
	}
}

/**
* Change la class d'un objets
*
* @param string nameObject
* @param string className
*/
function changeClassNameObject(nameObject, className){
	document.getElementById(nameObject).className = className;
}

/**
* Change le style d'un select depuis l'option selectionnée
*
* @param string selecteur
*/
function changeColorSelectFromOption(selecteur){
	var elmSelect = document.getElementsByName(selecteur);
	var classOptionSelect = elmSelect[0].options[elmSelect[0].selectedIndex].className;
	elmSelect[0].className = classOptionSelect;
}

/**
* Selectionne/Deselectionne la checkbox d'une image et change le style de la cellule d'un tableau
*
* @param string formulaire
* @param boolean state
* @param string class_no_selected
* @param string class_selected
*/
function selectImg(formulaire, name, class_no_selected, class_selected){	
	var elmForm = document.getElementsByName(formulaire);
	eval("var reg = /^"+name+"/");
	
	stateSelectAllPicture = stateSelectAllPicture ? false : true;
	for (var i = 0; i < elmForm[0].elements.length; i++){
		if (elmForm[0].elements[i].type == 'checkbox' && reg.exec(elmForm[0].elements[i].name) != null){
			if(stateSelectAllPicture){
				elmForm[0].elements[i].checked = true;
				changeClassNameObject("td_img_"+elmForm[0].elements[i].value, class_selected);
			} else {
				elmForm[0].elements[i].checked = false;
				changeClassNameObject("td_img_"+elmForm[0].elements[i].value, class_no_selected);
			}
		}
	}
}

/**
* Selectionne/Deselectionne en invertion la checkbox d'une image et change le style de la cellule d'un tableau
*
* @param string formulaire
* @param string name
* @param string class_no_selected
* @param string class_selected
*/
function selectImgInvert(formulaire, name, class_no_selected, class_selected){	
	var elmForm = document.getElementsByName(formulaire);
	eval("var reg = /^"+name+"/");
	
	for (var i = 0; i < elmForm[0].elements.length; i++){
		if (elmForm[0].elements[i].type == 'checkbox' && reg.exec(elmForm[0].elements[i].name) != null){
			if(elmForm[0].elements[i].checked){
				elmForm[0].elements[i].checked = false;
				changeClassNameObject("td_img_"+elmForm[0].elements[i].value, class_no_selected);
			} else {
				elmForm[0].elements[i].checked = true;
				changeClassNameObject("td_img_"+elmForm[0].elements[i].value, class_selected);
			}
		}
	}
}

/**
* Selectionne/Deselectionne la checkbox d'une image et change le style d'une cellule d'un tableau
*
* @param string formulaire
* @param string name
* @param string value
* @param string id_td
* @param string class_no_selected
* @param string class_selected
* @param string state ('','true','false')
*/
function selectOneImg(formulaire, name, value, id_td, class_no_selected, class_selected, state){	
	var elmForm = document.getElementsByName(formulaire);
	eval("var reg = /^"+name+"/");
	
	// Selection de la checkbox
	var selected = false;
	for (var i = 0; i < elmForm[0].elements.length; i++){
		if (elmForm[0].elements[i].type == 'checkbox' && reg.exec(elmForm[0].elements[i].name) != null){
			if(value == '' || elmForm[0].elements[i].value == value){
				if( (state == '' && elmForm[0].elements[i].checked) || state == 'false'){
					elmForm[0].elements[i].checked = false;
					document.getElementById(id_td).className = class_no_selected;
				} else {
					elmForm[0].elements[i].checked = true;
					document.getElementById(id_td).className = class_selected;
				}
			}
		}
	}
}

/**
* Fonction de cochage ou decochage de toutes les checkbox commencant par name suivant un selecteur
*
* @param string formulaire
* @param boolean state
* @param string name
* @param string value
*/
function checkCheckbox(formulaire, state, name, value){	
	// Protect caractere [ and ] to not disturb regexp
	var elements = name.split(/\[/);
	name = elements.join("\\\[");
	elements = name.split(/\]/);
	name = elements.join("\\\]");
	
	// Get checkbox
	var elmForm = document.getElementsByName(formulaire);
	eval("var reg = /^"+name+"/");
	
	for (var i = 0; i < elmForm[0].elements.length; i++){
		if (elmForm[0].elements[i].type == 'checkbox' && reg.exec(elmForm[0].elements[i].name) != null){
			if(value == '' || elmForm[0].elements[i].value == value){
				elmForm[0].elements[i].checked = state;
			}
		}
	}
}

/**
* Fonction de cochage ou decochage de toutes les checkbox commencant par name suivant un selecteur
*
* @param string formulaire Nom du formulaire
* @param string selecteur Nom du selecteur
* @param string name debut du nom des checkbox qu'on va selectioner
*/
function checkCheckboxAllNone(formulaire, selecteur, name){	
	// Protect caractere [ and ] to not disturb regexp
	var elements = name.split(/\[/);
	name = elements.join("\\\[");
	elements = name.split(/\]/);
	name = elements.join("\\\]");
	
	// Get checkbox
	var elmSelect = document.getElementsByName(selecteur);
	var elmForm = document.getElementsByName(formulaire);
	eval("var reg = /^"+name+"/");
	
	for (var i = 0; i < elmForm[0].elements.length; i++){
		if (elmForm[0].elements[i].type == 'checkbox' && reg.exec(elmForm[0].elements[i].name) != null){
			if(elmSelect[0].value == "all"){
				elmForm[0].elements[i].checked = true;
			} else {
				if(elmSelect[0].value == "none"){
					elmForm[0].elements[i].checked = false;
				}
			}
		}
	}
}

/**
* Change le style d'un td en recupererant la valeur d'un selecteur
*
* @param string id_td
* @param string selecteur
* @param string defaut_class
*/
function changeColorImageSet(id_td, selecteur, defaut_class, web_path, sid, set_id, image_id){
	var elmSelect = document.getElementsByName(selecteur);
	var classOptionSelect = elmSelect[0].options[elmSelect[0].selectedIndex].className;
	var classTd = document.getElementById(id_td).className;
	
	if(classOptionSelect != '' && classTd != classOptionSelect){
		document.getElementById(id_td).className = classOptionSelect;
		var color = elmSelect[0].options[elmSelect[0].selectedIndex].value;
	} else {
		document.getElementById(id_td).className = defaut_class;
		var color = '';
	}
	
	var response = sendAPostRequest(web_path+'/automatons_js.php','request=UPDATEIMAGESETCOLOR&sid='+sid+'&set_id='+set_id+'&image_id='+image_id+'&color='+color);
	if(response != '1' && response != '-1'){
		alert(response);
	}
}

/**
* Assigne une valeur a un champ du formulaire dans le parent de la fenetre
*
* @param string champ Nom du champ
* @param string valeur valeur a affecter au champ
*/
function popupAssign(champ, valeur){
	var elm = window.opener.document.getElementsByName(champ);
	if(elm[0]){
		elm[0].value = valeur;
	}
}

/**
* Assigne une valeur a un champ du formulaire dans le parent de la fenetre
*
* @param string champ Nom du champ
* @param string valeur valeur a affecter au champ
*/
function popupAssignProperty(field, property, value){
	var elm = window.opener.document.getElementsByName(field);
	if(elm[0]){
		eval("elm[0]."+property+" = value;");
	}
}

/**
* Assigne une valeur a un champ du formulaire dans le parent de la fenetre
*
* @param string champ Nom du champ
* @param string valeur valeur a affecter au champ
*/
function popupConcat(champ, valeur){
	var elm = window.opener.document.getElementsByName(champ);
	if(elm[0]){
		if(elm[0].type == "textarea"){
			elm[0].value = elm[0].value+"\n"+valeur;
		} else {
			elm[0].value = elm[0].value+" "+valeur;
		}
	}
}

/**
* Augmente/reduit le nombre de cols d'un textarea
*
* @param string champ
* @param integer chiffre
* @param string signe
*/
function textareaCols(champ, chiffre, signe){
	var elm = document.getElementsByName(champ);
	if(elm[0]){
		if(signe == "+"){
			elm[0].cols = elm[0].cols+chiffre;
		} else {
			elm[0].cols = elm[0].cols-chiffre;
		}
	}
}

/**
* Augmente/reduit le nombre de rows d'un textarea
*
* @param string champ
* @param integer chiffre
* @param string signe
*/
function textareaRows(champ, chiffre, signe){
	var elm = document.getElementsByName(champ);
	if(elm[0]){
		if(signe == "+"){
			elm[0].rows = elm[0].rows+chiffre;
		} else {
			elm[0].rows = elm[0].rows-chiffre;
		}
	}
}

/**
* Assigne une valeur a un champ du formulaire dans le parent de la fenetre
*
* @param string champ Nom du champ
* @param string valeur valeur a affecter au champ
*/
function popupValid(form){
	var elm = window.opener.document.getElementsByName(form);
	if(elm[0]){
		elm[0].submit();
	}
}

/**
* Fonction de validation du formulaire de la fenetre qui a ouvert le popup
*
* @param boolean parent true => on applique cela a une fenetre avec frame, false => une fenetre simple
* @param string formulaire Nom du formulaire
*/
function validerFormulairePopupOpener(pparent, formulaire){
	if(pparent == true){
		var elm = parent.window.opener.document.getElementsByName(formulaire);
		if(elm[0]){
			elm[0].submit();
		}
	} else {
		var elm = window.opener.document.getElementsByName(formulaire);
		if(elm[0]){
			elm[0].submit();
		}
	}
}

/**
* Assigne une valeur a un champ du formulaire dans le parent de la fenetre
*
* @param string champ Nom du champ
* @param string valeur valeur a affecter au champ
*/
function popupLocation(link){
	window.opener.document.location = link;
}

/**
* Inverse une image par une autre (si image = image1 => image = image2 et inversement)
*
* @param string img Objet image
* @param string url Url de l'image
* @param string img1 Image1
* @param string img2 Image2
*/
function invertImages(img, url, img1, img2){
	eval("var reg_exp = /"+img1+"$/;");
	
	var elm = document.getElementsByName(img);
	if(reg_exp.exec(elm[0].src)){
		elm[0].src = url+img2;
	} else {
		elm[0].src = url+img1;
	}
}

/**
* Change une image par une autre
*
* @param string img Objet image
* @param string url Url de l'image
* @param string new_img Image
*/
function changeImages(img, url, new_img){
	var elm = document.getElementsByName(img);
	elm[0].src = url+new_img;
}

/**
* Calcul la hauteur restante dans la page pour afficher un calque d?filant.
*
* @param	string	id_div				Nom du calque
* @param	integer	used_height		Hauteur d?j? utilis?e ? retirer
*/
function setDivHeight(id_div, used_height) {
	var myHeight = 0;
	if( typeof( window.innerWidth ) == 'number' ) {
		myHeight = window.innerHeight;
	} else if( document.documentElement && document.documentElement.clientHeight ) {
		myHeight = document.documentElement.clientHeight;
	} else if( document.body && document.body.clientHeight ) {
		myHeight = document.body.clientHeight;
	}
	document.getElementById(id_div).style['height'] = (myHeight - used_height) < 0 ? 0 : myHeight - used_height;
}

/**
* Calcul la taille de chaque colonne d'un tableau pour les affecter ? un autre tableau 
* (utilis? pour garder les libell?s fixes et faire d?filer les donn?es).
*
* @param	string	headTable		Tableau d'en-t?te
* @param	integer	bodyTable		Tableau de donn?es
*/
function setWidth(headTable,bodyTable) {
	tHeadObj = document.getElementById(headTable).getElementsByTagName('col');
	tBodyObj = document.getElementById(bodyTable).getElementsByTagName('col');
	for(i=0;i<tHeadObj.length;i++) {
		if(tBodyObj[i].offsetWidth < tHeadObj[i].offsetWidth) {
			tBodyObj[i].style['width'] = tHeadObj[i].offsetWidth - (document.all ? 6:0);
		} else {
			tHeadObj[i].style['width'] = tBodyObj[i].offsetWidth - (document.all ? 6:0);
		}
	}
}

/**
* Deplace les valeurs selectionnées d'un selecteur a un autre
*
* @param string select_src
* @param string select_dest
*/
function moveEntrieSelectToSelect(select_src, select_dest){
	// Recup les valeurs selectionnees
	var elmSrc = document.getElementsByName(select_src);
	var elmDest = document.getElementsByName(select_dest);
	
	if(elmSrc[0] && elmDest[0]){
		if (elmSrc[0].options.selectedIndex>=0) {
			o=new Option(elmSrc[0].options[elmSrc[0].options.selectedIndex].text,elmSrc[0].options[elmSrc[0].options.selectedIndex].value);
			elmDest[0].options[elmDest[0].options.length]=o;
			elmSrc[0].options[elmSrc[0].options.selectedIndex]=null;
		}
	}
}

/**
* Deplace les valeurs selectionnées d'un selecteur a un autre
*
* @param string select_src
* @param string select_dest
*/
function changeContentSelect(select, list){
	// Recup les valeurs selectionnees
	var elm = document.getElementsByName(select);
	
	if(elm[0]){
		// Empty all entries
		lengths = elm[0].options.length;
		for(i = lengths; i >= 0; i = i-1){
			elm[0].options[i]=null;
		}
	
		// Insert entries
		for(var clef in list){
			o=new Option(list[clef],clef);
			elm[0].options[elm[0].options.length]=o;
		}
	}
}

/**
* Change une image par une autre pour la rubrique setup_button
*
* @param string img Objet image
* @param string url Url de l'image
* @param string new_img Image
*/
function changeIconesExtension(selecteur, img, url_base, url_extension){
	var elmSelect = document.getElementsByName(selecteur);
	var value = elmSelect[0].options[elmSelect[0].options.selectedIndex].value
	var infos = value.split('__');
	
	var elm = document.getElementsByName(img);
	if(infos[0] != '' && infos[1] != '' && infos[2] != ''){
		if(infos[0] == 'base'){
			elm[0].src = url_base+'/icones/'+infos[1]+'/'+infos[2];
		} else {
			elm[0].src = url_extension+'/icones/'+infos[1]+'/'+infos[2];
		}
	} else {
		elm[0].src = url_base+'/gui/spacer.gif';
	}
}

/**
* Selectionne toutes les entrees d'un selecteur
*
* @param string selecteur
*/
function selectAllEntrieSelect(selecteur){
	var elm = document.getElementsByName(selecteur);
	
	if(elm[0]){
		for(i = 0; i < elm[0].options.length; i++){
			elm[0].options[i].selected = true;
		}
	}
}

/**
* Deselectionne toutes les entrees d'un selecteur
*
* @param string selecteur
*/
function deselectAllEntrieSelect(selecteur){
	var elm = document.getElementsByName(selecteur);
	
	if(elm[0]){
		for(i = 0; i < elm[0].options.length; i++){
			elm[0].options[i].selected = false;
		}
	}
}

/**
* Deplace les entr?es d'un select
*
* @param string selecteur
* @param string way
*/
function moveEntrieSelectInside(selecteur, way){
	var elm = document.getElementsByName(selecteur);
	var selecteurmax = elm[0].length-2;
	var selecteursel = elm[0].selectedIndex;
	
	if ((selecteursel < 0) || (selecteursel < 1 && way == -1) || (selecteursel > selecteurmax && way == 1)) {
	} else {
		tmpopt = new Option( elm[0].options[selecteursel+way].text, elm[0].options[selecteursel+way].value );
		
		elm[0].options[selecteursel+way].text = elm[0].options[selecteursel].text; 
		elm[0].options[selecteursel+way].value = elm[0].options[selecteursel].value; 
		elm[0].options[selecteursel+way].selected = true;
		
		elm[0].options[selecteursel].text = tmpopt.text;             
		elm[0].options[selecteursel].value = tmpopt.value;
		elm[0].options[selecteursel].selected = false;
	}
}

/**
* change d'onglet sur le viewer
*
* @param string name_div
* @param integer start
* @param integer end
* @param integer actif
* @param string url_div
* @param string color_actif
* @param string color
* @param integer exception
*/
function changeViewerOnglet(name_div,start,end,actif,url_img,color_actif,color,exception){
	for(var i = parseInt(start); i <= parseInt(end); i++){
		if(i != exception){
			if(i == actif){
				// Div
				changeDisplay(name_div+i, 'block');
				
				// image
				MM_swapImage('imgongletstart'+i,'',url_img+'viewer_onglet_actif_start.gif',1);
				MM_swapImage('imgongletend'+i,'',url_img+'viewer_onglet_actif_end.gif',1);
				
				// Color
				document.getElementById('tdonglet'+i).style.backgroundColor = color_actif;
			} else {
				// Div
				changeDisplay(name_div+i, 'none');
				
				// image
				MM_swapImage('imgongletstart'+i,'',url_img+'viewer_onglet_start.gif',1);
				MM_swapImage('imgongletend'+i,'',url_img+'viewer_onglet_end.gif',1);
				
				// Color
				document.getElementById('tdonglet'+i).style.backgroundColor = color;
			}
		}
	}
}

/**
* Start the timer to refresh page
*/
oTimeout = '';
function startTimerReload(selecteur, form){
	var elmSelect = document.getElementsByName(selecteur);
	if(elmSelect[0].value != 'none'){
		oTimeout = setTimeout("validerFormulaire('"+form+"')", parseInt(elmSelect[0].value));
	} else {
		clearTimeout(oTimeout);
	}
}

/**
* Fonction de stockage en cookie les images selectionn?
*
* @param string formulaire
* @param string name
*/
function saveSelectionInCookie(formulaire, name){	
	// Vidage de l'ancienne selection
	DeleteCookie ("list_image_id");
	
	// Enregistrement des informations
	var elmForm = document.getElementsByName(formulaire);
	eval("var reg = /^"+name+"/");
	
	nb = 0;
	list_image_id = '';
	for (i = 0; i < elmForm[0].elements.length; i++){
		if (elmForm[0].elements[i].type == 'checkbox' && reg.exec(elmForm[0].elements[i].name) != null){
			if(elmForm[0].elements[i].checked && elmForm[0].elements[i].value != ''){
				if(list_image_id != ''){
					list_image_id = list_image_id+'-';
				}
				list_image_id = list_image_id+elmForm[0].elements[i].value;
				nb = nb + 1;
			}
		}
	}
	
	SetCookie ("list_image_id", nb+'__'+list_image_id);
}

/**
* Change le display d'un div depuis le selcteur de portee
*
* @param string id_div
* @param string selecteur
* @param string valueOpen
*/
function changeDisplayBySelectPorte(id_div, selecteur, valueOpen, valueClose){	
	var value = getValueSelecteur(selecteur);
	if(value != valueOpen){
		changeDisplay(id_div, 'block');
	} else {
		changeDisplay(id_div, 'none');
	}
}

/**
* Change le display d'un div depuis le selcteur de portee
*
* @param integer status
* @param integer gid
* @param integer uid
*/
function selectRsrc(status,gid,uid) {
	document.formrsrc.status.value = status;
	document.formrsrc.gid.value = gid;
	document.formrsrc.uid.value = uid;
	document.formrsrc.submit();
}

/**
* Fonction qui "disable" des element dont le nom commence par "name" en fonction d'une case a cocher
*
* @param string formulaire
* @param string name
*/
function disabledNameFromCheckbox(formulaire, checkbox, name_disabled){	
	// Protect caractere [ and ] to not disturb regexp
	var elements = name_disabled.split(/\[/);
	name_disabled = elements.join("\\\[");
	elements = name_disabled.split(/\]/);
	name_disabled = elements.join("\\\]");
	
	// Get checkbox value
	var elmCheckbox = document.getElementsByName(checkbox);
	var check = elmCheckbox[0].checked;
	
	// Enregistrement des informations
	var elmForm = document.getElementsByName(formulaire);
	eval("var reg = /^"+name_disabled+"/");
	
	for (i = 0; i < elmForm[0].elements.length; i++){
		if (reg.exec(elmForm[0].elements[i].name) != null){
			if(check){
				elmForm[0].elements[i].disabled = false;
			} else {
				elmForm[0].elements[i].disabled = true;
			}
		}
	}
}

function changeDivActions(id, path_theme){
	if(document.getElementById('a_'+id).style.display == 'block'){
 		document.getElementById('a_'+id).style.display = 'none';
 		document.getElementById('i_'+id).src = path_theme+'/f_down.gif';
 	} else {
 		document.getElementById('a_'+id).style.display = 'block';
 		document.getElementById('i_'+id).src = path_theme+'/f_up.gif';
 	}
}
///////////////////////////////////////////////////////////////////////////////////////////////////