if(!Dom) var Dom = YAHOO.util.Dom;
if(!YE) var YE = YAHOO.util.Event;
if(!$) var $ = Dom.get;
var currentImg;

function imagePopInit(){

	var layerMask = document.createElement('div');
	var bodyChild = Dom.getFirstChild(document.body);
	Dom.insertBefore(layerMask, bodyChild);
	layerMask.setAttribute('id', 'layerMask');
	Dom.setStyle(layerMask, 'opacity', '0.8');
	Dom.setStyle(layerMask, 'width', Dom.getDocumentWidth() + 'px');
	Dom.setStyle(layerMask, 'height', Dom.getDocumentHeight() + 'px');

	var imgTip = document.createElement('img');
	imgTip.setAttribute('src', '/_images/fullsize/fullsize-icon.png');
	imgTip.setAttribute('alt', 'Show Full Size');
	imgTip.setAttribute('id', 'imgTip');
	Dom.setStyle(imgTip, 'display', 'none');
	document.body.appendChild(imgTip);

	YE.on(imgTip, 'mouseover', holdImgTip, imgTip);
	YE.on(imgTip, 'click', showImage, imgTip);

	/*var imgNewTip = document.createElement('img');
	imgNewTip.setAttribute('src', '/_images/fullsize/fullsize-icon-window.png');
	imgNewTip.setAttribute('alt', 'Open In New Window');
	imgNewTip.setAttribute('id', 'imgNewTip');
	Dom.setStyle(imgNewTip, 'display', 'none');
	document.body.appendChild(imgNewTip);

	YE.on(imgTip, 'mouseover', holdImgTip, imgTip);
	YE.on(imgTip, 'click', showImage, imgTip);
	YE.on(imgNewTip, 'mouseover', holdImgTip, imgNewTip);
	YE.on(imgNewTip, 'click', function(e, location){
		YE.stopEvent(e);
		hideImgTip(null, null);
		var location = Dom.getAncestorByTagName(currentImg, 'a');
		if(location){
			window.open(location.href);
		} else {
			location = currentImg.getAttribute('src');
			var fileSizes = new Array('tiny_', 'thumb_', 'small_', 'mid_', 'medium_', 'uber_');
			for(var i=0;i<fileSizes.length;i++){
				location = str_replace(fileSizes[i], 'orig_', location);
			}
			if(location){
				window.open(location);
			}
		}
	}, imgTip);*/

	var clientImages = Dom.getElementsByClassName('popImage', 'img', 't_text');
	for(var i=0;i<clientImages.length;i++){
		var singleImg = clientImages[i];
		Dom.setStyle(singleImg, 'cursor', 'pointer');
		YE.on(singleImg, 'mouseover', showImgTip, singleImg);
		YE.on(singleImg, 'mouseout', hideImgTip, singleImg);
		YE.on(singleImg, 'click', showImage, singleImg);
	}
}

function showImgTip(e, imgEl){

	currentImg = imgEl;
	var imgLoc = Dom.getRegion(imgEl);

	var imgTip = $('imgTip');
	if(imgTip){
		Dom.setStyle(imgTip, 'position', 'absolute');
		Dom.setStyle(imgTip, 'top', (imgLoc["top"] + 25) + 'px');
		Dom.setStyle(imgTip, 'left', (imgLoc["left"] + 25) + 'px');
		Dom.setStyle(imgTip, 'display', 'block');
	} else {
		var imgTip = document.createElement('img');
		imgTip.setAttribute('src', '/_images/fullsize/fullsize-icon.png');
		imgTip.setAttribute('alt', 'Show Full Size');
		imgTip.setAttribute('id', 'imgTip');
		Dom.setStyle(imgTip, 'display', 'none');
		document.body.appendChild(imgTip);
	}

/*	var imgNewTip = $('imgNewTip');
	if(imgNewTip){
		var imageWidth = imgLoc["right"] - imgLoc["left"];
		var newLoc = imgLoc["left"] + (imageWidth - 51);

		Dom.setStyle(imgNewTip, 'position', 'absolute');
		Dom.setStyle(imgNewTip, 'top', (imgLoc["top"] + 25) + 'px');
		Dom.setStyle(imgNewTip, 'left', newLoc + 'px');
		Dom.setStyle(imgNewTip, 'display', 'block');
	} else {
		var imgNewTip = document.createElement('img');
		imgNewTip.setAttribute('src', '/_images/fullsize/fullsize-icon-window.png');
		imgNewTip.setAttribute('alt', 'Open In New Window');
		imgNewTip.setAttribute('id', 'imgNewTip');
		Dom.setStyle(imgNewTip, 'display', 'none');
		document.body.appendChild(imgNewTip);
	}*/
}

function hideImgTip(e, imgEl){
	var imgTip = $('imgTip');
	if(imgTip){
		Dom.setStyle(imgTip, 'display', 'none');
	}
	var imgNewTip = $('imgNewTip');
	if(imgNewTip){
		Dom.setStyle(imgNewTip, 'display', 'none');
	}
}

function holdImgTip(e, imgTip){
	if(imgTip){
		Dom.setStyle(imgTip, 'display', 'block');
		Dom.setStyle(imgTip, 'cursor', 'url(/_images/fullsize/fullsize.cur), auto');
	}
}

function showImage(e, imgTip){

	var imgSrc = currentImg.getAttribute('src');
	var largeImgSrc = currentImg.getAttribute('longdesc');
	if(!largeImgSrc){
		largeImgSrc = imgSrc;
	}

	var loadingDiv = $('fullSizeLoading');
	if(!loadingDiv){

		var loadingDiv = document.createElement('div');
		document.body.appendChild(loadingDiv);
		loadingDiv.setAttribute('id', 'fullSizeLoading');

		var viewPort = Dom.getClientRegion();
		var topStyle = viewPort["bottom"] - (viewPort["bottom"] / 2) + (viewPort["top"] / 2) - 51;
		var leftStyle = viewPort["right"] - (viewPort["right"] / 2) - 51;

		Dom.setStyle(loadingDiv, 'position', 'absolute');
		Dom.setStyle(loadingDiv, 'top', topStyle + 'px');
		Dom.setStyle(loadingDiv, 'left', leftStyle + 'px');

		var loadingAnim = document.createElement('img');
		loadingDiv.appendChild(loadingAnim);
		loadingAnim.setAttribute('src', '/_images/fullsize/fullsize-loading-spinner.gif');
		loadingAnim.setAttribute('alt', 'Loading Your Image');
		Dom.setStyle(loadingAnim, 'margin', '14px');
	} else {
		var viewPort = Dom.getClientRegion();
		var topStyle = viewPort["bottom"] - (viewPort["bottom"] / 2) + (viewPort["top"] / 2) - 51;
		var leftStyle = viewPort["right"] - (viewPort["right"] / 2) - 51;

		Dom.setStyle(loadingDiv, 'position', 'absolute');
		Dom.setStyle(loadingDiv, 'top', topStyle + 'px');
		Dom.setStyle(loadingDiv, 'left', leftStyle + 'px');
	}

	var overlay = $('layerMask');
	Dom.setStyle(overlay, 'display', 'block');

	var imgContainer = $('fullSizeContainer');

	if(imgContainer){
		imgContainer.parentNode.removeChild(imgContainer);
	}

	var imgContainer = document.createElement('div');
	imgContainer.setAttribute('id', 'fullSizeContainer');

	var imgHead = document.createElement('div');
	imgContainer.appendChild(imgHead);
	imgHead.setAttribute('id', 'fullSizeHead');
	Dom.setStyle(imgHead, 'opacity', '0.9');
	Dom.setStyle(imgHead, 'width', '0.9');
	imgHead.appendChild(document.createTextNode(currentImg.getAttribute('alt')));

	var closeLink = document.createElement('a');
	imgHead.appendChild(closeLink);
	closeLink.setAttribute('href', '');
	closeLink.setAttribute('title', 'Close This Window');
	closeLink.setAttribute('id', 'fullSizeClose');

	YE.on(closeLink, 'click', closeEverything);

	var largeImg = document.createElement('img');
	largeImg.setAttribute('src', largeImgSrc);
	largeImg.setAttribute('alt', 'A large image');
	largeImg.setAttribute('id', 'fullSizeImage');
	imgContainer.appendChild(largeImg);

	YE.on(largeImg, 'load', function(e, largeImg){

		var loadingDiv = $('fullSizeLoading');
		if(loadingDiv){
			Dom.setStyle(loadingDiv, 'display', 'none');
		}
		hideImgTip(null, null);
		document.body.appendChild(imgContainer);

		Dom.setStyle(imgContainer, 'position', 'absolute');

		var imageWidth = largeImg.width;
		var imageHeight = largeImg.height;

		var x = (viewPort["right"] - viewPort["left"]) - 150;
		var y = (viewPort["bottom"] - viewPort["top"]) - 150;
		if (imageWidth > x) {
			imageHeight = Math.round(imageHeight * (x / imageWidth));
			largeImg.width = x;
			if (imageHeight > y) {
				largeImg.width = Math.round(largeImg.width * (y / imageHeight));
				largeImg.height = y;
			}
		} else if (imageHeight > y) {
			imageWidth = Math.round(imageWidth * (y / imageHeight));
			largeImg.height = y;
			if (imageWidth > x) {
				largeImg.height = Math.round(largeImg.height * (x / imageWidth));
				largeImg.width = x;
			}
		}

		Dom.setStyle($('fullSizeHead'), 'width', largeImg.width + 'px');

		var imgLeftStyle = (viewPort["right"] - largeImg.width) / 2;
		var imgTopStyle = (((viewPort["bottom"] - largeImg.height) / 2) + (viewPort["top"] / 2));

		Dom.setStyle(imgContainer, 'top', (imgTopStyle - 74) + 'px');
		Dom.setStyle(imgContainer, 'left', imgLeftStyle + 'px');

		var newContainer = $('extraAd');
		imgContainer.appendChild(newContainer);
		Dom.setStyle(newContainer, 'display', 'block');

	}, largeImg);
}

function closeEverything(e){
	YE.stopEvent(e);
	var newContainer = $('extraAd');
	document.body.appendChild(newContainer);
	Dom.setStyle(newContainer, 'display', 'none');

	var imageContainer = $('fullSizeContainer');
	if(imageContainer){
		imageContainer.parentNode.removeChild(imageContainer);
	}
	var overlay = $('layerMask');
	Dom.setStyle(overlay, 'display', 'none');
	currentImg = null;
}

/**
 * str_replace
 * Replicates the PHP str_replace function in javascript
 * active
 * @access public
 * @return void
 **/
function str_replace (search, replace, subject){
	var result = "";
	var oldi = 0;
	for (i = subject.indexOf (search); i > -1; i = subject.indexOf (search, i)) {
		result += subject.substring (oldi, i);
		result += replace;
		i += search.length;
		oldi = i;
	}
	return result + subject.substring (oldi, subject.length);
}

YE.onDOMReady(imagePopInit);