fieldsArray = new Array();

function formField(name, type, title){	this.name = name;
	this.type = type;
	this.title = title;
}

function getFormField(form,name) {
 var field = new Array();
 for(var i=0; i<document.forms[form].elements.length; i++){
  var e = document.forms[form].elements[i];
  if(e.name == name)
    field[field.length] = e;
 }
 return field;
}

function checkFields(form) {
 var missed = '';
 for(var name in fieldsArray) {
  var f = fieldsArray[name];
  var field = getFormField(form,name);
  if(field.length==0)
   continue;
  var value = 0;
  switch(f.type) {
    case "text":
    case "textarea":
    case "password":
     if(field[0].value.length > 0) {
       value = 1;
       if(name == 'email' && (field[0].value.indexOf('@') == -1 || field[0].value.length < 4))
         missed+='- ' + f.title + ' содержит некорректный e-mail адрес\n';
     }
    break;

    case "number":
     if(String(parseInt(field[0].value)) == field[0].value || String(parseFloat(field[0].value)) == field[0].value)
       value = 1;
    break;

    case "date":
    case "datetime":
     value=1;
     if(field.length == 1) {
      var arr = field[0].value.split(".");
      for(var i=0;i<arr.length;i++)
       if(String(parseInt(arr[i])) != arr[i] && parseInt(arr[i]) != 0) {
         value=0;
         break;
       }
     } else {
      for(var i=0;i<field.length;i++)
       if(String(parseInt(field[i].value)) != field[i].value  && parseInt(field[i].value) != 0) {
         value=0;
         break;
       }
     }
    break;

    case "checklist":
    case "radio":
     for(var i=0;i<field.length;i++)
      if(field[i].checked) {
        value=1;
        break;
      }
    break;

    case "select":
     if(field[0].selectedIndex > 0)
      value = 1;
    break;

    case "multiselect":
     for(var i=0;i<field[0].options.length;i++) {
      if(field[0].options[i].selected)
        value = 1;
     }
    break;

    default:
     value = 1;
  }
  if(value == 0)
   missed+='- не заполнено поле "' + f.title + '"\n';
 }
 if(missed != '')  {
  alert('Вы не заполнили все обязательные поля или допустили ошибки при их заполнении:\n\n' + missed);
  return false;
 } else {
  return true;
 }
}
