import React, { useEffect, useState, useRef } from 'react';
import { styled, createTheme, ThemeProvider } from '@mui/material/styles';
import useAuth from '../Auth/useAuth';
import { Outlet, useNavigate} from "react-router-dom";

import Typography from '@mui/material/Typography';
import IconButton from '@mui/material/IconButton';
import MenuIcon from '@mui/icons-material/Menu';
import Menu from '@mui/material/Menu';
// import Container from '@mui/material/Container';
import Badge from '@mui/material/Badge';
import Avatar from '@mui/material/Avatar';
import FullscreenIcon from '@mui/icons-material/Fullscreen';

import MenuItem from '@mui/material/MenuItem';
import MailIcon from '@mui/icons-material/Mail';
import ProfilePicture from '../Images/man.png';
import MuiAppBar from '@mui/material/AppBar';
import NotificationsIcon from '@mui/icons-material/Notifications';
import Toolbar from '@mui/material/Toolbar';
import Box from '@mui/material/Box';

const drawerWidth = 240;

const useCheckMobileScreen = () => {
    const [width, setWidth] = useState(window.innerWidth);
    const handleWindowSizeChange = () => {
        let size = window.innerWidth;
        setWidth(size);
    }

    useEffect(() => {
        window.addEventListener('resize', handleWindowSizeChange);
        return () => {
            window.removeEventListener('resize', handleWindowSizeChange);
        }
    }, []);

    let isMobile = width <= 1000

    return (isMobile);
}

const AppBar = styled(MuiAppBar, {
    shouldForwardProp: (prop) => prop !== 'open',
})(({ theme, open }) => ({
    transition: theme.transitions.create(['margin', 'width'], {
        easing: theme.transitions.easing.sharp,
        duration: theme.transitions.duration.leavingScreen,
    }),
    ...(open && {
        width: `calc(100% - ${drawerWidth}px)`,
        marginLeft: `${drawerWidth}px`,
        transition: theme.transitions.create(['margin', 'width'], {
            easing: theme.transitions.easing.easeOut,
            duration: theme.transitions.duration.enteringScreen,
        }),
    }),
}));

export default function AppBarComponent (){

    const [open, setOpen] = React.useState(true);
    const elRef = useRef();


    const auth = useAuth();
    const navigate = useNavigate()
    const [anchorEl, setAnchorEl] = React.useState(null);

    const [anchorElMovil, setAnchorElMov] = React.useState(null);

    const toggleDrawer = () => setOpen(!open);
    const open_profile = Boolean(anchorEl);
    const handleClick = (event) => setAnchorEl(event.currentTarget);
    const handleClose = () => setAnchorEl(null)
    const openMov = Boolean(anchorElMovil);
    const handleCloseMov = () => {
        setAnchorElMov(null);
    };

    const MenuResponsive = ()  => {
        setAnchorElMov(elRef.current);
    } 

    const CerrarSession = () => {
        console.log('cerrando session')
        // auth.logout();
        // navigate('/')
    } 

    return(
        <AppBar 
            style={{ backgroundColor : '#fff', boxShadow : 'None' }} 
            position="fixed" 
            open={useCheckMobileScreen() ? false : open} >

            <Toolbar sx={{ borderBottom : "1px solid #ec5e69"}} >

                <div ref={elRef}>
                    <IconButton 
                        edge="start" 
                        color="inherit" 
                        aria-label="open drawer" 
                        onClick={ useCheckMobileScreen() ? MenuResponsive : toggleDrawer } 
                        sx={{ marginRight: '36px', ...( !useCheckMobileScreen() && open && { display: 'none' }), }} >
                        <MenuIcon  style={{
                            background: '#ec5e69',
                            fontSize: "40",
                            color: "#fff"
                        }}/>
                    </IconButton>

                    <Menu
                        id="basic-menu"
                        anchorEl={anchorElMovil}
                        open={openMov}
                        onClose={handleCloseMov}
                        MenuListProps={{
                            'aria-labelledby': 'basic-button',
                        }}>
                        <MenuItem onClick={ () => navigate('/perfil') }>Perfil</MenuItem>
                        <MenuItem onClick={handleCloseMov}>My account</MenuItem>
                        <MenuItem onClick={handleCloseMov}>Logout</MenuItem>
                    </Menu>

                </div>

                <Typography component="h1" variant="h6" color="inherit" noWrap sx={{ flexGrow: 1 }} >
                    {
                        !useCheckMobileScreen() && open ? (
                            <React.Fragment>

                                <IconButton onClick={toggleDrawer}>
                                    <MenuIcon />
                                </IconButton>

                                <IconButton onClick={ (event) =>  event.target.requestFullscreen() }>
                                    <FullscreenIcon style={{ paddinLeft : 15 }}/>
                                </IconButton>


                            </React.Fragment>
                        ) : undefined
                    }
                </Typography>


                <Box sx={{ display: { xs: 'none', md: 'flex' } }}>
                    <IconButton size="large" aria-label="show 4 new mails" color="inherit">
                        <Badge badgeContent={4} color="error">
                            <MailIcon style={{ color : '#212529' }} />
                        </Badge>
                    </IconButton>
                    <IconButton
                        size="large"
                        aria-label="show 17 new notifications"
                        color="inherit">
                        <Badge badgeContent={17} color="error">
                            <NotificationsIcon style={{ color : '#212529' }}/>
                        </Badge>
                    </IconButton>


                    <IconButton
                        size="small"
                        edge="end"
                        aria-label="account of current user"
                        aria-haspopup="true"
                        aria-expanded={open_profile ? 'true' : undefined}
                        onClick={handleClick}
                        color="inherit"
                    >
                        <Avatar alt="Cindy Baker" src={ProfilePicture} />

                    </IconButton>
                    <Menu
                        id="basic-menu"
                        anchorEl={anchorEl}
                        open={open_profile}
                        onClose={handleClose}
                        MenuListProps={{ 'aria-labelledby': 'basic-button', }}>
                        <MenuItem onClick={() => navigate('perfil') }>Profile</MenuItem>
                        <MenuItem onClick={() => console.log('opcion 2')}>My account</MenuItem>
                        <MenuItem onClick={CerrarSession}>Logout</MenuItem>
                    </Menu>

                </Box>

            </Toolbar>
        </AppBar>
    )
}
