function le_onfocus(e)
{
  if (!e.o_value)
    e.o_value = e.value;

  le_s_add(e, 'active');
}

function le_restore(ev, e)
{
  var keynum;
  
  if (window.event) // IE
    keynum = ev.keyCode;
  else if (ev.which) // Netscape/Firefox/Opera
    keynum = ev.which;
  
  switch (keynum)
  {
    case Event.KEY_ESC:
      e.value = e.o_value;
      e.blur();

      le_s_reset(e);
      break;
  }
}

function le_onchange(e, s)
{
  if (e.value != e.o_value)
  {
    new Ajax.Request(e.form.action,
      {
        asynchronous: true,
        evalScripts: false,
        parameters: escape(e.name) + "=" + encodeURIComponent(e.value),
        method: 'put'
      }
    );
    
    if (s)
      e.style_to = s;
    
    le_s_updating(s || e);
  }
  else
  {
    le_s_reset(s || e); 
  }
}

function le_sync_target(e, t)
{
  if (e.value == '')
    t.value = '';
}

function le_s_add(e, style)
{
  le_s_reset(e);
  le_s_preserve(e);
  e.className += ' ' + style + '_' + e.className;
}

function le_s_updating(e)
{
  le_s_reset(e);
  le_s_preserve(e);
  le_s_add(e, 'updating');
}

function le_s_preserve(e)
{
  e.o_className = e.className;
}

function le_s_reset(e)
{
  if (e.style_to)
    e = e.style_to;
  
  if (e.o_className)
  {
    e.className = e.o_className;
    e.o_className = null;
  }
}

function le_s_error(e)
{
  if (e.style_to)
    e = e.style_to;

  le_s_reset(e);
  le_s_preserve(e);
  le_s_add(e, 'error');
}

function le_autocomplete_select(e, s)
{
  var parts = s.id.split(':');
  
  var t = e.previousSibling //get the hidden field that should be right before me.
  
	if(t )
  
  if (t)
    t.value = parts[1];
    
  e.blur();
}
