var needed = new Array(12);
var invalid = new Array(2);

function CheckForm() {
	var required = new Array(0,1,2,3,8,9,10,11,12,18,13);
	var error = new Array(9,10);
	var bad = 0;
	var i;
	
	for (i = 0; i < required.length; i++)
		if (!CheckField(required[i], bad))
			bad++;
	if (bad) {
		MessageA(bad);
		return false;
	}
	if (document.forms[0].elements[16].checked && document.forms[0].elements[17].value.length == 0) {
		MessageC();
		return false;
	}
    if (!CheckEmail()) {
        MessageD();
        return false;
    }
	for (i = 0; i < error.length; i++)
		if (!CheckNumeric(error[i], bad))
			bad++;
	if (bad) {
		MessageB(bad);
		return false;
	}
	return true;
}

function CheckField(field, x) {
	switch (document.forms[0].elements[field].type) {
		case "checkbox":
            var i;
            if (field == 13) {
                for (var i = 0; i < 4; i++)
                    if (document.forms[0].elements[field+i].checked)
                        return true;
            } else if (field == 18) {
                for (var i = 0; i < 2; i++)
                    if (document.forms[0].elements[field+i].checked)
                        return true;
            }
			needed[x] = field;
			return false;
			break;
		case "text":
			if (document.forms[0].elements[field].value.length == 0) {
				needed[x] = field;
				return false;
			}
			break;
		case "select-one":
			if (!document.forms[0].elements[field].selectedIndex) {
				needed[x] = field;
				return false;
			}
			break;
		default:
			alert(document.forms[0].elements[field].type);
			break;
	}
	return true;
}

function CheckNumeric(field, x) {
	var test;
	
	for (var i = 0; i < document.forms[0].elements[field].value.length; i++) {
		test = document.forms[0].elements[field].value.substr(i,1);
		if ((!parseInt(test) && test != "0") && (test.indexOf(" ") == -1) && (test.indexOf("/") == -1) && (test.indexOf("-") == -1)) {
			invalid[x] = field;
			return false;
		}
	}
	return true;
}

function CheckEmail() {
    var test = new String(document.forms[0].elements[11].value);
    var at = false,dot = false;
    var i;
    
    for (i = 0; i < test.length; i++)
        !at ? at = (test.charAt(i) == '@') : dot |= (test.charAt(i) == '.');
    if (at && dot)
        return true;
    else
        return false;
}

function MessageA(num) {
	var a = "Some information is missing:\n \n";
	var b = "Please enter these details and try again.";
	
	for (var i = 0; i < num; i++) {
		a += Which(needed[i]);
		if (i == num - 2)
			a += " and ";
		else if (i != num - 1)
			a += ", ";
	}
	a += ".\n \n";
	a += b;
	alert(a);
}

function MessageB(num) {
	var a = "The information you have provided for ";
	var b = " is not valid.\n \n";
	var c = "Please check these details only contain numbers, spaces or '-' and '/' characters, then try again.";
	
	for (var i = 0; i < num; i++) {
		a += Which(invalid[i]);
		if (i == num - 2)
			a += " and ";
		else if (i != num - 1)
			a += ", ";
	}
	a += b;
	a += c;
	alert(a);
}

function MessageC() {
	var a = "You have selected the option for other information, but have not specified what you are requesting.\n\n";
	
	a += "Enter this information and try again.";
	alert(a);
}

function MessageD() {
	var a = "Please enter a valid e-mail address.";
	
	alert(a);
}

function Which(item) {
	var	a = "";
	
	switch (item) {
        case 0:
            a += "Company";
            break;
		case 1:
			a += "Contact Name";
			break;
		case 2:
			a += "Job Title";
			break;
		case 3:
			a += "Address";
			break;
		case 8:
			a += "Country";
			break;
		case 9:
			a += "Telephone";
			break;
		case 10:
			a += "Fax";
			break;
		case 11:
			a += "Email";
			break;
		case 12:
			a += "Contact Method";
			break;
		case 13:
			a += "Select at least one information option";
			break;
		case 17:
			a += "Specify Other Information";
			break;
        case 18:
            a += "Select from either Kenny Mack Oilfield Consultants or LE MACK Oilfield Rentals Ltd.";
            break;
		default:
			a += "error";
			alert(item);
			break;
	}
	return a;
}
