oEmailModule = {
	sEmailLink:"#emailAFriendLink",
	sEmailContainer:".modalContainer",
	sEmailModal:"#modalEmailAFriend",
	sEmailForm:"#emailAFriendForm",
	sMissingToFieldErrorMessage:"Please enter a valid email address below.",
	sEmailSubjectWithName:"sent you interesting information from nationwide.com",
	init:function() {
		$(oEmailModule.sEmailLink).click(function() {
			oEmailModule.openForm($(this).attr('href'));
			returnVal = false;
			return returnVal;
		});
	},
	openForm:function(contentURL) {
		//Fetches the form HTML, places it into the DOM, then opens it in a modal layer
		$.ajax({
			url: contentURL,
			cache: false,
			success: function(html){
				var wtUri = '/smart_conv/email/start';
				var wtTitle = 'Smart Conversation - Action - Email Start';
				dcsMultiTrack('DCS.dcsuri',wtUri,'WT.ti',wtTitle,'DCSext.ev_SC_Comment','','DCSext.sc_question','','DCSext.ev_SC_SocialTag','','DCSext.sc_socialSite','','DCSext.ev_SC_Email','','DCSext.sc_description','','DCSext.ev_SC_Feedback','','DCSext.SC_VAQ_Search','','DCSext.SC_VAQ_FilterEnable','');
				oEmailModule.addModal(html);
				oEmailModule.getPageContent();
				oEmailModule.openContentPage();
				oEmailModule.attachDialogCloseHandler();
				oEmailModule.attachFormSubmissionHandler();
                oEmailModule.attachHiddenFields();
				oEmailModule.appendTimeStamp();
				oModalLayer.popup(oEmailModule.sEmailModal);
			}
		});
	},
	appendTimeStamp:function(){
		var timeStampString = '?timestamp=' + new Date().getTime();
		var newFormAction = $(oEmailModule.sEmailForm).attr('action') + timeStampString;
		$(oEmailModule.sEmailForm).attr('action',newFormAction);
	},
	attachHiddenFields:function(){
		$('#guideTitleField').attr('value',$('.smartConversation #main h1').html());
	    $('#urlField').attr('value',document.location);
	},
	getPageContent:function() {
		var question = $('.smartConversation #main h1').html();
		var description = oTruncate.sliceText($('.smartConversation #main h2').html(),60);
		$('#modalEmailAFriend .modalDescription h2.title').html(question);
		$('#modalEmailAFriend .modalDescription p').html(description);
	},
	openContentPage:function() {
		$(oEmailModule.sEmailModal + " .contentDialog").show();
		$(oEmailModule.sEmailModal + " .successDialog").hide();
		$(oEmailModule.sEmailModal + " .errorDialog").hide();
		oModalLayer.animateDimensions();	
	},
	validateResults:function(jsonData) {
		if (jsonData.status === 'success') {
			oEmailModule.openSuccessPage();
		}
		else {
			oEmailModule.openErrorPage();
		}
	},
	openSuccessPage:function() {
		var wtUri = '/smart_conv/email/submit';
		var wtTitle = 'Smart Conversation - Action - Email Submit';
		var pageTitle = oTruncate.sliceText($('.smartConversation #main h1').html(),30);
		dcsMultiTrack('DCS.dcsuri',wtUri,'WT.ti',wtTitle,'DCSext.ev_SC_Email','1','DCSext.sc_description',pageTitle);

		$(oEmailModule.sEmailModal + " .contentDialog").hide();
		$(oEmailModule.sEmailModal + " .successDialog").show();
		oModalLayer.animateDimensions();	
	},
	openErrorPage:function() {
		var wtUri = '/smart_conv/email/error';
		var wtTitle = 'Smart Conversation - Action - Email Error';
		dcsMultiTrack('DCS.dcsuri',wtUri,'WT.ti',wtTitle,'DCSext.ev_SC_Email','','DCSext.sc_description','');

		$(oEmailModule.sEmailModal + " .contentDialog").hide();
		$(oEmailModule.sEmailModal + " .errorDialog").show();
		oModalLayer.animateDimensions();	
	},
	addModal:function(html) {
		// if the modal has been added before, remove it
		if($(oEmailModule.sEmailModal)) {
			$(oEmailModule.sEmailModal).remove();
		}
		
		// add the new content into the body
		$("body").append(html);
	},
	attachDialogCloseHandler:function() {			
		$(oEmailModule.sEmailModal + " input.close").click(function() {
			$(oEmailModule.sEmailModal).dialog('close'); 
			returnVal = false;
			return returnVal;
		});
	},
	attachFormSubmissionHandler:function() {
		var options = {  
			dataType:      'json',
	        beforeSubmit:  oEmailModule.validateForm,
	        success:       oEmailModule.validateResults,
	        error:         oEmailModule.openErrorPage
	    };
		
		$(oEmailModule.sEmailForm).submit(function() {
			var newSub = $('#nameField input').val() + " " + oEmailModule.sEmailSubjectWithName;
			if($('#nameField input').val().length > 0) {
			$('#subjectField').val($('#nameField input').val() + " " + oEmailModule.sEmailSubjectWithName);
			}
			$(this).ajaxSubmit(options);
			returnVal = false;
			return returnVal;
		});
	},
	validateForm:function() {
		$(oEmailModule.sEmailForm + " .errorMessage").remove();
		$(".fieldPair").removeClass("addError").removeClass("error");
		
		var foundErrors = false;
		// validate that required fields have something
    	$(oEmailModule.sEmailForm + " input.req").each(function(i){
			if($(this).val().length === 0){
				$(this).parent('div').addClass('addError');
				foundErrors = true;
			}
		});
		var fromEmail = $('#emailField input'); 
		if(fromEmail.val().length > 0 && !oUtils.isValidEmail(fromEmail.val())) {
			
			$(fromEmail).parent('div').addClass('addError');
			foundErrors = true;
		} 
		var toEmail = $('#toField input');
		if(toEmail.val().length > 0){
			$.each(toEmail.val().split(","), function(i, email) {
				if(!oUtils.isValidEmail($.trim(email))) {
					
					$(toEmail).parent('div').addClass('addError');
					foundErrors = true;
				}
			}); 
		}
		
		if(foundErrors) {
			var errorMessage = "";
			if($('#toField').hasClass('addError') || $('#emailField').hasClass('addError')){
				errorMessage = oEmailModule.sMissingToFieldErrorMessage;
			}
			if(errorMessage){
				$(oEmailModule.sEmailForm).prepend('<div class="errorMessage">' + errorMessage + '</div>');
				$(oEmailModule.sEmailForm + ' .errorMessage').fadeIn('normal');
				
				$(oEmailModule.sEmailForm + ' .addError').each(function(i){
					$(this).addClass('error');
				});
				
				var wtUri = '/smart_conv/email/error';
				var wtTitle = 'Smart Conversation - Action - Email Error';
				dcsMultiTrack('DCS.dcsuri',wtUri,'WT.ti',wtTitle);

				oModalLayer.animateDimensions();
			}
		}
		
		return !foundErrors;
	}
};

$(document).ready(function() {
	oEmailModule.init();
});