jQuery(document).ready(function($) {
jQuery.extend(jQuery.validator.messages, {
        required: "Wymagane.",
        remote: "Prosz\u0119 o wypełnienie tego pola.",
        email: "Prosz\u0119 o podanie prawidłowego adresu email.",
        url: "Prosz\u0119 o podanie prawidłowego URL.",
        date: "Prosz\u0119 o podanie prawidłowej daty.",
        dateISO: "Proszę o podanie prawidłowej daty (rrrr-mm-dd).",
        number: "Prosz\u0119 o podanie prawidłowej liczby.",
        digits: "Prosz\u0119 o podanie samych cyfr.",
        creditcard: "\u0119roszę o podanie prawidłowej karty kredytowej.",
        equalTo: "Prosz\u0119 o podanie tej samej wartości ponownie.",
        accept: "Prosz\u0119 o podanie wartości z prawidłowym rozszerzeniem.",
        maxlength: jQuery.format("Prosz\u0119 o podanie nie więcej niż {0} znaków."),
        minlength: jQuery.format("Prosz\u0119 o podanie przynajmniej {0} znaków."),
        rangelength: jQuery.format("Prosz\u0119 o podanie wartości o długości od {0} do {1} znaków."),
        rangeValue: jQuery.format("Proszę o podanie wartości z przedziału od {0} do {1}."),
        range: jQuery.format("Proszę o podanie wartości z przedziału od {0} do {1}."),
        maxValue: jQuery.format("Prosz\u0119 o podanie wartości mniejszej bądź równej {0}."),
        max: jQuery.format("Prosz\u0119 o podanie wartości mniejszej bądź równej {0}."),
        minValue: jQuery.format("Prosz\u0119 o podanie wartości większej bądź równej {0}."),
        min: jQuery.format("\u0119roszę o podanie wartości większej bądź równej {0}."),
        namestring: "Prosz\u0119 o podanie ciągu znaków skłądającego się wyłącznie z liter.",
        login: "Dozwolone znaki to litery(bez polskich znaków),@._"
    });
    jQuery.validator.addMethod("namestring", function(value, element) {
        return this.optional(element) || /^[A-Za-zżźćńółęąśŻŹĆĄŚĘŁÓŃ]+$/.test(value);
    }, "Dozwolone są tylko litery");

    jQuery.validator.addMethod("login", function(value, element) {
        return this.optional(element) || /^[a-zA-Z0-9_@.]+$/.test(value);
    }, "Litery(bez polskich znaków), cyfry oraz: _@.");
	
	jQuery.validator.addMethod("timeCheck", function(value, element) {
        return this.optional(element) || /^[0-9-0-9]+$/.test(value);
    }, "cyfry oraz -");
	
	
    jQuery.validator.addMethod("city", function(value, element) {
        return this.optional(element) || /^[A-Za-zżźćńółęąśŻŹĆĄŚĘŁÓŃ -]+$/.test(value);
    }, "Niepoprawna nazwa miasta");
	
		jQuery.validator.addMethod("nip", function(value, element) {
	var verificator_nip = new Array(6,5,7,2,3,4,5,6,7); var nip = value.replace(/[\ \-]/gi, ''); 
	if (nip.length >0 && nip.length < 10 || nip.length >=11)  { return false; }
	if(nip.length ==0){return true; }
	else 
	{
	var n = 0;
	for (var i=0; i<9; i++) {	n += nip[i] * verificator_nip[i]; }
	n %= 11;
	if (n != nip[9]) { return false; }
	}
	return true;	
	}, "Proszę o podanie prawidłowego numeru NIP");
	
	jQuery.validator.addMethod("pesel", function(value, element) {
	var pesel = value.replace(/[\ \-]/gi, ''); 
	if (pesel.length>0 && pesel.length<11 || pesel.length>=12) {return false; }
	if(pesel.length==0){return true;}
	else {
	var steps = new Array(1, 3, 7, 9, 1, 3, 7, 9, 1, 3); 
	var sum_nb = 0;
	for (var x = 0; x < 10; x++) { sum_nb += steps[x] * pesel[x];}
	sum_m = 10 - sum_nb % 10;
	if (sum_m == 10) { sum_c = 0; } else { sum_c = sum_m;}
	if (sum_c != pesel[10]) {	return false;}
	}
	return true;	
	}, "Proszę o podanie prawidłowego numeru PESEL");

	jQuery.validator.addMethod("regon", function(value, element) {
	var regon = value.replace(/[\ \-]/gi, ''); 
	if (regon.length >0 && regon.length<9 || regon.length >= 10) { return false; }
	if(regon.length==0){return true;}
	var steps = new Array(8, 9, 2, 3, 4, 5, 6, 7); 
	var sum_nb = 0;
	var intControlNr = 0;
	for (var x = 0; x < 8; x++) { sum_nb += steps[x] * regon[x];}
	sum_m = sum_nb % 11;
	intControlNr=(sum_m == 10)?0:sum_m;
	if(intControlNr == regon[8])
	{
		return true;
	}
	return false;

		
	}, "Proszę o podanie prawidłowego numeru REGON");
	
	jQuery.validator.addMethod("notEqual", function(value, element, param) {
	return this.optional(element) || value != param;
	}, "Wymagane");

	$.validator.methods.number = function (value, element) {
	return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:[\s\.,]\d{3})+)(?:[\.,]\d+)?$/.test(value);
	}
	$.validator.methods.dateISO = function(value, element) {
		function test(v) {
			var r = false;
			if (/^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(v)) {
				var a = v.split('-'),
					d = parseInt(a[2], 10),
					m = parseInt(a[1], 10),
					y = parseInt(a[0], 10);
				var b = new Date(y, (m - 1),d);
				if (((b.getMonth() + 1) !== m)
					|| (b.getDate() !== d)
					|| (b.getFullYear() !== y)
				) {
					r = false;
				} else {
					r = true;
				}
			}
			return r;
		};
		return this.optional(element) || test(value);
	}

	jQuery.validator.addMethod("DataDok", function(value, element) {
		function test(v) {
			var r = false;
			if (/^\d{1,2}[\/-]\d{1,2}[\/-]\d{4}$/.test(v)) {
				var a = v.split('-'),
					d = parseInt(a[0], 10),
					m = parseInt(a[1], 10),
					y = parseInt(a[2], 10);
				var b = new Date(y, (m - 1),d);
				if (((b.getMonth() + 1) !== m)
					|| (b.getDate() !== d)
					|| (b.getFullYear() !== y)
				) {
					r = false;
				} else {
					r = true;
				}
			}
			return r;
		};
		return this.optional(element) || test(value);
	},"Proszę o podanie daty w formacie DD-MM-RRRR");
	
	$.validator.methods.range = function (value, element, param) {
		var globalizedValue = value.replace(",", ".");
		return this.optional(element) || (globalizedValue >= param[0] && globalizedValue <= param[1]);
	}
	
	
		$("#validate_form").validate(
		{
			rules:{
				imie:{
					required:true
				},
				nazwisko:{
					required:true
				},
				telefon:{
					required: true,
					digits: true
				},
				email:{
					required: true,
					email: true
				},
				rejestracja:{
					required: true
				},
				marka:{
					required: true
				},
				typ_samochodu:{
					required: function(){
						return $("[name='typ_samochodu']:checked").val()!='';
					}
				},
				pochodzenie_opon:{
					required: function(){
						return $("[name='pochodzenie_opon']:checked").val()!='';
					}
				},
				depozyt_nr:{
					required: function(){
						return $("[name='pochodzenie_opon']").val()=='depozyt';

					}
				},
				czas:{
					timeCheck: true
				}
				// su_dom_jednorodzinny:{
					// required: function(){
						// return $(".dom_jednorodzinny:checked").length!=0;
					// }
				// },
				// su_odpowiedzialnosc:{
					// required: function(){
						// return $("[name='odpowiedzialnosc']:checked").length!=0;
					// }
				// }		
			},
			messages:{
				"czas":"Wybierz porę terminu!"
			},
			errorPlacement: function(error, element) 
			{
				
				error.appendTo(element.siblings(".blad"));
								
			}
			
		});
		
});


