// This js will automatically require fname,lname (if they are in the form) and email
// Additionally, it will require all fields sent as a comma-delimited list for
// the value of a field "required" 
// The fields which may be in "required" are:
// address,address2,city,state,zip,country,timezone
// If any other fields are in the form, and should be required, the field names
// should be sent in the field "required_mf" (more fields) and a description
// of each, for the alert, should be sent in the same order in  the field
// "required_desc" The values of required_mf and required_desc should
// be comma-delimited lists, in the same order.

// get rid of dashes, spaces, etc, from cc or bank numbers
/////////////////////////////////////////////////
function makeNum(string) {
	return string.replace(/\D/g,'');
} 

function check_email(e) {
	ok = "1234567890qwertyuiop[]asdfghjklzxcvbnm.@-_QWERTYUIOPASDFGHJKLZXCVBNM";

	for(i=0; i < e.length ;i++){
		if(ok.indexOf(e.charAt(i))<0){ 
			return false;
		}	
	} 

	// Newer browsers
	if (document.images) {
		re = /(@.*@)|(\.\.)|(^\.)|(^@)|(@$)|(\.$)|(@\.)/;
		re_two = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
		if (re.test(e) || !re_two.test(e)) {
			return false;
		} 
	// Older Browsers
	} else {

		var myAtSymbolAt = e.indexOf('@');
		var myLastDotAt = e.lastIndexOf('.');
		var mySpaceAt = e.indexOf(' ');
		var myLength = e.length;

		// at least one @ must be present and not before position 2
		// @yellow.com : NOT valid
		// x@yellow.com : VALID

		if (myAtSymbolAt < 1 ) {
			return false;
		}

		// at least one . (dot) afer the @ is required
		// x@yellow : NOT valid
		// x.y@yellow : NOT valid
		// x@yellow.org : VALID

		if (myLastDotAt < myAtSymbolAt) {
			return false;
		}

		// at least two characters [com, uk, fr, ...] 
		//   must occur after the last . (dot), but not more than 4
		// x.y@yellow. : NOT valid
		// x.y@yellow.a : NOT valid
		// x.y@yellow.ca : VALID

		if (myLength - myLastDotAt <= 2 || myLength - myLastDotAt >= 4) {
			return false;
		}

		// no empty space " " is permitted (one may trim the email)
		// x.y@yell ow.com : NOT valid

		if (mySpaceAt != -1) {
			return false;
		}
	}
	return true;
}

function verifyFlash(flfname,fllname,flemail,flcemail,flevephone,fladdress,flcity,flstate,flzip,flsendto) {
	document.signupform.fname.value = flfname;
	document.signupform.lname.value = fllname;
	document.signupform.email.value = flemail;
	document.signupform.cemail.value = flcemail;
	document.signupform.evephone.value = flevephone;
	document.signupform.address.value = fladdress;
	document.signupform.city.value = flcity;
	document.signupform.state.value = flstate;
	document.signupform.zip.value = flzip;

	sendto(document.signupform,flsendto);
}

function sendto(frm,loc) {
	if (loc == 1) {
		frm.sendto.value = frm.sendto1.value;
	} 
	if (loc == 2) {
		frm.sendto.value = frm.sendto2.value;
	} 
	if (loc == 3) {
		frm.sendto.value = frm.sendto3.value;
	} 
	if (loc == 4) {
		frm.sendto.value = frm.sendto4.value;
	}
	verify(frm,'no');

}

function verify(frm) {
	var req;
	if (frm.required) {
		req = frm.required.value;
	}
	if (frm.fname) {
		if (frm.fname.value == '') {
			alert('No ha suministrado su primer nombre.');
			frm.fname.focus();
			return false;
		}
		if (frm.fname.value.length > 50) {
			alert('Su primer nombre no deberá tener más de 50 caracteres.');
			frm.fname.focus();
			return false;
		}
	}
	if (frm.fname) {
		if (frm.lname.value == '') {
			alert('No ha suministrado su apellido.');
			frm.lname.focus();
			return false;
		}
		if (frm.lname.value.length > 50) {
			alert('Su apellido no deberá tener más de 50 caracteres.');
			frm.lname.focus();
			return false;
		}
	}
	if (frm.email.value == '') {
		alert('No ha suministrado su dirección de correo electrónico.');
		frm.email.focus();
		return false;
	}
	if (!check_email(frm.email.value)) {
		alert('No ha suministrado su dirección de correo electrónico válida.');
		frm.email.focus();
		return false;
	}	
	if (frm.cemail) {
		if (/cemail/.test(req) && frm.cemail.value == '') {
			if (frm.cemail.value == '') {
				alert('No ha verificado su dirección de correo electrónico.');
				frm.cemail.focus();
				return false;
			}
		}
		if (frm.cemail.value != frm.email.value) {
			alert('La dirección de correo electrónico no son iguales.');
			frm.email.focus();
			return false;
		}
	}
	if (frm.dayphone) {
		var phone = '';
		if (frm.evephone) {
			phone = ' de contacto';
		}
		if (/dayphone/.test(req) && frm.dayphone.value == '') {
			alert('No ha suministrado un número de teléfono' + phone + '.');
			frm.dayphone.focus();
			return false;
		}
		if (frm.dayphone.value != '') {
			if (/[^\(\)\+\-0-9\s]/.test(frm.dayphone.value)) {
				alert('Su número de teléfono' + phone + ' solo puede contener números ' +
					'( ) – y espacios.');
				frm.dayphone.focus();
				return false;
			}
			var checkDayPhone = makeNum(frm.dayphone.value);
			if (checkDayPhone.length < 10) {
				alert('Debe de suministrar, por lo menos, 10 dígitos por su teléfono' 
					+ phone + '.');
				frm.dayphone.focus();
				return false;
			}
		}
	}
	if (frm.evephone) {
		var phone = '';
		if (frm.dayphone) {
			phone = ' de tardes';
		}
		if (/evephone/.test(req) && frm.evephone.value == '') {
			alert('No ha suministrado un número de teléfono' + phone + '.');
			frm.evephone.focus();
			return false;
		}
		if (frm.evephone.value != '') {
			if (/[^\(\)\+\-0-9\s]/.test(frm.evephone.value)) {
				alert('Su número de teléfono' + phone + ' solo puede contener números ' +
					'( ) – y espacios.');
				frm.evephone.focus();
				return false;
			}
			var checkEvephone = makeNum(frm.evephone.value);
			if (checkEvephone.length < 10) {
				alert('Debe de suministrar, por lo menos, 10 dígitos por su teléfono' 
					+ phone + '.');
				frm.evephone.focus();
				return false;
			}
		}
	}
	if (frm.address) {
		if (/address/.test(req) && frm.address.value == '') {
			alert('No ha suministrado su dirección.');
			frm.address.focus();
			return false;
		}
		if (frm.address.value.length > 60) {
			alert('Su dirección solo puede tener 60 caracteres.');
			frm.address.focus();
			return false;
		}
	}
	if (frm.address2) {
		if (frm.address2.value.length > 60) {
			alert('La segunda línea de su dirección solo puede tener 60 caracteres.');
			frm.address2.focus();
			return false;
		}
	}
	if (frm.city) {
		if (/city/.test(req) && frm.city.value == '') {
			alert('No ha suministrado su ciudad.');
			frm.city.focus();
			return false;
		}
		if (frm.city.value.length > 40) {
			alert('Su ciudad solo puede tener 40 caracteres.');
			frm.city.focus();
			return false;
		}
	}
	if (frm.state) {
		if (/state/.test(req)) {
			if (frm.typestate) {
				if (frm.selectstate.selectedIndex == 0 && frm.typestate.value == '') {
					alert('Usted no ha seleccionado o suministrado su estado.');
					frm.selectstate.focus();
					return false;
				}
			} else {
				if (frm.selectstate.selectedIndex == 0) {
					alert('Usted no ha seleccionado su estado.');
					frm.selectstate.focus();
					return false;
				}
			}
		}
		if (frm.typestate) {
			if (frm.typestate.value != '') {
				if (frm.typestate.value.length > 40) {
					alert('Su estado solo puede tener 40 caracteres.');
					frm.typestate.focus();
					return false;
				}
				frm.state.value = frm.typestate.value;
			} else {
				frm.state.value = 
					frm.selectstate.options[frm.selectstate.selectedIndex].value;
			}
		} else {
			frm.state.value = 
				frm.selectstate.options[frm.selectstate.selectedIndex].value;
		}
	}
	if (frm.zip) {
		if (/zip/.test(req) && frm.zip.value == '') {
			alert('Usted no ha suministrado su código postal.');
			frm.zip.focus();
			return false;
		}
		if (frm.zip.value.length > 20) {
			alert('Su código postal solo puede tener 20 caracteres.');
			frm.zip.focus();
			return false;
		}
	}
	if (frm.country) {
		if (/country/.test(req) && frm.country.selectedIndex == 0) {
			alert('Usted no ha seleccionado su país.');
			frm.country.focus();
			return false;
		}
	}
	if (frm.timezone) {
		if (/timezone/.test(req) && frm.timezone.selectedIndex == 0) {
			alert('Usted no ha seleccionado su zona del tiempo.');
			frm.timezone.focus();
			return false;
		}
	}
	if (frm.required_mf) {
		var reqAry = new Array();
		reqAry = frm.required_mf.value.split(",");
		var descAry = new Array();
		descAry = frm.required_desc.value.split(",");
		for (i = 0; i < frm.elements.length; i++) {
			for (j = 0; j < reqAry.length; j++) {
				if (reqAry[j] == frm.elements[i].name && frm.elements[i].value == '') {
					var dowhat = (/select/.test(frm.elements[i].type)) 
						? 'Seleccionar' : 'Suministrar';
					alert('Favor de ' + dowhat + ' "' + descAry[j] + '"');
					frm.elements[i].focus();
					return false;
				}
			}
		}
	}
	if (frm.submitted.value == 1) {
		validate = confirm('Usted ya oprimió "enviar."\n\n' + 
			'Si está tratando luego de un error, oprima "OK."\n\n' +
			'Si oprimió dos veces por error, oprima "Cancelar."');
		if (validate == false) {
			return false;
		}
	}
	frm.submitted.value = 1;
	if (frm.subbutton) {
		frm.subbutton.disabled=true;
	}
	frm.submit();
	return true;
}
