var dd_opts = {
		draggable:   true,
		static_top:  false,
		add_overlay: false,
		overlay:     null,
		alt_cont:    false,
		hide_only:   true,
		anchored:    false,
		id:          null,
		corners:      {
				top_left:true,
				bottom_left:true,
				top_right:true,
				bottom_right:true
		},
		padding: true,
		
		dialog:null,
		header: null,
		content: null,
		close_img:null,
		
		element: {
			obj: null,
			handle: null,
			data: null
		}
}

function DivDialogs(opts) {
	if(opts == undefined) {
		this.draggable   = true;
		this.static_top  = false;
		this.add_overlay = false;
		this.overlay     = null;
		this.alt_cont    = false;
		this.hide_only   = false;
		this.anchored    = false;
		this.id          = null;
		this.center_view = true;
		this.corners     = {
				top_left:false,
				bottom_left:false,
				top_right:false,
				bottom_right:false
		}
		this.padding = true;
		this.goto_homepage = false;
		this.close_popups = false;
		
		this.dialog = null;
		this.header = null;
		this.content = null;
		this.close_img = null;
		
		this.element = {
			obj: null,
			handle: null,
			data: null
		};
	}	
	else {
		this.draggable   = (opts.draggable != undefined)?opts.draggable:true;
		this.static_top  = (opts.static_top != undefined)?opts.static_top:false;
		this.add_overlay = (opts.add_overlay != undefined)?opts.add_overlay:false;
		this.overlay     = (opts.overlay != undefined)?opts.overlay:null;
		this.alt_cont    = (opts.alt_cont != undefined)?opts.alt_cont:false;
		this.hide_only   = (opts.hide_only != undefined)?opts.hide_only:false;
		this.center_view = (opts.center_view != undefined)?opts.center_view:true;
		this.anchored    = (opts.anchored != undefined)?opts.anchored:false;
		this.id          = (opts.id != undefined)?opts.id:null;
		this.corners     = (opts.corners != undefined)?opts.corners:{top_left:false,bottom_left:false,top_right:false,bottom_right:false};
		this.padding     = (opts.padding != undefined)?opts.padding:true;
		this.element     = (opts.element != undefined)?opts.element:{obj: null,handle: null,data: null};
		if(opts.element != undefined) {
			this.dialog = opts.element.obj;
			this.header = opts.element.handle;
			this.content = opts.element.data;
		}
		else {
			this.dialog = opts.dialog;
			this.header = opts.header;
			this.content = opts.content;
		}
	}
}

DivDialogs.prototype.resize = function() {
}

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()  {
	if(!$('site_overlay')) {
		this.overlay = new Element('div', {id:"site_overlay",style:"background:#000000;position:fixed;left:0px;top:0px;width:100%;height:100%;display:none;z-index:1050"});
		this.overlay.setOpacity(0.5);
		$(document.body).insert(this.overlay);
		this.overlay.observe("click",this.hide_element.bind(this))
	}
	else this.overlay = $('site_overlay');
}

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) {
		  if(this.center_view) {
			  window_height = document.viewport.getHeight();
			  var mtop = calculate_top(height,window_height);
		  }
		  else
			  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 = 1051;
	}
}

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(ele){
	if($(ele)) ele = $(ele);
	else ele = this.element.obj;
	if(this.add_overlay)
	   this.overlay.show();
    ele.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(e) {
	if(e != undefined) {
		element = Event.element(e);
		if(element.id == 'site_overlay') {
			elements = $$('div.div_dialog')
			elements.each(function(ev) {
				if(ev.visible()) element = ev;
			})
		}
		else element = element.up("div.div_dialog"); 
	}
	else element = this.element.obj
	
	if(!this.hide_only)
		element.remove();
	else
		element.hide();
	
	if(this.goto_homepage) location.href= "/";
	
	if(this.add_overlay && !this.hide_only && ppcnt == 0)
		$('site_overlay').remove();
	else
		$('site_overlay').hide();
	if(this.close_popups) {
	   hide_popups(this.hide_only);
	}
}

DivDialogs.prototype.create = function(header_text,size) {
	if(this.padding) padding = 30;
	else padding = 0;
	
	if(size == undefined) 
		size = {
			width: 400,
			height:400
		}
	
	var container_width = size.width + padding;
	var container_content_width = size.width;
	var container_header_width = container_width;
	var container_headertext_width = container_width - 40;
	
	this.element.obj = new Element('div', {style:"display:none;z-index:5;width:"+container_width+"px"});
	this.element.obj.addClassName('div_dialog');
	if(this.id != null)
	this.element.obj.id = this.id;		
	
	if(this.corners.top_left) {
		container_headertext_width -= this.corners.top_left;
	}

	if(this.corners.top_right) {
		container_headertext_width -= this.corners.top_right;
	}
	
	var header = new Element('div',{style:"width:"+container_header_width+"px"});
	header.addClassName('div_dialog_header');
	this.element.handle = header;

	if(this.corners.top_left) {
		var header_corner_left = new Element('div');
		header_corner_left.addClassName('div_dialog_header_corner_l');
		
	}
	
	if(this.corners.top_right) {
		var header_corner_right = new Element('div');
		header_corner_right.addClassName('div_dialog_header_corner_r');
	}
	
	var header_text_cont = new Element('div',{style:"width:"+container_headertext_width+"px"});
	header_text_cont.addClassName('div_dialog_header_text');
	header_text_cont.identify();
	
	var header_close = new Element('div');	
	header_close.addClassName('div_dialog_header_close');
	
	var content_div = new Element('div',{style:"width:"+size.width+"px;"});	
	content_div.addClassName('div_dialog_content');
	
	if(!this.padding)
		content_div.style.padding = "0px";
	
	this.element.data = content_div;
	
	var content_container = new Element('div',{style:"width:"+container_content_width+"px"});
	content_container.addClassName('div_dialog_content_container');
	
	var content_footer = new Element('div',{style:"width:"+(container_content_width-12)+"px"});
	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); 
	header.insert("<div class='clear'><!-- --></div>");
	
	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));
}
