﻿// MyTeamCaptain Fansite Javascript Application Functions

function showCalendar (accountNums, seasonID, yyyymm)
{
	showSection ('calendarMain');

	var postdata = 'AccountNums=' + accountNums + '&SeasonID=' + seasonID + '&showYYYYMM=' + yyyymm + '&fansite=1';

	// call ajax function to draw the calendar
	postDataReturnText('/app/ajaxCalendar.pl', postdata, 'calendarMain', rebuildID, 'wait');
}
function showWeeklyCalendar (accountNums, seasonID, yyyymmdd)
{
	showSection ('weeklyCalendarMain');

	var postdata = 'AccountNums=' + accountNums + '&SeasonID=' + seasonID + '&showYYYYMM=' + yyyymmdd + '&WeeklyView=1&fansite=1';

	// call ajax function to draw the calendar
	postDataReturnText('/app/ajaxCalendar.pl', postdata, 'weeklyCalendarMain', rebuildID, 'wait');
}
function showDailyCalendar (accountNums, seasonID, yyyymmdd)
{
	showSection ('dailyCalendarMain');

	var postdata = 'AccountNums=' + accountNums + '&SeasonID=' + seasonID + '&showYYYYMM=' + yyyymmdd + '&DailyView=1&fansite=1';

	// call ajax function to draw the calendar
	postDataReturnText('/app/ajaxCalendar.pl', postdata, 'dailyCalendarMain', rebuildID, 'wait');
}
function showPublicEvent (accountNum,eventID,viewingPage) // viewing page is either Homepage, MonthlyCalendar, WeeklyCalendar, DailyCalendar, or ListCalendar
{
	var publicEventLayerBackground = 'publicEventLayerBackground' + accountNum + '_' + eventID + '_' + viewingPage;
	var publicEventLayer = 'publicEventLayer' + accountNum + '_' + eventID + '_' + viewingPage;
	showIDblock (publicEventLayer);
	showIDblock (publicEventLayerBackground);
	
	var postdata = 'action=showPublicEvent&AccountNum=' + accountNum + '&EventID=' + eventID + '&ViewingPage=' + viewingPage;
	
	// call ajax function to draw the event details
	postDataReturnText('/app/ajaxFansitePublicEvent.pl', postdata, publicEventLayer, rebuildID, 'wait');
}
function showGroupRegistrants (accountNum,eventID,viewingPage,optionID,numRegistrants)
{
	numRegistrants = parseInt(numRegistrants);

	// get the form we're working on
	var formNumber = 0;
	var checkThisForm = 'registrationForm' + accountNum + '_' + eventID + '_' + viewingPage;
	for (f=0;f<document.forms.length;f++)
	{
		if (document.forms[f].name == checkThisForm)
		{
			formNumber = f;
		}
	}

	var newGroupRegistrants = '';
	var oldNames = new Array;
	var oldEmails = new Array;
		
	if (numRegistrants > 1)
	{
		newGroupRegistrants += 'Enter the other members of your group:<br />';
		
		for (i=2; i<=numRegistrants; i++)
		{
			var checkDiv = 'groupRegistrant' + optionID + '_' + i;
			
			if (document.getElementById(checkDiv))
			{
				newGroupRegistrants += '<div id="' + checkDiv + '" style="display: block;">' + document.getElementById(checkDiv).innerHTML + '</div>';

				var oldRegName = 'groupRegistrantName' + optionID + '_' + i;
				for (e=0; e<document.forms[formNumber].elements.length; e++)
				{
					if (document.forms[formNumber].elements[e].name == oldRegName)
					{
						oldNames[i] = document.forms[formNumber].elements[e].value;
					}
				}

				var oldRegEmail = 'groupRegistrantEmail' + optionID + '_' + i;
				for (e=0; e<document.forms[formNumber].elements.length; e++)
				{
					if (document.forms[formNumber].elements[e].name == oldRegEmail)
					{
						oldEmails[i] = document.forms[formNumber].elements[e].value;
					}
				}
			}
			else
			{
				newGroupRegistrants += '<div id="' + checkDiv + '" style="display: block;">';
				newGroupRegistrants += 'Name: <input type="text" name="groupRegistrantName' + optionID + '_' + i + '" size="25" maxlength="128" /> &nbsp;&nbsp;';
				newGroupRegistrants += 'Email: <input type="text" name="groupRegistrantEmail' + optionID + '_' + i + '" size="25" maxlength="128" />';
				newGroupRegistrants += '</div>';
			}
		}
	}

	// clear any registrants that have been opened and then are being closed (selected 4 then 2 registrants in group)	
	for (i=(numRegistrants+1); i<=(numRegistrants+100); i++)
	{
		var checkDiv = 'groupRegistrant' + optionID + '_' + i;
		if (document.getElementById(checkDiv))
		{
			newGroupRegistrants += '<div id="' + checkDiv + '" style="display: none;">' + document.getElementById(checkDiv).innerHTML + '</div>';
			
			var oldRegName = 'groupRegistrantName' + optionID + '_' + i;
			for (e=0; e<document.forms[formNumber].elements.length; e++)
			{
				if (document.forms[formNumber].elements[e].name == oldRegName)
				{
					oldNames[i] = document.forms[formNumber].elements[e].value;
				}
			}

			var oldRegEmail = 'groupRegistrantEmail' + optionID + '_' + i;
			for (e=0; e<document.forms[formNumber].elements.length; e++)
			{
				if (document.forms[formNumber].elements[e].name == oldRegEmail)
				{
					oldEmails[i] = document.forms[formNumber].elements[e].value;
				}
			}
		}
	}

	document.getElementById('groupRegistrants' + optionID).innerHTML = newGroupRegistrants;
	
	if (numRegistrants > 1) // restore the name and email
	{
		for (i=0; i<oldNames.length; i++)
		{
			var oldRegName = 'groupRegistrantName' + optionID + '_' + i;
			for (e=0; e<document.forms[formNumber].elements.length; e++)
			{
				if (document.forms[formNumber].elements[e].name == oldRegName)
				{
					document.forms[formNumber].elements[e].value = oldNames[i];
				}
			}
		}
		
		for (i=0; i<oldEmails.length; i++)
		{
			var oldRegEmail = 'groupRegistrantEmail' + optionID + '_' + i;
			for (e=0; e<document.forms[formNumber].elements.length; e++)
			{
				if (document.forms[formNumber].elements[e].name == oldRegEmail)
				{
					document.forms[formNumber].elements[e].value = oldEmails[i];
				}
			}
		}
	}
}
function registerPublicEvent (accountNum,eventID,viewingPage)
{
	var publicEventLayer = 'publicEventLayer' + accountNum + '_' + eventID + '_' + viewingPage;

	// get the form we're working on
	var formNumber = 0;
	var checkThisForm = 'registrationForm' + accountNum + '_' + eventID + '_' + viewingPage;
	for (f=0;f<document.forms.length;f++)
	{
		if (document.forms[f].name == checkThisForm)
		{
			formNumber = f;
		}
	}

	var email = cleanData(document.forms[formNumber].Email.value);
	var firstname = cleanData(document.forms[formNumber].Firstname.value);
	var lastname = cleanData(document.forms[formNumber].Lastname.value);
	var address = cleanData(document.forms[formNumber].Address.value);
	var city = cleanData(document.forms[formNumber].City.value);
	var state = cleanData(document.forms[formNumber].State.value);
	var zip = cleanData(document.forms[formNumber].Zip.value);
	var country = cleanData(document.forms[formNumber].Country.value);
	var phone = cleanData(document.forms[formNumber].Phone.value);
	var guests = cleanData(document.forms[formNumber].Guests.value);
	var synchPic = cleanData(document.forms[formNumber].synchPic.value);

	var postdata = 'action=registerPublicEvent&AccountNum=' + accountNum + '&EventID=' + eventID + '&ViewingPage=' + viewingPage + '&SynchPic=' + synchPic + '&Guests=' + guests;
	postdata += '&Email=' + email + '&Firstname=' + firstname + '&Lastname=' + lastname + '&Address=' + address + '&City=' + city;
	postdata += '&State=' + state + '&Zip=' + zip + '&Country=' + country + '&Phone=' + phone;
	
	// add the registration options (if any)
	var regExp = /^RegistrationOption/;
	for (e=0; e<document.forms[formNumber].elements.length; e++)
	{
		if (regExp.test(document.forms[formNumber].elements[e].name) == true)
		{
			if ((document.forms[formNumber].elements[e].type == 'select-one') || (document.forms[formNumber].elements[e].type == 'radio')) // radio
			{
				if (document.forms[formNumber].elements[e].checked)
				{
					// alert ('adding radio ' + e + ':' + document.forms[formNumber].elements[e].name + '=' + document.forms[formNumber].elements[e].value);
					postdata += '&' + document.forms[formNumber].elements[e].name + '=' + cleanData(document.forms[formNumber].elements[e].value);
				}
			}
			else if (document.forms[formNumber].elements[e].type == 'checkbox') // checkbox
			{
				if (document.forms[formNumber].elements[e].checked)
				{
					postdata += '&' + document.forms[formNumber].elements[e].name + '=' + cleanData(document.forms[formNumber].elements[e].value);
				}
			}
			else // open field
			{
				// alert ('adding ' + document.forms[formNumber].elements[e].type);
				postdata += '&' + document.forms[formNumber].elements[e].name + '=' + cleanData(document.forms[formNumber].elements[e].value);
			}
		}
	}
	
	// add any group registrants (check up to 100 options, up to 200 reg)
	var nameRE = /groupRegistrantName(\d+)_(\d+)/;
	var emailRE = /groupRegistrantEmail(\d+)_(\d+)/;
	
	for (e=0; e<document.forms[formNumber].elements.length; e++)
	{
		var matches = document.forms[formNumber].elements[e].name.match(nameRE);
		if (matches)
		{
			if ((matches[1]) && (matches[2]))
			{
				var checkDiv = 'groupRegistrant' + matches[1] + '_' + matches[2];

				if (document.getElementById(checkDiv))
				{
					if (document.getElementById(checkDiv).style.display == 'block')
					{
						postdata += '&' + document.forms[formNumber].elements[e].name + '=' + cleanData(document.forms[formNumber].elements[e].value);
					}
				}
			}
		}
		
		var matches = document.forms[formNumber].elements[e].name.match(emailRE);
		if (matches)
		{
			if ((matches[1]) && (matches[2]))
			{
				var checkDiv = 'groupRegistrant' + matches[1] + '_' + matches[2];

				if (document.getElementById(checkDiv))
				{
					if (document.getElementById(checkDiv).style.display == 'block')
					{
						postdata += '&' + document.forms[formNumber].elements[e].name + '=' + cleanData(document.forms[formNumber].elements[e].value);
					}
				}
			}
		}
	}

	// alert (postdata);
	
	document.getElementById(publicEventLayer).innerHTML = '<br />Please wait while we process your registration...<br /><br />';

	// call ajax function to draw the event details
	postDataReturnText('/app/ajaxFansitePublicEvent.pl', postdata, publicEventLayer, rebuildID, 'wait');
}

function requestAppointment (accountNum,seasonID,date,calendarType)
{
	showIDblock('appointmentBackground_' + calendarType);
	showIDblock('appointmentRequest_' + calendarType);
	
	var apptReqDiv = 'appointmentRequest_' + calendarType;
	
	var postdata = 'action=request&AccountNum=' + accountNum + '&SeasonID=' + seasonID + '&Date=' + date + '&CalendarType=' + calendarType;

	// call ajax function to show the appointment request form
	postDataReturnText('/app/ajaxEventsAppointmentRequest.pl', postdata, apptReqDiv, rebuildID, 'wait');
}
function updateEventTypesComments (accountNum,seasonID,date,data)
{
	var parts = new Array();
	parts = data.split('___');
	
	var events = new Array();
	events = parts[1].split(',');
	
	var eventTypes = '<span style="font-size: 16px; font-weight: bold;">2.</span> <select name="eventType" onchange="updateAppointmentEnd(' + accountNum + ',' + seasonID + ',' + date + ',document.appointmentForm.startTime.value,this.value);"><option value="">Choose Appointment Type</option>';
	for (i=0; i<events.length; i++)
	{
		eventTypes += '<option value="' + events[i] + '">' + events[i] + '</option>';
	}
	eventTypes += '</select>';
	document.getElementById('appointmentTypes').innerHTML = eventTypes;
	
	document.getElementById('appointmentComments').innerHTML = parts[2];
}
function updateAppointmentEnd (accountNum,seasonID,date,startTime,eventType)
{
	var postdata = 'action=endtime&AccountNum=' + accountNum + '&SeasonID=' + seasonID + '&Date=' + date + '&StartTime=' + startTime + '&EventType=' + eventType;

	// call ajax function to show the appointment request form
	postDataReturnText('/app/ajaxEventsAppointmentRequest.pl', postdata, 'appointmentEnd', rebuildID, 'wait');
}
function updateAppointmentClock (accountNum,seasonID,date,timestamp)
{
	var myChart = new FusionCharts("http://www.myteamcaptain.com/charts/Scatter.swf","chart01b","100%","400","0","0");
	myChart.setDataURL('http://www.myteamcaptain.com/app/ajaxEventsAppointmentRequest\%2Epl\%3Faction\%3Dshowclock\%26AccountNum\%3D' + accountNum + '\%26SeasonID\%3D' + seasonID + '%26Date%3D' + date + '\%26timestamp\%3D' + timestamp);
	myChart.render('appointmentClock');
}
function makeAppointmentRequest (accountNum,seasonID,date,calendarType)
{
	if (document.appointmentForm.synchPic.value.length == 6)
	{
		if (document.appointmentForm.Name.value != '')
		{
			if (document.appointmentForm.Phone.value.length > 6)
			{
				if ((/@/.test(document.appointmentForm.Email.value)) && (/\./.test(document.appointmentForm.Email.value)))
				{
					var postdata = 'action=makeRequest&AccountNum=' + accountNum + '&SeasonID=' + seasonID + '&Date=' + date;

					for (e=0; e<document.appointmentForm.elements.length; e++)
					{
						if (document.appointmentForm.elements[e].type == 'checkbox')
						{
							if (document.appointmentForm.elements[e].checked)
							{
								postdata += '&' + document.appointmentForm.elements[e].name + '=Y';
							}
						}
						else
						{
							postdata += '&' + document.appointmentForm.elements[e].name + '=' + document.appointmentForm.elements[e].value;
						}
					}

					var apptReqDiv = 'appointmentRequest_' + calendarType;

					// call ajax function to show the appointment request form
					postDataReturnText('/app/ajaxEventsAppointmentRequest.pl', postdata, apptReqDiv, rebuildID, 'wait');
					
					// if the remember me box is checked, set the cookie
					if (document.appointmentForm.rememberMe.checked)
					{
						var today = new Date();
						today.setTime (today.getTime());
						var expires = new Date(today.getTime()+(365*24*60*60*1000)); // one year-long remembrance
						document.cookie = 'appointmentName=' + document.appointmentForm.Name.value + '; expires=' + expires.toGMTString() + '; path=/';
						document.cookie = 'appointmentPhone=' + document.appointmentForm.Phone.value + '; expires=' + expires.toGMTString() + '; path=/';
						document.cookie = 'appointmentEmail=' + document.appointmentForm.Email.value + '; expires=' + expires.toGMTString() + '; path=/';
						
						alert ('Remembered ' + expires.toGMTString());
					}
				}
				else
				{
					alert ('Please enter a valid email address.');
				}
			}
			else
			{
				alert ('Please enter a valid phone number.');
			}
		}
		else
		{
			alert ('Please enter your name.');
		}
	}
	else
	{
		alert ('Please enter the security code to make your appointment request.');
	}
}
function cancelAppointmentRequest ()
{
	hideID('appointmentRequest_Monthly');
	hideID('appointmentBackground_Monthly');
	hideID('appointmentRequest_Weekly');
	hideID('appointmentBackground_Weekly');
	hideID('appointmentRequest_Daily');
	hideID('appointmentBackground_Daily');
}


function showGoalChart (accountNum,teamID,ts,pagePlayerID)
{
	var myChart = new FusionCharts("http://www.myteamcaptain.com/charts/StackedColumn2D.swf","chart10","285","200","0","0");
	myChart.setDataURL('http://www.myteamcaptain.com/app/fansiteTrackingChart\%2Epl\%3FAccountNum\%3D' + accountNum + '\%26TeamID\%3D' + teamID + '\%26action\%3DwebsiteStoreGoal\%26timestamp\%3D' + ts + '\%26PagePlayerID\%3D' + pagePlayerID);
	myChart.render("storeGoalChart");
}
function loadScroller(scrollerheight,scrollerwidth,scrollerspeed,scrollercontent) // thanks to hypergurl.com!
{ 
	var pauseit=1; 
	scrollerspeed=(document.all)? scrollerspeed : Math.max(1, scrollerspeed-1); //slow speed down by 1 for NS
	var copyspeed=scrollerspeed; 
	var iedom=document.all||document.getElementById; 
	var actualheight=''; 
	var cross_scroller,ns_scroller; 
	var pausespeed=(pauseit==0)? copyspeed: 0;

	if (iedom||document.layers)
	{ 
		with (document)
		{ 
			if (iedom)
			{ 
				var scrollerHTML = '<div style="position:relative; display: block; width:'+scrollerwidth+';height:'+scrollerheight+';overflow:hidden">';
				scrollerHTML += '<div id="iescroller" style="position:absolute;left:0px;top:0px;width:100%;display:block;">' + scrollercontent;
				scrollerHTML += '</div></div>';
				
				document.getElementById('scroller').innerHTML = scrollerHTML;
			}
			else if (document.layers)
			{
				var scrollerHTML = '<ilayer width='+scrollerwidth+' height='+scrollerheight+' name="ns_scroller">';
				scrollerHTML += '<layer name="ns_scroller2" width='+scrollerwidth+' height='+scrollerheight+' left=0 top=0></layer>';
				scrollerHTML += '</ilayer>';
				
				document.getElementById('scroller').innerHTML = scrollerHTML;
			}
		}
	}

	if (iedom)
	{ 
		cross_scroller=document.getElementById? document.getElementById("iescroller") : document.all.iescroller;
		cross_scroller.style.top=parseInt(scrollerheight)+8+"px";
		cross_scroller.innerHTML=scrollercontent;
		actualheight=cross_scroller.offsetHeight;
	} 
	else if (document.layers)
	{ 
		ns_scroller=document.ns_scroller.document.ns_scroller2;
		ns_scroller.top=parseInt(scrollerheight)+8;
		ns_scroller.document.write(scrollercontent);
		ns_scroller.document.close();
		actualheight=ns_scroller.document.height;
	} 
	
	scrollerID = setInterval('scrollscroller(\'' + actualheight + '\',' + copyspeed + ',\'' + scrollerheight + '\',\'' + scrollerwidth + '\',' + pausespeed + ',' + scrollerspeed + ',\'' + scrollercontent + '\')',50);
} 
function scrollscroller(actualheight,copyspeed,scrollerheight,scrollerwidth,pausespeed,scrollerspeed,scrollercontent)
{ 
	var iedom=document.all||document.getElementById; 

	if (iedom)
	{ 
		cross_scroller=document.getElementById? document.getElementById("iescroller") : document.all.iescroller;
	} 
	else if (document.layers)
	{ 
		ns_scroller=document.ns_scroller.document.ns_scroller2;
	} 

	if (iedom)
	{ 
		if (parseInt(cross_scroller.style.top)>=(actualheight*(-1)+8))
		{
			cross_scroller.style.top=parseInt(cross_scroller.style.top)-copyspeed+"px";
		}
		else
		{
			// alert (parseInt(cross_scroller.style.top) + '-' + (actualheight*(-1)+8));
			cross_scroller.style.top=parseInt(scrollerheight)+8+"px";
		}
		
	}
	else if (document.layers)
	{
		if (ns_scroller.top>(actualheight*(-1)+8))
		{
			ns_scroller.top-=copyspeed; 
		}
		else
		{
			ns_scroller.top=parseInt(scrollerheight)+8;
		}
	}
	
}


function showStoreItems (accountNum,teamID,categoryID,pagePlayerID)
{
	// underline the category selected
	var allElements = new Array;
	allElements = document.getElementsByTagName('a');
	for (var i=0; i<allElements.length; i++)
	{
		var match = /Category_/.test(allElements[i].id);
		
		if (match == true) // element has "Category_" in it
		{
			allElements[i].style.textDecoration = '';
		}
	}
	
	if (document.getElementById('Category_' + categoryID))
	{
		document.getElementById('Category_' + categoryID).style.textDecoration = 'underline';
	}

	var postdata = 'action=showItems&AccountNum=' + accountNum + '&TeamID=' + teamID + '&CategoryID=' + categoryID + '&PagePlayerID=' + pagePlayerID;

	// call the ajax function, rebuildID will put the store items for this category <div>, wait is the cursor
	postDataReturnText('/app/ajaxFansiteStore.pl', postdata, 'storeItems', rebuildID, 'wait');
}
function addToCart (accountNum,teamID,itemID,pagePlayerID) // adding an item to the cart
{
	document.getElementById('cart').style.height = '0px';
	showIDblock('cart');
	
	var postdata = 'action=addToCart&ItemID=' + itemID + '&AccountNum=' + accountNum + '&TeamID=' + teamID + '&PagePlayerID=' + pagePlayerID;

	// get all the form elements for this itemID
	var checkThisForm = 'storeItemForm' + itemID;
	for (var i=0; i<document.forms.length; i++)
	{
		if (document.forms[i].name == checkThisForm)
		{
			var formNumber = i;
		}
	}
	for (var i=0; i<document.forms[formNumber].elements.length; i++)
	{
		postdata += '&' + document.forms[formNumber].elements[i].name + '=' + cleanData(document.forms[formNumber].elements[i].value);
	}

	// call the ajax function, rebuildID will add the item to the cart and show the cart layer, wait is the cursor
	postDataReturnText('/app/ajaxFansiteStore.pl', postdata, 'cart', rebuildID, 'wait');

	moveCart();
}
function updateCart (accountNum,teamID,checkout) // updating quantities and totals while cart is open
{
	if (checkout == 1)
	{
		if (document.cartForm.Email.value == '')
		{
			alert ('Please be sure you provide an Email address for the transaction.');
			var failCheckout = 1;
		}
		else if (document.cartForm.Name.value == '')
		{
			alert ('Please be sure you provide your name for the transaction.');
			var failCheckout = 1;
		}
		else if (document.cartForm.Address.value == '')
		{
			alert ('Please be sure you provide your address for the transaction.');
			var failCheckout = 1;
		}
		else if (document.cartForm.City.value == '')
		{
			alert ('Please be sure you provide your city for the transaction.');
			var failCheckout = 1;
		}
		else if (document.cartForm.State.value == '')
		{
			alert ('Please be sure you provide your state for the transaction.');
			var failCheckout = 1;
		}
		else if (document.cartForm.Zip.value == '')
		{
			alert ('Please be sure you provide your zip/postal code for the transaction.');
			var failCheckout = 1;
		}
		else if (document.cartForm.Country.value == '')
		{
			alert ('Please be sure you provide your country for the transaction.');
			var failCheckout = 1;
		}
		else if (document.cartForm.amount.value <= 0)
		{
			alert ('Please be sure to select items for purchase before checking out.');
			var failCheckout = 1;
		}
		else
		{
			var failCheckout = 0;
		}
	}
	
	if ((checkout == 1) && (failCheckout == 0))
	{
		var postdata = 'action=updateCart&AccountNum=' + accountNum + '&TeamID=' + teamID + '&Checkout=' + checkout;
	}
	else
	{
		var postdata = 'action=updateCart&AccountNum=' + accountNum + '&TeamID=' + teamID;
	}
	
	// get all the form elements for this itemID
	for (var i=0; i<document.cartForm.elements.length; i++)
	{
		if (document.cartForm.elements[i].name == 'OptinTeamID')
		{
			if (document.cartForm.elements[i].checked)
			{
				postdata += '&' + document.cartForm.elements[i].name + '=' + cleanData(document.cartForm.elements[i].value);
			}
			else // not checking newsletter signup box
			{
				postdata += '&' + document.cartForm.elements[i].name + '=0';
			}
		}
		else
		{
			postdata += '&' + document.cartForm.elements[i].name + '=' + cleanData(document.cartForm.elements[i].value);
		}
	}

	// call the ajax function, rebuildID will add the item to the cart and show the cart layer, wait is the cursor
	postDataReturnText('/app/ajaxFansiteStore.pl', postdata, 'cart', rebuildID, 'wait');
}
function viewCart (accountNum,teamID) // opening and viewing the cart when the cart layer is closed
{
	document.getElementById('cart').style.height = '0px';
	document.getElementById('cart').style.overflowY = 'scroll';
	showIDblock('cart');
		
	var postdata = 'action=viewCart&AccountNum=' + accountNum + '&TeamID=' + teamID;

	// call the ajax function, rebuildID will add the item to the cart and show the cart layer, wait is the cursor
	postDataReturnText('/app/ajaxFansiteStore.pl', postdata, 'cart', rebuildID, 'wait');

	moveCart();
}
function moveCart () // opener animation
{
	var currentHeight = parseInt(document.getElementById('cart').style.height);
	currentHeight += 3;
	document.getElementById('cart').style.height = currentHeight + '%';
	
	if (currentHeight <= 95)
	{
		setTimeout ('moveCart()',1);
	}
}
function closeCart ()
{
	document.getElementById('cart').style.overflow = 'hidden';

	var currentHeight = parseInt(document.getElementById('cart').style.height);
	currentHeight -= 3;
	document.getElementById('cart').style.height = currentHeight + '%';
	
	if (currentHeight >=5)
	{
		setTimeout ('closeCart()',1);
	}
	
	if (currentHeight < 5)
	{
		hideID('cart');
	}
}

function showFansitePlayers (db,token,seasonID,activeOrSubs,pageNum)
{
	var postdata = 'db=' + db + '&Token=' + token + '&SeasonID=' + seasonID + '&ActiveOrSubs=' + activeOrSubs + '&PageNum=' + pageNum;
	
	// call ajax function to show public players
	postDataReturnText('/app/ajaxFansitePlayers.pl', postdata, 'playersBox', rebuildID, 'wait');
}
function showMedia (fansiteAccess,accountNum,seasonID,mediaCategory,dirOrEvent,id,mediaContentCategory)
{
	var postdata = 'FansiteAccess=' + fansiteAccess + '&AccountNum=' + accountNum + '&SeasonID=' + seasonID + '&MediaCategory=' + mediaCategory + '&DirOrEvent=' + dirOrEvent + '&ID=' + id;
	if (mediaContentCategory != null)
	{
		postdata += '&MediaContentCategory=' + mediaContentCategory;
	}
	
	// call ajax function to display the directory of media for this season
	postDataReturnText('/app/ajaxMediaContent.pl', postdata, 'mediaContent', rebuildID, 'wait');

	// call ajax function to display the directory of media for this season
	postDataReturnText('/app/ajaxMediaDirectory.pl', postdata, 'mediaDirectory', rebuildID, 'wait');
}
function showMediaContent (fansiteAccess,accountNum,seasonID,mediaCategory,dirOrEvent,id,mediaContentCategory)
{	
	var postdata = 'FansiteAccess=' + fansiteAccess + '&AccountNum=' + accountNum + '&SeasonID=' + seasonID + '&MediaCategory=' + mediaCategory + '&DirOrEvent=' + dirOrEvent + '&ID=' + id + '&MediaContentCategory=' + mediaCategory;
	if (mediaContentCategory != null)
	{
		postdata += '&MediaContentCategory=' + mediaContentCategory;
	}

	// call ajax function to display the directory of media for this season
	postDataReturnText('/app/ajaxMediaContent.pl', postdata, 'mediaContent', rebuildID, 'wait');
}
function showMediaLayer (accountNum,eventID,mediaCategory,calendarViewName)
{
	var mediaLayer = 'mediaLayer' + accountNum + '_' + eventID + '_' + calendarViewName;
	showIDblock (mediaLayer);
	
	var postdata = 'AccountNum=' + accountNum + '&EventID=' + eventID + '&MediaCategory=' + mediaCategory + '&CalendarViewName=' + calendarViewName + '&FansiteAccess=1';

	// call ajax function to display the directory of media for this season
	postDataReturnText('/app/ajaxMediaCalendar.pl', postdata, mediaLayer, rebuildID, 'wait');
}
function showImage(fansiteAccess,mediaID)
{
	// find <img> that's highlighted and fade out
	var imageData = document.getElementById('outerMediaContainer').innerHTML;
	var re = /Tag(\d+)/gm;
	m = new Array;
	while ((m = re.exec(imageData)) != null)
	{
		for (i=1; i<m.length; i++) // picks out only the mediaID
		{
			if (document.getElementById('ImageDiv' + m[i]).style.display != 'none')  // active image, so fade it out
			{
				fadeOutOpacity = -1; // default here because IE starts at 100 and Mozilla starts at 1
				fadeOutObject = setInterval("fadeOut(document.getElementById('ImageTag" + m[i] + "'))",50);
				cancelEditMedia(m[i],'#ffffff');				
			}
		}

		// change the active <div>'s to display:none
		for (i=1; i<m.length; i++) // picks out only the mediaID
		{
			if (document.getElementById('ImageDiv' + m[i]).style.display != 'none')  // active image
			{
				setTimeout("hideID('ImageDiv" + m[i] + "')",500);
				setTimeout("hideID('mediaRow" + m[i] + "')",500);
				setTimeout("hideID('ImageDescription" + m[i] + "')",500);
			}
		}

		// update the thumbnail borders
		for (i=1; i<m.length; i++) // picks out only the mediaID
		{
			document.getElementById('ThumbTag' + m[i]).style.border = '1px solid blue';
		}
	}

	setTimeout("showIDblock('ImageDiv" + mediaID + "')",500);
	setTimeout("showIDblock('mediaRow" + mediaID + "')",500);
	setTimeout("showIDblock('ImageDescription" + mediaID + "')",500);
	
	// bring up highlight on selected image
	newOpacity = 0;
	if (document.getElementById('ImageTag' + mediaID) != null)
	{
		fadeInObject = setInterval("fadeIn(document.getElementById('ImageTag" + mediaID + "'))",60)
	}
	else
	{
		alert ('Cannot bring in image ImageTag' + mediaID);
	}

	document.getElementById('ThumbTag' + mediaID).style.border = '2px solid blue';
	
	// fix margin above the image
	document.getElementById('outerMediaContainer').style.marginTop = '45px';
}
function fadeOut (imageElement)
{
	if (imageElement.filters)
	{		
		if (fadeOutOpacity == -1) // initial starting point
		{
			fadeOutOpacity = 100;
		}
		
		fadeOutOpacity -= 10;
		
		if (fadeOutOpacity < 0)
		{
			fadeOutOpacity = 0;
		}
		
		imageElement.filters.alpha.opacity = fadeOutOpacity;
		
		if (fadeOutOpacity <= 10)
		{
			clearInterval (fadeOutObject);
		}
	}
	else if (imageElement.style.MozOpacity)
	{
		if (fadeOutOpacity == -1) // initial starting point
		{
			fadeOutOpacity = 1;
		}

		fadeOutOpacity -= 0.1;

		if (fadeOutOpacity < 0)
		{
			fadeOutOpacity = 0;
		}
		
		imageElement.style.MozOpacity = fadeOutOpacity;
		
		if (fadeOutOpacity <= 0.1)
		{
			clearInterval (fadeOutObject);
		}
	}
	else // not recognizing IE or Mozilla
	{
		clearInterval (fadeOutObject);
	}
}
function fadeIn (imageElement)
{
	if (imageElement.filters)
	{
		newOpacity += 5;

		if (newOpacity > 100)
		{
			newOpacity = 100;
		}
		
		imageElement.filters.alpha.opacity = newOpacity;
				
		if (newOpacity >= 95)
		{
			clearInterval (fadeInObject);
		}
	}
	else if (imageElement.style.MozOpacity)
	{
		newOpacity += 0.05;

		if (newOpacity > 1)
		{
			newOpacity = 1;
		}
		
		imageElement.style.MozOpacity = newOpacity;
		
		if (newOpacity >= 0.95)
		{
			clearInterval (fadeInObject);
		}
	}
	else // not recognizing IE or Mozilla
	{
		clearInterval (fadeInObject);
	}
}
function startSlideshow(mediaIDs)
{
	currentElement = 0;
	document.getElementById('startSlideshowLink').innerHTML = '<span style="color: darkred; font-size: 11px; font-weight: bold;"><i>Running</i></span> &nbsp; <a onClick="stopSlideshow(\'' + mediaIDs + '\')" style="font-weight:bold; font-size: 11px;">Stop</a>';
	slideshowObject = setInterval("runSlideshow('" + mediaIDs + "')",5000);
}
function runSlideshow(mediaIDs)
{
	var mediaIDarray = mediaIDs.split(",");
	
	if (currentElement >= (mediaIDarray.length - 1))
	{
		currentElement = 0;
	}
	else
	{
		currentElement++;
	}
		
	showImage('1',mediaIDarray[currentElement]);
}
function stopSlideshow(mediaIDs)
{
	if ((document.getElementById('startSlideshowLink')) && (mediaIDs))
	{
		document.getElementById('startSlideshowLink').innerHTML = '<a onClick="startSlideshow(\'' + mediaIDs + '\')" style="font-weight:bold; font-size: 11px;">Start</a>';
	}
	if (window.slideshowObject)
	{
		clearInterval(slideshowObject);
	}
}
function showVideo(mediaID)
{
	// find <img> that's highlighted and fade out
	var imageData = document.getElementById('outerVideoContainer').innerHTML;
	var re = /ImageDiv(\d+)/gm;
	m = new Array;
	while ((m = re.exec(imageData)) != null)
	{
		// change the active <div>'s to display:none
		for (i=1; i<m.length; i++) // picks out only the mediaID
		{
			if (document.getElementById('ImageDiv' + m[i]).style.display != 'none')  // active image
			{
				hideID('ImageDiv' + m[i]);
				hideID('mediaRow' + m[i]);
				hideID('ImageDescription' + m[i]);
			}
		}

		// update the thumbnail borders
		for (i=1; i<m.length; i++) // picks out only the mediaID
		{
			document.getElementById('ThumbTag' + m[i]).style.border = '1px solid blue';
		}
	}

	showIDblock('ImageDiv' + mediaID);
	showIDblock('mediaRow' + mediaID);
	showIDblock('ImageDescription' + mediaID);
	
	document.getElementById('ThumbTag' + mediaID).style.border = '2px solid blue';
	
	// fix margin above the image
	document.getElementById('outerVideoContainer').style.marginTop = '45px';
}
function cancelEditMedia (mediaID,resetColor)
{
	// show the media edit form
	hideID('editDescription' + mediaID);
	showID('showDescription' + mediaID);
	
	hideID('editFile' + mediaID);
	showID('showFile' + mediaID);
	
	hideID('editSharePlayers' + mediaID);
	showID('showSharePlayers' + mediaID);
	
	hideID('editShareFans' + mediaID);
	showID('showShareFans' + mediaID);
	
	hideID('editSharePublic' + mediaID);
	showID('showSharePublic' + mediaID);
	
	hideID('editSave' + mediaID);
	showID('showFilesize' + mediaID);
	
	hideID('editCancel' + mediaID);
	showID('showButtons' + mediaID);

	document.getElementById('mediaRow' + mediaID).style.backgroundColor = resetColor;
}
function registerNewFan(accountNum,teamID,seasonID)
{
	name = cleanData(document.newFanForm.Name.value);
	email = cleanData(document.newFanForm.Email.value);
	mobile = cleanData(document.newFanForm.Mobile.value);
	city = cleanData(document.newFanForm.City.value);
	state = cleanData(document.newFanForm.State.value);
	country = cleanData(document.newFanForm.Country.value);
	if (document.newFanForm.OnEmailList.checked)
	{
		var onEmailList = 'Y';
	}
	else
	{
		var onEmailList = 'N';
	}
	if (document.newFanForm.OnSMSList.checked)
	{
		var onSMSList = 'Y';
	}
	else
	{
		var onSMSList = 'N';
	}


	var postdata = 'AccountNum=' + accountNum + '&TeamID=' + teamID + '&SeasonID=' + seasonID + '&OnEmailList=' + onEmailList + '&OnSMSList=' + onSMSList + '&Name=' + name + '&Email=' + email + '&Mobile=' + mobile + '&City=' + city + '&State=' + state + '&Country=' + country;

	// call ajax function to add the new fan
	postDataReturnText('/app/ajaxFansiteNewFan.pl', postdata, 'fansContent', rebuildID, 'wait');
}
function loginFan(accountNum,teamID,seasonID)
{
	email = cleanData(document.fanLoginForm.Email.value);

	var postdata = 'AccountNum=' + accountNum + '&TeamID=' + teamID + '&SeasonID=' + seasonID + '&Email=' + email;

	// call ajax function to log the fan in
	postDataReturnText('/app/ajaxFansiteLoginFan.pl', postdata, 'fansContent', rebuildID, 'wait');

	// small delay and then update the Comments section
	setTimeout ('updateComments(' + accountNum + ',' + teamID + ')',4000);
}
function updateComments(accountNum,teamID,pageNum)
{
	var postdata = 'AccountNum=' + accountNum + '&TeamID=' + teamID + '&PageNum=' + pageNum + '&action=update';

	// call ajax function to log the fan in
	postDataReturnText('/app/ajaxFansiteComments.pl', postdata, 'commentsContent', rebuildID, 'wait');
}
function addFanComment(accountNum,teamID)
{
	var comment = cleanData(document.commentForm.newComment.value);

	var postdata = 'AccountNum=' + accountNum + '&TeamID=' + teamID + '&action=add&Comment=' + comment;

	// call ajax function to log the fan in
	postDataReturnText('/app/ajaxFansiteComments.pl', postdata, 'commentsContent', rebuildID, 'wait');

}
function rateComment (commentID,vote,accountNum,teamID)
{
	var postdata = 'CommentID=' + commentID + '&Vote=' + vote + '&AccountNum=' + accountNum + '&TeamID=' + teamID + '&action=rateComment';

	// call ajax function to log the fan in
	postDataReturnText('/app/ajaxFansiteComments.pl', postdata, 'commentsContent', rebuildID, 'wait');
}
function logoutFan(accountNum,teamID)
{
	document.cookie = 'FanID' + accountNum + '_' + teamID + '=; path=/';
	window.location.reload();
}
function sendContactMessage()
{
	if (confirm ('Are you ready to send this message?'))
	{
		var query = window.location.search.substring(1);
		var urlhref = window.location.href;
		var fromName = cleanData(document.contactForm.contactName.value);
		var fromEmail = cleanData(document.contactForm.contactEmail.value);
		var message = cleanData(document.contactForm.contactMessage.value);
		var postdata = 'FromName=' + fromName + '&FromEmail=' + fromEmail + '&Message=' + message + '&qstring=' + query + '&URL=' + urlhref;

		// call ajax function to log the fan in
		postDataReturnText('/app/ajaxFansiteContactCaptain.pl', postdata, 'homepageContactForm', rebuildID, 'wait');
		
		hideID('contactCaptainLink');
	}
}
function sendPendingMemberRequest()
{
	var postdata = '';
	for (i=0; i<document.pendingMemberRequestForm.elements.length; i++)
	{
		postdata += document.pendingMemberRequestForm.elements[i].name + '=' + document.pendingMemberRequestForm.elements[i].value + '&';
	}
	var queryString = window.location.search.substring(1);
	postdata += 'QueryString=' + queryString + '&action=joinRequest';

	// call ajax function to log the fan in
	postDataReturnText('/app/ajaxPendingMembers.pl', postdata, 'pendingMemberResults', rebuildID, 'wait');
	
	hideID('pendingMemberForm');
	showIDblock ('pendingMemberResults');
	showIDblock ('pendingMemberLink');
}
function showSection(sectionID)
{
	hideID('homepageMain');
	hideID('calendar');
	hideID('weeklyCalendarMain');
	hideID('dailyCalendarMain');
	hideID('eventsList');
	hideID('store');
	hideID('gear');
	hideID('players');
	hideID('playerStats');
	hideID('teamPicture');
	hideID('mediaMain');
	hideID('sponsorsMain');
	hideID('home');
	hideID('Page2');
	hideID('membership');
	hideID('community');
	hideID('Page5');
	hideID('gallery');
	hideID('blog');
	hideID('pollsArchive');
	
	var defaultScreen = '';
	
	if (document.getElementById('homepageMainLink'))
	{
		document.getElementById('homepageMainLink').style.textDecoration = 'none';
		if ((defaultScreen == '') && (document.getElementById('homepageMainLink').innerHTML != ''))
		{
			defaultScreen = 'homepageMain';
		}
	}
	if (document.getElementById('calendarMainLink'))
	{
		document.getElementById('calendarMainLink').style.textDecoration = 'none';
		if ((defaultScreen == '') && (document.getElementById('calendarMainLink').innerHTML != ''))
		{
			defaultScreen = 'calendar';
		}
	}
	if (document.getElementById('weeklyCalendarMainLink'))
	{
		document.getElementById('weeklyCalendarMainLink').style.textDecoration = 'none';
		if ((defaultScreen == '') && (document.getElementById('weeklyCalendarMainLink').innerHTML != ''))
		{
			defaultScreen = 'weeklyCalendarMain';
		}
	}
	if (document.getElementById('dailyCalendarMainLink'))
	{
		document.getElementById('dailyCalendarMainLink').style.textDecoration = 'none';
		if ((defaultScreen == '') && (document.getElementById('dailyCalendarMainLink').innerHTML != ''))
		{
			defaultScreen = 'dailyCalendarMain';
		}
	}
	if (document.getElementById('eventsListLink'))
	{
		document.getElementById('eventsListLink').style.textDecoration = 'none';
		if ((defaultScreen == '') && (document.getElementById('eventsListLink').innerHTML != ''))
		{
			defaultScreen = 'eventsList';
		}
	}
	if (document.getElementById('storeLink'))
	{
		document.getElementById('storeLink').style.textDecoration = 'none';
		if ((defaultScreen == '') && (document.getElementById('storeLink').innerHTML != ''))
		{
			defaultScreen = 'store';
		}
	}
	if (document.getElementById('gearLink'))
	{
		document.getElementById('gearLink').style.textDecoration = 'none';
		if ((defaultScreen == '') && (document.getElementById('gearLink').innerHTML != ''))
		{
			defaultScreen = 'gear';
		}
	}
	if (document.getElementById('playersLink'))
	{
		document.getElementById('playersLink').style.textDecoration = 'none';
		if ((defaultScreen == '') && (document.getElementById('playersLink').innerHTML != ''))
		{
			defaultScreen = 'players';
		}
	}
	if (document.getElementById('playerStatsLink'))
	{
		document.getElementById('playerStatsLink').style.textDecoration = 'none';
		if ((defaultScreen == '') && (document.getElementById('playerStatsLink').innerHTML != ''))
		{
			defaultScreen = 'playerStats';
		}
	}
	if (document.getElementById('teamPictureLink'))
	{
		document.getElementById('teamPictureLink').style.textDecoration = 'none';
		if ((defaultScreen == '') && (document.getElementById('teamPictureLink').innerHTML != ''))
		{
			defaultScreen = 'teamPicture';
		}
	}
	if (document.getElementById('mediaMainLink'))
	{
		document.getElementById('mediaMainLink').style.textDecoration = 'none';
		if ((defaultScreen == '') && (document.getElementById('mediaMainLink').innerHTML != ''))
		{
			defaultScreen = 'mediaMain';
		}
	}
	if (document.getElementById('sponsorsMainLink'))
	{
		document.getElementById('sponsorsMainLink').style.textDecoration = 'none';
		if ((defaultScreen == '') && (document.getElementById('sponsorsMainLink').innerHTML != ''))
		{
			defaultScreen = 'sponsorsMain';
		}
	}
	if (document.getElementById('Page1Link'))
	{
		document.getElementById('Page1Link').style.textDecoration = 'none';
		if ((defaultScreen == '') && (document.getElementById('Page1Link').innerHTML != ''))
		{
			defaultScreen = 'Page1';
		}
	}
	if (document.getElementById('Page2Link'))
	{
		document.getElementById('Page2Link').style.textDecoration = 'none';
		if ((defaultScreen == '') && (document.getElementById('Page2Link').innerHTML != ''))
		{
			defaultScreen = 'Page2';
		}
	}
	if (document.getElementById('Page3Link'))
	{
		document.getElementById('Page3Link').style.textDecoration = 'none';
		if ((defaultScreen == '') && (document.getElementById('Page3Link').innerHTML != ''))
		{
			defaultScreen = 'Page3';
		}
	}
	if (document.getElementById('Page4Link'))
	{
		document.getElementById('Page4Link').style.textDecoration = 'none';
		if ((defaultScreen == '') && (document.getElementById('Page4Link').innerHTML != ''))
		{
			defaultScreen = 'Page4';
		}
	}
	if (document.getElementById('Page5Link'))
	{
		document.getElementById('Page5Link').style.textDecoration = 'none';
		if ((defaultScreen == '') && (document.getElementById('Page5Link').innerHTML != ''))
		{
			defaultScreen = 'Page5';
		}
	}
	if (document.getElementById('galleryLink'))
	{
		document.getElementById('galleryLink').style.textDecoration = 'none';
		if ((defaultScreen == '') && (document.getElementById('galleryLink').innerHTML != ''))
		{
			defaultScreen = 'gallery';
		}
	}
	if (document.getElementById('blogLink'))
	{
		document.getElementById('blogLink').style.textDecoration = 'none';
		if ((defaultScreen == '') && (document.getElementById('blogLink').innerHTML != ''))
		{
			defaultScreen = 'blog';
		}
	}
	
	if (sectionID == '') // initial load
	{
		showIDblock(defaultScreen);
		if (document.getElementById(defaultScreen + 'Link'))
		{
			document.getElementById(defaultScreen + 'Link').style.textDecoration = 'underline';
		}
	}
	else
	{
		showIDblock(sectionID);
		
		if (document.getElementById(sectionID + 'Link'))
		{
			document.getElementById(sectionID + 'Link').style.textDecoration = 'underline';
		}
	}
}

// these are used for players add/editing/sending via their store page
function playerLogin (accountNum,teamID,seasonID,playerID)
{
	showIDblock('playerLoginBackground');
	showIDblock('playerLoginLayer');
	showIDblock('playerLoginClose');

	var postdata = 'action=showLogin&AccountNum=' + accountNum + '&TeamID=' + teamID + '&SeasonID=' + seasonID + '&PlayerID=' + playerID;

	// call ajax function to draw the calendar
	postDataReturnText('/app/ajaxFansitePlayerLogin.pl', postdata, 'playerLoginLayer', rebuildID, 'wait');
}
function sendPasswordReminder (accountNum,teamID,seasonID,playerID)
{
	var postdata = 'action=passwordReminder&AccountNum=' + accountNum + '&TeamID=' + teamID + '&SeasonID=' + seasonID + '&PlayerID=' + playerID;

	// call ajax function to draw the calendar
	postDataReturnText('/app/ajaxFansitePlayerLogin.pl', postdata, 'playerLoginLayer', rebuildID, 'wait');
}
function processLogin (accountNum,teamID,seasonID,playerID)
{
	var pass = cleanData(document.playerLoginForm.password.value);

	var postdata = 'action=login&AccountNum=' + accountNum + '&TeamID=' + teamID + '&SeasonID=' + seasonID + '&PlayerID=' + playerID + '&Password=' + pass;;

	// call ajax function to draw the calendar
	postDataReturnText('/app/ajaxFansitePlayerLogin.pl', postdata, 'playerLoginLayer', rebuildID, 'wait');
}
function savePlayerPageImage (accountNum,teamID,seasonID,playerID,encPass)
{
	// get the frame number of the image upload frame
	for (f=0; f<window.frames.length; f++)
	{
		// alert (f + '=' + window.frames[f].name);
		if (window.frames[f].name == 'PlayerImageUpload')
		{
			var iframeNumber = f;
		}
	}

	window.frames[iframeNumber].document.forms[0].submit();
}
function redrawPlayerPageImage (accountNum,playerID,encPass)
{
	var postdata = 'action=RedrawPlayerImage&AccountNum=' + accountNum + '&PlayerID=' + playerID + '&EncPass=' + encPass;

	// call ajax function to draw the calendar
	postDataReturnText('/app/ajaxFansitePlayerLogin.pl', postdata, 'playerPageImageDiv', rebuildID, 'wait');
}
function savePlayerPageData (accountNum,teamID,seasonID,playerID,encPass)
{
	var newIntroText = cleanData(document.playerPageDataForm.introText.value);
	var newIntroHeadline = cleanData(document.playerPageDataForm.introHeadline.value);

	var postdata = 'action=Save&AccountNum=' + accountNum + '&TeamID=' + teamID + '&SeasonID=' + seasonID + '&PlayerID=' + playerID + '&Encpass=' + encPass + '&IntroHeadline=' + newIntroHeadline + '&IntroText=' + newIntroText;

	// call ajax function to draw the calendar
	postDataReturnText('/app/ajaxFansitePlayerLogin.pl', postdata, 'playerLoginLayer', rebuildID, 'wait');
}
function updatePersonalContactsList(pageNum)
{
	if ((typeof(pageNum) == 'undefined') || (pageNum == ''))
	{
		pageNum = 1
	}
	
	var postdata = 'action=list&PageNum=' + pageNum;

	// call the ajax function to show the list of Personal Contacts
	postDataReturnText('/app/ajaxMainPersonalContacts.pl', postdata, 'PersonalContactsList', rebuildID, 'wait');		
}
function addPersonalContact (pageNum)
{
	var fnameField = 'firstname_new';
	for (i=0; i<document.PersonalContactsListForm.elements.length; i++)
	{
		if (document.PersonalContactsListForm.elements[i].name == fnameField)
		{
			var fname = cleanData(document.PersonalContactsListForm.elements[i].value);
		}
	}
	var lnameField = 'lastname_new';
	for (i=0; i<document.PersonalContactsListForm.elements.length; i++)
	{
		if (document.PersonalContactsListForm.elements[i].name == lnameField)
		{
			var lname = cleanData(document.PersonalContactsListForm.elements[i].value);
		}
	}
	var emailField = 'email_new';
	for (i=0; i<document.PersonalContactsListForm.elements.length; i++)
	{
		if (document.PersonalContactsListForm.elements[i].name == emailField)
		{
			var email = cleanData(document.PersonalContactsListForm.elements[i].value);
		}
	}
		
	var postdata = 'action=addContact&PageNum=' + pageNum + '&Firstname=' + fname + '&Lastname=' + lname + '&Email=' + email;

	// call the ajax function to update the personal contact and then show the list of personal contacts
	postDataReturnText('/app/ajaxMainPersonalContacts.pl', postdata, 'PersonalContactsList', rebuildID, 'wait');
	
	// reset the new contact form elements
	document.PersonalContactsListForm.firstname_new.value = '';
	document.PersonalContactsListForm.lastname_new.value = '';
	document.PersonalContactsListForm.email_new.value = '';
	
	fadeOutBlock('addPersonalContact');
}
function cancelAddPersonalContact ()
{
	// reset the new contact form elements
	document.PersonalContactsListForm.firstname_new.value = '';
	document.PersonalContactsListForm.lastname_new.value = '';
	document.PersonalContactsListForm.email_new.value = '';
	
	fadeOutBlock('addPersonalContact');
}
function updatePersonalContact (pcid,pageNum)
{
	var fnameField = 'firstname' + pcid;
	for (i=0; i<document.PersonalContactsListForm.elements.length; i++)
	{
		if (document.PersonalContactsListForm.elements[i].name == fnameField)
		{
			var fname = cleanData(document.PersonalContactsListForm.elements[i].value);
		}
	}
	var lnameField = 'lastname' + pcid;
	for (i=0; i<document.PersonalContactsListForm.elements.length; i++)
	{
		if (document.PersonalContactsListForm.elements[i].name == lnameField)
		{
			var lname = cleanData(document.PersonalContactsListForm.elements[i].value);
		}
	}
	var emailField = 'email' + pcid;
	for (i=0; i<document.PersonalContactsListForm.elements.length; i++)
	{
		if (document.PersonalContactsListForm.elements[i].name == emailField)
		{
			var email = cleanData(document.PersonalContactsListForm.elements[i].value);
		}
	}
		
	var postdata = 'action=updateContact&PCID=' + pcid + '&PageNum=' + pageNum + '&Firstname=' + fname + '&Lastname=' + lname + '&Email=' + email;

	// call the ajax function to update the personal contact and then show the list of personal contacts
	postDataReturnText('/app/ajaxMainPersonalContacts.pl', postdata, 'PersonalContactsList', rebuildID, 'wait');		
}
function deletePersonalContact (pcid,pageNum)
{
	if (confirm('Are you sure you want to delete this contact?'))
	{
		var postdata = 'action=deleteContact&PCID=' + pcid + '&PageNum=' + pageNum;

		// call the ajax function to update the personal contact and then show the list of personal contacts
		postDataReturnText('/app/ajaxMainPersonalContacts.pl', postdata, 'PersonalContactsList', rebuildID, 'wait');		
	}
}


function updatePersonalContactsImport()
{
	var postdata = 'action=import';

	// call the ajax function to show the contact list
	postDataReturnText('/app/ajaxMainPersonalContacts.pl', postdata, 'PersonalContactsImport', rebuildID, 'wait');		
}
function updatePersonalContactsPermissions()
{
	var postdata = 'action=permissions';

	// call the ajax function to show permissions
	postDataReturnText('/app/ajaxMainPersonalContacts.pl', postdata, 'PersonalContactsPermissions', rebuildID, 'wait');		
}
function setPersonalContactsPermissions()
{
	var postdata = 'action=setPermissions';
	
	for (i=0; i<document.personalContactsPermissionsForm.elements.length; i++)
	{
		if (document.personalContactsPermissionsForm.elements[i].checked)
		{
			postdata += '&' + document.personalContactsPermissionsForm.elements[i].name + '=1';
		}
		else
		{
			postdata += '&' + document.personalContactsPermissionsForm.elements[i].name + '=0';
		}
	}
	
	// call the ajax function to set the permissions for each team
	postDataReturnText('/app/ajaxMainPersonalContacts.pl', postdata, 'PersonalContactsPermissions', rebuildID, 'wait');		
}

function updatePersonalContactsSend(accountNum,teamID)
{
	var postdata = 'action=send&AccountNum=' + accountNum + '&TeamID=' + teamID;

	// call the ajax function to show the Send screen
	postDataReturnText('/app/ajaxMainPersonalContacts.pl', postdata, 'PersonalContactsSend', rebuildID, 'wait');		
}
function sendPersonalContactsMessage()
{
	if (confirm ('Confirm that your message is ready to send'))
	{
		var subject = cleanData(document.personalContactsSendForm.Subject.value);
		var message = cleanData(document.personalContactsSendForm.Message.value);
		var accountNum = cleanData(document.personalContactsSendForm.AccountNum.value);
		var teamID = cleanData(document.personalContactsSendForm.TeamID.value);

		var postdata = 'action=sendMessage&Subject=' + subject + '&AccountNum=' + accountNum + '&TeamID=' + teamID + '&Message=' + message;

		// call the ajax function to send the message
		postDataReturnText('/app/ajaxMainPersonalContacts.pl', postdata, 'PersonalContactsSend', rebuildID, 'wait');		
	}
}

function verifyTextImport ()
{
	if (document.personalContactsImportTextForm.verifyPermission.checked)
	{
		// count the number of contacts
		splitter = new RegExp("\n");
		var eachContact = new Array;
		eachContact = document.personalContactsImportTextForm.importData.value.split(splitter);

		// remove any blank contacts
		var numContacts = 0;
		for (i=0; i<eachContact.length; i++)
		{
			contactTest = eachContact[i].match(/\w/);
			if ((contactTest != '') && (contactTest != null))
			{
				numContacts++;
			}
		}

		var finalImportHTML = '';
		if (numContacts < 1)
		{
			finalImportHTML = 'We did not find any contacts.  Please make sure each contact is separated by a line break.';
		}
		else if (numContacts > 100)
		{
			finalImportHTML = 'You can only import up to 100 contacts at a time.  Please reduce the number of contacts in the form entry above.';
		}
		else
		{
			finalImportHTML = 'We found ' + numContacts + ' contacts.';

			var nameProblems = 0;
			var emailProblems = 0;
			var badContacts = '';

			// find how many have valid names and emails
			for (i=0; i<eachContact.length; i++)
			{
				var temp = eachContact[i].replace(/\,/g,'');
				eachContact[i] = temp;
				var temp = eachContact[i].replace(/\s+/g,' ');
				eachContact[i] = temp;

				// first make sure this is a valid row with something in it
				contactTest = eachContact[i].match(/\w/);
				if ((contactTest != '') && (contactTest != null))
				{
					eachContactData = new Array;
					eachContactData = eachContact[i].split(/\s/);

					if ((eachContactData[0] == '') || (eachContactData[1] == '') || (eachContactData[0] == null) || (eachContactData[1] == null))
					{
						nameProblems++;
					}

					// alert (eachContactData[(eachContactData.length)-1]);
					var validEmail1 = eachContactData[(eachContactData.length)-1].match(/\@/);
					var validEmail2 = eachContactData[(eachContactData.length)-1].match(/\./);

					if ((validEmail1 == '') || (validEmail2 == '') || (validEmail1 == null) || (validEmail2 == null))
					{
						emailProblems++;
					}

					// if either name or email was bad, add the contact's info here
					if ((eachContactData[0] == '') || (eachContactData[1] == '') || (eachContactData[0] == null) || (eachContactData[1] == null) || (validEmail1 == '') || (validEmail2 == '') || (validEmail1 == null) || (validEmail2 == null))
					{
						badContacts += '&nbsp;&nbsp;' + eachContact[i] + '<br />';
					}
				}
			}

			if (nameProblems == 1)
			{
				finalImportHTML += '<span style="color: darkred; font-weight: bold;"><br />We found a problem with a name on your list:</span><br />';
				finalImportHTML += '<span style="color: darkorange;">' + badContacts + '</span>';
			}
			else if (nameProblems > 1)
			{
				finalImportHTML += '<span style="color: darkred; font-weight: bold;"><br />We found ' + nameProblems + ' problems with names on your list:</span><br />';
				finalImportHTML += '<span style="color: darkorange;">' + badContacts + '</span>';
			}
			if (emailProblems == 1)
			{
				finalImportHTML += '<span style="color: darkred; font-weight: bold;"><br />We found a problem with an email address on your list:</span><br />';
				finalImportHTML += '<span style="color: darkorange;">' + badContacts + '</span>';
			}
			else if (emailProblems > 1)
			{
				finalImportHTML += '<span style="color: darkred; font-weight: bold;"><br />We found ' + emailProblems + ' problems with email addresses on your list:</span><br />';
				finalImportHTML += '<span style="color: darkorange;">' + badContacts + '</span>';
			}
			
			if ((nameProblems == 0) && (emailProblems == 0))
			{
				finalImportHTML += '<br /><br /><a onClick="finalImport(\'Text\')" class="savebutton">Add To Personal Contacts</a>&nbsp;&nbsp;';
				finalImportHTML += '<a onClick="hideID(\'importPlayers\');" class="cancelbuttonSeasons">Cancel</a><br />';
			}
			else
			{
				finalImportHTML += '<br />';
			}
		}

		showIDblock ('verifyPersonalContactsImport');
		document.getElementById('verifyPersonalContactsImport').innerHTML = finalImportHTML;
	}
	else
	{
		alert ('Please confirm that the contacts you are about to import have given you permission to contact them.  Any contacts you send messages to that complain about spam will require you to produce proof of a relationship with them or you will be subject to a spam fine of up to \$100 per complaint.');
	}
}
function verifyGmailImport ()
{
	if (document.personalContactsImportGmailForm.verifyPermission.checked)
	{
		showIDblock('verifyPersonalContactsImport');

		// pull in contacts from yahoo, record if it's a failure in the admin table (max 10 for any MTC account), check for dupes, and for non-dupes allow checkboxes to add (and select/deselect all)
		var postdata = 'Mailer=Gmail&PersonalContacts=1&Username=' + document.personalContactsImportGmailForm.username.value + '&Password=' + document.personalContactsImportGmailForm.password.value;

		// call ajax function to add a player and make him/her active
		postDataReturnText('/app/ajaxPlayersImporter.pl?' + window.location.search.substring(1), postdata, 'verifyPersonalContactsImport', rebuildID, 'wait');
	}
	else
	{
		alert ('Please confirm that the contacts you are about to import have given you permission to contact them.  Any contacts you send messages to that complain about spam will require you to produce proof of a relationship with them or you will be subject to a spam fine of up to \$100 per complaint.');
	}
}
function verifyHotmailImport ()
{
	if (document.personalContactsImportHotmailForm.verifyPermission.checked)
	{
		showIDblock('verifyPersonalContactsImport');

		// pull in contacts from yahoo, record if it's a failure in the admin table (max 10 for any MTC account), check for dupes, and for non-dupes allow checkboxes to add (and select/deselect all)
		// var postdata = 'Mailer=Hotmail/MSN&PersonalContacts=1&Username=' + document.personalContactsImportHotmailForm.username.value + '&Password=' + document.personalContactsImportHotmailForm.password.value;
		var postdata = 'Mailer=WinLiveContactControl&PersonalContacts=1&Contacts=' + cleanData(window.frames['hotmailImportFrame'].document.body.innerHTML);

		// call ajax function to add a player and make him/her active
		postDataReturnText('/app/ajaxPlayersImporter.pl?' + window.location.search.substring(1), postdata, 'verifyPersonalContactsImport', rebuildID, 'wait');
	}
	else
	{
		alert ('Please confirm that the contacts you are about to import have given you permission to contact them.  Any contacts you send messages to that complain about spam will require you to produce proof of a relationship with them or you will be subject to a spam fine of up to \$100 per complaint.');
	}
}
function verifyYahooImport ()
{
	if (document.personalContactsImportYahooForm.verifyPermission.checked)
	{
		showIDblock('verifyPersonalContactsImport');

		// pull in contacts from yahoo, record if it's a failure in the admin table (max 10 for any MTC account), check for dupes, and for non-dupes allow checkboxes to add (and select/deselect all)
		var postdata = 'Mailer=Yahoo Mail&PersonalContacts=1&Username=' + document.personalContactsImportYahooForm.username.value + '&Password=' + document.personalContactsImportYahooForm.password.value;

		// call ajax function to add a player and make him/her active
		postDataReturnText('/app/ajaxPlayersImporter.pl?' + window.location.search.substring(1), postdata, 'verifyPersonalContactsImport', rebuildID, 'wait');
	}
	else
	{
		alert ('Please confirm that the contacts you are about to import have given you permission to contact them.  Any contacts you send messages to that complain about spam will require you to produce proof of a relationship with them or you will be subject to a spam fine of up to \$100 per complaint.');
	}
}
function selectAllImport()
{
	for (i=0; i<document.finalImportForm.elements.length; i++)
	{
		if (document.finalImportForm.elements[i].type == 'checkbox')
		{
			document.finalImportForm.elements[i].checked = true;
		}
	}
}
function deselectAllImport()
{
	for (i=0; i<document.finalImportForm.elements.length; i++)
	{
		if (document.finalImportForm.elements[i].type == 'checkbox')
		{
			document.finalImportForm.elements[i].checked = false;
		}
	}
}
function finalImport (importType,numImports,temp)
{
	var postdata = 'action=finalImport&';
	
	if (importType == 'Text')
	{
		// count the number of contacts
		var splitter = /[\n]/;
		var eachContact = document.personalContactsImportTextForm.importData.value.split(splitter);

		for (i=0; i<eachContact.length; i++)
		{
			var temp = eachContact[i].replace(/\,/g,'');
			eachContact[i] = temp;
			var temp = eachContact[i].replace(/\s+/g,' ');
			eachContact[i] = temp;

			postdata += 'contact' + i + '=' + eachContact[i] + '&';
		}

		// alert (postdata);
	}
	else // Yahoo, Hotmail, or Gmail importer
	{
		var maxResultNum = 0;
		var emails = new Array;
		var firstnames = new Array;
		var lastnames = new Array;

		for (i=0; i<document.finalImportForm.elements.length; i++)
		{
			var resultNum = document.finalImportForm.elements[i].name.match(/\d+/);
			var fieldName = document.finalImportForm.elements[i].name.match(/[A-Za-z]+/);

			resultNum = parseInt(resultNum);
			if (resultNum > maxResultNum)
			{
				maxResultNum = resultNum;
			}

			if ((fieldName == 'contact') && (document.finalImportForm.elements[i].checked))
			{
				emails[resultNum] = document.finalImportForm.elements[i].value;
				// alert ('Found ' + resultNum + ' ' + document.finalImportForm.elements[i].value);
			}
			if (fieldName == 'firstname')
			{
				firstnames[resultNum] = document.finalImportForm.elements[i].value;
			}
			if (fieldName == 'lastname')
			{
				lastnames[resultNum] = document.finalImportForm.elements[i].value;
			}
		}

		for (i=0; i<=maxResultNum; i++)
		{
			if (emails[i])
			{
				// alert ('checking ' + emails[i]);
				var emailAt = emails[i].search(/\@/);
				if (emailAt > 0)
				{
					postdata += 'contact' + i + '=' + firstnames[i] + ' ' + lastnames[i] + ' ' + emails[i] + '&';
				}
			}
		}

		// alert (postdata);
	}

	// call the ajax function, rebuildID will replace newPlayerDiv with the new player data, wait is the cursor
	postDataReturnText('/app/ajaxMainPersonalContacts.pl', postdata, 'PersonalContactsImport', rebuildID, 'wait');

	hideID ('importPlayers');
}
