//автор Шапошник Евгений (e+shaposhnik.net)
var cajax = Class.extend({
	
	xhr	: null,
	url : null,
	answer : '',
	
	params : false,
	method : 'get',
	POST	: new Array(),
	GET		: new Array(),
	inObj	: null,

	technologi: 
		function () {
 			if (window.XMLHttpRequest) {
    			try {
      				myAjax.xhr = new XMLHttpRequest();
    			} catch(e) {}
  			} else if (window.ActiveXObject) {
    			try {
      				myAjax.xhr = new ActiveXObject("Msxml2.XMLHTTP");
    		} catch(e) {
      			try {
        				myAjax.xhr = new ActiveXObject("Microsoft.XMLHTTP");
      				} catch(e) {}
    		}
  			}
		},
	
	request:
		function (url) {
				myAjax.url = url;

				myAjax.xhr = false;
				myAjax.technologi();

				if (myAjax.xhr) {
						myAjax.xhr.onreadystatechange = myAjax.onchange;
						myAjax.send(myAjax.post);
				}
		},
		
	send: 
		function () {
			
			
				if (myAjax.method.match(/get/i)) {
						url = myAjax.url;
						url += "?";
						for (v in myAjax.GET)	{
								url += v + "=" + encodeURIComponent(myAjax.GET[v]) + "&"; 
						}

						try {
		    					myAjax.xhr.open("GET", url, true);
		    					post = null;
						} catch (e) {}
				} else {
					    myAjax.xhr.open("POST", myAjax.url, true);
					    post = "";
						for (v in myAjax.POST) {
								post += v + "=" + encodeURIComponent(myAjax.POST[v]) + "&";
						}
					    
    					myAjax.xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    					myAjax.xhr.setRequestHeader("Content-Length", post.length);
				}

				myAjax.xhr.send(post);
				myAjax.POST = new Array();
				myAjax.GET = new Array();
		},
	
	setPOST:
		function (name, value) {
				myAjax.method = 'post';
				myAjax.POST[name] = value;
				myAjax.POST.length++;
			return true;
		},
		
	setGET:
		function (name, value) {
				myAjax.method = 'get';
				myAjax.GET[name] = value;
				myAjax.GET.length++;
			return true;
		},	
		
	onchange: 
		function () {
				if (myAjax.xhr.readyState == 4) {
			        	if (myAjax.xhr.status == 200) {
			        			
          						if (myAjax.onSuccess) {
            							myAjax.onSuccess(myAjax.xhr.responseText);
          						}
          						
          						myAjax.answer = myAjax.xhr.responseText;
          						if (myAjax.inObj) {
          							if (document.getElementById(myAjax.inObj)) {
          									document.getElementById(myAjax.inObj).innerHTML = myAjax.answer;
          									myAjax.inObj = "";
          							} else {
          									alert('Not found object: ' + $myAjax.inObj + "!");
          							}
          						}
        				} else {
          						if (myAjax.onFail) {
            							myAjax.onFail();
          						}
        				}
      			} else {
        				if (myAjax.onStatus) {
          						myAjax.onStatus();
        				}
      			}
		},
	
	uploadfile:
		function (f) {
				//window.frames['iloadajax'].document.forms[0].fileajax.value = document.getElementById(objID).value;
		}
		
});

var myAjax = new cajax();
