234 lines
5.3 KiB
234 lines
5.3 KiB
var set = new NameGeneratorSet();
|
|
var categories = {};
|
|
var backgrounds = {};
|
|
var previous = null;
|
|
var generator = null;
|
|
var big = true;
|
|
var gender = null;
|
|
var format = null;
|
|
|
|
function selectGenerator(id) {
|
|
var gen = set.getGenerator(id);
|
|
|
|
var element = $('div.item:hover');
|
|
var index = element.index();
|
|
var parent = element.parent();
|
|
|
|
element.detach();
|
|
element = element.clone();
|
|
|
|
if(index > 0) {
|
|
element.insertAfter(parent.children().eq(index - 1));
|
|
} else {
|
|
parent.prepend(element);
|
|
}
|
|
|
|
if(gen != null) {
|
|
setGenerator(id, gen);
|
|
} else {
|
|
setMode(0);
|
|
|
|
$.get('/d/' + id, {}, function(data) {
|
|
var fullId = data.catId + '/' + data.id;
|
|
setGenerator(fullId, set.addGenerator(fullId, data, true));
|
|
});
|
|
}
|
|
}
|
|
|
|
function setMode(mode) {
|
|
$('#loading-screen').hide();
|
|
$('#generator-screen').hide();
|
|
|
|
switch(mode) {
|
|
case 0: $('#loading-screen').show(); break;
|
|
case 1: $('#generator-screen').show(); break;
|
|
}
|
|
}
|
|
|
|
function setGenerator(id, gen) {
|
|
setCookie('last_generator', id, 14);
|
|
$('#gi-header').html(gen.name);
|
|
|
|
$('#gi-genders').html('');
|
|
$('#gi-formats').html('');
|
|
|
|
if(gen.genders.length > 1) {
|
|
for(var i = 0; i < gen.genders.length; ++i) {
|
|
var className = '';
|
|
if(i == 0) {
|
|
className = "selected";
|
|
}
|
|
|
|
$('#gi-genders').append($('<a class="'+className+'" onclick="selectGender(this);">'+gen.genders[i]+'</a>'));
|
|
}
|
|
}
|
|
|
|
var prev = null;
|
|
var keys = Object.keys(gen.formats);
|
|
if(keys.length > 1) {
|
|
for(var i = 0; i < keys.length; ++i) {
|
|
var className = '';
|
|
if(i == 0) {
|
|
className = "selected";
|
|
}
|
|
|
|
$('#gi-formats').append($('<a class="'+className+'" onclick="selectFormat(this);" data-id="'+keys[i]+'">'+gen.formats[keys[i]].name+'</a>'));
|
|
}
|
|
}
|
|
|
|
setMode(1);
|
|
selectBackground(id);
|
|
|
|
gender = gen.genders[0];
|
|
format = keys[i];
|
|
generator = gen;
|
|
|
|
$('#gi-button').focus();
|
|
if(previous != id) {
|
|
generate();
|
|
}
|
|
previous = id;
|
|
}
|
|
|
|
function selectBackground(id) {
|
|
if(backgrounds.hasOwnProperty(id)) {
|
|
setBackground(backgrounds[id]);
|
|
} else {
|
|
$.get('/b/' + id, {}, function(data) {
|
|
backgrounds[id] = data;
|
|
setBackground(backgrounds[id]);
|
|
});
|
|
}
|
|
}
|
|
|
|
function setBackground(fileName) {
|
|
$('#generator-style').html('body { background-image: url(' + fileName + '); }');
|
|
}
|
|
|
|
function hideFooter() {
|
|
$('.ngn4-footer').hide();
|
|
setCookie('hide_footer', 'yes', 60);
|
|
}
|
|
|
|
function generate() {
|
|
if(generator != null) {
|
|
$('#gi-name').html(generator.generate(format, gender));
|
|
}
|
|
}
|
|
|
|
function updateLists() {
|
|
$('#menu-items').html("Loading...");
|
|
|
|
$.get('/l/generators', function(data, err) {
|
|
if(!err) {
|
|
setList(data);
|
|
}
|
|
});
|
|
}
|
|
|
|
function setList(data) {
|
|
// 1. Categories
|
|
var keys = Object.keys(data.categories);
|
|
var items = {};
|
|
$('#menu-items').html('');
|
|
for(var i = 0; i < keys.length; ++i) {
|
|
var key = keys[i];
|
|
var item = $('<div class="item" data-id="'+key+'"><span>'+data.categories[key]+'</span><div class="ngn4-panel"></div></div>');
|
|
|
|
items[key] = item;
|
|
$('#menu-items').append(item);
|
|
|
|
categories[key] = data.categories[key];
|
|
}
|
|
|
|
// 2. Sub menus
|
|
keys = Object.keys(data.generators);
|
|
for(var i = 0; i < keys.length; ++i) {
|
|
var key = keys[i];
|
|
var item = $('<a href="javascript:selectGenerator(\''+key+'\')">'+data.generators[key]+'</a>');
|
|
|
|
$('div', items[key.split('/')[0]]).append(item);
|
|
}
|
|
|
|
applyMediaQueries(true);
|
|
}
|
|
|
|
function applyMediaQueries(force) {
|
|
var mq = window.matchMedia("(max-width: 980px)");
|
|
|
|
if(typeof(force) !== 'boolean') {
|
|
force = false;
|
|
}
|
|
|
|
if (mq.matches && (!big || force)) {
|
|
$('#menu-items .item').each(function(index) {
|
|
$('span', this).html($(this).data('id').toUpperCase());
|
|
});
|
|
|
|
big = true;
|
|
}
|
|
|
|
if (!mq.matches && (big || force)) {
|
|
$('#menu-items .item').each(function(index) {
|
|
$('span', this).html(categories[$(this).data('id')]);
|
|
});
|
|
|
|
big = false;
|
|
}
|
|
}
|
|
|
|
function selectGender(elem) {
|
|
gender = $(elem).text();
|
|
|
|
$('#gi-genders a.selected').attr('class', '');
|
|
$(elem).attr('class', 'selected');
|
|
}
|
|
|
|
function selectFormat(elem) {
|
|
format = $(elem).data('id');
|
|
|
|
$('#gi-formats a.selected').attr('class', '');
|
|
$(elem).attr('class', 'selected');
|
|
}
|
|
|
|
$(document).ready(function() {
|
|
if(getCookie('hide_footer') === 'yes') {
|
|
$('.ngn4-footer').hide();
|
|
}
|
|
|
|
if(inited !== true) {
|
|
var lastGenerator = getCookie('last_generator');
|
|
if(lastGenerator.length > 0) {
|
|
selectGenerator(lastGenerator);
|
|
} else {
|
|
selectGenerator('default');
|
|
}
|
|
|
|
updateLists();
|
|
} else {
|
|
var fullId = initData.catId + '/' + initData.id;
|
|
setGenerator(fullId, set.addGenerator(fullId, initData, true));
|
|
|
|
setList(genList);
|
|
}
|
|
});
|
|
|
|
$(window).resize(applyMediaQueries);
|
|
|
|
// http://www.w3schools.com/js/js_cookies.asp
|
|
function getCookie(cname) {
|
|
var name = cname + "=";
|
|
var ca = document.cookie.split(';');
|
|
for(var i=0; i<ca.length; i++) {
|
|
var c = ca[i];
|
|
while (c.charAt(0)==' ') c = c.substring(1);
|
|
if (c.indexOf(name) == 0) return c.substring(name.length,c.length);
|
|
}
|
|
return "";
|
|
}
|
|
function setCookie(cname, cvalue, exdays) {
|
|
var d = new Date();
|
|
d.setTime(d.getTime() + (exdays*24*60*60*1000));
|
|
var expires = "expires="+d.toUTCString();
|
|
document.cookie = cname + "=" + cvalue + "; " + expires;
|
|
}
|