//// spinner on/off
// jQuery('element').spinOn()
jQuery.fn.spinOn = function(append) {
  if (append)
    jQuery(this).append('<img src="/images/ajax-loader.gif" class="spinner" />')
  else
    jQuery(this).after('<img src="/images/ajax-loader.gif"  class="spinner" />')
}
// jQuery('element').spinOff()
jQuery.fn.spinOff = function() {
    jQuery('.spinner').hide();
}

//messages
jQuery.errorBox = function(text) {
  jQuery.facebox('<h2 class="title icon_warning">Errore</h2>' + text)
}

jQuery.successBox = function(text) {
  jQuery.facebox('<h2 class="title icon_check">Ok</h2>' + text)
}

//display error messages, taken from format.js { render :json => errors }
jQuery.displayErrorMsg = function(data){
	jQuery('.error_msg').remove();
	errors = eval(data);
	for (i in errors)
	{
		//alert(errors[i][0]);
		//alert(errors[i][1]);
		jQuery('label[for*=_'+errors[i][0]+']').append(' <span style="color:red;display:none;" class="error_msg">'+errors[i][1]+'</span>');
	}
	jQuery('.error_msg').fadeIn();
}
////
// Callback receives responseText and 'success' / 'error'
// based on response.
//
// settings hash:
//   facebox: true        // a facebox 'loading' will open pre-submit
//   confirmation: string // a confirm pop-up will open with the supplied string
//
jQuery.fn.spamjax = function(callback, settings) {
  var settings = settings || {}
  var options  = {}

  options.complete = function(xhr, ok) { callback.call(this, xhr.responseText, ok) }
	
  if (settings.confirmation) {
    options.beforeSubmit = function() {
      var execute = confirm(settings.confirmation)
      if (!execute) return false
      if (settings.facebox) jQuery.facebox.loading()
    }
  } else if (settings.facebox) { 
    options.beforeSubmit = jQuery.facebox.loading
  }

  // TODO: test this, yo
  jQuery(this).ajaxForm(jQuery.extend(settings, options))
  return this
}

jQuery(document).ready(function(jQuery) {
  
  jQuery('.new_tell_friend').livequery(function(){
    jQuery('#tell_friend_submit').click(
  	  function(){
  		  jQuery(this).spinOn();
  		});
  	jQuery('.new_tell_friend').spamjax(function(data, status) {
      if (status == 'success') {
  			jQuery.successBox(data); 
  			return false;
      } else {
  			jQuery.displayErrorMsg(data)
      }
  		jQuery('#tell_friend_submit').spinOff();
    }),{}
  });
  jQuery('.share_button').facebox();

}); 

jQuery.ajaxSetup({ 
	'beforeSend': function(xhr) {xhr.setRequestHeader("Accept","text/javascript")} 
});

jQuery(document).ajaxSend(function(event, request, settings) {
  if (typeof(AUTH_TOKEN) == "undefined") return;
  settings.data = settings.data || "";
  settings.data += (settings.data ? "&" : "") + "authenticity_token=" + encodeURIComponent(AUTH_TOKEN);
});
