function isValue(value){
    var flag = false;
    if(value && value != null && value != ''){
        flag  = true;
    }
    return flag;
}

function validateOFEContractNo(value){
    var flag = false;
    if( value && value != null ) {
        var OFE_ACC_PATTERN = /^([0-9]){4,10}$/;
        flag = OFE_ACC_PATTERN.test( value );
    }
    return flag;
}

function validateOFEAccount(value){
    var flag = false;
    if( value && value != null ) {
        var OFE_ACC_PATTERN = /^([0-9]){9}$/;
        flag = OFE_ACC_PATTERN.test( value );
    }
    return flag;
}

function validateCitySyntax(value){
    var flag = false;
    if( value && value != null ) {
        var CITY_PATTERN = /^([A-ZĘÓĄŚŁŻŹĆŃ]([A-ZĘÓĄŚŁŻŹĆŃ \-])*[A-ZĘÓĄŚŁŻŹĆŃ])$/;
        flag = CITY_PATTERN.test( value.toUpperCase() );
    }
    return flag;
}

function validateCitySyntaxOpt(value){
    var flag = false;
    if( value && value != null ) {
        flag = validateCitySyntax( value );
    } else {
        flag = true;
    }
    return flag;
}

function validateBDatePesel(params){
	var validationOK = true;
	try{
		var pesel = getValueQuestion(params[0]);
		var pm = Number(pesel.substr(2,2));
		var py = pesel.substr(0,2);
		var  n = Number(pesel.substr(2,1));
		var  x = parseInt(n/2) * 20;
		var  m = pm - x;
		var  y = '-1';
		switch(x){
			case 80: y='18'; break;
			case  0: y='19'; break;
			case 20: y='20'; break;
			case 40: y='21'; break;
			case 60: y='22'; break;
		}
		y += py;
		m = (m < 10) ? ('0'+m) : m ;
		var pDate = '' + pesel.substr(4,2) + m + y;
		var bDate = getValueQuestion(params[1]);
		bDate=bDate.replace('-','').replace('-','');
		if(Number(pDate) != Number(bDate)){
			validationOK = false;
		}
	}catch(e){
		validationOK = false;
	}
	return validationOK;
}

function validateProductionYearVsRegistrationDate(params) {
    var validationOk = false;
    try {
      var registrationDate = getValueQuestion(params[0]);
      var productionYear = getValueQuestion(params[1]);

      if(isValue(productionYear) && isValue(registrationDate) && (registrationDate.length == 10)) {
          var registrationYear = generateDate(registrationDate).getFullYear();
          if(registrationYear >= productionYear) {
              validationOk = true;
          }
      } else {
          validationOk = true;
      }
    } catch(e) {
        // NOP
    }
    return validationOk;
}

function validateP166dependant(params) {
    var validationOK = false;

    try{
        var personsCountValue = getValueQuestion(params[1]);
        var fieldValue = getValueQuestion(params[0])
        var secondDependantValue = getValueQuestion(params[2])
        var thirdDependantValue = getValueQuestion(params[3])

        if( isValue(personsCountValue) && isValue(fieldValue) && isValue(secondDependantValue) && isValue(thirdDependantValue) ) {
            var personsCountNumberValue = Number(personsCountValue);
            var fieldNumberValue = Number(fieldValue);
            var secondDependantNumberValue = Number(secondDependantValue);
            var thirdDependantNumberValue = Number(thirdDependantValue);

            if(personsCountNumberValue == (fieldNumberValue + secondDependantNumberValue + thirdDependantNumberValue)) {
                validationOK = true;
            }
        } else if (!isValue(fieldValue) || !isValue(secondDependantValue) || !isValue(thirdDependantValue)) {
            validationOK = false;
        }
        else {
            validationOK = true;
        }
    }catch(e) {}
    return validationOK;
}

function generateDate(value) {
    var date = null;
    if(value != null && '' != value) {
        var splitter = "-";
        var split = value.split(splitter);
        if (split && split != null && split.length == 3) {
            var year = Number(split[2]);
            var month = Number(split[1]);
            var day = Number(split[0]);

            date = new Date();
            date.setFullYear(year, month-1, day);
        }
    }
    return date;
}

function validateBeginDateTrip(params) {
    var validationOK = false;
    try{
        var fieldNumberValue = getValueQuestion(params[0]);
        if(isValue(fieldNumberValue)) {
            var isTeritory = ('NIE' == getValueQuestion(params[1]));

            var currentDate = new Date();
            var chosenDate = generateDate(fieldNumberValue);
            var endDate = generateDate(getValueQuestion(params[2]));

            if(isTeritory) {
                if(chosenDate > currentDate) {
                    validationOK = true;
                } else {
                    addErrorParameter('Początek ochrony ubezpieczeniowej musi być późniejszy niż 1 dzień');
                }
            } else {
                var fiveDaysLater = new Date();
                fiveDaysLater.setDate(currentDate.getDate() + 4);

                if(chosenDate > fiveDaysLater) {
                    validationOK = true;
                } else {
                    addErrorParameter('Początek ochrony ubezpieczeniowej musi być późniejszy niż 5 dni');
                }
            }

            if(chosenDate != null && endDate != null && chosenDate > endDate) {
                addErrorParameter('Data początku ubezpieczenia musi być mniejsza lub równa od daty końca ubezpieczenia');
                validationOK = false;
            }
        } else {
            validationOK = true;
        }
    }catch(e){}
    return validationOK;
}

function validateBeginDateTripInsidePol(params) {
    var validationOK = false;
    try{
        var fieldNumberValue = getValueQuestion(params[0]);
        if(isValue(fieldNumberValue)) {
            var isTeritory = ('TAK' == getValueQuestion(params[1]));

            var currentDate = new Date();
            var chosenDate = generateDate(fieldNumberValue);
            var endDate = generateDate(getValueQuestion(params[2]));

            if(isTeritory) {
                if(chosenDate > currentDate) {
                    validationOK = true;
                } else {
                    addErrorParameter('Początek ochrony ubezpieczeniowej musi być późniejszy niż 1 dzień');
                }
            } else {
                var fiveDaysLater = new Date();
                fiveDaysLater.setDate(currentDate.getDate() + 4);

                if(chosenDate > fiveDaysLater) {
                    validationOK = true;
                } else {
                    addErrorParameter('Początek ochrony ubezpieczeniowej musi być późniejszy niż 5 dni');
                }
            }

            if(chosenDate != null && endDate != null && chosenDate > endDate) {
                addErrorParameter('Data początku ubezpieczenia musi być mniejsza lub równa od daty końca ubezpieczenia');
                validationOK = false;
            }
        } else {
            validationOK = true;
        }
    }catch(e){}
    return validationOK;
}

function generateDateYearAfter(value) {
    var date = null;
    if(value != null && '' != value) {
        var splitter = "-";
        var split = value.split(splitter);
        if (split && split != null && split.length == 3) {
            var year = Number(split[2]);
            var month = Number(split[1]);
            var day = Number(split[0]);

            date = new Date();
            date.setFullYear(year+1, month-1, day);
            date.setDate(date.getDate()-1);
        }
    }
    return date;
}

function validateEndDateTrip(params) {
    var validationOK = false;
    var fieldValue = getValueQuestion(params[0]);
    var startDateValue = getValueQuestion(params[1]);

    if(isValue(fieldValue) && isValue(startDateValue)) {
        var chosenDate = generateDate(fieldValue);
        var startDate = generateDate(startDateValue);
        var dateYearAfter = generateDateYearAfter(startDateValue);

        if(chosenDate != null && startDate != null) {
            if(chosenDate >= startDate && chosenDate <= dateYearAfter) {
                validationOK = true;
            }
        }
    } else {
        validationOK = true;
    }
    return validationOK;
}

function isValueAndIsNotZero(value){
    var flag = false;
    if( isValue(value) && value != '0' ){
        flag  = true;
    }
    return flag;
}

function isValueAndLengthLess15(value){
    var flag = false;
    if( value!=null && value.length<15 ){
        flag  = true;
    }
    return flag;
}

function isValueAndLengthLess16(value){
    var flag = false;
    if( value!=null && value.length<16 ){
        flag  = true;
    }
    return flag;
}

function isValueAndLengthLess20(value){
    var flag = false;
    if( value!=null && value.length<20 ){
        flag  = true;
    }
    return flag;
}

function isValueAndLengthEqual9(value){
    var flag = false;
    if( value!=null && value.length==9 ){
        flag  = true;
    }
    return flag;
}

function isValueAndLengthEqual9Opt(value){
    var flag = false;
    if( value == null || value == '') {
        flag = true;
    } else if (value.length==9 ) {
        flag = true;
    }
    return flag;
}

function isValueAndLengthMoreThan1(value){
    var flag = false;
    if( value!=null && value.length>1 ){
        flag  = true;
    }
    return flag;
}

function isNotEmptyNumber(value) {
    var flag = false;
    if(value.match(/^\d{3,4}$/)) {
        flag = true;
    }
    return flag;
}

function isNumberOrDecimalNumber(value) {
    var flag = false;
    if(value.match(/^\d{1,}[,]?\d{1,}$/)) {
        flag = true;
    }
    return flag;
}

function isOnlyNotEmptyNumber(value) {
    var flag = false;
    if(value.match(/^\d{1,}$/)) {
        flag = true;
    }
    return flag;
}

function checkPostalCode(value){
    var flag = false;
    if(value && value != null && value != ''){
        if(value.match(/^\d{2}[-]\d{3}/)){
            flag = true;
        }
    }
    return flag;
}

function checkPostalCodeOpt(value){
    var flag = false;
    if(value && value != null && value != ''){
        if(value.match(/^\d{2}[-]\d{3}/)){
            flag = true;
        }
    }else{
    	flag = true;
    }
    return flag;
}

function checkPostFieldValue(value) {
    flag = false;
    if(value && value!=null && value!='' && value!='nieprawid\u0142owy kod pocztowy') {
        flag = true;
    }
    return flag;
}

function checkPostFieldValueOpt(value) {
    flag = false;
    if(value!='nieprawid\u0142owy kod pocztowy') {
        flag = true;
    }
    return flag;
}



function checkPesel(value){
    var tablica = new Array(1, 3, 7, 9, 1, 3, 7, 9, 1, 3);
    var dateMod = 20;
    var PESEL_PATTERN = /^([0-9]){11}$/;
    var flag = false;
    if(value && PESEL_PATTERN.test( value )){
        var sum = 0;

        for(var i = 0; i < 10; i++){
            sum += tablica[i] * value.charAt(i);
        }
        sum += 1 * value.charAt(i);
        if((sum % 10) == 0){
            flag = true;
        }

        if(flag) {
            flag = false
            var first = value.substr(0,2);
            var second = value.substr(2,2);
            var third = value.substr(4,2);

            if(second.charAt(0)=='0') {
                second = second.substr(1,1);
            }
            if(third.charAt(0)=='0') {
                third = third.substr(1,1);
            }

            var locNumDays = Array (31,0,31,30,31,30,31,31,30,31,30,31);

            for(ii = 0; ii < 100; ii += 20) {
                var endDate;
                var tempIi = 0;
                if(ii==0) {
                    tempIi = 19;
                } else if(ii==20) {
                    tempIi = ii;
                } else if(ii==40) {
                    tempIi = 21;
                } else if(ii==60) {
                    tempIi = 22;
                } else if(ii == 80) {
                    tempIi = 18;
                }

                yearSelected = '' + tempIi + '' + first;
                monthSelected = second - 1 - ii;

                if(monthSelected>=0 && monthSelected<12) {
                    if (monthSelected==1)
                    {
                        endDate	= new Date (yearSelected,monthSelected+1,1);
                        endDate	= new Date (endDate	- (24*60*60*1000));
                        numDaysInMonth = endDate.getDate()
                    }
                    else
                    {
                        numDaysInMonth = locNumDays[monthSelected];
                    }
                    if(third<=numDaysInMonth) {
                        flag = true;
                        break;
                    }
                }
            }

        }
    }
    return flag;
}

function checkPeselOpt(value){

    var flag = false;
    if(value == null || value == ''){
       flag = true;
    }else{
    	flag = checkPesel(value);
    }
    return flag;
}

function dateNotBeforeToday(value) {
    var correctDate = false;
    var PATTERN = /^[0-9]{2}-[0-9]{2}-[0-9]{4}$/;

	if (value && value != null && PATTERN.test(value)) {
		var splitter = "-";
		var split = value.split(splitter);
		if (split && split != null && split.length == 3) {
			var year = Number(split[2]);
			var month = Number(split[1]);
			var day = Number(split[0]);
			correctDate = true;
			if (year < 1900 || year > 2100 || month < 1 || month > 12 || day < 1 || day > 31) {
				correctDate = false;
			}
			if (correctDate == true) {
				switch (month) {
					case 4:
					case 6:
					case 9:
					case 11:
						if (day == 31) {
							correctDate = false;
						}
						break;
					case 2:
						if (day == 30) {
							correctDate = false;
						}
						if (day == 29 && year % 4 != 0) {
							correctDate = false;
						}
						if (day == 29 && year % 100 == 0 && year % 400 != 0) {
							correctDate = false;
						}
				}
			}

			if (correctDate == true) {
				correctDate = false;

				var currentDate = new Date();

				var maxDate = new Date();
				maxDate.setDate(maxDate.getDate() + 30);

				var givenDate = new Date();
				givenDate.setFullYear(year, month - 1, day);

				if (currentDate <= givenDate && givenDate <= maxDate) {
					correctDate = true;
				}
			}
		}
	}
    return correctDate;
}

function dateNotBeforeTheNextDayAndNotAfter30Days(value) {
    var correctDate = false;
    var PATTERN = /^[0-9]{2}-[0-9]{2}-[0-9]{4}$/;

	if (value && value != null && PATTERN.test(value)) {
		var splitter = "-";
		var split = value.split(splitter);
		if (split && split != null && split.length == 3) {
			var year = Number(split[2]);
			var month = Number(split[1]);
			var day = Number(split[0]);
			correctDate = true;
			if (year < 1900 || year > 2100 || month < 1 || month > 12 || day < 1 || day > 31) {
				correctDate = false;
			}
			if (correctDate == true) {
				switch (month) {
					case 4:
					case 6:
					case 9:
					case 11:
						if (day == 31) {
							correctDate = false;
						}
						break;
					case 2:
						if (day == 30) {
							correctDate = false;
						}
						if (day == 29 && year % 4 != 0) {
							correctDate = false;
						}
						if (day == 29 && year % 100 == 0 && year % 400 != 0) {
							correctDate = false;
						}
				}
			}

			if (correctDate == true) {
				correctDate = false;

				var nextDayDateDate = new Date();
				nextDayDateDate.setDate(nextDayDateDate.getDate() + 1);

				var maxDate = new Date();
				maxDate.setDate(maxDate.getDate() + 30);

				var givenDate = new Date();
				givenDate.setFullYear(year, month - 1, day);

				if (nextDayDateDate <= givenDate && givenDate <= maxDate) {
					correctDate = true;
				}
			}
		}
	}
    return correctDate;
}

function dateNotBeforeTheNextDay(value) {
    var correctDate = false;
    var PATTERN = /^[0-9]{2}-[0-9]{2}-[0-9]{4}$/;

	if (value && value != null && PATTERN.test(value)) {
		var splitter = "-";
		var split = value.split(splitter);
		if (split && split != null && split.length == 3) {
			var year = Number(split[2]);
			var month = Number(split[1]);
			var day = Number(split[0]);
			correctDate = true;
			if (year < 1900 || year > 2100 || month < 1 || month > 12 || day < 1 || day > 31) {
				correctDate = false;
			}
			if (correctDate == true) {
				switch (month) {
					case 4:
					case 6:
					case 9:
					case 11:
						if (day == 31) {
							correctDate = false;
						}
						break;
					case 2:
						if (day == 30) {
							correctDate = false;
						}
						if (day == 29 && year % 4 != 0) {
							correctDate = false;
						}
						if (day == 29 && year % 100 == 0 && year % 400 != 0) {
							correctDate = false;
						}
				}
			}

			if (correctDate == true) {
				correctDate = false;

				var nextDayDateDate = new Date();
				nextDayDateDate.setDate(nextDayDateDate.getDate() + 1);

				var maxDate = new Date();
				maxDate.setDate(maxDate.getDate() + 60);

				var givenDate = new Date();
				givenDate.setFullYear(year, month - 1, day);

				if (nextDayDateDate <= givenDate && givenDate <= maxDate) {
					correctDate = true;
				}
			}
		}
	}
    return correctDate;
}

function upTo6digits(value) {
    var ok = false;
    try{
        var digits = Number(value);

        if(value.length > 0 && digits >= 0 && digits <= 999999) {
            ok = true;
        }
    }catch(e) {
        // celowe puste cialo
    }
    return ok;
}

function chceckDate(value){
    var flag = false;
	var PATTERN = /^[0-9]{2}-[0-9]{2}-[0-9]{4}$/;

	if(value && value != null && PATTERN.test(value)) {
	    var mies1 = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 );
	    var mies2 = new Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 );
		var splitter = "-";
	    var split = value.split(splitter);

	    if (split && split != null && split.length == 3) {
	        var dzien = split[0];
	        var mies = split[1];
	        var rok = split[2];
	        if (rok && rok >= 1900 && rok <= 2100) {
	            if (mies && mies > 0 && mies < 13) {
	                if (rok % 4 == 0) {
	                    if (dzien > 0 && dzien <= mies2[mies - 1]) {
	                        flag = true;
	                    }
	                }
	                else {
	                    if (dzien > 0 && dzien <= mies1[mies - 1]) {
	                        flag = true;
	                    }
	                }
	            }
	        }
	    }
	}
    return flag;

}

function validateEmail( value ){
    var result = false;
    var PATTERN = /^[a-zA-Z0-9]+(([\.\-_][a-zA-Z0-9])*[a-zA-Z0-9]*)*\@[a-zA-Z0-9]((\.)?[a-zA-Z0-9\-]*[a-zA-Z0-9])*(\.[a-zA-Z0-9]{2,4})+$/;
    if(value && value != null && PATTERN.test(value)) {
        result = true;
    }
    return result;
}

function isDateAfterCurrent(value) {
    var flag = false;
	var PATTERN = /^[0-9]{2}-[0-9]{2}-[0-9]{4}$/;

	if (value && value != null && PATTERN.test(value)) {
		var splitter = "-";

		var mies1 = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
		var mies2 = new Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

		var split = value.split(splitter);

		if (split && split != null && split.length == 3) {
			var dzien = split[0];
			var mies = split[1];
			var rok = split[2];
			if (rok && rok >= 1900 && rok <= 2100) {
				if (mies && mies > 0 && mies < 13) {
					if (rok % 4 == 0) {
						if (dzien > 0 && dzien <= mies2[mies - 1]) {
							flag = true;
						}
					}
					else {
						if (dzien > 0 && dzien <= mies1[mies - 1]) {
							flag = true;
						}
					}
				}
			}

			if (flag) {
				currentDate = new Date();
				inputDate = new Date();
				inputDate.setFullYear(rok, mies - 1, dzien);
				if (currentDate > inputDate) {
					flag = false;
				}
			}
		}
	}
    return flag;
}

function isDateBeforeCurrent(value) {
    var flag = false;
	var PATTERN = /^[0-9]{2}-[0-9]{2}-[0-9]{4}$/;

	if (value && value != null && PATTERN.test(value)) {
		var mies1 = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
		var mies2 = new Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
		var splitter = "-";

		var split = value.split(splitter);

		if (split && split != null && split.length == 3) {
			var dzien = split[0];
			var mies = split[1];
			var rok = split[2];
			if (rok && rok >= 1900 && rok <= 2100) {
				if (mies && mies > 0 && mies < 13) {
					if (rok % 4 == 0) {
						if (dzien > 0 && dzien <= mies2[mies - 1]) {
							flag = true;
						}
					}
					else {
						if (dzien > 0 && dzien <= mies1[mies - 1]) {
							flag = true;
						}
					}
				}
			}

			if (flag) {
				currentDate = new Date();
				inputDate = new Date();
				inputDate.setFullYear(rok, mies - 1, dzien);
				if (currentDate <= inputDate) {
					flag = false;
				}
			}
		}
	}
    return flag;
}

function isDateBeforeCurrentAndNotLessThan1800(value) {
    var flag = false;
	var PATTERN = /^[0-9]{2}-[0-9]{2}-[0-9]{4}$/;

	if (value && value != null && PATTERN.test(value)) {
		var mies1 = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
		var mies2 = new Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
		var splitter = "-";

		var split = value.split(splitter);

		if (split && split != null && split.length == 3) {
			var dzien = split[0];
			var mies = split[1];
			var rok = split[2];
			if (rok && rok >= 1800 && rok <= 2100) {
				if (mies && mies > 0 && mies < 13) {
					if (rok % 4 == 0) {
						if (dzien > 0 && dzien <= mies2[mies - 1]) {
							flag = true;
						}
					}
					else {
						if (dzien > 0 && dzien <= mies1[mies - 1]) {
							flag = true;
						}
					}
				}
			}

			if (flag) {
				currentDate = new Date();
				inputDate = new Date();
				inputDate.setFullYear(rok, mies - 1, dzien);
				if (currentDate <= inputDate) {
					flag = false;
				}
			}
		}
	}
    return flag;
}

function isContactPhoneValid(value) {
    flag = false;
    var PATTERN = /^\d{8,9}$/;
    if(value && value!=null && PATTERN.test(value)) {
        flag = true;
    }
    return flag;
}

function validateVIN(value) {
    var ok = false;
    var PATTERN = /^[a-zA-Z0-9]{1,17}$/;
    if(value && value!=null && PATTERN.test(value)) {
        ok = true;
    }
    return ok;
}

function isChosenValue(value) {
    var ok = false;
    if(value && value!=null && value!='0') {
        ok = true;
    }
    return ok;
}

function validateCarsSerial(value) {
    flag = false;
    var PATTERN = /^[a-zA-Z0-9]{1,8}$/;
    if(value && value!=null && PATTERN.test(value)) {
        flag = true;
    }
    return flag;
}

function validateContactPhone(value) {
    flag = true;
    var PATTERN = /^[1-9]\d{8}$/;
    if(!value || value==null || !PATTERN.test(value)) {
        flag = false;
    }
    return flag;
}

function validateStatPhone(value) {
    flag = true;
    var PATTERN = /^\d{2}[ ]\d{7}$/;
    if(value && value!=null && !PATTERN.test(value)) {
        flag = false;
    }
    return flag;
}

function validateStatPhoneOpt(value) {
    var flag = false;
    if (value == null || value == '' || validateStatPhone(value) ) {
        flag = true;
    }
    return flag;
}

function validateMobilePhone(value) {
    flag = true;
    var PATTERN = /^\d{3}[ ]\d{6}$/;
    if(value && value!=null && !PATTERN.test(value)) {
        flag = false;
    }
    return flag;
}

function validateMobilePhoneOpt(value) {
	if (value == null || value == '') {
		return true;
	} else {
		return validateMobilePhone(value);
	}
}

function validateAdressField(value) {
    flag = false;
    if(value && value!=null) {
        var splitArr = value.split(":");
        if(splitArr && splitArr!=null && splitArr.length==3) {
            if(splitArr[1]!=null && splitArr[1]!="") {
                flag = true;
            }
        }
    }
    return flag;
}

function validateAdressFieldOpt(value) {
    flag = false;
    if(value && value!=null) {
        var splitArr = value.split(":");
        if(splitArr && splitArr!=null && splitArr.length==3) {
            if(splitArr[1]!=null && splitArr[1]!="") {
                flag = true;
            }
        }
    }else{
    	flag = true;
    }
    return flag;
}

function validateActualKmNo(value) {
    flag = false;
    if(value && value!=null && !isNaN(value) && value<500000 && value>0) {
        flag = true;
    }
    return flag;
}

function isPresentMoreEvent1000LessEven1000000(value){
    flag = false;

    if(isValue(value)) {
        try{
            var digits = Number(value);

            if(digits >= 1000 && digits <= 1000000) {
                flag = true;
            }
        }catch(e) {
            // celowe pominiecie ciala
        }
    } else {
        flag = true;
    }
    return flag;
}

function isMoreEven1000LessEvent5000000(value){
    flag = false;

    if(isValue(value)) {
        try{
            var digits = Number(value);

            if(digits >= 1000 && digits <= 5000000) {
                flag = true;
            }
        }catch(e) {
            // celowe pominiecie ciala
        }
    } else {
        flag = true;
    }
    return flag;
}

function isMoreEven10000LessEven400000(value){
    flag = false;

    if(isValue(value)) {
        try{
            var digits = Number(value);

            if(digits >= 10000 && digits <= 400000) {
                flag = true;
            }
        }catch(e) {
            // celowe pominiecie ciala
        }
    } else {
        flag = true;
    }
    return flag;
}

function isMoreEven10000LessEven100000(value){
    flag = false;

    if(isValue(value)) {
        try{
            var digits = Number(value);

            if(digits >= 10000 && digits <= 100000) {
                flag = true;
            }
        }catch(e) {
            // celowe pominiecie ciala
        }
    } else {
        flag = true;
    }
    return flag;
}


function isMoreEven10000LessEven2000000(value){
    flag = false;

    if(isValue(value)) {
        try{
            var digits = Number(value);

            if(digits >= 10000 && digits <= 2000000) {
                flag = true;
            }
        }catch(e) {
            // celowe pominiecie ciala
        }
    } else {
        flag = true;
    }
    return flag;
}


function isMoreEvent1000LessEven50000(value){
    flag = false;

    if(isValue(value)) {
        try{
            var digits = Number(value);

            if(digits >= 1000 && digits <= 50000) {
                flag = true;
            }
        }catch(e) {
            // celowe pominiecie ciala
        }
    } else {
        flag = true;
    }
    return flag;
}

function isPresentMoreEvent1000LessEven50000(value){
    flag = false;

    if(value==null || value=="") {
    	flag = true;
    } else {
        try{
            var digits = Number(value);

            if(digits >= 1000 && digits <= 50000) {
                flag = true;
            }
        }catch(e) {
            // celowe pominiecie ciala
        }
    }
    return flag;
}

function isPresentMoreEvent1000LessEven100000(value){
    flag = false;

    if(value==null || value=="") {
    	flag = true;
    } else {
        try{
            var digits = Number(value);

            if(digits >= 1000 && digits <= 100000) {
                flag = true;
            }
        }catch(e) {
            // celowe pominiecie ciala
        }
    }
    return flag;
}

function isSthChosen(value){
    flag = false;

    try{
        if(isValue(value) && '0' != value) {
            flag = true;
        }
    }catch(e) {
        // celowy brak ciala
    }
    return flag;
}

function validateBirthdateAgainstPesel(params) {
	var validationOK = true;
	try{
		var pesel = getValueQuestion(params[1]);
		var pm = Number(pesel.substr(2,2));
		var py = pesel.substr(0,2);
		var  n = Number(pesel.substr(2,1));
		var  x = parseInt(n/2) * 20;
		var  m = pm - x;
		var  y = '-1';
		switch(x){
			case 80: y='18'; break;
			case  0: y='19'; break;
			case 20: y='20'; break;
			case 40: y='21'; break;
			case 60: y='22'; break;
		}
		y += py;
		m = (m < 10) ? ('0'+m) : m ;
		var pDate = '' + pesel.substr(4,2) + m + y;
		var bDate = getValueQuestion(params[0]);
		bDate=bDate.replace('-','').replace('-','');
		if(Number(pDate) != Number(bDate)){
			validationOK = false;
		}
	}catch(e){
		validationOK = false;
	}
	return validationOK;
}

function validateBirthdateAgainstPeselOpt(params) {

	var pesel = getValueQuestion(params[1]);
	var bDate = getValueQuestion(params[0]);
//	bDate=bDate.replace('-','').replace('-','');
	if( ( pesel == null || pesel == '')  && ( bDate == null || bDate == '' )){
		return true;
	}else{
		return validateBirthdateAgainstPesel(params);
	}

	return false;
}

function checkNip(value){
	var result = false;
	if(/\d{10}/.test(value)){
		var weights = new Array(6,5,7,2,3,4,5,6,7);
        var j = 0, sum = 0, control = 0;
        var csum = eval(value.substring(value.length-1));
        for (var i = 0; i < 10 - 1; i++) {
            c = value.charAt(i);
            j = eval(c);
            sum += j * weights[i];
        }
        control = sum % 11;
        control = control == 10 ? 0 : control;
        result = control == csum ? true : false;
	} else{
		result = (value === '') ? true : false;
	}
	return result;
}

function checkNipOpt(value) {
    if (value == null || value == '') {
        return true;
    } else {
        return checkNip(value);
    }
}

function checkIdentityCard(value){
    var ID_VALUES_MAP ={"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9,"A":10,"B":11,"C":12,"D":13,"E":14,"F":15,"G":16,"H":17,"I":18,"J":19,"K":20,"L":21,"M":22,"N":23,"O":24,"P":25,"Q":26,"R":27,"S":28,"T":29,"U":30,"V":31,"W":32,"X":33,"Y":34,"Z":35};
    var ID_WEIGHTS=[7,3,1,0,7,3,1,7,3];
        var result = false;
            var valueU = value.toUpperCase()
        if( /[A-Z]{3}\d{6}/.test(valueU) ){
            var sum=0;
            for(var i=0; i<valueU.length; i++){
                sum +=  (ID_VALUES_MAP[valueU.charAt(i)] * ID_WEIGHTS[i]);
            }
            result = (sum % 10 == valueU.charAt(3)) ? true : false;
        }
        return result;
}

function checkIdentityCardOpt(value){
    var result = false;
    if (value == null || value == ''){
        result = true;
    } else {
        result = checkIdentityCard(value);
    }
    return result;
}

function validateEndowedShare(params){
	var sum = 0, x;
	var noValueExists = true;
	var proportionalInsNumber = 0;
	for(var i=0; i<params.length; i++){
		x = getValueQuestion(params[i]);
		if(x) {
			var num = Number(x);
			if (num && num > 0) {
				sum += num;
				noValueExists = false;
			} else if(num==0) {
				proportionalInsNumber++;
			}
		} else if(x!='') {
			//wartosc musiala byc zmodyfikowana, wyrzucam blad
			return false;
		}
	}
	if(noValueExists){return true;} else
	if((sum + proportionalInsNumber )>100 && sum <=100 && sum>0) {
		addErrorParameter("Suma udziałów równa się 100 %. Wskazano uposażonych, którym nie można przypisać udziału %.");
		return false;
	} else if((sum < 0 || sum >100)) {
		addErrorParameter("Suma udziałów w świadczeniu dla uposażonych przekracza 100%!");
		return false;
	}
	return true;
}

function checkAgeUnder50(value){
	if(chceckDate(value)){
		var td = new Date();
		var d50 = new Date(td.getFullYear()-50, td.getMonth(), td.getDate());
		var vd = value.split('-');
		var bd = new Date(vd[2], vd[1]-1, vd[0]);
		if(d50 < bd){
			return true;
		}
	}
	return false;
}

function validateRepeatedEmail(params){
	var e1 = getValueQuestion(params[0]);
	var e2 = getValueQuestion(params[1]);
	return (e1 && e2 && e1==e2) ? true : false;
}

function validateNip(params){
	if('0' != getValueQuestion(params[1])){
		return true;
	} else {
		var nip = getValueQuestion(params[0]);
		if(nip!='' && checkNip(nip) ){
			return true;
		}
	}
	return false;
}

function validateNipOpt(params){
    if('0' != getValueQuestion(params[1])){
        return true;
    } else {
        var nip = getValueQuestion(params[0]);
        if(nip == null || nip == '' ){
            return true;
        } else {
            return checkNip(nip);
        }
    }
    return false;
}

function validateMartialRelationsDate(params) {
	var flag = true;
	var statementMartialRelations = getValueQuestion(params[2]);
	if(statementMartialRelations != 0) {
		var DATE_PATTERN = /^\d{2}[-]\d{2}[-]\d{4}/;
		var martialRelationsChangeDate = getValueQuestion(params[0]);
		var wedlockDate = getValueQuestion(params[1]);
		if(DATE_PATTERN.test(martialRelationsChangeDate) && DATE_PATTERN.test(wedlockDate)) {
			var splitMartial = martialRelationsChangeDate.split('-');
			var splitWedlock = wedlockDate.split('-');

			var martialDateObj = new Date(splitMartial[2], splitMartial[1]-1, splitMartial[0]);
			var wedlockDateObj = new Date(splitWedlock[2], splitWedlock[1]-1, splitWedlock[0]);

			if(martialDateObj < wedlockDateObj) {
				flag = false;
			}
		}
	}
	return flag;
}

function validateOneOfTwoNotEmpty(params) {
    var notEmptyCount = 0;
    var firstValue = getValueQuestion(params[0]);
    var secondValue = getValueQuestion(params[1]);

    if (firstValue && firstValue != null && firstValue != '') {
        notEmptyCount++;
    }

    if (secondValue && secondValue != null && secondValue != '') {
        notEmptyCount++;
    }

    return notEmptyCount>0;
}


function validatePeselGender(params){
	var flag = false;
	var pesel = getValueQuestion(params[1]);
	var genderNumber = pesel.substr(pesel.length - 2, 1);
	var gender = getValueQuestion(params[0]);
	if((genderNumber % 2) == gender  ){
		flag = true;
	}
	return flag;
}

function validateDependantAddress(params) {


    try{
        var city = getValueQuestion(params[0]);
        var adress = getValueQuestion(params[1]);
        var postal = getValueQuestion(params[2]);

        var count = 0;
        if (isValue(city)) {
            count++;
        }
        if (isValue(adress)) {
            count++;
        }
        if (isValue(postal)) {
            count++;
        }
        //Wszystko albo nic
        if ( count == 0 || count == 3 ) {
            return true;
        }

    }catch(e) {}
    return false;
}

function isSelect(value){
    var flag = false;
    if(value && value != null && value != '' && value != '0'){
        flag  = true;
    }
    return flag;
}

function validateMobilePhoneAndValue(value) {

    flag = true;

    var PATTERN = /^\d{3}[ ]\d{6}$/;

    if( !value || value == '' || !PATTERN.test(value) ) {

        flag = false;

    }

    return flag;

}

function validateDependantDate70(params){

    try{
    
    var firstDateParams=getValueQuestion(params[0]).split("-");
    var secondDateParams=getValueQuestion(params[1]).split("-");
    
    var years = parseInt(secondDateParams[2]) - parseInt(firstDateParams[2]);
    var months = parseInt(secondDateParams[1]) - parseInt(firstDateParams[1])
    var days = parseInt(secondDateParams[0]) - parseInt(firstDateParams[0])
    
 
    if ( years < 70 ) {
        
        return true;
        
    } else if ( years == 70 ){
        
        if ( months < 0 ) {
            
            return true;
            
        } else if ((months == 0) && (days<0)){
            
            return true;
            
        }
    } 
        return false;
    }catch(e) {}
    return false;
    
}

function showElementsCondOnAge(questionId, ageValue, elemsToPopulate) {
	var DATE_PATTERN = /^\d{2}[-]\d{2}[-]\d{4}/;

	//wylicz wiek uzytkownika
	var dateValue = $(componentId + questionId + '_ANSWER').value;
	if (dateValue && DATE_PATTERN.test(dateValue)) {
		var vd = dateValue.split('-');

		var pyear = parseInt(vd[2]);
		var pmonth = parseInt(vd[1]) - 1;
		var pday = parseInt(vd[0]);

		// Today info
		today = new Date();
		year = today.getFullYear();
		month = today.getMonth();
		day = today.getDate();

		//sprawdz czy jest ponizej 18 lat
		var age;
		if (month < pmonth) {
			age = year - pyear - 1;
		}
		else
			if (month > pmonth) {
				age = year - pyear;
			}
			else
				if (month == pmonth) {
					if (day < pday) {
						age = year - pyear - 1;
					}
					else
						if (day > pday) {
							age = year - pyear;
						}
						else
							if (day == pday) {
								age = year - pyear;
							}
				}

		//jesli jest ponizej - wywolaj odkrycie zafixowanego elementu
		if (age < ageValue) {
			showElements(elemsToPopulate);
		} else {
			hideElements(elemsToPopulate);
		}
	} else {
		hideElements(elemsToPopulate);
	}
	return true;
}
