/**************************************
*  Flash messages
**************************************/
function highlightFlashMessages() {
  $('div.message').each(function() {
    flash = $(this);
    if(flash.hasClass('success')) {
      flash.effect('highlight', {}, 2000)
    }
  });
}

function flashMessages(messages) {
  if(messages) {
    message = '';
    for(type in messages) {
      message += '<div class="message '+type+'">'+messages[type]+'</div>';
    }
    $('.message').hide().html(message).slideDown("fast");
    highlightFlashMessages();
  }
}

function hideFlashMessages() {
  var flash = $('#flash_messages');
  if(flash.is(':visible')) {
    $('#flash_messages').slideUp('slow');
  }
}

/*===================

	Replace ajaxable links and buttons with ajax loading text on click
=====================*/
	var loadingMessages = function() 
	{
		$('a.ajaxable, a.icon').click(function() {
			if($(this).hasClass('icon')) {
				var loadingText = '<img src="/img/16pxLoader.gif">';
			} else {
				var loadingText =  $(this).attr('data-loadingText') ? $(this).attr('data-loadingText') : 'Loading...';
			}

			var originalText = $(this).html();
			$(this).html(loadingText);
			
			$(this).ajaxStop(function() {
				$(this).unbind('ajaxStop');
				$(this).html(originalText);
			})
		});
		
		$('form:not(.staticSubmits)').submit(function() {
			$(":submit", this).each(function() {
				var button = $(this)
				var loadingText = 'Submitting...';
				var originalText = button.attr('value');
				
				button.attr('value', loadingText).attr('disabled', 'disabled');

				button.ajaxStop(function() {
					revert(button, originalText)
				});
				$(window).unload(function() {
					revert(button, originalText)
				});
			});
		});
		
		function revert(el, text) {
			el.unbind('ajaxStop');
			el.attr('value', text).attr('disabled', '');
		}
	}
	
	
/**************************************
*  Labels
**************************************/
function applyLabels(selector) {
  $(selector).each(function() {$(this).inlineLabel()});
  
  var doSelectColors = function(el) {
    if($(el).val()) {
      $(el).css('color', '#333');
    } else {
      $(el).css('color', '#ccc');
    }
  }
  
  $('select.inline_label').each(function() {
    doSelectColors(this);
    $(this).change(function() {
      doSelectColors(this);
    })
  });
}

/**************************************
*  Onload
**************************************/
var mainLoader = function() {
 	applyLabels('.inline_label');
  highlightFlashMessages();
	loadingMessages();
}

var curvyCornersVerbose = false;
$(function() {
	mainLoader();
});
