function checkEmail( email ){
 return ( email.search(/^[A-Za-z0-9-\._]*@[A-Za-z0-9-\._]*\.[A-Za-z]{1,4}$/)==0?true:false);
}

function field_empty(str) {
for (var i = 0; i < str.length; i++)
     if (" " != str.charAt(i))
  return false;
     return true;
}

function checkForm(f) {
  var errMSG = "";
  for (var i = 0; i<f.elements.length; i++)
    if ( f.elements[i].getAttribute("required") )
	if (field_empty(f.elements[i].value)) // пустой
	    errMSG += " " + f.elements[i].title + "\n";
	if ("" != errMSG) {
	    alert("Не заполнены обязательные поля:\n" + errMSG);
	    return false;
	}
   if (f.email && !checkEmail(f.email.value)){alert("Неверный e-mail");return false;}
 
  return true;
}

function sendComment(f){
  if(!checkForm(f)) return false;
  var elems = Form.serialize(f);
  $('queryResult').innerHTML = 'Отправка данных...'; $('fComment').disable();
  var Req = new Ajax.Request( '/addComment', { method: 'post', parameters: elems, onComplete: afterSend} );
  return false; 
}

function afterSend(R){
 $('fComment').enable();
 try{
   var result = R.responseText.evalJSON();
   switch(result.code){
     case 0:
         $('queryResult').innerHTML = result.value;
         break;
     case 1:
         $('queryResult').innerHTML = result.value;
         Form.reset('fComment');
         break;
     case 2:
         Form.reset('fComment');
         $('queryResult').innerHTML = result.value;
         var reqText = '__ac_name='+result.user+'&__ac_password='+result.pwd;
         var Req = new Ajax.Request( '/memberme', { method: 'post', parameters: reqText, onComplete: shrinkForm} );
         break;
     case 3:
         $('queryResult').innerHTML = result.value;
         break;
     default:
       $('queryResult').innerHTML = 'Ошибка передачи данных';
   }
 }
 catch(e){ $('queryResult').innerHTML = 'Ошибка передачи данных';}
}

function shrinkForm(R){
 try{
   var result = R.responseText.evalJSON();
   if( result.code == 1) $$('#fComment dd[class=reg_data]').collect(function(e){e.remove()})}
 catch(e){}
}

 function rate(param){
   if( param==1 && $('rateYes').className=="no-rate") {$('rStatus').innerHTML="Вы уже оценивали это предложение"; return false;}
   if( param==-1 && $('rateNo').className=="no-rate") {$('rStatus').innerHTML="Вы уже оценивали это предложение"; return false;}
   $('rStatus').innerHTML = 'отправка данных...';
   $('rForm').disable();
   var Req = new Ajax.Request( '/rate', { method: 'post', parameters:'rate='+param , onComplete: afterRate} );
   return false;
 }

 function afterRate(R){
  $('rForm').enable();
  try{
   var result = R.responseText.evalJSON();
   switch(result.code){
     case 0:
         $('rStatus').innerHTML = result.value;
         break;
     case 1:
         $('rStatus').innerHTML = 'ваш голос засчитан';
         $('nRate').innerHTML = result.value;
         if(result.rate==1) { $('rateYes').className="no-rate"; $('rateNo').className="";}
         if(result.rate==-1) { $('rateYes').className=""; $('rateNo').className="no-rate";}
         if(result.rate==0) { $('rateYes').className=""; $('rateNo').className="";}
         break;
     default:
       $('rStatus').innerHTML = 'ошибка при передаче';
   }
  }
 catch(e){ $('rStatus').innerHTML = 'ошибка при передаче';}
 }