// man validator:
function best_form_field_not_empty(fieldSymbol, rnd, fieldType) {
	var resp = true;
	
	if (fieldType == 'text' || fieldType == 'textlong' || fieldType == 'select' || fieldType == 'file' || fieldType == 'multiselect') {
		resp = best_form_simple_field_not_empty(fieldSymbol, rnd);
	}
	else if (fieldType == 'date') {
		resp = best_form_date_field_not_empty(fieldSymbol, rnd);
	}
	else if (fieldType == 'radio') {
		resp = best_form_radio_field_not_empty(fieldSymbol, rnd);
	}
	else if (fieldType == 'checkbox') {
		resp = best_form_checkbox_field_not_empty(fieldSymbol, rnd);
	}
	
	return resp;
}

/*
	text, textarea, select and file fields non-empty validation:
*/
function best_form_simple_field_not_empty(fieldSymbol, rnd) {
	var testElement = document.getElementById('q_' + fieldSymbol + '_' + rnd);
	
	if (testElement && (testElement.value > 0 || testElement.value.length > 0))
		return true;
	else
		return false;

}

/*
	date fields non-empty validation
*/
function best_form_date_field_not_empty(fieldSymbol, rnd) {
	if (best_form_simple_field_not_empty(fieldSymbol, rnd + "_year") && 
		best_form_simple_field_not_empty(fieldSymbol, rnd + "_month") && 
		best_form_simple_field_not_empty(fieldSymbol, rnd + "_day"))
		
		return true;
	else
		return false;

}

/*
	radio fields non-empty validation
*/
function best_form_radio_field_not_empty(fieldSymbol, rnd) {
	var answersElement = document.getElementById('q_' + fieldSymbol + '_' + rnd + "_answers");
	var resp = false;
	var total = parseInt(answersElement.value);
	
	if (total > 0) {
		for (var i = 1; i <= total; i++) {
			var testElement = document.getElementById('q_' + fieldSymbol + '_' + rnd + "_" + i);
			if (testElement && testElement.checked)
				return true;
		}
	}
	
	return false;
}

/*
	checkbox fields non-empty validation
*/
function best_form_checkbox_field_not_empty(fieldSymbol, rnd) {
	var answersElement = document.getElementById('q_' + fieldSymbol + '_' + rnd + "_answers");
	var resp = false;
	var total = parseInt(answersElement.value);
	
	if (total > 0) {
		for (var i = 1; i <= total; i++) {
			var testElement = document.getElementById('q_' + fieldSymbol + '_' + rnd + "_" + i);
			if (testElement && testElement.checked)
				return true;
		}
	}
		
	return false;
}

function update_date_field(fieldSymbol, rnd) {
	var yElement = document.getElementById('q_' + fieldSymbol + '_' + rnd + "_year");
	var mElement = document.getElementById('q_' + fieldSymbol + '_' + rnd + "_month");
	var dElement = document.getElementById('q_' + fieldSymbol + '_' + rnd + "_day");
	
	document.getElementById('q_' + fieldSymbol + '_' + rnd).value = yElement.value + '-' + mElement.value + '-' + dElement.value;
}

function best_form_text_field_regexp_valid(fieldSymbol, rnd, fieldType, vType, vParam) {
	// only text fields:
	if (fieldType != 'text')
		return true;
		
	var testElement = document.getElementById('q_' + fieldSymbol + '_' + rnd);
	
	// only non-empty fields:
	if (!best_form_simple_field_not_empty(fieldSymbol, rnd))
		return true;
	
// 	if (fieldSymbol == 'imie') {
// 		vType = 'regexp';
// 		vParam = 'alpha';
// 	}
	
	var regExp = /.*/;
	
	if (vType == 'email')
		regExp = /^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i;
		
	if (vType == 'www')
		regExp = /^(https?:\/\/)?(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+@)?(([0-9]{1,3}\.){3}[0-9]{1,3}|([0-9a-z_!~*'()-]+\.)*([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\.[a-z]{2,6})(:[0-9]{1,4})?((\/?)|(\/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+\/?)$/i;
	if (vType == 'zip')
		regExp = /^[0-9]{2}-[0-9]{3}$/;
	if (vType == 'mphone')
		regExp = /^[0-9]{3,4} [0-9]{2}-[0-9]{2}-[0-9]{2}$/;
	if (vType == 'phone')
		regExp = /^[0-9]{3} [0-9]{3}-[0-9]{2}-[0-9]{2}$/;
	if (vType == 'regon')
		regExp = /^[0-9]{9}$/;
	if (vType == 'pesel')
		regExp = /^[0-9]{11}$/;
	if (vType == 'nip')
		regExp = /^[0-9]{3}-[0-9]{3}-[0-9]{2}-[0-9]{2}$/;
		
	if (vType == 'dataType' && vParam == 'integer') 
		regExp = /^(\+|-)?[0-9]+$/;
	if (vType == 'dataType' && vParam == 'float') 
		regExp = /^(\+|-)?[0-9]+((\.|,)[0-9]+)?$/;
	if (vType == 'dataType' && vParam == 'alpha') 
		regExp = /^[a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ]+$/i;
	if (vType == 'dataType' && vParam == 'alphadig') 
		regExp = /^[0-9a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ]+$/i;
		
	if (vType == 'regexp' && vParam != '') 
		regExp = new RegExp(vParam);
	
	
	if (testElement && testElement.value.match(regExp))
		return true;
	else
		return false;
}


function best_form_text_field_min_length_valid(fieldSymbol, rnd, fieldType, minLength) {
	// only text fields:
	if (fieldType != 'text')
		return true;
		
	var testElement = document.getElementById('q_' + fieldSymbol + '_' + rnd);
	
	if (testElement && testElement.value.length >= minLength)
		return true;
	else
		return false;
}

function best_form_text_field_max_length_valid(fieldSymbol, rnd, fieldType, maxLength) {
	// only text fields:
	if (fieldType != 'text')
		return true;
		
	var testElement = document.getElementById('q_' + fieldSymbol + '_' + rnd);
	
	if (testElement && testElement.value.length <= maxLength)
		return true;
	else
		return false;
}

function best_form_multi_field_max_answers_valid(fieldSymbol, rnd, fieldType, maxAnswers) {
	var respCount = 0;
	if (fieldType == 'multiselect') {
		var testElement = document.getElementById('q_' + fieldSymbol + '_' + rnd);
		
		if (testElement.options) {
			for (var i = 0; i < testElement.options.length; i++) {
				if (testElement.options[i].selected == true)
					respCount++;
			}
		}
	}
	
	if (fieldType == 'checkbox') {
		var answersElement = document.getElementById('q_' + fieldSymbol + '_' + rnd + "_answers");
		var total = parseInt(answersElement.value);
		
		if (total > 0) {
			for (var i = 1; i <= total; i++) {
				var testElement = document.getElementById('q_' + fieldSymbol + '_' + rnd + "_" + i);
				if (testElement && testElement.checked)
					respCount++;
			}
		}
	}
	if (maxAnswers > 0 && respCount > maxAnswers)
		return false;
	else
		return true;
		
	
}



function markField(symbol, fieldType, random) {
	var elementId = 'q_' + symbol + '_' + random + '_err';
	var testElement = document.getElementById(elementId);
	if (elementId) {
		testElement.style.border = "1px solid red";
		testElement.style.padding = "2px";
	}
}
function unmarkField(symbol, fieldType, random) {
	var elementId = 'q_' + symbol + '_' + random + '_err';
	var testElement = document.getElementById(elementId);
	if (elementId) {
		testElement.style.border = '';
		testElement.style.padding = '';
	}
}



