/**
 * Fonctions communes à tous les FO et tous les BOP
 */ 

function jaf_majAjax( champ , nom_champ , nom_concept , id , cle ) {
    $.post('/majAjax',
    		{   id      : champ.id,   
            champ   : nom_champ,      
            concept : nom_concept,
    	      primary : id,         
            valeur  : $(champ).val(),   
            cle     : cle
    		}, function(data) {eval(data);});
}

/**
 * jaf_plus : permet de faire apparaire le div class=closed et faire disparaitre le div open sur click de la class=clickable
 * @param speed : temps mis pour l'apparition de la zone fermée
 */
$.fn.jaf_plus = function(options) {
    var defaults = {speed: 350};
    var opts = $.extend(defaults, options);    // la fonction extend() permet d'ajouter la gestion des options par défaut.
    return this.each(function() {
      var o = $.meta ? $.extend({}, opts, $this.data()) : opts;
      $('.closed',this).css('display','none');
      $('.clickable',this).css('cursor','pointer');
      $('.open.clickable,.open .clickable',this).unbind('click').bind('click',function() {zone=$(this).closest('.jaf_plus'); $('.open',zone).slideUp(0); $('.closed',zone).slideDown(o.speed);});
      $('.closed.clickable,.closed .clickable',this).unbind('click').bind('click',function() {zone = $(this).closest('.jaf_plus');$('.closed',zone).slideUp(o.speed);$('.open',zone).slideDown(0);});
    });
};

$.fn.jaf_post = function(options) {
	var defaults = { href : document.location.href }; 
	var opts = $.extend(defaults, options); 
	return this.each(function() { 
		$(this).css('cursor','pointer').unbind('click').bind('click',function(){
			for (var i=0,l=this.attributes.length;i<l;i++) { opts[this.attributes[i].nodeName] = this.attributes[i].nodeValue; }
			opts = addOptsId(opts,this);
			$.post(opts.href,opts,function(data){eval(data);});
			return(false);});});
}; 

function addOptsId(opts,obj) {
    re = new RegExp('^([a-z_]+)([0-9]+)$');
    if ( m = re.exec(obj.id) )
    	opts[m[1]]=m[2];
	return (opts);	
}

function ouvreInfo(id,w) {
  $(id).dialog({ 
                 width: w,
                 modal: true });
}
function zaf_deplie(id) {
  $(id+'_puce').toggleClass('puce_marron_hover');
  if ($(id).css('display') == 'none')
      $(id).slideDown(400);
  else
      $(id).slideUp(400);
}

function jaf_indicateur_majAjax(champ) {
	if ($('#'+champ).attr('type') == 'checkbox') {
	  alert('ok');
	} else {
		couleur_fond = $('#'+champ).css('background-color');
    $('#'+champ).animate({backgroundColor: '#80FF80'},300).animate({backgroundColor: '#80FF80'},1000).animate({backgroundColor: couleur_fond},300);
	}
}

$(document).ready(function(){
  
	$(".jaf_plus").jaf_plus();
	$(".jaf_post").jaf_post();   
	$(".deplie").hide();   

	$(".nondispo").click(function () {
                 $mess = $('<div></div>').html('Fonctionnalité pas encore disponible.<br><br>Prochainement sur votre solution').dialog({ autoOpen: false, 
                                                                                                                                         title: 'Information',
                                                                                                                                         buttons: {
                                                                                                                                  				  Fermer: function() {
                                                                                                                                  					             $(this).dialog('close');
                                                                                                                                  				           }
                                                                                                                                                  }
                                                                                                                                           } );
                 $mess.dialog('open'); 
                 return(false);
                 }
  );
	
  //class=jq_txt_defaut
  //Version 1.02 du 12/02/2009
  //Permet de mettre une valeur par défaut à l'interieur d'un input type=text, lorsqu'il a la classe jq_txt_defaut et un alt
  //Ex : <input type=\"text\" name=\"RECH\" id=\"RECH\" alt=\"Indiquez un produit\" class=\"jq_txt_defaut\" value=\"".htmlentities(stripslashes($RECH))."\" />
  $("input.jq_txt_defaut[value=]") //pour ceux qui n'ont pas de value
      .attr("value", function(){
        return this.alt;            //on met leur alt comme value
      });
    
  var txt_defaut_tab_deja_clique = new Array(); //pour déterminer le premier click
  var txt_defaut_i=0;                           //pour attribuer un id aux formulaires qui n'en ont pas
  $("form:has(input.jq_txt_defaut)")            //pour les formulaires qui ont des input class=jq_txt_defaut
    .each(function(){                           //on les parcourt pour pouvoir incrémenter txt_defaut_i
      //si le formulaire n'a pas d'id, on lui en attribue un
      if(this.id.length==0){
        if(this.name.length>0)
          this.id = this.name;           //on met le name s'il y en a un
        else                  
          this.id = 'form_'+txt_defaut_i;//sinon on prend une variable incrémentale  
      }
    
      $(this).click(function(){                   //onClick du formulaire
        if(!txt_defaut_tab_deja_clique[this.id]){ //seulement le premier click
          txt_defaut_tab_deja_clique[this.id]=true;
          $(this).find("input.jq_txt_defaut")     //on cherche les input concernés de ce formulaire
            .each(function(){                     //on les parcourt
              if(this.value==this.alt)            //si leur value vaut toujours le alt
                this.value='';                    //on vide leur value
            })    
        }   
      }) 
      txt_defaut_i++;                                              
    })
    
    
    
    
  //class=jq_suiveuse
  //Version 1.0 du 22/09/2008
  //Mouche suiveuse jQuery : mettre class=jq_suiveuse à un conteneur. Son padding-top s'adaptera pour que son contenu reste à l'écran
  //Ex : Texte qui disparaît <div class="jq_suiveuse">Texte qui reste à l'écran</div>  
  //NECESSITE LA FONCTION JS findPos() !!
  if($("body").find(".jq_suiveuse").length){         //si on a des mouches suiveuses
    $(window).scroll(function(){                     //onScroll
      $(".jq_suiveuse").each(function(){             //On parcourt les mouches suiveuses
        pos_y=findPos(this).y;                       //position du conteneur par rapport au haut de la page
        scroll_y=document.documentElement.scrollTop; //position du scrolling actuel
        var jq_padding_top = 0;
        if(scroll_y>pos_y)                           //on a scrollé plus bas que le haut du conteneur
          jq_padding_top = scroll_y - pos_y;
        //$(this).css("padding-top", paddingTop+"px"); 
        $(this).stop().animate({paddingTop: jq_padding_top+"px"}, 'normal');
      }); 
    });
  }


  // class= jq_menu
  // Version 1.0 du 18/11/2008
  // Menu avec Sous menus qui apparaissent
  $(".jq_menu li ul").css("display", "none")
                     .css("opacity", 0);
    $(".jq_menu li:has(ul)").hover(function() {
      $(this).children("ul").css("display", "block");
      $(this).children("ul").fadeTo('fast', 0.9);
    }, function() {
      $(this).children("ul").fadeTo('fast', 0, function(){
                                                   $(this).css("display", "none");
                                                 });
    });
    
  $(".jq_dialog_modal").dialog({
	  modal:true,
	  hide:'fade',
	  buttons: {
		  Ok: function() {
			  $(this).dialog('close');
		  }
	  }

  });    
});  


  function print_r(obj) {
  win_print_r = window.open('about:blank', 'win_print_r');
  win_print_r.document.write('<html><body>');
  r_print_r(obj, win_print_r);
  win_print_r.document.write('</body></html>');
 }

 //Sous-fonction pour print_r
 function r_print_r(theObj, win_print_r) {
  if(theObj.constructor == Array ||
   theObj.constructor == Object){
   if (win_print_r == null)
	win_print_r = window.open('about:blank', 'win_print_r');
   }
   for(var p in theObj){
	if(theObj[p].constructor == Array||
	 theObj[p].constructor == Object){
	 win_print_r.document.write("<li>["+p+"] =>"+typeof(theObj)+"</li>");
	 win_print_r.document.write("<ul>")
	 r_print_r(theObj[p], win_print_r);
	 win_print_r.document.write("</ul>")
	} else {
	 win_print_r.document.write("<li>["+p+"] =>"+theObj[p]+"</li>");
	}
   }
  win_print_r.document.write("</ul>")
 }    

