'use strict'; pandora.ui.home = function() { var self = {}, that = $('
') .addClass('OxScreen') .css({ backgroundColor: 'white', height: '100%', opacity: 0, overflowY: 'auto', position: 'absolute', width: '100%', zIndex: 1001 }), $box = $('
') .css({ left: 0, margin: '0 auto', position: 'absolute', right: 0, top: '32px', width: '800px' }) .appendTo(that), homeMenuCenterCSS = { height: 'auto', left: 0, margin: '0 auto', position: 'absolute', right: 0, top: '300px', width: '320px' }, homeMenuLeftCSS = { margin: '', right: '', left: '32px', position: 'absolute', top: '32px', width: '128px' }, $menu = $('
') .attr({ id: 'homeMenu' }) .css(homeMenuCenterCSS) .appendTo(that), $counter = $('
') .attr({ id: 'homeCounter' }) .css({ position: 'absolute', right: '32px', top: '32px', width: '128px' }) .appendTo(that), $logo = Ox.Element({ element: '' }) .addClass('selected') .attr({ id: 'homeLogo', src: '/static/png/logo.png' }) .css({ height: 'auto', left: 0, margin: '0 auto', position: 'absolute', right: 0, top: 0, width: '320px' }) .bind({ click: function() { if (!$logo.hasClass('selected')) { $logo.css({opacity: 1}); renderPage('home'); } }, mouseenter: function() { if (!$logo.hasClass('selected')) { $logo.css({opacity: 0.5}); } }, mouseleave: function() { if (!$logo.hasClass('selected')) { $logo.css({opacity: 1}); } } }) .appendTo($box), $title = Ox.Element({ element: '' }) .css({ display: 'none', height: '40px', left: 0, margin: '0 auto', position: 'absolute', right: 0, top: '280px' }) .appendTo($box), $text_es = $('
') .css({ display: 'none', fontFamily: 'Home Arabic', fontSize: '13px', lineHeight: '18px', marginRight: '8px', position: 'absolute', textAlign: 'right', top: '360px', width: '392px' }) .appendTo($box), $text_en = $('
') .css({ display: 'none', fontFamily: 'Home English', fontSize: '12px', left: '400px', lineHeight: '17px', marginLeft: '8px', position: 'absolute', top: '360px', width: '392px' }) .appendTo($box), $tutorials = $('
') .css({ display: 'none', left: '-128px', marginLeft: '8px', marginBottom: '32px', position: 'absolute', top: '392px', width: '1024px', height: '288px' }).appendTo($box), $enterButton = Ox.Element({ element: '' }) .attr({ src: '/static/png/enter.png' }) .css({ cursor: 'url(/static/png/cursor.png) 4 12, auto', height: '32px', left: 0, margin: '0 auto', position: 'absolute', right: 0, }) .bind({ click: function() { var page = pandora.user.ui.page == 'home' ? '' : pandora.user.ui.page; /* if (pandora.user.level == 'guest') { page = 'signup' } */ pandora.UI.set({ page: page, section: 'items' }); that.fadeOutScreen(); }, mouseenter: function() { $enterButton.css({opacity: 0.5}); }, mouseleave: function() { $enterButton.css({opacity: 1}); } }) .appendTo($menu), $aboutButton = Ox.Element({ element: '' }) .attr({ src: '/static/png/about.png' }) .css({ cursor: 'pointer', height: '32px', left: 0, margin: '0 auto', position: 'absolute', right: 0, top: '48px' }) .bind({ click: function() { renderPage('about'); }, mouseenter: function() { $aboutButton.css({opacity: 0.5}); }, mouseleave: function() { $aboutButton.css({opacity: 1}); } }) .appendTo($menu), $tutorialButton = Ox.Element({ element: '' }) .attr({ src: '/static/png/tutorial.png' }) .css({ cursor: 'pointer', height: '32px', left: 0, margin: '0 auto', position: 'absolute', right: 0, top: '84px' }) .bind({ click: function() { renderPage('tutorial'); }, mouseenter: function() { $tutorialButton.css({opacity: 0.5}); }, mouseleave: function() { $tutorialButton.css({opacity: 1}); } }) .appendTo($menu), $contactButton = Ox.Element({ element: '' }) .attr({ src: '/static/png/contact.png' }) .css({ cursor: 'pointer', height: '32px', left: 0, margin: '0 auto', position: 'absolute', right: 0, top: '120px' }) .bind({ click: function() { renderPage('contact'); }, mouseenter: function() { $contactButton.css({opacity: 0.5}); }, mouseleave: function() { $contactButton.css({opacity: 1}); } }) .appendTo($menu), $counterImage = Ox.Element({ element: '' }) .attr({ src: '/static/png/counter.png' }) .css({ height: '64px', position: 'absolute', right: 0, top: '40px' }) .appendTo($counter), text, loadedCSS = false; function getText(callback) { var text = {}; Ox.getAsync([ '/static/txt/about.ar.txt', '/static/txt/about.en.txt', '/static/txt/tutorial.ar.txt', '/static/txt/tutorial.en.txt', '/static/txt/contact.ar.txt', '/static/txt/contact.en.txt' ], Ox.get, function(data) { Object.keys(data).forEach(function(key) { text[key.slice(12, -4)] = data[key].replace(/\n/g, '
') + '


'; }) pandora.api.find({}, function(result) { var seconds = result.data.duration | (858 * 3600) text.hours = Math.round(seconds / 3600).toString(); callback(text); }); }); } function renderCounter() { Ox.forEach(text.hours, function(value, index) { Ox.Element() .css({ border: '2px solid black', fontFamily: 'Home English', fontSize: '32px', fontWeight: 'bold', height: '43px', paddingTop: '5px', position: 'absolute', right: 24 + (text.hours.length - index) * 22 + 'px', width: '20px' }) .html(value) .appendTo($counter); }); } function renderPage(page) { if (page == 'home') { $logo.addClass('selected').css({cursor: 'default'}); $title.css({display: 'none'}); $text_es.css({display: 'none'}); $text_en.css({display: 'none'}); $tutorials.html('').hide(); $menu.css(homeMenuCenterCSS); } else { $menu.css(homeMenuLeftCSS); $logo.removeClass('selected').css({cursor: 'pointer'}); $title.attr({ src: '/static/png/' + page + '.png' }) .css({ display: 'block' }); $text_es.css({ display: 'block' }).html( text[page + '.es'] ); $text_en.css({ display: 'block' }).html( text[page + '.en'] ); if (page == 'contact') { Ox.forEach( document.querySelectorAll('a[href="/contact"]'), function(link) { link.addEventListener('click', function(e) { pandora.UI.set({page: 'contact'}); that.fadeOutScreen(); e.preventDefault(); return false; }) } ); } } } function loadCSS(callback) { if (loadedCSS) { callback() } else { Ox.getFile('/static/css/home.css', function() { loadedCSS = true callback() }) } } that.fadeInScreen = function() { loadCSS(function() { that.appendTo(Ox.$body).animate({opacity: 1}, 500, function() { getText(function(data) { text = data; renderCounter(); that.find('*').animate({opacity: 1}, 250, function() { // ... }); }); }); }); return that; }; that.fadeOutScreen = function() { $('.OxTooltip').remove(); that.animate({opacity: 0}, 500, function() { that.remove(); }); pandora.$ui.tv && pandora.$ui.tv.unmute().find('.OxControls.OxVolume').hide(); self.keydown && Ox.$document.off({keydown: self.keydown}); return that; }; that.showScreen = function(callback) { var $elements = that.find('*'), count = 0; $box.css({top: '80px'}); $menu.css({top: '80px'}); $counter.css({top: '80px'}); getText(function(data) { text = data; renderCounter(); loadCSS(function() { that.css({opacity: 1}).appendTo(Ox.$body); $box.animate({top: '32px'}, 500, function() { $elements.animate({opacity: 1}, 250, function() { if (++count == $elements.length) { // ... // callback && callback(); } }); }); //$menu.animate({top: '32px'}, 500); $menu.animate({top: homeMenuCenterCSS.top}, 500); $counter.animate({top: '32px'}, 500); callback && callback(); }); }); return that; }; return that; };