/*
-------------------------------------------------------------------------
JavaScript Form Validator (gen_validatorv31.js)
Version 3.1.1
Copyright (C) 2003-2008 JavaScript-Coder.com. All rights reserved.
You can freely use this script in your Web pages.
You may adapt this script for your own needs, provided these opening credit
lines are kept intact.

The Form validation script is distributed free from JavaScript-Coder.com
For updates, please visit:
http://www.javascript-coder.com/html-form/javascript-form-validation.phtml

Questions & comments please send to form.val at javascript-coder.com
-------------------------------------------------------------------------
*/
function Validator(frmname)
{
	this.formobj=document.forms[frmname];
	if(!this.formobj)
	{
		alert("Error: Nedá sa načítať formulárový objekt "+frmname);
		return;
	}
	if(this.formobj.onsubmit)
	{
		this.formobj.old_onsubmit = this.formobj.onsubmit;
		this.formobj.onsubmit=null;
	}
	else
	{
		this.formobj.old_onsubmit = null;
	}
	this.formobj._sfm_form_name=frmname;
	this.formobj.onsubmit=form_submit_handler;
	this.addValidation = add_validation;
	this.setAddnlValidationFunction=set_addnl_vfunction;
	this.clearAllValidations = clear_all_validations;
	this.disable_validations = false;//new
	document.error_disp_handler = new sfm_ErrorDisplayHandler();
	this.EnableOnPageErrorDisplay=validator_enable_OPED;
	this.EnableOnPageErrorDisplaySingleBox=validator_enable_OPED_SB;
	this.show_errors_together=true;
	this.EnableMsgsTogether=sfm_enable_show_msgs_together;
}

var dia = "áäčďéíľĺňóôŕřšťúžýÁČĎÉÍĽĹŇÓŠŤÚÝŽ";
var nodia = "aacdeillnoorrstuzyACDEILLNOSTUYZ";

function diaConvert(text) {

	var convertText = "";
	for(i=0; i<text.length; i++) {
		if(dia.indexOf(text.charAt(i))!=-1) {
			convertText += nodia.charAt(dia.indexOf(text.charAt(i)));
		}
		else {
			convertText += text.charAt(i);
		}
	}
	return convertText;
}
function set_addnl_vfunction(functionname)
{
	this.formobj.addnlvalidation = functionname;
}
function sfm_enable_show_msgs_together()
{
	this.show_errors_together=true;
	this.formobj.show_errors_together=true;
}
function clear_all_validations()
{
	for(var itr=0;itr < this.formobj.elements.length;itr++)
	{
		this.formobj.elements[itr].validationset = null;
	}
}
function form_submit_handler()
{
	var bRet = true;
	document.error_disp_handler.clear_msgs();
	for(var itr=0;itr < this.elements.length;itr++)
	{
		if(this.elements[itr].validationset &&
		!this.elements[itr].validationset.validate())
		{
			bRet = false;
		}
		if(!bRet && !this.show_errors_together)
		{
			break;
		}
	}
	if(!bRet)
	{
		document.error_disp_handler.FinalShowMsg();
		return false;
	}

	if(this.addnlvalidation)
	{
		str =" var ret = "+this.addnlvalidation+"()";
		eval(str);
		if(!ret) return ret;
	}
	return true;
}
function add_validation(itemname,descriptor,errstr)
{
	var condition = null;
	if(arguments.length > 3)
	{
		condition = arguments[3];
	}
	if(!this.formobj)
	{
		alert("Error: Objekt formuláru nie je správne zadefinovaný.");
		return;
	}//if
	var itemobj = this.formobj[itemname];
	if(itemobj.length && isNaN(itemobj.selectedIndex) )
	//for radio button; don't do for 'select' item
	{
		itemobj = itemobj[0];
	}
	if(!itemobj)
	{
		alert("Error: Nedá sa načítať vstupný objekt: "+itemname);
		return;
	}
	if(!itemobj.validationset)
	{
		itemobj.validationset = new ValidationSet(itemobj,this.show_errors_together);
	}
	itemobj.validationset.add(descriptor,errstr,condition);
	itemobj.validatorobj=this;
}
function validator_enable_OPED()
{
	document.error_disp_handler.EnableOnPageDisplay(false);
}

function validator_enable_OPED_SB()
{
	document.error_disp_handler.EnableOnPageDisplay(true);
}
function sfm_ErrorDisplayHandler()
{
	this.msgdisplay = new AlertMsgDisplayer();
	this.EnableOnPageDisplay= edh_EnableOnPageDisplay;
	this.ShowMsg=edh_ShowMsg;
	this.FinalShowMsg=edh_FinalShowMsg;
	this.all_msgs=new Array();
	this.clear_msgs=edh_clear_msgs;
}
function edh_clear_msgs()
{
	this.msgdisplay.clearmsg(this.all_msgs);
	this.all_msgs = new Array();
}
function edh_FinalShowMsg()
{
	this.msgdisplay.showmsg(this.all_msgs);
}
function edh_EnableOnPageDisplay(single_box)
{
	if(true == single_box)
	{
		this.msgdisplay = new SingleBoxErrorDisplay();
	}
	else
	{
		this.msgdisplay = new DivMsgDisplayer();
	}
}
function edh_ShowMsg(msg,input_element)
{

	var objmsg = new Array();
	objmsg["input_element"] = input_element;
	objmsg["msg"] =  msg;
	this.all_msgs.push(objmsg);
}
function AlertMsgDisplayer()
{
	this.showmsg = alert_showmsg;
	this.clearmsg=alert_clearmsg;
}
function alert_clearmsg(msgs)
{

}
function alert_showmsg(msgs)
{
	var whole_msg="";
	var first_elmnt=null;
	for(var m=0;m < msgs.length;m++)
	{
		if(null == first_elmnt)
		{
			first_elmnt = msgs[m]["input_element"];
		}
		whole_msg += msgs[m]["msg"] + "\n";
	}

	alert(whole_msg);

	if(null != first_elmnt)
	{
		first_elmnt.focus();
	}
}
function sfm_show_error_msg(msg,input_elmt)
{
	document.error_disp_handler.ShowMsg(msg,input_elmt);
}
function SingleBoxErrorDisplay()
{
	this.showmsg=sb_div_showmsg;
	this.clearmsg=sb_div_clearmsg;
}

function sb_div_clearmsg(msgs)
{
	var divname = form_error_div_name(msgs);
	show_div_msg(divname,"");
}

function sb_div_showmsg(msgs)
{
	var whole_msg="<table style=\"border: 1px solid rgb(170, 170, 170); margin: 3px auto; padding: 0.2em; background: AntiqueWhite none repeat scroll 0%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; font-size: 105%; width: 80%;\" align=\"center\">\n<tbody>\n<tr><td align=\"center\" valign=\"middle\" width=\"50\"><img alt=\"\" src=\"imgs/Err-StopHand.png\" border=\"0\" height=\"40\" width=\"40\"></td>\n<td align=\"center\">Vyskytla sa chyba pri vypĺňaní formuláru:<br>\n";
	for(var m=0;m < msgs.length;m++)
	{
		whole_msg += "" + msgs[m]["msg"] + "<br>\n";
	}
	whole_msg += "</td></tr>\n</tbody>\n</table>\n";
	var divname = form_error_div_name(msgs);
	show_div_msg(divname,whole_msg);
}
function form_error_div_name(msgs)
{
	var input_element= null;

	for(var m in msgs)
	{
		input_element = msgs[m]["input_element"];
		if(input_element){break;}
	}

	var divname ="";
	if(input_element)
	{
		divname = input_element.form._sfm_form_name + "_errorloc";
	}

	return divname;
}
function DivMsgDisplayer()
{
	this.showmsg=div_showmsg;
	this.clearmsg=div_clearmsg;
}
function div_clearmsg(msgs)
{
	for(var m in msgs)
	{
		var divname = element_div_name(msgs[m]["input_element"]);
		show_div_msg(divname,"");
	}
}
function element_div_name(input_element)
{
	var divname = input_element.form._sfm_form_name + "_" +
	input_element.name + "_errorloc";

	divname = divname.replace(/[\[\]]/gi,"");

	return divname;
}
function div_showmsg(msgs)
{
	var whole_msg;
	var first_elmnt=null;
	for(var m in msgs)
	{
		if(null == first_elmnt)
		{
			first_elmnt = msgs[m]["input_element"];
		}
		var divname = element_div_name(msgs[m]["input_element"]);
		show_div_msg(divname,msgs[m]["msg"]);
	}
	if(null != first_elmnt)
	{
		first_elmnt.focus();
	}
}
function show_div_msg(divname,msgstring)
{
	if(divname.length<=0) return false;

	if(document.layers)
	{
		divlayer = document.layers[divname];
		if(!divlayer){return;}
		divlayer.document.open();
		divlayer.document.write(msgstring);
		divlayer.document.close();
	}
	else
	if(document.all)
	{
		divlayer = document.all[divname];
		if(!divlayer){return;}
		divlayer.innerHTML=msgstring;
	}
	else
	if(document.getElementById)
	{
		divlayer = document.getElementById(divname);
		if(!divlayer){return;}
		divlayer.innerHTML =msgstring;
	}
	divlayer.style.visibility="visible";
	return false;
}
function ValidationDesc(inputitem,desc,error,condition)
{
	this.desc=desc;
	this.error=error;
	this.itemobj = inputitem;
	this.condition = condition;
	this.validate=vdesc_validate;
}
function vdesc_validate()
{
	if(this.condition != null )
	{
		if(!eval(this.condition))
		{
			return true;
		}
	}
	if(!validateInput(this.desc,this.itemobj,this.error))
	{
		this.itemobj.validatorobj.disable_validations=true;
		
		ScrollToElement(document.getElementById("validform_errorloc"));
		
		return false;
	}
	return true;
}
function ValidationSet(inputitem,msgs_together)
{
	this.vSet=new Array();
	this.add= add_validationdesc;
	this.validate= vset_validate;
	this.itemobj = inputitem;
	this.msgs_together = msgs_together;
}
function add_validationdesc(desc,error,condition)
{
	this.vSet[this.vSet.length]=
	new ValidationDesc(this.itemobj,desc,error,condition);
}
function vset_validate()
{
	var bRet = true;
	for(var itr=0;itr<this.vSet.length;itr++)
	{
		bRet = bRet && this.vSet[itr].validate();
		if(!bRet && !this.msgs_together)
		{
			break;
		}
	}
	return bRet;
}
function validateEmail(email)
{
	var splitted = email.match("^(.+)@(.+)$");
	if(splitted == null) return false;
	if(splitted[1] != null )
	{
		var regexp_user=/^\"?[\w-_\.]*\"?$/;
		if(splitted[1].match(regexp_user) == null) return false;
	}
	if(splitted[2] != null)
	{
		var regexp_domain=/^[\w-\.]*\.[A-Za-z]{2,4}$/;
		if(splitted[2].match(regexp_domain) == null)
		{
			var regexp_ip =/^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/;
			if(splitted[2].match(regexp_ip) == null) return false;
		}// if
		return true;
	}
	return false;
}

function IsCheckSelected(objValue,chkValue)
{
	var selected=false;
	var objcheck = objValue.form.elements[objValue.name];
	if(objcheck.length)
	{
		var idxchk=-1;
		for(var c=0;c < objcheck.length;c++)
		{
			if(objcheck[c].value == chkValue)
			{
				idxchk=c;
				break;
			}//if
		}//for
		if(idxchk>= 0)
		{
			if(objcheck[idxchk].checked=="1")
			{
				selected=true;
			}
		}//if
	}
	else
	{
		if(objValue.checked == "1")
		{
			selected=true;
		}//if
	}//else

	return selected;
}
function TestDontSelectChk(objValue,chkValue,strError)
{
	var pass = true;
	pass = IsCheckSelected(objValue,chkValue)?false:true;

	if(pass==false)
	{
		if(!strError || strError.length ==0)
		{
			strError = "Nedá sa pokračovať s výberom "+objValue.name;
		}//if
		sfm_show_error_msg(strError,objValue);

	}
	return pass;
}
function TestShouldSelectChk(objValue,chkValue,strError)
{
	var pass = true;

	pass = IsCheckSelected(objValue,chkValue)?true:false;

	if(pass==false)
	{
		if(!strError || strError.length ==0)
		{
			strError = "Mali by ste vybrať "+objValue.name;
		}//if
		sfm_show_error_msg(strError,objValue);

	}
	return pass;
}
function TestRequiredInput(objValue,strError)
{
	var ret = true;
	var val = objValue.value;
	val = val.replace(/^\s+|\s+$/g,"");//trim
	if(eval(val.length) == 0)
	{
		if(!strError || strError.length ==0)
		{
			strError = objValue.name + " : Potrebné vyplniť";
		}//if
		sfm_show_error_msg(strError,objValue);
		ret=false;
	}//if
	return ret;
}
function TestMaxLen(objValue,strMaxLen,strError)
{
	var ret = true;
	if(eval(objValue.value.length) > eval(strMaxLen))
	{
		if(!strError || strError.length ==0)
		{
			strError = objValue.name + " : "+ strMaxLen +" znakov maximálne ";
		}//if
		sfm_show_error_msg(strError,objValue);
		ret = false;
	}//if
	return ret;
}
function TestMinLen(objValue,strMinLen,strError)
{
	var ret = true;
	if(eval(objValue.value.length) <  eval(strMinLen))
	{
		if(!strError || strError.length ==0)
		{
			strError = objValue.name + " : " + strMinLen + " znakov minimálne ";
		}//if
		sfm_show_error_msg(strError,objValue);
		ret = false;
	}//if
	return ret;
}
function TestInputType(objValue,strRegExp,strError,strDefaultError)
{
	var ret = true;

	var objVal = diaConvert(objValue.value);
	var charpos = objVal.search(strRegExp);
	if(objVal.length > 0 &&  charpos >= 0)
	{
		if(!strError || strError.length ==0)
		{
			strError = strDefaultError;
		}//if
		sfm_show_error_msg(strError,objValue);
		ret = false;
	}//if
	return ret;
}
function TestEmail(objValue,strError)
{
	var ret = true;
	if(objValue.value.length > 0 && !validateEmail(objValue.value)	 )
	{
		if(!strError || strError.length ==0)
		{
			strError = objValue.name+": Zadajte správnu Emailvoú adresu ";
		}//if
		sfm_show_error_msg(strError,objValue);
		ret = false;
	}//if
	return ret;
}
function TestLessThan(objValue,strLessThan,strError)
{
	var ret = true;
	if(isNaN(objValue.value))
	{
		sfm_show_error_msg(objValue.name +": Musí byť číslo ",objValue);
		ret = false;
	}//if
	else
	if(eval(objValue.value) >=  eval(strLessThan))
	{
		if(!strError || strError.length ==0)
		{
			strError = objValue.name + " : hodnota musí byť menšia ako "+ strLessThan;
		}//if
		sfm_show_error_msg(strError,objValue);
		ret = false;
	}//if
	return ret;
}
function TestGreaterThan(objValue,strGreaterThan,strError)
{
	var ret = true;
	if(isNaN(objValue.value))
	{
		sfm_show_error_msg(objValue.name+": Musí byť číslo ",objValue);
		ret = false;
	}//if
	else
	if(eval(objValue.value) <=  eval(strGreaterThan))
	{
		if(!strError || strError.length ==0)
		{
			strError = objValue.name + " : hodnota musí byť väčšia ako "+ strGreaterThan;
		}//if
		sfm_show_error_msg(strError,objValue);
		ret = false;
	}//if
	return ret;
}
function TestRegExp(objValue,strRegExp,strError)
{
	var ret = true;
	if( objValue.value.length > 0 &&
	!objValue.value.match(strRegExp) )
	{
		if(!strError || strError.length ==0)
		{
			strError = objValue.name+": Zadané neplatné znaky ";
		}//if
		sfm_show_error_msg(strError,objValue);
		ret = false;
	}//if
	return ret;
}
function TestDontSelect(objValue,dont_sel_index,strError)
{
	var ret = true;
	if(objValue.selectedIndex == null)
	{
		sfm_show_error_msg("CHYBA: Dropdown validátor pre nesprávny objekt");
		ret =  false;
	}
	if(objValue.selectedIndex == eval(dont_sel_index))
	{
		if(!strError || strError.length ==0)
		{
			strError = objValue.name+": Prosím vyberte jednu možnosť ";
		}//if
		sfm_show_error_msg(strError,objValue);
		ret =  false;
	}
	return ret;
}
function TestSelectOneRadio(objValue,strError)
{
	var objradio = objValue.form.elements[objValue.name];
	var one_selected=false;
	for(var r=0;r < objradio.length;r++)
	{
		if(objradio[r].checked)
		{
			one_selected=true;
			break;
		}
	}
	if(false == one_selected)
	{
		if(!strError || strError.length ==0)
		{
			strError = "Prosím vyberte jednu možnosť z "+objValue.name;
		}
		sfm_show_error_msg(strError,objValue);
	}
	return one_selected;
}

function validateInput(strValidateStr,objValue,strError)
{
	var ret = true;
	var epos = strValidateStr.search("=");
	var  command  = "";
	var  cmdvalue = "";
	if(epos >= 0)
	{
		command  = strValidateStr.substring(0,epos);
		cmdvalue = strValidateStr.substr(epos+1);
	}
	else
	{
		command = strValidateStr;
	}
	switch(command)
	{
		case "req":
		case "required":
		{
			ret = TestRequiredInput(objValue,strError)
			break;
		}//case required
		case "maxlength":
		case "maxlen":
		{
			ret = TestMaxLen(objValue,cmdvalue,strError)
			break;
		}//case maxlen
		case "minlength":
		case "minlen":
		{
			ret = TestMinLen(objValue,cmdvalue,strError)
			break;
		}//case minlen
		case "alnum":
		case "alphanumeric":
		{
			ret = TestInputType(objValue,"[^A-Za-z0-9]",strError,
			objValue.name+": Iba alfanumerické znaky sú povolené ");
			break;
		}
		case "alnum_s":
		case "alphanumeric_space":
		{
			ret = TestInputType(objValue,"[^A-Za-z0-9\\s]",strError,
			objValue.name+": Iba alfanumerické znaky a medzera sú povolené ");
			break;
		}
		case "num":
		case "numeric":
		{
			ret = TestInputType(objValue,"[^0-9]",strError,
			objValue.name+": Môže byť iba číslo ");
			break;
		}
		case "dec":
		case "decimal":
		{
			ret = TestInputType(objValue,"[^0-9\.]",strError,
			objValue.name+": Môže byť iba číslo(aj desatinné) ");
			break;
		}
		case "alphabetic":
		case "alpha":
		{
			ret = TestInputType(objValue,"[^A-Za-z]",strError,
			objValue.name+": Môže byť iba text ");
			break;
		}
		case "alphabetic_space":
		case "alpha_s":
		{
			ret = TestInputType(objValue,"[^A-Za-z\\s]",strError,
			objValue.name+": Iba textové znaky a medzera sú povolené ");
			break;
		}
		case "email":
		{
			ret = TestEmail(objValue,strError);
			break;
		}
		case "lt":
		case "lessthan":
		{
			ret = TestLessThan(objValue,cmdvalue,strError);
			break;
		}
		case "gt":
		case "greaterthan":
		{
			ret = TestGreaterThan(objValue,cmdvalue,strError);
			break;
		}//case greaterthan
		case "regexp":
		{
			ret = TestRegExp(objValue,cmdvalue,strError);
			break;
		}
		case "dontselect":
		{
			ret = TestDontSelect(objValue,cmdvalue,strError)
			break;
		}
		case "dontselectchk":
		{
			ret = TestDontSelectChk(objValue,cmdvalue,strError)
			break;
		}
		case "shouldselchk":
		{
			ret = TestShouldSelectChk(objValue,cmdvalue,strError)
			break;
		}
		case "selone_radio":
		{
			ret = TestSelectOneRadio(objValue,strError);
			break;
		}
	}//switch
	return ret;
}
function VWZ_IsListItemSelected(listname,value)
{
	for(var i=0;i < listname.options.length;i++)
	{
		if(listname.options[i].selected == true &&
		listname.options[i].value == value)
		{
			return true;
		}
	}
	return false;
}
function VWZ_IsChecked(objcheck,value)
{
	if(objcheck.length)
	{
		for(var c=0;c < objcheck.length;c++)
		{
			if(objcheck[c].checked == "1" &&
			objcheck[c].value == value)
			{
				return true;
			}
		}
	}
	else
	{
		if(objcheck.checked == "1" )
		{
			return true;
		}
	}
	return false;
}
/*
Copyright (C) 2003-2008 JavaScript-Coder.com . All rights reserved.
*/
function ScrollToElement(theElement){

	var selectedPosX = 0;
	var selectedPosY = 0;

	while(theElement != null){
		selectedPosX += theElement.offsetLeft;
		selectedPosY += theElement.offsetTop;
		theElement = theElement.offsetParent;
	}

	window.scrollTo(selectedPosX,selectedPosY);

}