/************************************************/
/* IPB3 Javascript								*/
/* -------------------------------------------- */
/* ips.loginSlide.js - Crixo Modder & Developer	*/
/* (c) Comunidad zwolf.cl 2010					*/
/* -------------------------------------------- */
/* Author: Crixo from zwolf						*/
/************************************************/

var _loginSlide = window.IPBoard;

_loginSlide.prototype.loginSlide = {

	hasOpenID: 0,
	loginBoxElem: '',
	loginLinkTitle: '',
	prevStyles: [],
	
	init: function()
	{
		Debug.write( "Initializing ips.loginSlide.js" );
		document.observe( "dom:loaded", function()
		{
			ipb.loginSlide.loginBoxElem = $( 'user_navigation' );
			
			var regexpUrl = new RegExp( 'login', 'gi' );
			var regexpTitle = new RegExp( ipb.loginSlide.loginLinkTitle, 'gi' );
			$( 'user_navigation' ).descendants().each( function( elem )
			{
				if ( $( elem ).tagName == 'A' )
				{
					if ( $( elem ).href.match( regexpUrl ) || $( elem ).title.match( regexpTitle ) )
					{
						$( 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' );
			
			// 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: #2E2E2E; color: #999999',
											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 = [];
				
		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: 996;');
		
		$$('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();