// Hide checkboxes & add drag/drop instructions
$('#enews_subs').addClass('drag_drop').find('input').hide();
$('#unsubscribed h4').before('<a href="#" id="add_subs">Add all</a>').after('<p>To subscribe to an e-newsletter, click, hold and drag one to the right, then drop it in your "My Subscriptions" box.</p>');
$('#subscribed h4').before('<a href="#" id="remove_subs">Remove all</a>').after('<p>To unsubscribe from an e-newsletter, click, hold and drag one to the left, then drop it in the "Available E-Newsletters" box.</p>');

// "Add all" and "Remove all" buttons
$('#add_subs').show().click(function(){
  var $list = $('ul','#subscribed').length ? $('ul','#subscribed') : $('<ul class="enews_list"/>').appendTo('#subscribed');
  $('#unsubscribed li').fadeOut(function(){
    $(this).appendTo($list).css('width','100%').fadeIn().find('input').attr('checked',true);
  });
  return false;
});
$('#remove_subs').show().click(function(){
  $('#subscribed li').fadeOut(function(){
    $(this).appendTo('#unsubscribed ul').css('width','100%').fadeIn().find('input').attr('checked',false);
  });
  return false;
});

// Summary bubbles
$('.enews_list li').each(function(i){
  if($(this).find('div').length > 0) {
    $(this).children('label').css('background','url(../images/account/info.gif) 98% 1px no-repeat');
  }
})
$('.enews_list div').addClass('desc').wrapInner('<span></span>');
$('.enews_list li').hoverIntent({
  sensitivity:  3,
  interval: 400,
  over: showSummary,
  out: hideSumary,
  timeout: 400
});		
$('.enews_list span').hide();
/* Uncomment if adding links to summaries...
$('.desc a').each(function(i){
  var href = $(this).attr('rel');
  $(this).removeAttr('class').removeAttr('rel').attr('href',href);
}).click(function(){
  window.open($(this).attr('href'));
  $(this).removeAttr('class');
});
*/
function showSummary() {
  $(this).find('span').css('height','auto').slideDown('fast');
}
function hideSumary() {
  $(this).find('span').slideUp('fast');
}

// Prevent wide draggables
$('.enews_list li').mousedown(function(){
  //$(".enews_list span").hide();
  $(this).css('width','');
});

// Set drag/drop functionality
$('.enews_list li').draggable({
  cancel: '.desc',
  helper: 'clone',
  opacity: .8,
  revert: 'invalid'
});
$('#subscribed').droppable({
  accept: '#unsubscribed li',
  activeClass: 'dropzone',
  hoverClass: 'over',
  tolerance: 'pointer',
  drop: function(ev,ui){
    subscribe(ui.draggable);
  }
});
$('#unsubscribed').droppable({
  accept: '#subscribed li',
  activeClass: 'dropzone',
  hoverClass: 'over',
  tolerance: 'pointer',
  drop: function(ev,ui){
    unsubscribe(ui.draggable);
  }
});	
function subscribe($item){
  $item.fadeOut(function(){
    var $list = $('ul','#subscribed').length ? $('ul','#subscribed') : $('<ul class="enews_list">').appendTo('#subscribed');
    $item.appendTo($list).fadeIn(function(){
      $item.css('width','100%').children('input').attr('checked',true);
    });
  });
}
function unsubscribe($item){
  $item.fadeOut(function(){
    $item.css('width','100%').appendTo('#unsubscribed ul').fadeIn().children('input').attr('checked',false);
  });
}

// Equalize sub/unsub box heights
var unsub_height = $('#unsubscribed').height();
var sub_height = $('#subscribed').height();
if(unsub_height > sub_height){
  equal_height = unsub_height;
}else{
  equal_height = sub_height;
}
$('#unsubscribed,#subscribed').css('min-height',equal_height);

// Validation
$('#edit-submit').click(function(){
  if($('#subscribed li').length > 0) {
    fname = $('#fname').val();
    lname = $('#lname').val();
    email_field = false;
    $('#errors,#status').remove();
    $('input').removeClass('error');
    err_msg = '';
    if(!fname || !lname){
      $('#account_tabs').tabs().tabs('select', 2);
      if(!fname){
        err_msg += '<li>Please provide your first name.</li>';
        $('#fname').addClass('error');
      }
      if(!lname){
        err_msg += '<li>Please provide your last name.</li>';
        $('#lname').addClass('error');
      }
    }
    if($('input#email').length > 0) {
      email_field = true;
      email = $('input#email').val();
      if(!email) {
        err_msg += '<li>Please provide an e-mail address.</li>';
        $('#email').addClass('error');
      }			
      if(email_field && email && !isValidEmail(email)){
        err_msg += '<li>The e-mail address you entered is not valid. Please provide a valid e-mail address.</li>';
        $('#email').addClass('error');
      }
    }
    if(err_msg != ''){
      $('#tabwrap,#enews_prefs').prepend('<div id="errors" style="display:none;"><ul>'+err_msg+'</ul></div>');
      $('#errors').fadeIn();
      return false;
    }		
  }
});	
function isValidEmail(emailAddress) {
  var pattern = new RegExp(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/);
  return pattern.test(emailAddress);
}
