var hg_valasztok = [];

var Valaszto = function(id, initobj) {
	var $ = function(id) { return document.getElementById(id); };
	var szulo = ((typeof(id).toLowerCase() == 'string') ? $(id) : id), self = this, initobject = initobj, az_elem, legordulo, kapcsolodo_elem, aktivstilus;
	this.beallitasok = {
		normal: 'valaszto',
		over: false,
		aktiv: false,
		latszik: 'kombolatszik',
		nemlatszik: 'kombonemlatszik'
	};
	var latszik = new RegExp(this.beallitasok.latszik), nemlatszik = new RegExp(this.beallitasok.nemlatszik);
	var nyitva = false;
	this.aktiv = false;

	this.stilusvalt = function(parameterek) {
		if (this.aktiv && parameterek.fokusz_elveszt === undefined && (parameterek.stilus == 'normal' || parameterek.stilus == 'over')) {
			return false;
		}
		szulo.className = this.beallitasok[parameterek.stilus];
		aktivstilus = parameterek.stilus;
		this.aktiv = ((parameterek.stilus == 'aktiv') ?  true : false);
		if (kapcsolodo_elem !== undefined && parameterek.masikelem === undefined) {
			kapcsolodo_elem.stilusvalt({stilus: parameterek.stilus, masikelem: true});
		}
		return true;
	};

	this.ujelem = function(elem) {
		kapcsolodo_elem = elem;
	};

	this.bezar = function() {
		nyitva = false;
		legordulo.className = legordulo.className.replace(latszik, this.beallitasok.nemlatszik);
		this.stilusvalt({stilus: 'normal', fokusz_elveszt: true});
		if (kapcsolodo_elem !== undefined) {
			kapcsolodo_elem.stilusvalt({stilus: 'normal', masikelem: true});
		}
		document.getElementsByTagName('body')[0].onclick = null;
	};

	this.kinyit = function() {
		nyitva = true;
		legordulo.className = legordulo.className.replace(nemlatszik, this.beallitasok.latszik);
		if (this.beallitasok.aktiv !== false) {
			this.stilusvalt({stilus: 'aktiv'});
		}
		if (kapcsolodo_elem !== undefined) {
			kapcsolodo_elem.stilusvalt({stilus: 'aktiv', masikelem: true});
		}
		setTimeout(function() {
			var body = document.getElementsByTagName('body')[0];
			body.onclick = function() { for (var i in hg_valasztok) { hg_valasztok[i].bezar(); } };
		}, 20);
	};

	this.kinyitbezar = function() {
		if (nyitva) {
			this.bezar();
		}
		else {
			this.kinyit();
		}
	};

	function konstruktor() {
		if (initobject !== undefined) {
			for (var i in initobject) {
				self.beallitasok[i] = initobject[i];
			}
		}

		aktivstilus = szulo.className = self.beallitasok.normal;
		az_elem = szulo.getElementsByTagName('a')[0];
		az_elem.obj = self;
		az_elem.hideFocus = true;
		az_elem.onmouseover = function() { this.obj.stilusvalt({stilus: 'over'}); };
		az_elem.onmouseout = function() { this.obj.stilusvalt({stilus: 'normal'}); };
		az_elem.onclick = function() { this.obj.kinyitbezar(); return false; };
		legordulo = szulo.getElementsByTagName('ul')[0];
		hg_valasztok[hg_valasztok.length] = self;
	}

	konstruktor();
};
