// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults
jQuery(document).ready(function($){
  
  $("*[data-remote='true']").live('ajax:before', function () {
    showSpinner();
  });

  $("*[data-remote='true']").live('ajax:complete', function () {
    hideSpinner();
    hideFlashMessages();
  });

  $("*[data-remote='true']").live('ajax:failure', function () {
    hideSpinner();
    showErrorMessage();
  });

  $("*[data-remote-action='cancel']").live("click", function(e) {
    objId = $(this).attr('data-object');
    $("#"+objId).dialog('close');
    e.preventDefault();
  });

  $(".search input.query").focusin(function() {
    var currentValue = $(this).val();
    if(currentValue.trim() == 'Search') {
      $(this).val("");
    }
  });

  $(".search input.query").focusout(function() {
    var currentValue = $(this).val();
    if(currentValue.trim() == '') {
      $(this).val("Search");
    }
  });

  function showSpinner() {
    $("#spinner").fadeIn(100);
  };

  function hideSpinner() {
    $("#spinner").fadeOut(400);
  };

  function hideFlashMessages() {
    $("#flashes > *").delay(1600).fadeOut(800);
  }

  function showErrorMessage() {
    $("#flashes").append("<div class='rounded shadowed error'>"+$("#flashes").attr("data-error")+"</div>");
  }

  function addTableLine(object, line) {
    var odd = $(object + " > :last").hasClass("even");
    $(line).appendTo(object);
    if (odd) { $(object + " > :last").removeClass("even").addClass("odd"); }
  }

  function replaceTableLine(object, line) {
    $(object).replaceWith(line);
  }

  function displayFlashMessage(message) {
    $(message).appendTo('#flashes');
  }
  
  $('form a.add_child').click(function() {
      var association = $(this).attr('data-association');
      var template = $('#' + association + '_fields_template').html();
      var regexp = new RegExp('new_' + association, 'g');
      var new_id = new Date().getTime();

      $(this).parent().before(template.replace(regexp, new_id));
      return false;
    });
  
  $('form a.remove_child').live('click', function() {
    var hidden_field = $(this).prev('input[type=hidden]')[0];
    if(hidden_field) {
      hidden_field.value = '1';
    }
    $(this).closest('.fields').hide();
    return false;
  });

  $(".widget").live("click", function(e) {
    var field = $(this).attr('data-field');
    $("#"+field).append("[widget="+$(this).html()+"]");
    e.preventDefault();
  });
  
	$("#admin_forum_categories").sortable({ 
    handle : '.handle', 
    update : function () { 
      var order = $('#admin_forum_categories').sortable('serialize');
      $.post('/admin/forums/categories/reorder', '_method=put&authenticity_token='+$('meta[name=csrf-token]').attr('content')+'&'+ order);
    } 
  });

	$("#admin_forum_boards").sortable({ 
    handle : '.handle', 
    update : function () { 
      var order = $('#admin_forum_boards').sortable('serialize'); 
      $.post('/admin/forums/boards/reorder', '_method=put&authenticity_token='+$('meta[name=csrf-token]').attr('content')+'&'+ order);
    } 
  });

	$(".lightbox").fancybox();
	
	$("a#terms").fancybox({
			'hideOnContentClick': false
		});
  
	$('#sales_go_btn').click(function() {
    var url = "/sales";
    var yr = $('#date_year').val();
    var mo = $('#date_month :selected').text();
    
    if(yr.length > 0) {
      url = url + "/" + yr;
      if(mo.length > 0) {
        url = url + "/" + mo;
      }
    }
    
    $('#sales_form').attr('action', url);
    $('#sales_form').submit();
  });
});
