var ac_errors = new Array();
var message_on = false;
var sum = 0;
var to_countdown;

function ac_check(what, e, checkclass, col) {

  //alert(what);
  //alert(checkclass);
  
//  if (what.tagName=='FORM')
//    var input_a= what.elements;
//  else
  var input_a = what.form.elements;
 
  var form_a = new Array();
  
  for (i=0; i<input_a.length; i++) {
    if (input_a[i].type!='hidden' && input_a[i].type!='submit')
      form_a.push(encodeURIComponent(input_a[i].name)+'~'+encodeURIComponent(input_a[i].value));
  }

  var s = new sack();
  s.requestFile = 'smartform_ajaxchecker.php?class='+checkclass+'&col='+col+'&val='+what.value+'&vals='+form_a.join("@");

  
  s.onCompletion=function () {
    sum--;
    
    //alert(s.response);

    if (!ac_errors[what.form.name]) ac_errors[what.form.name] = new Array();
    var errs = s.responseXML.getElementsByTagName('error');

    if (errs.length > 0) {
   
      ac_errors[what.form.name].push(true);

      what.className='error2';
//      what.focus();

    } else {
      if (what.className=='error2')
      what.className='';
    }

    var msg = s.responseXML.getElementsByTagName('msg');
    if (msg.length>0) {
      if (!message_on){
        message_on = true;
        alert(msg[0].firstChild.nodeValue);
        message_on = false;
      }
        
    }

  }
 
  s.runAJAX();

}


function ac_checkform(formname) {
  var arr = ac_errors[formname];
  
  var ok = true;
  
  for (i=0;i<arr.length;i++) {

    if (arr[i]==true) ok=false;

  }
 
  return ok;
}

function ac_checkform2(t, e, checkclass) { 
 
  if (t.tagName!='FORM') {
    return false;
  }
    
  var input_a = t.elements;
  ac_errors[t.name] = new Array();

  sum=0;
  for (j=0; j<input_a.length; j++) {
    if (input_a[j].type!='hidden' && input_a[j].type!='submit') {
//      alert(input_a[j].name);
      ac_check(input_a[j],e, checkclass+'Checker',input_a[j].name);
      sum++;
      //alert(input_a[i]);    
    }
//      form_a.push(encodeURIComponent(input_a[i].name)+'~'+encodeURIComponent(input_a[i].value));
  }
  
  function check_done() {
    if (sum>0) 
      setTimeout(check_done,100);
    else {   
      var arr = ac_errors[checkclass];
      
      if (arr.length==0) {
          t.submit();
      } else if (--to_countdown > 0) {
          setTimeout(check_done,1000);
      }
     
    }
  }
 
  to_countdown = 4;
  setTimeout(check_done,100);
   
  return false;
}