var DivRows = new Array();
var Photos = new Array();
var Titles = new Array();
var Sidebar_Meetings = null;
var Sidebar_Description = null;
var LD = null;
var ActivePage = 0;

var colorMin = 230;

function Init()
{
	Sidebar_Meetings = document.getElementById("meetings_list_main");
	Sidebar_Description = document.getElementById("photo_description");
	LD = document.getElementById("loading_div");
	for(var i=1;i<=3;i++)
	{
		div = document.getElementById("row"+i);
		div.is_hidden = false;
		div.is_hiddenLeft = false;
		DivRows["row"+i] = div;
	}
	DivRows['row3'].onHide = function(){query("/photowall_ajax.php", getPhotoWall )};
	hideLeft();
	for(var i=1;i<=9;i++)
	{
		Photos["photo"+i] = document.getElementById("photo"+i);
		Titles["photoTitle"+i] = document.getElementById("photoTitle"+i);
		Photos["photo"+i].style.borderColor = "rgb("+(colorMin)+","+(colorMin)+","+(colorMin)+")";
	}
}


var thumbsSize = 120;
var fadeDelay = 1;

function borderFade( objId, fadeOut )
{
	var obj = Photos[objId];
	if( !obj.ColorDiv )
		obj.ColorDiv = 1;

	if( obj.isFading && ((obj.isFading == 1 && fadeOut==true)||(obj.isFading==-1 && fadeOut==false)) )
		return setTimeout( "borderFade('"+objId+"',"+fadeOut+")", fadeDelay );

	else if( fadeOut == false )
	{
		obj.isFading = 1;
		obj.style.borderColor = "rgb("+(colorMin+obj.ColorDiv)+","+(colorMin+obj.ColorDiv)+","+(colorMin+obj.ColorDiv)+")";
		obj.ColorDiv++;
		
		if( obj.ColorDiv < 255-colorMin )
			return setTimeout("borderFade( '"+objId+"', false );",fadeDelay);
		else
			obj.isFading = 0;
	}
	else if( fadeOut == true )
	{
		obj.isFading = -1;
		obj.ColorDiv --;
		obj.style.borderColor = "rgb("+(colorMin+obj.ColorDiv)+","+(colorMin+obj.ColorDiv)+","+(colorMin+obj.ColorDiv)+")";
			
		if( obj.ColorDiv > 0 )
			return setTimeout("borderFade( '"+objId+"', true );",fadeDelay);
		else
			obj.isFading = 0;
	}
}

function photoOnOver( obj )
{
	Sidebar_Description.innerHTML = obj.descr;
	return borderFade( obj.id, false );
}
function photoOnOut( obj )
{
	return borderFade( obj.id, true );
}



function hideLeft()
{
	setTimeout("hideRow('row1',1,true)",100);
	setTimeout("hideRow('row2',1,true)",200);
	setTimeout("hideRow('row3',1,true)",300);
}
function hideRight()
{
	setTimeout("hideRow('row1',1,false)",100);
	setTimeout("hideRow('row2',1,false)",200);
	setTimeout("hideRow('row3',1,false)",300);
}
function showLeft()
{
	setTimeout("showRow('row1',1,true)",100);
	setTimeout("showRow('row2',1,true)",200);
	setTimeout("showRow('row3',1,true)",300);
}
function showRight()
{
	setTimeout("showRow('row1',1,false)",100);
	setTimeout("showRow('row2',1,false)",200);
	setTimeout("showRow('row3',1,false)",300);
}

var RowWidth = 470;
var hideKoef = 0.08;
function hideRow( objId, step, toLeft )
{
	if( DivRows[objId].is_hidden == true )
		return false;//setTimeout("hideRow('"+objId+"',"+step+","+(toLeft)+")",100);
	if( Math.round(RowWidth-RowWidth*Math.exp(-step*hideKoef)) == RowWidth )
	{
		DivRows[objId].style.visibility = "visible";
		if(DivRows[objId].onHide)
			setTimeout("DivRows['"+objId+"'].onHide();DivRows['"+objId+"'].onHide=null;",10);
		//LD.style.backgroundImage = "none";
		return (DivRows[objId].is_hidden = true);// && (document.getElementById(objId)).onHide();
	}
	if( LD.style.backgroundImage != "url(/images/loading2.gif)" )
		LD.style.backgroundImage = "url(/images/loading2.gif)";
	
	div = DivRows[objId];
	div.is_hidden = false;
	div.is_hiddenLeft = toLeft;
	if( toLeft == true )
	{
		div.style.marginLeft = (-Math.round(RowWidth-RowWidth*Math.exp(-step*hideKoef)))+"px";
		div.style.marginRight = (Math.round(RowWidth-RowWidth*Math.exp(-step*hideKoef)))+"px";
	}
	else
	{
		div.style.marginLeft = (Math.round(RowWidth-RowWidth*Math.exp(-step*hideKoef)))+"px";
		div.style.marginRight = (-Math.round(RowWidth-RowWidth*Math.exp(-step*hideKoef)))+"px";
	}
	return setTimeout( "hideRow('"+objId+"',"+(step+1)+","+(toLeft)+")",10);
}


function showRow( objId, step, fromLeft )
{
	if( DivRows[objId].is_hidden == false )
		return false;//setTimeout("showRow('"+objId+"',"+step+","+(fromLeft)+")",100);
	if( Math.round(RowWidth*Math.exp(-step*hideKoef)) == 0 )
	{
		LD.style.backgroundImage = "none";
		return (DivRows[objId].is_hidden = false);// || (document.getElementById(objId)).onHide();
	}
	if( LD.style.backgroundImage != "url(/images/loading2.gif)" )
		LD.style.backgroundImage = "url(/images/loading2.gif)";
	div = DivRows[objId];
	div.is_hidden = true;
	if( fromLeft == true )
	{
		div.style.marginLeft = (-Math.round(RowWidth*Math.exp(-step*hideKoef)))+"px";
		div.style.marginRight = (Math.round(RowWidth*Math.exp(-step*hideKoef)))+"px";
	}
	else
	{
		div.style.marginLeft = (Math.round(RowWidth*Math.exp(-step*hideKoef)))+"px";
		div.style.marginRight = (-Math.round(RowWidth*Math.exp(-step*hideKoef)))+"px";
	}
	return setTimeout( "showRow('"+objId+"',"+(step+1)+","+(fromLeft)+")",10);
}




var connection = false;
var http_request = false;
var is_busy = false;
var is_aborted = false;
var Response = null;
var Meetings = null;
var WallPage = 1;
var PhotoPage = 1;
var ActiveImages  = null;
var Action = null;
var PageMode = "wall";
var ActiveLink = null;

if (window.XMLHttpRequest)
{ // Mozilla, Safari, ...
	connection = function () {
		var tmp = new XMLHttpRequest();
		if(tmp.overrideMimeType)
			tmp.overrideMimeType('text/xml');

		return tmp;}
}
else if (window.ActiveXObject)
{ // IE
	connection = function () {
		var tmp = new ActiveXObject("Microsoft.XMLHTTP");
		return tmp;}
}

function onChange()
{
	if( is_aborted == true )
	{
		http_request.abort();
		is_busy = false;
	}
	if( http_request.readyState == 4 )
	{
		if( http_request.status == 200 )
		{
			var xml = http_request.responseXML;
			var status = xml.getElementsByTagName("status");
			if( status )
				if(status.item(0).getAttribute("code") != 200)
				{
					var ret = status.item(0).childNodes.item(0).data;
					alert(ret);
					return false;
				}
			Response = http_request.responseXML;

			is_busy = false;
			
			parseXML();
			if( Action )
			{
				Action();
				Action = null;
				return true;
			}
			else
				return true;
		}
	}
}


function parseXML()
{
	var meetings = Response.getElementsByTagName("meetings");
	delete Meetings;
	while(Sidebar_Meetings.firstChild)
		Sidebar_Meetings.removeChild(Sidebar_Meetings.firstChild);
	Meetings = new Array();

	var m2 = Response.getElementsByTagName("meeting");
	if( m2.item(0) )
		var cur_id = m2.item(0).getAttribute("id");
	else
		var cur_id = 0;

	if(meetings)
	{
		var l = meetings.length;
		for(var i=0; i<l; i++)
		{
			var meeting = meetings.item(i);
			var nodes = meeting.childNodes;
			var l2 = nodes.length;
			var ind = 0;
			for(var k=0; k<l2; k++)
			{
				if( nodes.item(k).nodeType != 3 )
				{
					var node = nodes.item(k);
					var id = node.getAttribute('id');
					var thumb = node.getAttribute('thumbnail');
					var descr = "";
					var title = "";
					for(var j=0; j<node.childNodes.length; j++)
					{
						if( (node.childNodes.item(j)).nodeType != 3 )
						{
							
							if( (node.childNodes.item(j)).tagName == "title" )
								if( (node.childNodes.item(j)).childNodes )
									title = (node.childNodes.item(j)).childNodes.item(0).data;
							if( (node.childNodes.item(j)).tagName == "description" )
								if( (node.childNodes.item(j)).childNodes )
								{
									descr = ((node.childNodes.item(j)).childNodes.item(0)).data;									
								}
						}
					}
					Meetings[ind] = new Array();
					Meetings[ind]['id'] = id;
					Meetings[ind]['thumb'] = thumb;
					Meetings[ind]['title'] = title;
					Meetings[ind]['descr'] = descr;
					
	
					if( cur_id == id )
					{
						txt = document.getElementById("titlebar");
						txt.innerHTML = title;
						var lnk = document.createElement("SPAN");
						lnk.appendChild(document.createTextNode(title));
						lnk.style.fontSize = "13px";
						lnk.style.fontWeight = "bold";
					}
					else
					{
						var lnk = document.createElement("A");
						lnk.appendChild(document.createTextNode(title));
						lnk.setAttribute("href","#");
						lnk.meetingId = id;
						lnk.onclick = function ()
								{
									DivRows['row3'].meetingId = this.meetingId;
									DivRows['row3'].onHide = getPhotosByMeetingId;
									hideLeft();
								};
					}
					lnk.style.display = "block";
					if(ind%2==0)
						lnk.style.backgroundColor = "#e6e6e6";
					lnk.style.paddingBottom = "4px";
					//var br = document.createElement("BR");
					Sidebar_Meetings.appendChild(lnk);
					//Sidebar_Meetings.appendChild(br);
					ind ++;
				}
			}
		}
	}

	delete ActiveImages;
	ActiveImages = new Array();
	var images = Response.getElementsByTagName("images");
	if(images)
	{
		l = images.length;
		for(var i=0; i<l; i++)
		{
			var image = images.item(i);
			var nodes = image.childNodes;
			var l2 = nodes.length;
			var ind = 0;
			
			for(var k=0; k<l2; k++)
			{
				if( nodes.item(k).nodeType != 3 )
				{
					var node = nodes.item(k);
					var id = node.getAttribute("id");
					var img_src = node.getAttribute("src");
					var img_width = node.getAttribute("width");
					var img_height = node.getAttribute("height");
					var img_thumb = node.getAttribute("thumb");
					for(var j=0; j<node.childNodes.length; j++)
					{
						if( (node.childNodes.item(j)).nodeType != 3 )
						{
							if( (node.childNodes.item(j)).tagName == "title" )
								if( (node.childNodes.item(j)).childNodes )
								{
									var title = ((node.childNodes.item(j)).childNodes.item(0)).data;									
								}
							if( (node.childNodes.item(j)).tagName == "description" )
								if( (node.childNodes.item(j)).childNodes )
								{
									var descr = ((node.childNodes.item(j)).childNodes.item(0)).data;									
								}
						}
					}
					ActiveImages[ind] = new Array();
					ActiveImages[ind]['id'] = id;
					ActiveImages[ind]['src'] = img_src;
					ActiveImages[ind]['width'] = img_width;
					ActiveImages[ind]['height'] = img_height;
					ActiveImages[ind]['thumb'] = img_thumb;
					ActiveImages[ind]['descr'] = descr;					
					ActiveImages[ind]['title'] = title;		
					ind++;
				}
			}
		}
	}
	return true;
}


function query( url, feedbackFunc )
{
	if( is_busy )
		return false;
	is_busy = true;
	if( http_request )
		delete http_request;
	Action = feedbackFunc;
	http_request = connection();
	http_request.onreadystatechange = onChange;
	http_request.open( 'GET', url, true );
	http_request.send(null);
}

function resetImages()
{
	txt = document.getElementById("pages_title");
	txt.innerHTML = " ";
	for(var i=1; i<=9; i++)
	{
		Photos['photo'+i].style.visibility = "hidden";
		Photos['photo'+i].src = "/images/spacer.gif";
		Photos['photo'+i].meetingId = null;
		Photos['photo'+i].onclick = null;
		Photos["photo"+i].image = null;
		Photos["photo"+i].descr = "";
		Titles['photoTitle'+i].innerHTML = "";
		Titles['photoTitle'+i].appendChild(document.createTextNode(" "));
	}
}

function getPhotoWall( showFrom )
{
	hideSidebar();
	txt = document.getElementById("titlebar");
	txt.innerHTML = "Photo Wall";
	PageMode = "wall";
	resetImages();
	if( showFrom == "right" )
		showRight();
	else
		showLeft();
	for(var i=0; i<9; i++)
	{
		if( !Meetings[i+((PhotoPage-1)*9)] )
			break;
		//Photos["photo"+(i+1)].src = "/meeting_photos/"+Meetings[i+((PhotoPage-1)*9)]['thumb'];
		Photos["photo"+(i+1)].src = "/photoview.php?photo="+Meetings[i+((PhotoPage-1)*9)]['thumb'];
		Titles["photoTitle"+(i+1)].innerHTML = Meetings[i+((PhotoPage-1)*9)]['title'];
		Photos["photo"+(i+1)].style.visibility = "visible";
		Titles["photoTitle"+(i+1)].style.visibility = "visible";
		Photos["photo"+(i+1)].meetingId = Meetings[i+((PhotoPage-1)*9)]['id'];
		Photos["photo"+(i+1)].descr = Meetings[i+((PhotoPage-1)*9)]['descr'];
		Photos["photo"+(i+1)].onclick = function () 
				{
					DivRows['row3'].meetingId = this.meetingId;
					DivRows['row3'].onHide = getPhotosByMeetingId;
					hideLeft();
				};
		
	}
	for(var k=i; k<9; k++)
	{
		Photos["photo"+(k+1)].style.visibility = "hidden";
		Titles["photoTitle"+(k+1)].style.visibility = "hidden";
	}
	txt = document.getElementById('pages_title');
	txt.innerHTML = String(PhotoPage+" of "+(Math.floor(Meetings.length/10)+1));
	return ;
}
function getPhotosByMeetingId()
{
	PhotoPage = 1;
	query("/photowall_ajax.php?meeting="+this.meetingId, getPhotos );
	this.meetingId = null;
	showSidebar();
}
function getPhotos( showFrom )
{
	PageMode = "photos";
	resetImages();
	if( showFrom == "right" )
		showRight();
	else
		showLeft();

	for(var i=0; i<9; i++)
	{
		if( !ActiveImages[i+((PhotoPage-1)*9)] )
			break;
		Photos["photo"+(i+1)].onclick = null;
		Photos["photo"+(i+1)].meetingId = null;
		//Photos["photo"+(i+1)].src = "/meeting_photos/"+ActiveImages[i+((PhotoPage-1)*9)]['thumb'];
		Photos["photo"+(i+1)].src = "/photoview.php?photo="+ActiveImages[i+((PhotoPage-1)*9)]['thumb'];
		Photos["photo"+(i+1)].style.visibility = "visible";
		Photos["photo"+(i+1)].onclick = function() {maskPage(this)};
		Photos["photo"+(i+1)].image = new Array();
		Photos["photo"+(i+1)].image['src'] = ActiveImages[i+((PhotoPage-1)*9)]['src'];
		Photos["photo"+(i+1)].image['width'] = ActiveImages[i+((PhotoPage-1)*9)]['width'];
		Photos["photo"+(i+1)].image['height'] = ActiveImages[i+((PhotoPage-1)*9)]['height'];
		Photos["photo"+(i+1)].descr = ActiveImages[i+((PhotoPage-1)*9)]['descr'];
		Titles["photoTitle"+(i+1)].innerHTML = ActiveImages[i+((PhotoPage-1)*9)]['title'];
		Titles["photoTitle"+(i+1)].style.visibility = "visible";
	}
	txt = document.getElementById("pages_title");
	txt.innerHTML = String(PhotoPage+" of "+ (Math.floor(ActiveImages.length/10)+1) );
}

function nextPage()
{
	if( PageMode == "wall" )
	{
		if(PhotoPage+1 > (Math.floor(Meetings.length/10)+1) )
			return;
		PhotoPage++;
		DivRows['row3'].onHide = function () {getPhotoWall("right")};
		hideLeft();
	}
	else if(PageMode == "photos" )
	{
		if(PhotoPage+1 > (Math.floor(ActiveImages.length/10)+1) )
			return;
		PhotoPage++;
		DivRows['row3'].onHide = function () {getPhotos("right")};
		hideLeft();
	}
}
function prevPage()
{
	if(PhotoPage-1 <= 0 )
		return;
	PhotoPage--;
	if( PageMode == "wall" )
	{
		DivRows['row3'].onHide = function () {getPhotoWall("left")};
	}
	else if(PageMode == "photos" )
	{
		DivRows['row3'].onHide = function () {getPhotos("left")};
	}
	hideRight();
}


function showSidebar()
{
	Sidebar_Meetings.parentNode.style.display = "block";
	Sidebar_Description.style.display = "block";
}
function hideSidebar()
{
	Sidebar_Meetings.parentNode.style.display = "none";
	//Sidebar_Description.style.display = "none";
	Sidebar_Description.innerHTML = " ";	
}

var ImageMaxSize = 420;
var DivPadding = 183;
function maskPage( obj )
{
	var div = document.getElementById("page_mask");
	var divA = document.getElementById("page_mask_nav");
	var div2 = div.firstChild;
	var img = div2.nextSibling;
	img.width = "23";
	img.height = "23";
	img.src = "/images/spacer.gif";
	
	div.style.display = "block";
	divA.style.display = "block";

	var currImage = Number(obj.id.substring(5));
	var sp = document.getElementById("page_mask_nav1");
	sp.innerHTML = (Number(obj.id.substring(5))+(9*(PhotoPage-1)) )+"/"+(ActiveImages.length);
	sp.currId = currImage;
	
	var myWidth = 0, myHeight = 0;
	if( typeof( window.innerWidth ) == 'number' )
	{
		//Non-IE
		myWidth = window.innerWidth;
		myHeight = window.innerHeight;
	}
	else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) 
	{
		//IE 6+ in 'standards compliant mode'
		myWidth = document.documentElement.clientWidth;
		myHeight = document.documentElement.clientHeight;
	}
	else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) )
	{
		//IE 4 compatible
		myWidth = document.body.clientWidth;
		myHeight = document.body.clientHeight;
	}
	
	//filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='image.png', sizingMethod='scale')
	if(div.runtimeStyle)
		div.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/mask.png', sizingMethod='scale')";
	else
		div.style.backgroundImage = "url(/images/mask.png)";

		
	var h = (document.getElementById("row1")).offsetHeight + (document.getElementById("row2")).offsetHeight + (document.getElementById("row3")).offsetHeight;
	divA.style.top = (DivPadding-28) +"px";
	divA.style.left = ((myWidth/2 - 430)+145)+"px";
	divA.style.width = "465px";//myWidth+"px";//"100%";
	div.style.top = (DivPadding)+"px";
	div.style.left = ((myWidth/2 - 430)+145)+"px";
	div.style.width = "465px";//myWidth+"px";//"100%";
	if( h > 450 )
		div.style.height = h+"px";//(myHeight-DivPadding)+"px";//"100%";
	else
		div.style.height = "450px";//(myHeight-DivPadding)+"px";//"100%";
	
	div.onclick = function (e) 
		{
			if(!e)
				e = window.event;
			var parent = document.getElementById("close_btn");
			var l=0;
			while( parent.offsetParent )
			{
				l = l + parent.offsetLeft;
				parent = parent.offsetParent;
			}
			if( (e.clientY < DivPadding+18) && (e.clientY > DivPadding) && (e.clientX >= l) && (e.clientX <= (l+18)) )
			{
				this.style.display = "none";
				var div = document.getElementById("page_mask_nav");
				div.style.display = "none";
			}
		};

	if( Number(obj.image['width']) > Number(obj.image['height']) )
	{
		img.width = ImageMaxSize;
		img.height = Math.floor(ImageMaxSize*(Number(obj.image['height'])/Number(obj.image['width'])));
	}
	else if( Number(obj.image['width']) <= Number(obj.image['height']) )
	{
		img.width = Math.floor(ImageMaxSize*(Number(obj.image['width'])/Number(obj.image['height'])));
		img.height = ImageMaxSize;
	}

	div2.style.width = Number(img.width)+"px";
	div2.style.marginLeft = ((460/2) - Number(img.width)/2)+"px";
	img.style.marginLeft = ((460/2) - Number(img.width)/2)+"px";
	//img.src = "/meeting_photos/"+obj.image['src'];
	img.src = "/photoview.php?photo="+obj.image['src'];
}



function NextPhoto()
{
	var sp = document.getElementById("page_mask_nav1");
	var ind = sp.currId+(9*(PhotoPage-1));

	if( ind < ActiveImages.length)
	{
		var img = new Object();
		img.id = "photo"+(sp.currId+1);
		img.image = new Array();
		img.image['src'] =  ActiveImages[ind]['src'];
		img.image['width'] =  ActiveImages[ind]['width'];
		img.image['height'] =  ActiveImages[ind]['height'];
		maskPage(img);
		Sidebar_Description.innerHTML = ActiveImages[ind]['descr'];
	}
}
function PrevPhoto()
{
	var sp = document.getElementById("page_mask_nav1");
	var ind = sp.currId+(9*(PhotoPage-1))-1;
	
	if( ind >= ActiveImages.length)
	{
		ind = ActiveImages.length-1;
		sp.currId = ind - (9*(PhotoPage-1))+1;
	}
	if( ind > 0 )
	{
		var img = new Object();
		img.id = "photo"+(sp.currId-1);
		img.image = new Array();
		img.image['src'] =  ActiveImages[ind-1]['src'];
		img.image['width'] =  ActiveImages[ind-1]['width'];
		img.image['height'] =  ActiveImages[ind-1]['height'];
		maskPage(img);
		Sidebar_Description.innerHTML = ActiveImages[ind-1]['descr'];
	}
}