/*! Validate auxiliary methods */
//Auxiliary variable which keeps information if we did validation of the email or of the login
var wrongValueType = false;
$.validator.addMethod("loginORemail", function(value, element) {
	if (value.indexOf('@') != -1)
	{
		wrongValueType = 'email';
		return  this.optional(element) || /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-z]{2,7}$/i.test(value);
		
	} else {
		wrongValueType = 'login';

		//Ograniczenie co do długości pola dotyczy tylko loginu
		return this.optional(element) || (/^[a-zA-Z0-9_.\-]+$/i.test(value) && this.getLength(value, element) <= 10);
	}
});


$.validator.addMethod("mindigits", function(value, element, param) {
	var digits = 0;
	signs = value.split('');
	for (i = 0; i < signs.length; i++) {
		if (signs[i] >= 0 && signs[i] <= 9) digits++;
		if (digits>=param) return true;
	}
	return false;
});


$.validator.addMethod("maxdigits", function(value, element, param) {
	var digits = 0;
	signs = value.split('');
	for (i = 0; i < signs.length; i++) {
		if (signs[i] >= 0 && signs[i] <= 9) digits++;
		if (digits>param) return false;
	}
	return true;
});


//eg.: rangedigits: [2, 4]
$.validator.addMethod("rangedigits", function(value, element, params) {
	var digits = 0;
	signs = value.split('');
	for (i = 0; i < signs.length; i++) {
		if (signs[i] >= 0 && signs[i] <= 9) digits++;
		if (digits>params[1]) return false; //Przekroczyliśmy dozwoloną ilość cyfr - opuść pętle i zwróć false
	}

	return (digits >= params[0] && digits <= params[1]);
});


$.validator.addMethod("characterclass", function(value, element, param) {
	return  this.optional(element) || eval("/^" + param + "+$/i.test(value);");
});


$.validator.addMethod("zip_code", function(value, element, param) {
	return  this.optional(element) || (/^([0-9]{2})(-[0-9]{3})+$/i.test(value));
});

$.validator.addMethod("time", function(value, element, param) {
	//return  this.optional(element) || (/^([0-9]{1,2}):([0-9]{1,2})| |([AMPM]{2})+$/i.test(value));
	if (value) {
		return  this.optional(element) || (/^[012]{0,1}[0-9]{1}(\:[0-5]{0,1}[0-9]{1})?$/i.test(value));
	} else {
		return true;
	}
	
});

$.validator.addMethod("dzielnica", function(value, element, param) {
	return !(value == "" && $("#city_address_name").val().toLowerCase() == "warszawa")
});

$.validator.addMethod("nip", function(value, element, param) {
	//Ograniczenie co do długości pola oraz znakow dla NIP'u
	return this.optional(element) || (/^[a-zA-Z0-9\-]+$/i.test(value) && this.getLength(value, element) <= 13 && this.getLength(value, element) >= 10);
	
});

