function imgGalleryInit(){
	document.getElementById(arguments[0]).imgGallery = new imgGalleryConstruct(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4]);
}
function imgGalleryConstruct(){
	this.id = arguments[0];
	this.id_view = arguments[0]+'_view';
	this.position = arguments[1];
	this.position_view = arguments[2];
	this.thumbsLength = arguments[3];
	this.thumbs_viewLength = arguments[4];
	this.lastImg = 0;
	// выгребаем все картинки
	this.thumbs = new Array;
	temp = document.getElementById(this.id).getElementsByTagName('img');
	for(a in temp) if(temp[a].src) this.thumbs.push(temp[a]);
		// формируем структуру основной галереи
		document.getElementById(this.id).className = 'imgGallery'+this.position;
			this.content = '';			
			this.content += '<img class="imgGalleryMainImage" id="'+this.id+'_imgGalleryMainImage" src="'+this.thumbs[0].src+'" alt="'+this.thumbs[0].alt+'" title="'+this.thumbs[0].title+'" onclick=document.getElementById("'+this.id+'").imgGallery.show(true,event) />';
			this.content += '<div class="imgGalleryThumbsContainer">';
				this.content += '<div class="imgGalleryThumbsArrow1" id="'+this.id+'_imgGalleryThumbArrow1" onclick=document.getElementById("'+this.id+'").imgGallery.mainArrowClick(event,"-") ></div>';		
					for(x in this.thumbs){
						if(x<this.thumbsLength) stl = "display:block"; else stl = "display:none"; 
						this.content += '<img style="'+stl+'" id="'+this.id+'_inum_'+x+'" src="'+this.thumbs[x].getAttribute('previewSrc')+'" alt="'+this.thumbs[x].alt+'" title="'+this.thumbs[x].title+'" onclick=document.getElementById("'+this.id+'").imgGallery.tClick(event,true,'+x+') />';
					}
				this.content += '<div class="imgGalleryThumbsArrow2" id="'+this.id+'_imgGalleryThumbArrow2" onclick=document.getElementById("'+this.id+'").imgGallery.mainArrowClick(event,"+") ></div>';	
			this.content += '</div>';
		document.getElementById(this.id).innerHTML = this.content;
		// формируем структуру вторичной галереи
		div = document.createElement('div');
			div.setAttribute("id",''+this.id_view+'_cover');
			div.setAttribute("class","imgGalleryCover");
			div.setAttribute("style","display:none");
				this.content = '';
				this.content = '<div id="'+this.id_view+'" class="imgGallery'+this.position_view+'">'; //imgGalleryDsNone			
				this.content += '<div class="imgGalleryCloseButton" onclick=document.getElementById("'+this.id+'").imgGallery.show(false,event)></div>'
					//
					// [### NEW ###]
					//
					//  this.thumbs[0].src -> this.thumbs[0].getAttribute('enlarged')+
					this.content += '<img class="imgGalleryMainImage" id="'+this.id_view+'_imgGalleryMainImage" src="'+this.thumbs[0].getAttribute('enlarged')+'" alt="'+this.thumbs[0].alt+'" title="'+this.thumbs[0].title+'" onclick=document.getElementById("'+this.id+'").imgGallery.nextClick(event) />';
					this.content += '<div class="imgGalleryThumbsContainer">';
						this.content += '<div class="imgGalleryThumbsArrow1" id="'+this.id_view+'_imgGalleryThumbArrow1" onclick=document.getElementById("'+this.id+'").imgGallery.viewArrowClick(event,"-") ></div>';		
							for(x in this.thumbs){
								if(x<this.thumbs_viewLength) stl = "display:block"; else stl = "display:none";
								//
								// [### NEW ###]
								//
								//  this.thumbs[x].getAttribute('previewSrc') -> this.thumbs[x].getAttribute('previewEnlargedSrc')+
								this.content += '<img style="'+stl+'" id="'+this.id_view+'_inum_'+x+'" src="'+this.thumbs[x].getAttribute('previewEnlargedSrc')+'" alt="'+this.thumbs[x].alt+'" title="'+this.thumbs[x].title+'" onclick=document.getElementById("'+this.id+'").imgGallery.tClick(event,false,'+x+') />';
							}
						this.content += '<div class="imgGalleryThumbsArrow2" id="'+this.id_view+'_imgGalleryThumbArrow2" onclick=document.getElementById("'+this.id+'").imgGallery.viewArrowClick(event,"+") ></div>';	
					this.content += '</div>';
				this.content += '</div>';
			div.innerHTML = this.content;
		document.body.appendChild(div);
		this.thumbsMainPos = this.thumbsLength-1;
		this.thumbsViewPos = this.thumbs_viewLength-1;
		this.thumbsMainCurrent = 0;
		this.thumbsViewCurrent = 0;
		this.tClick(false,true,0,true);
		this.mainArrowClick(false,'0');
		this.viewArrowClick(false,'0');
}
imgGalleryConstruct.prototype.show = function(a,e){
	//
	// [### NEW ###]
	//
	// calculate window content size
    var arrayPageSize = imgGalleryGetPageSize();

	if(a) {
		//
		// [### NEW ###]
		//
		var cover_block = document.getElementById(this.id_view+'_cover');
		cover_block.style.width = arrayPageSize[0] + 'px';
		cover_block.style.height = arrayPageSize[1] + 'px';
		cover_block.style.display = 'block';
	}
	else {
		document.getElementById(this.id_view+'_cover').style.display= 'none';
	}
	
//	document.getElementById(this.id_view+'_imgGalleryMainImage').src = document.getElementById(this.id+'_imgGalleryMainImage').src;
	if(e) imgGalleryStopEvent(e);
	}
imgGalleryConstruct.prototype.tClick = function(e,p,z,g){

	if(document.getElementById(this.id_view+'_inum_'+z).style.display=='none'){
		if(z<this.thumbsViewPos) while(document.getElementById(this.id_view+'_inum_'+z).style.display=='none') this.viewArrowClick(false,'-');
		if(z>this.thumbsViewPos) while(document.getElementById(this.id_view+'_inum_'+z).style.display=='none') this.viewArrowClick(false,'+');
	}
		//
		// [### NEW ###]
		//
		//document.getElementById(this.id_view+'_imgGalleryMainImage').src=this.thumbs[z].src;
		document.getElementById(this.id_view+'_imgGalleryMainImage').src=this.thumbs[z].getAttribute('enlarged');
		document.getElementById(this.id_view+'_inum_'+this.thumbsViewCurrent).className = '';			
		document.getElementById(this.id_view+'_inum_'+z).className = 'imgGalleryThumbCurrent';
		this.thumbsViewCurrent = z;
		if(p){
			//document.getElementById(this.id+'_imgGalleryMainImage').src=this.thumbs[z].src;
			// Отключил предыдущую строку, чтобы основная картинка не менялась. Но вообще, оно должно бы выглядеть так:
			// document.getElementById(this.id+'_imgGalleryMainImage').src=this.thumbs[z].getAttribute('enlarged');
			if(!g)this.show(true);
			document.getElementById(this.id+'_inum_'+this.thumbsMainCurrent).className = '';			
			document.getElementById(this.id+'_inum_'+z).className = 'imgGalleryThumbCurrent';
			this.thumbsMainCurrent = z;
		}
		this.lastImg = z;
		if(e) imgGalleryStopEvent(e);		
}
imgGalleryConstruct.prototype.nextClick = function(e){
	if(this.lastImg<this.thumbs.length-1)this.lastImg++;
	//document.getElementById(this.id_view+'_imgGalleryMainImage').src=this.thumbs[this.lastImg].src;
	document.getElementById(this.id_view+'_imgGalleryMainImage').src=this.thumbs[this.lastImg].getAttribute('enlarged');
	document.getElementById(this.id_view+'_inum_'+this.thumbsViewCurrent).className = '';			
	document.getElementById(this.id_view+'_inum_'+this.lastImg).className = 'imgGalleryThumbCurrent';
	this.thumbsViewCurrent = this.lastImg;
	if(document.getElementById(this.id_view+'_inum_'+this.lastImg).style.display=='none'){

		if(this.thumbs[this.thumbsViewPos+1]!=null){
			this.thumbsViewPos++;
			document.getElementById(this.id_view+'_inum_'+this.thumbsViewPos).style.display = 'block';
			document.getElementById(this.id_view+'_inum_'+(this.thumbsViewPos - this.thumbs_viewLength)).style.display = 'none';
		}
		if(this.thumbsViewPos==(this.thumbs.length-1))document.getElementById(this.id_view+'_imgGalleryThumbArrow2').className +=' disabled';
		else document.getElementById(this.id_view+'_imgGalleryThumbArrow2').className ='imgGalleryThumbsArrow2';
		if((this.thumbsViewPos-this.thumbs_viewLength+1)==0)document.getElementById(this.id_view+'_imgGalleryThumbArrow1').className +=' disabled';
		else document.getElementById(this.id_view+'_imgGalleryThumbArrow1').className ='imgGalleryThumbsArrow1';
		
	}
	if(e) imgGalleryStopEvent(e);		
}
imgGalleryConstruct.prototype.mainArrowClick = function(e,b){
		pos = 0;
		maxPos = this.thumbsLength;		
	if(b=='+'){
		while(pos<maxPos){
			if(this.thumbs[this.thumbsMainPos+1]!=null){
				this.thumbsMainPos++;
				document.getElementById(this.id+'_inum_'+this.thumbsMainPos).style.display = 'block';
				document.getElementById(this.id+'_inum_'+(this.thumbsMainPos - this.thumbsLength)).style.display = 'none';
			}
			pos++;
		}	
	}
	if(b=='-'){
		while(pos<maxPos){
			if(this.thumbs[(this.thumbsMainPos - this.thumbsLength)]!=null){
				document.getElementById(this.id+'_inum_'+this.thumbsMainPos).style.display = 'none';
				document.getElementById(this.id+'_inum_'+(this.thumbsMainPos - this.thumbsLength)).style.display = 'block';
				this.thumbsMainPos--;
			}
			pos++;
		}		
	}	
	if(this.thumbsMainPos==(this.thumbs.length-1))document.getElementById(this.id+'_imgGalleryThumbArrow2').className +=' disabled';
	else document.getElementById(this.id+'_imgGalleryThumbArrow2').className ='imgGalleryThumbsArrow2';
	if((this.thumbsMainPos-this.thumbsLength+1)==0)document.getElementById(this.id+'_imgGalleryThumbArrow1').className +=' disabled';
	else document.getElementById(this.id+'_imgGalleryThumbArrow1').className ='imgGalleryThumbsArrow1';
	if(e) imgGalleryStopEvent(e);		
}
imgGalleryConstruct.prototype.viewArrowClick = function(e,b){
		pos = 0;
		maxPos = this.thumbs_viewLength;	
	if(b=='+'){
		while(pos<maxPos){
			if(this.thumbs[this.thumbsViewPos+1]!=null){
				this.thumbsViewPos++;
				document.getElementById(this.id_view+'_inum_'+this.thumbsViewPos).style.display = 'block';
				document.getElementById(this.id_view+'_inum_'+(this.thumbsViewPos - this.thumbs_viewLength)).style.display = 'none';
			}
			pos++;
		}	
	}
	if(b=='-'){
		while(pos<maxPos){
			if(this.thumbs[(this.thumbsViewPos - this.thumbs_viewLength)]!=null){
				document.getElementById(this.id_view+'_inum_'+this.thumbsViewPos).style.display = 'none';
				document.getElementById(this.id_view+'_inum_'+(this.thumbsViewPos - this.thumbs_viewLength)).style.display = 'block';
				this.thumbsViewPos--;
			}
			pos++;
		}		
	}
	if(this.thumbsViewPos==(this.thumbs.length-1))document.getElementById(this.id_view+'_imgGalleryThumbArrow2').className +=' disabled';
	else document.getElementById(this.id_view+'_imgGalleryThumbArrow2').className ='imgGalleryThumbsArrow2';
	if((this.thumbsViewPos-this.thumbs_viewLength+1)==0)document.getElementById(this.id_view+'_imgGalleryThumbArrow1').className +=' disabled';
	else document.getElementById(this.id_view+'_imgGalleryThumbArrow1').className ='imgGalleryThumbsArrow1';
	if(e) imgGalleryStopEvent(e);		
}
function imgGalleryStopEvent(e){
	if(e.stopPropagation) e.stopPropagation();
	else e.cancelBubble = true;
	if(e.preventDefault) e.preventDefault();
	else e.returnValue = false;
}

//
// [### NEW ###]
//
function imgGalleryGetPageSize() {
	        
     var xScroll, yScroll;
		
		if (window.innerHeight && window.scrollMaxY) {	
			xScroll = window.innerWidth + window.scrollMaxX;
			yScroll = window.innerHeight + window.scrollMaxY;
		} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
			xScroll = document.body.scrollWidth;
			yScroll = document.body.scrollHeight;
		} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
			xScroll = document.body.offsetWidth;
			yScroll = document.body.offsetHeight;
		}
		
		var windowWidth, windowHeight;
		
		if (self.innerHeight) {	// all except Explorer
			if(document.documentElement.clientWidth){
				windowWidth = document.documentElement.clientWidth; 
			} else {
				windowWidth = self.innerWidth;
			}
			windowHeight = self.innerHeight;
		} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
			windowWidth = document.documentElement.clientWidth;
			windowHeight = document.documentElement.clientHeight;
		} else if (document.body) { // other Explorers
			windowWidth = document.body.clientWidth;
			windowHeight = document.body.clientHeight;
		}	
		
		// for small pages with total height less then height of the viewport
		if(yScroll < windowHeight){
			pageHeight = windowHeight;
		} else { 
			pageHeight = yScroll;
		}
	
		// for small pages with total width less then width of the viewport
		if(xScroll < windowWidth){	
			pageWidth = xScroll;		
		} else {
			pageWidth = windowWidth;
		}

		return [pageWidth,pageHeight];
}
