$(document).ready(function() {
	$('#batizadoDialog').dialog({
		autoOpen: false,
		title: 'Batizado Registration',
		width:795,
		buttons: {
			"Close": function() { 
				$(this).dialog("close"); 
			} 
		}
	});
	
	$('#batizadoReg').click( function() {
		$('#batizadoDialog').dialog('open');
		return false;
	});
	
	$('#slides').cycle({
		fx : 'fade' // choose your transition type, ex: fade, scrollUp, shuffle, etc...
	});

	$('#emailSent button').click(function() {
		$('#emailSent').hide();
		clearEmailForm();
		$('#contactContent').show();
	});
	$('#spamError button').click(function() {
		$('#spamError').hide();
		clearEmailForm();
		$('#contactContent').show();
	});
	$('#systemError button').click(function() {
		$('#systemError').hide();
		clearEmailForm();
		$('#contactContent').show();
	});
	// begin sendMail function
	$('.sendEmailButton').click(function() {

		var emailInfo = new EmailInfo();

		emailInfo.from = $('#from').val();
		emailInfo.subject = $('#subject').val();
		emailInfo.message = $('#message').val();
		emailInfo.ccMe = $('#ccMe').is(':checked');

		// remove any existing error if there are any
		$('.errorBubble').remove();

		var hasErrors = false;

		if(emailInfo.from === '') {
			$(createError('Please enter your email address!')).insertAfter('#from').prev().focus();
			hasErrors = true;
		} else if(!isValidEmail(emailInfo.from)) {
			$(createError('Please enter a valid email address!')).insertAfter('#from').prev().focus();
			hasErrors = true;
		} else if(emailInfo.message === '') {
			$(createError('Please enter a message!')).insertAfter('#message').prev().focus();
			hasErrors = true;
		}

		if(hasErrors) {
			// slide down and show any errors
			$('.errorBubble').slideDown();
		} else {
			$.ajax({
				type : 'POST',
				beforeSend : function(jqXHR, settings) {
					$.blockUI({
						message : "<h3>Sending your message...</h3>",
						css : {
							border : 'none',
							padding : '8px',
							backgroundColor : '#fff',
							'-webkit-border-radius' : '10px',
							'-moz-border-radius' : '10px',
							'border-radius' : '10px',
							'font-family' : '"Trebuchet MS", Arial',
							opacity : .5,
							color : '#000'
						}
					});
				},
				url : './send_email.php',
				data : JSON.stringify(emailInfo),
				success : function(data, textStatus, jqXHR) {
					$.unblockUI();
					var status = data['status'];
					if(status === 'email_sent') {
						$('#contactContent').hide();
						$('#emailSent').show();
					} else if(status === 'failed_validation') {
						if(data['validationErrors'].length > 0) {
							$.each(data['validationErrors'], function() {
								var field = this['field'];
								var description = this['description'];
								if(field === 'from') {
									if(description === 'EMPTY_EMAIL_ADDRESS') {
										$(createError('Please enter your email address!')).insertAfter('#from').prev().focus();
									} else if(description === 'INVALID_EMAIL_ADDRESS') {
										$(createError('Please enter a valid email address!')).insertAfter('#from').prev().focus();
									}
								} else {
									if(description === 'EMPTY_MESSAGE') {
										$(createError('Please enter a message!')).insertAfter('#message').prev().focus();
									}
								}
							});
							$('.errorBubble').slideDown();
						}
					} else if(status === 'is_spam') {
						$('#contactContent').hide();
						$('#spamError').show();
					} else {
						$('#contactContent').hide();
						$('#systemError').show();
					}
				},
				error : function(xhr, status, error) {
					//var err = eval("(" + xhr.responseText + ")");
					$('#contactContent').hide();
					$('#systemError').show();
				},
				dataType : "json"
			});
		}
	});
	// end sendMail function

	$(".accordion h4:first").addClass("active");
	$(".accordion p:not(:first)").hide();

	$(".accordion h4").click(function() {
		$(this).next("p").slideToggle("slow").siblings("p:visible").slideUp("slow");
		$(this).toggleClass("active");
		$(this).siblings("h4").removeClass("active");
	});

	$(".tabContent").hide();
	$("#cultureTabs ul li:first").addClass("active");
	$("#cultureTabs ul li").slice(1).addClass("inactive");

	//Activate first tab
	$(".tabContent:first").show();
	//Show first tab content
	$("#cultureTabs ul li").click(function() {

		$("#cultureTabs ul .active").removeClass("active").addClass("inactive");
		//Remove any "active" class
		$(this).removeClass("inactive").addClass("active");
		//Add "active" class to selected tab
		$(".tabContent").hide();
		//Hide all tab content

		var activeTab = $(this).find("a").attr("href");
		//Find the href attribute value to identify the active tab + content
		$(activeTab).fadeIn();
		//Fade in the active ID content
		return false;
	});
	// init the home link as clicked when a user first visits the site
	//ViewController.currentView = Views.HOME;
	ViewController.init();

	$('#homeLink').click(function() {
		ViewController.execute(Views.HOME);
	});

	$('#classesLink').click(function() {
		ViewController.execute(Views.CLASSES);
	});

	$('#cultureLink').click(function() {
		ViewController.execute(Views.CULTURE);
	});

	$('#mediaLink').click(function() {
		ViewController.execute(Views.MEDIA);
	});

	$('#contactLink').click(function() {
		ViewController.execute(Views.CONTACT);
	});
});
function EmailInfo() {
	this.subject
	this.from
	this.message
	this.ccMe
}

function clearEmailForm() {
	$('#from').val("");
	$('#subject').val("");
	$('#message').val("");
	$('#ccMe').removeAttr("checked");
}

function createError(errorText) {
	return '<p class="errorBubble">' + errorText + '</p>'
}

function isValidEmail(email) {
	var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
	return emailPattern.test(email);
}

// declaring some constants
Views = {
	HOME : 'homeView',
	CONTACT : 'contactView',
	MEDIA : 'mediaView',
	CULTURE : 'cultureView',
	CLASSES : 'classesView'
}

function ViewController() {
	var previousView = '';
	var currentView = '';

	this.init = function() {
		HomeView.enable();
		ContactView.disable();
		MediaView.disable();
		ClassesView.disable();
		CultureView.disable();
		currentView = Views.HOME;
		previousView = Views.HOME;
	}

	this.execute = function(viewId) {
		if(currentView != viewId) {
			if(Views.HOME === viewId) {
				HomeView.enable();
			} else if(Views.CONTACT === viewId) {
				ContactView.enable();
			} else if(Views.CLASSES === viewId) {
				ClassesView.enable();
			} else if(Views.CULTURE === viewId) {
				CultureView.enable();
			} else {
				MediaView.enable();
			}
			// set the previous view to the current view
			// and assign the new view id to the current view
			previousView = currentView;
			currentView = viewId;

			if(Views.HOME === previousView) {
				HomeView.disable();
			} else if(Views.CONTACT === previousView) {
				ContactView.disable();
			} else if(Views.CLASSES === previousView) {
				ClassesView.disable();
			} else if(Views.CULTURE === previousView) {
				CultureView.disable();
			} else {
				MediaView.disable();
			}
		}
	}
}

ViewController = new ViewController();
HomeView = {
	enable : function() {
		$('#capColumn img').attr('src', 'images/cap5.png')
		$('#homeLink').attr('src', 'images/home-clicked.png');
		$('#home').show('slow');
	},
	disable : function() {
		$('#homeLink').attr('src', 'images/home-unclicked.png');
		$('#home').hide();
	}
}
ContactView = {
	enable : function() {
		$('#capColumn img').attr('src', 'images/cap3.png')
		$('#contactLink').attr('src', 'images/contact-clicked.png');
		//$('#contact').fadeIn('slow');
		$('#contact').show('slow');
	},
	disable : function() {
		$('#contactLink').attr('src', 'images/contact-unclicked.png');
		$('#contact').hide();
	}
}
MediaView = {
	enable : function() {
		$('#capColumn img').attr('src', 'images/cap4.png')
		$('#mediaLink').attr('src', 'images/media-clicked.png');
		$('#media').show('slow');
	},
	disable : function() {
		$('#mediaLink').attr('src', 'images/media-unclicked.png');
		$('#media').hide();
	}
}
CultureView = {
	enable : function() {
		$('#capColumn img').attr('src', 'images/cap6.png')
		$('#cultureLink').attr('src', 'images/culture-clicked.png');
		$('#culture').show('slow');
	},
	disable : function() {
		$('#cultureLink').attr('src', 'images/culture-unclicked.png');
		$('#culture').hide();
	}
}
ClassesView = {
	enable : function() {
		$('#capColumn img').attr('src', 'images/cap1.png')
		$('#classesLink').attr('src', 'images/classes-clicked.png');
		$('#classes').show('slow');
	},
	disable : function() {
		$('#classesLink').attr('src', 'images/classes-unclicked.png');
		$('#classes').hide();
	}
}
