if (!events_js)	alert("Se requiere el uso de la librería events.js");

function Watermark(id, texto, sCssClass)
{
	if (sCssClass)
		this.cssClass = sCssClass;
		
	var e = document.getElementById(id);
	if (!e)
	{
		alert("No se encuentra el elemento al que asignar el watermark.");
		return null;
	}
	
	e._watermark = this; //se lo añadimos al elemento como un atributo más
	
	this.Id = id;
	this.Texto = texto;
	this.Element = e;
}

Watermark.prototype.Id = null;

Watermark.prototype.Texto = "";

Watermark.prototype.CssClass = "watermark";

Watermark.prototype.Element = null;

Watermark.prototype.toString = 
function()
{
	return "[Watermark Object]";
}

Watermark.prototype.show = 
function(bShow) 
{
	var e = this.Element;
	
	if (bShow)
	{
		e.value = this.Texto;
		addCSSClass(e, this.CssClass);
	}
	else
	{
		e.value = "";
		removeCSSClass(e, this.CssClass);
	}
}

Watermark.WatermarkList = new Array();

Watermark.onLoadBodyHandler = 
function(event)
{
	var v = Watermark.WatermarkList;
	var b, e;
	for(var i=0; i<v.length; i++)
	{
		e = v[i].Element;
		if (e)
		{
			if (e.value == "")
			{
				v[i].show(true);
			}
		}
	}
}

Watermark.onSubmitFormHandler = 
function(event)
{
	var v = Watermark.WatermarkList;
	var e;
	for(var i=0; i<v.length; i++)
	{
		e = v[i].Element;
		if (!e)
			continue;
		//si está activo el watermark lo quitamos
		if (e.value == v[i].Texto)
			v[i].show(false);
	}
}

Watermark.onFocusElementHandler = 
function(event)
{
	var txt = ((event.target)?event.target:event.srcElement);
	
	var watermark = txt._watermark;
	if (watermark)
	{
		if (txt.value == watermark.Texto)
		{
			watermark.show(false);
		}
	}
}

Watermark.onKeyPressedHandler = 
function(event)
{
	var txt = ((event.target)?event.target:event.srcElement);
	var watermark = txt._watermark;
	if (watermark)
	{
		//if (watermark.Activo) && this.value != "")
		//{
		//	watermark.show(false);
		//}
	}
}

Watermark.onBlurElementHandler = 
function(event)
{
	var txt = ((event.target)?event.target:event.srcElement);

	var watermark = txt._watermark;
	if (watermark)
	{
		if ((txt.value == "") || (txt.value == watermark.Texto))
		{
			watermark.show(true);
		}
	}
}

Watermark.Inicializados = false;

Watermark.addWatermark = 
function(watermark)
{
	Watermark.WatermarkList.push(watermark);
	
	var e = watermark.Element;
	if (e.form)
	{
		setEvent("onsubmit", Watermark.onSubmitFormHandler, e.form, true);
		//setEvent("onreset", Watermark.onResetFormHandler, e.form, true); //TODO: implementar el navegador para este evento
	}
	//alert(Watermark.onFocusHandler)
	setEvent("onload", Watermark.onLoadBodyHandler, window, true);

	setEvent("onkeyup", Watermark.onKeyPressedHandler, e, true);
	setEvent("onfocus", Watermark.onFocusElementHandler, e, true);
	setEvent("onblur", Watermark.onBlurElementHandler, e, true);
	
	if (!Watermark.Inicializados)
	{
		Watermark.Inicializados = true;
		setEventByTagName('onsubmit', Watermark.clearWatermarks, 'form', true);
	}
}

Watermark.clearWatermarks = 
function()
{
	var e = null;
	var w = Watermark.WatermarkList;
	for(var i=0; i<Watermark.WatermarkList.length; i++)
	{
		w = Watermark.WatermarkList[i];
		//alert(w);
		e = w.Element;
		if (e.value == w.Texto)
		{
			w.show(false)
		}
	}
}

Watermark.resetWatermarks = 
function()
{
	var e = null;
	var w = Watermark.WatermarkList;
	for(var i=0; i<Watermark.WatermarkList.length; i++)
	{
		w = Watermark.WatermarkList[i];
		//alert(w);
		e = w.Element;
		if (e.value == "")
		{
			w.show(true)
		}
	}
}

