
function isNull(a){
  return (typeof(a)=="object" && !a);
}



function isUndefined(a){
  return typeof(a)=="undefined";
}



function isFunction(a){
  return typeof(a)=="function";
}



function cloneObject(a){
  for(pr in a)if(typeof(a[pr])=="object")this[pr]=new cloneObject(a[pr]);else this[pr]=a[pr];
}


function listProperties(obj){
  var lst="";
  for(var prop in obj)if(typeof obj[prop]!="function")lst+=prop+": "+obj[prop]+"\n";
  return lst;
}


Object.prototype.listProperties=function(){
  return listProperties(this);
}


function listMethods(obj,full){
  var lst="";
  for(var prop in obj)if(typeof obj[prop]=="function")lst+=prop+": "+obj[prop]+"\n";
  if(full)return lst;
  var lst2="";
  var fceRE=browser.isIE?/(.*): function(\([^\{]+)\{/g:/(.*):\s+\ *function\s*(.*)\{/g;
  while(result=fceRE.exec(lst)){
    lst2+=result[1]+result[2]+"\n";
  }
  return lst2;
}


Object.prototype.listMethods=function(full){
  return listMethods(this,full);
}




function trim(inpstr){
  return inpstr.replace(/^\s*(\S*(\s+\S+)*)\s*$/,"$1");
}



String.prototype.trim=function(){
  return trim(this);
}


function isMail(inpstr){
  return /^[_a-zA-Z0-9\.\-]+@[_a-zA-Z0-9\.\-]+\.[a-zA-Z]{2,4}$/.test(inpstr);
}



String.prototype.isMail=function(){
  return isMail(this);
}



function isISOdate(inpstr){
  return /^[0-9]{4}\-[0-9]{2}\-[0-9]{2}$/.test(inpstr);
}



function isCzechDate(inpstr){
  return /^([0-9]{1,2}\.){2}[0-9]{4}$/.test(inpstr);
}



function isPosInt(inpstr){
return /^[0-9]+$/.test(inpstr);
}



function is9numbers(inpstr){
return /^[0-9]{9}$/.test(inpstr.replace(/\ /g,""));
}



function czech2ISOdate(inpstr){
  return inpstr.replace(/^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{4})$/,"$3-$2-$1");
}



function ISO2czechDate(inpstr){
return inpstr.replace(/^([0-9]{4})\-([0-9]{2})\-([0-9]{2})$/,"$3.$2.$1");
}



function getElementsByClassName(parEl,clsName,tagName){
  if(typeof(parEl)=="string")parEl=getEl(parEl);
  if(isUndefined(tagName))tagName="*";
  var outp=new Array();
  var els=parEl.getElementsByTagName(tagName);
  for(var i=0;i<els.length;i++){
    if(new RegExp("\ *"+clsName+"\ *","gi").test(els[i].className))outp[outp.length]=els[i];
  }
  return outp;
}






var lang=document.getElementsByTagName("html")[0].lang?document.getElementsByTagName("html")[0].lang:"cs";




var browser=new Object();

browser.isIE=(navigator.appName=="Microsoft Internet Explorer" && navigator.userAgent.indexOf("Opera")<0)?true:false;
browser.isOpera=navigator.userAgent.indexOf("Opera")>0?true:false;
browser.isMozilla=navigator.product=="Gecko"?true:false;

browser.getIEversion=function(){
  if(!browser.isIE)return 0; else {
    var ver=navigator.appVersion;
    ver=ver.substring(ver.indexOf("MSIE")+4);
    return ver.substring(0,ver.indexOf(";"));
  }
}


browser.toString=function(){
  return listProperties(navigator);
}







function getEl(elid){
  return document.getElementById(elid);
}



function getViewportHeight(){
  if(window.innerHeight)return parseInt(window.innerHeight);
  else if(document.documentElement && document.documentElement.clientHeight)return parseInt(document.documentElement.clientHeight);
  else if(document.body && document.body.clientHeight)return parseInt(document.body.clientHeight);
}



function getViewportWidth(){
  if(window.innerWidth)return parseInt(window.innerWidth);
  else if(document.documentElement && document.documentElement.clientWidth)return parseInt(document.documentElement.clientWidth);
  else if(document.body && document.body.clientWidth)return parseInt(document.body.clientWidth);
}



function getElementHeight(el){
  if(typeof(el)=="string")el=getEl(el);
  if(browser.isIE)return parseInt(el.offsetHeight);
  else return parseInt(document.defaultView.getComputedStyle(el,"").getPropertyValue("height"));
}



function getElementWidth(el){
  if(typeof(el)=="string")el=getEl(el);
  if(browser.isIE)return parseInt(el.offsetWidth);
  else return parseInt(document.defaultView.getComputedStyle(el,"").getPropertyValue("width"));
}



function findPosX(el){
 if(typeof(el)=="string")el=getEl(el);
  var curleft=0;
  if(el.offsetParent){
    while(el.offsetParent){
      curleft+=el.offsetLeft;
      el=el.offsetParent;
    }
  }else if(el.x)curleft+=el.x;
  return parseInt(curleft);
}



function findPosY(el){
 if(typeof(el)=="string")el=getEl(el);
  var curtop=0;
  if(el.offsetParent){
    while(el.offsetParent){
      curtop+=el.offsetTop
      el=el.offsetParent;
    }
  }else if(el.y)curtop+=el.y;
  return parseInt(curtop);
}



function clipEl(el,l,t,r,b){
  if(typeof(el)=="string")el=getEl(el);
  el.style.clip="rect("+t+"px,"+(getW(elid)-r)+"px,"+(getH(elid)-b)+"px,"+l+"px)";
}



function setDN(el){
  if(typeof(el)=="string")el=getEl(el);
  el.style.display="none";
}



function setDB(el){
  if(typeof(el)=="string")el=getEl(el);
  el.style.display="block";
}



function setDI(el){
  if(typeof(el)=="string")el=getEl(el);
  el.style.display="inline";
}



function setVH(el){
  if(typeof(el)=="string")el=getEl(el);
  el.style.visibility="hidden";
}



function setVV(el){
  if(typeof(el)=="string")el=getEl(el);
  el.style.visibility="visible";
}



function setTrDB(el){
  if(typeof(el)=="string")el=getEl(el);
  el.style.display=browser.isIE?"block":"table-row";
}



function swapDisplay(el){
  if(typeof(el)=="string")el=getEl(el);
  el.style.display=el.style.display=="none"?"block":"none";
}



function killTeckos(){
  window.focus();
}



function picWin(url,wi,he,title,winParams,closeTitle){

  wwi=wi;
  whe=he;
  if(wi>760)
  {
	  wwi=800;
	  wwi+=16;
	  winParams = "scrollbars=yes"
  }
  if(he>650)
  {
	  whe=650;
	  wwi+=16;
	  winParams = "scrollbars=yes"
  }

  var wL = (screen.width-wwi) / 2;
  var wT = (screen.height-whe) / 2;

  var win=window.open("","","width="+wwi+",height="+whe+",left="+wL+",top="+wT+(isUndefined(winParams)?"":(","+winParams)));
  if(typeof(win)!="object")return true;

  var cls=""
  var titl="";
  if(!isUndefined(closeTitle)){
    cls=closeTitle;
  }else{
    cls="Kliknutím zavřete okno";
  }
  if(!isUndefined(title))titl=title;

  var html='<html><head><title>'+titl+'</title><meta http-equiv="content-type" content="text/html; charset=iso-8859-2"></head><body style="margin:0"><img src="'+url+'" style="cursor:pointer;cursor:hand;display:block;" width="'+wi+'" height="'+he+'" onclick="window.close()" alt="" title="'+cls+'"></body></html>';

  win.document.open();
  win.document.write(html);
  win.document.close();
  win.focus();

  return false;
}



function FormValidator(el,mode,errClass){
  var mailRE=/^[_a-zA-Z0-9\.\-]+@[_a-zA-Z0-9\.\-]+\.[a-zA-Z]{2,4}$/;
  var iso_dateRE=/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/;
  var czech_dateRE=/^([0-9]{1,2}\ *\.){2}\ *[0-9]{4}$/;
  var phoneRE=/^(\ *[0-9]\ *){9}$/;
  var intRE=/^[0-9]+$/;
  var zipRE=/^[1-7][0-9]{2}\s*[0-9]{2}$/;

  this.mode=isUndefined(mode)?1:mode;
  if(this.mode==1)this.errClass=isUndefined(errClass)?"error":errClass;

  if(typeof(el)=="string")el=getEl(el);
  this.inps=new Array();

  if(isFunction(el.onsubmit))el.originalOnsubmit=el.onsubmit;

  this.labels=new Array();
    var labelEls=el.getElementsByTagName("label");
    for(var i=0;i<labelEls.length;i++){
      if(!isUndefined(labelEls[i].htmlFor) && labelEls[i].htmlFor!="")this.labels[labelEls[i].htmlFor]=labelEls[i].firstChild.data;
    }

  el.checkform=this;



  el.onsubmit=function(){

    if(!isUndefined(this.originalOnsubmit))this.originalOnsubmit();

    var emptys=new Array();
    var invalids=new Array();
	var usermessages=new Array();

    var imess="Následující poloľky mají chybný formát:";
    var emess="Následující poloľky nebyly vyplněny:";

    if(lang=="sk"){
      var imess="Následujúce poloľky majú chybný formát:";
      var emess="Následujúce poloľky neboly vyplneny:";
    }

    if(lang=="en"){
      var imess="The following items have invalid format:";
      var emess="The following items are required:";
    }



    var inps=this.checkform.inps;

    var modeEnabled=function(mode,modearray){
      for(var i=0;i<modearray.length;i++){
        if(modearray[i]==mode)return true;
      }
      return false;
    }


    var alrt="";


    for(var i=0;i<inps.length;i++){

      if(isUndefined(inps[i][4]) || eval(inps[i][4])){

        if(typeof(inps[i][0])=="string")inps[i][0]=getEl(inps[i][0]);
        var el=inps[i][0];
        var mode=inps[i][1].toLowerCase().replace(/\ /gi,"");

        var modesdef=["require","validate","user"];

        var modes=mode.split("&");

        for(var j=0;j<modesdef.length;j++)eval("var mode_"+modesdef[j]+"="+(modeEnabled(modesdef[j],modes)?"true":"false"));

        var type=inps[i][2];
        if(typeof type=="string" && type.trim()!="")var typeRE=eval(type+"RE");else var typeRE=type;

        var label="";
        if(!isUndefined(inps[i][3]) && !isNull(inps[i][3]))label=inps[i][3]; else if(!isUndefined(this.checkform.labels[el.id]))label=this.checkform.labels[el.id];




        if(mode_require){
          if(el.value.trim()==""){
            emptys[emptys.length]=label;
            if(el.type.toLowerCase()=="text"||el.type.toLowerCase()=="password"||el.tagName.toLowerCase()=="textarea")el.className+=" "+el.form.checkform.errClass;
            if(isFunction(el.onchange))el.originalOnchange=el.onchange;
              var nF=new Function('if(isFunction(this.originalOnchange) && isUndefined(this.originalOnchange.chfempty))this.originalOnchange();if(this.value.trim()!="")this.className=this.className.replace(/\ *'+el.form.checkform.errClass+'\ */gi,"");else if(this.className.indexOf("error")==-1)this.className+="'+el.form.checkform.errClass+'";');
              nF.chfempty=true;
              el.onchange=nF;

          }
        }

		if(mode_user){
			if(eval(inps[i][5])) {
				usermessages.push(inps[i][6]);
				if(el.type.toLowerCase()=="text"||el.type.toLowerCase()=="password"||el.tagName.toLowerCase()=="textarea")el.className+=" "+el.form.checkform.errClass;
				if(isFunction(el.onchange))el.originalOnchange=el.onchange;
				var nF=new Function('if(isFunction(this.originalOnchange) && isUndefined(this.originalOnchange.chfuser))this.originalOnchange();if('+inps[i][5]+'){if(this.className.indexOf("error")==-1)this.className=this.className+" '+el.form.checkform.errClass+'";}else this.className=this.className.replace(/\ *'+el.form.checkform.errClass+'\ */gi,"");');
				nF.chfuser=true;
				el.onchange=nF;
			}
        }


        if(mode_validate){
          if(el.value.trim()!="" && !typeRE.test(el.value)){
            invalids[invalids.length]=label;
             if(this.checkform.mode==0){
              el.focus();
              return false;
            }

            if(el.type.toLowerCase()=="text"||el.type.toLowerCase()=="password"||el.tagName.toLowerCase()=="textarea")el.className+=" "+el.form.checkform.errClass;
            if(isFunction(el.onchange))el.originalOnchange=el.onchange;
              var nF=new Function('if(isFunction(this.originalOnchange) && isUndefined(this.originalOnchange.chfinvalid))this.originalOnchange();if(this.value.trim()!="" && '+typeRE+'.test(this.value))this.className=this.className.replace(/\ *'+el.form.checkform.errClass+'\ */gi,"");');
              nF.chfinvalid=true;
              el.onchange=nF;

          }
        }


      }
    }



    if(emptys.length>0 || invalids.length>0 || usermessages.length>0){
      if(emptys.length>0){
        alrt+=emess+"\n\n";
        for(var i=0;i<emptys.length;i++)alrt+=emptys[i]+"\n";
      }

      if(invalids.length>0){
        if(emptys.length>0)alrt+="\n";
        alrt+=imess+"\n\n";
        for(var i=0;i<invalids.length;i++)alrt+=invalids[i]+"\n";
      }

	  if(usermessages.length>0){
        if(emptys.length>0||invalids.length>0)alrt+="\n";
        for(var i=0;i<usermessages.length;i++)alrt+=usermessages[i]+"\n";
      }

      alert(alrt);
      return false;
    }

  }


}

FormValidator.prototype.registerInput=function(){
  this.inps[this.inps.length]=arguments;
}


var flash=function(){
	var objs=document.getElementsByTagName("object");
	var objl=objs.length;
	for(var i=0;i<objl;i++){
		var obj=objs[i];
		var parent=obj.parentNode;
		var html=obj.outerHTML;
		html=html.substring(0,html.indexOf("</"));
		var params=parent.getElementsByTagName("param");
		var parl=params.length;
		for(var j=0;j<parl;j++)html+=params[j].outerHTML;
		html+="</object>";
		obj.outerHTML=html;
		var nobjs=parent.getElementsByTagName("object");
		setDB(nobjs[0]);
	}
}


// open anchor in new window
function targetBlank(e){
	if(browser.isIE)el=event.srcElement; else el=e.target;
	while(el.tagName.toLowerCase()!="a")el=el.parentNode;
	var hrf=el.href;
	var newwin=window.open(hrf);
	return typeof(newwin)=="object"?false:true;
}

// select anchors with class=targetblank
function addTB(){
	var lnks=document.getElementsByTagName("a");
	for(var i=0;i<lnks.length;i++){
		if(/\ ?targetblank\ ?/.test(lnks[i].className)){
			lnks[i].onclick=targetBlank;
			(lnks[i].title=="")?lnks[i].title="Adresa "+lnks[i].href+" bude otevřena v novém okně":lnks[i].title;
		}
	}
}

//alert(FormValidator)

function Cookie(name,expires){
  this.name=name;
  this.expires=expires;
}


Cookie.prototype.getValue=function(name,default_value){
  var strCookie=document.cookie.split("; ");
  for(var i=0;i<strCookie.length;i++){
    var strPar=strCookie[i].split("=");
    if(this.name+"_"+name==strPar[0])return unescape(strPar[1]);
  };
  return default_value;
}


Cookie.prototype.setValue=function(name,value,uexpires){
  var date=new Date();
  date.setTime(date.getTime()+((uexpires?uexpires:this.expires)*24*60*60*1000));
  var expires="; expires="+date.toGMTString();
  document.cookie=this.name+"_"+name+"="+value+expires+"; path=/";
  return value;
}


Cookie.prototype.destroy=function(name){
  if(name){
    this.setValue(name,"",-1);
  }else{
    var strCookie=document.cookie.split("; ");
    for(var i=0;i<strCookie.length;i++){
      var strPar=strCookie[i].split("=");
      if(strPar[0].substring(0,this.name.length+1)==this.name+"_")this.setValue(strPar[0].substring(this.name.length+1),"",-1);
    }
  }
}