//Не воровать скрипт! все равно заметим!
var slideShowSpeed = 5500;//Примерно 5500 по умолчанию
var crossFadeDuration = 2100;//Плавность, чем больше, тем медленнее и плавнее
var startOpacityDegree = 10;
var mapSwapOpacityDegree = 50;
var WologdaPic = new Array();
var timerSet = false;
var preLoad = new Array();
var domBrowser=(document.getElementById)
var activeCanvas;
var activeImageMap;
var otherCanvas;
var opacityDegree;
var opacityUsed;
var opacityDegreeDelta;
var crossfadeFunc; 
var innerMapSwapOpacityDegree;
var opacity100=false;

var slideshowTimer;

var activeImage=0;
var activeImageHTML='';

var inited=false;

function writeSlideShowCode(slideshowWidth, slideshowHeight,fadebgcolor) {

var opacityFrac;

opacityFrac=startOpacityDegree/100;

if (domBrowser) {
  document.write('<div id="master" style="position:relative;width:'+slideshowWidth+'px;height:'+slideshowHeight+'px;overflow:hidden;">');
	if (fadebgcolor==undefined) {
    document.write('<div id="canvas0" style="position:absolute;width:'+slideshowWidth+'px;height:'+slideshowHeight+'px;top:0;left:0;filter:progid:DXImageTransform.Microsoft.alpha(opacity='+startOpacityDegree+');opacity: '+opacityFrac+';-moz-opacity:'+opacityFrac+';-khtml-opacity:'+opacityFrac+';"></div>');
    document.write('<div id="canvas1" style="position:absolute;width:'+slideshowWidth+'px;height:'+slideshowHeight+'px;top:0;left:0;filter:progid:DXImageTransform.Microsoft.alpha(opacity='+startOpacityDegree+');opacity: '+opacityFrac+';-moz-opacity:'+opacityFrac+';-khtml-opacity:'+opacityFrac+';"></div>');
		}
	 else {	
    document.write('<div id="canvas0" style="position:absolute;width:'+slideshowWidth+'px;height:'+slideshowHeight+'px;top:0;left:0;filter:progid:DXImageTransform.Microsoft.alpha(opacity='+startOpacityDegree+');opacity: '+opacityFrac+';-moz-opacity:'+opacityFrac+';-khtml-opacity:'+opacityFrac+';background-color:'+fadebgcolor+'"></div>');
    document.write('<div id="canvas1" style="position:absolute;width:'+slideshowWidth+'px;height:'+slideshowHeight+'px;top:0;left:0;filter:progid:DXImageTransform.Microsoft.alpha(opacity='+startOpacityDegree+');opacity: '+opacityFrac+';-moz-opacity:'+opacityFrac+';-khtml-opacity:'+opacityFrac+';background-color:'+fadebgcolor+'"></div>');
		}
	document.write('</div>');
  }
 else
  document.write('<div><img name="defaultslide" src="'+WologdaPic[activeImage][0]+'"></div>');
}

function initSlideShow(in_StartImage, in_RunSlideShow) {
 
 if (inited) return;
 
 inited=true; 

 if (in_StartImage==-1)
   activeImage=_selectRandomWologdaPic();
  else
   activeImage=in_StartImage;

 activeCanvas=document.getElementById('canvas1');
 otherCanvas=document.getElementById('canvas0'); 	
 crossfadeFunc='';
 if (domBrowser) {
    if (activeCanvas.filters&&activeCanvas.filters[0]) { 
		  opacity100=true;
		  opacityDegree=100;
      if (typeof activeCanvas.filters[0].opacity=="number") 
        crossfadeFunc='_ieCrossfade()';
       else
        crossfadeFunc='_oldieCrossfade()';
      }
     else {
		  opacityDegree=1.0; 
		  if (activeCanvas.style.opacity) {  
        if (activeCanvas.style.MozOpacity) {
				  var l_TmpStr=navigator.userAgent;
					var l_Pos=l_TmpStr.indexOf('rv:');
					crossfadeFunc='_mozillaCrossfade()';
					if (l_Pos!=-1) {
					  l_TmpStr=l_TmpStr.substring(l_Pos+3,l_TmpStr.length-1);
						if (parseFloat(l_TmpStr)>=1.8)
						  crossfadeFunc='_css3Crossfade()'; 
						}	
				  }
				else	
  			 crossfadeFunc='_css3Crossfade()';
				}
       else if (activeCanvas.style.MozOpacity) 
        crossfadeFunc='_mozillaCrossfade()';
       else if (activeCanvas.style.KhtmlOpacity) 
        crossfadeFunc='_konquerorCrossfade()';
			}	
   }
 _populateImage(WologdaPic[activeImage][0],WologdaPic[activeImage][1],activeImage);
 if (domBrowser) _setOpacity(activeCanvas,100);
	 
 if (in_RunSlideShow) 
   runSlideShow();
 _preloadSlideShow();
}

function runSlideShow() {
 if (timerSet!=true) {
   slideshowTimer = setInterval('_slideImage()', slideShowSpeed);
   timerSet = true;
	 }
}

function stopSlideShow() {
 var l_AferCheck = (timerSet) && (crossfadeFunc!='') && ( (opacity100&&(opacityDegree<100)) || (!opacity100 && (opacityDegree<1)) );
 _doStopSlideShow();
  if (l_AferCheck && (activeImageMap!=WologdaPic[activeImage][1]))
   _populateImage(preLoad[activeImage].src,WologdaPic[activeImage][1],-1);
}

function showImage(in_ImageSrc, in_ImageMap) {
 var picCount;
 var i=0;

 picCount = WologdaPic.length;
 while ((i < picCount)&&(in_ImageSrc!=WologdaPic[i][0])) i++;

 _doStopSlideShow();
 if (i < picCount) _populateImage(in_ImageSrc, in_ImageMap, i);
  else _populateImage(in_ImageSrc, in_ImageMap, -1);
}

function showImageByIndex(in_ImageIndex) {
 _doStopSlideShow();
 _populateImage(preLoad[in_ImageIndex].src,WologdaPic[in_ImageIndex][1],in_ImageIndex); 
}

function picRefresh() {
 var l_Started = (timerSet!=undefined);
 if (l_Started)
   stopSlideShow();
 preLoad=new Array();
  _preloadSlideShow(); 
 activeImage=WologdaPic.length-1;	
 if (l_Started)
   runSlideShow();
}

function _doStopSlideShow() {
 if (timerSet) {
   clearInterval(slideshowTimer);
   timerSet = false;
	 if (opacity100) {
     if (opacityDegree!=100) { 
 	     opacityDegree=100;	
       _setOpacity(activeCanvas,100);
       _setOpacity(otherCanvas,0);
	     }
     }
	  else {
     if (opacityDegree!=1) {
 	     opacityDegree=1;	
       _setOpacity(activeCanvas,100);
       _setOpacity(otherCanvas,0);
	     }
	   }
   }	 	 
}

function _populateImage(in_ImageSrc, in_ImageMap, in_ImageIndex) {

 if (domBrowser)
   _setImageINNERHTML(in_ImageSrc, in_ImageMap);
	else {
   	 if (activeImageHTML!=in_ImageSrc) {
	   activeImageHTML=in_ImageSrc;
   	 document["defaultslide"].src = in_ImageSrc;
		 }
	 if (document["defaultslide"].map) 	 
  	 document["defaultslide"].map = in_ImageMap;
	 
	 } 
 if (in_ImageIndex!=-1)
   activeImage=in_ImageIndex;
}

function _setImageINNERHTML(in_ImageSrc, in_ImageMap) {
 var l_Html;
 l_Html='<img src="'+in_ImageSrc+'" BORDER="0';
 if ((in_ImageMap!=undefined)&&(in_ImageMap!='')) {
   l_Html=l_Html+'" USEMAP="'+in_ImageMap;
	 activeImageMap=in_ImageMap;
	 }
	else
	 activeImageMap=''; 
 l_Html=l_Html+'">';	  
 if (activeImageHTML!=l_Html) {
	 activeImageHTML=l_Html; 	  
   activeCanvas.innerHTML=l_Html;
	 }
}

function _selectRandomWologdaPic() {
 var allowedCount;
 var randPool = new Array();
 var poolPos = 0;
 
 allowedCount = WologdaPic.length;
 for (i = 0; i < allowedCount; i++) {
   if (WologdaPic[i][2]) {
		 randPool[poolPos] = i;
		 poolPos++;
		 };
   }
 if (poolPos>0)
   return randPool[parseInt(Math.random()*(poolPos))];
  else
   return 0;
}

function _preloadSlideShow() {
 var picCount;
 picCount = WologdaPic.length;
  for (i = 0; i < picCount; i++) {
   preLoad[i] = new Image();
   preLoad[i].src = WologdaPic[i][0];
	 	 if ((WologdaPic[i][1])==undefined) (WologdaPic[i][1])='';
   }
}

function _css3Crossfade() {
 opacityDegree+=opacityDegreeDelta;
 if (opacityDegree>=innerMapSwapOpacityDegree) {
   _setImageINNERHTML(preLoad[activeImage].src,(WologdaPic[activeImage][1]));
	 innerMapSwapOpacityDegree=200; 
	 }
 if (opacityDegree<1) {
   if (opacityDegree-opacityUsed>=0.01) {
	   opacityUsed=opacityDegree;
  	 activeCanvas.style.opacity=opacityDegree;
		 }
	 }
  else {
	 opacityDegree=1;
	 activeCanvas.style.opacity=opacityDegree;
	 otherCanvas.style.opacity=0;
   clearInterval(slideshowTimer);
   slideshowTimer=setInterval("_slideImage()",slideShowSpeed);
	 }
}

function _mozillaCrossfade() {
 opacityDegree+=opacityDegreeDelta;
 if (opacityDegree>=innerMapSwapOpacityDegree) {
   _setImageINNERHTML(preLoad[activeImage].src,(WologdaPic[activeImage][1]));
	 innerMapSwapOpacityDegree=200; 
	 }
 if (opacityDegree<1) {
   if (opacityDegree-opacityUsed>=0.01) {
	   opacityUsed=opacityDegree;
  	 activeCanvas.style.MozOpacity=opacityDegree;
		 }
	 }
  else {
	 opacityDegree=1;
	 opacityUsed=0.9999;
	 activeCanvas.style.MozOpacity=opacityUsed;
	 otherCanvas.style.MozOpacity=0;
   clearInterval(slideshowTimer);
   slideshowTimer=setInterval("_slideImage()",slideShowSpeed);
	 }
}

function _konquerorCrossfade() {
 opacityDegree+=opacityDegreeDelta;
 if (opacityDegree>=innerMapSwapOpacityDegree) {
   _setImageINNERHTML(preLoad[activeImage].src,(WologdaPic[activeImage][1]));
	 innerMapSwapOpacityDegree=200; 
	 }
 if (opacityDegree<1) 
   if (opacityDegree-opacityUsed>=0.01) {
	   opacityUsed=opacityDegree;
  	 activeCanvas.style.KhtmlOpacity=opacityDegree;
		 }
  else {
	 opacityDegree=1;
	 opacityUsed=1;
	 activeCanvas.style.KhtmlOpacity=opacityDegree;
	 otherCanvas.style.KhtmlOpacity=0;
   clearInterval(slideshowTimer);
   slideshowTimer=setInterval("_slideImage()",slideShowSpeed);
	 }
}

function _ieCrossfade() {
 opacityDegree+=opacityDegreeDelta;
 if (opacityDegree>=innerMapSwapOpacityDegree) {
   _setImageINNERHTML(preLoad[activeImage].src,(WologdaPic[activeImage][1]));
	 innerMapSwapOpacityDegree=200; 
	 }
 if (opacityDegree<100) {
   if (opacityDegree-opacityUsed>=1) {
	   opacityUsed=Math.floor(opacityDegree);
 	   activeCanvas.filters[0].opacity=opacityUsed;
	   }
   }		 
  else {
	 opacityDegree=100;
	 opacityUsed=100;
	 activeCanvas.filters[0].opacity=opacityDegree;
	 otherCanvas.filters[0].opacity=0;
   clearInterval(slideshowTimer);
   slideshowTimer=setInterval("_slideImage()",slideShowSpeed);
	 }
}

function _oldieCrossfade() {
 opacityDegree+=opacityDegreeDelta;
 if (opacityDegree>=innerMapSwapOpacityDegree) {
   _setImageINNERHTML(preLoad[activeImage].src,(WologdaPic[activeImage][1]));
	 innerMapSwapOpacityDegree=200; 
	 }
 if (opacityDegree<100) { 
   if (opacityDegree-opacityUsed>=1) {
	   opacityUsed=Math.floor(opacityDegree);
	   activeCanvas.style.filter="alpha(opacity="+opacityDegree+")";
		 }
	 }	 
  else {
	 opacityDegree=100;
	 opacityUsed=100;
	 activeCanvas.style.filter="alpha(opacity="+opacityDegree+")";
	 otherCanvas.style.filter="alpha(opacity=0)";
   clearInterval(slideshowTimer);
   slideshowTimer=setInterval("_slideImage()",slideShowSpeed);
	 }
}

function _setOpacity(in_obj, in_opacity) {
  if (in_obj.filters&&in_obj.filters[0]){
    if (typeof in_obj.filters[0].opacity=="number") 
      in_obj.filters[0].opacity=in_opacity;
     else 
      in_obj.style.filter="alpha(opacity="+in_opacity+")";
		opacityUsed=in_opacity;	
    }
   else if (in_obj.style.opacity) {
	  opacityUsed=in_opacity/100;
    in_obj.style.opacity=opacityUsed;
		}
   else if (in_obj.style.MozOpacity) {
	  opacityUsed=in_opacity/101;
    in_obj.style.MozOpacity=opacityUsed; 
		}
   else if (in_obj.style.KhtmlOpacity) {
	  opacityUsed=in_opacity/100;
    in_obj.style.KhtmlOpacity=opacityUsed;
		}
}

function _slideImage() {
 var l_tempCanvas;
 var l_mapToUse;

 activeImage = (activeImage < WologdaPic.length - 1)? activeImage+1: 0;
 if (domBrowser)  { 
   l_tempCanvas=activeCanvas;
   activeCanvas=otherCanvas;
   otherCanvas=l_tempCanvas;
   if (crossfadeFunc=='' || crossFadeDuration==0) { 
	        _setImageINNERHTML(preLoad[activeImage].src,WologdaPic[activeImage][1]); 
     activeCanvas.style.zIndex++;
		 if (crossfadeFunc!='') 
		   {
		   _setOpacity(otherCanvas,0);
		   _setOpacity(activeCanvas,100);
			 }
		 }
		else { 
     l_mapToUse=activeImageMap;
          opacityDegreeDelta=((100-startOpacityDegree)*40)/crossFadeDuration;
     opacityDegree=startOpacityDegree;
     		 if (l_mapToUse!=WologdaPic[activeImage][1]) {
       if (startOpacityDegree>=mapSwapOpacityDegree) { 
         l_mapToUse=WologdaPic[activeImage][1];
				 innerMapSwapOpacityDegree=200;
				 }
				else 
				 innerMapSwapOpacityDegree=mapSwapOpacityDegree;
			 }
			else 	  
			 innerMapSwapOpacityDegree=200; 

		 if (!opacity100) { 
		   opacityDegreeDelta/=100;
		   opacityDegree/=100;
			 innerMapSwapOpacityDegree/=100;
		   }
			 
     _setOpacity(activeCanvas,startOpacityDegree);
     _setImageINNERHTML(preLoad[activeImage].src,l_mapToUse); 
     activeCanvas.style.zIndex++;
     clearInterval(slideshowTimer);
     slideshowTimer=setInterval(crossfadeFunc,40);
		 }
	 }
	else
	 _populateImage(preLoad[activeImage].src,(WologdaPic[activeImage][1]),activeImage); 	
}