$(function() {
    $.datepicker.setDefaults($.extend({showMonthAfterYear: false}, $.datepicker.regional['fi']));
	$("#datetime").datepicker();

	
	var name = $("#name"),
		company = $("#company"),
		email = $("#email"),
		address = $("#address"),
		postalinfo = $("#postalinfo"),
		phone = $("#phone"),
		date = $("#datetime"),
		persons = $("#persons"),
		allFields = $([]).add(name).add(company).add(email).add(address).add(postalinfo).add(date).add(phone).add(persons),
		tips = $(".validateTips");

	function updateTips(t) {
		tips
			.text(t)
			.addClass('ui-state-highlight');
		setTimeout(function() {
			tips.removeClass('ui-state-highlight', 1500);
		}, 500);
	}

	function checkLength(o,n,min,max) {

		if( o.val() == "")
			return true;
		
		if ( o.val().length > max || o.val().length < min ) {
			o.addClass('ui-state-error');
			updateTips(n + " kenttä on pakollinen.");
			return false;
		} else {
			return true;
		}

	}

	function checkRegexp(o,regexp,n) {
		if( o.val() == "")
			return true;
		
		if ( !( regexp.test( o.val() ) ) ) {
			o.addClass('ui-state-error');
			updateTips(n);
			return false;
		} else {
			return true;
		}

	}

	function checkMandatoryFields(n, e, p) {

		if ( n.val() == "") {
			n.addClass('ui-state-error');
			updateTips("Nimi on pakollinen tieto.");
			return false;
		}
		else if(e.val() == "" && p.val() == "") {
			e.addClass('ui-state-error');
			p.addClass('ui-state-error');
			updateTips("Puhelin tai sähköposti on pakollinen tieto.");
			return false;
		} else {
			return true;
		}

	}
	
	
	$("#offer-form").dialog({
		autoOpen: false,
		height: 650,
		width: 825,
		modal: true,
		buttons: {
			'Lähetä tarjouspyyntö': function() {
				var bValid = true;
				allFields.removeClass('ui-state-error');

				bValid = bValid && checkLength(name,"Nimi",3,16);
				bValid = bValid && checkLength(email,"Sähköposti",6,80);
				bValid = bValid && checkLength(phone,"Puhelin",8,14);				
				bValid = bValid && checkRegexp(email,/^((([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,"Sähköpostiosoite on virheellinen.");			
				bValid = bValid && checkLength(date,"Ajankohta",8,14);
				bValid = bValid && checkLength(persons,"Henkilömäärä",1,3);
				bValid = bValid && checkMandatoryFields(name,email,phone);
				
				if (bValid) {
					// Tähän kiitos
					$("#offer").submit(); 
					$(this).dialog('close');
					
					return true;
				}
			},
			'Peruuta': function() {
				$(this).dialog('close');
			}
		},
		close: function() {
			allFields.val('').removeClass('ui-state-error');
		}
	});
	
	
	
	$('#tajouspyynto')
		.click(function() {
			$('#offer-form').dialog('open');
			$('#offer-form').css("visibility", "visible");
			
			
		});

});

