function validate() {
    var frm = document.userform;
    if ((frm.forename.value.indexOf('<') >= 0) || (frm.forename.value.indexOf('>') >= 0) || (frm.forename.value.indexOf('/') >= 0) || (frm.surname.value.indexOf('>') >= 0) || (frm.surname.value.indexOf('<') >= 0) || (frm.surname.value.indexOf('/') >= 0) || (frm.current_surname.value.indexOf('>') >= 0) || (frm.current_surname.value.indexOf('<') >= 0) || (frm.current_surname.value.indexOf('/') >= 0)) {
        alert("Please use alpha-numeric characters only, \n the following characters won't work <, > or / ");
        return false;
    }
    return true;
}

function checkdates() {
    var frm = document.userform;
    if ((frm.year_from.value == '') || (frm.year_from.value == '')) {
        alert("Please specify dates");
        return false;
    } else {
        return true;
    }
}

function prepareForms() {
    var i = 0;
    for (i = 0; i < document.forms.length; i++) {
        var thisform = document.forms[i];
        if (typeof thisform.onsubmit != 'function') {
            setLabels(thisform);
            thisform.onsubmit = function() {
                return validateForm(this);
            };
        }
    }
}

addLoadEvent(prepareForms);

function setLabels(whichform) {
    var i = 0;
    var j = 0;
    if (!document.getElementsByTagName) {
        return;
    }
    var labelword;
    var sElName;

    var forval;
    var sElClass;

    var sElTitle;
    var titleval;
    var forval2;
    var elemCheck;

    var lbl = document.getElementsByTagName("label");
    for (i = 0; i < whichform.elements.length; i++) {
        var element = whichform.elements[i];
        sElName = element.getAttribute("id");
        labelword = sElName;
        if (element.className.indexOf("quickregerr") != -1 && labelword != null) {
            for (j = 0; j < lbl.length; j++) {
                forval = lbl[j].getAttribute('for') ? lbl[j].getAttribute('for') : lbl[j].getAttribute('htmlFor');
                if (forval == sElName) {
                    labelword = lbl[j].childNodes[0].nodeValue;
                    if (lbl[j].className.length > 0) {
                        lbl[j].className = lbl[j].className + ' labelerr';
                    }
                    else {
                        lbl[j].className = 'labelerr';
                    }

                    break;
                }
            }

        }
    }
    return;
}

function isFilled(field) {

    if (field != null) {

        if (field.name == 'terms_check') {
            if (field.checked == false) {
                return false;
            }
        }

        if (field.name == 'gender') {
            if (field.checked == false) {
                return false;
            }
        }

        if (field.name == 'lookingfor_genderm' || field.name == 'lookingfor_genderf') {
            if (field.checked == false) {
                return false;
            }
        }

        if (field.id == "gender_swoon" || field.id == "lookingfor_gender") {
            if (field.value < 0) {
                return false;
            }
        }

        if (field.name == 'sitename') {
            if ((field.value == '') || (field.value.length < 1)) {
                return false;
            }
            else {
                if (field.value == 'eg, Matt82') {
                    return false;
                }
                return true;
            }
        }

        if (field.name == 'area_code') {
            if ((field.value == '') || (field.value.length < 1)) {
                return false;
            }
            else {
                if (field.value == 'first part only') {
                    return false;
                }
                return true;
            }
        }

        if (field.name == 'member_email') {
            if ((field.value == '') || (field.value.length < 1)) {
                return false;
            }
            else {
                if (field.value == 'No one will ever see your email address') {
                    return false;
                }
                return true;
            }
        }


        if ((field.value.length < 1) || (field.value == '-1') || (field.value == '') || (field.value == 'eg, RH14') || (field.value == 'select')) {
            return false;
        } else {
            //Town/Country is a value that is invalid!
            if (field.value != 'Town/County' && field.value != 'First name' && field.value != 'Last name' && field.value != 'Maiden name') {
                return true;

            } else {
                return false;
            }
        }
    }
    else {
        return true;
    }

}

function isChecked(field){
	return field.checked;
}

function addClass(element, newClass){
    newClass = trim(newClass);

	if (element.className.indexOf(newClass)<0){
	    if(element.className.length > 0){
	        element.className = element.className + ' ' + newClass; 
	    }
	    else{
	        element.className = newClass; 
	    }
	}
}

function removeClass(element, oldClass){
    oldClass = trim(oldClass);
	element.className = element.className.replace(oldClass, '');
}


function trim(value) {
  return value.replace(" ","");
  
}


function getFormsLables(lables, formName){
    var i = 0;
    var formLabels = new Array();
    var x = 0;
    for (i=0; i<lables.length; i++){
        if(lables[i].form.name == formName){
            formLabels[x] = lables[i];
        }
    }
    return formLabels;
}

function validateForm(whichform) {
    var i = 0;
    var j = 0;
    var k = 0;
    if (!document.getElementsByTagName) {
        return true;
    }
    var labelword;
    var forval;
    var sElClass;
    var sElName;
    var sElTitle;
    var titleval;
    var forval2;
    var elemCheck;
    var errs = '';

    var lbl = document.getElementsByTagName("label");
    //lbl = getFormsLables(lbl, whichform.name);

    // GET THE LABELS FOR THE PARTICUALR FORM

    for (i = 0; i < whichform.elements.length; i++) {
        var element = whichform.elements[i];
        sElName = element.getAttribute("id");
        labelword = sElName;

        if (element.className.indexOf("required") != -1 && labelword != null) {

            if (!isFilled(element)) {

                addClass(element, 'quickregerr');
                element.focus();

                if (element.id == "gender_swoon") {
                    jQuery('#Label1').addClass("labelerr");
                }
                if (element.id == "lookingfor_gender") {
                    jQuery('#Label2').addClass("labelerr");
                }

                for (j = 0; j < lbl.length; j++) {
                    forval = lbl[j].getAttribute('for') ? lbl[j].getAttribute('for') : lbl[j].getAttribute('htmlFor');
                    if (forval == sElName) {
                        labelword = lbl[j].childNodes[0].nodeValue;
                        addClass(lbl[j], ' labelerr');
                        break;
                    }
                    //lbl[j].style.color="black";
                }

                switch (element.id) {
                case 'terms_check':
                    errs = errs + "Please agree to the terms and conditions.\n";
                    break;
                case 'gender_swoon':
                    errs = errs + "Please select your gender.\n";
                    break;
                case 'lookingfor_gender':
                    errs = errs + "Please select the gender you're looking for.\n";
                    break;
                default:
                    errs = errs + "Please fill in the \'" + labelword + "\' field.\n";
                }

            } else if (isFilled(element)) {
                removeClass(element, 'quickregerr');

                if (element.id == "gender_swoon") {
                    jQuery('#Label1').removeClass("labelerr");
                }
                if (element.id == "lookingfor_gender") {
                    jQuery('#Label2').removeClass("labelerr");
                }

                for (j = 0; j < lbl.length; j++) {
                    forval = lbl[j].getAttribute('for') ? lbl[j].getAttribute('for') : lbl[j].getAttribute('htmlFor');
                    if (forval == sElName) {
                        removeClass(lbl[j], 'labelerr');
                        break;
                    }

                }
            }

            // fix for date of birth error in ie 7
            if (element.name == "dob_day" || element.name == "dob_month" || element.name == "dob_year") {
                var dobDay = document.getElementById('dob_day');
                if (!isFilled(document.getElementById('dob_day')) || !isFilled(document.getElementById('dob_month')) || !isFilled(document.getElementById('dob_year'))) {
                    addClass(document.getElementById('lbldob'), 'labelerr');
                    errs = errs + "Please fill in the \'" + labelword + "\' field.\n";
                }
                else {
                    removeClass(document.getElementById('lbldob'), 'labelerr');
                }
            }


        } else if (element.className.indexOf("dependant") != -1) {
            //used to check groups of elements that are only required once one of them has been filled (using title attrib for grouping)
            //not filled
            for (j = 0; j < lbl.length; j++) {
                forval = lbl[j].getAttribute('for') ? lbl[j].getAttribute('for') : lbl[j].getAttribute('htmlFor');
                if (forval == sElName) {
                    sElTitle = lbl[j].getAttribute('title');
                    labelword = lbl[j].childNodes[0].nodeValue;
                    for (k = 0; k < lbl.length; k++) {
                        titleval = lbl[k].getAttribute('title');
                        forval2 = lbl[k].getAttribute('for') ? lbl[k].getAttribute('for') : lbl[k].getAttribute('htmlFor');
                        if ((titleval == sElTitle) && (sElName != forval2)) {
                            //found another element in the 'group'
                            elemCheck = document.getElementById(forval2);

                            if (!isFilled(elemCheck) && (elemCheck.className.indexOf("dependant") != -1) && !isFilled(element)) {

                                addClass(element, 'quickregerr');
                                addClass(elemCheck, 'quickregerr');
                                addClass(lbl[j], 'labelerr');
                                addClass(lbl[k], 'labelerr');
                                element.focus();
                                if (element.id == 'sexM' || element.id == 'sexFM') {
                                    addClass(document.getElementById('lblgender'), 'labelerr');
                                }
                                if (element.id == 'lookingfor_genderm' || element.id == 'lookingfor_genderf') {
                                    addClass(document.getElementById('lblgender_lookingfor'), 'labelerr');
                                }

                                errs = errs + "Please fill in the \'" + labelword + "\' field.\n";

                            } else if (isFilled(elemCheck)) {

                                removeClass(element, 'quickregerr');
                                removeClass(elemCheck, 'quickregerr');
                                removeClass(lbl[j], 'labelerr');
                                removeClass(lbl[k], 'labelerr');
                                if (element.id == 'sexM' || element.id == 'sexFM') {
                                    removeClass(document.getElementById('lblgender'), 'labelerr');
                                }
                                if (element.id == 'lookingfor_genderm' || element.id == 'lookingfor_genderf') {
                                    removeClass(document.getElementById('lblgender_lookingfor'), 'labelerr');
                                }

                            }
                        }
                    }
                }


            }
            // fix for the gender
            if (isFilled(document.getElementById('sexM')) || isFilled(document.getElementById('sexFM'))) {
                removeClass(document.getElementById('lblgender'), 'labelerr');
            }

            // test for the userform the form in case the splash page has a search box
            if (isFilled(document.forms["userform"].lookingfor_genderm) || isFilled(document.forms["userform"].lookingfor_genderm)) {
                removeClass(document.getElementById('lblgender_lookingfor'), 'labelerr');
            }


        } else if (element.className.indexOf("radiosurvey") != -1) {
            var rs = document.getElementsByName(element.name);
            var l = 0;

            var bAnswered = false;
            for (l = 0; l < rs.length; l++) {
                if (rs[l].checked) {

                    bAnswered = true;

                    break;
                }
            }

            if (bAnswered == false) {
                element.style.borderWidth = "1";
                element.style.borderColor = "red";
                element.focus();
                alert("Please answer each question in this survey");
                return false;
            }

        }
    }

    if (jQuery('#validateerrortext').text() != '') {
        errs = errs + jQuery('#validateerrortext').text();
        if (jQuery('#validateerrortext').text().indexOf('The email') >= 0) {
            jQuery("label[for='member_email']").attr('class', 'labelerr');
            jQuery("#member_email").addClass("quickregerr");
        }
        else {
            if (isFilled(whichform.elements['member_email'])) {
                jQuery("#member_email").removeClass("quickregerr");
                jQuery("label[for='member_email']").removeClass('labelerr');
            }
        }
        if (jQuery('#validateerrortext').text().indexOf('The membername') >= 0) {
            jQuery("#sitename").addClass("quickregerr");
            jQuery("label[for='sitename']").attr('class', 'labelerr');
        }
        else {
            if (isFilled(whichform.elements['sitename'])) {
                jQuery("#sitename").removeClass("quickregerr");
                jQuery("label[for='sitename']").removeClass('labelerr');
            }
        }
    }

    var email = jQuery("#member_email").val();
    if (email != undefined && email != '') {
        var regEx = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i ;
        if (regEx.test(email) == false) {
            jQuery("#validateerrortext").remove();
            jQuery("#validateerror p").remove();
            jQuery("label[for='member_email']").attr('class', 'labelerr');
            jQuery("#member_email").addClass("quickregerr");
            jQuery("#validateerror").prepend("<p id='validateerrortext'>Your email address is not valid</p>");
            return false;
        } else {
            jQuery("#validateerrortext").remove();
            jQuery("#validateerror p").remove();
            jQuery("#member_email").removeClass("quickregerr");
            jQuery("label[for='member_email']").removeClass('labelerr');

        }
    }

    if (errs != '') {
        var errDiv = document.getElementById('validateerror');
        if (errDiv) {
            removeClass(errDiv, 'skip');
            layeron(getlayer('validateerror')); // needed as subsequent client error will not show the pop up.
            if (errDiv.innerHTML.indexOf("Please fill in the highlighted options") < 0) {
                errDiv.innerHTML = '<p>Please fill in the highlighted options:</p>' + errDiv.innerHTML;
            }

        } else {
            alert(errs);
        }
        return false;
    }
    return true;
}

function updateto() {
    if (!document.createElement) {
        return true;
    }
    if (!document.userform) {
        return true;
    }
    if (!(document.userform.year_from && document.userform.year_to)) {
        return true;
    }
    var i = 0;
    var oToDiv = getlayer('yeartodiv');
    if (oToDiv) {
        yearfromval = document.userform.year_from.value;
        yearfrom = parseInt(yearfromval);
        yearto = document.userform.year_to;
        if (yearto) {
            yearto.options.length = 0;
        }
        var disp;
        var addoption;
        for (i = yearfrom; i <= yearfrom + 5; i++) {
            addoption = document.createElement("option");
            addoption.setAttribute("value", i);
            disp = document.createTextNode(i);
            addoption.appendChild(disp);
            yearto.appendChild(addoption);
        }
        layeron(oToDiv);
    }
}
