var EMAIL_REGEXP = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i;

var AJAX_URL = '/request_download'; 

$(function() {
	$("#download").button();
	$("#serverLicenseRequest").button();
	$("#serverLicenseRequest").click(function() {
                AJAX_URL = '/request_server_license';
		$("#download-form").dialog({title: 'NuGram Server License Request'}).dialog('open');
	});

	$("#ideLicenseRequest").button();
	$("#ideLicenseRequest").click(function() {
                AJAX_URL = '/request_ide_license';
		$("#download-form").dialog({title: 'NuGram IDE License Request'}).dialog('open');
	});

	var name = $("#name");
	var email = $("#email");
	var tips = $(".validateTips");
	var allFields = $( []).add(name).add(email);

	function updateTips(t) {
		tips.text(t);
		tips.addClass('ui-state-highlight');
		setTimeout(function() {
			tips.removeClass('ui-state-highlight', 1500);
		}, 500);
	}

	function checkLength(o, n, min, max) {

		if (o.val().length > max || o.val().length < min) {
			o.addClass('ui-state-error');
			updateTips("Length of " + n + " must be between " + min + " and " + max + ".");
			return false;
		} else {
			return true;
		}

	}

	function checkRegexp(o, regexp, n) {

		if (!(regexp.test(o.val()))) {
			o.addClass('ui-state-error');
			updateTips(n);
			return false;
		} else {
			return true;
		}

	}
	;

	$("#download-form").dialog( {
		autoOpen : false,
		width : 350,
		modal : true,
		buttons : {
			'Submit' : function() {
				var bValid = true;
				allFields.removeClass('ui-state-error');
				bValid = bValid && checkLength(name, "username", 3, 100);
				bValid = bValid && checkLength(email, "email", 6, 80);
				bValid = bValid && checkRegexp(email, EMAIL_REGEXP, "eg. support@nuecho.com");

				if (bValid) {
					$.get(AJAX_URL, {
						'name' : name.val(),
						'email' : email.val()
					}, function(data, status, xhr) {
						$("<p>" + data + "</p>").dialog( {
							title : 'Thank you!',
							autoOpen : true,
							width : 500,
							modal : true,
							buttons : {
								'Ok' : function() {
									$(this).dialog('close');
									$("#download-form").dialog('close');
								}
							}
						});
					});
				}
			}
		}
	});
});


