var myAccordion;
var first_time = 1;
var meal_tax =.0825;
var hotel_tax =.105;
var county_fee = .5;
var meal_cost = 48;

window.addEvent('domready', function() {
	
	//create our Accordion instance
	myAccordion = new Accordion($('accordion'), 'h3.toggler', 'div.element', {
		display:-1,
		opacity: true,
		initialDisplayFx: false,
		alwaysHide: true,
		alwaysHide: true,
		onActive: function(toggler, element){
			toggler.setStyle('text-decoration', 'none');
			if (first_time == 1){
				document.getElementById("option_1").style["display"]= "block";	
				document.getElementById("option_2").style["display"]= "block";	
				first_time = 0;
			}
		},
		onBackground: function(toggler, element){
			toggler.setStyle('text-decoration', 'underline');
		}
	});
	
	$('rezform').addEvent('submit', function(e) {
		//Prevents the default submit event from loading a new page.
		e.stop();
		var button_div = $('emailbutton');
		//Empty the log and show the spinning indicator.
		var log = $('validatemessage').empty().addClass('ajax-loading');
		if(validateform("rezform")){
			//Set the options of the form's Request handler. 
			//("this" refers to the $('rezform') element).
			this.set('send', {onComplete: function(response) { 
				log.removeClass('ajax-loading');
				if(response == "true")
				{
					button_div.set('html', 'Thank You.  Your request has been sent.');
				} else {
					log.set('html', 'Error: please review fields above and re-submit');
				}
			}});
			//Send the form.
			this.send();
		}
		else{
			log.removeClass('ajax-loading');
			log.set('html', 'Validation Error: please correct fields in yellow above');
		}
	});
	
});

function doRoom(form_instance){
/*called by updateRates, updateDates, and when adultcount field is changed

master function for room rate calculation.  called every time a variable is changed that effects room rates such as:

checks room selection, if no room empty, no update
checks date fields.  if either date is empty, no update
checks number of guests.  if number of guests is empty, no update

*/	
	var roomcost = 0;
	var tax = 0;
	var extrapeople;
	var extraperson_weekday = 85;
	var extraperson_weekend = 110;
	var roomrate_single_weekday_id = "roomrate_single_weekday_"+ form_instance;
	var roomrate_double_weekday_id = "roomrate_double_weekday_"+ form_instance;
	var roomrate_single_weekend_id = "roomrate_single_weekend_"+ form_instance;
	var roomrate_double_weekend_id = "roomrate_double_weekend_"+ form_instance;
	var weekendNights_id = "weekendNights_"+ form_instance;
	var weekdayNights_id = "weekdayNights_"+ form_instance;
	var totalNights_id = "totalNights_"+ form_instance;
	var guestcount_id = "guestcount_"+ form_instance;
	var roomcost_id = "roomcost_"+ form_instance;
	var tax_id = "tax_"+ form_instance;
	
	var roomrate_single_weekday = document.getElementById(roomrate_single_weekday_id).value;
	var roomrate_double_weekday = document.getElementById(roomrate_double_weekday_id).value;
	var roomrate_single_weekend = document.getElementById(roomrate_single_weekend_id).value;
	var roomrate_double_weekend = document.getElementById(roomrate_double_weekend_id).value;
	var weekendnights = document.getElementById(weekendNights_id).value;
	var weekdaynights = document.getElementById(weekdayNights_id).value;
	var totalnights = document.getElementById(totalNights_id).value;
	var guestcount = check_data(document.getElementById(guestcount_id).value,"number of people in a room");
	if ( roomrate_single_weekday != 0 && guestcount != 0 && totalnights != 0 ) 
		{
			
		if (guestcount > 1){
			roomcost = (roomrate_double_weekday * weekdaynights) + (roomrate_double_weekend * weekendnights);
			extra_people = guestcount - 2;
			roomcost += ( extraperson_weekday * extra_people * weekdaynights) + (extraperson_weekend * extra_people * weekendnights);
		}else{
			roomcost = (roomrate_single_weekday * weekdaynights) + (roomrate_single_weekend * weekendnights);
		}
		tax += (guestcount * meal_cost) * meal_tax;
		tax += (roomcost - (guestcount * meal_cost)) * hotel_tax;
		tax += totalnights * county_fee;
	}
	document.getElementById(roomcost_id).value=roomcost.toFixed(2);
	document.getElementById(tax_id).value = tax.toFixed(2);
	doTotal(form_instance);
}

/*
need function that


gpcost
stagecost



*/


function check_data(fieldvalue,field){
/*called by updateRates, updateDates, and when adultcount field is changed*/
	if (fieldvalue != parseInt(fieldvalue)){
		alert ("There is an error with the entry for " + field + ".  Please only enter whole numbers");
		value = 0;
	}
	if (fieldvalue < 0){
		alert ("There is an error with the entry for " + field + ".  Please only enter positive numbers");
		fieldvalue = fieldvalue * -1;
	}
	return fieldvalue;
}

/* updateRates
called by room selection
updates rates for single occ, weeknight, single occ weekend, double occ weeknight, and double occ weekend
doRoom()
*/

function updateRoomRates(roomrates,form_instance) {
//called when retreat field is updated
	var roomrate_single_weekday_id = "roomrate_single_weekday_"+ form_instance;
	var roomrate_double_weekday_id = "roomrate_double_weekday_"+ form_instance;
	var roomrate_single_weekend_id = "roomrate_single_weekend_"+ form_instance;
	var roomrate_double_weekend_id = "roomrate_double_weekend_"+ form_instance;
	var roomrates_array=roomrates.split("|");
	var roomrate_single_weekday = roomrates_array[1];
	var roomrate_double_weekday = roomrates_array[2];
	var roomrate_single_weekend = roomrates_array[3];
	var roomrate_double_weekend = roomrates_array[4];
	
	document.getElementById(roomrate_single_weekday_id).value=roomrate_single_weekday;
	document.getElementById(roomrate_double_weekday_id).value=roomrate_double_weekday;
	document.getElementById(roomrate_single_weekend_id).value=roomrate_single_weekend;
	document.getElementById(roomrate_double_weekend_id).value=roomrate_double_weekend;
	
	doRoom(form_instance);
}


/* updateDates
called by dateselectors
updates stored dates, checks againts possible retreat dates
doRoom()
*/

function getRetreatInfo(retreatinfo,form_instance) {
/*doRetreat
stores start and end dates for retreat
stores rate for retreat
*/
//called when retreat field is updated
	var retreatrate_id = "retreatrate_" + form_instance;
	var retreatinfo_array=retreatinfo.split("|");
	var retreatstartdate = retreatinfo_array[0];
	var retreatenddate = retreatinfo_array[1];
	var retreattitle = retreatinfo_array[2];
	var retreatrate = retreatinfo_array[3];
	
	document.getElementById(retreatrate_id).value=retreatrate;
	
	retreatCalc(form_instance);
	doRoom(form_instance);
}


function gpCalc(form_instance) {
//called by doRetreat, or when retreatcount field is changed
	var totalNights_id = "totalNights_" + form_instance;
	var gpcount_id = "gpcount_" + form_instance;
	var gpcost_id = "gpcost_" + form_instance;
	var tax_id = "tax_"+ form_instance;
	var tax = 0;
	var gpcost = 0;
	var gprate = 60;
	var gpnights = document.getElementById(totalNights_id).value;
	var gpcount = check_data(document.getElementById(gpcount_id).value,"number of people in guest practice"); //from field
	if ( gpcount != "" ) 
		{gpcost = gpcount * gprate * gpnights;}
	document.getElementById(gpcost_id).value=gpcost.toFixed(2);
	
	tax += (gpcount * meal_cost) * meal_tax;
	tax += ((gpcount * gprate) - (gpcount * meal_cost)) * hotel_tax;
	tax += gpnights * county_fee;
	document.getElementById(tax_id).value = tax.toFixed(2);
	
	doTotal(form_instance);
}


function retreatCalc(form_instance) {
//called by doRetreat, or when retreatcount field is changed
	var retreatcount_id = "retreatcount_" + form_instance;
	var retreatrate_id = "retreatrate_" + form_instance;
	var retreatcost_id = "retreatcost_" + form_instance;
	var retreatcost = 0;
	var retreatcount = check_data(document.getElementById(retreatcount_id).value,"number of people in a retreat"); //from field
	var retreatrate = document.getElementById(retreatrate_id).value; //from hidden field
	if ( retreatcount != "" && retreatrate != "" ) 
		{retreatcost = retreatcount * retreatrate;}
	document.getElementById(retreatcost_id).value=retreatcost.toFixed(2);
	doTotal(form_instance);
}


function stageCalc(form_instance) {
//called by doRetreat, or when retreatcount field is changed
	var stagecount_id = "stagecount_" + form_instance;
	var stagecost_id = "stagecost_" + form_instance;
	var stagecost = 0, stagerate = 45;
	var stagecount = check_data(document.getElementById(stagecount_id).value,"number of people on the stage");  //from field
	if ( stagecount != "" ) 
		{stagecost = stagecount * stagerate;}
	document.getElementById(stagecost_id).value=stagecost.toFixed(2);
	doTotal(form_instance);
}


/* calcWeekendNights
determines how many nights in a set of dates is a weekend and returns that number
*/

/* calcWeekdayNights
determines how many nights in a set of dates is during the week and returns that number
*/



/*function doTotal

calculates subtotal based on fields:
retreatcost
gpcost
roomcost1
stagecost

updates estimated tax
updates grand total

*/
Date.prototype.addDays = function(days) {
	this.setDate(this.getDate()+days);
}

function calcAllNights()
{
	for(i=0;i<3;i++)
	{
		calcNights(i);
	}
}

function calcNights()
{
	var iWorkDays;
	if (first_time != 1){
		for (form_instance=0;form_instance<3;form_instance++)
		{
			var weekdayNights_id = "weekdayNights_" + form_instance;
			var weekendNights_id = "weekendNights_" + form_instance;
			var totalNights_id = "totalNights_" + form_instance;
			
			//alert("Date debugging in process.  Output: " + totalNights_id);
			
			var MD1_id = "MD1_" + form_instance;
			var MD2_id = "MD2_" + form_instance;
			
			var sStartDate = datePickerController.getSelectedDate(MD1_id);
			var sEndDate = datePickerController.getSelectedDate(MD2_id);
				
			var iWholeWeeks = 0;
			var iTotalDays = 0;
			var iExtraDays = 0;
			var iExtraWorkingDays = 0;
			var iWorkingWeek = 4;
			var iWeekDay = 0;
			var iWorkDays = 0;
			var bSwitch = false;
			
			var dteTmp = new Date();
			
			var dteStart = sStartDate;
			var dteEnd = sEndDate;
			
			if (dteEnd < dteStart)
			{
				bSwitch = true;
				dteTmp = dteStart;
				dteStart = dteEnd;
				dteEnd = dteTmp;
			}
			else bSwitch = false;
			iWholeWeeks = Math.floor((dteEnd.getTime() - dteStart.getTime()) / 604800000);
			iTotalDays = Math.floor((dteEnd.getTime() - dteStart.getTime()) / 86400000);
			// 1 week in milliseconds = 1000*60*60*24*7
			
			/* Calculate additional days outside in final part-week */
			iExtraDays = Math.floor((dteEnd.getTime() - dteStart.getTime()) / 86400000) % 7;
			// 1 day in milliseconds = 1000*60*60*24
			
			/* Subtract if they are not working days */
			while (iExtraDays > 0)
			{
				iExtraDays = iExtraDays - 1;
				dteEnd.addDays(-1);
				iWeekDay = dteEnd.getDay();
				if (iWeekDay >= 1 && iWeekDay <= 4) iExtraWorkingDays = iExtraWorkingDays + 1;
			}
			
			iWorkDays = (iWholeWeeks * iWorkingWeek) + iExtraWorkingDays;
			
			if (bSwitch) iWorkDays = iWorkDays * -1;
			
			if (iTotalDays>0){
				document.getElementById(weekdayNights_id).value = iWorkDays;
				document.getElementById(weekendNights_id).value = iTotalDays - iWorkDays;
				document.getElementById(totalNights_id).value = iTotalDays;
			}
			
			var gpcount_id = "gpcount_" + form_instance;
			var guestcount_id = "guestcount_" + form_instance;
			var guestcount = document.getElementById(guestcount_id).value;
			var gpcount = document.getElementById(gpcount_id).value;
			
			if (gpcount != null && gpcount != 0)
			{
				gpCalc(form_instance);
			}
			if (guestcount != null && guestcount != 0)
			{
				doRoom(form_instance);
			}
		}//for
	}//if not first time
	if (iWorkDays != null){
		return iWorkDays;
	}
}



function doTotal(form_instance) {
	
	var tax_id = "tax_" + form_instance;
	var retreatcost_id = "retreatcost_" + form_instance;
	var gpcost_id = "gpcost_" + form_instance;
	var stagecost_id = "stagecost_" + form_instance;
	var roomcost_id = "roomcost_" + form_instance;
	var subtotal_id = "subtotal_" + form_instance;
	var totalcost_id = "totalcost_" + form_instance;
	var totalcost_confirm_id = "totalcost_confirm_" + form_instance;
	var deposit_id = "deposit_" + form_instance;
	
	var subtotal,totalcost,deposit;
	var tax = parseFloat(document.getElementById(tax_id).value);
	var retreatcost = parseFloat(document.getElementById(retreatcost_id).value);
	var gpcost = parseFloat(document.getElementById(gpcost_id).value);
	var stagecost = parseFloat(document.getElementById(stagecost_id).value);
	var roomcost = parseFloat(document.getElementById(roomcost_id).value);
	
	subtotal = stagecost + retreatcost + gpcost + roomcost;
	totalcost = tax + subtotal;
	deposit = (totalcost/2);
	
	document.getElementById(subtotal_id).value = subtotal.toFixed(2);
	document.getElementById(totalcost_id).value = totalcost.toFixed(2);
	document.getElementById(totalcost_confirm_id).value = totalcost.toFixed(2);
	document.getElementById(deposit_id).value = deposit.toFixed(2);

}

function resetform(form_instance){
	var retreatcount_id = "retreatcount_" + form_instance;
	var guestcount_id = "guestcount_" + form_instance;
	var gpcount_id = "gpcount_" + form_instance;
	var stagecount_id = "stagecount_" + form_instance;
	
	document.getElementById(retreatcount_id).value = 0;
	document.getElementById(guestcount_id).value = 0;
	document.getElementById(gpcount_id).value = 0;
	document.getElementById(stagecount_id).value = 0;
	doRoom(form_instance);
	retreatCalc(form_instance);
	gpCalc(form_instance);
	stageCalc(form_instance);
}


function showsections(mode,form_instance){
	var date_section_id = "date-section_" + form_instance;
	var retreat_section_id = "retreat-section_" + form_instance;
	var gp_section_id = "gp-section_" + form_instance;
	var room_section_id = "room-section_" + form_instance;
	var gp_room_section_id = "gp-room-section_" + form_instance;
	var stage_section_id = "stage-section_" + form_instance;
	var total_section_id = "total-section_" + form_instance;
	switch(mode)
		{
		case "guest_retreat":
		  document.getElementById(date_section_id).style["display"]= "block";
		  document.getElementById(retreat_section_id).style["display"]= "block";	
		  document.getElementById(gp_section_id).style["display"]= "none";	
		  document.getElementById(room_section_id).style["display"]= "block";	
		  //document.getElementById(gp_room_section_id).style["display"]= "none";	
		  document.getElementById(stage_section_id).style["display"]= "block";	
		  document.getElementById(total_section_id).style["display"]= "block";	
		  resetform(form_instance);
		  break;
		case "guest":
		  document.getElementById(date_section_id).style["display"]= "block";
		  document.getElementById(retreat_section_id).style["display"]= "none";	
		  document.getElementById(gp_section_id).style["display"]= "none";	
		  document.getElementById(room_section_id).style["display"]= "block";	
		  //document.getElementById(gp_room_section_id).style["display"]= "none";	
		  document.getElementById(stage_section_id).style["display"]= "block";	
		  document.getElementById(total_section_id).style["display"]= "block";	
		  resetform(form_instance);
		  break;
		case "guest_practice":
		  document.getElementById(date_section_id).style["display"]= "block";
		  document.getElementById(retreat_section_id).style["display"]= "none";	
		  document.getElementById(gp_section_id).style["display"]= "block";	
		  document.getElementById(room_section_id).style["display"]= "none";
		  //document.getElementById(gp_room_section_id).style["display"]= "block";		
		  document.getElementById(stage_section_id).style["display"]= "block";	
		  document.getElementById(total_section_id).style["display"]= "block";		  
		  resetform(form_instance);
		  break;
		default:
		  document.getElementById(retreat_section_id).style["display"]= "none";	
		  document.getElementById(gp_section_id).style["display"]= "none";	
		  document.getElementById(room_section_id).style["display"]= "none";	
		  //document.getElementById(gp_room_section_id).style["display"]= "none";	 
		  resetform(form_instance);
		}
		//form_instance = form_instance - 1;
		if(first_time == 1){
			myAccordion.display(0);
		}else{
			myAccordion.display(form_instance);
		}
}


function submitresrequest(formname,validateid){
	if (validateform(formname)){
		if (validEmail(document.getElementById('email').value)){
			
			//AJAX POST
			new Ajax.Request('/ajax/submitresrequest.asp', {
			method: "post",
			parameters: Form.serialize(document.forms[formname]),
			onComplete: function(transport) {		
				
				if(transport.responseText == 'true'){
					document.getElementById('emailbutton').innerHTML = 'Thank you.  This form has been successfully submitted.';
					document.getElementById(validateid).innerHTML = '';
				} else {
					document.getElementById(validateid).innerHTML = transport.responseText;
					Effect.Shake(validateid);
				}
				
				}//-onSuccess
			}//-request arguments
			);// new ajax request	
			
		} else {
			document.getElementById('email').style.background = "yellow"; 
			document.getElementById(validateid).innerHTML = 'Invalid Email'
			Effect.Shake(validateid);
			//Effect.Appear(validateid);
		}
		
		
	}
}
	
function validEmail(email) {
			var re = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
			return re.test(email); 
		}

function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}

function ltrim(stringToTrim) {
	return stringToTrim.replace(/^\s+/,"");
}

function rtrim(stringToTrim) {
	return stringToTrim.replace(/\s+$/,"");
}

function isFilled(elm) {
	//alert(elm.type);
	//Last Updated by Sol - 6/14/07
	switch(elm.type){
	case "text":
		if (trim(elm.value) == "" || elm.value == null){
		return false;}
		else {return true;}
		break;
	case "password":
		if (trim(elm.value) == "" || elm.value == null){
		return false;}
		else {return true;}
		break;
	case "textarea":
		if (trim(elm.value) == "" || elm.value == null){
		return false;}
		else {return true;}
		break;
	case "select-one":
		var myindex=elm.selectedIndex;
		if (myindex==0){
		return false;}
		else {return true;}
		break;
	}
}

function arethesame(condition1,condition2){
	if (condition1 == condition2) {
			return true;
			} else {
			return false;
			}
}

function validateform(formname){
	//last updated on 6/14/07
	//index of is mo betta
	var x = document.forms[formname];
	var allgood = true;
	for (var i=0;i<x.length;i++){
		if (x.elements[i].className.indexOf('required')>-1) {
		 	var thisformname = x.elements[i].name;
			var thisformid = x.elements[i].id;
			if (!isFilled(x.elements[i])) {
				document.getElementById(thisformid).style.background = "yellow";
				allgood = false;
				} else {
				  document.getElementById(thisformid).style.background = "#F1ECE2"; 
				}
			}
		}
		if (allgood) {
			return true;
			} else {
			return false;
			}
}



