$(document).ready(function() {
  $("input[@name=recipient]").parent().find("div").hide();
  $("input[@name=recipient]").after($("#contact_selector_fieldset"));
  
  // make contacts selectable
	$("div#contacts a").click(function() {
	  select_contact(this);
	  return false;
	});
	
	// alpha pagination
	$("div#alpha a").click(function() {
    $("div#alpha a").removeClass("selected");
    $(this).addClass("selected");
    if ($(this).attr("letter") == "all") {
      $("div#contacts a").show();
      return false;
    }
    else {
      $("div#contacts a[@letter="+$(this).attr("letter").toLowerCase()+"]").show();
      $("div#contacts a[@letter!="+$(this).attr("letter").toLowerCase()+"]").hide();
      return false;
    }
  });
	
	$("a#select_all").click(function() {
	  deselect_contact($("div#recipients a"), true);
	  select_contact($("div#contacts a"));
	  $("div#recipients a").show();
    return false;
	});
	
	$("a#deselect_all").click(function() {
    deselect_contact($("div#recipients a"), true);
    return false;
  });
    
  // enable already selected contacts
  if ($("input#edit-recipient").val()) {
    $($("input#edit-recipient").val().split(",")).each(function(){
      $("div#contacts a[@username="+this+"]").click();
    });
  }

  
  // confirm contact selection on form submission
  $("form").submit(function() {
    $("input[@name=recipient]").val("");
    $("div#recipients a").each(function(i) {
      if ($(this).attr("username") != "" && i != 0) {
        separator = ",";
      }
      else {
        separator = "";
      }
      $("input[@name=recipient]").val($("input[@name=recipient]").val() + separator + $(this).attr("username"));
    });
  });
  /* end of initialization */
});

function select_contact(contact) {
  $("div#recipients").append($(contact).clone().click(function() {
	    deselect_contact(this, false);
	    return false;
	    }));
    $(contact).addClass("disabled").unbind("click").click(function() {return false;});
}

function deselect_contact(contact, all) {
  if (all) {
    original_contact = $("div#contacts a");
  }
  else {
    original_contact = $("div#contacts a[@username="+$(contact).attr("username")+"]");
  }
  
  $(original_contact).removeClass("disabled").click(function() {
    select_contact(this);
    return false;
  });
  $(contact).remove();
}
