$(document).ready(function(){
  $('.jq_include').each(function(){
    $('<script type="text/javascript" src="'+$(this).html()+'"></script>').appendTo('head');
  });
  $('.css_include').each(function(){
    $('<style text/css" media="screen"> @import url('+$(this).html()+');</style>').appendTo('head');
  });
  $('.js_script').each(function(){
    $('<script type="text/javascript">'+$(this).html()+'</script>').appendTo('head');
  });
  $('pre.code').each(function(){
    var content = $(this).html();
    content = content.replace(/<br(( )*\/)?>/gi,"\n");
    var lines = content.split("\n");
    
    $(this).html('');
    var comp = new Array('','&nbsp;','&nbsp;&nbsp;','&nbsp;&nbsp;&nbsp;');
    var lnlen = lines.length.toString();

    for(var lineid in lines){
      var comment = lines[lineid].match(/\/\*(.*?)\*\//i);
      if(!comment) { comment = lines[lineid].match(/&lt;!\-\-(.*?)\-\-&gt;/i); }
      if(comment){ var title = ' title="'+comment[1]+'" class="info"'; lines[lineid] = lines[lineid].replace(/(\/\*(.*?)\*\/|&lt;!\-\-(.*?)\-\-&gt;)/i,'');  }
      else { var title = ''; }
      var linenum = (parseInt(lineid)+1).toString();
      $('<span'+title+'><var class="num">'+comp[(lnlen.length-linenum.length)]+linenum+'</var>'+lines[lineid]+'</span>').appendTo(this);
    }
    
    if($(this).height()>350){ $(this).css({'overflow':'auto','height':350}); }
    
    $('span:odd',this).css('background-color','#f5f5f5');
    if(lines.length>1){ var lns='s'; } else { var lns=''; }
    $(this).before('<div class="precodebar"><div class="but copycode" title="Voir le code brut"></div>'+lnlen+' Ligne'+lns+' -</div>');
    
    
  });
  $('div.precodebar .but').click(function(){
    var pre = $(this).parent().next();
    if(pre.is(':visible')){
      $(this).removeClass('copycode').addClass('toformat').attr('title','Voir le code formaté');
      if(pre.next().hasClass('visu')){
        pre.hide();
        pre.next().show();
      } else {
        var content = '';
        $('span',pre).each(function(){
          html = $(this).html();
          content = content + html.replace(/<var(.*?)<\/var>/i,'');
          content = content + '<br />';
        });
        pre.after('<pre class="visu">'+content+'</pre>');
        if(pre.next().height()>350){ pre.next().css('height',350); }
        pre.hide();
      }
    } else {
      $(this).removeClass('toformat').addClass('copycode').attr('title','Voir le code brut');
      pre.next().hide();
      pre.show();
    }
  });
});
