/** 
 * @fileoverview Funktioner der benyttes af andre script til mere grundlæggende ting som at placere et lag et givent sted. 
 * Scriptsene tager som udgangspunkt højde for forskellige browsertyper m.m.
 * Benytte bl.a. på {@link http://srv/domus} sitet
 *
 * @author Marten Ølgaard moe@comonto.dk
 * @version 1.0 
 */


/**
 * Opretter en ny StoerrelserOgPlacering klasse.
 * @class StoerrelserOgPlacering klassens constructor.  
 */
function StoerrelserOgPlacering(){

//Script der finder browsertypen
var version=parseFloat(navigator.appVersion);
var agt= navigator.userAgent.toLowerCase();

this.ns4 = (navigator.appName == "Netscape" && version<5);
this.ns5 = (navigator.appName == "Netscape" && version>=5);

this.op5 = (agt.indexOf("opera 5")!=-1) ||(agt.indexOf("opera/5")!=-1);
this.op6 = (agt.indexOf("opera 6")!=-1) ||(agt.indexOf("opera/6")!=-1);
this.mac = (agt.indexOf("mac")!=-1);
this.msie = (agt.indexOf("msie") != -1); 
this.msie4 = (agt.indexOf("msie") != -1 && version<5); 

//this.mac_ie = this.mac && ie;
/**/
   /**
    * This is an example of a function that is not given as a property
    * of a prototype, but instead it is assigned within a constructor.
    * For inner functions like this to be picked up by the parser, the
    * function that acts as a constructor <b>must</b> be denoted with
    * the <b>&#64;constructor</b> tag in its comment.
    * @type String
    */	
   this.getClassName = function(){
      return "StoerrelserOgPlacering";
   }


}



/**
 * Er browseren en 
 * @type Bool
 */
StoerrelserOgPlacering.prototype.ns4 = false;
/**
 * Er browseren en 
 * @type Bool
 */
StoerrelserOgPlacering.prototype.ns5 = false;
/**
 * Er browseren en 
 * @type Bool
 */
StoerrelserOgPlacering.prototype.op5 = false;
/**
 * Er browseren en 
 * @type Bool
 */
StoerrelserOgPlacering.prototype.op6 = false;
/**
 * Er browseren en 
 * @type Bool
 */
StoerrelserOgPlacering.prototype.mac = false;
/**
 * Er browseren en 
 * @type Bool
 */
StoerrelserOgPlacering.prototype.msie = false;
/**
 * Er browseren en 
 * @type Bool
 */
StoerrelserOgPlacering.prototype.msie4 = false;
/**
 * Er browseren en 
 * @type Bool
 */
StoerrelserOgPlacering.prototype.mac_ie = false;

// StoerrelserOgPlacering_
//
StoerrelserOgPlacering.prototype.flytElement = StoerrelserOgPlacering_flytElement;
StoerrelserOgPlacering.prototype.setXVaerdi = StoerrelserOgPlacering_setXVaerdi;
StoerrelserOgPlacering.prototype.setYVaerdi = StoerrelserOgPlacering_setYVaerdi;
StoerrelserOgPlacering.prototype.setHojde = StoerrelserOgPlacering_setHojde;
StoerrelserOgPlacering.prototype.setBredde = StoerrelserOgPlacering_setBredde;

StoerrelserOgPlacering.prototype.findPosX = StoerrelserOgPlacering_findPosX;
StoerrelserOgPlacering.prototype.findPosY = StoerrelserOgPlacering_findPosY;
StoerrelserOgPlacering.prototype.findBredde = StoerrelserOgPlacering_findBredde;
StoerrelserOgPlacering.prototype.findHojde = StoerrelserOgPlacering_findHojde;

StoerrelserOgPlacering.prototype.skjulElement = StoerrelserOgPlacering_skjulElement;
StoerrelserOgPlacering.prototype.visElement = StoerrelserOgPlacering_visElement;

//
StoerrelserOgPlacering.prototype.getObjNN4 = StoerrelserOgPlacering_getObjNN4;
StoerrelserOgPlacering.prototype.getStyleObject = StoerrelserOgPlacering_getStyleObject;

// Alle klassens metoder //////////////////////////////////////////////




/**
 * Flytter et element
 * @param {string} Elementets id som tekst
 * @param {int} X-koordinaten
 * @param {int} Y-koordinaten
 */
function StoerrelserOgPlacering_flytElement(myObject, x, y) {
this.setXVaerdi(myObject, x);
this.setYVaerdi(myObject,y);
}

/**
 * Flytter et element
 * @param {string} Elementets id som tekst
 * @param {int} X-koordinaten
 */
function StoerrelserOgPlacering_setXVaerdi(myObject, x) {
	obj = this.getStyleObject(myObject);
	if (this.ns4) {
 		obj.left = x;
	} else {
		if (this.op5) {
 			obj.pixelLeft = x;
		} else {
 			obj.left = x + 'px';
		}	
	}
}

/**
 * Flytter et element
 * @param {string} Elementets id som tekst
 * @param {int} Y-koordinaten
 */
function StoerrelserOgPlacering_setYVaerdi(myObject,y) {
	var obj = this.getStyleObject(myObject);
	
	if (this.ns4) {
		obj.top = y;
	} else {
		if (this.op5) {
			obj.pixelTop = y;
		} else {
			obj.top = y + 'px';
		}	
	}
}

/**
 * Giver et element en given højde
 * @param {string} Elementets id som tekst
 * @param {int} Højden i pixels
 */
function StoerrelserOgPlacering_setHojde(elementId,hojde) {
	var obj = this.getStyleObject(elementId);
	if (this.ns4) {
 		obj.height = hojde;
	} else {
		if (this.op5) {
 			obj.height = hojde;
		} else {
 			obj.height = hojde + 'px';
		}	
	}
	
}


/**
 * Giver et element en given højde
 * @param {string} Elementets id som tekst
 * @param {int} Bredden i pixels
 */
function StoerrelserOgPlacering_setBredde(elementId,hojde) {
	var obj = this.getStyleObject(elementId);
	if (this.ns4) {
 		obj.width = hojde;
	} else {
		if (this.op5) {
 			obj.width = hojde;
		} else {
 			obj.width = hojde + 'px';
		}	
	}
	
}


/**
 * Finder Y-positionen af et element
 * @param {string} Elementets id som tekst
 * @returns Y-koordinaten for objektets øverste venstre hjørne
 * @type Integer
 */
function StoerrelserOgPlacering_findPosY(elementId)
{
	var obj = document.getElementById(elementId);
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}



/**
 * Finder X-positionen af et element
 * @param {string} Elementets id som tekst
 * @returns X-koordinaten for objektets øverste venstre hjørne
 * @type Integer
 */
function StoerrelserOgPlacering_findPosX(elementId){
	var obj = document.getElementById(elementId);
	var curleft = 0;
	
	if (obj.offsetParent){
		while (obj.offsetParent){
			curleft += obj.offsetLeft;
			obj = obj.offsetParent;
		}
	}
	else if (obj.x) curleft += obj.x;
	return curleft;
}

/**
 * Finder højden af et element
 * @param {string} Elementets id som tekst
 * @returns X-koordinaten for objektets øverste venstre hjørne
 * @type Integer
 */
 function StoerrelserOgPlacering_findHojde(Elem) {
	if (this.ns4) {
		var elem = getObjNN4(document, Elem);
		return elem.clip.height;
	} else {
		if(document.getElementById) {
			var elem = document.getElementById(Elem);
		} else if (document.all){
			var elem = document.all[Elem];
		}
		if (this.op5) { 
			xPos = elem.style.pixelHeight;
		} else {
			xPos = elem.offsetHeight;
		}
		return xPos;
	} 
}

/**
 * Finder højden af et element
 * @param {string} Elementets id som tekst
 * @returns X-koordinaten for objektets øverste venstre hjørne
 * @type Integer
 */
function StoerrelserOgPlacering_findBredde(Elem) {
	if (this.ns4) {
		var elem = getObjNN4(document, Elem);
		return elem.clip.width;
	} else {
		if(document.getElementById) {
			var elem = document.getElementById(Elem);
		} else if (document.all){
			var elem = document.all[Elem];
		}
		if (this.op5) {
			xPos = elem.style.pixelWidth;
		} else {
			xPos = elem.offsetWidth;
		}
		return xPos;
	}
}



/**
 * Slukker for et lag med det pågældende id
 * @param {string} Elementets id som tekst
 */
function StoerrelserOgPlacering_skjulElement(elementId) {
	if(document.getElementById(elementId)){
document.getElementById(elementId).style.visibility = "hidden";
document.getElementById(elementId).style.display = "none";

	}
}

/**
 * Tænder for et lag med det pågældende id
 * @param {string} Elementets id som tekst
 */
function StoerrelserOgPlacering_visElement(elementId) {
	if(document.getElementById(elementId)){
	document.getElementById(elementId).style.visibility = "visible";
document.getElementById(elementId).style.display = "block";
}
} 


//
function StoerrelserOgPlacering_getStyleObject(objectId) {
	if(document.getElementById && document.getElementById(objectId)) {
		return document.getElementById(objectId).style;
	} else if (document.all && document.all(objectId)) {
		return document.all(objectId).style;
	} else if (document.layers && document.layers[objectId]) {
		return this.getObjNN4(document,objectId);
	} else {
		return false;
	}
} 



//
function StoerrelserOgPlacering_getObjNN4(obj,name)
{
	var x = obj.layers;
	var foundLayer;
	for (var i=0;i<x.length;i++)
	{
		if (x[i].id == name)
		 	foundLayer = x[i];
		else if (x[i].layers.length)
			var tmp = this.getObjNN4(x[i],name);
		if (tmp) foundLayer = tmp;
	}
	return foundLayer;
}
