// JavaScript Document

//funkce s postfixem 2 znaci funkce, ktere pouzivaji vertikalni bubliny(nad nebo pod objektem)

//vytvoreni bubliny
//text - obsah
function bubbleInfo2(obj,text){

  var bubbleCornerSize = 3;
  var bubbleCornerSizeWidth = 7;
  //var arrowHeight = 9;
  var bubbleArrowSize = 6;
  var bubbleArrowWidth = 11;
  var bubbleArrowWidthHalf = 5;

  //============pomocne funkce==============
  //zjistime pozici prvku, na teto pozici, bude zacinat sipka
  function bubbleGetPosition2(obj){
    curleft = curtop = 0;
  
    objH = obj.offsetHeight;
    objW = (obj.offsetWidth - (obj.offsetWidth % 2))/2 - bubbleArrowWidthHalf;
    if (obj.offsetParent) {
      do {
  	    curleft += obj.offsetLeft;
  	    curtop += obj.offsetTop;
      } while (obj = obj.offsetParent);
    return [curleft + objW,curtop,objH];
    }
  }
  //zjisteni rozmeru vypisovaneho textu
  function bubbleGetSizeOfText2(text){
    var tw=th=0;
    divText = document.createElement("div");
    divText.className = "bubbleText2";
    divText.innerHTML = text;
    document.body.appendChild(divText);
    // nekdy(pri <hr>) se div roztahne na 100% stranky, vetsinou tomu lze zabranit pomoci position=absolute
    if (divText.offsetWidth > 350) {
      divText.style.width = "350px";
      tw = 350;
      }
    else
      tw = divText.offsetWidth;
    th = divText.offsetHeight;
    //alert(text+";"+tw+','+th);
  
    document.body.removeChild(divText);
    return [tw,th];
  }
  //=======================================
  //promena, ktera rika, jestli se ma bublina vytvorit pod nebo nad prvek
  bubbleUp = true;
   
  //zjisteni rozmeru vypisovaneho textu
  //var textW = textH = w = h = x = y = 0;
  textWH = bubbleGetSizeOfText2(text); textW=textWH[0]+2; textH=textWH[1]+2;
  //w,h - celkove rozmer vytvorene bubliny
  w = (textW + 2 * bubbleCornerSizeWidth) + 4;
  h = (textH + 2 * bubbleCornerSize + 2 * bubbleArrowSize) ;
  //2 * bubbleCornerSize - 2 * bubbleArrowSize
  xyh = bubbleGetPosition2(obj); x=xyh[0]; y=xyh[1]; objH =xyh[2]; 
  
  //stare - puvodni
  //clientH = document.body.clientHeight;
  //scrollT = document.body.scrollTop;
  //clientW = document.body.clientWidth;
  //scrollL = document.body.scrollLeft;
  
  //firefox - ok
  //opera - ok
  //ie7 - ok
  //chrome nejede scrollT/L, doboku jede
  clientH = document.documentElement.clientHeight;//window.innerHeight;//document.body.clientHeight;
  scrollT = document.documentElement.scrollTop;//window.pageYOffset;//document.body.scrollTop;
  clientW = document.documentElement.clientWidth;//window.innerWidth - getScrollerWidth();//document.body.clientWidth;
  scrollL = document.documentElement.scrollLeft;//window.pageXOffset;//document.body.scrollLeft;
  //document.documentElement.scrollLeft; a scrollTop vraci v google chrome nulu. Pokud je jedna z nasledujicich hodnot nulova, vyzkousi se zavolat document.body.scrollTop;, ktera v chrome vraci spravny udaj
  if (scrollT == 0)
    scrollT = document.body.scrollTop;
  if (scrollT == 0)
    scrollL = document.body.scrollLeft;
    
  //firefox - v-ok,neok odsazeni
  //opera - v-ok,nereaguje horizontalni odsazeni
  //ie7 - ani tuk
  //chrome v-ok,neok odsazeni
  //clientH = window.innerHeight;//document.body.clientHeight;
  //scrollT = window.pageYOffset;//document.body.scrollTop;
  //clientW = window.innerWidth;// - getScrollerWidth();//document.body.clientWidth;
  //scrollL = window.pageXOffset;//document.body.scrollLeft;


  //urcim, zda-li se bublina bude vypisovat nad objekt, nebo pod nej.
  if (clientH - (y - scrollT) > (clientH)/ 2)
    bubbleUp = false;
  //text += scrollT;
  //nastavime leve odsazeni tak, aby se bublina vesla na stranku
  if (w > clientW - (x - scrollL))
    bubblePadding = w - (clientW - (x - scrollL) ); 
  else
    bubblePadding = 0;
  //pokud bublina bude dole, je nutne pricist sirku objektu, u ktereho se bublina zobrazuje
  if (bubbleUp == false)
    y += objH + 5;
  else
    y -= 5;
    
  //pokud existuje nejaka napoveda, tak ji zrusime, abych mohli vytvorit novou bublinu
  bubble = document.getElementById("bubbleAllID2") ;
  if(bubble != null ){
    bubble.parentNode.removeChild(bubble);

  }
  //alert("x:"+x+",y:"+y+",w:"+w+",h:"+h);
  //alert(",okno-w:"+clientW+",okno-h:"+clientH+",scroll-T:"+scrollT+",scroll-L:"+scrollL);
  bubbleAll = document.createElement("div");
    bubbleAll.className = "bubbleAll2";
    //bubbleAll.idName = "bubbleAllID";
    bubbleAll.setAttribute("id", "bubbleAllID2");
    bubbleAll.style.left = x - bubblePadding - 10 + "px";//(w - (w % 2))/2 + bubbleArrowWidthHalf + "px";
    if (bubbleUp == true)
      bubbleAll.style.top = y - h + "px";
    else
      bubbleAll.style.top = y + "px";
    bubbleAll.style.width = w + "px";
    bubbleAll.style.height = h + "px";
    
  bubbleCornerLT = document.createElement("div");
    bubbleCornerLT.className = "bubbleCornerLT2";
  bubbleLineT = document.createElement("div");
    bubbleLineT.className = "bubbleLineT2";
    bubbleLineT.style.width = w - 2 * bubbleCornerSizeWidth + "px";
  bubbleCornerRT = document.createElement("div");
    bubbleCornerRT.className = "bubbleCornerRT2";
            
  bubbleLineL = document.createElement("div");
    bubbleLineL.className = "bubbleLineL2";
    bubbleLineL.style.height = h - 2 * bubbleCornerSize - 2 * bubbleArrowSize + "px";
  bubbleText = document.createElement("div");
    bubbleText.className = "bubbleText2";
    bubbleText.innerHTML = text;
    bubbleText.style.height = textH + "px";//h - 2 * bubbleCornerSize - 2 * bubbleArrowSize + "px";
    bubbleText.style.width = textW + "px";// - 2 * bubbleCornerSize + "px";
    //bubbleText.style.zIndex = 10;
  bubbleLineR = document.createElement("div");
    bubbleLineR.className = "bubbleLineR2";
    bubbleLineR.style.height = h - 2 * bubbleCornerSize - 2 * bubbleArrowSize + "px";

  bubbleCornerLB = document.createElement("div");
    bubbleCornerLB.className = "bubbleCornerLB2";
    bubbleCornerLB.style.top = h - bubbleCornerSize - bubbleArrowSize + "px";
  bubbleLineB = document.createElement("div");
    bubbleLineB.className = "bubbleLineB2";
    bubbleLineB.style.width = w - 2 * bubbleCornerSizeWidth + "px";
    bubbleLineB.style.top = h - bubbleCornerSize - bubbleArrowSize + "px";
  bubbleCornerRB = document.createElement("div");
    bubbleCornerRB.className = "bubbleCornerRB2";
    bubbleCornerRB.style.top = h - bubbleCornerSize - bubbleArrowSize + "px";
  
  bubbleArrow = document.createElement("div");
    bubbleArrow.className = "bubbleArrow2";
    bubbleArrow.style.left = bubblePadding + 10 + "px";//(w - (w % 2))/2 - bubbleArrowWidthHalf + "px";
    if (bubbleUp == true){
      bubbleArrow.style.backgroundImage = "url(/images/bubbleInfo/arrowB.png)";
      bubbleArrow.style.top = h - bubbleArrowSize - 1 + "px";
    }else{
      bubbleArrow.style.backgroundImage = "url(/images/bubbleInfo/arrowT.png)";
      bubbleArrow.style.top = 0 + "px";
    }
    
  bubbleAll.appendChild(bubbleCornerLT);
  bubbleAll.appendChild(bubbleLineT);
  bubbleAll.appendChild(bubbleCornerRT);
  bubbleAll.appendChild(bubbleLineL);
  bubbleAll.appendChild(bubbleText);
  bubbleAll.appendChild(bubbleLineR);
  bubbleAll.appendChild(bubbleCornerLB);
  bubbleAll.appendChild(bubbleLineB);
  bubbleAll.appendChild(bubbleCornerRB);
  bubbleAll.appendChild(bubbleArrow);
  document.body.appendChild(bubbleAll);

  //osetreni pro IE6 - zabaleni divu do Iframu
  is_ie6 = document.all && (navigator.userAgent.toLowerCase().indexOf("msie 6.") != -1);
  if (is_ie6)
  {
     var html =
        "<iframe style=\"position: absolute; display: block; " +
        "z-index: -1; width: 100%; height: 100%; top: 0; left: 0;" +
        "filter: mask(); background-color: #ffffff; \"></iframe>";
        bubbleAll.innerHTML += html;

      //var olddisplay = bubbleAll.style.display;
      //bubbleAll.style.display = 'none';
      //bubbleAll.style.display = olddisplay;
  }  
}
//zrusi bubliny podle parametru class
function bubbleInfoDelete2(){
  //pokud existuje nejaka napoveda, tak ji zrusime
  bubble = document.getElementById("bubbleAllID2") ;
  if(bubble != null ){
    bubble.parentNode.removeChild(bubble);
  }
}

//------------------------------------------------------------------------------
//nize jsou funkce, ktere pouzivaji horizontalni bubliny

//vytvoreni bubliny
//obj - objekt, nad kterym se ma bublina vytvorit
//text - obsah
function bubbleInfo(obj,text){

  var bubbleCornerSize = 3;
  var bubbleCornerSizeWidth = 7;
  //var arrowHeight = 9;
  var bubbleArrowSize = 6;
  var bubbleArrowWidth = 11;
  var bubbleArrowWidthHalf = 5;
  
  //============pomocne funkce==============
  //zjistime pozici prvku
  function bubbleGetPosition(obj){
    var curleft = curtop = objW=objH=0;
    objW = obj.offsetWidth;
    objH = (obj.offsetHeight - (obj.offsetHeight % 2))/2 - bubbleArrowWidthHalf;
    if (obj.offsetParent) {
      do {
  	    curleft += obj.offsetLeft;
  	    curtop += obj.offsetTop;
      } while (obj = obj.offsetParent);
    return [curleft + objW,curtop + objH];
    }
  }
  
  function bubbleGetSizeOfText(text){
    var tw=th=0;
    divText = document.createElement("div");
    divText.className = "bubbleText";
    divText.innerHTML = text;
    document.body.appendChild(divText);
    // nekdy(pri <hr>) se div roztahne na 100% stranky, vetsinou tomu lze zabranit pomoci position=absolute
    if (divText.offsetWidth > 200) {
      divText.style.width = "200px";
      tw = 200;
      }
    else
      tw = divText.offsetWidth;
    th = divText.offsetHeight;
    //alert(text+";"+tw+','+th);
  
    document.body.removeChild(divText);
    return [tw,th];
  }
  //==========================================
  
  //zjisteni rozmeru vypisovaneho textu
  var textW = textH = w = h = x = y = 0;
  textWH = bubbleGetSizeOfText(text); textW=textWH[0]+2; textH=textWH[1]+2;
  //alert("tw:"+textW+",th:"+textH);
  w = (textW + 2 * bubbleCornerSize + bubbleArrowSize) + 8;
  h = (textH + 2 * bubbleCornerSizeWidth);
  xy = bubbleGetPosition(obj); x=xy[0]+5; y=xy[1];
  //pokud existuje nejaka napoveda, tak ji zrusime
  bubble = document.getElementById("bubbleAllID") ;
  if(bubble != null ){
    bubble.parentNode.removeChild(bubble);
  }
  //alert("x:"+x+",y:"+y+",w:"+w+",h:"+h);
  bubbleAll = document.createElement("div");
    bubbleAll.className = "bubbleAll";
    //bubbleAll.idName = "bubbleAllID";
    bubbleAll.setAttribute("id", "bubbleAllID");
    bubbleAll.style.left = x + "px";
    bubbleAll.style.top = y - (h - (h % 2))/2 + bubbleArrowWidthHalf + "px";
    bubbleAll.style.width = w + "px";
    bubbleAll.style.height = h + "px";
    
  bubbleCornerLT = document.createElement("div");
    bubbleCornerLT.className = "bubbleCornerLT";
  bubbleLineT = document.createElement("div");
    bubbleLineT.className = "bubbleLineT";
    bubbleLineT.style.width = w - bubbleCornerSize - bubbleCornerSizeWidth - bubbleArrowSize + "px";
  bubbleCornerRT = document.createElement("div");
    bubbleCornerRT.className = "bubbleCornerRT";
            
  bubbleLineL = document.createElement("div");
    bubbleLineL.className = "bubbleLineL";
    bubbleLineL.style.height = h - 2 * bubbleCornerSizeWidth + "px";
  bubbleText = document.createElement("div");
    bubbleText.className = "bubbleText";
    bubbleText.innerHTML = text;
    bubbleText.style.height = textH + "px";
    bubbleText.style.width = textW + "px";
    //bubbleText.style.zIndex = 10;
  bubbleLineR = document.createElement("div");
    bubbleLineR.className = "bubbleLineR";
    bubbleLineR.style.height = h - 2 * bubbleCornerSizeWidth + "px";

  bubbleCornerLB = document.createElement("div");
    bubbleCornerLB.className = "bubbleCornerLB";
    bubbleCornerLB.style.top = h - bubbleCornerSizeWidth + "px";
  bubbleLineB = document.createElement("div");
    bubbleLineB.className = "bubbleLineB";
    bubbleLineB.style.width = w - bubbleCornerSize - bubbleCornerSizeWidth - bubbleArrowSize + "px";
    bubbleLineB.style.top = h - bubbleCornerSizeWidth + "px";
  bubbleCornerRB = document.createElement("div");
    bubbleCornerRB.className = "bubbleCornerRB";
    bubbleCornerRB.style.top = h - bubbleCornerSizeWidth + "px";
  
  bubbleArrow = document.createElement("div");
    bubbleArrow.className = "bubbleArrow";
    bubbleArrow.style.top = (h - (h % 2))/2 - bubbleArrowWidthHalf + "px";
    
  bubbleAll.appendChild(bubbleCornerLT);
  bubbleAll.appendChild(bubbleLineT);
  bubbleAll.appendChild(bubbleCornerRT);
  bubbleAll.appendChild(bubbleLineL);
  bubbleAll.appendChild(bubbleText);
  bubbleAll.appendChild(bubbleLineR);
  bubbleAll.appendChild(bubbleCornerLB);
  bubbleAll.appendChild(bubbleLineB);
  bubbleAll.appendChild(bubbleCornerRB);
  bubbleAll.appendChild(bubbleArrow);
  document.body.appendChild(bubbleAll);

  //osetreni pro IE6 - zabaleni divu do Iframu
  is_ie6 = document.all && (navigator.userAgent.toLowerCase().indexOf("msie 6.") != -1);
  if (is_ie6)
  {
     var html =
        "<iframe style=\"position: absolute; display: block; " +
        "z-index: -1; width: 100%; height: 100%; top: 0; left: 0;" +
        "filter: mask(); background-color: #ffffff; \"></iframe>";
        bubbleAll.innerHTML += html;

      //var olddisplay = bubbleAll.style.display;
      //bubbleAll.style.display = 'none';
      //bubbleAll.style.display = olddisplay;
  }  
}
//zrusi bubliny podle parametru class
function bubbleInfoDelete(){
  //pokud existuje nejaka napoveda, tak ji zrusime
  bubble = document.getElementById("bubbleAllID") ;
  if(bubble != null ){
    bubble.parentNode.removeChild(bubble);
  }
}