<!DOCTYPE html>
<html lang="sk">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" />
<!-- <meta name="viewport" content="width=device-width, initial-scale=0.5" /> -->
<title>Freecharging</title>
<link type="text/css" rel="stylesheet" href="css/reset.css" />
<link type="text/css" rel="stylesheet" href="css/style.css" />
<script type="text/javascript" src="cordova.js"></script>
<!--<script type="text/javascript" src="js/index.js"></script>-->
<script src="js/jquery.2.1.js"></script>
<script src="js/dragdealer.js"></script>
<script src="js/jquery.mobile-1.4.5.min.js"></script>
<script src="js/fastclick.js"></script>
<script>
var counter = 0;
var lvl = 0;
var mustRun = true;
var actualLvl = 0;
function onDeviceReady () {
if (device.platform != 'Android') {
cordova.plugins.notification.badge.promptForPermission();
}
actualLvl = localStorage.getItem('battery_life') * 50;
cordova.plugins.backgroundMode.ondeactivate = function () {
clearInterval(timer);
cordova.plugins.notification.badge.clear();
};
//alert("Calling onDeviceReady()");
}
setTimeout(function () {
document.addEventListener('deviceready', onDeviceReady, false);
document.addEventListener("resume", function() {
//alert("Aaaaaan we're back!!");
clearInterval(timer);
cordova.plugins.backgroundMode.disable();
document.location.href = 'index.html';
});
document.addEventListener("pause", function() {
cordova.plugins.backgroundMode.enable();
cordova.plugins.notification.badge.clear();
cordova.plugins.backgroundMode.configure({
silent: true
});
actualLvl = localStorage.getItem('battery_life') * 50;
window.addEventListener("batterystatus", onBatteryStatus, false);
function onBatteryStatus(info) {
// Handle the online event
lvl = info.level;
console.log("Level: " + info.level + " isPlugged: " + info.isPlugged);
}
timer = setInterval(function () {
if (lvl <= actualLvl && mustRun == true) {
cordova.plugins.backgroundMode.configure({
silent: false
});
if (device.platform != 'Android') {
cordova.plugins.notification.badge.set(1);
}
cordova.plugins.backgroundMode.configure({
text: 'You should find a suitable charging place'
});
mustRun = false;
}
}, 1000);
});
}, 5000);
</script>
</head>
<body class="loading">
<!-- IOS BAR FIX -->
<div id="ios-bar-fix"></div>
<!-- /IOS BAR FIX -->
<nav data-role="panel" id="left-navigation" class="side-nav">
<ul class="left-content">
<li>
<a href="search.html" class="redirect">
<img src="img/main/icons/search.png" class="search">
<span>Search</span>
</a>
</li>
<li>
<a href="langs.html" class="redirect">
<img src="img/main/icons/spll.png" class="spll">
<span>Set preferred <br /> language list</span>
</a>
</li>
<li>
<a href="javascript:;" id="battery-slider">
<img src="img/main/icons/bln.png" class="bln">
<span>Battery Level <br /> notification</span>
</a>
</li>
<li>
<a href="legal.html" class="redirect">
<img src="img/main/icons/legal.png" class="legal">
<span>Legal</span>
</a>
</li>
<li>
<a href="help.html" class="redirect">
<img src="img/main/icons/help.png" class="help">
<span>Help</span>
</a>
</li>
<li>
<a href="about.html" class="redirect">
<img src="img/main/icons/about.png" class="about">
<span>About</span>
</a>
</li>
</ul>
</nav>
<!-- BATTERY LEVEL -->
<section id="battery-level" class="battery-level-content">
<h1>Battery Level notification: <span>0%</span></h1>
<div id="battery-slider-content">
<div id="progress-lines">
<span></span>
<span>
<span class="handle">
<i>
<i>
0
<b></b>
</i>
</i>
</span>
</span>
</div>
</div>
<div id="battery-footer">
<button class="bcancel">Cancel</button>
<button>OK</button>
</div>
</section>
<!-- /BATTERY LEVEL -->
<nav data-role="panel" id="right-navigation" class="side-nav">
<ul class="right-content">
<!-- CONTENT LIST -->
</ul>
</nav>
<div id="blur-container" class="">
<div class="container" data-role="page">
<!-- HEADER -->
<header id="full-header">
<a href="javascript:;" class="nav-ico"></a>
<a id="logo" href=""></a>
<a href="javascript:;" class="star-ico"></a>
<h1 style="display:none">Closest charging places</h1>
<a id="header-map" class="redirect" href="map.html">
<img src="img/main/icons/map.png">
</a>
</header>
<header id="static-header" class="hide">
<a href="javascript:;" class="nav-ico"></a>
<a id="logo" href=""></a>
<a href="javascript:;" class="star-ico"></a>
</header>
<!-- /HEADER -->
<!-- CONTENT -->
<ul class="flip">
</ul>
<!-- LOAD MORE BTN -->
<button class="load-more-btn">Load more</button>
<!-- /LOAD MORE BTN -->
<!-- LOADER FOR EVENTS -->
<div class="event-loader">
<img src="img/loaders/list-loader.gif">
</div>
<!-- /LOADER FOR EVENTS -->
<!-- NO MORE EVENTS -->
<div class="no-more-content">No more venues to load</div>
<!-- /NO MORE EVENTS -->
<!-- /CONTENT -->
</div>
</div>
<script>
$(document).ready(function() {
var actualUnitPage = 0,
isThereOtherUnits = true,
actualPosition = null,
battery_life = 0, //By default
battery_life_custom = -1,
menuStatus = 'none',
batteryStatus = 'none',
dragbattery,
_startPoint = -1,
_currPosition = -1;
mustRun = true,
months = ['jan', 'feb', 'mar', 'apr', 'may', 'june', 'july', 'aug', 'sep', 'oct', 'nov', 'dec'],
_loaded = [];
//Default language
defaultLanguage();
//Detect OS
getMobileOperatingSystem();
//Header image cycle
headerImageCycle();
//For eliminating the 300ms delay between a physical tap and the firing of a click event on mobile browsers
FastClick.attach(document.body);
navigator.geolocation.getCurrentPosition(onSuccess, onError);
// onSuccess Callback
// This method accepts a `Position` object, which contains
// the current GPS coordinates
//
function onSuccess(position) {
actualPosition = position.coords;
loadData();
loadEvents();
$('#header-map').attr('href', 'map.html?lat=' + actualPosition.latitude + '&long=' + actualPosition.longitude);
}
// onError Callback receives a PositionError object
//
function onError(error) {
alert('code: ' + error.code + '\n' +
'message: ' + error.message + '\n');
}
if (typeof(Storage) !== "undefined") {
if (localStorage.getItem('battery_life') != null) { battery_life = localStorage.getItem('battery_life'); }
//Battery drag
_initBatteryDrag();
} else {
alert('No storage support');
}
//Battery ok
$(document).on("click","#battery-footer button:last-child",function(){-1!=battery_life_custom&&(battery_life=battery_life_custom,battery_life_custom=-1,localStorage.setItem("battery_life",battery_life));_battery()});
//Battery cancel
$(document).on("click",".blur, .bcancel",function(){_battery_hide()});
//Redirect
$(document).on("click",".redirect",function(){var a=$(this).attr("href");void 0==a&&(a=$(this).data("href"));if(!$("body").hasClass("battery"))return window.location.href=a,!1});
//Swipeleft
$("body").on("swipeleft",function(a){$("body").hasClass("battery")||_event(a)});
//Swiperight
$("body").on("swiperight",function(a){$("body").hasClass("battery")||_nav(a)});
//Custom click events
$(document).on("click",".nav-ico",function(a){_nav(a);return!1});
$(document).on("click",".star-ico",function(a){_event(a);return!1});
$(document).on("click",".event-overlay",function(){_event()});
$(document).on("click",".nav-overlay",function(){_nav()});
$(document).on("click","#battery-slider",function(){_nav();_battery()});
//
$(".load-more-btn").click(function(){null!=actualPosition?loadData():alert("No location data yet!")});
//Custom functions
function getMobileOperatingSystem(){var a=navigator.userAgent||navigator.vendor||window.opera,b=$("html");a.match(/iPad/i)||a.match(/iPhone/i)||a.match(/iPod/i)?b.addClass("iOS"):a.match(/Android/i)?b.addClass("Android"):b.addClass("UnknownOs")};
function _nav(a){$(document).find(".event-overlay").remove();$(document).find(".nav-overlay").remove();"none"==menuStatus?(_battery_hide(),$("body").addClass("p-open left"),menuStatus="left",$("body").append('<div class="nav-overlay"></div>')):"left"==menuStatus?($("body").removeClass("p-open left"),menuStatus="none"):_event()};
function _event(a){_battery_hide();$(document).find(".event-overlay").remove();$(document).find(".nav-overlay").remove();"none"==menuStatus?($("body").addClass("p-open right"),menuStatus="right",$("body").append('<div class="event-overlay"></div>')):"right"==menuStatus?($("body").removeClass("p-open right"),menuStatus="none"):_nav()};
function _battery(){$("body").hasClass("battery")||"none"!=batteryStatus?($("body").removeClass("battery"),$("#blur-container").removeClass("blur"),batteryStatus="none",battery_life_custom=battery_life):($("body").addClass("battery"),$("#blur-container").addClass("blur"),batteryStatus="battery")};
function _initBatteryDrag(){dragbattery=new Dragdealer("progress-lines",{x:battery_life,animationCallback:function(a,c){"undefined"!==typeof Storage?battery_life_custom=a:alert("No storage support");if(0==Math.round(100*a))$("#battery-slider-content span > span > i").addClass("off"),$("#battery-slider-content span > span > i > i").html("OFF <b></b>"),$("#battery-level > h1 span").html("OFF");else{var b=Math.floor(Math.round(100*a)/2);$("#battery-slider-content span > span > i").removeClass("off");
$("#battery-slider-content span > span > i > i").html(b+"<b></b>");$("#battery-level > h1 span").html(b+"%")}$("#progress-lines > span:last-child").css("width",Math.round(100*a)+"%")}})};
function _battery_hide(){$("body").removeClass("battery");$("#blur-container").removeClass("blur");batteryStatus="none"};
function convertToDistance(a){return 1E3>=a?Math.floor(a)+"m":(a/1E3).toFixed(1)+"km"};
function checkAttrib(a,c){var b=!1;$.each(a,function(a,d){d.name===c&&(b=!0)});return 1==b?"":" non-exist"};
function setNonAttribIcon(a,c){var b=!1;$.each(a,function(a,d){d.name===c&&(b=!0)});return 1==b?"":"-non"};
function getEventName(a){return null!=a?a.name:""};
function getCommonLang(b) {
var a = null;
l = "undefined" != localStorage.getItem("languages") || localStorage.getItem("languages") != '' ? localStorage.getItem("languages").split(",") : [];
l != [] && $.each(l, function(f, d) {
var e = d.split("|");
$.each(b, function(b, c) {
e[0] == c.lang && null == a && (a = c.lang);
});
});
return null == a ? "Non" : a;
};
function defaultLanguage() {
if (localStorage.getItem("languages") == undefined || localStorage.getItem("languages") == '') {
var l_lang,
l_def = 'English';
l_curr = '';
l_cont = {};
l_list = {};
l_list.Czech = 'cz';
l_list.Danish = 'da';
l_list.Dutch = 'nl';
l_list.English = 'en';
l_list.French = 'fr';
l_list.German = 'de';
l_list.Hungarian = 'hu';
l_list.Italian = 'it';
l_list.Polish = 'pl';
l_list.Russian = 'ru';
l_list.Slovak = 'sk';
l_list.Swedish = 'sv';
if (navigator.userLanguage) {
l_lang = navigator.userLanguage;
} else if (navigator.language) {
l_lang = navigator.language;
} else {
l_lang = 'en';
}
if (l_lang.indexOf("-") >= 0) {
l_lang = l_lang.split('-');
l_lang = l_lang[0];
}
$.getJSON("http://freecharging.sk/api/getLanguages/0", function(data) {
if (data != '') {
$.each(data, function(index, value) {
l_cont[value.lang] = {};
l_cont[value.lang].id = value.id;
l_cont[value.lang].name = value.lang;
l_cont[value.lang].code = l_list[value.lang] != undefined ? l_list[value.lang] : l_list[l_def];
if (l_cont[value.lang].code == l_lang) {
l_curr = value.lang;
}
})
if (l_cont[l_curr].name != undefined) {
localStorage.setItem("languages", l_cont[l_curr].name + '|' + l_cont[l_curr].id);
} else {
localStorage.setItem("languages", l_cont['English'].name + '|' + l_cont['English'].id);
}
}
})
}
}
function loadData(){$("body").removeClass("no-content");$("body").addClass("loading");$.getJSON("http://freecharging.sk/api/getNearestUnits/and/"+actualPosition.latitude+"/"+actualPosition.longitude+"/"+actualUnitPage,function(a){var d=$(document).find("ul.flip"),c="";""!=a&&(actualUnitPage++,$.each(a,function(b,d){-1==$.inArray(a[b].unitid,_loaded)&&(_loaded.push(a[b].unitid),c+='<li class="redirect" data-href="unit.html?jsonString='+encodeURIComponent(JSON.stringify(a[b]))+"&userlat="+actualPosition.latitude+
"&userlon="+actualPosition.longitude+'"><div class="inner"><span><img src="img/main/icons/categories/'+a[b].categoryid+'.png" class="gyikon_'+a[b].categoryid+'"></span><div><h1>'+a[b].unitname+'</h1><ul class="icon-container"><li><a class="redirect-deprecated ui-link" href="javascript:;"><img class="park-ico ic'+checkAttrib(a[b].attributes,"Parking lot")+'" src="img/main/icons/park'+setNonAttribIcon(a[b].attributes,"Parking lot")+'.png"></a></li><li><a class="redirect-deprecated ui-link" href="javascript:;"><img class="wifi-ico ic'+
checkAttrib(a[b].attributes,"Free wifi available")+'" src="img/main/icons/wifi'+setNonAttribIcon(a[b].attributes,"Free wifi available")+'.png"></a></li><li><a class="redirect-deprecated ui-link" href="javascript:;"><img class="cks-ico ic'+checkAttrib(a[b].attributes,"Barrier-free")+'" src="img/main/icons/cks'+setNonAttribIcon(a[b].attributes,"Barrier-free")+'.png"></a></li><li><a class="redirect-deprecated ui-link" href="javascript:;"><img class="foot-ico ic'+checkAttrib(a[b].attributes,"Pet friendly")+
'" src="img/main/icons/foot'+setNonAttribIcon(a[b].attributes,"Pet friendly")+'.png"></a></li><li><a class="redirect-deprecated ui-link" href="javascript:;"><img class="smoke-ico ic'+checkAttrib(a[b].attributes,"Smoking area")+'" src="img/main/icons/smoke'+setNonAttribIcon(a[b].attributes,"Smoking area")+'.png"></a></li><li><a class="redirect-deprecated ui-link" href="javascript:;"><img class="card-ico ic'+checkAttrib(a[b].attributes,"Accepting credit cards")+'" src="img/main/icons/card'+setNonAttribIcon(a[b].attributes,
"Accepting credit cards")+'.png"></a></li><li><a class="redirect-deprecated ui-link" href="javascript:;"><img class="eng-ico ic" src="img/main/icons/flags/'+getCommonLang(a[b].languages)+'.png"></a></li></ul><a class="redirect-deprecated ui-link" href="javascript:;"><img src="img/main/icons/arrow.png"></a><div class="inner-footer"><div>'+convertToDistance(a[b].distance)+'<div class="itbl"><div></div></div><div class="tbl"></div><div class="tbr"></div></div><h1>'+getEventName(a[b].events[0])+'</h1></div></div></div><div class="tbl"></div><div class="tbr"></div></li>')}));
d.append(c);console.log(_loaded)}).always(function(a){$("body").removeClass("loading");404==a.status&&'"No units were found."'==a.responseText?$("body").addClass("no-content"):404!=a.status||200!=a.status&&console.log("Another error type: "+a.status+" response: "+a.responseText)})};
function loadEvents(){$.getJSON("http://freecharging.sk/api/getNearestUnitsWithEvents/and/"+actualPosition.latitude+"/"+actualPosition.longitude+"/0",function(a){var f=$(document).find("ul.right-content"),g="";""!=a&&(console.log(a),$.each(a,function(b,f){$.each(a[b].events,function(c,f){var d=a[b].events[c].from.split(/[\-\+ :T]/),e=a[b].events[c].to.split(/[\-\+ :T]/);g+='<li class="redirect" data-href="unit.html?_ref=events&jsonString='+encodeURIComponent(JSON.stringify(a[b]))+'"><a href="javascript:;"><h1>'+
a[b].events[c].name+"</h1><span>"+convertToDistance(a[b].distance)+"<time>"+d[2]+". "+months[parseInt(d[1])-1]+" "+d[3]+":"+d[4]+" - "+e[2]+". "+months[parseInt(e[1])-1]+" "+e[3]+":"+e[4]+'</time></span><img src="'+a[b].events[c].thumb+'"></a></li>'})}));f.html(g)}).fail(function(a){404==a.status&&isThereOtherUnits&&(isThereOtherUnits=!1)})};
function headerImageCycle(){var a=new Date,a=a.getHours(),b=Math.floor(5*Math.random()+1),a=6<a&&18>a?"day":"night";$(document).find("#full-header").css("background","url(img/background/"+a+"/"+b+".jpg) no-repeat scroll center center / cover");"night"==a&&$(document).find("#full-header").addClass("whiteNav")};
//Custom events
$(window).scroll(function() {
var a = $(window).scrollTop(), b = $(document).height(), c = $(window).height(), _top = $('html').hasClass('iOS') ? 35 : 0;
.95 < a / (b - c) && loadData();
_top < $(this).scrollTop() ? ($(document).find(".header-overlay").remove(), $(document).find(".nav-ico, .star-ico, #logo").css({position:"fixed", "z-index":2500}).addClass('moved'), $(document).find("#full-header").append('<div class="header-overlay"></div>'), $(document).find("#full-header h1").addClass("hide")) : ($(document).find(".nav-ico").css("position", "relative").removeClass('moved'), $(document).find(".star-ico, #logo").css("position", "absolute").removeClass('moved'), $(document).find(".header-overlay").remove(), $(document).find("#full-header h1").removeClass("hide"));
});
})
</script>
</body>
</html>
Comments
0 B
|👍
/👎
0 B
|0 👍
/0 👎
0 B
|0 👍
/0 👎