var MH_EVENTS_TAB = "events";
var MH_NEWS_TAB = "news";
var MH_ACCOUNT_TAB = "account";

var MH_EVENT_BOOKING_FORM = "ev_booking_form";

function initMHLogin() {

	// focus username field of login form
	$("member_username").focus();

}

function initMHBody(cp) {

	// get event booking buttons
	var ev_booking_buttons = $$("div#mh_body input.button");
	
	// hide event booking buttons
	for (var i = 0; i < ev_booking_buttons.length; i++)
		ev_booking_buttons[i].addClass("hidden");

	if (cp != null) {
	
		// get content panels
		var content_panels = $$("div#mh_body ul.content-list li.list-item div.content-wrapper");
		
		// hide content panels
		for (var i = 0; i < content_panels.length; i++)
			content_panels[i].slide("hide");
			
	}

}

function mhTabClick(ev, tab) {

	// handle event
	var event = new Event(ev).stop();
	
	if (!$(tab).getParent("li").hasClass("current")) {
	
		if ($(tab).getParent("li").hasClass(MH_EVENTS_TAB)) {
		
			mhBodyLoad(null, MH_EVENTS_TAB);
			
		} else if ($(tab).getParent("li").hasClass(MH_NEWS_TAB)) {
		
			mhBodyLoad(null, MH_NEWS_TAB);
			
		} else if ($(tab).getParent("li").hasClass(MH_ACCOUNT_TAB)) {
		
			mhBodyLoad(null, MH_ACCOUNT_TAB);
			
		}
	
	}

}

function loadAccountTab() {

	mhBodyLoad(null, MH_ACCOUNT_TAB);

}

function mhBodyLoad(response, tab, params) {

	if (response != null) {
	
		// remove loading icon
		mhBodyStopLoading();
		
		// set current tab
		mhSetCurrentTab(response.tab, null);
			
		// set content
		mhBodyShow(response.html);
		
		// initialise
		initMHBody(true);
	
	} else {
	
		mhBodyClear(true);
		
		// page?
		var page = null;
		
		if (params != null) {
			if (params.page != null)
				page = params.page;
		}
		
		switch(tab) {
		
			case MH_EVENTS_TAB:
				
				// get params
				var disp = $$("form#mh_calendar_form select")[0].value;
				var month = $$("form#mh_calendar_form input[name='ev-month']")[0].getProperty("value");
				var year = $$("form#mh_calendar_form input[name='ev-year']")[0].getProperty("value");
				
				var day = null;
				
				if (params != null) {
					if (params.ev_day != null)
						day = params.ev_day;
				}
			
				// json request
				new Request.JSON({
						url: "/modules/h_members/actions.php",
						onSuccess: mhBodyLoad
					}).post({
						"a": "load_events",
						"disp": disp,
						"day": day,
						"month": month,
						"year": year,
						"page": page
					});
			
				break;
				
					
			case MH_ACCOUNT_TAB:
				
				// json request
				new Request.JSON({
						url: "/modules/h_members/actions.php",
						onSuccess: mhBodyLoad
					}).post({
						"a": "load_account",
						"page": page
					});
				
				break;
			
				
			default:
			
				// json request
				new Request.JSON({
						url: "/modules/h_members/actions.php",
						onSuccess: mhBodyLoad
					}).post({
						"a": "load_news",
						"page": page
					});
				
				break;
		
		}
		
		return false;
	
	}

}

function mhBodyShow(content) {

	if ($("mh_body")) {
	
		// set inner html
		$("mh_body").set("html", content);
	
	}

}

function mhElementShow(elem, content) {

	if (elem) {
	
		// set inner html
		elem.set("html", content);
	
	}

}

function mhBodyClear(show_loading) {

	if ($("mh_body")) {
		
		// remove inner html
		$("mh_body").set("html", null);
		
		// show loading icon
		if (show_loading)
			$("mh_body").addClass("loading");
	
	}

}

function mhBodyStopLoading() {

	if ($("mh_body")) {
	
		$("mh_body").removeClass("loading");
	
	}

}

function mhGetCurrentTab(tabs) {

	// get tabs (if not passed to function)
	if (tabs == null)
		tabs = $$("ul#mh_tabs a");
		
	if (tabs.length > 0) {
	
		for (var i = 0; i < tabs.length; i++) {
		
			if (tabs[i].getParent("li").hasClass("current")) {
			
				if (tabs[i].getParent("li").hasClass(MH_NEWS_TAB))
					return MH_NEWS_TAB;
				else if (tabs[i].getParent("li").hasClass(MH_EVENTS_TAB))
					return MH_EVENTS_TAB;
			
			}
		
		}
	
	}

}

function mhSetCurrentTab(current_tab, tabs) {

	// get tabs (if not passed to function)
	if (tabs == null)
		tabs = $$("ul#mh_tabs a");
		
	if (current_tab && tabs.length > 0) {
	
		for (var i = 0; i < tabs.length; i++) {
		
			if (tabs[i].getParent("li").hasClass(current_tab))
				tabs[i].getParent("li").addClass("current");
			else
				tabs[i].getParent("li").removeClass("current");
		
		}
	
	}

}

function mhToggleContent(ev, cls, action) {

	// handle event
	var event = new Event(ev).stop();
	
	// get element
	var elem = $$("div#mh_body ul.content-list li.list-item div." + cls);
	
	if (elem.length == 1) {
	
		var content = elem[0];
		
		if (action != null)
			content.slide(action);
		else
			content.slide();
		
	}

}

function mhBreadcrumb(ev, disp) {

	// handle event
	var event = new Event(ev).stop();
	
	// toggle ddl
	mhCalSetDdl(disp);
	
	// mimic ddl toggle event
	mhCalDdlToggle(disp);

}

function mhPaginate(response, ev, page) {

	// handle event
	var event = new Event(ev).stop();
	
	// get current tab
	var tab = mhGetCurrentTab();
	
	// define params
	var params = new Object();
	params.page = page;
	
	// load content
	mhBodyLoad(null, tab, params);

}

function mhBookEvent(response, ev, event_id) {

	if (response != null) {
	
		// set checkbox status and update interface
		if (response.booked) {
			$("ev_booked" + response.event_page_id).checked = true;
			$("ev_header" + response.event_page_id).addClass("header-booked");
		} else {
			$("ev_booked" + response.event_page_id).checked = false;
			$("ev_header" + response.event_page_id).removeClass("header-booked");
		}
	
	} else {
	
		// handle event
		var event = new Event(ev).stop();
	
		// get params
		var event_cat_id = $$("form#" + MH_EVENT_BOOKING_FORM + event_id + " input[name='event_cat_id']")[0].getProperty("value");
		var event_page_id = event_id;
		
		// json request
		new Request.JSON({
				url: "/modules/h_members/actions.php",
				onSuccess: mhBookEvent
			}).post({
				"a": "book_event",
				"booked": true,
				"event_cat_id": event_cat_id,
				"event_page_id": event_page_id
			});
	
	}

}

windowDomReady[windowDomReady.length] = function() {

	// login
	if ($("member_login"))
		initMHLogin();

	// body
	if ($("mh_body"))
		initMHBody();
	
};
