le.observeInputClick = function(el, func) {
  el.observe('click', func.bindAsEventListener(el));
  if (Prototype.Browser.IE && el.id) {
    $$('label[for='+el.id+']').each(function(label) {
      label.observe('click', function(e) { func.bind(el, e).defer() });
    });
  }
}

/*--------------------------------------------------------------------------*/

le.Suckerfish = {
  initialize : function() {
    if (Prototype.Browser.IE) le.Suckerfish.build('profile-menu');
  },
  build : function(el) {
    if (el = $(el)) el.select('li').each(function(li) {
      li.observe('mouseover', function(e) { e.element().addClassName('over') });
      li.observe('mouseout', function(e) { e.element().removeClassName('over') });
    });
  }
}

/*--------------------------------------------------------------------------*/

le.NavClick = {
  initialize : function() {
    if (!$('utility-menu')) return;
    $$('#utility-menu > li > a').each(function(el) { el.observe('click', le.NavClick.click) });
    document.observe('click', le.NavClick.reset);
  },
  click : function(e) {
    if (!e.findElement('li').hasClassName('on')) {
      le.NavClick.reset();
      e.findElement('li').addClassName('on');
      e.stop();
    }
  },
  reset : function(e) {
    $$('#utility-menu > li').each(function(el) { el.removeClassName('on') });
  }
}

/*--------------------------------------------------------------------------*/

le.LastItem = {
  initialize : function() {
    $$('ul li:last-child').each(function(el) { el.addClassName('last-child') });
    $$('ol li:last-child').each(function(el) { el.addClassName('last-child') });
  }
}

/*--------------------------------------------------------------------------*/

le.MoreLess = {
  initialize : function() {
    $$('.more-less-toggler').each(function(el) { el.observe('click', le.MoreLess.click.bindAsEventListener(el)) });
  },
  click : function(e) {
    this.up('li').hide().siblings().first().show();
  }
}

/*--------------------------------------------------------------------------*/

le.CurvyCorners = {
  initialize : function() {
    var settings = {
      tl : { radius : 6 },
      tr : { radius : 6 },
      bl : { radius : 6 },
      br : { radius : 6 },
      antiAlias : true,
      autoPad : true,
      validTags : ['div']
    };
    
    var box = new curvyCorners(settings, 'curvyrounded');
    box.applyCornersToAll();
  }
}

/*--------------------------------------------------------------------------*/

le.Login = {
  initialize : function() {
    if ($('lh_open')) {
      $('lh_open').observe('click', le.Login.open);
      $('lh_cancel').observe('click', le.Login.close);
      $('username').observe('keypress', le.Login.esc);
      $('password').observe('keypress', le.Login.esc);
    }
  },
  open : function(e) {
    e.stop();
    Effect.Fade('searching-business', { duration : .15, queue : 'front' });
    Effect.Appear('login-header', {
      duration : .15, 
      queue : 'end',
      afterFinish : function() { $('username').focus() }
    });
  },
  close : function() {
    Effect.Fade('login-header', { duration : .15, queue : 'front' });
    Effect.Appear('searching-business', { duration : .15, queue : 'end' });
    $('lh_open').focus();
  },
  esc : function(e) {
    if (e.keyCode == 27) le.Login.close()
  }
}

/*--------------------------------------------------------------------------*/

le.Feedback = {
  info : function(msg) {
    alert(le.Feedback._parse(msg));
  },
  notice : function(msg) {
    alert(le.Feedback._parse(msg));
  },
  error : function(msg) {
    alert(le.Feedback._parse(msg));
  },
  _parse : function(msg) {
    return Object.isArray(msg) ? $A(msg).join('\n') : msg;
  }
}

/*--------------------------------------------------------------------------*/

document.observe('dom:loaded', le.initialize);
