function DivDialogs() {
	this.draggable   = true;
	this.static_top  = false;
	this.add_overlay = false;
	this.overlay     = null;
	this.alt_cont    = false;
	this.anchored = false;
	
	this.element = {
		obj: null,
		handle: null,
		data: null
	};
	
}

DivDialogs.prototype.init = function()  {
	   //alert(element)
	   if(this.element.obj == null) return;
	   else {
		   if(this.add_overlay)
			   this.insert_overlay();
		   this.position_dialog();
		   
		   Event.observe(window,'resize',this.position_dialog.bind(this));
		   
	       if(this.draggable)
	       {
	    	  this.element.handle.style.cursor = "move";
	     	  new Draggable(this.element.obj, {handle:this.element.handle})
	       }
	   }
}

DivDialogs.prototype.insert_overlay = function()  {
	this.overlay = new Element('div', {style:"background:#000000;position:fixed;left:0px;top:0px;width:100%;height:100%;display:none;z-index:150"});
	this.overlay.setOpacity(0.5);
	$(document.body).insert(this.overlay);
	this.overlay.observe("click",this.hide_element.bind(this))
}

DivDialogs.prototype.remove_overlay = function()  {
	this.overlay.remove();
}

DivDialogs.prototype.position_dialog = function() {	  
	var divwidth = this.element.obj.getWidth();
	var divheight = this.element.obj.getHeight();
	  
	if(this.alt_cont) {	  
		var window_width = this.alt_cont.getWidth();
		var window_height = this.alt_cont.getHeight();
	}
	else {		  
	  var window_width = get_document_window_width();
	  var window_height = get_document_window_height();
	}
	
	if(!this.anchored) {
	  var width = convert_width(divwidth,window_width);
	  var window_height = get_document_window_height();
	  var height = convert_height(divheight,window_height);
	  var mleft = calculate_left(width,window_width);
	  if(this.static_top == false) var mtop = calculate_top(height,window_height);
	  else var mtop = this.static_top;
		
	  this.element.obj.style.top = mtop+"px";
	  this.element.obj.style.left = mleft+"px";
	  if(this.add_overlay)
		  this.element.obj.style.zIndex = 151;
	}
}

DivDialogs.prototype.show_offset = function (e) {
   ele = Event.element(e);
   
   this.anchor_ele = ele;
   position = Element.cumulativeOffset(ele);
   
   theight = this.element.obj.getHeight();
   twidth = this.element.obj.getWidth();
   
   rheight = this.anchor_ele.getHeight();
   rwidth = this.anchor_ele.getWidth();
   
   if(this.anchored == "bottom_left") { 
	   this.element.obj.style.top = (position.top-theight-5)+"px";
	   this.element.obj.style.left = (position.left+rwidth-3)+"px";
   }
   else if(this.anchored == "bottom_right") {
	   this.element.obj.style.top = (position.top-theight-5)+"px";
	   this.element.obj.style.left = (position.left-twidth-3)+"px";
   }
   else if(this.anchored == "top_right") {
	   this.element.obj.style.top = (position.top+rheight)+"px";
	   this.element.obj.style.left = (position.left-twidth)+"px";
   }
   else if(this.anchored == "top_left") {
	   this.element.obj.style.top = (position.top+rheight)+"px";
	   this.element.obj.style.left = (position.left+rwidth)+"px";
   }
   
   this.element.obj.show();
}

DivDialogs.prototype.reposition = function(e) {
    ele = this.element.obj;

    position = Element.cumulativeOffset(this.anchor_ele);
    ele.style.top = (position.top-this.container.getHeight()-5)+"px";
    ele.style.left = (position.left-3)+"px";
}

DivDialogs.prototype.show_element = function(){
	if(this.add_overlay)
	   this.overlay.show();
    this.element.obj.show();
}

DivDialogs.prototype.open_window = function(path,wname,ht,wt)
{
	aswindow_width  = this.get_document_window_width();
    aswidth         = this.convert_width(wt,aswindow_width);
    aswindow_height = this.get_document_window_height();
    asheight        = this.convert_height(ht,aswindow_height);
    asleft          = this.calculate_left(aswidth,aswindow_width);
	if(this.static_top == false) var astop = this.calculate_top(height,window_height);
	else var astop = this.static_top;
    
    if(this.element.obj != null) this.element.obj.close();
       this.element.obj = window.open (path, wname,"menubar=0,resizable=0,screenX="+asleft+",screenY="+astop+",left="+asleft+",top="+astop+",width="+wt+",height="+ht+"");
       this.element.obj.focus();
}

DivDialogs.prototype.hide_element = function() {
	this.element.obj.remove();
	
	if(this.add_overlay)
	   this.overlay.remove();
}

DivDialogs.prototype.create = function(header_text) {
	this.element.obj = new Element('div', {style:"display:none;z-index:5;"});
	this.element.obj.addClassName('div_dialog');
	
	var header = new Element('div');
	header.addClassName('div_dialog_header');
	this.element.handle = header;
	
	var header_corner_left = new Element('div');
	header_corner_left.addClassName('div_dialog_header_corner_l');
	
	var header_corner_right = new Element('div');
	header_corner_right.addClassName('div_dialog_header_corner_r');
	
	var header_text_cont = new Element('div');
	header_text_cont.addClassName('div_dialog_header_text');
	
	var header_close = new Element('div');	
	header_close.addClassName('div_dialog_header_close');
	
	var content_div = new Element('div');	
	content_div.addClassName('div_dialog_content');
	this.element.data = content_div;
	
	var content_container = new Element('div');
	content_container.addClassName('div_dialog_content_container');
	
	var content_footer = new Element('div');
	content_footer.addClassName('div_dialog_content_footer');
	
	var content_footer_corner_left = new Element('div');
	content_footer_corner_left.addClassName('div_dialog_content_corner_l');
	
	var content_footer_corner_right = new Element('div');
	content_footer_corner_right.addClassName('div_dialog_content_corner_r');
	
	var close_img = new Element('img', {src:'images/buttons/close.png',title:"Close"});
	
    header_text_cont.update(header_text);
	header_close.insert(close_img); 
	
	header.insert(header_corner_left); 
	header.insert(header_text_cont); 
	header.insert(header_close); 
	header.insert(header_corner_right); 
	
	content_footer.insert(content_footer_corner_left);
	content_footer.insert(content_footer_corner_right);
	
	content_container.insert(content_div);
	content_container.insert(content_footer);
    
	this.element.obj.insert(header);
	this.element.obj.insert(content_container);
	
	$(document.body).insert(this.element.obj); 
	
	close_img.observe('click',this.hide_element.bind(this));
}
