function area_click(o){
  var re = /^area_chb_/;
  var all_areas = document.getElementById('area_chb_0');
  var id = o.id.replace(re, '');
  //var id = o.id;
  var state = o.checked;
  //alert(id);
  if (id=='0'){
    if (all_areas.checked){
	  set_areas(0);
	  all_areas.checked='checked';
    } else {
	  // а вот что тут делать - даже не знаю! :)  -- можете отправить этот комментарий на http://www.thedailywtf.com/
	  // как один из вариантов - мы устанавливаем все галочки. То есть снятие галочки с "все районы" обозначает, что все районы не нужны, а нужен какой-то конкретный или
	  set_areas(1);
	  all_areas.checked=0;
	}
  } else {  // кликнута неясная галочка 
	//if (check_rest_chb_cleared()){
	all_areas.checked = check_rest_chb_cleared() ? 'checked' : '';
	//}
  //set_areas(1);
  };
};

function set_areas(state){
  var re = /^area_chb_/;
  inps =  document.getElementsByTagName('input');
  for (i=0; i<inps.length; i++){
    var inp = inps[i];
	if (re.test(inp.id)){
	  inp.checked = state ? 'checked' : '';
	}
  }
}

function check_rest_chb_cleared() { // проверить все ли галочки кроме главной сброшены
  var re = /^area_chb_/;
  var cleared = true;
  inps =  document.getElementsByTagName('input');
  for (i=0; i<inps.length; i++){
    var inp = inps[i];
	if (re.test(inp.id) && (inp.id != 'area_chb_0') ){
	  //cleared |= !inp.checked;
	  if (inp.checked) {
		return false;
	  }
	}
  }
  return true;
}

