// ü

function AjaxRequest(){
	
	var form = null;
	
	function setForm( a_params ) {
		if(a_params.indexOf('form=') > -1) {
			form = a_params.substring(a_params.indexOf('form=')+5,a_params.length);
			form = form.substring(0,form.indexOf('&'));
		} else {
			form = null;
		}
	}
	
	//-------------------------------------------------------------------------------
	/**
	 * 
	 * @param {Object} a_params
	 * @return void
	 */
	this.send = function( a_params ){
		a_params = setParams( a_params );
		setForm(a_params.params);
		request = getRequest();
		request.onreadystatechange = getReadyStateHandler (request, a_params.onSuccess, a_params.onFailure);
		request.open('POST', a_params.url, true);
		request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		request.send(a_params.params);
	}
	
	//-------------------------------------------------------------------------------
	/**
	 * 
	 * @param {Object} a_params
	 * @return {Object} a_params
	 */
	function setParams( a_params ) {
		a_params.url		= ( !a_params.url )			? "" : a_params.url;
		a_params.params		= ( !a_params.params )		? "" : a_params.params;
		a_params.onFailure	= ( !a_params.onFailure )	? function( error ){} : a_params.onFailure;
		a_params.onSuccess	= ( !a_params.onSuccess )	? function( text, xml ){} : a_params.onSuccess;
		return a_params;
	}
	
	//-------------------------------------------------------------------------------
	/**
	 * @return {Object} xmlhttp
	 */
	function getRequest(){
		var xmlhttp;
		/*@cc_on
		 @if (@_jscript_version >= 5)
		 try {
		 xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		 } catch (e) {
		 try {
		 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		 } catch (E) {
		 xmlhttp = false;
		 }
		 }
		 @else
		 xmlhttp = false;
		 @end @*/
		if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
			try {
				xmlhttp = new XMLHttpRequest();
			} 
			catch (e) {
				xmlhttp = false;
			}
		}
		return xmlhttp;
	}
	
	//-------------------------------------------------------------------------------
	/**
	 * 
	 * @param {Object} a_request
	 * @param {Function} a_successHandlerFnc
	 * @param {Function} a_errorHandlerFnc
	 */
	function getReadyStateHandler(a_request, a_successHandlerFnc, a_errorHandlerFnc){
		return function(){
			if (a_request.readyState == 4) {
				if (a_request.status == 200) {
					a_successHandlerFnc(a_request.responseText, a_request.responseXML);
					// GOOGLE TRACKING
					if (form != null) {
						pageTracker._trackPageview(form);
						form = null;
					}
				} else { a_errorHandlerFnc(a_request.status); }
			}
		}
	}
}
