var xmlObj = null;
var fc = null;

function sub(f)
{
  fc = f;
  for( var i=0; i<f.elements.length; i++)   
   if (f.elements[i].id.substr(0,3) == 'frm')
    f.elements[i].style.background = '#FFFFFF';    
  xmlObj = getXML( 'postform.php', getFormValues(f) );   
}

function displayState()
{
  if ( (xmlObj.readyState == 4) && (xmlObj.status == 200) )
  {    
    //alert(xmlObj.responseText);        
    var errors = xmlObj.responseXML.getElementsByTagName('error') ;    
    if (errors.length>0)    
    {       
      for (i=0;i<errors.length;i++)
      {
        fld = errors[i].getAttribute('field');
        frm = errors[i].getAttribute('form');
        var er = errors[i].firstChild.data;  
        if (document.getElementById( fld ))             
         document.getElementById( fld ).style.background = '#FF9000';         
      }  
    }  
    else
    {      
      var results = xmlObj.responseXML.getElementsByTagName('result') ;    
      fc.reset();
      for (i=0;i<results.length;i++)
      {
        div = results[i].getAttribute('div');
        txt = results[i].getAttribute('txt');
        var res = results[i].firstChild.data;   
        if (document.getElementById( txt )) 
         document.getElementById( txt ).innerHTML = res;                                  
        if (document.getElementById( div )) 
         document.getElementById( div ).style.display = 'block';
      }  
    }
  }
}

function getXML( file, str )
{
  var doc = null
  if (typeof window.ActiveXObject != 'undefined' )
  {
    doc = new ActiveXObject("Microsoft.XMLHTTP");
    doc.onreadystatechange = displayState;
  }
  else
  {
    doc = new XMLHttpRequest();
    doc.onload = displayState;
  }
  doc.open( "POST", file, true );
  doc.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
  doc.send( str );
  return doc;
}


function getFormValues( fobj, valFunc )
{
  var str = "";
  var valueArr = null;
  var val = "";
  var cmd = "";
  str = 'formid='+escape(fobj.id)+'&'; 
  for(var i = 0; i < fobj.elements.length; i++)
  {
    //alert(fobj.elements[i].id);
    switch(fobj.elements[i].type)
    {      
      case "text":
      
        if(valFunc)
        {
          //use single quotes for argument so that the value of
          //fobj.elements[i].value is treated as a string not a literal
          cmd = valFunc + "(" + 'fobj.elements[i].value' + ")";
          val = eval(cmd)
        }
        str += fobj.elements[i].name + "=" + escape(fobj.elements[i].value) + "&";
        break;
        
      case "hidden":
              
        str += fobj.elements[i].name + "=" + escape(fobj.elements[i].value) + "&";
        break;        
        
      case "select-one":
      
        str += fobj.elements[i].name + "=" + fobj.elements[i].options[fobj.elements[i].selectedIndex].value + "&";
        break;
        
      case "textarea":
      
        str += fobj.elements[i].name + "=" + escape(fobj.elements[i].value) + "&";
        break;  
        
      case "radio":
      
        if (fobj.elements[i].checked)
         str += fobj.elements[i].name + "=" + escape(fobj.elements[i].value) + "&";
        break;
        
      case "checkbox":
        if (fobj.elements[i].checked)
         str += fobj.elements[i].name + "=t&";
        else 
         str += fobj.elements[i].name + "=f&"; 
        break;                     
    }
  }
  str = str.substr(0,(str.length - 1));
  return str;
}