$().ready(function() {

   //city lookup by postcode via AJAX
    $("#zip").blur(function() {
    	var city = $("#city");
    	if (!city.val() && $(this).valid()) {
    		$.getJSON("http://ws.geonames.org/postalCodeLookupJSON?&country=HU&callback=?", {postalcode: this.value }, function(response) {
    			if (!city.val() && response && response.postalcodes.length && response.postalcodes[0].placeName) {
    				city.val(response.postalcodes[0].placeName);
    			}
    		})
    	}
    });

   //custom rule - nonumbers
    jQuery.validator.addMethod("nonumbers", function(value, element) {
        return this.optional(element) || ! /[0-9]+/i.test(value);
    });

   //common messages translation
    jQuery.extend(jQuery.validator.messages, {
    	required: "A mező kitöltése kötelező!<br />",
    	nonumbers: "Hibás adat. Kérjük, csak betűket írjon be!",
    	number: "Hibás adat. Kérjük, csak számokat írjon be!"
    });

   //form validation object
    $("#ajanlatForm").validate({
        onfocusout: false,
        onkeyup: false,
       //validation rules
        rules: {
          optika_reg_nev: {
            required: true,
            nonumbers: true
          },
          optika_reg_mail: {
            required: true,
            email: true
          },
          optika_reg_prefix: {
            required: true,
            number: true,
            maxlength: 2
          },
          optika_reg_msisdn: {
            required: true,
            number: true
          },
          optika_reg_irsz: {
            required: true,
            number: true,
            rangelength: [4,4]
          },
          optika_reg_telepules: {
            required: true,
            nonumbers: true
          },
          optika_reg_street: {
            required: true
          },
          optika_reg_snumber: {
            required: true
          }
        },
       //validation messages
        messages: {
          optika_reg_nev: {
            required: "Kérjük, adja meg a nevét!"
          },
          optika_reg_mail: {
            required: "Kérjük, adja meg az e-mail címét!<br />",
            email: "Hibás e-mail cím. Kérjük, adja meg újra!"
          },
          optika_reg_prefix: {
            required: "Kérjük, adja meg körzetszámát!<br />",
            number: "Hibás körzetszám. Kérjük, csak számokat írjon be!<br />",
            maxlength: "Hibás körzetszám. A körzetszám maximum 2 karakterből állhat!<br />"
          },
          optika_reg_msisdn: {
            required: "Kérjük, adja meg a telefonszámát!<br />",
            number: "Hibás telefonszám. Kérjük, csak számokat írjon be!"
          },
          optika_reg_irsz: {
            required: "Kérjük, adja meg az irányítószámot!<br />",
            number: "Hibás irányítószám. Kérjük, csak számokat írjon be!",
            rangelength: "Hibás irányítószám. Az irányítószámnak 4 karakterből kell állnia!"
          },
          optika_reg_telepules: {
            required: "Kérjük, adja meg a települést!<br />"
          },
          optika_reg_street: {
            required: "Kérjük, adja meg a címét!<br />"
          },
          optika_reg_snumber: {
            required: "Kérjük, adja meg a házszámát!<br />"
          }
        },
        showErrors: function(map) {
            this.defaultShowErrors();
        },
       //custom error placement
        errorPlacement: function(error, element) {
            elid = element.attr("id");
            errorcontainer = '';
           //some fields share error placement
            switch(elid) {
              case "area" :
                elid = "phone";
                if (!$('#phone').hasClass('error')) errorcontainer = elid + "Error";
              break;
              case "zip" :
                elid = "city";
                if (!$('#city').hasClass('error')) errorcontainer = elid + "Error";
              break;
              case "streetnum" :
                elid = "street";
                if (!$('#street').hasClass('error')) errorcontainer = elid + "Error";
              break;
              default:
                errorcontainer = elid + "Error";
              break;
            }

            if (errorcontainer != '') {
                var errorcontainer = $("#" + errorcontainer);
                error.appendTo(errorcontainer);
                errorcontainer.show();
            }
        }
    });
});
