var Szovegmezo = function(elem, parameterek) {
	var $ = function(id) { return document.getElementById(id); };
	var szulo = ((typeof(elem).toLowerCase() == 'string') ? $(elem) : elem), tarto, aktivstilus, self = this;
	var szelesseg = szulo.offsetWidth, magassag = szulo.offsetHeight;
	var i;
	this.aktiv = false;
	this.alapertek = false;
	this.beallitasok = {
		label: false,
		normal: false,
		over: false,
		aktiv: false,
		maxkarakter: false
	};

	function stilus(obj, mezo, mozilla, parseint) {
		var eredmeny = '';
		if (obj.currentStyle) {
			eredmeny = obj.currentStyle[mezo];
		}
		if (window.getComputedStyle) {
			eredmeny = document.defaultView.getComputedStyle(obj, null).getPropertyValue(mozilla);
		}
		return ((parseint) ? parseInt(eredmeny, 10) : eredmeny);
	}

	function ujdiv(osztaly, szulo) {
		var div = document.createElement('div');
		div.className = osztaly;
		if (szulo) {
			szulo.appendChild(div);
		}
		return div;
	}

	function letrehoz() {
		tarto = ujdiv('szovegmezo');
		var balfent = ujdiv('balfent', tarto);
		var fent = ujdiv('fent', tarto);
		ujdiv('jobbfent', tarto);
		var jobb = ujdiv('jobb', tarto);
		var jobblent = ujdiv('jobblent', tarto);
		var lent = ujdiv('lent', tarto);
		ujdiv('ballent', tarto);
		var bal = ujdiv('bal', tarto);
		szulo.parentNode.insertBefore(tarto, szulo.nextSibling);
		tarto.appendChild(szulo);
		tarto.obj = self;
		szulo.obj = self;
		if (szulo.title.length) {
			self.alapertek = szulo.title;
			szulo.title = '';
		}
		if (self.alapertek.length && szulo.value === '') {
			szulo.value = self.alapertek;
		}

		if (self.beallitasok.over) {
			tarto.over_szamlalo = 0;
			tarto.onmouseover = function() { this.obj.stilusvalt({stilus: 'over'}); };
			tarto.onmouseout = function() { this.obj.stilusvalt({stilus: 'normal'}); };
		}
		szulo.onfocus = function() { this.obj.stilusvalt({stilus: 'aktiv', fokusz: true}); };
		szulo.onblur = function() { this.obj.stilusvalt({stilus: 'normal', fokusz: false}); };

		if (self.beallitasok.maxkarakter) {
			szulo.onpaste = szulo.onkeyup = function() { if (this.value.length > this.obj.beallitasok.maxkarakter) { this.value = this.value.substr(0, 200); } };
		}

		var balszelesseg = stilus(balfent, 'width', 'width', true);
		var fentmagassag = stilus(balfent, 'height', 'height', true);
		var jobbszelesseg = stilus(jobblent, 'width', 'width', true);
		var lentmagassag = stilus(jobblent, 'height', 'height', true);
		var _szelesseg = balszelesseg + jobbszelesseg;
		var _magassag = fentmagassag + lentmagassag;
		tarto.style.width = szelesseg + 'px';
		tarto.style.height = magassag + 'px';
		szulo.style.width = fent.style.width = lent.style.width = (szelesseg - _szelesseg) + 'px';
		szulo.style.height = bal.style.height = jobb.style.height = (magassag - _magassag) + 'px';

		//tarto.onmouseover = function() { if (this.className.indexOf('szoveg_over') == -1) { this.className += ' szoveg_over'; } };
	}

	this.stilusvalt = function(parameterek) {
		if (parameterek.stilus == 'over' && this.aktiv) {
			return false;
		}

		if (parameterek.fokusz !== undefined) {
			if (szulo.value == this.alapertek && parameterek.fokusz === true) {
				szulo.value = '';
			}
			if (szulo.value === '' && parameterek.fokusz === false && this.alapertek !== false) {
				szulo.value = this.alapertek;
			}

			if (parameterek.fokusz === true) {
				this.aktiv = true;
			}
			if (parameterek.fokusz === false) {
				this.aktiv = false;
			}
		}

		if (parameterek.stilus == 'normal' && this.aktiv === false) {
			tarto.className = 'szovegmezo';
			aktivstilus = this.beallitasok.normal;
		}
		if (parameterek.stilus == 'over' && this.aktiv === false) {
			tarto.className = 'szovegmezo ' + this.beallitasok.over;
			aktivstilus = this.beallitasok.over;
		}
		if (parameterek.stilus == 'aktiv') {
			tarto.className = 'szovegmezo ' + this.beallitasok.aktiv;
			aktivstilus = this.beallitasok.aktiv;
		}
		return true;
	};

	var konstruktor = function(initobject) {
		if (initobject !== undefined) {
			for (i in initobject) {
				self.beallitasok[i] = initobject[i];
			}
		}
		letrehoz();
	}(parameterek);

};
