var portf = {
	mInc: 800,
	items: new Array(),
	navItems: new Array(),
	current: 0,
	offset: 148,
	scrollBackTo: new Array(),
	stopAutoAdvance: false,
	onImg: 'fileadmin/templates/img/portfolio/position_on.jpg',
	offImg: 'fileadmin/templates/img/portfolio/position.jpg',	
	init: function() {
		portf.insertOverlay();
		
		var img1 = new Image();
		img1.src = 'fileadmin/templates/img/portfolio/single_bg_middle_w.png';
		
		var img2 = new Image();
		img2.src = 'fileadmin/templates/img/portfolio/single_bg_top_w.png';
		
		var img2 = new Image();
		img2.src = 'fileadmin/templates/img/portfolio/single_bg_bottom_w.png';
		
		if($('pWrapInner')) {
			$('pWrapInner').select('div.pItem').each(function(item,index) {
				portf.items[index]  = item;
				item.observe('click',function(e) {
					portf.openOverlay(e);
				})
			})
			$('pNav').select('img').each(function(item,index) {
				portf.navItems[index]  = item;
			})			
			portf.initEvents();
			if($('overlay')) {
				$('overlay').setStyle({height: $('portfolio').getHeight() + 20 + 'px'})
				Element.observe(window,'load', function() {
					$('overlay').setStyle({height: $('portfolio').getHeight() + 20 + 'px'})
				});				

				// start advancing
				setTimeout(function() {portf.advance(true)},5000);			
			}
		}

		if($('cicPortfolioSingle').hasClassName('cicPorfolioSingleNoJavascript')) {
			portf.initSinglePageEvents();
		}

	},	
	insertOverlay: function() {
		$('portfolio').insert({top: '<div id="overlay" style="display: none;"></div>'});
	},
	openOverlay: function(e) {	
		portf.overlayIsOpen = true;
		portf.stopAutoAdvance = true;
		portf.scrollBackTo = document.viewport.getScrollOffsets();
		$('cicPortfolioSingle').addClassName('cicPortfolioSingle-loading');
		
		var el = Event.element(e);
		if(el.hasClassName('pThumb')) {
			portf.postScrollHighlightEl = el;
			el.setStyle({
				backgroundColor: '#92B5CD'
			})
		}

		var projId = el.readAttribute('rel');
		
		// start requesting content
		portf.updateOverlay(projId);
		
		$('overlay').show();
		
		// only scroll if needed
		if(portf.scrollBackTo[1] > 10) {
			Effect.ScrollTo($('cicPortfolioSingle'),{offset: 0, duration: .2, queue: 'end'});			
		}

		$('cicPortfolioSingle').appear({duration: .5, queue: 'end'});
		portf.items[portf.current].addClassName('on');
		
	},

	updateOverlay: function(projId) {
		// urchinTracker('/search_routes/'+term);
		var url = 'response.php?num=' + projId;
		var url = 'index.php?id=210&type=2349&tx_cicmvc_pi1[cicportfolio][uid]=' + projId;
		new Ajax.Updater('cicPortfolioSingleContent',url, {
		  method: 'get',
		  onComplete: function(transport) {
			var response = transport.responseText;	
			
			// remove loading graphic
			$('cicPortfolioSingle').removeClassName('cicPortfolioSingle-loading');
			
			// add mouseover events to thumbs
			$$('.pThumbTrigger').each(function(pThumb,index) {
				var id = 'pThumbFull-' + pThumb.readAttribute('rel');
				var src = $(id).readAttribute('value');
				var image = new Image();
				image.src = src;
				pThumb.observe('mouseover',function() {
					portf.updateMainImage(src)
				})
			});
		  }
		});
	},
	updateMainImage: function(path) {
		if($('pImgMain')) {
			$('pImgMain').writeAttribute({src: path});
		}
	},
	closeOverlay: function(e) {
		if(portf.overlayIsOpen == false) return false;
		var el = Event.element(e);
		if(el.up('.cicPortfolioSingle') == true || el.id == 'cicPortfolioSingle') {
			return false;
		} else {
			// actual closing
			$('cicPortfolioSingle').fade({duration: .5, queue: 'end', afterFinish: function() {
				$('cicPortfolioSingleContent').insert({top: '<img id="ajaxLoader" src="fileadmin/templates/img/portfolio/ajax-loader.gif"/>'});				
			}});
			$('overlay').hide();
			Effect.ScrollTo($('portfolio'),{offset: portf.scrollBackTo[1], duration: .2, afterFinish: function() {
				portf.scrollBackTo = new Array();				
			}});
			if(portf.postScrollHighlightEl) {
				var queue = { scope: 'dummyQueue', position: 'end'};
				new Effect.Highlight(portf.postScrollHighlightEl, { startcolor: '#92B5CD', endcolor: '#FFFFFF', duration: 2, queue: queue, afterFinish: function(e) {
					e.element.writeAttribute({style:''});
					
				}});
			}
			// cleanup
			portf.postScrollHighlightEl = null;
			portf.overlayIsOpen = false;

		}
	},
	initSinglePageEvents: function() {
		// add mouseover events to thumbs
		$$('.pThumbTrigger').each(function(pThumb,index) {
			pThumb.observe('mouseover',function() {
				var id = 'pThumbFull-' + pThumb.readAttribute('rel');
				var src = $(id).readAttribute('value');
				portf.updateMainImage(src)
			})
		});
		
	},	
	initEvents: function() {
		
		$('pPrev').observe('click',function() {
			portf.rewind();
		});
		$('pNext').observe('click',function() {
			portf.advance(false);			
		});
		portf.navItems.each(function(pNavItem,index) {
			pNavItem.observe('click',function() {
				portf.goTo(index,false);
			})
		});
		$$('.pTable .pItem img').each(function(pTableImg,index) {
			pTableImg.observe('click',function(e) {
				portf.openOverlay(e);
				pTableImg.up('a').writeAttribute({'href':'javascript://return false;'});
			})
		})	
		$('cicPortfolioSingleCloseBtn').observe('click',function(e) {
			portf.closeOverlay(e);
		})
		$('overlay').observe('click',function(e) {
			portf.closeOverlay(e);
		})			
	},	
	goTo: function(index,isAutoAdvance) {
		if(isAutoAdvance == false) {
			this.stopAutoAdvance = true;
		}
		var size = portf.items.size();
		var max = size - 1;
		if(index < 0) index = max;
		if(index > max) index = 0;

		// math
		var offset = portf.items[index].positionedOffset();
		var moveX = (offset[0] * -1) + portf.offset;
		portf.offset = portf.offset - moveX;

		
		new Effect.Move($('pWrapInner'),{x: moveX, y: 0, mode: 'relative', duration: .5, queue: 'end', afterFinish: function() {
			portf.setCurrent(index);	
		}});
		
	},
	setCurrent: function(index) {
		this.navItems.each(function(el,elIndex) {
			if(index == elIndex) {
				el.writeAttribute({'src':portf.onImg});
			} else {
				el.writeAttribute({'src':portf.offImg});
			}
		});
		portf.current = index;
	},
	rewind: function() {
		this.stopAutoAdvance = true;
		portf.goTo(portf.current - 1);
	},
	advance: function(isAutoAdvance) {
		if(isAutoAdvance == false) {
			this.stopAutoAdvance = true;
			portf.goTo(portf.current + 1,false);
		} else {
			if(this.stopAutoAdvance == false) {
				portf.goTo(portf.current + 1,true);				
				setTimeout(function() {portf.advance(true)},4000);
			}
		}
	
	}
	
}

Element.observe(document,'dom:loaded', function() {
	portf.init();
});


