$(document).ready(function() {

	$("a[rel=gallery]").fancybox({
		'overlayColor'      : '#000',
		'overlayOpacity'    : 0.6,
		'titlePosition' 	: 'over',
		'autoScale'			: true,
		'titleFormat'		: function(title, currentArray, currentIndex, currentOpts) { 
			return '<span id="fancybox-title-over">Image ' + (currentIndex + 1) + ' / ' + currentArray.length + (title.length ? ' &nbsp; ' + title : '') + '</span>'; 
		}
	 });
	
	$("#upcoming-location").live("change", function(){
		var loc=$("#upcoming-location option:selected").attr("id");
		var day=$("#datepicker-month").text();
		window.location="calendar.php?date="+day+"&loc="+loc;
	});

	$("#calday-location").live("change", function(){
		var loc=$("#calday-location option:selected").attr("id");
		var day=$("#datepicker-day").text();
		window.location="calendar_day.php?d="+day+"&loc="+loc;
	});
	
	// Invoke Add Event Dialog.
	$(".addevent, .reserve").live("click", function() {
		var loc=$("#locpicker-loc").html();
		var date=$("#datepicker-day").html();
		var args="loc="+loc+"&date="+date;
		$.ajax({
			type	: "POST",
			cache	: false,
			url		: "calendar_event_create.php",
			data	: args,
			success : function(data) {
				$.fancybox(data, {
					'overlayColor'      : '#000',
					'overlayOpacity'    : 0.6,
					'scrolling'			: 'no',
					'titleShow'			: false,
					//'modal'				:true,
					'autoDimensions'	: true,
					'onComplete'		: function() {
						vtip();
						$("#addwhen").datepicker({dateFormat: 'D MM d yy', minDate: new Date()});
					}
				});
			}    				
		});
	});

	// Invoke Add Event Dialog.
	$(".event-reserve").live("click", function() {
		var eventid=$(this).attr("id");
		var args="e="+eventid;
		$.ajax({
			type	: "POST",
			cache	: false,
			url		: "calendar_event_join.php",
			data	: args,
			success : function(data) {
				$.fancybox(data, {
					'overlayColor'      : '#000',
					'overlayOpacity'    : 0.6,
					'scrolling'			: 'no',
					'titleShow'			: false,
					//'modal'				:true,
					'autoDimensions'	: true,
					'onComplete'		: function() {
						vtip();
						$("#addwhen").datepicker({dateFormat: 'D MM d yy', minDate: new Date()});
					}
				});
			}    				
		});
	});

	// Event Type changed.
	$("#addevent").live("change", function(){
		var e=$("#addevent option:selected").val();
		if (e==5) $("#addevent-step-5").fadeOut('fast', function(){ $.fancybox.resize(); });
		else {
			var id=$("#addevent option:selected").attr("id");
			$("#guestmessage").html(id);
			$("#addguestname").attr('title', id);
			$("#addevent-step-5").fadeIn('slow');
			$.fancybox.resize();			
		}
	});
	
	// Location, Date or Start Time changed.
	$("#addlocation, #addwhen, #addstart").live("change", function(){ updateReservationTimes(getReservationArgs()); }); 

	// Toggle Checkbox when label clicked.
	$("#addeventnotify-label").live("click", function() { $("#addeventnotify").attr('checked', !$("#addeventnotify").attr('checked')); });
	
	// Gather and Return Reservation args.
	function getReservationArgs() {
		var loc=$("#addlocation option:selected").val();
		var date=$("#addwhen").val();
		var start=$("#addstart option:selected").val();
		var end=$("#addend option:selected").val();
		var phone=$("#addphone").val();
		var name=$("#addguestname").val();
		var total=$("#addguestno").val();
		var update=$("#addeventnotify").is(':checked');
		return "l="+loc+"&d="+date+"&s="+start+"&e="+end+"&p="+phone+"&n="+name+"&g="+total+"&u="+update;
	}
	
	// Update Reservation Times.
	function updateReservationTimes(args) {
		$.ajax({
			type	: "POST",
			cache	: false,
			url		: "calendar_event_create.php",
			data	: "ss=1&"+args,
			success : function(data) {
				if (data.indexOf('error-when') > -1) {
					data=data.replace("error-when: ", "");
					$("#error-when").html(data);
					$("#error-when").fadeIn();
				} else {	
					if (data) {
						$("#when-error").fadeOut();
						data=data.split("::");
						$("#addstart").html(data[0]);
						$("#addend").html(data[1]);
					}
				}
				$.fancybox.resize();
			}
		});
	} 

	// Process Add Event.
	$("#add_event").live("click", function(){
		var args="cc=1&t="+($("#addevent option:selected").val())+"&"+getReservationArgs();
		$.ajax({
			type	: "POST",
			cache	: false,
			url		: "calendar_event_create.php",
			data	: args,
			success : function(data) {
				$(".error").fadeOut();
				if (data.toLowerCase().indexOf('error') > -1) {
					if (data.indexOf('::') > -1) {
						data=data.split("::");
						var t= data.length-1;
						for (var i=0; i<t; i++) {
							var dd=data[i].split(":");
							$("#"+dd[0]).html(dd[1]);
							$("#"+dd[0]).fadeIn();
						}
					} else {
						$.fancybox(data, {
							'overlayColor'      : '#000',
							'overlayOpacity'    : 0.6,
							'scrolling'			: 'no',
							'titleShow'			: false,
							'autoDimensions'	: true
						});
					}
				} else {
					$.fancybox(data, {
						'overlayColor'      : '#000',
						'overlayOpacity'    : 0.6,
						'scrolling'			: 'no',
						'titleShow'			: false,
						'autoDimensions'	: true
					});
				}
				$.fancybox.resize();
			}
		});
	});
	
	$("#admin-events-next").live('click', function(){
		var p=parseInt($("#admin-events-page").val());
		var args="n="+(++p);
		args+=getFilterArgs();
		updateAdminTable(args);
	});
	
	$("#admin-events-back").live('click', function(){
		var p=parseInt($("#admin-events-page").val());
		var args="n="+(--p);
		args+=getFilterArgs();
		updateAdminTable(args);
	});
	
	function getFilterArgs() {
		var out="";
		var ft=$("#admin-event-filter-type").val();
		if (ft) out+="&ft="+ft;
		var fu=$("#admin-event-filter-person").val();
		if (fu) out+="&fu="+fu;
		var fl=$("#admin-event-filter-location").val();
		if (fl) out+="&fl="+fl;
		var fsd=$("#admin-event-filter-startdate").val();
		if (fsd) out+="&fsd="+fsd;
		var fst=$("#admin-event-filter-starttime").val();
		if (fst) out+="&fst="+fst;
		var fed=$("#admin-event-filter-enddate").val();
		if (fed) out+="&fed="+fed;
		var fet=$("#admin-event-filter-endtime").val();
		if (fet) out+="&fet="+fet;
		return out;
	}

	$("#admin-events-filter").live('click', function(){
		$.ajax({
			type	: "POST",
			cache	: false,
			url		: "admin_events_filter.php",
			data	: "f=1",
			success : function(data) {
				$.fancybox(data, {
					'overlayColor'      : '#000',
					'overlayOpacity'    : 0.6,
					'scrolling'			: 'no',
					'titleShow'			: false,
					'autoDimensions'	: true,
					'onComplete'		: function() {
						vtip();
						$("#admin-filter-start").datepicker({dateFormat: 'D MM d yy'});
						$("#admin-filter-end").datepicker({dateFormat: 'D MM d yy'});
					}
				});
			}
		});
	});

	$("#filter_events").live('click', function(){
		var args="";
		var ft=$("#admin-filter-type option:selected").val();
		if (ft>-1) args+=((args)?"&":"")+"ft="+ft;
		var fu=$("#admin-filter-user option:selected").val();
		if (fu>-1) args+=((args)?"&":"")+"fu="+fu;
		var fl=$("#admin-filter-location option:selected").val();
		if (fl>-1) args+=((args)?"&":"")+"fl="+fl;
		var fsd=$("#admin-filter-start").val();
		if (fsd) args+=((args)?"&":"")+"fsd="+fsd;
		var fed=$("#admin-filter-end").val();
		if (fed) args+=((args)?"&":"")+"fed="+fed;
		updateAdminTable(args);
	});
	
	function updateAdminTable(args) {
		$.ajax({
			type	: "POST",
			cache	: false,
			url		: "admin_events.php",
			data	: args,
			success : function(data) {
				$("#admin-body").html(data);
				$.fancybox.close();
			}
		});
	}
	
	
	vtip();
});

vtip=function() {
	
	this.xOffset = -10; // x distance from mouse
    this.yOffset = 30; // y distance from mouse       
    
    $(".vtip").unbind().hover(    
        function(e) {
            this.t = this.title;
            this.title = ''; 
            this.top = (e.pageY + yOffset); this.left = (e.pageX + xOffset);
            $('body').append( '<p id="vtip"><img id="vtipArrow" />' + this.t + '</p>' );
            $('p#vtip #vtipArrow').attr("src", './images/vtip_arrow.png');
            $('p#vtip').css("top", this.top+"px").css("left", this.left+"px").fadeIn("slow");
            
        },
        function() {
            this.title = this.t;
            $("p#vtip").fadeOut("slow").remove();
        }
    ).mousemove(
        function(e) {
            this.top = (e.pageY + yOffset);
            this.left = (e.pageX + xOffset);
            $("p#vtip").css("top", this.top+"px").css("left", this.left+"px");
        }
    );            
    
}


