if(typeof mmw.article == 'undefined')
{
	mmw.article = {};
}

function capitaliseFirstLetter(string)
{
    return string.charAt(0).toUpperCase() + string.slice(1);
}

mmw.article.dialog = {
	email: {
		id: 'article-email-dialog',
		formElem: null,
		show: function(articleId) {
			var parsedUrl = mmw.parseUrl(window.location.href.toString());
			var emailUrl = parsedUrl.scheme + '//' + parsedUrl.authority.join(':') + '/article/email/' + parsedUrl.path[1] + '/';
			var jDialogElem = $('#' + mmw.article.dialog.email.id);
			mmw.article.dialog.email.setupCaptcha();
			jDialogElem.dialog({closeText: 'X', modal: true, dialogClass: 'email-article' });
			jDialogElem.dialog('open');
			
		},
		setupCaptcha: function() {
			var jDialogElem = $('#' + mmw.article.dialog.email.id);
			var captchaValueDisplayElem = jDialogElem.find('.email-article-captcha-challenge');
			var captchaEntryElem = jDialogElem.find('#form_email-article-captcha-challenge');
			var captchaSubmissionElem = jDialogElem.find('.captcha_value_submission_field');
			var captchaValue = mmw.captcha.create();
			captchaValueDisplayElem.html(captchaValue);
			captchaEntryElem.val('');
			captchaSubmissionElem.val(captchaValue);
		},
		submit: function(formElem) {
			var formElements = formElem.elements;
			var jFormElem = $(formElem);
			var formElement;
			var ajaxData = {form: {}};
			mmw.article.dialog.email.formElem = formElem;
			if(mmw.article.dialog.email.validate(formElements)) {
				for(var i = 0; i < formElements.length; i++) {
					formElement = $(formElements[i]);
					ajaxData.form[formElement.attr('name')] = formElement.val();
				}
				ajaxData['action'] = 'emailArticle';
				jQuery.ajax('/ajax/',
					{
						data: ajaxData,
						dataType: 'json',
						success: mmw.article.dialog.email.handleSent,
						error: function(jqXHR, textStatus, errorThrown) {
							alert('AN ERROR OCCURED. PLEASE TRY AGAIN. IF IT PERSISTS, CONTACT THE WEBMASTER.');
						}
					}
				);
			}
			return false;
		},
		validate: function(formElements) {
			var formElement, elemValue, elemName;
			for(var i = 0; i < formElements.length; i++) {
				formElement = $(formElements[i]);
				elemName = formElement.attr('name');
				elemValue = formElement.val();
				switch(elemName) {
					case 'message':
						if(elemValue.length > 80) {
							alert('ERROR: "' + formElement.attr('title') + '" field is too long. Maximum of 80 characters. ' + elemValue.length + ' given.');
							return false;
						}
						break;
					case 'captcha':
						if(elemValue.length < 1) {
							alert('ERROR: "' + formElement.attr('title') + '" field is required.');
							return false;
						}
						if(elemValue != $('#' + mmw.article.dialog.email.id + ' ' + '.captcha_value_submission_field').val()) {
							alert('ERROR: "' + formElement.attr('title') + '" field does not match.');
							return false;
						}
						break;
					default:
						if(elemValue.length > 255) {
							alert('ERROR: "' + formElement.attr('title') + '" field is too long. Maximum of 255 characters. ' + elemValue.length + ' given.');
							return false;
						} else if(elemValue.length < 1) {
							alert('ERROR: "' + formElement.attr('title') + '" field is required.');
							return false;
						}
				}
			}
			return true;
		},
		handleSent: function(data, textStatus, jqXHR) {
			if(data['error']) {
				alert('ERROR: ' + data['errorMsg']);
			} else {
				alert('Successfully sent email!');
				mmw.article.dialog.email.clearFields();
				$('#' + mmw.article.dialog.email.id).dialog('close');
			}
		},
		clearFields: function() {
			var formElements = mmw.article.dialog.email.formElem;
			for(var i = 0; i < formElements.length; i++) {
				formElement = $(formElements[i]);
				if((formElement.attr('type') != 'hidden' || formElement.hasClass('captcha_value_submission_field')) && formElement.attr('type') != 'button' && formElement.attr('type') != 'submit')
				{
					formElement.val('');
				}
			}
		}
	},
	print: {
		show: function(articleId) {
			var parsedUrl = mmw.parseUrl(window.location.href.toString());
			var printUrl = parsedUrl.scheme + '//' + parsedUrl.authority.join(':') + '/article/print/' + parsedUrl.path[1] + '/';
			window.open(printUrl,'PrintArticleWindow','width=600,height=600');
		}
	}
};

$(function() {
	$('#' + mmw.article.dialog.email.id).dialog({ autoOpen: false });
});
