bV  = parseInt(navigator.appVersion)
bNS = navigator.appName=="Netscape"
bIE = navigator.appName=="Microsoft Internet Explorer"

function isFunction(a) {
    return typeof a == 'function';
}
function isNull(a) {
    return typeof a == 'object' && !a;
}
function isNumber(a) {
    return typeof a == 'number' && isFinite(a);
}
function isObject(a) {
    return (a && typeof a == 'object') || isFunction(a);
}
function isString(a) {
    return typeof a == 'string';
}
function isUndefined(a) {
    return typeof a == 'undefined';
} 

    function SetCSS(title) {
       var i, a, main;
       for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
           if((a.getAttribute("rel").indexOf("style") != -1)&&(a.getAttribute("title"))){
               a.disabled = true;//vsechno implicitne vypinam
               if(a.getAttribute("title") == title)//pozadovany styl?
                    a.disabled = false; //opet zapnu
           }
       }
       newCookie('cssfile',title,24*7);
    }

    function newCookie(name,val,hours) {
       var date = new Date();
       date.setTime(date.getTime()+(hours*60*60*1000));
       var expires = "; expires="+date.toGMTString();
       document.cookie = name+"="+val+expires+"; path=/";       
    }
    
    function readCookie(name) {
       var nameEQ = name + "=";
       var ca = document.cookie.split(';');
       for(var i=0;i < ca.length;i++) {
           var c = ca[i];
           while (c.charAt(0)==' ') c = c.substring(1,c.length);
           if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
       }
       return null;
    }
    
    /********************/
        
    /*vratit pole z cookiny aname*/
    function CookieArrayGet(aname){
      var out = new Array();
      var s=readCookie(aname);
      if (s!=null){
		var x=s.split('^'); 
		for(var i=0; i<x.length; i++){
			y=x[i].split('~');
			out[y[0]]=y[1];
		}
	  }
      return out;
    }
    
    function CookieArraySet(aname,a){
      var s = '';
      for(var id in a){
        if (s!='') s=s+'^';
        s=s+id+'~'+a[id];
      }
      newCookie(aname,s,24*7*12);
    }
    
    /* cookiena aname obsahuje pole, ve ktere nastavit [x]=y */
    function CookieArrayStore(aname,Aid,Aval){
      if (Aid==null) return;
      var a=CookieArrayGet(aname);
	  a[Aid]=Aval;
	  CookieArraySet(aname,a);
    }
    
    /* z cookie pole precist hodnotu x a vratit*/
    function CookieArrayRead(aname,Aid){
      var a=CookieArrayGet(aname);
      for(var id in a)
		if (id==Aid)
		  return a[id];
    }


function parseURL(url){
	var i, pos, argname, value, queryString, pairs, out;
	queryString = url.substring(url.indexOf('?')+1);	
  pairs = queryString.split("&");
  out=new Object();
  for (i = 0; i < pairs.length; i++){
   pos = pairs[i].indexOf('=');
   if (pos == -1)
     continue;
   argname = pairs[i].substring(0,pos);
   value = pairs[i].substring(pos+1);
   out[argname]=value;
  }
  return out;
}

//decode pro RFC1738
function decodeURL(url){
  return unescape(url).replace(/&amp;/g,'&');
}

function getId(id){
    if (isObject(id)) return id;
    return document.getElementById(id);
}

function reloadnow(){
  var scrTop = document.body.scrollTop;//pozice scrollu
  var a=window.location.href;//
  var ind=a.lastIndexOf('&scrollto');//hledam, jestli uz parametr existuje
  if (ind>0)//jestli jo
    a=a.slice(0,ind);//tak ho vyseknu
  window.location.href=a+'&scrollto='+scrTop;
}

function pageLoaded(){
  var a=window.location.href;//pozice
  var ind=a.lastIndexOf('&scrollto');//najdu parametr
  var scrTop=a.slice(ind+10);//zjistim hodnotu (tenhle je vzdy posledni)
  if ( scrTop > 40)
    window.scrollTo(0,scrTop);
}

function add2basket(pid){
  p=document.getElementById('hm_'+pid);
  window.location.href='?page=basket&buypid='+pid+'&count='+p.value;
}

function SetVisibility(objid, boolstate){
  if (boolstate){
    s='visible';
  }else{
    s='hidden';
  }
  if (obj=getId(objid)) obj.style.visibility=s;
}
function GetVisibility(objid){
	if (!isObject(objid))
		objid=getId(objid);
	if (!objid) return false;
	if (objid.style.visibility=='hidden')	return false;
	return true;
}

function SetDisplaying(objid, boolstate){
  if (boolstate){
    s='';
  }else{
    s='none';
  }
  if (isObject(objid))
		objid.style.display=s;
  else
    if (obj=getId(objid)) obj.style.display=s;  
}

function GetDisplaying(objid){
  if (!isObject(objid))
		objid=getId(objid);
  if (objid)
    s=objid.style.display;
  else return false;
  //if (s=='none')
	if (s.indexOf('none')>=0)
      return false;  
  return true;
}

function ToogleDisplaying(objid){
  SetDisplaying(objid,!GetDisplaying(objid));
}

function ToogleVisibility(objid){
  SetVisibility(objid,!GetVisibility(objid));
}

function SetClass(objid,cl){
	if (isString(objid))
		objid=getId(objid);
  if (objid && objid.className!=cl)
    objid.className=cl;
}

function AddClass(obj,cl){
	if (isString(obj)) obj=getId(obj);
	if(!obj) return;
	var classes=parseClasses(obj.className);
	var outClass='';
	for(var i in classes){
		if(classes[i]!=cl) outClass=outClass+' '+classes[i];
	}
	obj.className=outClass+' '+cl;
}

function RemoveClass(obj,cl){
	if (isString(obj)) obj=getId(obj);
	if(!obj) return;
	var classes=parseClasses(obj.className);
	var outClass='';
	for(var i in classes){
		if(classes[i]!=cl) outClass=outClass+' '+classes[i];
	}
	obj.className=outClass+' '+cl;
}



var actionsrc="";//vystavuji globalne, aby si ji selektory mohli snadno precist

function popupaction(actsrc){
  if (actsrc.lastIndexOf('javascript:')==0){//je to javascript
      eval(actsrc.slice(11));
  }else
    window.location.href="../index.php"+actsrc;
}

function CheckAll(checked){
    var col = document.getElementsByTagName("INPUT");
    for (var i=0;i<col.length;i++) {
  col[i].checked= checked;
    }
}
/*

Ways of calling the function now are:
To get all a elements in the document with a info-links class. 
<CODE>getElementsByClassName(document, "a", "info-links");</CODE> 
To get all div elements within the element named container, with a col and a left class. 
<CODE>getElementsByClassName(document.getElementById("container"), "div",["col", "left"]); </CODE>
*/

function getAllChildren(e) {
  // Returns all children of element. Workaround required for IE5/Windows. Ugh.
  return e.all ? e.all : e.getElementsByTagName('*');
} 

function getElementsByClassName(oElm, strTagName, oClassNames){
    if (oElm==null) oElm=document.body;

    var arrElements = (strTagName == "*" )? getAllChildren(oElm) : 
					  oElm.getElementsByTagName(strTagName);

    var arrReturnElements = new Array();
    var arrRegExpClassNames = new Array();
    if(typeof oClassNames == "object"){
        for(var i=0; i<oClassNames.length; i++){
            arrRegExpClassNames.push(new RegExp("(^|\\s)" + 
            oClassNames[i].replace(/\-/g, "\\-") + "(\\s|$)"));
        }
    }
    else{
        arrRegExpClassNames.push(new RegExp("(^|\\s)" + 
        oClassNames.replace(/\-/g, "\\-") + "(\\s|$)"));
    }
    var oElement;
    var bMatchesAll;
    for(var j=0; j<arrElements.length; j++){
        oElement = arrElements[j];
        bMatchesAll = true;
        for(var k=0; k<arrRegExpClassNames.length; k++){
            if(!arrRegExpClassNames[k].test(oElement.className)){
                bMatchesAll = false;
                break;                      
            }
        }
        if(bMatchesAll)
            arrReturnElements.push(oElement);
		
    }
    return (arrReturnElements)
}

function getElementByClassName(oElm, strTagName, oClassNames){
  arr=getElementsByClassName(oElm, strTagName, oClassNames);
  
  return arr.length==0 ? null : arr[0];
}

function parseClasses(oClassNames){
    return oClassNames.split(' ');
}

function parseClassesContain(oClassNames,testedclass){
	var a = parseClasses(oClassNames);
	for(var i=0; i<a.length; i++){
		if (a[i]==testedclass)
			return true;
	}
	return false;
}

function Smaller(a,b){
  return a<b?a:b;
}
function Bigger(a,b){
  return a>b?a:b;
}

function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

function str2int(s){
  return parseInt(s);
}


function countLineBreaks (string) {
  var re = /\r\n|\r|\n/g;
  var n = 0;
  while (re.exec(string))
    n++;
  return n;
}

function DynTextArea_SetAreas(parent){
  elements=getElementsByClassName(parent,'TEXTAREA','');
  for(i=0; i < elements.length;i++){
    elements[i].onkeyup=new Function('e',"DynTextArea_SetMe(this);");
    DynTextArea_SetMe(elements[i]);
  }
}

function DynTextArea_SetMe(obj) {
  var Min=2, Max=20, LineAproxHeight=20;
  if (document.all) {//IE simple reseni

    while (((obj.scrollHeight > obj.clientHeight)||(obj.rows<Min))&&(obj.rows<Max))//natahovat
      obj.rows++;
    while (((obj.scrollHeight+LineAproxHeight < obj.clientHeight)||(obj.rows>Max))&&(obj.rows>Min))//a i zkracovat
      obj.rows--;
    //obj.scrollTop = 0;
  }
  else if (obj.rows) {
    obj.rows=7;
    /* tohle je trapny reseni, takze v mozile natvrdo
    var lineBreaks = countLineBreaks(textarea.value);
    var rows = parseInt(textarea.rows);
    var wrap = textarea.getAttribute('wrap');
    if (lineBreaks > rows)
      textarea.rows = ++rows;
    else if (wrap.toLowerCase() == 'soft' || wrap.toLowerCase() == 'hard') {
      while (textarea.rows * textarea.cols <= textarea.value.length) {
        textarea.rows = ++rows;
      }
    }
    */
  }
}

function GetCellRelative(tdobj,offsetrow,offsetcol){
  tdindex=MyOrderNum(tdobj);
  //activetr=activetd.parentElement;
  activetr=activetd.parentNode;
  trindex=MyOrderNum(activetr);
  if (desttr=activetr.parentNode.childNodes[trindex+offsetrow*(document.all?1:2)]){
	if (desttd=desttr.childNodes[tdindex+offsetcol]){
	  return desttd;
    }
  }
  return null;
}

/*vraci kolikaty children sveho rodice jsem*/
function MyOrderNum(obj){
  par=obj.parentNode;
  for(var i=0; i<par.childNodes.length; i++)
    if (par.childNodes[i]==obj)
      return i;
  return -1;
}


function DisableSelecting(){
	document.onselectstart=new Function ("return false");
	document.onmousedown=new Function ("return false");
}

function EnableSelecting(){
	document.onselectstart=null;
	document.onmousedown=null;
}


function explode(inputstring, separators, includeEmpties) {
	inputstring = new String(inputstring);
	separators = new String(separators);

	if(separators == "undefined") { 
		separators = " :;";
	}

	fixedExplode = new Array(1);
	currentElement = "";
	count = 0;

	for(x=0; x < inputstring.length; x++) {
		chr = inputstring.charAt(x);
		if(separators.indexOf(chr) != -1) {
			if ( ( (includeEmpties <= 0) || 
				   (includeEmpties == false) ) 
				  && (currentElement == "")) { 
			} else {
				fixedExplode[count] = currentElement;
				count++;
				currentElement = ""; 
			} 
		}else { 
			currentElement += chr; 
		}
	}

	if (( ! (includeEmpties <= 0) && (includeEmpties != false)) || (currentElement != "")) {
		fixedExplode[count] = currentElement; 
	}
	return fixedExplode;
}

/*HEX to DEC*/
var hD="0123456789ABCDEF";
function d2h(d) {
var h = hD.substr(d&15,1);
while(d>15) {d>>=4;h=hD.substr(d&15,1)+h;}
return h;
}
function h2d(h) {return parseInt(h,16);}




var HelpWindowObj,HelpWindowCall;
function ShowHelp(me,text){
	if (HelpWindowObj){//napoveda je jiz aktivni
		if (HelpWindowCall==me){//a je to ta stejna!!
			HideHelp();//skryt
			return;		//a odejit
		}
		HideHelp(); //jen skryt
	}
	
	x=findPosX(me);
	y=findPosY(me);
	w=300;
	h=200;
	//alert(x+":"+y+" - "+text);
	var obj=document.createElement("div");//hlavni objekt
	obj.id="helpwin";
	obj.className="helpwindow";
    obj.style.position="absolute";
    //obj.style.left=(x-w+10)+"px";
    //obj.style.top=y+6+"px";
    obj.style.left=(x-w+54)+"px";
    obj.style.top=y+10+"px";
    obj.onclick=HideHelp;
    document.body.appendChild(obj);
    
    var obji=document.createElement("div");
    obji.className="helpwindowIN";
    obji.onclick=HideHelp;
    obj.appendChild(obji);
    
    var objii=document.createElement("div");
    objii.className="helpwindowININ";
    objii.onclick=HideHelp;
    obji.appendChild(objii);
    
    var cb=document.createElement("div");
    cb.className="closewin";
    cb.onclick=HideHelp;
    objii.appendChild(cb);
    
    var ta=document.createElement("div");
    ta.className="text";
    ta.innerHTML=text;
    objii.appendChild(ta);
    
    HelpWindowObj=obj;
    HelpWindowCall=me;
	return false;
}
function HideHelp(){
	if (HelpWindowObj){
		document.body.removeChild(HelpWindowObj);
		HelpWindowObj=null;
		HelpWindowCall=null;
	}
}













function nozeros(input) {
		return input;
		if((input.length > 1) && (input.substr(0,1) == "0")) {
			return input.substr(1);
		} else {
			return input;
		}
	}
	function unixtimetodate(time) {
		var theDate = new Date(time*1000);
		if(theDate.toLocaleString)
			return theDate.toLocaleString();
		return theDate.toGMTString();
	}
	function datetounixtime() {
		var humDate = new Date(Date.UTC(document.date2unixtime.vyy.value, (nozeros(document.date2unixtime.vmm.value)-1),
          nozeros(document.date2unixtime.vdd.value), nozeros(document.date2unixtime.vhh.value),
          nozeros(document.date2unixtime.vmin.value), nozeros(document.date2unixtime.vsec.value)));
		document.date2unixtime.output.value = (humDate.getTime()/1000.0);
	}

function popup(URL,w,h){
	day = new Date();
	id = day.getTime();
	eval("page" + id + " = window.open(URL, '_blank', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width="+w+",height="+h+",left = 320,top = 240');");
	//eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width="+w+",height="+h+",left = 320,top = 240');");
}

function AddEvent(obj,etype,fn){
	if (!obj) obj=document;
	if(window.opera && (obj == window)) obj = document;
	
	if(document.addEventListener)   
         obj.addEventListener(etype, fn, false);
	else
         obj.attachEvent('on' + etype, fn);
}

function RemoveEvent(obj,etype,fn){
	if (!obj) obj=document;
	if(window.opera && (obj == window)) obj = document;
	
	if(document.removeEventListener)
        obj.removeEventListener(etype, fn, false);
    else
		obj.detachEvent('on' + etype, fn);
}

function SrcFromEvent(e){
	if(!e) return null;
	if (navigator.appName == "Microsoft Internet Explorer" && e.srcElement) {
      return e.srcElement;
  } else if(e.target) {  // is mozilla/netscape
      // need to crawl up the tree to get the first "real" element
      // i.e. a tag, not raw text
      var o = e.target;
      while (!o.tagName) {
          o = o.parentNode;
      }
      return o;
  }
  return e;
}

//stejna sirka floatujicich elementu:
//pro prvky volej DoSameAdd s vymyslenym stejnym id a objektem
//uzavri zavolanim DoSameGo s onym id
//vsechny prvky pridane pres Add budou mit sirku jako nejsirsi
//element pridany pres Add

  var DoSame = new Array();
  
  function DoSameAdd(id,obj){
    if (!DoSame[id])
      DoSame[id]=new Array();
    DoSame[id].push(obj);
  }
  
  function DoSameGo(id){
    var max=0;
    for(var i in DoSame[id])
      if (DoSame[id][i].offsetWidth>max)
        max=DoSame[id][i].offsetWidth;
    for(var i in DoSame[id])
      DoSame[id][i].style.width=max+"px";
  }
  
  
//BGPROCESS support

function BGPStart(caption,m1,pb1,m2,pb2,m3){
  var bgp = getId('progresswindow');
  SetDisplaying(bgp,true);
  if (!caption) caption='';
  if (!m1) m1='';
  if (!m2) m2='';
  if (!m3) m3='';
  if (!pb1) pb1=-1;
  if (!pb2) pb2=-1;
  BGPSetC(caption);
  BGPSetM1(m1);
  BGPSetM2(m2);
  BGPSetM3(m3);
  BGPSetP1(pb1);
  BGPSetP2(pb2);

  SetDisplaying("windowdisabler",true);
  getId("windowdisabler").style.width=GetPageWidth()+"px";
  getId("windowdisabler").style.height=GetPageHeight()+"px";
}

function GetPageWidth(){
    return (!document.body.scrollWidth)?document.width:document.body.scrollWidth;
}
function GetPageHeight(){
    return (!document.body.scrollHeight)?document.height:document.body.scrollHeight;
}


function BGPSetProgressBar(val,id){
    var obj = getId("progresswindow_p"+id);
    var barobj = getElementByClassName(obj, '*', 'bar');
    var textobj = getElementByClassName(obj, '*', 'text');
    if ((val<-1)||(val>100)) val=-1;
    SetDisplaying(obj,val!=-1);
    barobj.style.width=obj.offsetWidth*val/100+"px";
    textobj.innerHTML=val+"%";
}
			    
function BGPSetC(x){  getId('progresswindow_c').innerHTML=x; }

function BGPSetM1(x){  getId('progresswindow_m1').innerHTML=x; }
function BGPSetM2(x){  getId('progresswindow_m2').innerHTML=x; }
function BGPSetM3(x){  getId('progresswindow_m3').innerHTML=x; }

function BGPSetP1(x){ BGPSetProgressBar(x,1) }
function BGPSetP2(x){ BGPSetProgressBar(x,2) } 



/*************druhy adminbar, example viz watermark****************/
  
  function SASetActive(id){
    var spage = getId('spage'+id);
    var abutton = getId('ab'+id);
    
    //disable all
    i= (getId('spage0')) ? 0 : 1;//cislovani od 0 ci od 1
    
    var tmp;
    while (tmp=getId('spage'+i)){
      if (tmp!=spage){
        SetDisplaying(tmp, false);
        getId('ab'+i).className="button";
      }
      i++;
    }
    //activate 
    SetDisplaying(spage, true);
    abutton.className="button buttonActive";
    
    return false;
  }

//ziska objekt se scroll top a bottom
function getScrollXY() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [ scrOfX, scrOfY ];
}

/*************** BigImageView ******************/
/**
 * zobrazi obrazek na sedem pozadi pres celou pbrazovku
 **/ 
function BigImageView(idframe,srcframe,intext){
	var objMain=document.createElement("div");
	objMain.id = idframe;
	objMain.style.width=GetPageWidth()+'px';
	objMain.style.height=GetPageHeight()+'px';
	objMain.style.position='absolute';
	objMain.style.left='0';
	objMain.style.top='0';
	objMain.style.zIndex=1000;
	
	AddEvent(objMain,'click',BigImageViewEventClose);
	
	var objIn = document.createElement("div");
	objIn.id = idframe+'INNER';
	objIn.style.position='absolute';
	objIn.style.left='0';
	var winScroll=getScrollXY();
	objIn.style.top=winScroll[1]+'px';
	objIn.style.zIndex=1010;
	objIn.style.width=GetPageWidth()+'px';
	objIn.style.height=(GetPageHeight()-winScroll[1])+'px';
	objIn.style.backgroundImage="url('"+srcframe+"')";
	
	if(intext && isString(intext)){
		objIn.innerHTML=intext;
	}
	
	document.body.appendChild(objIn);
	
	AddEvent(objIn,'click',BigImageViewEventClose);
	
	if(document.all){
		var selects=getElementsByClassName(null,'SELECT','*');
		for(var i in selects){
			SetVisibility(selects[i],false);
		}
	}
	
	document.body.appendChild(objMain);
	return false;
}

function BigImageViewEventClose(e){
	var obj=SrcFromEvent(e);	
	if(obj){
		var obj2 = null;
		if(obj.id.indexOf('INNER')>0){
			obj2=getId(obj.id.substring(0,obj.id.indexOf('INNER')));
		}else 
			obj2=getId(obj.id+'INNER');
		obj.parentNode.removeChild(obj);
		if(obj2)
			obj2.parentNode.removeChild(obj2);
	}
	if(document.all){
		var selects=getElementsByClassName(null,'SELECT','*');
		for(var i in selects){
			SetVisibility(selects[i],true);
		}
	}
}

/**
 * Trida slouzi pro zmenu kursoru nad jakymkoliv objektem po najeti.
 * img - obrazek kursoru
 * w,h - rozmery obrazku s kursorem
 * x,y - pozice v obrazku, ktera bude na pozici mysi 
 **/ 
function CustomCursor(parent,img,w,h,x,y){
	var elThis = this;
	this.objCursor = document.createElement('div');
	this.objCursor.className='custom-cursor';
	this.objCursor.style.position='absolute';
	this.objCursor.style.zIndex='2000';
	if(document.all && document.getElementById && !window.opera){
		this.objCursor.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+img+"', sizingMethod='crop');";
	}else{
		this.objCursor.style.backgroundImage='url('+img+')';
	}
	this.objCursor.style.width=w+'px';
	this.objCursor.style.height=h+'px';
	this.objCursor.style.display='none';
	this.objCursor.style.left='0';
	this.objCursor.style.top='0';
	
	this.x = x;
	this.y = y;
	
	if(!parent) return false;
	parent.appendChild(this.objCursor);
	parent.style.position='relative';
	this.parent=parent;
	
	this.SetPos = function(x,y){
		elThis.objCursor.style.left=x-findPosX(elThis.parent)-elThis.x+'px';
		elThis.objCursor.style.top=y-findPosY(elThis.parent)-elThis.y+'px';
	}
	
	this.overObj = null;
	this.Over = function(e){
		elThis.overObj = SrcFromEvent(e);
		if(elThis.overObj.tagName.toLowerCase()!='a') 
			elThis.overObj=elThis.overObj.parentNode;
		
		
		e = e || window.event || {};
		x=e.clientX ? e.clientX+document.documentElement.scrollLeft : e.pageX;
		y=e.clientY ? e.clientY+document.documentElement.scrollTop : e.pageY;
		if ((!x)||(!y)) return;
		
		elThis.SetPos(x,y);
		
		SetDisplaying(elThis.objCursor,true);
	}
	
	this.Move = function(e){
		e = e || window.event || {};
		x=e.clientX ? e.clientX+document.documentElement.scrollLeft : e.pageX;
		y=e.clientY ? e.clientY+document.documentElement.scrollTop : e.pageY;
		if ((!x)||(!y)) return;
		
		elThis.SetPos(x,y);
	}
	
	this.Out = function(e){
		SetDisplaying(elThis.objCursor,false);
		elThis.overObj=false;				
	}
	
	this.parentClick = function(e){
		//alert(elThis.overObj);
		//if(elThis.overObj)
		//	elThis.overObj.click();
	}
	
	this.cursorClick = function(e){
		alert(elThis.overObj);
		if(elThis.overObj)
			elThis.overObj.click();
	}
	
	this.Add = function(obj){
		if(!obj) return;
		AddEvent(obj,'mouseover',this.Over);
		//AddEvent(obj,'mousemove',this.Move);
		AddEvent(obj,'mouseout',this.Out);
	}	
	AddEvent(this.objCursor,'mousemove',this.Move);
	AddEvent(this.parent,'mousemove',this.Move);		
	//AddEvent(this.parent,'click',this.parentClick);
	//AddEvent(this.objCursor,'click',this.cursorClick);
}

function findWidth (object){ 
    if (isString(object)) object=getId(object);        
    if(object.offsetWidth) return object.offsetWidth; 
    if(object.clip && object.clip.width) return object.clip.width; 
    return (null); 
}

function findHeight (object){ 
    if (isString(object)) object=getId(object);
    if(object.offsetHeight) return object.offsetHeight; 
    if(object.clip && object.clip.height) return object.clip.height;
		return (null);  
} 

function printPrice (price){
	var tcost='';
	while(price>=1){
		var cm=(price%1000);
		//alert(price+'   '+cm+' '+Math.floor(price/1000));
		price=Math.floor(price/1000);
		
		tcost=cm+(tcost=='' ? '' : ' ')+tcost;
		if(cm<100 && price>=1)						
			tcost='0'+tcost;
		if(cm<10 && price>=1)
			tcost='00'+tcost;
		//alert(tcost);
	}
	tcost=tcost+',00';
	return tcost;
}

function BGPSetURL(x){ document.location=x; }
 var scrollSpeed=32;
 var scrollSpeedOnBreak=32;
 var scrollStep=1;
 
 var scrollStart;//vlastne pocatecni strana, -1 je odsun o stranu
 var scrollbox,scrolinner,scrollover;
 var scrolltotalY,scrollY;
 var scrolltimer1;
 var scrollpaused=false;
 var scrollbreaks = new Array();
 var scrolltimer = 0;
 var scrolltimerspeed = 0;


 function SNInit(starttop,infinite){
   scrollbox=document.getElementById('scrollingnews');
   scrollinner=document.getElementById('scrollinginner');
   
   if (infinite){
     var buff=scrollinner.innerHTML;
     scrollinner.innerHTML=buff+buff;
   }
   scrollStart= starttop ? 0 : -1;
   
   scrollover=document.getElementById('scrollover');

   if ((!scrollbox)||(!scrollinner)||(!scrollover))
     return;
     
   scrollover.style.overflow='hidden';
   scrollover.style.height='1px';

   scrolltotalY=scrollover.offsetTop;
   scrollseeY=scrollbox.offsetHeight;
   scrollY=scrollseeY*scrollStart;
   if (infinite)//nekonecne -> dalsi je uz od zacatku
    scrollStart=0;

   scrollbox.onmouseover = function (){ SNSetPause(true); };
   scrollbox.onmouseout = function (){ SNSetPause(false); };

   SNSetBreaks();

   SNScroll( starttop ? 0 : -scrollseeY);
   scrollinner.style.visibility="visible";

   SNTimer1();
 }

 function SNTimer1(){
   var inbreak=false;
   if (!scrollpaused)
     inbreak = SNScroll(scrollStep);
   //var aspeed= inbreak? scrollSpeedOnBreak : scrollSpeed;
   scrolltimer1 = setTimeout("SNTimer1()",inbreak? scrollSpeedOnBreak : scrollSpeed);
/*
   if ((scrolltimer1==0)||(scrolltimerspeed != aspeed)){
     scrolltimerspeed = aspeed;
     if (scrolltimer1) clearInterval(scrolltimer1);
     scrolltimer1 = setInterval("SNTimer1()",scrolltimerspeed);
   }*/
 }

 //vsechny li v elementu=zastavky, nacpu do pole breaks
 function SNSetBreaks(){
   var lis=scrollinner.getElementsByTagName('li');
   scrollbreaks=new Array();
   for (var i = 0;i<lis.length;i++)
     if (lis[i].id!='scrollover')
       scrollbreaks[i]=lis[i].offsetTop;
 }

 //offset=prisrustek k aktualni pozici
 //zaroven se zda osetruji zastavky a pretekani
 //vraci TRUE = prijeli jsme na zastavku
 function SNScroll(offset){
   scrollY+=offset;//posunu, takze uz pracuji s novou pozici

   var inbreak=false;//vychozi je, ze nejsem na zastavce

   for (var i = 0;i<scrollbreaks.length;i++)//prolezu zastavky
     if ((scrollbreaks[i]<=scrollY)&&(scrollbreaks[i]>(scrollY-offset))){
       inbreak=true;
       scrollY=scrollbreaks[i];
     }

   if ((scrollY>scrolltotalY)||(scrollY<-scrollseeY)) //jsem mimo viditelnosti rozsah?
     scrollY=scrollseeY*scrollStart; //nastavim na zacatek-viditelna oblast
   scrollinner.style.top=(-scrollY)+'px'; //posune objekt na novou y pozici a nastavi stavovou promenou
   return inbreak;
 }

 function SNSetPause(state){
   scrollpaused=state;
 }
/**
 * Trida umi udelat manualni srollbar
 * objekt obsahuje prvky s tridami
 * 	scroll-left a scroll-right - po stisknuti se posouva obsah
 * 	scroll-content - obsah ktery ma nastavenou urcitou sirku
 * 	scroll-content-in - vnitrni obsah ktery se horizontalne posouva    
 **/ 

function ScrollerHorizontaly(parentobj,step,microStep,speed,mousemove){
	if(!isObject(parentobj)) parentobj=getId(parentobj);
	if(!parentobj) return false;
	this.parentObj = parentobj;
	var myThis = this;
	
	this.scrollLeft = getElementByClassName(this.parentObj,'*','scroll-left');
	this.scrollRight = getElementByClassName(this.parentObj,'*','scroll-right');
	this.scrollContent = getElementByClassName(this.parentObj,'*','scroll-content');
	this.scrollContentIn = getElementByClassName(this.parentObj,'*','scroll-content-in');
	
	if(
		!this.scrollContent ||
		!this.scrollContentIn
		)
		return false;
	
	step=parseInt(step);
	this.step=step>0 ? step : 40;
	microStep=parseInt(microStep);
	this.microStep=microStep>0 ? microStep : 2;
	speed=parseInt(speed);
	this.speed=speed>0 ? speed : 10;
	
	//nastavime zakladni styly objektu...
	this.scrollContent.style.position='relative';
	this.scrollContent.style.overflow="hidden";
	
	this.scrollContentIn.style.whiteSpace='nowrap';
	this.scrollContentIn.style.position='relative';
	this.scrollContentIn.style.left='0px';
	this.curPosition=0;
	this.nextPosition=0;
	
	this.contentWidth = findWidth(this.scrollContent);
	this.contentInWidth = this.scrollContent.scrollWidth ? this.scrollContent.scrollWidth :findWidth(this.scrollContentIn);	
	this.minPos=this.contentWidth-this.contentInWidth;
	this.maxPos=0;
	
	if(this.maxPos<=this.minPos){	//tak proc to sakra vubec delame, skryjeme posouvatka
		SetVisibility(this.scrollLeft,false);
		SetVisibility(this.scrollRight,false);
		return;
	}
	
	this.timeout=false;
	
	this.stepRun = function (){
		myThis.timeout=false;	
		myThis.nextPosition=parseInt(myThis.nextPosition);
		myThis.curPosition=parseInt(myThis.curPosition);
		if(myThis.nextPosition > myThis.curPosition){
			myThis.curPosition=myThis.curPosition+parseInt(myThis.microStep);			
		}else if(myThis.nextPosition < myThis.curPosition){			
			myThis.curPosition=myThis.curPosition-parseInt(myThis.microStep);
		}else
			return;
			
		//prekrocili jsme povolene hranice ?
		if(myThis.curPosition > myThis.maxPos) myThis.nextPosition=myThis.curPosition=myThis.maxPos;		
		if(myThis.curPosition < myThis.minPos) myThis.nextPosition=myThis.curPosition=myThis.minPos;
		myThis.scrollContentIn.style.left=myThis.curPosition+'px';
		myThis.timeout=setTimeout(myThis.stepRun,parseInt(myThis.speed));
	}
	
	this.plusStep = function(factor){	
		alert('plus '+factor);	
		myThis.nextPosition=parseInt(myThis.nextPosition)+(parseInt(factor)*parseInt(myThis.step));
		if(!myThis.timeout) myThis.timeout=setTimeout(myThis.stepRun,parseInt(myThis.speed));
	}
	
	this.onScrollLeft = function (e){
		myThis.plusStep(1);
	}
	
	this.onScrollRight = function (e){	
		myThis.plusStep(-1);		
	}
	
	this.onScrollMin = function (e){
		AddClass(myThis.scrollRight,'scroll-right-active');
		myThis.nextPosition=myThis.minPos;
		if(!myThis.timeout) myThis.timeout=setTimeout(myThis.stepRun,parseInt(myThis.speed));
	}
	
	this.onScrollMax = function (e){
		AddClass(myThis.scrollLeft,'scroll-left-active');
		myThis.nextPosition=myThis.maxPos;
		if(!myThis.timeout) myThis.timeout=setTimeout(myThis.stepRun,parseInt(myThis.speed));
	}
	
	this.onScrollStop = function (e){
		RemoveClass(myThis.scrollLeft,'scroll-left-active');
		RemoveClass(myThis.scrollRight,'scroll-right-active');
		myThis.nextPosition=myThis.curPosition;		
	}
	
	if(mousemove){
		if(this.scrollLeft){
			AddEvent(this.scrollLeft,'mouseover', this.onScrollMax);
			AddEvent(this.scrollLeft,'mouseout', this.onScrollStop);
		}
		if(this.scrollRight){
			AddEvent(this.scrollRight,'mouseover', this.onScrollMin);
			AddEvent(this.scrollRight,'mouseout', this.onScrollStop);
		}
	}else{
		if(this.scrollLeft) AddEvent(this.scrollLeft,'click', this.onScrollLeft);
		if(this.scrollRight) AddEvent(this.scrollRight,'click', this.onScrollRight);
	}
}
function FormCheckInit(form,ignoreHidden,interval){
	var str="FormCheckInitWork('"+form+"',"+(ignoreHidden ? 'true' : 'false')+")";
	setTimeout(str,100);
	if(interval) setInterval(str,interval);
}

function FormCheckInitWork(form,ignoreHidden){
	if (isString(form))
		form=getId(form);
	var a=form.getElementsByTagName('INPUT');
	for(var i=0; i<a.length; i++)
		if ((a[i].type=='text')||(a[i].type=='password')){
/*		    a[i].onkeyup=new Function("e","FormCheckInput(this)"); */
			FormCheckInput(a[i],false,ignoreHidden ? true : false);
		}
}

function FormCheckTest(form){
	if (isString(form))
		form=getId(form);
	
	//nejdrive podle errorwinu
	var a=getElementsByClassName(form,'*','errorwin');
	for(var i=0; i<a.length; i++)
		if (!parseClassesContain(a[i].className,'hide')){
			return false;
		}
	
	//a nove jeste podle notvalid u inputu
	a=getElementByClassName(form,'*','notvalid');
	if(a){
	 return false;
	}
	
	return true;
}

function FormCheckInput(obj,objcol,ignoreHidden){
  if (isString(objcol))
		objcol=getId(objcol);
	
	var errors=new Array();
	
	if(!ignoreHidden || (findHeight(obj)>0) ){
		if (parseClassesContain(obj.className,'cc_atleast4')){
			if (obj.value.length<4) 
				if ((!objcol)||(objcol.value.length<4)) 
					errors.push('err_short');
		}
		if (parseClassesContain(obj.className,'cc_atleast1')){
			if (obj.value.length<1){
				errors.push('err_short');
				errors.push('err_empty');
			}
		}
		if (parseClassesContain(obj.className,'cc_pass')){
			if (objcol && obj.value!=objcol.value) errors.push('err_notsame');
		}
		if (parseClassesContain(obj.className,'cc_email')){
			r=new RegExp('^\\w(\\w|-|\\.)*@(\\w|-|\\.)+\\.\\w+$');
			if (obj.value.match(r)==null) errors.push('err_notemail');
		}
		if (parseClassesContain(obj.className,'cc_phone')){
			r=new RegExp('^((\\+|00){0,1}\\d{3} {0,1}){0,1}\\d{3} {0,1}\\d{6}$');
			if (obj.value.match(r)==null) errors.push('err_notphone');
		}
		if (parseClassesContain(obj.className,'cc_phone_short')){	//bez predcisli
			r=new RegExp('^\\d{9}$');
			if (obj.value.match(r)==null) errors.push('err_notphone');
		}
		if (parseClassesContain(obj.className,'cc_postal')){
			r=new RegExp('^\\d{3} {0,1}\\d{2,3}$');
			if (obj.value.match(r)==null) errors.push('err_notpostal');
		}
		if (parseClassesContain(obj.className,'cc_login')){
			r=new RegExp('^\\w*$');
			if (obj.value.match(r)==null) errors.push('err_notvalid');
		}
	}
	
	var pcss=parseClasses(obj.className);
	if(errors.length>0){	//nastavime tridu i inputu
		var found=false;
		for(var i in pcss){
			if(pcss[i]=='notvalid'){
				found=true;
				break;
			}
		}
		if(!found){
			obj.className+=' notvalid';
			if(objcol) objcol.className+=' notvalid';			
		}		
	}else{	//odstranime tridu z inputu
		var ncss='';
		var found=false;
		for(var i in pcss){
			if(pcss[i]!='notvalid'){
				ncss+=pcss[i]+' ';
			}else
				found=true;		
		}	
		if(found){
			if(obj.className!=ncss) obj.className=ncss;
			if(objcol && objcol.className!=ncss) objcol.className=ncss;
		}	
	}

	if(obj.className.indexOf('errnode_')>=0){
		var classes=parseClasses(obj.className);
		for(var i in classes){
			var css=classes[i];
			if(css.indexOf('errnode_')>=0){
				css=css.substring(css.indexOf('errnode_')+8);
				var t=getId(css);
				showwin=false;
				for(var j=0; j<t.childNodes.length; j++){
					s=t.childNodes[j];
					if (isUndefined(s.className)) continue;
					show=false;
					for(var k=0; k<errors.length; k++)
						if (parseClassesContain(s.className,errors[k])){
							show=true;
							showwin=true;
							break;
						}
					SetVisibility(s, show );
				}
				SetClass(t, showwin ? 'errorwin' : 'errorwin hide');
				return showwin;		
				return true;
			}
		}
	}
		
	var index=MyOrderNum(obj);
	var parent=obj.parentNode;
	for(var i=index+1; i<parent.childNodes.length; i++){
		t=parent.childNodes[i];
		if (isUndefined(t.className)) continue;
		if (parseClassesContain(t.className,'errorwin'))
		{
			showwin=false;
			for(var j=0; j<t.childNodes.length; j++){
				s=t.childNodes[j];
				if (isUndefined(s.className)) continue;
				show=false;
				for(var k=0; k<errors.length; k++)
					if (parseClassesContain(s.className,errors[k])){
						show=true;
						showwin=true;
						break;
					}
				SetDisplaying(s, show );
			}
			SetClass(t, showwin ? 'errorwin' : 'errorwin hide');
			return showwin;
		}
	}
	
	return true;
}
var Swapper_dragging = 0; //onum dragovaneho, jinak 0
var Swapper_dragging_obj = null; //odkaz na node dragovaneho objektu
var Swapper_dragging_name; //jmeno skupiny, ktere se prave draguje
var Swapper_DragX, Swapper_DragY; //pozice chyceni obrazku na zacatku dragu
var px,py;

if (!document.all){
	HTMLElement.prototype.replaceNode=function(x){
		if (this.parentNode)
			this.parentNode.replaceChild(x, this)
    } 
	HTMLElement.prototype.swapNode=function(x){ 
        var y=x.cloneNode(true), z=this.cloneNode(true); 
        x.replaceNode(z); this.replaceNode(y)
    } 
}

	
function Swapper_Init(objname,first){
	elements=getElementsByClassName(getId(objname),'*','swapobject');
	niceorder=true;
	lastonum=-1;
	orderstr="";
	for(i=0; i < elements.length;i++){
		buttons=getElementByClassName(elements[i],'*','swapbuttons');
		button_left=getElementByClassName(buttons,'*','left');
		button_right=getElementByClassName(buttons,'*','right');
		button_left.style.visibility=(i==0)?'hidden':'visible';
		button_right.style.visibility=(i==elements.length-1)?'hidden':'visible';
		onum=getElementByClassName(elements[i],'*','onum').innerHTML;
		id=getElementByClassName(elements[i],'*','id').innerHTML;
		
		
			catchobj=getElementByClassName(elements[i],'*','catchobj');
			catchobj.onmousedown=new Function('e',"Swapper_DragStart('"+objname+"',"+onum+")");
			elements[i].onmouseup=new Function('e',"Swapper_DragStop('"+objname+"')");
			button_left.onmouseup=new Function('e',"Swapper_Move1('"+objname+"',"+onum+",-1)");
			button_right.onmouseup=new Function('e',"Swapper_Move1('"+objname+"',"+onum+",1)");
		
		
		if (str2int(onum)>str2int(lastonum)) lastonum=onum;
		else               niceorder=false;
		orderstr+= orderstr=="" ? id : "-"+id;
	}
	button=getElementByClassName(getId(objname),'*','swapconfirm');
	if (button)
	  button.style.visibility=niceorder?'hidden':'visible';  
	orderstate=getElementByClassName(getId(objname),'*','orderstate');
	if (orderstate)
		orderstate.value=orderstr;
}
	
//posun od onumu o +-X prvku
function Swapper_Move1(swappername,onum,direction){
	elements=getElementsByClassName(getId(swappername),'*','swapobject');
	for(i=0;i < elements.length;i++)
		if (onum==getElementByClassName(elements[i],'*','onum').innerHTML){
		  onum2=getElementByClassName(elements[i+direction],'*','onum').innerHTML;
		  Swapper_Swap_Init(swappername,onum,onum2);
		  Swapper_Swap_Obj(swappername,elements[i],elements[i+direction]);
		  Swapper_Swap_Finish(swappername,onum,onum2);
		  return;
		}
}
	
/*zahajeni dragu*/
function Swapper_DragStart(swappername,onum){
	if (Swapper_dragging!=0) return;
	
	if( document.captureEvents ) document.captureEvents(Event.MOUSEMOVE);
	document.onmousemove = Swapper_DragAndDrop_Move;
	
	DisableSelecting();
	
	Swapper_dragging=onum;
	Swapper_dragging_name=swappername;
	
	elements=getElementsByClassName(getId(swappername),'*','swapobject');
	for(i=0;i < elements.length;i++)
		if (onum==getElementByClassName(elements[i],'*','onum').innerHTML)
			Swapper_dragging_obj=elements[i];
		
	Swapper_DragX=-1;
	Swapper_DragY=-1;
	Swapper_dragging_obj.className="swapobject active";
	Swapper_elements_cache=null;
	}		      
	
/*ukonceni dragu*/
function Swapper_DragStop(swappername){
	if (Swapper_dragging==0) return;
	if (document.releaseEvents) document.releaseEvents(Event.MOUSEMOVE);
	document.onmousemove = null;
	
	EnableSelecting();
	
	Swapper_dragging_obj.style.left=0;
	Swapper_dragging_obj.style.top=0;
	Swapper_dragging_obj.className="swapobject";
	
	Swapper_dragging=0;
	Swapper_elements_cache=null;
}
	
/*posunu mysi behem dragu*/
var Swapper_elements_cache;
function Swapper_DragAndDrop_Move(e) {
	e = e || window.event || {};
	x=e.clientX ? e.clientX+document.documentElement.scrollLeft : e.pageX;
	y=e.clientY ? e.clientY+document.documentElement.scrollTop : e.pageY;
	if ((!x)||(!y)) return;
	//prvni posun:
	if (Swapper_DragX==-1){
		Swapper_dragging_obj.style.position='relative';
		Swapper_DragX=x;
		Swapper_DragY=y;
		//return
	}
	//posunuti:
	Swapper_dragging_obj.style.left=x-Swapper_DragX+"px";
	Swapper_dragging_obj.style.top=y-Swapper_DragY+"px";
	//test na unik, v IE mozne
	fx=findPosX(Swapper_dragging_obj);
	fy=findPosY(Swapper_dragging_obj);
	if ((x>fx+Swapper_dragging_obj.offsetWidth) ||(x<fx)||
		(y>fy+Swapper_dragging_obj.offsetHeight)||(y<fy)){
		Swapper_DragX=x+Swapper_dragging_obj.offsetWidth/2;
		Swapper_DragY=y+Swapper_dragging_obj.offsetHeight/2;
		Swapper_dragging_obj.style.left=x-Swapper_DragX+"px";
		Swapper_dragging_obj.style.top=y-Swapper_DragY+"px";
	}
	//prehazovani:
	if (!Swapper_elements_cache){
	  Swapper_elements_cache=getElementsByClassName(getId(Swapper_dragging_name),'*','swapobject');
	  for(i=0;i < Swapper_elements_cache.length;i++)
	    if (Swapper_dragging==getElementByClassName(Swapper_elements_cache[i],'*','onum').innerHTML){
	      Swapper_elements_cache[i]=null;
	      break;
	    }
	}
	//elements=getElementsByClassName(getId(Swapper_dragging_name),'*','swapobject');
	for(i=0;i < Swapper_elements_cache.length;i++)
		//if (Swapper_dragging!=getElementByClassName(elements[i],'*','onum').innerHTML){
	  if (Swapper_elements_cache[i]!=null){
		el=elements[i];
		AS=Swapper_dragging_obj.offsetHeight*Swapper_dragging_obj.offsetWidth;
		TS=el.offsetHeight*el.offsetWidth;
		a=Smaller(Swapper_dragging_obj.offsetLeft, el.offsetLeft );
		b=Smaller(Swapper_dragging_obj.offsetTop,  el.offsetTop  );
		c=Bigger(Swapper_dragging_obj.offsetWidth+Swapper_dragging_obj.offsetLeft, el.offsetWidth+el.offsetLeft);
		d=Bigger(Swapper_dragging_obj.offsetHeight+Swapper_dragging_obj.offsetTop, el.offsetHeight+el.offsetTop);
		CS=(c-a)*(d-b);
		P=(AS+TS-CS)/(Bigger(AS,TS));
		if (P>0.5){
		    Swapper_Move(Swapper_dragging_name,Swapper_dragging,getElementByClassName(elements[i],'*','onum').innerHTML);
		    return;
		}
	}
}

//posun onum1 na pozici onum2, vsechny mezi nimi se posunou
function Swapper_Move(swappername,onum1,onum2){
	elements=getElementsByClassName(getId(Swapper_dragging_name),'*','swapobject');
	var i = 0,A=0,B=0;
	for(i=0;i < elements.length;i++){
		onum=getElementByClassName(elements[i],'*','onum').innerHTML;
		if (onum==onum1) A=i;
		if (onum==onum2) B=i;
	}
	//nyni presuny tak, ze A->B, mohou byt 2 ruzne smery!
	Swapper_Swap_Init(Swapper_dragging_name,onum1,onum2);

	direction=B>A ? +1 : -1;
	for(i=A; i!=B; i+=direction)
	  Swapper_Swap_Obj(Swapper_dragging_name,elements[i],elements[i+direction]);
	
	/*
	obj=getId(Swapper_dragging_name);
	if (A>B) obj.insertBefore(elements[A],elements[B]);
	  else elements[B+1] ? obj.insertBefore(elements[A],elements[B+1]) 
	                     : obj.insertBefore(elements[A]);
	*/
	Swapper_Swap_Finish(Swapper_dragging_name,onum1,onum2);
}

function Swapper_Swap_Init(swappername,onum1,onum2){
	if (Swapper_dragging!=0){
		px=findPosX(Swapper_dragging_obj);//fyzicka poloha s posunutim
		py=findPosY(Swapper_dragging_obj);
		Swapper_dragging_obj.style.left=0;
		Swapper_dragging_obj.style.top=0;
		nx=findPosX(Swapper_dragging_obj);//fyzicka poloha bez posunutim
		ny=findPosY(Swapper_dragging_obj);
		Swapper_dragging_obj.className="swapobject";
		rx=Swapper_DragX-findPosX(Swapper_dragging_obj);//kde je chycen
		ry=Swapper_DragY-findPosY(Swapper_dragging_obj);
		Swapper_elements_cache=null;
	}
}

//prohozeni 2 obrazku dle onum
function Swapper_Swap(swappername,onum1,onum2){
	elements=getElementsByClassName(getId(swappername),'*','swapobject');
	for(i=0;i < elements.length;i++){//najdu indexy
		if (onum1==getElementByClassName(elements[i],'*','onum').innerHTML)
		i1=i;
		if (onum2==getElementByClassName(elements[i],'*','onum').innerHTML)
		i2=i;
	}
	Swapper_Swap_Obj(swappername,elements[i1],elements[i2]);
}
//take prohozeni 2 objektu ale dle objketu
function Swapper_Swap_Obj(swappername,obj1,obj2){
	//obj1.swapNode(obj2); return;
	o=obj1.innerHTML;
	obj1.innerHTML=obj2.innerHTML;
	obj2.innerHTML=o;
}

function Swapper_Swap_Finish(swappername,onum1,onum2){
	if (Swapper_dragging!=0){
		elements=getElementsByClassName(getId(swappername),'*','swapobject');
		for(i=0;i < elements.length;i++)
			if (onum1==getElementByClassName(elements[i],'*','onum').innerHTML)
				Swapper_dragging_obj=elements[i];
		Swapper_DragX=findPosX(Swapper_dragging_obj)+rx;//stejny bod chyceni
		Swapper_DragY=findPosY(Swapper_dragging_obj)+ry;
		Swapper_dragging_obj.style.position='relative';
		if (px!='px')
			Swapper_dragging_obj.style.left=(px-nx)+(findPosX(Swapper_dragging_obj)-px)+"px";
		if (py!='px')
			Swapper_dragging_obj.style.top=(py-ny)+(findPosY(Swapper_dragging_obj)-py)+"px";
		Swapper_dragging_obj.className="swapobject active";		
	}
	Swapper_Init(swappername,false);
}/*

CUSTOM FORM ELEMENTS

The only thing you need to change in this file is the following
variables: checkboxHeight, radioHeight and selectWidth.

Replace the first two numbers with the height of the checkbox and
radio button. The actual height of both the checkbox and radio
images should be 4 times the height of these two variables. The
selectWidth value should be the width of your select list image.

You may need to adjust your images a bit if there is a slight
vertical movement during the different stages of the button
activation.

Visit http://ryanfait.com/ for more information.

*/

var checkboxHeight = "25";
var radioHeight = "25";
var selectWidth = "";

/* No need to change anything after this */

document.write('<style type="text/css">input.styled { display: none; } select.styled { position: relative; '+( selectWidth ? ('width: ' + selectWidth + 'px;') : '')+' filter: alpha (opacity=0); opacity: 0; z-index: 5; }</style>');

var CustomFormElements = {
	init: function() {
		var inputs = document.getElementsByTagName("input"), span = Array(), textnode, option, active;
		for(a = 0; a < inputs.length; a++) {
			if((inputs[a].type == "checkbox" || inputs[a].type == "radio") && inputs[a].className == "styled") {
				span[a] = document.createElement("span");
				span[a].className = inputs[a].type;

				if(inputs[a].checked == true) {
					if(inputs[a].type == "checkbox") {
						position = "0 -" + (checkboxHeight*2) + "px";
						span[a].style.backgroundPosition = position;
					} else {
						position = "0 -" + (radioHeight*2) + "px";
						span[a].style.backgroundPosition = position;
					}
				}
				inputs[a].parentNode.insertBefore(span[a], inputs[a]);
				span[a].onmousedown = CustomFormElements.pushed;
				span[a].onmouseup = CustomFormElements.check;
				document.onmouseup = CustomFormElements.clear;				
			}
		}
		inputs = document.getElementsByTagName("select");
		for(a = 0; a < inputs.length; a++) {
			if(inputs[a].className == "styled") {
				option = inputs[a].getElementsByTagName("option");
				active = option[0].childNodes[0].nodeValue;
				textnode = document.createTextNode(active);
				for(b = 0; b < option.length; b++) {
					if(option[b].selected == true) {
						textnode = document.createTextNode(option[b].childNodes[0].nodeValue);
					}
				}
				span[a] = document.createElement("span");
				span[a].className = "select";
				span[a].id = "select" + inputs[a].name;
				span[a].appendChild(textnode);
				inputs[a].parentNode.insertBefore(span[a], inputs[a]);
				//inputs[a].onchange = CustomFormElements.choose;
				AddEvent(inputs[a],'change',CustomFormElements.choose);				
			}
		}
	},
	pushed: function() {
		element = this.nextSibling;
		if(element.checked == true && element.type == "checkbox") {
			this.style.backgroundPosition = "0 -" + checkboxHeight*3 + "px";
		} else if(element.checked == true && element.type == "radio") {
			this.style.backgroundPosition = "0 -" + radioHeight*3 + "px";
		} else if(element.checked != true && element.type == "checkbox") {
			this.style.backgroundPosition = "0 -" + checkboxHeight + "px";
		} else {
			this.style.backgroundPosition = "0 -" + radioHeight + "px";
		}
	},
	check: function() {
		device = this.nextSibling;
		if(device.checked == true && device.type == "checkbox") {
			this.style.backgroundPosition = "0 0";
			device.checked = false;
		} else {
			if(device.type == "checkbox") {
				this.style.backgroundPosition = "0 -" + checkboxHeight*2 + "px";
			} else {
				this.style.backgroundPosition = "0 -" + radioHeight*2 + "px";
				group = this.nextSibling.name;
				inputs = document.getElementsByTagName("input");
				for(a = 0; a < inputs.length; a++) {
					if(inputs[a].name == group && inputs[a] != this.nextSibling) {
						inputs[a].previousSibling.style.backgroundPosition = "0 0";
					}
				}
			}
			device.checked = true;
		}
	},
	clear: function() {
		var clear = document.getElementsByTagName("input");
		for(var b = 0; b < clear.length; b++) {
			if(clear[b].type == "checkbox" && clear[b].checked == true) {
				clear[b].previousSibling.style.backgroundPosition = "0 -" + checkboxHeight*2 + "px";
			} else if(clear[b].type == "checkbox") {
				clear[b].previousSibling.style.backgroundPosition = "0 0";
			} else if(clear[b].type == "radio" && clear[b].checked == true) {
				clear[b].previousSibling.style.backgroundPosition = "0 -" + radioHeight*2 + "px";
			} else if(clear[b].type == "radio") {
				clear[b].previousSibling.style.backgroundPosition = "0 0";
			}
		}
	},
	choose: function(e) {
		srcObj = SrcFromEvent(e);
		option = srcObj.getElementsByTagName("option");
		for(d = 0; d < option.length; d++) {
			if(option[d].selected == true) {
				document.getElementById("select" + srcObj.name).childNodes[0].nodeValue = option[d].childNodes[0].nodeValue;
			}
		}
		if(srcObj && srcObj.form) srcObj.form.submit();
	}
}
window.onload = CustomFormElements.init;
/**
	Nasledujici soubor umoznuje vytvorit obrazkovou javascript galerii.	
**/

function imgListViw(listId,divCount){
	this.imgList = new Array();
	this.myId = listId ? listId : 'imglistview';
	this.divCount = divCount ? divCount : 3;
	this.curIndex = 0;
	this.showInProgress = false;
	this.imageWidth = 0;
	this.imageHeight = 0;
	
	var elThis = this;
	
	//funkce nastavi velikost velkeho obrazku, od te chvile se nepouziva tag img, ale tag div s nastavenym pozadim
	this.setImageSize = function(width,height){
		elThis.imageWidth = width;
		elThis.imageHeight = height;
	}
	
	this.addImage = function(imgId,srcSmall,srcBig){
		this.imgList[this.imgList.length] = new imgListItem(imgId,srcSmall,srcBig);		
	}
	
	this.showImageById = function(imgId){
		for(var i in elThis.imgList){
			if(elThis.imgList[i].imgId == imgId) return elThis.showImage(i);
		}
		return false;
	}
	
	this.showImage = function(index){
		index = parseInt(index);
		if(!elThis || !elThis.imgList || !elThis.imgList[index]) return false;
		elThis.curIndex = index;
		
		var item = elThis.imgList[index];
		
		var objMain = getId(elThis.myId);
		if(objMain)	objMain.parentNode.removeChild(objMain);
		var objMain = document.createElement('div');
		objMain.id = elThis.myId;
		objMain.style.display = '';
		objMain.style.width=GetPageWidth()+'px';
		objMain.style.height=GetPageHeight()+'px';
		objMain.style.position='absolute';
		objMain.style.left='0';
		objMain.style.top='0';
		objMain.style.zIndex=1000;		
		
		AddEvent(objMain,'click',elThis.close);
		
		var lastNode = objMain;
		var sc = parseInt(elThis.divCount);
		while(sc > 0){
			var divNode = document.createElement('div');
			divNode.id = elThis.myId+'-in-'+sc;
			AddEvent(divNode,'click',elThis.close);
			lastNode.appendChild(divNode);
			lastNode = divNode;
			
			sc = sc - 1;
		}
		
		if(!elThis.imageWidth || !elThis.imageHeight){
			var imgNode = document.createElement('img');
			imgNode.src = item.srcBig;
			imgNode.id = elThis.myId+"-image";
			AddEvent(imgNode,'click',elThis.doNothing);
			lastNode.appendChild(imgNode);
		}else{
			var imgNode = document.createElement('div');
			imgNode.style.backgroundImage = "url('"+item.srcBig+"')";
			imgNode.style.width = elThis.imageWidth+'px';
			imgNode.style.height = elThis.imageHeight+'px';
			imgNode.id = elThis.myId+"-image";
			AddEvent(imgNode,'click',elThis.doNothing);
			AddEvent(imgNode,'mouseover',elThis.overStart);
			AddEvent(imgNode,'mouseout',elThis.overStop);
			lastNode.appendChild(imgNode);
		}
		
		if(index < (elThis.imgList.length - 1)){
			var bNext = document.createElement('div');
			bNext.id = elThis.myId+'-b-next';
			AddEvent(bNext,'click',elThis.showNext);
			AddEvent(bNext,'mouseover',elThis.overStart);
			AddEvent(bNext,'mouseout',elThis.overStop);
			lastNode.appendChild(bNext);
		}
		
		if(index > 0){
			var bPrev = document.createElement('div');		
			bPrev.id = elThis.myId+'-b-prev';
			AddEvent(bPrev,'click',elThis.showPrev);
			AddEvent(bPrev,'mouseover',elThis.overStart);
			AddEvent(bPrev,'mouseout',elThis.overStop);
			lastNode.appendChild(bPrev);
		}
		
		var bClose = document.createElement('div');		
		bClose.id = elThis.myId+'-b-close';
		AddEvent(bClose,'click',elThis.close);
		AddEvent(bClose,'mouseover',elThis.overStart);
		AddEvent(bClose,'mouseout',elThis.overStop);
		lastNode.appendChild(bClose);
		
		var showingText = elThis.getShowingText(index);
		if(showingText){
			var showingNode = document.createElement('div');		
			showingNode.id = elThis.myId+'-showing';
			showingNode.innerHTML = showingText;
			AddEvent(showingNode,'mouseover',elThis.overStart);
			AddEvent(showingNode,'mouseout',elThis.overStop);
			lastNode.appendChild(showingNode);
		}
		
		document.body.appendChild(objMain);		
		
		setTimeout(elThis.progressStop,2000);
	}
	
	this.getShowingText = function(index){
		return "Obrázek <strong>"+(index+1)+"</strong> ze "+elThis.imgList.length;
	}
	
	this.progressStop = function(){
		elThis.showInProgress = false;
	}
	
	this.doNothing = function(){
		elThis.showInProgress = true;
	}
	
	this.close = function(e){
		var obj = SrcFromEvent(e);
		if(obj && obj.id==(elThis.myId+'-b-close')) elThis.showInProgress = false;
		
		if(elThis.showInProgress)	return;
		var objMain = getId(elThis.myId);
		if(objMain) objMain.parentNode.removeChild(objMain);		
	}
	
	this.showNext = function(){
		var index = parseInt(elThis.curIndex);
		if((index + 1) < elThis.imgList.length){
			elThis.showInProgress = true;
			index = index+1;
			elThis.showImage(index);
		}		
	}
	
	this.showPrev = function(){
		var index = parseInt(elThis.curIndex);
		if(index > 0){
			elThis.showInProgress = true;
			index = index - 1;
			elThis.showImage(index);
		}
	}
	
	this.overStart = function(e){
		var obj = SrcFromEvent(e);
		obj.className = "over";
	}
	
	this.overStop = function(e){
		var obj = SrcFromEvent(e);
		obj.className = "";
	}
}

function imgListItem(imgId,srcSmall,srcBig){
	this.imgId = imgId;
	this.srcSmall = srcSmall;
	this.srcBig = srcBig;	
}