/*
¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤

Generelle utilities som skal være allmengyldige på tvers av prosjekter

InfoRed 07.10.2008 Arild

¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
*/

/**************************************************************************************************************
* TABELLHÅNDTERING. Funksjonene jobber på tabell-elementer
**************************************************************************************************************/
/*
Skriv radfarger på tabell "menytBody".
*/
function regenererRadfarger(menytBody) {
	var tBody = document.getElementById(menytBody);
	var radene = tBody.childNodes;
	var rowOdd = true;
	var rowColor;
	var teller = 0;
	for (var i=0; i<radene.length; i++) {
		teller = teller + 1;
		var rad = radene[i];
		if (rad.nodeName == 'TR') {
			if (rowOdd==true) {
				rowColor = "#FFFFFF"
				rowOdd = false;
			} else {
				rowColor = "#F0F0F0";
				rowOdd = true;
			}
			if (ie) { // Sjekken foretas i browsersjekk.js
				rad.setAttribute("bgcolor",rowColor,0);
			} else {
				rad.setAttribute("bgcolor",rowColor);
			}
		}
	}
}

/**************************************************************************************************************
* ELEMENTHÅNDTERING. Funksjonene jobber på DOM-elementer
**************************************************************************************************************/

/*
Sjekk om et element finnes i DOM. Returnerer true eller false.
*/
function finnesID(id) {
	var felt = document.getElementById(id);
	if (felt)
		return true;
	else 
		return false;
}

/*
Fjerner et element fra DOM. Hvis oppgitt elementID ikke finnes i DOM ignoreres funksjonen
*/
function removeElement(elementID) {
	var element = document.getElementById(elementID);
	if (element) {
		var foreldreNode = element.parentNode;
		if (foreldreNode) {
			foreldreNode.removeChild(element);
		}
	}
}

/*
Viser et element i DOM. Display nullstilles. Hvis oppgitt elementID ikke finnes i DOM ignoreres funksjonen
*/
function displayElement(elementID) {
	var element = document.getElementById(elementID);
	if (element)
		element.style.display='';
}

/*
Skjuler et element i DOM. Display settes til "none". Hvis oppgitt elementID ikke finnes i DOM ignoreres funksjonen
*/
function unDisplayElement(elementID) {
	var element = document.getElementById(elementID);
	if (element) 
		element.style.display='none';
}

/*
Skjuler et element i DOM. Visibility settes til "hidden". Hvis oppgitt elementID ikke finnes i DOM ignoreres funksjonen
*/
function hideElement(elementID) {
	var element = document.getElementById(elementID);
	if (element)
		element.style.visibility='hidden';
}

/*
Viser et element i DOM. Visibility settes til "block". Hvis oppgitt elementID ikke finnes i DOM ignoreres funksjonen
*/
function unHideElement(elementID) {
	var element = document.getElementById(elementID);
	if (element) 
		element.style.visibility='block';
}

/*
Tømmer et element for innhold. Hvis oppgitt elementID ikke finnes i DOM ignoreres funksjonen
*/
function emptyElement(elementID) {
	var element = document.getElementById(elementID);
	if (element) 
		element.innerHTML='';
}


/**************************************************************************************************************
* UTILITIES. Generelle utilities som ikke er sugd av eget bryst
**************************************************************************************************************/

/*
Returner et array med verdiene til checkboksene som er avkrysset for oppgitt buttonGroup.
*/
function getSelectedCheckboxValue(buttonGroup) {
   // return an array of values selected in the check box group. if no boxes
   // were checked, returned array will be empty (length will be zero)
   var retArr = new Array(); // set up empty array for the return values
   var selectedItems = getSelectedCheckbox(buttonGroup);
   if (selectedItems.length != 0) { // if there was something selected
      retArr.length = selectedItems.length;
      for (var i=0; i<selectedItems.length; i++) {
         if (buttonGroup[selectedItems[i]]) { // Make sure it's an array
            retArr[i] = buttonGroup[selectedItems[i]].value;
         } else { // It's not an array (there's just one check box and it's selected)
            retArr[i] = buttonGroup.value;// return that value
         }
      }
   }
   return retArr;
} // Ends the "getSelectedCheckBoxValue" function


function getSelectedCheckbox(buttonGroup) {
   // Go through all the check boxes. return an array of all the ones
   // that are selected (their position numbers). if no boxes were checked,
   // returned array will be empty (length will be zero)
   var retArr = new Array();
   var lastElement = 0;
   if (buttonGroup[0]) { // if the button group is an array (one check box is not an array)
      for (var i=0; i<buttonGroup.length; i++) {
         if (buttonGroup[i].checked) {
            retArr.length = lastElement;
            retArr[lastElement] = i;
            lastElement++;
         }
      }
   } else { // There is only one check box (it's not an array)
      if (buttonGroup.checked) { // if the one check box is checked
         retArr.length = lastElement;
         retArr[lastElement] = 0; // return zero as the only array value
      }
   }
   return retArr;
} // Ends the "getSelectedCheckbox" function




function getSelectedRadio(buttonGroup) {
   // returns the array number of the selected radio button or -1 if no button is selected
   if (buttonGroup[0]) { // if the button group is an array (one button is not an array)
      for (var i=0; i<buttonGroup.length; i++) {
         if (buttonGroup[i].checked) {
            return i
         }
      }
   } else {
      if (buttonGroup.checked) { return 0; } // if the one button is checked, return zero
   }
   // if we get to this point, no radio button is selected
   return -1;
} // Ends the "getSelectedRadio" function

function getSelectedRadioValue(buttonGroup) {
   // returns the value of the selected radio button or "" if no button is selected
   var i = getSelectedRadio(buttonGroup);
   if (i == -1) {
      return "";
   } else {
      if (buttonGroup[i]) { // Make sure the button group is an array (not just one button)
         return buttonGroup[i].value;
      } else { // The button group is just the one button, and it is checked
         return buttonGroup.value;
      }
   }
} // Ends the "getSelectedRadioValue" function


function insertAfter(new_node, existing_node) {
	  // if the existing node has a following sibling, insert the current
	  // node before it.  otherwise appending it to the parent node
	  // will correctly place it just after the existing node.
	
	if (existing_node.nextSibling) {
	    // there is a next sibling.  insert before it using the mutual
	    // parent's insertBefore() method.
	  existing_node.parentNode.insertBefore(new_node, existing_node.nextSibling);
	} else {
	    // there is no next sibling. append to the end of the parent's
	    // node list.
	  existing_node.parentNode.appendChild(new_node);
	}

}


function findPos(obj) {
	var curleft = curright = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}

function findHeight(obj) {
	var curheight = 0;
	curheight = obj.offsetHeight
	return curheight;
}

function swapRows(a, b){
	var bP = b.parentNode;
	var aP = a.parentNode;
	var bS = b.nextSibling;
	a.parentNode.insertBefore(b, a.nextSibling);
	bP.insertBefore(a, bS);
}
	
// Fra http://www.howtocreate.co.uk/tutorials/javascript/browserwindow
function windowClientSize() {
  var myWidth = 0, myHeight = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
  }
  return {width: myWidth, height: myHeight};
}

function doUnderline(element) {
	element.style.textDecoration='underline';
}	

function undoUnderline(element) {
	element.style.textDecoration='none';
}

function loginBoxShow() {
	jQuery("#loginBox").show();
	jQuery("#loginMenu").hide();
}
