$.expr[':'].external = function(o) {
	return !o.href.match(/^mailto\:/) && (o.hostname != location.hostname);
};

$(function() {
	
	
	
	// External Links in New Windows
	$('a:external').attr('target','_blank');
	$('a.same-window').attr('target','_self');
	
	
	
	// Primary Nav -- Simpler than Superfish!
	var n = $('#primary-nav ul.nav');
	$(n).css({position:'relative'});
	$('> li',n).each(function() {
		var l = $(this).position().left;
		$('ul',this).css({left:l+'px',top:'24px'});
		$(this).hoverIntent({
			sensitivity:3,
			interval:100,
			over:function() { $('ul',this).fadeIn(200); },
			timeout:200,
			out:function () { $('ul',this).fadeOut(100); }
			});
		});
	
	
	
	// Feature Cycle
	if ($('ul#feature').length) {
		$('ul#feature').cycle();
	}
	
	
	
	// Photo Galleries
	if ($('#photo-gallery ul').length) {
		var ca = [];
		$('#photo-gallery ul li').each(function() {
			ca.push(this.className);
			});
		ca = _.uniq(ca);
		$(ca).each(function(a,b) {
			if (b != '') $('#photo-gallery ul li.'+b+':not(:eq(0))').hide();
			});
		$('a.fb').fancybox({
			overlayColor:'#111',
			overlayOpacity:0.8
			});
		}
	
	
	
	if ($.browser.msie) {
		var genFormOptions = {overlayColor:'#111',overlayOpacity:0.8,autoDimensions:false,width:540,height:280}
		if ($('a.form-landscaping').length) genFormOptions.height=590;
	} else {
		var genFormOptions = {overlayColor:'#111',overlayOpacity:0.8,autoDimensions:false,width:520,height:220}
		if ($('a.form-landscaping').length) genFormOptions.height=560;
	}
	$('a.fb-form').fancybox(genFormOptions);
	
	
	
	
	// Contact Form
	if ($('form.contact').length) {
		var contactVal = {
			debug:true,
			rules: {
				fname:'required',
				lname:'required',
				zip:'required',
				email: {
					required:true,
					email:true
				},
				comments:'required'
			},
			errorClass:'invalid',
			highlight:function(e,ec) {
				//$(e).addClass(ec);
				$(e).parent('label').addClass(ec);
			},
			unhighlight:function(e,ec) {
				//$(e).removeClass(ec);
				$(e).parent('label').removeClass(ec);
				$(e).siblings('span.error').remove();
			},
			submitHandler:function(f) {
				formShade(f);
				$.ajax({
					type:'POST',
					url:'/cr/php/processor.php',
					dataType:'json',
					data:{
						action:'contact',
						jssub:'1',
						fname:$('input[name=fname]',f).val(),
						lname:$('input[name=lname]',f).val(),
						addr1:$('input[name=addr1]',f).val(),
						addr2:$('input[name=addr2]',f).val(),
						city:$('input[name=city]',f).val(),
						state:$('select[name=state]',f).val(),
						zip:$('input[name=zip]',f).val(),
						email:$('input[name=email]',f).val(),
						'em-sub':$('input[name=em-sub]:checked',f).length,
						phone:$('input[name=phone]',f).val(),
						comments:$('textarea[name=comments]',f).val()
					},
					success:function(json) {
						var m = '';
						if (json.success) {
							m = '<div class="alert"><h1>Your message has been received.</h1><p>'+json.msg+'</p></div>';
						} else {
							m = '<div class="alert"><h1>There was a problem sending your message.</h1><p>'+json.msg+'</p></div>';
						}
						formReveal(f,m);
					},
					error:function(x,t,e) {
						formReveal(f,'<div class="alert"><h1>There was a problem sending your message. Please try again later.</h1></div>');
					}
				});
			},
			invalidHandler: function(f,v,d) {
			},
			errorPlacement: function(err,el) {
				var fn = $(el).siblings('span.title').text();
				$(el).siblings('span.error').remove();
				if(!$(el).siblings('span.error').length) {
					$(el).after('<span class="error">* required</span>');
				}
			}
		};
		$('form.contact').validate(contactVal);
		}
	
	
	
	// RSVP Form
	if ($('form.rsvp').length) {
		var rsvpVal = {
			debug:true,
			rules: {
				fname:'required',
				lname:'required',
				addr1:'required',
				zip:'required',
				email: {
					required:true,
					email:true
					},
				phone:'required',
				eventid:'required'
				},
			errorClass:'invalid',
			highlight:function(e,ec) {
				$(e).parent('label').addClass(ec);
				},
			unhighlight:function(e,ec) {
				$(e).parent('label').removeClass(ec);
				$(e).siblings('span.error').remove();
				},
			submitHandler:function(f) {
				formShade(f);
				$.ajax({
					type:'POST',
					url:'/cr/php/processor.php',
					dataType:'json',
					data:{
						action:'rsvp',
						jssub:'1',
						fname:$('input#rsvp-fname',f).val(),
						lname:$('input#rsvp-lname',f).val(),
						addr1:$('input#rsvp-addr1',f).val(),
						city:$('input#rsvp-city',f).val(),
						state:$('select#rsvp-state',f).val(),
						zip:$('input#rsvp-zip',f).val(),
						email:$('input#rsvp-email',f).val(),
						phone:$('input#rsvp-phone',f).val(),
						comments:$('textarea#rsvp-comments',f).val(),
						eventid:$('input#rsvp-eventid',f).val()
						},
					success:function(json) {
						var m = '';
						if (json.success) {
							m = '<div class="alert"><h1>Your RSVP has been received.</h1><p>'+json.msg+'</p></div>';
						} else {
							m = '<div class="alert"><h1>There was a problem sending your RSVP.</h1><p>'+json.msg+'</p></div>';
						}
						formReveal(f,m);
						},
					error:function(x,t,e) {
						formReveal(f,'<div class="alert"><h1>There was a problem sending your RSVP. Please try again later.</h1></div>');
						}
					});
				},
			invalidHandler: function(f,v,d) {
				},
			errorPlacement: function(err,el) {
				var fn = $(el).siblings('span.title').text();
				$(el).siblings('span.error').remove();
				if(!$(el).siblings('span.error').length) {
					$(el).after('<span class="error">* required</span>');
					}
				}
			}
		$('form.rsvp').validate(rsvpVal);
		}
	
	
	
	// RSVP Form
	if ($('form.register').length) {
		var rsvpVal = {
			debug:true,
			rules: {
				fname:'required',
				lname:'required',
				addr:'required',
				zip:'required',
				email: {
					required:true,
					email:true
					},
				phone:'required',
				regid:'required'
				},
			errorClass:'invalid',
			highlight:function(e,ec) {
				$(e).parent('label').addClass(ec);
				},
			unhighlight:function(e,ec) {
				$(e).parent('label').removeClass(ec);
				$(e).siblings('span.error').remove();
				},
			submitHandler:function(f) {
				formShade(f);
				var vchex = '';
				if ($('input.chx:checkbox',f).length) {
					$('input.chx:checkbox',f).each(function() {
						vchex += $(this).val() + ', ';
						});
					}
				
				
				$.ajax({
					type:'POST',
					url:'/cr/php/processor.php',
					dataType:'json',
					data:{
						action:'register',
						jssub:'1',
						fname:$('input#general-fname',f).val(),
						lname:$('input#general-lname',f).val(),
						addr:$('input#general-addr',f).val(),
						city:$('input#general-city',f).val(),
						state:$('select#general-state',f).val(),
						zip:$('input#general-zip',f).val(),
						email:$('input#general-email',f).val(),
						phone:$('input#general-phone',f).val(),
						comments:$('textarea#general-comments',f).val(),
						chex:vchex,
						regid:$('input#general-regid',f).val()
						},
					success:function(json) {
						var m = '';
						if (json.success) {
							m = '<div class="alert"><h1>Your request has been received.</h1><p>'+json.msg+'</p></div>';
						} else {
							m = '<div class="alert"><h1>There was a problem sending your request.</h1><p>'+json.msg+'</p></div>';
						}
						formReveal(f,m);
						setTimeout(function() { $.fancybox.close(); }, 5000);
						},
					error:function(x,t,e) {
						formReveal(f,'<div class="alert"><h1>There was a problem sending your request. Please try again later.</h1></div>');
						}
					});
				},
			invalidHandler: function(f,v,d) {
				},
			errorPlacement: function(err,el) {
				var fn = $(el).siblings('span.title').text();
				$(el).siblings('span.error').remove();
				if(!$(el).siblings('span.error').length) {
					$(el).after('<span class="error">* required</span>');
					}
				}
			}
		$('form.register').validate(rsvpVal);
		}
		
		
		
		// To Make Buttons Submit Forms (IE <= 7 Only)
		if ($.browser.msie && $.browser.version <= 7) {
			$('form button').click(function() {
				$(this).parents('form').submit();
			});
		}
	
	
	
	});



// Part of Our Form Validation Process
function formShade(el) {
	$(el).fadeOut(400);
	}
function formReveal(el,str) {
	$(el)
		.fadeOut(200,function() {
			$(this).html(str);
		})
		.fadeIn(400);
	}
