function validateSignup(form)
{
	var reason = "";

		reason += validateEmpty(form.fname, 'First Name');
		reason += validateEmpty(form.lname, 'Last Name');
		reason += validateEmail(form.email);
		reason += validateREmail(form.remail);
		reason += matchEmail(form.email,form.remail);
		reason += validateEmpty(form.date_month, 'Month');
		reason += validateEmpty(form.date_date, 'Day');
		reason += validateEmpty(form.date_year, 'Year');
		reason += validateEmpty(form.about, 'About');
		reason += validateEmpty(form.occupation, 'Occupation');
		reason += validateEmpty(form.city, 'City');
		reason += validateEmpty(form.password, 'Password');
		reason += validateEmpty(form.rpassword, 'Retype Password');
		reason += matchPassword(form.password, form.rpassword);
						
		if (reason != "") {
			alert("Some fields need correction:\n" + reason);
		    return false;
		}

		return true;
}

function validateEmpty(fld,fldname) {
    var error = "";
 
    if (fld.value.length == 0) {
        fld.style.background = "#FFCCCC"; 
        error = fldname + " cannot be left blank.\n"
    } else {
        fld.style.background = "#FFFFFF";
    }
    return error;  
}

function validateHiddenEmpty(fld,fld2,fldname) {
    var error = "";
 
    if (fld.value.length == 0 && fld2.value.length==0) {
        fld.style.background = "#FFCCCC"; 
        error = fldname + " cannot be left blank.\n"
    } else {
        fld.style.background = "#FFFFFF";
    }
    return error;  
}

function trim(s)
{
  return s.replace(/^\s+|\s+$/, '');
}

function validateEmail(fld) {
    var error="";
    var tfld = trim(fld.value);                        // value of field with whitespace trimmed off
    var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
    var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ;
   
    if (fld.value == "") {
        fld.style.background = "#FFCCCC";
        error = "Email address cannot be left blank.\n";
    } else if (!emailFilter.test(tfld)) {              //test email for illegal characters
        fld.style.background = "#FFCCCC";
        error = "Please enter a valid email address.\n";
    } else if (fld.value.match(illegalChars)) {
        fld.style.background = "#FFCCCC";
        error = "The email address contains illegal characters.\n";
    } else {
        fld.style.background = "#FFFFFF";
    }
    return error;
}

function validateREmail(fld) {
    var error="";
    var tfld = trim(fld.value);                        // value of field with whitespace trimmed off
    var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
    var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ;
   
    if (fld.value == "") {
        fld.style.background = "#FFCCCC";
        error = "Confirm Email address cannot be left blank.\n";
    } else if (!emailFilter.test(tfld)) {              //test email for illegal characters
        fld.style.background = "#FFCCCC";
        error = "Please enter a valid email address.\n";
    } else if (fld.value.match(illegalChars)) {
        fld.style.background = "#FFCCCC";
        error = "The email address contains illegal characters.\n";
    } else {
        fld.style.background = "#FFFFFF";
    }
    return error;
}

function matchEmail(email,remail)
{
	var error="";
	if(email.value!=""&& remail.value!="")
	{
	if(email.value!=remail.value)
	{
		remail.style.background = "#FFCCCC";
		email.style.background = "#FFCCCC";
        error = "Emails are not matching.\n";
    }
    else 
    {
        remail.style.background = "#FFFFFF";
        email.style.background = "#FFFFFF";
    }
    }
      return error;
} 

function matchPassword(password,rpassword)
{
	var error="";
	if(password.value!=""&& rpassword.value!="")
	{
	if(password.value!=rpassword.value)
	{
		rpassword.style.background = "#FFCCCC";
		password.style.background = "#FFCCCC";
        error = "Passwords are not matching.\n";
    }
    else 
    {
        rpassword.style.background = "#FFFFFF";
        password.style.background = "#FFFFFF";
    }
    }
      return error;
}