var base = 'index.php?';
Element.implement({
	hasEvent: function(eventType,fn) {
		//get the element's events
		var myEvents = this.retrieve('events');
		//can we shoot this down?
		return myEvents && myEvents[eventType] && (fn == undefined || myEvents[eventType].keys.contains(fn));
	}
});


if((typeof console == "undefined")){
	window.console = {};
	if(window.location.href.indexOf('.dev.')){
		console.log = function(content){
			// debug(content);
		};	
	}
	else{
		console.log = function(content){
			return content;
		};
	}
}
/* track events for google */
function trackEvents(path){
	pageTracker._trackPageview(path); 
}

/* ------------------------------------------------------------------------ */
/*Create Overlay Event Functions*/
function launchOverlay(event){
	if(typeof event !="undefined") new Event(event).stop();
	if(event.target.hasClass('plus')){return false;}
	var el = event.target.clone();
	el.removeEvents({
		'click':launchOverlay
	});
	el.setStyles({
		'height':'auto',
		'width':'auto'
	})
	showOverlay(el)
}
function showOverlay(el){
	var dimmer = createDimmer();
	dimmer.inject($(document.body),'bottom');
	dimmer.setStyle('opacity',0);
	dimmer.set('tween', {duration: 'short'});
	
	var overlayContent = createOverlayContent(el);
	
	
	var closeBtn = new Element('span',{
		'class':'close',
		'events':({
			'click':removeOverlay.bindWithEvent([overlayContent,dimmer])
		})
	}) 
	closeBtn.inject(overlayContent, 'top')
	
	overlayContent.inject($(document.body),'bottom');
	overlayContent.setStyle('opacity',0);
	overlayContent.set('tween', {duration: 'short'});
	centerElement(overlayContent);
	dimmer.tween('opacity', .7);
	overlayContent.tween('opacity', 1);
	
	//initLoginBtn(overlayContent)
	dimmer.addEvent('click',removeOverlay.bindWithEvent([overlayContent,dimmer]));
	/*
	 * WE will need to show and hide select boxes in IE6
	 */
	 
	window.addEvent('resize',function(){
		centerElement(overlayContent);
	});
}
function createDimmer(){
	var windowSize = window.getScrollSize();
	var dimmer = new Element('div',{id:"dimmer"});
	dimmer.setStyles({
		width: windowSize.x,	
		height: windowSize.y,
		opacity: .5
	});
	window.addEvent('resize',function(){
		windowSize = window.getScrollSize();
		dimmer.setStyles({
			width: windowSize.x,	
			height: windowSize.y,
			opacity: .5
		});
	});
	return dimmer;
}
function createOverlayContent(html){
	var overlayContentContainer = new Element('div',{id:'overlayContentContainer'});
	html.removeEvent('click', launchOverlay);
	html.inject(overlayContentContainer);
	return overlayContentContainer;
}
function centerElement(el){
	el = $(el);
	if(el){
		var elDemensions = el.getSize();
		var windowDemensions = window.getSize();
		
		var topDiff = (windowDemensions.y - elDemensions.y)/2;
		var leftDiff = (windowDemensions.x - elDemensions.x)/2;
		if(topDiff < 0) topDiff = 0;
		if(leftDiff < 0) leftDiff = 0;
		el.setStyles({
			top: topDiff,
			left: leftDiff
		});
	}
}
function removeOverlay(event){
	new Event(event).stop();
	this.each(function(el){
		el.dispose();
	});	
}

/* ------------------------------------------------------------------------ */

/* *** set element dimensions *** */
function initElDimensions(){
	/* NOTE: this is running before the dom is ready? */
	var windowDemension = window.getScrollSize();
	var windowDemension = window.getSize();
	
	var primary = $('primary');
	var frame = $('frame');
	var newHeight = windowDemension.y - 258;
	
	try{
		frame.setStyles('height',windowDemension.y);
		primary.setStyles({
			'height':newHeight
		})
		if($('scrollContent')){
			$('scrollContent').setStyles({
				'height':primary.getSize().y-142
			})
//		function makeScrollbar(content,scrollbar,handle,horizontal,ignoreMouse){
//			var steps = (horizontal?(content.getScrollSize().x - content.getSize().x):(content.getScrollSize().y - content.getSize().y))
//			var slider = new Slider(scrollbar, handle, {	
//				steps: steps,
//				mode: (horizontal?'horizontal':'vertical'),
//				onChange: function(step){
//					// Scrolls the content element in x or y direction.
//					var x = (horizontal?step:0);
//					var y = (horizontal?0:step);
//					content.scrollTo(x,y);
//				}
//			}).set(0);
//			if( !(ignoreMouse) ){
//				// Scroll the content element when the mousewheel is used within the 
//				// content or the scrollbar element.
//				$$(content, scrollbar).addEvent('mousewheel', function(e){	
//					e = new Event(e).stop();
//					var step = slider.step - e.wheel * 30;	
//					slider.set(step);					
//				});
//			}
//			// Stops the handle dragging process when the mouse leaves the document body.
//			$(document.body).addEvent('mouseleave',function(){slider.drag.stop()});
//		}
//		window.addEvent('domready', function(){
//			if( ! $type($('scrollContent'))){
//				return false;
//			}
//			$('scrollbar').setStyle('height',$('scrollContent').getSize().y+42)
//			if($('scrollContent').getSize().y < $('scrollContent').getScrollSize().y){
//				makeScrollbar( $('scrollContent'), $('scrollbar'), $('handle') );
//			}else(
//				$('scrollbar').setStyle('display','none')
//			)
//
//		});


			
		}
	}catch(err){
		console.log(err)
	}
}
window.addEvents({
	'domready':initElDimensions,
	'resize':initElDimensions
});



/*
function testFlashPlayerVersion(versionNum){
	if (isNaN(versionNum)) {versionNum = 10;}
	if(Browser.Plugins.Flash.version === 0) {return false;}
	if(Browser.Plugins.Flash.version < versionNum && Browser.Plugins.Flash.version > 0){
		var closeOl = new Element('span',{
			id:'nothanks',
			html:'No Thanks',
			events:({
				'click': function(){console.log('close me');}
			})
		});
		var getTen = new Element('div', {
			id:'getFlashTen',
			html:'<p>This site uses Adobe\'s Flash Player Version 10 <br /> <a href="http://www.adobe.com/products/flashplayer/" target="_blank">Download Now</a> | <a href="#">No Thanks</span></p>'
		});
		getTen.getFirst().getLast().addEvent('click', function(){closeFrameOverlay($('dimemr'),getTen);});
		overlayCenterElement(getTen);
		return false;
	}
	else{
		return true;
	}
}
*/
function toggleForm(e, trigger, formBlock, fx){
	e.stop();
	fx.toggle();
}
function initLoginForm(){
	if( ! $type($('loginForm'))){
		return false;
	}
	var trigger = $('members');
	var formBlock = $('loginForm');
	var fx = new Fx.Slide(formBlock,{
		onComplete: function(){
        	trigger.toggleClass('extended');
    	}
	});
	trigger.addEvent('click', toggleForm.bindWithEvent(this,[trigger, formBlock, fx]));
	fx.hide().slideOut();
}
window.addEvent('domready',initLoginForm);

function buttonOver(x){
	x.target.fade('.7');
}
function buttonOut(x){
	x.target.fade('in');

}
function initButtonHover(){
	if(!$(document.body).getElement('.button')){return;}
	var button = $(document.body).getElements('.button');
	button.each(function(el){
		el.addEvents({
			'mouseenter':buttonOver.bindWithEvent(this),
			'mouseleave':buttonOut.bindWithEvent(this)
		});
	});
}
window.addEvent('domready',initButtonHover);


function countCharacters(x, target, limit){
	if(x.target.value.length < limit){
		target.set('text', x.target.value.length);
		target.setStyle('color', '#525557');
	}else{
		target.set('text', 'Limit Reached');
		var tmp = x.target.value;
		x.target.value = tmp.substr(0,limit);
		target.setStyle('color', 'red');
	}
}
function initCharCount(lim){
	if(!$type($('messageText'))){return;}
	var textarea = $('messageText');
	var target = $('charCount').getFirst();
	var limit = lim || '200';
	textarea.addEvent('keyup', countCharacters.bindWithEvent(this, [target, limit]));
}

function centerOverlay(el) {
	if(!$(el)) {return false;}
	var target = $(el);
	target.setStyles({
		'display': 'block',
		'visibility':'hidden'
	});
	var setLeft = ($('primary').getSize().x - target.getStyle('width').toInt()) / 2;
	var setTop = (window.getSize().y - target.getStyle('height').toInt()) / 2;
	setTop += window.getScroll().y;

	target.setStyles({
		'left':setLeft,
		'top':setTop
	});
	target.setStyle('visibility','visible');
}

function closeOverlay() {
	if($('addInspirationContainer').getStyle('display') == 'block'){
		closeAddInspiration();
	}
	else{
		closeShareWithFriend();
	}
}







/* ******************* PW ************************ */
var baseEnter = function(event, item){
	event.target.fade(1);
}
var baseLeave = function(event){
	event.target.fade('0.2');
}
var focusLeave = function(event){
	event.target.fade('0.7');
}
function filterAllRelatedProject(event, item){
	/* JSON attempt */
	// create JSON from item's related projects
	var temp = [];
	item.related_projects.each(function(el){
		temp.combine([{"url_title" : el.relatedProjUrl}]);
	});
	var tmp = new Hash({
		'cat':'related',
		'items':temp
	});
	filterWall(tmp)
}
function filterRelatedProject(event){
	event.stop();
	var targetText = event.target.get('text');
	var targetUrl = event.target.id;
	var request = JSON.decode('{"cat":"related","items":[{"title":"'+targetText+'", "url_title":"'+targetUrl+'"}]}');
	// filter wall with related project(s), convert to request 
	filterWall(request)
	
}

function detailHide(){
	var target = $('primary').getElement('.beta');
	var targetFadeOut = new Fx.Tween(target, {
		transition: Fx.Transitions.Quad.easeIn,
		duration:150 
	});
	target.empty();
	targetFadeOut.start('height',0);
}
/* ------------------------------------------------------------------------------------------------------------------------ */

function itemHistoryLaunch(h){
	var item = h._currentLocation.split('project/')[1]
	// this checks the item name agains the embedded JSON, maybe not the best or fastest way	
	projectJson.items.each(function(el){
		if(el.url_title == item){
			itemClick(el, h) 
		}
	})
}
function itemHistoryController(event, item, h){
	event.stop();
	//var state = 'project/'+item.url_title;
	h.addState('project/'+item.url_title);
	trackEvents("JS: itemHistoryController: "+item.url_title);	
	itemClick(item, h);
}

/* ------------------------------------------------------------------------------------------------------------------------ */
function hidePreview(event){
	if($(document.body).getElements('.plus').length > 0){
		$(document.body).getElements('.plus').each(function(el){el.dispose()});
	}
}
function showPreview(event){
	if($(document.body).getElements('.plus').length > 0){
		return false;
	}
	var plus = new Element('span',{
		'class':'plus'
	})
	plus.inject(event.target, 'after');
}
function test(event){
	//console.log('test: ',event);
}
var itemClick = function(item, h){
	document.title = '09 LAB | Project : ' + item.title;
	//track clicked projects
	trackEvents("JS: item clicked: "+item.title);
	var target = $('primary').getElement('.beta');
	var itemDetailArray = new Array();
	var itemName = new Element('h4',{
		'html':item.title
	});
	var itemRelatedContainer = new Element('div');
	var itemDesc = new Element('h5',{
		'html':'Description'
	});
	var itemBody = new Element('p',{
		'html':item.body
	});
	var itemCatTitle = new Element('h5',{
		'html':'Category'
	});
	var itemCat = new Element('p',{
		'html':item.item_cat
	});
	
	var itemImgPagination = '';
	var itemImgContainer = '';
	var itemImgScroll = '';
	
	if(item.related_images.length > 0){
		
		function showImage(event, index, target){
			var items = target.getElements('img'); 
			var buttons = itemImgPagination.getElements('span')
			buttons.each(function(el){
				el.removeClass('active')
			})
			buttons[index].addClass('active');
			var fx = new Fx.Scroll(target,{
				transition: Fx.Transitions.Quad.easeInOut,
				duration:250
			});
			//var dimension = items[index].getSize().x * index;
			var dimension = 507 * index;
			
			/* until MT gets correct dimensions */
			//fx.toElement(items[index]);
			
			fx.start(dimension, 0);
			
		}
		
		itemImgPagination = new Element('div',{id:'itemImgPagination'});
		itemImgContainer = new Element('div',{id:'itemImgContainer'});
		itemImgScroll = new Element('div',{id:'itemImgScroll'});
		var active = '';
		var i = 0;
		item.related_images.each(function(el, index){
			itemImgWrapper = new Element('div', {
				'events':({
					'click':launchOverlay.bindWithEvent(this),
					'mouseenter':showPreview.bindWithEvent(this),
					'mouseleave':hidePreview.bindWithEvent(this)
				})
				
			});
			/*
			itemImg = new Element('img',{
				'src':el,
				'height':400,
				'width':570
			})
			itemImg.inject(itemImgWrapper, 'bottom');
			*/
			var imgTest = new AssetTest({
				_parent:itemImgWrapper,
				_url:el,
				_dimensions:({x:507,y:400}),
				_morphDuration:950,
				_loadingImageSrc:'/system/templates/core/resources/images/backgrounds/project-detail-loader.gif',
				_defaultFileName:''
			});
			itemImgWrapper.inject(itemImgScroll, 'bottom');
			if(i == index){
				active = 'active'
			}else{
				active = ''
			}
			if(item.related_images.length > 1){
				itemPagination = new Element('span',{
					'class':'imgPagination '+active,
					'html':index,
					'events':({
						'click': showImage.bindWithEvent(this, [index, itemImgContainer, itemImgPagination])
					})
				}).inject(itemImgPagination, 'bottom');
			}
		})
	}
	itemImgScroll.inject(itemImgContainer);
	/* if there are related projects, make this element */
	var allRelated = '';
	if(item.related_projects.length > 0){
		allRelated = new Element('span',{
			'id':'highlightRelatedItems',
			'html':'+ highlight related projects',
			'events':{
				'click':filterAllRelatedProject.bindWithEvent(this,[item])
			}
		});
	}
	var closeDetail = new Element('span',{
		'id':'closeItem',
		'html':'+ close',
		'events':{
			'click':detailHide.bindWithEvent(this,[item])
		}
	});
	

	var itemStatus = new Element('p',{
		'html':item.project-status
	});
	itemDetailArray.push(itemImgContainer, itemName, itemImgPagination, itemDesc, itemBody, itemCatTitle, itemCat, itemStatus, itemRelatedContainer, allRelated, closeDetail);
	
	
	// move to own functions?
	var targetFadeIn = new Fx.Tween(target,{
		transition: Fx.Transitions.Quad.easeOut
	});
	var targetFadeOut = new Fx.Tween(target, {
		transition: Fx.Transitions.Quad.easeIn,
		duration:150, 
		onComplete:function(){
			itemDetailArray.each(function(el){
				try{
					el.inject(target,'bottom');
				}
				catch(err){
					//console.log(err)
				}
			})
			targetFadeIn.start('height',519)
			target.removeClass('loading_small');
		}
	});
	target.empty();
	target.addClass('loading_small');
	targetFadeOut.start('height',0);
}
function resetWall(){
	var items = $(document.body).getElement('.alpha').getChildren(); 
	items.each(function(el){
		el.fade('0.2')
		el.removeEvents({
			'mouseleave': focusLeave
		});
		el.addEvents({
			'mouseleave': baseLeave
		});
	})
	
}
/*
 * filterWall(param)
 * param = object -> JSON or Hash
 * 
 */
function resetCategoryHighlight(){
	detailHide();
	//reset categories
	var categories = $('nav_project').getElements('a');
	var fx = '';
	categories.each(function(el){
		var fx = new Fx.Morph(el);
		//el.removeClass('active')
		fx.start({'color':'#fff'});
	})
}
function initCategoryHighlight(request){
	resetCategoryHighlight();
	//highlight categories
	var cat = '';
	var fx = '';
	try{
		/* only get category clicked on, no parents */
		cat = $('c_' + request.cat[request.cat.length - 1]);
		var fx = new Fx.Morph(cat);
		fx.start({'color':'#b40106'});
	}
	catch(err){
		//console.log(err)
	}
}
function filterWall(request){
	// set all item opacity at .2, and remove focusEnter events
	resetWall();
	initCategoryHighlight(request);
	
	
	var focusItem = function(item, index){
		var i = $('p_' + item.url_title);
		i.fade('.7');
		i.removeEvents({
			'mouseleave': baseLeave
		});
		i.addEvents({
			'mouseleave': focusLeave
		});
		
	}
	var chainLoad = new Chain();
	
	/* if request is only an object */	
	request.items.each(function(item, index) {
		chainLoad.chain(focusItem.pass([item, index]))
	});
	
	var runChain = function() { 
		chainLoad.callChain();
	};
	var timer = runChain.periodical(150);
		
}
function initiateBox(){
	if($type($('comment_form')) == false) {return false;}
	var checkbox = $('comment_form').getElements('input[type="checkbox"]')
	checkbox.each(function(el){
		new checkboxReplace(el);
	})
}
window.addEvent('domready', initiateBox);
function initToolTips(){
	var myTips = new Tips('.entry',{text:'alt',className:'toolTip'});
	
}
function buildWall(projectJson, projectThumbArray, h){
	var target = $(document.body).getElement('.alpha');
	
	var itemCount = projectThumbArray.length;
	var addItem = function(item, index) {
		var item = new Element('a',{
			'href':'/' + base + '/projects/detail/' + item.url_title,
			'id':'p_' + item.url_title,
			'class':'entry',
			'alt':item.title,
			'styles':{
				'opacity':0,
				'background-image':'url(' + item.thumb + ')'
				},
				'events':{
			        'mouseenter': baseEnter.bindWithEvent(this, [item]),
			        'mouseleave': baseLeave,
			        //'click': itemClick.bindWithEvent(this, [item, h])
			        'click': itemHistoryController.bindWithEvent(this, [item, h])
	        }
		});
		
		item.inject(target, 'top');
		item.fade('.3');
		
	};
	var chainLoad = new Chain();
	
	projectJson.items.each(function(item, index) {
		chainLoad.chain(addItem.pass([item, index]))
	});
	chainLoad.chain(initToolTips);
	chainLoad.chain(initHistorySettings.pass([h, false]));
	
	var runChain = function() { 
		chainLoad.callChain();
	};
	var timer = runChain.periodical(30);
	
	//delay then run//
	
}
function wallResourceCollection(json, h){
	var item = '';
	var target = $(document.body).getElement('.alpha');
	
	var totalItems = projectJson.items.length; 
	var progressContainer = $('loading-bar');
	var progressBar = $('loaded')
	var setPercent = progressContainer.getElement('span') 
	target.empty();
	
	var projectThumbArray = new Array();
	projectJson.items.each(function(json){
		projectThumbArray.push(json.thumb);
	})
	var count = 1;
	var myImages = new Asset.images(projectThumbArray,{
		onProgress:function(el, index, group){
			var percent = (count / totalItems * 100).round(0) + '%';
			count++;
			setPercent.set('text', percent);
			progressBar.setStyle('width', percent);
		},
		onComplete:function(){
			progressContainer.dispose();
			buildWall(json, projectThumbArray, h)
		}
	});
}
function toJSONObj(string){
	if(typeof(string) == 'object'){
		return string;
	}else{
		return  eval(string);
	}
}

function cleanJson(responseText){
	var req = responseText.trim();
	req = req.clean();
	req = jeval(req);
	return req;
}
function jeval(str){
	return eval('(' +  str + ')');
}

function launchCategoryFilter(h){
	var href = h._currentLocation;
	var request = new Request({
		url:'/' + base + '/pw/' + href,
		method: 'post',
		onComplete:function(responseText, responseXML){
			var req = cleanJson(responseText);
			filterWall(req);
		}
	});
	request.send()
}
/* ------------------------------------------------------------------------------------------------------------------------ */

function historyController(event, h){
	if($type(event)){
		event.stop();
		var state = event.target.href.split('pw/')[1];
		h.addState(state)
		launchCategoryFilter(h);
	}else if(h._currentLocation != ''){
		launchCategoryFilter(h);
	}
	//track this event
	trackEvents("JS: historyController: "+state);
}

/* ------------------------------------------------------------------------------------------------------------------------ */
//function toggleNavigation(event){
//	event.stop();
//	event.target.toggleClass('action')
//	var target = $('secondary').getElement('.contents');
//	var fx = new Fx.Slide(target,{
//		transition: Fx.Transitions.Quad.easeIn,
//		duration:180
//	})
//	fx.toggle();
//}
function showNavigation(event){
	event.stop();
	var target = $('secondary').getElement('.contents');
	var fx = new Fx.Tween(target,{
		transition: Fx.Transitions.Quad.easeIn,
		duration:280
	})
	fx.start('height',143);
	
}
function hideNavigation(event){
	event.stop();
	var target = $('secondary').getElement('.contents');
	var fx = new Fx.Tween(target,{
		transition: Fx.Transitions.Quad.easeOut,
		duration:280
	})
	fx.start('height',26);
	
}

function initNavToggle(){
//	var navTrigger = $('logo');
//	navTrigger.addEvents({
//		'click': toggleNavigation.bindWithEvent(this)
//	});
	var navTrigger = $('secondary');
	navTrigger.addEvents({
		'mouseenter': showNavigation.bindWithEvent(this),
		'mouseleave': hideNavigation.bindWithEvent(this)
	});
	var navigationArray = new Array();
	var projects = $('nav_project')
	var lab		 = $('nav_lab')
	var about	 = $('nav_about')
	var newHeight = projects.getStyle('height')
	navigationArray.combine([lab, about, navTrigger])
	navigationArray.each(function(el){
		el.setStyle('height',newHeight);
	})
}
function initHistorySettings(h, flag){
	if(h._currentLocation.contains('ajax/')){
		historyController(null, h);
	}else if(h._currentLocation.contains('project/')){
		itemHistoryLaunch(h);
	}else if(h._currentLocation == '' && flag === true){
		detailHide();
	}
}
function hideIE6Update(event, iebar){
	event.stop();
	var fx = new Fx.Tween(iebar,{
		onComplete:function(){
			iebar.dispose();
		}
	});
	fx.start('height',0);
	var update = Cookie.write("browserUpgrade", "true",{path:'/'});
}
function initIE6Update(){
	if(Cookie.read("browserUpgrade") == "true"){
		return false;
	}else{
		var iebar = new Element('div',{
			id:'initIE6Update',
			html:'Looks like you are using Internet Explorer 6? You should update to a modern browser like: '
		})
		var linkArray = new Array();
		var firefox = new Element('a',{
			html:'Firefox',
			href:'http://www.mozilla.com/'
		}).inject(iebar, 'bottom')
		var chrome = new Element('a',{
			html:'Chrome',
			href:'http://www.google.com/chrome'
		}).inject(iebar, 'bottom')
		var ie8 = new Element('a',{
			html:'Internet Elxplorer 8',
			href:'http://www.microsoft.com/windows/internet-explorer/default.aspx?WT.srch=1'
		}).inject(iebar, 'bottom')
		iebar.inject($('frame'), 'top')
		var cancel = new Element('a',{
			html:'Close',
			href:'#',
			events:({
				'click':hideIE6Update.bindWithEvent(this, [iebar])
			})
		}).inject(iebar, 'bottom')
		iebar.inject($('frame'), 'top')
	}
}
function initDefaultWall(){
	initNavToggle();
	var filters = $('nav_project').getElements('a');
	
	if(typeof(projectJson) != 'undefined'){
		var	h = new HistoryManager();
		h.addEvent('onHistoryChange', initHistorySettings.pass([h, true]));
		wallResourceCollection(projectJson, h);
		
		filters.each(function(el){
			el.addEvent('click', historyController.bindWithEvent(this,[h]));
		})
	}else{
		filters.each(function(el){
			var u = el.href.split('pw')[1]
			el.set('href','/#'+u )
		})
	}
	if(Browser.Engine.trident && Browser.Engine.version < 7){
		initIE6Update()
	}
}
window.addEvent('domready',initDefaultWall);


function colHeight(){
//	var primary = $('primary');
//	var alpha = primary.getElement('.alpha');
//	var beta = primary.getElement('.beta');
//	
//	if( ! primary.hasClass('lab')){return false;}
//	
//	var alpha_height = alpha.getSize().y;
//	var beta_height = beta.getSize().y;
//	if(alpha_height < beta_height){
//		alpha.setStyle('height', beta_height+170);
//	}
}


window.addEvent('domready',colHeight);

function resetSearchForm(event, input, target){
	var fx = new Fx.Tween(input,{duration:100});
	var fy = new Fx.Tween(target,{duration:100});
	
	fx.start('width',140);
	fy.start('width',34);
}
function setSearchForm(event, input, target){
	var fx = new Fx.Tween(input,{duration:100});
	var fy = new Fx.Tween(target,{duration:100});
	
	fx.start('width',170);
	fy.start('width',0);
}
function searchForm(){
	if( ! $type($('searchInput'))){
		return false;
	}
	var input = $('searchInput');
	var target = $('searchLogo');
	
	input.addEvents({
		'focus': setSearchForm.bindWithEvent(this,[input, target]),
		'blur': resetSearchForm.bindWithEvent(this,[input, target])
	})
}


window.addEvent('domready',searchForm);

// background image

function setBackgroundImage(bg){
	var docBody = $(document.body);
	var copy = $('copy');
	var sub = $('sub');
	var target = new Element('div',{id:'tag'});
	var copy = new Element('h1',{
		'id':'copy',
		'html':bg.copy
	}).inject(target, 'bottom')
	var sub = new Element('h2',{
		'id':'sub',
		'html':bg.sub
	}).inject(target, 'bottom')
	
	docBody.removeClass('loading');

	target.inject(docBody, 'bottom');
	target.fade(0.8);
	
	docBody.addClass(bg.image)
}
// for home page

function initSetRandBg(){
	var rand = Math.floor(Math.random()*12)
	var bg = new Hash();
	if(rand == 0){
		bg.set('image' , 'pella');
		bg.set('copy' , 'water tower');
		bg.set('sub' , 'pdx, october 09');
	}else if(rand == 1){
		bg.set('image' , 'steelbridge');
		bg.set('copy' , 'steel bridge at night');
		bg.set('sub' , 'pdx, october 09');
	}else if(rand == 2){
		bg.set('image' , 'steelbridge-day');
		bg.set('copy' , 'steel bridge at dawn');
		bg.set('sub' , 'pdx, october 09');
	}else if(rand == 3){
		bg.set('image' , 'steelbridge-detail');
		bg.set('copy' , 'steel bridge detail');
		bg.set('sub' , 'pdx, october 09');
	}else if(rand == 4){
		bg.set('image' , 'i405');
		bg.set('copy' , 'interstate 405');
		bg.set('sub' , 'pdx, october 09');
	}else if(rand == 5){
		bg.set('image' , 'mill');
		bg.set('copy' , 'waterfront mill');
		bg.set('sub' , 'pdx, october 09');
	}else if(rand == 6){
		bg.set('image' , 'hawethorne');
		bg.set('copy' , 'hawethorne bridge');
		bg.set('sub' , 'pdx, october 09');
	}else if(rand == 7){
		bg.set('image' , 'pearl-district');
		bg.set('copy' , 'pear district');
		bg.set('sub' , 'pdx, october 09');
	}else if(rand == 8){
		bg.set('image' , 'pearl-blocks');
		bg.set('copy' , 'pear district');
		bg.set('sub' , 'pdx, october 09');
	}else if(rand == 9){
		bg.set('image' , 'made-in-oregon');
		bg.set('copy' , 'portland sunset');
		bg.set('sub' , 'pdx, october 09');
	}else if(rand == 10){
		bg.set('image' , 'conventioncenter');
		bg.set('copy' , 'convention center');
		bg.set('sub' , 'pdx, october 09');
	}else if(rand == 11){
		bg.set('image' , 'westbank');
		bg.set('copy' , 'westbank river front');
		bg.set('sub' , 'pdx, october 09');
	}
	var newBg = new Asset.image('/system/templates/core/resources/images/site-backgrounds/' + bg.image + '.jpg', {
		onload: setBackgroundImage.pass(bg)
	});
}
window.addEvent('domready',initSetRandBg);

function swapMonth(event){
	event.stop();
	var href = event.target.href;
	var request = new Request.HTML({
		url:href,
		method: 'get',
		onSuccess:buildCal.bindWithEvent(this)
	}).send()		
}
function initMonthLinks(target){
	var month = target.getElements('a.calMonthLinks')
	month.each(function(el){
		el.addEvent('click', swapMonth.bindWithEvent(this))
	})
}
function buildCal(responseTree, responseElements, responseHTML, responseJavaScript){
	var target = $('lab-calendar');
	var fx = new Fx.Tween(target,{
		transition: Fx.Transitions.Quad.easeOut,
		duration:250,
		onComplete : function(){
			target.empty();
			target.set('html', responseHTML)
			target.fade('in');
			initMonthLinks(target)
		}
	})
	fx.start('opacity',0)
	
}
function initCalendar(){
	if( ! $type($('lab-calendar'))){return false;}
		var request = new Request.HTML({
			url:base + '/lab/calendar/' + seg_2 + '/' + seg_3,
			method: 'get',
			onSuccess:buildCal.bindWithEvent(this)
		}).send()		
}
window.addEvent('domready',initCalendar);
//////////////////////////////////////
// DEBUG                            // 
//////////////////////////////////////


function debug(txt) {
		var frame = $('frame');
		if(!$('debug')){
			var newEl = new Element('div', {
			    'styles': {
					'position':'absolute',
					'top':0,
					'right':0,
					'font-size':10,
					'width':250,
					'min-height':300,
					'z-index':9999,
					'display':'block',
					'background-color':'#fff',
					'border':'1px solid red'
			    },
			    'id': 'debug'
			});
			newEl.injectInside(frame);
			newEl.innerHTML += 'debug:<br />';
		}
	var debug = $('debug');
	debug.innerHTML += '<br />' + txt;
	
}
