/*!
 * Almega WordPress Theme
 * Main Behaviour JavaScript
 * © 2010 Daytona Communication AB
 */

(function($){ // Sandbox our code

  // Add .js class to the <html> element
  $('html').addClass('js');


  /**
   * On DOM Ready:
   */

  $(function() {
    $('#searchform input:first').defaultFieldText({ textSuffix: " …" });
    $('#subsidiary li.widget_almega_archives div.archives').archivesDropdown();
  });


  /**
   * Archives Dropdown Menu
   */

  $.fn.archivesDropdown = function(options) {
    options = jQuery.extend({
      triggerPath: 'h4',
      menuPath:    'ul',
      duration:    200,
      activeClass: 'active'
    }, options);

    var doc = $(document);

    var showOrHide = function(i) {
      if (collection[i].isVisible)
        hide(i, true);
      else
        show(i);
    };

    var show = function(i) {
      collection[i].menu.animate({
        height:  'show',
        opacity: 'show'
      }, options.duration);

      collection[i].isVisible = true;
      collection[i].container.addClass(options.activeClass);
    };

    var hide = function(i, force) {
      if (collection[i].isOver && !force) return;

      collection[i].menu.animate({
        height:  'hide',
        opacity: 'hide'
      }, options.duration);

      collection[i].isVisible = false;
      collection[i].container.removeClass(options.activeClass);
    };

    var collection = new Array();

    return this.each(function(i) {
      var container = $(this);
      var trigger   = $(options.triggerPath, container);
      var menu      = $(options.menuPath, container);

      collection[i] = {
        container: container,
        trigger:   trigger,
        menu:      menu,
        isOver:    false,
        isVisible: false
      };

      menu.animate({ height: 'hide', opacity: 'hide' }, 0);

      trigger.bind('click', function() { showOrHide(i); });
      container.bind('mouseenter', function() { collection[i].isOver = true;  });
      container.bind('mouseleave', function() { collection[i].isOver = false; });

      doc.bind('mousedown', function() { hide(i); });
    });
  };


  /*!
   * Default Field Text jQuery Plugin
   * Copyright (c) 2009 Johan Sahlén
   * Licensed under the MIT license.
   */
  $.fn.defaultFieldText = function(options) {
    options = jQuery.extend({
      defaultClass: "default",
      text: null,
      textSuffix: "",
      resetOnSubmit: true
    }, options);

    var setText = function(clear) {
      var field = $(this);
      var cur   = field.val();
      var def   = field.data('defaultText');

      if (clear && cur == def) {
        field.removeClass(options.defaultClass);
        field.val("");
      }

      if (!clear && (cur.match(/^\s*$/) || cur == def)) {
        field.addClass(options.defaultClass);
        field.val(def);
      }
    };

    this.each(function() {
      var field = $(this);
      var text  = "";

      if (options.text) {
        text = options.text;
      } else {
        var id    = field.attr('id');
        var label = $('label[for='+id+']');
        text = label.text();
      }

      field.data('defaultText', text+options.textSuffix);

      field.focus(function() {
        setText.call(this, true);
      }).blur(function() {
        setText.call(this);
      });

      setText.call(field.get(0));

      if (options.resetOnSubmit) {
        var form = field.parents('form:first');
        form.submit(function() {
          setText.call(field.get(0), true);
        });
      }
    });

    return this;
  };

}(jQuery));

