$(function() { 
  EmailSubscribeInit();
});

function EmailSubscribeInit() {

  var groups = GROUPS;
  if ( ! $("#EmailSubscribe").length > 0 ) {
    return false;
  }

  var s = '';
  s += '<div id="EmailSubscribeForm">' + "\n";

  s += '<div id="EmailSubscribeInputs">' + "\n";
  s += '<form action="/index.php" method="post" id="fEmailSubscribe">' + "\n";
  s += '<input type="hidden" name="m" value="join" />' + "\n";
  s += '<input type="hidden" name="view" value="process" />' + "\n";

  s += '<p id="EmailSubscribeInfo"><strong>Subscribe to our news updates</strong></p>' + "\n";

  s += '<input type="text" name="email" id="EmailSubscribeEmail" class="prompt" value="Email" />' + "\n";

  s += '<ul>';
  for ( var slug in groups ) {
    s += '<li>';
    s += '<input type="checkbox" name="' + slug + '" id="' + slug + '" value="1" checked="checked" /><label for="' + slug + '">' + groups[slug].title +'</label>' + "\n";
    s += '<span>' + groups[slug].summary + '</span>';
  }
  s += '</li>';
  s += '</ul>';

  s += '<input type="button" onclick="EmailSubscribeProcess(); return false;" id="EmailSubscribeSubmit" value="Join" />' + "\n";
  s += '</div>' + "\n";
  s += '<div class="clear"></div>' + "\n";

  s += '<p id="EmailSubscribeError"></p>' + "\n";

  s += '</form>' + "\n";

  s += '</div>' + "\n";
  s += '<div class="clear"></div>' + "\n";

  $('#EmailSubscribe').html(s);

  $('#EmailSubscribeEmail').focus( function () {
    if ( this.value == 'Email') { 
      this.value=''; 
      $(this).removeClass('prompt');
    } else { 
      this.select();
    }
  });

  $('#EmailSubscribeEmail').blur( function () {
    if ( this.value == '' ) { 
      this.value = 'Email';
      $(this).addClass('prompt');
    }
  });

}

function EmailSubscribeValidate () {

  var valid = true;

  if ( ! $('#EmailSubscribeEmail').val() || ! validateEmail ( $('#EmailSubscribeEmail').val() ) ) {
    $('#EmailSubscribeEmail').addClass('invalid');
    valid = false;
  } else {
    $('#EmailSubscribeEmail').removeClass('invalid');
  }

  return valid;

}


function EmailSubscribeProcess () {

  if ( ! EmailSubscribeValidate() ) {
    return false;
  }

  $('#fEmailSubscribe').submit();
  return false;

}

/*
 * helpers
 */

function log(s) {
  $('#log').html(s);
}

function validateEmail(str) {

  var at="@";
  var dot=".";
  var lat=str.indexOf(at);
  var lstr=str.length;
  var ldot=str.indexOf(dot);
  if (str.indexOf(at)==-1) {
    return false; 
  }

  if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr) {
    return false;
  }

  if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr) {
    return false;
  }

  if (str.indexOf(at,(lat+1))!=-1) {
    return false;
  }

  if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot) {
    return false;
  }

  if (str.indexOf(dot,(lat+2))==-1) {
    return false;
  }
  
  if (str.indexOf(" ") != -1) {
    return false;
  }

  return true;
}


