function validateme(form)
{
	ErrorCount = 0;
	ErrorMsg = new Array();
	ErrorMsg[0] = "------------------------- The Following Errors Occured -------------------------";
	
	ctrl_focus = false

/*		NOT IN USE
	//--------------
	// look country
	//--------------
	if (flag_accept_lookcountry == 'Y')
	{
		if (flag$config.accept_city == 'Y')
		{
			CheckFieldString("text", form.lookcity, "{lang mkey='signup_js_errors' skey='address_charset'}");
		}
		if (flag_accept_zipcode == 'Y')
		{
			CheckFieldString("alphanumeric", form.lookzip, "{lang mkey='signup_js_errors' skey='address_charset'}");
		}
	}
*/

	//-----------
	// firstname
	//-----------
	CheckFieldString("noblank", form.firstname, err_firstname_required);
	
	if (form.firstname.value.length > 0)
	{
		CheckFieldString("name", form.firstname, err_firstname_invalid_char);
		CheckFieldString(50, form.firstname, err_firstname_too_long);
	}
	
	//-----------
	// birthdate or age
	//-----------
	if (flag_enter_age == 'Y' && action == 'signup')
	{
		CheckFieldString("noblank", form.age, err_age_required);
	}
	else
	{
		var year1	= form.birthYear.value;
		var month1	= form.birthMonth.value - 1;
		var day1	= form.birthDay.value;
		var tempDate = new Date(year1, month1, day1);
		var year2	= tempDate.getFullYear();
		var month2	= tempDate.getMonth();
		var day2	= tempDate.getDate();
		
		if (year1 != year2 || month1 != month2 || day1 != day2)
		{
			ErrorCount++;
			ErrorMsg[ErrorCount] = err_birthdate_invalid;
			if (ErrorCount == 1) form.birthMonth.focus();
		}
	}

	//-----------
	// sex
	//-----------
	CheckFieldString("radio", form.gender, err_gender_required);
	
	//-----------
	// education
	//-----------
	if (flag_education_signup == 'Y' || action != 'signup')
	{
		CheckFieldString("noblank", form.education, err_education_required);
	}

	//-------------
	// looking for
	//-------------
	var dummy = null;
	var fld = form['lookfor[]'];

	for (i=0; i < fld.length; i++)
	{
		if (fld[i].checked)
		{
			dummy = i;
			break;
		}
	}
	
	if (dummy == null && form.lookfor_activity_cb.checked == false) 
	{
		ErrorCount++;
		ErrorMsg[ErrorCount] = err_lookfor_required;
		if (ErrorCount == 1) fld[0].focus();
	}

	if (form.lookfor_activity_cb.checked)
	{
		CheckFieldString("noblank", form.lookfor_activity, err_lookfor_activity_required);
	}

	//----------
	// look sex
	//----------
	CheckFieldString("checkbox", form['lookgender[]'], err_lookgender_required);

	//----------
	// look age
	//----------
	agestart = form.lookagestart.value - 0;
	ageend = form.lookageend.value - 0;
	if (agestart > ageend)
	{
		ErrorCount++;
		ErrorMsg[ErrorCount] = err_lookage_start_after_end;
		if (ErrorCount == 1) form.lookageend.focus();
	}
	
	//----------
	// look education
	//----------
	if (flag_lookeducation_signup == 'Y' || action != 'signup')
	{
		CheckFieldString("checkbox", form['lookeducation[]'], err_lookeducation_required);
	}

	//--------------------
	// country
	//--------------------
	if (flag_accept_country == 'Y')
	{
		if (flag_country_mandatory == 'Y')
		{
			CheckFieldString("noblank", form.country, err_country_required);
		}
	}

	//--------------------
	// phone country code
	//--------------------
	CheckFieldString("noblank", form.phone_country, err_phone_country_required);

	if (form.phone_country.value.length > 0)
	{
		CheckFieldString("phone", form.phone_country, err_phone_country_invalid);
		CheckFieldString(max_phone_country_len, form.phone_country, err_phone_country_too_long);
	}

	//-----------------
	// phone area code
	//-----------------
	if (form.phone_area.value.length > 0)
	{
		CheckFieldString("phone", form.phone_area, err_phone_area_invalid);
		CheckFieldString(max_phone_area_len, form.phone_area, err_phone_area_too_long);
	}

	//--------------
	// phone number
	//--------------
	CheckFieldString("noblank", form.phone_number, err_phone_number_required);

	if (form.phone_number.value.length > 0)
	{
		CheckFieldString("phone", form.phone_number, err_phone_number_invalid);
		CheckFieldString(-4, form.phone_number, err_phone_number_too_short);
		CheckFieldString(max_phone_number_len, form.phone_number, err_phone_number_too_long);
	}

	//----------
	// username
	//----------
	if (flag_username_signup == 'Y' || action != 'signup')
	{
		CheckFieldString("noblank", form.username, err_username_required);

		if (form.username.value.length > 0)
		{
			CheckFieldString("username", form.username, err_username_invalid_char);
			CheckFieldString(-min_username_len, form.username, err_username_too_short);
			CheckFieldString(max_username_len, form.username, err_username_too_long);
		}
	}	

	//----------
	// password
	//----------
	if (action == 'signup')
	{	
		CheckFieldString("noblank", form.password, err_password_required);

		if (form.password.value.length > 0)
		{
			CheckFieldString("password", form.password, err_password_invalid_char);
			CheckFieldString(-min_pass_len, form.password, err_password_too_short);
			CheckFieldString(max_pass_len, form.password, err_password_too_long);
		}
		
		CheckFieldString("noblank", form.password2, err_password2_required);

		if (form.password2.value.length > 0)
		{
			CheckFieldString("password", form.password2, err_password2_invalid_char);
			CheckFieldString(-min_pass_len, form.password2, err_password2_too_short);
			CheckFieldString(max_pass_len, form.password2, err_password2_too_long);
		}
		
		if (form.password.value != form.password2.value)
		{
			ErrorCount++;
			ErrorMsg[ErrorCount] = err_passwords_different;
			if (ErrorCount == 1) form.password2.focus();
		}
	}
	
	//-------
	// email
	//-------
	CheckFieldString("noblank", form.email, err_email_required);

	if (form.email.value.length > 0)
	{
		CheckFieldString("email", form.email, err_email_invalid);
		CheckFieldString(max_email_len, form.email, err_email_too_long);
	}

	//--------------------
	// country to zipcode
	//--------------------
	if (flag_accept_country == 'Y')
	{
		// moved up before phone
		//if (flag_country_mandatory == 'Y')
		//{
		//	CheckFieldString("noblank", form.country, err_country_required);
		//}
		
		if (flag_accept_state == 'Y')
		{
			if (flag_state_signup == 'Y' || action != 'signup')
			{
				if (flag_state_mandatory == 'Y')
				{
					CheckFieldString("noblank", form.state, err_state_required);
				}
				CheckFieldString(max_state_len, form.state, err_state_too_long);
			}
		}
		
		if (flag_accept_county == 'Y')
		{
			if (flag_county_signup == 'Y' || action != 'signup')
			{
				if (flag_county_mandatory == 'Y')
				{
					CheckFieldString("noblank", form.county, err_county_required);
				}
				CheckFieldString(max_county_len, form.county, err_county_too_long);
			}
		}
		
		if (flag_accept_city == 'Y')
		{
			if (flag_city_signup == 'Y' || action != 'signup')
			{
				if (flag_city_mandatory == 'Y')
				{
					CheckFieldString("noblank", form.city, err_city_required);
				}
				CheckFieldString(max_city_len, form.city, err_city_too_long);
			}
		}
		
		if (flag_accept_zipcode == 'Y')
		{
			if (flag_zipcode_signup == 'Y' || action != 'signup')
			{
				if (flag_zipcode_mandatory == 'Y')
				{
					CheckFieldString("noblank", form.zip, err_zip_required);
				}
				CheckFieldString(max_zip_len, form.zip, err_zip_too_long);
			}
		}
	}

	//----------
	// timezone
	//----------
	if (flag_accept_timezone == 'Y')
	{
		if (flag_timezone_signup == 'Y' || action != 'signup')
		{
			if (flag_timezone_mandatory == 'Y')
			{
				if (form.timezone.value == '-25')
				{
					ErrorCount++;
					ErrorMsg[ErrorCount] = err_timezone_invalid;
					if (ErrorCount == 1) form.timezone.focus();
				}
			}
		}
	}

	//----------------
	// carrier and phone make
	//----------------
	if (flag_carrierphone_signup == 'Y' || action != 'signup')
	{
		CheckFieldString("noblank", form.carrier_id, err_carrier_required);
		
		if (form.carrier_id.value == OTHER_ID)
		{
			CheckFieldString("noblank", form.carrier_other, err_carrier_other_required);
		}
		
		CheckFieldString("noblank", form.make_id, err_phone_make_required);
		
		if (form.make_id.value == OTHER_ID)
		{
			CheckFieldString("noblank", form.make_other, err_phone_make_other_required);
		}
	}
	
	//--------------
	// photo upload
	//--------------
	if (flag_photoupload_signup == 'Y' && action == 'signup')
	{
		// photo-upload optional as per specs 1.0.2
		// CheckFieldString("noblank", form.photo, err_photo_required);
		
		if (form.photo.value.length > 0)
		{
			var s = form.photo.value;
			if (s.slice(-4).toLowerCase() != '.jpg' && s.slice(-5).toLowerCase() != '.jpeg' && 
				s.slice(-6).toLowerCase() != '.pjpeg' && s.slice(-4).toLowerCase() != '.png' && 
				s.slice(-6).toLowerCase() != '.x-png' && s.slice(-4).toLowerCase() != '.gif')
			{
				ErrorCount++;
				ErrorMsg[ErrorCount] = err_photo_wrong_type;
				if (ErrorCount == 1) form.photo.focus();
			}
		}
	}

	//--------------
	// about me
	//--------------
	if (flag_accept_about_me == 'Y')
	{
		if (flag_about_me_signup == 'Y' || action != 'signup')
		{
			if (flag_about_me_mandatory == 'Y')
			{
				CheckFieldString("noblank", form.about_me, err_about_me_required);
			}
		}
	}
	
	//------------------
	// terms of service
	//------------------
	if (flag_tos_signup == 'Y' && action == 'signup')
	{
		if (!form.accept_tos.checked)
		{
			ErrorCount++;
			ErrorMsg[ErrorCount] = err_terms_of_service;
			if (ErrorCount == 1) form.accept_tos.focus();
		}
	}

	//----------
	// spamcode (validity can only be checked on the server)
	//----------
	if (action == 'signup')
	{
		CheckFieldString("noblank", form.spam_code, err_spamcode_required);
		
		if (form.spam_code.value.length > 0)
		{
			CheckFieldString(spam_code_length, form.spam_code, err_spamcode_too_long);
			CheckFieldString(-spam_code_length, form.spam_code, err_spamcode_too_short);
		}
	}
	
	//-------------------------------------------
	// concat all error messages into one string
	//-------------------------------------------
	result = '';
	if (ErrorCount > 0)
	{
		for (c = 0; c < ErrorMsg.length; c++)
		{
			result += ErrorMsg[c] + String.fromCharCode(10);
			if (c < 2)
			{
				result += String.fromCharCode(10);
			}
		}
		alert(result);
		// alert(ErrorMsg[1]);
		return false;
	}
	//form.submit();
	return true;
}

function lookfor_activity_onchange(fld)
{
	fld.form.lookfor_activity_cb.checked = (fld.value != '');
}

function lookfor_activity_cb_onclick(fld)
{
	if (!fld.checked)
	{
		fld.form.lookfor_activity.value = '4';
	}
}

function phone_onchange(fld)
{
	if (/[^0-9]/.test(fld.value))
	{
		alert(err_phone_number_invalid);
		fld.value = fld.value.replace(/[^0-9]/g,"");
		
		if (fld.value == '')
		{
			fld.blur();
			fld.focus();
		}
	}
	
	var frm = fld.form;
	
	document.getElementById("phone_login").innerHTML = frm.phone_country.value + frm.phone_area.value + frm.phone_number.value;
}

function phone_onkeyup(frm)
{
	frm.phone_login.value = frm.phone_country.value + frm.phone_area.value + frm.phone_number.value;
}

function carrier_onchange(fld)
{
	var frm = fld.form;
	
	if (fld.value == OTHER_ID)
	{
		frm.carrier_other.style.visibility = 'visible';
		frm.carrier_other.disabled = false;
		frm.carrier_other.className = '';
	}
	else
	{
		frm.carrier_other.style.visibility = 'hidden';
		frm.carrier_other.disabled = true;
		frm.carrier_other.className = 'input_disabled';
		frm.carrier_other.value = '';
	}
	
	//check_supported(frm);
}

function phonemake_onchange(fld)
{
	var frm = fld.form;
	
	if (fld.value == OTHER_ID)
	{
		frm.make_other.style.visibility = 'visible';
		frm.make_other.disabled = false;
		frm.make_other.className = '';
	}
	else
	{
		frm.make_other.style.visibility = 'hidden';
		frm.make_other.disabled = true;
		frm.make_other.className = 'input_disabled';
		frm.make_other.value = '';
	}

	//check_supported(frm);
}

function check_supported(frm)
{
	document.getElementById('supported').innerHTML = '<b>checking ...<\\/b>';

	script		= doc_root + 'ajax/get_supported.php';
	querystring = 'carrier_id=' + frm.carrier_id.value + '&make_id=' + frm.make_id.value;
	
	sendHTTPRequest1(script, querystring, 'get', showstatus);
}

function showstatus()
{
	if (req.readyState == READY_STATE_COMPLETE)
	{
		document.getElementById('supported').innerHTML = '<b>' + req.responseText + '<\\/b>';
	}
}
