// Behaviour script for the module /bitar/misc/pickaButton.jsp

(function(){
  var _firstRun = true;
  var _exampleElm  = $("codeexample");
  var _iconListElm = $("iconlist");
  var _imgElms    = DOM.get("img", _iconListElm);
  var _inputElms  = DOM.get("input", _iconListElm);

  var _setLanguages = function(e) {
    var _newLang = this.options[this.selectedIndex].value;
    var i = _imgElms.length;
    while(i--)
    {
      var _img = _imgElms[i];
      _img.src = _img.src.replace(/(-[a-z]{2}){1,2}(\.[^.]+)$/, "-"+_newLang+"$2");
      var _printImageSize = function(_img){
        return function() {
          var _sizeInfoElm = _img.parentNode.parentNode.getElementsByTagName("span")[0];
          _sizeInfoElm.innerHTML = _img.width +" x "+ _img.height +" px";
        };
      };
      setTimeout(_printImageSize(_img), 500);
  /*@cc_on
    if (is_ie.version >= 5.5 && is_ie.version < 7) {
      _img.parentNode.style.display = "inline-block";
      _img.parentNode.style.filter  = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+_img.src+"', sizingMethod='scale')";
      _img.style.visibility = "hidden";
    }
  @*/
    }
  };

  var _setParameter = function(_key, _value)
  {
    if (!_key) { return; }
    _value = _value || ((_value===0)? "0" : "");  // translate all instances of implied `false` to `""`, except `0` which should be passed through

    var _params  = _exampleElm.value.match(/button\/([^"]*)"/)[1];

    var _pattern = new RegExp("(\\?|&amp;)?"+_key+"=[^&]+");
    var _params = _params.replace(_pattern, "");    // remove the current "i" parameter.

    // add the new parameter to the mix - if a `_value` is defined
    if (_value.length>0) { _params += "&amp;"+_key+"="+_value; }

    _params = _params.replace(/^&amp;/, "?");
    _exampleElm.value = _exampleElm.value.replace(/(button\/)[^"]*(")/, "$1"+_params+"$2");

    // give visual feedback.
    if (!_firstRun)
    {
      DOM.addClass(_exampleElm.parentNode, "example-updated");
      setTimeout(function(){ DOM.removeClass(_exampleElm.parentNode, "example-updated"); }, 600);
    }
    else
    {
      _firstRun = false;
    }

  };


  var _setVowelState = function(e)
  {
    _setParameter("vowels", (this.checked? "":"off"));
  };

  // hook up the `onclick` events
  Event.add(_iconListElm, "click", function(e){
    if (e.target.tagName == "INPUT")
    {
      _setParameter("bid", e.target.value);
      e.stopPropagation();
      return true;
    }
    return;
  });
  Event.add($("vowels"), "click", _setVowelState);
  Event.add($("blang"), "change", _setLanguages);


  // init!!
  for (var i=0, _input; (_input = _inputElms[i]); i++)
  {
    if (_input.checked) { _setParameter("bid", _input.value); break; }
  }
  _setVowelState.call($("vowels"));
  _setLanguages.call($("blang"));
})();

