CreatePackSiteInterface('profile', {
  
  openNewMail: function(user_id) {
		window.open(this.actionUrl('open_new_mail', {
		  user_id: user_id,
      location: window.location.href
		}), 'newMessage', 'width=530,height=500,scrollbars=yes');

		return false;
	},
	
	sendNewMail: function(form, location_protocol, return_url) {
    var instance = this;
    new Ajax.Request(instance.actionUrl('send_new_mail'), {
      parameters: form.serialize(true),
      onSuccess: function(request) {
				//var string = window.opener.location.toString();
				window.opener.location = return_url;
        window.close();	
      },
      onFailure: function(request) {
        instance.$('error_content').update(request.responseText);
      }
    });
	  
	  return false;
	}
 
});
CreatePackSiteInterface('sidebar', {
  
  openNewMail: function(user_id) {
		window.open(this.actionUrl('open_new_mail', {
		  user_id: user_id
		}), 'newMessage', 'width=530,height=500,scrollbars=yes');

		return false;
	},
	
	
	sendNewMail: function(form, location_protocol, id) {
    var instance = this;
    new Ajax.Request(instance.actionUrl('send_new_mail'), {
      parameters: form.serialize(true),
      onSuccess: function(request) {
        //window.opener.reload(); //location = location_protocol + 'user/profile/' + id;
				var string = window.opener.document.location.toString();
				window.opener.location = string;
        window.close();	
      },
      onFailure: function(request) {
        instance.$('error_content').update(request.responseText);
      }
    });
	  
	  return false;
	}
	
	
});
CreatePackSiteInterface('community_friends', {
	page: 1,
	active_option: 0,
	active_option_string: '',
	active_letter: '',
	reference_type: '',
	reference_id: '',
	
	toggleDropdown: function(dropdown) {
		dropdown = $(dropdown);
		
		if(dropdown.hasClassName('disabled'))
			return false;
			
		if(dropdown.hasClassName('dropdown_open')) {
			this.hideDropdown(dropdown);
		} else {
			this.showDropdown(dropdown);
		}
		
		return false;
	},
	
	hideDropdown: function(dropdown) {
		dropdown.setStyle({
			zIndex: '100'
		}).removeClassName('dropdown_open').select('div.options').first().hide();
	},
	
	showDropdown: function(dropdown) {
		dropdown.setStyle({
			zIndex: '1000'
		}).addClassName('dropdown_open').select('div.options').first().show();
	},
	
	resultList: function(url, options) {
		options = options || {};
		
		var instance = this;
		
		if(options.new_search) {
			options.parameters.page = 1;
			
			if(this.dropdown) {
				if(options.parameters.search == '') {
					this.enableDropdown(this.dropdown);
				} else {
					this.disableDropdown(this.dropdown);
				}
			}
		}
		
		parameters = $H({
			reference_type: instance.reference_type,
			reference_id: instance.reference_id,
			page: instance.page,
			letter: instance.active_letter,
			order: instance.active_option_string,
			search: instance.search
		}).merge(options.parameters).toObject();
		
		new Ajax.Request(instance.actionUrl(url), {
			parameters: parameters,
			method: 'get',
			onLoading: function(request) {
				instance.$('component_spinner').show();
			},
			onSuccess: function(request) {
				response = request.responseJSON;

				if(options.parameters.order && options.id) {
					old_option = instance.$('sort_option_' + instance.active_option);
					old_option.removeClassName('active');
					new_option = instance.$('sort_option_' + options.id);
					new_option.addClassName('active');
					selection = instance.$('selection');
					selection.update(new_option.innerHTML);
					instance.active_option = options.id;
				}

				instance.active_option_string = parameters.order;
				instance.active_letter = parameters.letter;
				instance.page = parameters.page;
				instance.search = parameters.search;

				index_list = instance.$('index');
				if(index_list) {
					active_index = index_list.down('li.active');
					if(active_index)
						active_index.removeClassName('active');
				}

				if(options.parameters.letter)
					instance.$('letter_' + options.parameters.letter).addClassName('active');

				if(options.afterFinish)
					options.afterFinish(response);
			},
			onComplete: function() {
				instance.$('component_spinner').hide();
			}
		});
		
		return false;
	},
	
	showIndex: function() {
		this.$('index').show();
		
		return false;
	},
	
	hideIndex: function() {
		this.$('index').hide();
		
		return false;
	}
});

CreatePackSiteInterface('calendar', {
  test: function() {
    //console.log('Test');
  }
});
CreatePackSiteInterface('clan', {
  test: function() {
    //console.log('Test');
  }
});
CreatePackSiteInterface('community_forums', {
	
	removeDefaultValue: function(object) {
	  if(object.hasClassName('default')) {
  		this.default_values.set(object.id, $F(object));
  		object.removeClassName('default').value = '';
  		var instance = this;
  		object.onblur = function() {
  			instance.addDefaultValue(object);
  		};
  	}
	},

	addDefaultValue: function(object) {
	  if($F(object).blank())
		  object.addClassName('default').value = this.default_values.get(object.id);
	
		return false;
	}
});
CreatePackSiteInterface('popmog', {
	page: 1,
	active_option: 0,
	active_option_string: '',
	active_letter: '',
	search: '',
	reference_type: '',
	reference_id: '',
	
	
	listPage: function(page, hash) {
		this.sortOption({
			parameters: {
				page: page
			}
		});
		
		return false;
	},
  	
	sortOption: function(order) {
    var instance = this; 
  	new Ajax.Request(instance.actionUrl('get_paginated_forums'), {
  	  method: 'put',
  	  parameters: {order: order,
  	               authenticity_token: instance.currentAuthToken()},
  	  onLoading: function(request) {
 				instance.$('component_spinner').show();
 			},
  	  onSuccess:function(request) {
  	    response = request.responseJSON;
  	    instance.$('component_spinner').hide();
  	    instance.$('forums').update(response.entries);
				instance.$('pagination').update(response.pagination);
  	  }
  	});
  	return false;
  },
  
  paginateList: function(page_number, sorted_by) {
    var instance = this;
    new Ajax.Request(instance.actionUrl('get_paginated_forums'), {
	      method: 'put',
	  	  parameters: {page: page_number,
		                 order: sorted_by,
					           authenticity_token: instance.currentAuthToken()},
		  onSuccess:function(request) {
			response = request.responseJSON;
			instance.$('forums').update(response.entries);
		  }
	  });
	 return false;
  },//paginatePost
  
  
	disableDropdown: function(dropdown) {
		dropdown.addClassName('disabled');
		this.$('selection').update('Neueste zuerst');
		
		return false;
	},
	
	enableDropdown: function(dropdown) {
		dropdown.removeClassName('disabled');
		this.$('selection').update(this.$('sort_option_' + this.active_option).innerHTML);
		
		return false;
	},
	
	showIndex: function() {
		this.$('index').show();
		return false;
	},
	
	hideIndex: function() {
		this.$('index').hide();
		return false;
	},
	
	showMedia: function(entry_id, reference_type, reference_id) {
		var instance = this;
		return kupferwerk.component.getDefaultInterface('user_media').openViewer({
			reference_id: reference_id,
			reference_type: reference_type,
			entry_id: entry_id
		});
	},
	
	showFolder: function(folder_id, reference_type, reference_id) {
		var instance = this;
		return kupferwerk.component.getDefaultInterface('user_media').openViewer({
			reference_id: reference_id,
			reference_type: reference_type,
			folder_id: folder_id
		});
	}
	
});
CreatePackSiteInterface('games', {
  
  openNewMail: function(user_id, url) { 
  	window.open(this.actionUrl('open_new_mail', {
  	  user_id: user_id,
  	  url: url,
      location: window.location.href
  	}), 'newMessage', 'width=530,height=500,scrollbars=yes');

  	return false;
  },//openNewMail
  
  
  sendNewMail: function(form, location_protocol, return_url) {
    var instance = this;
    new Ajax.Request(instance.actionUrl('send_new_mail'), {
      parameters: form.serialize(true),
      onSuccess: function(request) {
				//var string = window.opener.document.location.toString();
				window.opener.location = return_url;
        window.close();	
      },
      onFailure: function(request) {
        instance.$('error_content').update(request.responseText);
      }
    });
	  
	  return false;
	}
	
	
});
CreatePackSiteInterface('honor_points', {


});
CreateComponentSiteInterface('sidebar.statistic', {

    show_tab: function(tab_name){
        var instance = this;
        instance.$('tabnav').select('.active').each(function(item){
            item.removeClassName('active');
        });
        instance.$('link_'+tab_name).addClassName('active');
        instance.$('tabcontent').childElements().each(function(item){
            if (item.visible) item.hide();
        });
        instance.$(tab_name).show();
        return false;
    }

});

CreateComponentSiteInterface('games.clan', {
	
	get_players_for: function(game, page, sorted_by, dir) {
		var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
		new Ajax.Request(instance.actionUrl('get_players'),{
			method: 'post',
			parameters:{
				game_id: game,
				page: page,
				sorted_by: sorted_by,
				dir: dir,
				authenticity_token: instance.currentAuthToken()
			},
			onLoading: function() {
			  $(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
			onSuccess: function(request){
				$('clanlist').update(request.responseText).show();
			},
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
		});
		return false;
	},
	
	openNewMail: function(user_id) {
		window.open(this.actionUrl('open_new_mail', {
		  user_id: user_id
		}), 'newMessage', 'width=530,height=500,scrollbars=yes');

		return false;
	},
	
	sendNewMail: function(form, location_protocol, id) {
    var instance = this;
    new Ajax.Request(instance.actionUrl('send_new_mail'), {
      parameters: form.serialize(true),
      onSuccess: function(request) {
				//window.opener.reload();
				var string = window.opener.document.location.toString();
				window.opener.location = string;
        window.close();	
      },
      onFailure: function(request) {
        instance.$('error_content').update(request.responseText);
      }
    });
	  
	  return false;
	}
	
});
CreateComponentSiteInterface('sidebar.my_event', {

	show_tomorrow: function(){
		var instance = this;
		new Ajax.Request(instance.actionUrl('show_tomorrow'), {
			method: 'post',
			parameters: {
				authenticity_token: instance.currentAuthToken()
			},
			onLoading: function(){
				$('sidebar_my_event_list').update("<div class='spinner-full'><img alt='spinner - please wait' src='/images/core/spinner.gif' /><br /><em class='normal'>please wait…</em></div>");
			},
			onSuccess: function(request){
				response = request.responseJSON;
				if (response.partial) {
					$('sidebar_my_event_list').update(response.partial);
				}
				if (response.flash){
 					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
 				}
 			},
 			onFailure: function(request) {
 				response = request.responseJSON;
 	      instance.showResponseMessage(response.flash.status, { message: response.flash.message });
			},
			onComplete: function(){
				$('sidebar_my_event_link_today').removeClassName('active');
				$('sidebar_my_event_link_next_week').removeClassName('active');
				$('sidebar_my_event_link_tomorrow').addClassName('active');
			}
		});
		return false;
	},

	show_next_week: function() {
		var instance = this;
		new Ajax.Request(instance.actionUrl('show_next_week'), {
			method: 'post',
			parameters: {
				authenticity_token: instance.currentAuthToken()
			},
			onLoading: function(){
				$('sidebar_my_event_list').update("<div class='spinner-full'><img alt='spinner - please wait' src='/images/core/spinner.gif' /><br /><em class='normal'>please wait…</em></div>");
			},
			onSuccess: function(request){
				response = request.responseJSON;
				if (response.partial) {
					$('sidebar_my_event_list').update(response.partial);
				}
				if (response.flash){
 					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
 				}
 			},
 			onFailure: function(request) {
 				response = request.responseJSON;
 	      instance.showResponseMessage(response.flash.status, { message: response.flash.message });
			},
			onComplete: function(){
			  $('sidebar_my_event_link_today').removeClassName('active');
				$('sidebar_my_event_link_tomorrow').removeClassName('active');
				$('sidebar_my_event_link_next_week').addClassClassName('active');
			}
		});
		return false;
	},

	show_today: function() {
		var instance = this;
		new Ajax.Request(instance.actionUrl('show_today'), {
			method: 'post',
			parameters: {
				authenticity_token: instance.currentAuthToken()
			},
			onLoading: function(){
				$('sidebar_my_event_list').update("<div class='spinner-full'><img alt='spinner - please wait' src='/images/core/spinner.gif' /><br /><em class='normal'>please wait…</em></div>");
			},
			onSuccess: function(request){
				response = request.responseJSON;
				if (response.partial) {
					$('sidebar_my_event_list').update(response.partial);
				}
				if (response.flash){
 					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
 				}
 			},
 			onFailure: function(request) {
 				response = request.responseJSON;
 	      instance.showResponseMessage(response.flash.status, { message: response.flash.message });
			},
			onComplete: function(){
				$('sidebar_my_event_link_tomorrow').removeClassName('active');
				$('sidebar_my_event_link_next_week').removeClassName('active');
				$('sidebar_my_event_link_today').addClassName('active');
			}
		});
		return false;
	}
});
CreateComponentSiteInterface('community_friends.horizontal_list', {
	page: 1,
	reference_id: 0,
	reference_type: '',
	
  toggleAllFriends: function() {
    all_friends = this.$('all_friends_container');
    more_link = this.$('toggle_all_friends');
    
    if(all_friends.visible()) {
      all_friends.hide();
      more_link.update(this.more_link_value);
    } else {
      all_friends.show();
      this.more_link_value = more_link.innerHTML;
      more_link.update('weniger anzeigen');
    }
    
    return false;
  },
  
  listPage: function(page) {
		page = page || instance.page;
		var instance = this;
		
		new Ajax.Request(instance.actionUrl('get_paginated_friends_without_post'), {
			parameters: {
			  page: page,
			  reference_id: instance.reference_id,
			  reference_type: instance.reference_type
			},
			method: 'get',
			onLoading: function(request) {
				instance.$('component_spinner').show();
			},
			onSuccess: function(request) {
				response = request.responseJSON;

				instance.page = page;
        instance.$('friend_count').update(response.count);
        instance.$('all_friends').update(response.entries);
        instance.$('pagination').update(response.pagination);
			},
			onComplete: function() {
				instance.$('component_spinner').hide();
			}
		});
		
		return false;
	}
});
CreateComponentSiteInterface('sidebar.first_step', {
find_random_buddies: function(){
	var instance = this;
	if($('first_step_buddies_update_space').visible()) {
	  $('first_step_buddies_update_space').blindUp({
	    afterFinish: function() {
	      $('first_step_buddies_update_space').update('');
	    }
	  });
	  $('first_step_buddies_update_space').previousSiblings().first().down('a.action-link').removeClassName('action-link-open');
	} else {
	  new Ajax.Request(instance.actionUrl('show_random_buddies'), {
			method: 'get',
			parameters: {authenticity_token: instance.currentAuthToken()},
			onLoading: function() {
			  $('first_step_buddies_update_space').previousSiblings().first().down('.component_spinner').show();
			},
			onSuccess: function(request){
				response = request.responseJSON;
				if (response.partial) {
					$('first_step_buddies_update_space').update(response.partial).show();
          $('first_step_buddies_link').addClassName('action-link-open');
				} 
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
			},
	    onFailure: function(request) {
	      response = request.responseJSON;
	      instance.showResponseMessage(response.flash.status, { message: response.flash.message });
	    },
	    onComplete: function() {
	      $('first_step_buddies_update_space').previousSiblings().first().down('.component_spinner').hide();
	    }
		});
	}
	return false;
},

openNewMail: function(user_id) {
	window.open(this.actionUrl('open_new_mail', {
	  user_id: user_id,
    location: window.location.href
	}), 'newMessage', 'width=530,height=500,scrollbars=yes');

	return false;
},

sendNewMail: function(form, location_protocol, return_url) {
    var instance = this;
    new Ajax.Request(instance.actionUrl('send_new_mail'), {
      parameters: form.serialize(true),
      onSuccess: function(request) {
        window.opener.location = return_url;
        window.close();
      },
      onFailure: function(request) {
        instance.$('error_content').update(request.responseText);
      }
    });

	  return false;
	},

show_friend_form: function(friend_id) {
	var instance = this;
	if($('request_friend_form_'+friend_id).visible()) {
	  $('request_friend_form_'+friend_id).blindUp({
	    afterFinish: function() {
	      $('request_friend_form_'+friend_id).update('');
	    }
	  });
	} else {
  new Ajax.Request(instance.actionUrl('show_friend_form'), {
    method: 'get',
    parameters: {
			authenticity_token: instance.currentAuthToken(),
      friend_id: friend_id
    },
    onLoading: function() {
		//	$('first_step_friend_link_'+friend_id).addClassName('action-link-open');
			$('request_friend_form_'+friend_id).update("<div class='spinner-full'><img alt='spinner - please wait' src='/images/core/spinner.gif' /><br /><em class='normal'>please wait…</em></div>").blindDown();
    },
    onSuccess:function(request) {
      response = request.responseJSON;
			if (response.partial) {
				$('request_friend_form_'+friend_id).update(response.partial).show();
			}
			if (response.flash){
				instance.showResponseMessage(response.flash.status, { message: response.flash.message });
			}
    },
    onFailure: function(request) {
      response = request.responseJSON;
      instance.showResponseMessage(response.flash.status, { message: response.flash.message });
    }
  });	
}
	return false;
},


submitFriendship: function(friend_id) {
	var instance = this;
  new Ajax.Request(instance.actionUrl('add_friend'), {
    method: 'post',
    parameters: {
      friend_id: friend_id,
			reason_text: $('friendship_reason_text').value,
			authenticity_token: instance.currentAuthToken()
    },
		onLoading: function(){
			$('request_friend_form_'+friend_id).update("<div class='spinner-full'><img alt='spinner - please wait' src='/images/core/spinner.gif' /><br /><em class='normal'>please wait…</em></div>");
		},
    onSuccess:function(request) {
      response = request.responseJSON;
			$('first_step_friend_link_'+friend_id).removeClassName('action-link-open');
			$('request_friend_form_'+friend_id).update(response.partial).hide();
			if (response.flash){
				instance.showResponseMessage(response.flash.status, { message: response.flash.message });
			}
    },
    onFailure: function(request) {
      response = request.responseJSON;
      instance.showResponseMessage(response.flash.status, { message: response.flash.message });
    }
  });
	return false;
}
});
CreateComponentSiteInterface('sidebar.games_landing', {
	wait_text: "<div class='spinner-full'><img alt='spinner - please wait' src='/images/core/spinner.gif' /><br /><em class='normal'>please wait…</em></div>",
	
	
	show_play_form: function(game_id) {
		var instance= this;
		new Ajax.Request(this.actionUrl('show_play_form'), {
			method: 'post',
			parameters:{
				game_id: game_id,
				authenticity_token: instance.currentAuthToken()
			},
			onLoading: function(){
				$('sidebar_games_landing_game_update_space').update("<div class='spinner-full'><img alt='spinner - please wait' src='/images/core/spinner.gif' /><br /><em class='normal'>please wait…</em></div>").blindDown();
			},
			onSuccess: function(request) {
				response = request.responseJSON;
				if (response.partial) {
					$('sidebar_games_landing_game_update_space').update(response.partial);
          $('sidebar_games_landing_game_link').addClassName('action-link-open');
				} 
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
			},
			onFailure: function(request) {
				response = request.responseJSON;
	      instance.showResponseMessage(response.flash.status, { message: response.flash.message });
	    }
		} ) ;
		return false;
	},
	
	add_to_my_games: function(game_id) {
    var instance = this;
		if ($('game_play_clan_id')){
			var clan_id = $('game_play_clan_id').getValue();
		} else {
			var clan_id = null;
		}
    new Ajax.Request(instance.actionUrl('add_to_my_games'), {
	    method: 'post',
	    parameters: {
	      game_id: game_id,
				game_nick: $('game_play_game_nick').value,
				for_clan_id: clan_id,
				authenticity_token: instance.currentAuthToken()
	    },
			onLoading: function(){
				$('sidebar_games_landing_game_update_space').update("<div class='spinner-full'><img alt='spinner - please wait' src='/images/core/spinner.gif' /><br /><em class='normal'>please wait…</em></div>");
			},
      onSuccess: function(request) {
				response = request.responseJSON;
	      instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				if (response.linktext) {
					$('sidebar_games_landing_game_link_addition').update(response.linktext);
				}
				$('sidebar_games_landing_game_link').removeClassName('action-link-open');
				$('sidebar_games_landing_game_update_space').hide();
				document.location = '/games/'+game_id+'/play';
			},
	    onFailure: function(request) {
	      response = request.responseJSON;
	      instance.showResponseMessage(response.flash.status, { message: response.flash.message });
	    }
    });
	  
	  return false;
	},
	
	// shows the join a clan form
	
	show_clan_form: function(clan_id) {
		var instance= this;
		if($('sidebar_games_landing_clan_update_space').visible()) {
		  $('sidebar_games_landing_clan_update_space').blindUp({
		    afterFinish: function() {
  	      $('sidebar_games_landing_clan_update_space').update('');
		    }
		  });
		  $('sidebar_games_landing_clan_update_space').previousSiblings().first().down('a.action-link').removeClassName('action-link-open');
		} else {
		  new Ajax.Request(this.actionUrl('show_clan_form'), {
  			method: 'post',
  			parameters:{
  				clan_id: clan_id,
  				authenticity_token: instance.currentAuthToken()
  			},
  			onLoading: function() {
  			  $('sidebar_games_landing_clan_update_space').previousSiblings().first().down('.component_spinner').show();
  			},
  			onSuccess: function(request) {
  				response = request.responseJSON;
  				if (response.partial) {
  					$('sidebar_games_landing_clan_update_space').update(response.partial).blindDown();
            $('sidebar_games_landing_clan_link').addClassName('action-link-open');
  				} 
  				if (response.flash){
  					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
  				}
  			},
  			onFailure: function(request) {
  				response = request.responseJSON;
  	      instance.showResponseMessage(response.flash.status, { message: response.flash.message });
  	    },
  	    onComplete: function() {
  	      $('sidebar_games_landing_clan_update_space').previousSiblings().first().down('.component_spinner').hide();
  	    }
  		} ) ;
		}
		return false;
	},
	
	// submits the join a clan form and updates the link text
	
	add_to_my_clans: function(clan_id) {
    var instance = this;
    new Ajax.Request(instance.actionUrl('add_to_my_clans'), {
	    method: 'post',
	    parameters: {
	      text: $('clans_text').value,
				clan_id: clan_id,
				authenticity_token: instance.currentAuthToken()
	    },
			onLoading: function(){
				$('sidebar_games_landing_clan_update_space').update(wait_text);
			},
      onSuccess: function(request) {
				response = request.responseJSON;
	      instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				if (response.linktext) {
					$('sidebar_games_landing_clan_link').update(response.linktext);
				}
				$('sidebar_games_landing_clan_link').removeClassName('action-link-open');
				$('sidebar_games_landing_clan_update_space').hide();
			},
	    onFailure: function(request) {
	      response = request.responseJSON;
	      instance.showResponseMessage(response.flash.status, { message: response.flash.message });
	    }
    });
	  
	  return false;
	},
	
	// finds random buddies (users who are not my friends / enemies AND are playing the same games i do)
	
	find_random_buddies: function(){
		var instance = this;
		if($('sidebar_games_landing_buddies_update_space').visible()) {
		  $('sidebar_games_landing_buddies_update_space').blindUp({
		    afterFinish: function() {
  	      $('sidebar_games_landing_buddies_update_space').update('');
		    }
		  });
		  $('sidebar_games_landing_buddies_update_space').previousSiblings().first().down('a.action-link').removeClassName('action-link-open');
		} else {
		  new Ajax.Request(instance.actionUrl('show_random_buddies'), {
  			onLoading: function() {
  			  $('sidebar_games_landing_buddies_update_space').previousSiblings().first().down('.component_spinner').show();
  			},
  			onSuccess: function(request){
  				response = request.responseJSON;
  				if (response.partial) {
  					$('sidebar_games_landing_buddies_update_space').update(response.partial).show();
            $('sidebar_games_landing_buddies_link').addClassName('action-link-open');
  				} 
  				if (response.flash){
  					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
  				}
  			},
  	    onFailure: function(request) {
  	      response = request.responseJSON;
  	      instance.showResponseMessage(response.flash.status, { message: response.flash.message });
  	    },
  	    onComplete: function() {
  	      $('sidebar_games_landing_buddies_update_space').previousSiblings().first().down('.component_spinner').hide();
  	    }
  		});
		}
		return false;
	},
	
	openNewMail: function(user_id) {
  	window.open(this.actionUrl('open_new_mail', {
  	  user_id: user_id
  	}), 'newMessage', 'width=530,height=500,scrollbars=yes');

  	return false;
  },

	show_friend_form: function(friend_id) {
		var instance = this;
	  new Ajax.Request(instance.actionUrl('show_friend_form'), {
	    method: 'get',
	    parameters: {
	      friend_id: friend_id
	    },
	    onLoading: function() {
				$('sidebar_games_landing_friend_link_'+friend_id).addClassName('action-link-open');
				$('request_friend_form_'+friend_id).update("<div class='spinner-full'><img alt='spinner - please wait' src='/images/core/spinner.gif' /><br /><em class='normal'>please wait…</em></div>").blindDown();
	    },
	    onSuccess:function(request) {
	      response = request.responseJSON;
				if (response.partial) {
					$('request_friend_form_'+friend_id).update(response.partial).show();
				}
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
	    },
	    onFailure: function(request) {
	      response = request.responseJSON;
	      instance.showResponseMessage(response.flash.status, { message: response.flash.message });
	    }
	  });	
  
		return false;
	},
	
	
	submitFriendship: function(friend_id) {
		var instance = this;
	  new Ajax.Request(instance.actionUrl('add_friend'), {
	    method: 'post',
	    parameters: {
	      friend_id: friend_id,
				reason_text: $('friendship_reason_text').value,
				authenticity_token: instance.currentAuthToken()
	    },
			onLoading: function(){
				$('request_friend_form_'+friend_id).update("<div class='spinner-full'><img alt='spinner - please wait' src='/images/core/spinner.gif' /><br /><em class='normal'>please wait…</em></div>");
			},
	    onSuccess:function(request) {
	      response = request.responseJSON;
				$('sidebar_games_landing_friend_link_'+friend_id).removeClassName('action-link-open');
				$('request_friend_form_'+friend_id).update(response.partial).hide();
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
	    },
	    onFailure: function(request) {
	      response = request.responseJSON;
	      instance.showResponseMessage(response.flash.status, { message: response.flash.message });
	    }
	  });
		return false;
	}
	
});
CreateComponentSiteInterface('sidebar.game', {
	showForm: function(game_id) {
		var instance = this;
		if($('my_games_form').visible()) {
		  $('my_games_form').blindUp({
		    afterFinish: function() {
  	      $('my_games_form').update('');
		    }
		  });
		  $('my_games_form').previousSiblings().first().down('a.action-link').removeClassName('action-link-open');	
		} else {
  		new Ajax.Request(instance.actionUrl('showform'), {
  			method: 'get',
  			parameters : {
  				game_id: game_id,
  				authenticity_token: instance.currentAuthToken()
  			},
  			onLoading: function() {
  			  $('my_games_form').previousSiblings().first().down('.component_spinner').show();
  			},
  			onSuccess: function(request) {
  				response = request.responseJSON;
  				if (response.partial) {
  					$('my_games_form').update(response.partial).blindDown();
            $('my_games_form').previousSiblings().first().down('a.action-link').addClassName('action-link-open');
  				} 
  				if (response.flash){
  					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
  				}
  			},
  			onFailure: function(request) {
  				response = request.responseJSON;
  	      instance.showResponseMessage(response.flash.status, { message: response.flash.message });
  	    },
  	    onComplete: function() {
  	      $('my_games_form').previousSiblings().first().down('.component_spinner').hide();
  	    }
  		});
		}
		return false;
	},
	
	add_to_my_games: function(game_id) {
    var instance = this;
		if ($('game_play_clan_id')){
			var clan_id = $('game_play_clan_id').getValue();
		} else {
			var clan_id = null;
		}
    new Ajax.Request(instance.actionUrl('add_to_my_games'), {
	    method: 'post',
	    parameters: {
	      game_id: game_id,
				game_nick: $('game_play_game_nick').value,
				for_clan_id: clan_id,
				authenticity_token: instance.currentAuthToken()
	    },
      onSuccess: function(request) {
				response = request.responseJSON;
	      instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				$('my_games_form').hide();
				document.location = '/games/'+game_id+'/play';
			},
	    onFailure: function(request) {
	      response = request.responseJSON;
	      instance.showResponseMessage(response.flash.status, { message: response.flash.message });
	    }
    });
	  
	  return false;
	},
	
	showFormForClan: function(game_id) {
		var instance = this;
		if($('clan_game_form').visible()) {
		  $('clan_game_form').blindUp({
		    afterFinish: function() {
  	      $('clan_game_form').update('');
		    }
		  });
		  $('clan_game_form').previousSiblings().first().down('a.action-link').removeClassName('action-link-open');	  
		} else {
  		new Ajax.Request(instance.actionUrl('showformforClan'), {
  			method: 'get',
  			parameters : {
  				game_id: game_id,
  				authenticity_token: instance.currentAuthToken()
  			},
  			onLoading: function() {
  			  $('clan_game_form').previousSiblings().first().down('.component_spinner').show();
  			},
  			onSuccess: function(request) {
  				response = request.responseJSON;
  				if (response.partial) {
  					$('clan_game_form').update(response.partial).blindDown();
            $('clan_game_form').previousSiblings().first().down('a.action-link').addClassName('action-link-open');
  				} 
  				if (response.flash){
  					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
  				}
  			},
  			onFailure: function(request) {
  				response = request.responseJSON;
  	      instance.showResponseMessage(response.flash.status, { message: response.flash.message });
  	    },
  	    onComplete: function() {
  	      $('clan_game_form').previousSiblings().first().down('.component_spinner').hide();
  	    }
  		});
		}
		return false;
	},
	
	playForClan: function(game_id) {
		var instance = this;
    new Ajax.Request(instance.actionUrl('add_to_my_games'), {
	    method: 'post',
	    parameters: {
	      game_id: game_id,
				clan_id: $('game_play_clan_id').getValue(),
				authenticity_token: instance.currentAuthToken()
	    },
      onSuccess: function(request) {
				response = request.responseJSON;
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
			},
			onFailure: function(request) {
				response = request.responseJSON;
	      instance.showResponseMessage(response.flash.status, { message: response.flash.message });
	    }
    });
		return false;
	},
	
	remove_from_my_games: function(game_id){
		if ($('sidebar_game_remove_game_'+game_id).visible()) {
			$('sidebar_game_remove_game_'+game_id).blindUp();
			$('sidebar_game_remove_link').removeClassName('action-link-open');
		}
		else {
			$('sidebar_game_remove_link').addClassName('action-link-open');
			$('sidebar_game_remove_game_'+game_id).blindDown();
		}
		return false;
	},
	
	really_remove_from_my_games: function(game_id) {
		var instance = this;
		new Ajax.Request(instance.actionUrl('remove_from_my_games'),{
			method:'get',
			parameters:{
				game_id: game_id,
				authenticity_token: instance.currentAuthToken()
			},
      onSuccess: function(request) {
				response = request.responseJSON;
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
			},
			onFailure: function(request) {
				response = request.responseJSON;
	      instance.showResponseMessage(response.flash.status, { message: response.flash.message });
	    },
	    onComplete: function() {
	      document.location.reload(true);
	    }
		});
		return false;
	},

	bookmark: function(game_id) {
		var instance = this;
		if($('sidebar_bookmark_form').visible()) {
		  $('sidebar_bookmark_form').blindUp({
		    afterFinish: function() {
  	      $('sidebar_bookmark_form').update('');
		    }
		  });
		  $('sidebar_bookmark_form').previousSiblings().first().down('a.action-link').removeClassName('action-link-open');
		} else {
  		new Ajax.Request(instance.actionUrl('bookmark'),{
  			method:'get',
  			parameters:{
  				game_id: game_id,
  				authenticity_token: instance.currentAuthToken()
  			},
  			onLoading: function() {
  			  $('sidebar_bookmark_form').previousSiblings().first().down('.component_spinner').show();
  			},
  			onSuccess: function(request) {
  				response = request.responseJSON;
  				if (response.partial) {
  					$('sidebar_bookmark_form').update(response.partial).blindDown();
            $('sidebar_bookmark_form').previousSiblings().first().down('a.action-link').addClassName('action-link-open');
  				} 
  				if (response.flash){
  					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
  				}
  			},
  			onFailure: function(request) {
  				response = request.responseJSON;
  	      instance.showResponseMessage(response.flash.status, { message: response.flash.message });
  	    },
  	    onComplete: function() {
  	      $('sidebar_bookmark_form').previousSiblings().first().down('.component_spinner').hide();
  	    }
  		});
		}
		return false;
	},
	
	set_bookmark: function(game_id) {
		var instance = this;
		new Ajax.Request(instance.actionUrl('store_bookmark'),{
			method: 'post',
			parameters:{
				game_id: game_id,
				description: $('game_bookmark_description').value,
				authenticity_token: instance.currentAuthToken()
			},
      onSuccess: function(request) {
				response = request.responseJSON;
				$('sidebar_bookmark_form').blindUp();
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
				if (response.partial){
					$('bookmark_link_field').update(response.partial);
				}
			},
			onFailure: function(request) {
				response = request.responseJSON;
	      instance.showResponseMessage(response.flash.status, { message: response.flash.message });
	    }
		});
		return false;
	},

	remove_bookmark: function(bookmark){
		var instance = this;
		new Ajax.Request(instance.actionUrl('remove_bookmark'),{
			method: 'post',
			parameters:{
				bookmark_id: bookmark,
				authenticity_token: instance.currentAuthToken()
			},
      onSuccess: function(request) {
				response = request.responseJSON;
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
				if (response.partial){
					$('bookmark_link_field').update(response.partial);
				}
			},
			onFailure: function(request) {
				response = request.responseJSON;
	      instance.showResponseMessage(response.flash.status, { message: response.flash.message });
	    }
		});
		return false;
	},

	show_visits: function(){
		$('games_game_last_visited').show();
		$('games_game_bookmarked').hide();
		$('games_game_played').hide();
		$('games_game_link_bookmarked').removeClassName('active');
		$('games_game_link_played').removeClassName('active');
		$('games_game_link_last_visited').addClassName('active');
		return false;
	},

	show_bookmarked: function(){
		$('games_game_bookmarked').show();
		$('games_game_last_visited').hide();
		$('games_game_played').hide();
		$('games_game_link_played').removeClassName('active');
		$('games_game_link_last_visited').removeClassName('active');
		$('games_game_link_bookmarked').addClassName('active');
		return false;
	},
	
	show_played: function(){
		$('games_game_played').show();
		$('games_game_last_visited').hide();
		$('games_game_bookmarked').hide();
		$('games_game_link_bookmarked').removeClassName('active');
		$('games_game_link_last_visited').removeClassName('active');
		$('games_game_link_played').addClassName('active');
		return false;		
	}
	
});
CreateComponentSiteInterface('clan.calendar_new', {
  toggleBorder: function() {
	  this.component_element.select('a.detail').invoke('observe', 'click', this.getCalendarOverlay.bindAsEventListener(this));
	  
	  return false;
  },
  
  getCalendarOverlay: function(event) {
    var link = event.element();
    var event_id = link.id.gsub(/^.*_([0-9]+)$/, '#{1}');
    var overlay = this.$('overlay_for_' + event_id);
    
    event.stop();
    
    if(overlay)
      return this.toggleFadeAndBlind(overlay);
    
    new Ajax.Request(this.actionUrl('get_calendar_overlay', {
      event_id: event_id
    }), {
      method: 'get',
      onLoading: function() {
        
      },
      onSuccess: function(request) {
        link.insert({
          after: request.responseText
        });
        
        var overlay = link.next();
        overlay.down('a.close').observe('click', function(event) {
          this.toggleFadeAndBlind(overlay);
          event.stop();
        }.bind(this));
        
        this.toggleFadeAndBlind(overlay, {
          beforeStart: function() {
            var container = overlay.up('div');
            container.setStyle({
              zIndex: parseInt(container.getStyle('z-index'), 10) + 1
            });
          }
        });
      }.bind(this),
      onComplete: function() {
        //console.log('finished');
      }
    });
    
    return false;
  }
  
});
CreateComponentSiteInterface('popmog.game_board_shortlist', {

	
	showAlwaysAllGameForums:function() {
	  var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
	  new Ajax.Request(instance.actionUrl('show_always_all_game_forums'), {
  	  method: 'put',
  	  parameters: {authenticity_token: instance.currentAuthToken()},
			onLoading: function() {
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
  	  onSuccess:function(request) {
  	    response = request.responseJSON;
  	    instance.$('show_only_game_forums').show();
  	    instance.$('show_all_forums').hide();
  	    instance.$('forums').update(response.entries);
				instance.$('pagination').update(response.pagination);
  	  }	,
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
  	});
  	return false;
	},
	
	
	showOnlyGameForumsImMemberOf:function() {
	  var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
	  new Ajax.Request(instance.actionUrl('show_only_game_forums_im_member_of'), {
  	  method: 'put',
  	  parameters: {authenticity_token: instance.currentAuthToken()},
			onLoading: function() {
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
  	  onSuccess:function(request) {
  	    response = request.responseJSON;
  	    instance.$('show_all_forums').show();
  	    instance.$('show_only_game_forums').hide();
  	    instance.$('forums').update(response.entries);
				instance.$('pagination').update(response.pagination);
  	  }	,
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
  	});
  	return false;
	}
	

});
CreateComponentSiteInterface('clan.clan_invitation', {
	
	user_into_clans: function(user_id){
		var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
		new Ajax.Request(this.actionUrl('user_into_clans'), {
			method: 'post',
			parameters:{
				user_id: user_id,
				authenticity_token: instance.currentAuthToken()
			},
			onLoading: function(){
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
			onSuccess: function(request){
				$('invite_place').update(request.responseText).show();
			}	,
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
			
		});
		return false;
	},
	
	friends_into_clan: function(clan_id){
		var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
		new Ajax.Request(this.actionUrl('friends_into_clan'), {
			method: 'post',
			parameters:{
				clan_id: clan_id,
				authenticity_token: instance.currentAuthToken()
			},
			onLoading: function(){
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
			onSuccess: function(request){
				$('invite_place').update(request.responseText).show();
			}	,
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
			
		});
		return false;
	},
	
	submit_form: function(form) {
		var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
		new Ajax.Request(this.actionUrl('create'), {
			method: 'post',
			parameters: form.serialize(true),
			onLoading: function(){
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
			onSuccess: function(request){
				$('invite_place').update(request.responseText).show();
			}	,
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
			
		});
		return false;
	},
	
	accept: function(inv_id) {
		var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
		new Ajax.Request(this.actionUrl('accept'), {
			method: 'put',
			parameters:{ inv_id: inv_id},
			onLoading: function(){
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
			onFailure: function(request) {
	      instance.showResponseMessage('failure', {
	        message: request.responseText
	      });
			},
			onSuccess: function(request){
				$('kw_components_clan_db_clan_invitation_'+inv_id).update(request.responseText);
				toggleFadeAndBlind($('kw_components_clan_db_clan_invitation_'+inv_id));
			}	,
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
		
		});
		return false;
	},
	
	reject: function(inv_id) {
		var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
		new Ajax.Request(this.actionUrl('delete'), {
			method: 'destroy',
			parameters:{ inv_id: inv_id},
			onLoading: function(){
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
			onFailure: function(request) {
	      instance.showResponseMessage('failure', {
	        message: request.responseText
	      });
			},
			onSuccess: function(request){
				$('kw_components_clan_db_clan_invitation_'+inv_id).update(request.responseText);
				toggleFadeAndBlind($('kw_components_clan_db_clan_invitation_'+inv_id));
			}	,
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
		});
		return false;
	}
	
});
CreateComponentSiteInterface('popmog.static_forum_list_advanced', {
	
	listPage: function(page, hash) {
		this.sortOption({
			parameters: {
				page: page,
				authenticity_token: this.currentAuthToken()
			}
		});
		
		return false;
	}
	
});
CreateComponentSiteInterface('sidebar.players', {
	
	openNewMail: function(user_id) {
  	window.open(this.actionUrl('open_new_mail', {
  	  user_id: user_id
  	}), 'newMessage', 'width=530,height=500,scrollbars=yes');

  	return false;
  },

	random_players: function(){
		var instance = this;
		update_target = $("player_list");
		new Ajax.Request(instance.actionUrl('random_players'), {
			method: 'post',
			parameters: {
				authenticity_token: instance.currentAuthToken()
			},
			onLoading: function(){
				update_target.update("<div class='spinner-full'><img alt='spinner - please wait' src='/images/core/spinner.gif' /><br /><em class='normal'>please wait…</em></div>");
			},
			onSuccess: function(request){
				response = request.responseJSON;
				if (response.partial) {
					update_target.update(response.partial).show();
				} 
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
			}
		});
		return false;
	}

} );

CreateComponentSiteInterface('profile.friendship', {

	requestFriendship: function(trigger, friend_id, wait_text) {
		var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
	  new Ajax.Request(instance.actionUrl('show_form'), {
	    method: 'get',
	    parameters: {
	      friend_id: friend_id,
				authenticity_token: instance.currentAuthToken()
	    },
	    onLoading: function() {
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
	      $('profile_opponent_bottom_info').hide();
	    },
	    onSuccess:function(request) {
	      instance.$('request_form_friendship').update(request.responseText).show();

        try {
	        instance.$('no_friendships_yet').hide();
        } catch(error) {};
        
	      trigger.up('.bottom-info').hide();
				$(instance.component_spinner_element.id).hide();
	    },
	    onFailure: function(request) {
	      instance.showResponseMessage('failure', {
	        message: request.responseText
	      });
				$(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
	    }
	  });
  
		return false;
	},
	
	
	submitFriendship: function(friend_id, wait_text) {
		var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
	  new Ajax.Request(instance.actionUrl('request_friendship'), {
	    method: 'post',
	    parameters: {
	      friend_id: friend_id,
				reason_text: $('friendship_reason_text').value,
				authenticity_token: instance.currentAuthToken()
	    },
	    onLoading: function() {
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
	    },
	    onSuccess:function(request) {
	      instance.$('request_form_friendship').update(request.responseText).show();
	      instance.$('request_friendship').hide();
				$(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
	    },
	    onFailure: function(request) {
	      instance.showResponseMessage('failure', {
	        message: request.responseText
	      });
				$(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
	    }
	  });
		return false;
	},


	cancelFriendship: function(friend_id, current_user_id, wait_text) {
		var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
	  new Ajax.Request(instance.actionUrl('cancel_friendship'), {
	    method: 'get',
	    parameters: {
	      friend_id: friend_id,
				authenticity_token: instance.currentAuthToken()
	    },
	    onLoading: function() {
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
				instance.$('friendship_confirm_'+friend_id).update(wait_text).onclick = function() {
	        return false;
	      };
	    },
	    onSuccess:function(request) {
	      instance.$('friendship_'+current_user_id).update(request.responseText).show();
	      $('profile_friendship_bottom_info').hide();
				$(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
	    },
	    onFailure: function(request) {
	      instance.showResponseMessage('failure', {
	        message: request.responseText
	      });
				$(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
	    }
	  });
  
		return false;
	},
	
	
	hideBottom: function(friend_id, current_user_id, wait_text) {
		var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
	  new Ajax.Request(instance.actionUrl('cancel_friendship'), {
	    method: 'get',
	    parameters: {
	      friend_id: friend_id,
				authenticity_token: instance.currentAuthToken()
	    },
	    onLoading: function() {
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
	      instance.$('friendship_confirm_'+friend_id).update(wait_text).onclick = function() {
	        return false;
	      };
	    },
	    onSuccess:function(request) {
	      instance.$('friendship_'+current_user_id).update(request.responseText).show();
	      $('profile_friendship_bottom_info').hide();
				$(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
	    },
	    onFailure: function(request) {
	      instance.showResponseMessage('failure', {
	        message: request.responseText
	      });
				$(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
	  });
  
		return false;
	},
	
	
	confirmFriendship: function(friend_id){
		var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
	  new Ajax.Request(instance.actionUrl('confirm_friendship'), {
	    method: 'get',
	    parameters: {
	      friend_id: friend_id,
				authenticity_token: instance.currentAuthToken()
	    },
	    onLoading: function() {
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
				instance.$('friendship_confirm_'+friend_id).update(I18n.t('profile.friendships.wait_text')).onclick = function() {
	        return false;
	      };
	    },
	    onSuccess:function(request) {
	      instance.showResponseMessage('success', {
	        message: request.responseText
	      });
	      instance.$('friendship_cancel_'+friend_id).hide();
	      instance.$('friendship_'+friend_id).show();
				$(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
	    },
	    onFailure: function(request) {
	      instance.showResponseMessage('failure', {
	        message: request.responseText
	      });
				$(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
	    }
	  });
		
		return false;
	}

});
CreateComponentSiteInterface('sidebar.last_post', {

  showLatestPosts: function() {
    var instance = this;	
 	  instance.ajax_request = new Ajax.Request(instance.actionUrl('show_latest_posts'), {
   	  parameters: {authenticity_token: instance.currentAuthToken(),
   		             reference_type: instance.reference_type,
   				         reference_id: instance.reference_id},
   	  onSuccess: function(request) {
   					response = request.responseJSON;
   		            instance.$('last_threads_content').update(response.latestpostpartial);
   	  }
   	});
   	return false;
  }//showLatestPosts
  

});  
CreateComponentSiteInterface('sidebar.my_buddies', {
	
	openNewMail: function(user_id) {
  	window.open(this.actionUrl('open_new_mail', {
  	  user_id: user_id,
      location: window.location.href
  	}), 'newMessage', 'width=530,height=500,scrollbars=yes');

  	return false;
  },

  sendNewMail: function(form, location_protocol, return_url) {
    var instance = this;
    new Ajax.Request(instance.actionUrl('send_new_mail'), {
      parameters: form.serialize(true),
      onSuccess: function(request) {
        window.opener.location = return_url;
        window.close();
      },
      onFailure: function(request) {
        instance.$('error_content').update(request.responseText);
      }
    });

	  return false;
	},

	confirm_cancel_friendship: function(friend_id){
		var instance = this;
			$('sidebar_my_buddies_friendship_cancel_field_'+friend_id).blindDown();
			return false;
	},
	// used to slide up the cancel field ( = Abort the cancel friendship action)
	abort_cancel_friend: function(user_id){
		$('sidebar_my_buddies_friendship_cancel_field_'+user_id).blindUp();
		return false;
	},

	cancel_friendship: function(friend_id) {
		var instance = this;
	  new Ajax.Request(instance.actionUrl('cancel_friendship'), {
	    method: 'get',
	    parameters: {
	      friend_id: friend_id,
				authenticity_token: instance.currentAuthToken()
	    },
	    onSuccess:function(request) {
    		response = request.responseJSON;
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
				$('sidebar_my_buddies_'+friend_id).blindUp();
				$('sidebar_my_buddies_'+friend_id).remove();
	    },
	    onFailure: function(request) {
				response = request.responseJSON;
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
	    }
	  } ) ;
		return false;
	},
	
	sort_by: function(sort_option, dir){
		var instance = this;
		update_target = $("my_buddy_list");
		new Ajax.Request(instance.actionUrl('sort'), {
			method: 'post',
			parameters: {
				option: sort_option,
				direction: dir,
				authenticity_token: instance.currentAuthToken()
			},
			onLoading: function(){
				update_target.update("<div class='spinner-full'><img alt='spinner - please wait' src='/images/core/spinner.gif' /><br /><em class='normal'>please wait…</em></div>");
			},
			onSuccess: function(request){
				response = request.responseJSON;
				if (response.partial) {
					update_target.update(response.partial).show();
				} 
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
			}
		});
		return false;
	},
	
	random_users: function(){
		var instance = this;
		update_target = $("my_buddy_list");
		new Ajax.Request(instance.actionUrl('random_user'), {
			method: 'post',
			parameters: {
				authenticity_token: instance.currentAuthToken()
			},
			onLoading: function(){
				update_target.update("<div class='spinner-full'><img alt='spinner - please wait' src='/images/core/spinner.gif' /><br /><em class='normal'>please wait…</em></div>");
			},
			onSuccess: function(request){
				response = request.responseJSON;
				if (response.partial) {
					update_target.update(response.partial).show();
				} 
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
			}
		});
		return false;
	}

} );
// 
// function onlineStatusCallback(response) {
// 	$H(response.responseJSON).each(function(obj) {
// 		$('onlineStatusResult').insert({bottom: '<li>' + obj.key + ': ' + obj.value + '</li>'});
// 	});
// }
/**
 * Component: threaddetail
 */

CreateComponentSiteInterface('popmog.rating_board_thread_detail', {
  
  showPosts: function(forum_thread_id, sorted_by, game_id){
  	var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
  	new Ajax.Request(instance.actionUrl('show_forum_thread_posts'), {
  	  method: 'put',
  	  parameters: {forum_thread_id: forum_thread_id,
  		             sorted_by: sorted_by,
  		             game_id: game_id,
  	               authenticity_token: instance.currentAuthToken()},
			onLoading: function() {
			  $(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
			onSuccess:function(request) {
  	    response = request.responseJSON;
  	    instance.$('threaddetail_content').update(response.forumpostpartial);
  	  }	,
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
  	});
	return false;	
  },//showPosts


  showPostsSortedBy: function(forum_thread_id, sorted_by) {
    var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
	  new Ajax.Request(instance.actionUrl('show_forum_thread_posts'), {
  	  method: 'put',
  	  parameters: {forum_thread_id: forum_thread_id,
  		             changepartial: true,
  		             sorted_by: sorted_by,
  	               authenticity_token: instance.currentAuthToken()},
			onLoading: function() {
			  $(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
  	  onSuccess:function(request) {
  	    response = request.responseJSON;
  	    instance.$('postlist_content').update(response.forumpostpartial);
  	  }	,
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
  	});
  	return false;
  },//showPostsSortedBy
  
  
  paginateList: function(page_number, forum_thread_id, game_id) {
    var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
    new Ajax.Request(instance.actionUrl('show_forum_thread_posts'), {
	      method: 'put',
	  	  parameters: {page: page_number,
		                 changepartial: true,
		                 forum_thread_id: forum_thread_id,
		                 game_id: game_id,
		                 sorted_by: 'newest_post',
					           authenticity_token: instance.currentAuthToken()},
			onLoading: function() {
			  $(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
		  onSuccess:function(request) {
				response = request.responseJSON;
				instance.$('postlist_content').update(response.forumpostpartial);
		  },
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
	  });
	 return false;
  }//paginatePost
  

});
CreateComponentSiteInterface('popmog.static_clan_forum_list_advanced', {
	
	showAlwaysAllClanForums:function() {
	  var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
	  new Ajax.Request(instance.actionUrl('show_always_all_clan_forums'), {
  	  method: 'put',
  	  parameters: {authenticity_token: instance.currentAuthToken()},
			onLoading: function() {
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
  	  onSuccess:function(request) {
  	    response = request.responseJSON;
  	    instance.$('show_only_clan_forums').show();
  	    instance.$('show_all_forums').hide();
  	    instance.$('forums').update(response.entries);
				instance.$('pagination').update(response.pagination);
  	  }	,
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
  	});
  	return false;
	},
	
	showOnlyClanForumsImMemberOf:function() {
	  var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
	  new Ajax.Request(instance.actionUrl('show_only_clan_forums_im_member_of'), {
  	  method: 'put',
  	  parameters: {authenticity_token: instance.currentAuthToken()},
			onLoading: function() {
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
  	  onSuccess:function(request) {
  	    response = request.responseJSON;
  	    instance.$('show_all_forums').show();
  	    instance.$('show_only_clan_forums').hide();
  	    instance.$('forums').update(response.entries);
				instance.$('pagination').update(response.pagination);
  	  }	,
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
  	});
  	return false;
	}
	
});
CreateComponentSiteInterface('popmog.clan_board_shortlist', {
	
	showAlwaysAllClanForums:function() {
	  var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
	  new Ajax.Request(instance.actionUrl('show_always_all_clan_forums'), {
  	  method: 'put',
  	  parameters: {authenticity_token: instance.currentAuthToken()},
			onLoading: function() {
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
  	  onSuccess:function(request) {
  	    response = request.responseJSON;
  	    instance.$('show_only_clan_forums').show();
  	    instance.$('show_all_forums').hide();
  	    instance.$('forums').update(response.entries);
				instance.$('pagination').update(response.pagination);
  	  }	,
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
  	});
  	return false;
	},
	
	showOnlyClanForumsImMemberOf:function() {
	  var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
	  new Ajax.Request(instance.actionUrl('show_only_clan_forums_im_member_of'), {
  	  method: 'put',
  	  parameters: {authenticity_token: instance.currentAuthToken()},
			onLoading: function() {
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
  	  onSuccess:function(request) {
  	    response = request.responseJSON;
  	    instance.$('show_all_forums').show();
  	    instance.$('show_only_clan_forums').hide();
  	    instance.$('forums').update(response.entries);
				instance.$('pagination').update(response.pagination);
  	  }	,
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
  	});
  	return false;
	}
	
});
/**
 * Component: latestpost
 */

CreateComponentSiteInterface('community_forums.latestpost', {

  showLatestPosts: function() {
    var instance = this;	
	  instance.ajax_request = new Ajax.Request(instance.actionUrl('show_latest_posts'), {
  	  parameters: {authenticity_token: instance.currentAuthToken(),
  		             reference_type: instance.reference_type,
  				         reference_id: instance.reference_id},
  	  onSuccess: function(request) {
  		  response = request.responseJSON;
  		  instance.$('last_threads_content').update(response.latestpostpartial);
	    }
	  });
	  return false;
  }//showLatestPosts
 

});
CreateComponentSiteInterface('games.user', {
	
	get_players_for: function(game, page, sorted_by, dir) {
		var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
		new Ajax.Request(instance.actionUrl('get_players'),{
			method: 'post',
			parameters:{
				game_id: game,
				page: page,
				sorted_by: sorted_by,
				dir: dir,
				authenticity_token: instance.currentAuthToken()
			},
			evalJS: "force",
			onLoading: function(){
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
			onSuccess: function(request){
				response = request.responseJSON;
				if (response.partial) {
					$('usersfield').update(response.partial).show();
				}
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
				if (response.users){
			//		console.log(eval(response.users+';'));
					eval(response.users+';');
				}
			},
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
		});
		return false;
	}
});
/**
 * Component: forumdetail
 */

CreateComponentSiteInterface('community_forums.forumdetail', {
	default_values: $H(),

  showForumDetailPage: function(forum_id) {
    var instance = this;	
  	instance.ajax_request = new Ajax.Request(instance.actionUrl('show_forum_detail_page'), {
  	  parameters: {authenticity_token: instance.currentAuthToken(),
  		           forum_id: forum_id},
  	  onSuccess: function(request) {
  			response = request.responseJSON;
	      instance.$('forumdetail_content').update(response.forumdetailpartial);
  	  }
  	});
  	return false;
  },//showForumDetailPage


  showThreadsSortedBy: function(forum_id, sorted_by){
    var instance = this;
	  new Ajax.Request(instance.actionUrl('update_threadlist_not_sticky'), {
  	  method: 'put',
  	  parameters: {forum_id: forum_id,
  		             sorted_by: sorted_by,
  		             change_partial: true,
  	               authenticity_token: instance.currentAuthToken()},
  	  onLoading: function(request) {
  	    instance.$('component_spinner').show();
  	  },
  	  onSuccess:function(request) {
  	    response = request.responseJSON;
  	    instance.$('component_spinner').hide();
  	    instance.$('threadlist_not_sticky_content').update(response.forumdetailpartial);
  	  }
  	});
  	return false;
  },//showThreadsSortedBy


  paginateList: function(page_number, forum_id, sorted_by) {
    var instance = this;
    new Ajax.Request(instance.actionUrl('show_forum_detail_page'), {
	      method: 'put',
	  	  parameters: {page: page_number,
		                 change_partial: true,
		                 forum_id: forum_id,
		                 sorted_by: sorted_by,
					           authenticity_token: instance.currentAuthToken()},
		  onSuccess:function(request) {
			response = request.responseJSON;
			instance.$('threadlist_content').update(response.forumdetailpartial);
		  }
	});
	return false;
  },//paginateThread


	toggleForm: function() {
		form = this.$('thread_create');
		
		if(form.visible()) {
		  form.hide();
			$('forumdetail_create').up('.bottom-info').show();		
			$('forumdetail_create_first').show();			  
		} else {
			form.show().scrollTo();
			//console.log('asädökjf');
			$('forumdetail_create').up('.bottom-info').hide();
			$('forumdetail_create_first').hide();
		}
		return false;
	},
	
	
	toggleEditThread: function(thread_id) {
		thread = this.$('thread_' + thread_id);
		form = this.$('thread_edit_' + thread_id);
		info = this.$('thread_info_' + thread_id);
		
		if(form.visible()) {
			thread.removeClassName('new');
			form.hide();
			info.show();
		} else {
			thread.addClassName('new');
			info.hide();
			form.show().scrollTo();
		}
			
		return false;
	},
	
  createNewThread: function(form) {
    var instance = this;
    if(instance.ajax_request)
        instance.ajax_request.transport.abort();
    instance.ajax_request = new Ajax.Request(form.action, {
        parameters: form.serialize(),
       	onSuccess: function(request) {
		  response = request.responseJSON;
		  old = document.getElementById(site_interface.component_id + "_threadlist_content");
		  if (response.first_post) {
		    document.location = response.url
		  }
		  if (response.forumthreadpartial) {
		    $(old).update(response.forumthreadpartial);	
		    instance.$('forum_info').update(response.foruminfopartial);
		    $('thread_options').selectedIndex = 0;
		  }      
		  if(response.errortext)
		  	instance.$('error_list').show().update(response.errortext);
		  }
    });
	return false;
  },//createNewThread


  updateThread: function(form) {
	var instance = this;
	if(instance.ajax_request)
        instance.ajax_request.transport.abort();
    instance.ajax_request = new Ajax.Request(form.action, {
        parameters: form.serialize(),
       	onSuccess: function(request) {
		  response = request.responseJSON;
		  instance.$('threadlist_content').update(response.forumthreadpartial);
		  instance.$('forum_info').update(response.foruminfopartial);
		}
    });
	return false;
  }//updateThread

});
/**
 * Component: forumdetail
 */

CreateComponentSiteInterface('popmog.rating_board_forum_detail', {

  showForumDetailPage: function(forum_id, game_id) {
    var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
  	instance.ajax_request = new Ajax.Request(instance.actionUrl('show_forum_detail_page'), {
  	  parameters: {authenticity_token: instance.currentAuthToken(),
  		             forum_id: forum_id,
  		             game_id: game_id},
			onLoading: function() {
			  $(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
			onSuccess: function(request) {
  			response = request.responseJSON;
	      instance.$('forumdetail_content').update(response.forumdetailpartial);
  	  },
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
  	});
  	return false;
  }//showForumDetailPage

});
CreateComponentSiteInterface('sidebar.clan_action', {
	
	user_into_clans: function(user_id){
		var instance = this;
		new Ajax.Request(this.actionUrl('user_into_clans'), {
			method: 'post',
			parameters:{
				user_id: user_id,
				authenticity_token: instance.currentAuthToken()
			},
			onSuccess: function(request) {
				response = request.responseJSON;
				if (response.partial.length > 0) {
					$('invite_place').update(response.partial).show();
				} 
				if (response.flash.size > 0){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
			},
			onFailure: function(request) {
				response = request.responseJSON;
	      instance.showResponseMessage(response.flash.status, { message: response.flash.message });
	    }
		});
		return false;
	},
	
	get_friends: function(){
		var instance = this;
		if($('invite_place').visible()) {
		  $('invite_place').blindUp({
		    afterFinish: function() {
  	      $('invite_place').update('');
		    }
		  });
		  $('invite_place').previousSiblings().first().down('a.action-link').removeClassName('action-link-open');	
		} else {
		  new Ajax.Request(this.actionUrl('get_friends'), {
  			method: 'post',
  			parameters:{
  				authenticity_token: instance.currentAuthToken()
  			},
  			onLoading: function() {
  			  $('invite_place').previousSiblings().first().down('.component_spinner').show();
  			},
  			onSuccess: function(request) {
  				response = request.responseJSON;
  				if (response.partial) {
  					$('invite_place').update(response.partial).blindDown();
            $('invite_place').previousSiblings().first().down('a.action-link').addClassName('action-link-open');  	  					
  				} 
  				if (response.flash){
  					instance.showResponseMessage(response.flash.status, { message: response.flash.message });				
  				}
  			},
  			onFailure: function(request) {
  				response = request.responseJSON;
  	      instance.showResponseMessage(response.flash.status, { message: response.flash.message });
  	    },
  	    onComplete: function() {
  	      $('invite_place').previousSiblings().first().down('.component_spinner').hide();
  	    }
  		});
		}
		return false;
	},
	
	get_clans: function(){
		var instance = this;
		var user_id =  $('friends_id').getValue() ;
		new Ajax.Request(this.actionUrl('get_clans'), {
			method: 'post',
			parameters:{
				user_id: user_id,
				authenticity_token: instance.currentAuthToken()
			},
			onSuccess: function(request) {
				response = request.responseJSON;
				if (response.partial) {
					$('clans_field').update(response.partial).show();
				} 
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
			},
			onFailure: function(request) {
				response = request.responseJSON;
	      instance.showResponseMessage(response.flash.status, { message: response.flash.message });
	    }
		});
		return false;
	},
	
	friends_into_clan: function(clan_id){
		var instance = this;
		if($('invite_place').visible()) {
		  $('invite_place').blindUp({
		    afterFinish: function() {
  	      $('invite_place').update('');
		    }
		  });
		  $('invite_place').previousSiblings().first().down('a.action-link').removeClassName('action-link-open');	
		} else {
  		new Ajax.Request(this.actionUrl('friends_into_clan'), {
  			method: 'post',
  			parameters:{
  				clan_id: clan_id,
  				authenticity_token: instance.currentAuthToken()
  			},
  			onLoading: function() {
  			  $('invite_place').previousSiblings().first().down('.component_spinner').show();
  			},
  			onSuccess: function(request) {
  				response = request.responseJSON;
  				if (response.partial) {
  					$('invite_place').update(response.partial).blindDown();
            $('invite_place').previousSiblings().first().down('a.action-link').addClassName('action-link-open');
  				} 
  				if (response.flash){
  					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
  				}
  			},
  			onFailure: function(request) {
  				response = request.responseJSON;
  	      instance.showResponseMessage(response.flash.status, { message: response.flash.message });
  	    },
  	    onComplete: function() {
  	      $('invite_place').previousSiblings().first().down('.component_spinner').hide();
  	    }
  		});
		}
		return false;
	},
	
	submit_form: function(form) {
		var instance = this;
		new Ajax.Request(this.actionUrl('create'), {
			method: 'post',
			parameters: form.serialize(true),
			onSuccess: function(request) {
				response = request.responseJSON;
				$('invite_place').update(response.partial).hide();
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
			},
			onFailure: function(request) {
				response = request.responseJSON;
				$('invite_place').hide();
	      instance.showResponseMessage(response.flash.status, { message: response.flash.message });
	    }
		});
		return false;
	}
	
});
/**
 * Component: threaddetail
 */

CreateComponentSiteInterface('community_forums.threaddetail', {

  showPosts: function(forum_thread_id, sorted_by, last_post){
  	var instance = this;
  	new Ajax.Request(instance.actionUrl('show_forum_thread_posts'), {
  	  method: 'put',
  	  parameters: {forum_thread_id: forum_thread_id,
  		             sorted_by: sorted_by,
  		             last_post: last_post,
  	               authenticity_token: instance.currentAuthToken()},
  	  onSuccess:function(request) {
  	    response = request.responseJSON;
  	    instance.$('threaddetail_content').update(response.forumpostpartial);
  	  }
  	});
	return false;	
  },//showPosts


  showPostsSortedBy: function(forum_thread_id, sorted_by) {
    var instance = this;
	  new Ajax.Request(instance.actionUrl('show_forum_thread_posts'), {
  	  method: 'put',
  	  parameters: {forum_thread_id: forum_thread_id,
  		             changepartial: true,
  		             sorted_by: sorted_by,
  	               authenticity_token: instance.currentAuthToken()},
  	  onSuccess:function(request) {
  	    response = request.responseJSON;
  	    instance.$('postlist_content').update(response.forumpostpartial);
  	  }
  	});
  	return false;
  },//showPostsSortedBy


  paginateList: function(page_number, forum_thread_id, sorted_by) {
    var instance = this;
    new Ajax.Request(instance.actionUrl('show_forum_thread_posts'), {
	      method: 'put',
	  	  parameters: {page: page_number,
		                 changepartial: true,
		                 forum_thread_id: forum_thread_id,
		                 sorted_by: sorted_by,
					           authenticity_token: instance.currentAuthToken()},
		  onSuccess:function(request) {
			response = request.responseJSON;
			instance.$('postlist_content').update(response.forumpostpartial);
		  }
	  });
	 return false;
  },//paginatePost


	toggleForm: function() {
		form = this.$('post_create');
		if(form.visible()) {
			form.hide();
			form.down('blockquote').hide();
			this.$('post_quote_id').value = '';
		} else {
			form.show().scrollTo();
		}
		return false;
	},
	
	
  createNewPost: function(form) {
	  var instance = this;
  	if(instance.ajax_request)
          instance.ajax_request.transport.abort();
      instance.ajax_request = new Ajax.Request(form.action, {
          parameters: form.serialize(),
         	onSuccess: function(request) {
  		  response = request.responseJSON;
  		  if (response.forumpostpartial) {
  		    instance.$('postlist_content').update(response.forumpostpartial);	
  		    instance.$('forum_info').update(response.foruminfopartial);
  		    document.location.hash = '#forum_anchor';
  		  }      
  			if(response.errortext)
  		 		instance.$('error_list').show().update(response.errortext);
  		}
    });
	  return false;
  },//createNewPost


	toggleEditPost: function(post_id) {
		content = this.$('post_content_' + post_id);
		content_options = this.$('post_options_' + post_id);
		edit_options = this.$('post_edit_options_' + post_id);
		edit = this.$('post_edit_' + post_id).show();
		error_list = this.$('error_list_' + post_id);
		
		if(content.visible()) {
			content.hide();
			content_options.hide();
			edit_options.show();
			edit.show();
		} else {
			content.show();
			content_options.show();
			edit_options.hide();
			edit.hide();
			error_list.hide();
		}
		return false;
	},
	
	citePost: function(post_id) {
		username = this.$('post_' + post_id).down('h2.left a').innerHTML;
		var instance = this;
		this.$('post_create').show().scrollTo().down('blockquote').update(new Template('#{blockquote}<cite>von <a href="/nickpage-von/#{username}">#{username}</a></cite>').evaluate({
			blockquote: instance.$('post_content_' + post_id).innerHTML,
			username: username
		})).show();
		this.$('post_quote_id').value = post_id;
		return false;
	},
	
	updatePost: function(post_id) {
		var instance = this;
		new Ajax.Request(instance.actionUrl('inplace_update'), {
			parameters: {
				post_id: post_id,
				post: instance.$F('post_edit_' + post_id),
				authenticity_token: instance.currentAuthToken()
			},
			onSuccess: function(request) {
				instance.toggleEditPost(post_id);
				instance.$('post_content_' + post_id).update(request.responseText);
			},
			onFailure: function(request) {
				instance.$('error_list_' + post_id).update(request.responseText).show();
			}
		});
		
		return false;
	},
  
  deletePost: function(page_number, forum_thread_id, sorted_by, post_id, delete_question) {
		if(confirm(delete_question)) {
      var instance = this;
		  new Ajax.Request(instance.actionUrl('delete_post'), {
			method: 'put',
			parameters: {page: page_number,
			             forum_thread_id: forum_thread_id,
			             sorted_by: sorted_by,
			             post_id: post_id,
			  		     authenticity_token: instance.currentAuthToken()},
				onSuccess:function(request) {
				  response = request.responseJSON;
				  instance.$('postlist_content').update(response.forumpostpartial);
				  instance.$('forum_info').update(response.foruminfopartial);
			  }
		  });
    }
	
		return false;
  },//deletePost
  
  
  watchTopic: function(forum_thread_id){
   	var instance = this;
   	new Ajax.Request(instance.actionUrl('watch_topic'), {
   	  method: 'put',
   	  parameters: {forum_thread_id: forum_thread_id,
   	               authenticity_token: instance.currentAuthToken()},
   	  onSuccess:function(request) {
   	    instance.$('watch_topic').hide();
   	    instance.$('unwatch_topic').show();
   	    instance.showResponseMessage('success', {
	        message: request.responseText
	      });
   	  }
   	});
 	  return false;	
  },//watchTopic
   
   
  unwatchTopic: function(forum_thread_id){
    var instance = this;
    new Ajax.Request(instance.actionUrl('unwatch_topic'), {
    	method: 'put',
    	parameters: {forum_thread_id: forum_thread_id,
    	             authenticity_token: instance.currentAuthToken()},
    	  onSuccess:function(request) {
      	  instance.$('unwatch_topic').hide();
     	    instance.$('watch_topic').show();
      	  instance.showResponseMessage('success', {
   	        message: request.responseText
   	    });
      }
    });
  	return false;	
   },//unwatchTopic
   
   
   clearPoints: function(id){
     for(i=1; i < 6; i++) {
       document.getElementById('point_' + i + '_' + id).src='/images/star/grey.png';
     }
   },//clearPoints
   
   
   showPoints: function(num, id){
     for(i=1; i < num+1; i++) {
       document.getElementById('point_' + i + '_' + id).src='/images/star/yellow.png';
     }
   },//showPoints
   
   
   voteForPost: function(vote_val, reference_id){
     var instance = this;
     new Ajax.Request(instance.actionUrl('vote_for_post'), {
     	method: 'put',
     	parameters: {vote_val: vote_val,
     	             reference_id: reference_id,
     	             authenticity_token: instance.currentAuthToken()},
     	  onSuccess:function(request) {
     	    response = request.responseJSON;
     	    instance.$('post_rating_value_'+reference_id).update(response.result_txt);
     	    instance.$('thread_rating_value').update(response.thread_stars);
       }
     });
   	return false;   
   }//voteForPost
  
});
CreateComponentSiteInterface('popmog.genearl_board_shortlist', {
	
	listPage: function(page, hash) {
		this.sortOption({
			parameters: {
				page: page,
				authenticity_token: this.currentAuthToken()
			}
		});
		
		return false;
	}
	
});
CreateComponentSiteInterface('games.game', {
	showForm: function(game_id) {
		var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
		new Ajax.Request(instance.actionUrl('showform'), {
			method: 'get',
			parameters : {
				game_id: game_id,
				authenticity_token: instance.currentAuthToken()
			},
			onLoading: function() {
			  $(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
			onSuccess: function(request){
				response = request.responseJSON;
				if (response.partial) {
	 				$('game_play_form').update(response.partial).show();
	        $('game_play_form').previous('a.action-link').addClassName('action-link-open');
				}
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
			},
			onFailure: function(request) {
				response = request.responseJSON;
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
			}	,
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
		});
		
		return false;
	},
	
	add_to_my_games: function(game_id) {
    var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
		if ($('game_play_clan_id')){
			var clan_id = $('game_play_clan_id').getValue();
		} else {
			var clan_id = null;
		}
    new Ajax.Request(instance.actionUrl('add_to_my_games'), {
	    method: 'post',
	    parameters: {
	      game_id: game_id,
				game_nick: $('game_play_game_nick').value,
				for_clan_id: clan_id,
				authenticity_token: instance.currentAuthToken()
	    },
			onLoading: function() {
			  $(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
      onSuccess: function(request) {
				response = request.responseJSON;
				if (response.flash){
						instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
				$('game_play_form').hide();
				document.location = '/games/'+game_id+'/play';
			},
			onFailure: function(request) {
				response = request.responseJSON;
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
			},
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
    });
	  
	  return false;
	},
	
	showFormForClan: function(game_id) {
		var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
		if($('game_play_form').visible()) {
		  $('game_play_form').blindUp({
		    afterFinish: function() {
  	      $('game_play_form').update('');
		    }
		  });
		  $('game_play_form').previous('a.action-link').removeClassName('action-link-open');
		} else {
		  new Ajax.Request(instance.actionUrl('showformforClan'), {
  			method: 'get',
  			parameters : {
  				game_id: game_id,
  				authenticity_token: instance.currentAuthToken()
  			},
				onLoading: function() {
				  $(instance.component_spinner_element.id).show();
					$(instance.component_id+"_component").setStyle({position:'relative'});
				},
				onSuccess: function(request){
					response = request.responseJSON;
					if (response.partial) {
		 				$('game_play_form').update(response.partial).blindDown();
		        $('game_play_form').previous('a.action-link').addClassName('action-link-open');
					}
					if (response.flash){
						instance.showResponseMessage(response.flash.status, { message: response.flash.message });
					}
				},
				onFailure: function(request) {
					response = request.responseJSON;
					if (response.flash){
						instance.showResponseMessage(response.flash.status, { message: response.flash.message });
					}
				}	,
				onComplete: function(){
				  $(instance.component_spinner_element.id).hide();
					$(instance.component_id+"_component").setStyle({position:posi});
				}
  		});
		}
		return false;
	},
	
	playForClan: function(game_id) {
		var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
    new Ajax.Request(instance.actionUrl('add_to_my_games'), {
	    method: 'post',
	    parameters: {
	      game_id: game_id,
				clan_id: $('game_play_clan_id').getValue(),
				authenticity_token: instance.currentAuthToken()
	    },
			onLoading: function() {
			  $(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
			onSuccess: function(request){
				response = request.responseJSON;
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
			},
			onFailure: function(request) {
				response = request.responseJSON;
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
			},
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
    });
		return false;
	},
	
	remove_from_my_games: function(game_id) {
		var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
		new Ajax.Request(instance.actionUrl('remove_from_my_games'),{
			method:'get',
			parameters:{
				game_id: game_id,
				authenticity_token: instance.currentAuthToken()
			},
			onLoading: function() {
			  $(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
			onSuccess: function(request){
				response = request.responseJSON;
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
			},
			onFailure: function(request) {
				response = request.responseJSON;
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
			},
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
				document.location.reload(true);
			}
		});
		return false;
	},

	bookmark: function(game_id) {
		var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
		new Ajax.Request(instance.actionUrl('bookmark'),{
			method:'get',
			parameters:{
				game_id: game_id,
				authenticity_token: instance.currentAuthToken()
			},
			onLoading: function() {
			  $(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
			onSuccess: function(request){
				response = request.responseJSON;
				if (response.partial) {
					$('game_play_form').update(response.partial).show();
				}
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
			},
			onFailure: function(request) {
				response = request.responseJSON;
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
			},
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
		});
		return false;
	},
	
	set_bookmark: function(game_id) {
		var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
		new Ajax.Request(instance.actionUrl('store_bookmark'),{
			method: 'post',
			parameters:{
				game_id: game_id,
				title: $('game_bookmark_title').value,
				description: $('game_bookmark_description').value,
				authenticity_token: instance.currentAuthToken()
			},
			onLoading: function() {
			  $(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
			onSuccess: function(request){
				response = request.responseJSON;
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
			},
			onFailure: function(request) {
				response = request.responseJSON;
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
			},
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
		});
		return false;
	},

	remove_bookmark: function(bookmark){
		var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
		new Ajax.Request(instance.actionUrl('remove_bookmark'),{
			method: 'post',
			parameters:{
				bookmark_id: bookmark,
				authenticity_token: instance.currentAuthToken()
			},	
			onLoading: function() {
			  $(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
			onSuccess: function(request){
				response = request.responseJSON;
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
			},
			onFailure: function(request) {
				response = request.responseJSON;
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
			}	,
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
		});
		return false;
	},

	show_visits: function(){
		$('games_game_last_visited').show();
		$('games_game_bookmarked').hide();
		$('games_game_played').hide();
		$('games_game_link_bookmarked').removeClassName('active');
		$('games_game_link_played').removeClassName('active');
		$('games_game_link_last_visited').addClassName('active');
		return false;
	},

	show_bookmarked: function(){
		$('games_game_bookmarked').show();
		$('games_game_last_visited').hide();
		$('games_game_played').hide();
		$('games_game_link_played').removeClassName('active');
		$('games_game_link_last_visited').removeClassName('active');
		$('games_game_link_bookmarked').addClassName('active');
		return false;
	},
	
	show_played: function(){
		$('games_game_played').show();
		$('games_game_last_visited').hide();
		$('games_game_bookmarked').hide();
		$('games_game_link_last_visited').removeClassName('active');
		$('games_game_link_bookmarked').removeClassName('active');
		$('games_game_link_played').addClassName('active');
		return false;		
	}
	
});
CreateComponentSiteInterface('profile.user_info', {
	
	showPersonalDetailEdit: function(user_id) {
    var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
    new Ajax.Request(instance.actionUrl('show_personal_detail_edit'), {
      method : 'get',
			parameters: {
				authenticity_token: instance.currentAuthToken()
			},
			onLoading: function(){
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
			onSuccess: function(request) {
       	response = request.responseJSON;
       	instance.$('personal_details').update(response.editpartial);
				$(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
      }
    });
	  
	  return false;
	},
	
	
	saveProfileDetailsOld: function(form) {
    var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
    new Ajax.Request(instance.actionUrl('save_profile_details'), {
      parameters: form.serialize(true),
			onLoading: function(){
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
      onSuccess: function(request) {
				$(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
        window.location = window.location.protocol + '//' + window.location.host + window.location.pathname;
      },
      onFailure: function(request) {
        instance.$('error_content').update(request.responseText);
				$(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
      }
    });
	  return false;
	},
	
	
  saveProfileDetails: function(form) {
    form = $(form);
  	form.target = form.id + '_postiframe';
  	form.insert({
  		before: new Template('<iframe width="0" height="0" name="#{form_id}_postiframe" id="#{form_id}_postiframe" style="display: none;"></iframe>').evaluate({
  		form_id: form.id
  		})
  	}).submit();
  	window.location = window.location.protocol + '//' + window.location.host + window.location.pathname;
    return false;
	},
	
	
	afterUploadSuccess: function(options) {
	  document.location.reload();
  },//afterUploadSuccess


  afterUploadFailure: function(options) {
    var instance = this;
    instance.$('error_content').update(options.message);
    return false;
  }, //afterUploadFailure
	
	user_into_clans: function(user_id){
		var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
		new Ajax.Request(this.actionUrl('user_into_clans'), {
			method: 'post',
			parameters:{
				user_id: user_id,
				authenticity_token: instance.currentAuthToken()
			},
			onLoading: function(){
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
			onSuccess: function(request){
				$('invite_place').update(request.responseText).show();
				$(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
		});
		return false;
	},
	
	submit_form: function(form) {
		var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
		new Ajax.Request(this.actionUrl('create'), {
			method: 'post',
			parameters: form.serialize(true),
			onLoading: function(){
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
			onSuccess: function(request){
				$('invite_place').update(request.responseText).show();
				$(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
		});
		return false;
	}
	
});
CreateComponentSiteInterface('clan.myclanlanding', {
    show_my: function(applications){
        $('clan_myclanlanding_current_user_visits').hide();
        $('clan_myclanlanding_current_user_last_link').removeClassName('active');
        if (applications == 1){
            $('clan_myclanlanding_current_user_applications').hide();
            $('clan_myclanlanding_current_user_application_link').removeClassName('active');
        }
        $('clan_myclanlanding_current_user_my').show();
        $('clan_myclanlanding_current_user_my_link').addClassName('active');
        return false;
    },
	
    show_visits: function(applications){
        $('clan_myclanlanding_current_user_my').hide();
        $$('a.tablink').each(function(link){link.removeClassName('active');});
        if (applications == 1){
            $('clan_myclanlanding_current_user_applications').hide();
            $('clan_myclanlanding_current_user_application_link').removeClassName('active');
        }
        $('clan_myclanlanding_current_user_visits').show();
        $('clan_myclanlanding_current_user_my_link').removeClassName('active');
        $('clan_myclanlanding_current_user_last_link').addClassName('active');
        return false;
    },
	
    show_applications: function(){
        $('clan_myclanlanding_current_user_visits').hide();
        $('clan_myclanlanding_current_user_my').hide();
        $('clan_myclanlanding_current_user_my_link').removeClassName('active');
        $('clan_myclanlanding_current_user_last_link').removeClassName('active');
        $('clan_myclanlanding_current_user_application_link').addClassName('active');
        $('clan_myclanlanding_current_user_applications').show();
        return false;
    },
	
    get_pop_clans: function(){
        var instance = this;
        var posi = $(instance.component_id+"_component").getStyle('position');
        new Ajax.Request(this.actionUrl('index'), {
            method: 'post',
            parameters:{
                what:'pop',
                authenticity_token: instance.currentAuthToken()
            },
            onLoading: function(){
                $(instance.component_spinner_element.id).show();
                $(instance.component_id+"_component").setStyle({position:'relative'});
            },
            onSuccess: function(request){
                response = request.responseJSON;
                if (response.partial) {
                    $('clan_myclanlanding_list').update(response.partial).show();
                    $('clan_myclanlanding_link_hot').removeClassName('active');
                    $('clan_myclanlanding_link_top').removeClassName('active');
                    $('clan_myclanlanding_link_pop').addClassName('active');
                }
            }	,
            onComplete: function(){
                $(instance.component_spinner_element.id).hide();
                $(instance.component_id+"_component").setStyle({position:posi});
            }
        });
        return false;
    },
	
    get_top_clans: function(){
        var instance = this;
        var posi = $(instance.component_id+"_component").getStyle('position');
        new Ajax.Request(this.actionUrl('index'), {
            method: 'post',
            parameters:{
                what:'top',
                authenticity_token: instance.currentAuthToken()
            },
            onLoading: function(){
                $(instance.component_spinner_element.id).show();
                $(instance.component_id+"_component").setStyle({position:'relative'});
            },
            onSuccess: function(request){
                response = request.responseJSON;
                if (response.partial) {
                    $('clan_myclanlanding_list').update(response.partial).show();
                    $('clan_myclanlanding_link_hot').removeClassName('active');
                    $('clan_myclanlanding_link_pop').removeClassName('active');
                    $('clan_myclanlanding_link_top').addClassName('active');
                }
            }	,
            onComplete: function(){
                $(instance.component_spinner_element.id).hide();
                $(instance.component_id+"_component").setStyle({position:posi});
            }
	});
	return false;
    },
	
    get_hot_clans: function(){
        var instance = this;
        var posi = $(instance.component_id+"_component").getStyle('position');
        new Ajax.Request(this.actionUrl('index'), {
            method: 'post',
            parameters:{
                what: 'hot',
                authenticity_token: instance.currentAuthToken()
            },
            onLoading: function(){
                $(instance.component_spinner_element.id).show();
                $(instance.component_id+"_component").setStyle({position:'relative'});
            },
            onSuccess: function(request){
                response = request.responseJSON;
                if (response.partial) {
                    $('clan_myclanlanding_list').update(response.partial).show();
                    $('clan_myclanlanding_link_top').removeClassName('active');
                    $('clan_myclanlanding_link_pop').removeClassName('active');
                    $('clan_myclanlanding_link_hot').addClassName('active');
                }
            }	,
            onComplete: function(){
                $(instance.component_spinner_element.id).hide();
                $(instance.component_id+"_component").setStyle({position:posi});
            }
        });
        return false;
    },

    openNewMail: function(user_id) {
        window.open(this.actionUrl('open_new_mail', {
            user_id: user_id,
            location: window.location.href
        }), 'newMessage', 'width=530,height=500,scrollbars=yes');

        return false;
    },

    sendNewMail: function(form, location_protocol, return_url) {
        var instance = this;
        new Ajax.Request(instance.actionUrl('send_new_mail'), {
            parameters: form.serialize(true),
            onSuccess: function(request) {
                //var string = window.opener.location.toString();
                window.opener.location = return_url;
                window.close();
            },
            onFailure: function(request) {
                instance.$('error_content').update(request.responseText);
            }
        });

        return false;
    }

});
CreateComponentSiteInterface('sidebar.relation', {
	
	user_into_clans: function(user_id){
		var instance = this;
		if($('invite_place_sidebar').visible()) {
		  $('invite_place_sidebar').blindUp({
		    afterFinish: function() {
  	      $('invite_place_sidebar').update('');
		    }
		  });
		  $('invite_place_sidebar').previousSiblings().first().down('a.action-link').removeClassName('action-link-open');	
		} else {
		  new Ajax.Request(this.actionUrl('user_into_clans'), {
  			method: 'post',
  			parameters:{
  				user_id: user_id,
  				authenticity_token: instance.currentAuthToken()
  			},
  			onLoading: function() {
  			  $('invite_place_sidebar').previousSiblings().first().down('.component_spinner').show();
  			},
  			onSuccess: function(request){
  				response = request.responseJSON;
  				if (response.partial) {
  					$('invite_place_sidebar').update(response.partial).blindDown();
            $('invite_place_sidebar').previousSiblings().first().down('a.action-link').addClassName('action-link-open');
  				}
  			},
  			onFailure: function(request) {
  				response = request.responseJSON;
  	      instance.showResponseMessage(response.flash.status, { message: response.flash.message });
  	    },
  	    onComplete: function() {
  	      $('invite_place_sidebar').previousSiblings().first().down('.component_spinner').hide();
  	    }
  		});
		}
		return false;
	},
	
	submit_form: function(form) {
		var instance = this;
		new Ajax.Request(this.actionUrl('create'), {
			method: 'post',
			parameters: form.serialize(true),
			onSuccess: function(request){
				response = request.responseJSON;
				$('invite_place_sidebar').hide();
				$('invite_place_sidebar_link').removeClassName('action-link-open');
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
			},
			onFailure: function(request) {
				response = request.responseJSON;
	      instance.showResponseMessage(response.flash.status, { message: response.flash.message });
	    }
		});
		return false;
	},
	
	openNewMail: function(user_id) { 
  	window.open(this.actionUrl('open_new_mail', {
  	  user_id: user_id,
      location: window.location.href
  	}), 'newMessage', 'width=530,height=500,scrollbars=yes');

  	return false;
  },

  sendNewMail: function(form, location_protocol, return_url) {
    var instance = this;
    new Ajax.Request(instance.actionUrl('send_new_mail'), {
      parameters: form.serialize(true),
      onSuccess: function(request) {
        window.opener.location = return_url;
        window.close();
      },
      onFailure: function(request) {
        instance.$('error_content').update(request.responseText);
      }
    });

	  return false;
	},

	show_friend_form: function(friend_id) {
		var instance = this;
		if($('sidebar_relation_bc_friend').visible()) {
		  $('sidebar_relation_bc_friend').blindUp({
		    afterFinish: function() {
  	      $('sidebar_relation_bc_friend').update('');
		    }
		  });
		  $('sidebar_relation_bc_friend').previousSiblings().first().down('a.action-link').removeClassName('action-link-open');	
		} else {
		  new Ajax.Request(instance.actionUrl('show_friend_form'), {
  	    method: 'get',
  	    parameters: {
  	      friend_id: friend_id
  	    },
  	    onLoading: function() {
  			  $('sidebar_relation_bc_friend').previousSiblings().first().down('.component_spinner').show();
  			},
  	    onSuccess:function(request) {
      		response = request.responseJSON;
  				if (response.partial) {
  					$('sidebar_relation_bc_friend').update(response.partial).blindDown();
            $('sidebar_relation_bc_friend').previousSiblings().first().down('a.action-link').addClassName('action-link-open');;
  				} 
  				if (response.flash){
  					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
  				}
  			},
  			onFailure: function(request) {
  				response = request.responseJSON;
  	      instance.showResponseMessage(response.flash.status, { message: response.flash.message });
  	    },
  	    onComplete: function() {
  	      $('sidebar_relation_bc_friend').previousSiblings().first().down('.component_spinner').hide();
  	    }
  	  });
		}	
  
		return false;
	},
	
	
	submitFriendship: function(friend_id) {
		var instance = this;
	  new Ajax.Request(instance.actionUrl('add_friend'), {
	    method: 'post',
	    parameters: {
	      friend_id: friend_id,
				reason_text: $('friendship_reason_text').value,
				authenticity_token: instance.currentAuthToken()
	    },
			onLoading: function(){
				$('sidebar_relation_bc_friend').update("<div class='spinner-full'><img alt='spinner - please wait' src='/images/core/spinner.gif' /><br /><em class='normal'>please wait…</em></div>");
			},
	    onSuccess:function(request) {
				response = request.responseJSON;
				if (response.partial) {
	      	$('sidebar_relation_list').update(response.partial).show();
				} 
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
	    },
	    onFailure: function(request) {
	      instance.showResponseMessage('failure', {
	        message: request.responseText
	      });
	    }
	  });
		return false;
	},
	
	cancel_friend: function(user_id){
		$('sidebar_relation_friendship_cancel_field_'+user_id).blindDown();
		$('sidebar_relation_friendship_cancel_link').addClassName('action-link-open');
		return false;
	},
	
	// used to slide up the cancel field ( = Abort the cancel friendship action)
	abort_cancel_friend: function(user_id){
		$('sidebar_relation_friendship_cancel_field_'+user_id).blindUp();
		$('sidebar_relation_friendship_cancel_link').removeClassName('action-link-open');
		return false;
	},
	
	remove_friend: function(user_id){
		var instance = this;
		new Ajax.Request(instance.actionUrl('remove_friend'),{
			method: 'post',
			parameters:{
				friend_id: user_id,
				authenticity_token: instance.currentAuthToken()
			},
			onLoading: function(){
				$('sidebar_relation_bc_friend').update("<div class='spinner-full'><img alt='spinner - please wait' src='/images/core/spinner.gif' /><br /><em class='normal'>please wait…</em></div>");
			},
			onSuccess: function(request){
				response = request.responseJSON;
				if (response.partial) {
					$('sidebar_relation_list').update(response.partial);
				}
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
			},
			onFailure: function(request) {
				response = request.responseJSON;
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
			}
		});
		return false;
	},
	
	show_opp_form: function(user_id){
		var instance = this;
		if($('sidebar_relation_bc_opponent').visible()) {
		  $('sidebar_relation_bc_opponent').blindUp({
		    afterFinish: function() {
  	      $('sidebar_relation_bc_opponent').update('');
		    }
		  });
		  $('sidebar_relation_bc_opponent').previousSiblings().first().down('a.action-link').removeClassName('action-link-open');	
		} else {
  		new Ajax.Request(instance.actionUrl('show_opp_form'),{
  			method: 'post',
  			parameters:{
  				friend_id: user_id,
  				authenticity_token: instance.currentAuthToken()
  			},
  			onLoading: function() {
  			  $('sidebar_relation_bc_opponent').previousSiblings().first().down('.component_spinner').show();
  			},
  			onSuccess: function(request){
  				response = request.responseJSON;
  				if (response.partial) {
  					$('sidebar_relation_bc_opponent').update(response.partial).blindDown();
            $('sidebar_relation_bc_opponent').previousSiblings().first().down('a.action-link').addClassName('action-link-open');
  				} 
  				if (response.flash){
  					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
  				}
  			}, 
  			onComplete: function() {
  	      $('sidebar_relation_bc_opponent').previousSiblings().first().down('.component_spinner').hide();
  	    }
  		});
		}
		return false;
	},
	
	submitOpponent: function(friend_id, wait_text) {
		var instance = this;
	  new Ajax.Request(instance.actionUrl('add_opponent'), {
	    method: 'post',
	    parameters: {
	      friend_id: friend_id,
				reason_text: $('opponent_reason_text').value,
				authenticity_token: instance.currentAuthToken()
	    },
			onLoading: function(){
				$('sidebar_relation_bc_opponent').update("<div class='spinner-full'><img alt='spinner - please wait' src='/images/core/spinner.gif' /><br /><em class='normal'>please wait…</em></div>");
			},
	    onSuccess:function(request) {
				response = request.responseJSON;
				if (response.partial) {
					$('sidebar_relation_list').update(response.partial);
				} 
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
	    },
	    onFailure: function(request) {
				response = request.responseJSON;
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
			}
	  });
		return false;
	},
	
	remove_opponent: function(user_id){
		var instance = this;
		new Ajax.Request(instance.actionUrl('remove_opponent'),{
			method: 'post',
			parameters:{
				friend_id: user_id,
				authenticity_token: instance.currentAuthToken()
			},
			onLoading: function(){
				$('sidebar_relation_bc_opponent').update("<div class='spinner-full'><img alt='spinner - please wait' src='/images/core/spinner.gif' /><br /><em class='normal'>please wait…</em></div>");
			},
			onSuccess: function(request){
				response = request.responseJSON;
				if (response.partial) {
					$('sidebar_relation_list').update(response.partial);
				}
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
			},
			onFailure: function(request) {
				response = request.responseJSON;
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
			}
		});
		return false;
	}
	
});
CreateComponentSiteInterface('sidebar.top_user', {

  openNewMail: function(user_id) {
  	window.open(this.actionUrl('open_new_mail', {
  	  user_id: user_id
  	}), 'newMessage', 'width=530,height=500,scrollbars=yes');

  	return false;
  }

});
CreateComponentSiteInterface('sidebar.large_user_list', {
	//
	// Game players
	//
	get_game_users: function(game_id, what){
		var instance = this;
		new Ajax.Request(instance.actionUrl('list_game_players'),{
			method: 'post',
			parameters:{
				game_id: game_id,
				what: what,
				authenticity_token: instance.currentAuthToken()
			},
			onLoading: function(){
				$('sidebar_large_user_list_content_section').update("<div class='spinner-full'><img alt='spinner - please wait' src='/images/core/spinner.gif' /><br /><em class='normal'>please wait…</em></div>");
			},
			onSuccess: function(response){
				$('sidebar_large_user_list_content_section').update(response.responseText);
				$$('a.sidebar_large_user_list_tabs').each(function(link){link.removeClassName('active');});
				$('sidebar_large_user_list_nav_link_'+what).addClassName('active');
			},
	    onFailure: function(request) {
	      instance.showResponseMessage('failure', {
	        message: request.responseText
	      });
	    }
		});
		return false;
	}
	
});
CreateComponentSiteInterface('calendar.calendar', {

	
  toggleBorder: function() {
	  this.component_element.select('a.detail').invoke('observe', 'click', this.getCalendarOverlay.bindAsEventListener(this));
		this.component_element.select('a.more').invoke('observe', 'click', this.getDayOverlay.bindAsEventListener(this));
	  return false;
  },
  
  getCalendarOverlay: function(event) {
    var link = event.element();
    var event_id = link.id.gsub(/^.*_([0-9]+)$/, '#{1}');
    var overlay = this.$('overlay_for_' + event_id);
    
    event.stop();
    
    if(overlay)
      return this.toggleFadeAndBlind(overlay);
    
    new Ajax.Request(this.actionUrl('get_calendar_overlay', {
      authenticity_token: this.currentAuthToken(),
			event_id: event_id,
			owner_id: owner[0],
			owner_type: owner[1]
    }), {
      method: 'post',
			onLoading: function(){
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
      onSuccess: function(request) {
        response = request.responseJSON;
				link.insert({
          after: response.partial
        });
        
        var overlay = link.next();
        overlay.down('a.close').observe('click', function(event) {
          this.toggleFadeAndBlind(overlay);
          event.stop();
        }.bind(this));
        
        this.toggleFadeAndBlind(overlay, {
          beforeStart: function() {
            var container = overlay.up('div');
            container.setStyle({
              zIndex: parseInt(container.getStyle('z-index'), 10) + 1
            });
          }
        });
      }.bind(this),
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
    });
    
    return false;
  },

	getDayOverlay: function(event) {
    var link = event.element();
    var day = link.id.gsub('calendar_calendar_show_more_for_', '');
    var overlay = this.$('overlay_for_' + day);
    event.stop();
    
    if(overlay)
      return this.toggleFadeAndBlind(overlay);
    var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
    new Ajax.Request(this.actionUrl('get_day_overlay'), {
      method: 'post', 
			parameters: {
				day: day,
				owner_id: $('calendar_calendar_owner_id').value,
				owner_type: $('calendar_calendar_owner_type').value,
				authenticity_token: this.currentAuthToken()
			},
			onLoading: function(){
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
			onSuccess:function(request) {
				response = request.responseJSON;
				$('show_more_container').update(response.partial).show();
			},
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
    });
    
    return false;
  },

	jumpToDate: function(options){
		if(!options) options = {};
		if(options.direction) {
			start_month = $('calendar_calendar_current_month').value;
			start_year = $('calendar_calendar_current_year').value;
			if (options.direction =="previous") {
				start_month--;
				if (start_month < 1) {
					start_month = 12;
					start_year--;
				}
			} else {
				start_month++;
				if (start_month > 12) {
					start_month = 1;
					start_year++;
				}
			}
		} 
		else {
			if (options.start_year && options.start_month) {
				start_year = options.start_year;
				start_month = options.start_month;
			} else {
		  	start_month = $('jump_to_month').getValue();
				start_year =  $('jump_to_year').getValue();
			}
		}
    var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
	  new Ajax.Request(this.actionUrl('get_calendar_by_date'), {
	    method: 'post',
			parameters: {
				start_month: start_month,
				start_year: start_year,
				owner_id: owner[0],
				owner_type: owner[1],
        authenticity_token: instance.currentAuthToken()
			},
			onLoading: function(){
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
	    onSuccess:function(request) {
	      response = request.responseJSON;
				if (response.partial) {
					$('calendar_place').update(response.partial).show();
					this.toggleBorder();
				} 
				if (response.flash){
					this.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
	    }.bind(this),
	    onFailure: function(request) {
				response = request.responseJSON;      
				this.showResponseMessage(response.flash.status, {
        	message: response.flash.message
      	});
	    },
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
	  });
		return false;
	},

	newEvent: function(owner) {
    var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
		new Ajax.Request(this.actionUrl('newEvent'), {
	    method: 'post',
			parameters: {
				authenticity_token: instance.currentAuthToken(),
				owner_id: owner[0],
				owner_type: owner[1]
			},
			onLoading: function(){
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
	    onSuccess:function(request) {
	      response = request.responseJSON;
				if (response.partial) {
					$('event_form').update(response.partial).show();
					this.toggleBorder();
				}
				if (response.flash){
					this.showResponseMessage(response.flash.status, {
	        	message: response.flash.message
	      	});
				}
	    }.bind(this),
	    onFailure: function(request) {
				response = request.responseJSON;      
				this.showResponseMessage(response.flash.status, {
        	message: response.flash.message
      	});
	    }	,
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
	  });	

		return false;
	},

  editEvent: function(event_id) {
    var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
		new Ajax.Request(this.actionUrl('editEvent'), {
	    method: 'post',
			parameters: {
				event_id: event_id,
				owner_id: owner[0],
				owner_type: owner[1],
				authenticity_token: instance.currentAuthToken()
			},
	    onLoading: function() {
	    	$('calendar_calendar_overlay_for_'+event_id).hide();
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
	    },
	    onSuccess:function(request) {
	      response = request.responseJSON;
				$('event_form').update(response.partial).show();
				if (response.flash){
					this.showResponseMessage(response.flash.status, {
	        	message: response.flash.message
	      	});
				}
	    },
	    onFailure: function(request) {
				response = request.responseJSON;      
				this.showResponseMessage(response.flash.status, {
        	message: response.flash.message
      	});
	    }	,
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
	  });	

		return false;
	},
	
	createEvent: function(form) {
    var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
		start_month = $('kw_components_calendar_db_event_starts_at_2i');
		start_year = $('kw_components_calendar_db_event_starts_at_1i');
		new Ajax.Request(this.actionUrl('createEvent'), {
			method: 'post',
			parameters: form.serialize(true),
			onLoading: function(){
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
			onSuccess: function(request) {
				$('event_form').hide();
				response = request.responseJSON;
				if (response.partial) {
					$('calendar_place').update(response.partial).show();
					this.toggleBorder();
				}
				if (response.flash){
					instance.showResponseMessage(response.flash.status, {
	        	message: response.flash.message
	      	});
				}
	    }.bind(this),
			onFailure: function(request) {
				response = request.responseJSON;
				instance.showResponseMessage(response.flash.status, {
        	message: response.flash.message
      	});
			}	,
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
		});
		return false;
	},
	
	updateEvent: function(form) {
    var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
		start_month = $('kw_components_calendar_db_event_starts_at_2i');
		start_year = $('kw_components_calendar_db_event_starts_at_1i');
		new Ajax.Request(this.actionUrl('updateEvent'), {
			method: 'post',
			parameters: form.serialize(true),
			onLoading: function(){
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
			onSuccess: function(request) {
				$('event_form').hide();
				response = request.responseJSON;
				if (response.partial) {
					$('calendar_place').update(response.partial).show();
					this.toggleBorder();
				}
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
	    }.bind(this),
			onFailure: function(request) {
				response = request.responseJSON;
				instance.showResponseMessage(response.flash.status, {
        	message: request.response.flash.message
      	});
			}	,
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
		});
		return false;
	},
	
	deleteEvent: function(event_id) {
    var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
		new Ajax.Request(this.actionUrl('deleteEvent'), {
			method: 'put',
			parameters: {
				event_id: event_id,
				authenticity_token: instance.currentAuthToken()
			},
			onLoading: function(){
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
			onSuccess: function(request){
			 response = request.responseJSON;
				$('event_form').hide();
				$('calendar_calendar_overlay_for_'+event_id).hide();
				if (response.partial) {
					$('calendar_place').update(response.partial).show();
					this.toggleBorder();
				}
				if (response.flash){
					this.showResponseMessage(response.flash.status, {
	        	message: response.flash.message
	      	});
				}
	    }.bind(this),
			onFailure: function(request){
				response = request.responseJSON;
				instance.showResponseMessage(response.flash.status, {
        	message: request.response.flash.message
      	});
			}	,
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
		});
	}
});
CreateComponentSiteInterface('profile.opponent', {

	requestOpponent: function(trigger, friend_id, wait_text) {
		var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
	  new Ajax.Request(instance.actionUrl('show_form'), {
	    method: 'get',
	    parameters: {
	      friend_id: friend_id,
				authenticity_token: instance.currentAuthToken()
	    },
	    onLoading: function() {
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
	      $('profile_friendship_bottom_info').hide();
				$('profile_opponent_bottom_info').hide();
	    },
	    onSuccess:function(request) {
	      instance.$('request_form_opponent').update(request.responseText).show();
          try {
  	        instance.$('no_opponents_yet').hide();
          } catch(error) {};

  	      trigger.up('.bottom-info').hide();
					$(instance.component_spinner_element.id).hide();
					$(instance.component_id+"_component").setStyle({position:posi});
  	    },
	    onFailure: function(request) {
	      instance.showResponseMessage('failure', {
	        message: request.responseText
	      });
				$(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
	    }
	  });	
		return false;
	},


	submitOpponent: function(friend_id, wait_text) {
		var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
	  new Ajax.Request(instance.actionUrl('request_opponent'), {
	    method: 'post',
	    parameters: {
	      friend_id: friend_id,
				reason_text: $('opponent_reason_text').value,
				authenticity_token: instance.currentAuthToken()
	    },
	    onLoading: function() {
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
	    },
	    onSuccess:function(request) {
	      instance.$('request_form_opponent').update(request.responseText).show();
	      instance.$('request_opponent').hide();
				$(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
	    },
	    onFailure: function(request) {
	      instance.showResponseMessage('failure', {
	        message: request.responseText
	      });
				$(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
	    }
	  });
		return false;
	},



	cancelOpponent: function(friend_id, current_user_id, wait_text) {
		var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
	  new Ajax.Request(instance.actionUrl('cancel_opponent'), {
	    method: 'get',
	    parameters: {
	      friend_id: friend_id,
				authenticity_token: instance.currentAuthToken()
	    },
	    onLoading: function() {
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
	    },
	    onSuccess:function(request) {
				instance.$('opponent_'+current_user_id).update(request.responseText).show();
	      instance.$('cancel_opponent').hide();
	      instance.$('opponent_cancel_'+friend_id).hide();
				$(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
	    },
	    onFailure: function(request) {
	      instance.showResponseMessage('failure', {
	        message: request.responseText
	      });
				$(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
	    }
	  });
  
		return false;
	}
	
});
CreateComponentSiteInterface('profile.plays', {
	
	remove_from_my_games: function(game_id){
		if ($('profile_user_plays_remove_game_'+game_id).visible()) {
			$('profile_user_plays_remove_game_'+game_id).hide();
		}
		else {
			$('profile_user_plays_remove_game_'+game_id).show();
		}
		return false;
	},
	
	
	really_remove_from_my_games: function(game_id) {
		var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
		new Ajax.Request(instance.actionUrl('remove_from_my_games'),{
			method:'get',
			parameters:{
				game_id: game_id,
				authenticity_token: instance.currentAuthToken()
			},
			onLoading: function(){
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
			onSuccess: function(request){
				instance.showResponseMessage('success', {
	        message: request.responseText
	      });
				$(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
				$('profile_user_plays_'+game_id).remove();
			},
			onFailure: function(request) {
	      instance.showResponseMessage('failure', {
	        message: request.responseText
	      });
				$(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
		});
		return false;
	}
});
CreateComponentSiteInterface('sidebar.upcoming_clan_event', {
  

	scanlinks: function() {
	  this.component_element.select('a.detail').invoke('observe', 'click', this.getCalendarOverlay.bindAsEventListener(this));
	  return false;
  },
	
	getCalendarOverlay: function(event) {
		var link = event.element();
    var event_id = link.id.gsub(/^.*_([0-9]+)$/, '#{1}');
    var overlay = this.$('overlay_for_' + event_id);
    
    event.stop();
    
    if(overlay)
      return this.toggleFadeAndBlind(overlay);
    
    new Ajax.Request(this.actionUrl('get_calendar_overlay', {
      event_id: event_id,
			owner_id: owner[0],
			owner_type: owner[1]
    }), {
      method: 'post',
      onLoading: function() {
        
      },
      onSuccess: function(request) {
        link.insert({
          after: request.responseText
        });
        
        var overlay = link.next();
        overlay.down('a.close').observe('click', function(event) {
          this.toggleFadeAndBlind(overlay);
          event.stop();
        }.bind(this));
        
        this.toggleFadeAndBlind(overlay, {
          beforeStart: function() {
            var container = overlay.up('div');
            container.setStyle({
              zIndex: parseInt(container.getStyle('z-index'), 10) + 1
            });
          }
        });
      }.bind(this),
      onComplete: function() {
        //console.log('finished');
      }
    } ) ;
    
    return false;
	},
	
	show_tomorrow: function(){
		var instance = this;
		new Ajax.Request(instance.actionUrl('show_tomorrow'), {
			method: 'post',
			parameters: {
				owner_id: owner[0],
				owner_type: owner[1],
				authenticity_token: instance.currentAuthToken()
			},
			onLoading: function(){
			//	$('upcoming_clan_event_component_spinner').show();
			},
			onSuccess: function(request){
				$('upcoming_clan_event_list').update(request.responseText);
			},
			onComplete: function(){
			//	$('upcoming_clan_event_component_spinner').hide();
			  $('upcoming_clan_event_link_today').removeClassName('active');
				$('upcoming_clan_event_link_next_week').removeClassName('active');
				$('upcoming_clan_event_link_tomorrow').addClassName('active');
				this.scanlinks();
			}.bind(this)
		});
		return false;
	},
	
	show_next_week: function() {
		var instance = this;
		new Ajax.Request(instance.actionUrl('show_next_week'), {
			method: 'post',
			parameters: {
				owner_id: owner[0],
				owner_type: owner[1],
				authenticity_token: instance.currentAuthToken()
			},
			onLoading: function(){
				//$('upcoming_clan_event_component_spinner').show();
			},
			onSuccess: function(request){
				$('upcoming_clan_event_list').update(request.responseText);
			},
			onComplete: function(){
				//$('upcoming_clan_event_component_spinner').hide();
				$('upcoming_clan_event_link_today').removeClassName('active');
				$('upcoming_clan_event_link_tomorrow').removeClassName('active');
				$('upcoming_clan_event_link_next_week').addClassName('active');
				this.scanlinks();
			}.bind(this)
		});
		return false;
	},
	
	show_today: function() {
		var instance = this;
		new Ajax.Request(instance.actionUrl('show_today'), {
			method: 'post',
			parameters: {
				owner_id: owner[0],
				owner_type: owner[1],
				authenticity_token: instance.currentAuthToken()
			},
			onLoading: function(){
			//	$('upcoming_clan_event_component_spinner').show();
			},
			onSuccess: function(request){
				$('upcoming_clan_event_list').update(request.responseText);
			},
			onComplete: function(){
			  $('upcoming_clan_event_link_tomorrow').removeClassName('active');
				$('upcoming_clan_event_link_next_week').removeClassName('active');
				$('upcoming_clan_event_link_today').addClassName('active');
				this.scanlinks();
			}.bind(this)
		});
		return false;
	}
});
CreateComponentSiteInterface('popmog.static_game_forum_list_advanced', {

	
	showAlwaysAllGameForums:function() {
	  var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
	  new Ajax.Request(instance.actionUrl('show_always_all_game_forums'), {
  	  method: 'put',
  	  parameters: {authenticity_token: instance.currentAuthToken()},
			onLoading: function() {
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
  	  onSuccess:function(request) {
  	    response = request.responseJSON;
  	    instance.$('show_only_game_forums').show();
  	    instance.$('show_all_forums').hide();
  	    instance.$('forums').update(response.entries);
				instance.$('pagination').update(response.pagination);
  	  }	,
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
  	});
  	return false;
	},
	
	
	showOnlyGameForumsImMemberOf:function() {
	  var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
	  new Ajax.Request(instance.actionUrl('show_only_game_forums_im_member_of'), {
  	  method: 'put',
  	  parameters: {authenticity_token: instance.currentAuthToken()},
			onLoading: function() {
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
  	  onSuccess:function(request) {
  	    response = request.responseJSON;
  	    instance.$('show_all_forums').show();
  	    instance.$('show_only_game_forums').hide();
  	    instance.$('forums').update(response.entries);
				instance.$('pagination').update(response.pagination);
  	  }	,
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
  	});
  	return false;
	}
	

});
/**
 * Component: watchedtopics
 */

CreateComponentSiteInterface('community_forums.watchedtopic', {
  
  showWatchedTopicsPage: function(category, type) {
    var instance = this;	
  	instance.ajax_request = new Ajax.Request(instance.actionUrl('show_watched_topics_page'), {
  	  parameters: {category: category,
  	               type: type,
  		             authenticity_token: instance.currentAuthToken()},
  	  onSuccess: function(request) {
  			response = request.responseJSON;
	      instance.$('watchedtopics_content').update(response.watchedtopicspartial);
  	  }
  	});
  	return false;
  },//showWatchededTopicsPage
  
  
  paginateList: function(page_number, object, category) {
    var instance = this;
    new Ajax.Request(instance.actionUrl('show_watched_topics_page'), {
	      method: 'put',
	  	  parameters: {page: page_number,
		                 category: category,
					   authenticity_token: instance.currentAuthToken()},
		  onSuccess:function(request) {
		  	response = request.responseJSON;
  			instance.$('watchedtopics_content').update(response.watchedtopicspartial);
		  }
	  });
	  return false;
  }//paginateList
  
});

CreateComponentSiteInterface('profile.activity_feed', {
	
//	wait_text: "<li><div class='spinner-full'><img alt='spinner - please wait' src='/images/core/spinner.gif' /><br /><em class='normal'>please wait…</em></div></li>",
	
	updateFeeds: function(cat, origin_type, origin_id, feed_type, context ,limit, target){
		var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
		new Ajax.Request(instance.actionUrl('index'), {
			parameters: {
				cat: cat,
				origin_type: origin_type,
				origin_id: origin_id,
				feed_type: feed_type,
				limit: limit,
				context: context,
				authenticity_token: instance.currentAuthToken()
			},
			onLoading: function(){
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			//	$(target).update("<li><div class='spinner-full'><img alt='spinner - please wait' src='/images/core/spinner.gif' /><br /><em class='normal'>please wait…</em></div></li>");
			},
			onSuccess: function(request){
				$(target).update(request.responseText);
				$$('a.feedtabs').each(function (tab) {
					tab.removeClassName('active');
				});
				$('profile_activity_feed_'+feed_type+'_feeds').addClassName('active');
				$(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
		});
		return false;
	},
	
	get_posts: function( origin_type, origin_id, limit, target){
		var instance = this;
		new Ajax.Request(instance.actionUrl('get_posts'), {
			method: 'post',
			parameters: {
				origin_type: origin_type,
				origin_id: origin_id,
				limit: limit,
				authenticity_token: instance.currentAuthToken()
			},
			onLoading: function(){
				$(instance.component_spinner_element.id).show();
//				$(target).update("<li><div class='spinner-full'><img alt='spinner - please wait' src='/images/core/spinner.gif' /><br /><em class='normal'>please wait…</em></div></li>");
			},
			onSuccess: function(request){
				$(target).update(request.responseText);
				$$('a.feedtabs').each(function (tab) {
					tab.removeClassName('active');
				});
				$('profile_activity_feed_posts_feeds').addClassName('active');
				$(instance.component_spinner_element.id).hide();
			}
		});
	return false;
	},
	
	get_gamer_posts: function( origin_type, origin_id, limit, target, link){
		var instance = this;
		new Ajax.Request(instance.actionUrl('get_gamer_posts'), {
			method: 'post',
			parameters: {
				origin_type: origin_type,
				origin_id: origin_id,
				limit: limit,
				authenticity_token: instance.currentAuthToken()
			},
			onLoading: function(){
				$(instance.component_spinner_element.id).show();
//				$(target).update("<li><div class='spinner-full'><img alt='spinner - please wait' src='/images/core/spinner.gif' /><br /><em class='normal'>please wait…</em></div></li>");
			},
			onSuccess: function(request){
				$(target).update(request.responseText);
				$$('a.feedtabs').each(function (tab) {
					tab.removeClassName('active');
				});
				$(link).addClassName('active');
				$(instance.component_spinner_element.id).hide();
			}
		});
		return false;
	},
	
	get_clan_posts: function( origin_type, origin_id, limit, target, link){
		var instance = this;
		new Ajax.Request(instance.actionUrl('get_clan_posts'), {
			method: 'post',
			parameters: {
				origin_type: origin_type,
				origin_id: origin_id,
				limit: limit,
				authenticity_token: instance.currentAuthToken()
			},
			onLoading: function(){
				$(instance.component_spinner_element.id).show();
				//$(target).update("<li><div class='spinner-full'><img alt='spinner - please wait' src='/images/core/spinner.gif' /><br /><em class='normal'>please wait…</em></div></li>");
			},
			onSuccess: function(request){
				$(target).update(request.responseText);
				$$('a.feedtabs').each(function (tab) {
					tab.removeClassName('active');
				});
				$(link).addClassName('active');
				$(instance.component_spinner_element.id).hide();
			}
		});
		return false;
	}
});
CreateComponentSiteInterface('community_friends.friendlist', {
	page: 1,
	reference_type: '',
	reference_id: '',
	
	sortOption: function(options) {
		if(!options)
	    options = {};
    
    if(!options.parameters)
      options.parameters = {};

		var instance = this;
		this.resultList('get_paginated_friends', {
			parameters: options.parameters,
			afterFinish: function(response) {
				instance.$('friend_count').update(response.count);
				instance.$('friends').update(response.entries);
				instance.$('pagination').update(response.pagination);
				
				options.afterFinish();
			}
		});
		
		return false;
	},
	
	listPage: function(page) {
		this.sortOption({
			parameters: {
				page: page
			}
		});
		
		return false;
	},
  
  removeFriend: function(friend_id){
    if(confirm("Möchtest Du den Freund wirklich löschen?")) {
  		var instance = this;
  		this.resultList('kick_friendship', {
  			parameters: {
  			  friend_id: friend_id
  			},
  			afterFinish: function(response) {
  				instance.$('friend_count').update(response.count);
  				instance.$('friends').update(response.entries);
  				instance.$('pagination').update(response.pagination);

  				options.afterFinish();
  			}
  		});
    }
      
    return false;	
  },
  
  showDeleteIcons: function() {
    this.$('friends').select('a.delete').invoke('show');
    this.$('show_delete').hide();
    this.$('hide_delete').show();
    
    return false;
  },
  

  hideDeleteIcons: function() {
    this.$('friends').select('a.delete').invoke('hide');
    this.$('show_delete').show();
    this.$('hide_delete').hide();
    
    return false;
  }
});
CreateComponentSiteInterface('honor_points.game_score', {
	
    index: function(game_id, what, sort, dir){
        var instance = this;
        var posi = $(instance.component_id+"_component").getStyle('position');
        var update_target = $("honor_points_game_score_content_list");
        new Ajax.Request(instance.actionUrl('index'),{
            method: 'post',
            parameters: {
                game_id: game_id,
                what: what,
                sort: sort,
                dir: dir,
                authenticity_token: instance.currentAuthToken()
            },
            onLoading: function() {
                $(instance.component_spinner_element.id).show();
                $(instance.component_id+"_component").setStyle({
                    position:'relative'
                });
            },
            onSuccess: function(request){
                update_target.update(request.responseText);
            }	,
            onComplete: function(){
                $(instance.component_spinner_element.id).hide();
                $(instance.component_id+"_component").setStyle({
                    position:posi
                });
            }
        });
        return false;
    },
	
    switch_display: function(to){
        $('honor_points_game_score_tab_players').removeClassName('active');
        $('honor_points_game_score_tab_clans').removeClassName('active');
        $('honor_points_game_score_tab_achievements').removeClassName('active');
        $$('div.honorpoint_box').each(function(box) {
            box.hide();
        });
        $('honor_points_game_score_tab_'+to).addClassName('active');
        $('honor_points_game_score_content_'+to).show();
        return false;
    }
	
});
CreateComponentSiteInterface('calendar.event', {

});
CreateComponentSiteInterface('games.achievement', {
	
	get_achievements_for: function(game, page, sorted_by, dir) {
		var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
		new Ajax.Request(instance.actionUrl('get_achievements'),{
			method: 'post',
			parameters:{
				game_id: game,
				page: page,
				sorted_by: sorted_by,
				dir: dir,
				authenticity_token: instance.currentAuthToken()
			},
			onLoading: function() {
			  $(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
			onSuccess: function(request){
				response = request.responseJSON;
				if (response.partial) {
					$('achievements_field').update(response.partial).show();
				}
				if (response.flash){
					instance.showResponseMessage(response.flash.status, { message: response.flash.message });
				}
			}	,
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
		});
		return false;
	}
});
/**
 * Component: mailbox
 */

CreateComponentSiteInterface('community_mails.mailbox', {
	visible_folders: [],
	hidden_folders_previous: [],
	hidden_folders_next: [],
	
	openNewMail: function(url, return_url) {
		window.open(this.actionUrl(url), 'newMessage', 'width=530,height=500,scrollbars=yes');
		return false;
	},
	

	sendNewMail: function(form, location_protocol, return_url) {
    var instance = this;
    new Ajax.Request(instance.actionUrl('send_new_mail'), {
      parameters: form.serialize(true),
      onSuccess: function(request) {
        window.opener.location = location_protocol + return_url;
        window.close();	
      },
      onFailure: function(request) {
        instance.$('error_content').update(request.responseText);
      }
    });
	  
	  return false;
	},
	
	
  createNewDirectory: function() {
    var instance = this;
    new Ajax.Request(instance.actionUrl('new_directory'), {
      method: 'post',
      parameters: {
        authenticity_token: instance.currentAuthToken()
      },
      onSuccess: function(request) {
        instance.initDirectoryList();
        instance.$('mail_directories').update(request.responseText);
      }
    });
    
    return false;
  },


  moveSelectedMailsToTrashbox: function(form, type, dir_id, default_trashbox_directory_id) {
	var instance = this;	
	instance.ajax_request = new Ajax.Request(instance.actionUrl('move_selected_mails_to_trashbox'), {
	  
		parameters: $H(form.serialize(true)).merge({dir_id: dir_id, type: type}),
		onSuccess: function(request) {
			      response = request.responseJSON;
            instance.$('mailbox_content').update(response.mailboxpartial);						
						if (response.directory > 0){
							instance.$('num_of_new_mails_' + response.directory_id).update('(' + response.directory + ')');
							$('zapper_num_of_new_mails').update(response.directory);
						}
						else
						{
							instance.$('num_of_new_mails_' + response.directory_id).update('');
							$('zapper_num_of_new_mails').update('(0)');
						}
		}
	});
	return false;
  },//moveSelectedMailsToTrashbox


  deleteSelectedMailsFromTrashbox: function(form, default_trashbox_directory_id) {
	  var instance = this;	
  	instance.ajax_request = new Ajax.Request(instance.actionUrl('delete_selected_mails_from_trashbox'), {
	  
  		parameters: $H(form.serialize(true)).merge({type:'trashbox'}),
  		onSuccess: function(request) {
  			response = request.responseJSON;
              instance.$('mailbox_content').update(response.mailboxpartial);
  		}
  	});
  	return false;
  },//deleteSelectedMailsFromTrashbox

	
  showMails: function(directory_id, mailboxtype) {
    var instance = this;
    new Ajax.Request(instance.actionUrl('show_mails'), {
      method: 'put',
      parameters: {
        authenticity_token: instance.currentAuthToken(),
        dir_id: directory_id,
        type: mailboxtype
      },
      onSuccess: function(request) {
        response = request.responseJSON;
        instance.$('mailbox_content').update(response.mailboxpartial);
        $$('li.directory_link.active').invoke('removeClassName', 'active');
        instance.$('directory_mail_' + directory_id).addClassName('active');
				if (mailboxtype == 'trashbox') 
					instance.$('empty_trash_button').show();
				else
					instance.$('empty_trash_button').hide();
      }
    });
    
    return false;	
  },//showMails
  
  
  showMailDetail: function(mail_id) {
		mail_item_info = this.$('mail_item_info_' + mail_id);
		mail_item_info.toggleClassName('opened_mail_info');
    mail_detail = this.$('mailtext_' + mail_id);
    mail_detail.toggle().toggleClassName('opened_mail');
    
    var instance = this;
    new Ajax.Request(instance.actionUrl('update_mail_status'), {
      	method: 'get',
      	parameters: {
        	mapping_id: mail_id
      }
    });
    
    return false;
  },
  
  
  deleteDirectory: function(directory_id, default_trashbox_directory_id, question) {
	  if(confirm(question)) {
      var instance = this;
      new Ajax.Request(instance.actionUrl('move_directory_to_trashbox'), {
        
	  	  method: 'put',
	      parameters: {id: directory_id,
					   default_trashbox_directory_id: default_trashbox_directory_id,
					   authenticity_token: instance.currentAuthToken()},
		  onSuccess:function(request) {
			  response = request.responseJSON;
			  directory = instance.$('directory_mail_' + directory_id);
			  directory.remove();
			  instance.initDirectoryList();
		  }
	  });
    }
    return false; 	
  },//deleteDirectory
 

  deleteMail: function(mail_id, mapping_id, directory_id, default_trashbox_directory_id) {
    var instance = this;
    new Ajax.Request(instance.actionUrl('move_mail_to_trashbox'), {
	  	  method: 'put',
	      parameters: {id: mail_id,
					   old_dir_id: directory_id,
					   default_trashbox_directory_id: default_trashbox_directory_id,
					   authenticity_token: instance.currentAuthToken()},
		  onSuccess:function(request) {
				response = request.responseJSON;
				mail = instance.$('mail_' + mapping_id);
				mail.remove();
				instance.$('mails_count').update(response.num_of_mails);
				if (response.directory > 0)
					instance.$('num_of_new_mails_' + directory_id).update('(' + response.directory + ')');
				else
					instance.$('num_of_new_mails_' + directory_id).update('');
			}
	  });
	  return false; 
  },//deleteMail


  deleteMailFinally: function(mail_id, mapping_id, default_trashbox_directory_id) {
    var instance = this;
    new Ajax.Request(instance.actionUrl('delete_mail_from_trashbox'), {
	      method: 'put',
	  	  parameters: {id: mail_id,
		               mapping_id: mapping_id,
		               default_trashbox_directory_id: default_trashbox_directory_id,
					   authenticity_token: instance.currentAuthToken()},
		  onSuccess:function(request) {
			response = request.responseJSON;
			mail = instance.$('mail_' + mapping_id);
			mail.remove();
			instance.$('mails_count').update(response.num_of_mails);
		  }
	});
	return false; 
  },//deleteMail
  

  selectAll: function() {
  	var instance = this;
    if (!$('checker').hasClassName('checked')) {      
  	  for(i=0; i < 10; i++) {
  	    var name = 'sel_mail_' + i;
  	    var checkbox = instance.$(name);        
        if (checkbox) {
  		    checkbox.checked = true;
  		  }
  		  $('checker').addClassName('checked');
  	  }
  	} else {
  	  for(i=0; i < 10; i++) {
  	    name = instance.$('sel_mail_' + i);
  		  if($(name)) {
  		    $(name).checked = false;
    		}
    		$('checker').removeClassName('checked');
  	  }
  	}
	  return false;
  },
	

  paginateIt: function(page_number, dir_id, mailboxtype) {
    var instance = this;
    new Ajax.Request(instance.actionUrl('show_mails'), {
  	      method: 'put',
  	      
  	  	  parameters: {dir_id: dir_id,
  		               page: page_number,
  		               type: mailboxtype,
  					   authenticity_token: instance.currentAuthToken()},
  		  onSuccess:function(request) {
  			response = request.responseJSON;
  			instance.$('mailbox_content').update(response.mailboxpartial);
  		  }
  	});
  	return false;
  },//paginateIt
 

  emptyTrash: function(default_trashbox_directory_id, question) {
	if(confirm(question)) {
      var instance = this;
   	  new Ajax.Request(instance.actionUrl('empty_trashbox'), {
  	      method: 'put',
  	      
  	   	  parameters: {default_trashbox_directory_id: default_trashbox_directory_id,
  		               authenticity_token: instance.currentAuthToken()},
  		  onSuccess:function(request) {
  			response = request.responseJSON;
  			instance.$('mailbox_content').update('0 Einträge');
  		  }
  	  });
  	  return false;
  	}
  },//emptyTrash
  
  
  toggleUpdateForm: function(dir_id) {
    dir = this.$('dir_' + dir_id);
    form = this.$('edit_dir_form_' + dir_id);
    
    if(dir.visible()) {
      dir.hide();
      form.show();
      form.down('input.editor_field').select();
    } else {
      dir.show();
      form.hide();
    }
    
    return false;
  },
  
  updateDirectory: function(form, dir_id) {
    var instance = this;
    new Ajax.Request(instance.actionUrl('update_directory'), {
      parameters: form.serialize(true),
      onComplete: function(request) {
        instance.toggleUpdateForm(dir_id);
        instance.$('dir_title_' + dir_id).update(request.responseText);
      }
    });
    
    return false;
  },
  
  /* Folder list */
	initDirectoryList: function() {
		folders_height = 0;
		list = this.$('user_dir_container');
		list_folders = list.select('li');
		list_folders.each(function(folder) {
			folder_height = folder.getHeight();
			if(folders_height + folder_height <= list.getHeight()) {
				folder.removeClassName('hidden').addClassName('visible').show();
				folders_height = folders_height + folder_height;
			}
		});
				
		this.hidden_folder_previous = [];
		this.visible_folders = list.select('li.visible');
		this.hidden_folders_next = list.select('li.hidden');
		this.initDirectoryArrows();
	},
	
	initDirectoryArrows: function() {
		arrow_up = this.$('arrow_up');
		arrow_down = this.$('arrow_down');
		
		if(this.hidden_folders_previous.length == 0)
			arrow_up.hide();
		else
			arrow_up.show();
			
		if(this.hidden_folders_next.length == 0)
			arrow_down.hide();
		else
			arrow_down.show();
	},
	
	nextDirectory: function() {
		var instance = this;
		
		arrow_up = instance.$('arrow_up');
		arrow_down = instance.$('arrow_down');
	
		if(this.hidden_folders_next.length > 0 && !arrow_down.hasClassName('disabled')) {
			arrow_up.addClassName('disabled');
			arrow_down.addClassName('disabled');
			
			first_visible = this.visible_folders.first();
			first_hidden = this.hidden_folders_next.first();
			
			new Effect.Morph(first_visible, {
				style: 'height: 0px',
				duration: 0.2,
				beforeStart: function() {
					new Effect.Fade(first_visible, {
						duration: 0.2,
						beforeStart: function() {
							instance.hidden_folders_previous.push(first_visible);
							instance.visible_folders.shift();
							instance.visible_folders.push(first_hidden);
							instance.hidden_folders_next.shift();

							if(instance.hidden_folders_next.length < 1) {
								new Effect.Fade(arrow_down, {
									duration: 0.2
								});
							}

							if(instance.hidden_folders_previous.length > 0) {
								new Effect.Appear(arrow_up, {
									duration: 0.2
								});
							}
							
							new Effect.Morph(first_hidden.setStyle({height: '0px'}), {
								style: {
									height: first_hidden.getStyle('zIndex') + 'px'
								},
								duration: 0.2,
								beforeStart: function() {
									new Effect.Appear(first_hidden, {
										duration: 0.2
									});
								},
								afterFinish: function() {
									arrow_up.removeClassName('disabled');
									arrow_down.removeClassName('disabled');
								}
							});
						}
					});
				}
			});
		}
		
		return false;
	},
	
	previousDirectory: function() {
		var instance = this;
		
		arrow_up = instance.$('arrow_up');
		arrow_down = instance.$('arrow_down');
		
		if(this.hidden_folders_previous.length > 0 && !arrow_up.hasClassName('disabled')) {
			arrow_up.addClassName('disabled');
			arrow_down.addClassName('disabled');
			
			last_visible = this.visible_folders.last();
			last_hidden = this.hidden_folders_previous.last();
			
			new Effect.Morph(last_visible, {
				style: 'height: 0px',
				duration: 0.2,
				beforeStart: function() {
					new Effect.Fade(last_visible, {
						duration: 0.2,
						beforeStart: function() {
							instance.hidden_folders_next.unshift(last_visible);
							instance.visible_folders.pop();
							instance.visible_folders.unshift(last_hidden);
							instance.hidden_folders_previous.pop();

							if(instance.hidden_folders_previous.length < 1) {
								new Effect.Fade(arrow_up, {
									duration: 0.2
								});
							}

							if(instance.hidden_folders_next.length > 0) {
								new Effect.Appear(arrow_down, {
									duration: 0.2
								});
							}

							new Effect.Morph(last_hidden.setStyle({height: '0px'}), {
								style: {
									height: last_hidden.getStyle('maxHeight')
								},
								duration: 0.2,
								beforeStart: function() {
									new Effect.Appear(last_hidden, {
										duration: 0.2
									});
								},
								afterFinish: function() {
									arrow_up.removeClassName('disabled');
									arrow_down.removeClassName('disabled');
								}
							});
						}
					});					
				}
			});
		}
		
		return false;
	},
  
  
  checkIfFriendshipIsOutOfTime: function(friend_id) {
		var instance = this;
	  new Ajax.Request(instance.actionUrl('check_if_friendship_is_out_of_time'), {
	    method: 'get',
	    parameters: {
	      friend_id: friend_id
	    },
	    onLoading: function() {
	    },
	    onSuccess:function(request) {
	      document.location = '/user/friends';
	    },
	    onFailure: function(request) {
	      instance.showResponseMessage('failure', {
	        message: request.responseText
	      });
	    }
	  });	
		return false;
	},
  
  
	
	closeMailPopup: function(target_url) {
		if (target_url) {
			window.opener.location = target_url;
		};
		window.close();
		return false;
	},
	
	toggleAllMessages: function() {
	  $('show_all').observe('click', function(e) {
      if($('complete_conversation').visible()) {
       Effect.BlindUp('complete_conversation', { duration: 0.2 });
       $('show_all').setStyle({backgroundPosition: 'left -341px'});
        Event.stop(e);
      } else {
       Effect.BlindDown('complete_conversation', { duration: 0.2 });
       $('show_all').setStyle({backgroundPosition: 'left -357px'}); 
        Event.stop(e);                     
	    }  	    
	  });
		return false;
	}
});



CreateComponentSiteInterface('popmog.home_landing_board', {
	
	get_posts: function(type, limit){
		var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
		new Ajax.Request(this.actionUrl('get_posts'),{
			method: 'post',
			parameters: {
				origin: type,
				limit: limit,
				authenticity_token: kupferwerk.auth_token
			},
			onLoading: function() {
			  $(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
			onSuccess: function(request){
				response = request.responseJSON;
				if (response.partial) {
					$('popmog_home_landing_board_feed_lists').update(response.partial);
					$$('a.feedtabs').each(function (tab) {
						tab.removeClassName('active');
					});
					$('popmog_home_landing_board_link_'+type).addClassName('active');	
				}
			},
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
		});
		return false;
	},
	
	get_feeds: function(type, limit)  {
		var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
		new Ajax.Request(this.actionUrl('get_feeds'),{
			method: 'post',
			parameters: {
				origin: type,
				limit: limit,
				authenticity_token: kupferwerk.auth_token
			},
			onLoading: function() {
			  $(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
			onSuccess: function(request){
				response = request.responseJSON;
				if (response.partial) {
					$('popmog_home_landing_board_feed_lists').update(response.partial);
					$$('a.feedtabs').each(function (tab) {
						tab.removeClassName('active');
					});
					$('popmog_home_landing_board_link_'+type).addClassName('active');	
				}
			},
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
		});
		return false;
	}
	
});
CreateComponentSiteInterface('sidebar.my_cockpit_action', {


});
CreateComponentSiteInterface('clan.membership', {

	get_members_for: function(clan_id, state, page_number){
		var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
		new Ajax.Request(instance.actionUrl('get_members_for'), {
			method: 'post',
			parameters: {
				clan_id: clan_id,
				state: state,
				page: page_number,
				authenticity_token: instance.currentAuthToken()
			},
			onLoading: function(){
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
			onSuccess: function(request){
				response = request.responseJSON;
				if (response.partial) {
					$('membersfield').update(response.partial).show();
				}
				if (response.users){
					eval(response.users+';');
				}
			}	,
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
		});
		return false;
	},

	requestFriendship: function(friend_id) {
		var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
	  new Ajax.Request(instance.actionUrl('show_form'), {
	    method: 'get',
	    parameters: {
	      friend_id: friend_id
	    },
	    onLoading: function() {
				Effect.toggle($('membership_info_field_'+friend_id));
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
	    },
	    onSuccess:function(request) {
				$('membership_info_field_'+friend_id).down('td.last').update(request.responseText);
	    },
	    onFailure: function(request) {
	      instance.showResponseMessage('failure', {
	        message: request.responseText
	      });
	    }	,
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
	  });	
  
		return false;
	},
	
	
	submitFriendship: function(friend_id) {
		var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
	  new Ajax.Request(instance.actionUrl('request_friendship'), {
	    method: 'post',
	    parameters: {
	      friend_id: friend_id,
				reason_text: $('friendship_reason_text').value,
				authenticity_token: instance.currentAuthToken()
	    },
	    onLoading: function() {
				Effect.toggle($('membership_info_field_'+friend_id));
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
	    },
	    onSuccess:function(request) {
				Effect.toggle($('membership_info_field_'+friend_id));
	    },
	    onFailure: function(request) {
	      instance.showResponseMessage('failure', {
	        message: request.responseText
	      });
	    }	,
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
	  });
		return false;
	},


	cancelFriendship: function(friend_id, current_user_id) {
		var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
	  new Ajax.Request(instance.actionUrl('cancel_friendship'), {
	    method: 'get',
	    parameters: {
	      friend_id: friend_id,
				authenticity_token: instance.currentAuthToken()
	    },
	    onLoading: function() {
				Effect.toggle($('membership_info_field_'+friend_id));
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
	    },
	    onSuccess:function(request) {
				Effect.toggle($('membership_info_field_'+friend_id));
	    },
	    onFailure: function(request) {
	      instance.showResponseMessage('failure', {
	        message: request.responseText
	      });
	    }	,
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
	  });
  
		return false;
	},
	
	confirmFriendship: function(friend_id){
		var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
	  new Ajax.Request(instance.actionUrl('confirm_friendship'), {
	    method: 'get',
	    parameters: {
	      friend_id: friend_id,
				authenticity_token: instance.currentAuthToken()
	    },
	    onLoading: function() {
				Effect.toggle($('membership_info_field_'+friend_id));
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
	    },
	    onSuccess:function(request) {
	      instance.showResponseMessage('success', {
	        message: request.responseText
	      });
				Effect.toggle($('membership_info_field_'+friend_id));
	    },
	    onFailure: function(request) {
	      instance.showResponseMessage('failure', {
	        message: request.responseText
	      });
	    }	,
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
	  });
		
		return false;
	},
	
	openNewMail: function(user_id) {
		window.open(this.actionUrl('open_new_mail', {
		  user_id: user_id
		}), 'newMessage', 'width=530,height=500,scrollbars=yes');

		return false;
	},
	
	sendNewMail: function(form) {
    var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
    new Ajax.Request(instance.actionUrl('send_new_mail'), {
      parameters: form.serialize(true),
			onLoading: function(){
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
			},
      onSuccess: function(request) {
        //window.opener.reload(); //location = window.opener.location.protocol + '//' + window.opener.location.host + window.opener.location.pathname;
				var string = window.opener.document.location.toString();
				window.opener.location = string;
        window.close();	
      },
      onFailure: function(request) {
        instance.$('error_content').update(request.responseText);
      }	,
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
    });
	  
	  return false;
	},
	
	show_details: function(membership_id, user_id) {
		var instance = this;
		var posi = $(instance.component_id+"_component").getStyle('position');
		new Ajax.Request(instance.actionUrl('show'), {
			method: 'get',
	    parameters: {
	      membership_id: membership_id,
				authenticity_token: instance.currentAuthToken()
	    },
	    onLoading: function() {
				Effect.toggle($('membership_info_field_'+user_id));
				$(instance.component_spinner_element.id).show();
				$(instance.component_id+"_component").setStyle({position:'relative'});
	    },
	    onSuccess:function(request) {
				Effect.toggle($('membership_info_field_'+friend_id));
				$('membership_info_field_'+friend_id).down('td.last').update(request.responseText).show();
	    },
	    onFailure: function(request) {
	      instance.showResponseMessage('failure', {
	        message: request.responseText
	      });
	    }	,
			onComplete: function(){
			  $(instance.component_spinner_element.id).hide();
				$(instance.component_id+"_component").setStyle({position:posi});
			}
		});
		return false;
	}

});
CreateComponentSiteInterface('sidebar.clans', {
	
    switch_tab: function(tab_name){
        var instance = this;
        update_target = $("sidebar_clans_tab_content");
        new Ajax.Request(instance.actionUrl(tab_name), {
            method: 'get',
            onLoading: function(){
                update_target.update("<div class='spinner-full'><img alt='spinner - please wait' src='/images/core/spinner.gif' /><br /><em class='normal'>please wait…</em></div>");
            },
            onSuccess: function(request){
                response = request.responseJSON;
                update_target.update(response).show();
            }
        });
        return false;
    }

} );
