var err_msg = "";
var default_err_msg = "";
var err_obj = null;

String.prototype.trim = function() { return this.replace(/^\s+|\s+$/, ''); };

function commitError(obj, msg) {
 err_obj = err_obj == null ? obj : err_obj;
 err_msg += '\n '+msg;
}

function validateForm(f, err_text) {
  err_msg=err_text;
 if (err_msg==null) err_msg = default_err_msg;
 err_obj = null;
 for (var i=0; i<f.length; i++) {
   var rule=f[i].id;
   if(rule.substr(0, 1)=='@')
   { 
     rule = rule.substr(1, rule.length-1);
//     alert('элемент зовут:'+ f[i].name +' руль для проверки:'+ rule);
     var obj = f[i];
     var p = rule.split(':');
     rule = p[0];
     var minlength = (isNaN(parseInt(p[1]))) ? 0 : parseInt(p[1]);
     if (rule.substr(0, 1) == '=') 
     {
     	 var other_hand = rule = rule.substr(1, rule.length-1);
         if (obj.value != ''){
          var obj2 = f.elements[other_hand];
          if (obj.value == '') commitError(obj, obj.title);
          else 
	    if ((obj2) && (obj.value != obj2.value)) 
		commitError(obj2, obj2.title);
         }

     }
     else   
	 switch (rule) {
	 case 'text':
	 case 'select':
 		var value = obj.value.trim();
		if ((value == '') || (value.length < minlength)) commitError(obj, obj.title);
	 break;
 	 case 'checkbox':
 		var item_ok = 0;
 		for (var j=0; j<obj.length; j++) {
 	  	  if (obj[j].checked) item_ok++;
 		}
 		if ((item_ok < minlength) || (item_ok == 0)) 
          	 	commitError(obj[0], obj[0].title);
 	break;
 	case 'radio':
 		var selected_item = -1;
 		for (var j=0; j<obj.length; j++) {
 			if (obj[j].checked) selected_item = j;
 		}
 		if (selected_item == -1) commitError(obj[0], obj[0].title);
 	break;
 	case 'int':
 		var value = parseInt(obj.value);
 		if (isNaN(value) || (value != obj.value.trim()) || (value == 0) || (obj.value.trim().length < minlength)) commitError(obj, obj.title);
        break;
 	case 'float':
	 	var value = parseFloat(obj.value);
 		if (isNaN(value) || (value != obj.value.trim()) || (value == 0)) commitError(obj, obj.title);
 	break;
 	case 'email':
	 	var value = obj.value.trim();
 		if (!/^([a-zA-Z0-9_.+-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,6})+$/.test(value)) commitError(obj, obj.title);
 	break;
 	case 'phone':
 		var value = obj.value.trim();
 		if (!/^(\+?\d{1,3}?)?(\s)*(\(?\d{3}\)?)?(\s)*(\d{3}-?\d{2}-?\d{2})$/.test(value)) commitError(obj, obj.title);
 	break;
 	case 'alph':
 		var value = obj.value.trim();
 		if (!/^([a-zA-Z0-9.-])+$/.test(value)) commitError(obj, obj.title);
 	break;
 	}
   }
 } 
 if (err_obj != null) {
 alert(err_msg);
 err_obj.focus();
 return false;
 } else {
   return true;
 }
}

var win
function showimage (w, h, path, title) {
		if (win) {
     win.close()//закрываем предыдущее окно, если такое открыто( посылаем в функцию закрытия окна-строка27)
   }
	win=window.open('','','toolbar=no,scrollbars=no, width='+w+',height='+h+', top=100, left=100');
	win.document.open();
	win.document.write('<html><meta http-equiv="Content-Type" content="text/html; 	charset=windows-1251">\n<title>'+title+'</title>\n<body bgcolor="#ffffff" leftmargin="0" topmargin="0" marginheight="0" marginwidth="0" bottommargin="0" rightmargin="0">\n<img src="'+path+'" border="0" alt="'+title+'">\n</body>\n</html>');
        win.document.close()
}

var win
function showstr (w, h, path) {
		if (win) {
     win.close()//закрываем предыдущее окно, если такое открыто( посылаем в функцию закрытия окна-строка27)
   }
	win=window.open(path,'','toolbar=no,scrollbars=no, width='+w+',height='+h+', top=100, left=100');
}
