/***************
 *
 *	REGISTRATION_FORM_JAVASCRIPT.PHP
 *	Javascript for Delegate Registration Form for VTAM Conference (2007)
 *	
****************/

// Adds a bookmark
// function addBookmark(bTitle, bURL) {
// 	
// // 	// Firefox
// // 	if (window.sidebar)
// // 		window.sidebar.addPanel(bTitle, bURL, "");
// // 	
// // 	// Shiternet Explorer
// // 	else if (window.external)
// 		window.external.AddFavorite(bURL, bTitle);
// 	
// 	// dunno...
// 	else
// 		return;
// }

// Toggles the VTAM teacher survey options if 'full' membership is selected
function toggleMembershipOptions() {
	try {
		document.getElementById('VTAMSurveyOptionsContainer').style.display =
		(document.getElementById('VTAM_Membership_Type_and_Conference_Registration_Full').checked ||
		 document.getElementById('VTAM_Membership_Type_and_Conference_Registration_Both').checked)?'':'none';
		
		document.getElementById('VTAMMembershipStatusContainer').style.display =
		(!document.getElementById('VTAM_Membership_Type_and_Conference_Registration_None').checked)?'':'none';
	}
	catch (e) {
		// eh, screw it
	}
}


// TOGGLES THE SESSION DEPENDING ON PES REGISTRATION SELECTION
function togglePESSessionOptions() {
	
	ShowSessions = false;
	ShowExtraTableOpt = false;
	
	RadioObjs = document.VTAMSAG_RegistrationForm.PES_RegistrationType;
	for (var i = 0; i < RadioObjs.length; i++) {
		if (RadioObjs[i].checked) {
			if (RadioObjs[i].value == 'Presenter') {
				ShowSessions     = true;
				ShowExtraTableOpt = true;
			}
			
			else if (RadioObjs[i].value == 'Exhibitor')
				ShowExtraTableOpt = true;
		}
	}
	
	document.getElementById('SessionsAndSessionsMasterDiv').style.display = (ShowSessions)?'block':'none';
	document.getElementById('ExtraTableOptContainer').style.display = (ShowExtraTableOpt)?'':'none';
}


// Toggle payment for PES
function togglePESPayment() {
	try {
		ForPES = document.getElementById('ConferencePresenter_ID').checked || document.getElementById('ExhibitorVendor_ID').checked;
		document.getElementById('PaymentContainer').style.display = (ForPES)?'none':'block';
		document.getElementById('SimpleSubmit').style.display     = (ForPES)?'block':'none';
	}
	catch (e) {
		// screw it
	}
}


// TOGGLES THE AVAILABILITY OF THE SESSIONS
function toggleSessions(SourceObj, IsPES) {
	
	ForPES      = document.getElementById('ConferencePresenter_ID').checked || document.getElementById('ExhibitorVendor_ID').checked;	
	FormInputs  = document.getElementsByTagName('input');
	
	// Enable them all first
	SessionChecks		 = new Array();
	SessionChecks['FullAM']  = new Array();
	SessionChecks['AM1']	 = new Array();
	SessionChecks['AM2']	 = new Array();
	SessionChecks['PM']      = new Array();
	
	// Enable all session checkboxes, populate arrays with session checkbox objects
	for (var i in FormInputs) {
		if (FormInputs[i].type == 'checkbox') {
			
			// Make sure the checkbox isn't disabled in the first place (full or cancelled)
			if (FormInputs[i].name.substr(0,9) != 'DISABLED_' || ForPES)
				FormInputs[i].disabled = false;
			
			else if (FormInputs[i].name.substr(0,9) == 'DISABLED_') {
				FormInputs[i].disabled = true;
				FormInputs[i].checked  = false;
			}
			
			
			// Divide up the time slots...
			
			// Morning tour (Full AM)
			if (FormInputs[i].name.substr(0,12) == 'Morning_Tour')
				SessionChecks['FullAM'].push(FormInputs[i]);
			
			// Morning sessions (AM1)
			if (FormInputs[i].name.substr(0,16) == 'Morning_Sessions')
				SessionChecks['AM1'].push(FormInputs[i]);
			
			// Annual General Meetings (AM2)
			if (FormInputs[i].name.substr(0,23) == 'Annual_General_Meetings')
				SessionChecks['AM2'].push(FormInputs[i]);
			
			// Afternoon Sessions (PM)
			if (FormInputs[i].name.substr(0,18) == 'Afternoon_Sessions')
				SessionChecks['PM'].push(FormInputs[i]);
		}
	}
	
	if (ForPES)
		return;
	
	// FULL MORNING SELECTED, DISABLE OTHER MORNING SESSIONS
	for (i in SessionChecks['FullAM']) {
		
		// Checked
		if (SessionChecks['FullAM'][i].checked) {
			TmpArray = SessionChecks['FullAM'].concat(SessionChecks['AM1'], SessionChecks['AM2']); 
			for (j in TmpArray) {
				if (TmpArray[j] != SessionChecks['FullAM'][i]) {
					with (TmpArray[j]) {
						checked = false;
						disabled = true;
					}
				}
			}
			
			break;
		}
	}
	
	// AM1 SELECTED, DISABLE FULL AM AND OTHER AM1 SESSIONS
	for (i in SessionChecks['AM1']) {
		
		// Checked
		if (SessionChecks['AM1'][i].checked) {
			TmpArray = SessionChecks['FullAM'].concat(SessionChecks['AM1']); 
			for (j in TmpArray) {
				if (TmpArray[j] != SessionChecks['AM1'][i]) {
					with (TmpArray[j]) {
						checked = false;
						disabled = true;
					}
				}
			}
			
			break;
		}
	}
	
	// AM2 SELECTED, DISABLE FULL AM AND OTHER AM2 SESSIONS
	for (i in SessionChecks['AM2']) {
		
		// Checked
		if (SessionChecks['AM2'][i].checked) {
			TmpArray = SessionChecks['FullAM'].concat(SessionChecks['AM2']); 
			for (j in TmpArray) {
				if (TmpArray[j] != SessionChecks['AM2'][i]) {
					with (TmpArray[j]) {
						checked = false;
						disabled = true;
					}
				}
			}
			
			break;
		}
	}
	
	// PM3 SELECTED, DISABLE FULL DAY AND OTHER PM3 SESSIONS
	for (i in SessionChecks['PM']) {
		
		// Checked
		if (SessionChecks['PM'][i].checked) {
			TmpArray = SessionChecks['PM']; 
			for (j in TmpArray) {
				if (TmpArray[j] != SessionChecks['PM'][i]) {
					with (TmpArray[j]) {
						checked = false;
						disabled = true;
					}
				}
			}
			
			break;
		}
	}
}


// TOGGLES THE CSS DISPLAY OF SESSIONS
function toggleCSSDisplay(ElmntID) {
	with (document) {
		ElementObj = getElementById(ElmntID);
		ImgObj     = getElementById(ElmntID + '_Img');
	}
	 
	if (ElementObj.style.display == 'none' || ElementObj.style.display == 'undefined') {
		ElementObj.style.display = 'block';
		ImgObj.src = 'images/icon_minus_grey.gif';
	}
	else {
		ElementObj.style.display = 'none';
		ImgObj.src = 'images/icon_plus_grey.gif';
	}
}


// SUBMITS THE REGISTRATION FORM
function submitVTAMSAGForm(PayPal, IsPES) {
	
	GoAheadAnyway = false;
	if (!PayPal && !IsPES) {
		
		if (confirm('Are you sure you want to pay by cheque?  Session registrations are first-paid, first-served, ' +
			    'so we can NOT guarantee placement in your selected sessions if you pay by cheque.  Paying by cheque ' +
			    'will also incur a $5.00 administration fee.\n\nDo you still want to pay by cheque?  Click OK to ' +
			    'continue to pay by cheque, or click CANCEL to pay online using PayPal.')) {
			    
			    // do nothing here
		}
		else {
			alert('Fine choice!  Now just click the big yellow \'PayPal\' button to pay online.');
			return;
		}
	}
	
	
	generateWaitDiv('Processing Form');
	
	Cells = document.getElementsByTagName('td');
	for (var i in Cells) {
		if (Cells[i].id != '' && Cells[i].id != 'undefined' && Cells[i].id != null) {
			if (Cells[i].id.match(new RegExp('^FieldLabel_')))
				Cells[i].style.color = '#000000';
		}
	}
	
	SubmitQryStr = convertFormDataToQryStr(FormObj);

	AJAX_sendRequest(false, '?' + SubmitQryStr,
	"if (VarForResponseText.substr(0,11) == 'FormErrors:') { outputFormErrors(VarForResponseText, " +
	"document.getElementById('FormErrorContainer')); } else if (VarForResponseText.substr(0,5) == 'HASH:') { document.location.href = 'registration_form.php?UsePayPal=" + 
	((PayPal)?'true':'false') + ((IsPES)?'&PES=false':'&PES=false') + "&FormProcessed=' + VarForResponseText.substr(5); } else { alert(VarForResponseText); } deleteWaitDiv();", '', (IsPES)?'PES=false':'');
}


// OPENS A PRINTABLE COPY OF THE FORM
function openPrintable(RegistrationID) {
	window.open('printable.php?RegistrationID=' + RegistrationID, 'PrintableForm', 'width=600,height=500,scrollbars');
}

// CHECKS IF A VALUE EXISTS IN AN ARRAY AND OPTIONALLY RETURNS THE INDEX
function in_array(valueToMatch, arrayToCheck, ReturnIndex, CompareKeysNotValues) {
	
	NewArray = new Array();
	
	for (var i in arrayToCheck) {
		if (valueToMatch == ((CompareKeysNotValues)?i:arrayToCheck[i])) {
			if (ReturnIndex == 'array_values')
				NewArray.push(arrayToCheck[i]);
				
			else if (ReturnIndex == 'array_indexes')
				NewArray.push(i);
				
			else if (ReturnIndex == true)
				return i;
			
			else
				return true;
		}
	}
	
	if ((ReturnIndex != null && typeof ReturnIndex != 'boolean') || NewArray.length > 0)
		return NewArray;
	else
		return false;
}
