function isFilled(field)
{
    with (field)
    {
        if (value==null||value==""){  return false;  }
        else{  return true;  }
    }
}
function isZip(field)
{
    return true;
}
function min_max(field_min,field_max)
{
    if(field_min.options[field_min.selectedIndex].innerHTML > field_max.options[field_max.selectedIndex].innerHTML)
        { return false; }
    else{  return true; }
}
function isEqual(field_address,field_address_retype)
{
    if(field_address.value == field_address_retype.value)
        { return false; }
    else{  return true; }
}
function isLegalAge(field_dopm,field_dopd,field_dopy)
{
    if(field_dopm==0||field_dopd==0||field_dopy==0)
    {
        return false;
    }
    var now = new Date();
    var dob = new Date(field_dopm+" "+field_dopd+", "+field_dopy);
    var count= Math.floor( (now.getTime() - dob.getTime())/31536000000) //1 year = 31536000 ms
    //dob=new Date(now - dob);
    //var count = dob.getYear();
    if(count > 17)
        { return false; }
    else{  return true; }
}
function isEmail(str)
{
    var at="@"
    var dot="."
    var lat=str.indexOf(at)
    var lstr=str.length
    var ldot=str.indexOf(dot)
    if (str.indexOf(at)==-1){
       return false
    }

    if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
       return false
    }

    if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
        return false
    }

     if (str.indexOf(at,(lat+1))!=-1){
        return false
     }

     if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
        return false
     }

     if (str.indexOf(dot,(lat+2))==-1){
        return false
     }
    
     if (str.indexOf(" ")!=-1){
        return false
     }

     return true;
}
function isPassword(field)
{
    var illegalChars = / /;
    // allow only letters, numbers, and underscores
    if (illegalChars.test(field.value)) {  return false;  }

    if(field.value.length<3 || field.value.length>31) {  return false;  }
    return true;
}
function isNickName(field)
{
    var illegalChars = /\W/;
    // allow only letters, numbers, and underscores
    if (illegalChars.test(field.value)) {  return false;  }
    if(field.value.length<3 || field.value.length>13) {  return false;  }

    return true;
}
function validate_profile(thisform)
{
    var return_value=true;
    var alerttxt="";
    with(thisform)
    {
        if (isFilled(city)==false)
        {  
            city.focus();
            alerttxt +="*Please select or type in a city.\n";
            return_value=false;  
        }
        if (isFilled(email_address)==false || isFilled(email_address_retype)==false)
        {  
            email_address.focus();
            alerttxt +="*Please enter an email address.\n";
            return_value=false;  
        }
        else if (isEqual(email_address,email_address_retype))
        {  
            email_address.focus();
            alerttxt +="*Your email address, and re-typed email address are not the same. Please try again.\n";
            return_value=false;  
        }
        else if (!isEmail(email_address.value))
        {
            alerttxt +="*Invalid e-mail address\n";
            email_address.focus();
            return_value=false;;
        }
        if (isLegalAge(dob_mm.options[dob_mm.selectedIndex].innerHTML,dob_dd.options[dob_dd.selectedIndex].innerHTML,dob_yyyy.options[dob_yyyy.selectedIndex].innerHTML))
        {
            alerttxt +="*Date of birth is required. You must be 18 years of age or older to use mate1.com\n";
            dob_mm.focus();
            return_value=false;
        }
        if (isFilled(password)==false)
        {  
            password.focus();
            alerttxt +="*Password must be between 3 and 32 characters(without space) in length and no space.\n";
            return_value=false;  
        }
        else if(isPassword(password)==false)
        {  
            password.focus();
            alerttxt +="*Password must be between 3 and 32 characters(without space) in length and no space.\n";
            return_value=false;  
        }
        else if(isEqual(password,password_retype))
        {
            password.focus();
            alerttxt +="*Your password, and re-typed password do not match.\n";
            return_value=false;  
        }
        if (isFilled(name_nick)==false)
        {  
            name_nick.focus();
            alerttxt +="*Please enter a valid nickname. Your nickname may contain only letters, numbers, and underscores. It must be between 3 and 14 characters long.\n";
            return_value=false;  
        }
        else if(isNickName(name_nick)==false)
        {
            name_nick.focus();
            alerttxt +="*Please enter a valid nickname. Your nickname may contain only letters, numbers, and underscores. It must be between 3 and 14 characters long.\n";
            return_value=false;  
        }
        
        if(!return_value)
        {
            alert(alerttxt);
            return false;
        }
        return true;        
    }
}
function validate_landing(thisform)
{
    var return_value=true;
    var alerttxt="";
    with (thisform)
    {
        //name = zipcode, I like to change as little as possible to the file
        //because this could be used from some where else
        /*if (isFilled(zip_postal)==false)
        {  
            zip_postal.focus();
            alerttxt="*Please enter a zipcode.\n";
            return_value=false;  
        }
        else if (isZip(zip_postal)==false)
        {  
            zip_postal.focus();
            alerttxt +="*Please enter a valid zipcode (5, 7 or 9 numbers, i.e 12345-3456 or A1B 2C3)\n";
            return_value= false;  
        }*/
        if (min_max(looking_min_age, looking_max_age)==false)
        {  
            looking_min_age.focus();
            alerttxt +="*Minimum age is higher than maximum age\n";
            return_value= false;  
        }
        if(!return_value)
        {
            alert(alerttxt);
            return false;
        }
        return true;
    }
}