var field_required = Array();
var field_description = Array();

var locale_state_label = '';

function form_check(current_form) {
	var alertMsg = "Please complete the following required fields:\n\n";
    var l_Msg = alertMsg.length;

    if (current_form.elements['mobile'] != undefined) {
		$('mobile').removeClassName('form_validation_error');
	}

	$$('.form_validation_error').each(function(e){
		e.removeClassName('form_validation_error');
	});

    for (var i = 0; i < field_required.length; i++) {
    	if (field_required[i].substring(field_required[i].length - 2) == '[]') {

    		//checkbox array
    		var total_checked = 0;
    		var basename = field_required[i].substring(0, field_required[i].length - 2);

    		$$('.' + basename + '_array').each(function(e) {
				if (e.checked) {
					total_checked++;
				}
			});

			if (total_checked == 0) {
				alertMsg += " - " + field_description[i] + "\n";
        		$(basename).addClassName('form_validation_error');
			}

			continue;
    	}

        var current_form_element = current_form.elements[field_required[i]];

        if (current_form_element) {
			var current_element = $(field_required[i]);

            switch (current_form_element.type) {
              case "select-one":
                if (current_form_element.selectedIndex == 0 ||
                    current_form_element.options[current_form_element.selectedIndex].text == "") {
                    alertMsg += " - " + field_description[i] + "\n";
        			current_element.addClassName('form_validation_error');
                }
                break;
              case "select-multiple":
              case "select":
                if (current_form_element.selectedIndex == 0) {
                    alertMsg += " - " + field_description[i] + "\n";
        			current_element.addClassName('form_validation_error');
                }
                break;
              case "text":
              case "password":
              case "textarea":
                if (field_required[i] == 'email' && !current_form_element.value.match(/^[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\'*+\/=?^_`{|}~-]*)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[a-z]{2}|aero|asia|biz|cat|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel|xxx)$/i)) {
					alertMsg += " - " + field_description[i] + "\n";
					current_element.addClassName('form_validation_error');
				} else if (field_required[i] == 'phone' && (current_form_element.value.replace(/[^0-9]/g, "") == '' || current_form_element.value.replace(/[^0-9]/g, "").length == 2)) {
					if (current_form.elements['mobile'] != undefined) {
						var mobile_current_form_element = current_form.elements['mobile'];
						var mobile_current_element = $('mobile');

						mobile_current_element.removeClassName('form_validation_error');

						if (mobile_current_form_element.value.replace(/[^0-9]/g, "") == '' || mobile_current_form_element.value == null) {
							alertMsg += " - Phone or Mobile\n";
							current_element.addClassName('form_validation_error');
							mobile_current_element.addClassName('form_validation_error');
						}
					} else {
						alertMsg += ' - ' + field_description[i] + "\n";
						current_element.addClassName('form_validation_error');
					}
				} else if (current_form_element.value == "" || current_form_element.value == null) {
                    if (field_required[i] == 'business_name' || field_required[i] == 'business_number') {
						if (current_form.elements['acc_type'][0].value == 'personal' && !current_form.elements['acc_type'][0].checked) {
							alertMsg += " - " + field_description[i] + "\n";
                    		current_element.addClassName('form_validation_error');
                    	}
                    } else {
                    	alertMsg += " - " + field_description[i] + "\n";
                    	current_element.addClassName('form_validation_error');
                    }
                }
                break;
              case "checkbox":
              	if( !current_form_element.checked ){
              		alertMsg += " - " + field_description[i] + "\n";
        			current_element.addClassName('form_validation_error');
              	}
              default:;
            }

            if (current_form_element.type == undefined) {
                var blnchecked = false;
                for (var j = 0; j < current_form_element.length; j++) {
                    if (current_form_element[j].checked) {
                        blnchecked = true;
                    }
                }

                if (!blnchecked) {
                    alertMsg += " - " + field_description[i] + "\n";
        			current_element.addClassName('form_validation_error');
                }
            }
        }
    }

    if (alertMsg.length == l_Msg) {
        return true;
    } else {
        alert(alertMsg);
        return false;
    }
}

function form_check_login(current_form) {
	field_required = Array('username_login', 'password_login');
	field_description = Array('Username', 'Password');

	return form_check(current_form);
}

function form_check_login_members_area(current_form) {
	field_required = Array('member_username', 'member_password');
	field_description = Array('Login', 'Password');

	return form_check(current_form);
}

function form_check_forgot_password(current_form, title) {
	field_required = Array('keyword');
	field_description = Array(title);

	return form_check(current_form);
}

function check_email_login(current_form) {
	field_required = Array('_user', '_pass');
	field_description = Array('Email', 'Password');

	return form_check(current_form);
}

function check_exchange_login(current_form) {
	field_required = Array('username', 'password');
	field_description = Array('Email', 'Password');

	return form_check(current_form);
}

function form_check_register(current_form) {
	field_required = Array('first_name', 'last_name', 'address', 'city', 'post_code', 'country', 'state', 'phone', 'email', 'business_name', 'business_number', 'username', 'password');
	field_description = Array('First Name', 'Last Name', 'Address', 'City', 'Post Code', 'Country', locale_state_label, 'Phone', 'Email', 'Business Name', 'Business Number', 'Username', 'Password');

	return form_check(current_form);
}

function form_check_ssl(current_form) {
	if ($('hosted_with_other').checked) {
		field_required = Array('domain_name', 'csr', 'server_software');
		field_description = Array('Domain Name', 'CSR File', 'Server Software');
	} else {
		field_required = Array('domain_name');
		field_description = Array('Domain Name');
	}

	return form_check(current_form);
}

function form_check_email_protection_trial(current_form) {
	if (current_form.elements['member_type'] != undefined) {
		var member_type = detect_member_type(current_form.elements['member_type']);

		if (member_type == 'new') {
			field_required = Array('first_name', 'last_name', 'address', 'city', 'post_code', 'country', 'state', 'phone', 'email', 'business_name', 'business_number', 'username', 'password');
			field_description = Array('First Name', 'Last Name', 'Address', 'City', 'Post Code', 'Country', locale_state_label, 'Phone', 'Email', 'Business Name', 'Business Number', 'Username', 'Password');
		} else {
			field_required = Array('username_login', 'password_login');
			field_description = Array('Username', 'Password');
		}
	}

	field_required.push('domain_name');
	field_description.push('Domain Name');

	return form_check(current_form);
}

function form_check_web_builder_trial(current_form) {
	if (current_form.elements['member_type'] != undefined) {
		var member_type = detect_member_type(current_form.elements['member_type']);

		if (member_type == 'new') {
			field_required = Array('first_name', 'last_name', 'address', 'city', 'post_code', 'country', 'state', 'phone', 'email', 'business_name', 'business_number', 'username', 'password');
			field_description = Array('First Name', 'Last Name', 'Address', 'City', 'Post Code', 'Country', locale_state_label, 'Phone', 'Email', 'Business Name', 'Business Number', 'Username', 'Password');
		} else {
			field_required = Array('username_login', 'password_login');
			field_description = Array('Username', 'Password');
		}
	}

	return form_check(current_form);
}

function form_check_logo_design(current_form) {
	field_required = Array('f_1', 'f_2', 'f_3', 'f_4', 'f_5');
	field_description = Array('Your business name', 'Do you have a tag line or slogan you wish to include?', 'What does your business do?', 'Do you have industry examples of competitors\' logos you would like for us to evaluate?', 'Describe your general customer, age group & gender');

	var f_6 = $('f_6_element');
	var f_7 = $('f_7_element');
	var f_8 = $('f_8_element');

	var f_6_value = f_6.value;
	var f_7_value = f_7.value;
	var f_8_value = f_8.value;

	//field 6
    if ($('f_6_selector_yes').checked) {
    	field_required.push('f_6');
    	field_description.push('Have you any initial ideas for your logo concept?');

    	if (f_6_value == 'What did you have in mind?') {
    		f_6.value = '';
    	}
    }

    //field 7
    if ($('f_7_selector_yes').checked) {
    	field_required.push('f_7');
    	field_description.push('Do you have a preferred colour scheme for the logo?');

    	if (f_7_value == 'What did you have in mind?') {
    		f_7.value = '';
    	}
    }

    //field 8
    if ($('f_8_selector_yes').checked) {
    	field_required.push('f_8');
    	field_description.push('Would you like a graphic to be part of the logo design?');

    	if (f_8_value == 'What did you have in mind?') {
    		f_8.value = '';
    	}
    }

    //checkboxes
	field_required.push('f_9[]');
    field_description.push('What style or theme would suit your new logo?');

	var result = form_check(current_form);

	f_6.value = f_6_value;
	f_7.value = f_7_value;
	f_8.value = f_8_value;

	return result;
}

function form_check_web_design(current_form) {
	field_required = Array('f_1', 'f_2', 'f_3', 'f_4', 'f_5');
	field_description = Array('Your business name', 'Do you have a tag line or slogan you wish to include?', 'What does your business do?', 'Do you have industry examples of competitors\' websites you would like for us to evaluate', 'Have you had any initial ideas for your design concept?');

	var f_6 = $('f_6_element');
	var f_8 = $('f_8_element');

	var f_6_value = f_6.value;
	var f_8_value = f_8.value;

	//field 6
    if ($('f_6_selector_yes').checked) {
    	field_required.push('f_6');
    	field_description.push('Do you have prefered colour scheme?');

    	if (f_6_value == 'What did you have in mind?') {
    		f_6.value = '';
    	}
    }

    //field 8
    if ($('f_8_selector_yes').checked) {
    	field_required.push('f_8');
    	field_description.push('Do you have a logo?');

    	if (f_8_value == '') {
    		f_8.value = '';
    	}
    }

	var result = form_check(current_form);

	f_6.value = f_6_value;
	f_8.value = f_8_value;

	return result;
}

function form_check_eligibility(current_form) {
	field_required = Array('accept_terms');
	field_description = Array('You must agree to the standard policy');

	if (!form_check(current_form)) {
		document.getElementById('please_tick_box_error').style.display = '';
		
		return false;
	} else {
		document.getElementById('please_tick_box_error').style.display = 'none';
		
		return true;
	}
}

function detect_member_type(obj) {
	if (obj[0].checked) {
		if (obj[0].value == 'new') {
			return 'new';
		} else {
			return 'existing';
		}
	} else {
		if (obj[1].value == 'new') {
			return 'new';
		} else {
			return 'existing';
		}
	}
}
