Error = function () {
};

/**
*	Event - error over.
*/
Error.error_over = function (e){
	source = this.getSource(e);
	
	var children = source.parentNode.childNodes;
	var value;
	
	for(var i = 0; i < children.length; i++){
		if(children[i].nodeName == 'DIV' && children[i].className == 'error_msg_text'){
			value = children[i].innerHTML;
		}
	}
	
	if(value){
	
		var errorHTML = "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" class=\"error_table\">";
		errorHTML += 		"<tr style=\"height: 7px;\">";
		errorHTML += 			"<td style=\"height: 7px;\" valign=\"top\">";
		errorHTML += 				"<div class=\"error_msg_top\"></div>";
		errorHTML += 			"</td>";
		errorHTML += 		"</tr>";
		errorHTML += 		"<tr>";
		errorHTML += 			"<td valign=\"center\">";
		errorHTML += 				"<div class=\"error_msg_middle\">" + value + "</div>";
		errorHTML += 			"</td>";
		errorHTML += 		"</tr>";
		errorHTML += 		"<tr valign=\"top\" style=\"height: 7px;\" valign=\"bottom\">";
		errorHTML += 			"<td valign=\"top\" style=\"height: 7px;\">";
		errorHTML += 				"<div class=\"error_msg_bottom\"></div>";
		errorHTML += 			"</td>";
		errorHTML += 		"</tr>";
		errorHTML += 		"<tr style=\"height: 40px;\" valign=\"top\">";
		errorHTML += 			"<td align=\"left\" style=\"height: 40px;\" valign=\"top\">";
		errorHTML += 				"<div class=\"error_msg_string\"></div>";
		errorHTML += 			"</td>";
		errorHTML += 		"</tr>";
		errorHTML += 	"</table>";
		
		var container = document.createElement('div');
		container.className = 'error_container';
		
		var p = this.getAbsolutePos(source);
		
		container.innerHTML = errorHTML;
		document.body.appendChild(container);
				
		container.style.left = p.x + 5;
		
		container.style.top = p.y - container.offsetHeight - 5;
		
		this.hideSelectStatements(container);
	}
}

/**
*	Event - error out.
*/
Error.error_out = function (e){
	//var source = this.getSource(e);
	
	var children = document.body.childNodes;
	
	for(var i = 0; i < children.length; i++){
		if(children[i].nodeName == 'DIV' && children[i].className == 'error_container'){
			this.hideSelectStatements(children[i]);
			children[i].style.visibility = "hidden";
			document.body.removeChild(children[i]);
		}
	}
}

Error.hideSelectStatements = function (_element){
	var selects = document.getElementsByTagName('SELECT');
	
	for(var i = 0; i < selects.length; i++){
		var s = selects[i];
		var p = this.getAbsolutePos(s);
		
		var eTop = _element.offsetTop;
		var eBottom = _element.offsetTop + _element.offsetHeight;
		var eLeft = _element.offsetLeft;
		var eRight = _element.offsetLeft + _element.offsetWidth;
		
		var sTop = p.y;
		var sBottom = p.y + s.offsetHeight;
		var sLeft = p.x;
		var sRight = p.x + s.offsetWidth;
		
		if(sTop > eBottom || sBottom < eTop || sLeft > eRight || sRight < eLeft){
		} else {
			this.toggleSelectHidden(s);
		}
	}
}
	
Error.toggleSelectHidden = function (s){
	if(s.style.visibility){
		if(s.style.visibility == 'hidden'){
			s.style.visibility = 'visible';
		} else {
			s.style.visibility = 'hidden';
		}
	} else {
		s.style.visibility = 'hidden';
	}
}
	
Error.getAbsolutePos = function (el) {
	var r = { x: el.offsetLeft, y: el.offsetTop};
	if (el.offsetParent) {
		var tmp = this.getAbsolutePos(el.offsetParent);
		r.x += tmp.x;
		r.y += tmp.y;
	}
	return r;
};
	
Error.getSource = function (e){
	var event = e;
	var source;

	if(!e){
		event = window.event;
	}
	
	if(!event.srcElement){
		source = event.target;
	} else {
		source = event.srcElement;
	}
	return source;
}