The Lost Transition
Robert Blakely
CREATOR

Learn Hub

Core Training

Essential sales psychology fundamentals and business building foundations.

Start Course

Sales Psychology

Advanced psychological strategies for understanding and influencing prospects.

Begin Learning

AI Integration

Learn to leverage AI tools and automation in your sales and marketing.

Explore AI

Business Growth

Scaling strategies, systems building, and sustainable business development.

Grow Now

Live Workshops

Interactive training sessions, Q&A, and real-time learning opportunities.

Join Workshop

Certifications

Earn recognition for your achievements and demonstrate your expertise.

Get Certified

Resource Library

Templates, scripts, guides, and downloadable resources for immediate use.

Browse Library

Progress Tracking

Monitor your learning journey, completion rates, and skill development.

View Progress

Study Groups

Connect with peers, form study groups, and learn collaboratively.

Join Groups
CRM Timer
00:00
Call Session 1
`), 'CRMTimerPIP', 'width=600,height=500,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,alwaysOnTop=yes,left=100,top=100' ); if (pipWindow) { window.pipWindow = pipWindow; console.log('True PIP window created'); return; } alert('Please allow popups for Picture-in-Picture timer to work properly.'); showMainTimer(); } function createYouTubePIPOverlay() { console.log('Creating YouTube PIP overlay...'); // Remove any existing PIP overlay const existingPIP = document.getElementById('youtubePIP'); if (existingPIP) { console.log('Removing existing PIP'); existingPIP.remove(); } // Create true picture-in-picture window that stays on top of EVERYTHING const pipFeatures = 'width=400,height=267,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,alwaysOnTop=yes,top=100,left=100,chrome=yes,dialog=yes'; const pipWindow = window.open('', 'CRMTimerPIP', pipFeatures); if (pipWindow && !pipWindow.closed) { window.pipWindow = pipWindow; hideMainTimer(); pipWindow.document.write(` CRM Timer
🕐 Timer
00:00
`); pipWindow.document.close(); return; } alert('Please allow popups for Picture-in-Picture timer to work properly.'); showMainTimer(); } function hideMainTimer() { const mainTimer = document.getElementById('globalFloatingTimer'); if (mainTimer) { mainTimer.style.display = 'none'; console.log('Main timer hidden'); } } function showMainTimer() { const mainTimer = document.getElementById('globalFloatingTimer'); if (mainTimer) { mainTimer.style.display = 'block'; console.log('Main timer shown'); } } function closePIPOverlay() { // Close PIP window if it exists if (window.pipWindow && !window.pipWindow.closed) { window.pipWindow.close(); window.pipWindow = null; } // Remove PIP overlay if it exists const pipOverlay = document.getElementById('youtubePIP'); if (pipOverlay) { pipOverlay.remove(); console.log('PIP overlay removed'); } // Show main timer when PIP is closed showMainTimer(); } function resumeTimer() { if (!timerInterval && isRunning) { timerInterval = setInterval(() => { timerSeconds++; localStorage.setItem('timerSeconds', timerSeconds); updateTimerDisplay(); }, 1000); } } function pauseTimer() { isRunning = false; localStorage.setItem('timerRunning', 'false'); if (timerInterval) clearInterval(timerInterval); timerInterval = null; } function resetTimer() { pauseTimer(); timerSeconds = 0; sessionCount++; localStorage.setItem('timerSeconds', '0'); localStorage.setItem('sessionCount', sessionCount); localStorage.setItem('timerRunning', 'false'); document.getElementById('sessionNumber').textContent = sessionCount; updateTimerDisplay(); closePIPOverlay(); showMainTimer(); } function saveToCRM() { // Use PIP fields if available, otherwise use main timer fields const nameField = document.getElementById('pipContactName') || document.getElementById('contactName'); const emailField = document.getElementById('pipContactEmail') || document.getElementById('contactEmail'); const notesField = document.getElementById('pipCallNotes') || document.getElementById('callNotes'); const name = nameField.value; const email = emailField.value; const notes = notesField.value; const duration = document.getElementById('timerDisplay').textContent; if (name) { const crmData = { name: name, email: email, notes: notes, duration: duration, date: new Date().toLocaleDateString(), session: sessionCount }; let savedCalls = JSON.parse(localStorage.getItem('crmCalls') || '[]'); savedCalls.push(crmData); localStorage.setItem('crmCalls', JSON.stringify(savedCalls)); alert(`Contact "${name}" saved to CRM with ${duration} call duration`); // Clear both main and PIP fields if (document.getElementById('contactName')) document.getElementById('contactName').value = ''; if (document.getElementById('contactEmail')) document.getElementById('contactEmail').value = ''; if (document.getElementById('callNotes')) document.getElementById('callNotes').value = ''; if (document.getElementById('pipContactName')) document.getElementById('pipContactName').value = ''; if (document.getElementById('pipContactEmail')) document.getElementById('pipContactEmail').value = ''; if (document.getElementById('pipCallNotes')) document.getElementById('pipCallNotes').value = ''; } else { alert('Please enter a contact name to save to CRM'); } } function openLink() { const contactName = document.getElementById('contactName').value; if (contactName) { const url = `https://calendly.com/thelosttransition/${contactName.toLowerCase().replace(/\s+/g, '-')}`; window.open(url, '_blank'); } else { alert('Please enter a contact name first'); } } function minimizeTimer() { // Always minimize to small circle regardless of running state const timer = document.getElementById('globalFloatingTimer'); function updateMinimizedTimer() { const currentSeconds = parseInt(localStorage.getItem('timerSeconds')) || 0; const mins = Math.floor(currentSeconds / 60); const secs = currentSeconds % 60; const timeStr = String(mins).padStart(2, '0') + ':' + String(secs).padStart(2, '0'); let bgColor = 'linear-gradient(135deg, #28a745, #20c997)'; // Default green let animation = ''; if (currentSeconds < 480) { bgColor = 'linear-gradient(135deg, #28a745, #20c997)'; // Green } else if (currentSeconds < 600) { bgColor = 'linear-gradient(135deg, #ffc107, #ffed4e)'; // Yellow } else { bgColor = 'linear-gradient(135deg, #dc3545, #ff6b6b)'; // Red animation = 'animation: blink 1s infinite;'; } timer.innerHTML = `
${timeStr}
Call ${sessionCount}
`; } // Initial update updateMinimizedTimer(); // Update every second window.minimizedTimerInterval = setInterval(updateMinimizedTimer, 1000); } function restoreTimer() { // Clear minimized timer interval if (window.minimizedTimerInterval) { clearInterval(window.minimizedTimerInterval); window.minimizedTimerInterval = null; } // Restore the full floating timer instead of reloading const timer = document.getElementById('globalFloatingTimer'); timer.innerHTML = `
🕐 CRM Timer
00:00
Call Session ${sessionCount}
`; updateTimerDisplay(); } function openSnakeGame() { const gameModal = document.createElement('div'); gameModal.style.cssText = 'position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.8); z-index:100000; display:flex; align-items:center; justify-content:center;'; const highScore = localStorage.getItem('snakeHighScore') || 0; const leaderboard = getGlobalLeaderboard(); gameModal.innerHTML = `

🐍 Snake Break Game

Score: 0
Your Best: ${highScore}
Controls: Use arrow keys to move • Eat red food to grow and score!

🏆 Global Leaderboard

${leaderboard}
Click names to view profiles!
`; document.body.appendChild(gameModal); window.gameModal = gameModal; initSnake(); } function getGlobalLeaderboard() { // Get existing global scores from localStorage let globalScores = JSON.parse(localStorage.getItem('globalSnakeScores') || '[]'); // Add some sample data if empty (you'd replace this with real member data) if (globalScores.length === 0) { globalScores = [ {name: "Robert Blakely", score: 45, profile: "profile.html"}, {name: "Sarah Johnson", score: 38, profile: "profile.html?user=sarah"}, {name: "Mike Chen", score: 32, profile: "profile.html?user=mike"}, {name: "Lisa Rodriguez", score: 28, profile: "profile.html?user=lisa"}, {name: "David Kim", score: 25, profile: "profile.html?user=david"} ]; localStorage.setItem('globalSnakeScores', JSON.stringify(globalScores)); } // Sort by score descending globalScores.sort((a, b) => b.score - a.score); // Generate leaderboard HTML return globalScores.slice(0, 10).map((player, index) => { const medal = index === 0 ? '🥇' : index === 1 ? '🥈' : index === 2 ? '🥉' : `${index + 1}.`; const rankColor = index < 3 ? '#ff6b00' : '#333'; return `
${medal} ${player.name}
${player.score}
`; }).join(''); } function updateGlobalLeaderboard(playerName, newScore) { let globalScores = JSON.parse(localStorage.getItem('globalSnakeScores') || '[]'); // Find existing player or add new one const existingPlayerIndex = globalScores.findIndex(p => p.name === playerName); if (existingPlayerIndex >= 0) { // Update existing player's score if it's higher if (newScore > globalScores[existingPlayerIndex].score) { globalScores[existingPlayerIndex].score = newScore; } } else { // Add new player globalScores.push({ name: playerName, score: newScore, profile: "profile.html" // Default profile link }); } // Save updated scores localStorage.setItem('globalSnakeScores', JSON.stringify(globalScores)); // Refresh leaderboard display if game is open const leaderboardElement = document.getElementById('leaderboardList'); if (leaderboardElement) { leaderboardElement.innerHTML = getGlobalLeaderboard(); } } function closeSnakeGame() { if (window.gameModal) { window.gameModal.remove(); } } function initSnake() { const canvas = document.getElementById('snakeCanvas'); const ctx = canvas.getContext('2d'); let snake = [{x: 200, y: 200}]; let direction = {x: 0, y: 0}; let food = {x: 100, y: 100}; let score = 0; let gameRunning = false; let gameSpeed = 200; // Better base speed function updateScore() { document.getElementById('currentScore').textContent = score; // Check for high score const currentHighScore = parseInt(localStorage.getItem('snakeHighScore')) || 0; if (score > currentHighScore) { localStorage.setItem('snakeHighScore', score); document.getElementById('highScore').textContent = score; document.getElementById('highScore').style.color = '#ff0000'; document.getElementById('highScore').style.fontWeight = 'bold'; } } function gameOver() { gameRunning = false; updateScore(); // Update global leaderboard if score > 0 if (score > 0) { updateGlobalLeaderboard('Robert Blakely', score); } const highScore = localStorage.getItem('snakeHighScore') || 0; const message = score >= highScore && score > 0 ? `🎉 NEW HIGH SCORE! ${score} points!` : `Game Over! Score: ${score}`; alert(message); } function gameLoop() { if (!gameRunning) return; const head = {x: snake[0].x + direction.x, y: snake[0].y + direction.y}; // Check wall collision if (head.x < 0 || head.x >= 400 || head.y < 0 || head.y >= 400) { gameOver(); return; } // Check self collision for (let segment of snake) { if (head.x === segment.x && head.y === segment.y) { gameOver(); return; } } snake.unshift(head); // Check food collision if (head.x === food.x && head.y === food.y) { score++; updateScore(); // Generate new food position do { food = { x: Math.floor(Math.random() * 20) * 20, y: Math.floor(Math.random() * 20) * 20 }; } while (snake.some(segment => segment.x === food.x && segment.y === food.y)); // Slight speed increase every 5 points if (score % 5 === 0 && gameSpeed > 100) { gameSpeed = Math.max(100, gameSpeed - 10); } } else { snake.pop(); } // Draw game ctx.fillStyle = '#f0f0f0'; ctx.fillRect(0, 0, 400, 400); // Draw snake ctx.fillStyle = '#28a745'; snake.forEach((segment, index) => { ctx.fillRect(segment.x, segment.y, 20, 20); ctx.strokeStyle = index === 0 ? '#000' : '#155724'; // Head darker ctx.lineWidth = index === 0 ? 2 : 1; ctx.strokeRect(segment.x, segment.y, 20, 20); }); // Draw food ctx.fillStyle = '#dc3545'; ctx.fillRect(food.x, food.y, 20, 20); ctx.strokeStyle = '#000'; ctx.lineWidth = 2; ctx.strokeRect(food.x, food.y, 20, 20); setTimeout(gameLoop, gameSpeed); } window.startSnake = function() { if (!gameRunning) { gameRunning = true; gameLoop(); } }; window.resetSnake = function() { gameRunning = false; snake = [{x: 200, y: 200}]; direction = {x: 0, y: 0}; food = {x: 100, y: 100}; score = 0; gameSpeed = 200; updateScore(); // Redraw initial state ctx.fillStyle = '#f0f0f0'; ctx.fillRect(0, 0, 400, 400); ctx.fillStyle = '#28a745'; ctx.fillRect(200, 200, 20, 20); ctx.strokeStyle = '#000'; ctx.lineWidth = 2; ctx.strokeRect(200, 200, 20, 20); ctx.fillStyle = '#dc3545'; ctx.fillRect(100, 100, 20, 20); ctx.strokeStyle = '#000'; ctx.strokeRect(100, 100, 20, 20); }; // Initial draw window.resetSnake(); document.addEventListener('keydown', (e) => { if (!gameRunning) return; switch(e.key) { case 'ArrowUp': if (direction.y !== 20) direction = {x: 0, y: -20}; break; case 'ArrowDown': if (direction.y !== -20) direction = {x: 0, y: 20}; break; case 'ArrowLeft': if (direction.x !== 20) direction = {x: -20, y: 0}; break; case 'ArrowRight': if (direction.x !== -20) direction = {x: 20, y: 0}; break; } }); } const style = document.createElement('style'); style.textContent = '@keyframes blink { 0%, 50% { opacity: 1; } 51%, 100% { opacity: 0.3; } }'; document.head.appendChild(style); updateTimerDisplay(); // Proper logout function function logout() { // Clear all session data localStorage.clear(); sessionStorage.clear(); // Clear any cookies document.cookie.split(";").forEach(function(c) { document.cookie = c.replace(/^ +/, "").replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";path=/"); }); // Redirect to login page window.location.href = 'login.html'; }