/*	form checker and other stuff
 *
 *	all rights reserved
 *	Ondrej Verbo (c) 2009
 */


function activateForm(frms) {
	var len = frms.length;

	for (cnt = 0; cnt < len; cnt++) {
		var frm = frms[cnt];

		for (var i = 0; i < frm.length; i++) {
			var elem = frm.elements[i];
			var placeholder = elem.getAttribute('placeholder');

			if ((elem.type == 'text' || elem.type == 'password') && placeholder && !elem.value)
				elem.value = placeholder;
		}
	}
}

function activateSubmit(frm) {
	var submitBrn;
	var canSubmit = true;

	for (var i = 0; i < frm.length; i++) {
		var elem = frm.elements[i];

		if (!validValue(elem))
			canSubmit = false;

		if ((elem.type == 'submit' || elem.type == 'button') && elem.getAttribute('disabled'))
			submitBtn = elem;
	}

	if (canSubmit) {
		submitBtn.removeAttribute('disabled');
		var elemClass = elem.className;

		if (stristr(elemClass,'disabled'))
			elemClass = str_replace('disabled','',elemClass);

		submitBtn.className = elemClass;
	} else {
		submitBtn.setAttribute('disabled','disabled');
		var elemClass = elem.className;

		if (!stristr(elemClass,'disabled'))
			elemClass = elemClass + ' disabled';

		submitBtn.className = elemClass;
	}
}

function activatePassword(elem) {
	var id;
	var suffix = stristr(elem.getAttribute('id'),'-');

	if (suffix == '-ori') id = 'pass-rep';
	else if (suffix == '-rep') id = 'pass-ori';
	else id = false;

	var sec = document.getElementById(id);

	if (sec.value || elem.value) {
		if (!stristr(elem.className,'validate-password')) elem.clasName = elem.clasName + 'validate-password';
		if (!stristr(sec.className,'validate-password')) sec.className = sec.clasName + 'validate-password';
	} else {
		if (!stristr(elem.className,'validate-password')) elem.clasName = str_replace('validate-password','',elem.clasName);
		if (!stristr(sec.className,'validate-password')) sec.className = str_replace('validate-password','',elem.clasName);
	}
}

function disableSubmitOnElem(elem) {
	var frm = elem.form;

	for (var i = 0; i < frm.length; i++) {
		var child = frm.elements[i];

		if ((child.type == 'submit' || child.type == 'button') && !child.getAttribute('disabled')) {
			child.setAttribute('disabled','disabled');
			var childClass = child.className;

			if (!stristr(childClass,'disabled'))
				childClass = elemClass + ' disabled';

			submitBtn.className = elemClass;
		}
	}

}

function checkInput(elem,act) {
	var placeholder = elem.getAttribute('placeholder');

	if (act == 0 && elem.value == placeholder) elem.value = '';
	else if (act == 1 && elem.value == '') elem.value = placeholder;
	else if (act == 1 && elem.value == placeholder) elem.value = '';
}

function validValue(elem) {
	var res = true;

	if (stristr(elem.className,'required') && (!elem.value || elem.value == elem.getAttribute('placeholder')))
		res = false;

	if (stristr(elem.className,'validate-number') && elem.value && (!isNaN(v) || !/^\s+$/.test(elem.value)))
		res = false;

	if (stristr(elem.className,'validate-digits') && elem.value && !/^[0-9]+$/.test(elem.value))
		res = false;

	if (stristr(elem.className,'validate-alpha') && elem.value && !/^[a-zA-ZľĺščťžýáíéďúůřôäĽĹŠČŤŽÝÁÍÉĎÚŮŘ ]+$/.test(elem.value))
		res = false;

	if (stristr(elem.className,'validate-alphanum') && elem.value && !/^[a-zA-Z0-9ľĺščťžýáíéďúůřôäĽĹŠČŤŽÝÁÍÉĎÚŮŘ ]+$/.test(elem.value))
		res = false;

	if (stristr(elem.className,'validate-email') && elem.value && !/\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/.test(elem.value))
		res = false;

	if (stristr(elem.className,'validate-password') && elem.value && document.getElementById('pass-ori').value != document.getElementById('pass-rep').value)
		res = false;

	return res;
}

function checkForm(frm) {
	var resElem = document.getElementById('result-' + frm.name);
	var res = true;

	for (var i = 0; i < frm.length; i++) {
		var elem = frm.elements[i];
		var parrent = elem.parentNode;

		if (elem.type == 'hidden' || elem.type == 'button' || elem.type == 'submit') continue;

		checkInput(elem,0);
		if (!validValue(elem)) {
			if (stristr(elem.className,'validate-number')) answer = 'Povolené sú len čísla';
			if (stristr(elem.className,'validate-digits')) answer = 'Povolené sú len numerické znaky';
			if (stristr(elem.className,'validate-alpha')) answer = 'Povolené sú len písmená';
			if (stristr(elem.className,'validate-alphanum')) answer = 'Povolené sú len alfanumerické znaky';
			if (stristr(elem.className,'validate-email')) answer = 'E-mail v nesprávnom tvare';
			if (stristr(elem.className,'validate-password')) answer = 'Heslá sa nezhodujú';
			if (stristr(elem.className,'required') && !elem.value) answer = 'Toto je povinné pole. Prosím vyplňte!';

			if (!answer) answer = elem.getAttribute('title') ? elem.getAttribute('title') : 'Nepovolená hodnota!';

			var newChild = document.createElement("div");
			newChild.className = 'validation-advice';
			newChild.setAttribute('id','validation-' + elem.getAttribute('name'));
			newChild.innerHTML = answer;

			if (oldChild = document.getElementById('validation-' + elem.getAttribute('name')))
				parrent.removeChild(oldChild);

			if (!document.getElementById('validation-' + elem.getAttribute('name')))
				parrent.appendChild(newChild);

			res = false;
		} else {
			if (oldChild = document.getElementById('validation-' + elem.getAttribute('name')))
				parrent.removeChild(oldChild);
		}
		checkInput(elem,1);
	}

	return res;
}

