<!doctype html>
<html lang="en">
<head>
<!-- Google Optimize anti-flicker snippet -->
<style>.async-hide { opacity: 0 !important} </style>
<script>(function(a,s,y,n,c,h,i,d,e){s.className+=' '+y;h.start=1*new Date;
h.end=i=function(){s.className=s.className.replace(RegExp(' ?'+y),'')};
(a[n]=a[n]||[]).hide=h;setTimeout(function(){i();h.end=null},c);h.timeout=c;
})(window,document.documentElement,'async-hide','dataLayer',4000, {'GTM-MBKX72F':true});
</script>
<!-- End Google Optimize anti-flicker snippet -->
<!-- Google Tag Manager -->
<script>
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','GTM-MBKX72F');
</script>
<!-- End Google Tag Manager -->
<link rel="canonical" href="https://www.poptropica.com/">
<meta charset="UTF-8">
<title>Poptropica</title>
<meta name="description" content="Poptropica, a virtual world for kids to travel, play games, compete in head-to-head competition, and communicate safely. Kids can also read books, comics, and see movie clips while they play.">
<meta name="viewport" content="width=device-width, maximum-scale=1.0" />
<meta name="apple-itunes-app" content="app-id=818709874">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" media="screen" href="https://static.poptropica.com/re_css/pop-main.css" />
<link rel="stylesheet" type="text/css" media="screen" href="https://static.poptropica.com/re_css/common-header-footer.css" />
<style>
#main-play-now-button button:active { background-color:#FADB58 }
.mobile-only { display: none; }
</style>
<link rel="stylesheet" href="https://static.poptropica.com/css/modal-login.css">
<link rel="stylesheet" href="https://static.poptropica.com/css/modal-parent-email.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"
integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<!-- JS -->
<script src="https://static.poptropica.com/js/brainEventTracker.js" type="text/javascript"></script>
<!-- Google Code for Poptropica Mainstreet Pageviews Conversion Page -->
<script type="text/javascript">
/* <![CDATA[ */
var google_conversion_id = 1071789230;
var google_conversion_language = "en";
var google_conversion_format = "3";
var google_conversion_color = "ffffff";
var google_conversion_label = "EU3qCM6mg2UQrumI_wM";
var google_remarketing_only = false;
/* ]]> */
</script>
<script>
brainEventTracker.addEvent({
event: 'Pageview', campaign: 'IndexPage', cluster: 'Home', scene: 'Home', choice: 'IndexPage', subchoice: 'PlayHaxe'
});
window.disableCarousel = true; // set to false to load Index Page Carousel campaign
brainEventTracker.logCloseEvent({
event: 'Pageclose', campaign: 'IndexPage', cluster: 'Home', scene: 'Home'
});
</script>
<!-- Playwire bottom rail -->
<script>
var tyche = { mode: 'tyche', config: '//config.playwire.com/1022050/v2/websites/70618/banner.json', forcePath: 'large-screen'};
var pws = document.createElement("script");
pws.setAttribute("id", "tyche");
pws.setAttribute("type", "text/javascript");
pws.setAttribute("src", "//cdn.intergi.com/hera/tyche.js");
document.getElementsByTagName('head')[0].appendChild(pws);
</script>
</head>
<body>
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-MBKX72F" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
<div id="wrapper" style="z-index:1; position: relative;">
<div id="hero">
<script>
function track_click(action, label) {
if (window.GATrackEvent !== undefined) GATrackEvent('POPHome', action, label);
brainEventTracker.addEvent({
event: action, campaign: "IndexPage", cluster: 'Home', scene: 'Home', choice: label
});
return true;
}
/**
* Reduce lost clicks by using this function in onclick attributes.
* It delays the change in page until after the brain event is sent.
*
* @param element - pass "this" here
* @param action - name of event (string)
* @param label - choice (string)
* @param more - object with additional attributes for the brain event
*
* @returns {boolean}
*/
function trackClick(element, action, label, more) {
if (window.GATrackEvent !== undefined) {
GATrackEvent('POPHome', action, label);
}
let event = { event: action, scene: 'Home', choice: label };
for (let key in more) {
if (more.hasOwnProperty(key)) {
event[key] = more[key];
}
}
let obj = brainEventTracker.addEvent(event);
let dest = element.getAttribute('href');
let http = obj.http;
let act = function(e) {
if (http.readyState === http.DONE) {
window.location = dest;
}
};
http.onreadystatechange = act; // complete the click when the brain event is done
act(); // in case the brain event completed before we got here
return false; // suppress default behavior
}
function login_link() {
/**
* If this page has loaded modal login support, use it.
* Otherwise just follow the link.
*/
if (typeof modalLoginDisplay === 'function') {
track_click('LoginPopup', 'Login');
modalLoginDisplay('block');
return false;
} else {
track_click('ClickToGame', 'Login');
return true;
}
}
</script>
<div class="topnav container-fluid" style="z-index:200;" id="myTopnav">
<a href="/">
<img src="/images/logo-1.png" alt="poptropica logo" class="logo">
</a>
<div class="menu-cont">
<a href="/" class="active" onclick="track_click('ClickNavTop', 'Home');">Home</a>
<a href="/about/parent-overview.html" onclick="track_click('ClickNavTop', 'Parents');">Parents</a>
<a href="/store/buy-membership.html" onclick="track_click('ClickNavTop', 'Membership');">Membership</a>
<a href="/about/help.html" onclick="track_click('ClickNavTop', 'Help');">Help</a>
<a href="http://blog.poptropica.com/?utm_source=POPBlog_text_HomeNavTop-pop&utm_medium=text&utm_campaign=POPBlog" onclick="track_click('ClickNavTop', 'Blog');">Blog</a>
<a href="/island-tour/" onclick="track_click('ClickNavTop', 'Island Tours');">Island Tours</a>
<a href="/haxe/play/" onclick="return login_link();" class="login">LOG IN</a>
</div>
<a href="javascript:void(0);" class="icon" onclick="expandCollapseMenu()">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
</div>
</div>
</div>
<div style="position:relative;width:100%;">
<div style="position:absolute; top:80px; width:880px; height:446px; left:50%; margin-left:-440px; z-index:3;">
<!-- character picker goes inside this div (lose placeholder) -->
<link rel="stylesheet" type="text/css" href="https://static.poptropica.com/css/quickPick.css">
<script type="text/javascript" id="quickpick">
var names = ["Old School", "Cool Slice", "Girl Power", "Fast Ride", "Love Star", "Wild Fire", "Pink Crush", "Got Game"];
var middle = 1;
var $npcName = "";
jQuery(document).ready(function () {
var pannel = document.getElementById("pannel");
var width = pannel.clientWidth;
var height = pannel.clientHeight;
var paddingLeft = 65;
var MAX = 4;
var lastDirection = 1;
var spacing = 270;
var offset = 0;
var chars = [];
var animating = false;
var totalChars = names.length;
SetupNpcs();
SetupButtons();
SetupAnimations();
function SetupAnimations() {
var banner = document.getElementById("banner");
jQuery(banner).css('top', -height + 'px');
jQuery(banner).css('left', (width / 2) - banner.clientWidth / 2 + 'px');
LoopBannerAnimation(banner);
track_click('SplitFlowAvatarStepStarted', 'HTML');
}
function LoopBannerAnimation(banner) {
jQuery(banner).animate({'top': -height + 25 + 'px'}, 2000, function () {
jQuery(banner).animate({'top': -height + 'px'}, 2000, function () {
LoopBannerAnimation(banner);
});
});
}
function SetupNpcs() {
offset = Math.floor(Math.random() * totalChars);
middle += offset;
if (middle > totalChars - 1) {
middle -= totalChars;
}
for (var i = 0; i < MAX; i++) {
$npc = $('<div class="npc"/>');
$npc.appendTo(pannel);
var index = offset + i;
if (index >= totalChars) {
index -= totalChars;
}
PositionChar($npc, i, index);
}
$npcName = names[middle];
}
function PositionChar(npc, i, index) {
chars.push(npc);
var nextNpc = names[index].replace(/\s/g,'');
var posx = (i * spacing) + paddingLeft;
var posy = (.5 * (height - npc.height())).toFixed();
jQuery(npc).css('left', posx + 'px');
jQuery(npc).css('top', posy + 'px');
jQuery(npc).css('background-image', 'url(quickPick/' + nextNpc + '.png)');
jQuery(npc).click(function () {
var npcIndex = chars.indexOf(npc);
var centerIndex = ((MAX - 1) - lastDirection) / 2;
if (npcIndex > centerIndex) {
Scroll(-1);
} else if (npcIndex < centerIndex) {
Scroll(1);
} else {
Play();
}
});
}
function SetupButtons() {
$btn = $('<div class="leftArrow"/>');
$btn.appendTo(pannel);
CreateButton($btn, -1);
$btn = $('<div class="rightArrow"/>');
$btn.appendTo(pannel);
CreateButton($btn, 1);
$btn = document.getElementById("play");
jQuery($btn).css('left', (width / 2) - ($btn.clientWidth / 2) + 'px');
jQuery($btn).css('top', '0px');
}
function CreateButton(btn, direction) {
var percent = direction == 0 ? 0 : .5;
var posy = (percent * (height - btn.height())).toFixed();
jQuery(btn).css('top', posy + 'px');
if (direction == 1) {
jQuery(btn).css('left', width - btn.width() - 10 + 'px');
} else {
jQuery(btn).css('left', 10 + 'px');
}
jQuery(btn).click(function () {
Scroll(direction);
});
}
function Scroll(direction) {
if (!animating) {
// prevent spam clicking
animating = true;
//if the offscreen extra is to the left the second visible in the array is 2
//while if the offscreen extra is to the right, the second visible in the array would be 1
middle = direction == 1 ? 1 : 2;
// based off last direction because it indicates the char that would have gone off screen last
var endChar = lastDirection == -1 ? chars.shift() : chars.pop();
//was skipping chars when changing directions so only do this when going in the same direction multiple times
if (lastDirection == direction) {
offset -= direction;
if (offset >= totalChars) {
offset = 0;
} else if (offset < 0) {
offset = totalChars - 1;
}
}
lastDirection = direction;
if (direction == -1) {
chars.push(endChar);
} else {
chars.unshift(endChar);
}
//set position off screen -1 left off screen or 3 to the right off screen
var x = direction == 1 ? paddingLeft - spacing : paddingLeft + spacing * 3;
jQuery(endChar).css('left', x + 'px');
// the new "0" or the next last in the array
var next = direction == 1 ? offset : offset + MAX - 1;
if (next >= totalChars) {
next -= totalChars;
} else if (next < 0) {
next += totalChars;
}
var nextName = names[next].replace(/\s/g,'');
//swap out visual
jQuery(endChar).css('background-image', 'url(quickPick/' + nextName + '.png)');
//slide all the npcs in the direction by the fixed spacing amount from their last positions
for (var i = 0; i < chars.length; i++) {
//not sure what the top layer is, but the second layer is the actual html for the char
var npc = chars[i][0];
x = npc.offsetLeft;
jQuery(npc).animate({'left': x + direction * spacing + 'px'}, 500, function () {
//allow the animation to happen again
animating = false;
});
}
middle += offset;
if (middle > totalChars - 1) {
middle -= totalChars;
}
$npcName = names[middle];
}
}
});
function Play() {
$npcName = names[middle];
var nameInUrl = $npcName.replace(/\s/g,'');
console.log("play as: " + $npcName);
// get reference to play button in order to set href attribute and pass to trackClick()
var playButton = document.getElementById("play");
playButton.classList.add("playClicked");
//return; // to test out animations
// set href to include query string with npc name
var playURL = "/brain/track.php?campaign=ABTest_RealMVP&event=ABTest_chosen&choice=primary&r=%2Fhaxe%2Fplay%2F";
/**
* ABTest returns a /brain/track.php event for A/B tracking, with a redirect parameter containing the real URL.
* Adding the npc name to the embedded URL requires finesse.
* This works whether there's an A/B test or not.
*/
playURL = brainEventTracker.setRedirectSearchParam(playURL, 'npc_name', nameInUrl);
playButton.setAttribute("href", playURL);
// trackClick will send a tracking call, then visit the button's href when the brain event is done
trackClick(playButton, 'ClickToGame', 'PlayHaxe', {
campaign: 'IndexPage',
scene: 'QuickPick',
cluster: 'Home',
subchoice: $npcName
});
}
</script>
<div class="pannel" id="pannel">
<div class="burst" id="burst"></div>
<div class="shadow" id="shadow"></div>
</div>
<div class="banner" id="banner"></div>
<div class="playButton" id="play" onclick="return Play();"></div>
</div>
<ul style="padding: 0;margin: -10px 0 0 0;" class="bxslider"><img src="https://static.poptropica.com/images/picker_page/banner.jpg" alt="banner-img" width="100%" height="660"></ul>
<div id="modal-login-div" style="z-index:100">
<a class="modal-login-close" id="modal-login-close">X</a>
<form id="modal-login-form" method='https://www.poptropica.com/lloo'>
<input type="text" class="modal-login-item" placeholder="USERNAME" name="login" id="modal-login-input-login">
<input type="password" class="modal-login-item" placeholder="PASSWORD" name="password">
<br/>
<button id="modal-login-button" class="pop-btn-default modal-login-item">LOGIN</button>
<div id="modal-login-message" class="modal-login-item"></div>
<div id=modal-login-new-player-msg class="modal-login-item">
DON'T HAVE AN ACCOUNT?<br/>
<a href="javascript:closeModal()">START AS A NEW PLAYER</a>
</div>
</form>
</div>
<!-- Polyfill for fetch(), for older browsers -->
<script src="https://static.poptropica.com/js/fetch.umd.js"></script>
<script>
let trackPopupClick = function (action, label, login) {
if (window.GATrackEvent !== undefined) GATrackEvent('POPHome', action, label);
let event_object = {
event: action, campaign: 'IndexPage', cluster: 'Home', scene: 'LoginPopup', choice: label
};
if (typeof login === "string") {
event_object.login = login;
}
return brainEventTracker.addEvent(event_object);
};
function modalLoginDisplay(state) {
let div = document.getElementById('modal-login-div');
div.style.display = state;
trackPopupClick(state === 'none'? 'LoginPopupDismissed' : 'LoginPopupDisplayed', state);
}
document.getElementById('modal-login-close').addEventListener('click', function () { modalLoginDisplay('none'); });
function closeModal() {
modalLoginDisplay('none');
}
let modalLoginForm = document.getElementById('modal-login-form');
modalLoginForm.addEventListener('submit', function(e) { e.preventDefault(); });
<!-- legacy logins have spaces and all special characters in them. We draw the line at non-ASCII. -->
document.getElementById("modal-login-input-login").onkeypress = function(e) {
var chr = e.key; // pattern="[\x20-\x7E]+"
if (chr.match(/[^\x20-\x7E]/)) {
return false;
}
};
function submitLoginForm() {
modalLoginForm.submit();
}
// attach listener to button
document.getElementById("modal-login-button").addEventListener("click", function() {
trackPopupClick('LoginClicked');
let data = new FormData(modalLoginForm);
// Error detection
let login = data.get('login');
let password = data.get('password');
let message = document.getElementById("modal-login-message");
if (login === "") {
message.innerHTML = 'Please enter your Poptropica username.';
trackPopupClick('LoginError', 'BlankUsername');
return;
}
if (password === "") {
message.innerHTML = 'Please enter your Poptropica password.';
trackPopupClick('LoginError', 'BlankPassword');
return;
}
// Post to validate-player.php to validate credentials and get gameType
postData('/validate-player.php', data).then(
function (data) {
if (data.answer === 'wrongpass') {
trackPopupClick('LoginError', 'InvalidPassword');
alert('OOPS! Incorrect password.');
console.log("parent email: " + data.has_parent_email);
if (data.has_parent_email !== 'Verified') {
message.innerHTML = 'Incorrect password. Please try again.';
trackPopupClick('ForgotPassword', 'Email' + data.has_parent_email);
return;
}
message.innerHTML = '<button class="pop-btn-default modal-login-item" id=modal-login-forgot-password>Forgot Password?</button>';
let forgot_button = document.getElementById('modal-login-forgot-password');
forgot_button.addEventListener('click', function (e) {
e.preventDefault();
trackPopupClick('ForgotPassword', 'AskEmail');
let ok = confirm('Send an email with instructions to reset your password to the parent address for your account?');
if (ok) {
let recover = new FormData;
recover.append('action', 'resetPasswordRequest');
recover.append('login', login);
recover.append('dbid', data.dbid);
recover.append('use_json', '1');
trackPopupClick('ForgotPassword', 'AttemptEmail');
postData('/store/password_recovery.php', recover).then(
function (data) {
if (data.answer === 'ok') {
trackPopupClick('ForgotPassword', 'SentEmail');
alert('An email has been sent to your parent with instructions to reset your password.');
} else {
trackPopupClick('ForgotPassword', 'Error ' + data.answer);
alert('Something went wrong! Email not sent. Error: ' + data.answer);
}
}
);
}
});
} else if (data.message) {
message.innerHTML = data.message;
if (data.answer === 'nologin') {
data.answer = 'InvalidUsername';
}
trackPopupClick('LoginError', data.answer);
} else {
message.innerHTML = '';
let url = '';
if (data.gameType === 'Flash' || data.gameType === '') {
url = "\/game\/";
} else if (data.gameType === 'Haxe') {
url = "\/haxe\/play\/";
} else if (data.gameType === 'MVP') {
url = "\/haxe\/play\/";
}
if (url) {
modalLoginForm.setAttribute('action', url);
trackPopupClick('SuccessfulLogin', data.gameType, login);
} else {
message.innerHTML = '<span class=error>We cannot log you in. Your account is damaged. gameType=' + escapeHTML(data.gameType) + '</span>';
}
if (data.has_parent_email !== 'Verified') {
//message.innerHTML = 'Incorrect password. Please try again.';
//trackPopupClick('ForgotPassword', 'Email' + data.has_parent_email);
if(Math.random() < .25) {// change to desired rate
setLoginData(login, data.pass_hash, data.dbid);
modalParentEmailDisplay('block');
closeModal();
return;
}
}
modalLoginForm.submit();
}
},
function (err) { alert(err); }
);
function escapeHtml(s) {
return (s + '').replace(/[&<>"']/g, function (m) {
return ({
'&': '&', '<': '<', '>': '>',
'"': '"', "'": '''
})[m];
});
}
});
// POST using fetch, expecting FormData input and JSON from server
function postData(url = '', data = {}) {
var response = fetch(url, {
method: 'POST',
mode: 'cors', // no-cors, *cors, same-origin
cache: 'no-cache',
credentials: 'same-origin', // allow cookies to be sent, like for xpop access
redirect: 'follow', // manual, *follow, error
// referrerPolicy: 'same-origin', // referrerPolicy attribute not supported on Edge < 79
body: data
}).then(
(response) => {
if (!response.ok) {
trackPopupClick('ServerError', response.status);
alert('Server problem (responded with ' + response.status + ' ' + response.statusText + ')');
return null;
} else {
return response.json();
}
},
(problem) => {
trackPopupClick('ServerError', problem.message);
alert('Cannot contact server: ' + problem.message);
return null;
}
);
return response;
}
</script><div id="modal-parent-email-div" style="z-index:100">
<a class="modal-parent-email-close" id="modal-parent-email-close">X</a>
<form id="modal-parent-email-form" method="post">
<div id="modal-parent-email-message" class="modal-login-item">Do you wish to set your parent's email in case you forget your password?</div>
<br/>
<input type="text" class="modal-login-item" placeholder="PARENT EMAIL" name="email" id="modal-parent-email-input-email">
<br/>
<button id="modal-parent-email-button" class="pop-btn-default modal-login-item">Set Email</button>
</form>
</div>
<!-- Polyfill for fetch(), for older browsers -->
<script src="https://static.poptropica.com/js/fetch.umd.js"></script>
<script>
let trackEmailPopupClick = function (action, label, email) {
if (window.GATrackEvent !== undefined) GATrackEvent('POPHome', action, label);
let event_object = {
event: action, campaign: 'IndexPage', cluster: 'Home', scene: 'ParentEmailPopup', choice: label
};
if (typeof email === "string") {
event_object.email = email;
}
return brainEventTracker.addEvent(event_object);
};
function modalParentEmailDisplay(state) {
let div = document.getElementById('modal-parent-email-div');
div.style.display = state;
trackEmailPopupClick(state === 'none'? 'EmailPopupDismissed' : 'EmailPopupDisplayed', state);
if(state === 'none') {
submitLoginForm();
}
}
document.getElementById('modal-parent-email-close').addEventListener('click', function () { modalParentEmailDisplay('none'); });
var login;
var pass_hash;
var dbid;
function setLoginData(uname,pass,db) {
login = uname;
pass_hash = pass;
dbid = db;
}
let modalEmailForm = document.getElementById('modal-parent-email-form');
modalEmailForm.addEventListener('submit', function(e) { e.preventDefault(); });
<!-- legacy logins have spaces and all special characters in them. We draw the line at non-ASCII. -->
document.getElementById("modal-parent-email-input-email").onkeypress = function(e) {
var chr = e.key; // pattern="[\x20-\x7E]+"
if (chr.match(/[^\x20-\x7E]/)) {
return false;
}
};
// attach listener to button
document.getElementById("modal-parent-email-button").addEventListener("click", function() {
trackEmailPopupClick('LoginClicked');
let data = new FormData(modalEmailForm);
// Error detection
let email = data.get('email');
let message = document.getElementById("modal-parent-email-message");
if (email === "") {
message.innerHTML = 'Please enter your parents email.';
trackEmailPopupClick('ParentEmailError', 'BlankUsername');
return;
}
// Post to validate-player.php to validate credentials and get gameType
let recover = new FormData;
recover.append('login', login);
recover.append('pass_hash', pass_hash);
recover.append('dbid', dbid);
recover.append('parent_email', email);
recover.append('action', 'insertParentEmail');
recover.append('use_json', '1');
trackEmailPopupClick('ParentEmailPopup', 'AttemptEmail');
postData('/store/password_recovery.php', recover).then(
function (data) {
if (data.answer === 'ok') {
trackEmailPopupClick('ParentEmailPopup', 'SentEmail');
alert('An email has been sent to your parent to confirm.');
} else {
trackEmailPopupClick('ParentEmailPopup', 'Error ' + data.answer);
alert('Something went wrong! Email not sent. Error: ' + data.answer);
}
submitLoginForm();
}
);
});
// POST using fetch, expecting FormData input and JSON from server
function postData(url = '', data = {}) {
var response = fetch(url, {
method: 'POST',
mode: 'cors', // no-cors, *cors, same-origin
cache: 'no-cache',
credentials: 'same-origin', // allow cookies to be sent, like for xpop access
redirect: 'follow', // manual, *follow, error
// referrerPolicy: 'same-origin', // referrerPolicy attribute not supported on Edge < 79
body: data
}).then(
(response) => {
if (!response.ok) {
trackEmailPopupClick('ServerError', response.status);
alert('Server problem (responded with ' + response.status + ' ' + response.statusText + ')');
return null;
} else {
return response.json();
}
},
(problem) => {
trackEmailPopupClick('ServerError', problem.message);
alert('Cannot contact server: ' + problem.message);
return null;
}
);
return response;
}
</script></div>
<section class="footer-section home-footer">
<div id="clouds" style="position:relative;top:-130px;z-index:10;width:100%;height:210px;">
<div style="position:absolute;width:210px;height:210px;display:block;"><img src="https://static.poptropica.com/images/picker_page/left_cloud.png" alt="left-cloud-image" width="210" height="210"></div>
<div style="position:absolute;left:auto;right:0px;width:210px;height:210px;display:block;"><img src="https://static.poptropica.com/images/picker_page/right_cloud.png" alt="right-cloud-image" width="210" height="210"></div>
</div>
<div class="container" style="position:relative;height:320px;top:-200px;text-align:center;">
<div class="explore-pop2">
<div class="text-center">
<h2>EXPLORE POPTROPICA!</h2>
<p>Join millions of players worldwide today!</p>
</div>
<div class="hidden-sm" style="position:relative;top:15px;left:50%;margin-left:-627px;width:1254px;height:320;display:block;">
<table width="1254" height="323" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="362"><h2>Connect with friends!</h2></td>
<td width="84"> </td>
<td width="362"><h2>Play epic adventures!</h2></td>
<td width="84"> </td>
<td width="362"><h2>Adopt your own pets!</h2></td>
</tr>
<tr>
<td><img src="https://static.poptropica.com/images/picker_page/friends.png" alt="friends-image" width="362" height="293"></td>
<td> </td>
<td><img src="https://static.poptropica.com/images/picker_page/adventures.png" alt="adventures-image" width="362" height="293"></td>
<td> </td>
<td><img src="https://static.poptropica.com/images/picker_page/pets.png" alt="pets-image" width="362" height="293"></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<footer>
<ul class="foot-list">
<li><a href="/about/parent-overview.html" target="_blank">Parents</a></li>
<li><a href="/store/buy-membership.html" target="_blank">Membership</a></li>
<li><a href="/about/help.html" target="_blank">Help</a></li>
<li><a href="/contact/contact-Poptropica.html" target="_blank">Contact Us</a></li>
<li><a href="/about/parent-overview.html" target="_blank">About Us</a></li>
<li><a href="/privacy/" target="_blank">Privacy</a></li>
<li><a href="/about/terms-of-use.html" target="_blank">Terms</a></li>
<li><a href="/privacy/ca-residents-do-not-sell.html">Do Not Sell My Info (for CA Residents)</a></li>
</ul>
</footer>
<script>
var globalHeader = document.getElementById("myTopnav");
if(globalHeader){
var originalClassName = globalHeader.className;
function expandCollapseMenu() {
var x = document.getElementById("myTopnav");
if(x.className.indexOf("responsive") < 0 ){
x.className = originalClassName + " responsive";
} else {
x.className = originalClassName;
}
}
}
</script>
<div class="copyright text-center">
<div class="copyright-container">
<span class="copyright" style="font-size:13px;">© 2007 - 2020 Sandbox Networks, Inc. All rights reserved.</span>
</div>
<div class="kdsf" style="margin-top:5px;"><a href="https://www.kidsafeseal.com/certifiedproducts/poptropica.html" target="_blank"><img border="0" alt="Poptropica.com is certified by the kidSAFE Seal Program." src="https://www.kidsafeseal.com/sealimage/9223372036854775807/poptropica_small_darktm.png"></a></div>
<span class="circle"></span>
</div>
</section>
<!-- Not sure what this is for, when we have mobile responsive home page.-->
<!-- Desktop HTML goes here -->
<!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://static.poptropica.com/js/jquery.bxslider.4.1.2.min.js"></script>
<script src="https://static.poptropica.com/js/jquery.magnific-popup.min.js"></script>
<script>window.FamilyEducationNetwork = window.FamilyEducationNetwork || {};
window.FamilyEducationNetwork.SiteData = window.FamilyEducationNetwork.SiteData || {};
window.FamilyEducationNetwork.SiteData.staticURLRoot = "https:\/\/static.poptropica.com";
</script>
<script src="https://static.poptropica.com/js/pop-homepage.js"></script>
<script>
let button = document.getElementById('main-play-now-button');
if (button) {
button.addEventListener('click', function(e) {
this.style.backgroundColor = '#FADB58';
this.style.borderBottomColor = '#E1B851';
});
}
</script>
<!-- Begin Google Analytics -->
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
</script>
<script type="text/javascript">
ga('create', 'UA-350786-6', 'auto');
var GAclientId = "1604082406.9497.74915477";
if ('unavailable' == GAclientId) {
GAclientId = null;
}
GATrackPageView("\/index.html");
function GATrackEvent(category, action, label_opt, value_opt, givenDimensions) {
//console.log("GATrackEventPHP cat " + category + " act " + action + " lbl " + label_opt + " val " + value_opt + " dim " + dimensions);
var dimensions = {
dimension1: null,//GAclientId,
dimension26:null,
dimension27:null,
dimension28:null,
dimension30:null
};
if (givenDimensions) {
dimensions.dimension26 = getProp(givenDimensions, 'age');
dimensions.dimension27 = getProp(givenDimensions, 'gender');
dimensions.dimension28 = getProp(givenDimensions, 'isMember');
dimensions.dimension30 = getProp(givenDimensions, 'testGroup');
}
if (value_opt == undefined || value_opt == "undefined" || value_opt == "null") {
return ga('send', 'event', category, action, label_opt, dimensions);
}
value_opt = Number(value_opt);
return ga('send', 'event', category, action, label_opt, value_opt, dimensions);
}
function GATrackPageView(url, givenDimensions) {
// since GlobalAS3Embassy is merely a 'helper' scene,
// we don't want to track a pageview for it
if (url) {
if (-1 < url.indexOf('GlobalAS3Embassy')) {
if (console.log) console.log("skipping GA for url " + url);
return; // url contains GlobalAS3Embassy, so bail
}
}
// if the player is logging in and going to pop_home.swf, suppress the pageview
// (the WelcomeBack view will send its own pageview
if (typeof POST_startup_path !== 'undefined') {
if ('home' == POST_startup_path) {
if ('/popups/WelcomeBack' != url) {
if (console.log) console.log("skipping GA when startup_path is 'home'");
return;
}
}
}
var dimensions = {
dimension1: null,//GAclientId,
dimension26:null,
dimension27:null,
dimension28:null,
dimension30:null
};
if (givenDimensions) {
dimensions.dimension26 = getProperty(givenDimensions, ['age', '&cd26']);
dimensions.dimension27 = getProperty(givenDimensions, ['gender', '&cd27']);
dimensions.dimension28 = getProperty(givenDimensions, ['isMember', '&cd28']);
dimensions.dimension30 = getProperty(givenDimensions, ['testGroup', '&cd30']);
}
if (console.log) console.log("tracking pageview for url " + url);
ga('send', 'pageview', url, dimensions);
}
function getProp(obj, prop) {
return (undefined == obj[prop]) ? null : obj[prop];
}
function getProperty(obj, names) {
for (i=0; i<names.length; i++) {
var propName = names[i];
if (obj.hasOwnProperty(propName)) {
return getProp(obj, propName);
}
}
return null;
}
</script>
<!-- End Google Analytics -->
<script src='https://static.poptropica.com/js/brainEventTracker.js'></script>
<script>
if (!brainEventTracker.hasCloseEvent()) {
brainEventTracker.logCloseEvent({event: 'Pageclose', campaign: 'SitePage', scene: "\/" })
}
</script>
</body>
</html>