// JavaScript Document

var na = navigator, ua = na.userAgent;
var isIE = (/MSIE/gi).test(ua) && (/Explorer/gi).test(na.appName);

onload=function(){
if (document.getElementsByClassName == undefined) {
	document.getElementsByClassName = function(className)
	{
		var hasClassName = new RegExp("(?:^|\\s)" + className + "(?:$|\\s)");
		var allElements = document.getElementsByTagName("*");
		var results = [];

		var element;
		for (var i = 0; (element = allElements[i]) != null; i++) {
			var elementClass = element.className;
			if (elementClass && elementClass.indexOf(className) != -1 && hasClassName.test(elementClass))
				results.push(element);
		}

		return results;
	}
}
}

function hasClass(className, /*tag,*/ elm) {
  //tag = tag || "*";
  //elm = elm || document;
  var classes = className.split(" "),
      classesToCheck = [],
      //elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
      //current,
      current = elm, //Khamyl      
      //returnElements = [],
      match;
  for(var k=0, kl=classes.length; k<kl; k+=1){
      classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
  }
  //for(var l=0, ll=elements.length; l<ll; l+=1){
      //current = elements[l];
      match = false;
      for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
          match = classesToCheck[m].test(current.className); //getAttribute("class")
          if (!match) {
              break;
          }
      }
      if (match) {
          return true;
      }
  //}
  return false;
};

function set_similarItem_Button(){
  var allElements = document.getElementsByTagName("*");
  var pref = 'subItemButt_';
  //for clarity of what is parentNode of subItemButt
  //<tr><td><a><table id='subItemButt_xxxx'> ... </table></a></td></tr>
  for (var i = 0; (el = allElements[i]) != null; i++) {
      elID = el.id;
			if (elID.substr(0,12)==pref){
			 el.style.height = el.parentNode.parentNode.offsetHeight;
			 //alert(el.parentNode.parentNode.offsetHeight);
      }
	}
}

function centerDiv(Xwidth,Yheight,divid) {
// First, determine how much the visitor has scrolled
  var scrolledX, scrolledY;
  if( self.pageYOffset ) {
  scrolledX = self.pageXOffset;
  scrolledY = self.pageYOffset;
  } else if( document.documentElement && document.documentElement.scrollTop ) {
  scrolledX = document.documentElement.scrollLeft;
  scrolledY = document.documentElement.scrollTop;
  } else if( document.body ) {
  scrolledX = document.body.scrollLeft;
  scrolledY = document.body.scrollTop;
  }

// Next, determine the coordinates of the center of browser's window

  var centerX, centerY;
  if( self.innerHeight ) {
  centerX = self.innerWidth;
  centerY = self.innerHeight;
  } else if( document.documentElement && document.documentElement.clientHeight ) {
  centerX = document.documentElement.clientWidth;
  centerY = document.documentElement.clientHeight;
  } else if( document.body ) {
  centerX = document.body.clientWidth;
  centerY = document.body.clientHeight;
  }

  // Xwidth is the width of the div, Yheight is the height of the
  // div passed as arguments to the function:
  var leftOffset = scrolledX + (centerX - Xwidth) / 2;
  var topOffset = scrolledY + (centerY - Yheight) / 2;
  // The initial width and height of the div can be set in the
  // style sheet with display:none; divid is passed as an argument to // the function
  var o=document.getElementById(divid);
  var r=o.style;
  r.position='absolute';
  r.top = topOffset + 'px';
  r.left = leftOffset + 'px';
  r.display = "block";
}

function appendRows(mainNode_id, htmlRows){
    var mainNode = document.getElementById(mainNode_id);
    var tempDiv = document.createElement("div");
    var tbody = mainNode.parentNode;
    var nextSib = mainNode.nextSibling;

    tempDiv.innerHTML = "<table><tbody>"+htmlRows+"</tbody></table>";
    var rows = tempDiv.firstChild.firstChild.childNodes;
    
    while (rows.length!=0)
      tbody.insertBefore(rows[0], nextSib);
}

function removeRows(mainNode_id){
  var mainTR = document.getElementById("tr_MainItem_"+mainNode_id);
  var tBody = mainTR.parentNode;
  for(var i=0; i<tBody.rows.length; i++){
    if(hasClass("subOf_"+mainNode_id, tBody.rows[i])) {
      tBody.deleteRow(i);
      i--;
    }
  }
}

function setButton(main_id, predcessors ,get_params, in_out, lang){
  var chNodeDepth;
  var theButton = document.getElementById("subItemButt_" + main_id);
  //if (isIE) chNodeDepth=2; else chNodeDepth=3;
  if(in_out == "in"){     
    //change pic in first row
     var upImg = theButton.rows[0].cells[0].childNodes[0];
     upImg.setAttribute('src','img/cat_similar_minus.gif');
    //remove data from third row   
      var remIMG = theButton.rows[2].cells[0].childNodes[0];
      if(remIMG) remIMG.parentNode.removeChild(remIMG);
    //cange bacground pic of second row
      theButton.rows[1].cells[0].style.backgroundImage='';   
    //change labels
    if(lang == "cz") theButton.parentNode.setAttribute('title', 'sbalit podobné');
    else             theButton.parentNode.setAttribute('title', 'hide simlar items');
    theButton.onclick= new Function("rollInSubItems(\""+main_id+"\", \""+predcessors+"\", \""+get_params+"\", \""+lang+"\")");    
  }else{
    //change pic in first row
     var upImg = theButton.rows[0].cells[0].childNodes[0];
     upImg.setAttribute('src','img/cat_similar_top.gif');
    //set data for third row   
      var newIMG = document.createElement('img');
      newIMG.setAttribute('src', 'img/cat_similar_bottom.gif');
      newIMG.setAttribute('border', '0');
      theButton.rows[2].cells[0].appendChild(newIMG);
    //cange bacground pic of second row
      theButton.rows[1].cells[0].style.background='url(img/cat_similar_bg.gif)';
      theButton.rows[1].cells[0].style.backgroundRepeat='repeat-y';
    //change labels  
    if(lang == "cz") theButton.parentNode.setAttribute('title', 'rozbalit další podobné');
    else             theButton.parentNode.setAttribute('title', 'show simlar items');
    theButton.onclick= new Function("rollOutSubItems(\""+main_id+"\", \""+predcessors+"\", \""+get_params+"\", \""+lang+"\")");    
  }  
  //alert(theButton.getAttribute("onClick"));
}

function setMainRow(main_id, in_out){
  var theMainRow = document.getElementById('tr_MainItem_'+main_id);
  var offClass, onClass, reg, el;
  if(in_out == 'in'){//put td2_main class
    offClass = 'td2';
    onClass = 'td2_main';
  }else{
    offClass = 'td2_main';
    onClass = 'td2';
  }
  //alert("in/out: ("+in_out+")\n\nOff: "+ offClass +"\nOn: "+onClass);
  var cells = theMainRow.cells;
  for(var i=0; i<cells.length; i++){
    el = theMainRow.cells[i];
    if (hasClass(offClass, el)) {
	    reg = new RegExp('(\\s|^)'+offClass+'(\\s|$)');
	    el.className=el.className.replace(reg,' ');
    }
    if (!hasClass(onClass, el)) el.className += " "+onClass;
  }  
}

function rollInSubItems(main_id, predcessors, get_params, lang){
  //alert("IN: "+main_id+"; "+get_params+"; "+lang);
  xmlHttp=GetXmlHttpObject();
  if (xmlHttp==null){
    alert ("Your browser does not support AJAX!");
    return;
  } 
  var url="subItems.php";
  url=url+"?mid="+main_id;
  url=url+"&predcessors="+predcessors;
  url=url+"&in_out=in";
  url=url+get_params;
  url=url+"&sid="+Math.random();
  xmlHttp.onreadystatechange = function SubItemStateChanged(){ 
        if (xmlHttp.readyState==1)
        {    
          var loadingDiv = document.getElementById("AJAX_loading");
          centerDiv(300,60, "AJAX_loading");
          loadingDiv.style.visibility = 'visible';
          //alert("Waiting..."+xmlHttp.readyState);
        }    
        if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
        {   
          var loadingDiv = document.getElementById("AJAX_loading");          
          loadingDiv.style.visibility = 'hidden'; 
          /*
          if (isChrome()){//Ugly Chrome hack - without it the buttons dont move vertically :(       
            setPositoin4subItemButtns("relative");            
          }*/ 
          removeRows(main_id);              
          setButton(main_id, predcessors, get_params, "out", lang);
          setMainRow(main_id, "out");
          /*
          if (isChrome()){//Ugly Chrome hack - without it the buttons dont move vertically :(
            setTimeout('setPositoin4subItemButtns(\'absolute\')', 100); 
            //alert("Set to absolute");
          }*/
        }    
  };
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
}

function rollOutSubItems(main_id, predcessors, get_params, lang){ 
  //alert("OUT: "+main_id+"; "+get_params+"; "+lang);
  xmlHttp=GetXmlHttpObject();
  if (xmlHttp==null){
    alert ("Your browser does not support AJAX!");
    return;
  } 
  var url="subItems.php";
  url=url+"?mid="+main_id;
  url=url+"&predcessors="+predcessors;
  url=url+"&in_out=out";
  url=url+get_params;
  url=url+"&sid="+Math.random();
  xmlHttp.onreadystatechange = function SubItemStateChanged(){ 
        if (xmlHttp.readyState==1)
        {    
          var loadingDiv = document.getElementById("AJAX_loading");
          centerDiv(300,60, "AJAX_loading");
          loadingDiv.style.visibility = 'visible';
          //alert("Waiting..."+xmlHttp.readyState);
        }
        if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
        {   
          var loadingDiv = document.getElementById("AJAX_loading");          
          loadingDiv.style.visibility = 'hidden';             
          //document.location.href='#MainItem_'+main_id;
          /*
          if (isChrome()){//Ugly Chrome hack - without it the buttons dont move vertically :(       
            setPositoin4subItemButtns("relative");            
          }*/
          appendRows("tr_MainItem_"+main_id, xmlHttp.responseText);          
          setButton(main_id, predcessors, get_params, "in", lang); 
          setMainRow(main_id, "in");
          /*    
          if (isChrome()){//Ugly Chrome hack - without it the buttons dont move vertically :(
            setTimeout('setPositoin4subItemButtns(\'absolute\')', 100); 
            //alert("Set to absolute");
          }*/ 
          //alert(xmlHttp.responseText+"("+main_id+")");
        }
      };
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
}

function isChrome(){
  return navigator.userAgent.toLowerCase().match('chrome');
}

function setPositoin4subItemButtns(_position){
  var subItemButtns = document.getElementsByClassName('subItemButt');
  for(var i = 0; (subItemButt = subItemButtns[i]) != null; i++){
    subItemButt.style.position=_position;
  }
}

function GetXmlHttpObject()
{
var xmlHttp=null;
try
  {
  // Firefox, Opera 8.0+, Safari
  xmlHttp=new XMLHttpRequest();
  }
catch (e)
  {
  // Internet Explorer
  try
    {
    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
  catch (e)
    {
    xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
return xmlHttp;
}

