var Gandalf = {
	"start": function(obj) {
		//var obj = this;
		$.post(obj.appVars.startUrl,{currentFrm:"start"},function(data) {
			var x = $(document).width()/2-200;

			$("body")
			.append( 
				$(document.createElement("div"))
				.attr('id',obj.appVars.Canvas.id)
				.css({"color":obj.appVars.Canvas.color})
				.fadeTo('fast',obj.appVars.Canvas.opacity)
				.height($(document).height())
			)
			.append( 
				$(document.createElement("div"))
				.attr('id',obj.appVars.WizDiv.id)
				.css({"left":x,"height":obj.appVars.WizDiv.height,"width":obj.appVars.WizDiv.width})
				.html(obj.appVars.WizDiv.html)
			);
			obj.transition[obj.appVars.stepTrans](data,obj);
		});
	},
	"step": {
		"post": function(response,obj) {
			var paramobj = new Object;
			$("#qFrm *:input").each(function() {
				paramobj[this.id] = $(this).val();
			});
			if(response<2) {
				paramobj["frmVal"] = response;
			}

			$.post(obj.appVars.postUrl,paramobj,function(data) { 
				if(data == "DONE") {
					obj.end(data);
				} else {
					if(response == -1) obj.appVars.stepNum--; else obj.appVars.stepNum++;
					obj.transition[obj.appVars.stepTrans](data,obj);
				}
			});
		},
		"save": function() {
		}
	},
	"transition": {
		"postFade": function() {
		},
		"postPop": function(frm,obj) {
			$("#qFrm").html(frm);
			$('#stepCount').text("Step "+obj.appVars.stepNum+" of "+obj.appVars.stepCount);
			$("#xBtn").click(function() { obj.abort(obj); });
			$("#frmBack").click(function() { obj.step[obj.appVars.stepFunc](-1,obj); });
			$("#frmYes").click(function() { obj.step[obj.appVars.stepFunc](1,obj); });
			$("#frmNo").click(function() { obj.step[obj.appVars.stepFunc](0,obj); });
			$("#frmNext").click(function() { obj.step[obj.appVars.stepFunc](2,obj); });
		}
	},
	"end": function() {
		$("#blanket, #popFrm").remove();
		location.href = this.appVars.endUrl;
	},
	"abort": function(obj) {
		obj.appVars.stepNum = 1;
		$("#blanket, #popFrm").remove();
	},
	"addVars": function(vars) {
		this.appVars = vars;
	},
	"appVars": null
}
