

function popup(mylink, windowname, opts) {
	if (! window.focus)
		return true;
	var href;
	
	if (typeof(mylink) == 'string')
	   href=mylink;
	else
	   href=mylink.href;
	//opts = 'width=500,height=400,scrollbars=no,left=300,top=150';
	w = window.open(href, windowname, opts);
	w.opener = self;

	return false;
}


/** Form Validation
 * Use in the following way:
 * 
 * <form onsubmit="MM_Validate( 	name, '', rules,
					name, '', rules,
					....
				)">
 * Where:
 * - name is the id of the form object to be validated
 * - rules is of the following format:
 * - [R][[isEmail]|[inRangei:j]]
 *
 */
function isEmailAddr(email)
{
  var result = false;
  var theStr = new String(email);
  var index = theStr.indexOf("@");
  if (index > 0)
  {
    var pindex = theStr.indexOf(".",index);
    if ((pindex > index+1) && (theStr.length > pindex+1))
	result = true;
  }
  return result;
}

function validRequired(formField,fieldLabel)
{
	var result = true;
	
	if (formField.value == "")
	{
		alert('Please enter a value for the "' + fieldLabel +'" field.');
		formField.focus();
		result = false;
	}
	
	return result;
}

function allDigits(str)
{
	return inValidCharSet(str,"0123456789 ()-EeXxTt*.");
}

function inValidCharSet(str,charset)
{
	var result = true;

	// Note: doesn't use regular expressions to avoid early Mac browser bugs	
	for (var i=0;i<str.length;i++)
		if (charset.indexOf(str.substr(i,1))<0)
		{
			result = false;
			break;
		}
	
	return result;
}

function validEmail(formField,fieldLabel,required)
{
	var result = true;
	
	if (required && !validRequired(formField,fieldLabel))
		result = false;

	if (result && ((formField.value.length < 3) || !isEmailAddr(formField.value)) )
	{
		alert("Please enter a complete email address in the form: yourname@yourdomain.com");
		formField.focus();
		result = false;
	}
   
  return result;

}

function validNum(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result)
 	{
 		if (!allDigits(formField.value))
 		{
 			alert('Please enter a number for the "' + fieldLabel +'" field.');
			formField.focus();		
			result = false;
		}
	} 
	
	return result;
}


function validInt(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result)
 	{
 		var num = parseInt(formField.value);
 		if (isNaN(num))
 		{
 			alert('Please enter a number for the "' + fieldLabel +'" field.');
			formField.focus();		
			result = false;
		}
	} 
	
	return result;
}


function validDate(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result)
 	{
 		var elems = formField.value.split("/");
 		
 		result = (elems.length == 3); // should be three components
 		
 		if (result)
 		{
 			var month = parseInt(elems[0]);
  			var day = parseInt(elems[1]);
 			var year = parseInt(elems[2]);
			
result = allDigits(elems[0]) && (month > 0) && (month < 13) &&
					 allDigits(elems[1]) && (day > 0) && (day < 32) &&
					 allDigits(elems[2]) && ((elems[2].length == 2) || (elems[2].length == 4));
 		}
 		
  		if (!result)
 		{
 			alert('Please enter a date in the format MM/DD/YYYY for the "' + fieldLabel +'" field.');
			formField.focus();		
		}
	} 
	
	return result;
}

function validRadios() {
 var el = document.forms[0].elements;
 for(var i = 0 ; i < el.length ; ++i) {
  if(el[i].type == "radio") {
   var radiogroup = el[el[i].name]; // get the whole set of radio buttons.
   var itemchecked = false;
   for(var j = 0 ; j < radiogroup.length ; ++j) {
    if(radiogroup[j].checked) {
	 itemchecked = true;
	 break;
	}
   }
   if(!itemchecked) { 
    alert("Please choose an answer for "+el[i].id+".");
    if(el[i].focus)
     el[i].focus();
	return false;
   }
  }
 }
 return true;
} 


function validateForm(theForm)
{
	// Customize these calls for your form

	// Start ------->
	if (!validRequired(theForm.Nombre,"Name"))
		return false;

        if (!validRequired(theForm.Nacionalidad,"Nationality"))
		return false;

        if (!validNum(theForm.Edad,"Your Age",true))
		return false;

	if (!validEmail(theForm.email,"Email Address",true))
		return false;

	if (!validRequired(theForm.CENombre,"Contact´s Name"))
		return false;

	if (!validRequired(theForm.CERelacion,"Contact´s Relationship to You"))
		return false;

	if (!validRequired(theForm.CEPais,"Contact´s Country"))
		return false;

        if (!validNum(theForm.CETelefono,"Contact´s Telephone",true))
		return false;

	if (!validRequired(theForm.Educacion,"Education"))
		return false;

	if (!validRequired(theForm.Trabajo,"Work Experience"))
		return false;

	if (!validRequired(theForm.Cuando,"When you can volunteer"))
		return false;

        if (!validRadios(theForm.Radios,"",true))
		return false;

	// <--------- End
	
	return true;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_validateForm() { //v4.0
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  
	for (i=0; i<(args.length-2); i+=3) { 
		test=args[i+2]; 
		val=MM_findObj(args[i]);
		display=args[i+1];
		if (val) { 
			nm=val.name; 
			if ((val=val.value)!="") {
				if (test.indexOf('isEmail')!=-1) { 
					p=val.indexOf('@');
					if (p<1 || p==(val.length-1)) 
						errors+='- '+display+' must contain an e-mail address.\n';
				} 
				else if (test!='R') { 
					num = parseFloat(val);
					if (isNaN(val)) 
						errors+='- '+display+' must contain a number.\n';
					if (test.indexOf('inRange') != -1) { 
						p=test.indexOf(':');
						min=test.substring(8,p); 
						max=test.substring(p+1);
						if (num<min || max<num) 
							errors+='- '+display+' must contain a number between '+min+' and '+max+'.\n';
					} 
				} 
			} 
			else if (test.charAt(0) == 'R') 
				errors += '- '+display+' is required.\n'; 
		}
	} 
	if (errors) 
		alert('The following error(s) occurred:\n\n'+errors);
	document.MM_returnValue = (errors == '');
}
