var TCTNewletterSignUpController = function(dataObj) {
	this.domRootEl = dataObj.domRootEl;
	this.domForm = $(this.domRootEl).find("form").get()[0];
	this.domFields = $(this.domForm).find("input").get();
	this.domSignUpButton = $(this.domRootEl).find("a.nlb-sign-up").get()[0]; 
	this.domCloseButtons = $(this.domRootEl).find("a.nlb-close").get(); 
	this.domForm = $(this.domRootEl).find("form").get()[0];
	this.domThickBoxCloseButton = $("#TB_closeWindowButton").get()[0];
	this.domErrorMessage = $(this.domRootEl).find("p.nl-error-message").get()[0];
	this.domSubmittingMessage = $(this.domRootEl).find("p.nl-submitting-message").get()[0];
	this.domIframe = $(this.domRootEl).find("iframe").get()[0];
	this.domFormHolder = $(this.domRootEl).find(".nl-form-holder").get()[0];
	this.domThankYouHolder = $(this.domRootEl).find(".nl-thank-you-holder").get()[0];
	this.currentlySubmitting = false;
}

TCTNewletterSignUpController.prototype = {
	init: function() {
		var self = this;
		
		$(self.domCloseButtons).click( function() {
			self.closeLightBox();
			return false;
		});
		$(self.domSignUpButton).click( function() {
			if (self.verifyFields()) {
				self.submit();
			}
			return false;
		});
		$(self.domFields).mousedown( function() {
			$(this).parents("li").removeClass("nl-error");
			$(self.domErrorMessage).css({display:"none"});	
		});
		
		$(self.domFormHolder).css({display:"block"});

	},
	closeLightBox: function() {
		var self = this;
		$(self.domThickBoxCloseButton).click();
	},
	submit: function() {
		var self = this;
		if (!self.currentlySubmitting) {
			self.currentlySubmitting = true;
			$(self.domErrorMessage).css({display:"none"});
			$(self.domSubmittingMessage).css({display: "block"});
			$(self.domIframe)
			.unbind("load")
			.load( function() {
				self.displayThankYouMessage();
			}); 
			$(self.domForm).submit();
		}
	},
	verifyFields: function() {
		var self = this;
		var allFieldsOkay = true;
		var validEmail = true;
		$(self.domFields).each( function() {
			var fieldVal = $(this).val();
			if (!fieldVal) {
				$(this).parents("li").addClass("nl-error");
				allFieldsOkay = false;
			}
			if(fieldVal && $(this).attr('id') == 'zuijk-zuijk'){
				var matches = fieldVal.match(/^\w(?:\.?[\w%+-]+)*@\w(?:[\w-]*\.)+?[a-z]{2,}$/i);
				if(matches == null){
					allFieldsOkay = false;
					validEmail = false;
				}
			}
		});
		
		if (!allFieldsOkay) {
			$(self.domErrorMessage).css({display:"block"});	
		}
		if (!validEmail){
			$(self.domErrorMessage).css({display:"none"});
			$('.nl-error-email').css({display:"block"});
		} else {
			$('.nl-error-email').css({display:"none"});
		}
		return allFieldsOkay;
	},
	displayThankYouMessage: function() {
		var self = this;
		$(this.domFormHolder).css({display:"none"});
		$(this.domThankYouHolder).css({display:"block"});
	}
}

var aTCTNewletterSignUpController = new TCTNewletterSignUpController({
	domRootEl: $("#newsletter-sign-up-holder").get()[0]
});

aTCTNewletterSignUpController.init();


