function my_ajax ()
{
	var http = getHTTPObject();

	var onDone 		= null;
	var onSuccess	= null;	
	var onFailure	= null;
	//--------------------------------------------------
	this.set_callback = function(cb_event, cb_func)
	{
		if ( cb_event == "on_done" )		onDone 		= cb_func;
		if ( cb_event == "on_success" )		onSuccess 	= cb_func;
		if ( cb_event == "on_failure" )		onFailure 	= cb_func;
	}
	//--------------------------------------------------
	this.abort = function ()
	{
		http.abort();
	}
	//--------------------------------------------------
	function getHTTPObject() 
	{
    	var _http = null;

        try	{ _http = new ActiveXObject("Msxml2.XMLHTTP"); } 
		catch (e) 
		{ 
			try { _http = new ActiveXObject("Microsoft.XMLHTTP");  } 
			catch (oc) {}
        }
        if(!_http && typeof XMLHttpRequest != "undefined")
                _http = new XMLHttpRequest();

        return _http;	
	}
	//--------------------------------------------------
	this.post = function (strURL, params) 
	{
		if ( !http )		return;
		http.abort();		// in case another request was running...
    	http.open('POST', strURL, true);
//    	http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    	http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    	http.onreadystatechange = cb_func;     
    	http.send(params);
//		alert ( "http.post : " +  strURL + "?" + params );
	}
	//--------------------------------------------------
	function cb_func ()
	{
		if ( done() )	
		{
//			alert ( http.getResponseHeader("s_res") );
			if ( onDone )		onDone();
			if ( success() )	{ 	if ( onSuccess )	onSuccess ( response() );	}
			else 				{ 	if ( onFailure )	onFailure ( http.status, response() );	}		
		}
	}
	//--------------------------------------------------
	function done()
	{
//		alert ( response() );
		if ( http == null )			return (false); 	
		if ( http.readyState == 4 )	return (true);
		else						return (false);
	}
	//--------------------------------------------------
	function success ()
	{
		if ( http == null )			return (false);
		
		if ( (http.readyState == 4) 
		  && (http.status == 200) )	return (true);
		else						return (false);
	}
	//--------------------------------------------------
	function response ()
	{
		if ( http )					return ( http.responseText ) ;
		else						return ( false );
	}
	//--------------------------------------------------
	this.header = function (field)
	{
		return ( http.getResponseHeader(field) );
	}
}
//------------------------------------------------------
//------------------------------------------------------
function ajax_submit (aForm, onSuccess, onFailure)
{
//	alert (1);
	var form;
	if ( typeof(aForm) == "object" )	form = aForm;
	else								form = getFormObject(aForm);
	if ( !form )			return (false);

//	alert (2);
	var url = form.action;
	var params = getQueryString(form);
	if ( url == "" )		return (false);
	
//	alert (3);
	var http = new my_ajax ();	
	http.set_callback ( "on_success", onSuccess );	
	http.set_callback ( "on_failure", onFailure );	
	http.post ( url, params );
//	alert (4);
	return (true);

	//--------------------------------------------------
	function getFormObject(id)
	{
		if (document.getElementById) 	return document.getElementById(id);		
		if (document.all)				return window.document.all[id];
		if (document.layers) 			return window.document.layers[id];
			
		return (null);
	}
	//--------------------------------------------------
	function getQueryString(form) 
	{
    	var qstr     = "form=" + form.name ;  
			
		for(var i = 0; i < form.elements.length; i++)
		{
			var field = form.elements[i].name;
			var value = "";
			if ( form.elements[i].type == "checkbox" )
				 value = form.elements[i].checked.toString();
			else value = form.elements[i].value;
      		if(field && value)	qstr += "&" + field + "=" + value ;	
		}
		return qstr;
	}	
} 
//------------------------------------------------------
//------------------------------------------------------
function sc__ajax_submit (aForm, onSuccess, onFailure)
{
//	alert (1);
	var form = aForm;
	if ( !form )			return (false);
	
//	alert (2);
	var url = form.action;
	var params = getQueryString(form);
	if ( url == "" )		return (false);
//	alert (url);
	
//	alert (3);
	var http = new my_ajax ();	
	http.set_callback ( "on_success", onSuccess );	
	http.set_callback ( "on_failure", onFailure );	
	http.post ( url, params );

//	alert (4);
	return (true);

	//--------------------------------------------------
	function getFormObject(id)
	{
		if (document.getElementById) 	return document.getElementById(id);		
		if (document.all)				return window.document.all[id];
		if (document.layers) 			return window.document.layers[id];
			
		return (null);
	}
	//--------------------------------------------------
	function getQueryString(form) 
	{
    	var qstr     = "form=" + form.name ;  
		var fields   = form.getFields();		
		var count 	 = fields.getLength();
			
		for(var i = 0; i < count; i++)
		{
			var field = fields[i].name;
			var value = amg_escape ( fields[i].getValue() );
			if(field && value)	qstr += "&" + field + "=" + value ;		
		}
		return qstr;
	}	
	//--------------------------------------------------
	function amg_escape ( str )
	{
		var e_str = escape ( str );
		return (e_str.replace(/\+/g, "%2B"));
	}
} 
//------------------------------------------------------
//------------------------------------------------------

