if (typeof HTML == 'undefined') {
	HTML = {}
	
	HTML.addStyleClass = function (node, className) {
		if (node && isset(node.className)) {
			var rx = new RegExp('(^| )' + className + '( |$)', 'i');
			if (! node.className.match(rx)) {
				node.className += ' ' + className;
			}
			/*if (node.tagName === 'SELECT' && node.item) {
				node.item.value = node.item.value;
			}*/
		}
	}
	
	HTML.removeStyleClass = function (node, className) {
		if (node && isset(node.className)) {
			rx = new RegExp('(^|.*\\s)' + RegExp.quote(className) + '(\\s.*|$)', 'i');
			if (node.className.match(rx)) {
				rs = rx.exec(node.className);
				if (rs !== null) {
					node.className = rs[1] + ' ' + rs[2];
				}
			}
		}
	}
	
	HTML.__floatingMessage__ = {};
	
	HTML.__floatingMessage__.layerId    = '_form_item_message_layer_';
	
	HTML.__floatingMessage__.layer = null;
	
	HTML.__floatingMessage__.onMouseOver = function (event) {
		if (! event) {
			event = window.event;
		}
		
		var item = event.srcElement;
		if (! item.error) {
			return;
		}
		
		var layer = HTML.__floatingMessage__.layer;
		
		layer.innerHTML = item.error;
		layer.iframe.style.display = 'block';
		layer.style.display = 'block';
		var l = event.clientX + 8, t = event.clientY + 8, b = window.document.body;
		if (l + layer.offsetWidth > b.clientWidth) {
			l -= layer.offsetWidth + 16;
		}
		if (t + layer.offsetHeight > b.clientHeight) {
			t -= layer.offsetHeight + 16;
		}
		layer.iframe.style.width = layer.offsetWidth;
		layer.iframe.style.height = layer.offsetHeight;
		layer.iframe.style.left = l;
		layer.iframe.style.top = t;
		layer.style.left = l;
		layer.style.top = t;
	}
	
	HTML.__floatingMessage__.onMouseMove = function (event) {
		if (! event) {
			event = window.event;
		}
		
		var layer = HTML.__floatingMessage__.layer;
		
		var l = event.clientX + 8, t = event.clientY + 8, b = window.document.body;
		if (l + layer.offsetWidth > b.clientWidth) {
			l -= layer.offsetWidth + 16;
		}
		if (t + layer.offsetHeight > b.clientHeight) {
			t -= layer.offsetHeight + 16;
		}
		layer.iframe.style.width = layer.offsetWidth;
		layer.iframe.style.height = layer.offsetHeight;
		layer.iframe.style.left = l;
		layer.iframe.style.top = t;
		layer.style.left = l;
		layer.style.top = t;
	}
	
	HTML.__floatingMessage__.onMouseOut = function () {
		var layer = HTML.__floatingMessage__.layer;
		
		layer.style.display = 'none';
		layer.iframe.style.display = 'none';
	}
	
	HTML.addFloatingMessage = function (item) {
		if (! HTML.__floatingMessage__.layer) {
			var iframe = document.createElement('IFRAME');
			
			iframe.id             = HTML.__floatingMessage__.layerId + '_iframe';
			iframe.src            = 'javascript:void(0)';
			iframe.frameBorder    = '0';
			iframe.scrolling      = 'no';
			iframe.className      = 'form_message_layer';
			iframe.style.display  = 'none';
			iframe.style.position = 'absolute';
			iframe.style.left     = '0px';
			iframe.style.top      = '0px';
			iframe.style.zIndex   = '199';
			
			document.body.appendChild(iframe);
			
			var span = document.createElement('SPAN');
			
			span.id           = HTML.__floatingMessage__.layerId;
			span.className    = 'form_message_layer';
			span.style.zIndex = '200';
			
			document.body.appendChild(span);
			
			span.iframe                    = iframe;
			HTML.__floatingMessage__.layer = span;
		}
		
		item.attachEvent('onmouseover', HTML.__floatingMessage__.onMouseOver);
		item.attachEvent('onmousemove', HTML.__floatingMessage__.onMouseMove);
		item.attachEvent('onmouseout',  HTML.__floatingMessage__.onMouseOut);
	}
	
	HTML.removeFloatingMessage = function (item) {
		item.detachEvent('onmouseover', HTML.__floatingMessage__.onMouseOver);
		item.detachEvent('onmousemove', HTML.__floatingMessage__.onMouseMove);
		item.detachEvent('onmouseout',  HTML.__floatingMessage__.onMouseOut);
	}
}
