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 encodeUTFtoHTML(string) 
{
	var newValue = "";
	for (var n = 0; n < string.length; n++) {
          var code =  string.charCodeAt(n);            
	     if (code > 0x7F)  
			newValue += "&#" + code + ";";   
		else		
			newValue += string.charAt(n);
        }
	return newValue;
}



function validateMandatoryFields(df) 

{

	for (i=0; i<mandatoryFields.length ; i++) {

		if (!validateField(df,mandatoryFields[i],mandatoryFieldsDescription[i],mandatoryFieldsValidation[i]))

			return false;

        }


	//get a fields list in order and encode all the data
	lastField = "";
	fieldsOrder = "";
	for(i=0; i<df.elements.length; i++)
	{
		var ele = df.elements[i]; 
		/*
		if (ele.value && ele.type != 'file')
			ele.value = encodeUTFtoHTML(ele.value);
		if (ele.selectedIndex && ele.options && ele.options[ele.selectedIndex].value)
			ele.options[ele.selectedIndex].value = encodeUTFtoHTML(ele.options[ele.selectedIndex].value);
		*/
		fname = ele.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;
}