function check_event_form() {
	var f = $("post_event"); // post event form ID
	if (f) {
		var form_ok = true; // assume it's ok
		var str = "";
		if (f.ev_title.value=="") { form_ok = false; str += "A title for your event is required.<br />\n"; }
		if (f.ev_loc.value=="") { form_ok = false; str += "A location for your event is required.<br />\n"; }
		if (f.ev_date.value=="") { form_ok = false; str += "A date for your event is required.<br />\n"; }
		
		if (form_ok) {
			//$("event_form_stats").set("text","form is ok!");
			$("save_event").disabled = false;
			$("save_event").removeClass("disabled_button");
			return true;
		} else {
			//$("event_form_stats").set("text","form is missing info!" + str);
			$("save_event").disabled = true;
			$("save_event").addClass("disabled_button");
			return false;
		}
	}
}

function send_event_info() {
	if (check_event_form()) {
		var f = $("post_event"); // post event form ID
		var edit_id = f.ev_id.value;
		//$("event_form_stats").set("text","ok to submit!");
		set_up_post_event_cover(f,"Sending data, please wait....");

		var ajrq = new Request({
			url:ajax_url,
			onSuccess: function(responseText, responseXML) {
				ojson = JSON.decode(responseText);
				if (ojson.result == "ok") {
					if (edit_id > 0) {
						$("post_event_cover").set("html","Your Event has been updated. Changes will be reflected after you reload the page.");
					} else {
						$("post_event_cover").set("html","Your new Event has been saved. It will show up in the calendar and your Event list after you reload the page.");
					}
					var h = f.getParent().getFirst("h3");
					h.set("text","Add Event");
					f.reset();
					check_event_form();
				} else {
					switch (ojson.result) {
						case "missing.info":
							$("post_event_cover").set("html","Some information was missing, please make sure to include a Title, Date, and Location for your Event.");
							break;
						case "sys.error":
							$("post_event_cover").set("html","Failed to save event info due to system error, sorry... try again later!");
							break;
					}
				}
				var timer = setTimeout(function() { $('post_event_cover').fade('out'); } ,6000);
				var timer2 = setTimeout(function() { $('post_event_cover').destroy(); } ,7500);
				//add_event_to_calendar(); // not sure if I'm gonna do this one...
			},
			onFailure: function() { 
				$("post_event_cover").set("html","Failed to save event info due to system error, sorry... try again later!");
				var timer = setTimeout(function() { $('post_event_cover').fade('out'); } ,6000);
				var timer2 = setTimeout(function() { $('post_event_cover').destroy(); } ,7500);
			}
		}).send(f.toQueryString());

	} else {
		//$("event_form_stats").set("text","It appears some required information is missing, please fill out the form as instructed before submitting.");
	}
}

function set_up_post_event_cover(f,msg) {
		var pos = find_position(f);
		var el = new Element("div", {
			'class' : 'trans80',
			'id' : 'post_event_cover',
			'html' : msg
		});
		el. setStyles({
			'textAlign' : 'center',
			'fontSize' : '24px',
			'lineHeight' : '28px',
			'padding' : '20px',
			'left' : pos[0],
			'top' : pos[1],
			'position' : 'absolute',
			'width' : f.getStyle('width').toInt() - 40,
			'height' : f.getStyle('height').toInt() - 40
		});
		$$("body").grab(el);
}

function init_event_form() {
	var f = $("post_event"); // post event form ID
	if (f) {
		f.addEvent('submit', function(e) { new Event(e).stop(); });
		$("save_event").disabled = true;
		$("save_event").addClass("disabled_button");
		$("save_event").addEvent("click", function() { send_event_info(); });

		var el = new Element('div', { 'id' : 'event_form_stats' });
		el.setStyle("padding","12px");
		f.grab(el);

		for (var i=0; i<f.elements.length; i++) {
			f.elements[i].onchange = function () { check_event_form(); }
			if (f.elements[i].type == "text" || f.elements[i].type == "password") {
				f.elements[i].onkeypress = function () { check_event_form(); }
			}
		}
		
		check_event_form();
	}
}

function get_event_info_for_edit(id) {
	set_up_post_event_cover($("post_event"),"Getting event data for editing, please wait....");
	var ajrq = new Request({
		url:ajax_url,
		onSuccess: function(responseText, responseXML) {
			//$("event_form_stats").set("text",responseText);
			ojson = JSON.decode(responseText);
			if (ojson.result == "ok") {
				$("post_event_cover").set("html","Event information retrieved, after editing don't forget to save your changes.");
				set_up_event_edit(ojson.data);
				check_event_form();
			} else {
				switch (ojson.result) {
					case "sys.error":
						$("post_event_cover").set("html","Failed to get event info due to system error, sorry... try again later!");
						break;
				}
			}
			var timer = setTimeout(function() { $('post_event_cover').fade('out'); } ,3000);
			var timer2 = setTimeout(function() { $('post_event_cover').destroy(); } ,3500);
		},
		onFailure: function() { 
			$("post_event_cover").set("html","FAIL in get_event_info_for_edit");
			var timer = setTimeout(function() { $('post_event_cover').fade('out'); } ,6000);
			var timer2 = setTimeout(function() { $('post_event_cover').destroy(); } ,7500);
		}
	}).send({data:{ util:'calevents', ev_id:id, a:'get.event' }});
}

function set_up_event_edit(d) {
	//if (typeof("d") != "object") { d = JSON.decode(d); }
	var f = $("post_event"); // post event form ID
	if (f) {
		// change header for edit event
		var h = f.getParent().getFirst("h3");
		h.set("text","Edit Event");
		f.ev_id.value = d.ev_id;
		f.ev_title.value = d.ev_title;
		f.ev_subtitle.value = d.ev_subtitle;
		f.ev_loc.value = d.ev_location;
		f.ev_url.value = d.ev_url;
		f.ev_date.value = d.ev_date; // M d, Y
		f.ev_time.value = d.ev_time; // g:ia
		f.ev_description.value = d.ev_description;
		f.ev_sec.options[d.ev_sec].selected = true;
		check_event_form();
	}
}

function get_calendar(w) {
	var cal = $("calendar");
	var ajrq = new Request.HTML({
		url:ajax_url,
		onSuccess: function(tree, elements, html, js) {
			load_new_calendar(html,w);
		},
		onFailure: function() { 
			// do nothing?
		}
	}).post({ util:'calevents', a:'get.cal', t:w, cur:cal.get("rel") });
}

function load_new_calendar(j,t) {
	var cal = $("calendar");
	cal.empty().set("html",j);

	var yrmon = cal.get("rel").split("-");
	var mn = yrmon[1].toInt();
	var myDate=new Date();
	myDate.setFullYear(yrmon[0],mn,01);
	var cyear = myDate.getFullYear();
	var cmon = myDate.getMonth();
	if (t == "next") {
		cmon++;
	} else {
		cmon--;
	}
	if (cmon < 10) { cmon = "0" + cmon; }
	var str = cyear + "-" + cmon;
	cal.set("rel",str);
	//$("event_form_stats").set("text","["+str+"]\n"+j);
	
	activate_calendar();
}

function activate_calendar() {
	$$("div.hasevents").each(function(ev) {
		ev.addEvent('click', function() {
			var aa = this.getFirst("a");
			aa.fireEvent("click");
		});
		var s = ev.getFirst("span");
		ev.set("title",ev.getFirst("span").get("html"));
	});

	// add script to activate next/prev links when ready
	$$("div.prev").each(function(p) {
		p.getFirst("a").addEvent("click", function (e) { new Event(e).stop(); get_calendar("prev"); });
	});
	$$("div.next").each(function(p) {
		p.getFirst("a").addEvent("click", function (e) { new Event(e).stop(); get_calendar("next"); });
	});
	SqueezeBox.assign($$('a.boxed'), { parse: 'rel' });
	var caltips = new Tips('.hasevents');
}

window.addEvent('domready', function() {
	activate_calendar();
	$$("a.edit_event").each(function(ev) {
		ev.addEvent('click', function(e) {
			new Event(e).stop();
			get_event_info_for_edit(this.get("rel"));
		});
		
	});
	init_event_form();
});
