/*FORMS*/
window.addEvent( 'domready', function(){
	$$( 'form .submit-button' ).each( function( button ){
		button.addEvent( 'click', function( e ){
			button.getParent( 'form' ).submit();
			e.stop();
		} );			  
	} );
	$$( 'form input' ).each( function( input ){
 		input.addEvent( 'keypress', function( e ){
			if( e.key == 'enter' ){
				input.getParent( 'form' ).submit();
			 }
         } );				 
	} );
} );

/*TABS*/
window.addEvent( 'domready', function(){
	$$( '.top-menu li a' ).each( function( tab ){
		switchContent( '.top-menu li a', tab, function(){} );
	} )
	$$( '.ins-menu li a' ).each( function( tab ){
		switchContent( '.ins-menu li a', tab, function(){} );
	} )	
	$$( '.login-alternatives a' ).each( function( tab ){
		switchContent( '.login-alternatives a', tab, function(){} );
	} )
	$$( '#podcast-teaser' ).each( function( tab ){
		switchContent( '.login-alternatives a', tab, function(){
			$( 'register-container' ).setStyle( 'display', 'block' );												  
		} );
	} );
	if ($('comment') ) {
		$( 'comment' ).addEvent( 'click', function( e ){
			if( e ) e.stop();
			$( 'comment' ).toggleClass( 'selected' );
			$( 'comment-container' ).toggleClass( 'selected' );
		} );
	}
	
	if( $( 'forgot-ic' ) ){
		$( 'forgot-ic' ).addEvent( 'click', function( e ){
			if( e ) e.stop();
			$('forgot').fireEvent( 'click' );			
		} );
	}
	if( $('register-ic') ){
		$( 'register-ic' ).addEvent( 'click', function( e ){
			if( e ) e.stop();
			$('register').fireEvent( 'click' );
		} );
	}	
	
	
	$$( '.anmal-button' ).each( function( tab ){
		tab.addEvent( 'click', function( e ){
			if (e) e.stop();
			var dest = $( 'report-container' );
			
			dest.setStyle( 'display', 'block' );
			dest.getElement( 'form div .in_u_name' ).set( 'value', tab.getParent().getElement( '.out_u_name' ).get( 'value' ) );
			dest.getElement( 'form div .in_c_id' ).set( 'value', tab.getParent().getElement( '.out_c_id' ).get( 'value' ) );
			dest.getElement( 'form div .in_commenttext' ).set( 'value', tab.getParent().getElement( '.out_commenttext' ).get( 'value' ) );
		} );
	} );
} );
switchContent = function( selector, tab, callback ){
	if( !tab.hasClass( 'js-nostop' ) ){
		tab.addEvent( 'click', function( e ){
			if (e) e.stop();
			$$( selector ).each( function( tab2 ){
				if( tab2.get( 'id' ) ){
					$( tab2.get( 'id' ) + '-container' ).setStyle( 'display', 'none' );
					tab2.getParent().removeClass( 'selected' );
				}
			} );
			try{
				$( tab.get( 'id' ) + '-container' ).setStyle( 'display', 'block' );
				tab.getParent().addClass( 'selected' );
			}catch( e ){}
			callback();
		} );
	}
}
/*COMMENTS*/
var MainCommentBox = new Class({
	options: {
		baseUrl: '',
		clipId: '',
		category: ''
	},
	initialize: function(element, options) {
		if (!$(element)) {
			return;
		}
		this.element = $(element);
		this.setOptions(options);
		$extend(element, this);
		element.getElement("a.skicka-button").addEvent('click', function(e) {
			e.stop();
			var commentSubmitRequest = new Request.HTML({
				url: element.options.baseUrl + '/ajax/comment.php',
				onComplete: function(responseTree, responseElements, responseHTML, responseJavaScript) {
					element.getElement("textarea[name=commenttext]").set('value','');
					$$('.allcomments').each(function(allcomments) {
						allcomments.set('html', responseHTML + allcomments.get('html'));
					});
				}
			}).post({'commenttext': element.getElement("textarea[name=commenttext]").get('value'), 'm_id': element.options.clipId, 'm_cat': element.options.category, 'time' : new Date().getTime()});
		});
	}
});
MainCommentBox.implement(new Options, new Events);


/*SLIDER*/
var ClipSlider = new Class({
	options: {
		baseUrl: '',
		clipId: '',
		clipsPerSlide: 5,
		offset: 0
	},
	initialize: function(element, options) {
		if (!$(element)) {
			return;
		}
		this.element = $(element);
		this.setOptions(options);
		$extend(element, this);
		element.store( 'index', 0 );
		element.getElement( '.slider-prev' ).setStyle('display', 'none');
		if (element.getElements('.list').length - 1 <= 0) {
			element.getElement( '.slider-next' ).setStyle('display', 'none');
		}
		
		element.getElement( '.slider-prev' ).addEvent( 'click', function( e ){
			element.slideCart( e, -1 );
		} );
		element.getElement( '.slider-next' ).addEvent( 'click', function( e ){
			element.slideCart( e, 1 );
		} );
	},
	slideCart: function(e, change) {
		var element = this.element;
		var transition = new Fx.Transition( Fx.Transitions.Quad );
		var tween = new Fx.Tween( element.getElement( '.slider-cart' ), {duration: 400, transition:transition.easeOut} );
		e.stop();
		var tmp = element.retrieve( 'index' ) + change;
		if( tmp < 0 ){
			tmp = 0;
			element.getElement( '.slider-cart' ).setStyle( 'margin-left', '1px' );
		}
		var maxIndex = element.getElements('.list').length - 1;
		if (tmp > maxIndex) {
			tmp = maxIndex;
		}
		var maxIndex = element.getElements('.list').length - 1;
		tween.addEvent('complete', function() {
			if (change == -1) {
				element.getElement( '.slider-next' ).setStyle('display', 'block');				
			} else if (tmp == maxIndex) {
				element.loadThumbs(tmp);
			}
		});
		if (tmp == maxIndex && !element.retrieve( 'complete' )) {
			element.getElement( '.slider-next' ).setStyle('background-image', 'url('+element.options.baseUrl+'/image/ajax-loader.gif)');
		} else if (tmp == maxIndex && element.retrieve( 'complete' ) == true) {
			element.getElement( '.slider-next' ).setStyle('display', 'none');
		} else {
			element.getElement( '.slider-next' ).setStyle('background-image', 'url('+element.options.baseUrl+'/image/arrow-right.gif)');
			element.getElement( '.slider-next' ).setStyle('display', 'block');
		}
		tween.start( 'margin-left', '-' + ( ( tmp * element.getStyle( 'width' ).toInt() ) ) + 'px' );
		if (tmp == 0) {
			element.getElement( '.slider-prev' ).setStyle('display', 'none');
		} else {
			element.getElement( '.slider-prev' ).setStyle('display', 'block');
		}
		element.store( 'index', tmp );
	},
	reset: function() {
		var element = this.element;
		element.store( 'index', 0 );
		element.store( 'complete', false);
		element.getElement('.slider-cart').setStyle("margin-left", 0);
		element.getElement( '.slider-prev' ).setStyle('display', 'none');
		if (element.getElements('.list').length - 1 == 0) {
			element.getElement( '.slider-next' ).setStyle('display', 'none');
		} else {
			element.getElement( '.slider-next' ).setStyle('display', 'block');
		}
	},
	loadThumbs: function(index) {
		var element = this.element;
		var start = element.options.clipsPerSlide * element.getElements('.list').length + element.options.offset;
		var jsonRequest = new Request.HTML({
			url: element.options.baseUrl + '/ajax/loadThumbs.php',
			onComplete: function(responseTree, responseElements, responseHTML, responseJavaScript) {
				element.getElement('.slider-cart').getElement('span.clear-both').dispose();
				element.getElement('.slider-cart').set('html', element.getElement('.slider-cart').get('html') + responseHTML + '<span class="clear-both"/>');
				element.getElement('.slider-cart').setStyle('width', (element.getElement('.slider-cart').getStyle('width').toInt() + 678) + 'px');
				if (element.getElement('.slider-cart').getElements('.list').length > index + 1) {
					element.getElement( '.slider-next' ).setStyle('background-image', 'url('+element.options.baseUrl+'/image/arrow-right.gif)');
					element.getElement( '.slider-next' ).setStyle('display', 'block');
				} else {
					element.getElement( '.slider-next' ).setStyle('background-image', 'url('+element.options.baseUrl+'/image/arrow-right.gif)');
					element.getElement( '.slider-next' ).setStyle('display', 'none');
					element.store('complete', true);
				}
			}
		}).get({'q': $$('.search-field')[0].get('value'), 'clipId': element.options.clipId, 'start': start, 'count': 5, 'category': element.get('id'), 'time' : new Date().getTime()});
	}
});
ClipSlider.implement(new Options, new Events);

/*SEARCH*/
var SearchForm = new Class({
	options: {
		baseUrl: '',
		searchSlider: null
	},
	initialize: function(element, options) {
		this.element = $(element);
		this.setOptions(options);
		$extend(element, this);
		
		var searchFunction = function() {
			var searchButton = element.getElementById('sok');
			searchButton.set('html', '<img src="'+element.options.baseUrl+'/image/ajax-loader.gif" />');
			var search = element.getElement('.search-field').get('value');
			var jsonRequest = new Request.HTML({
				url: element.options.baseUrl + '/ajax/search.php',
				onComplete: function(responseTree, responseElements, responseHTML, responseJavaScript) {
					searchButton.set('html', 'S&ouml;k');
					$('sok-container').getElement('.slider-cart').set('html', responseHTML);
					if (element.options.searchSlider) {
						element.options.searchSlider.reset();
					}
				}
			}).get({'q': search, 'time' : new Date().getTime()});
		};
		
		element.getElement('a.sok').addEvent('click', searchFunction);
		
		element.getElement('.search-field').addEvent( 'keypress', function( e ){
			if( e.key == 'enter' ){
				element.getElement('a.sok').fireEvent('click', e);
			 }
         } );
		
	}
});
SearchForm.implement(new Options, new Events);

/*RATING*/
var RatingBox = new Class({
	options: {
		baseUrl: '',
		imageDir: 'notdefined',
		rating: 'rating',
		id: 0
	},
	initialize: function(element, options) {
		this.element = $(element);
		this.setOptions(options);
		$extend(element, this);
		
		if (element.options.imageDir == 'notdefined') {
			element.options.imageDir = element.options.baseUrl + '/image';
		}

		element.userRating = 0;
		
		var stars = element.getElements('a');
		stars.each(function(star, index) {
			if (index<element.options.rating) {
				star.getElement('img').set('src', element.options.imageDir + '/star-selected.gif');
			} else {
				star.getElement('img').set('src', element.options.imageDir + '/star-unselected.gif');
			}
			star.addEvent('mouseenter', function(e) {
				stars.each(function(otherstar, index2) {
					if (index2<=index) {
						otherstar.getElement('img').set('src', element.options.imageDir + '/star-selected.gif');
					} else {
						otherstar.getElement('img').set('src', element.options.imageDir + '/star-unselected.gif');
					}
				});
			});
			star.addEvent('click', function(e) {
				e.stop();
				new Request.HTML({
					url:element.options.baseUrl + '/ajax/rate.php',
					onComplete: function(responseTree, responseElements, responseHTML, responseJavaScript) {
						if (responseHTML == 'ok') {
							element.userRating = index + 1;
						} else {
							$$('.errorMessages').each( function(errorMessageDiv) {
								errorMessageDiv.set('html', errorMessageDiv.get('html') + responseHTML);
							});
							// Already voted
						}
					}
				}).get({'id': element.options.id, 'action':'rate','rating':index+1, 'time' : new Date().getTime()});
			});
		});
		element.getElement('span').addEvent('mouseleave', function(e) {
			var rating;
			if (element.userRating == 0) {
				rating = element.options.rating;
			} else {
				rating = element.userRating;
			}
			stars.each(function(star, index) {
				if (index<rating) {
					star.getElement('img').set('src', element.options.imageDir + '/star-selected.gif');
				} else {
					star.getElement('img').set('src', element.options.imageDir + '/star-unselected.gif');
				}
			});
		});
		
	}
});
RatingBox.implement(new Options, new Events);
