// JavaScript Document


function HTTP() {
    
}

HTTP._factories = [
    function() { return new XMLHttpRequest(); }, 
    function() { return new ActiveXObject( "Msxml2.XMLHTTP" ); },
    function() { return new ActiveXObject( "Microsoft.XMLHTTP" ); }
];

HTTP._factory = null;

HTTP.newRequest = function() {
    if( HTTP._factory != null ) return HTTP._factory();
    
    for( var i = 0; i < HTTP._factories.length; i++ )
      try {
          var factory = HTTP._factories[i];
          var request = factory();
            if( request != null ) {
                HTTP._factory = factory;
                return request;
            }
      }
      catch( e ) {
          continue;
      }
      
      HTTP._factory = function() {
          throw new Error( "XMLHttpRequest not supprted" );
      }
      
  HTTP._factory();
}


HTTP.post = function( url, values, callback, errorHandler, encodeFlag ) {
  
    var request = HTTP.newRequest();
    request.onreadystatechange = function() {
        if( request.readyState == 4 ) {
            if( request.status == 200 ) {
                if( callback )
                  callback( HTTP._getResponseAsText(request) );
            }
            else {
                if( errorHandler ) errorHandler( request.status, request.statusText );
                else callback( null );
            }
        }
    }
  
    request.open( "POST", url );
    request.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" );
    if( encodeFlag )
      request.send( HTTP.encodeFormData(values) ); 
    else
      request.send( values );
}

HTTP._getResponseAsText = function(request) {
    return request.responseText;
}
  
HTTP.encodeFormData = function( data ) {
    var pairs = [];
    var regexp = /%20/g; //A regular expression to match an encoded space
    
    for( var i = 0; i < data.length; i++ ) {
        var name = data[i].name;
        var value = null;
        if( data[i].type == "select-one" ) {
           value = data[i].options[data[i].selectedIndex].text;
        }
        else
          value = data[i].value;
    
        if( name && name != "searchButton" && name != "" ) {
        var pair = encodeURIComponent(name).replace( regexp, "+" ) + "=" + 
            encodeURIComponent(value).replace( regexp, "+" );
        
        pairs.push( pair );
        }
    }
    return pairs.join( '&' );
}