

var isCSS, isW3C, isIE4, isNN4, isIE6CSS;

function initDHTMLAPI() {
    if (document.images) {
        isCSS = (document.body && document.body.style) ? true : false;
        isW3C = (isCSS && document.getElementById) ? true : false;
        isIE4 = (isCSS && document.all) ? true : false;
        isNN4 = (document.layers) ? true : false;
        isIE6CSS = (document.compatMode && document.compatMode.indexOf("CSS1") >= 0) ? true : false;
    }
}

function seekLayer(doc, name) {
    var theObj;
    for (var i = 0; i < doc.layers.length; i++) {
        if (doc.layers[i].name == name) {
            theObj = doc.layers[i];
            break;
        }
		
        if (doc.layers[i].document.layers.length > 0) {
            theObj = seekLayer(document.layers[i].document, name);
        }
    }
    return theObj;
}


function getRawObject(obj) {
    var theObj;
    if (typeof obj == "string") {
        if (isW3C) {
            theObj = id(obj);
        } else if (isIE4) {
            theObj = document.all(obj);
        } else if (isNN4) {
            theObj = seekLayer(document, obj);
        }
    } else {
		
        theObj = obj;
    }
    return theObj;
}


function getObject(obj) {
    var theObj = getRawObject(obj);
    if (theObj && isCSS) {
        theObj = theObj.style;
    }
    return theObj;
}


function shiftTo(obj, x, y) {
    var theObj = getObject(obj);
    if (theObj) {
        if (isCSS) {
			
            var units = (typeof theObj.left == "string") ? "px" : 0
            theObj.left = x + units;
            theObj.top = y + units;
        } else if (isNN4) {
            theObj.moveTo(x,y)
        }
    }
}


function shiftBy(obj, deltaX, deltaY) {
    var theObj = getObject(obj);
    if (theObj) {
        if (isCSS) {
			
            var units = (typeof theObj.left == "string") ? "px" : 0
            theObj.left = getObjectLeft(obj) + deltaX + units;
            theObj.top = getObjectTop(obj) + deltaY + units;
        } else if (isNN4) {
            theObj.moveBy(deltaX, deltaY);
        }
    }
}


function setZIndex(obj, zOrder) {
    var theObj = getObject(obj);
    if (theObj) {
        theObj.zIndex = zOrder;
    }
}


function setBGColor(obj, color) {
    var theObj = getObject(obj);
    if (theObj) {
        if (isNN4) {
            theObj.bgColor = color;
        } else if (isCSS) {
            theObj.backgroundColor = color;
        }
    }
}


function showObject(obj) {
    var theObj = getObject(obj);
    if (theObj) {
        theObj.visibility = "visible";
    }
}


function hideObject(obj) {
    var theObj = getObject(obj);
    if (theObj) {
        theObj.visibility = "hidden";
    }
}


function getObjectLeft(obj)  {
    var elem = getRawObject(obj);
    var result = 0;
    if (document.defaultView) {
        var style = document.defaultView;
        var cssDecl = style.getComputedStyle(elem, "");
        result = cssDecl.getPropertyValue("left");
    } else if (elem.currentStyle) {
        result = elem.currentStyle.left;
    } else if (elem.style) {
        result = elem.style.left;
    } else if (isNN4) {
        result = elem.left;
    }
    return parseInt(result);
}


function getObjectTop(obj)  {
    var elem = getRawObject(obj);
    var result = 0;
    if (document.defaultView) {
        var style = document.defaultView;
        var cssDecl = style.getComputedStyle(elem, "");
        result = cssDecl.getPropertyValue("top");
    } else if (elem.currentStyle) {
        result = elem.currentStyle.top;
    } else if (elem.style) {
        result = elem.style.top;
    } else if (isNN4) {
        result = elem.top;
    }
    return parseInt(result);
}


function getObjectWidth(obj)  {
    var elem = getRawObject(obj);
    var result = 0;
    if (elem) {
      if (elem.offsetWidth) {
          result = elem.offsetWidth;
      } else if (elem.clip && elem.clip.width) {
          result = elem.clip.width;
      } else if (elem.style && elem.style.pixelWidth) {
          result = elem.style.pixelWidth;
      }
    }
    return parseInt(result);
}


function getObjectHeight(obj)  {
    var elem = getRawObject(obj);
    var result = 0;
    if (elem) {
      if (elem.offsetHeight) {
          result = elem.offsetHeight;
      } else if (elem.clip && elem.clip.height) {
          result = elem.clip.height;
      } else if (elem.style && elem.style.pixelHeight) {
          result = elem.style.pixelHeight;
      }
    }
    return parseInt(result);
}


function getInsideWindowWidth() {
    if (window.innerWidth) {
        return window.innerWidth;
    } else if (isIE6CSS) {
		
        return document.body.parentElement.clientWidth
    } else if (document.body && document.body.clientWidth) {
        return document.body.clientWidth;
    }
    return 0;
}


function getInsideWindowHeight() {
    if (window.innerHeight) {
        return window.innerHeight;
    } else if (isIE6CSS) {
		
        return document.body.parentElement.clientHeight
    } else if (document.body && document.body.clientHeight) {
        return document.body.clientHeight;
    }
    return 0;
}


function getBorderHeight(obj)  {
    var elem = getRawObject(obj);
    var result = 0;
    if (elem) {
      if (elem.style.borderTopWidth) {
          result += parseInt( elem.style.borderTopWidth);
      }
      if (elem.style.borderBottomWidth) {
          result += parseInt( elem.style.borderBottomWidth);
      }
    }
    return parseInt(result);
}

function getBorderWidth(obj)  {
    var elem = getRawObject(obj);
    var result = 0;
    if (elem) {
      if (elem.style.borderLeftWidth) {
          result += parseInt( elem.style.borderLeftWidth);
      }
      if (elem.style.borderRightWidth) {
          result += parseInt( elem.style.borderRightWidth);
      }
    }
    return parseInt(result);
}


function getStyle( elem, name ) {
	
    if (elem.style[name])
        return elem.style[name];


    else if (elem.currentStyle)
        return elem.currentStyle[name];


    else if (document.defaultView && document.defaultView.getComputedStyle) {
		
        name = name.replace(/([A-Z])/g,"-$1");
        name = name.toLowerCase();
		
		
        var s = document.defaultView.getComputedStyle(elem,"");
        return s && s.getPropertyValue(name);


    } else
        return null;
}

function addEvent(obj, event_name, func_ref)
{
	if(obj.addEventListener && !window.opera)
	{
		obj.addEventListener(event_name, func_ref, true);
	}
	else
	{
		obj["on" + event_name] = func_ref;
	}
}


function removeEvent(obj, event_name, func_ref)
{
	if(obj.removeEventListener && !window.opera)
	{
		obj.removeEventListener(event_name, func_ref, true);
	}
	else
	{
		obj["on" + event_name] = null;
	}
}
function stopEvent(event)
{
	event = event || window.event;

	if(event.stopPropagation) event.stopPropagation();
	if(event.preventDefault) event.preventDefault();

	if(typeof event.cancelBubble != "undefined")
	{
		event.cancelBubble = true;
		event.returnValue = false;
	}

	return false;
}

function getTargetElement(event)
{
	event = event || window.event;
	return event.srcElement || event.target;
}

function setCaret(obj, l)
{
	obj.focus();

	if(obj.setSelectionRange)
	{
		obj.setSelectionRange(l, l);
	}
	else if(obj.createTextRange)
	{
		m = obj.createTextRange();
		m.moveStart('character', l);
		m.collapse();
		m.select();
	}
}

String.prototype.addslashes = function() { return this.replace(/(["\\\.\|\[\]\^\*\+\?\$\(\)])/g, '\\$1'); }

String.prototype.trim = function () { return this.replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1"); };

function curTop(obj)
{
	var toreturn = 0;
	while(obj)
	{
		toreturn += obj.offsetTop - (window.opera ? 0 : obj.scrollTop);
		obj = obj.offsetParent;
	}

	return toreturn;
}

function curLeft(obj)
{
	var toreturn = 0;
	while(obj)
	{
		toreturn += obj.offsetLeft - (window.opera ? 0 : obj.scrollLeft);
		obj = obj.offsetParent;
	}

	return toreturn;
}


function replaceHTML(obj, oImg)
{
	var el = obj.childNodes[0];
	while(el)
	{
		obj.removeChild(el);
		el = obj.childNodes[0];
	}
	obj.appendChild(oImg);
}



function getCookie( nazev, defVal)
{
  obsah=document.cookie; upravene=obsah.split(';');
  velikost=upravene.length; kusy=""; vrat="";

  for (x=0;(x<velikost && vrat=="");x++)
  {
    kusy=upravene[x].split('=');
    if (kusy[0].substring(0,1)==' ')
      kusy[0]=kusy[0].substring(1,kusy[0].length);
    if (kusy[0]==nazev) vrat=kusy[1];
  }
  if (vrat) return unescape(vrat);
  else if (defVal) return defVal;
  else return false;
}

function setCookie(nazev,hodnota,vyprsi)
{
  datum=new Date();

  if(vyprsi) {
    datum.setTime(datum.getTime()+vyprsi);
    document.cookie=nazev+"="+escape(hodnota)
     +"; expires="+datum.toGMTString(); }

    else document.cookie=nazev+"="+escape(hodnota);
}


function pageX(elem) {
    var p = 0;
	
    while ( elem.offsetParent ) {
		
        p += elem.offsetLeft;


        elem = elem.offsetParent;
    }

    return p;
}


function pageY(elem) {
    var p = 0;


    while ( elem.offsetParent ) {
		
        p += elem.offsetTop;


        elem = elem.offsetParent;
    }

    return p;
}
//-----------------------------------------------------
function info( obj)
{
  var res = "";
     for( var i = 0; i < obj.length; i++)
      if ( obj[i])  {
  res = res + 'tag='+obj[i].tagName+' id='+obj[i].id
        +' DY='+obj[i].scrollTop+' Y='+obj[i].offsetTop+' H='+obj[i].offsetHeight+' SH='+window.getComputedStyle( obj[i], null).height;
        +'\n';
        } else {
  res = res + 'undefined'+'\n';
        }
  alert( res);
}

//-----------------------------------------------------
function boolParser( attr, attributes)
{
  var attrs;
  var fnd;
  var fnd0;
  var op = "";
  var k;
  var j;

  attrs = new Array();

  if ( (attrs = attributes.split(op = "|")).length > 1) fnd = false; else 
  if ( (attrs = attributes.split(op = "&")).length > 1) fnd = true; else 
  if ( (attrs = attributes.split(op = "!")).length > 1) fnd = false; else 
  {
    for(j=0;j<attr.length;j++) {
      if ( attr[j] == attributes) {
        return true;
      }
    }
    return false;
  }
  for(k=0;k<attrs.length;k++)
  if ( attrs[k])
  {
    fnd0 = boolParser( attr, attrs[k]);
    switch ( op)
    {
    case "|": fnd = fnd || fnd0; break;
    case "&": fnd = fnd && fnd0; break;
    case "!": fnd =      ! fnd0; break;
    }
  }
  return fnd;
}

function scrollX() {
    var de = document.documentElement;

    return self.pageXOffset ||

        ( de && de.scrollLeft ) ||

        document.body.scrollLeft;
}

function scrollY() {
    var de = document.documentElement;

    return self.pageYOffset ||

        ( de && de.scrollTop ) ||

        document.body.scrollTop;
}

function windowHeight() {
    var de = document.documentElement;

    return self.innerHeight ||

        ( de && de.clientHeight ) ||

        document.body.clientHeight;
}

function windowWidth() {
	
    var de = document.documentElement;


    return self.innerWidth ||


        ( de && de.clientWidth ) ||
		
        document.body.clientWidth;
}


function getHeight( elem ) {
	
    return parseInt( getStyle( elem, "height" ) );
}


function getWidth( elem ) {
	
    return parseInt( getStyle( elem, "width" ) );
}


function setX(elem, pos) {
	
    elem.style.left = pos + "px";
}


function setY(elem, pos) {
	
    elem.style.top = pos + "px";
}

function getStyle( elem, name ) {
	
    if (elem.style[name])
        return elem.style[name];


    else if (elem.currentStyle)
        return elem.currentStyle[name];


    else if (document.defaultView && document.defaultView.getComputedStyle) {
		
        name = name.replace(/([A-Z])/g,"-$1");
        name = name.toLowerCase();


        var s = document.defaultView.getComputedStyle(elem,"");
        return s && s.getPropertyValue(name);


    } else
        return null;
}


function setOpacity( elem, level ) {
    level = parseInt( level);
	
    if ( elem && elem.filters && elem.filters.alpha)
        elem.filters.alpha.opacity = level;
		
    else
    if ( elem.style.filter)
        elem.style.filter = "alpha(opacity=" + level + ")";
		
    else
        elem.style.opacity = level / 100;
}

function hide( elem ) {
	
    var curDisplay = getStyle( elem, "display" );


    if ( curDisplay != "none" )
        elem.$oldDisplay = curDisplay;


    elem.style.display = "none";
}


function show( elem ) {
	
    elem.style.display = elem.$oldDisplay || "block";
}


function pageHeight() {
    return document.body.scrollHeight;
}


function pageWidth() {
    return document.body.scrollWidth;
}


function fadeIn( elem, to, speed ) {
	

    setOpacity( elem, 0 );


    show( elem );


    for ( var i = 0; i <= 100; i += 10 ) {
		
        (function(){
        		var opacity = i;


            setTimeout(function(){


                setOpacity( elem, ( opacity / 100 ) * to );

            }, ( i + 1 ) * speed );
        })();
    }


}

function fadeOut( elem, to, speed ) {
	

    for ( var i = 0; i < 10; i += 5 ) {
		
        (function(){
        		var opacity = i * 10;


            setTimeout(function(){


                setOpacity( elem, 100 - opacity );

                if ( opacity == 95 )
                    hide( elem );

            }, ( i * 10 + 1 ) * speed );
        })();
    }


}

function id( name ) {
    return document.getElementById( name );
}

function tag( name, root ) {
	return ( root || document ).getElementsByTagName( name );
}

function byClass(name,type) {
    var r = [];
	
    var re = new RegExp("(^|\\s)" + name + "(\\s|$)");

    var e = document.getElementsByTagName(type || "*");
    for ( var j = 0; j < e.length; j++ )
	
        if ( re.test(e[j].className) ) r.push( e[j] );


    return r;
}

function next( elem ) {
    do {
        elem = elem.nextSibling;
    } while ( elem && elem.nodeType != 1 );
    return elem;
}

function prev( elem ) {
    do {
        elem = elem.previousSibling;
    } while ( elem && elem.nodeType != 1 );
    return elem;
}


function child( elem ) {
    elem = elem.firstChild;
    while ( elem && elem.nodeType != 1 ) {
      elem = elem.nextSibling;
    }
    return elem;
}

//------------------------------------------------------------
function strtr( str, from, to) {
    var gt;
	
    gt = -1;
    while (str.indexOf(from, gt + 1) > -1) {
        var gt = str.indexOf(from, gt + 1);
        var newStr = str.substr(0, gt);
        newStr += to;
        newStr = newStr + str.substr(gt + 1, str.length);
        str = newStr;
    }
  return str;
}



