var Global = {
  
  spinner: function(visible) {
    if (visible)
    $('spinner').visualEffect('appear', {duration: 0.2});
    else
    $('spinner').visualEffect('fade', {duration: 0.2});
  },
  
  getIDFromEvenmentHrefURL: function(ev, sep) {
    if (sep == null) sep = '=';
    var source_id = Event.element(ev).toString();
    return source_id.substring(source_id.lastIndexOf(sep) + 1, source_id.length);
  },
  
  getIDFromEvenmentDOMID: function(ev, sep) {
    if (sep == null) sep = '_';
    var source_id = Event.element(ev).id;
    return source_id.substring(source_id.lastIndexOf(sep) + 1, source_id.length);
  },
  
  getUniquePartBetweenEvenmentClassNameAndEvenmentID: function(ev, sep) {
    if (sep == null) sep = '_';
    var ev_class = Event.element(ev).className;
    var source_id = Event.element(ev).id;
    return source_id.sub(ev_class+sep, '');
  },
  
  insertLabel: function(link, target_text_field) {
    var label = link.target.innerHTML.strip();
    $(target_text_field).value = label;
  },
  
  insertTag: function(link, target_text_field) {
    tag_without_quotes = link.target.innerHTML.strip().gsub(',','');
    
    // if(tag_without_quotes.include(' '))
      // final_tag = "\""+tag_without_quotes+"\"";
    // else
      final_tag = tag_without_quotes;
    if($(target_text_field).value.empty() || $(target_text_field).value.strip().endsWith(","))
      $(target_text_field).value += final_tag;
    else
      $(target_text_field).value += ", " + final_tag;
  },
  
  setActiveButton: function(button_name) {
    var lis = $$('li.on');
    lis.each (function(li) {
      li.removeClassName('on');
    });
    $(button_name).addClassName('on');
  },
  
  toggleMultipleClass: function(item, classNames) {
    classNames.each (function(className) {
      item.toggleClassName(className);
    });
  },

  scrollToWith2Item: function(item1, item2, choice) {
    if(choice) {
      $(item1).scrollTo();
    } else {
      $(item2).scrollTo();
    }    
  },
  
  show: function(item, make_visible) {
    if(make_visible) {
      $(item).show();
    } else {
      $(item).hide();
    }    
  },
  
  showMultiple: function(fields, to_show) {
    fields.each (function(field) {
      Article.show(field, to_show);
    });
  }
};

var Article = {
  article_id: null,
  
  togglePreviewArticleArea: function(div_name, is_textile){
    if (is_textile || $('article_format').options[$('article_format').selectedIndex].value.toLowerCase().valueOf() == "textile")
      $('preview_'+div_name).innerHTML = Article.publishText($(div_name).value);
    else
      $('preview_'+div_name).innerHTML = $(div_name).value;
      
    if($('preview_'+div_name+'_button').innerHTML == 'Preview')
      $('preview_'+div_name+'_button').innerHTML = 'Edit';
    else
      $('preview_'+div_name+'_button').innerHTML = 'Preview';
      
    Element.toggle(div_name);
    Element.toggle('preview_'+div_name);
    return false;
  },
  
  showHideToolbar: function(){
    var toolbars = $$('.textile-toolbar');
    if ($('article_format').options[$('article_format').selectedIndex].value.toLowerCase().valueOf() == "html"){
      toolbars.each(function(toolbar) {toolbar.hide();});
    }else{
      toolbars.each (function(toolbar) {toolbar.show();});
    }
  },
  
  publishText: function (str){
    // if(window.RegExp){
      // var regexp = /"([^"\(]+)\s?(?:\(([^\(]*)\))?":(\S+)(\/?)([^[:alnum:]\/;]|[1-9^]*)(\s|$)/g;
      //str = document.getElementById("post").value;
      
      var regexp = /"([^"\(]+)\s?(?:\(([^\(]*)\))?":(\S+)(\/?)([^[:alnum:]\/;]|[1-9^]*)(\s|$)/g;
      var newstr = str.replace(regexp, '<a href="$3$4" title="Link to: $1" rel="external">$1</a> '); 
      
      var regexp2 = /\_(.+?)\_ */g;
      var newstr2 = newstr.replace(regexp2, "<em>$1</em> ");
      
      var regexp3 = /\*(.+?)\* */g;
      var newstr3 = newstr2.replace(regexp3, "<strong>$1</strong> ");
      
      var regexp4 = /^\s+|\s+$/g;
      var newstr4 = newstr3.replace(regexp4, '');
      
      var regexp5 = /\n?(.+?)(?:\n\s*\n|\\z)/g;
      // var regexp5 = /\n?(.+?)(?:\n\s*\n)/g;
      var newstr5 = newstr4.replace(regexp5, '<p>$1</p>');
      
      var regexp6 = /(\r|\n)/g;
      var newstr6 = newstr5.replace(regexp6, "<br />");
      
      var regexp7 = /\[\[([[\S][^[]*)\]\[([[\S][^[]*)\]\]/g;
      var newstr7= newstr6.replace(regexp7, "<br /><img src=\"/www/medias/$2/$1\" /><br />");
      
      var regexp8 = /\[\[(http[\S\.\/:][^[]*)\]\[(\d*)\]\[(\d*)\]\]/g;
      var newstr8 = newstr7.replace(regexp8, "<br /><object width=\"$2\" height=\"$3\"><param name=\"movie\" value=\"$1\"></param><param name=\"wmode\" value=\"transparent\"></param><embed src=\"$1\" type=\"application/x-shockwave-flash\" wmode=\"transparent\" width=\"$2\" height=\"$3\"></embed></object><br />");
      
      var regexp9 = /\_(.+?)\_ */g;
      var newstr9 = newstr8.replace(regexp9, "<em>$1</em> ");
      
      var regexp10 = /src="(.*)(<em>|<\/em> *)/g;
      var newstr10 = newstr9.replace(regexp10, 'src="$1_');
      
      var regexp11 = /src="(.*)(<em>)/g;
      var newstr11 = newstr10.replace(regexp11, 'src="$1_');
      
      return newstr11;
    // }
  },
  
  previewTextilizedText: function() {
    $('article_body').value = Article.preview_textilized_text;
  },
  
  insertVideo: function(link) {
    video = $('video_select').options[$('video_select').selectedIndex].value;
    
    // if($('article_format').options[$('article_format').selectedIndex].value == 'textile'){
    $('article_body').value +=  "\nvideo_start" +
                                "\nvideo_allowfullscreen:true" +
                                "\nvideo_width:480" +
                                "\nvideo_height:270" +
                                "\nvideo_file:|" + video + "|" +
                                "\nvideo_image:|http://site.com/your_image.jpg|" +
                                "\nvideo_end";
  },
  
  setFeaturedImage: function() {
    var feats = $$('span.featured');
    feats.each (function(feat){
      Effect.Fade(feat, { delay: 0.0, duration: 1.0});
    });

    if (!$('images_ul')) return;
    var feat_span = Builder.node('span', {className: 'featured'});
    var first = $('images_ul').firstChild;

    feat_span.hide();
    first.appendChild(feat_span);
    Effect.Appear(feat_span, { delay: 0.3, duration: 1.0});
  },
  
  showBox: function(box) {
      LightBoxStyle.start(box);
      return false;
  },

  hideBox: function(box) {
      LightBoxStyle.end(box);
      return false;
  }
};