//copyright © Keith Trotter.  All rights reserved

//Page Inits
function init(page)
{
	try{
		switch(page)
		{
			case "ABOUT":
			case "BENEFITS":
			case "MESSAGE":
			case "HOME_LOGGED_IN":
			case "HOME_LOGGED_OUT":
			case "HELP":
			case "ETIQUETTE":
			case "DEFINITIONS":
			case "PRIVACY_POLICY":
			case "TERMS_AND_CONDITIONS":
			case "PRICING":
			case "SITE_MAP":
			case "MEMBER_PROFILE":
			case "MEMBER_RESULTS":
			case "MEMBER_RESULTS_REVIEW":
			case "MEMBER_STATISTICS_WL":
			case "MEMBER_STATISTICS_AVG":
			case "MEMBER_STATISTICS_TREND":
			case "NEW_MEMBER_SIGNUP_REVIEW":
				document.getElementById('member_auth_id_text').focus();
				break;
			case "MEMBER_PROFILE_EDIT":
				document.getElementById('member_profile_alias_text').focus();
				break;
			case "MEMBER_RESULTS_EDIT_W1":
				document.getElementById('match_result_date_text').focus();
				break;
			case "MEMBER_RESULTS_EDIT_W2":
				document.getElementById('member_result_match_sets_text').focus();
				break;
			case "MEMBER_RESULTS_EDIT_W3":
				document.getElementById('member_result_match_my_team_games_1_text').focus();
				break;
			case "MEMBER_RESULTS_EDIT_W4":
				document.getElementById('member_result_match_me_deuce_games_won').focus();
				break;
			case "MEMBER_RESULTS_EDIT_W5":
				document.getElementById('member_result_match_my_team_aces_1_text').focus();
				break;
			case "MEMBER_RESULTS_EDIT_W6":
				document.getElementById('member_result_match_duration_hours_text').focus();
				break;
			case "CONTACT_US":
				document.getElementById('contact_name_text').focus();
				break;
			case "MEMBER_PROFILE_LOGIN":
				document.getElementById('mprofile_pwd_text').focus();
				break;
			case "NEW_MEMBER_SIGNUP":
				document.getElementById('new_member_signup_alias_text').focus();
				break;
			case "PASSWORD_RESET_CHALLENGE":
				document.getElementById('pwreset_answer_text').focus();
				break;
			case "PASSWORD_RESET_REQUEST":
				document.getElementById('lpreset_nick_email_text').focus();
				break;
			case "DATA_SYNC":
				document.getElementById('dsync_new_name').focus();
				break;
			case "MEMBER_DIRECTORY":
				document.getElementById('member_directory_nickname_text').focus();
				break;
			case "TENNIS_CIRCLE_INVITE":
				document.getElementById('tc_invite_name_text').focus();
				break;
			case "RATE_MY_GAME_EDIT":
				document.getElementById('rmg_date').focus();
				break;
				
				
			default:
				document.getElementById('member_auth_id_text').focus();
				break;
		}
	}
	catch(e){}
}

function input_text_focus(e,e_label)
{
  e.style.background="#EEFFBB";
  if(e_label && e_label.length>0) document.getElementById(e_label).style.background="#EEFFBB";
  if(e.select) e.select();
}

function input_text_blur(e,e_label)
{
  e.style.background="white";
  if(e_label && e_label.length>0) document.getElementById(e_label).style.background="white";
}

function validate()
{
	this.errors='';
	this.focus=null;

	this.report=function()
	{
		if(this.errors.length>0)
		{
			document.getElementById('good_response').innerHTML="";
			document.getElementById('bad_response').innerHTML=this.errors;
			if(this.focus) this.focus.focus();
			return false;
		}
		else
		{
			return true;
		}
	}

	this.appendError=function(element,name,error)
	{
		this.errors=this.errors+name+": "+error;
		if(!this.focus) this.focus=element;
	}
	
	this.radioChecked=function(element,name)
	{
		var num=0;
		checked=false;

		if(element.checked===true)
		{
			checked=true;
		}

		while(typeof(element[num])!="undefined")
			{
			if(element[num].checked===true)
				{
				checked=true;
				}
			num=num+1;
			}

		if((element.type=='radio' || element[0].type=='radio') && checked===false)
		  {
			 this.errors=this.errors+name+": one must be selected<br/>";
			 return false;
		  }
	}

	this.cmpPasswords=function(element1,element2)
	{
		if(element1.value!=element2.value)
		{
			this.errors=this.errors+'Password: password fields do not match<br/>';
			if(!this.focus) this.focus=element2;
			return false;
		}
		else
		{
			return true;
		}
	}

	this.check=function(type,name,element)
	{
		var valid=true;

		switch(type)
		{
			case "FULL_NAME":
				if(!element.value.match(/^(([^ \t]{1})|([^ \t].{0,148}[^ \t]))$/))
				
				  {
					 this.errors=this.errors+name+": must be 1 to 150 characters, with no leading or trailing spaces<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "EMAIL_ADDRESS":
				if(!element.value.toUpperCase().match(/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/))
				  {
					 this.errors=this.errors+name+": valid example is user@domain.com<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "EMAIL_MESSAGE":
				if(!element.value.match(/^(.|\n|\r){1,500}$/))
				  {
					 this.errors=this.errors+name+": must be 1 to 500 characters<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "LOGIN_ID":
				if(!element.value.match(/^.{1,}$/))
				  {
					 this.errors=this.errors+name+": cannot be blank<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "LOGIN_PASSWORD":
				if(!element.value.match(/^.{1,}$/))
				  {
					 this.errors=this.errors+name+": cannot be blank<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "NICKNAME_OR_EMAIL_ADDRESS":
				if(!element.value.match(/^([^ \t].{3,48}[^ \t])$/))
				  {
					 this.errors=this.errors+name+": must be 5 to 50 characters, with no leading or trailing spaces<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "NICKNAME":
				if(!element.value.match(/^([^ \t][^ \t]{3,23}[^ \t])$/))
				  {
					 this.errors=this.errors+name+": must be 5 to 25 characters, with no spaces<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "PASSWORD":
				if(!element.value.match(/^.{6,25}$/))
				  {
					 this.errors=this.errors+name+": must be 6 to 25 characters<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "CHALLENGE_QUESTION":
				if(!element.value.match(/^(([^ \t]{1})|([^ \t].{0,48}[^ \t]))$/))
				  {
					 this.errors=this.errors+name+": must be 1 to 50 characters, with no leading or trailing spaces<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "CHALLENGE_ANSWER":
				if(!element.value.match(/^(([^ \t]{1})|([^ \t].{0,48}[^ \t]))$/))
				  {
					 this.errors=this.errors+name+": must be 1 to 50 characters, with no leading or trailing spaces<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "FIRST_NAME":
				if(!element.value.match(/^(([^ \t]{1})|([^ \t].{0,48}[^ \t]))$/))
				  {
					 this.errors=this.errors+name+": must be 1 to 50 characters, with no leading or trailing spaces<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "MIDDLE_NAME":
				if(!element.value.match(/^(([^ \t]{1})|([^ \t].{0,48}[^ \t]))$/))
				  {
					 this.errors=this.errors+name+": must be 1 to 50 characters, with no leading or trailing spaces<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "LAST_NAME":
				if(!element.value.match(/^(([^ \t]{1})|([^ \t].{0,48}[^ \t]))$/))
				  {
					 this.errors=this.errors+name+": must be 1 to 50 characters, with no leading or trailing spaces<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "DATE":
				if(!element.value.match(/^(0[1-9]|1[012])[/](0[1-9]|[12][0-9]|3[01])[/](18|19|20)[0-9]{2}$/))
				  {
					 this.errors=this.errors+name+": valid example is: 11/07/1902<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "GENDER":
				if(!element.value.match(/^(Female)|(Male)$/))
				  {
					 this.errors=this.errors+name+": not a valid value<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "SELF_RATE":
				if(!element.value.match(/^([1-6]\.[05])|(7.0)$/))
				  {
					 this.errors=this.errors+name+": not a valid value<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "USER_SIGNUP_AGREEMENT":
				if(element.checked===false)
				  {
					 this.errors=this.errors+name+": privacy policy and terms &amp; conditions box not checked<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "TELEPHONE":
				if(!element.value.match(/^[0-9]{3}-[0-9]{3}-[0-9]{3}-[0-9]{4}$/))
				  {
					 this.errors=this.errors+name+": valid example is: 000-000-000-0000, where first three numbers is country code<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "MEMBER_LISTING_PREFERENCE":
				if(!element.value.match(/^(Show me as anonymous)|(Show my nickname)|(Show my nickname and full name)$/))
				  {
					 this.errors=this.errors+name+": not a valid value<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "YES_NO":
				if(!element.value.match(/^(Yes)|(No)$/))
				  {
					 this.errors=this.errors+name+": not a valid value<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "MATCH_TYPE":
				if(!element.value.match(/^(Singles)|(Doubles)|(Mixed Doubles)$/))
				  {
					 this.errors=this.errors+name+": not a valid value<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "MATCH_STATUS":
				if(!element.value.match(/^(Completed Match)|(Partial Match)$/))
				  {
					 this.errors=this.errors+name+": not a valid value<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "MATCH_FORFEITURE":
				if(!element.value.match(/^()|(Me & Team)|(Opponent\(s\))$/))
				  {
					 this.errors=this.errors+name+": not a valid value<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "MATCH_GAMES":
				if(!element.value.match(/^([0-9]|1[0-9]|2[0-5])$/))
				  {
					 this.errors=this.errors+name+": not a valid value<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "MATCH_TIE_BREAK":
				if(!element.value.match(/^(()|[0-9]|1[0-9]|2[0-5])$/))
				  {
					 this.errors=this.errors+name+": not a valid value<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "MATCH_STATISTIC":
				if(!element.value.match(/^(()|[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|250)$/))
				  {
					 this.errors=this.errors+name+": allowed values are 0 to 250<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "MATCH_TOTAL_POINTS":
				if(!element.value.match(/^(()|[0-9]|[1-9][0-9]|[1-9][0-9][0-9]|1000)$/))
				  {
					 this.errors=this.errors+name+": allowed values 0 to 1000<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "PERCENTAGE":
				if(!element.value.match(/^(()|((()|([0-9]|[1-9][0-9]))(()|(\.[0-9]{1,2})))|100)$/))
				  {
					 this.errors=this.errors+name+": allowed values 0 to 100, with up to two decimal digits<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "FASTEST_SERVE":
				if(!element.value.match(/^(()|((()|([0-9]|[1-9][0-9]|1[0-9][0-9]))(()|(\.[0-9]{1,2})))|200)$/))
				  {
					 this.errors=this.errors+name+": allowed values 0 to 200, with up to two decimal digits<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "MATCH_DURATION":
				if(!element.value.match(/^(()|([0-5][0-9]))$/))
				  {
					 this.errors=this.errors+name+": not a valid value<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "MATCH_SURFACE":
				if(!element.value.match(/^(()|(Hardcourt)|(Clay)|(Grass)|(Carpet))$/))
				  {
					 this.errors=this.errors+name+": not a valid value<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "MATCH_ENVIRONMENT":
				if(!element.value.match(/^(()|(Indoor)|(Outdoor))$/))
				  {
					 this.errors=this.errors+name+": not a valid value<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "MATCH_ORDER":
				if(!element.value.match(/^([1-9]|1[0-9]|2[0-5])$/))
				  {
					 this.errors=this.errors+name+": not a valid value<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "MATCH_MAX_50":
				if(!element.value.match(/^(()|([^ \t]{1})|([^ \t].{0,48}[^ \t]))$/))
				  {
					 this.errors=this.errors+name+": no more than 50 characters, with no leading or trailing spaces<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "NOTE":
				if(!element.value.match(/^(.|\n|\r){0,1000}$/))
				  {
					 this.errors=this.errors+name+": no more than 1000 characters<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "DELETE_CONFIRMATION":
				if(element.checked===false)
				  {
					 this.errors=this.errors+name+": check box to confirm deletion request<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "DSYNC_CONFIRMATION":
				if(element.checked===false)
				  {
					 this.errors=this.errors+name+": check box to confirm update request<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "DSYNC_NEW_NAME_50":
				if(!element.value.match(/^(([^ \t]{1})|([^ \t].{0,48}[^ \t]))$/))
				
				  {
					 this.errors=this.errors+name+": must be 1 to 50 characters<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "MEMBER_DESC":
				if(!element.value.match(/^(()|([^ \t]{1})|([^ \t].{0,248}[^ \t]))$/))
				  {
					 this.errors=this.errors+name+": no more than 250 characters, with no leading or trailing spaces<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
			case "TEST_VALUE":
				if(!element.value.match(/^([0-9]|10)$/))
				  {
					 this.errors=this.errors+name+": allowed values are 0 to 10<br/>";
					 if(!this.focus) this.focus=element;
					 valid=false;
				  }
				break;
	


			default:
				break;
		}

		return valid;
	}
}

function member_auth_submit(e)
{
	var val=new validate();

	val.check("LOGIN_ID","Nick name",e.member_auth_id_text);
	val.check("LOGIN_PASSWORD","Password",e.member_auth_pwd_text);

	return val.report();
}

function contact_us_submit(e)
{
	var val=new validate();

	val.check("FULL_NAME","Name",e.contact_name_text);
	val.check("EMAIL_ADDRESS","Email address",e.contact_email_text);
	val.check("EMAIL_MESSAGE","Message",e.contact_msg_text);

	return val.report();
}

function lpreset_submit(e)
{
	var val=new validate();

	val.check("NICKNAME_OR_EMAIL_ADDRESS","Input",e.lpreset_nick_email_text);

	return val.report();
}

function mp_login_submit(e)
{
	var val=new validate();

	val.check("LOGIN_PASSWORD","Password",e.mprofile_pwd_text);

	return val.report();
}

function new_member_signup_submit(e)
{
	var val=new validate();

	val.check("NICKNAME","Nick name",e.new_member_signup_alias_text);
	if(val.check("PASSWORD","Password",e.new_member_signup_pwd_text))
	{
		val.cmpPasswords(e.new_member_signup_pwd_text,e.new_member_signup_rpt_pwd_text);
	}
	val.check("EMAIL_ADDRESS","Email address",e.new_member_signup_email_text);
	val.check("CHALLENGE_QUESTION","Challenge question",e.new_member_signup_challenge_question_text);
	val.check("CHALLENGE_ANSWER","Challenge answer",e.new_member_signup_challenge_answer_text);
	if(e.new_member_signup_fname_text.value.length>0) val.check("FIRST_NAME","First name",e.new_member_signup_fname_text);
	if(e.new_member_signup_mname_text.value.length>0) val.check("MIDDLE_NAME","Middle name",e.new_member_signup_mname_text);
	if(e.new_member_signup_lname_text.value.length>0) val.check("LAST_NAME","Last name",e.new_member_signup_lname_text);
	if(e.new_member_signup_dob_text.value.length>0) val.check("DATE","Birth date",e.new_member_signup_dob_text);	
	if(e.new_member_signup_gender_text.value.length>0) val.check("GENDER","Gender",e.new_member_signup_gender_text);	
	if(e.new_member_signup_self_rate_text.value.length>0) val.check("SELF_RATE","Self Rate",e.new_member_signup_self_rate_text);	
	val.check("USER_SIGNUP_AGREEMENT","User agreement",e.new_member_signup_agree_checkbox);

	return val.report();
}

function pwreset_cancel_submit(e)
{
	return true;
}

function pwreset_reset_submit(e)
{
	var val=new validate();

	val.radioChecked(e.pwreset_nickname_text,"Nick name");
	val.check("CHALLENGE_ANSWER","Challenge answer",e.pwreset_answer_text);
	if(val.check("PASSWORD","Password",e.pwreset_pwd_text))
	{
		val.cmpPasswords(e.pwreset_pwd_text,e.pwreset_rpt_pwd_text);
	}

	return val.report();
}

function member_profile_edit_submit(e)
{
	var val=new validate();
	var thefName=false,thelName=false;

	val.check("NICKNAME","Nick name",e.member_profile_alias_text);
	val.check("EMAIL_ADDRESS","Email address",e.member_profile_email_text);
//	if(e.member_profile_telephone_text.value.length>0) val.check("TELEPHONE","Telephone #",e.member_profile_telephone_text);
	if(e.member_profile_fname_text.value.length>0) thefName=val.check("FIRST_NAME","First name",e.member_profile_fname_text);
	if(e.member_profile_mname_text.value.length>0) val.check("MIDDLE_NAME","Middle name",e.member_profile_mname_text);
	if(e.member_profile_lname_text.value.length>0) thelName=val.check("LAST_NAME","Last name",e.member_profile_lname_text);
	if(e.member_profile_dob_text.value.length>0) val.check("DATE","Birth date",e.member_profile_dob_text);	
	if(e.member_profile_gender_text.value.length>0) val.check("GENDER","Gender",e.member_profile_gender_text);	

	if(e.member_profile_current_pwd_text.value.length==0 &&
	 (e.member_profile_new_pwd_text.value.length>0 ||
	 e.member_profile_rpt_new_pwd_text.value.length>0 ||
	 e.member_profile_saved_ca_text.value!=e.member_profile_challenge_answer_text.value || e.member_profile_saved_cq_text.value!=e.member_profile_challenge_question_text.value))
	  {
		 val.appendError(e.member_profile_current_pwd_text,"Current password","must be specified to change security section items<br/>");
	  }

	if(e.member_profile_new_pwd_text.value.length>0 && val.check("PASSWORD","New password",e.member_profile_new_pwd_text))
	{
		val.cmpPasswords(e.member_profile_new_pwd_text,e.member_profile_rpt_new_pwd_text);
	}

	val.check("CHALLENGE_QUESTION","Challenge question",e.member_profile_challenge_question_text);
	val.check("CHALLENGE_ANSWER","Challenge answer",e.member_profile_challenge_answer_text);
	val.check("YES_NO","Tennis circle notification",e.member_profile_notify_tc_add_text);
	val.check("YES_NO","Tennis circle messages",e.member_profile_allow_tc_msg_text);
	if(e.member_profile_ntrp_rating_text.value.length>0) val.check("SELF_RATE","Self Rate",e.member_profile_ntrp_rating_text);	

	if(e.member_profile_ntc_listing_text.value.length>0 && val.check("MEMBER_LISTING_PREFERENCE","Directory listing preference",e.member_profile_ntc_listing_text)&& e.member_profile_ntc_listing_text.value=="Show my nickname and full name" && thefName==false && thelName==false)
	{
		val.appendError(e.member_profile_ntc_listing_text,"Directory listing preference","first and last name required for this listing preference<br/>");
	}
	
	if(e.member_profile_desc_text.value.length>0) val.check("MEMBER_DESC","Description",e.member_profile_desc_text);	
	
//	if(e.member_profile_forward_msg_text.value.length>0 && val.check("YES_NO","Message forwarding preference",e.member_profile_forward_msg_text));	

	return val.report();
}

function member_match_result_delete_submit(e)
{
	var val=new validate();

	val.check("DELETE_CONFIRMATION","Delete confirmation",e.member_result_match_delete_confirmed);

	return val.report();
}

function rmg_delete_submit(e)
{
	var val=new validate();

	val.check("DELETE_CONFIRMATION","Delete confirmation",e.rmg_delete_confirmed);

	return val.report();
}

function member_profile_edit_add_loc(form)
{
	var option=document.createElement('option');
	if(	form.member_profile_city_text.value.match(/^(([^ \t]{1})|([^ \t].{0,48}[^ \t]))$/) &&
		form.member_profile_state_text.value.match(/^(([^ \t]{1})|([^ \t].{0,48}[^ \t]))$/) &&
		form.member_profile_country_text.value.match(/^(([^ \t]{1})|([^ \t].{0,48}[^ \t]))$/) &&
		form.member_profile_avail_locs_text.length<=9)
	{
		option.text=form.member_profile_city_text.value+", "+form.member_profile_state_text.value+", "+form.member_profile_country_text.value;
		for (i=0;i<form.member_profile_avail_locs_text.length;i++)
		{
			if(form.member_profile_avail_locs_text.options[i].text.toUpperCase()==option.text.toUpperCase())
			{
				return false;
			}
		}
		try{form.member_profile_avail_locs_text.add(option,null);}
		catch (e){form.member_profile_avail_locs_text.add(option);}

		form.member_profile_loc_list_text.value=form.member_profile_loc_list_text.value+escape(escape(form.member_profile_city_text.value)+", "+escape(form.member_profile_state_text.value)+", "+escape(form.member_profile_country_text.value))+",";
	}

	return false;
}

function remove_item_from_list(list_var,list_scr,skipFirstItem)
{
	var arSelected = new Array();
	var items=list_var.value.split(",");

	if(skipFirstItem==true && list_scr.selectedIndex>=0)
		{
		list_scr.options[0].selected=false; 
		}

	while (list_scr.selectedIndex>=0)
		{
		arSelected.push(list_scr.selectedIndex);
		list_scr.options[list_scr.selectedIndex].selected=false; 
		}

	for(i=0;i<arSelected.length;i++)
		{
		if(skipFirstItem==false)
			{
			items.splice(arSelected[i]-i,1);
			}
		else
			{
			items.splice(arSelected[i]-i-1,1);
			}
		list_scr.remove(arSelected[i]-i);
		}

	list_var.value=items.toString();

	return false;
}

function match_results_edit_submit(e,page)
{
	var val=new validate();
	var num;
	var tmp;

	if(page==1)
	{
		val.check("DATE","Match date",e.match_result_date_text);	
		val.check("MATCH_TYPE","Match Type",e.member_result_match_type_text);
		val.check("MATCH_STATUS","Match Status",e.member_result_match_status_text);
	}
	else if(page==2)
	{
		if(e.member_result_match_my_opponent_text.length==0)
		  {
			 val.appendError(e.member_result_match_my_opponent_text,"Opponent(s)","at least one participant name required<br/>");
		  }
		if(e.member_result_match_sets_text.value < 1 || e.member_result_match_sets_text.value > 10)
		  {
			 val.appendError(e.member_result_match_my_team_text,"Sets Played","number of sets played must be between 1 and 10<br/>");
		  }
	}
	else if(page==3)
	{
		val.check("MATCH_FORFEITURE","Forfeiture",e.member_result_match_forfeit_text);

		num=1;
		tmp1='member_result_match_my_team_games_'+(num)+'_text';
		tmp2='member_result_match_my_opponent_games_'+(num)+'_text';
		tmp3='member_result_match_my_team_tb_'+(num)+'_text';
		tmp4='member_result_match_my_opponent_tb_'+(num)+'_text';
		while(document.getElementById(tmp1)!=null)
			{
				if(val.check("MATCH_GAMES","Games",document.getElementById(tmp1))==false ||
					 val.check("MATCH_GAMES","Games",document.getElementById(tmp2))==false ||
					 val.check("MATCH_TIE_BREAK","Tie Break",document.getElementById(tmp3))==false ||
					 val.check("MATCH_TIE_BREAK","Tie Break",document.getElementById(tmp4))==false)
				{
					break;
				}
			
			num=num+1;
			tmp1='member_result_match_my_team_games_'+(num)+'_text';
			tmp2='member_result_match_my_opponent_games_'+(num)+'_text';
			tmp3='member_result_match_my_team_tb_'+(num)+'_text';
			tmp4='member_result_match_my_opponent_tb_'+(num)+'_text';
			}
	}
	else if(page==4)
	{
		val.check("MATCH_STATISTIC","Statistic",e.member_result_match_me_deuce_games_won);	
		val.check("MATCH_STATISTIC","Statistic",e.member_result_match_opponent_deuce_games_won);
		val.check("MATCH_STATISTIC","Statistic",e.member_result_match_me_0_40_games_won);
		val.check("MATCH_STATISTIC","Statistic",e.member_result_match_opponent_0_40_games_won);
		val.check("MATCH_STATISTIC","Statistic",e.member_result_match_me_games_broken);
		val.check("MATCH_STATISTIC","Statistic",e.member_result_match_opponent_games_broken);
		val.check("MATCH_TOTAL_POINTS","Total Points",e.member_result_match_me_total_points_won);
		val.check("MATCH_TOTAL_POINTS","Total Points",e.member_result_match_opponent_total_points_won);
	}
	else if(page==5)
	{
		num=1;
		tmp1='member_result_match_my_team_aces_'+(num)+'_text';
		tmp2='member_result_match_my_team_double_faults_'+(num)+'_text';
		tmp3='member_result_match_my_team_winners_'+(num)+'_text';
		tmp4='member_result_match_my_team_unforced_errors_'+(num)+'_text';
		tmp5='member_result_match_my_team_first_serve_percentage_'+(num)+'_text';
		tmp6='member_result_match_my_team_fastest_serve_'+(num)+'_text';
		tmp7='member_result_match_my_opponents_aces_'+(num)+'_text';
		tmp8='member_result_match_my_opponents_double_faults_'+(num)+'_text';
		tmp9='member_result_match_my_opponents_winners_'+(num)+'_text';
		tmp10='member_result_match_my_opponents_unforced_errors_'+(num)+'_text';
		tmp11='member_result_match_my_opponents_first_serve_percentage_'+(num)+'_text';
		tmp12='member_result_match_my_opponents_fastest_serve_'+(num)+'_text';
		while(document.getElementById(tmp1)!=null)
			{
				if(val.check("MATCH_TOTAL_POINTS","Aces",document.getElementById(tmp1))==false ||
					 val.check("MATCH_TOTAL_POINTS","Double Faults",document.getElementById(tmp2))==false ||
					 val.check("MATCH_TOTAL_POINTS","Winners",document.getElementById(tmp3))==false ||
					val.check("MATCH_TOTAL_POINTS","Unforced Errors",document.getElementById(tmp4))==false ||
					val.check("PERCENTAGE","First Serve Percentage",document.getElementById(tmp5))==false ||
					 val.check("FASTEST_SERVE","Fastest Serve",document.getElementById(tmp6))==false ||
					val.check("MATCH_TOTAL_POINTS","Aces",document.getElementById(tmp7))==false ||
					 val.check("MATCH_TOTAL_POINTS","Double Faults",document.getElementById(tmp8))==false ||
					 val.check("MATCH_TOTAL_POINTS","Winners",document.getElementById(tmp9))==false ||
					val.check("MATCH_TOTAL_POINTS","Unforced Errors",document.getElementById(tmp10))==false ||
					val.check("PERCENTAGE","First Serve Percentage",document.getElementById(tmp11))==false ||
					 val.check("FASTEST_SERVE","Fastest Serve",document.getElementById(tmp12))==false)
				{
					break;
				}
			
			num=num+1;
			tmp1='member_result_match_my_team_aces_'+(num)+'_text';
			tmp2='member_result_match_my_team_double_faults_'+(num)+'_text';
			tmp3='member_result_match_my_team_winners_'+(num)+'_text';
			tmp4='member_result_match_my_team_unforced_errors_'+(num)+'_text';
			tmp5='member_result_match_my_team_first_serve_percentage_'+(num)+'_text';
			tmp6='member_result_match_my_team_fastest_serve_'+(num)+'_text';
			tmp7='member_result_match_my_opponents_aces_'+(num)+'_text';
			tmp8='member_result_match_my_opponents_double_faults_'+(num)+'_text';
			tmp9='member_result_match_my_opponents_winners_'+(num)+'_text';
			tmp10='member_result_match_my_opponents_unforced_errors_'+(num)+'_text';
			tmp11='member_result_match_my_opponents_first_serve_percentage_'+(num)+'_text';
			tmp12='member_result_match_my_opponents_fastest_serve_'+(num)+'_text';
			}
	}
	else if(page==6)
	{
		val.check("MATCH_DURATION","Hours",e.member_result_match_duration_hours_text);	
		val.check("MATCH_DURATION","Minutes",e.member_result_match_duration_minutes_text);	
		val.check("MATCH_DURATION","Seconds",e.member_result_match_duration_seconds_text);	
		val.check("MATCH_SURFACE","Surface",e.member_result_match_surface_text);	
		val.check("MATCH_ENVIRONMENT","Surface",e.member_result_match_environment_text);
		val.check("MATCH_ORDER","Match Order",e.member_result_match_order_text);
		val.check("MATCH_MAX_50","Location",e.member_result_match_location_text);	
		val.check("MATCH_MAX_50","Series Name",e.member_result_match_series_text);	
		val.check("MATCH_MAX_50","Affiliation",e.member_result_match_affiliation_text);	
		val.check("NOTE","Notes",e.member_result_match_notes_text);	
	}

	return val.report();
}

function member_results_edit_add_player(form,player_scr,player_list)
{
	var option=document.createElement('option');
	var player;
	var desc;

	if(form.member_result_match_my_team_text==player_scr)
	{
		desc="Me &amp; Team";
	}
	else if(form.member_result_match_my_opponent_text==player_scr)
	{
		desc="Opponent(s)";
	}

	document.getElementById('bad_response').innerHTML="";
	player=form.member_result_match_player_text.value.replace(/[ \t]+/g," ");	
	player=player.replace(/(^[ \t]+)|([ \t]+$)/g,"");  
//	player=player.replace(/\b[a-z]/g,function cnvrt(){return arguments[0].toUpperCase();}); //capitalize words
	if(player.match(/^.{1,150}$/) &&
		player_scr.length<=9)
	{
		option.text=player;
		for (i=0;i<player_scr.length;i++)
		{
			if(player_scr.options[i].text.toUpperCase()==option.text.toUpperCase())
			{
				document.getElementById('bad_response').innerHTML=desc+": '"+option.text+"' is already a participant on this team<br/>For like-name teammates, to avoid confusion, modify one of the names";
				return false;
			}
		}
		try{player_scr.add(option,null);}
		catch (e){player_scr.add(option);}
		player_list.value=player_list.value+escape(player)+",";
	}
	else
	{
		if(!player.match(/^.{1,150}$/))
		{
			document.getElementById('bad_response').innerHTML=desc+": A participant name must first be specified";
			form.member_result_match_player_text.focus();
		}
		else
		{
			document.getElementById('bad_response').innerHTML=desc+": A max of 10 players allowed per team";
			form.member_result_match_player_text.focus();
		}
	}

	return false;
}


function dsync_data_submit(e,new_name,old_name,max_length)
{
	var val=new validate();

	if(max_length==150)
	{
		val.check("FULL_NAME",new_name,e.dsync_new_name);
	}
	else
	{
		val.check("DSYNC_NEW_NAME_50",new_name,e.dsync_new_name);
	}
	val.radioChecked(e.dsync_old_name,old_name);
	val.check("DSYNC_CONFIRMATION","Update confirmation",e.dsync_confirmed);

	return val.report();
}

function tc_invite_submit(e)
{
	var val=new validate();

	val.check("FULL_NAME","Full name",e.tc_invite_name_text);
	val.check("EMAIL_ADDRESS","Email address",e.tc_invite_email_text);
	val.check("EMAIL_MESSAGE","Personal note",e.tc_invite_msg_text);
	if(e.tc_invite_recipients_text.value.length>0)
	{
		var items=e.tc_invite_recipients_text.value.split("\n");
		j=0;
		for(i in items)
		{
			if(items[i].length>0 && !items[i].toUpperCase().match(/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/))
			  {
			   val.appendError(e.tc_invite_recipients_text,"Recipients","At least one email address is invalid<br/>");
			   break;
			  }
			 j=j+1;
		}
		if(j>20)
		{
			val.appendError(e.tc_invite_recipients_text,"Recipients","Up to 20 recipients can be specified at one time<br/>");
		}
	}
	else
	{
		val.appendError(e.tc_invite_recipients_text,"Recipients","At least one email address must be specified<br/>");			
	}

	return val.report();
}

function rmg_submit(e)
{
	var val=new validate();

	val.check("DATE","Test date",e.rmg_date);
	val.check("TEST_VALUE","Forehand, non-directional",e.rmg_fh_non_directional);
	val.check("TEST_VALUE","Forehand, down the line",e.rmg_fh_down_line);
	val.check("TEST_VALUE","Forehand, cross court",e.rmg_fh_cross_court);
	val.check("TEST_VALUE","Forehand, inside out",e.rmg_fh_inside_out);
	val.check("TEST_VALUE","Forehand, lob",e.rmg_fh_lob);
	val.check("TEST_VALUE","Forehand, drop shot",e.rmg_fh_drop_shot);
	val.check("TEST_VALUE","Backhand, non-directional",e.rmg_bh_non_directional);
	val.check("TEST_VALUE","Backhand, down the line",e.rmg_bh_down_line);
	val.check("TEST_VALUE","Backhand, cross court",e.rmg_bh_cross_court);
	val.check("TEST_VALUE","Backhand, inside out",e.rmg_bh_inside_out);
	val.check("TEST_VALUE","Backhand, lob",e.rmg_bh_lob);
	val.check("TEST_VALUE","Backhand, drop shot",e.rmg_bh_drop_shot);
	val.check("TEST_VALUE","Net Game, forehand volley",e.rmg_net_fh_volley);
	val.check("TEST_VALUE","Net Game, backhand volley",e.rmg_net_bh_volley);
	val.check("TEST_VALUE","Net Game, forehead overhead",e.rmg_net_fh_overhead);
	val.check("TEST_VALUE","Net Game, backhand overhead",e.rmg_net_bh_overhead);
	val.check("TEST_VALUE","Net Game, forehead drop shot",e.rmg_net_fh_drop_shot);
	val.check("TEST_VALUE","Net Game, backhand drop shot",e.rmg_net_bh_drop_shot);
	val.check("TEST_VALUE","Serve, non-directional",e.rmg_serve_non_directional);
	val.check("TEST_VALUE","Serve, center line",e.rmg_serve_center_line);
	val.check("TEST_VALUE","Serve, wide",e.rmg_serve_wide);
	val.check("TEST_VALUE","Serve, slice",e.rmg_serve_slice);
	val.check("TEST_VALUE","Serve, kick",e.rmg_serve_kick);

	return val.report();
}


