function log(message) {
  try {
    if (window.console && 'function' === typeof window.console.log) {
      window.console.log(message);
    }
  } catch (e) {
  }
}

$(document).ready(function() {
  
	try {
  	$(".content tbody.sortable").sortable({
  	  items: "tr:not(.empty)",
      update: function(event, ui) {
        var t      = $(this);
        var path   = t.attr("data-uri");
        var data   = t.sortable("serialize");
        var token  = $("csrf-token").attr("token");
        var params = "authenticity_token=" + token + "&" + data;
        $.post(path, params, function(data) {});
      }
    });
  } catch (e) {
    log("KSC::Error Error initializing sortable table");
  }
	
  if ($("input.date").length > 0) {
    try {
      $( "input.date" ).datepicker();
    } catch (e) {
    }
  }
	
  if ($("#dialog").length > 0) {
    $("#dialog").dialog({
      modal: true,
      resizable: false,
      autoOpen: false,
      close: function(event, ui) {
        $("#dialog").children(".content").html("");
      }
    });
  }

	jQuery.fn.dialogize = function(options) {
		settings = jQuery.extend({
			dialog: "#dialog",
		}, options);

		this.live("click", function(e) {
			e.preventDefault();
          
			var t = $(this);
			var d = $(settings.dialog);

			d.dialog("close");
			d.dialog("option", {
				width:  Number(t.attr('data-width')),
				height: Number(t.attr('data-height')),
				title:  t.attr('title')
			});
			
			d.children(".content").html("");
			d.dialog("open");
			d.children(".loading").fadeIn();
			
      $.get(t.attr("href"), function(data) {
        d.children(".loading").fadeOut(function() {
          d.children(".content").html(data).fadeIn();
          $('.ui-dialog-titlebar-close').fadeIn();
          $("button").blur();
        });
      });
			return false;
		});
  }

  // Dialogs
  $("a.dialog").dialogize();
  
  $('a[data-confirm]').live('click', function (e) {
      // Show dialog instead of confirm popup
      e.preventDefault();

      var el = $(this);
      var d = $("#dialog");
      var t = $(e.target);

      d.dialog("close");
      d.children(".loading").hide();
      d.children(".content").html(el.attr("data-confirm"));
      d.children(".content").show();

      d.dialog("option", {
          title : "Confirm",
          buttons: {
          Ok: function() {
              if(el.attr('data-method')){
                  handle_data_method(el, e);
                  d.dialog("close");
              } else {
                  window.location.href = el.attr('href');
                  d.dialog("close");
              }
          },
          Cancel: function() {
              d.dialog("close");
          }
      }});

      d.dialog("open");
      return false;
  });

  $('input[data-confirm]').live('click', function (e) {
      e.preventDefault();
      var that = this;

      var el = $(that);
      var d = $("#dialog");
      var t = $(e.target);

      d.dialog("close");
      d.children(".loading").hide();
      d.children(".content").html(t.attr("data-confirm"));
      d.children(".content").show();

      d.dialog("option",{
          title: "Confirm",
          buttons: {
          Ok: function() {
              t.parents("form").submit();
              d.children(".loading").show();
              d.dialog("close");
          },
          Cancel: function() {
              d.children(".loading").show();
              d.children(".content").hide();
              d.dialog("close");
          }
      }});
      d.dialog("open");
      return false;

  });
  
});

