function checkform(form){
	var name;
	var warning='';
	
	for(num=0;num<document.forms.length;num++){
		if(document.forms[num].name==form){
			for(i=0;i<document.forms[num].elements.length;i++){
				name=document.forms[num].elements[i].name;
				if (document.forms[num].elements[i].disabled != true)
				{
					// _nonempty_
					if(name.match('_nonempty_') && document.forms[num].elements[i].value==''){
						warning='Поле должно быть заполнено';
					}
					// _datetime_
					if(name.match('_datetime_')){
						if(!document.forms[num].elements[i].value.match(/^\d\d\.\d\d\.\d\d\d\d \d\d:\d\d$/) && document.forms[num].elements[i].value!='')
							warning='Неверный формат даты и времени (ДД.ММ.ГГГГ ЧЧ:ММ)';
					}
					// _date_
					if(name.match('_date_')){
						if(!document.forms[num].elements[i].value.match(/^\d\d\.\d\d\.\d\d\d\d$/) && document.forms[num].elements[i].value!='')
							warning='Неверный формат даты и времени (ДД.ММ.ГГГГ)';
					}
					// _number_
					if(name.match('_number_')){
						if(!document.forms[num].elements[i].value.match(/^\d+$/) && document.forms[num].elements[i].value!='')
							warning='Допускается только положительное целое число';
					}
					// _email_
					if(name.match('_email_')){
						if(!document.forms[num].elements[i].value.match(/^[\w-\.]+@[\w-\.]+\.\w+$/) && document.forms[num].elements[i].value!='')
							warning='Неправильный формат e-mail';
					}
					// _radio_
					if(name.match('_radio_')){
						empty=true;
						for(j=0;j<document.forms[num].elements.length;j++){
							if(document.forms[num].elements[j].name==name && document.forms[num].elements[j].checked){
								empty=false;
							}
						}
						if(empty){
							warning='Необходимо выбрать вариант';
						}
					}
				}
				// alarm!
				if(warning!=""){
					alert(warning);
					document.forms[num].elements[i].focus();
					return false;
				}
			}
			for(i=0;i<document.forms[num].elements.length;i++){
				name=document.forms[num].elements[i].name;
				// Не забывать помещать в следующую строку новые префиксы!!!
				reg_exp=/(_nonempty_|_datetime_|_date_|_number_|_radio_|_email_)+/;
				name=name.replace(reg_exp,"");
				document.forms[num].elements[i].name=name;
			}
			return true;
		}
	}
}


//---------------------------------//
message = new Array();
message["_t_"] = "Не заполнено поле"
message["_s_"] = "Не выбрано значение"
message["_r_"] = "Не выбрано значение"
message["_e_"] = "Введен некорректный e-mail"

//название поля внутри этих символов (добавляется к сообщению)
startCh = "(";
endCh = ")";



 /* если передан только один аргумент - название формы, то выполняется проверка всех полей формы; 
 	 если есть остальные аргументы (названия полей), то проверяются только эти поля
 */
 function check_fields(){
 	formObj = document.forms[check_fields.arguments[0]];
 	len = check_fields.arguments.length-1; 
	res = true;
	emp = false;	
	
	if (len > 0)  //список полей
		ind = 'check_fields.arguments[i+1]' ; 		
	else { //вся форма
		len = formObj.elements.length; 
		ind ='i';
	}
	
	
	for (i=0; i<len && res; i++){		
		field = formObj.elements[eval(ind)];		
		startPref = 0;
        
	 	for (pref in message)			  
			//if(field.name.substring(startPref,startPref+pref.length)==pref){
			//    startPref = pref.length; 
			if (field.name.match(pref)){
               
				switch (pref){
					case "_t_": emp = is_empty_text(field);  break;
					case "_s_": emp = is_empty_select(field); break;
					case "_r_": emp = is_empty_radio(formObj, field.name); i+=formObj.elements[field.name].length-1;  break;
                    case "_e_": emp = is_wrong_email(field); break;
				}
				
				if  (emp){
					 //добавляется название поля к сообщению
					 startInd = field.name.indexOf(startCh);
					 endInd = field.name.indexOf(endCh);
					 addMessage = field.name.substring(startInd+1,endInd);
					 
		              alert(message[pref]+' '+addMessage); 			 
		              field.focus();
		              res = false;
					  break;		 	
		         }   
			}	
	}
	return res;
 }
 
 
 
 function is_empty_text(field){
 	return (field.value == "")? true : false; 
 }
 
  function is_empty_select(field){ 
 	return ( (field.options[field.selectedIndex].value == "") || (field.options[field.selectedIndex].value == "-1") )? true : false;
 }
 
 function is_empty_radio(form, rname){  
	 radioLen = form.elements[rname].length; 	 
	 for (var j=0; j<radioLen; j++)
		if (form.elements[rname][j].checked) return false;				
	 return true;
 }
 
 //проверка на правильность e-mail только дня не пустого поля. проверка на непустое должна быть отдельно, то есть name=_t__e_
function is_wrong_email(field){ 
	if (field.value != "") {	
	    var re = /^[\w\.-]+@[\w\.-]+\.\w\w+$/;    
    	if ( !field.value.match(re) ) return true;
    }
	return false;
}
