	var msgs=''; //global
  var cntmsg=1; //global
  
		function checkform(of)
		{
		// Test if DOM is available and there is an element called required
			if(!document.getElementById || !document.createTextNode){return;}
			if(!document.getElementById('required')){return ;} 
		// Define error messages and split the required fields
			var errorID='errormsg';
			var errorClass='vstup'
			var imgClassError= 'imgerr'
			var errorMsg='Chyba: Formulář nebyl správně vyplněn. Doplňte, prosím, položky označené hvězdičkou.';
			var errorImg='images/err.gif';
			var errorAlt='Chyba';
			var errorTitle='Tato položka není správně vyplněna!';
			var alertik= 'Formulář nebyl správně vyplněn. Běžte na jeho začátek a postupně doplňte/opravte zvýrazněné položky. Najetím na podtržený text názvu pole, které je chybně vyplněno si můžete zobrazit nápovědu.\n\n';
			var reqfields=document.getElementById('required').value.split(',');
      var theForm = document.forms[0];
      var result= true;

      //nejdriv cele pole na test pull-downs
/*      
      for(i=0; i<theForm.elements.length; i++){ 
      theForm.elements[i].className='';//clear old mess
      if((theForm.elements[i].type=="select-one") &&  (theForm.elements[i].selectedIndex==0)){ cf_adderr(theForm.elements[i])  }
      //(theForm.elements[i].name in _oc(['edit-kontaktni-vlPlatbaHovor','vlDruhCinosti'])) &&   
      }
*/
/*
var str = '';
var elem = document.getElementById('scoring').elements;
for(var i = 0; i < elem.length; i++)
{
str += elem[i].id + ","; //ziskej vsechny id z formulare
}
document.getElementById('debug').innerHTML = str;
*/


		// Cleanup old mess
			// if there is an old errormessage field, delete it
			if(document.getElementById(errorID))
			{
				var em=document.getElementById(errorID);
				em.parentNode.removeChild(em);
			}
			// remove old images and classes from the required fields
			for(var i=0;i<reqfields.length;i++)
			{
				var f=document.getElementById(reqfields[i]);
				if(!f){continue;}
				if(f.previousSibling && /img/i.test(f.previousSibling.nodeName))
				{
					f.parentNode.removeChild(f.previousSibling);
				}
				f.className='';
			}
		// loop over required fields
			for(var i=0;i<reqfields.length;i++)
			{
		// check if required field is there
				var f=document.getElementById(reqfields[i]);
				if(!f){continue;}
		// test if the required field has an error, 
		// according to its type
			if (!v(reqfields[i],true)) {
        cf_adderr(f)
        result= false; 
      }

      //EXPLICITNI URCENI POVINNYCH POLI, KT. MOHOU ZUSTAT PRAZDNA!  		   
      if (reqfields[i]=='edit-zadost-telDomu') continue;
		    
				switch(f.type.toLowerCase())
				{
					case 'text':
						if(f.value==''){ cf_adderr(f)}
					break;
					case 'textarea':
						if(f.value==''){cf_adderr(f)}							
					break;
					case 'checkbox':
					case 'radio':
						if(!f.checked){cf_adderr(f)}							
					break;
					case 'select-one':
						if(f.selectedIndex==0){cf_adderr(f)}							
					break;
				}
			}

			if (document.getElementById(errorID)) { alert(alertik+msgs); msgs=''; cntmsg=1; result= false; } ;
			//!document.getElementById(errorID)
			return result;

			/* Tool methods */
			function cf_adderr(o)
			{
				// create image, add to and colourise the error fields

				//var errorIndicator=document.createElement('img');
				//errorIndicator.alt=errorAlt;
				//errorIndicator.src=errorImg;
				//errorIndicator.title=errorTitle;
				//errorIndicator.className=imgClassError;
				o.className=errorClass;
				//o.parentNode.insertBefore(errorIndicator,o);

			// Check if there is no error message
				if(!document.getElementById(errorID))
				{
				// create errormessage and insert before submit button
					var em=document.createElement('span');
					em.id=errorID;
					var newp=document.createElement('p');
					newp.appendChild(document.createTextNode(errorMsg))
					// clone and insert the error image
					//newp.appendChild(errorIndicator.cloneNode(true));
					em.appendChild(newp);
					// find the submit button 
					for(var i=0;i<of.getElementsByTagName('input').length;i++)
					{
						if(/submit/i.test(of.getElementsByTagName('input')[i].type))
						{
							var sb=of.getElementsByTagName('input')[i];
							break;
						}
					}
					if(sb)
					{
						sb.parentNode.insertBefore(em,sb);
					}	
				} 
			}
			function cf_isEmailAddr(str) 
			{
			    return str.match(/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/);
			}
			function cf_isName(str) 
			{
			    return str.match(/^[^0-9]+$/);
			}
			function cf_isRC(str) 
			{
			    return str.match(/^[0-9]{9,10}$/);
			}
			function cf_isMobil(str) 
			{
			    return str.match(/^[6,7]{1}[0-9]{8}$/);
			}
		}
    function _oc(a) //object convert pro vyhledavani v poli "nepovinnych pull downs"
    {
      var o = {};
      for(var i=0;i<a.length;i++)
      {
        o[a[i]]='';
      }
      return o;
    }
  
  function markErrors(ids){
    var errorClass= 'vstup';
    for(var i=0;i<ids.length;i++) {
      document.getElementById(ids[i]).className+= ' '+errorClass;
    }
  }
  
  function subm(form,a){
        var ret= true;
        if (a=='odesli'){
          disable();
          ret= checkform(form);
          if (!ret) { enable();}
        }
        return ret; 
        //return false;         
  }

  function movefocus(elm, next) {
    act= document.getElementById(elm);
    neww= document.getElementById(next);
    
    var userSelection;
    if (window.getSelection) { //mozilla
    	userSelection = window.getSelection();
    	var focusedAndSelected= ((act.value).substring(act.selectionStart,act.selectionEnd).length==2);
    }
    else if (document.selection) { // should come last; Opera! IE
    	userSelection = document.selection.createRange();
    	var focusedAndSelected= (userSelection.text.length==2);
    }
    if (act.value.length>1 && !focusedAndSelected) neww.focus();
  }
  
  function v(id,submitting){
    var val= document.getElementById(id).value;
    var result= true; 
    var subm= false; //DEFAULT
    if (submitting != null) subm= submitting;
    
    switch (id){
/*CR************/
      case 'edit-zadost-jmeno':
        if (val==''){ _alert('Jméno žadatele je povinné.'); _performCheck(document.getElementById(id)); return false; }
      break;
      case 'edit-zadost-prijmeni':
        if (val==''){ _alert('Příjmení žadatele je povinné.'); _performCheck(document.getElementById(id)); return false; }
      break;
      
      case 'edit-zadost-rc':
        if (!testRC(val) || val=='') { _alert('Rodné číslo zřejmě není správně zadané.'); _performCheck(document.getElementById(id)); return false;}
      break;

      case 'edit-zadost-telefon':
        if (val=='') { _alert('Telefon je nutné uvést.'); _performCheck(document.getElementById(id)); return false;}
      break;
      case 'edit-zadost-email':
        if (!val.match(/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/) || val=='') { _alert('Zadejte, prosím, platný email.'); _performCheck(document.getElementById(id)); return false; }
      break;
      case 'edit-zadost-podminky':
        if (!document.getElementById(id).checked) { _alert('Žadatel musí souhlasit s podmínkami.'); _performCheck(document.getElementById(id)); return false; }
      break;
      case 'edit-zadost-nalezitosti':
        if (!document.getElementById(id).checked) { _alert('Žadatel musí být plnoletý, s pravidelným příjmem a občan ČR.'); _performCheck(document.getElementById(id)); return false; }
      break;
      case 'edit-zadost-pujcka':
        if (document.getElementById(id).selectedIndex==0){ _alert('Uveďte výši půjčky.'); _performCheck(document.getElementById(id)); return false; }
      break;
      case 'edit-zadost-delkaZam3mes':
        if (document.getElementById(id).selectedIndex==0){ _alert('Uveďte délku zaměstnání.'); _performCheck(document.getElementById(id)); return false; }
      break;
      case 'edit-zadost-vypovedniLhuta':
        if (document.getElementById(id).selectedIndex==0){ _alert('Uveďte výpovědní lhůtu.'); _performCheck(document.getElementById(id)); return false; }
      break;
      case 'edit-zadost-vek':
        if (document.getElementById(id).selectedIndex==0){ _alert('Uveďte Váš věk.'); _performCheck(document.getElementById(id)); return false; }
      break;
      case 'edit-zadost-prijem':
        if (document.getElementById(id).selectedIndex==0){ _alert('Uveďte Váš měsíční příjem.'); _performCheck(document.getElementById(id)); return false; }
      break;
      case 'edit-zadost-kdyKontaktovat':
        if (document.getElementById(id).selectedIndex==0){ _alert('Zadejte kdy Vás můžeme kontaktovat.'); _performCheck(document.getElementById(id)); return false; }
      break;
      case 'edit-zadost-telDomu':
        if (!val.match(/^[0-9]{9}$/) && val!=''){ _alert('Telefon domů musí být 9 místné číslo. Pokud jej nemáte, ponechte pole prázdné!'); _performCheck(document.getElementById(id)); return false;}
      break;
      
/*SK***********/
      case 'edit-zadostsk-jmeno':
        if (val==''){ _alert('Meno žadatele je povinné.'); _performCheck(document.getElementById(id)); return false; }
      break;
      case 'edit-zadostsk-prijmeni':
        if (val==''){ _alert('Priezvisko žadatele je povinné.'); _performCheck(document.getElementById(id)); return false; }
      break;
      case 'edit-zadostsk-rc':
        if (!testRC(val) || val=='') { _alert('Rodné číslo zrejme nie je správne zadané.'); _performCheck(document.getElementById(id)); return false;}
      break;
/*
      case 'edit-zadostsk-telDomu':
        if (!val.match(/^[0-9]{9,10}$/)){ _alert('Telefón domov má mít 9-10 cifer bez mezer.'); _performCheck(document.getElementById(id)); return false;}
      break;
*/
      case 'edit-zadostsk-nalezitosti':
        if (!document.getElementById(id).checked) { _alert('Žiadateľ musí byť plnoletý, s pravidelným príjmom a občan SR.'); _performCheck(document.getElementById(id)); return false; }
      break;
      case 'edit-zadostsk-mobil':
        if (!val.match(/^09[0-9]{8}$/)){ _alert('Telefón mobilu má mať 10 cífer bez medzier a začína 09.'); _performCheck(document.getElementById(id)); return false;}
      break;
      case 'edit-zadostsk-email':
        if (!val.match(/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/) || val=='') { _alert('Zadajte, prosím, platný e-mail.'); _performCheck(document.getElementById(id)); return false; }
      break;
      case 'edit-zadostsk-dospely':
        if (!document.getElementById(id).checked) { _alert('Žadatel musí být starší 18 let s příjmem a bydlištěm v ČR.'); _performCheck(document.getElementById(id)); return false; }
      break;
      case 'edit-zadostsk-podminky':
        if (!document.getElementById(id).checked) { _alert('Žiadateľ musí súhlasiť s podmienkami.'); _performCheck(document.getElementById(id)); return false; }
      break;
      case 'edit-zadostsk-kdyKontaktovat':
        if (document.getElementById(id).selectedIndex==0){ _alert('Zadajte kedy Vás môžeme kontaktovať.'); _performCheck(document.getElementById(id)); return false; }
      break;

    }//switch
    
    function _performCheck(id){
      if (subm) {
       //id.focus();
      } 
      else id.value='';
    }
    function _alert(text){
      if (!subm) {
       alert(text);
      }
      else { 
        msgs+= cntmsg+'. '+text+'\n';
        cntmsg++;
      } 
    }
    
    function _testICO(x){
      try
      {
        var a = 0;
        if(x.length == 0) return true;
        if(x.length != 8) throw 1;
        var b = x.split('');
        var c = 0;
        for(var i = 0; i < 7; i++) a += (parseInt(b[i]) * (8 - i));
        a = a % 11;
        c = 11 - a;
        if(a == 1) c = 0;
        if(a == 0) c = 1;
        if(a == 10) c = 1;
        if(parseInt(b[ 7]) != c) throw(1);
      }
      catch(e)
      {
        return false;
      }
      return true;
    }
  function testRC(x, age){
    if(!age) age = 0;
    try
    {
      if (x.search(/\//i) > -1) throw 1;
      if(x.length == 0) return true;
      if(x.length < 9) throw 1;
      var year = parseInt(x.substr(0, 2), 10);
      var month = parseInt(x.substr(2, 2), 10);
      var day = parseInt( x.substr(4, 2), 10);
      var ext = parseInt(x.substr(6, 3), 10);
      if((x.length == 9) && (year < 54)) return true;
      var c = 0;
      if(x.length == 10) c = parseInt(x.substr(9, 1));
      var m = parseInt( x.substr(0, 9)) % 11;
      if(m == 10) m = 0;
      if(m != c) throw 1;
      year += (year < 54) ? 2000 : 1900;
      if((month > 70) && (year > 2003)) month -= 70;
      else if (month > 50) month -= 50;
      else if ((month > 20) && (year > 2003)) month -= 20;
      var d = new Date();
      if((year + age) > d.getFullYear()) throw 1;
      if(month == 0) throw 1;
      if(month > 12) throw 1;
      if(day == 0) throw 1;
      if(day > 31) throw 1;
    }
    catch(e)
    {
      return false;
    }
    return true;
  }  
      
    return result;
  }

