dojo.require("dojo.parser");
dojo.require("dojo.behavior");
dojo.require("dojo.date.locale");

dojo.require("dijit.Dialog");

dojo.require("dojox.validate.us");
dojo.require("dojox.validate.web");
dojo.require("dojox.validate.check");
dojo.require("dojox.image.Lightbox");

dojo.requireIf(dojo.isIE < 8, "mindelusions.util.png");
dojo.require("mindelusions.util.rollover");
dojo.require("mindelusions.parallax");


var _d1 = new Date();
var res_min = _d1.getDate()+1;
var _d2 = new Date();
var res_max = _d2.getFullYear()+1;
var pb = {
	nav_config: {
		home: "/",
		about: "/about",
		services: "/services",
		reserve: "/reservations",
		gallery: "/gallery"
	},

	date_config: {
		name: "",
		value: new Date().getDate()+1,
		constraints: {min:new Date().getDate()+1,max:new Date().getFullYear()+1},
		lang: "en-us",
		promptMessage: "mm.dd.yy",
		invalidMessage: "invalid date."
	},

	modal: {
		create: function() {
			if (!pb.modal.dlg) {
				var pane = dojo.byId("dialog");
				pb.modal.dlg = new dijit.Dialog({
		            id: "dlg_reserve",
		            refocus: false,
					draggable: false,
		            title: "Make A Reservation"
		        }, pane);
			}
		},
		show: function() {
			dojo.toggleClass("reservations", "hide", false);
			if (!pb.modal.dlg) {
				pb.modal.create();
			}
			if (!pb.modal.dlg.open) {
				pb.modal.dlg.show();
			}
		},
		close: function() {
			dojo.toggleClass("reservations", "hide", true);
			if (!pb.modal.dlg) { return; }
			if (pb.modal.dlg.open) {
				pb.modal.dlg.hide();
			}
		},
		toggle: function() {
			if (!pb.modal.dlg) {
				pb.modal.create();
			}
			if (pb.modal.dlg.open) {
				dojo.toggleClass("reservations", "hide", false);
				pb.modal.dlg.hide();
			} else {
				dojo.toggleClass("reservations", "hide", true);
				pb.modal.dlg.show();
			}
		}
	},

	parallax: {
		large_clouds: function() {
			//var pos = dojo.byId("clouds_lg").x;
			var n = dojo.byId("clouds_lg").x + 1 % 1880;
			dojo.byId("clouds_lg").x = n;
			dojo.byId("clouds_lg").style.backgroundPosition = n+"px 0";
		},
		med_clouds: function() {
			//var pos = dojo.byId("clouds_md").x;
			var n = dojo.byId("clouds_md").x + 1 % 1580;
			dojo.byId("clouds_md").x = n;
			dojo.byId("clouds_md").style.backgroundPosition = n+"px 0";
		},
		small_clouds: function() {
			//var pos = dojo.byId("clouds_sm").x;
			var n = dojo.byId("clouds_sm").x + 1 % 1280;
			dojo.byId("clouds_sm").x = n;
			dojo.byId("clouds_sm").style.backgroundPosition = n+"px 0";
		}
	},

	fm_r: {
		toggle_pet: function(pid) {
			if (dojo.hasClass(pid, "hide")) {
				dojo.removeClass(pid, "hide");
				dojo.byId(pid+"_action").innerHTML = "Remove";
			} else {
				dojo.addClass(pid, "hide");
				dojo.byId(pid+"_action").innerHTML = "Add";
			}
		},
		profile: {
			required: ["dropd","dropt","pickupd","pickupt","fname","lname","zip","phone","email","pname","breed","size","popt"],
			/*
			dependencies: {
				breed2: "pname2",
				size2: "pname2",
				popt2: "pname2",
				breed3: "pname3",
				size3: "pname3",
				popt3: "pname3"
			},
			*/
			constraints: {
				dropd: [dojox.validate.isNumberFormat, {format:"##/##/####"}],
				pickupd: [dojox.validate.isNumberFormat, {format:"##/##/####"}],
				dropt: [dojox.validate.isNumberFormat, {format:"##:##"}],
				pickupt: [dojox.validate.isNumberFormat, {format:"##:##"}],
				zip: dojox.validate.us.isZipCode,
				phone: dojox.validate.us.isPhoneNumber,
				email: dojox.validate.isEmailAddress
			}
		}
	},

	behaviors: {
		"#logo": {
			onclick: function(e) { document.location.href = "/index.phtml"; }
		},
		"#sign": {
			onclick: function(e) { pb.modal.show(); }
		},
		"#reserve_over": {
			onclick: function(e) { pb.modal.show(); }
		},
		"#dropd": {
			found: function() {
				var props = pb.date_config;
			}
		},
		"#pet2_toggle": {
			onclick: function(e) {
				pb.fm_r.toggle_pet("pet2");
			}
		},
		"#pet3_toggle": {
			onclick: function(e) {
				pb.fm_r.toggle_pet("pet3");
			}
		},
		"#fm_res": {
			onsubmit: "/fm/res/submit"
		},
		".clouds": {
			found: function(n) {
				n.x = 0;
			}
		}
	}
};

var nav_config = pb.nav_config;
	var bid, wrap_class, over_node, dest;
	dojo.query("#nav .rollover").forEach(function(n) {
		bid = n.id;
		over_node = dojo.byId(bid + "_over");
		wrap_class = "wrap_" + bid;
		dest = nav_config[bid];

		dojo.addClass(over_node, wrap_class + " clickable hide");
		dojo.addClass(n, wrap_class + " clickable");
		mindelusions.util.swap("#nav ."+wrap_class, over_node, n);
	});


	dojo.subscribe("/fm/res/submit", this, function(e) {
		dojo.stopEvent(e);
		var r = dojox.validate.check("fm_res", pb.fm_r.profile);
		console.log("r: ", r);
		if (r.isSuccessful()) {
			dojo.byId("fm_res").submit();
			return true;
		} else {
			if (r.hasMissing()) {
				console.log(r.getMissing());
				return false;
			}
			if (r.hasInvalid()) {
				console.log(r.getInvalid());
				return false;
			}
		}
	});


dojo.behavior.add(pb.behaviors);

var plax;
dojo.addOnLoad(function() {
	dojo.query(".gallery a").forEach(function(n,idx) {
		var lb = new dojox.image.Lightbox({title:n.title,group:"g1",href:n.href});
		n.href = "javascript:void(0)";
		dojo.connect(n, "onclick", this, function(e) {
			lb.show();
		});
		lb.startup();
	});

	var intvl =	setInterval(pb.parallax.large_clouds, 100);
	var intvm = setInterval(pb.parallax.med_clouds, 500);
	var intvs = setInterval(pb.parallax.small_clouds, 900);
	
});
