function validateRadio( elems, cssclass ) {
    var selected = false;
    for(i=0; i < elems.length; ++i ) {
        if ( elems[i].checked ) {
            selected = true;
            break;
        }
    }
    var error = $('fieldset.'+cssclass+' .error')
    if ( selected ) {
        error.css({display:'none'});
    } else {
        error.css({display:'block'});
        return false;
    }
    return true;
}

function validateDOB() {
    var valid = true;
    var dayElem = document.regform.dobday
    var monthElem = document.regform.dobmonth
    var yearElem = document.regform.dobyear
    if ( ! dayElem.value ) {
        valid = false;
    }
    if ( ! monthElem.value ) {
        valid = false;
    }
    if ( ! yearElem.value ) {
        valid = false;
    }
    var dob = new Date();
    dob.setDate( dayElem.value )
    dob.setMonth( monthElem.value )
    dob.setFullYear( yearElem.value )
    var dobTime = dob.getTime()
    var nowTime = new Date().getTime()

    if ( nowTime-dobTime < 60*60*24*365.25*1000*18 ) {
        valid = false;
    }

    var error = $('fieldset.dob .error')
    if ( valid ) {
        error.css({display:'none'});
    } else {
        error.css({display:'block'});
    }

    return valid;
}

function validateMobile() {
    var elem = document.regform.mobile
    var valid = true;
    if ( ! elem.value ) {
        valid = false
    } else {
        if ( elem.value.length < 11 ) {
            valid = false;
        }
    }

    var error = $('.row.mobile .error')
    if ( valid ) {
        error.css({display:'none'});
    } else {
        error.css({display:'block'});
    }

    return valid;
}

function validatePostcode() {
    var elem = document.regform.postcode
    var valid = true;
    if ( elem.value ) {
        if ( elem.value.length != 5 ) {
            valid = false;
        }
    }

    var error = $('.row.postcode .error')
    if ( valid ) {
        error.css({display:'none'});
    } else {
        error.css({display:'block'});
    }

    return valid;
}

function validateTerms() {
    var elem = document.regform.terms
    var valid = true;
    if ( ! elem.checked ) {
        valid = false
    }

    var error = $('.row.terms .error')
    if ( valid ) {
        error.css({display:'none'});
    } else {
        error.css({display:'block'});
    }

    return valid;
}

function validateAndSubmit() {
    var valid = true;
    var genders = document.regform.gender
    if ( ! validateRadio( genders, 'gender' ) ) {
        valid = false;
    }
    var flirts = document.regform.flirt
    if ( ! validateRadio( flirts, 'flirt' ) ) {
        valid = false;
    }
    if ( ! validateDOB() ) {
        valid = false;
    }
    if ( ! validateMobile() ) {
        valid = false;
    }
    if ( ! validatePostcode() ) {
        valid = false;
    }
    if ( ! validateTerms() ) {
        valid = false;
    }
    return valid;
}


// ------------ Photo Upload -------------

function validateUsername() {
    var elem = document.upload.user
    var valid = true;
    if ( ! elem.value ) {
        valid = false
    } else {
        if ( elem.value.length < 11 ) {
            valid = false;
        }
    }

    var error = $('.row.user .error')
    if ( valid ) {
        error.css({display:'none'});
    } else {
        error.css({display:'block'});
    }

    return valid;
}

function validatePassword() {
    var elem = document.upload.pwd
    var valid = true;
    if ( ! elem.value ) {
        valid = false
    }

    var error = $('.row.pwd .error')
    if ( valid ) {
        error.css({display:'none'});
    } else {
        error.css({display:'block'});
    }

    return valid;
}

function validatePhoto() {
    var elem = document.upload.photo
    var valid = true;
    if ( ! elem.value ) {
        valid = false
    }

    var error = $('.row.photo .error')
    if ( valid ) {
        error.css({display:'none'});
    } else {
        error.css({display:'block'});
    }

    return valid;
}


function validateAndSubmitPhoto() {
    var valid = true;
    if ( ! validateUsername() ) {
        valid = false;
    }
    if ( ! validatePassword() ) {
        valid = false;
    }
    if ( ! validatePhoto() ) {
        valid = false;
    }
    if ( valid ) {
        document.upload.redirecterr.value += "&user=" + document.upload.user.value;
    }
    return valid;
}

// -------------------- forgot password ------------------

function validateUsername2() {
    var elem = document.forgot.user
    var valid = true;
    if ( ! elem.value ) {
        valid = false
    } else {
        if ( elem.value.length < 11 ) {
            valid = false;
        }
    }

    var error = $('.row.user .error')
    if ( valid ) {
        error.css({display:'none'});
    } else {
        error.css({display:'block'});
    }

    return valid;
}

function validateAndSubmitForgot() {
    var valid = true;
    if ( ! validateUsername2() ) {
        valid = false;
    }
    return valid;
}


// --------------------- email friends -----------------------

function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

function validateFrom() {
    var elem = document.invite.from
    var valid = true;
    if ( ! elem.value || trim(elem.value, ' ')=='' ) {
        valid = false
    }

    var error = $('.row.from .error')
    if ( valid ) {
        error.css({display:'none'});
    } else {
        error.css({display:'block'});
    }

    return valid;
}

function validateTo() {
    var elems = document.invite.to
    var valid = false;
    
    for ( var idx in elems ) {
        var elem = elems[idx];
        if ( elem.value && trim( elem.value, ' ' ) ) {
            valid = true;
            break;
        }
    }

    var error = $('.row.to .error')
    if ( valid ) {
        error.css({display:'none'});
    } else {
        error.css({display:'block'});
    }
    
    return valid;
}

function validateAndSubmitEmailFriends() {
    var valid = true;
    if ( ! validateTo() ) {
        valid = false;
    }
    if ( ! validateFrom() ) {
        valid = false;
    }
    return valid;
}
