function _dialog(name, contentTag) {
	if(contentTag==undefined)contentTag='div'
	this._name = name;
	this._objName = this._name;
	this._contentTag = contentTag;

	this._init = function(){	
		if($('overlay')){
			this.overlay =  $('overlay')
		}else{
			var overlay= document.createElement('div');
			this.overlay =  document.body.appendChild(overlay);
			this.overlay.style.visibility='hidden'
			this.overlay.className="overlay";	
			this.overlay.id='overlay';
			linkEvent(document.body, 'mousemove', new Function ('event', this._objName+'._mouseMove(event)'))	
		}
		
		if($(this._name)){	
			this.box = $(this._name)
		}else{ 
			var box= document.createElement('div');
			this.box =  document.body.appendChild(box);
	
			this.box.style.visibility='hidden'
			this.box.style.top=0
			this.box.style.left=0
			this.box.className="xinput";
			this.box.id=this._name;
		}
		
		if(this._contentTag.toLowerCase()=='iframe'){
		var contentHtml = '<iframe frameborder="no" id="'+this._name+'_content"  ></iframe>';
		}else{
		var contentHtml = '<div id="'+this._name+'_content"  ></div>';
		}
		
		this.box.innerHTML=
		'<div id="'+this._name+'_title" class="xinput_title" \
			onclick="'+this._objName+'._titleClick(event)" \
			onmousedown="'+this._objName+'._mouseDown(event)" \
			onmouseup="'+this._objName+'._mouseUp(event)" >\
		'+this._title+'</div> ' + contentHtml;
		
		this.content = $(this._name+'_content');
	}	
	

	this._titleClick = function(e){
		e=mouseEvent(this.box,e)
		this.mX=e.targetX
		this.mY=e.targetY
		if(this.mX > $(this._name+'_title').offsetWidth-16) this.close()		
	}
	this._mouseDown = function(e){
		e=mouseEvent(this.box,e)
		this.mX=e.targetX
		this.mY=e.targetY
		if(this.mX > $(this._name+'_title').offsetWidth-16) return
		this.mDown=true
//		this.content.style.display="none"
	}
	this._mouseUp = function(e){
		this.mDown=false
//		this.content.style.visibility="block"
		
	}
	this._mouseMove = function(e){		
		if(!this.mDown) return
//		if(!e.clientX%3 && !e.clientY%3 ) return
		this.box.style.left = e.clientX - this.mX
		this.box.style.top = e.clientY - this.mY
	}

	this._open= function(title, width, height){		
		if(!this.box)this._init();
		this._title = title
		this._width = (width?width:(getWindowSize('w')*0.7))
		this._height= (height?height:(getWindowSize('h')*0.8))
				
		$(this._name+'_title').innerHTML=title;
		this.content.style.width = this._width - (browser.msie?2:0)
		this.content.style.height = this._height		
		this.box.style.width = this._width 
		this.box.style.height = this._height 	 + $(this._name+'_title').offsetHeight
		this.box.style.left = (getWindowSize('w')- this.box.offsetWidth)/2 
		this.box.style.top = (getWindowSize('h')- this.box.offsetHeight)/2.5
		this.overlay.style.visibility='visible'
		this.box.style.visibility='visible'
		this.box.focus()
		disableSelection($(this._name+'_title'));
//		if(this.content.attachEvent) this.content.attachEvent('onload',this.resize);
//		else this.content.addEventListener('load',this.resize,false);
	}

	this._close= function(){	
		if(!this.overlay) return;
		this.overlay.style.visibility='hidden'
		this.box.style.visibility='hidden'
		if(this.onClose)this.onClose()
	}


}


function _frameDialog(name) {
	this.extender= _dialog
	this.extender(name, 'iframe');
	
	this.open= function(title, url, width, height){	
		this._open(title, width, height)
		this._url = url 
		this.content.contentWindow.dialog=this
		this.content.src=this._url 
	}

	this.close= function(){	
		this.content.src=''
		this._close()
	}

}
function _jsDialog(name) {
	this.extender= _dialog
	this.extender(name);
	
	this.open= function(title, elem, width, height){		
		this._open(title, width, height)
		this.content.dialog=this
		
		this._elemCSS = elem.style.cssText;
		this._elemParent = elem.parentNode
		this._elemNextSibling = elem.nextSibling
		this.elem = elem;
		this.elem = this.content.appendChild(elem);
		this.elem.style.height= this.content.style.height
		this.elem.style.width= this.content.style.width
		this.elem.style.display='block'
		this.elem.style.visibility='visible'

	}

	this.close= function(){	
		this._close()
		if(this._elemNextSibling){
			this.elem = this._elemParent.insertBefore(this.elem, this._elemNextSibling)
		}else{
			this.elem = this._elemParent.appendChild(this.elem)
		}
		this.elem.style.cssText = this._elemCSS ;
		this.elem = null
	}

}

if(!window.dialog) window.dialog = new _frameDialog('dialog');
if(!window.jsDialog) window.jsDialog = new _jsDialog('jsDialog');
