function mouseCoords(ev){ 
	
    if(ev && (ev.pageX || ev.pageY)) { 
        return {x:ev.pageX, y:ev.pageY}; 
    } 
    return { 
        x:ev.clientX + document.body.scrollLeft - document.body.clientLeft, 
        y:ev.clientY + document.body.scrollTop  - document.body.clientTop 
    }; 
}

function dialogBox(config){
	if (config.unique && document.getElementById(config.unique)) {
		return;
	}
		
	var main = document.createElement('div');
	main.id = config.unique;
	main.className = 'dialogBox '+config.css.box;
	main.centerTopValue = config.centerTopValue;
	
	var title = document.createElement('div');
	title.className = 'd-title '+config.css.title;
	title.innerHTML = config.title;
	main.appendChild(title);
	
	title.onmousedown = function(ev) {
		
		var mouse = mouseCoords(ev);
		
		
		main.mouseOffsetLeft=mouse.x-main.offsetLeft;
		main.mouseOffsetTop=mouse.y-main.offsetTop;
		
		
		document.onmousemove = main.move;
	}
	
	title.onmouseup = function(){
		document.onmousemove = null;
	}
	
	var content = document.createElement('div');
	content.className = 'd-content '+config.css.content;
	content.innerHTML = config.text;
	main.appendChild(content);
	
	var buttons = document.createElement('div');
	buttons.className = 'd-buttons';
	main.appendChild(buttons);
	main.buttons = buttons;
	
	main.buttons_array = [];
	
	main.move = function(ev) {
		var mouse = mouseCoords(ev);
		
		var left = mouse.x-main.mouseOffsetLeft;
		var top = mouse.y-main.mouseOffsetTop;
		
		main.style.left=left+'px';
		main.style.top=top+'px';
		
		
	}
	
	main.addButton = function(button_config) {
		
		var button = document.createElement('input');
		button.type = 'button';
		button.className = 'd-button '+config.css.button;
		button.value = button_config.text;
		if (button_config.fn)
			button.action = button_config.fn;
			
		var _main = this;
		button.onclick = function() {
			if (this.action)
				var a =	this.action();
			if(!a) _main.parentNode.removeChild(_main);
		
		}
		this.buttons.appendChild(button);
		this.buttons_array.push(button);
	}
	
	main.removeButton = function(index) {
		var button = this.buttons_array[index];
		button.parentNode.removeChild(button);
		
	}
	
	
	for (var i=0;i<config.buttons.length;i++) {
		var button_config = config.buttons[i];
		
		main.addButton(button_config);
		
//		var button = document.createElement('input');
//		button.type = 'button';
//		button.className = 'd-button '+config.css.button;
//		button.value = button_config.text;
//		if (button_config.fn)
//			button.action = button_config.fn;
//		button.onclick = function() {
//			if (this.action)
//				var a =	this.action();
//			if(!a) main.parentNode.removeChild(main);
//		
//		}
//		buttons.appendChild(button);
		
	}
	
	document.body.appendChild(main);
	
	main.reposition = function() {
		
		var pageXOffset = document.all?document.documentElement.scrollLeft:window.pageXOffset;
		
		var clientWidth = document.documentElement.clientWidth || document.body.clientWidth;
		
		var left = pageXOffset + parseInt(clientWidth/2)-parseInt(this.offsetWidth/2);
		
		if (this.centerTopValue) {
			var top = this.centerTopValue;
		} else {
			var pageYOffset = document.all?document.documentElement.scrollTop:window.pageYOffset;
			var top = pageYOffset + parseInt(document.documentElement.clientHeight/2) - parseInt(this.offsetHeight/2);
		}
		
		
		if (top<0)top=0;
	
		this.style.left=left+'px';
		this.style.top=top+'px';
	}
	
	main.reposition();
	
	return main;
	
}