/***************************************************************
/*  WebApp common js
/***************************************************************/
/***************************************************************/
/*  Page standard function
/***************************************************************/

    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_openBrWindow(theURL,winName,features) { //v2.0
      window.open(theURL,winName,features);
    }
    
    function MM_jumpMenu(targ,selObj,restore){ //v3.0
      eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
      if (restore) selObj.selectedIndex=0;
    }
    
    function Check(){ //v3.0
      eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
      if (restore) selObj.selectedIndex=0;
    }
    
    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_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_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];}
    }

/***************************************************************/
/*  Today date presentation
/***************************************************************/
function getDateMessage(){
    var navvers = navigator.appVersion.substring(0,1);
    var today = new Date;
    var jour = today.getDay();
    var numero = today.getDate();
    if (numero<10) numero = "0"+numero;
    var mois = today.getMonth();
    if (navvers > 3){
      annee = today.getFullYear();
    } else {
      annee = today.getYear();
    }
    
    TabJour = new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
    TabMois = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
    var messageDate = TabJour[jour] + " " + numero + " " + TabMois[mois] + " " + annee;
   return messageDate;
}

/***************************************************************/
/*  SI-TOOLS functions */
/***************************************************************/

function gotoPage(num, champNumPage, formulaire) {
    champNumPage.value = num;
    formulaire.submit();
}

function gotoRelativePage(num, champNumPage, formulaire) {
    var numPage = new Number(champNumPage.value);
    numPage = numPage + num;
    champNumPage.value = numPage;
    formulaire.submit();
}

function submitFormulaireSva(formulaire, svaValue, extension) {
    if (extension != '') {
    	var oldAction = formulaire.action;
    	formulaire.action = oldAction; // + extension;
    }
    formulaire.sva.value = svaValue;
    formulaire.submit();
}

function submitFormulaireSva2(formulaire, svaValue, jddRestreints) {
	formulaire.jddRestreints.value = jddRestreints;
	submitFormulaireSva(formulaire, svaValue);
}

function detailData(formulaire, jeuIdent, ident) {
    formulaire.sva.value = "detailData";
    formulaire.jeuIdent.value = jeuIdent;
    formulaire.ident.value = ident;
    formulaire.forUpdate.value = false;
    formulaire.formValid.value = false;
    formulaire.submit();
}

function detailDataForUpdate(formulaire, jeuIdent, ident) {
    formulaire.sva.value = "detailData";
    formulaire.jeuIdent.value = jeuIdent;
    formulaire.ident.value = ident;
    formulaire.forUpdate.value = true;
    formulaire.formValid.value = false;
    formulaire.submit();
}

function updateData(formulaire) {
    formulaire.sva.value = "detailData";
    formulaire.forUpdate.value = true;
    formulaire.formValid.value = true;
    formulaire.submit();
}

function next(form){
    form.numPage.value++;
    form.target="_self";
    form.submit();
}
  
function previous(form){
    form.numPage.value--;
    form.target="_self";
    form.submit();
}
 
function pageNumber(form, page){
    form.numPage.value=page;
    form.target="_self";
    form.submit();
} 

// Mise à jour d'une liste de checkbox (de sélection de donnée) à 
// partir du changement du checkbox de sélection d'un jeu de données
function miseAJourCheckbox(checkEnCours, formulaire, tableau) {
	var check = checkEnCours.checked;
	//alert('!!! nb check : ' + tableau.length);
	for (var i = 0; i < tableau.length; i++) {
	  //alert(i + ': cocher ' + tableau[i] + ' : ' + check)
	  formulaire.elements[tableau[i]].checked = check;
	}
	return;
}

// Mise à jour du checkbox du jeu de données à partir d'un checkbox de donnée
// Le but est de décocher celui du jeu dès que celui de la donnée est décoché
function miseAJourCheckboxJdd(checkboxDonnee, checkboxJdd) {
	if (checkboxDonnee.checked == false) {
		checkboxJdd.checked = false;
	}
}

function supprimerContexteEu(formulaire) {
	formulaire.sva.value='supprContexteEu';
	formulaire.submit();
}

function getEspaceUtilisateur(formulaire, valContexte) {
    formulaire.contexte.value=valContexte;
    formulaire.submit();
}

function majCheckboxSuppr(formulaire, tableau) {
	for (var i = 0; i < tableau.length; i++) {
		formulaire.elements[tableau[i]].checked=formulaire.supprimer_tout.checked;
	}
}

function viderPanier(formulaire) {
	formulaire.sva.value='viderPanier';
	formulaire.submit();
}

function supprDonneesEU(formulaire) {
	formulaire.sva.value='supprDonneesEu';
	formulaire.submit();
}

function toggleBox(szDivID, iState) // 1 visible, 0 hidden
{
    if(document.layers)	   //NN4+
    {
       document.layers[szDivID].visibility = iState ? "show" : "hide";
       document.layers[szDivID].display = iState ? "block" : "none";
    }
    else if(document.getElementById)	  //gecko(NN6) + IE 5+
    {
        var obj = document.getElementById(szDivID);
        obj.style.visibility = iState ? "visible" : "hidden";
        obj.style.display = iState ? "block" : "none";
    }
    else if(document.all)	// IE 4
    {
        document.all[szDivID].style.visibility = iState ? "visible" : "hidden";
        document.all[szDivID].style.display = iState ? "block" : "none";
    }
}

function showHideDiv(szDivID)
{
	var visibility;
    if(document.layers)	   //NN4+
    {
       visibility = document.layers[szDivID].visibility;
    }
    else if(document.getElementById)	  //gecko(NN6) + IE 5+
    {
        var obj = document.getElementById(szDivID);
        visibility = obj.style.visibility;
    }
    else if(document.all)	// IE 4
    {
        visibility = document.all[szDivID].style.visibility;
    }
    if (visibility == "show" || visibility == "visible")
    {
    	toggleBox(szDivID, 0);
    }
    else
    {
    	toggleBox(szDivID, 1);
    }
}

function deployDatasetNode(path, postForm) {
	postForm.sva.value = 'deployDataset';
	postForm.path.value = path;
	postForm.submit();
}

function deployGraphNode(path, postForm) {
	postForm.sva.value = 'deployGraph';
	postForm.path.value = path;
	postForm.submit();
}
function graphMultiCriteriaSearch(path, postForm) {
	postForm.sva.value = 'graphMultiCriteriaSearch';
	postForm.path.value = path;
	postForm.submit();
}

function graphDeployAll(postForm) {
	postForm.sva.value = 'deployGraph';
	postForm.globalAction.value = 'deployAll';
	postForm.submit();
}

function graphCollapseAll(postForm) {
	postForm.sva.value = 'deployGraph';
	postForm.globalAction.value = 'collapseAll';
	postForm.submit();
}

function openHelperSva(urlprefix, svaName) {
	var url = urlprefix + '?sva=' + svaName;
	var popup = window.open(url, 'helperSva');
}

function moveElements(fromSelect, toSelect) {
	var toNb = toSelect.length;
	var fromNb = fromSelect.length;
	for (var i = 0; i < fromNb; ) {
	  var curOption = fromSelect.options[i];
	  if (curOption.selected) {
	     toSelect.options.length = toNb + 1;
	     toSelect.options[toNb] = new Option(curOption.text, curOption.value);
	     toNb++;
	     for (var j = i; j < fromNb - 1; j++) {
	     	var nextOption = fromSelect.options[j + 1];
	     	fromSelect.options[j] = new Option(nextOption.text, nextOption.value, nextOption.defaultSelected, nextOption.selected);
	     }
	     fromNb--;
	  }
	  else {
	     i++;
	  }
      fromSelect.options.length = fromNb;
	}
}

function submitHelperSvaValue(theForm, sel) {
	for (var i = 0; i < sel.options.length; i++) {
		sel.options[i].selected = true;
	}
	theForm.submit();
}

// Manage combined lists
var selValuesm;
var refSelects;
function refreshListe(f,s,isDep)
{
  if(isDep!=true){
  	selValues=new Array();
  	refSelects=new Array();
  }
  if(typeof(s)=="undefined")
  	return;
  var tList=getTList(s);
  if(tList==null)
  	return;
  var selV=new Array();j=0;
  for(var i=0;i<s.options.length;i++){
  	if (s.options[i].selected)
  	  selV[j]=s.options[i].value;j++;
  }
  if(selV.length>0 && selV[0]!=""){
  	for(var i=0;i<selV.length;i++)
  	  refreshAssListsValue(f,s,selV[i]);
  }else{
  	for (var i=1;i<s.options.length;i++)
  	  refreshAssListsValue(f,s,s.options[i].value);
  	var tDep=tList[0][1];
  	if(tDep!=null){
  	  for(var i=0;i<tDep.length;i++){
    		var nDep=tDep[i];
    		var sDep=f.elements[nDep.replace("_","[")+"].valeur"];
    		if(refSelects[s.name+nDep]!="" && refSelects[nDep+s.name]!=""){
    		  refSelects[s.name+nDep]="";
    		  refreshListe(f,sDep,true);
    		}
  	  }
  	}
  }
}
function clearList(s)
{
  selValues[s.name]=new Array();j=0;
  for(var i=s.options.length-1;i>=0;i--){
  	if(s.options[i].selected)
  	  selValues[s.name][j]=s.options[i].value;j++;
  	s.options[i]=null;;
  }
	s.options.add(new Option("",""));
	s.options[0].selected=true;
}
function isValueExist(s,v)
{
  for(var i=0;i<s.options.length;i++){
    if(s.options[i].value==v)
      return true;
  }
  return false;
}
function isSelValue(s,v)
{
  for(var i=0;i<selValues[s.name].length;i++){
    if(selValues[s.name][i]==v){
      s.options[0].selected=false;
      return true;
    }
  }
  return false;
}
function fillAllInList(s)
{
  var tList=getTList(s);
  if(tList!=null){
  	clearList(s);
  	for(var i=1;i<tList.length;i++)
  	  s.options.add(new Option(tList[i][0],tList[i][1]));
  }			
}
function getTList(s)
{
  // s.name = criteres[i].valeur, t_name = criteres_i
  var pos=s.name.indexOf("[");
  var name=s.name.substring(0,pos)+"_"+s.name.substring(pos+1,s.name.indexOf("]"));
  eval("var tList=t_"+name+";");
  if(typeof(tList)!="undefined")
	  return tList;
  return null;
}
function refreshAssListsValue(f,s,selValue)
{
  var tList=getTList(s);
  if(tList!=null){
    for(var i=1;i<tList.length;i++){
      if(tList[i][0]==selValue){
    		var tAsso=tList[i][2];
    		if(tAsso!=null){
    		  for(var j=0;j<tAsso.length;j++){
      			var nAss=tList[0][0][tAsso[j][0]];
    		  	eval("var tListAsso=t_"+nAss+";");
      			if(typeof(tListAsso)!="undefined"){
      				var sAss=f.elements[nAss.replace("_","[")+"].valeur"];
      				if(refSelects[nAss]!=""){
      				  refSelects[nAss]="";
      				  clearList(sAss);
      				}
      				indAsso=tAsso[j][1];
      				if(indAsso!=0 && !isValueExist(sAss,tListAsso[indAsso][0])){
      				  sAss.options.add(new Option(tListAsso[indAsso][1],tListAsso[indAsso][0]));
      				  if(isSelValue(sAss,tListAsso[indAsso][0]))
      				 	sAss.options[sAss.options.length-1].selected=true;
    		    	}
    		    	if(indAsso==0)
    		    	  refreshAssListsValue(f,sAss,indAsso,refSelects);
    		      else
    		    	  refreshAssListsValue(f,sAss,tListAsso[indAsso][0],refSelects);
    	    	}
  	  	  }
  	      break;
  	    }
  	  }
    }
  }
}

