$.extend({
	put: function( url, data, callback, type ) {
		if ( jQuery.isFunction( data ) ) {
			callback = data;
			data = {};
		}

		return jQuery.ajax({
			type: "POST",
			url: url,
			data: $.extend(data, {_method: "put"}),
			success: callback,
      //contentType: "application/json",
			dataType: type
		});
	},

	http_delete: function( url, data, callback, type ) {
		if ( jQuery.isFunction( data ) ) {
			callback = data;
			data = {};
		}

		return jQuery.ajax({
			type: "POST",
			url: url,
			data: $.extend(data, {_method: "delete"}),
			success: callback,
      //contentType: "application/json",
			dataType: type
		});
	}
});

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

function toggleSlotAvailability(calEvent) {
  var self = this;
  $.put(calEvent.url, {
    "schedule[slots_attributes][0][id]": calEvent.id, 
    "schedule[slots_attributes][0][available]": !calEvent.available
  }, function(response) {
    $.extend(calEvent, response);
    $("#availability-calendar").fullCalendar('updateEvent', calEvent);
    //addNotice("You are DONE");
  }, "json");
  return false;
}

function addNotice(text) {
  $("#notices div").text(text);
}

function setFlashNotice(text) {
  $("div.flash-notice").text(text).show();
}

function setFlashError(text) {
  $("div.flash-error").text(text).show();
}

$(document).ajaxError(function(event, xhr, options, error) {
  alert("error: " + xhr.status + "\n" + xhr.responseText);
});

/* Customize a built fullcalendar by moving some elements around */
function customizeCalendar(element) {
  //element.find(".full-calendar-buttons").css('float', 'left');
  var left_buttons = $('<div class="full-calendar-buttons"></div>').css('float', 'left');
  element.find(".full-calendar-header").prepend(left_buttons);
  left_buttons.append(element.find(".full-calendar-buttons .prev-month"));
  left_buttons.append(element.find(".full-calendar-buttons .today"));
}


$(document).ready(function() {     
  var d = new Date();
  var y = d.getFullYear();
  var m = d.getMonth();

  $("#calendar").fullCalendar({
    events: window.events || [],
    eventMouseover: function(cal_event) {
      $("#event" + cal_event.id).addClass("event-highlight");
    },
    eventMouseout: function(cal_event) {
      $("#event" + cal_event.id).removeClass("event-highlight");
    }
  });
  customizeCalendar($("#calendar"));
});
