/* encoding: UTF-8 */
/* ------------------------------------------------------------------ *\
||     Copyright (c) 2006 Hugsmiðjan ehf. - www.eplica.is             ||
\* ------------------------------------------------------------------ */

var dyslexConfig = {

  _updateExample : function(_form)
  {
    _form = (_form._selectBoxes) ? _form : this.form;
    var _classNames = [];
    for (var i = 0, _selbox; _selbox = _form._selectBoxes[i]; i++)
    {
      var _selValue = _selbox[_selbox.selectedIndex].value;
      DOM.removeClass(_selbox.parentNode, "defaultvalue");
      if (!_selValue)
      {
        DOM.addClass(_selbox.parentNode, "defaultvalue");
      }
      else
      {
        _classNames[_classNames.length] = _selbox.name+"_"+_selValue;
      }      
    }
    _classNames = _classNames.join(" ");

    // is invert on? then apply IE "no multiple className selectors" fix. Stupid IE.
    var invert = _classNames.match(/invert_(on|pale)/);
    if (invert)
    {
      _classNames = _classNames.replace(/((background|color|linkcolor|vowelcolor)_\w+)/g, "$1 "+invert[0]+"_$1");
    }

    $("example").className = _classNames;
    return true;
  },


  wrapVowels : function(_block)
  {
    _block = _block || document.body;
    var _vowelChars = "aeiouyæöáéíóúýøâàäåêèëîìïôòûùüÿ";
    var i = _block.childNodes.length;
    while (i--)
    {
      var _node = _block.childNodes[i];
      var _parent = _node.parentNode;
      switch (_node.nodeType)
      {
        case 3: // TEXT_NODE
          var _buffer = "";
          var _chars = _node.nodeValue.split("");
          for (var c=0, _char; (_char = _chars[c]); c++)
          {
            if (_vowelChars.indexOf(_char.toLowerCase()) == -1) // not a vowel!
            {
              _buffer += _char;
            }
            else // is a vowel!
            {
              _parent.insertBefore(document.createTextNode(_buffer), _node);
              _buffer = "";
              var _vowelElm = document.createElement("span");
              _vowelElm.className = "vowel";
              _vowelElm.innerHTML = _char;
              _parent.insertBefore(_vowelElm, _node);
            }
          }
          _parent.insertBefore(document.createTextNode(_buffer), _node);
          _parent.removeChild(_node);
          break;
        case 1: // ELEMENT_NODE
          this.wrapVowels(_node);
          break;
      }
    }
  },

  _kickPage : function()
  {
    document.body.style.height = (document.body.clientHeight-1) + "px"; 
    setTimeout("document.body.style.height='auto'", 0); 
  },

  _buildExampleBoxAndSaveButton : function()
  {
    var _exampleBox = DOM.makeElement('<div class="examplewrap"><h2>'+this.exampleText.header+'</h2><div id="example">'+this.exampleText.body+'</div></div>');
    var _settingsFieldset = DOM.get("fieldset.settings")[0];
    DOM.insertAfter(_exampleBox, _settingsFieldset);
/*
    var _saveButton = DOM.makeElement(""
      + '<fieldset class="saving" id="saving">'
      + '  <div class="fi_btn"><input value="Vista þessar stillingar" name="save" type="submit" /></div>'
      + '</fieldset>'
    );
    DOM.insertAfter(_saveButton, _exampleBox);
*/
    this.wrapVowels($("example"));
  },


  init : function() {
    var _form = DOM.get("form")[0];
    _form._selectBoxes = DOM.get("select");
    for (var i = 0, _selbox; _selbox = _form._selectBoxes[i]; i++)
    {
      Event.add(_selbox, "change", this._updateExample);
      Event.add(_selbox, "change", this._kickPage); // fixing a rendering bug in Firefox, etc...
    }
    this._buildExampleBoxAndSaveButton();
    this._updateExample(_form);


    // rig the submit-button container element to submit the form when clicked.
    /*
    var _btnElms = DOM.get("div.fi_btn");
    for (var i = 0, _btnElm; _btnElm = _btnElms[i]; i++)
    {
      Event.add(_btnElm, "click", function(e){
        if (this.name)
        {
          this.form.action = (this.form.action.indexOf("?") > -1) ? "&" : "?";
          this.form.action += this.name+"="+this.value;
        }
        this.form.submit();
      }, DOM.get("input", _btnElm)[0]);
    }
    */
  }

};


