﻿// JScript File
var g_slide=0;
var SLIDES_PER_PAGE=30

function loadAlbumPage()
{
	var oParams=getTopicAndSlide();
	topic=oParams["Topic"];
	g_slide=oParams["Slide"];
	//
	var contentsFile=topic+".xml";
	loadContent(contentsFile)
	//
	var slides_num=getMaxSlideNum();
	var slide_start = getSlideStart();
	var slide_end=Math.min(slide_start+SLIDES_PER_PAGE-1, slides_num);
	//
	var slide;
	var a_num=0;
	for (slide=slide_start; slide<=slide_end; slide++)
	{
		var a_id="a"+a_num.toString();
		document.getElementById(a_id).href="SlideShow.htm?Topic="+topic+"&Slide="+slide.toString();
		document.getElementById(a_id).innerHTML="<IMG alt='"+aContentsArr[slide][1]+"' src='"+aContentsArr[slide][2]+"'>";
		var t_id="t"+a_num.toString();
		document.getElementById(t_id).innerHTML=aContentsArr[slide][1];
		a_num++;
	}
	//
	var pages_num = Math.ceil((slides_num/SLIDES_PER_PAGE));
	var page_cur = Math.ceil((slide_start/SLIDES_PER_PAGE));
	if (pages_num>1)
	{
		var PERC_BY_PAGE_NUM=3;
		var PERC_BY_PAGE_REF=4;
		var pagesIndexW=pages_num*PERC_BY_PAGE_NUM;
		if (page_cur>0)
		{
			pagesIndexW=pagesIndexW+PERC_BY_PAGE_REF;
		}
		if (page_cur<pages_num-1)
		{
			pagesIndexW=pagesIndexW+PERC_BY_PAGE_REF;
		}
		var emptyCellW=90-pagesIndexW;
		document.getElementById("EmptyCell").width=emptyCellW.toString()+"%";
		document.getElementById("PagesCell").width=pagesIndexW.toString()+"%";
		//
		var pagesIndex=" ";
		if (page_cur>0)
		{
			pagesIndex=pagesIndex+"<A href=AlbumPage.htm?Topic="+topic+"&Slide="+(slide_start-SLIDES_PER_PAGE).toString()+"> << </A> &nbsp;";
		}
		var pageIdx=0;
		for (pageIdx=0; pageIdx<pages_num; pageIdx++)
		{
			pagesIndex=pagesIndex+"<A href=AlbumPage.htm?Topic="+topic+"&Slide="+(pageIdx*SLIDES_PER_PAGE).toString()+">"+(pageIdx+1).toString()+"</A>";
			if (pageIdx<pages_num-1)
			{
				pagesIndex=pagesIndex+"&nbsp; | &nbsp;";
			}
		}
		if (page_cur<pages_num-1)
		{
			pagesIndex=pagesIndex+"&nbsp; <A href=AlbumPage.htm?Topic="+topic+"&Slide="+(slide_end+1).toString()+"> >> </A>";
		}
		document.getElementById("PagesCell").innerHTML=pagesIndex;
	}
	//
	if (page_cur>0)
	{
		cachePage(slide_start-SLIDES_PER_PAGE);
	}
	if (page_cur<pages_num-1)
	{
		cachePage(slide_end+1);
	}
	//
	cacheSlide(g_slide);
}

function onPageNext()
{
	var slide_start = getSlideStart();
	if (slide_start+SLIDES_PER_PAGE<getMaxSlideNum())
	{
		g_slide=slide_start+SLIDES_PER_PAGE;
	}
}

function onPagePrevious()
{
	var slide_start = getSlideStart();
	if (slide_start-SLIDES_PER_PAGE>=0)
	{
		g_slide=slide_start-SLIDES_PER_PAGE;
	}
}

function getSlideStart()
{
	var slides_num = getMaxSlideNum();
	var slide_start = g_slide - (g_slide % SLIDES_PER_PAGE);
	return slide_start;
}

function cachePage(slide_start)
{
	var slide_end=Math.min(slide_start+SLIDES_PER_PAGE-1, getMaxSlideNum());
	var num_slides=slide_end-slide_start+1;
	var Images = new Array(num_slides);
	var idx=0;
	for (idx=0; idx<num_slides; idx++)
	{
		Images[idx] = new Image();
	}
	idx=0;
	for (slide=slide_start; slide<=slide_end; slide++)
	{
		Images[idx].src=aContentsArr[slide][2];
		idx++;
	}
}

function cacheFirstPage(topic)
{
	var contentsFile=topic+".xml";
	loadContent(contentsFile)
	//
	cachePage(0);
}

///////////////////////////////////////////////////////////////////////////////////////////////////
function onSlideNext()
{
	if (g_slide<getMaxSlideNum())
	{
		g_slide=g_slide+1;
	}
}

function onSlidePrevious()
{
	if (g_slide>0)
	{
		g_slide=g_slide-1;
	}
}

function updateSlideShowRefs(topic, slide)
{
	document.getElementById("ReturnPage").href="AlbumPage.htm?Topic="+topic+"&Slide="+slide.toString();
	if (slide>0)
	{
		document.getElementById("SlideShowPrev").innerHTML=" << Предыдущий";
		document.getElementById("SlideShowPrev").href="SlideShow.htm?Topic="+topic+"&Slide="+(slide-1).toString();
	}
	else
	{
		document.getElementById("SlideShowPrev").innerHTML="";
		document.getElementById("SlideShowPrev").href="";
	}
	if (slide<getMaxSlideNum())
	{
		document.getElementById("SlideShowNext").innerHTML="Следующий >> ";
		document.getElementById("SlideShowNext").href="SlideShow.htm?Topic="+topic+"&Slide="+(slide+1).toString();
	}
	else
	{
		document.getElementById("SlideShowNext").innerHTML="";
		document.getElementById("SlideShowNext").href="";
	}
}

function getMaxSlideNum()
{
	return aContentsArr.length-1;
}

function getTopicAndSlide()
{
	var oParams=new Object();
	oParams["Topic"]="";
	oParams["Slide"]=0;
	getPageParams(oParams);
	var slide=parseInt(oParams["Slide"]);
	if (isNaN(slide))
	{
		slide=0;
	}
	oParams["Slide"]=slide;
	return oParams;
}


function getPageParams(oParams)
{
	var query = window.location.search.substring(1);
	var parms = query.split('&');
	for (var i=0; i<parms.length; i++)
	{
		var pos = parms[i].indexOf('=');
		if (pos > 0)
		{
			var key = parms[i].substring(0,pos);
			var val = parms[i].substring(pos+1);
			oParams[key] = val;
		}
	}
}

function loadSlide()
{
	var oParams=getTopicAndSlide();
	var topic=oParams["Topic"];
	g_slide=oParams["Slide"];
	//
	var contentsFile=topic+".xml";
	loadContent(contentsFile)
	//
	updateSlideShowRefs(topic, g_slide);
	document.getElementById("SlideShowImage").src=aContentsArr[g_slide][0];
	document.getElementById("SlideShowText").innerHTML=aContentsArr[g_slide][1];
	// Cache adjacent images
	if (g_slide>0)
	{
		cacheSlide(g_slide-1);
	}
	if (g_slide<getMaxSlideNum())
	{
		cacheSlide(g_slide+1);
	}
}

function cacheSlide(slide)
{
	var im = new Image();
	im.src=aContentsArr[slide][0];
}

///////////////////////////////////////////////////////////////////////////////////////////////////
function setCookie(c_name,value,expiredays)
{
	var exdate=new Date();
	exdate.setDate(exdate.getDate()+expiredays);
	var cookie=c_name+ "=" +escape(value)+((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
	document.cookie=cookie;
}

function getCookie(c_name)
{
	var c_start, c_end;
	var cookie=document.cookie;
	var len=cookie.length;
	if (len>0)
	{
		c_start=cookie.indexOf(c_name + "=");
		if (c_start!=-1)
		{
			c_start=c_start + c_name.length+1;
			c_end=cookie.indexOf(";",c_start);
			if (c_end==-1) c_end=len;
			return unescape(cookie.substring(c_start,c_end));
		}
	}
	return "";
}