jQuery(document).ready(function ($) {
	
  var footer_menu_width = 0;
  
  $('footer ul li').each(function () {
    footer_menu_width += $(this).outerWidth(true) + 10;
  });
				
	$('footer ul').css('width', footer_menu_width);
	
	$("ul.sf-menu").superfish({
		autoArrows : false,
		delay : 500,
		animation : {height:'show'}
	}); 
		
	if (!$('#marquis_slides').size()) {
    
    $('#upper_marquee').cycle({
  		fx : 'fade',
  		cleartypeNoBg: true,
  		timeout : 5000
  	});
  	
  }
  
  $('#marquis_slides').cycle({
		fx : 'fade',
		timeout : 5000,
		pager : '#marquis_pager',
		cleartypeNoBg: true,
		cleartype : true,
		pagerAnchorBuilder : function (i, e) {
			return '<a></a>'; 
		}
	});
	
	$('.lightbox').fancybox({
		overlayColor : '#000',
		overlayOpacity : 0.8
	});
	
	$('.archive_gallery a').hover(
		function () {
			$('.meta', this).stop().animate(
				{
					top : 0,
					opacity : 1
				}, 450, 'easeOutExpo'
			);
		},
		function () {
			$('.meta', this).stop().animate(
				{
					top : 220,
					opacity : 0
				}, 450, 'easeOutExpo'
			);
		}
	);
	
	var contact_us_form = document.getElementById("contact_us_form");
	if (contact_us_form) {
		H5F.setup(contact_us_form, {
			validClass: "valid",
			invalidClass: "invalid",
			requiredClass: "required"
		});
	}
	
	$('#contact_us_form').submit(function () {
		var valid = H5F.checkValidity(document.getElementById("contact_us_form"));
		if (valid) {
			var data = $(this).serialize();
			var action = $(this).attr('action');
			$.ajax({
				url : action,
				type : 'POST',
				dataType : 'html',
				data : data,
				success : function (data) {
					$('#contact_us_form_wrap').fadeTo(300, 0, function () {
						$(this).html("<p>Thanks! We'll be in touch shortly.</p>");
						$(this).fadeTo(300, 1);
					});
				},
				error : function (request, textStatus, errorThrown) {
					alert('Sorry! There was a server error. Please try again.');
				}
			});
		}
		return false;
	});
	
	// Calendar
	
	$('#calendar').calendar();
	$('#recent_events').events();
		
	
});

(function($){

$.fn.calendar = function() {
		
	function set_date() {
		var set = $(calendar).fullCalendar('getDate');
		$(date).text(months[set.getMonth()] + ' ' + set.getFullYear());
	}
	
	function _prev() {
		$(calendar).fullCalendar('prev');
		set_date();
		return false;
	}
	
	function _next() {
		$(calendar).fullCalendar('next');
		set_date();
		return false;
	}
	
	function keyup(e) {
		if (e.keyCode == "37") {
			_prev();
		}
		if (e.keyCode == "39") {
			_next();
		}
	}
	
	function toggle(e) {		
		$(this).toggleClass('active');
		$(this).toggleClass('inactive');
		var idx = $(this).data('index');		
		if ($(this).hasClass('active')) {
			$(calendar).fullCalendar('addEventSource', events[idx]);
		} else {			
			$(calendar).fullCalendar('removeEventSource', events[idx]);
		}
		return false;
	}

	function build() {
		$(calendar).fullCalendar({
			eventSources : events,
			header : false,
			dayNames : ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
			dayNamesShort : ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
			eventClick : function(event, jsEvent, view) {
				return false;
			}
		});
		set_date();
		
		$(prev).bind('click', _prev);
		
		$(next).bind('click', _next);
		
	}	
	
	function init() {
		
		$(document).bind('keyup', keyup);
		
		for (var i=0; i < feeds.length; i++) {
			events[i] = $.fullCalendar.gcalFeed(feeds[i].feed, {className: feeds[i]._class});			
			var handle = $('<a></a>')
				.data('index', i)
				.attr({
					'href' : '#',
					'class' : 'active ' + feeds[i]._class,
					'title' : feeds[i].label
				})
				.text(feeds[i].label)
				.bind('click', toggle)
				.appendTo($(toggles));
			
			if (i == (feeds.length-1)) {
				build();
			}
			
		}
	}
	
	if ($(this).size() > 0) {
		var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
		var calendar = $(this);
		var nav = $('#calendar_nav');
		var prev = $('#calendar_prev a');
		var next = $('#calendar_next a');
		var date = $('#calendar_date');
		var toggles = $('#calendar_toggles');
		var events = [];
		if (typeof feeds !== "undefined") {
			init();
		}
	}
			
};


$.fn.events = function() {
	
	function callback (result) {
	  var entries = result.feed.getEntries();
	  for (var i=0; i < entries.length; i++) {
      var li = $('<li></li>').appendTo($('ul', base));
      var a = $('<a></a>')
        .attr('href', entries[i].getLink().href)
        .html(entries[i].getTitle().getText())
        .appendTo(li);
      if (i == 4) {
        return false;
      }
	  };
	}
	
	function error() {
	  
	}
	
	function init() {
	  
    var service = new google.gdata.calendar.CalendarService('gdata-js-client-dudziaks');
    var query = new google.gdata.calendar.CalendarEventQuery(url);
    query.setOrderBy('starttime');
    query.setSortOrder('ascending');
    query.setFutureEvents(true);
    query.setSingleEvents(true);
    query.setMaxResults(10);
    
    service.getEventsFeed(query, callback, error);
	  
	}
	
	if ($(this).size() > 0) {
		var url = $('#events_feed').val();
		var base = $(this);
		init();
	}
			
};

})(jQuery);


