var DialogClass = Class.create();

DialogClass.prototype = {
	initialize: function(className, loaderText){
		this.ClassName = (className==null) ? "default" : className;
		this.LoaderText = (loaderText==null) ? "Yükleniyor..." : loaderText;

		var objBody = document.getElementsByTagName("body").item(0);

		//Create Overlay
		var Overlay = document.createElement("div");
		Element.extend(Overlay);
		Overlay.id = "Overlay";
		Overlay.style.position = 'absolute';
		Overlay.style.top = '0';
		Overlay.style.left = '0';
		Overlay.style.zIndex = '1000';
		Overlay.style.height = getPageSize()[1] + "px";
		Overlay.style.width = getPageSize()[0] + "px";
		Overlay.hide();
		this.Overlay = Overlay;
		objBody.appendChild(this.Overlay);
		this.closeOverlay();

		//create loader
		var loader = document.createElement("div");
		Element.extend(loader);
		loader.id = "DialogLoader";
		loader.style.zIndex = 1001;
		loader.style.width = "100px";
		loader.style.position = "absolute";
		loader.update(this.LoaderText);
		loader.hide();
		this.loader = loader;
		objBody.appendChild(loader);
		this.makeCentered(this.loader);

		
		//create dialog container
		var container = document.createElement("div");
		Element.extend(container);
		container.id = "Dialog";
		container.style.zIndex = 1002;
		container.style.position = "absolute";
		//container.addClassName("Block green");
		container.hide();

		this.Container = container;
		objBody.appendChild(this.Container);
	},

	showDropDowns:function(){
		dropdowns = document.getElementsByTagName("select");
		for(i=0;i<dropdowns.length;i++){
			el = dropdowns[i];
			Element.extend(el);
			el.show();
		}
	},

	hideDropDowns:function(dialog){
		dropdowns = document.getElementsByTagName("select");
		for(i=0;i<dropdowns.length;i++){
			el = dropdowns[i];
			Element.extend(el);
			el.hide();
		}
		if(dialog != null){
			opendropdowns = $(dialog).getElementsByTagName("select");
			for(i=0;i<opendropdowns.length;i++){
				el = opendropdowns[i];
				el.show();
			}
		}
	},

	closeOverlay:function(){
		var eff = new Effect.Opacity(this.Overlay,
			{ to: 0.0, duration: 0.3 ,
			transition: Effect.Transitions.linear,
			afterFinish:function(obj){
				obj.element.hide();
			}
		});
	},

	ajax:function(url,options){
		if(options == null) options = {wd:null};
		if(options.wd != null) this.Container.style.width = options.wd + "px";

		this.hideDropDowns();
		this.Overlay.show();
		var eff = new Effect.Opacity('Overlay',
		{ to: 0.8, duration:0.3,
			transition: Effect.Transitions.linear,
			afterFinish:function(obj){
				Dialog.makeCentered(Dialog.loader);
				Dialog.loader.show();
			}
		});
		var req = new Ajax.Request(url, {
  			onSuccess: function(transport) {
      			Dialog.Container.update(transport.responseText);
      			Dialog.loader.hide();
      			Dialog.show(Dialog.Container);
  			}
		});
	},

	open:function(el,options){
		if(options==null) options = {};
		if(options.width) this.Container.style.width = options.width + "px";

		this.hideDropDowns();
		this.Overlay.show();
		var eff = new Effect.Opacity('Overlay',
		{ to: 0.8, duration:0.3,
			transition: Effect.Transitions.linear,
			afterFinish:function(obj){
				Dialog.show(Dialog.Container);
				Dialog.Container.update($(el).innerHTML);
			}
		});
	},

	show:function(el){
		var dlg = $(el);
		Element.extend(dlg);
		Position.absolutize(dlg);
		dlg.style.zIndex = 1002;
		this.makeCentered(dlg);
		dlg.show();
	},

	close:function(){
		this.Container.hide();
		this.closeOverlay();
		this.loader.hide();
		this.showDropDowns();
	},

	makeCentered:function(el){
		var hg = document.viewport.getHeight();
		var wd = document.viewport.getWidth();
		scrpos = document.viewport.getScrollOffsets();
		$(el).style.left = String((wd / 2) - (parseInt($(el).getWidth()) / 2) + scrpos.left) + "px";
		$(el).style.top = String((hg / 2) - (parseInt($(el).getHeight()) / 2) + scrpos.top) + "px";
	}
};

var Dialog;
function initDialog() { Dialog = new DialogClass(); }
Event.observe(window, 'load', initDialog, false);

function popup(url, width, height, scroll){
	window.open(url,"_blank","toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars="+scroll+", resizable=no, copyhistory=no, width="+width+", height="+height + ", top=100, left=100");
}

function refreshParentWin(){
	window.opener.location.href=window.opener.location.href;
	window.opener.focus();
	window.close();
}