/** 
 * @fileoverview Klasse der benyttes til at lave en dropdown menu
 * Dropdown menuerne placerer sig i forhold til menupunkterne
 * Scriptsene tager som udgangspunkt højde for forskellige browsertyper m.m.
 * Denne klasse benytter StoerrelserOgPlacering. 
 *
 * @author Marten Ølgaard moe@comonto.dk
 * @version 1.0 
 */


/**
 * Opretter en ny DropDown klasse.
 * @class DropDown klassens constructor.  
 */
function DropDown(ekstraX, ekstraY, alignment){

if(ekstraX != null) this.ekstraX = ekstraX;
if(ekstraY != null) this.ekstraY = ekstraY;
if(alignment != null) this.alignment = alignment;

/**
* returnerer klassens type
* @type String
*/	
this.getClassName = function(){
return "DropDown";
}

this.menusluk=setTimeout('DropDown_test()',500);
clearTimeout(this.menusluk);

}

//Metoderne
DropDown.prototype.visMenu = DropDown_VisMenu;
DropDown.prototype.skjulMenu = DropDown_SkjulMenu;
DropDown.prototype.skjulLag = DropDown_SkjulLag;
DropDown.prototype.bevarMenu = DropDown_BevarMenu;

//Propertiesne
/**
 * Timeout objektet 
 * @type Timeout
 */
DropDown.prototype.menusluk = null;

/**
 * Navnet på det viste lag
 * @type string
 */
DropDown.prototype.vistLag = "";

/**
 * Navnet på det viste lag
 * @type string
 */
DropDown.prototype.ekstraX = 0;

/**
 * Navnet på det viste lag
 * @type string
 */
DropDown.prototype.ekstraY = 0;

/**
 * Navnet på det viste lag
 * @type string
 */
DropDown.prototype.alignment = "left";

/**
 * Navnet på det viste lag
 * @type string
 */
DropDown.prototype.grafikSti = "";

/**
 * Navnet på det viste lag
 * @type string
 */
DropDown.prototype.visGrafikSti = "";

/**
 * Navnet på det viste lag
 * @type string
 */
DropDown.prototype.grafikElement = "";


//funktion der kun bruges til at 
function DropDown_test(){
}

/**
 * Viser et lag
 * @param {string} Menu lagets Id
 * @param {string} Det kaldende elements Id
 * @param {int} Pixels der skal lægges til x positionen
 * @param {int} Pixels der skal lægges til y positionen
 */
function DropDown_VisMenu(menunavn, elementID,tempGrafikElement){

if(this.vistLag != ""){
this.skjulLag()
}

clearTimeout(this.menusluk);
// finder x og y position af linkende element
var sp = new StoerrelserOgPlacering();
//viser laget
sp.visElement(menunavn);
var x = sp.findPosX(elementID)+ this.ekstraX ;
var y = sp.findPosY(elementID)+ this.ekstraY ;


if(this.alignment == "right") x =  x + sp.findBredde(elementID)-sp.findBredde(menunavn);
else if(this.alignment == "center") x =  x + (sp.findBredde(elementID)-sp.findBredde(menunavn))/2;

//placerer laget
sp.flytElement(menunavn, x, y);

this.vistLag = menunavn;
this.grafikElement = tempGrafikElement;
if(this.grafikElement!=null && this.grafikElement!=""){
	this.visGrafikSti  = window.document.getElementById(this.grafikElement).src;
	window.document.getElementById(this.grafikElement).src= this.grafikSti;
	}

}

/**
 * Sætter timout til at skjule det aktuelle menulag
 */
function DropDown_SkjulMenu(){
var pThis = this;
// nested function der er nødvendigt for at objektets state huskes ved timeout
f = function(){
pThis.skjulLag();
}
this.menusluk = window.setTimeout(f, 500);
}

/**
 * Skjuler det aktuelle menulag
 */
function DropDown_SkjulLag(){
var sp = new StoerrelserOgPlacering();
sp.skjulElement(this.vistLag);
this.vistLag = "";


if(this.grafikElement!=null && this.grafikElement!="" && this.visGrafikSti!=null && this.visGrafikSti!=""){
	window.document.getElementById(this.grafikElement).src= this.visGrafikSti;
this.visGrafikSti = "";
}
}

/**
 * Annulerer timouten for det sktuelle menulag
 */
function DropDown_BevarMenu(){
clearTimeout(this.menusluk);
}