﻿
if (typeof Xercel == "undefined" || ! Xercel) {
	Xercel = {};
}

var Locale = null;
if (typeof Xercel.Locale != "undefined" && Xercel.Locale) {
	Locale = Xercel.Locale;
}



Xercel.Ajax = function(method, url, asynch, successHandler, failureHandler) {

	var ua = YAHOO.env.ua;
	var sjax = ! asynch && ((ua.gecko && ua.gecko >= 1.8) || ua.webkit);
	var request = new Xercel.Ajax.HttpRequest();
	if ( ! request ) {
		Xercel.Ajax.notSupported = true;
		if ( failureHandler ) {
			if (Locale) {
    			failureHandler(Locale.AJAX_NOT_SUPPORTED);
    		} else {
    			failureHandler("Не получилось создать запрос, возможно Ваш браузер не поддержиавет технологию AJAX");
    		}
		}
	}

	function parseResponse( request ) {
		var pairs = request.responseText.split('&');
		var hashtable = new Array();
		for (var i = 0; i < pairs.length; i = i + 1) {
			var indxKey = pairs[i].indexOf('=');
			if (indxKey > 0) {
				var key = unescape(pairs[i].substring(0, indxKey));
				var value = pairs[i].substring(indxKey + 1);
				hashtable[key] = Xercel.unescape(value);
			}
		}
		successHandler( hashtable );
	}


	this.send = function( data ) {
		if (Xercel.Ajax.notSupported) {
			return false;
		}

	    request.open(method, url, asynch);
	    request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
	    if ( ! sjax) {
	    	request.onreadystatechange = function() {
				var req = request || this;
				if (req.readyState == 4) {
					if (req.status == 200) {
						parseResponse( req );
					} else {
						if ( failureHandler ) {
							if (Locale) {
								failureHandler(Locale.AJAX_SERVER_ERROR + req.status);
							} else {
								failureHandler("Поизошла ошибка при получении ответа от сервера, используя технологию AJAX." +
									" Код ошибки: " + req.status);
							}
						}
						Xercel.Ajax.notSupported = true;
					}
				}
			};
		}
	    request.send(data);
	    if (sjax) {
	    	parseResponse(request);
	    }
	    
	    return ! Xercel.Ajax.notSupported;
	};

};

Xercel.Ajax.notSupported = false;

Xercel.Ajax.HttpRequest = function() {
	if (typeof XMLHttpRequest != "undefined" && XMLHttpRequest) {
		return new XMLHttpRequest();
	}
	
	var request = null
	try {
		request = new ActiveXObject('Msxml2.XMLHTTP');
	} catch (e) {}
	if ( ! request) {
		try {
			request = new ActiveXObject("Msxml2.XMLHTTP.3.0");
		} catch (e) {}
	}
	if ( ! request) {
		try {
			request = new ActiveXObject('Microsoft.XMLHTTP');
		} catch (e) {}
	}
	
	return request;
};


