jQuery.noConflict();
jQuery(document).ready(function(){
	// * variables
	var _esuCombos = [['fyb_uk',1442],['fyb_int',1462]];
	var stcPluginConfig = {
		eventListInput: '#event-list',
		calendarDate: '#calendar-date',
		maxEventsPerDay: 3,
		filter:'queries_category_query'
	};
	// *
	
	// * add JS features
	jQuery('.tab-group .tab-content li,.tab-group .tab-group.level2 .tab-content li').not('.tab-content .tab-group .tabs li,.list-three-col li').each(function(){
		jQuery(this).attr('class') == 'selected' ? jQuery(this).show() : jQuery(this).hide();
	});
	jQuery('.tab-group .tab-group.level2 .tabs li').show();
	jQuery('.tabs').show();
	jQuery('.no-js').hide();
	jQuery('.layout-25-rollover header').css('height','122px');
	// *
	
	// * menu top
	jQuery('#menu-baloons ul li').each(function(i){
		jQuery(this).hover(function(){
			var topMenu = jQuery(this).closest('#menu-top');
			//toggle subnav items
			jQuery(topMenu).find('#menu-items ul').each(function(j){
				i == j ? jQuery(this).show() : jQuery(this).hide();
			});
		});
	});
	
	// * restore current section's subnav items
	jQuery('#menu-top').mouseleave(function(){
		jQuery('#menu-items ul').each(function(){
			jQuery('body[class*=' + jQuery(this).attr('class') + ']').length > 0 ? jQuery(this).show() : jQuery(this).hide();
		});
	});
	
	// * article layout-25-rollover
	jQuery('#content article.layout-25-rollover header').hover(function(){
		jQuery('p',this).stop().animate({top:'0px'},{queue:false,duration:160});
	}, function(){
		jQuery('p',this).stop().animate({top:'122px'},{queue:false,duration:160});
	});
	
	// * tab-group
	jQuery('.tab-group .tabs').each(function(){
		//get tabs for this group
		jQuery(this).children('li').each(function(i){
			jQuery(this).click(function(){
				//ignore event if class "pages" is found
				if(jQuery(this).closest('.tabs[class*="pages"]').length == 0){
					var thisTabGrp = jQuery(this).closest('.tab-group');
					//toggle selected tab
					jQuery(thisTabGrp).children('.tabs').children('li.selected').removeClass();
					jQuery(this).addClass('selected');
					//toggle tab contents
					jQuery(thisTabGrp).children('.tab-content').children().each(function(j){
						i == j ? jQuery(this).show() : jQuery(this).hide();
					});
				}
			});
		});
	});
	
	// * form file input
	jQuery('form .upload-field,form .upload-btn').click(function(){
		var thisRow = jQuery(this).closest('.row');
		jQuery(thisRow).find('input[type=file]').click();
	});
	jQuery('form input[type=file]').change(function(){
		var thisRow = jQuery(this).closest('.row');
		jQuery(thisRow).children('.upload-field').val(jQuery(this).val());
	});
	// *
	
	// * filters
	jQuery('#search-filter #clear-filters a').click(function(e){
		e.preventDefault();
		//clear all checkboxes
		jQuery('#search-filter input[type=checkbox]').removeAttr('checked');
		jQuery('#search-filter form').submit();
	});
	jQuery.each(jQuery.query.get('queries_category_query'),function(index, value){
		//auto-select checkboxes based on previous query
		jQuery('#search-filter input[type=checkbox][value=' + value + ']').attr('checked','checked');
	});
	jQuery('#SQ_CALENDAR_VIEW').val(jQuery.query.get('SQ_CALENDAR_VIEW'));
	jQuery('#SQ_CALENDAR_DATE').val(jQuery.query.get('SQ_CALENDAR_DATE'));
	jQuery('#queries_search_term_query').val(jQuery.query.get('queries_search_term_query'));
	// *
	
	// * find your branch
	if(jQuery('#fyb_print').val() != 'fyb_none'){
		jQuery('#search-combos').show();
		jQuery.each(_esuCombos,function(){
			//call ajax load if metadata is present
			var selector = '#'+jQuery(this)[0]+' select';
			if(jQuery('#fyb_print').val() == jQuery(this)[0] || jQuery('#fyb_print').val() == 'fyb_all'){
				jQuery(selector).closest('form').show();
				jQuery.ajax({
					method:'get',url:'./?a='+jQuery(this)[1],data:{'SQ_DESIGN_NAME':'blank'},
					success:function(data){
						jQuery(selector).html(data);
					}
				});
			}
		});
	}
	jQuery('.fyb input[type=button]').click(function(){
		//click redirect
		window.location = jQuery(this).closest('form').children('select').val();
	});
	// *
	
	// * matrix search-to-calendar
	stcPlugin = {
		init:function(){
			stcCalendarStatus = false;
			if(jQuery('#calendar-contents').length > 0){
				//enable processing
				stcCalendarStatus = true;
				//current view
				stcCurrentView = jQuery.query.get('SQ_CALENDAR_VIEW');
				//get event list
				stcEventList = jQuery.parseJSON(jQuery(stcPluginConfig.eventListInput).val()).results;
				stcCalendarDate = Date.parse(jQuery(stcPluginConfig.calendarDate).val());
				stcCalendar = stcCalendarDate.getMonth();
				//append filters to navigation
				stcFilters = jQuery.query.get(stcPluginConfig.filter) != '' ? ','+jQuery.query.get(stcPluginConfig.filter) : '';
				if(stcFilters.length > 0) stcFilters = stcFilters.replace(/,/g,'&'+stcPluginConfig.filter+'[]=');
				jQuery('#calendar-header a.calendarNavLink').each(function(){
					jQuery(this).attr('href',jQuery(this).attr('href')+stcFilters);
				});
			}
		},
		fillCalendarMonthView:function(){
			if(stcCalendarStatus && stcCurrentView != 'day'){
				//print days
				jQuery.each(jQuery('.dateLink'),function(index){
					jQuery(this).closest('td').append('<span>'+(index+1)+'</span>');
				});
				//loop through all events
				jQuery.each(stcEventList,function(){
					var stcEvent = jQuery(this).get(0);
					var eventStartDate = Date.parse(stcEvent.start);
					var eventStart = eventStartDate.getMonth();
					var eventEndDate = Date.parse(stcEvent.end) != null ? Date.parse(stcEvent.end) : eventStartDate;
					var eventEnd = eventEndDate.getMonth();
					//discard out of range events
					if(eventStart <= stcCalendar && eventEnd >= stcCalendar){
						var startIndex = eventStart < stcCalendar ? 0 : eventStartDate.getDate()-1;
						var endIndex = eventEnd > stcCalendar ? jQuery('.dateLink').length : eventEndDate.getDate()-1;
						//handle events that span over multiple days
						for(var index=startIndex;index<=endIndex;index++){
							var daySelector = jQuery(jQuery('.dateLink').get(index)).closest('td');
							var eventsThisDay = daySelector.find('.stcDateLink').length;
							//limit events per day
							if(eventsThisDay < stcPluginConfig.maxEventsPerDay){
								//clean '...' if not required
								if(stcEvent.nameShort.length > stcEvent.name.length) stcEvent.nameShort = stcEvent.name;
								daySelector.append('<div class="stcDateContainer"><a class="stcDateLink '+stcEvent.colour+'" href="'+stcEvent.url+'">'+stcEvent.nameShort+'</a>'+'<span class="tooltip-arrow '+stcEvent.colour+'"></span><span class="tooltip '+stcEvent.colour+'">'+stcEvent.name+'</span></div>');
							}else if(eventsThisDay == stcPluginConfig.maxEventsPerDay){
								var currentFilters = jQuery.query.get('queries_category_query') == '' ? ','+jQuery.query.get('queries_category_query') : '';
								var dayViewUrl = jQuery(daySelector).children('.dateLink').attr('href')+stcFilters;
								daySelector.append('<a class="stcDateLink all" href="'+dayViewUrl+'">View all</a>');
							}
						}
						//enable tooltips
						jQuery('.stcDateLink').hover(function(){
							jQuery(this).parent().children('.tooltip,.tooltip-arrow').show();
						},function(){
							jQuery(this).parent().children('.tooltip,.tooltip-arrow').hide();
						});
					}
				});
			}
		},
		fillCalendarDayView:function(){
			if(stcCalendarStatus && stcCurrentView == 'day'){
				//print message if there are no events on this date
				if(jQuery('.stc.event').length == 0){
					jQuery('#calendar-contents').append('<p>There are no events to show for this date.</p>');
				}
			}
		}
	}
	stcPlugin.init();
	stcPlugin.fillCalendarMonthView();
	stcPlugin.fillCalendarDayView();
	// *
	
	//load gallery if enabled on the page
	if(jQuery('#gallery').length > 0){
		jQuery('#gallery').galleria({width:'100%',height:400});
	}
	
	//hide page nav if no links are found
	if(jQuery('.page-nav a').length == 0) jQuery('.page-nav').hide();
	
	//fix event date display (remove ': -' for end date and first am/pm occurrence if duplicate)
	jQuery('.event-dates').each(function(){
		var dateText = jQuery(this).html().replace('- :','');
		if(dateText.split('am').length > 2)	dateText.replace('am','')
		else if(dateText.split('pm').length > 2) dateText.replace('pm','');
		jQuery(this).html(dateText);
	});
	
	//fix classes for list positions
	jQuery('article.layout-25[class*="i"]').each(function(index){
		if(jQuery('.tab-content').closest('.tab-content').length == 0)
			jQuery(this).attr('class',jQuery(this).attr('class') + ' i' + (index+1));
	});
	
	//select tabs based on current page
	jQuery('.tabs li[id]').each(function(){
		var ids = jQuery(this).attr("id").split("_");
		if(ids.length > 1 && ids[0] == ids[1]) jQuery(this).attr('class','selected');
	});
	
	//select country on schools mace form
	if(jQuery('.row.country').length > 0 && jQuery('#fgetcountry').length > 0)
		jQuery('.row.country select').val(jQuery('#fgetcountry').val());
});
