function Registration(form) {

	var loginname = form.loginname;
  var email     = form.email;
  var passwd    = form.passwd;
  var repasswd  = form.repasswd;
  var firstname = form.firstname;
  var surname   = form.surname;
  var birthdate = form.birthdate;
  var rules     = form.rules;
  var phone     = form.phone;
  var checkemail = form.checkemail;
	var checkloginname = form.checkloginname;
	
	var psc = form.psc;
	var city = form.city;
	var street = form.street;
	var snum = form.snum;
  
  checkEmail = new RegExp("^[^.]+(\.[^.]+)*@([^.]+[.])+[a-z]{2,3}$");
  l = new RegExp("[a-z]{1,10}"); u = new RegExp("[A-Z]{1,10}"); n = new RegExp("[0-9]{1,10}");
  checkDate = new RegExp("^([1-9]|19|[12][0-8]|29(?=\.([^2]|2\.(([02468][048]|[13579][26])00|[0-9]{2}(0[48]|[2468][048]|[13579][26]))))|30(?=\.[^2])|31(?=\.([13578][02]?\.)))\.([1-9]|1[012])\.[0-9]{4}$");
  checkPhone = new RegExp("^[ 0-9\.\+\/\-]{8,}$");
  
  // kontrola emailove adresy
  email.onblur = function() {  
    if(!checkEmail.test(email.value)) {
      getError('i-email', 'Neplatný formát emailu.');
    } else {
      clearError('i-email');
      CheckRegistered(email.value, 'email');
    }
  };
	
	if(loginname.value.length < 4)
		getError('i-loginname', 'Uživatelské jméno je krátké (min. 4 znaky)');
	
  // kontrola bezpecnosti hesla
  passwd.onkeyup = function() {
  
    id      = 'i-passwd';
    lower   = l.test(passwd.value);
    upper   = u.test(passwd.value);
    numeric = n.test(passwd.value);
    strong = lower + upper + numeric;
    
    if(passwd.value.length < 4)
      getError(id, 'Heslo musí být minimálně 4 znaky'); 
    else {
      if( strong > 2 ) {
        getError(id, 'Výborné heslo'); changeBg(id, "#006600");
      } else if( strong > 1) {
        getError(id, 'Dobré heslo'); changeBg(id, "#FF6600");
      } else {
        getError(id, 'Slabé heslo'); changeBg(id, "#FF0033");
      }
    }
  }
	
	if(email.value == checkemail.value) clearError('i-email');
	if(loginname.value == checkloginname.value) clearError('i-loginname');
  
  // kontrola duplicity hesla
  repasswd.onblur = passwd.onkeypress = function() {
    if( (repasswd.value != passwd.value) && passwd.value.length > 3 && repasswd.value != '')
      getError('i-repasswd', 'Hesla se neshodují');
    else clearError('i-repasswd');
  }
  
  // kontrola jmena a prijmeni
  firstname.onblur = function() {
    if(firstname.value.length < 2)
      getError('i-name', 'Neplatné jméno');
    else clearError('i-name');
  }
  surname.onblur = function() {
    if(surname.value.length < 2)
      getError('i-surname', 'Neplatné příjmení');
    else clearError('i-surname');
  }
  
  // kontrole data narozeni
  birthdate.onblur = function() {
    if(!checkDate.test(birthdate.value))
      getError('i-date', 'Neplatný formát data');
    else clearError('i-date');
  } 
  
  // kontrole telefonniho cisla
  phone.onblur = function() {
    if(!checkPhone.test(phone.value))
      getError('i-phone', 'Neplatný formát telefonního čísla');
    else clearError('i-phone');
  }
  
  // kontrola adres
  city.onblur = psc.onblur = street.onblur = snum.onblur = function() {
    if(city.value.length < 2 || psc.value.length < 4 || street.value.length < 2 || snum.value.length < 1)
      getError('i-address', 'Neplatná adresa');
    else clearError('i-address');
  }
  
}

// login
function CheckRegistered(str, val) { 
  	getError('i-'+val, 'Ověřuji'); changeBg('i-'+val, "#060");
    var url = "/app/helper.php?action=reguser&"+val+"="+str;
    XMLHttp.open("GET",url,true);
    XMLHttp.onreadystatechange = function() { StatusCheck(val); }
    XMLHttp.send(null);
		Registration(document.regform);
}
function StatusCheck(a) { 
  if (XMLHttp.readyState == 4 && XMLHttp.status == 200) {
    if(XMLHttp.responseText == 1) {
      getError('i-'+a, 'Litujeme, obsazené'); changeBg('i-'+a, "#FF0000");
    } else {
      getError('i-'+a, 'Gratulujeme, volné'); changeBg('i-'+a, "#006600");
    }  
  }
}

function CheckPasswd(str, uid) {
  if(str.length > 0) {
    getError('i-oldpasswd', 'Ověřuji'); changeBg('i-oldpasswd', "#060");
    var url = "/app/helper.php?action=password&password="+str+"&uid="+uid;
    XMLHttp.open("GET",url,true);
    XMLHttp.onreadystatechange = function() { StatusPasswd(); }
    XMLHttp.send(null);
  } else {
    clearError('i-oldpasswd');
  }
}
function StatusPasswd() { 
  if (XMLHttp.readyState == 4 && XMLHttp.status == 200) {
    if(XMLHttp.responseText == 1) {
      getError('i-oldpasswd', 'Hesla nesouhlasí'); changeBg('i-oldpasswd', "#FF0000");
      document.regform.passwd.disabled = true;
      document.regform.repasswd.disabled = true;
    } else {
      getError('i-oldpasswd', 'Hesla souhlasí'); changeBg('i-oldpasswd', "#006600");
      document.regform.passwd.disabled = false;
      document.regform.repasswd.disabled = false;
    }
  }
}


// error function
function getError(id, text) {
  clearError(id);
  changeBg(id, "#FF0000")
	document.getElementById(id).style.display = "block";
  document.getElementById(id).innerHTML = text;
}
function clearError(id) {
  changeBg(id, 'transparent')
  document.getElementById(id).innerHTML = '';
	document.getElementById(id).style.display = "none";
}
function changeBg(id, color) {
  document.getElementById(id).style.color = color;
}
