(function() {
	
// Validators
var validators = {
	'form-sendlink' : function(e) {
		e.preventDefault();

		var form	= $(this),
			emailRe = /^(\w+)([\-+.][\w]+)*@(\w[\-\w]*\.){1,5}([A-Za-z]){2,6}$/;

		// From
		var from = $('#sendlink-from'),
			fv	 = $.trim(from.val());

		if (fv.length == 0) {
			XRX.FlashBox.show( PDT.i18n('enter your name') );
			from.focus();
			return false;
		}


		// To
		var to = $('#sendlink-to'),
			tv = $.trim(to.val());

		if (tv.length == 0) {
			XRX.FlashBox.show( PDT.i18n('enter your email') );
			to.focus();
			return false;
		}

		if (emailRe.test(tv) == false) {
			XRX.FlashBox.show( PDT.i18n('invalid email address') );
			to.focus();
			return false;
		}


		// Message
		var msg = $('#sendlink-message'),
			mv	= $.trim(msg.val());

		if (mv.length == 0) {
			XRX.FlashBox.show( PDT.i18n('enter your message') );
			msg.focus();
			return false;
		}


		// Disable the button to prevent multiple submits
		var btn = $(this).find('input[type="submit"]');
		btn.attr('disabled', 'disabled');
		btn.after('<span class="loading"></span>');

		$.ajax({
			url		: this.action,
			dataType: 'json',
			type	: 'post',
			data	: $(this).serialize(),
			success	: function(data) {
				form.get(0).reset();
				
				XRX.FlashBox.show(data.message);
				btn.removeAttr('disabled');
				btn.next().remove();
				
				// Collapse the area
				$('#do-sendlink').trigger('click');
			},
			error	: function() {
				btn.removeAttr('disabled');
				btn.next().remove();
				alert(PDT.i18n('an error occured'));
			}
		})
		
		return false;
	},
	
	'form-feedback' : function(e) {
		e.preventDefault();

		var form	= $(this),
			emailRe = /^(\w+)([\-+.][\w]+)*@(\w[\-\w]*\.){1,5}([A-Za-z]){2,6}$/;

		// Name
		var name = $('#feedback-name'),
			nv	 = $.trim(name.val());

		if (nv.length == 0) {
			XRX.FlashBox.show( PDT.i18n('enter your name') );
			name.focus();
			return false;
		}


		// Email
		var email = $('#feedback-email'),
			ev	  = $.trim(email.val());

		if (ev.length == 0) {
			XRX.FlashBox.show( PDT.i18n('enter your email') );
			email.focus();
			return false;
		}

		if (emailRe.test(ev) == false) {
			XRX.FlashBox.show( PDT.i18n('invalid email address') );
			email.focus();
			return false;
		}


		// Description
		var desc = $('#feedback-desc'),
			dv	 = $.trim(desc.val());

		if (dv.length == 0) {
			XRX.FlashBox.show( PDT.i18n('enter your description') );
			desc.focus();
			return false;
		}


		// Disable the button to prevent multiple submits
		var btn = $(this).find('input[type="submit"]');
		btn.attr('disabled', 'disabled');
		btn.after('<span class="loading"></span>');

		$.ajax({
			url		: this.action,
			dataType: 'json',
			type	: 'post',
			data	: $(this).serialize(),
			success	: function(data) {
				form.get(0).reset();

				XRX.FlashBox.show(data.message);
				btn.removeAttr('disabled');
				btn.next().remove();
				
				// Collapse the area
				$('#do-feedback').trigger('click');
			},
			error	: function() {
				btn.removeAttr('disabled');
				btn.next().remove();
				alert(PDT.i18n('an error occured'));
			}
		})
		
		return false;
	}
}


$(document).delegate('input[type="submit"]', 'click', function(e) {
	var form = $(this).parents('form'),
		fId	 = form.attr('id');
	
	if (validators[fId]) {
		return validators[fId].call(form.get(0), e);
	}
	
	return true;
});

})();
