var timestamp;
function getLocation() {
navigator.geolocation.getCurrentPosition(function(position){
setCoords(position);
}, function () {
setCoords({coords: { latitude: latitude, longitude: longitude }});
});
}
function getAirportLocation() {
$.getJSON( "https://raw.githubusercontent.com/mwgg/Airports/master/airports.json", function( data ) {
$('#iata input').addClass('loading');
var iatacode = $('#iata input').val();
Defiant.getSnapshot(data, function(snapshot) {
var found = JSON.search(snapshot, '//*[iata="'+iatacode.toUpperCase()+'"]');
/*
var minlat = Math.floor($('#lat').val()) - 2;
var maxlat = Math.ceil($('#lat').val()) + 2;
var minlon = Math.floor($('#lon').val()) - 2;
var maxlon = Math.ceil($('#lon').val()) + 2;
var foundlat = JSON.search(snapshot, '//*[lat<'+maxlat+' and lat>'+minlat+']');
var found = JSON.search(foundlat, '//*[lon<'+maxlon+' and lon>'+minlon+']');
var distances = [];
for (index = 0; index < found.length; ++index) {
distances.push(getDistance($('#lat').val(), $('#lon').val(), found[index].lat, found[index].lon));
}
var idx = distances.indexOf(Math.min.apply(Math,distances));
var airport = found[idx];
*/
var airport = found[0];
$.getJSON( "https://raw.githubusercontent.com/dmfilipenko/timezones.json/master/timezones.json", function( zones ) {
var off = JSON.search( zones, '//*[utc="'+airport.tz+'"]');
$('#lat').val(airport.lat);
$('#lon').val(airport.lon);
$('#offset').val(off[0].offset);
$('#iata-info').text(airport.name+', '+airport.city+', '+airport.country+' (Timezone: '+airport.tz+')');
$('#iata input').removeClass('loading');
});
});
});
}
function setCoords(location) {
$('#lat').val(location.coords.latitude);
$('#lon').val(location.coords.longitude);
var now = new Date()
var off = now.getTimezoneOffset();
$('#offset').val(off/60*-1);
}
function generate() {
$('#grid').empty();
var data = generateJSON((Math.floor($('#lat').val())+'-'+Math.floor($('#lon').val())), new moment().unix(), $('#offset').val(), ($('#days').val()-1), $('#lat').val(), $('#lon').val());
var j = 0;
function makePHour(j) {
if ( j == data.planetaryhours.length-1 ) {
clearTimeout(everyday);
NProgress.done();
var now = moment().subtract($('#offset').val(), 'h').unix();
$('.planetaryhour').each( function( idx, element ) {
if ( $(element).attr('ts') < now && now < $(element).next().attr('ts') ) {
$(element).addClass('now');
}
});
return;
}
var m = data.planetaryhours[j];
var localTime = new moment.unix(m.ts).add($('#offset').val(), 'h');
var zodiac = getZodiac(m.solar.lng);
var moonsign = getZodiac(m.lunar.lng);
var mansion = getLunarMansion(m.lunar.lng);
var hygromanteia = getActions(matrix.planetary.day[m.planetary.day].hour[m.planetary.hour.number].for, action, 'hygromanteia');
var lunarday = getActions(matrix.lunar.day[m.lunar.day.day], action, 'lunarday');
var lunarsign = getActions(matrix.lunar.sign[zodiac.sign].for, action, 'lunarsign');
var lunarmansion = getActions(matrix.lunar.mansion[mansion], action, 'lunarmansion');
var claviculaday = getActions(matrix.clavicula[m.planetary.day+1], action, 'clavicula');
var claviculahour = getActions(matrix.clavicula[matrix.planetary.day[m.planetary.day].hour[m.planetary.hour.number].planet], action, 'clavicula');
var clavicula = [claviculaday.actions.string, claviculahour.actions.string];
$('
').loadTemplate($("#tpl-planetaryhour"), {
ruler : def.planet.symbol[m.planetary.day+1],
date : new moment.unix(m.ts).format('D/M'),
lunarday : '☾'+m.lunar.day.day+'☽',
hourstart : new moment.unix(m.planetary.hour.begin).add($('#offset').val(), 'h').format('HH:mm'),
hournumber : (m.planetary.hour.number+1)+' '+def.planet.symbol[matrix.planetary.day[m.planetary.day].hour[m.planetary.hour.number].planet],
hourend : new moment.unix(m.planetary.hour.end).add($('#offset').val(), 'h').format('HH:mm'),
moonsign : def.zodiac.symbol[moonsign.sign],
moonphase : def.moon.phase.symbol[m.lunar.phase.simple]+' '+m.lunar.phase.illumination+'%',
moonmansion : '|'+mansion+'|'
})
.addClass(hygromanteia.actions.string)
.addClass($.unique(clavicula.join(" ").split(' ')).join(" "))
.addClass(lunarday.actions.string)
.addClass(lunarsign.actions.string)
.addClass(lunarmansion.actions.string)
.addClass(addPlanetClasses(m.solar.lng, 'sun'))
.addClass(addPlanetClasses(m.lunar.lng, 'moon'))
.addClass(addPlanetClasses(m.planet.mars.lng, 'mars'))
.addClass(addPlanetClasses(m.planet.mercury.lng, 'mercury'))
.addClass(addPlanetClasses(m.planet.jupiter.lng, 'jupiter'))
.addClass(addPlanetClasses(m.planet.venus.lng, 'venus'))
.addClass(addPlanetClasses(m.planet.saturn.lng, 'saturn'))
.addClass('col-md-2 centered planetaryhour')
.attr('id', 'c'+j+'d'+m.planetary .day+'h'+m.planetary.hour.number )
.attr('day', m.planetary.day)
.attr('hour', m.planetary.hour.number)
.attr('ts', m.ts)
.attr('ts-end', new moment.unix(m.planetary.hour.end).add($('#offset').val(), 'h').unix())
.attr('sun-lng', m.solar.lng)
.attr('moon-lng', m.lunar.lng)
.attr('moon-day', m.lunar.day.day)
.attr('moon-phase', m.lunar.phase.simple)
.attr('moon-angle', Math.round(m.lunar.phase.angle *100) / 100 )
.attr('moon-illumination', m.lunar.phase.illumination)
.attr('mars-lng', m.planet.mars.lng)
.attr('mercury-lng', m.planet.mercury.lng)
.attr('jupiter-lng', m.planet.jupiter.lng)
.attr('venus-lng', m.planet.venus.lng)
.attr('saturn-lng', m.planet.saturn.lng)
.appendTo('#grid');
if ( $('#c'+j+'d'+m.planetary .day+'h'+m.planetary.hour.number).attr('hour') > 11 ) {
$('#c'+j+'d'+m.planetary .day+'h'+m.planetary.hour.number).addClass('night-hour');
}
NProgress.set(j/data.planetaryhours.length);
}
for (var i = 0, len = data.planetaryhours.length; i < len; i++) {
var everyday = setTimeout( makePHour, 10, i);
}
}
function generateJSON(iata, timestamp, timeoffset, days, latitude, longitude) {
var caldata = [];
var queryday = new moment.unix(timestamp).startOf('day');
var j = 0;
while ( j <= days ) {
var m = planetaryMoment(latitude, longitude, queryday.unix());
var sol = m.solar.day;
var h = 0;
var interval;
var start;
var m;
while ( h < 24 ) {
if ( h < 12 ) {
interval = sol.day.hourSecs;
start = sol.day.start;
m = h;
} else {
interval = sol.night.hourSecs;
start = sol.night.start;
m = h - 12;
}
var hm = start + m * interval;
pm = planetaryMoment(latitude, longitude, hm);
caldata.push(pm);
h++;
}
queryday.add(1, 'd');
j++;
};
console.log(caldata);
var data = {
iata: iata,
time: {
starttime: timestamp,
days: days,
offset: timeoffset
},
coords: {
lat: latitude,
lng: longitude
},
planetaryhours: caldata
};
return data;
}
function createFilterModal(id, getFunction) {
var items = getFunction();
var title = $('#navigation a[data-target="#'+id+'"]').clone();
var tagfilters = "";
var actions = "";
for (var i = 0, len = items.tags.length; i < len; i++) {
tagfilters += '
'+items.tags[i]+'
';
}
for (var i = 0, len = items.actions.length; i < len; i++) {
actions += '
'+items.actions[i].action+'
';
}
$('').loadTemplate($("#tpl-modal"), {
title : 'Filter by'+title[0].innerText,
left : '
Tags
'+tagfilters+'
',
right : '
Operations
'+actions+'
'
}) .appendTo('#modals').attr('id', id).attr('tabindex', '-1').attr('role', 'dialog').addClass('modal fade')
.find('.col-sm-4')
.addClass('actionlistfilter')
.find('ul')
.attr('id', id+'-tags' )
.attr('data-group', id )
.parents('.modal-body')
.find('.col-sm-8')
.addClass('filteroptions')
.find('ul')
.attr('id', id+'-actions')
.attr('data-group', id+'-actions' );
}
function createInfoModal() {
$('').loadTemplate($("#tpl-modal"), {
title : 'Planetary Hour ',
left : '',
right : ''
}) .appendTo('#modals').attr('id', 'hourinfo').attr('tabindex', '-1').attr('role', 'dialog').addClass('modal fade').modal({ show: false});
}
function getHourInfo() {
var ts = $(this).attr('ts');
var tsend = $(this).attr('ts-end');
var day = parseFloat($(this).attr('day'));
var hour = parseFloat($(this).attr('hour'));
var sunlng = parseFloat($(this).attr('sun-lng'));
var moonlng = parseFloat($(this).attr('moon-lng'));
var marslng = parseFloat($(this).attr('mars-lng'));
var mercurylng = parseFloat($(this).attr('mercury-lng'));
var jupiterlng = parseFloat($(this).attr('jupiter-lng'));
var venuslng = parseFloat($(this).attr('venus-lng'));
var saturnlng = parseFloat($(this).attr('saturn-lng'));
var zodiac = getZodiac(sunlng);
var moonsign = getZodiac(moonlng);
var marssign = getZodiac(marslng);
var mercurysign = getZodiac(mercurylng);
var jupitersign = getZodiac(jupiterlng);
var venussign = getZodiac(venuslng);
var saturnsign = getZodiac(saturnlng);
var mansion = getLunarMansion(moonlng);
var moonday = parseFloat($(this).attr('moon-day'));
var phase = parseFloat($(this).attr('moon-phase'));
var angle = parseFloat($(this).attr('moon-angle'));
var illumination = parseFloat($(this).attr('moon-illumination'));
var hygromanteia = getActions(matrix.planetary.day[day].hour[hour].for, action);
var lunarday = getActions(matrix.lunar.day[lunarday], action);
var lunarsign = getActions(matrix.lunar.sign[moonsign.sign].for, action);
var lunarmansion = getActions(matrix.lunar.mansion[mansion], action);
var claviculaday = getActions(matrix.clavicula[day+1], action);
var claviculahour = getActions(matrix.clavicula[matrix.planetary.day[day].hour[hour].planet], action);
$('#p-hour').html((hour+1));
$('#p-info').html(
$('