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);
}
