//Landing page behavior
Local.timer = null;

Local.tease = function(link, params){
  window.scrollTo(0,0);
  Local.Landing.showSignupOverlay(link, params);
};

Local.login = function(link, params){
  window.scrollTo(0,0);
  Fair.Common.Overlay.hide('signup', link, params);
};

Local.Landing = {

  init: function(){
    if (Browser.Engine.trident4) this.initIE();

    if ((Fair.Session && !Fair.Session.not)) return;

    // Begin: Is this used anymore?
    var search = $('search-text');

    if (search) search.getParent('form').addEvent('submit', function(event){
      Local.tease({title: GetText._('Search for music from around the globe')});
      event.stop();
    });
    // End: Is this used anymore?

    $$('a.tease').each(this.tease.bind(this));

    this.initSigninMenu();
  },

  tease: function(link){
    if (link.id == 'banner' || link.hasClass('notease')) return;
    else if (link.hasClass('play')) Fair.Common.Links.play(link);
    else if (link.hasClass('share') && !link.hasClass('tease')) Fair.Common.Links.share(link);
    else if (link.hasClass('stats')) Fair.Common.Links.stats(link);
    else link.addEvent('click', function(event){event.stop();Local.tease(link);});
  },

  initSigninMenu: function(){
    var password = $$('.menu-password')[0], username = $$('.menu-login')[0], form = $('menu-form');

    var validate = function(){
      var valid = true;
      [username, password].each(function(input){
        if (!input.value.clean()){ input.addClass('error'); valid = false; }
        else input.removeClass('error');
      });
      return valid;
    };

    form.addEvent('submit', function(event){ if (!validate()) event.stop(); });
  },

  initSignup: function(){
    var email = $('invite_email'), form_email = email.getParent('form');

    var validate = function(){
      var valid = true;
      if (!email.value || !email.value.test(/^([^@\s]+)@((?:[-a-zA-Z0-9]+\.)+[a-zA-Z]{2,4})$/)){
        email.addClass('error');
        Fair.Roar.alert(GetText._('Please enter a valid email address'));
        valid = false;
      }
      else email.removeClass('error');

      return valid;
    };

    form_email.addEvent('submit', function(event){
      event.stop();
      if (!validate()) return;
      // not a FairRequest because we don't want to display a roar message
      new Request.JSON({
        url: form_email.action,
        data: {'invite[email]':$('invite_email').value},
        onSuccess: function(response){
          if(response.alert || response.notice)
          {
            $$('#signup-overlay form').each(function(item){ item.hide(); });
            var signup = $('signup-alert');
            var content = response.alert || response.notice;
            signup.setStyle('display','block').set('html','<span>'+content+'</span>');

            var help = signup.getElements("a.help")[0];
            if (help) {
              help.addEvent('click', function(event){
                event.stop();
                Fair.Common.Overlay.signup.hide();
                Fair.Common.Panel.show.call(Fair.Common.Panel,'help',help);
              });
            }

            var pass = signup.getElements("a.password")[0];
            if (pass) {
              pass.addEvent('click', function(event){
                event.stop();
                Fair.Common.Overlay.signup.hide();
                Fair.Common.Overlay.show.call(Fair.Common.Panel,'password',pass.href);
              });
            }
          }
        }
      }).post();
    });
  },

  showSignupOverlay: function(link, params) {
    var signup_overlay = $('signup-overlay');
    if (!signup_overlay) {
      new FairRequest.HTML({
        method: 'get',
        url: '/join',
        append: $('container'),
        onComplete: function() {
          this.initSignup();
          Fair.Common.Menu.popupMenuFromLink();
          Fair.Common.Overlay.show('signup', link, params);
        }.bind(this)
      }).send();
    } else {
      Fair.Common.Overlay.show('signup', link, params);
    }
  },

  initIE: function(){
    $$('div.header')[0].setStyle('display','none');
    var content = $('content'), overlay = $$('div.overlay')[0];
    if (overlay.visible()) overlay.setStyle('display','none');
    else if(content) content.setStyle('display','none');

    $('ie6warning').setStyle('display','block');
  }
};

Local.Landing.FormErrors = {
  showError: function(input, message){
    new Element('div', {
      'class': 'fieldWithErrors'
    }).wraps(input).adopt(new Element('span', {
      'html': message
    }));

  var exp = input.getParents("div.expandable");
  if(exp && exp.length && exp[0].hasClass('collapsed')) exp[0].getFirst().fireEvent('click');
  },

  clearError: function(field){
    field.getFirst().inject(field, 'before');
    field.destroy();
  },

  clearErrors: function(){
    $$('.fieldWithErrors').each(this.clearError);
  }
};

Fair.Content = window;

window.addEvent('domready', Local.Landing.init.bind(Local.Landing));
