var email_re = new RegExp(/^[a-z0-9]+([_\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\.[a-z]{2,}$/i);

$.fn.fastSerialize = function() {
    var a = [];

    $('input,textarea,select,button', this).each(function() {
        var n = this.name;
        var t = this.type;

        if ( !n || this.disabled || t == 'reset' ||
            (t == 'checkbox' || t == 'radio') && !this.checked ||
            (t == 'submit' || t == 'image' || t == 'button') && this.form.clicked != this ||
            this.tagName.toLowerCase() == 'select' && this.selectedIndex == -1)
            return;

        if (t == 'image' && this.form.clicked_x)
            return a.push(
                {name: n+'_x', value: this.form.clicked_x},
                {name: n+'_y', value: this.form.clicked_y}
            );

        if (t == 'select-multiple') {
            $('option:selected', this).each( function() {
                a.push({name: n, value: this.value});
            });
            return;
        }

        a.push({name: n, value: this.value});
    });

    return a;
};

$.highlightFade.defaults.start = [255, 255, 153];
$.highlightFade.defaults.speed = 1000;
$.highlightFade.defaults.interval= 1000 / 25;

$(document).ready(function() {
  var share_el = $('#share_form').get(0);
  var form_el = $('#share_form form').get(0);
  var send_btn = $('#share_send').get(0);
  var cancel_btn = $('#share_cancel').get(0);

  share_el.shouldAllowSend = function() {
    try {
      var good = false;
          
      if ($('#share_to').val().match(email_re) &&
          $('#share_from').val().match(email_re)) {
        good = true;
      }

      send_btn.disabled = !good;

      return good;
    } catch (e) {
      share_el.stopInterval();
      send_btn.disabled = false;
      return true;
    }
  }

  share_el.startInterval = function() {
    if (share_el._interval === void(0) || share_el._interval === null) {
      share_el._interval = window.setInterval(share_el.shouldAllowSend, 50);
    }
  }

  share_el.stopInterval = function() {
    if (share_el._interval !== void(0) || share_el._interval !== null) {
      window.clearInterval(share_el._interval);
      share_el._interval = null;
    }
  }

  $('#share_form_link a').click(function() {
    document.forms['share'].reset();

    share_el.startInterval();
    $('#share_status').hide();
    $('#share_form_link').hide();
    $('#share_form').show();
    return false;
  } );

  $('#share_cancel').click(function() {
    $('#share_form').hide();
    $('#share_form_link').show();
    return false;
  } );

  $('#share_form form').submit(function() {
    share_el.stopInterval();
    send_btn.disabled = true;
    cancel_btn.disabled = true;
    $('#share_spinner').show();
    $('#share_status').load(form_el.action, $('#share_form form').fastSerialize(), function() {
      $('#share_spinner').hide();
      $('#share_form').hide();
      cancel_btn.disabled = false;

      $('#share_form_link').show();
      $('#share_status').show();
    } );
    return false;
  } );

  $('#share_form_link').show();

  $('#bookmark_link a').click(function() {
    var title = $('#bookmark_link a').attr('title');
    var url = 'http://www.familyresource.com' + $('#bookmark_link a').attr('href');
    if (window.sidebar) { // Mozilla Firefox Bookmark
      window.sidebar.addPanel(title, url, "");
      return false;
    }
    else if (window.external) { // IE Favorite
      window.external.AddFavorite(url, title);
      return false;
    }
    else if(window.opera && window.print) { // Opera Hotlist
      void(0);
    }
  } );

  if (window.external || window.sidebar) {
    $('#bookmark_link').show();
  }
  else if (window.opera && window.print) {
    $('#bookmark_link a').attr('rel', 'sidebar');
    $('#bookmark_link').show();
  }
} );

