var wybar;

jQuery( function( $ ) {
				
	wybar = {
		conf: wybar_conf,
		visible_panel: '',
		now_moving: '',
		show_after_moving: '',
		
		show_panel: function ( panel_name, beforeshow_callback ) {
			if ( wybar.now_moving != '' ) {
				wybar.show_after_moving = panel_name;
				return;
			}
			if ( '' == $( '#wybar_panel_' + panel_name ).html() ) {
				$.getJSON( 	wybar.conf[ panel_name ],
							function ( res ) {
								if ( !res.error ) {
									$( '#wybar_panel_' + panel_name ).html( res.data );
									wybar.show_panel( panel_name );
								}
							} );
				return;
			} else {
				if ( beforeshow_callback ) {
					beforeshow_callback();
				}
			}
			if ( wybar.visible_panel != panel_name ) {
				if ( wybar.visible_panel != '' ) {
					wybar.hide_panel( panel_name );
				} else {
					if ( $('#obscurate-wybar-site').is(':visible') ) {
						wybar.move_panel_in( panel_name );
					} else {
						$('#obscurate-wybar-site').fadeIn( function () { wybar.move_panel_in( panel_name ); } );
					}
				}
			}
		},
		
		move_panel_in: function ( panel_name ) {
			wybar.now_moving = panel_name;
			var altezza = $( '#wybar_panel_contain_' + panel_name ).outerHeight( true ) + 50;
			var sposta = Math.round( ( $( window ).width() - $( '#wybar_panel_contain_' + panel_name ).outerWidth( true ) ) / 2 );
			$( '#wybar_panel_contain_' + panel_name ).css( { top : '-' + altezza + 'px', left: sposta + 'px' } ).animate( { top : '83px' }, 400, function () { 
				wybar.visible_panel = panel_name;
				wybar.now_moving = '';
				if ( wybar.show_after_moving != '' ) {
					console.log('mostro il procrastinato ' + wybar.show_after_moving );
					var next = wybar.show_after_moving;
					wybar.show_after_moving = '';
					wybar.hide_panel( next );
				}
			} );
		},
		
		hide_panel: function ( show_panel_after ) {
			wybar.now_moving = wybar.visible_panel;
			var altezza = $( '#wybar_panel_contain_' + wybar.visible_panel ).outerHeight( true ) + 50;
			$( '#wybar_panel_contain_' + wybar.visible_panel ).animate( {
				top : '-' + altezza  + 'px'
			}, 400, function() {
				wybar.visible_panel = '';
				wybar.now_moving = '';
				if ( show_panel_after ) {
					wybar.show_panel( show_panel_after );	
				} else {
					$('#obscurate-wybar-site').fadeOut();
				}
			});
		},
		
		reload_bar: function () {
			$.getJSON( 	wybar.conf.networkbar,
						function ( res ) {
							if ( !res.error ) {
								jQuery('#wybar-netmenu').html( res.data );
								wybar.hide_panel();
								jQuery( document ).trigger('wybar_changed');
							}
						} );
		},
		
		display_form_errors: function( form_id, errors ) {
			for ( fieldname in errors ) {
				var msgul = $('<ul class="wybar-errors"></ul>');
				for ( i in errors[ fieldname ] ) {
					msgul.append('<li>' + errors[ fieldname ][ i ] + '</li>');
				}
				msgul.insertBefore( $( '#' + form_id ).find('[name="' + fieldname + '"]') );
			}
		},
		
		reset_form: function ( form_id ) {
			$( '#' + form_id + ' .wybar-errors').remove();
			$( '#' + form_id + ' input[name], #' + form_id + ' select, #' + form_id + ' textarea').val('');
		},
		

		logout: function () {
			$.getJSON( 	wybar.conf.logout,
						function ( res ) {
							if ( !res.error ) {
								wybar.reload_bar();
								$( document ).trigger('wybar_logout');
							}
						} );
			return false;
		}
	}
	

	$('#obscurate-wybar-site').click( function () { wybar.hide_panel(); } );
	//$('.wybar_panel').click( function ( e ) { e.stopPropagation(); } );

	$('#wybar-register-form').live( 'submit', function () {
		var data = {};
		var rough = $(this).serializeArray();
		for ( i in rough ) {
			data[ rough[ i ].name ] = rough[ i ].value;
		}
		$.post(	wybar.conf.register,
				data,
				function ( res ) {
					if ( res.error ) {
						wybar.display_form_errors( 'wybar-register-form', res.data );
					} else {
						wybar.reload_bar();
						jQuery( document ).trigger('wybar_registered');
						jQuery( document ).trigger('wybar_login');
					}					
				} );
		return false;
	} );
	
	$('#wybar-login-form').live( 'submit', function () {
		$.post( wybar.conf.login,
				{	username: $('#wybar-login-form-username').val(),
					password: $('#wybar-login-form-password').val() },
				function ( res ) {
					if ( res.error ) {
						wybar.display_form_errors( 'wybar-login-form', res.data );
					} else {
						wybar.reload_bar();
						jQuery( document ).trigger('wybar_login');
					}
				},
				'json' );
		return false;
	});
});
