function Dform(name)
{
	this.name=name;
	this.prev=name+"_prev";
	this.next=name+"_next";
	this.popup=name+"_popup";
	this.form_id=this.name+"_frm";
	this.duration=500;
	this.transition=Fx.Transitions.Sine;
	this.onRenderStart=null;
	this.onRenderEnd=null;
	this.mode="vertical";
	this.waitImage=null;
	this.requestFailed=false;

	this._renderOpacity=function(show) {
		var prev=$(this.prev);
		var popup=$(this.popup);
		if (show) {
			prev.set("styles",{"opacity":"0.3"});
			if (this.waitImage) {
				var prevC=prev.getCoordinates();
				popup.set("html","<img src=\""+this.waitImage.src+"\" border=\"0\" />");
				var left=prevC.left+Math.round((prevC.width-this.waitImage.width)/2);
				var top=prevC.top+Math.round((prevC.height-this.waitImage.height)/2);
				popup.set("styles",{"display":"block","left":left,"top":top});
			}
		}
		else {
			prev.set("styles",{"opacity":"0.8"});
			if (this.waitImage) {
				popup.set("styles",{"display":"none"});
			}
		}
	}

	this._renderSlider=function(replacePrev) {
		var options={mode:this.mode,wrapper:this.name,duration:this.duration};
		options.transition=this.transition.easeIn;
		var prevFx=new Fx.Slide(this.prev,options);
		var nextFx=new Fx.Slide(this.next,options);
		if (replacePrev) nextFx.hide();
		else prevFx.hide();
		if (this.onRenderStart) this.onRenderStart(this.prev,this.next);
		if (this.onRenderEnd) nextFx.addEvent("complete",this.onRenderEnd);
		if (replacePrev) {
			prevFx.slideOut();
			nextFx.slideIn();
		}
		else {
			nextFx.slideOut();
			prevFx.slideIn();
		}
	};

	this.renderWait=this._renderOpacity;
	this.renderChange=this._renderSlider;

	this.submit=function() {
		var frm=$(this.form_id);
		eval("var completeFunc=function(response) { \
			var obj="+this.name+"; \
			if (obj.requestFailed) { \
				obj.renderWait(false); \
				return; \
			} \
			$(obj.next).set(\"html\",response); \
			obj.renderWait(false); \
			obj.renderChange(true); \
		};");
		var options={mode:"post", onComplete: completeFunc, evalScripts: true, headers: {"X-Request": "AJAX"}};
		frm.set("send",options);
		this.renderWait(true);
		frm.send();
	};

	this.writeHTML=function(prevHTML,nextHTML,container) {
		if (prevHTML==null) prevHTML="";
		if (nextHTML==null) nextHTML="";
		var str="<div id=\""+this.name+"\"><div id=\""+this.prev+"\">"+prevHTML+"</div><div id=\""+this.next+"\" style=\"display:none;\">"+nextHTML+"</div></div><div id=\""+this.popup+"\" style=\"display:none; position:absolute;\"></div>";
		if (container)
			if (container==document) document.write(str);
			else $(container).set("html",str);
		else  document.write(str);
	};
}

