/****************************************

 * University of Dayton

 * JavaScript effects for Events pages

 ****************************************/



// ---------------------------------------------------------------------------

// Extend moo.fx Fx.Height effect to support setting on/off instead of just 

// toggling

//

// NOTE: Peter : This depends on css stylng, which is buried in local events_main_css !!!!!

//

// ---------------------------------------------------------------------------







Object.extend(Fx.Height.prototype, { 

	toggleOn: function() {

		this.custom(0, this.element.scrollHeight);

	},



	toggleOff: function() {

		this.custom(this.element.offsetHeight, 0);

	}

});



function eventControls() {

	controls = document.getElementsByClassName("event-controls", "mainContent");



	controls.each(function(control) {

		var invite = document.getElementsByClassName("inv", control)[0];

		var inviteForm  = document.getElementsByClassName("event-controls-form", control)[0];

		var calendar = document.getElementsByClassName("cal", control)[0];

		var calendarForm  = document.getElementsByClassName("event-controls-form", control)[1];

		

		inviteForm.style.display = "block";

		calendarForm.style.display = "block";

		

		var toggleInvite = new Fx.Height(inviteForm, { duration: 300 });

		var toggleCalendar = new Fx.Height(calendarForm, { duration: 300 });

		

		toggleInvite.hide();

		toggleCalendar.hide();

		

		Event.observe(invite, "click", function(e) { clickInvite(e); }, false);

		Event.observe(calendar, "click", function(e) { clickCalendar(e); }, false);

		

		function clickInvite(e) {

			if(Element.hasClassName(invite, "active")) {

				toggleInvite.toggleOff();

				Element.removeClassName(invite, "active");

			}

			else {

				showForm(toggleInvite, toggleCalendar);

				Element.addClassName(invite, "active");

				Element.removeClassName(calendar, "active");

			}

			if(e) {Event.stop(e);} 

		}

		

		function clickCalendar(e) {

			if(Element.hasClassName(calendar, "active")) {

				toggleCalendar.toggleOff();

				Element.removeClassName(calendar, "active");

			}

			else {

				showForm(toggleCalendar, toggleInvite);

				Element.addClassName(calendar, "active");

				Element.removeClassName(invite, "active");

			}

			if(e) {Event.stop(e);}

		}

	});

	

	function showForm(show, hide, e) {

		show.toggleOn();

		hide.toggleOff();

	}

}



var set_target;









var ns = (navigator.appName.indexOf("Netscape") != -1);

function change_action_display(state){

	var stat = set_target.getElementsByClassName("statusdisplay")[0];

	switch (state) 

	{

		case 0 : stat.innerHTML = " Sending..."; break;

		case 1 : stat.innerHTML = " Sent!"; break;

		case 2 : stat.innerHTML = " Technical Error"; break;

		case 3 : stat.innerHTML = " Enter your name"; break;

		case 4 : stat.innerHTML = " Invalid Email"; break;

	}

        if(state !== 0) {set_target.getElementsByClassName("submit")[0].disabled = false;}

        if(state==1) {

            resets = $A(set_target.getElementsByTagName("input"));

            resets.each(function(formreset){if(formreset.type == "text" ) {formreset.value = "";}});

        }

}

var notify_of_action_success = function(originalRequest) {

	if(originalRequest.responseText.match(/Success/)) {resultState = 1;} else {resultState = 2;}

	change_action_display(resultState);

};

var notify_of_action_failure = function(originalRequest) {

	resultState = 2;

	change_action_display(resultState);resultState = 2;

	change_action_display(resultState);

};

var notify_of_action_loading = function(originalRequest) {

	resultState = 0;

	change_action_display(resultState);

};



function action_submit() {

			

			if (!ns) {ele = window.event.srcElement;}

			else {ele = this;}

            var subtn = ele;

			var formTarg = ele;

			set_target = ele;

			

			while (set_target.tagName != "DIV") {set_target = set_target.parentNode;}

			while (formTarg.tagName != "FORM") {formTarg = formTarg.parentNode;}

			

			

			subtn.disabled = true;

			



                        form_error = false; 

			if (Form.getInputs(subtn.parentNode,"text","name").length==1) 

                        {

                            namec = Form.getInputs(formTarg, "text", "name")[0].value;

                            if(!namec) {

                                change_action_display(3);

                                form_error = true; 

                            }

                        }

                        emailc = Form.getInputs(formTarg, "text", "email")[0].value;

                        if(emailc.match(/^[a-zA-Z0-9\.]+@[a-zA-Z0-9\.]+\.[a-z]{2,}$/)===null) 

                        {

                           change_action_display(4);

                           form_error = true; 

                        }





/*****************************************************************************/

						formvars = Form.serialize(formTarg);

						url = formTarg.action;



                        if(!form_error) {

							notify_of_action_loading();

							var MiniActions = new Ajax.Request(

								url,

								{

									method:'get',

									parameters:formvars,

									onSuccess:notify_of_action_success,

									onFailure:notify_of_action_failure

								}

							);

	

						

							//$AX("?" + formvars,url,notify_of_action);

					

						}



		}





/*

var notify_of_action = {

	success:function(output, result) {

		if(originalRequest.responseText.match(/Success/)) {resultState = 1;} else resultState = 2;

		change_action_display(resultState);

	},

	failure:function() {

		resultState = 2;

		change_action_display(resultState);

	},

	loading:function() {

		resultState = 0;

		change_action_display(resultState);

	}

}

*/


function setup_event_actions() {

	reroute = document.getElementsByClassName("event-controls-form");



	reroute.each(function(route) {

		/*attach_validation(route);*/

		var subtn = route.getElementsByClassName("submit")[0];

	    var nSubtn= document.createElement("span");

		nSubtn.innerHTML = "<input class='submit' type='button' value='send' name='send' />";

	    subtn.parentNode.replaceChild(nSubtn,subtn);



		Event.observe(nSubtn, "click", action_submit, false);

	});

}


/*

function notify_of_action() {

	var resultState = 0;

	if (JAX.readyState < 4) {

		resultState = 0;

	} else {

		

		if (JAX.status == 200) {

			if(JAX.responseText.match(/Success/)) {resultState = 1;} else resultState = 2;

		}

		else resultState = 2;

	}

	change_action_display(resultState);

}

*/


function animation(path) {

	parfix = path.parentNode || path.parent;

	var exten = document.getElementsByClassName("extended", parfix)[0];

	

	var retrac = path;

	if(!path.toggle)

	{

		if(exten.hSet != "auto")

		{

			dropit = new Fx.Height(exten, {duration:300, onStart:function(){

				exten.style.display = "block";

			}});

		

			dropit._start(0, exten.hSet);

			upit = new Fx.Height(retrac, {duration:300, onComplete:function(){

				retrac.style.display = "none";

				path.toggle = true;

			}});

		

			upit._start(retrac.hSet, 0);

		} else {

			exten.style.display = "block";

			exten.style.height = "auto";

			retrac.style.display = "none";

			path.toggle = true;

		}

	}

	else

	{

		if(exten.hSet != "auto")

		{

			dropit = new Fx.Height(retrac, {duration:300, onStart:function(){

				retrac.style.display = "block";

			}});

			dropit._start(0, retrac.hSet);		

			upit = new Fx.Height(exten, {duration:300, onComplete:function(){

				exten.style.display = "none";

				path.toggle = false;

			}});

			upit._start(exten.hSet, 0);

		} else {

			exten.style.display = "none";

			exten.style.height = "0";

			retrac.style.display = "block";

			path.toggle = false;

		}

	}

}

function dropcontrols(linked, path) {

	Event.observe(linked, "click", function() { animation(path); }, false);

}


function animate_beginning() {

	moreLinks = document.getElementsByClassName("more", "mainContent");

	moreLinks.each(function(moreLink) {

		moreLink.href = "#nogo"; 

		parfix = moreLink.parentNode || moreLink.parent;

		

		dropcontrols(moreLink, parfix);

	});

	titleLinks = document.getElementsByClassName("titleLink","mainContent");

	titleLinks.each(function(titleLink) {

		titleLink.href = "#nogo";

		parfix = titleLink.parentNode.parentNode || titleLink.parent.parent; 

		

		dropcontrols(titleLink, parfix.getElementsByClassName("tease")[0]);

	});

}



function setupMoreLinks() {

	setup_event_actions();

	teases = document.getElementsByClassName("tease", "mainContent");

	teases.each(function (tease) {

		tease.style.display="block";

		tease.toggle = false;

		tease.hSet = parseInt(Element.getStyle(tease, "height"),10) || "auto";

		

	});

	presets = document.getElementsByClassName("extended","mainContent");

	presets.each(function(pres) {

		pres.hSet = parseInt(pres.getStyle("height"),10) || "auto";

		pres.style.height = "0";

		pres.style.display = "none";

	});

	animate_beginning();

}












version=0;

if (navigator.appVersion.indexOf("MSIE")!=-1){

temp=navigator.appVersion.split("MSIE");

version=parseFloat(temp[1]);

}



// if (version >= 6 || version == 0){ //NON IE browser will return 0



Event.observe(window, "load", function() {


	eventControls();


	setupMoreLinks();

}, false);

// }


