var ajaxImagePreloader = {
	collectionImage : undefined,
	loadCounter : -1,
	http_request : undefined,
	callBackFunction : undefined,
	http_request : undefined,
	createRequestObject : function(){
		if (window.XMLHttpRequest) {
			try {
				return new XMLHttpRequest();
			} catch (e){}
		} else if (window.ActiveXObject) {
			try {
				return new ActiveXObject('Msxml2.XMLHTTP');
			} catch (e){}
			try {
				return new ActiveXObject('Microsoft.XMLHTTP');
			} catch (e){}
		}
		return null;
	},
	makeRequest : function(url){
		ajaxImagePreloader.http_request = ajaxImagePreloader.createRequestObject();
		if (!ajaxImagePreloader.http_request) {
			alert('Не вышло  Невозможно создать экземпляр класса XMLHTTP ');
			return false;
		}

		ajaxImagePreloader.http_request.onreadystatechange = ajaxImagePreloader.preloadImage;
		
		ajaxImagePreloader.http_request.open('GET', url, true);
		ajaxImagePreloader.http_request.send(null);
		return null;
	},
	preloadImage : function(){
		if(ajaxImagePreloader.loadCounter == -1){
			ajaxImagePreloader.loadCounter++;
			if ( ajaxImagePreloader.loadCounter < ajaxImagePreloader.collectionImage.length ){
				ajaxImagePreloader.makeRequest(ajaxImagePreloader.collectionImage[ajaxImagePreloader.loadCounter]);
			}
		}else{
			if (ajaxImagePreloader.http_request.readyState == 4) {
				ajaxImagePreloader.loadCounter++;
				if ( ajaxImagePreloader.loadCounter < ajaxImagePreloader.collectionImage.length ){
					ajaxImagePreloader.makeRequest(ajaxImagePreloader.collectionImage[ajaxImagePreloader.loadCounter]);
				}else{
					ajaxImagePreloader.callBackFunction();
				}
			}
		}
		return null;
	},
	init : function(collectionImage, callBackFunction){
		if (!collectionImage){
			alert('Не правильно задан массив картинок!');
			return false;
		}else{
			ajaxImagePreloader.collectionImage = collectionImage;
		}
		if (!callBackFunction){
			alert('Не верно задана функция обратного вызова!');
			return false;
		}else{
			ajaxImagePreloader.callBackFunction = callBackFunction;
		}
		
		ajaxImagePreloader.preloadImage();
		return true;
	}
}