$(document).ready(function(){ 
	// jquery stuff goes here!!
	
	// Calendar Date Pickers	
	$('input[name="startDate"]').datepicker(
			{
				showAnim: 'slideDown',
				changeMonth: true,
				changeYear: true,
				showButtonPanel: true,
				
				onSelect: function(dateText, inst){
				               var the_date = new Date(dateText);
				               $('input[name="endDate"]').datepicker('option', 'minDate', the_date);
				     }
				
			}
	);
	
	$('input[name="endDate"]').datepicker(
			{
				showAnim: 'slideDown',
				changeMonth: true,
				changeYear: true,
				showButtonPanel: true
			}
	);
	
	$('form#submit-event input[name="date-start"]').datepicker(
			{
				showAnim: 'slideDown',
				changeMonth: true,
				changeYear: true,
				showButtonPanel: true,
				
				onSelect: function(dateText, inst){
				               var the_date = new Date(dateText);
				               $('input[name="date-end"]').datepicker('option', 'minDate', the_date);
				     }
				
			}
	);
	
	$('form#submit-event input[name="date-end"]').datepicker(
			{
				showAnim: 'slideDown',
				changeMonth: true,
				changeYear: true,
				showButtonPanel: true
			}
	);
	
	// $('form#submit-event input[name="time"]').timepickr();
	
	// Calendar AJAX
	$('select[name="categories"], input[name="startDate"], input[name="endDate"]').change(function() {
		calendarAJAX($('select[name="categories"]').val(), $('input[name="startDate"]').val(), $('input[name="endDate"]').val());
	});
	
	// Event Submit Form Handler
	$('form#submit-event').bind('submit', function() {
		$("div#error").fadeOut();
		$(this).ajaxSubmit({
			success: function(strResponse) {
				if (strResponse.indexOf('OK') != -1) {
					
					$('div#thanks').fadeIn();
					$('form#submit-event')[0].reset();
					
					
				} else {
					$("div#error").html(strResponse);
					$("div#error").fadeIn();
				}
			}
		});
		return false;
	});


	
	
	
	// YouTube ThickBox Code
	$('.yt-thumb').click(function(){
		var content = $(this).attr('id');
		var vid = $(this).attr('rel');
		tb_show($(this).attr('title'), '#TB_inline?height=450&width=600&inlineId=youtube-video-player-' + content);

		$("ytapiplayer-"+content).html('');

		var so = new SWFObject("http://www.youtube.com/apiplayer?enablejsapi=1&playerapiid=ytplayer", "ytapiplayer-"+content, "600", "445", "8", null);
		so.addParam("allowScriptAccess", "always");
		so.addParam("bgcolor", "#000000");
		so.setAttribute("id", "connect-yt-player-"+content);
		so.setAttribute("wmode", "transparent");
		so.write("ytapiplayer-"+content);

		setTimeout(function(){
			ytplayer = document.getElementById("connect-yt-player-"+content);
			ytplayer.loadVideoById(vid,0);
		}, 5000);
		return true;
	});

	$("#TB_overlay").click(function(){
		ytplayer.stopVideo();
		ytplayer.clearVideo();
		ytplayer.seekTo(0, false);
	});

	$("#TB_closeWindowButton").click(function(){
		ytplayer.stopVideo();
		ytplayer.clearVideo();
		ytplayer.seekTo(0, false);
	});

	$('span.more').click(function(){
		var entry_id_is = $(this).attr('id');
		// alert(entry_id_is);
		$('span.remainder.'+entry_id_is).slideToggle();
		return false;
	});
	
	// open close the uni nav :)
	$('.sms-btn a').click(function(){
		$('#sms-wrap').slideToggle();
		return false;
	});
	
	// clear search field
	$('#searchsite, #searchinline').focus(function(){
		if($(this).val() == $(this).attr('title')){
			$(this).val('');
		}
	}).blur(function(){
		if($(this).val() == ''){
			$(this).val($(this).attr('title'));
		}
	});
	
	// open external links in new window/tab
	$('a[rel="external"]').click(function(){
		window.open($(this).attr('href'));
		return false;
	});

	// feature well links
	$('#masthead ul li.learnmore a').livequery('click', function(){
	    var url = $(this).attr('rel');
	    if($(this).hasClass('window-new')) {
	        window.open(url);
	    } else {
	        document.location = url;
	    }
	    return false;
	});

	
	// search results returned
	$('#searchsiteform').submit(function(){
		
		$('#search-load').addClass('loading');
		$('#search-content ul, #search-content p, #search-load h1, #search-load ul, #search-load p').fadeOut('slow');
		
		var act  = $('#searchsiteform').attr('action');
		var vars = $('#searchsiteform').serialize();
		var cc = $('#searchsite').val();
			
		$.ajax({
			type: 'POST',
			url: act,
			data: vars,
			cache: false,
			dataType: 'html',
			success: function(searchResults){
				setTimeout(function(){
					$('#search-load').removeClass('loading').addClass('loaded').html(searchResults).fadeIn('slow');
					$('#search-load').hide().fadeIn('slow');
					}, 3000);
				}					
			});
			
		return false;
	});
	
	// inline search results returned
	$('#searchinlineform').submit(function(){
		
		$('#search-il-load').addClass('loading');
		$('#search-il-content ul, #search-il-content p, #search-il-load h1, #search-il-load ul, #search-il-load p').fadeOut('slow');
		
		var act  = $('#searchinlineform').attr('action');
		var vars = $('#searchinlineform').serialize();
		var cc = $('#searchinline').val();
			
		$.ajax({
			type: 'POST',
			url: act,
			data: vars,
			cache: false,
			dataType: 'html',
			success: function(searchResults){
				setTimeout(function(){
					$('#search-il-load').removeClass('loading').addClass('loaded').html(searchResults).fadeIn('slow');
					$('#search-il-load').hide().fadeIn('slow');
					}, 3000);
				}					
			});
			
		return false;
	});
	
	// news rotate
	$('#news').cycle({
		fx: 'fade',
		timeout: 6000,
		height: '48px',
		speed: 1000,
		pause: 1,
		sync: 0,
		fit: 1
	});
	
	// events rotate
	$('#main-banner').cycle({
		fx: 'fade',
		timeout: 5500,
		height: '98px',
		speed: 1500,
		pause: 1,
		sync: 0,
		fit: 1
	});
	
	// secondary events rotate
	$('#sec-banner').cycle({
		fx: 'fade',
		timeout: 5500,
		height: '98px',
		speed: 1500,
		pause: 1,
		sync: 0,
		fit: 1
	});
	
	// hero events rotate
	$('#hero-banner').cycle({
		fx: 'fade',
		timeout: 5500,
		height: '260px',
		speed: 1500,
		pause: 1,
		sync: 0,
		fit: 1
	});
	
	// ampersand replace
	var amp_is = $('#masthead.clicked h2').text();
	var amp_is_new = amp_is.replace(/&/g,"<span class=\"fancy-amp\">&</span>");
	$('#masthead.clicked h2').html(amp_is_new);
	
	// contact form validation
	$('#contact').validate({
		rules: {
			name: "required",
			email: {
				required: true,
				email: true
			},
			message: "required"
		},
		messages: {
			name: "Please enter your name",
			email: "Please enter a valid email address",
			message: "Please enter a message"
		},
		errorElement: "em",
		errorPlacement: function(error, element) {
			var id_is = element.attr("id");
			// alert(id_is);
			error.appendTo( $('#fs-'+id_is+' label') );
	   	}
		// debug: true
	});
	
	// add event form validation & submit
	$('form#entryform input#title').livequery('focus', function() { 
		$('fieldset#fs-title em').hide(); 
		$('fieldset#fs-title input').removeClass('error');
	});

	$('form#entryform textarea#field_id_9').livequery('focus', function() { 
		$('fieldset#fs-field_id_9 em').hide(); 
		$('fieldset#fs-field_id_9 textarea').removeClass('error');
	});

	$('#cal-add-form form').submit(function() {
		var err_h_open  = '<em class="error" htmlfor="title" generated="true">';
		var err_h_close = '</em>';
		var err_count	= 0;
		var d_string    = '';
	
		// Validate Title field
		if($('form#entryform input#title').val() == '') {
		    $('fieldset#fs-title label').append(err_h_open+'You must give this event a title'+err_h_close);
			$('fieldset#fs-title input').addClass('error');
			err_count++;
		}
	
		// Validate Event Description field
		if($('form#entryform textarea#field_id_9').val() == '') {
		    $('fieldset#fs-field_id_9 label').append(err_h_open+'This event needs a description'+err_h_close);
			$('fieldset#fs-field_id_9 textarea').addClass('error');
			err_count++;
		}

		if(err_count == 0) {
			
			// Hide the error message beside the submit button (if any is there)
			$('form#entryform fieldset#cal-add-submit em').hide();
			
			// Get the hidden form inputs
			$('form#entryform div.hiddenFields input').each(function() {
				if(d_string != '') d_string += '&';
				d_string += $(this).attr('name')+'='+$(this).val();
			});
			
			// Get the shown form inputs
			$('form#entryform fieldset input, form#entryform fieldset textarea').each(function() {
				d_string += '&'+$(this).attr('name')+'='+$(this).val();
			});
			// alert(d_string)
		
			$.ajax({
				type: "POST",
				url: $('form#entryform div.hiddenFields input').attr('action'),
				data: d_string,
				success: function(msg) {
					if(msg.match('<title>Error</title>')) {
						$('form#entryform fieldset#cal-add-submit').prepend(err_h_open+'An unexpected error occurred. Please try again and if the error persists <a href="/contact">contact us</a>.'+err_h_close);
						return false;
					} else {
						$('#title, #field_id_9, #field_id_10, #field_id_11').val('');
						$('form#entryform fieldset#cal-add-submit').prepend('<div class="thanks"><p><strong>Thanks! Your event has been received. Once it is approved, it will be posted on this calendar.</strong></p></div>');
						setTimeout("tb_remove();", 3000);
						setTimeout("$('form#entryform fieldset#cal-add-submit div.thanks').hide();", 3500);
						return false;
					}
					// alert(msg);
				}
			});
		} else {
			// Show an error message beside the submit button
			$('form#entryform fieldset#cal-add-submit').prepend(err_h_open+'Please correct the above errors.'+err_h_close);
		}
	
		return false;
	
	});
	
	// request vacation form validation
	$('#request').validate({
		rules: {
			name: "required",
			email: {
				required: true,
				email: true
			},
			street1: "required",
			street2: "required",
			city: "required",
			state: "required",
			postalcode: "required"
		},
		messages: {
			name: "You must tell us your name.",
			email: "We need a valid email address, please.",
			street1: "Where should we send the guide?",
			street2: "Where should we send the guide?",
			city: "What city please?",
			state: "What state please?",
			postalcode: "How about the zip code?"
		},
		errorElement: "em",
		errorPlacement: function(error, element) {
			var id_is = element.attr("id");
			// alert(id_is);
			error.appendTo( $('#fs-'+id_is+' label') );
	   	}
		// debug: true
	});
	

	/*
		CALENDAR SECTION
	*/
	
	Date.format = 'mm/dd/yy';
	var date_start_raw 	= $('input#sort-date-start').val();
	var date_stop_raw 	= $('input#sort-date-stop').val();
	if(date_stop_raw) {
		date_start_raw 	= date_start_raw.split('/');
		$('.date-pick-start').datePicker({clickInput:true, startDate: date_start_raw[0]+'/'+date_start_raw[1]+'/20'+date_start_raw[2]});
	}
	if(date_stop_raw) {
		date_stop_raw	= date_stop_raw.split('/');
		$('.date-pick-stop').datePicker({clickInput:true, startDate: date_stop_raw[0]+'/'+date_stop_raw[1]+'/20'+date_stop_raw[2]});
	}
	
	$('a.dp-choose-date').html(''); // remove the text from the anchor tags

	// Set the category drop down per the URL
	$('form#cal-sort').submit(function() {
		// get some values
		var cat_id 			= $('select#cal-cat option:selected').val();

		// need to grab these values again, since they prob changed since page load
		date_start_raw 		= $('input#sort-date-start').val();
		date_stop_raw 		= $('input#sort-date-stop').val();
		date_start_raw 		= date_start_raw.split('/');
		date_stop_raw 		= date_stop_raw.split('/');

		// build the redirect URL
		var url = '/calendar/sort/'+cat_id;
		url	+= '/20'+date_start_raw[2]+'-'+date_start_raw[0]+'-'+date_start_raw[1]; // "start" date for query
		url += '/20'+date_stop_raw[2]+'-'+date_stop_raw[0]+'-'+date_stop_raw[1]; // "stop" date for query

		// do the redirect
		window.location = url;
		
		return false;
	});
	
	// Set the beginning and ending dates per the URL
	
	// masthead content switch
	$('#masthead ').click(function(){
		
		$('#search-load').addClass('loading');
		$('#search-content ul, #search-content p, #search-load h1, #search-load ul, #search-load p').fadeOut('slow');
		
		var act  = $('#searchsiteform').attr('action');
		var vars = $('#searchsiteform').serialize();
		var cc = $('#searchsite').val();
			
		$.ajax({
			type: 'POST',
			url: act,
			data: vars,
			cache: false,
			dataType: 'html',
			success: function(searchResults){
				setTimeout(function(){
					$('#search-load').removeClass('loading').addClass('loaded').html(searchResults).fadeIn('slow');
					$('#search-load').hide().fadeIn('slow');
					}, 3000);
				}					
			});
			
		return false;
	});
	
	$('#masthead.clicked ul.mh-nav li.prev a, #masthead.clicked ul.mh-nav li.next a').livequery('click', function() {
		var rel = $(this).parent().parent().attr('rel');
		var len = feat_items.length;
		var next_id = 0;
		var prev_id = 0;
		
		for(var i = 0; i < len; i ++) {
			if(feat_items[i] == rel) {
				prev_id = (i == 0) ? feat_items[len - 1] : feat_items[i-1];
				next_id = ((i + 1) == len) ? feat_items[0] : feat_items[i+1];
			}
		}
		
		var id_to_pass = ($(this).parent().hasClass('prev')) ? prev_id : next_id;
		masthead_clicked(id_to_pass);
		
		// Initiate Thickbox again since we loaded in dynamic content
		// tb_init();

		return false;
	});

	$('#masthead.clicked ul.mh-nav li.learnmore a').livequery('click', function() {
		document.location.href = $(this).attr('href');
		// tb_show();
		// return false;
	});

});

function masthead_clicked(entry_id) {
	
	var elemObject = $("#masthead object");
	
	elemObject.css('background-color', '#eeeeee');	
	elemObject.fadeOut(500);
	elemObject.css("opacity", 0.90);
	
	setTimeout(function(){ $('#masthead').addClass('clicked'); }, 1000 );
	
		
	$.ajax({
		type: 'GET',
		url: '/cvb/masthead-clicked/'+entry_id+'/',
		success: function(html){
			setTimeout(function(){
				$('#masthead.clicked').html(html);
				$('#search-load').hide().fadeIn('slow');
			}, 1000);
		}
	});
		
	//return true;
}

/**
 * Facilitates the AJAX search for the calendar page
 *
 * @return void
 * @author Jesse Bunch
 **/
function calendarAJAX(strCategory, strStartDate, strEndDate){
	
	// Tell the user we're searching
	$("ul#calendar-entries").html("<li class=\"odd\"><div id=\"entry-container\" class=\"float-clear\"><p class=\"sub-heading\">Searching...</p><p class=\"long-date\"><span></span></p><p class=\"short-date\">&nbsp;</p></div></li>");
		
	$.ajax({
	  url: "http://clarksvillecvb.com/calendar/cal_items_view/",
	  type: "POST",
	  dataType: "html",
	  data: {start_date: strStartDate, end_date: strEndDate, category: strCategory},
	
  complete: function() {
	    //called when complete
  },
	
  success: function(strHTML) {
	    //called when successful
		$("ul#calendar-entries").html(strHTML);
 },
	
  error: function() {
	    //called when there is an error
		$("ul#calendar-entries").html("<li class=\"odd\"><div id=\"entry-container\" class=\"float-clear\"><p class=\"sub-heading\">An error ocurred with your search.</p><p class=\"long-date\"><span></span></p><p class=\"short-date\">&nbsp;</p></div></li>");
  }

});
	
	
}
