/*
* Elem és szülő elemek láthatóságának vizsgálata
*/
function checkVisibility(element) {
	if (element.style.display == "none") {
		return false;
	}
	else if(element.parentNode != null && element.parentNode.style != null) {
		return checkVisibility(element.parentNode);
	}
	return true;
}


function addEvent(element, eventType, listenerFunction, useCapture) {
	if(element.addEventListener) {
		element.addEventListener(eventType, listenerFunction, useCapture);
		return true;
	}
	else if(element.attachEvent) {
		return element.attachEvent("on" + eventType, listenerFunction);
	}
	else {
		return false;
	}
}

 
function getElementsByClass(className, element, tagName) {
	var resultArray = new Array();
	if (element == null) element = document;
	if (tagName == null) tagName = '*';
	var objectArray = element.getElementsByTagName(tagName);
	var pattern = new RegExp("(^|\\s)" + className + "(\\s|$)");
	var i = 0;
	for(var j = 0; j < objectArray.length; j++) {
		if(pattern.test(objectArray[j].className)) {
			resultArray[i++] = objectArray[j];
		}
	}
	return resultArray;
}



/**
 * Form "input" mezőinek típus ellenőrzése
 *
 *  - strfix_int: egész szám
 *  - strfix_float: tizedes szám
 */
function inputValidator(node) {
	var strs = getElementsByClass("strfix[^ ]*", node, "input");

	for(var i = 0; i < strs.length; i++) {
		var r_int = /_int(\s|$)/;
		var r_float = /_float_[0-9](\s|$)/;

		//Egész szám
		if(r_int.test(strs[i].className)) {
			strs[i].onchange = strs[i].onkeyup = function() {
				this.value = this.value.replace(/[^0-9]/g, '');
			}
		}
		//Tizedes szám
		else if(r_float.test(strs[i].className)) {
			strs[i].onchange = strs[i].onkeyup = function() {
				var m = parseInt(this.className.replace(/.*float_([0-9]).*/,'$1'));		//tizedes jegyek száma
				var r_test = /\.[0-9]*/;

				this.value = this.value.replace(/,/, '\.');								//"." csere ","-re
				this.value = this.value.replace(/[^.0-9]/g, '');

				if(r_test.test(this.value)){
					this.value = this.value.replace(/^([0-9]*)\.+([0-9]*).*$/, '$1.$2');
					this.value= this.value.substr(0, this.value.indexOf('.') + m + 1);
				}
			}
		}
	}
}



addEvent(window, 'load', function() { inputValidator(document) });


function formValidator(form) {
	//Hibajelölés törlése a form összes elemén
	for(var i = 0; i < form.length; i++) {
	  form[i].className = form[i].className.replace(/\binputAlert\b/i, "");
	}


	//kötelezően kitöltendő mezők
	var required = getElementsByClass('required', form, null);
	if(required){
		for (i in required) {
			var value = '';
			switch (required[i].tagName) {
				case 'SELECT':
					value = required[i].options[required[i].selectedIndex].value;
					break;
				case 'INPUT':
				case 'TEXTAREA':
					value = required[i].value;
					break;
			}

			if ( value.replace(/^\s+|\s+$/g, "") == '' ) {
				if ( checkVisibility(required[i]) ) {
					required[i].className += ' inputAlert';
					required[i].focus();
					alert("Kötelező mező");
					return false;
				}
			}
		}
	}
	
	return true;
}


//e-mail cím formátumának ellenőrzése
function formValidatorEmail(element) {
	if ( element != null && checkVisibility(element) ) {
		var pattern = new RegExp("^([a-zA-Z0-9._%+-]+)@([a-zA-Z0-9.-]+)\.([a-zA-Z]{2,4})$");
		if(!pattern.test(element.value)) {
			element.className += ' inputAlert';
			element.focus();
			alert("Hibás formátum: e-mail cím");
			return false;
		}
	}

	return true;
}

//Legalább az egyik checkbox meg van-e adva
function formValidatorProgramLocation(form) {
	if( !form['form[program_location_1]'].checked && !form['form[program_location_2]'].checked && !form['form[program_location_3]'].checked && !form['form[program_location_4]'].checked && !form['form[program_location_5]'].checked && !form['form[program_location_6]'].checked && !form['form[program_location_7]'].checked ) {
		form['form[program_location_1]'].focus();
		alert("Kötelező mező: Preferált helyszín");
		return false;
	}

	return true;
}

//Legalább az egyik checkbox meg van-e adva
function formValidatorProgramSubject(form) {
	if( !form['form[program_subject_1]'].checked && !form['form[program_subject_2]'].checked && !form['form[program_subject_3]'].checked && !form['form[program_subject_4]'].checked && !form['form[program_subject_5]'].checked && !form['form[program_subject_6]'].checked && !form['form[program_subject_7]'].checked ) {
		form['form[program_subject_1]'].focus();
		alert("Kötelező mező: Négyszemközti konzultációs igény az érintett témakör szakértőjével");
		return false;
	}

	return true;
}


