var Site = {
	
		initialize: function(){
			Site.baseUrl = 'http://fm.vsports.ru'
		},

		start: function(){
			Site.initialize();

			if( $chk($('index')) ) Site.index();
			if( $chk($('tutorial')) ) Site.tutorial();
			if( $chk($('stadium')) ) Site.stadium();
			if( $chk($('manager_player_search')) ) Site.manager_player_search();
			if( $chk($('trainer_spy')) ) Site.trainer_spy();
			if( $chk($('groupchat')) || $chk($('friends_my_friends')) || $chk($('friends')) ) Site.groupchat();
			if( $chk($('messaging_chat')) ) Site.chat();
			if( $chk($('trainer_squad_training')) || $chk($('trainer_single_training')) ) Site.training();
		},
		
		index: function(){
			var links = $$('a.fman-toggle');
			
			links.each(function(link, i) {
				
				var img = link.getFirst();
				var tween = new Fx.Tween(img, {
					'duration': 200,
					'link': 'cancel'
				});
				
				tween.set('opacity', 0);
				
				link.addEvents({
					
					'mouseover': function(e){
						tween.start('opacity', 1);
					},
					
					'mouseout': function(e){
						tween.start('opacity', 0);
					}
					
				});

			});
		},
		
		tutorial: function(){
			
			var images = $$('a img');
			images.each( function(img, i) {
				
				var tween = new Fx.Tween(img, {
					'duration': 200,
					'link': 'cancel'
				});
				
				tween.set('opacity', 0.1);
			
				img.addEvents({
					
					'mouseover': function(e){
						tween.start('opacity', 0.9);
					},
					
					'mouseout': function(e){
						tween.start('opacity', 0.1);
					}
					
				});
				
				var tip_parts = img.get('title').split(' :: ');
				img.store('tip:title', tip_parts[0]);
				img.store('tip:text', tip_parts[1]);
				
			});
			
			var tips = new Tips((images), {
				'className': 'tt'
			});
		
		},
		
		
		training: function(){
			$('js-error').destroy();
			
			var buttons = $$('div.tbutton a img');

			buttons.each(function(button, i) {
				var method = button.getProperty('rel');
				
				var tween = new Fx.Tween(button, {
					'duration': 200,
					'link': 'cancel'
				});
				
				tween.set('opacity', 0.7);
				
				button.addEvents({
					'mouseover': function(e){
						tween.start('opacity', 1);
					},
					
					'mouseout': function(e){
						tween.start('opacity', 0.7);
					},
					
					'click': function(e){
						e.stop();
						$('method').set('value', method);
						$('f').submit();
					}
				});
				
			});
		},
		
		chat: function(){

			var chat_scroll = new Fx.Scroll($('chat-container'));
			chat_scroll.toBottom();
			
			if( window.location.href.contains('mydivision') ){
				var url = Site.baseUrl + '/messaging_chat__mydivision/0/json';
			} else {
				var url = Site.baseUrl + '/messaging_chat__common/0/json';
			}
			
			
			var chatRequest = new Request({
				
				'url': url,
				'method': 'post',
				
				'onSuccess': function( response ){
					
					$('chat-container').getChildren().destroy();
					//console.info( response );
					
					if( $chk(response) ) {
						var results = JSON.decode(response);
					} else {
						var results = null;
					}
					
					if( $chk(results) ){
						
						results.each( function( result, i ){

							var zebra = i%2 == 0 ? 'even' : 'odd';
							var cid = (i == results.length - 1) ? 'last-message' : 'message-' + result.id;

							var message = new Element('div', {
								'class': 'chat-message ' + zebra,
								'id': cid,
								'rel': result.id
							});
							
							
							if( result.ignore == true ){
								var top_line = new Element('p', {'html': result.date + ' | <a href="/manager_profile/' + result.uid + '" title="Профиль ' + result.nick + '"><span class="bold">' + result.nick + '</span></a> | Сообщение заблокировано - игрок в черном списке.'});
								message.adopt(top_line);
							} else {
								if( result.uid == 0 ){
									var top_line = new Element('p', {'html': result.date + ' | <span class="bold">' + result.nick + '</span>'});
								} else {
									var top_line = new Element('p', {'html': result.date + ' | <a href="/manager_profile/' + result.uid + '" title="Профиль ' + result.nick + '"><span class="bold">' + result.nick + '</span></a>'});
								}
								
								var bottom_line = new Element('p', {'html': result.msg});
								message.adopt(top_line, bottom_line);
							}
							
							
							$('chat-container').adopt(message);
							
							if( result.fresh == true ){
								var tween =  new Fx.Tween(message, {
									'duration': 1000,
									'link': 'chain'
								});
								
								tween.set('opacity', 0.1);
								tween.start('opacity', 1);
							}
							
						});
					} 
					
					
					$('submit').removeProperty('disabled');
					chat_scroll.toBottom();
					
				},
				
				'onFailure': function(xhr){
					$('submit').removeProperty('disabled');
					//alert('Произошла ошибка - попробуйте еще раз.')
				}
				
			});
			
			
			//automatic refresh
			var refresh = (function(){
				if( $chk($('last-message')) ) chatRequest.send('last_id=' + $('last-message').get('rel').toInt());
			}).periodical(60 * 1000);
			
			//manual submit/refresh
			$('chat-form').addEvent('submit', function(e){
				e.stop();

				$('submit').setProperty('disabled', 'disabled');
				chatRequest.cancel();
				if( $chk($('last-message')) ){
					chatRequest.send('text=' + $('text').get('value') +	'&last_id=' + $('last-message').get('rel').toInt());
				} else {
					chatRequest.send('text=' + $('text').get('value'));
				}
				
				$('text').set('value', '');
			});
			
			
		},
		
		groupchat: function(){
			
			if( $chk($('chat-form')) ) $('chat-form').addEvent('submit', function(e){
				e.stop();
				
				$('submit').setProperty('disabled', 'disabled');
				
				if($('groupchat')) {
					var url = Site.baseUrl + '/groupchat/json/';
					var deletePath = 'groupchat_delete';
				}
				
				if($('friends_my_friends') || $('friends')) {
					var url = Site.baseUrl + '/friends_my_friends/foo/json/';
					var deletePath = 'friends_my_friends_delete_chat';
				}
				
				new Request({
					
					'url': url,
					'method': 'post',
					
					'onSuccess': function(response){
						
						if( $chk(response) ) var results = JSON.decode(response);
						if( $chk(results) ) Site._build_chat_results(results, deletePath);
						
						if( $chk($('msgsl')) ) {
							var current_bg = $('msgsl').getStyle('background-color');
						
							var tween = new Fx.Tween($('msgsl'), {
								'duration': 250,
								'link': 'chain'
							});
							
							tween.start('opacity', 0.1).chain(
							    function(){ this.start('opacity', 1); },
							    function(){ this.start('opacity', 0.1); },
							    function(){ this.start('opacity', 1); }
							); 
							
						}
						
						$('submit').removeProperty('disabled');
						$('text').value = '';
					},
					
					'onFailure': function(xhr){
						$('submit').removeProperty('disabled');
						alert('Произошла ошибка - попробуйте отправить ваше сообщение еще раз.')
					}
					
				}).send('text='+$('text').get('value'));
				
			});
			
		},
		
		_build_chat_results: function(results, deletePath){
			var container = $('message-container').empty();

			results.each(function(result, i) {
				var zebra = i%2 == 0 ? 'even' : 'odd';
				var message = new Element('div').addClass('message ' + zebra);
				container.adopt(message);
				
				if( result.selected == true ){
					message.setProperty('id', 'msgsl');
				} 
				
				var top_line = new Element('p');
				message.adopt(top_line);
				
				var date = new Element('span', {
					'html':  result.date + ' | '
				});
				
				top_line.adopt(date);
				
				var nick = new Element('span', {
					'html': result.nick + ' ',
					'class': 'bold'
				});
				
				top_line.adopt(nick);
				
				if( result.del == true ){
					var del = new Element('a', {
						'href': '/' + deletePath + '/' + result.id, 
						'title': 'Удалить сообщение',
						'html': '[x]'
					});
					
					top_line.adopt(del);
				}
				
				var bottom_line = new Element('p', {
					'html': result.msg
				});
				
				message.adopt(bottom_line);
			});
			
		},
		
		trainer_spy: function(){
			var players = $$('#squad-details tr.player');
			
			players.each( function(player, i) {
				var meta = player.getProperty('rel');
				
				player.onmouseover = function(){
					player.addClass('selected');
					var ap = $('ad-container').getCoordinates();
					var posY = ap.top + ap.height + 10;
					
					var tp = $('content-container').getCoordinates();
					var posX = tp.left + tp.width + 25;

					$(meta).setStyles({position: 'absolute', left: posX, top: posY, 'z-index': 5000, display: 'block'});
				}
				
				player.onmouseout = function(){
					player.removeClass('selected');
					$(meta).setStyle('display', 'none');
				}
			});
		},
		
		stadium: function(){
			//preload roll-over images
			var images = new Array();
			for(var i = 0; i < 9; i++){
				var image = new Image();
				var index = i + 2;
				image.src = this.baseUrl + '/views/web/images/stadium/so' + index + '.jpg';
				images[i] = image;
			}

			//apply roll-over effect
			var buttons = $$('img.stadium');
			buttons.each( function(button, j) {

				var enabled = button.getProperty('rel') != 'disabled' ? true : false;
				var alt = button.getProperty('alt');
				if( enabled == true ){
					
					var current_src = button.src;
					button.addEvents({
						
						'mouseover': function(e){
							button.src = images[j].src;
						},
						
						'mouseout': function(e){
							button.src = current_src;
						},
						
						'click': function(e){
							var agreed = confirm('Вы действительно хотите купить ' + alt + '?');
							if (agreed == false) {
								e.stop();
							}
						}
					});
				
				}
				
			});
		},
		
		manager_player_search: function(){
			var player = $('player-type');
			var costs = new Array(12, 4, 8);
			
			$('player-type').addEvent('change', function(e){
				$('player-cost').set('text', costs[this.get('value') - 1]);
			});
		}
			
};
			
window.addEvent('domready', Site.start);