/**
 * Bibliotek for håndtering meldingsvinduer.
 * 
 * @author	Thomas Sømoen <thomas at apt.no>
 * @version	20061005
 * @package	form
 * @copyright	apt as 2006
 */
var msg = new Object();

msg.MessagePane = function(message){
	var objPane = document.createElement('div');
		
	objPane.message = message;
	objPane.id = 'messagepane';
	objPane.parent = null;
	objPane.buttons = new Array();
	
	objPane.addButton = function(button){
		this.buttons[objPane.buttons.length] = button;
	}
	
	objPane.display = function(parent){
		this.parent = (xDef(parent))?parent:document.getElementById('mainframe');
		
		var objTextpane = document.createElement('div');
			objTextpane.className = 'text';
			objTextpane.style.width = Math.ceil(getCharLength(message)*5.5)+'px';
			objTextpane.innerHTML = message;
			
		this.appendChild(objTextpane);
		
		var objButtonPane = document.createElement('div');
			objButtonPane.className = 'buttons';
			
		for(var i=0;i<this.buttons.length;i++){
			objButtonPane.appendChild(this.buttons[i]);
		}
		
		this.appendChild(objButtonPane);
		
		this.style.position = 'absolute';
		this.style.top = '0px';
		this.style.left = '0px';
		this.style.visibility = 'hidden';
		this.parent.appendChild(this);
		
		var left = Math.round(((xClientWidth()-xWidth(this)-103)/2)/xClientWidth()*100);
		
		this.style.top = '40%';
		this.style.left = left+'%';
		
		
		this.style.visibility = 'visible';
	}
	
	return objPane;
}

msg.Button = function(classname,observer){
	var objButton = document.createElement('div');
	objButton.className = classname;
	objButton.observer = observer;
	objButton.onclick = observer.doAction;
	return objButton;
}

msg.closePane = function(form,messagepane){
	this.form = form;
	this.messagepane = messagepane;
	this.doAction = function(){
		this.observer.form.removeChild(this.observer.messagepane);
		this.observer.form.undowait();
	}
}

msg.showBlob = function(element,string){
	var blob = null;
	var spans = element.parentNode.getElementsByTagName('SPAN');
	for(var i=0;i<spans.length;i++){
		if(spans[i].className == 'error'){
			blob = spans[i];
		}
	}
	
	if(!blob){
		blob = document.createElement('SPAN');
		blob.className = 'error';
	
		var textSpan = document.createElement('SPAN');
		textSpan.innerHTML = string;
		
		blob.appendChild(textSpan);
		element.parentNode.appendChild(blob);
	}else{
		blob.childNodes[0].innerHTML = string;
	}
}

msg.hideBlob = function(element){
	var spans = element.parentNode.getElementsByTagName('SPAN');
	for(var i=0;i<spans.length;i++){
		if(spans[i].className == 'error'){
			element.parentNode.removeChild(spans[i]);
		}
	}
}

msg.hideBlobs = function(form){
	var spans = form.getElementsByTagName('SPAN');
	for(var i=0;i<spans.length;i++){
		if(spans[i].className == 'error'){
			spans[i].parentNode.removeChild(spans[i]);
		}
	}
}