 /* 
 * Behaviors
 * 
 * (c) 2008 rynawe.net Petr Rybak 
 * 
 */
function toggleStretch (element) {
        var toSize = element.getAttribute('rel');
        var oldSize = Element.getStyle(element, 'height');
        Element.setStyle(element, 'height: '+toSize);
        element.setAttribute('rel', oldSize);
};

function stretch(element) {
        var toSize = element.getAttribute('rel');
        Element.setStyle(element, 'height: '+toSize);
}

function textCounter(field, countfield, maxlimit) {
  if (field.value.length > maxlimit)
      {field.value = field.value.substring(0, maxlimit);}
      else
      {countfield.innerHTML = maxlimit - field.value.length;}
}
    
// register onload events
Event.observe(window, 'load', function(){

  // convert .b_hint to tooltips
  $$('.b_hint').each(function(element){
    if (element.title != '') {
        new Tip(element, element.title, { 
            className: 'rynaweshop', 
            offset: {x:-10, y:20},
            effect: 'appear'
        });
        element.title = '';
    }
  });
  
  // convert .b_help_icon to tooltips
  $$('.b_help_icon').each(function(element){
    if (element.title != '') {
        new Tip(element, element.title, { 
            className: 'rynaweshop', 
            offset: {x:-10, y:20},
            effect: 'appear',
            title: 'Info'
        });
        element.title = '';
    }
  });
  
  // prototipize input_helps
  $$('.b_input_help').each(function(element){
    var input = $(element.getAttribute('rel'));
    
    new Tip(input, element.innerHTML, { 
            className: 'input_help',
            hook: { target: 'topRight', tip: 'leftBottom' },
            offset: {x:3, y:-5},
            showOn: 'focus',
            hideOn: 'blur',
            effect: 'appear'
    });
  });
  
  // add stretch function to .b_stretchable_toggle, use rel attrib to get new size
  $$('.b_stretchable_toggle').each(function(element){
    Event.observe(element, 'focus', function () {toggleStretch(element) } );
    Event.observe(element, 'blur', function () {toggleStretch(element) } );
  });
  
  // add stretch function to .b_stretchable, use rel attrib to get new size
  $$('.b_stretchable').each(function(element){
    Event.observe(element, 'focus', function () { stretch(element) });
  });
  
  // add char limit counter to .b_limit_counter
  $$('.b_limit_counter').each(function(element){
    var countable = $(element.getAttribute('rel'));
    if (countable) {
	    var limit = parseInt(element.innerHTML);
	    textCounter(countable, element, limit);
	    Event.observe(countable, 'keydown', function () { textCounter(countable, element, limit) }, false);
	    Event.observe(countable, 'keyup', function () { textCounter(countable, element, limit) }, false);
    }
  });
  
  // hide all .b_hide
  $$('.b_hide').each(function(element){
    element.hide();
  });
  
  // show all .b_show
  $$('.b_show').each(function(element){
    element.show();
  });
  
});