String.prototype.trim=function(){
    return this.replace(/^\s*|\s*$/g,'');
}

function validate(form_name)
{
  return validate_elements(form_name);
}

function validate_elements(form_name)
{
  for (var i = 0; i<form_name.elements.length; i++)
  {
    if(form_name.elements[i].getAttribute('validate'))
    {
      switch(form_name.elements[i].type)
      {
        case 'text': case 'textarea': case 'password':
        if(form_name.elements[i].value=='')
        {
          alert("Please enter a value for: "+form_name.elements[i].name);
          return false;
        }
	if(form_name.elements[i].name.substr(form_name.elements[i].name.length-4)=='date')
	{
	  var cd = form_name.elements[i].value.trim();
	  var d = Number(cd.substring(0,2));
	  var ds = cd.substring(2,3);
	  var m = Number(cd.substring(3,5));
	  var ms = cd.substring(5,6);
	  var y = Number(cd.substring(6));
	  if(ds!='/' || ms!='/' || d<1 || d>31 || m<1 || m>12 || y<2007 || y>2010)
	  {
            alert("Please enter a valid date.");
            return false;
	  }
	}
        break;
	case 'checkbox':
		var el_name = form_name.elements[i].getAttribute('name');
		if(el_name=='category1')
		{
			var cat1 = document.getElementById('category1');
			var cat2 = document.getElementById('category2');
			var cat3 = document.getElementById('category3');
			if(!cat1.checked && !cat2.checked && !cat3.checked)
			{
      			    alert("Please choose at least one category.");
      			    return false;
			}
		}
		else if(el_name=='confirm')
		{
			var conf = document.getElementById('confirm');
			if(!conf.checked)
			{
      			    alert("Please confirm you are a BMEspark member.");
      			    return false;
			}
		}
		break;
        case 'radio':
        radio_choice = false;

        el_name = form_name.elements[i].getAttribute('name');
        for(var j=0; j<form_name.eval(el_name).length; j++)
        {
          if(form_name.eval(el_name)[j].checked)
          {
            radio_choice = true;
          }
        }
        if(!radio_choice)
        {
          alert("Please enter a value for: "+form_name.elements[i].name);
          return false;
        }
        break;
	case 'select-one':
	if(form_name.elements[i].value==0)
	{
          alert("Please choose an option for: "+form_name.elements[i].name);
          return false;
	}
	break;
      }
    }
  }

  //check for valid email
  var email = document.getElementById('email');
  if(!validEmailAddress(email.value))
  {
    alert('Email address is not valid');
    return false;
  }
    
  var email1 = document.getElementById('email1');
  if(email1 && email.value!=email1.value)
  {
    alert('E-mails do not match');
    return false;
  }

  //check for valid password
  var pword1 = document.getElementById('password1');
  var pword2 = document.getElementById('password2');
  if(pword1 && pword1.value.length<7)
  {
    alert('Password must be at least 7 characters long');
    pword1.value = pword2.value = '';
    return false;
  }
  else if(pword1 && pword1.value!=pword2.value)
  {
    alert('Passwords do not match');
    pword1.value = pword2.value = '';
    return false;
  }

  return true;
}

function checkEmail()
{
	var reply = "";
	var email = document.getElementById('email');
	if(!validEmailAddress(email.value))
	{
		reply = "Email address is not valid. ";
	}

	if(reply!="")
	{
		alert(reply);
		return;
	}
	else
	{
		processSendPage();
	}
}

function validEmailAddress(email)
{
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (filter.test(email))
	{
		return true;
	}
	else
	{
		return false;
	}
}

function checkDate(el)
{
  var txt = document.getElementById(el);

  var cd = txt.value.trim();
  var d = Number(cd.substring(0,2));
  var ds = cd.substring(2,3);
  var m = Number(cd.substring(3,5));
  var ms = cd.substring(5,6);
  var y = Number(cd.substring(6));
  if(ds!='/' || ms!='/' || d<0 || d>31 || m<0 || m>12 || (y!=0000 && y<1800 && y>2200))
  {
    alert("Please enter a valid date.");
    return false;
  }
  else
  {
    return true;
  }
}
