var req; // Объект XMLHttpRequest
var callback =  new Array; // массив с данными для вызываемой через AJAX  функции

function ajax(url,method,post,upload) {
	if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
    }
	if (req) {
		req.onreadystatechange = processReqChange;
        req.open(method, url, true);
		req.setRequestHeader("Cache-Control","no-store, no-cache, must-revalidate");
		req.setRequestHeader("Cache-Control","post-check=0, pre-check=0");
		if (method.toLowerCase()=='post') {
			enctype = (upload != true)?"application/x-www-form-urlencoded":"multipart/form-data";
			req.setRequestHeader("Content-Type",enctype);
			req.send(post);
		}
		else {
			req.send(null);
		}
	}
	else {
		// AJAX не пашет, работаем как обычно
		if (method=='GET') {
			window.location=url;
		}
		else {
			document.getElementById('adminForm').submit();
		}
	}
}

function processReqChange() {
	if (req.readyState == 1) {
		// картинка меняется
	}
	if (req.readyState == 2) {
		
	}
	if (req.readyState == 3) {
		
	}
	if (req.readyState == 4) {
		if (req.status == 200) {
			response();
			// картинка меняется
        } else {
           	alert("Ошибка HTTP запроса, ответ:\n" + req.statusText);
        }
		callback = new Array;
	}
}

function post(url,data) {
	ajax(url,'POST',encodeURI(data));
}

function get(url) {
	ajax(url,'GET');
}

// Собираем данные формы для поста
function dataConstruct(f) {	
	var aParam = new Array();
	for (i=0;i<f.length;i++) {
		if ((f.elements[i].type=='checkbox' || f.elements[i].type=='radio') && f.elements[i].checked==true || f.elements[i].type=='text' || f.elements[i].type=='hidden' ||  f.elements[i].type=='password' ||  f.elements[i].type=='textarea' ||  f.elements[i].type=='select-one' || f.elements[i].type=='file') {
			aParam.push(encodeURIComponent(f.elements[i].name)+'='+encodeURIComponent(f.elements[i].value));
		}
	}
	return aParam.join('&');
}

