var aImgTypes = new Array('jpg', 'gif', 'png', 'jpeg');
var aClient = new Object();
aClient.allImgs = function() {
	var links = document.getElementsByTagName('a');
	var photos = new Array();
	for(i = 0; i < links.length; i++) {
		for(j = 0; j < aImgTypes.length; j++) {
			if(links[i].href.indexOf(aImgTypes[j]) > links[i].href.lastIndexOf('.')) {
				photos.push(links[i]);
			}
		}
	}
	return photos;
}
aClient.pageWidth = function() {
	var xScroll;
	if(window.innerHeight && window.scrollMaxY) {
		xScroll = document.body.scrollWidth;
	} else if(document.body.scrollHeight > document.body.offsetHeight){
		xScroll = document.body.scrollWidth;
	} else {
		xScroll = document.body.offsetWidth;
	}
	if(xScroll < $D.getViewportWidth()) {
		pageWidth = $D.getViewportWidth();
	} else {
		pageWidth = xScroll;
	}
	return pageWidth;
};
aClient.pageHeight = function() {
	var yScroll;
	if(window.innerHeight && window.scrollMaxY) {
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if(document.body.scrollHeight > document.body.offsetHeight){
		yScroll = document.body.scrollHeight;
	} else {
		yScroll = document.body.offsetHeight;
	}
	if(yScroll <= $D.getViewportHeight()) {
		pageHeight = $D.getViewportHeight();
	} else {
		pageHeight = yScroll;
	}
	return pageHeight;
};
aClient.xScroll = function() {
	var xScroll = window.scrollX || document.documentElement.scrollLeft;
	return xScroll;
}
aClient.yScroll = function() {
	var yScroll = window.scrollY || document.documentElement.scrollTop;
	return yScroll;
}
Array.prototype.inArray = function(value) {
	for (i=0; i < this.length; i++) { if(this[i] == value) { return i; } }
	return null;
}
var $D = YAHOO.util.Dom;
var $E = YAHOO.util.Event;
var $A = YAHOO.util.Anim;
var $M = YAHOO.util.Motion;
var $S = YAHOO.util.Scroll;
var $Ease = YAHOO.util.Easing;
var $ = $D.get;
YAHOO.util.AnimMgr.fps = 500;

YAHOO.widget.aEffect = function(el) { this.oEl = YAHOO.util.Dom.get(el); };
YAHOO.widget.aEffect.prototype.aShowLoad = function() {
	var showLoad = new $A('aLoadImg', {opacity: {to: 1}}, 0.2);
	showLoad.onStart.subscribe(function() {
		$D.setStyle('aLoadImg', 'display', 'block');
		$D.setXY('aLoadImg', [
			($D.getViewportWidth()/2)-16+aClient.xScroll(),
			($D.getViewportHeight()/2)-16+aClient.yScroll()
		]);
		if($D.hasClass('aBoxMeta', 'aOpen')) {
			var hideMeta = new $A('aBoxMeta', {opacity: {to: 0}, height: {to: 0}}, 0.2);
			hideMeta.onStart.subscribe(function() {
				$D.setStyle('aImg', 'opacity', '0');
				$D.setStyle('aImg', 'visibility', 'hidden');
			});
			hideMeta.animate();
		}
	});
	showLoad.animate();
};
YAHOO.widget.aEffect.prototype.aShowOverlay = function() {
	selects = document.getElementsByTagName("select");
	for (i = 0; i != selects.length; i++) {
		$D.setStyle(selects[i], 'visibility', 'hidden');
	}

	var fadeOverlay = new $A('aOverlay', {opacity: {to: 0.85}}, 0.3);
	fadeOverlay.onStart.subscribe(function() {
		$D.setStyle('aOverlay', 'display', 'block');
		$D.setStyle('aOverlay', 'height', aClient.pageHeight()+'px');
	});
	var showBox = new $A('aBox', {opacity: {to: 1}}, 0.3);
	showBox.onStart.subscribe(function() {
		$D.setStyle('aBox', 'display', 'block');
		var showLoad = new YAHOO.widget.aEffect();
		showLoad.aShowLoad();
	});
	showBox.animate();
	fadeOverlay.animate();
};
YAHOO.widget.aEffect.prototype.aResizeBox = function(aPreload) {
	var imgScale = YAHOO.awesomebox.scaleImage(aPreload);

	var moveBox = new $M('aBox', {
		width: {to: (imgScale[0]+20)},
		height: {to: (imgScale[1]+20)},
		points: {to: [
			($D.getViewportWidth()/2)-(imgScale[0]/2)+aClient.xScroll()-10,
			($D.getViewportHeight()/2)-(imgScale[1]/2)+aClient.yScroll()-10
			]
		}
	}, 0.3);
	moveBox.onStart.subscribe(function() {
		$D.setStyle('aBox', 'display', 'block');
	
		var hideLoad = new $A('aLoadImg', {opacity: {to: 0}}, 0.3);
		var sizeImage = new $A('aImg', {width: {to: imgScale[0]}, height: {to: imgScale[1]}}, 0.3);

		hideLoad.onComplete.subscribe(function() { $D.setStyle('aLoadImg', 'display', 'none'); });
		hideLoad.animate();
		sizeImage.animate();
	});
	moveBox.onComplete.subscribe(function() {
		$D.setStyle('aBox', 'height', imgScale[1]+70+'px');
		$D.setStyle('aBoxMeta', 'width', imgScale[0]+'px');
		$D.addClass('aBoxMeta', 'aOpen');
		$('aImg').setAttribute('width', imgScale[0]);
		$('aImg').setAttribute('height', imgScale[1]);
		$D.setStyle('aImg', 'visibility', 'visible');

		var fadeImg = new $A('aImg', {opacity: {from: 0, to: 1}}, 0.3);

		fadeImg.onComplete.subscribe(function() {
			var showMeta = new $A('aBoxMeta', {opacity: {from: 0, to: 1}, height: {to: 40}}, 0.2);
			showMeta.animate();
		});
		fadeImg.animate();
	});
	if($D.hasClass('aBoxMeta', 'aOpen')) {
		setTimeout(function() {
			$('aImg').setAttribute('src', aPreload.src);
			moveBox.animate();
		}, 300);
	} else {
		$('aImg').setAttribute('src', aPreload.src);
		moveBox.animate();
	}
};
YAHOO.widget.aEffect.prototype.aClose = function() {
	var that = $('aImg');
	var hideMeta = new $A('aBoxMeta', {height: {to: 0}, opacity: {to: 0}}, 0.2);
	var fadeBox = new $M('aBox', {opacity: {to: 0}}, 0.3);
	fadeBox.onComplete.subscribe(function() {
		var hideOverlay = new $A('aOverlay', {opacity: {to: 0}}, 0.3);
		hideOverlay.onStart.subscribe(function() {
			selects = document.getElementsByTagName("select");
			for (i = 0; i != selects.length; i++) {
				$D.setStyle(selects[i], 'visibility', 'visible');
			}
			$D.removeClass('aBoxMeta', 'aOpen');
			$D.setStyle('aBox', 'display', 'none');
			$D.setStyle('aImg', 'opacity', '0');
			$D.setStyle('aImg', 'visibility', 'hidden');
			$D.setStyle('aOverlay', 'display', 'none');
			$D.setStyle('aOverlay', 'height', '0px');
			$D.setStyle('aLoadImg', 'display', 'none');
		});
		hideOverlay.animate();
	});
	hideMeta.animate();
	fadeBox.animate();
	$E.removeListener('aNextButton', 'click');
	$E.removeListener('aPrevButton', 'click');
};
YAHOO.awesomebox = function() {
	return {
		init : function() {
			if(!document.getElementsByTagName){ return; }
			var aBody = document.getElementsByTagName("body").item(0);
			var aOverlay = document.createElement('div');
			$(aOverlay).setAttribute('id', 'aOverlay');
			$(aOverlay).setAttribute('title', 'Clique para Fechar');
			aBody.appendChild(aOverlay);
			$D.setStyle('aOverlay', 'opacity', '0');
		
			var aBox = document.createElement('div');
			$(aBox).setAttribute('id', 'aBox');
			aBody.appendChild(aBox);
			$D.setStyle('aBox', 'opacity', '0');
			$D.setXY('aBox', [($D.getViewportWidth()/2)-21, ($D.getViewportHeight()/2)-21]);
			$D.setStyle('aBox', 'display', 'none');
		
			var aImgHolder = document.createElement('div');
			$(aImgHolder).setAttribute('id', 'aImgHolder');
			aBox.appendChild(aImgHolder);

			var aImg = document.createElement('img');
			$(aImg).setAttribute('id', 'aImg');
			aImgHolder.appendChild(aImg);
			$D.setStyle('aImg', 'opacity', '0');
			$D.setStyle('aImg', 'visibility', 'hidden');
		
			var aBoxMeta = document.createElement('div');
			$(aBoxMeta).setAttribute('id', 'aBoxMeta');
			aBox.appendChild(aBoxMeta);
		
			var aNextButton = document.createElement('a');
			$(aNextButton).setAttribute('id', 'aNextButton');
			aBoxMeta.appendChild(aNextButton);
			$(aNextButton).setAttribute('href', '#prox');
			$D.addClass(aNextButton, 'aButton');

			var aPrevButton = document.createElement('a');
			$(aPrevButton).setAttribute('id', 'aPrevButton');
			aBoxMeta.appendChild(aPrevButton);
			$(aPrevButton).setAttribute('href', '#ant');
			$D.addClass(aPrevButton, 'aButton');

			var aCloseButton = document.createElement('a');
			$(aCloseButton).setAttribute('id', 'aCloseButton');
			aBoxMeta.appendChild(aCloseButton);
			$(aCloseButton).setAttribute('href', '#fechar');
			$D.addClass(aCloseButton, 'aButton');
		
			var aCount = document.createElement('p');
			$(aCount).setAttribute('id', 'aCount');
			aBoxMeta.appendChild(aCount);
			$D.setStyle(aCount, 'opacity', '0');

			var aInfo = document.createElement('p');
			$(aInfo).setAttribute('id', 'aInfo');
			aBoxMeta.appendChild(aInfo);
		
			var preloadLoading = new Image();
			preloadLoading.src = aLoadImgSrc;
		
			var aLoadImg = document.createElement('img');
			$(aLoadImg).setAttribute('id', 'aLoadImg');
			aBody.appendChild(aLoadImg);
			$(aLoadImg).setAttribute('src', preloadLoading.src);
			$D.setStyle('aLoadImg', 'opacity', '0');
			if(window.location.href.indexOf('#') != -1) {
				if(document.body.id != '' || document.body.id != null) {
					var body = $D.generateId(document.body);
				} else {
					var body = document.body.id;
				}
				var imgArray = aClient.allImgs();
				var loadImg = window.location.href.split('#')[1];
				for(i = 0; i < imgArray.length; i++) {
					var imgUrl = imgArray[i].getAttribute('href').split('/');
					if(imgUrl[imgUrl.length-1].split('.')[0] == loadImg) {
						$E.onAvailable(body, this.load, $(imgArray[i]), true);
					}
				}
			}

			$E.on(aOverlay, 'click', this.close);
			$E.on(aCloseButton, 'click', this.close);
		
			$E.on(aClient.allImgs(), 'click', this.load);
		},
		load : function(e, newImg) {
			var fadeOverlayIn = new YAHOO.widget.aEffect();
			fadeOverlayIn.aShowOverlay();
					
			if(newImg) { var that = newImg;
			} else { var that = this; }
		
			$E.stopEvent(e);

			aPreload = new Image();
			aPreload.onload = function() {
				var resizeBox = new YAHOO.widget.aEffect(that);
				resizeBox.aResizeBox(aPreload);
			
				//urchinTracker(aPreload.src.split(siteURL)[1]);
			
				if(!that.getAttribute('rel')) {
					$D.setStyle('aNextButton', 'visibility', 'hidden');
					$D.setStyle('aPrevButton', 'visibility', 'hidden');
					$D.setStyle('aCount', 'opacity', '0');
				} else {
					$D.setStyle('aCount', 'opacity', '1');
					$E.removeListener('aNextButton', 'click');
					$E.removeListener('aPrevButton', 'click');
				}
				var aInfo = '';

				if(
					that.getElementsByTagName('img')[0] &&
					that.getElementsByTagName('img')[0].getAttribute('alt') != null
				) {
					var aInfo = that.getElementsByTagName('img')[0].getAttribute('alt');
				} else {
					var aInfo = that.innerHTML;
				}
				if($D.hasClass('aBoxMeta', 'aOpen')) {
					setTimeout(function() {
						$('aInfo').innerHTML = aInfo;
					}, 250);
				} else {
					$('aInfo').innerHTML = aInfo;
				}
			
				var urlSplit = that.getAttribute('href').split('/');
				var filename = urlSplit[urlSplit.length-1].split('.')[0];
				if(window.location.href.indexOf('#') != -1) {
					var url = window.location.href.split('#')[0];
				} else {
					var url = window.location.href;
				}
				window.location = url+'#'+filename;

				if(that.getAttribute('rel')) {
					YAHOO.awesomebox.loadNeighbors(that);
				}
			};
			aPreload.src = that.getAttribute('href');
		},
		loadNeighbors : function(that) {
			var imgRefs = aClient.allImgs();
			var photoSet = new Array();
			for(j = 0; j < imgRefs.length; j++) {
				if(
					imgRefs[j].getAttribute('rel') && 
					imgRefs[j].getAttribute('rel') == that.getAttribute('rel')
				) {
					photoSet.push(imgRefs[j]);
				}
			}
			var key = photoSet.inArray(that);
			if(typeof(prdGal) == "object"){
				prdGal.scrollTo(key);
			}
			setTimeout(function() {
				$('aCount').innerHTML = 'Imagem '+(key+1)+' de '+photoSet.length;
			}, 300);
		
			if(key != photoSet.length-1) {
				var next = new Image();
				next.src = photoSet[key+1].getAttribute('href');
				$D.setStyle('aNextButton', 'visibility', 'visible');
			} else {
				$D.setStyle('aNextButton', 'visibility', 'hidden');
			}
			if(key != 0) {
				var prev = new Image();
				prev.src = photoSet[key-1].getAttribute('href');
				$D.setStyle('aPrevButton', 'visibility', 'visible');
			} else {
				$D.setStyle('aPrevButton', 'visibility', 'hidden');
			}
			$E.addListener('aNextButton', 'click', this.load, photoSet[key+1], true);
			$E.addListener('aPrevButton', 'click', this.load, photoSet[key-1], true);
		},
		scaleImage : function(aImage) {
			var sHeight = aImage.height;
			var sWidth = aImage.width;
			if(aImage.width > $D.getViewportWidth()) {
				sWidth = $D.getViewportWidth()-20;
				sHeight = aImage.height * (sWidth / aImage.width);
				if(sHeight+100 > ($D.getViewportHeight()-20)) {
					sHeight = $D.getViewportHeight()-120;
					sWidth = aImage.width * (sHeight / aImage.height);
				}
			} else if(aImage.height+100 > $D.getViewportHeight()) {
				sWidth = aImage.width * (($D.getViewportHeight()-120) / aImage.height);
				sHeight = $D.getViewportHeight()-120;
				if(sWidth > ($D.getViewportWidth()-20)) {
					sWidth = aImage.width * (sHeight / aImage.height);
					sHeight = aImage.height * (sWidth / aImage.width);
				}
			}
			var scaleAtts = new Array(Math.floor(sWidth), Math.floor(sHeight));
			return scaleAtts;
		},
		close : function() {
			var aClose = new YAHOO.widget.aEffect();
			aClose.aClose();
			if(window.location.href.indexOf('#') != -1) {
				var url = window.location.href.split('#')[0];
			} else {
				var url = window.location.href;
			}
			window.location = url+'#close';
		}
	}
}();
YAHOO.util.Event.on(window, 'load', YAHOO.awesomebox.init, YAHOO.awesomebox, true);
