 
/* 	

	Javascript modulbibliotek af DHTML-funktioner.
	Copyright ® Jørgen Farum Jensen 2002, 2003
	jensen@webdesign101.dk
  Der er ingen garantier af nogen art knyttet til denne software, 
  heller ikke med hensyn til funktionalitet. 
	Jørgen Farum Jensen kan ikke drages til ansvar for nogen skade 
	eller ulempe foråsaget af anvendelsen af denne kode.
	+++
	Senest opdateret 18/2-2003 med CLIP-funktioner nr. 24-25-26 samt
  universalfunktion til udskiftning af nodetekst - funktion nr. 27.
	+++
	
*/
// Find ud af, hvilken browser der er tale om:

var ver3 = (navigator.appVersion.charAt(0) <= "3") ? 	true : false;
var dom = (document.getElementById) ? 	true : false;
var ie4 = (document.all && !document.getElementById) ? 	true : false;
var ns4 = (document.layers) ? 	true : false;
var ie5 = (document.all && document.getElementById) ? 	true : false;
var n6 = (document.getElementById && !document.all) ?  true : false;
var msie = (document.all) ?true:false;
var ie6 = (navigator.appVersion.indexOf("MSIE 6") != -1)  ? true : false;
// 1.	Find style-objektet

function findObjekt(objekt) {
var blok;
  	if (dom) 
			blok = document.getElementById(objekt).style;
  	else 
	if (ie4) 
			blok = document.all[objekt].style;
  	else 
	if (ns4) 
			blok = document.layers[objekt];
  	return blok;
}

// 2.   Find objektet

function findKerneObjekt(objekt) {
var blok;
  	if (dom) 
			blok = document.getElementById(objekt);
  	else 
	if (ie4) 
			blok = document.all[objekt];
  	else 
	if (ns4) 
			blok = document.layers[objekt];
  return blok;
}

// 3.	Sæt baggrundsfarve for objektet

function setBgColor(objekt, color) {
var blok = findObjekt(objekt);
  			blok.backgroundColor = color;
}

//4. 	Sæt forgrundsfarve for objektet

function setFgColor(objekt,color) {
var blok = findObjekt(objekt);
			blok.color = color;
}

// 5.	Flyt objektet til koordinaterne x, y

function flytTil(objekt, x, y){
var blok = findObjekt(objekt);
  	if (document.moveTo) {
    		blok.moveTo(x,y);
  	}
   	else 
	if (ie5) {
		    blok.pixelLeft = x;
		    blok.pixelTop = y;
  	}
  	else 
	if (dom) {
			  blok.left=x
			  blok.top=y
  	}
}
// 6.	Flyt elementet med dx, dy pixel
function flytMed(objekt, dx, dy){
var blok = findObjekt(objekt);
  	if (blok.moveBy) {
    		blok.moveBy(dx, dy);
  	} 
  	else 
	if (ie5) {
		    blok.pixelLeft += dx;
		    blok.pixelTop  += dy;
  	} 
	else {
    blok.left = parseInt(blok.left) + dx;
    blok.top = parseInt(blok.top) + dy;
  	}
}

// 7. "Slider" - glider objektet til en ny position
//
var vent 	  // antal milliskeunder - jo mindre, des hurtigere går det
var spring 	// antal pixel, der skal flyttes per gang - jo større, 
            // desto hurtigere går det

var deltaX=0; // hvor meget skal der flyttes ad x-aksen
var deltaY=0; // hvor meget skal der flyttes ad y-aksen
var x;        // aktuel postion på x-aksen
var y;        // aktuel position på y-aksen

function slideObjekt(objekt, nyX, nyY, spring, vent){
  x = findX(objekt); 
  y = findY(objekt); 
  
  if (spring > 1) {
    if ((nyX % spring != 0) || (nyY % spring != 0)) {
      alert("slideObjekt kan ikke flytte objektet til et sted,\nder ikke " + 
        "er et lige antal gange spring (" + spring + ").\nFunktionen annulleret.");
      return;
    }
  }
        
  if (x < nyX) deltaX = spring;   // Hvor ligger det nye x,y-punkt
  if (x > nyX) deltaX = -spring;  // i forhold til det aktuelle x,y-punkt
  if (y < nyY) deltaY = spring;   //
  if (y > nyY) deltaY = -spring;  //
  
  doSlide(objekt, nyX, nyY);
}

function doSlide(objekt, nyX, nyY)
{
  // do the actual slide...
  
    if ((x != nyX) || (y != nyY)) {
      if (x == nyX) deltaX = 0; // Vi har nået det nye x-punkt
      if (y == nyY) deltaY = 0; // Vi har nået det nye y-punkt
      if (deltaX + deltaY == 0) 
      return;                   // færdig! Funktionen afbrydes

    x += deltaX; // læg værdien af deltaX (+/- spring) til x
    y += deltaY; // læg værdien af deltaY (+/- spring) til y
  
    flytTil(objekt, x, y); // Udfør den incrementale flytning
    
    doIt = "doSlide('" + objekt + "'," + nyX + ", " + nyY + ")";    
    setTimeout(doIt, vent); // Kør løkken igen efter ventetiden
  }
}

// 8. 	Vis objektet
function visObjekt(objekt){
var blok = findObjekt(objekt);
  			blok.visibility = "visible";
}
// 9.	Skjul objektet
function skjulObjekt(objekt){
var blok = findObjekt(objekt);
  			blok.visibility = "hidden";
}
// 10.	Find objektets x-koordinat
function findX(objekt){
var blok = findObjekt(objekt);
	if (ie4) {
    		x = blok.pixelLeft;
  	} 
	else {
    		x = blok.left;
  	}
  	return(parseInt(x));  
}
// 11.	Find objektets y-koordinat
function findY(objekt){
var blok = findObjekt(objekt);
	if (ie4) {
    		y = blok.pixelTop;
  	} 
	else {
    		y = blok.top;
  	}
  	return(parseInt(y));  
}
// 12.	Find browservinduets bredde 
function windowWidth(){
    
  	if (ie4 || ie5) {
    		width = document.body.clientWidth;
  	} 
	else {
    		width = window.innerWidth;
  	}
  	return(parseInt(width));
}
// 13.	Find browservinduets højde
function windowHeight(){
	if (ie4 || ie5) {
    		height = document.body.clientHeight;
  	} 
	else 
  	{
    		height = window.innerHeight;
  	}
  	return(parseInt(height));
}
// 14. 	Find skærmens bredde 
function screenWidth(){
  	return(parseInt(window.screen.width));
}
// 15.	Find skærmens højde
function screenHeight(){
	return(parseInt(window.screen.height));
}
// 16.	Find objektets højde
function objektH(objekt){
var blok = findKerneObjekt(objekt);
	if (blok.offsetHeight) 
	{
    		h = blok.offsetHeight;
  	} 
	else {
    		h = blok.clip.height;
  	}
  	return(parseInt(h));
}
//16a Sæt objektets højde
function setHeight(objekt,h){
var blok = findKerneObjekt(objekt);

blok.clip.height =h;
}

// 17.	Find objektets bredde 
function objektB(objekt){
var blok = findKerneObjekt(objekt);
  	if (blok.offsetWidth) {
    		b = blok.offsetWidth;
  	} 
	else {
    		b = blok.clip.width;
  	}
  	return(parseInt(b));
}
// 18.	Centrer objektet i browservinduet
function centrer(objekt){
var y = findY(objekt);
var x = findX(objekt);
var bbredde = windowWidth();
var obredde = objektB(objekt);
var hhojde =windowHeight();
var ohojde = objektH(objekt);
var nyx = Math.floor((bbredde - obredde) / 2);
var nyy = Math.floor((hhojde - ohojde) / 2);
flytTil(objekt, nyx, nyy);
}
// 19. Centrer vandret 
function centrerH(objekt){
var y = findY(objekt);
var x = findX(objekt);
var bbredde = windowWidth();
var obredde = objektB(objekt);
var nyx = Math.floor((bbredde - obredde) / 2);
flytTil(objekt, nyx, y);
}
// 20. Centrer lodret 
function centrerV(objekt){
var y = findY(objekt);
var x = findX(objekt);
var hhojde =windowHeight();
var ohojde = objektH(objekt);
var nyy = Math.floor((hhojde - ohojde) / 2);

flytTil(objekt, x, nyy);
}
// 21.	Bring objektet tilsyne (blok)
function expand(objekt){
var blok = findObjekt(objekt);
blok.display="block"
}
// 21a Samme, men med bedre funktionsnavn 
function expandObjekt(objekt){
var blok = findObjekt(objekt);
blok.display="block"
}

// 21b. Bring objektet tilsyne (inline)
function expandInline(objekt){
var blok = findObjekt(objekt);
blok.display="inline"
}
// 22. Fjern objektet 
function collapse(objekt){
var blok = findObjekt(objekt);
blok.display="none"
}
// 22a. Samme, men med bedre funktionsnavn
function collapseObjekt(objekt){
var blok = findObjekt(objekt);
blok.display="none"
}
// 23. Sæt z-index
function setZindex(objekt, z) {
var blok = findObjekt(objekt);
  			blok.zIndex = z;
}
// 24. find CLIP værdier --- KUN DOM-browsere, ekskl. OPERA
// Returnerer KUN CLIP-værdier til funktion 26.
function clipValues(objekt,kant){

var clipv=objekt.clip.split("rect(")[1].split(")")[0].split("px")
if (kant=="t") return parseInt(clipv[0])
if (kant=="r") return parseInt(clipv[1])
if (kant=="b") return parseInt(clipv[2])
if (kant=="l") return parseInt(clipv[3])
}
// 24a. find CLIP værdier --- KUN DOM-browsere, ekskl. OPERA
// Returnerer CLIP-værdier til eksten funktion
function clipTal(objekt,kant){
var blok = findObjekt(objekt);
var clipT=blok.clip.split("rect(")[1].split(")")[0].split("px")
if (kant=="t") return parseInt(clipT[0])
if (kant=="r") return parseInt(clipT[1])
if (kant=="b") return parseInt(clipT[2])
if (kant=="l") return parseInt(clipT[3])
}
// 25. Clipping (Beskæring) TIL nye mål --- KUN DOM-browsere, ekskl. OPERA
function clipTil(objekt,t,r,b,l){
var blok = findObjekt(objekt);
	blok.clip = "rect("+t+"px "+r+"px "+b+"px "+l+"px)"
}
// 26. Beskæring med et antal pixel --- Kun DOM browsere, ekskl.Opera
function clipMed(objekt,t,r,b,l){

var blok=findObjekt(objekt);
	blok.clip = "rect("+(this.clipValues(blok,'t')+t)+"px "+(this.clipValues(blok,'r')+r)+"px "+(this.clipValues(blok,'b')+b)+"px "+(this.clipValues(blok,'l')+l)+"px)"
}
//27. Udskiftning af tekst
function nytIndhold(objekt,text){
var blok = findKerneObjekt(objekt);
blok.firstChild.nodeValue=text;
return;
}

// 28. Find x-positionen for en event
function findEventX(eventObjekt)
{
  if (msie && !ie6) 
    return eventObjekt.x;
  if (dom)
    return eventObjekt.clientX;
  if (ns4) 
    return eventObjekt.pageX;
  return null;
}
// 29. Find y-positionen for en event
function findEventY(eventObjekt)
{
  if (msie && !ie6) 
    return eventObjekt.y;
  if (dom)
    return eventObjekt.clientY;
  if (ns4) 
    return eventObjekt.pageY;
  return null;
}