function myajax()
{
if(window.XMLHttpRequest){
request = new XMLHttpRequest();
}
else if (window.ActiveXObject) { // IE
try {
request = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
request = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {}
}
}
if (!request) {
alert('Невозможно создать экземпляр класса XMLHTTP');
return false;
}
if (request.overrideMimeType) {
request.overrideMimeType('text/xml');
}
this.request = request;
this.indicator = null;
this.onsuccess = null;
this.onError = function()
{
alert('Error: ' + this.request.status + ' ' + this.request.statusText);
}
/*this.callback = function()
{
if(request.readyState != 4) return;
if(request.status == 200)
{
if(this.onsuccess) this.onsuccess();
else alert(request.responseText);
}
else
{
if(this.onError) this.onError();
else alert(request.statusText);
}
}*/
this.setType = function(type)
{
this.request.overrideMimeType(type);
}
this.setIndicator = function(src)
{
var img = new Image();
img.src = src;
this.indicator = src;
}
this.load = function(url,target)
{
if(this.indicator) document.getElementById(target).innerHTML = '
';
if(url.indexOf('?') == -1)
{
url += '?';
}
else
{
url += '&';
}
url += 'ajax=1';
this.request.open('get',url,true);
this.request.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
this.request.send(null);
//this.request.onreadystatechange = this.callback;
onError = this.onError;
this.request.onreadystatechange = function()
{
//alert(request.getResponseHeader('Content-type'));
//alert(request.status);
if(request.readyState != 4) return;
if(request.status == 200)
{
if(request.getResponseHeader('Content-type') == 'text/xml')
{
var elems = request.responseXML.getElementsByTagName('set');
for(i=0;i 0)*/ elem.innerHTML = request.responseText;
elem.scrollIntoView();
}
}
else
{
onError();
}
}
}
this.serializeform = function(formname)
{
var form = document.forms[formname];
var elements = form.elements;
var paramstr = '';
var params = new Array();
for(i = 0; i < elements.length; i++)
{
//alert(elements[i].value);
if(elements[i].name)
{
if(elements[i].type != 'checkbox' && elements[i].type != 'radio') params[elements[i].name] = encodeURIComponent(elements[i].value);
else
{
if(elements[i].checked) params[elements[i].name] = encodeURIComponent(elements[i].value);
}
/*if(paramstr != '') paramstr += '&';
paramstr += elements[i].name + '=' + encodeURIComponent(elements[i].value);*/
}
}
params['ajax'] = 1;
for(name in params)
{
if(paramstr != '') paramstr += '&' + name + '='+ params[name];
else paramstr += name + '='+ params[name];
}
return paramstr;
}
this.submitform = function(formname,target)
{
var form = document.forms[formname];
var action = null;
if(!form.action) action = window.location;
else action = form.action;
var params = this.serializeform(formname);
var url = action;
var data = null;
var method = null;
if(!form.method) method = 'get';
else method = form.method;
if(method == 'get') url += '?' + params;
else data = params;
if(this.indicator)
{
if(document.getElementById(target)) document.getElementById(target).innerHTML = '
';
}
this.request.open(method,url,true);
if(method == 'get') this.request.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
if(method == 'post') this.request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
onError = this.onError;
this.request.onreadystatechange = function()
{
if(request.readyState != 4) return;
if(request.status == 200)
{
if(request.getResponseHeader('Content-type').indexOf('text/xml') != -1)
{
var elem = document.getElementById(target);
elem.innerHTML = '';
elem.scrollIntoView();
var elems = request.responseXML.getElementsByTagName('set');
for(i=0;i 0)*/ elem.innerHTML = request.responseText;
}
}
else
{
onError();
}
}
this.request.send(data);
}
return this;
}
var ajax = new myajax();