/************************************************/
/* IPB3 Javascript								*/
/* -------------------------------------------- */
/* ips.loginSlide.js - (IM) Sliding Quick Login	*/
/* (c) Invision Modding 2009					*/
/* -------------------------------------------- */
/* Author: Martin Aronsen						*/
/************************************************/

var _loginSlide = window.IPBoard;

_loginSlide.prototype.loginSlide = {

	hasOpenID: 0,
	loginBoxElem: '',
	prevStyles: [],
	
	init: function()
	{
		Debug.write( "Initializing ips.loginSlide.js" );
		document.observe( "dom:loaded", function()
		{
			ipb.loginSlide.loginBoxElem = $( 'user_navigation' );
			
			var regexp = /section=login/gi;
			$( 'user_navigation' ).descendants().each( function( elem )
			{
				Debug.info( "Found something" );
				if ( $( elem ).tagName == 'A' )
				{
					Debug.info( "found links" );
					if ( $( elem ).href.match( regexp ) )
					{
						Debug.info( "found a match" );
						$( elem ).addClassName( 'loginSlide' );
						throw $break;
					}
				}

			});
			
			// Get the background color of the login box
			ipb.loginSlide.prevStyles['background-color'] = $( ipb.loginSlide.loginBoxElem ).getStyle( 'background-color' );
			ipb.loginSlide.prevStyles['text-color'] = $( ipb.loginSlide.loginBoxElem ).getStyle( 'color' );
			
			Debug.dir( ipb.loginSlide.prevStyles );
			// Set the default background color for the panel
			$( 'panel' ).setStyle( { 'backgroundColor': ipb.loginSlide.prevStyles['background-color'] } );
			
			// Create transparent layer
			ipb.loginSlide.createDocumentModal();
			
			$$( '.loginSlide' ).each( function( elem ) 
			{ 
				$( elem ).observe( 'click', ipb.loginSlide.openPanel );
			});
																				
			$( 'loginCancel' ).observe( 'click', ipb.loginSlide.openPanel );
			$( 'loginSlide_modal' ).observe( 'click', ipb.loginSlide.openPanel );
		});
	},
	
	openPanel: function(e)
	{
		
		Event.stop(e);
		
		var element = $( ipb.loginSlide.loginBoxElem );
		
		if( $( 'panel' ).visible() )
		{
			$( 'loginSlide_modal' ).hide();
			
			new Effect.Parallel([
				
				new Effect.Morph( 'panel', {
											style: {
												background: ipb.loginSlide.prevStyles['background-color'],
												color: ipb.loginSlide.prevStyles['text-color']
											},
												duration: 0.5
											}
				),
				
				new Effect.SlideUp( 'panel', 
											{ 
												duration: 0.5
											} 
				)
			], 
			{
				duration: 0.5
			});
		}
		else
		{
			$( 'loginSlide_modal' ).show();
			
			
			new Effect.Parallel([
				new Effect.Morph( 'panel', {
											style: 'background: transparent; color: #ffffff',
											duration: 2.0
											}
				),
				new Effect.SlideDown( 'panel', 
											{ 
												duration: 2.0
											} 
				)
			], 
			{
				duration: 2.0
			});
			
			if ( ipb.loginSlide.hasOpenID )
			{
				$( 'openidOpen' ).observe( 'click', ipb.loginSlide.openOpenID );
			}
			
		}
		
		return true;
	},
	
	createDocumentModal: function()
	{
		var pageSize = $('ipboard_body').getDimensions();
		var viewSize = document.viewport.getDimensions();
		
		var dims = [];
		
		Debug.dir( pageSize );
		Debug.dir( viewSize );
		
		if( viewSize['height'] < pageSize['height'] ){
			dims['height'] = pageSize['height'];
		} else {
			dims['height'] = viewSize['height'];
		}
		
		if( viewSize['width'] < pageSize['width'] ){
			dims['width'] = pageSize['width'];
		} else {
			dims['width'] = viewSize['width'];
		}
		
		var modal = new Element( 'div', { 'id': 'loginSlide_modal' } ).hide();
		modal.setStyle('width: ' + dims['width'] + 'px; height: ' + dims['height'] + 'px; position: absolute; top: 0px; left: 0px; z-index: 15000;');
		
		$$('body')[0].insert( modal );
	},
	
	openOpenID: function(e)
	{
		Event.stop(e);
		
		if( $('openidSignin').visible() )
		{
			new Effect.Parallel([
				new Effect.BlindUp( $( 'openidSignin' ), { sync: true } ),
				new Effect.BlindDown( $( 'regularLogin' ), { sync: true } )
			]);
		}
		else
		{
			new Effect.Parallel([
				new Effect.BlindDown( $( 'openidSignin' ), { sync: true } ),
				new Effect.BlindUp( $( 'regularLogin' ), { sync: true } )
			]);
		}
	}
}

ipb.loginSlide.init();