var mandatoryFields = new Array();
var mandatoryFields = new Array();
var mandatoryFieldsDescription = new Array();
var mandatoryFieldsValidation = new Array();

function mandatoryField(fieldname,description,validation) 
{ 
	pos = mandatoryFields.length;
	mandatoryFields[pos ]=fieldname;
	
	if (!description)
		description = fieldname;

	if (!validation)
		validation = 'mandatory';
				
	mandatoryFieldsDescription[pos ]=description;
	mandatoryFieldsValidation[pos ]=validation;

}


function whichRadio(field) 
{
	radioOption = -1;
	for (counter=0; counter<field.length; counter++) {
		if (field[counter].checked) radioOption = counter;
	}
	return radioOption;
}


function hasValue(field,df) 
{
	undefined;
	if (!field || field == undefined) return true;
	else if (field.type=='text' && field.value=='') return false;
	else if (field.type=='Text' && field.value=='') return false;
	else if (field.type=='Number' && field.value=='') return false;
	else if (field.type=='Date' && field.value=='') return false;
	else if (field.type=='Email' && field.value=='') return false;
	else if (field.type=='textarea' && field.value=='') return false;
	else if (field.type=='password' && field.value=='') return false;
	else if (field.type=='select-one' && field.selectedIndex == 0) return false;
	else if (field.length > 0 && field[0].type && (field[0].type=='radio'||field[0].type=='checkbox') && whichRadio(field)<0) 
		return false;
	else if (field.type=='checkbox' && !field.checked) return false;
	return true;
}


function focusField(field) 
{
		if (field.length && field[0].focus)
			field[0].focus();
		else if (field.focus)
			field.focus();
}

function validateField(df,fieldname,description,validation) 
{
	field = df.elements[fieldname];

	if (!hasValue(field,df)) {
		alert("Please enter: " + description);
		focusField(field);
		return false;
	}	 
	//Date
	//Number

	if ((validation == 'email' || validation == 'Email') && (field.value.indexOf('@')<0 || field.value.indexOf('.')<0 || field.value.indexOf(' ')>=0) ) {
		alert("Email address is invalid: " + description);
		focusField(field);
		return false;  
	}	
	else if (validation == 'phone' && (field.value.length<7) ) {
		alert("Telephone number is not long enough: " + description);
		focusField(field);
		return false;
	}	
	else if (validation == '5char' && (field.value.length<5) ) {
		alert("Text is not long enough: " + description);
		focusField(field);
		return false;
	}	
	return true;
}



function validateMandatoryFields(df) 
{
	for (i=0; i<mandatoryFields.length ; i++) {
		if (!validateField(df,mandatoryFields[i],mandatoryFieldsDescription[i],mandatoryFieldsValidation[i]))
			return false;
        }

	lastField = "";
	fieldsOrder = "";
	for(i=0; i<df.elements.length; i++)
	{
		fname = df.elements[i].name ;
		if (!fname) continue;
                if (lastField == fname) continue;
		if (fieldsOrder)
			fieldsOrder += ",";
		fieldsOrder += fname;
                lastField = fname;
	}

	var input = document.createElement("input");
	input.setAttribute("type", "hidden");
	input.setAttribute("name", "fieldsInOrder");
	input.setAttribute("value", fieldsOrder);
	df.appendChild(input);

	return true;
}