base_logic_landing 0.1.8 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +7 -6
  3. data/lib/{app_mate_landing.rb → landing-rails.rb} +2 -2
  4. data/lib/landing/rails.rb +7 -0
  5. data/lib/landing/rails/version.rb +5 -0
  6. metadata +9 -60
  7. data/lib/app_mate_landing/rails.rb +0 -7
  8. data/lib/app_mate_landing/rails/version.rb +0 -5
  9. data/vendor/assets/javascripts/app_mate.js +0 -0
  10. data/vendor/assets/javascripts/landing/common.js +0 -468
  11. data/vendor/assets/javascripts/landing/jwplayer/jwplayer.flash.swf +0 -0
  12. data/vendor/assets/javascripts/landing/jwplayer/jwplayer.html5.js +0 -258
  13. data/vendor/assets/javascripts/landing/jwplayer/jwplayer.js +0 -138
  14. data/vendor/assets/javascripts/landing/main.js +0 -669
  15. data/vendor/assets/javascripts/landing/owl-carousel/owl.carousel.js +0 -1512
  16. data/vendor/assets/javascripts/landing/owl-carousel/owl.carousel.min.js +0 -47
  17. data/vendor/assets/javascripts/landing/requirer.js +0 -0
  18. data/vendor/assets/javascripts/landing/third/detectmobilebrowser.js +0 -7
  19. data/vendor/assets/javascripts/landing/third/gmaps.js +0 -2149
  20. data/vendor/assets/javascripts/landing/third/html5shiv.js +0 -301
  21. data/vendor/assets/javascripts/landing/third/isotope.pkgd.min.js +0 -8
  22. data/vendor/assets/javascripts/landing/third/jquery.ajaxchimp.min.js +0 -1
  23. data/vendor/assets/javascripts/landing/third/jquery.counterup.min.js +0 -8
  24. data/vendor/assets/javascripts/landing/third/jquery.easing.1.3.js +0 -205
  25. data/vendor/assets/javascripts/landing/third/jquery.fitvids.js +0 -83
  26. data/vendor/assets/javascripts/landing/third/jquery.nicescroll.min.js +0 -114
  27. data/vendor/assets/javascripts/landing/third/jquery.stellar.js +0 -660
  28. data/vendor/assets/javascripts/landing/third/jquery.timeago.js +0 -214
  29. data/vendor/assets/javascripts/landing/third/jquery.tubular.1.0.js +0 -148
  30. data/vendor/assets/javascripts/landing/third/matchMedia.js +0 -46
  31. data/vendor/assets/javascripts/landing/third/owl.carousel.min.js +0 -47
  32. data/vendor/assets/javascripts/landing/third/tweetie.js +0 -142
  33. data/vendor/assets/javascripts/landing/third/waypoints.js +0 -8
  34. data/vendor/assets/javascripts/landing/third/wow.min.js +0 -2
  35. data/vendor/assets/stylesheets/app_mate.css +0 -0
  36. data/vendor/assets/stylesheets/landing/app_mate/animate.min.css +0 -6
  37. data/vendor/assets/stylesheets/landing/app_mate/blog-single.css +0 -657
  38. data/vendor/assets/stylesheets/landing/app_mate/blog.css +0 -168
  39. data/vendor/assets/stylesheets/landing/app_mate/bootstrap.css +0 -6358
  40. data/vendor/assets/stylesheets/landing/app_mate/bootstrap.min.css +0 -10
  41. data/vendor/assets/stylesheets/landing/app_mate/colors/color1.css +0 -164
  42. data/vendor/assets/stylesheets/landing/app_mate/colors/color2.css +0 -164
  43. data/vendor/assets/stylesheets/landing/app_mate/colors/color3.css +0 -164
  44. data/vendor/assets/stylesheets/landing/app_mate/colors/color4.css +0 -164
  45. data/vendor/assets/stylesheets/landing/app_mate/colors/color5.css +0 -164
  46. data/vendor/assets/stylesheets/landing/app_mate/colors/color6.css +0 -164
  47. data/vendor/assets/stylesheets/landing/app_mate/colors/color7.css +0 -164
  48. data/vendor/assets/stylesheets/landing/app_mate/colors/color8.css +0 -164
  49. data/vendor/assets/stylesheets/landing/app_mate/font-awesome.min.css +0 -4
  50. data/vendor/assets/stylesheets/landing/app_mate/fonts.css +0 -75
  51. data/vendor/assets/stylesheets/landing/app_mate/ionicons.min.css +0 -11
  52. data/vendor/assets/stylesheets/landing/app_mate/main.css +0 -2500
  53. data/vendor/assets/stylesheets/landing/app_mate/materialize.min.css +0 -16
  54. data/vendor/assets/stylesheets/landing/app_mate/responsive.css +0 -856
  55. data/vendor/assets/stylesheets/landing/owl-carousel/AjaxLoader.gif +0 -0
  56. data/vendor/assets/stylesheets/landing/owl-carousel/grabbing.png +0 -0
  57. data/vendor/assets/stylesheets/landing/owl-carousel/owl.carousel.css +0 -71
  58. data/vendor/assets/stylesheets/landing/owl-carousel/owl.theme.css +0 -79
  59. data/vendor/assets/stylesheets/landing/owl-carousel/owl.transitions.css +0 -163
@@ -1,47 +0,0 @@
1
- "function"!==typeof Object.create&&(Object.create=function(f){function g(){}g.prototype=f;return new g});
2
- (function(f,g,k){var l={init:function(a,b){this.$elem=f(b);this.options=f.extend({},f.fn.owlCarousel.options,this.$elem.data(),a);this.userOptions=a;this.loadContent()},loadContent:function(){function a(a){var d,e="";if("function"===typeof b.options.jsonSuccess)b.options.jsonSuccess.apply(this,[a]);else{for(d in a.owl)a.owl.hasOwnProperty(d)&&(e+=a.owl[d].item);b.$elem.html(e)}b.logIn()}var b=this,e;"function"===typeof b.options.beforeInit&&b.options.beforeInit.apply(this,[b.$elem]);"string"===typeof b.options.jsonPath?
3
- (e=b.options.jsonPath,f.getJSON(e,a)):b.logIn()},logIn:function(){this.$elem.data("owl-originalStyles",this.$elem.attr("style"));this.$elem.data("owl-originalClasses",this.$elem.attr("class"));this.$elem.css({opacity:0});this.orignalItems=this.options.items;this.checkBrowser();this.wrapperWidth=0;this.checkVisible=null;this.setVars()},setVars:function(){if(0===this.$elem.children().length)return!1;this.baseClass();this.eventTypes();this.$userItems=this.$elem.children();this.itemsAmount=this.$userItems.length;
4
- this.wrapItems();this.$owlItems=this.$elem.find(".owl-item");this.$owlWrapper=this.$elem.find(".owl-wrapper");this.playDirection="next";this.prevItem=0;this.prevArr=[0];this.currentItem=0;this.customEvents();this.onStartup()},onStartup:function(){this.updateItems();this.calculateAll();this.buildControls();this.updateControls();this.response();this.moveEvents();this.stopOnHover();this.owlStatus();!1!==this.options.transitionStyle&&this.transitionTypes(this.options.transitionStyle);!0===this.options.autoPlay&&
5
- (this.options.autoPlay=5E3);this.play();this.$elem.find(".owl-wrapper").css("display","block");this.$elem.is(":visible")?this.$elem.css("opacity",1):this.watchVisibility();this.onstartup=!1;this.eachMoveUpdate();"function"===typeof this.options.afterInit&&this.options.afterInit.apply(this,[this.$elem])},eachMoveUpdate:function(){!0===this.options.lazyLoad&&this.lazyLoad();!0===this.options.autoHeight&&this.autoHeight();this.onVisibleItems();"function"===typeof this.options.afterAction&&this.options.afterAction.apply(this,
6
- [this.$elem])},updateVars:function(){"function"===typeof this.options.beforeUpdate&&this.options.beforeUpdate.apply(this,[this.$elem]);this.watchVisibility();this.updateItems();this.calculateAll();this.updatePosition();this.updateControls();this.eachMoveUpdate();"function"===typeof this.options.afterUpdate&&this.options.afterUpdate.apply(this,[this.$elem])},reload:function(){var a=this;g.setTimeout(function(){a.updateVars()},0)},watchVisibility:function(){var a=this;if(!1===a.$elem.is(":visible"))a.$elem.css({opacity:0}),
7
- g.clearInterval(a.autoPlayInterval),g.clearInterval(a.checkVisible);else return!1;a.checkVisible=g.setInterval(function(){a.$elem.is(":visible")&&(a.reload(),a.$elem.animate({opacity:1},200),g.clearInterval(a.checkVisible))},500)},wrapItems:function(){this.$userItems.wrapAll('<div class="owl-wrapper">').wrap('<div class="owl-item"></div>');this.$elem.find(".owl-wrapper").wrap('<div class="owl-wrapper-outer">');this.wrapperOuter=this.$elem.find(".owl-wrapper-outer");this.$elem.css("display","block")},
8
- baseClass:function(){var a=this.$elem.hasClass(this.options.baseClass),b=this.$elem.hasClass(this.options.theme);a||this.$elem.addClass(this.options.baseClass);b||this.$elem.addClass(this.options.theme)},updateItems:function(){var a,b;if(!1===this.options.responsive)return!1;if(!0===this.options.singleItem)return this.options.items=this.orignalItems=1,this.options.itemsCustom=!1,this.options.itemsDesktop=!1,this.options.itemsDesktopSmall=!1,this.options.itemsTablet=!1,this.options.itemsTabletSmall=
9
- !1,this.options.itemsMobile=!1;a=f(this.options.responsiveBaseWidth).width();a>(this.options.itemsDesktop[0]||this.orignalItems)&&(this.options.items=this.orignalItems);if(!1!==this.options.itemsCustom)for(this.options.itemsCustom.sort(function(a,b){return a[0]-b[0]}),b=0;b<this.options.itemsCustom.length;b+=1)this.options.itemsCustom[b][0]<=a&&(this.options.items=this.options.itemsCustom[b][1]);else a<=this.options.itemsDesktop[0]&&!1!==this.options.itemsDesktop&&(this.options.items=this.options.itemsDesktop[1]),
10
- a<=this.options.itemsDesktopSmall[0]&&!1!==this.options.itemsDesktopSmall&&(this.options.items=this.options.itemsDesktopSmall[1]),a<=this.options.itemsTablet[0]&&!1!==this.options.itemsTablet&&(this.options.items=this.options.itemsTablet[1]),a<=this.options.itemsTabletSmall[0]&&!1!==this.options.itemsTabletSmall&&(this.options.items=this.options.itemsTabletSmall[1]),a<=this.options.itemsMobile[0]&&!1!==this.options.itemsMobile&&(this.options.items=this.options.itemsMobile[1]);this.options.items>this.itemsAmount&&
11
- !0===this.options.itemsScaleUp&&(this.options.items=this.itemsAmount)},response:function(){var a=this,b,e;if(!0!==a.options.responsive)return!1;e=f(g).width();a.resizer=function(){f(g).width()!==e&&(!1!==a.options.autoPlay&&g.clearInterval(a.autoPlayInterval),g.clearTimeout(b),b=g.setTimeout(function(){e=f(g).width();a.updateVars()},a.options.responsiveRefreshRate))};f(g).resize(a.resizer)},updatePosition:function(){this.jumpTo(this.currentItem);!1!==this.options.autoPlay&&this.checkAp()},appendItemsSizes:function(){var a=
12
- this,b=0,e=a.itemsAmount-a.options.items;a.$owlItems.each(function(c){var d=f(this);d.css({width:a.itemWidth}).data("owl-item",Number(c));if(0===c%a.options.items||c===e)c>e||(b+=1);d.data("owl-roundPages",b)})},appendWrapperSizes:function(){this.$owlWrapper.css({width:this.$owlItems.length*this.itemWidth*2,left:0});this.appendItemsSizes()},calculateAll:function(){this.calculateWidth();this.appendWrapperSizes();this.loops();this.max()},calculateWidth:function(){this.itemWidth=Math.round(this.$elem.width()/
13
- this.options.items)},max:function(){var a=-1*(this.itemsAmount*this.itemWidth-this.options.items*this.itemWidth);this.options.items>this.itemsAmount?this.maximumPixels=a=this.maximumItem=0:(this.maximumItem=this.itemsAmount-this.options.items,this.maximumPixels=a);return a},min:function(){return 0},loops:function(){var a=0,b=0,e,c;this.positionsInArray=[0];this.pagesInArray=[];for(e=0;e<this.itemsAmount;e+=1)b+=this.itemWidth,this.positionsInArray.push(-b),!0===this.options.scrollPerPage&&(c=f(this.$owlItems[e]),
14
- c=c.data("owl-roundPages"),c!==a&&(this.pagesInArray[a]=this.positionsInArray[e],a=c))},buildControls:function(){if(!0===this.options.navigation||!0===this.options.pagination)this.owlControls=f('<div class="owl-controls"/>').toggleClass("clickable",!this.browser.isTouch).appendTo(this.$elem);!0===this.options.pagination&&this.buildPagination();!0===this.options.navigation&&this.buildButtons()},buildButtons:function(){var a=this,b=f('<div class="owl-buttons"/>');a.owlControls.append(b);a.buttonPrev=
15
- f("<div/>",{"class":"owl-prev",html:a.options.navigationText[0]||""});a.buttonNext=f("<div/>",{"class":"owl-next",html:a.options.navigationText[1]||""});b.append(a.buttonPrev).append(a.buttonNext);b.on("touchstart.owlControls mousedown.owlControls",'div[class^="owl"]',function(a){a.preventDefault()});b.on("touchend.owlControls mouseup.owlControls",'div[class^="owl"]',function(b){b.preventDefault();f(this).hasClass("owl-next")?a.next():a.prev()})},buildPagination:function(){var a=this;a.paginationWrapper=
16
- f('<div class="owl-pagination"/>');a.owlControls.append(a.paginationWrapper);a.paginationWrapper.on("touchend.owlControls mouseup.owlControls",".owl-page",function(b){b.preventDefault();Number(f(this).data("owl-page"))!==a.currentItem&&a.goTo(Number(f(this).data("owl-page")),!0)})},updatePagination:function(){var a,b,e,c,d,g;if(!1===this.options.pagination)return!1;this.paginationWrapper.html("");a=0;b=this.itemsAmount-this.itemsAmount%this.options.items;for(c=0;c<this.itemsAmount;c+=1)0===c%this.options.items&&
17
- (a+=1,b===c&&(e=this.itemsAmount-this.options.items),d=f("<div/>",{"class":"owl-page"}),g=f("<span></span>",{text:!0===this.options.paginationNumbers?a:"","class":!0===this.options.paginationNumbers?"owl-numbers":""}),d.append(g),d.data("owl-page",b===c?e:c),d.data("owl-roundPages",a),this.paginationWrapper.append(d));this.checkPagination()},checkPagination:function(){var a=this;if(!1===a.options.pagination)return!1;a.paginationWrapper.find(".owl-page").each(function(){f(this).data("owl-roundPages")===
18
- f(a.$owlItems[a.currentItem]).data("owl-roundPages")&&(a.paginationWrapper.find(".owl-page").removeClass("active"),f(this).addClass("active"))})},checkNavigation:function(){if(!1===this.options.navigation)return!1;!1===this.options.rewindNav&&(0===this.currentItem&&0===this.maximumItem?(this.buttonPrev.addClass("disabled"),this.buttonNext.addClass("disabled")):0===this.currentItem&&0!==this.maximumItem?(this.buttonPrev.addClass("disabled"),this.buttonNext.removeClass("disabled")):this.currentItem===
19
- this.maximumItem?(this.buttonPrev.removeClass("disabled"),this.buttonNext.addClass("disabled")):0!==this.currentItem&&this.currentItem!==this.maximumItem&&(this.buttonPrev.removeClass("disabled"),this.buttonNext.removeClass("disabled")))},updateControls:function(){this.updatePagination();this.checkNavigation();this.owlControls&&(this.options.items>=this.itemsAmount?this.owlControls.hide():this.owlControls.show())},destroyControls:function(){this.owlControls&&this.owlControls.remove()},next:function(a){if(this.isTransition)return!1;
20
- this.currentItem+=!0===this.options.scrollPerPage?this.options.items:1;if(this.currentItem>this.maximumItem+(!0===this.options.scrollPerPage?this.options.items-1:0))if(!0===this.options.rewindNav)this.currentItem=0,a="rewind";else return this.currentItem=this.maximumItem,!1;this.goTo(this.currentItem,a)},prev:function(a){if(this.isTransition)return!1;this.currentItem=!0===this.options.scrollPerPage&&0<this.currentItem&&this.currentItem<this.options.items?0:this.currentItem-(!0===this.options.scrollPerPage?
21
- this.options.items:1);if(0>this.currentItem)if(!0===this.options.rewindNav)this.currentItem=this.maximumItem,a="rewind";else return this.currentItem=0,!1;this.goTo(this.currentItem,a)},goTo:function(a,b,e){var c=this;if(c.isTransition)return!1;"function"===typeof c.options.beforeMove&&c.options.beforeMove.apply(this,[c.$elem]);a>=c.maximumItem?a=c.maximumItem:0>=a&&(a=0);c.currentItem=c.owl.currentItem=a;if(!1!==c.options.transitionStyle&&"drag"!==e&&1===c.options.items&&!0===c.browser.support3d)return c.swapSpeed(0),
22
- !0===c.browser.support3d?c.transition3d(c.positionsInArray[a]):c.css2slide(c.positionsInArray[a],1),c.afterGo(),c.singleItemTransition(),!1;a=c.positionsInArray[a];!0===c.browser.support3d?(c.isCss3Finish=!1,!0===b?(c.swapSpeed("paginationSpeed"),g.setTimeout(function(){c.isCss3Finish=!0},c.options.paginationSpeed)):"rewind"===b?(c.swapSpeed(c.options.rewindSpeed),g.setTimeout(function(){c.isCss3Finish=!0},c.options.rewindSpeed)):(c.swapSpeed("slideSpeed"),g.setTimeout(function(){c.isCss3Finish=!0},
23
- c.options.slideSpeed)),c.transition3d(a)):!0===b?c.css2slide(a,c.options.paginationSpeed):"rewind"===b?c.css2slide(a,c.options.rewindSpeed):c.css2slide(a,c.options.slideSpeed);c.afterGo()},jumpTo:function(a){"function"===typeof this.options.beforeMove&&this.options.beforeMove.apply(this,[this.$elem]);a>=this.maximumItem||-1===a?a=this.maximumItem:0>=a&&(a=0);this.swapSpeed(0);!0===this.browser.support3d?this.transition3d(this.positionsInArray[a]):this.css2slide(this.positionsInArray[a],1);this.currentItem=
24
- this.owl.currentItem=a;this.afterGo()},afterGo:function(){this.prevArr.push(this.currentItem);this.prevItem=this.owl.prevItem=this.prevArr[this.prevArr.length-2];this.prevArr.shift(0);this.prevItem!==this.currentItem&&(this.checkPagination(),this.checkNavigation(),this.eachMoveUpdate(),!1!==this.options.autoPlay&&this.checkAp());"function"===typeof this.options.afterMove&&this.prevItem!==this.currentItem&&this.options.afterMove.apply(this,[this.$elem])},stop:function(){this.apStatus="stop";g.clearInterval(this.autoPlayInterval)},
25
- checkAp:function(){"stop"!==this.apStatus&&this.play()},play:function(){var a=this;a.apStatus="play";if(!1===a.options.autoPlay)return!1;g.clearInterval(a.autoPlayInterval);a.autoPlayInterval=g.setInterval(function(){a.next(!0)},a.options.autoPlay)},swapSpeed:function(a){"slideSpeed"===a?this.$owlWrapper.css(this.addCssSpeed(this.options.slideSpeed)):"paginationSpeed"===a?this.$owlWrapper.css(this.addCssSpeed(this.options.paginationSpeed)):"string"!==typeof a&&this.$owlWrapper.css(this.addCssSpeed(a))},
26
- addCssSpeed:function(a){return{"-webkit-transition":"all "+a+"ms ease","-moz-transition":"all "+a+"ms ease","-o-transition":"all "+a+"ms ease",transition:"all "+a+"ms ease"}},removeTransition:function(){return{"-webkit-transition":"","-moz-transition":"","-o-transition":"",transition:""}},doTranslate:function(a){return{"-webkit-transform":"translate3d("+a+"px, 0px, 0px)","-moz-transform":"translate3d("+a+"px, 0px, 0px)","-o-transform":"translate3d("+a+"px, 0px, 0px)","-ms-transform":"translate3d("+
27
- a+"px, 0px, 0px)",transform:"translate3d("+a+"px, 0px,0px)"}},transition3d:function(a){this.$owlWrapper.css(this.doTranslate(a))},css2move:function(a){this.$owlWrapper.css({left:a})},css2slide:function(a,b){var e=this;e.isCssFinish=!1;e.$owlWrapper.stop(!0,!0).animate({left:a},{duration:b||e.options.slideSpeed,complete:function(){e.isCssFinish=!0}})},checkBrowser:function(){var a=k.createElement("div");a.style.cssText=" -moz-transform:translate3d(0px, 0px, 0px); -ms-transform:translate3d(0px, 0px, 0px); -o-transform:translate3d(0px, 0px, 0px); -webkit-transform:translate3d(0px, 0px, 0px); transform:translate3d(0px, 0px, 0px)";
28
- a=a.style.cssText.match(/translate3d\(0px, 0px, 0px\)/g);this.browser={support3d:null!==a&&1===a.length,isTouch:"ontouchstart"in g||g.navigator.msMaxTouchPoints}},moveEvents:function(){if(!1!==this.options.mouseDrag||!1!==this.options.touchDrag)this.gestures(),this.disabledEvents()},eventTypes:function(){var a=["s","e","x"];this.ev_types={};!0===this.options.mouseDrag&&!0===this.options.touchDrag?a=["touchstart.owl mousedown.owl","touchmove.owl mousemove.owl","touchend.owl touchcancel.owl mouseup.owl"]:
29
- !1===this.options.mouseDrag&&!0===this.options.touchDrag?a=["touchstart.owl","touchmove.owl","touchend.owl touchcancel.owl"]:!0===this.options.mouseDrag&&!1===this.options.touchDrag&&(a=["mousedown.owl","mousemove.owl","mouseup.owl"]);this.ev_types.start=a[0];this.ev_types.move=a[1];this.ev_types.end=a[2]},disabledEvents:function(){this.$elem.on("dragstart.owl",function(a){a.preventDefault()});this.$elem.on("mousedown.disableTextSelect",function(a){return f(a.target).is("input, textarea, select, option")})},
30
- gestures:function(){function a(a){if(void 0!==a.touches)return{x:a.touches[0].pageX,y:a.touches[0].pageY};if(void 0===a.touches){if(void 0!==a.pageX)return{x:a.pageX,y:a.pageY};if(void 0===a.pageX)return{x:a.clientX,y:a.clientY}}}function b(a){"on"===a?(f(k).on(d.ev_types.move,e),f(k).on(d.ev_types.end,c)):"off"===a&&(f(k).off(d.ev_types.move),f(k).off(d.ev_types.end))}function e(b){b=b.originalEvent||b||g.event;d.newPosX=a(b).x-h.offsetX;d.newPosY=a(b).y-h.offsetY;d.newRelativeX=d.newPosX-h.relativePos;
31
- "function"===typeof d.options.startDragging&&!0!==h.dragging&&0!==d.newRelativeX&&(h.dragging=!0,d.options.startDragging.apply(d,[d.$elem]));(8<d.newRelativeX||-8>d.newRelativeX)&&!0===d.browser.isTouch&&(void 0!==b.preventDefault?b.preventDefault():b.returnValue=!1,h.sliding=!0);(10<d.newPosY||-10>d.newPosY)&&!1===h.sliding&&f(k).off("touchmove.owl");d.newPosX=Math.max(Math.min(d.newPosX,d.newRelativeX/5),d.maximumPixels+d.newRelativeX/5);!0===d.browser.support3d?d.transition3d(d.newPosX):d.css2move(d.newPosX)}
32
- function c(a){a=a.originalEvent||a||g.event;var c;a.target=a.target||a.srcElement;h.dragging=!1;!0!==d.browser.isTouch&&d.$owlWrapper.removeClass("grabbing");d.dragDirection=0>d.newRelativeX?d.owl.dragDirection="left":d.owl.dragDirection="right";0!==d.newRelativeX&&(c=d.getNewPosition(),d.goTo(c,!1,"drag"),h.targetElement===a.target&&!0!==d.browser.isTouch&&(f(a.target).on("click.disable",function(a){a.stopImmediatePropagation();a.stopPropagation();a.preventDefault();f(a.target).off("click.disable")}),
33
- a=f._data(a.target,"events").click,c=a.pop(),a.splice(0,0,c)));b("off")}var d=this,h={offsetX:0,offsetY:0,baseElWidth:0,relativePos:0,position:null,minSwipe:null,maxSwipe:null,sliding:null,dargging:null,targetElement:null};d.isCssFinish=!0;d.$elem.on(d.ev_types.start,".owl-wrapper",function(c){c=c.originalEvent||c||g.event;var e;if(3===c.which)return!1;if(!(d.itemsAmount<=d.options.items)){if(!1===d.isCssFinish&&!d.options.dragBeforeAnimFinish||!1===d.isCss3Finish&&!d.options.dragBeforeAnimFinish)return!1;
34
- !1!==d.options.autoPlay&&g.clearInterval(d.autoPlayInterval);!0===d.browser.isTouch||d.$owlWrapper.hasClass("grabbing")||d.$owlWrapper.addClass("grabbing");d.newPosX=0;d.newRelativeX=0;f(this).css(d.removeTransition());e=f(this).position();h.relativePos=e.left;h.offsetX=a(c).x-e.left;h.offsetY=a(c).y-e.top;b("on");h.sliding=!1;h.targetElement=c.target||c.srcElement}})},getNewPosition:function(){var a=this.closestItem();a>this.maximumItem?a=this.currentItem=this.maximumItem:0<=this.newPosX&&(this.currentItem=
35
- a=0);return a},closestItem:function(){var a=this,b=!0===a.options.scrollPerPage?a.pagesInArray:a.positionsInArray,e=a.newPosX,c=null;f.each(b,function(d,g){e-a.itemWidth/20>b[d+1]&&e-a.itemWidth/20<g&&"left"===a.moveDirection()?(c=g,a.currentItem=!0===a.options.scrollPerPage?f.inArray(c,a.positionsInArray):d):e+a.itemWidth/20<g&&e+a.itemWidth/20>(b[d+1]||b[d]-a.itemWidth)&&"right"===a.moveDirection()&&(!0===a.options.scrollPerPage?(c=b[d+1]||b[b.length-1],a.currentItem=f.inArray(c,a.positionsInArray)):
36
- (c=b[d+1],a.currentItem=d+1))});return a.currentItem},moveDirection:function(){var a;0>this.newRelativeX?(a="right",this.playDirection="next"):(a="left",this.playDirection="prev");return a},customEvents:function(){var a=this;a.$elem.on("owl.next",function(){a.next()});a.$elem.on("owl.prev",function(){a.prev()});a.$elem.on("owl.play",function(b,e){a.options.autoPlay=e;a.play();a.hoverStatus="play"});a.$elem.on("owl.stop",function(){a.stop();a.hoverStatus="stop"});a.$elem.on("owl.goTo",function(b,e){a.goTo(e)});
37
- a.$elem.on("owl.jumpTo",function(b,e){a.jumpTo(e)})},stopOnHover:function(){var a=this;!0===a.options.stopOnHover&&!0!==a.browser.isTouch&&!1!==a.options.autoPlay&&(a.$elem.on("mouseover",function(){a.stop()}),a.$elem.on("mouseout",function(){"stop"!==a.hoverStatus&&a.play()}))},lazyLoad:function(){var a,b,e,c,d;if(!1===this.options.lazyLoad)return!1;for(a=0;a<this.itemsAmount;a+=1)b=f(this.$owlItems[a]),"loaded"!==b.data("owl-loaded")&&(e=b.data("owl-item"),c=b.find(".lazyOwl"),"string"!==typeof c.data("src")?
38
- b.data("owl-loaded","loaded"):(void 0===b.data("owl-loaded")&&(c.hide(),b.addClass("loading").data("owl-loaded","checked")),(d=!0===this.options.lazyFollow?e>=this.currentItem:!0)&&e<this.currentItem+this.options.items&&c.length&&this.lazyPreload(b,c)))},lazyPreload:function(a,b){function e(){a.data("owl-loaded","loaded").removeClass("loading");b.removeAttr("data-src");"fade"===d.options.lazyEffect?b.fadeIn(400):b.show();"function"===typeof d.options.afterLazyLoad&&d.options.afterLazyLoad.apply(this,
39
- [d.$elem])}function c(){f+=1;d.completeImg(b.get(0))||!0===k?e():100>=f?g.setTimeout(c,100):e()}var d=this,f=0,k;"DIV"===b.prop("tagName")?(b.css("background-image","url("+b.data("src")+")"),k=!0):b[0].src=b.data("src");c()},autoHeight:function(){function a(){var a=f(e.$owlItems[e.currentItem]).height();e.wrapperOuter.css("height",a+"px");e.wrapperOuter.hasClass("autoHeight")||g.setTimeout(function(){e.wrapperOuter.addClass("autoHeight")},0)}function b(){d+=1;e.completeImg(c.get(0))?a():100>=d?g.setTimeout(b,
40
- 100):e.wrapperOuter.css("height","")}var e=this,c=f(e.$owlItems[e.currentItem]).find("img"),d;void 0!==c.get(0)?(d=0,b()):a()},completeImg:function(a){return!a.complete||"undefined"!==typeof a.naturalWidth&&0===a.naturalWidth?!1:!0},onVisibleItems:function(){var a;!0===this.options.addClassActive&&this.$owlItems.removeClass("active");this.visibleItems=[];for(a=this.currentItem;a<this.currentItem+this.options.items;a+=1)this.visibleItems.push(a),!0===this.options.addClassActive&&f(this.$owlItems[a]).addClass("active");
41
- this.owl.visibleItems=this.visibleItems},transitionTypes:function(a){this.outClass="owl-"+a+"-out";this.inClass="owl-"+a+"-in"},singleItemTransition:function(){var a=this,b=a.outClass,e=a.inClass,c=a.$owlItems.eq(a.currentItem),d=a.$owlItems.eq(a.prevItem),f=Math.abs(a.positionsInArray[a.currentItem])+a.positionsInArray[a.prevItem],g=Math.abs(a.positionsInArray[a.currentItem])+a.itemWidth/2;a.isTransition=!0;a.$owlWrapper.addClass("owl-origin").css({"-webkit-transform-origin":g+"px","-moz-perspective-origin":g+
42
- "px","perspective-origin":g+"px"});d.css({position:"relative",left:f+"px"}).addClass(b).on("webkitAnimationEnd oAnimationEnd MSAnimationEnd animationend",function(){a.endPrev=!0;d.off("webkitAnimationEnd oAnimationEnd MSAnimationEnd animationend");a.clearTransStyle(d,b)});c.addClass(e).on("webkitAnimationEnd oAnimationEnd MSAnimationEnd animationend",function(){a.endCurrent=!0;c.off("webkitAnimationEnd oAnimationEnd MSAnimationEnd animationend");a.clearTransStyle(c,e)})},clearTransStyle:function(a,
43
- b){a.css({position:"",left:""}).removeClass(b);this.endPrev&&this.endCurrent&&(this.$owlWrapper.removeClass("owl-origin"),this.isTransition=this.endCurrent=this.endPrev=!1)},owlStatus:function(){this.owl={userOptions:this.userOptions,baseElement:this.$elem,userItems:this.$userItems,owlItems:this.$owlItems,currentItem:this.currentItem,prevItem:this.prevItem,visibleItems:this.visibleItems,isTouch:this.browser.isTouch,browser:this.browser,dragDirection:this.dragDirection}},clearEvents:function(){this.$elem.off(".owl owl mousedown.disableTextSelect");
44
- f(k).off(".owl owl");f(g).off("resize",this.resizer)},unWrap:function(){0!==this.$elem.children().length&&(this.$owlWrapper.unwrap(),this.$userItems.unwrap().unwrap(),this.owlControls&&this.owlControls.remove());this.clearEvents();this.$elem.attr("style",this.$elem.data("owl-originalStyles")||"").attr("class",this.$elem.data("owl-originalClasses"))},destroy:function(){this.stop();g.clearInterval(this.checkVisible);this.unWrap();this.$elem.removeData()},reinit:function(a){a=f.extend({},this.userOptions,
45
- a);this.unWrap();this.init(a,this.$elem)},addItem:function(a,b){var e;if(!a)return!1;if(0===this.$elem.children().length)return this.$elem.append(a),this.setVars(),!1;this.unWrap();e=void 0===b||-1===b?-1:b;e>=this.$userItems.length||-1===e?this.$userItems.eq(-1).after(a):this.$userItems.eq(e).before(a);this.setVars()},removeItem:function(a){if(0===this.$elem.children().length)return!1;a=void 0===a||-1===a?-1:a;this.unWrap();this.$userItems.eq(a).remove();this.setVars()}};f.fn.owlCarousel=function(a){return this.each(function(){if(!0===
46
- f(this).data("owl-init"))return!1;f(this).data("owl-init",!0);var b=Object.create(l);b.init(a,this);f.data(this,"owlCarousel",b)})};f.fn.owlCarousel.options={items:5,itemsCustom:!1,itemsDesktop:[1199,4],itemsDesktopSmall:[979,3],itemsTablet:[768,2],itemsTabletSmall:!1,itemsMobile:[479,1],singleItem:!1,itemsScaleUp:!1,slideSpeed:200,paginationSpeed:800,rewindSpeed:1E3,autoPlay:!1,stopOnHover:!1,navigation:!1,navigationText:["prev","next"],rewindNav:!0,scrollPerPage:!1,pagination:!0,paginationNumbers:!1,
47
- responsive:!0,responsiveRefreshRate:200,responsiveBaseWidth:g,baseClass:"owl-carousel",theme:"owl-theme",lazyLoad:!1,lazyFollow:!0,lazyEffect:"fade",autoHeight:!1,jsonPath:!1,jsonSuccess:!1,dragBeforeAnimFinish:!0,mouseDrag:!0,touchDrag:!0,addClassActive:!1,transitionStyle:!1,beforeUpdate:!1,afterUpdate:!1,beforeInit:!1,afterInit:!1,beforeMove:!1,afterMove:!1,afterAction:!1,startDragging:!1,afterLazyLoad:!1}})(jQuery,window,document);
File without changes
@@ -1,7 +0,0 @@
1
- /**
2
- * jQuery.browser.mobile (http://detectmobilebrowser.com/)
3
- *
4
- * jQuery.browser.mobile will be true if the browser is a mobile device
5
- *
6
- **/
7
- (function(a){(jQuery.browser=jQuery.browser||{}).mobile=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))})(navigator.userAgent||navigator.vendor||window.opera);
@@ -1,2149 +0,0 @@
1
- (function(root, factory) {
2
- if(typeof exports === 'object') {
3
- module.exports = factory();
4
- }
5
- else if(typeof define === 'function' && define.amd) {
6
- define('GMaps', [], factory);
7
- }
8
-
9
- root.GMaps = factory();
10
-
11
- }(this, function() {
12
-
13
- /*!
14
- * GMaps.js v0.4.16
15
- * http://hpneo.github.com/gmaps/
16
- *
17
- * Copyright 2014, Gustavo Leon
18
- * Released under the MIT License.
19
- */
20
-
21
- if (!(typeof window.google === 'object' && window.google.maps)) {
22
- throw 'Google Maps API is required. Please register the following JavaScript library http://maps.google.com/maps/api/js?sensor=true.'
23
- }
24
-
25
- var extend_object = function(obj, new_obj) {
26
- var name;
27
-
28
- if (obj === new_obj) {
29
- return obj;
30
- }
31
-
32
- for (name in new_obj) {
33
- obj[name] = new_obj[name];
34
- }
35
-
36
- return obj;
37
- };
38
-
39
- var replace_object = function(obj, replace) {
40
- var name;
41
-
42
- if (obj === replace) {
43
- return obj;
44
- }
45
-
46
- for (name in replace) {
47
- if (obj[name] != undefined) {
48
- obj[name] = replace[name];
49
- }
50
- }
51
-
52
- return obj;
53
- };
54
-
55
- var array_map = function(array, callback) {
56
- var original_callback_params = Array.prototype.slice.call(arguments, 2),
57
- array_return = [],
58
- array_length = array.length,
59
- i;
60
-
61
- if (Array.prototype.map && array.map === Array.prototype.map) {
62
- array_return = Array.prototype.map.call(array, function(item) {
63
- callback_params = original_callback_params;
64
- callback_params.splice(0, 0, item);
65
-
66
- return callback.apply(this, callback_params);
67
- });
68
- }
69
- else {
70
- for (i = 0; i < array_length; i++) {
71
- callback_params = original_callback_params;
72
- callback_params.splice(0, 0, array[i]);
73
- array_return.push(callback.apply(this, callback_params));
74
- }
75
- }
76
-
77
- return array_return;
78
- };
79
-
80
- var array_flat = function(array) {
81
- var new_array = [],
82
- i;
83
-
84
- for (i = 0; i < array.length; i++) {
85
- new_array = new_array.concat(array[i]);
86
- }
87
-
88
- return new_array;
89
- };
90
-
91
- var coordsToLatLngs = function(coords, useGeoJSON) {
92
- var first_coord = coords[0],
93
- second_coord = coords[1];
94
-
95
- if (useGeoJSON) {
96
- first_coord = coords[1];
97
- second_coord = coords[0];
98
- }
99
-
100
- return new google.maps.LatLng(first_coord, second_coord);
101
- };
102
-
103
- var arrayToLatLng = function(coords, useGeoJSON) {
104
- var i;
105
-
106
- for (i = 0; i < coords.length; i++) {
107
- if (!(coords[i] instanceof google.maps.LatLng)) {
108
- if (coords[i].length > 0 && typeof(coords[i][0]) == "object") {
109
- coords[i] = arrayToLatLng(coords[i], useGeoJSON);
110
- }
111
- else {
112
- coords[i] = coordsToLatLngs(coords[i], useGeoJSON);
113
- }
114
- }
115
- }
116
-
117
- return coords;
118
- };
119
-
120
- var getElementById = function(id, context) {
121
- var element,
122
- id = id.replace('#', '');
123
-
124
- if ('jQuery' in this && context) {
125
- element = $("#" + id, context)[0];
126
- } else {
127
- element = document.getElementById(id);
128
- };
129
-
130
- return element;
131
- };
132
-
133
- var findAbsolutePosition = function(obj) {
134
- var curleft = 0,
135
- curtop = 0;
136
-
137
- if (obj.offsetParent) {
138
- do {
139
- curleft += obj.offsetLeft;
140
- curtop += obj.offsetTop;
141
- } while (obj = obj.offsetParent);
142
- }
143
-
144
- return [curleft, curtop];
145
- };
146
-
147
- var GMaps = (function(global) {
148
- "use strict";
149
-
150
- var doc = document;
151
-
152
- var GMaps = function(options) {
153
- if (!this) return new GMaps(options);
154
-
155
- options.zoom = options.zoom || 15;
156
- options.mapType = options.mapType || 'roadmap';
157
-
158
- var self = this,
159
- i,
160
- events_that_hide_context_menu = ['bounds_changed', 'center_changed', 'click', 'dblclick', 'drag', 'dragend', 'dragstart', 'idle', 'maptypeid_changed', 'projection_changed', 'resize', 'tilesloaded', 'zoom_changed'],
161
- events_that_doesnt_hide_context_menu = ['mousemove', 'mouseout', 'mouseover'],
162
- options_to_be_deleted = ['el', 'lat', 'lng', 'mapType', 'width', 'height', 'markerClusterer', 'enableNewStyle'],
163
- container_id = options.el || options.div,
164
- markerClustererFunction = options.markerClusterer,
165
- mapType = google.maps.MapTypeId[options.mapType.toUpperCase()],
166
- map_center = new google.maps.LatLng(options.lat, options.lng),
167
- zoomControl = options.zoomControl || true,
168
- zoomControlOpt = options.zoomControlOpt || {
169
- style: 'DEFAULT',
170
- position: 'TOP_LEFT'
171
- },
172
- zoomControlStyle = zoomControlOpt.style || 'DEFAULT',
173
- zoomControlPosition = zoomControlOpt.position || 'TOP_LEFT',
174
- panControl = options.panControl || true,
175
- mapTypeControl = options.mapTypeControl || true,
176
- scaleControl = options.scaleControl || true,
177
- streetViewControl = options.streetViewControl || true,
178
- overviewMapControl = overviewMapControl || true,
179
- map_options = {},
180
- map_base_options = {
181
- zoom: this.zoom,
182
- center: map_center,
183
- mapTypeId: mapType
184
- },
185
- map_controls_options = {
186
- panControl: panControl,
187
- zoomControl: zoomControl,
188
- zoomControlOptions: {
189
- style: google.maps.ZoomControlStyle[zoomControlStyle],
190
- position: google.maps.ControlPosition[zoomControlPosition]
191
- },
192
- mapTypeControl: mapTypeControl,
193
- scaleControl: scaleControl,
194
- streetViewControl: streetViewControl,
195
- overviewMapControl: overviewMapControl
196
- };
197
-
198
- if (typeof(options.el) === 'string' || typeof(options.div) === 'string') {
199
- this.el = getElementById(container_id, options.context);
200
- } else {
201
- this.el = container_id;
202
- }
203
-
204
- if (typeof(this.el) === 'undefined' || this.el === null) {
205
- throw 'No element defined.';
206
- }
207
-
208
- window.context_menu = window.context_menu || {};
209
- window.context_menu[self.el.id] = {};
210
-
211
- this.controls = [];
212
- this.overlays = [];
213
- this.layers = []; // array with kml/georss and fusiontables layers, can be as many
214
- this.singleLayers = {}; // object with the other layers, only one per layer
215
- this.markers = [];
216
- this.polylines = [];
217
- this.routes = [];
218
- this.polygons = [];
219
- this.infoWindow = null;
220
- this.overlay_el = null;
221
- this.zoom = options.zoom;
222
- this.registered_events = {};
223
-
224
- this.el.style.width = options.width || this.el.scrollWidth || this.el.offsetWidth;
225
- this.el.style.height = options.height || this.el.scrollHeight || this.el.offsetHeight;
226
-
227
- google.maps.visualRefresh = options.enableNewStyle;
228
-
229
- for (i = 0; i < options_to_be_deleted.length; i++) {
230
- delete options[options_to_be_deleted[i]];
231
- }
232
-
233
- if(options.disableDefaultUI != true) {
234
- map_base_options = extend_object(map_base_options, map_controls_options);
235
- }
236
-
237
- map_options = extend_object(map_base_options, options);
238
-
239
- for (i = 0; i < events_that_hide_context_menu.length; i++) {
240
- delete map_options[events_that_hide_context_menu[i]];
241
- }
242
-
243
- for (i = 0; i < events_that_doesnt_hide_context_menu.length; i++) {
244
- delete map_options[events_that_doesnt_hide_context_menu[i]];
245
- }
246
-
247
- this.map = new google.maps.Map(this.el, map_options);
248
-
249
- if (markerClustererFunction) {
250
- this.markerClusterer = markerClustererFunction.apply(this, [this.map]);
251
- }
252
-
253
- var buildContextMenuHTML = function(control, e) {
254
- var html = '',
255
- options = window.context_menu[self.el.id][control];
256
-
257
- for (var i in options){
258
- if (options.hasOwnProperty(i)) {
259
- var option = options[i];
260
-
261
- html += '<li><a id="' + control + '_' + i + '" href="#">' + option.title + '</a></li>';
262
- }
263
- }
264
-
265
- if (!getElementById('gmaps_context_menu')) return;
266
-
267
- var context_menu_element = getElementById('gmaps_context_menu');
268
-
269
- context_menu_element.innerHTML = html;
270
-
271
- var context_menu_items = context_menu_element.getElementsByTagName('a'),
272
- context_menu_items_count = context_menu_items.length,
273
- i;
274
-
275
- for (i = 0; i < context_menu_items_count; i++) {
276
- var context_menu_item = context_menu_items[i];
277
-
278
- var assign_menu_item_action = function(ev){
279
- ev.preventDefault();
280
-
281
- options[this.id.replace(control + '_', '')].action.apply(self, [e]);
282
- self.hideContextMenu();
283
- };
284
-
285
- google.maps.event.clearListeners(context_menu_item, 'click');
286
- google.maps.event.addDomListenerOnce(context_menu_item, 'click', assign_menu_item_action, false);
287
- }
288
-
289
- var position = findAbsolutePosition.apply(this, [self.el]),
290
- left = position[0] + e.pixel.x - 15,
291
- top = position[1] + e.pixel.y- 15;
292
-
293
- context_menu_element.style.left = left + "px";
294
- context_menu_element.style.top = top + "px";
295
-
296
- context_menu_element.style.display = 'block';
297
- };
298
-
299
- this.buildContextMenu = function(control, e) {
300
- if (control === 'marker') {
301
- e.pixel = {};
302
-
303
- var overlay = new google.maps.OverlayView();
304
- overlay.setMap(self.map);
305
-
306
- overlay.draw = function() {
307
- var projection = overlay.getProjection(),
308
- position = e.marker.getPosition();
309
-
310
- e.pixel = projection.fromLatLngToContainerPixel(position);
311
-
312
- buildContextMenuHTML(control, e);
313
- };
314
- }
315
- else {
316
- buildContextMenuHTML(control, e);
317
- }
318
- };
319
-
320
- this.setContextMenu = function(options) {
321
- window.context_menu[self.el.id][options.control] = {};
322
-
323
- var i,
324
- ul = doc.createElement('ul');
325
-
326
- for (i in options.options) {
327
- if (options.options.hasOwnProperty(i)) {
328
- var option = options.options[i];
329
-
330
- window.context_menu[self.el.id][options.control][option.name] = {
331
- title: option.title,
332
- action: option.action
333
- };
334
- }
335
- }
336
-
337
- ul.id = 'gmaps_context_menu';
338
- ul.style.display = 'none';
339
- ul.style.position = 'absolute';
340
- ul.style.minWidth = '100px';
341
- ul.style.background = 'white';
342
- ul.style.listStyle = 'none';
343
- ul.style.padding = '8px';
344
- ul.style.boxShadow = '2px 2px 6px #ccc';
345
-
346
- doc.body.appendChild(ul);
347
-
348
- var context_menu_element = getElementById('gmaps_context_menu')
349
-
350
- google.maps.event.addDomListener(context_menu_element, 'mouseout', function(ev) {
351
- if (!ev.relatedTarget || !this.contains(ev.relatedTarget)) {
352
- window.setTimeout(function(){
353
- context_menu_element.style.display = 'none';
354
- }, 400);
355
- }
356
- }, false);
357
- };
358
-
359
- this.hideContextMenu = function() {
360
- var context_menu_element = getElementById('gmaps_context_menu');
361
-
362
- if (context_menu_element) {
363
- context_menu_element.style.display = 'none';
364
- }
365
- };
366
-
367
- var setupListener = function(object, name) {
368
- google.maps.event.addListener(object, name, function(e){
369
- if (e == undefined) {
370
- e = this;
371
- }
372
-
373
- options[name].apply(this, [e]);
374
-
375
- self.hideContextMenu();
376
- });
377
- };
378
-
379
- //google.maps.event.addListener(this.map, 'idle', this.hideContextMenu);
380
- google.maps.event.addListener(this.map, 'zoom_changed', this.hideContextMenu);
381
-
382
- for (var ev = 0; ev < events_that_hide_context_menu.length; ev++) {
383
- var name = events_that_hide_context_menu[ev];
384
-
385
- if (name in options) {
386
- setupListener(this.map, name);
387
- }
388
- }
389
-
390
- for (var ev = 0; ev < events_that_doesnt_hide_context_menu.length; ev++) {
391
- var name = events_that_doesnt_hide_context_menu[ev];
392
-
393
- if (name in options) {
394
- setupListener(this.map, name);
395
- }
396
- }
397
-
398
- google.maps.event.addListener(this.map, 'rightclick', function(e) {
399
- if (options.rightclick) {
400
- options.rightclick.apply(this, [e]);
401
- }
402
-
403
- if(window.context_menu[self.el.id]['map'] != undefined) {
404
- self.buildContextMenu('map', e);
405
- }
406
- });
407
-
408
- this.refresh = function() {
409
- google.maps.event.trigger(this.map, 'resize');
410
- };
411
-
412
- this.fitZoom = function() {
413
- var latLngs = [],
414
- markers_length = this.markers.length,
415
- i;
416
-
417
- for (i = 0; i < markers_length; i++) {
418
- if(typeof(this.markers[i].visible) === 'boolean' && this.markers[i].visible) {
419
- latLngs.push(this.markers[i].getPosition());
420
- }
421
- }
422
-
423
- this.fitLatLngBounds(latLngs);
424
- };
425
-
426
- this.fitLatLngBounds = function(latLngs) {
427
- var total = latLngs.length;
428
- var bounds = new google.maps.LatLngBounds();
429
-
430
- for(var i=0; i < total; i++) {
431
- bounds.extend(latLngs[i]);
432
- }
433
-
434
- this.map.fitBounds(bounds);
435
- };
436
-
437
- this.setCenter = function(lat, lng, callback) {
438
- this.map.panTo(new google.maps.LatLng(lat, lng));
439
-
440
- if (callback) {
441
- callback();
442
- }
443
- };
444
-
445
- this.getElement = function() {
446
- return this.el;
447
- };
448
-
449
- this.zoomIn = function(value) {
450
- value = value || 1;
451
-
452
- this.zoom = this.map.getZoom() + value;
453
- this.map.setZoom(this.zoom);
454
- };
455
-
456
- this.zoomOut = function(value) {
457
- value = value || 1;
458
-
459
- this.zoom = this.map.getZoom() - value;
460
- this.map.setZoom(this.zoom);
461
- };
462
-
463
- var native_methods = [],
464
- method;
465
-
466
- for (method in this.map) {
467
- if (typeof(this.map[method]) == 'function' && !this[method]) {
468
- native_methods.push(method);
469
- }
470
- }
471
-
472
- for (i=0; i < native_methods.length; i++) {
473
- (function(gmaps, scope, method_name) {
474
- gmaps[method_name] = function(){
475
- return scope[method_name].apply(scope, arguments);
476
- };
477
- })(this, this.map, native_methods[i]);
478
- }
479
- };
480
-
481
- return GMaps;
482
- })(this);
483
-
484
- GMaps.prototype.createControl = function(options) {
485
- var control = document.createElement('div');
486
-
487
- control.style.cursor = 'pointer';
488
-
489
- if (options.disableDefaultStyles !== true) {
490
- control.style.fontFamily = 'Roboto, Arial, sans-serif';
491
- control.style.fontSize = '11px';
492
- control.style.boxShadow = 'rgba(0, 0, 0, 0.298039) 0px 1px 4px -1px';
493
- }
494
-
495
- for (var option in options.style) {
496
- control.style[option] = options.style[option];
497
- }
498
-
499
- if (options.id) {
500
- control.id = options.id;
501
- }
502
-
503
- if (options.classes) {
504
- control.className = options.classes;
505
- }
506
-
507
- if (options.content) {
508
- if (typeof options.content === 'string') {
509
- control.innerHTML = options.content;
510
- }
511
- else if (options.content instanceof HTMLElement) {
512
- control.appendChild(options.content);
513
- }
514
- }
515
-
516
- if (options.position) {
517
- control.position = google.maps.ControlPosition[options.position.toUpperCase()];
518
- }
519
-
520
- for (var ev in options.events) {
521
- (function(object, name) {
522
- google.maps.event.addDomListener(object, name, function(){
523
- options.events[name].apply(this, [this]);
524
- });
525
- })(control, ev);
526
- }
527
-
528
- control.index = 1;
529
-
530
- return control;
531
- };
532
-
533
- GMaps.prototype.addControl = function(options) {
534
- var control = this.createControl(options);
535
- this.controls.push(control);
536
- this.map.controls[control.position].push(control);
537
-
538
- return control;
539
- };
540
-
541
- GMaps.prototype.removeControl = function(control) {
542
- var position = null;
543
-
544
- for (var i = 0; i < this.controls.length; i++) {
545
- if (this.controls[i] == control) {
546
- position = this.controls[i].position;
547
- this.controls.splice(i, 1);
548
- }
549
- }
550
-
551
- if (position) {
552
- for (i = 0; i < this.map.controls.length; i++) {
553
- var controlsForPosition = this.map.controls[control.position]
554
- if (controlsForPosition.getAt(i) == control) {
555
- controlsForPosition.removeAt(i);
556
- break;
557
- }
558
- }
559
- }
560
-
561
- return control;
562
- };
563
-
564
- GMaps.prototype.createMarker = function(options) {
565
- if (options.lat == undefined && options.lng == undefined && options.position == undefined) {
566
- throw 'No latitude or longitude defined.';
567
- }
568
-
569
- var self = this,
570
- details = options.details,
571
- fences = options.fences,
572
- outside = options.outside,
573
- base_options = {
574
- position: new google.maps.LatLng(options.lat, options.lng),
575
- map: null
576
- },
577
- marker_options = extend_object(base_options, options);
578
-
579
- delete marker_options.lat;
580
- delete marker_options.lng;
581
- delete marker_options.fences;
582
- delete marker_options.outside;
583
-
584
- var marker = new google.maps.Marker(marker_options);
585
-
586
- marker.fences = fences;
587
-
588
- if (options.infoWindow) {
589
- marker.infoWindow = new google.maps.InfoWindow(options.infoWindow);
590
-
591
- var info_window_events = ['closeclick', 'content_changed', 'domready', 'position_changed', 'zindex_changed'];
592
-
593
- for (var ev = 0; ev < info_window_events.length; ev++) {
594
- (function(object, name) {
595
- if (options.infoWindow[name]) {
596
- google.maps.event.addListener(object, name, function(e){
597
- options.infoWindow[name].apply(this, [e]);
598
- });
599
- }
600
- })(marker.infoWindow, info_window_events[ev]);
601
- }
602
- }
603
-
604
- var marker_events = ['animation_changed', 'clickable_changed', 'cursor_changed', 'draggable_changed', 'flat_changed', 'icon_changed', 'position_changed', 'shadow_changed', 'shape_changed', 'title_changed', 'visible_changed', 'zindex_changed'];
605
-
606
- var marker_events_with_mouse = ['dblclick', 'drag', 'dragend', 'dragstart', 'mousedown', 'mouseout', 'mouseover', 'mouseup'];
607
-
608
- for (var ev = 0; ev < marker_events.length; ev++) {
609
- (function(object, name) {
610
- if (options[name]) {
611
- google.maps.event.addListener(object, name, function(){
612
- options[name].apply(this, [this]);
613
- });
614
- }
615
- })(marker, marker_events[ev]);
616
- }
617
-
618
- for (var ev = 0; ev < marker_events_with_mouse.length; ev++) {
619
- (function(map, object, name) {
620
- if (options[name]) {
621
- google.maps.event.addListener(object, name, function(me){
622
- if(!me.pixel){
623
- me.pixel = map.getProjection().fromLatLngToPoint(me.latLng)
624
- }
625
-
626
- options[name].apply(this, [me]);
627
- });
628
- }
629
- })(this.map, marker, marker_events_with_mouse[ev]);
630
- }
631
-
632
- google.maps.event.addListener(marker, 'click', function() {
633
- this.details = details;
634
-
635
- if (options.click) {
636
- options.click.apply(this, [this]);
637
- }
638
-
639
- if (marker.infoWindow) {
640
- self.hideInfoWindows();
641
- marker.infoWindow.open(self.map, marker);
642
- }
643
- });
644
-
645
- google.maps.event.addListener(marker, 'rightclick', function(e) {
646
- e.marker = this;
647
-
648
- if (options.rightclick) {
649
- options.rightclick.apply(this, [e]);
650
- }
651
-
652
- if (window.context_menu[self.el.id]['marker'] != undefined) {
653
- self.buildContextMenu('marker', e);
654
- }
655
- });
656
-
657
- if (marker.fences) {
658
- google.maps.event.addListener(marker, 'dragend', function() {
659
- self.checkMarkerGeofence(marker, function(m, f) {
660
- outside(m, f);
661
- });
662
- });
663
- }
664
-
665
- return marker;
666
- };
667
-
668
- GMaps.prototype.addMarker = function(options) {
669
- var marker;
670
- if(options.hasOwnProperty('gm_accessors_')) {
671
- // Native google.maps.Marker object
672
- marker = options;
673
- }
674
- else {
675
- if ((options.hasOwnProperty('lat') && options.hasOwnProperty('lng')) || options.position) {
676
- marker = this.createMarker(options);
677
- }
678
- else {
679
- throw 'No latitude or longitude defined.';
680
- }
681
- }
682
-
683
- marker.setMap(this.map);
684
-
685
- if(this.markerClusterer) {
686
- this.markerClusterer.addMarker(marker);
687
- }
688
-
689
- this.markers.push(marker);
690
-
691
- GMaps.fire('marker_added', marker, this);
692
-
693
- return marker;
694
- };
695
-
696
- GMaps.prototype.addMarkers = function(array) {
697
- for (var i = 0, marker; marker=array[i]; i++) {
698
- this.addMarker(marker);
699
- }
700
-
701
- return this.markers;
702
- };
703
-
704
- GMaps.prototype.hideInfoWindows = function() {
705
- for (var i = 0, marker; marker = this.markers[i]; i++){
706
- if (marker.infoWindow) {
707
- marker.infoWindow.close();
708
- }
709
- }
710
- };
711
-
712
- GMaps.prototype.removeMarker = function(marker) {
713
- for (var i = 0; i < this.markers.length; i++) {
714
- if (this.markers[i] === marker) {
715
- this.markers[i].setMap(null);
716
- this.markers.splice(i, 1);
717
-
718
- if(this.markerClusterer) {
719
- this.markerClusterer.removeMarker(marker);
720
- }
721
-
722
- GMaps.fire('marker_removed', marker, this);
723
-
724
- break;
725
- }
726
- }
727
-
728
- return marker;
729
- };
730
-
731
- GMaps.prototype.removeMarkers = function (collection) {
732
- var new_markers = [];
733
-
734
- if (typeof collection == 'undefined') {
735
- for (var i = 0; i < this.markers.length; i++) {
736
- var marker = this.markers[i];
737
- marker.setMap(null);
738
-
739
- if(this.markerClusterer) {
740
- this.markerClusterer.removeMarker(marker);
741
- }
742
-
743
- GMaps.fire('marker_removed', marker, this);
744
- }
745
-
746
- this.markers = new_markers;
747
- }
748
- else {
749
- for (var i = 0; i < collection.length; i++) {
750
- var index = this.markers.indexOf(collection[i]);
751
-
752
- if (index > -1) {
753
- var marker = this.markers[index];
754
- marker.setMap(null);
755
-
756
- if(this.markerClusterer) {
757
- this.markerClusterer.removeMarker(marker);
758
- }
759
-
760
- GMaps.fire('marker_removed', marker, this);
761
- }
762
- }
763
-
764
- for (var i = 0; i < this.markers.length; i++) {
765
- var marker = this.markers[i];
766
- if (marker.getMap() != null) {
767
- new_markers.push(marker);
768
- }
769
- }
770
-
771
- this.markers = new_markers;
772
- }
773
- };
774
-
775
- GMaps.prototype.drawOverlay = function(options) {
776
- var overlay = new google.maps.OverlayView(),
777
- auto_show = true;
778
-
779
- overlay.setMap(this.map);
780
-
781
- if (options.auto_show != null) {
782
- auto_show = options.auto_show;
783
- }
784
-
785
- overlay.onAdd = function() {
786
- var el = document.createElement('div');
787
-
788
- el.style.borderStyle = "none";
789
- el.style.borderWidth = "0px";
790
- el.style.position = "absolute";
791
- el.style.zIndex = 100;
792
- el.innerHTML = options.content;
793
-
794
- overlay.el = el;
795
-
796
- if (!options.layer) {
797
- options.layer = 'overlayLayer';
798
- }
799
-
800
- var panes = this.getPanes(),
801
- overlayLayer = panes[options.layer],
802
- stop_overlay_events = ['contextmenu', 'DOMMouseScroll', 'dblclick', 'mousedown'];
803
-
804
- overlayLayer.appendChild(el);
805
-
806
- for (var ev = 0; ev < stop_overlay_events.length; ev++) {
807
- (function(object, name) {
808
- google.maps.event.addDomListener(object, name, function(e){
809
- if (navigator.userAgent.toLowerCase().indexOf('msie') != -1 && document.all) {
810
- e.cancelBubble = true;
811
- e.returnValue = false;
812
- }
813
- else {
814
- e.stopPropagation();
815
- }
816
- });
817
- })(el, stop_overlay_events[ev]);
818
- }
819
-
820
- if (options.click) {
821
- panes.overlayMouseTarget.appendChild(overlay.el);
822
- google.maps.event.addDomListener(overlay.el, 'click', function() {
823
- options.click.apply(overlay, [overlay]);
824
- });
825
- }
826
-
827
- google.maps.event.trigger(this, 'ready');
828
- };
829
-
830
- overlay.draw = function() {
831
- var projection = this.getProjection(),
832
- pixel = projection.fromLatLngToDivPixel(new google.maps.LatLng(options.lat, options.lng));
833
-
834
- options.horizontalOffset = options.horizontalOffset || 0;
835
- options.verticalOffset = options.verticalOffset || 0;
836
-
837
- var el = overlay.el,
838
- content = el.children[0],
839
- content_height = content.clientHeight,
840
- content_width = content.clientWidth;
841
-
842
- switch (options.verticalAlign) {
843
- case 'top':
844
- el.style.top = (pixel.y - content_height + options.verticalOffset) + 'px';
845
- break;
846
- default:
847
- case 'middle':
848
- el.style.top = (pixel.y - (content_height / 2) + options.verticalOffset) + 'px';
849
- break;
850
- case 'bottom':
851
- el.style.top = (pixel.y + options.verticalOffset) + 'px';
852
- break;
853
- }
854
-
855
- switch (options.horizontalAlign) {
856
- case 'left':
857
- el.style.left = (pixel.x - content_width + options.horizontalOffset) + 'px';
858
- break;
859
- default:
860
- case 'center':
861
- el.style.left = (pixel.x - (content_width / 2) + options.horizontalOffset) + 'px';
862
- break;
863
- case 'right':
864
- el.style.left = (pixel.x + options.horizontalOffset) + 'px';
865
- break;
866
- }
867
-
868
- el.style.display = auto_show ? 'block' : 'none';
869
-
870
- if (!auto_show) {
871
- options.show.apply(this, [el]);
872
- }
873
- };
874
-
875
- overlay.onRemove = function() {
876
- var el = overlay.el;
877
-
878
- if (options.remove) {
879
- options.remove.apply(this, [el]);
880
- }
881
- else {
882
- overlay.el.parentNode.removeChild(overlay.el);
883
- overlay.el = null;
884
- }
885
- };
886
-
887
- this.overlays.push(overlay);
888
- return overlay;
889
- };
890
-
891
- GMaps.prototype.removeOverlay = function(overlay) {
892
- for (var i = 0; i < this.overlays.length; i++) {
893
- if (this.overlays[i] === overlay) {
894
- this.overlays[i].setMap(null);
895
- this.overlays.splice(i, 1);
896
-
897
- break;
898
- }
899
- }
900
- };
901
-
902
- GMaps.prototype.removeOverlays = function() {
903
- for (var i = 0, item; item = this.overlays[i]; i++) {
904
- item.setMap(null);
905
- }
906
-
907
- this.overlays = [];
908
- };
909
-
910
- GMaps.prototype.drawPolyline = function(options) {
911
- var path = [],
912
- points = options.path;
913
-
914
- if (points.length) {
915
- if (points[0][0] === undefined) {
916
- path = points;
917
- }
918
- else {
919
- for (var i=0, latlng; latlng=points[i]; i++) {
920
- path.push(new google.maps.LatLng(latlng[0], latlng[1]));
921
- }
922
- }
923
- }
924
-
925
- var polyline_options = {
926
- map: this.map,
927
- path: path,
928
- strokeColor: options.strokeColor,
929
- strokeOpacity: options.strokeOpacity,
930
- strokeWeight: options.strokeWeight,
931
- geodesic: options.geodesic,
932
- clickable: true,
933
- editable: false,
934
- visible: true
935
- };
936
-
937
- if (options.hasOwnProperty("clickable")) {
938
- polyline_options.clickable = options.clickable;
939
- }
940
-
941
- if (options.hasOwnProperty("editable")) {
942
- polyline_options.editable = options.editable;
943
- }
944
-
945
- if (options.hasOwnProperty("icons")) {
946
- polyline_options.icons = options.icons;
947
- }
948
-
949
- if (options.hasOwnProperty("zIndex")) {
950
- polyline_options.zIndex = options.zIndex;
951
- }
952
-
953
- var polyline = new google.maps.Polyline(polyline_options);
954
-
955
- var polyline_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick'];
956
-
957
- for (var ev = 0; ev < polyline_events.length; ev++) {
958
- (function(object, name) {
959
- if (options[name]) {
960
- google.maps.event.addListener(object, name, function(e){
961
- options[name].apply(this, [e]);
962
- });
963
- }
964
- })(polyline, polyline_events[ev]);
965
- }
966
-
967
- this.polylines.push(polyline);
968
-
969
- GMaps.fire('polyline_added', polyline, this);
970
-
971
- return polyline;
972
- };
973
-
974
- GMaps.prototype.removePolyline = function(polyline) {
975
- for (var i = 0; i < this.polylines.length; i++) {
976
- if (this.polylines[i] === polyline) {
977
- this.polylines[i].setMap(null);
978
- this.polylines.splice(i, 1);
979
-
980
- GMaps.fire('polyline_removed', polyline, this);
981
-
982
- break;
983
- }
984
- }
985
- };
986
-
987
- GMaps.prototype.removePolylines = function() {
988
- for (var i = 0, item; item = this.polylines[i]; i++) {
989
- item.setMap(null);
990
- }
991
-
992
- this.polylines = [];
993
- };
994
-
995
- GMaps.prototype.drawCircle = function(options) {
996
- options = extend_object({
997
- map: this.map,
998
- center: new google.maps.LatLng(options.lat, options.lng)
999
- }, options);
1000
-
1001
- delete options.lat;
1002
- delete options.lng;
1003
-
1004
- var polygon = new google.maps.Circle(options),
1005
- polygon_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick'];
1006
-
1007
- for (var ev = 0; ev < polygon_events.length; ev++) {
1008
- (function(object, name) {
1009
- if (options[name]) {
1010
- google.maps.event.addListener(object, name, function(e){
1011
- options[name].apply(this, [e]);
1012
- });
1013
- }
1014
- })(polygon, polygon_events[ev]);
1015
- }
1016
-
1017
- this.polygons.push(polygon);
1018
-
1019
- return polygon;
1020
- };
1021
-
1022
- GMaps.prototype.drawRectangle = function(options) {
1023
- options = extend_object({
1024
- map: this.map
1025
- }, options);
1026
-
1027
- var latLngBounds = new google.maps.LatLngBounds(
1028
- new google.maps.LatLng(options.bounds[0][0], options.bounds[0][1]),
1029
- new google.maps.LatLng(options.bounds[1][0], options.bounds[1][1])
1030
- );
1031
-
1032
- options.bounds = latLngBounds;
1033
-
1034
- var polygon = new google.maps.Rectangle(options),
1035
- polygon_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick'];
1036
-
1037
- for (var ev = 0; ev < polygon_events.length; ev++) {
1038
- (function(object, name) {
1039
- if (options[name]) {
1040
- google.maps.event.addListener(object, name, function(e){
1041
- options[name].apply(this, [e]);
1042
- });
1043
- }
1044
- })(polygon, polygon_events[ev]);
1045
- }
1046
-
1047
- this.polygons.push(polygon);
1048
-
1049
- return polygon;
1050
- };
1051
-
1052
- GMaps.prototype.drawPolygon = function(options) {
1053
- var useGeoJSON = false;
1054
-
1055
- if(options.hasOwnProperty("useGeoJSON")) {
1056
- useGeoJSON = options.useGeoJSON;
1057
- }
1058
-
1059
- delete options.useGeoJSON;
1060
-
1061
- options = extend_object({
1062
- map: this.map
1063
- }, options);
1064
-
1065
- if (useGeoJSON == false) {
1066
- options.paths = [options.paths.slice(0)];
1067
- }
1068
-
1069
- if (options.paths.length > 0) {
1070
- if (options.paths[0].length > 0) {
1071
- options.paths = array_flat(array_map(options.paths, arrayToLatLng, useGeoJSON));
1072
- }
1073
- }
1074
-
1075
- var polygon = new google.maps.Polygon(options),
1076
- polygon_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick'];
1077
-
1078
- for (var ev = 0; ev < polygon_events.length; ev++) {
1079
- (function(object, name) {
1080
- if (options[name]) {
1081
- google.maps.event.addListener(object, name, function(e){
1082
- options[name].apply(this, [e]);
1083
- });
1084
- }
1085
- })(polygon, polygon_events[ev]);
1086
- }
1087
-
1088
- this.polygons.push(polygon);
1089
-
1090
- GMaps.fire('polygon_added', polygon, this);
1091
-
1092
- return polygon;
1093
- };
1094
-
1095
- GMaps.prototype.removePolygon = function(polygon) {
1096
- for (var i = 0; i < this.polygons.length; i++) {
1097
- if (this.polygons[i] === polygon) {
1098
- this.polygons[i].setMap(null);
1099
- this.polygons.splice(i, 1);
1100
-
1101
- GMaps.fire('polygon_removed', polygon, this);
1102
-
1103
- break;
1104
- }
1105
- }
1106
- };
1107
-
1108
- GMaps.prototype.removePolygons = function() {
1109
- for (var i = 0, item; item = this.polygons[i]; i++) {
1110
- item.setMap(null);
1111
- }
1112
-
1113
- this.polygons = [];
1114
- };
1115
-
1116
- GMaps.prototype.getFromFusionTables = function(options) {
1117
- var events = options.events;
1118
-
1119
- delete options.events;
1120
-
1121
- var fusion_tables_options = options,
1122
- layer = new google.maps.FusionTablesLayer(fusion_tables_options);
1123
-
1124
- for (var ev in events) {
1125
- (function(object, name) {
1126
- google.maps.event.addListener(object, name, function(e) {
1127
- events[name].apply(this, [e]);
1128
- });
1129
- })(layer, ev);
1130
- }
1131
-
1132
- this.layers.push(layer);
1133
-
1134
- return layer;
1135
- };
1136
-
1137
- GMaps.prototype.loadFromFusionTables = function(options) {
1138
- var layer = this.getFromFusionTables(options);
1139
- layer.setMap(this.map);
1140
-
1141
- return layer;
1142
- };
1143
-
1144
- GMaps.prototype.getFromKML = function(options) {
1145
- var url = options.url,
1146
- events = options.events;
1147
-
1148
- delete options.url;
1149
- delete options.events;
1150
-
1151
- var kml_options = options,
1152
- layer = new google.maps.KmlLayer(url, kml_options);
1153
-
1154
- for (var ev in events) {
1155
- (function(object, name) {
1156
- google.maps.event.addListener(object, name, function(e) {
1157
- events[name].apply(this, [e]);
1158
- });
1159
- })(layer, ev);
1160
- }
1161
-
1162
- this.layers.push(layer);
1163
-
1164
- return layer;
1165
- };
1166
-
1167
- GMaps.prototype.loadFromKML = function(options) {
1168
- var layer = this.getFromKML(options);
1169
- layer.setMap(this.map);
1170
-
1171
- return layer;
1172
- };
1173
-
1174
- GMaps.prototype.addLayer = function(layerName, options) {
1175
- //var default_layers = ['weather', 'clouds', 'traffic', 'transit', 'bicycling', 'panoramio', 'places'];
1176
- options = options || {};
1177
- var layer;
1178
-
1179
- switch(layerName) {
1180
- case 'weather': this.singleLayers.weather = layer = new google.maps.weather.WeatherLayer();
1181
- break;
1182
- case 'clouds': this.singleLayers.clouds = layer = new google.maps.weather.CloudLayer();
1183
- break;
1184
- case 'traffic': this.singleLayers.traffic = layer = new google.maps.TrafficLayer();
1185
- break;
1186
- case 'transit': this.singleLayers.transit = layer = new google.maps.TransitLayer();
1187
- break;
1188
- case 'bicycling': this.singleLayers.bicycling = layer = new google.maps.BicyclingLayer();
1189
- break;
1190
- case 'panoramio':
1191
- this.singleLayers.panoramio = layer = new google.maps.panoramio.PanoramioLayer();
1192
- layer.setTag(options.filter);
1193
- delete options.filter;
1194
-
1195
- //click event
1196
- if (options.click) {
1197
- google.maps.event.addListener(layer, 'click', function(event) {
1198
- options.click(event);
1199
- delete options.click;
1200
- });
1201
- }
1202
- break;
1203
- case 'places':
1204
- this.singleLayers.places = layer = new google.maps.places.PlacesService(this.map);
1205
-
1206
- //search, nearbySearch, radarSearch callback, Both are the same
1207
- if (options.search || options.nearbySearch || options.radarSearch) {
1208
- var placeSearchRequest = {
1209
- bounds : options.bounds || null,
1210
- keyword : options.keyword || null,
1211
- location : options.location || null,
1212
- name : options.name || null,
1213
- radius : options.radius || null,
1214
- rankBy : options.rankBy || null,
1215
- types : options.types || null
1216
- };
1217
-
1218
- if (options.radarSearch) {
1219
- layer.radarSearch(placeSearchRequest, options.radarSearch);
1220
- }
1221
-
1222
- if (options.search) {
1223
- layer.search(placeSearchRequest, options.search);
1224
- }
1225
-
1226
- if (options.nearbySearch) {
1227
- layer.nearbySearch(placeSearchRequest, options.nearbySearch);
1228
- }
1229
- }
1230
-
1231
- //textSearch callback
1232
- if (options.textSearch) {
1233
- var textSearchRequest = {
1234
- bounds : options.bounds || null,
1235
- location : options.location || null,
1236
- query : options.query || null,
1237
- radius : options.radius || null
1238
- };
1239
-
1240
- layer.textSearch(textSearchRequest, options.textSearch);
1241
- }
1242
- break;
1243
- }
1244
-
1245
- if (layer !== undefined) {
1246
- if (typeof layer.setOptions == 'function') {
1247
- layer.setOptions(options);
1248
- }
1249
- if (typeof layer.setMap == 'function') {
1250
- layer.setMap(this.map);
1251
- }
1252
-
1253
- return layer;
1254
- }
1255
- };
1256
-
1257
- GMaps.prototype.removeLayer = function(layer) {
1258
- if (typeof(layer) == "string" && this.singleLayers[layer] !== undefined) {
1259
- this.singleLayers[layer].setMap(null);
1260
-
1261
- delete this.singleLayers[layer];
1262
- }
1263
- else {
1264
- for (var i = 0; i < this.layers.length; i++) {
1265
- if (this.layers[i] === layer) {
1266
- this.layers[i].setMap(null);
1267
- this.layers.splice(i, 1);
1268
-
1269
- break;
1270
- }
1271
- }
1272
- }
1273
- };
1274
-
1275
- var travelMode, unitSystem;
1276
-
1277
- GMaps.prototype.getRoutes = function(options) {
1278
- switch (options.travelMode) {
1279
- case 'bicycling':
1280
- travelMode = google.maps.TravelMode.BICYCLING;
1281
- break;
1282
- case 'transit':
1283
- travelMode = google.maps.TravelMode.TRANSIT;
1284
- break;
1285
- case 'driving':
1286
- travelMode = google.maps.TravelMode.DRIVING;
1287
- break;
1288
- default:
1289
- travelMode = google.maps.TravelMode.WALKING;
1290
- break;
1291
- }
1292
-
1293
- if (options.unitSystem === 'imperial') {
1294
- unitSystem = google.maps.UnitSystem.IMPERIAL;
1295
- }
1296
- else {
1297
- unitSystem = google.maps.UnitSystem.METRIC;
1298
- }
1299
-
1300
- var base_options = {
1301
- avoidHighways: false,
1302
- avoidTolls: false,
1303
- optimizeWaypoints: false,
1304
- waypoints: []
1305
- },
1306
- request_options = extend_object(base_options, options);
1307
-
1308
- request_options.origin = /string/.test(typeof options.origin) ? options.origin : new google.maps.LatLng(options.origin[0], options.origin[1]);
1309
- request_options.destination = /string/.test(typeof options.destination) ? options.destination : new google.maps.LatLng(options.destination[0], options.destination[1]);
1310
- request_options.travelMode = travelMode;
1311
- request_options.unitSystem = unitSystem;
1312
-
1313
- delete request_options.callback;
1314
- delete request_options.error;
1315
-
1316
- var self = this,
1317
- service = new google.maps.DirectionsService();
1318
-
1319
- service.route(request_options, function(result, status) {
1320
- if (status === google.maps.DirectionsStatus.OK) {
1321
- for (var r in result.routes) {
1322
- if (result.routes.hasOwnProperty(r)) {
1323
- self.routes.push(result.routes[r]);
1324
- }
1325
- }
1326
-
1327
- if (options.callback) {
1328
- options.callback(self.routes);
1329
- }
1330
- }
1331
- else {
1332
- if (options.error) {
1333
- options.error(result, status);
1334
- }
1335
- }
1336
- });
1337
- };
1338
-
1339
- GMaps.prototype.removeRoutes = function() {
1340
- this.routes = [];
1341
- };
1342
-
1343
- GMaps.prototype.getElevations = function(options) {
1344
- options = extend_object({
1345
- locations: [],
1346
- path : false,
1347
- samples : 256
1348
- }, options);
1349
-
1350
- if (options.locations.length > 0) {
1351
- if (options.locations[0].length > 0) {
1352
- options.locations = array_flat(array_map([options.locations], arrayToLatLng, false));
1353
- }
1354
- }
1355
-
1356
- var callback = options.callback;
1357
- delete options.callback;
1358
-
1359
- var service = new google.maps.ElevationService();
1360
-
1361
- //location request
1362
- if (!options.path) {
1363
- delete options.path;
1364
- delete options.samples;
1365
-
1366
- service.getElevationForLocations(options, function(result, status) {
1367
- if (callback && typeof(callback) === "function") {
1368
- callback(result, status);
1369
- }
1370
- });
1371
- //path request
1372
- } else {
1373
- var pathRequest = {
1374
- path : options.locations,
1375
- samples : options.samples
1376
- };
1377
-
1378
- service.getElevationAlongPath(pathRequest, function(result, status) {
1379
- if (callback && typeof(callback) === "function") {
1380
- callback(result, status);
1381
- }
1382
- });
1383
- }
1384
- };
1385
-
1386
- GMaps.prototype.cleanRoute = GMaps.prototype.removePolylines;
1387
-
1388
- GMaps.prototype.drawRoute = function(options) {
1389
- var self = this;
1390
-
1391
- this.getRoutes({
1392
- origin: options.origin,
1393
- destination: options.destination,
1394
- travelMode: options.travelMode,
1395
- waypoints: options.waypoints,
1396
- unitSystem: options.unitSystem,
1397
- error: options.error,
1398
- callback: function(e) {
1399
- if (e.length > 0) {
1400
- self.drawPolyline({
1401
- path: e[e.length - 1].overview_path,
1402
- strokeColor: options.strokeColor,
1403
- strokeOpacity: options.strokeOpacity,
1404
- strokeWeight: options.strokeWeight
1405
- });
1406
-
1407
- if (options.callback) {
1408
- options.callback(e[e.length - 1]);
1409
- }
1410
- }
1411
- }
1412
- });
1413
- };
1414
-
1415
- GMaps.prototype.travelRoute = function(options) {
1416
- if (options.origin && options.destination) {
1417
- this.getRoutes({
1418
- origin: options.origin,
1419
- destination: options.destination,
1420
- travelMode: options.travelMode,
1421
- waypoints : options.waypoints,
1422
- unitSystem: options.unitSystem,
1423
- error: options.error,
1424
- callback: function(e) {
1425
- //start callback
1426
- if (e.length > 0 && options.start) {
1427
- options.start(e[e.length - 1]);
1428
- }
1429
-
1430
- //step callback
1431
- if (e.length > 0 && options.step) {
1432
- var route = e[e.length - 1];
1433
- if (route.legs.length > 0) {
1434
- var steps = route.legs[0].steps;
1435
- for (var i=0, step; step=steps[i]; i++) {
1436
- step.step_number = i;
1437
- options.step(step, (route.legs[0].steps.length - 1));
1438
- }
1439
- }
1440
- }
1441
-
1442
- //end callback
1443
- if (e.length > 0 && options.end) {
1444
- options.end(e[e.length - 1]);
1445
- }
1446
- }
1447
- });
1448
- }
1449
- else if (options.route) {
1450
- if (options.route.legs.length > 0) {
1451
- var steps = options.route.legs[0].steps;
1452
- for (var i=0, step; step=steps[i]; i++) {
1453
- step.step_number = i;
1454
- options.step(step);
1455
- }
1456
- }
1457
- }
1458
- };
1459
-
1460
- GMaps.prototype.drawSteppedRoute = function(options) {
1461
- var self = this;
1462
-
1463
- if (options.origin && options.destination) {
1464
- this.getRoutes({
1465
- origin: options.origin,
1466
- destination: options.destination,
1467
- travelMode: options.travelMode,
1468
- waypoints : options.waypoints,
1469
- error: options.error,
1470
- callback: function(e) {
1471
- //start callback
1472
- if (e.length > 0 && options.start) {
1473
- options.start(e[e.length - 1]);
1474
- }
1475
-
1476
- //step callback
1477
- if (e.length > 0 && options.step) {
1478
- var route = e[e.length - 1];
1479
- if (route.legs.length > 0) {
1480
- var steps = route.legs[0].steps;
1481
- for (var i=0, step; step=steps[i]; i++) {
1482
- step.step_number = i;
1483
- self.drawPolyline({
1484
- path: step.path,
1485
- strokeColor: options.strokeColor,
1486
- strokeOpacity: options.strokeOpacity,
1487
- strokeWeight: options.strokeWeight
1488
- });
1489
- options.step(step, (route.legs[0].steps.length - 1));
1490
- }
1491
- }
1492
- }
1493
-
1494
- //end callback
1495
- if (e.length > 0 && options.end) {
1496
- options.end(e[e.length - 1]);
1497
- }
1498
- }
1499
- });
1500
- }
1501
- else if (options.route) {
1502
- if (options.route.legs.length > 0) {
1503
- var steps = options.route.legs[0].steps;
1504
- for (var i=0, step; step=steps[i]; i++) {
1505
- step.step_number = i;
1506
- self.drawPolyline({
1507
- path: step.path,
1508
- strokeColor: options.strokeColor,
1509
- strokeOpacity: options.strokeOpacity,
1510
- strokeWeight: options.strokeWeight
1511
- });
1512
- options.step(step);
1513
- }
1514
- }
1515
- }
1516
- };
1517
-
1518
- GMaps.Route = function(options) {
1519
- this.origin = options.origin;
1520
- this.destination = options.destination;
1521
- this.waypoints = options.waypoints;
1522
-
1523
- this.map = options.map;
1524
- this.route = options.route;
1525
- this.step_count = 0;
1526
- this.steps = this.route.legs[0].steps;
1527
- this.steps_length = this.steps.length;
1528
-
1529
- this.polyline = this.map.drawPolyline({
1530
- path: new google.maps.MVCArray(),
1531
- strokeColor: options.strokeColor,
1532
- strokeOpacity: options.strokeOpacity,
1533
- strokeWeight: options.strokeWeight
1534
- }).getPath();
1535
- };
1536
-
1537
- GMaps.Route.prototype.getRoute = function(options) {
1538
- var self = this;
1539
-
1540
- this.map.getRoutes({
1541
- origin : this.origin,
1542
- destination : this.destination,
1543
- travelMode : options.travelMode,
1544
- waypoints : this.waypoints || [],
1545
- error: options.error,
1546
- callback : function() {
1547
- self.route = e[0];
1548
-
1549
- if (options.callback) {
1550
- options.callback.call(self);
1551
- }
1552
- }
1553
- });
1554
- };
1555
-
1556
- GMaps.Route.prototype.back = function() {
1557
- if (this.step_count > 0) {
1558
- this.step_count--;
1559
- var path = this.route.legs[0].steps[this.step_count].path;
1560
-
1561
- for (var p in path){
1562
- if (path.hasOwnProperty(p)){
1563
- this.polyline.pop();
1564
- }
1565
- }
1566
- }
1567
- };
1568
-
1569
- GMaps.Route.prototype.forward = function() {
1570
- if (this.step_count < this.steps_length) {
1571
- var path = this.route.legs[0].steps[this.step_count].path;
1572
-
1573
- for (var p in path){
1574
- if (path.hasOwnProperty(p)){
1575
- this.polyline.push(path[p]);
1576
- }
1577
- }
1578
- this.step_count++;
1579
- }
1580
- };
1581
-
1582
- GMaps.prototype.checkGeofence = function(lat, lng, fence) {
1583
- return fence.containsLatLng(new google.maps.LatLng(lat, lng));
1584
- };
1585
-
1586
- GMaps.prototype.checkMarkerGeofence = function(marker, outside_callback) {
1587
- if (marker.fences) {
1588
- for (var i = 0, fence; fence = marker.fences[i]; i++) {
1589
- var pos = marker.getPosition();
1590
- if (!this.checkGeofence(pos.lat(), pos.lng(), fence)) {
1591
- outside_callback(marker, fence);
1592
- }
1593
- }
1594
- }
1595
- };
1596
-
1597
- GMaps.prototype.toImage = function(options) {
1598
- var options = options || {},
1599
- static_map_options = {};
1600
-
1601
- static_map_options['size'] = options['size'] || [this.el.clientWidth, this.el.clientHeight];
1602
- static_map_options['lat'] = this.getCenter().lat();
1603
- static_map_options['lng'] = this.getCenter().lng();
1604
-
1605
- if (this.markers.length > 0) {
1606
- static_map_options['markers'] = [];
1607
-
1608
- for (var i = 0; i < this.markers.length; i++) {
1609
- static_map_options['markers'].push({
1610
- lat: this.markers[i].getPosition().lat(),
1611
- lng: this.markers[i].getPosition().lng()
1612
- });
1613
- }
1614
- }
1615
-
1616
- if (this.polylines.length > 0) {
1617
- var polyline = this.polylines[0];
1618
-
1619
- static_map_options['polyline'] = {};
1620
- static_map_options['polyline']['path'] = google.maps.geometry.encoding.encodePath(polyline.getPath());
1621
- static_map_options['polyline']['strokeColor'] = polyline.strokeColor
1622
- static_map_options['polyline']['strokeOpacity'] = polyline.strokeOpacity
1623
- static_map_options['polyline']['strokeWeight'] = polyline.strokeWeight
1624
- }
1625
-
1626
- return GMaps.staticMapURL(static_map_options);
1627
- };
1628
-
1629
- GMaps.staticMapURL = function(options){
1630
- var parameters = [],
1631
- data,
1632
- static_root = 'http://maps.googleapis.com/maps/api/staticmap';
1633
-
1634
- if (options.url) {
1635
- static_root = options.url;
1636
- delete options.url;
1637
- }
1638
-
1639
- static_root += '?';
1640
-
1641
- var markers = options.markers;
1642
-
1643
- delete options.markers;
1644
-
1645
- if (!markers && options.marker) {
1646
- markers = [options.marker];
1647
- delete options.marker;
1648
- }
1649
-
1650
- var styles = options.styles;
1651
-
1652
- delete options.styles;
1653
-
1654
- var polyline = options.polyline;
1655
- delete options.polyline;
1656
-
1657
- /** Map options **/
1658
- if (options.center) {
1659
- parameters.push('center=' + options.center);
1660
- delete options.center;
1661
- }
1662
- else if (options.address) {
1663
- parameters.push('center=' + options.address);
1664
- delete options.address;
1665
- }
1666
- else if (options.lat) {
1667
- parameters.push(['center=', options.lat, ',', options.lng].join(''));
1668
- delete options.lat;
1669
- delete options.lng;
1670
- }
1671
- else if (options.visible) {
1672
- var visible = encodeURI(options.visible.join('|'));
1673
- parameters.push('visible=' + visible);
1674
- }
1675
-
1676
- var size = options.size;
1677
- if (size) {
1678
- if (size.join) {
1679
- size = size.join('x');
1680
- }
1681
- delete options.size;
1682
- }
1683
- else {
1684
- size = '630x300';
1685
- }
1686
- parameters.push('size=' + size);
1687
-
1688
- if (!options.zoom && options.zoom !== false) {
1689
- options.zoom = 15;
1690
- }
1691
-
1692
- var sensor = options.hasOwnProperty('sensor') ? !!options.sensor : true;
1693
- delete options.sensor;
1694
- parameters.push('sensor=' + sensor);
1695
-
1696
- for (var param in options) {
1697
- if (options.hasOwnProperty(param)) {
1698
- parameters.push(param + '=' + options[param]);
1699
- }
1700
- }
1701
-
1702
- /** Markers **/
1703
- if (markers) {
1704
- var marker, loc;
1705
-
1706
- for (var i=0; data=markers[i]; i++) {
1707
- marker = [];
1708
-
1709
- if (data.size && data.size !== 'normal') {
1710
- marker.push('size:' + data.size);
1711
- delete data.size;
1712
- }
1713
- else if (data.icon) {
1714
- marker.push('icon:' + encodeURI(data.icon));
1715
- delete data.icon;
1716
- }
1717
-
1718
- if (data.color) {
1719
- marker.push('color:' + data.color.replace('#', '0x'));
1720
- delete data.color;
1721
- }
1722
-
1723
- if (data.label) {
1724
- marker.push('label:' + data.label[0].toUpperCase());
1725
- delete data.label;
1726
- }
1727
-
1728
- loc = (data.address ? data.address : data.lat + ',' + data.lng);
1729
- delete data.address;
1730
- delete data.lat;
1731
- delete data.lng;
1732
-
1733
- for(var param in data){
1734
- if (data.hasOwnProperty(param)) {
1735
- marker.push(param + ':' + data[param]);
1736
- }
1737
- }
1738
-
1739
- if (marker.length || i === 0) {
1740
- marker.push(loc);
1741
- marker = marker.join('|');
1742
- parameters.push('markers=' + encodeURI(marker));
1743
- }
1744
- // New marker without styles
1745
- else {
1746
- marker = parameters.pop() + encodeURI('|' + loc);
1747
- parameters.push(marker);
1748
- }
1749
- }
1750
- }
1751
-
1752
- /** Map Styles **/
1753
- if (styles) {
1754
- for (var i = 0; i < styles.length; i++) {
1755
- var styleRule = [];
1756
- if (styles[i].featureType){
1757
- styleRule.push('feature:' + styles[i].featureType.toLowerCase());
1758
- }
1759
-
1760
- if (styles[i].elementType) {
1761
- styleRule.push('element:' + styles[i].elementType.toLowerCase());
1762
- }
1763
-
1764
- for (var j = 0; j < styles[i].stylers.length; j++) {
1765
- for (var p in styles[i].stylers[j]) {
1766
- var ruleArg = styles[i].stylers[j][p];
1767
- if (p == 'hue' || p == 'color') {
1768
- ruleArg = '0x' + ruleArg.substring(1);
1769
- }
1770
- styleRule.push(p + ':' + ruleArg);
1771
- }
1772
- }
1773
-
1774
- var rule = styleRule.join('|');
1775
- if (rule != '') {
1776
- parameters.push('style=' + rule);
1777
- }
1778
- }
1779
- }
1780
-
1781
- /** Polylines **/
1782
- function parseColor(color, opacity) {
1783
- if (color[0] === '#'){
1784
- color = color.replace('#', '0x');
1785
-
1786
- if (opacity) {
1787
- opacity = parseFloat(opacity);
1788
- opacity = Math.min(1, Math.max(opacity, 0));
1789
- if (opacity === 0) {
1790
- return '0x00000000';
1791
- }
1792
- opacity = (opacity * 255).toString(16);
1793
- if (opacity.length === 1) {
1794
- opacity += opacity;
1795
- }
1796
-
1797
- color = color.slice(0,8) + opacity;
1798
- }
1799
- }
1800
- return color;
1801
- }
1802
-
1803
- if (polyline) {
1804
- data = polyline;
1805
- polyline = [];
1806
-
1807
- if (data.strokeWeight) {
1808
- polyline.push('weight:' + parseInt(data.strokeWeight, 10));
1809
- }
1810
-
1811
- if (data.strokeColor) {
1812
- var color = parseColor(data.strokeColor, data.strokeOpacity);
1813
- polyline.push('color:' + color);
1814
- }
1815
-
1816
- if (data.fillColor) {
1817
- var fillcolor = parseColor(data.fillColor, data.fillOpacity);
1818
- polyline.push('fillcolor:' + fillcolor);
1819
- }
1820
-
1821
- var path = data.path;
1822
- if (path.join) {
1823
- for (var j=0, pos; pos=path[j]; j++) {
1824
- polyline.push(pos.join(','));
1825
- }
1826
- }
1827
- else {
1828
- polyline.push('enc:' + path);
1829
- }
1830
-
1831
- polyline = polyline.join('|');
1832
- parameters.push('path=' + encodeURI(polyline));
1833
- }
1834
-
1835
- /** Retina support **/
1836
- var dpi = window.devicePixelRatio || 1;
1837
- parameters.push('scale=' + dpi);
1838
-
1839
- parameters = parameters.join('&');
1840
- return static_root + parameters;
1841
- };
1842
-
1843
- GMaps.prototype.addMapType = function(mapTypeId, options) {
1844
- if (options.hasOwnProperty("getTileUrl") && typeof(options["getTileUrl"]) == "function") {
1845
- options.tileSize = options.tileSize || new google.maps.Size(256, 256);
1846
-
1847
- var mapType = new google.maps.ImageMapType(options);
1848
-
1849
- this.map.mapTypes.set(mapTypeId, mapType);
1850
- }
1851
- else {
1852
- throw "'getTileUrl' function required.";
1853
- }
1854
- };
1855
-
1856
- GMaps.prototype.addOverlayMapType = function(options) {
1857
- if (options.hasOwnProperty("getTile") && typeof(options["getTile"]) == "function") {
1858
- var overlayMapTypeIndex = options.index;
1859
-
1860
- delete options.index;
1861
-
1862
- this.map.overlayMapTypes.insertAt(overlayMapTypeIndex, options);
1863
- }
1864
- else {
1865
- throw "'getTile' function required.";
1866
- }
1867
- };
1868
-
1869
- GMaps.prototype.removeOverlayMapType = function(overlayMapTypeIndex) {
1870
- this.map.overlayMapTypes.removeAt(overlayMapTypeIndex);
1871
- };
1872
-
1873
- GMaps.prototype.addStyle = function(options) {
1874
- var styledMapType = new google.maps.StyledMapType(options.styles, { name: options.styledMapName });
1875
-
1876
- this.map.mapTypes.set(options.mapTypeId, styledMapType);
1877
- };
1878
-
1879
- GMaps.prototype.setStyle = function(mapTypeId) {
1880
- this.map.setMapTypeId(mapTypeId);
1881
- };
1882
-
1883
- GMaps.prototype.createPanorama = function(streetview_options) {
1884
- if (!streetview_options.hasOwnProperty('lat') || !streetview_options.hasOwnProperty('lng')) {
1885
- streetview_options.lat = this.getCenter().lat();
1886
- streetview_options.lng = this.getCenter().lng();
1887
- }
1888
-
1889
- this.panorama = GMaps.createPanorama(streetview_options);
1890
-
1891
- this.map.setStreetView(this.panorama);
1892
-
1893
- return this.panorama;
1894
- };
1895
-
1896
- GMaps.createPanorama = function(options) {
1897
- var el = getElementById(options.el, options.context);
1898
-
1899
- options.position = new google.maps.LatLng(options.lat, options.lng);
1900
-
1901
- delete options.el;
1902
- delete options.context;
1903
- delete options.lat;
1904
- delete options.lng;
1905
-
1906
- var streetview_events = ['closeclick', 'links_changed', 'pano_changed', 'position_changed', 'pov_changed', 'resize', 'visible_changed'],
1907
- streetview_options = extend_object({visible : true}, options);
1908
-
1909
- for (var i = 0; i < streetview_events.length; i++) {
1910
- delete streetview_options[streetview_events[i]];
1911
- }
1912
-
1913
- var panorama = new google.maps.StreetViewPanorama(el, streetview_options);
1914
-
1915
- for (var i = 0; i < streetview_events.length; i++) {
1916
- (function(object, name) {
1917
- if (options[name]) {
1918
- google.maps.event.addListener(object, name, function(){
1919
- options[name].apply(this);
1920
- });
1921
- }
1922
- })(panorama, streetview_events[i]);
1923
- }
1924
-
1925
- return panorama;
1926
- };
1927
-
1928
- GMaps.prototype.on = function(event_name, handler) {
1929
- return GMaps.on(event_name, this, handler);
1930
- };
1931
-
1932
- GMaps.prototype.off = function(event_name) {
1933
- GMaps.off(event_name, this);
1934
- };
1935
-
1936
- GMaps.custom_events = ['marker_added', 'marker_removed', 'polyline_added', 'polyline_removed', 'polygon_added', 'polygon_removed', 'geolocated', 'geolocation_failed'];
1937
-
1938
- GMaps.on = function(event_name, object, handler) {
1939
- if (GMaps.custom_events.indexOf(event_name) == -1) {
1940
- if(object instanceof GMaps) object = object.map;
1941
- return google.maps.event.addListener(object, event_name, handler);
1942
- }
1943
- else {
1944
- var registered_event = {
1945
- handler : handler,
1946
- eventName : event_name
1947
- };
1948
-
1949
- object.registered_events[event_name] = object.registered_events[event_name] || [];
1950
- object.registered_events[event_name].push(registered_event);
1951
-
1952
- return registered_event;
1953
- }
1954
- };
1955
-
1956
- GMaps.off = function(event_name, object) {
1957
- if (GMaps.custom_events.indexOf(event_name) == -1) {
1958
- if(object instanceof GMaps) object = object.map;
1959
- google.maps.event.clearListeners(object, event_name);
1960
- }
1961
- else {
1962
- object.registered_events[event_name] = [];
1963
- }
1964
- };
1965
-
1966
- GMaps.fire = function(event_name, object, scope) {
1967
- if (GMaps.custom_events.indexOf(event_name) == -1) {
1968
- google.maps.event.trigger(object, event_name, Array.prototype.slice.apply(arguments).slice(2));
1969
- }
1970
- else {
1971
- if(event_name in scope.registered_events) {
1972
- var firing_events = scope.registered_events[event_name];
1973
-
1974
- for(var i = 0; i < firing_events.length; i++) {
1975
- (function(handler, scope, object) {
1976
- handler.apply(scope, [object]);
1977
- })(firing_events[i]['handler'], scope, object);
1978
- }
1979
- }
1980
- }
1981
- };
1982
-
1983
- GMaps.geolocate = function(options) {
1984
- var complete_callback = options.always || options.complete;
1985
-
1986
- if (navigator.geolocation) {
1987
- navigator.geolocation.getCurrentPosition(function(position) {
1988
- options.success(position);
1989
-
1990
- if (complete_callback) {
1991
- complete_callback();
1992
- }
1993
- }, function(error) {
1994
- options.error(error);
1995
-
1996
- if (complete_callback) {
1997
- complete_callback();
1998
- }
1999
- }, options.options);
2000
- }
2001
- else {
2002
- options.not_supported();
2003
-
2004
- if (complete_callback) {
2005
- complete_callback();
2006
- }
2007
- }
2008
- };
2009
-
2010
- GMaps.geocode = function(options) {
2011
- this.geocoder = new google.maps.Geocoder();
2012
- var callback = options.callback;
2013
- if (options.hasOwnProperty('lat') && options.hasOwnProperty('lng')) {
2014
- options.latLng = new google.maps.LatLng(options.lat, options.lng);
2015
- }
2016
-
2017
- delete options.lat;
2018
- delete options.lng;
2019
- delete options.callback;
2020
-
2021
- this.geocoder.geocode(options, function(results, status) {
2022
- callback(results, status);
2023
- });
2024
- };
2025
-
2026
- //==========================
2027
- // Polygon containsLatLng
2028
- // https://github.com/tparkin/Google-Maps-Point-in-Polygon
2029
- // Poygon getBounds extension - google-maps-extensions
2030
- // http://code.google.com/p/google-maps-extensions/source/browse/google.maps.Polygon.getBounds.js
2031
- if (!google.maps.Polygon.prototype.getBounds) {
2032
- google.maps.Polygon.prototype.getBounds = function(latLng) {
2033
- var bounds = new google.maps.LatLngBounds();
2034
- var paths = this.getPaths();
2035
- var path;
2036
-
2037
- for (var p = 0; p < paths.getLength(); p++) {
2038
- path = paths.getAt(p);
2039
- for (var i = 0; i < path.getLength(); i++) {
2040
- bounds.extend(path.getAt(i));
2041
- }
2042
- }
2043
-
2044
- return bounds;
2045
- };
2046
- }
2047
-
2048
- if (!google.maps.Polygon.prototype.containsLatLng) {
2049
- // Polygon containsLatLng - method to determine if a latLng is within a polygon
2050
- google.maps.Polygon.prototype.containsLatLng = function(latLng) {
2051
- // Exclude points outside of bounds as there is no way they are in the poly
2052
- var bounds = this.getBounds();
2053
-
2054
- if (bounds !== null && !bounds.contains(latLng)) {
2055
- return false;
2056
- }
2057
-
2058
- // Raycast point in polygon method
2059
- var inPoly = false;
2060
-
2061
- var numPaths = this.getPaths().getLength();
2062
- for (var p = 0; p < numPaths; p++) {
2063
- var path = this.getPaths().getAt(p);
2064
- var numPoints = path.getLength();
2065
- var j = numPoints - 1;
2066
-
2067
- for (var i = 0; i < numPoints; i++) {
2068
- var vertex1 = path.getAt(i);
2069
- var vertex2 = path.getAt(j);
2070
-
2071
- if (vertex1.lng() < latLng.lng() && vertex2.lng() >= latLng.lng() || vertex2.lng() < latLng.lng() && vertex1.lng() >= latLng.lng()) {
2072
- if (vertex1.lat() + (latLng.lng() - vertex1.lng()) / (vertex2.lng() - vertex1.lng()) * (vertex2.lat() - vertex1.lat()) < latLng.lat()) {
2073
- inPoly = !inPoly;
2074
- }
2075
- }
2076
-
2077
- j = i;
2078
- }
2079
- }
2080
-
2081
- return inPoly;
2082
- };
2083
- }
2084
-
2085
- if (!google.maps.Circle.prototype.containsLatLng) {
2086
- google.maps.Circle.prototype.containsLatLng = function(latLng) {
2087
- if (google.maps.geometry) {
2088
- return google.maps.geometry.spherical.computeDistanceBetween(this.getCenter(), latLng) <= this.getRadius();
2089
- }
2090
- else {
2091
- return true;
2092
- }
2093
- };
2094
- }
2095
-
2096
- google.maps.LatLngBounds.prototype.containsLatLng = function(latLng) {
2097
- return this.contains(latLng);
2098
- };
2099
-
2100
- google.maps.Marker.prototype.setFences = function(fences) {
2101
- this.fences = fences;
2102
- };
2103
-
2104
- google.maps.Marker.prototype.addFence = function(fence) {
2105
- this.fences.push(fence);
2106
- };
2107
-
2108
- google.maps.Marker.prototype.getId = function() {
2109
- return this['__gm_id'];
2110
- };
2111
-
2112
- //==========================
2113
- // Array indexOf
2114
- // https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/indexOf
2115
- if (!Array.prototype.indexOf) {
2116
- Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) {
2117
- "use strict";
2118
- if (this == null) {
2119
- throw new TypeError();
2120
- }
2121
- var t = Object(this);
2122
- var len = t.length >>> 0;
2123
- if (len === 0) {
2124
- return -1;
2125
- }
2126
- var n = 0;
2127
- if (arguments.length > 1) {
2128
- n = Number(arguments[1]);
2129
- if (n != n) { // shortcut for verifying if it's NaN
2130
- n = 0;
2131
- } else if (n != 0 && n != Infinity && n != -Infinity) {
2132
- n = (n > 0 || -1) * Math.floor(Math.abs(n));
2133
- }
2134
- }
2135
- if (n >= len) {
2136
- return -1;
2137
- }
2138
- var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0);
2139
- for (; k < len; k++) {
2140
- if (k in t && t[k] === searchElement) {
2141
- return k;
2142
- }
2143
- }
2144
- return -1;
2145
- }
2146
- }
2147
-
2148
- return GMaps;
2149
- }));