/*
var addthis_pub				= ''; 
var addthis_logo			= '';
var addthis_logo_background	= '454544';
var addthis_logo_color		= 'f4f4f4';
var addthis_brand			= '';
var addthis_options			= 'favorites, email, delicious, google, digg, reddit, facebook, live, more';
*/

var FLASH_PLAYER_URL = "/swf/flowplayer-3.1.5.swf";

var EvGally = Class.create({
	initialize: function(container, options){
		this.container  = $(container);
		this.image			= $('event_pic');
		this.options 		= Object.extend({
			thumbsStyle:			'#event_pics_list a',
			nextPageStyle:			'.img_but_top',
			previousPageStyle:		'.img_but_bot',
			nextImageStyle:			'#event_pics_next',
			previousImageStyle:		'#event_pics_prev',
			listStyle:				'#event_pics_list',
			perPage:						12,
			listHeight:					21
		}, options);
		
		this.list		= this.container.down(this.options.listStyle);
		this.current	= this.container.down(this.options.thumbsStyle);
		this.page		= 0;
		
		this.container
			.delegate(this.options.thumbsStyle, 'click', this.selectThumb.curry(this))
			.delegate(this.options.nextImageStyle, 'click', this.selectPrevNext.bind(this, 'next', 'previous'))
			.delegate(this.options.previousImageStyle, 'click', this.selectPrevNext.bind(this, 'previous', 'next'))
			.delegate(this.options.nextPageStyle, 'click', this.selectPrevNextPage.bind(this, -1))
			.delegate(this.options.previousPageStyle, 'click', this.selectPrevNextPage.bind(this, 1))
		;
	},
	selectThumb: function(gallery, e){
		e.stop();
		gallery.select(this);
	},
	selectPage: function(gallery, e){
		e.stop();
		gallery.gotoPage(+this.innerHTML - 1);
	},
	gotoPage: function(page){
		if (page < 0 && page > this.lastPage) return;
		
		var thumb = this.container.down(this.options.thumbsStyle, page * this.options.perPage);
		if (thumb)  this.select(thumb);
	},
	selectPrevNext: function(first, last){
		var li = this.current.up('li'); 
		this.select( (li[first]('li') || li[last + 'Siblings']().last()).down('a') );
	},
	selectPrevNextPage: function(dir){
		this.gotoPage(this.page + dir);
	},
	select: function(thumb){
		var number		= thumb.up('li').previousSiblings().length;
		
		this.page	 	= parseInt(number / this.options.perPage);
		this.current 	= thumb;
		
		this.container.select(this.options.thumbsStyle + '.selected').invoke('removeClassName', 'selected');	
		this.container.select(this.options.nextPageStyle).invoke(this.page == 0 ? 'addClassName' : 'removeClassName', 'disabled');
		this.container.select(this.options.previousPageStyle).invoke(this.page == this.lastPage ? 'addClassName' : 'removeClassName', 'disabled');
		
		this.list.morph({ top: (-1 * this.page * this.options.listHeight) + 'px' });
		
		this.transformImage(thumb.href);
		
		thumb.addClassName('selected');
	},
	transformImage: function(src){
		this.image.src = 'none';
		this.image.addClassName('loading');
		this.image.setOpacity(1);
		CD3.ImageLoader(src, this.changeImage.bind(this));
	},
	changeImage: function(loader){
		this.image.removeClassName('loading');
		this.image.src = loader.src ;
	}
});

CD3.Behaviors({
	/*
	'input[type=text],textarea': CD3.Behaviors.TitleAsDefaultValue,
	'#nav-tools2 .nav-tools-share': {
		mouseover: function(){
			addthis_open(this, '', location.href, 'Beyond Signs in the City')
		},
		mouseout: addthis_close,
		click: addthis_sendto
	},
	*/
	'#event_gallery': EvGally,
	'#tool_resize': function(){
		new CD3.FontSwitcher(this, 'content', {
			reset:	'.reset',
			plus:	'.plus',
			minus:	'.minus'
		});
	},
	'#tool_print, #tool_resize': Element.show,
	'#tool_print:click': function(e){
		e.stop();
		print();
	}
});

CD3.Behaviors({
	'#flowplayer img:click': function(){
		
		var movie = this.up('a');
		
		if(movie.href.match(/\.flv$/)){
			$f(movie, {src: FLASH_PLAYER_URL, wmode: 'transparent'});
		}
		
	},
	'ul.info_movies li a img:click': function(){
		var movie = this.up('a');
		
		if(movie.href.match(/\.flv$/)){
			//$f(movie, {src: FLASH_PLAYER_URL, wmode: 'transparent', autoPlay: 'false'});
			
			flowplayer(movie, FLASH_PLAYER_URL, {
				playlist: [
					
					{
						url: '/img/splash_' + movie.readAttribute('data-splash') + '.jpg', 
						scaling: 'orig'
					},
					
					{
						url: movie.readAttribute('href'),
						autoPlay: true,
						autoBuffering: false
					}
				]
			});
			
		}
	}
});


CD3.Behaviors({
	'#slide_num a:mouseover': function (a){
		//a.stop();
		
		var getBg = this.readAttribute('name'),
			image = $('longimage');
			
			$('slide_num').select('dt.selected').invoke('removeClassName', 'selected');
			this.up('dt').addClassName('selected');
			
			if( image.getStyle('display') == 'none'){
				image.style.background = ' url(' + getBg  + ') no-repeat center center ';
				image.style.display = 'block';
			}else{
				image.style.background = ' url(' + getBg  + ') no-repeat center center ';
			}
	},
	'#playslide':function(){
		this.store('poller', poller = new PeriodicalExecuter(slideshow, 5));
	},
	'#playslide:click': function(){
		this.toggleClassName('selected');
		var poller = this.retrieve('poller');
			poller[poller.timer ? 'stop' : 'registerCallback']();
	}
});

function slideshow(){
	var container	= $('slide_num'),
		current		= container.down('dt.selected').removeClassName('selected'),
		selected	= (current.next('dt') || container.down('dt')).addClassName('selected'),
		image 		= $('longimage'),
		image2		= $('longimage_2');
		
		if( image.getStyle('display') == 'block' ){
				image2.style.backgroundImage = 'url(' +  selected.down('a').readAttribute('name') + ')';
				image.fade({duration: .5});
		}else{
				image.style.backgroundImage = 'url(' +  selected.down('a').readAttribute('name') + ')';
				image.appear({duration: .5});
		}
};


CD3.Scroller = Class.create({
	initialize: function(container, scroller, options){
		options = Object.extend({
			styleArrow:		'arrow',
			styleMoveUp:	'moveup',
			styleMoveDown:	'movedown',
			styleSlider:	'slider',
			drag:           true,
			speed:			1
		}, options || {});

		this.speed		= options.speed;
		this.container	= $(container);
		this.scroller	= $(scroller);
		this.handle		= this.scroller.down('.' + options.styleSlider);

		this.scroller.select('.' + options.styleArrow).each(function(sleft, arrow){
			arrow.observe('mouseup',  sleft);
			arrow.observe('mouseout', sleft);
		}.curry(this.stopScroll.bind(this)));

		this.scroller.observe('mousedown', function(e){
			var arrow = e.findElement('.' + options.styleArrow);
			if (arrow) this.startScroll(arrow.hasClassName(options.styleMoveUp) ? -1 : 1);
		}.bind(this));
		
		if (options.drag) new Draggable(this.handle,{
			constraint:	'horizontal',
			snap:		function(x, y){ return [this.validateLeftPosition(x), y]; }.bind(this),
			change:		this.traceHandlePosition.bind(this)
		});

		var trackpath = $(this.handle.parentNode).observe('click', this.traceSliderClick.bind(this));

		this.trackpathPositionX	= trackpath.cumulativeOffset()[0];
		this.sliderMaxWidth	= trackpath.getWidth() - this.handle.getWidth();
	},
	startScroll: function(value){
		this.interval = setInterval(this.scrollBy.bind(this, value), 3);
	},
	stopScroll: function(){
		clearInterval(this.interval);
		this.interval = null;
	},
	scrollBy: function(dir){
		this.handle.style.left = this.validateLeftPosition( this.getScrollPosition() + dir * this.speed ) + 'px';
		this.traceHandlePosition();
	},
	setHandlePosition: function(){
		this.handle.style.left = (this.sliderMaxWidth * (this.container.scrollLeft / this.getVisibleWidth())) + 'px';
	},
	validateLeftPosition: function(y){
		if (y <= 0)						return 0;
		if (y >= this.sliderMaxWidth)	return this.sliderMaxWidth;

		return y;
	},
	traceHandlePosition: function(){
		this.container.scrollLeft = this.getVisibleWidth() * (this.getScrollPosition() / this.sliderMaxWidth);
	},
	traceSliderClick: function(e){
		var clickedX = e.pointerX()  - this.trackpathPositionX,
			left	 = this.getScrollPosition(),
			width	 = this.handle.getWidth();

		if (clickedX < left || (left+width) < clickedX)
			new Effect.Morph(this.handle, {
				style:		 	{ left : this.validateLeftPosition(clickedX) + 'px'},
				duration:	 	0.3,
				afterUpdate:	this.traceHandlePosition.bind(this),
				queue:			{scope: 'cd3:scroller', limit:1}
			});
	},
	getScrollPosition: function(){
		return parseInt(this.handle.style.left) || 0;
	},
	getVisibleWidth: function(){
		return this.container.scrollWidth - this.container.offsetWidth;
	}
});


CD3.Behaviors({
	'#image_gallery': function(){
		 var width = this.select('li').map(function(li){
						return li.select('img').inject(0, function(w, img){
							return w += img.width + 1;
						});
					}).max();
 		this.style.width = width + 'px';
		new CD3.Scroller('scroll_imgs', 'gallery_scrolling', { styleSlider: 'scroll'});
	}
});


CD3.Behaviors({
	'#uploadForm input[type=file]': beautifyUpload,
	'select': CD3.Select,
	'a.join:click':function(all){
		all.stop();
		Effect.toggle($('showmeform'), 'slide', { duration: 0.5 });	
	},
	'#news_events:click':function(){
		this.addClassName('selected');
		$('say_it').removeClassName('selected');
		$('big_img').style.display = 'none';
		$('change_txt').innerHTML = 'Click here to see all  news & events';
		$('change_txt').href = 'events.php';
	},
	'#say_it:click':function(){
		this.addClassName('selected');
		$('news_events').removeClassName('selected');
		$('big_img').style.display = 'block';
		$('change_txt').innerHTML = 'Click here to learn more about contest';
		$('change_txt').href = 'imagecats.php';
	}


})


