﻿function trim( str ) {
  var match = str.match( /\S+(\s+\S+)*/ );
  return match == null ? "" : match[0];
}

function error( id, errClass ) {
  if ( !window.document || !window.document.getElementById ) return;
  var el = window.document.getElementById( id );
  if ( el == null ) alert( "Missing html element with id " + id );
  if ( el.className != "" ) errClass = el.className+" "+errClass;
  el.className = errClass;
}

function unerror( id, errClass ) {
  if ( !window.document || !window.document.getElementById ) return;
  var el = window.document.getElementById( id );
  if ( el == null ) alert( "Missing html element with id " + id );
  el.className = el.className.replace( new RegExp(errClass,"g"),"");
}


function validateByRegex( value, regex ) {



  if ( value == null || trim( value ) == ""  || !value.match(regex)) {

    // empty
    
    return false;

  } else {

    // not empty
 
    return true;

  }

}

function notEmpty( form, fieldName, errClass ) {

  var value = eval( "form."+fieldName+".value" );

  if ( value == null || trim( value ) == "" ) {

    // empty
    error( "e_"+fieldName, errClass );
    return false;

  } else {

    // not empty
    unerror( "e_"+fieldName, errClass );
    return true;

  }

}

function reportElements( elements ) {
  for ( i = 0; i < elements.length; i++ ) {
    alert( "Element " + i + " = " + elements[i].name );
  }
}

function isChecked( form, fieldName, errClass  ) {
   
  var checkbox = eval( "form."+fieldName );

  if( checkbox.checked == false ) {
    error( "e_"+fieldName, errClass );
    return false;
  } else {
    unerror( "e_"+fieldName, errClass );
    return true;
  }
}

function oneOfRangeIsChecked( elements, start, stop, fieldName, errClass  ) {
   
   var checked = false;

   for( i = start; i < stop + 1; i++ ) {
     if( elements[i].checked ) {
       checked = true;
       break;
     }
   }

   if( checked == false ) {
     error( "e_"+fieldName, errClass );
     return false;
   } else {
       unerror( "e_"+fieldName, errClass );
       return true;
   }
   return false;
}
   

function validEmailAddress( value ) {

  var re = /^[^@\s]+@[^@\.\s]+\.[^@\s]+$/;
  return validateByRegex( value, re ); 

}

function emailsAreEqual( form , email1, email2, errClass ){
  var ok = true;
  if( !valid_emailaddress ( form, email1, errClass ) ) ok = false;
  if( !valid_emailaddress ( form, email2, errClass ) ) ok =  false;
  
  if( ok == true ) {
    var email1val = eval( "form."+email1+".value" );
    var email2val = eval( "form."+email2+".value" );
    if( email1val != email2val )  {
      error( "e_"+email1, errClass );
      error( "e_"+email2, errClass );
      ok = false;
    } else {
      unerror( "e_"+email1, errClass );
      unerror( "e_"+email2, errClass );
      ok = true;
    }
  }
  
  return ok;
}


function different( form, index, fieldName1, fieldName2, errClass ) {

  var value1 = eval( "form."+fieldName1+".value" );
  var value2 = eval( "form."+fieldName2+".value" );
  if ( value1 == null || trim( value1 ) == "" || value2 == null || trim( value2 ) == "") {
    // empty
    error( "e_event"+index, errClass );
    return false;

  } else if ( value1 == value2 ){
      error( "e_event"+index, errClass );
      return false;
  } else {

    // not empty
    unerror( "e_event"+index, errClass );
    return true;

  }

}


function validDateOfBirth( form , fieldName, day, month, year, errClass ) {
  var dayvalue = eval( "form."+day+".value" );
  var monthvalue = eval( "form."+month+".value" );
  var yearvalue = eval( "form."+year+".value" );
  if ( dayvalue == null || trim( dayvalue ) == "" ||
       monthvalue == null || trim( monthvalue ) == "" ||
       yearvalue == null || trim( yearvalue ) == ""  ) {

    // empty
    error( "e_"+fieldName, errClass );
    return false;

  } else {

    // not empty
    unerror( "e_"+fieldName, errClass );
    return true;

  }
}


function validateemail(){

	var email = document.getElementById("email").value;
			
	if (validEmailAddress(email)){
		return true;	
	}
	else{
		alert("Invalid Email Address")
		return false;
	}
}
	
	
	
	function valid_SignUp(){
		var email = document.getElementById("email").value;
		var email2 = document.getElementById("confirmEmail").value;
		var interest = document.getElementById("interest").value;		
		var ok = false;
		
		var msg = "";

		if (email==""){
			msg = "Please tell us your email.\n";
		} else if (!valid_email(email)) {
			msg = "Invalid email address.\n";
		} else if (email!=email2) {
			msg = "Your email and confirmation do not match.\n";
		} else if (interest==-1){
			msg = "Please select a category";
		}

		if (msg != ""){			
			alert(msg);
		} else {
			ok = true;
		}	
		return ok;
	}
	
	function valid_email(s){	
		var ok = true;
		var at = s.indexOf("@");
		var name = s.substr(0, at);
		var dom = s.substr(at+1);
		var domdot = dom.lastIndexOf(".");
		
		var rn1 = new RegExp("[^A-Za-z0-9._-]|^[._-]");
		var rd1 = new RegExp("[^A-Za-z0-9.-]|^[.-]");

		if(name.search(rn1)!=-1) ok=false;
		if(name.length==0) ok=false;
		
		if(dom.search(rd1)!=-1) ok=false;
		if(domdot<2) ok=false;
		if(dom.length-domdot<3) ok=false;
	
		return ok;
	}
	