/**
 *
 * OpenHttpRequest
 *
 */
var OpenHttpRequest = {
	
	// xml
	xml : false,
	
	// json
	json : false,
	
	// req
	req : false,
	
	// return types
	return_type : 0,
	return_types : ['json', 'xml'],
	
	// create request
	create_request : function()
	{
		if (window.XMLHttpRequest)
		{
			this.req = new XMLHttpRequest();
			
			if (this.req.overrideMimeType)
			{
				this.req.overrideMimeType('text/xml');
			}
		}
		else if (window.ActiveXObject)
		{
			try
			{
				this.req = new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch(e)
			{
				try
				{
					this.req = new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch(e)
				{
					;
				}
			}
		}
	},
	
	// init progress
	init_progress : function(METHOD, URL, RETURN_TYPE, VARS)
	{
		if ( !this.req )
		{
			this.create_request();
		}
		
		this.return_type = RETURN_TYPE;
		
		if (this.req)
		{
			this.req.open(METHOD, URL, true);
			this.req.onreadystatechange = function(req)
										{
											return function()
											{
												OpenHttpRequest.init_progress_response(req);
											}
										} (this.req);
			
			this.req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset-Windows-1251");
			this.req.send(VARS);
		}
	},
	
	// init progress response
	init_progress_response : function(req)
	{
		if ( req.readyState == 4 )
		{
			if (req.status == 200)
			{
				switch ( this.return_types[this.return_type] )
				{
					case 'json':
						try
						{
							eval('var __JSON__ = ' + req.responseText);
							this.json = __JSON__;
						}
						catch(e)
						{
							//alert('ÎØÈÁÊÀ: '+e.message);
						}
						
						break;
					
					case 'xml':
						//this.xml = OpenXML.load_xml(req.responseText);
						break;
				}
			}
			else
			{
				// error
			}
		}
	}
};