//scripts initialization

window.addEvent('domready', function() {
	$("calEventsDetails").fade("out");
	elDate = new Date();
	mpaCalendar.curCalDay = $("d" + elDate.getDate());
	
	var sID = $("featured_event_details").className.substr(6);
	
	$("featured_event_details").addEvents({
		mouseenter: function(){
			this.tween("background-color", "#e5eaef");
		},
		mouseleave: function(){
			this.tween("background-color", "#ffffff");
		}
	});
	
	if($("detailsPage")) {
		$("featured_event_details").addEvents({					
			click: function() {
				mpaCalendar.fetchDetails(sID);
			}
		});				 
	} else {
		$("featured_event_details").addEvents({					
			click: function() {
				document.location = "/eventDetails.php?x=" + sID;
			}
		});
	}
	
	toggleText.pair();
});

/////////////////////////////////////////
//
// Toggle Text sections
//


toggleText = {
	
	pair: function () {
		
		var tGroup = $("left").getElements("div[class=toggle_group]");

		tGroup.each(function(item,index) {
			var groupEl = item.getElements("div");
			
			var fxSlide = new Fx.Slide(groupEl[1], {duration: 1000});
			fxSlide.hide();
			
			groupEl[0].addEvents({
				click: function() {
					fxSlide.toggle();
					
					if(groupEl[0].hasClass("toggle_title")) { 
						var fxMorph = new Fx.Morph(item, {duration: 1000});
						fxMorph.start('.toggle_group_active');
					}
				}
			});
		});
	}
}

/////////////////////////////////////////
//
// Main navigation functions
//
function pointerOn(name)
{
	//console.log(name);
	$('pointer').className = "pos_" + name;
}

function pointerOff()
{
	$('pointer').className = "no_pos";
}

function emptyme(e){ e.value == ""; }

function goHome()
{	
	document.location = '/';
}

function swapnav(name)
{
	var e = $("nav_" + name);
	var server = "";//"http://pharm.visioncreative.net"
	var path = server  + "/images/"; 
	var overstate = path + e.id + "_over.png";
	if(e.src == overstate){
		e.src = path + e.id + ".png";
	} else {
		e.src = overstate;
	}
}

function navState(name, state)
{
	var e = $("nav_" + name);
	var server = "";//"http://pharm.visioncreative.net"
	var path = server  + "/images/"; 
	
	if(e.src != path + e.id + "_active.png"){
		switch (state) {
			case 'up' :
				e.src = path + e.id + ".png";
			break;
			case 'over' :
				e.src = path + e.id + "_over.png";
			break;
			case 'active' :
				e.src = path + e.id + "_active.png";
			break;
		}
	}
}

var menuActive = false

function showDropdown(e)
{
	mopen(e);
}

function hideDropdown(e)
{
	mclosetime();
}

var timeout	= 100;
var closetimer	= 0;
var ddmenuitem	= 0;
var ddtab = 0;

// open hidden layer
function mopen(id)
{	
	// cancel close timer
	mcancelclosetime();

	// close old layer
	if(ddmenuitem){ddmenuitem.style.display = 'none'};
	if(ddtab){navState(ddtab, 'up')}

	// get new layer and show it
	ddmenuitem = $('dropdown_' + id);
	ddmenuitem.style.display = 'block';
	ddtab = id;
	navState(ddtab, 'over');

}
// close showed layer
function mclose()
{
	if(ddmenuitem){ddmenuitem.style.display = 'none'};
	if(ddtab){navState(ddtab, 'up')}
}

// go close timer
function mclosetime()
{
	closetimer = window.setTimeout(mclose, timeout);
}

// cancel close timer
function mcancelclosetime()
{
	if(closetimer)
	{
		window.clearTimeout(closetimer);
		closetimer = null;
	}
}


/////////////////////////////////////////
//
// MPA Calendar Module
//
mpaCalendar = {
	curCalDay: null,
	curDate: null,

	monthPrev: function(leDate) {
		new Request({
			method: "post",
			url: "/monthFetcher.php",
			data: {dir: "prev", date: leDate},
			onSuccess: function(responseText) {
				$("calendarContainer").innerHTML = responseText;
			}
		}).send();
	},

	monthNext: function(leDate) {
		new Request({
			method: "post",
			url: "/monthFetcher.php",
			data: {dir: "next", date: leDate},
			onSuccess: function(responseText) {
				$("calendarContainer").innerHTML = responseText;
			}
		}).send();
	},
	
	goDay: function(e,theDate) {
		this.fetchEvents(theDate);
	},
	
	toggleClickyDay: function(e) {
		var nombre = String(e.className);
		var dayPos = nombre.substr(11);
		var dayClass = nombre.substr(0,10);
		e.className = (dayClass == "dayClicker") ? "dayCurrent " + dayPos : "dayClicker " + dayPos;
	},
	
	fetchEvents: function(leDate) {
		new Request({
			method: "post",
			url: "/eventFetcher.php",
			data: {date: leDate},
			onSuccess: function(responseText) {
				$("calEventsDetails").innerHTML = responseText;
				var scrollInfo = $("calEventsContainer").getScrollSize();
				$("calEventsDetails").setStyle("height", scrollInfo.y - 30);	//adjust for padding on details div
				$("calEventsDetails").fade("in");
				
				mpaCalendar.setEventFaders();
			}
		}).send();
	},

	fetchDetails: function(sID) {
		var eDetails = $("detailsPage");

		eDetails.set("tween",{
			duration: "short",
			onComplete: function() {
				new Request({
					method: "post",
					url: "/eventDetailsFetcher.php",
					data: {eventID: sID},
					onSuccess: function(responseText) {				
						eDetails.innerHTML = responseText;							
						eDetails.set("tween",{onComplete: function() {}});

						eDetails.fade("in");
					}
				}).send();
			}
		});

		eDetails.fade("out");
	},

	fadeDetails: function() {
		$("calEventsDetails").fade("out");
	},
	
	setEventFaders: function() {
		var aEvents = $("calEventsDetails").getElements("div[class=calEvent]");

		aEvents.each( function(item,index) {
			var sID = item.get("id").substr(6);

			item.addEvents({
				mouseenter: function(){
					this.tween("background-color", "#EEEEEE");
				},
				mouseleave: function(){
					this.tween("background-color", "#ffffff");
				}
			});
			
			if($("detailsPage")) {
				item.addEvents({					
					click: function() {
						mpaCalendar.fetchDetails(sID);
					}
				});				 
			} else {
				item.addEvents({					
					click: function() {
						document.location = "/eventDetails.php?x=" + sID;
					}
				});
			}
		});
	},
	
	doLogin: function() {
		if($("user").value != "" && $("pass").value != "") {
			elModule = $("member_login");
			
			elModule.set("tween",{
				duration: "short",
				onComplete: function() {
					$("moduleLoginForm").set("send", {
						method: "post",
						url: "/doModuleLogin.php",
						onSuccess: function(responseText) {				
							elModule.innerHTML = responseText;							
							elModule.set("tween",{onComplete: function() {}});

							//update page if successful login
							if(elModule.getElementById("theMan")) {
								mpaCalendar.updateLeftCol();	
							}

							elModule.fade("in");
						}
					}).send();
				}
			});

			elModule.fade("out");

		} else {
			$("errorBox").innerHTML = "A Username and Password are required.";	
		}
	},

	getForgotPassForm: function() {
		elModule = $("member_login");
		
		elModule.set("tween",{
			duration: "short",
			onComplete: function() {
				new Request({
					method: "post",
					url: "/doForgotPass.php",
					onSuccess: function(responseText) {				
						elModule.innerHTML = responseText;							
						elModule.set("tween",{onComplete: function() {}});
						elModule.fade("in");
					}
				}).send();
			}
		});

		elModule.fade("out");
		
	},

	doForgotPass: function() {
		if($("forgotpass").value != "") {
			elModule = $("member_login");
			
			elModule.set("tween",{
				duration: "short",
				onComplete: function() {
					$("forgotPassForm").set("send", {
						method: "post",
						url: "/doForgotPass.php",
						onSuccess: function(responseText) {				
							elModule.innerHTML = responseText;							
							elModule.set("tween",{onComplete: function() {}});
							elModule.fade("in");
						}
					}).send();
				}
			});

			elModule.fade("out");

		} else {
			$("errorBox").innerHTML = "An email address is required.";	
		}
	},

	doLogout: function() {
		elModule = $("member_login");
		
		elModule.set("tween",{
			duration: "short",
			onComplete: function() {
				new Request({
					method: "post",
					url: "/doModuleLogout.php",
					onSuccess: function(responseText) {				
						elModule.innerHTML = responseText;							
						elModule.set("tween",{onComplete: function() {}});

						mpaCalendar.updateLeftCol();	

						elModule.fade("in");
					}
				}).send();
			}
		});

		elModule.fade("out");
	},


	updateLeftCol: function() {
		var sURL = unescape(document.location.href);
		var eLeft = $("left");

		var myHTMLRequest = new Request.HTML({
			url: sURL,
			evalScripts: false,
			onSuccess: function(responseTree,responseElements,responseHTML,responseJavaScript) {
				responseElements.each(function (el) {
					if(el.get("id") == "left") {
						eLeft.set("tween",{
							duration: "short",
							onComplete: function() {	
								eLeft.innerHTML = el.innerHTML							
								eLeft.set("tween",{onComplete: function() {}});
								eLeft.fade("in");
							}
						});
						eLeft.fade("out");
					}
				});
			}
		}).send();
	}

}


mpaForms = {
	reqFields: new Array(),

	setRequiredFields: function(sFields) {
		mpaForms.reqFields = sFields;
	},

	checkFields: function() {
		missingFields = false;
		firstMissing = null;
		
		var aFieldTypes = ["input","textarea","select"];

		aFieldTypes.each(function(fldType) {
			aFields = $$(fldType + "[class=field_required]");
	
			aFields.each(function(fld) {
				fldName = fld.getProperty("name");
				fldType = fld.getProperty("type")
				if(fldType == "checkbox" || fldType == "radio") {
					
					// Checkbox or Radio button
					aChkFields = $$("input[name=" + fldName + "]");
			
					if(aChkFields.length > 0) {
//						aChkFields = $$("input[name=" + fldName + "[]]");
					}
					
					
					var bAnythingChecked = false;
					
					aChkFields.each(function(chkFld) {
						if(chkFld.checked) {
							bAnythingChecked = true;
						}
					});
						
					if(!bAnythingChecked == true) {
						missingFields = true;

						if($("title_" + fldName)) {
							var elTitle = $("title_" + fldName);
							
							if(elTitle.className != "fieldTitleRequired") {
								elTitle.store("originalClass",elTitle.className);
								elTitle.className = "fieldTitleRequired";		
							}

							if(firstMissing == null) {
								firstMissing = $("title_" + fldName);	
							}
						}
					}
				} else {
					if(fld.value == "") {
//						alert("missing field: " + fld.get("name"));
						missingFields = true;

						if($("title_" + fldName)) {
							var elTitle = $("title_" + fldName);
							elTitle.store("originalClass",elTitle.className);
							elTitle.className = "fieldTitleRequired";
								
							if(firstMissing == null) {
								firstMissing = $("title_" + fldName);	
							}
						} else {
							if(fld.get("alt") != null) {
								newName = fld.get("alt");
								var elTitle = $("title_" + newName);
								elTitle.store("originalClass",elTitle.className);
								elTitle.className = "fieldTitleRequired";
									
								if(firstMissing == null) {
									firstMissing = $("title_" + newName);	
								}
							}
						}
					}
				}
			});
		});
		
		if(missingFields) {
			if(firstMissing != null) {
				var myFx = new Fx.Scroll($(document.body), {
					onComplete: function() {
						alert("You forgot some necessary information.  Please fill out the required fields to continue.");
					}
				});
			
				myFx.toElement(firstMissing);
			}
			return false;
		}
		
		if($("password_confirm")) {
			if($("password").value != $("password_confirm").value) {
				$("title_password").className = "fieldTitleRequired";
				$("title_password_confirm").className = "fieldTitleRequired";
				
				alert("The passwords you entered do not match.");
				return false;
			}			
		}

		if($("email_confirm")) {
			if($("email").value != $("email_confirm").value) {
				$("title_email").className = "fieldTitleRequired";
				$("title_email_confirm").className = "fieldTitleRequired";
				
				alert("The email addresses you entered do not match.");
				return false;
			}
		}

		if($("billing_email_confirm")) {
			if($("billing_email").value != $("billing_email_confirm").value) {
				$("title_billing_email").className = "fieldTitleRequired";
				$("title_billing_email_confirm").className = "fieldTitleRequired";
				
				alert("The email addresses you entered do not match.");
				return false;
			}
		}

		return true;
	},
	
	sameAsBilling: function() {
		frmFields = new Array("_firstname","_lastname","_address1","_address2","_city","_state","_zip","_phone","_fax","_email");
		frmFields.each(function(fld) {
			$("shipping" + fld).value = $("billing" + fld).value;
		});
		$("sameAsBilling").checked = false;
	},


	submitForm: function(formID) {
		if(this.checkFields()) {
			$(formID).submit();
//			alert("the form checks out");
		}
	},

	resetRequired: function(sField) {
		if($("title_" + sField)) {
			var elTitle = $("title_" + sField);
			if(elTitle.className == "fieldTitleRequired") {
				elTitle.className = elTitle.retrieve("originalClass");
			}
		}
	},
	
	otherInput: function(e,sTitle) {
		if(e.value == "Other...") {
			$(sTitle).setStyle("display","inline");
		} else {
			$(sTitle).setStyle("display","none");
		}
	},
	
	submitRegForm: function(formID) {
		if(this.checkFields()) {
			$(formID).submit();
		}
	},
	
	
	submitAjaxForm: function(formID,updateDiv) {
		if(this.checkFields()) {
			elDiv = $(updateDiv);
			elDiv.setStyle("height",elDiv.getScrollSize().y);
			
			elDiv.set("tween",{
				duration: "short",
				onComplete: function() {
					$(formID).set("send", {
						method: "post",
						onSuccess: function(responseText) {				
							elDiv.innerHTML = responseText;							
							elDiv.set("tween",{onComplete: function() {}});

							elDiv.fade("in");
							var myFx = new Fx.Scroll($(document.body));
							myFx.toElement(elDiv);
						}
					}).send();
				}
			});

			elDiv.fade("out");
		} 
	},
	
	updateChunk: function(sURL,sUpdateDiv) {
		elDiv = $(sUpdateDiv);
		
		var myHTMLRequest = new Request.HTML({
			url: sURL,
			onSuccess: function(responseTree,responseElements,responseHTML,responseJavaScript) {
				elDiv.set("tween",{
					duration: "short",
					onComplete: function() {	
						elDiv.innerHTML = responseHTML;							
						elDiv.set("tween",{onComplete: function() {}});
						elDiv.fade("in");
					}
				});
				elDiv.fade("out");
			}
		}).send();
	},
	
	fetchRegistrationForm: function(sID) {
		var eRegForm = $("regFormDiv");

		eRegForm.set("tween",{
			duration: "short",
			onComplete: function() {
				new Request.HTML({
					method: "post",
					url: "/registrationFetcher.php",
					data: {eventID: sID},
					onSuccess: function(responseTree,responseElements,responseHTML,responseJavaScript) {			
						eRegForm.innerHTML = responseHTML;							
						eRegForm.set("tween",{onComplete: function() {}});


						var scrollInfo = eRegForm.getScrollSize();

						new Fx.Morph(eRegForm, {
							duration: "normal"
						}).start({
							"height": scrollInfo.y,
							"opacity": 1
						});
					}
				}).send();
			}
		});

		eRegForm.fade("out");
	}
}

mpaNews = {	
	init: function () {
		var tGroup = $("left").getElements("div[class=newsCategory]");

		tGroup.each(function(newsCat,index) {
			var scrollInfo = newsCat.getScrollSize();
			newsCat.store("originalHeight",scrollInfo.y);
			newsCat.setStyle("height",scrollInfo.y);
		});
	},
	
	showCategory: function(sCatTitle,sDiv) {
		var elDiv = $("news_" + sDiv);
		elDiv.set("tween",{
			duration: "short",
			onComplete: function() {
				new Request({
					method: "post",
					url: "/newsFetcher.php",
					data: {cat: sCatTitle},
					onSuccess: function(responseText) {
						var elDiv = $("news_" + sDiv);
						elDiv.innerHTML = responseText;	
						var scrollInfo = elDiv.getScrollSize();						

						elDiv.set("tween",{onComplete: function() {}});

						new Fx.Morph(elDiv, {
							duration: 1000
						}).start({
							"height": scrollInfo.y,
							"opacity": 1
						});
					}
				}).send();
			}
		});

		elDiv.fade("out");
	}
}








