function ImagePreloader(callback)
{
	//
	//console.log(document.images.loader.src)
	/*for (var i=0; i<document.images.length;i++) {
		console.log(document.images[i])
	}*/

	var loading = document.getElementById("loading").style;
	
	loading.opacity = 1
	loading.filter = 'alpha(opacity = 100)'
	loading.display = "block"
	//$('loading').show()
	//alert(myXml);
	//myXml =  req.responseXML.documentElement;
	var oTop = document.getElementsByName("refMenu")
	//alert(oTop);
	for (var i=0; i<oTop.length;i++) {
		//alert(oTop[i])
		if (oTop[i].checked) {
			var oCurrent = oTop[i].value
		}
	}						
	var oGalleries  = myXml.getElementsByTagName('gallery');
	for (var i=0; i<oGalleries.length;i++) {
		if (oGalleries[i].getAttribute("name") == oCurrent) {
			var oGallery =oGalleries[i]
			//alert(oGallery.getAttribute("name"));
		}
	}
	var images = new Array();
	var Comments = new Array();
	for (var i=0;i< oGallery.childNodes.length;i++){
		if (oGallery.childNodes[i].nodeType !=3){
			var oImg = oGallery.childNodes.item(i);
			var oImgUrl = oImg.getAttribute("url");
			var oCmt = oImg.getAttribute("comment");				
			images.push(oImgUrl);
			aComments.push(oCmt);
			if (oImg.getAttribute("video")){
				isVideo.push(oImg.getAttribute("video"));
			}
			else
			{
				isVideo.push(false);			
			}
		}
	}
   // store the call-back
   this.callback = callback;
 
   // initialize internal state.
   this.nLoaded = 0;
   this.nProcessed = 0;
   this.aImages = new Array;
   // record the number of images.
   this.nImages = images.length;
 
   // for each image, call preload()
   for ( var i = 0; i < images.length; i++ ){
      this.preload(images[i]);
	  }
}

ImagePreloader.prototype.preload = function(image)
{
   // create new Image object and add to array
   var oImage = new Image;
   this.aImages.push(oImage);
   //alert (this.aComments[0])
   // set up event handlers for the Image object
   oImage.onload = ImagePreloader.prototype.onload;
   oImage.onerror = ImagePreloader.prototype.onerror;
   oImage.onabort = ImagePreloader.prototype.onabort; 

   // assign pointer back to this.
   oImage.oImagePreloader = this;
   oImage.bLoaded = false;  

   // assign the .src property of the Image object
   oImage.src = image;
}

ImagePreloader.prototype.onComplete = function()
{
   this.nProcessed++;
   if ( this.nProcessed == this.nImages )
   {
      this.callback(this.aImages, this.nLoaded);
   }
}

ImagePreloader.prototype.onload = function()
{
   this.bLoaded = true;
   this.oImagePreloader.nLoaded++;
   this.oImagePreloader.onComplete();
}

ImagePreloader.prototype.onerror = function()
{
   this.bError = true;
   this.oImagePreloader.onComplete();
}

ImagePreloader.prototype.onabort = function()
{
   this.bAbort = true;
   this.oImagePreloader.onComplete();
}