var curStep = 1;
var steps = new Array();
function imagegallery(num) {
steps = document.getElementById("gallery_nav").getElementsByTagName("li");
  if (num != curStep) {
    elem = document.getElementById("gallery" + num);
    prevElem = document.getElementById("gallery" + curStep);
    elem.style.display = "block";
    prevElem.style.display = "none";
    steps[curStep-1].className = "";
    steps[num-1].className = "active";
    curStep = num;
  }
};

var slideDuration = 0.2;

function toggleElement(element, options) {
  Element.visible(element) ? hideElement(element, options) : showElement(element, options);
}

function showElement(element, options) {
  if($(element) && !Element.visible(element)) {
    options = options || {};
    new Effect.BlindDown(element, {duration: slideDuration,
      afterFinish: function() {
        Element.undoClipping(element);
        $(element).style.width = "auto";
        $(element).style.height = "auto";
        if(options.afterFinish) options.afterFinish();
      }});
  }
}

function hideElement(element, options) {
  if($(element) && Element.visible(element)) {
    options = options || {};
    new Effect.BlindUp(element, {duration: slideDuration,
      afterFinish: function() {
        Element.undoClipping(element);
        Element.hide(element);
        if(options.afterFinish) options.afterFinish();
      }});
  }
}

var startPreviewMode = function(url) {
  new Ajax.Updater('live_preview', url, {asynchronous:true, method:'put', evalScripts:true, parameters:Form.serialize('preview_form')});
  fo = new Form.Observer('preview_form', 3, function(element, value) {
    new Ajax.Updater('live_preview', url, {asynchronous:true, method:'put', evalScripts:true, parameters:value});
  });
};

function toggleBar () {
  element = $('editbar');
  if (Element.visible(element)) {
    Cookie.set({bar: 0}, {path:'/'});
    new Effect.Fade (element, {duration: 0.3});
  } else {
    Cookie.set({bar: 1}, {path:'/'});
    new Effect.Appear (element, {duration: 0.3});
  };
};

// ===========================================================================
// Flash
// ===========================================================================
var Flash = {
  show: function(flashType, message) {
    new Effect.ScrollTo('flash-' + flashType);
    $('flash-' + flashType).innerHTML = '';
    if(message.toString().match(/<li/)) message = "<ul>" + message + '</ul>';
    $('flash-' + flashType).innerHTML = message;
    $('flash-' + flashType).show();
    setTimeout(Flash['fade' + flashType[0].toUpperCase() + flashType.slice(1, flashType.length)].bind(this), 8000);
  },

  errors: function(message) {
    this.show('errors', message);
  },

  notice: function(message) {
    this.show('notice', message);
  },

  fadeNotice: function() {
    $('flash-notice').hide();
  },

  fadeError: function() {
    $('flash-errors').hide();
  }
};

document.observe("dom:loaded", function() {
  ['notice', 'errors'].each(function(flashType) {
    var el = $('flash-' + flashType);
    if(el.innerHTML != '') Flash.show(flashType, el.innerHTML);
  });
});

// ===========================================================================
// The Attacher
// ===========================================================================

var TheAttacher = {
  addSomething: function(textarea, something) {
    textarea.focus();
    if(textarea.createTextRange) {
      document.selection.createRange().text += something;
    } else if(textarea.setSelectionRange) {
      var len = textarea.selectionEnd;
      textarea.value = textarea.value.substr(0, len)
      + something + textarea.value.substr( len );
      textarea.setSelectionRange(len+something.length,len+something.length);
    } else { textarea.value += something; }
  },

  select: function(text) {
    var textarea = $('body');
    TheAttacher.addSomething(textarea, text);
    return false;
  }
};
