function SwitchingObjects(parameters) {
  this.startObjectIndex = "0";
  this.mainObjectId = "switchingObjects_content";
  this.linksId = "switchingObjects_links";
  this.arrowLeftId = "switchingObjects_arrowLeft";
  this.arrowRightId = "switchingObjects_arrowRight";
  var link_showAllMessages_id = ""; // link_showAll
  var mainSwitchingObjectsContainer_id = "mainSwitchingObjectsContainer";
  var mainSwitchingObjectsNavigation_id = "mainSwitchingObjectsNavigation";
  var isExpandAllMessagesWhenBeginElmIsFocused = false;
  var isSwitchingBetweenWithoutAnimationLinksWhenTab = true;
  this.objectsToSwitching = null;
  this.linksContainer = null;
  this.mainContainer = null;
  this.switchingType = "anim"; // mozny hodnoty: switch, anim
  this.mainAnimInterval = null;
  this.isAnimationActived = false;
  this.isAnimationPaused = false;
  this.lastProcessedObjectIndex = 0;
  this.max_anim_step = 10;
  this.switchingObjectsAnchor = "switchingObjectsAnchor";
  this.texts_showAll = "";
  this.texts_showOne = "";
  this.texts_showPrevious = "";
  this.texts_showNext = "";
  this.texts_showMessage = "";
  this.isStopWhenMouseOver = false;
  this.switchingWay = "vertical"; // mozny hodnoty: horizontal, vertical
  this.isShowedAll = false;
  var offsetWay = ["marginTop", "offsetTop"];
  var objectsToSwitching_width = 0;
  var isFocusUsed = false;
  var lastFocusedArrowId = "switchingObjects_arrowLeft";

  this.initObjects = function () {
    try {
      for (var i = 0; i < parameters.length; i++) {
        switch (parameters[i][0]) {
          case "default selected object index": this.startObjectIndex = parameters[i][1]; break;
          case "switching object type": this.switchingType = parameters[i][1]; break;
          case "switching objects - parent id": this.mainObjectId = parameters[i][1]; break;
          case "links to switching objects - parent id": this.linksId = parameters[i][1]; break;
          case "arrow left id": this.arrowLeftId = parameters[i][1]; break;
          case "arrow right id": this.arrowRightId = parameters[i][1]; break;
          case "link show all - id": link_showAllMessages_id = parameters[i][1]; break;
          case "main container id": mainSwitchingObjectsContainer_id = parameters[i][1]; break;
          case "main switching objects navigation - id": mainSwitchingObjectsNavigation_id = parameters[i][1]; break;
          case "stop when mouse over": this.isStopWhenMouseOver = parameters[i][1]; break;
          case "moving way": this.switchingWay = parameters[i][1]; break;
          case "texts: show all": this.texts_showAll = parameters[i][1]; break;
          case "texts: show one": this.texts_showOne = parameters[i][1]; break;
          case "max animation step": this.max_anim_step = parameters[i][1]; break;
          case "expand all messages when begin elm is focused": isExpandAllMessagesWhenBeginElmIsFocused = parameters[i][1]; break;
          case "texts: previous": this.texts_showPrevious = parameters[i][1]; break;
          case "texts: next": this.texts_showNext = parameters[i][1]; break;
          case "texts: message": this.texts_showMessage = parameters[i][1]; break;
          case "switching between links without animation when tab": isSwitchingBetweenWithoutAnimationLinksWhenTab = parameters[i][1]; break;
        }
      }
      /*
      // ODSTRANIT
      var imgs = document.getElementById("mainSwitchingObjectsContainer").getElementsByTagName("img");
      for (var i = 0; i < imgs.length; i++) {
      imgs[i].style.width = "327px";
      imgs[i].style.height = "228px";
      }
      // KONEC ODSTRANIT
      */

      this.linksContainer = document.getElementById(this.linksId);
      this.mainContainer = document.getElementById(this.mainObjectId);
      this.mainContainer.style.position = "relative";
      this.mainContainer.Metadata = new Object();
      this.mainContainer.Metadata.defaultWidth = this.mainContainer.offsetWidth;
      //this.mainContainer.style.marginTop = 0;      
      this.appendAnchorTo(mainSwitchingObjectsContainer_id, this.switchingObjectsAnchor, this.mainObjectId);
      this.objectsToSwitching = this.mainContainer.getElementsByTagName("li"); // ZISKAT VSECHNY OBJEKTY K PREPINANI
      for (var i = 0; i < this.objectsToSwitching.length; i++) {
        this.objectsToSwitching[i].Metadata = new SwitchingObject(this, this.objectsToSwitching[i], i, (this.switchingType == "switch" ? (i == this.startObjectIndex ? true : false) : true));

        // VYTVORIT OVLADACI PRVKY. JE MOZNO JAKYKOLIV MNOZSTVI. NUTNO VSAK PRVNE VYTVORIT POLE.
        this.objectsToSwitching[i].Metadata.linkToMe = new Array();
        this.objectsToSwitching[i].Metadata.linkToMe[0] = this.objectsToSwitching[i].Metadata.createLink(this.objectsToSwitching[i].Metadata.linkToMe1);
        this.objectsToSwitching[i].Metadata.linkToMe[0].setAttribute("title", this.texts_showMessage + " " + (i + 1));
        this.objectsToSwitching[i].Metadata.blurFocus(this.objectsToSwitching[i].Metadata.linkToMe[0]);
        //this.objectsToSwitching[i].Metadata.linkToMe[1] = this.objectsToSwitching[i].Metadata.createLink(this.objectsToSwitching[i].Metadata.linkToMe2);  
        //this.objectsToSwitching[i].Metadata.linkToMe[1].setAttribute("title", this.texts_showMessage + " " + (i + 1));

        // NASTAVIT FOCUS NA PRVNI ODKAZ V OBJEKTU, ABY PAK PRIPADNE DOSLO K PRECHODU NA DALSI OBJEKT
        if (this.switchingType == "anim") {
          var tmpElms = this.objectsToSwitching[i].getElementsByTagName("*");
          for (var j = 0; j < tmpElms.length; j++) {
            tmpElms[j].Metadata = new Object();
            tmpElms[j].Metadata = this.objectsToSwitching[i].Metadata;
            tmpElms[j].Metadata.instance = this.objectsToSwitching[i];
            tmpElms[j].onfocus = function (e) {
              //if (this.Metadata.isMouseDown && this.tagName.toLowerCase() == "a") { this.Metadata.isMouseDown = false; return; }
              if (this.Metadata.isMouseDown) { this.Metadata.isMouseDown = false; return; }
              this.Metadata.switchingObjects.stopBubble(e);
              this.Metadata.switchingObjects.moveObjectWhenOnFocus(this, e);
            }
            tmpElms[j].onmousedown = function (e) {
              this.Metadata.isMouseDown = true;
              this.Metadata.switchingObjects.stopBubble(e);
              if (this.tagName.toLowerCase() == "a") { window.location = this.getAttribute("href"); }
            }
          }
        }
      }

      if (this.switchingType == "switch") {
        this.hideAllObjects();
        this.showObject(this.objectsToSwitching[this.startObjectIndex].Metadata, this.objectsToSwitching[this.startObjectIndex].Metadata.contentObject);
      }
      else if (this.switchingType == "anim") {
        this.showObject(this.objectsToSwitching[0].Metadata, this.objectsToSwitching[0].Metadata.contentObject);
      }

      if (document.getElementById(this.arrowLeftId)) {
        this.arrowLeft = document.getElementById(this.arrowLeftId);
        this.arrowLeft.Metadata = new ArrowObject(this, this.arrowLeft, 0, "moveToPrevious", true);
        this.arrowLeft.Metadata.appendOnclickHandler(this.arrowLeft);
        this.arrowLeft.Metadata.appendOnfocusHandler(this.arrowLeft);
        this.arrowLeft.setAttribute("title", this.texts_showPrevious + " " + this.texts_showMessage);
      }
      if (document.getElementById(this.arrowRightId)) {
        this.arrowRight = document.getElementById(this.arrowRightId);
        this.arrowRight.Metadata = new ArrowObject(this, this.arrowRight, 1, "moveToNext", true);
        this.arrowRight.Metadata.appendOnclickHandler(this.arrowRight);
        this.arrowRight.Metadata.appendOnfocusHandler(this.arrowRight);
        this.arrowRight.setAttribute("title", this.texts_showNext + " " + this.texts_showMessage);
      }

      if (document.getElementById(link_showAllMessages_id)) { // ZOBRAZIT NEBO SKREJT VSECHNY ZPRAVY
        this.linkShowAllMessages = document.getElementById(link_showAllMessages_id);
        this.linkShowAllMessages.innerHTML = this.texts_showAll;
        this.linkShowAllMessages.style.display = "block";
        if (this.linkShowAllMessages.tagName.toLowerCase() == "a") this.linkShowAllMessages.setAttribute("href", "javascript:void(0);");
        this.linkShowAllMessages.Metadata = new Object();
        this.linkShowAllMessages.Metadata.instance = this;
        this.linkShowAllMessages.onclick = function () {
          this.Metadata.instance.showHideAllMessages(this);
        }
      }

      if (this.isStopWhenMouseOver && document.getElementById(this.mainObjectId)) {  // ZASTAVIT ANIMACI, POKUD BYLO NAD OBJEKT NAJETO MYSI
        var tmpObj = document.getElementById(this.mainObjectId);
        tmpObj.Metadata = new Object();
        tmpObj.Metadata.instance = this;
        tmpObj.onmouseover = function () { this.Metadata.instance.isAnimationPaused = true; }
        tmpObj.onmouseout = function () { this.Metadata.instance.isAnimationPaused = false; }
      }
      if (document.getElementById(mainSwitchingObjectsContainer_id)) {
        document.getElementById(mainSwitchingObjectsContainer_id).style.overflow = "hidden";
        document.getElementById(mainSwitchingObjectsContainer_id).className += " dokjs";
      }
      if (document.getElementById(mainSwitchingObjectsNavigation_id)) {
        document.getElementById(mainSwitchingObjectsNavigation_id).style.display = "block";
        if (document.getElementById(mainSwitchingObjectsNavigation_id).parentNode && document.getElementById(mainSwitchingObjectsNavigation_id).parentNode.className == "unavigace") {
          document.getElementById(mainSwitchingObjectsNavigation_id).parentNode.style.visibility = "visible";
        }
      }
      if (document.getElementById(link_showAllMessages_id)) document.getElementById(link_showAllMessages_id).style.display = "block";

      if (this.switchingType == "anim") { this.setObjectsStyles(this.switchingWay); }
    }
    catch (err) {
      //alert("Error in SwitchingObjects.initObjects: " + err);
    }
  }
  this.stopBubble=function(e) {
    try {
      if (e) e.stopPropagation(); else event.cancelBubble = true;
    }
    catch (err) { }
  }
  this.setObjectsStyles = function (switchingWay) {
    for (var i = 0; i < this.objectsToSwitching.length; i++) {
      if (switchingWay == "horizontal") {
        this.objectsToSwitching[i].setAttribute("style", "float:left;clear:none;");
        this.objectsToSwitching[i].style.width = this.objectsToSwitching[i].offsetWidth;
        objectsToSwitching_width += this.objectsToSwitching[i].offsetWidth;
      }
      else if (switchingWay == "vertical") {
        this.objectsToSwitching[i].setAttribute("style", "float:none;clear:left;");
        this.objectsToSwitching[i].style.width = this.mainContainer.Metadata.defaultWidth;
      }
    }
    if (switchingWay == "horizontal") {
      this.mainContainer.style.width = objectsToSwitching_width + "px";
      this.mainContainer.style.position = "relative";
    }
    else if (switchingWay == "vertical") {
      this.mainContainer.style.width = this.mainContainer.Metadata.defaultWidth + "px";
    }
    offsetWay[0] = this.switchingWay == "vertical" ? "marginTop" : "marginLeft";
    offsetWay[1] = this.switchingWay == "vertical" ? "offsetTop" : "offsetLeft";
    eval("this.mainContainer.style." + offsetWay[0] + "=0");    
  }
  this.moveObjectWhenOnFocus = function (actObj, e) {
    // UMOZNUJE SE DOSTAT NA VSECHNY ODKAZY
    if (isSwitchingBetweenWithoutAnimationLinksWhenTab) {
      for (var i = 0; i < actObj.Metadata.switchingObjects.objectsToSwitching.length; i++) {
        this.setClassToLink(actObj.Metadata.switchingObjects.objectsToSwitching[i].Metadata, actObj.Metadata.switchingObjects.objectsToSwitching[i].Metadata.contentObject, "");
      }
      actObj.Metadata.switchingObjects.setClassToLink(actObj.Metadata, actObj.Metadata.contentObject, "actualSwitchingObject");
      /*
      if(actObj.Metadata.switchingObjects.lastProcessedObjectIndex != actObj.Metadata.objIndex)actObj.Metadata.contentObject.getElementsByTagName("img")[0].parentNode.focus();
      //actObj.focus();
      if (actObj.Metadata.switchingObjects.lastProcessedObjectIndex != actObj.Metadata.objIndex) actObj.Metadata.switchingObjects.lastProcessedObjectIndex = actObj.Metadata.objIndex;
      */
      isFocusUsed = true; 
      return;
    }

    if (this.isShowedAll || actObj.Metadata.switchingObjects.lastProcessedObjectIndex == actObj.Metadata.switchingObjects.objectsToSwitching.length - 1) { return; }
    actObj.blur();                 // ff a dalsi
    actObj.hideFocus = true;       // ie        

    if (isExpandAllMessagesWhenBeginElmIsFocused) { // ZOBRAZIT VSECHNY DOKUMENTY, POKUD HLAVNI ELEMENT ZISKA FOKUS A PARAMETR MA HODNOTU TRUE. UMOZNUJE SE DOSTAT NA VSECHNY ODKAZY
      document.getElementById(this.mainObjectId).Metadata.instance = this;
      this.showHideAllMessages(document.getElementById(this.mainObjectId));
      document.getElementById(this.mainObjectId).focus();
    }
    else {  // ROLOVAT NA DALSI DOKUMENT. NELZE SE ZDE VSAK DOSTAT NA ODKAZY POMOCI TABULATORU
      //if (this.Metadata.switchingObjects.isAnimationActived || this.Metadata.switchingObjects.isAnimationPaused) { this.Metadata.switchingObjects.objectsToSwitching[this.Metadata.switchingObjects.lastProcessedObjectIndex].getElementsByTagName("a")[0].onblur(); return false; }
      var tmpIndex = null;
      if (actObj.Metadata.switchingObjects.lastProcessedObjectIndex < actObj.Metadata.objIndex) { actObj.Metadata.switchingObjects.objectsToSwitching[actObj.Metadata.switchingObjects.lastProcessedObjectIndex].getElementsByTagName("a")[0].focus(); return; } //tmpIndex = this.Metadata.switchingObjects.lastProcessedObjectIndex - 1;
      else { tmpIndex = actObj.Metadata.switchingObjects.lastProcessedObjectIndex + 1; }
      if (tmpIndex < actObj.Metadata.switchingObjects.objectsToSwitching.length) { actObj.Metadata.switchingObjects.objectsToSwitching[tmpIndex].Metadata.linkToMe[0].onclick(); }
    }
  }
  this.appendAnchorTo = function (destObj, destObjName, refObjId) {
    var newAnchor = document.createElement("a");
    newAnchor.setAttribute("href", "javascript:void(0)");
    newAnchor.setAttribute("name", destObjName);
    newAnchor.setAttribute("id", destObjName);
    document.getElementById(destObj).insertBefore(newAnchor, document.getElementById(refObjId));
  }
  this.goToAnchor = function (anchorName) {
    var tmpLocation = location.href;
    tmpLocation = tmpLocation.replace("#" + anchorName, "");
    window.location = tmpLocation + "#" + anchorName;
  }
  this.showHideAllMessages = function (actObj) {
    if (this.isAnimationActived) return;
    if (document.getElementById(mainSwitchingObjectsContainer_id)) {
      // ZOBRAZIT VSECHNY OBJEKTY
      if (document.getElementById(mainSwitchingObjectsContainer_id).style.overflow != "visible") {
        this.isShowedAll = true;
        //document.getElementById(this.mainObjectId).style.marginTop = "0px";
        eval("document.getElementById(this.mainObjectId).style." + offsetWay[0] + "='0px'");
        for (var i = 0; i < actObj.Metadata.instance.objectsToSwitching.length; i++) {
          if (actObj.Metadata.instance.switchingType == "anim") {
            actObj.Metadata.instance.setClassToLink(actObj.Metadata.instance.objectsToSwitching[i].Metadata, actObj.Metadata.instance.objectsToSwitching[i].Metadata.contentObject, "");
          }
          else if (actObj.Metadata.instance.switchingType == "switch") {
            actObj.Metadata.instance.objectsToSwitching[i].Metadata.isVisible = true;
            actObj.Metadata.instance.objectsToSwitching[i].style.display = "block";
          }
        }

        if (actObj.Metadata.instance.switchingType == "anim") {
          actObj.Metadata.instance.lastProcessedObjectIndex = 0;
          actObj.Metadata.instance.showObject(actObj.Metadata.instance.objectsToSwitching[0].Metadata, actObj.Metadata.instance.objectsToSwitching[0].Metadata.contentObject);
          actObj.Metadata.instance.setLastProcessedObject(actObj.Metadata.instance.objectsToSwitching[0].Metadata);
        }

        document.getElementById(mainSwitchingObjectsContainer_id).style.overflow = "visible";
        document.getElementById(mainSwitchingObjectsNavigation_id).style.display = "none";
        if (actObj.id == link_showAllMessages_id) actObj.innerHTML = this.texts_showOne;
        this.setObjectsStyles("vertical");
      }
      // ZOBRAZIT JEN NEKTERE OBJEKTY
      else {
        this.isShowedAll = false;
        if (actObj.Metadata.instance.switchingType == "switch") {
          this.hideAllObjects();
          this.showObject(actObj.Metadata.instance.objectsToSwitching[actObj.Metadata.instance.startObjectIndex].Metadata, actObj.Metadata.instance.objectsToSwitching[actObj.Metadata.instance.startObjectIndex].Metadata.contentObject);
        }
        document.getElementById(mainSwitchingObjectsContainer_id).style.overflow = "hidden";
        document.getElementById(mainSwitchingObjectsNavigation_id).style.display = "block";
        this.goToAnchor(this.switchingObjectsAnchor);
        if (actObj.id == link_showAllMessages_id) actObj.innerHTML = this.texts_showAll;
        this.setObjectsStyles(this.switchingWay);
      }
    }
  }
  this.link_onclick = function (switchingObject, actualLink) { // OVLADAC ODKAZU
    this.showObject(switchingObject, switchingObject.contentObject);  // ZOBRAZIT POUZE VYBRANEJ OBJEKT
  }
  this.hideAllObjects = function () { // PREPINANI ZOBRAZENI OBJEKTU
    for (var i = 0; i < this.objectsToSwitching.length; i++) {
      this.setClassToLink(this.objectsToSwitching[i].Metadata, this.objectsToSwitching[i].Metadata.contentObject, "");
      this.hideObject(this.objectsToSwitching[i].Metadata, this.objectsToSwitching[i].Metadata.contentObject);
    }
  }
  this.showObject = function (switchingObject, contentObj) { // ZOBRAZIT OBJEKT
    this.setClassToLink(switchingObject, contentObj, "actualSwitchingObject");
    contentObj.style.display = "block";
    contentObj.Metadata.isVisible = true;
  }
  this.hideObject = function (switchingObject, contentObj) { // SCHOVAT OBJEKT
    this.setClassToLink(switchingObject, contentObj, "");
    contentObj.style.display = "none";
    contentObj.Metadata.isVisible = false;
  }
  this.animMainObject = function (switchingObjects, destObject, animStep) { // POSUNOUT NA DALSI OBJEKT    
    try {
      if (switchingObjects.isShowedAll || switchingObjects.isAnimationActived) return;

      switchingObjects.isAnimationActived = true;
      clearInterval(switchingObjects.mainAnimInterval);
      switchingObjects.mainAnimInterval = setInterval(
        function () {
          if (!switchingObjects.isAnimationPaused) {
            //switchingObjects.mainContainer.style.marginTop = parseInt(switchingObjects.mainContainer.style.marginTop) + animStep + "px";
            eval("switchingObjects.mainContainer.style."+offsetWay[0] + " = parseInt(switchingObjects.mainContainer.style."+offsetWay[0]+")+animStep+'px'");
            //if (destObject.offsetTop == Math.abs(parseInt(switchingObjects.mainContainer.style.marginTop))) {
            //if (destObject.offsetTop + Math.round(Math.abs(animStep / 2)) >= Math.abs(parseInt(switchingObjects.mainContainer.style.marginTop)) && destObject.offsetTop - Math.round(Math.abs(animStep / 2)) <= Math.abs(parseInt(switchingObjects.mainContainer.style.marginTop))) {
            if (eval("destObject."+offsetWay[1] + " + Math.round(Math.abs(animStep / 2))") >= Math.abs(parseInt(eval("switchingObjects.mainContainer.style."+offsetWay[0]))) && eval("destObject."+offsetWay[1]+" - Math.round(Math.abs(animStep / 2))") <= Math.abs(parseInt(eval("switchingObjects.mainContainer.style."+offsetWay[0])))) {
              //switchingObjects.mainContainer.style.marginTop = -destObject.offsetTop + "px";  // ZAROVNAT DO PRESNYHO UMISTENI, PROTOZE PRI POSUNU NEMUSELO BEJT DOSAZENO KONECNYHO UMISTENI
              eval("switchingObjects.mainContainer.style."+offsetWay[0]+" = -destObject."+offsetWay[1]);  // ZAROVNAT DO PRESNYHO UMISTENI, PROTOZE PRI POSUNU NEMUSELO BEJT DOSAZENO KONECNYHO UMISTENI
              for (var i = 0; i < switchingObjects.objectsToSwitching.length; i++) {
                switchingObjects.setClassToLink(switchingObjects.objectsToSwitching[i].Metadata, switchingObjects.objectsToSwitching[i].Metadata.contentObject, "");
              }
              //switchingObjects.showObject(destObject.Metadata, destObject.Metadata.contentObject);
              switchingObjects.setClassToLink(destObject.Metadata, destObject.Metadata.contentObject, "actualSwitchingObject");
              switchingObjects.isAnimationActived = false;
              clearInterval(switchingObjects.mainAnimInterval);
            }
          }
        }
      , 40);
    } catch (err) { }
  }
  this.setClassToLink = function (switchingObject, contentObj, newValue) {
    for (var i = 0; i < switchingObject.linkToMe.length; i++) {
      // switchingObject.linkToMe[i].setAttribute("class", newValue);
      switchingObject.linkToMe[i].className= newValue;
    }
  }
  this.setLastProcessedObject = function (newActObject) {
    for (var i = 0; i < newActObject.switchingObjects.objectsToSwitching.length; i++) {
      newActObject.switchingObjects.objectsToSwitching[i].Metadata.isLastProcessed = false;
    }
    newActObject.isLastProcessed = true;
  }
  this.executeSwitchUsingArrow = function (arrowObject, actionType) { // VOLANO PRI STISKNUTI SIPKY PREDCHOZI/DALSI
    var actObject = null;
    var newObject = null;
    var newObjectIndex = -1;

    if (actionType == "moveToNext") {
      for (var i = 0; i < arrowObject.Metadata.switchingObjects.objectsToSwitching.length; i++) {
        actObject = arrowObject.Metadata.switchingObjects.objectsToSwitching[i];
        if (actObject.Metadata.switchingObjects.switchingType == "anim" && (actObject.Metadata.switchingObjects.isAnimationActived || arrowObject.Metadata.switchingObjects.objectsToSwitching.length - 1 == arrowObject.Metadata.switchingObjects.lastProcessedObjectIndex)) return;  // UKONCIT, POKUD NENI ZADNEJ NASLEDUJICI OBJEKT

        if (actObject.Metadata.switchingObjects.switchingType == "anim" && arrowObject.Metadata.switchingObjects.objectsToSwitching[i].Metadata.isLastProcessed) {
          newObjectIndex = arrowObject.Metadata.switchingObjects.objectsToSwitching[i].Metadata.objIndex + 1;
          arrowObject.Metadata.switchingObjects.setLastProcessedObject(arrowObject.Metadata.switchingObjects.objectsToSwitching[newObjectIndex].Metadata);
          break;
        }
        else if (actObject.Metadata.switchingObjects.switchingType == "switch" && actObject.Metadata.isVisible && i < arrowObject.Metadata.switchingObjects.objectsToSwitching.length - 1) {
          newObjectIndex = arrowObject.Metadata.switchingObjects.objectsToSwitching[i].Metadata.objIndex + 1;
          break;
        }
      }
    }
    else if (actionType == "moveToPrevious") {
      for (var i = arrowObject.Metadata.switchingObjects.objectsToSwitching.length - 1; i >= 0; i--) {
        actObject = arrowObject.Metadata.switchingObjects.objectsToSwitching[i];
        if (actObject.Metadata.switchingObjects.switchingType == "anim" && (actObject.Metadata.switchingObjects.isAnimationActived || arrowObject.Metadata.switchingObjects.lastProcessedObjectIndex == 0)) return;  // UKONCIT, POKUD NENI ZADNEJ PREDCHOZI OBJEKT

        if (actObject.Metadata.switchingObjects.switchingType == "anim" && arrowObject.Metadata.switchingObjects.objectsToSwitching[i].Metadata.isLastProcessed) {
          newObjectIndex = arrowObject.Metadata.switchingObjects.objectsToSwitching[i].Metadata.objIndex - 1;
          arrowObject.Metadata.switchingObjects.setLastProcessedObject(arrowObject.Metadata.switchingObjects.objectsToSwitching[newObjectIndex].Metadata);
          break;
        }
        else if (actObject.Metadata.switchingObjects.switchingType == "switch" && actObject.Metadata.isVisible && i > 0) {
          newObjectIndex = arrowObject.Metadata.switchingObjects.objectsToSwitching[i].Metadata.objIndex - 1;
          break;
        }
      }
    }
    
    if (newObjectIndex == -1) return;

    newObject = arrowObject.Metadata.switchingObjects.objectsToSwitching[newObjectIndex];
    if (actObject.Metadata.switchingObjects.switchingType == "anim") {  // V PRIPADE ANIMACE OBJEKTY PLYNULE POSOUVAT
      if (actionType == "moveToNext") actObject.Metadata.switchingObjects.animMainObject(newObject.Metadata.switchingObjects, newObject, -(actObject.Metadata.switchingObjects.max_anim_step));
      else if (actionType == "moveToPrevious") actObject.Metadata.switchingObjects.animMainObject(newObject.Metadata.switchingObjects, newObject, actObject.Metadata.switchingObjects.max_anim_step);
    }
    else if (actObject.Metadata.switchingObjects.switchingType == "switch" && newObjectIndex > -1) {  // V PRIPADE JEDNODUCHYHO PREPINANI
      actObject.Metadata.switchingObjects.hideAllObjects();
      newObject.Metadata.switchingObjects.showObject(newObject.Metadata, newObject.Metadata.contentObject);
    }
    arrowObject.Metadata.switchingObjects.lastProcessedObjectIndex = newObject.Metadata.objIndex;
  }
  this.verifyWhenPreviousFocusWasUsed = function (actObj) {
    if (isFocusUsed) {
      document.getElementById(actObj.Metadata.instance.switchingObjects.mainObjectId).Metadata.instance = actObj.Metadata.instance.switchingObjects;
      actObj.Metadata.instance.switchingObjects.showHideAllMessages(document.getElementById(actObj.Metadata.instance.switchingObjects.mainObjectId));
      actObj.Metadata.instance.switchingObjects.showHideAllMessages(document.getElementById(actObj.Metadata.instance.switchingObjects.mainObjectId));
      isFocusUsed = false;
    }
  }

  function SwitchingObject(switchingObjects, actObj, objIndex, isVisible) {
    this.switchingObjects = switchingObjects;
    this.contentObject = actObj;
    this.objIndex = objIndex;
    this.isVisible = isVisible;
    this.isLastProcessed = false;
    this.defaultOffset=this.contentObject.offsetTop;
    if (this.objIndex == 0) { this.isLastProcessed = true; }

    this.createLink = function (link) {
      link = document.createElement("a");
      link.setAttribute("href", "javascript:void(0)");
      link.innerHTML = "<span class='cist'>" + this.objIndex + "</span>";
      link.Metadata = new Object();
      link.Metadata.instance = this;
      link.onclick = function () {  // PRIPOJIT K ODKAZU OVLADAC        
        this.Metadata.instance.switchingObjects.verifyWhenPreviousFocusWasUsed(this);
        if (this.Metadata.instance.switchingObjects.switchingType == "anim" && (this.Metadata.instance.switchingObjects.isAnimationActived || this.Metadata.instance.switchingObjects.lastProcessedObjectIndex == this.Metadata.instance.objIndex)) return;
        if (this.Metadata.instance.switchingObjects.switchingType == "switch") {
          this.Metadata.instance.switchingObjects.hideAllObjects();
          this.Metadata.instance.switchingObjects.showObject(this.Metadata.instance, this.Metadata.instance.contentObject);
        }
        else if (this.Metadata.instance.switchingObjects.switchingType == "anim") {
          var wayIndex = 1;
          if (this.Metadata.instance.switchingObjects.lastProcessedObjectIndex < this.Metadata.instance.objIndex) wayIndex = -1;
          this.Metadata.instance.switchingObjects.lastProcessedObjectIndex = this.Metadata.instance.objIndex;
          this.Metadata.instance.switchingObjects.animMainObject(this.Metadata.instance.switchingObjects, this.Metadata.instance.contentObject, this.Metadata.instance.switchingObjects.max_anim_step * wayIndex);
          this.Metadata.instance.switchingObjects.setLastProcessedObject(this.Metadata.instance);
        }
      }
      this.switchingObjects.linksContainer.appendChild(link);
      return link;
    }
    this.blurFocus = function (link) {
      link.onfocus = function (e) {
        if (lastFocusedArrowId == "switchingObjects_arrowLeft") { document.getElementById("switchingObjects_arrowRight").focus(); }
        else if (lastFocusedArrowId == "switchingObjects_arrowRight") { document.getElementById("switchingObjects_arrowLeft").focus(); }
      }
    }
  }

  function ArrowObject(switchingObjects, actObj, objIndex, actionType, isVisible) {
    this.switchingObjects = switchingObjects;
    this.contentObject = actObj;
    this.objIndex = objIndex;
    this.actionType = actionType;
    this.isVisible = isVisible;    

    this.initObject = function () {
      this.contentObject.style.display = this.isVisible ? "block" : "none";
    }
    this.appendOnclickHandler = function (actualLink) {
      actualLink.Metadata.instance = this;
      actualLink.onclick = function () {
        this.Metadata.instance.switchingObjects.verifyWhenPreviousFocusWasUsed(this);
        this.Metadata.instance.switchingObjects.executeSwitchUsingArrow(this, this.Metadata.instance.actionType);
      }
    }
    this.appendOnfocusHandler = function (actualLink) {
      actualLink.onfocus = function () {
        lastFocusedArrowId = actualLink.id;
      }
    }
    
    this.initObject();
  }
  
  this.initObjects();
}


