// JavaScript Document
google.setOnLoadCallback(function() {
	$(document).ready(function() {
		
		// The gallery type dependencies are loaded dynamically page-by-page 
		if($("div.fancybox").length){
			$.ajax({ 
				url: '/theme/common/js/fancybox/jquery.fancybox-1.3.4.pack.js',
				dataType: 'script', 
				cache: true, 
				success:  function(){
					$('head').append('<link rel="stylesheet" href="/theme/common/js/fancybox/jquery.fancybox-1.3.4.css" type="text/css" />');
					$(".fancybox a.single_image").fancybox();
				}
			});	
		}	
		
		$('.nivo').nivoSlider({
			effect: 'random', // Specify sets like: 'fold,fade,sliceDown'
			slices: 15, // For slice animations
			boxCols: 8, // For box animations
			boxRows: 4, // For box animations
			animSpeed: 500, // Slide transition speed
			pauseTime: 3000, // How long each slide will show
			startSlide: 0, // Set starting Slide (0 index)
			directionNav: true, // Next & Prev navigation
			directionNavHide: true, // Only show on hover
			controlNav: true, // 1,2,3... navigation
			controlNavThumbs: false, // Use thumbnails for Control Nav
			controlNavThumbsFromRel: false, // Use image rel for thumbs
			controlNavThumbsSearch: '.jpg', // Replace this with...
			controlNavThumbsReplace: '_thumb.jpg', // ...this in thumb Image src
			keyboardNav: true, // Use left & right arrows
			pauseOnHover: true, // Stop animation while hovering
			manualAdvance: false, // Force manual transitions
			captionOpacity: 0.8, // Universal caption opacity
			prevText: 'Prev', // Prev directionNav text
			nextText: 'Next', // Next directionNav text
			randomStart: false, // Start on a random slide
			beforeChange: function(){}, // Triggers before a slide transition
			afterChange: function(){}, // Triggers after a slide transition
			slideshowEnd: function(){}, // Triggers after all slides have been shown
			lastSlide: function(){}, // Triggers when last slide is shown
			afterLoad: function(){} // Triggers when slider has loaded
		});
		
		$('a[rel=external]').click(function(e){
		  	e.preventDefault();
			window.open(this.href);
		});
		
		$('.clickToClear').click(function(){
			$(this).val('').css("color","#000");
		});
	
		$('div.user_feedback_widget').delay(2000).fadeTo(400,0.0).slideUp(280);	

		$('a.toggle_audio_player').click(function(e){
			e.preventDefault();
			$(this).parent().siblings('li.audio_gallery_player').slideToggle();
		});
							
		if($('div.audio_gallery').length){
			changeAudioPage();		
		}
		
		$('a[rel="audioPrevPage"]').click(function (e) {
			e.preventDefault();
			changeAudioPage('prev');			
		});	
		
		$('a[rel="audioNextPage"]').click(function (e) {
			e.preventDefault();
			changeAudioPage('next');			
		});	

		if($('div.fancybox').length){
			changeFancyboxPage();		
		}
		
		$('a[rel="fancyboxPrev"]').click(function (e) {
			e.preventDefault();
			changeFancyboxPage('prev');			
	
		});	
		
		$('a[rel="fancyboxNext"]').click(function (e) {
			e.preventDefault();
			changeFancyboxPage('next');			
		});
		
		$('a.calendar_modal').click(function(e) {
	
			//Cancel the link behavior
			e.preventDefault();
	
			//Get the A tag
			var id = $(this).attr('href'); 
			
			var asset_id =  $(this).attr('rel'); 
						
			displayModalWindow(id);
			
			$('.modal_content').html(asset_id);	
		
		});	
		
		// This function defines where the large calendar is displayed
		$('.calendar_widget_small table tbody td').click(function(e) {
		
			window.location.href = "?page=calendar";
		
		});
	
		// This function controls the modal fly-out menu for the small calendar
		$('.calendar_widget_small table tbody td').mouseover(function(e) {
	
			//Get the A tag
			var id = $(this).attr('name'); 
			
			var asset_id =  $(this).attr('rel'); 
						
			displayModalFlyout(id);
			
			$('.modal_content').html(asset_id);	
		
		});	
		
		$('.calendar_widget_small table tbody td').mouseout(function(e) {
			
			var id = $(this).attr('name'); 
			displayModalFlyoutCancel(id);
			
		});
	
		//if close button is clicked
		$('.window .close').click(function (e) {
			e.preventDefault();
			$('#mask, .window').hide();
		}); 
		
		//if close button is clicked
		$('.window .close_modal_window').click(function (e) {
			e.preventDefault();
			$('#mask, .window').hide();
		});     
		 
		//if mask is clicked	
		$('#mask').click(function (e) {
			e.preventDefault();
			$('#mask, .window').hide();
		});
	
		/* ############################################################################# */
		/*													FORM HELPER FUNCTIONS																*/
		/* ############################################################################# */		
		
		$('form.jquery_checker input[type="submit"]').click(function(e){
			e.preventDefault();
			var form = $(this).parents('form');
			var id = '';
			var name = '';
			var error = 0;
			form.find('p.jquery_form_feedback').remove();	
			form.find('label').attr("style","");
			
			// CHECK FOR REQUIRED FIELDS
			form.find('input.required, select.required').each(function(){
				id = $(this).attr('id');
				name = form.find('label[for="'+id+'"]').text();				
				if(!$(this).val()){
					form.find('label[for="'+id+'"]').attr("style","padding:5px 10px;background-color:red;color:#fff;font-weight:bold;font-size:.9em");
					$('<p class="jquery_form_feedback" style="padding:5px 10px;color:red;font-size:.9em">'+name+' is required!</p>').insertAfter($(this));
					error++;
				}
			});
			
			// CHECK FOR A VALID EMAIL ADDRESS
			form.find('input.val_email').each(function(){
				if($(this).val()){
					id = $(this).attr('id');
					name = form.find('label[for="'+id+'"]').text();	
					var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
					// CHECK THE VALUE AGAINST EXPESSION
					if(reg.test($(this).val()) == false) {
						form.find('label[for="'+id+'"]').attr("style","padding:5px 10px;background-color:red;color:#fff;font-weight:bold;font-size:.9em");
						$('<p class="jquery_form_feedback" style="padding:5px 10px;color:red;font-size:.9em">'+name+' requires a valid email address!</p>').insertAfter($(this));
						error++;
					}
				}
			});			
			// CHECK FOR A VALID PHONE NUMBER
			form.find('input.val_phone').each(function(){
				if($(this).val()){
					id = $(this).attr('id');
					name = form.find('label[for="'+id+'"]').text();	
					var reg = /^[\+\ 0-9]+$/;
					// CHECK THE VALUE AGAINST EXPESSION
					if(reg.test($(this).val()) == false) {
						form.find('label[for="'+id+'"]').attr("style","padding:5px 10px;background-color:red;color:#fff;font-weight:bold;font-size:.9em");
						$('<p class="jquery_form_feedback" style="padding:5px 10px;color:red;font-size:.9em">'+name+' accepts numbers, spaces, and "+" only!</p>').insertAfter($(this));
						error++;
					}
				}
			});			
			// CHECK FOR ALPHA ONLY
			form.find('input.val_alpha').each(function(){
				if($(this).val()){
					id = $(this).attr('id');
					name = form.find('label[for="'+id+'"]').text();	
					var reg = /^[a-zA-Z]+$/;
					// CHECK THE VALUE AGAINST EXPESSION
					if(reg.test($(this).val()) == false) {
						form.find('label[for="'+id+'"]').attr("style","padding:5px 10px;background-color:red;color:#fff;font-weight:bold;font-size:.9em");
						$('<p class="jquery_form_feedback" style="padding:5px 10px;color:red;font-size:.9em">'+name+' accepts letters only please!</p>').insertAfter($(this));
						error++;
					}
				}
			});			
			// CHECK FOR NUMERIC ONLY
			form.find('input.val_numeric').each(function(){
				if($(this).val()){
					id = $(this).attr('id');
					name = form.find('label[for="'+id+'"]').text();	
					var reg = /^[0-9]+$/;
					// CHECK THE VALUE AGAINST EXPESSION
					if(reg.test($(this).val()) == false) {
						form.find('label[for="'+id+'"]').attr("style","padding:5px 10px;background-color:red;color:#fff;font-weight:bold;font-size:.9em");
						$('<p class="jquery_form_feedback" style="padding:5px 10px;color:red;font-size:.9em">'+name+' accepts numbers only please!</p>').insertAfter($(this));
						error++;
					}
				}
			});
			if(error){
				var plu = 's';
				var ral = '';
				if(error==1){
					plu = '';
					ral = 's';
				}
				$('<p class="jquery_form_feedback" style="display_block;padding:5px 10px;background-color:red;color:#fff;font-weight:bold;font-size:.9em">'+error+' field'+plu+' require'+ral+' your attention</p>').insertBefore(form.find('input[type="submit"]'));
			}else{
				$('form.jquery_checker').submit();
			}
		});
		
		$('a.show_hide_passwords').click(function(e){
			e.preventDefault();
			var field_name 	= $(this).attr('rel');
			var pass_field 	= $(this).prevAll('input[name="'+field_name+'"]');
			var pass_type		= $(pass_field).attr('type');
			var link_name	= $(pass_field).attr('name');
			var link_id			= $(pass_field).attr('id');
			if(pass_type=='password'){
				var password = pass_field.attr('value');
				$('<input type="text" name="'+link_name+'" id="'+link_id+'" value="'+password+'"/>').insertAfter(pass_field);
				$(pass_field).remove();
				$(this).text('Hide Password');
			}else{
				var password = pass_field.attr('value');
				$('<input type="password" name="'+link_name+'" id="'+link_id+'" value="'+password+'"/>').insertAfter(pass_field);
				$(pass_field).remove();
				$(this).text('Show Password');
			}
		});	
	});
});

function changeAudioPage(direction){

	var max_thumbs = $('div.audio_gallery').attr('rel');
	var on_page = parseInt($('ul.sermons').attr('rel'));
	var total_pages = parseInt($("ul.sermons > li").length);
	total_pages = Math.ceil(total_pages/max_thumbs);
	
	if(direction=='next'){
		on_page = on_page + 1;
		if(on_page==total_pages) $('a[rel="audioNextPage"]').hide();
		if(on_page>1){
			$('a[rel="audioPrevPage"]').fadeIn();
		}
		if(on_page>total_pages) on_page = total_pages;
		$('ul.sermons').attr('rel',on_page);
	}
	else if(direction=='prev'){
		on_page = on_page - 1;	
		if(on_page==1){
			$('a[rel="audioPrevPage"]').hide(function(){
			});	
		}
		if(on_page<total_pages) $('a[rel="audioNextPage"]').fadeIn();
		if(on_page<1) on_page = 1;
		$('ul.sermons').attr('rel',on_page);
	}
		
	var last_image = max_thumbs * on_page;
	var first_image = last_image - max_thumbs + 1;
	var i = 0;
	
	$('ul.sermons > li').hide();
	$('.on_audio_page').html(on_page);
	$('.of_audio_page').html(total_pages);
	
	for(i=first_image;i<=last_image;i++){
	
		$("ul.sermons li:nth-child("+i+")").show();
		$("ul.sermons li.audio_gallery_player").hide();
	
	}
	
}

function changeFancyboxPage(direction){

	var max_thumbs = $('div.fancybox').attr('rel');
	var on_page = parseInt($('ul.fancybox').attr('rel'));
	var total_pages = parseInt($("ul.fancybox li").length);
	total_pages = Math.ceil(total_pages/max_thumbs);
	
	if(direction=='next'){
		on_page = on_page + 1;
		if(on_page==total_pages) $('a[rel="fancyboxNext"]').fadeOut();
		if(on_page>1){
			$('a[rel="fancyboxPrev"]').fadeIn();
			$('a[rel="fancyboxNext"]').removeClass('fancy_next');	
		}
		if(on_page>total_pages) on_page = total_pages;
		$('ul.fancybox').attr('rel',on_page);
	}
	else if(direction=='prev'){
		on_page = on_page - 1;	
		if(on_page==1){
			$('a[rel="fancyboxPrev"]').fadeOut(function(){
				$('a[rel="fancyboxNext"]').addClass('fancy_next');	
			});	
		}
		if(on_page<total_pages) $('a[rel="fancyboxNext"]').fadeIn();
		if(on_page<1) on_page = 1;
		$('ul.fancybox').attr('rel',on_page);
	}
	
			
	var last_image = max_thumbs * on_page;
	var first_image = last_image - max_thumbs + 1;
	var i = 0;
	
	$('ul.fancybox li').hide();
	
	$('.on_fancy_page').html(on_page);
	$('.of_fancy_pages').html(total_pages);
	
	for(i=first_image;i<=last_image;i++){
	
		$("ul.fancybox li:nth-child("+i+")").fadeIn();
	
	}
	
}

function displayModalWindow(id){
	 
	//Get the screen height and width
	var winH = $(window).height();
	var winW = $(window).width();
	var offset = winW+$(id).width()+50;
	var inset = winW-$(id).width()-110;
		
	//Set the popup window to center
	$(id).css({'top':'50px','left':offset,'display':'inherit','position':'fixed','width':'500px','text-align':'center','font-size':'inherit'})
	$(id).animate({'left':inset},1000);		

};

function displayModalFlyout(id){
		
   	$(document).mousemove(function(e){
		$(id).css({'display':'inherit','position':'absolute','left':(e.pageX+5)+'px','top':(e.pageY+5)+'px','width':'200px','text-align':'left','font-size':'11px'})
		$(id).addClass('cal_modal_small');
   	}); 
	
	$('.small_cal_jump').removeClass('hide');

};

function displayModalFlyoutCancel(id){
	
	$(document).unbind('mousemove');
	$(id).css({'display':'none'})
	$(id).addClass('cal_modal_small');
	$('.small_cal_jump').addClass('hide');

};


