/*=========================================================================================//
 *                                    B A S I C  F U N C T I O N
 *=========================================================================================//
 */


//SHOWS ELEMENT
function show_block(s) {
 $(s).className = 'ukaz';
}


//HIDES ELEMENT
function hide_block(s) {
 $(s).className = 'skry';
}


//EMAIL CHECKER
function check_email(em) {
	var email = em.value;
	return check_emailStr(email);
}

function check_emailStr(email){
	 if(email.length <= 0)
	  {
	    return false;
	  }
	    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;
}

//IS NUMERIC
function IsNumeric(sText)
{
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;
   sText = sText.replace(' ',"");
 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
}
  
//V A L I D  L E N G T H
function validLength(element, length) {
	var elm = $(element);
	var state = false;
	
	if (elm.value.length > length) state = true;
	
	if (state) {
			show_block("err-" + elm.id + "-ok");
			hide_block("err-" + elm.id + "-err");
		}
		else {
			hide_block("err-" + elm.id + "-ok");
			show_block("err-" + elm.id + "-err");
		}
	return state;
}


//V A L I D  N U M E R I C
function validNumeric(element) {
	var elm = $(element);
	var state = false;
	
	if (IsNumeric(elm.value)) state = true;
	
	if (state) {
			show_block("err-" + elm.id + "-ok");
			hide_block("err-" + elm.id + "-err");
		}
		else {
			hide_block("err-" + elm.id + "-ok");
			show_block("err-" + elm.id + "-err");
		}
	return state;
}

function validLengthAndNumeric(element, length) {
	var elm = $(element);
	var state = false;
	
    if(elm.value.length > length && IsNumeric(elm.value)) state = true;

	
	if (state) {
			show_block("err-" + elm.id + "-ok");
			hide_block("err-" + elm.id + "-err");
		}
		else {
			hide_block("err-" + elm.id + "-ok");
			show_block("err-" + elm.id + "-err");
		}
		return state;
}

function validExactlyLengthAndNumeric(element, length) {
		var elm = $(element);
		var state = false;
	
    if(elm.value.length == length && IsNumeric(elm.value)) state = true;

	
	if (state) {
			show_block("err-" + elm.id + "-ok");
			hide_block("err-" + elm.id + "-err");
		}
		else {
			hide_block("err-" + elm.id + "-ok");
			show_block("err-" + elm.id + "-err");
		}
		return state;
}

/*=========================================================================================//
 *                   C O N C R E T E   V A L I D A T I O N   F U N C T I O N S
 *=========================================================================================//
 */


/* V A L I D  K R A J */
function validKraj(element) {
	var elm = $(element);
	var state = false;
	
	//pokud je vybrano a neni vybrano poles s "- vyber kraj -"
	if (elm.selectedIndex != -1 && elm.options[elm.selectedIndex].value != 0) state = true;
	
	//zobrazeni stavove ikony
	if (state) {
			show_block("err-" + elm.id + "-ok");
			hide_block("err-" + elm.id + "-err");
		}
		else {
			hide_block("err-" + elm.id + "-ok");
			show_block("err-" + elm.id + "-err");
		}
	return state;
}


/* V A L I D   P R I C E */
function validPrice(element) {
	var elm = $(element);
	
	var state = false;
	
//pokud neni vybrano "cena dohodou", je to cele cislo a je > 0
	if (IsNumeric(elm.value) && elm.value.length > 0) state = true;
	if (elm.disabled == true) state = true;
	
	//zobrazeni stavove ikony
		if (state) {
			show_block("err-" + elm.id + "-ok");
			hide_block("err-" + elm.id + "-err");
		}
		else {
			hide_block("err-" + elm.id + "-ok");
			show_block("err-" + elm.id + "-err");
		}
		return state;
}



/* V A L I D  C U R R E N C Y */
//globalni promenna
var priceHandle = "";
function validCurrency(value, currency){	
	var val = $(value);
	var cur = $(currency);
	
	if (cur.options[cur.selectedIndex].value == 99) {
		priceHandle = val.value;
		val.value = "";
		val.disabled = true;
	}
	else {
		val.disabled = false;
		val.value = priceHandle;
	}
	
	validPrice('cena');
}


/* V A L I D  E M A I L */
function validEmail(element) {
	var elm = $(element);
	var state = false;
	
	if (check_email(elm)) state = true;
	
	if (state) {
			show_block("err-" + elm.id + "-ok");
			hide_block("err-" + elm.id + "-err");
		}
		else {
			hide_block("err-" + elm.id + "-ok");
			show_block("err-" + elm.id + "-err");
		}
		return state;
}


/* V A L I D  D I C */
function validDic(element) {
	var elm = $(element);
	var elm2 = $(element).value.replace(/cz/i,"");
	var state = false;
	
	//definice regularu
	var reg = new RegExp("^cz","i")
	
	//testovaci vyraz
    if(reg.test(elm.value) && elm2.length == 8 && IsNumeric(elm2)) state = true;

	
	if (state) {
			show_block("err-" + elm.id + "-ok");
			hide_block("err-" + elm.id + "-err");
		}
		else {
			hide_block("err-" + elm.id + "-ok");
			show_block("err-" + elm.id + "-err");
		}
		return state;
}


/* V A L I D  C H E C K E D  S U B T Y P E S  */

function validCheckedSubtypes(prefix) {
	var state = false;
	var elm = $('typ');
	
	var od = parseInt(elm.options[elm.selectedIndex].value);
	for (var i = 0; i < 20; i++) {	
		if ($(prefix + (od + i)) == null) continue;
		
		if ($(prefix + (od + i)).checked) {
			state = true;
		}
	}
	
	if (state) {
			show_block("err-" + elm.id + "-ok");
			hide_block("err-" + elm.id + "-err");
		}
		else {
			hide_block("err-" + elm.id + "-ok");
			show_block("err-" + elm.id + "-err");
		}
		return state;
}



/* V A L I D  L E N G T H  A N D  I D E N T I T Y  O F  P A S S. */
function validPassword(pass1, pass2) {
	elm = $(pass2);
	elm2 = $(pass1);
	var state = false;
	
	if (elm.value == elm2.value && elm.value !="") state = true;
		if (state) {
			show_block("err-" + elm.id + "-ok");
			hide_block("err-" + elm.id + "-err");
		}
		else {
			hide_block("err-" + elm.id + "-ok");
			show_block("err-" + elm.id + "-err");
		}
		return state;	
}

//F O R M  V A L I D
function formValidationHledat(){
	
		var result = false;
		
		var p1 = validKraj('kraje');
		var p2 = validLength('obec',1);
		var p3 = validLength('ulice',2);
		var p4 = validLength('telefon',2);
		var p5 = validPrice('cena');
		var p6 = validLength('jmeno',2);
		var p7 = validLength('prijmeni',2);
		var p8 = validEmail('email');
		var p9 = validNumeric('velikost');
		
		if (p1 && p2 && p3 && p4 && p5 && p6 && p7 && p8 && p9) result = true;
		
		return result;
}


//F O R M  V A L I D
function formValidationRK(){
		$('nazev_fakt').onkeyup = function() {
		validLength('nazev_fakt',2);
	}
	
	
		var result = false;
		
		var p1 = validLength('tel_fakt',2);
		var p2 = validLength('tel_kont',2);
		var p3 = validEmail('email_fakt');
		var p4 = validEmail('email_kont');
		var p5 = validExactlyLengthAndNumeric('ic',8);
		var p7 = validLength('login',3);
		var p8 = validPassword('heslo','heslo2');
		var p9 = validLength('heslo',3);
		var p10 = validExactlyLengthAndNumeric('psc_kont',5);
		var p11 = validLength('cp_kont',0);
		var p12 = validLength('cp_fakt',0);
		var p13 = validLength('ulice_kont',1);
		var p14 = validLength('ulice_fakt',1);
		var p15 = validLength('obec_kont',1);
		var p16 = validLength('obec_fakt',1);
		var p17 = validLength('nazev_kont',2);
		var p18 = validLength('nazev_fakt',2);
		var p19 = validExactlyLengthAndNumeric('psc_fakt',5);
		
		if (p1 && p2 && p3 && p4 && p5 && p7 && p8 && p9 && p10 && p11 && p12 && p13 && p14 && p15 && p16 && p17 && p18 && p19) result = true;
		
		return result;
}


//F O R M  V A L I D
function formValidationPoptavka(){
	
		var result = false;
		
		var p1 = validKraj('kraje');
		var p2 = validLength('obec',1);
		var p3 = validLength('ulice',2);
		var p4 = validLength('telefon',2);
		var p5 = validPrice('cena');
		var p6 = validLength('jmeno',2);
		var p7 = validLength('prijmeni',2);
		var p8 = validEmail('email');
		var p9 = validCheckedSubtypes('pt');
		
		if (p1 && p2 && p3 && p4 && p5 && p6 && p7 && p8 && p9) result = true;
		
		return result;
}


//F O R M  V A L I D   P O P T A V K Y 
function formValidationNovinky(){
	
		var result = false;
		
		var p1 = validKraj('kraje');
		var p3 = validPrice('cena_od');
		var p4 = validPrice('cena_do');
		var p5 = validEmail('email');
		var p6 = validCheckedSubtypes('pt');
		
		if (p1 && p3 && p4 && p5 && p6) result = true;
		
		return result;
}