Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var app = {
- lookup: {
- action: 'address',
- city: '',
- cityLookupUrl: '',
- streetLookupUrl: '',
- schoolLookupUrl: '',
- dormitoryLookupUrl: '',
- resultJSON: ''
- },
- testimonial: {
- containerWidth: 0,
- canSee: 0,
- length: 0,
- width: 0,
- index: 0
- },
- tmpl:{
- loading: '<div class="result-item loading">'+
- '<p class="name"> </p><p class="hours"> </p>'+
- '<div class="details"><div class="description"><div class="restaurant-logo"></div><div class="txt"><p> </p><p> </p><p> </p></div></div><div class="payment"><p> </p><span class="order"></span></div></div>'+
- '<div class="opinion"><div class="stars"><ul><li></li><li></li><li></li><li></li><li></li></ul></div></div>'+
- '</div>',
- default: '<div id="result-${index}" class="{{if isActive}}result-item{{else}}result-item off{{/if}}" onclick="app.showDetails(${index});" onmouseenter="app.showMarker(${index});">'+
- '<p class="name"><span>${index}.</span><strong>${name}</strong></p>'+
- '<p class="hours">{{if hours}}{{if isActive}}<i class="fa fa-clock-o"></i> ${hours}{{else}}nieczynne{{/if}}{{/if}}</p>'+
- '<div class="opinion">'+
- '{{if opinionCount > 0 }}<ul class="stars">{{html app.printStars(opinionStars)}}</ul>{{/if}}'+
- '{{if opinionCount > 0 }}<a href="${link}">({{if opinionCount == 100}}ponad 100{{else}}${opinionCount}{{/if}} opinii)</a>{{else}}Brak oceny{{/if}}'+
- '</div>'+
- '<div class="details">'+
- '<div class="description">'+
- '<div class="restaurant-logo" style="background-image:url(${logo})"></div>'+
- '<div class="txt">'+
- '<p><i class="fa fa-cutlery"></i> {{each category}}${$value}{{if $index < category.length - 1}}, {{/if}}{{/each}}</p>'+
- '<p><i class="fa fa-map-marker"></i> Adres: ${address}</p>'+
- //'<p><i class="fa fa-shopping-cart"></i> Min. wartość zamówienia <strong>${minValue}</strong></p>'+
- //'<p><i class="fa fa-car"></i> Koszt dostawy <strong>${deliveryCost}</strong></p>'+
- '</div>'+
- '</div>'+
- '<div class="payment">'+
- '<p><i class="fa fa-credit-card"></i> Online<i class="fa fa-money"></i> Gotówka</p>'+
- '<a href="http://maps.google.com/maps?q=${name}" target="_blank" class="go-map">Pokaż na mapie</a>'+
- '{{if discount}}<a href="{{if isActive}}${discountLink}{{else}}${link}{{/if}}" target="_blank" class="order discount"><span>Odbierz rabat</span> <span class="count">${discount}</span></a>'+
- '{{else}}<a href="{{if isActive && discountLink}}${discountLink}{{else}}${link}{{/if}}" target="_blank" class="order">Zamów <i class="fa fa-angle-right"></i></a>{{/if}}'+
- '</div>'+
- '</div>'+
- '</div>'
- },
- resultPlaces: [],
- citiesToSearch: [],
- init: function(param){
- $('#cover').height(window.innerHeight);
- $('#map').height(window.innerHeight);
- app.citiesToSearch = param.citiesToSearch;
- app.lookup = $.extend(app.lookup, param);
- app.bindEvents();
- },
- bindEvents: function(){
- window.onload = app.loaded;
- window.onscroll = app.windowScroll;
- app.slider();
- $('#newsletter-form').submit(function(e){
- e.preventDefault();
- if(newsletterForm.errors.length) return false;
- $(this).ajaxSubmit({
- success: function(responseText, statusText, xhr, $form){
- $('#newsletter-form').parent().addClass('off');
- $('.congratulations').addClass('on');
- }
- });
- return false;
- });
- $('input[type=checkbox][name=tag]:not(.all)').click(app.updateChecked);
- $('input.all').click(app.allCheckCat);
- $('input[type=checkbox].newsletter-check').click(app.updateCheckedNewsletter);
- $('.main-nav a, .mobile-nav a').click(function(e){
- var href = $(this).attr('href');
- if(href.slice(0,1) == '#'){
- e.preventDefault();
- var offsetTop = $(href).position().top;
- offsetTop = href == '#app' ? offsetTop - 110 : offsetTop;
- $('body,html').animate({ scrollTop: offsetTop }, 'slow');
- return false;
- }
- });
- $('#select-search .value').click(app.selectSearchOpen);
- $('#select-search .value').blur(function(){
- //$('#select-search').removeClass('on');
- });
- $('*[data-error]').each(function(i,elem){
- var errorMessage = $(elem).attr('data-error');
- var html = '<span class="error">'+errorMessage+'</span>';
- $(html).insertAfter($(elem));
- });
- $('#autocomplete-city').autocomplete({
- //serviceUrl: app.lookup.cityLookupUrl,
- lookup: app.citiesToSearch,
- lookupFilter: function (suggestion, originalQuery, queryLowerCase) {
- return suggestion.value.toLowerCase().indexOf(queryLowerCase) === 0;
- },
- onSelect: function (suggestion) {
- app.lookup.city = suggestion.data;
- },
- onSearchComplete: function(){ $(this).removeClass('working'); },
- autoSelectFirst: true,
- maxHeight: 250
- //appendTo: $('.search-engine'),
- });
- $('#autocomplete-street').autocomplete({
- serviceUrl: app.lookup.streetLookupUrl,
- lookupFilter: function (suggestion, originalQuery, queryLowerCase) {
- return suggestion.value.toLowerCase().indexOf(queryLowerCase) === 0;
- },
- onSearchStart: function(query){
- $(this).addClass('working');
- $(this).autocomplete('setOptions', {
- ajaxSettings: {
- type: 'POST',
- data: {
- 'city': app.lookup.city,
- 'action': app.lookup.action,
- 'query': query.query,
- 'data': query.data
- }
- }
- });
- },
- onSelect: function (suggestion) {
- $('#street-id').val(suggestion.data);
- },
- onSearchComplete: function(){ $(this).removeClass('working'); },
- autoSelectFirst: true,
- maxHeight: 250
- });
- $('#autocomplete-school').autocomplete({
- serviceUrl: app.lookup.schoolLookupUrl,
- lookupFilter: function (suggestion, originalQuery, queryLowerCase) {
- return suggestion.value.toLowerCase().indexOf(queryLowerCase) === 0;
- },
- onSearchStart: function(query){
- $(this).addClass('working');
- $(this).autocomplete('setOptions', {
- ajaxSettings: {
- type: 'POST',
- data: {
- 'city': app.lookup.city,
- 'action': app.lookup.action,
- 'query': query.query,
- 'data': query.data
- }
- }
- });
- },
- onSelect: function (suggestion) {
- $('#object-id').val(suggestion.data);
- },
- onSearchComplete: function(){ $(this).removeClass('working'); },
- autoSelectFirst: true,
- maxHeight: 250
- });
- $('#autocomplete-dormitory').autocomplete({
- serviceUrl: app.lookup.dormitoryLookupUrl,
- lookupFilter: function (suggestion, originalQuery, queryLowerCase) {
- return suggestion.value.toLowerCase().indexOf(queryLowerCase) === 0;
- },
- onSearchStart: function(query){
- $(this).addClass('working');
- $(this).autocomplete('setOptions', {
- ajaxSettings: {
- type: 'POST',
- data: {
- 'city': app.lookup.city,
- 'action': app.lookup.action,
- 'query': query.query,
- 'data': query.data
- }
- }
- });
- },
- onSelect: function (suggestion) {
- $('#object-id').val(suggestion.data);
- },
- onSearchComplete: function(){ $(this).removeClass('working'); },
- autoSelectFirst: true,
- maxHeight: 250
- });
- },
- showDetails: function(id){
- if(window.innerWidth > 768) gmap.showDetails(id);
- //gmap.centerByMarker();
- },
- showMarker: function(id){
- if(window.innerWidth > 768) gmap.showMarker(id);
- },
- printResults: function(places,loading){
- var resultActiveObj = [];
- var resultInactiveObj = [];
- $.each(places,function(i,place){
- if(loading) $.tmpl(app.tmpl.loading, {}).appendTo('#results');
- if(place.isActive) resultActiveObj.push(place);
- else resultInactiveObj.push(place);
- });
- var resultObj = $.merge(resultActiveObj,resultInactiveObj);
- $.each(resultObj, function(i,obj){ obj.index = (i+1); });
- $.tmpl(app.tmpl.default, resultObj).appendTo('#results');
- var firstInactive = false;
- $.each(resultObj, function(i,obj){
- if(window.innerWidth > 768) gmap.addMarker(obj);
- //if(i == 0 && loading) app.showDetails(1);
- if(!obj.isActive && !firstInactive){
- firstInactive = true;
- $('<h3 class="closed">Nieczynne:</h3>').insertBefore('.result-item:eq('+i+')');
- }
- if(loading){
- setTimeout(function(){
- $('.result-item:not(.loading):eq('+i+')').insertBefore('.result-item.loading:eq(0)');
- $('.result-item:not(.loading):eq('+i+')').show();
- $('.result-item.loading:eq(0)').remove();
- },(i*150));
- }else{
- $('.result-item:not(.loading):eq('+i+')').insertBefore('.result-item.loading:eq(0)');
- $('.result-item:not(.loading):eq('+i+')').show();
- }
- });
- },
- getResult: function(){
- $.getJSON(app.lookup.resultJSON, function(data){
- app.resultPlaces = data.places;
- app.printResults(app.resultPlaces,true);
- });
- },
- clearAllResult: function(){
- $('#results').html('');
- if(window.innerWidth > 768) gmap.clearAllMarkers();
- },
- sortByCat: function(arrCat){
- var arrPlaces = [];
- $.each(app.resultPlaces,function(i,place){
- for (var i = 0; i < place.category.length; i++) {
- var row;
- var category = app.replaceSpecialCharacters(place.category[i]).toLowerCase();
- for (var j = 0; j < arrCat.length; j++) {
- row = app.replaceSpecialCharacters(arrCat[j].toLowerCase());
- if(category.match(row)){
- arrPlaces.push(place);
- return;
- }
- };
- };
- });
- app.clearAllResult();
- app.printResults(arrPlaces,false);
- },
- loaded: function(){
- if($('.testimonial').length){
- app.testimonial.containerWidth = $('.testimonials-container').width();
- app.testimonial.length = $('.testimonial').length;
- app.testimonial.width = $('.testimonial').outerWidth() + 30;
- app.testimonial.canSee = Math.floor($('.testimonials-container').width()/app.testimonial.width);
- app.testimonial.canSee = app.testimonial.canSee < 1 ? 1 : app.testimonial.canSee;
- }
- if(window.innerWidth > 768){
- if($('#gmap').length){
- gmap.init({ elem: 'gmap' });
- gmap.map.panBy(-300,0);
- }
- if(app.lookup.userPosition) gmap.searchPlace(app.lookup.userPosition);
- }
- if(app.lookup.resultJSON) app.getResult();
- },
- allCheckCat: function(){
- var selectItem = [];
- $('input[type=checkbox]').each(function(i,input){
- $(input).prop('checked',true);
- $(input).parent().addClass('on');
- selectItem.push($(input).val());
- });
- app.sortByCat(selectItem);
- },
- updateChecked: function(){
- var selectItem = [];
- var allCheckbox = $('input[type=checkbox]:not(.all)').length;
- var allCheckedCheckbox = $('input[type=checkbox]:checked:not(.all)').length;
- if(allCheckbox == allCheckedCheckbox){
- $('input.all').parent().addClass('on');
- }else if(allCheckedCheckbox == 0){
- app.allCheckCat();
- }else{
- $('input.all').parent().removeClass('on');
- }
- $('input[type=checkbox]:not(.all)').each(function(i,input){
- $(input).parent().removeClass('on');
- if($(input).is(':checked')){
- $(input).parent().addClass('on');
- selectItem.push($(input).val());
- }
- });
- app.sortByCat(selectItem);
- },
- updateCheckedNewsletter: function(){
- if($('input[type=checkbox].newsletter-check').is(':checked')){
- $(this).parent().addClass('on');
- }else{
- $(this).parent().removeClass('on');
- }
- },
- closeAddPlace: function(){
- $('.slide').removeClass('on');
- $('.slide').addClass('off');
- //$('body.map').css('margin-bottom','-375px');
- },
- openAddPlace: function(){
- if($('.slide').is('.on')){
- app.closeAddPlace();
- }else{
- //$('body.map').css('margin-bottom','0');
- $('.slide').removeClass('off');
- $('.slide').addClass('on');
- }
- },
- selectSearchOpen: function(e){
- e.preventDefault();
- $('.autocomplete-suggestions').hide();
- $('#select-search li').unbind('click');
- if($('#select-search').is('.on')){
- $('#select-search').removeClass('on');
- }else{
- $('#select-search').addClass('on');
- $('#select-search li').bind('click',app.selectSearchChoose);
- }
- return false;
- },
- selectSearchChoose: function(e){
- var value = $(e.target).attr('data-value');
- var text = $(e.target).text();
- if (value == 'address') {
- $('input[name="object-id"]').val('');
- $('input[name="school"]').val('');
- $('input[name="dormitory"]').val('');
- } else if (value == 'school') {
- $('input[name="street"]').val('');
- $('input[name="street-id"]').val('');
- $('input[name="dormitory"]').val('');
- } else if (value == 'dormitory') {
- $('input[name="street"]').val('');
- $('input[name="street-id"]').val('');
- $('input[name="school"]').val('');
- }
- app.lookup.action = value;
- $('#select-search').removeClass('on');
- $('#select-search .value').text(text);
- $('#select-search-value').val(value);
- $('fieldset.on [required]').removeAttr('required');
- $('fieldset.on').removeClass('on');
- $('#search-'+value).addClass('on');
- $('#search-'+value+' input:not([name=house])').attr('required','');
- $('label.error').removeClass('error');
- $('#select-search li').unbind('click');
- },
- printStars: function(count){
- var stars = '';
- for (var i = 0; i < 5; i++) {
- if(i < count) stars += '<li class="on"></li>';
- else stars += '<li></li>';
- };
- return stars;
- },
- testimonialNext: function(){
- app.testimonial.index ++;
- app.testimonial.index = app.testimonial.index >= (app.testimonial.length - app.testimonial.canSee + 1) ? 0 : app.testimonial.index;
- app.testimonialGoTo();
- },
- testimonialPrev: function(){
- app.testimonial.index --;
- app.testimonial.index = app.testimonial.index < 0 ? (app.testimonial.length - app.testimonial.canSee) : app.testimonial.index;
- app.testimonialGoTo();
- },
- testimonialGoTo: function(){
- var offset = app.testimonial.index * -app.testimonial.width;
- $('.testimonial-slide').css({
- '-webkit-transform': 'translate3d('+offset+'px, 0, 0)',
- '-moz-transform': 'translate3d('+offset+'px, 0, 0)',
- '-ms-transform': 'translate3d('+offset+'px, 0, 0)',
- '-o-transform': 'translate3d('+offset+'px, 0, 0)',
- 'transform': 'translate3d('+offset+'px, 0, 0)'
- });
- },
- scrollMore: function(){
- $('body,html').animate({ scrollTop: window.innerHeight },'slow');
- },
- windowScroll: function(){
- if($('.slide').is('.on') && $(document).scrollTop() >= $('#add-place').outerHeight()){
- $('.slide').removeClass('on');
- $('.slide').removeClass('off');
- //$('body.map').css('margin-bottom','-375px');
- $(document).scrollTop(0);
- }
- if($(document).scrollTop()>0) $('.gotop').show();
- else $('.gotop').hide();
- },
- replaceSpecialCharacters: function(input){
- var a = ['ą','ć','ę','ł','ń','ó','ś','ź','ż',' '];
- var b = ['a','c','e','l','n','o','s','z','z','-'];
- var result = input;
- for (var i = 0; i < a.length; i++) {
- result = result.replace(new RegExp(a[i], 'g'), b[i]);
- };
- return result;
- },
- goTop: function(){
- $('body,html').animate({ scrollTop: 0 }, 'slow');
- },
- showMobileMenu: function(){
- $('.mobile-nav').toggleClass('on');
- },
- showMobileSearch: function(){
- $('.search').toggleClass('on');
- },
- showHideAside: function(){
- $('#search-result').toggleClass('off');
- $('#search-result .content').scrollTop(0);
- if($('#search-result').is('.off')){
- gmap.map.panBy(300,0);
- }else{
- gmap.map.panBy(-300,0);
- }
- },
- slider: function(){
- app.currentSlide = 1;
- app.sliderLength = $('.iphone ul.slider li').length;
- app.sliderIntervalId = setInterval(function(){
- $('.iphone ul.slider li img').hide();
- $('.iphone ul.nav li.on').removeClass('on');
- $('.iphone ul.nav li').eq(app.currentSlide).addClass('on');
- $('.iphone ul.slider li img').eq(app.currentSlide).show();
- app.currentSlide++;
- if (app.currentSlide > app.sliderLength-1) {
- app.currentSlide = 0;
- }
- }, 2500);
- $('.iphone ul.nav li').on('click', function(){
- clearInterval(app.sliderIntervalId);
- app.currentSlide = $(this).index();
- $('.iphone ul.slider li img').hide();
- $('.iphone ul.nav li.on').removeClass('on');
- $('.iphone ul.nav li').eq(app.currentSlide).addClass('on');
- $('.iphone ul.slider li img').eq(app.currentSlide).show();
- app.sliderIntervalId = setInterval(function(){
- $('.iphone ul.slider li img').hide();
- $('.iphone ul.nav li.on').removeClass('on');
- $('.iphone ul.nav li').eq(app.currentSlide).addClass('on');
- $('.iphone ul.slider li img').eq(app.currentSlide).show();
- app.currentSlide++;
- if (app.currentSlide > app.sliderLength-1) {
- app.currentSlide = 0;
- }
- }, 2500);
- });
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement