/* Scripts for preview media in sidebar */

var refLeft = 0;
var offSetAmnt = 105;
var leftMostPosition = 0;
var currentlyAnimating = false;

function prepareGalleryMainList()
{
	if( document.getElementById && document.getElementsByTagName )
	{
		if (document.getElementById("mediaListMain"))
		{
			var mainList = document.getElementById("mediaListMain");
			var listItems = mainList.getElementsByTagName("li");
			if (listItems.length > 0)
			{
				for(i=0;i<listItems.length;i++)
				{
					var aLink = listItems[i].getElementsByTagName("a")[0];
					var aHref = aLink.getAttribute("href");
					if (aHref)
					{
						listItems[i].onclick = function() {
							document.location.href = this.getElementsByTagName("a")[0].getAttribute("href");	
						};
						listItems[i].style.cursor = "pointer";
						listItems[i].getElementsByTagName("div")[0].style.cursor = "pointer";
					}
				}				
			}
		}
	}
}


function checkIfImageLoaded(toDirection, response)
{
	if( document.getElementById && document.getElementsByTagName )
	{
		if (document.getElementById("mediaListImg"))
		{
			var previewGal = document.getElementById("mediaListImg");
			var listItems = previewGal.getElementsByTagName("li");
			
			if (response == "")
			{
				//alert("got here! " + toDirection);				
				if (listItems.length > 0)
				{
					//need to find first instance w/i list where an image is loaded				
					var foundImage = false;
					var foundNextImage = false;
					var prevId01 = "";
					var prevId02 = "";
					var nextId01 = "";
					var nextId02 = "";
					var currId = "";
					var url = "common/php/ajaxGalleryPreview.php";
					var queryStr = "";
					var i = 0;
					var theLink = null;
					
					while((i<listItems.length)&&(foundImage==false))
					{
						if (listItems[i].getElementsByTagName("a")[0])
						{
							theLink = listItems[i].getElementsByTagName("a")[0];
							prevId01 = prevId02;
							prevId02 = currId;						
							currId = theLink.getAttribute("id");
						}
						//if finds first instance w/ an actual image loaded
						if (listItems[i].getElementsByTagName("img")[0])
						{
							//var firstImg = listItems[i].getElementsByTagName("img")[0];
							foundImage = true;							
							//nextId01 = listItems[i + 5].getElementsByTagName("a")[0].getAttribute("id");
							//nextId02 = listItems[i + 6].getElementsByTagName("a")[0].getAttribute("id");
						}
						if (foundImage==false)
						{
							i++;	
						}						
					}
					if (foundImage)
					{
						if (toDirection == "right")
						{
							queryStr  = "?imgLoad1=" + prevId01 + "&imgLoad2=" + prevId02;	
						}
						else if (toDirection == "left")
						{
							//for(i=i;i<listItems.length;i++)
							while((i<listItems.length)&&(foundNextImage==false))
							{
								//has to find next images that need to be loaded
								nextId01 = listItems[i].getElementsByTagName("a")[0].getAttribute("id");
								if (listItems[i].getElementsByTagName("img")[0]==null)
								{
									foundNextImage = true;
									if (i<(listItems.length-1))
									{
										nextId02 = listItems[i+1].getElementsByTagName("a")[0].getAttribute("id");	
									}
								}
								i++;
							}
							if (foundNextImage)
							{
								queryStr  = "?imgLoad1=" + nextId01 + "&imgLoad2=" + nextId02;	
							}
							else
							{
								queryStr = "";	
							}
						}
						if (queryStr!="")
						{
							url = url + queryStr;
							//alert(toDirection + " " + url);
							loadXMLDoc(url, null);	
						}
					}
				}
			}
			else
			{
				response  = req.responseXML.documentElement;		
				
				var currId = "";
				var currImage = "";
				var currDir = "";
				var currIdSuffix = "";
				var fullLnkId = ""
				
				for(x=0; x<response.getElementsByTagName('id').length; x++)
				{
					//collects all the ajaxed in data
					currId = response.getElementsByTagName('id')[x].firstChild.data;				
					currImage = response.getElementsByTagName('image')[x].firstChild.data;
					currDir = response.getElementsByTagName('directory')[x].firstChild.data;
					currIdSuffix = response.getElementsByTagName('idsuffix')[x].firstChild.data;
					
					fullLnkId = currId + currIdSuffix;
					
					//searches gallery preview list to see where data needs to be inserted
					if (listItems.length > 0)
					{
						for (j=0;j<listItems.length;j++)
						{
							var theLink = listItems[j].getElementsByTagName("a")[0];
							
							//finds match where the image is supposed to be loaded into
							if (theLink.getAttribute("id") == fullLnkId)
							{
								//alert("got here!");
								//<img src=\"" . $prevImages[$i][0] . "thumbs/" . $prevImages[$i][1] . "\" />
								//Creates and adds the image
								var thumbImg = document.createElement("img");
								var thumbSrc = currDir + "thumbs/" + currImage;
								thumbImg.setAttribute("src", thumbSrc);
								thumbImg.onload = function(){
									if (this.width > this.height)
									{
										this.className = "prevH";
									}
									else if (this.width < this.height)
									{
										this.className = "prevV";
									}
									else if (this.width == this.height)
									{								
										this.className = "prevS";
									}
								};								
								theLink.appendChild(thumbImg);
							}
						}
					}
				}
			}				
		}
	}
}

function prepareGalleryPreview()
{
	if( document.getElementById && document.getElementsByTagName )
	{
		if (document.getElementById("mediaListImg"))
		{
			var previewGal = document.getElementById("mediaListImg");
			var listItems = previewGal.getElementsByTagName("li");
			if (listItems.length > 0)
			{
				var leftPos = 0;				
				leftMostPosition = (((listItems.length) * offSetAmnt) - offSetAmnt) * -1;
				for(i=0;i<listItems.length;i++)
				{
					listItems[i].style.left = leftPos + "px";
					listItems[i].style.display = "block";
					leftPos += offSetAmnt;
					
					var prevLnk = listItems[i].getElementsByTagName("a")[0];					
					var pageURL = "";
				
					if (document.location.href.match("media_fliers.php"))
					{
						pageURL = "media_fliers.php?id=event";
					}
					else if (document.location.href.match("media_photos.php"))
					{
						pageURL = "media_photos.php?id=photo";
					}
					else if (document.location.href.match("media_press.php"))
					{
						pageURL = "media_press.php?id=press";
					}
										
					prevLnk.onclick = function(){
											//return setBigImage(this);
											document.location.href = pageURL + parseInt(this.getAttribute("id"));
											return false;
										};
					if (listItems[i].getElementsByTagName("img")[0])
					{
						var prevImg = listItems[i].getElementsByTagName("img")[0];
						if (prevImg.width > prevImg.height)
						{
							prevImg.className = "prevH";
						}
						else if (prevImg.width < prevImg.height)
						{
							prevImg.className = "prevV";
						}
						else
						{
							prevImg.className = "prevS";
							
						}
					}
				}
				//initializes refLeft to left position of first list item
				refLeft = parseInt(listItems[0].style.left);
			}
			var container = previewGal.parentNode;
			var controls = document.createElement("div");
			controls.setAttribute("id", "mediaListControls");
			//controls.setAttribute("class", "separator");
			
			var arrowLeft = document.createElement("a");
			var arrowLeft_text = document.createTextNode("«");
			arrowLeft.setAttribute("href","#");
			arrowLeft.setAttribute("id","mediaControlArrowLeft");
			arrowLeft.onclick = function(){
				checkIfImageLoaded("left", "");
				previewMove("left", true);
				return false;
				};
			arrowLeft.appendChild(arrowLeft_text);
			var arrowRight = document.createElement("a");
			var arrowRight_text = document.createTextNode("»");
			arrowRight.setAttribute("id","mediaControlArrowRight");
			arrowRight.setAttribute("href","#");			
			arrowRight.onclick = function(){
				checkIfImageLoaded("right", "");
				previewMove("right", true);
				return false;
				};
			arrowRight.appendChild(arrowRight_text);
			
			/*var returnToList = document.createElement("a");
			var returnToList_text = document.createTextNode("return to list");
			returnToList.setAttribute("id", "mediaControlReturnToList");
			returnToList.setAttribute("href", "#");
			returnToList.appendChild(returnToList_text);*/
			
			var separatorText = document.createTextNode(" | ");
			//var separatorText2 = document.createTextNode(" | ");
			
			
			controls.appendChild(arrowLeft);
			//controls.appendChild(separatorText);
			controls.appendChild(arrowRight);
			//controls.appendChild(separatorText2);
			//controls.appendChild(returnToList);
			container.appendChild(controls);
			
			if (document.getElementById("imgWrapperBig"))
			{
				var bigImageWrapper = document.getElementById("imgWrapperBig");
				/*determines currently displayed images relevant ID*/
				var imgId = parseInt(bigImageWrapper.getElementsByTagName("img")[0].getAttribute("id"));
				
				
				if (listItems.length>0)
				{
					/****************************************************/
					/* Loops through preview list of images looking for */
					/* a matching ID to the image that is being         */
					/* so that the preview can be offset by the         */
					/* appropriate amount.                              */
					/****************************************************/
					var curListItemId = -1;
					var curOffsetAmount = 0
					var matchFound = false;
					for(i=0;i<listItems.length;i++)
					{
						curListItemId = parseInt(listItems[i].getElementsByTagName("a")[0].getAttribute("id"));
						if (curListItemId == imgId)
						{							
							matchFound = true;
							//alert("match Found, curOffsetAmount = " + curOffsetAmount);
						}
						else if(matchFound==false)
						{
							curOffsetAmount+=offSetAmnt;
						}
					}
					//sets curOffsetAmount by 1 more so that it indexes to the next picture
					curOffsetAmount = curOffsetAmount + offSetAmnt;
					
					//alert("here = " + curOffsetAmount + " " + (listItems.length * offSetAmnt));
					
					if (matchFound)
					{
						/*If a match is found, loops through and offsets all the images by curOffsetAmount*/
						
						if (curOffsetAmount == (listItems.length * offSetAmnt))
						{
							/* Leaves images at defualt state because it is currently at */
							/* the end of the list anyways */
						}
						else
						{
							for(i=0;i<listItems.length;i++)
							{
								var tmpLeft = parseInt(listItems[i].style.left);							
								tmpLeft = tmpLeft - curOffsetAmount;
								listItems[i].style.left = tmpLeft + "px";
							}
						}
						refLeft = parseInt(listItems[0].style.left);
					}
				}
			}
			setMediaControlArrows();
		}
	}
}

function setMediaControlArrows()
{
	if (document.getElementById)
	{
		if (document.getElementById("mediaListImgFirst")&&document.getElementById("mediaControlArrowLeft")&&document.getElementById("mediaControlArrowRight"))
		{
			var firstListItem = document.getElementById("mediaListImgFirst");
			var arrowLeft = document.getElementById("mediaControlArrowLeft");
			var arrowRight = document.getElementById("mediaControlArrowRight");
		
			if (parseInt(firstListItem.style.left)>=0)
			{
				arrowRight.style.visibility = "hidden";
			}
			else
			{
				arrowRight.style.visibility = "visible";
			}
			
			if (parseInt(firstListItem.style.left)<=leftMostPosition)
			{
				arrowLeft.style.visibility = "hidden";
			}
			else
			{
				arrowLeft.style.visibility = "visible";
			}
		}
	}
	
}

function setBigImage(prevLnk)
{
	if (document.getElementById)
	{
		if(document.getElementById("imgWrapperBig"))
		{
			wrapper = document.getElementById("imgWrapperBig");
			var bigImages = wrapper.getElementsByTagName("img");
			if (bigImages.length > 0)
			{
				var frontImg = wrapper.getElementsByTagName("img")[0];
				frontImg.setAttribute("src", prevLnk.getAttribute("href"))
			}
			if (bigImages.length > 1)
			{
				var backImg = wrapper.getElementsByTagName("img")[1];
				var backImg_url = prevLnk.getAttribute("href").replace("_1.jpg","_2.jpg");
				backImg.setAttribute("src", backImg_url);
			}
		}
	}
	return false;
}

function checkIfExceededBounds(toDirection)
{
	var boundsExceeded = true;
	if (document.getElementById)
	{
		if (document.getElementById("mediaListImgFirst"))
		{
			var firstListItem = document.getElementById("mediaListImgFirst");
			if (firstListItem.style.left)
			{
				if ((parseInt(firstListItem.style.left)>0)&&(toDirection=="right"))			
				{					
					boundsExceeded = true;
				}
				else if((parseInt(firstListItem.style.left)<leftMostPosition)&&(toDirection=="left"))
				{				
					boundsExceeded = true;
				}
				else
				{
					boundsExceeded = false;	
				}
			}
			else
			{				
				boundsExceeded = true;	
			}			
		}
	}	
	return boundsExceeded;
}

function previewMove(toDirection, newMovement)
{	
	var moveAmnt = 0;
	var dist = 0;
	var endPoint = 0;
	var divideAmnt = 10;
	//alert(currentlyAnimating + " " + newMovement);
	if ((currentlyAnimating==false)||(newMovement==false))
	{
		currentlyAnimating = true;
		if (document.getElementById("mediaListImg"))
		{		
			var previewGal = document.getElementById("mediaListImg");
			var listItems = previewGal.getElementsByTagName("li");
			if (listItems.length > 0)
			{			
				if (toDirection == "left")
				{
					endPoint = (refLeft-offSetAmnt);
					dist = endPoint - parseInt(listItems[0].style.left);
					moveAmnt = Math.ceil(dist/divideAmnt);
					if ((moveAmnt == 0)&&(dist<0))
					{
						moveAmnt = -1;
					}
				}
				else
				{
					endPoint = (refLeft+offSetAmnt);
					dist = endPoint - parseInt(listItems[0].style.left);
					moveAmnt = Math.ceil(dist/divideAmnt);
					if ((moveAmnt == 0)&&(dist>0))
					{
						moveAmnt = 1;
					}
				}
				
				if (checkIfExceededBounds(toDirection))
				{
					return false;
				}
				else
				{
					for(i=0;i<listItems.length;i++)
					{
						curLeft = parseInt(listItems[i].style.left);
						curLeft = curLeft + moveAmnt;
						listItems[i].style.left = curLeft + "px";
					}
				}
			}
		}
		
		setMediaControlArrows();	
		if (dist!=0)
		{
			setTimeout("previewMove('" + toDirection + "', false)",5);
		}
		else
		{
			refLeft = parseInt(listItems[0].style.left);
			currentlyAnimating = false;
			return true;
		}
	}
}


/* Regular 3 x 3 full page gallery scripts below */
var wrapper = null;
var img = null;
var aLink = null;
var tmpHref = null;
var topZ = 100;
var maxwW = 330; //maximum wrapper width
var minwW = 150; //minimum wrapper width
var minIhW = 130;
var minIhH = 98;
var minIvW = minIhH;
var minIvH = minIhW;
var imgRatio = 0;
var fullImageLoaded = false;

function prepareGallery()
{
	if( document.getElementById && document.getElementsByTagName )
	{
		if (document.getElementById("galleryContainer"))
		{
			var gallery = document.getElementById("galleryContainer");
			var listItems = gallery.getElementsByTagName("li");
			
			for (var i=0; i<listItems.length; i++)
			{
				var tmpliID = listItems[i].id;
				var tmpliDiv = listItems[i].getElementsByTagName("div")[0];
				var galLink = tmpliDiv.getElementsByTagName("a")[0];
				var galImage = tmpliDiv.getElementsByTagName("img")[0];
								
				var redirectId = 0;
				
				var imgWidth = parseInt(galImage.width);
				var imgHeight = parseInt(galImage.height);
				var imgClass = "imgV";
				
				if (imgWidth > imgHeight)
				{
					imgClass = "imgH";	
				}
				
				var pageURL = "";
				
				if (document.location.href.match("media_fliers.php"))
				{
					pageURL = "media_fliers.php";
				}
				else if (document.location.href.match("media_photos.php"))
				{
					pageURL = "media_photos.php";
				}
				else if (document.location.href.match("media_press.php"))
				{
					pageURL = "media_press.php";
				}				
				
				tmpliDiv.innerHTML ="<a href=\"" + galLink.getAttribute("href") + "\"><img src=\"" + galImage.getAttribute("src") + "\" onclick=\"document.location.href='" + pageURL + "?id=" + galImage.getAttribute("id") + "';return false;\" border=\"0\" class=\"" + imgClass + "\" id=\"" + galImage.getAttribute("id") + "\" width=\"" + galImage.width + "\" height=\"" + galImage.height + "\"></a>";
				tmpliDiv.innerHTML+="<img src=\"images/layout/icons/zoomIn.gif\" alt=\"Zoom In\" class=\"zoom\" onclick=\"return setSize('" + tmpliID + "', 'grow');\"/>";
				listItems[i].onmouseover = function(){
										showZoom(this, 'show');
									};
				listItems[i].onmouseout = function(){
										showZoom(this, 'hide');
									};
			}
		}
	}
}

function grow(id)
{
	var wW = parseInt(wrapper.style.width);
	var wH = parseInt(wrapper.style.height);
	var iW = parseInt(img.width);
	var iH = parseInt(img.height);
	if(wW<maxwW)
	{									
		wW+=5;
		wH+=5;
		iW+=5;
		iH = parseInt(iW/imgRatio);
		
		if ((id!="gc1")&&(id!="gc4")&&(id!="gc7"))
		{
			wrapper.style.left = (parseInt(wrapper.style.left) - 5) + "px";				
		}
		if ((id!="gc1")&&(id!="gc2")&&(id!="gc3"))
		{
			wrapper.style.top = (parseInt(wrapper.style.top) - 5) + "px";				
		}
		
		wrapper.style.width = wW + "px";
		wrapper.style.height = wH + "px";
		if ((iW < (wW-15))&&(iH < (wH-15)))
		{
			img.width = iW;// + "px";
			img.height = iH;// + "px";
		}
		
		setTimeout("grow('" + id + "')",1);
	}	
	else
	{
		zoom.src = "images/layout/icons/zoomOut.gif";
		zoom.onclick = function(){							
							return setSize(id, 'shrink');
						};
	}
}
function shrink(id)
{
	var wW = parseInt(wrapper.style.width);
	var wH = parseInt(wrapper.style.height);
	var iW = parseInt(img.width);
	var iH = parseInt(img.height);
	if (wW > minwW)
	{									
		wW-=5;
		wH-=5;			
		if (img.className=="imgV")
		{
			iH-=5;
			iW = parseInt(iH * imgRatio);
		}
		else
		{
			iW-=5;
			iH = parseInt(iW/imgRatio);
		}
		if ((id!="gc1")&&(id!="gc4")&&(id!="gc7"))
		{
			wrapper.style.left = (parseInt(wrapper.style.left) + 5) + "px";				
		}
		if ((id!="gc1")&&(id!="gc2")&&(id!="gc3"))
		{
			wrapper.style.top = (parseInt(wrapper.style.top) + 5) + "px";				
		}
		
		wrapper.style.width = wW + "px";
		wrapper.style.height = wH + "px";
		if (((img.className=="imgV")&&(iH>=minIvH))||((img.className=="imgH")&&(iW>=minIhW)))
		{
			img.width = iW;// + "px";
			img.height = iH;// + "px";
		}			
		setTimeout("shrink('" + id + "')",1);
	}
	else
	{					
		zoom.src = "images/layout/icons/zoomIn.gif";
		zoom.onclick = function(){							
							return setSize(id, 'grow');
						};			
		setDefaults(id);
	}
}

function setDefaults(id)
{
	var fullImg = new Image();
	wrapper.style.cursor = "wait";
	fullImg.src = aLink.href;	
	topZ++;
	wrapper.style.width = "150px";
	wrapper.style.height = "150px";
	
	switch (id)
	{
		case "gc1":
			wrapper.style.left = "0px";
			wrapper.style.top = "0px";
			break;
		case "gc2":
			wrapper.style.left = "180px";
			wrapper.style.top = "0px";
			break;
		case "gc3":
			wrapper.style.left = "360px";
			wrapper.style.top = "0px";
			break;
		case "gc4":
			wrapper.style.left = "0px";
			wrapper.style.top = "180px";
			break;
		case "gc5":
			wrapper.style.left = "180px";
			wrapper.style.top = "180px";
			break;
		case "gc6":
			wrapper.style.left = "360px";
			wrapper.style.top = "180px";
			break;
		case "gc7":
			wrapper.style.left = "0px";
			wrapper.style.top = "360px";
			break;
		case "gc8":
			wrapper.style.left = "180px";
			wrapper.style.top = "360px";
			break;
		case "gc9":
			wrapper.style.left = "360px";
			wrapper.style.top = "360px";
			break;
		
	}		
	wrapper.style.zIndex = topZ;
	img.style.zIndex = (topZ) + 1;
	resetRatio(id);
	
	fullImg.onload = function(){
						wrapper.style.cursor = "auto";
						return;
					};
	img.src=aLink.href;
}

function resetRatio(id)
{
	imgRatio = (parseInt(img.width))/(parseInt(img.height));
}

function setSize(id, action)
{	
	wrapper = document.getElementById(id);
	aLink = wrapper.getElementsByTagName("a")[0];
	img = wrapper.getElementsByTagName("img")[0];
	zoom = wrapper.getElementsByTagName("img")[1];
	
	if (action=="grow")
	{
		setDefaults(id);
		setTimeout("grow('" + id + "')",1);
	}
	else
	{	
		resetRatio(id);
		setTimeout("shrink('" + id + "')",1);
	}
	
	return false;
}
function showZoom(wrap,type)
{
	if (type=="show")
	{
		wrap.getElementsByTagName("img")[1].style.display = "inline";
	}
	else
	{
		wrap.getElementsByTagName("img")[1].style.display = "none";
	}
	
}