//return true or false
function isUserAgent() {
   return document.getElementById && (window.attachEvent || window.addEventListener);
}
//global function
function getNextSiblingByNodeName(element, nodeName) {
	do element = element.nextSibling;
	while (element && (element.nodeName.toLowerCase() != nodeName.toLowerCase()));
	return element;
} 

function getFirstChildByNodeName(element, nodeName) {
	element = element.firstChild;
	if (element && (element.nodeName.toLowerCase() != nodeName.toLowerCase())) 
		return getNextSiblingByNodeName(element, nodeName);
	else
		return element;
} 

function getParentNodeByName(element, nodeName) {
  if(!isUserAgent) return; //cut off
	do element = element.parentNode;
	while (element && (element.nodeName.toLowerCase() != nodeName.toLowerCase()));
	return element;
}

function getObj (x){
	obj = window.parent.document.getElementById(x);
	return obj;
}
//swap all checkboxes by the element ID
function invertAllCheckbox(id) {
    var root = getObj(id);
  var boxes = root.getElementsByTagName("input");
  for(i=0; i<boxes.length; i++) {
    if(boxes[i].type.toLowerCase() == "checkbox") { 
      if(boxes[i].checked == true){
        boxes[i].checked = false;
      }//end: if - checked boxes
      else if(boxes[i].checked == false){
        boxes[i].checked = true;
      }//end: if - NONchecked boxes
    }
  }//end: for
  return false;
}


function getCheckboxes(element)
{   
    var resultBoxes = [];
    var inputs = element.getElementsByTagName("input");
    for(i=0; i<inputs.length; i++) {
        if(inputs[i].type.toLowerCase() == "checkbox") { 
            resultBoxes.push(inputs[i])
        }
    }//end: for
    return resultBoxes;
}


//boxes: array
function swapAllCheckbox(boxes)
{
    var swapmode = true;
    for(i=0; i<boxes.length; i++) {
        if(boxes[i].checked == true){
            swapmode = false;
        }
    }//end: for
    for(i=0; i<boxes.length; i++) {
        boxes[i].checked = swapmode;
    }//end: for
    return false;            
}



function chnChk(element) {
 var row = this.getParentNodeByName(element, "tr")
 var chkBox = row.getElementsByTagName("input")[0];
 row.style.backgroundColor = "#DADBEA";
 chkBox.checked = "checked";
 return false;
} 

function setChangeStatusActions(id) {
  var root = getObj(id);
  var elements = root.getElementsByTagName("input");
  for(i=0; i<elements.length; i++) {
   if(elements[i].type.toLowerCase() != "checkbox")  continue;
   if(elements[i].type.toLowerCase() != "submit")  continue;
    elements[i].onblur = chnChk(this);
  }
}

function initTableRows(id, hoverColor) {
    var root = getObj(id);
    var rows = root.getElementsByTagName("tr");
    for (j=0; j<rows.length; j++){
    var row = rows[j];
        row.origBackgroundColor = row.style.backgroundColor;
        row.origBorder = row.style.border;
        row.onmouseover = function(){
            setCellsBackground(this, hoverColor)
        }
    }
}

function setCellsBackground(row, color){
    row.origCellBackg = [];
    var cells = row.getElementsByTagName("td");
    for (var j=0; j<cells.length; j++){
        row.origCellBackg.push(cells[j].style.backgroundColor)
        cells[j].style.backgroundColor = color;
    }
    row.onmouseout = function() {
        for (var j=0; j<cells.length; j++){
            cells[j].style.backgroundColor = this.origCellBackg[j];
        }
    }
}

function swapAllChecks(element)
{
    var group = this.getParentNodeByName(element, "tr");
    swapAllCheckbox(getCheckboxes(group))
    return false;            

}

function swapSiteCheckboxes(element, id, site) {
    var group = this.getParentNodeByName(element, "tr");
    var boxes = getCheckboxes(group);
    var resBox = [];
    for(var x in boxes) {
        if(( boxes[x].name == "see["+id+"]["+site+"]") || (boxes[x].name == "top["+id+"]["+site+"]") || (boxes[x].name == "prf["+id+"]["+site+"]")) {
             resBox.push(boxes[x])
        }    
    }
    swapAllCheckbox(resBox);
    return false;            
}

function swapSiteAllType(id, mode, siteID){
    var boxes = getCheckboxes(getObj(id));
    var resBox = [];
    var re = mode+ "[[][0-9]*[]][[]"+siteID+"[]]";
    for(var x in boxes) {
        if(boxes[x].name.search(re) != -1) {
             resBox.push(boxes[x])
        }    
    }
    swapAllCheckbox(resBox);
    return false; 
}

function swapAllSite(id, siteID){
    var boxes = getCheckboxes(getObj(id));
    var resBox = [];
    var re = "...[[][0-9]*[]][[]"+siteID+"[]]";
    for(var x in boxes) {
        if(boxes[x].name.search(re) != -1) {
             resBox.push(boxes[x])
        }    
    }
    swapAllCheckbox(resBox);
    return false; 
}
 
function swapSiteTypeChecks(element, type) {
    var group = this.getParentNodeByName(element, "tr");
    var boxes = getCheckboxes(group);
    var resBox = [];
    for(var x in boxes) {
        if(boxes[x].value == type) {
             resBox.push(boxes[x])
             
        }    
    }
    swapAllCheckbox(resBox);
    return false;            
} 

//returns true || false
function isInArray(item, arr) {
    for(var x in arr) {
       if(item == arr[x])
       return true;
    }
    return false;
}  

function resetAllCheckbox(id) {
    swapAllCheckbox(getCheckboxes(getObj(id)));
    return false;
}

function confirmDelete(append){
    msg = "Wirklich löschen ?\n" + append;
    return window.confirm(msg);
}

function openPopupWin(url, width, height){
    var popwin = window.open(url, '', 'width=' + width + ', height=' + height);
    popwin.location.href = url;
    return false;
}
function openPopup(el) {
    var url = el.href;
    window.open(url);
    return false;
}
