Google Maps Widget – Ultimate Google Maps Plugin - Version 3.0

Version Description

  • 2016/02/16
  • huge upgrade - numerous functions added
  • switched to new Google Maps API
Download this release

Release Info

Developer WebFactory
Plugin Icon 128x128 Google Maps Widget – Ultimate Google Maps Plugin
Version 3.0
Comparing to
See all releases

Code changes from version 2.92 to 3.0

Files changed (751) hide show
  1. css/gmw-admin.css +371 -39
  2. css/gmw.css +698 -198
  3. css/select2.min.css +1 -0
  4. gmw-export-import.php +217 -0
  5. gmw-map-styles.php +41 -0
  6. gmw-tracking.php +19 -27
  7. gmw-widget.php +568 -237
  8. google-maps-widget.php +916 -328
  9. images/blank.gif +0 -0
  10. images/border.png +0 -0
  11. images/colorbox/dark/border.png +0 -0
  12. images/colorbox/dark/controls.png +0 -0
  13. images/colorbox/dark/loading_background.png +0 -0
  14. images/colorbox/dark/overlay.png +0 -0
  15. images/colorbox/darkrimmed/colorbox_darkrimmed.png +0 -0
  16. images/colorbox/fancyoverlay/colorbox_fancyoverlay.png +0 -0
  17. images/colorbox/gears/frame1.png +0 -0
  18. images/colorbox/gears/frame2.png +0 -0
  19. images/colorbox/gray-square/border.png +0 -0
  20. images/colorbox/gray-square/controls.png +0 -0
  21. images/colorbox/gray-square/loading_background.png +0 -0
  22. images/colorbox/loading.gif +0 -0
  23. images/colorbox/minimal-circles/colorbox_minimalcircles.png +0 -0
  24. images/colorbox/minimal/colorbox_minimal.png +0 -0
  25. images/colorbox/painting/frame1.png +0 -0
  26. images/colorbox/painting/frame2.png +0 -0
  27. images/colorbox/rounded-white/border1.png +0 -0
  28. images/colorbox/rounded-white/border2.png +0 -0
  29. images/colorbox/shadow/colorbox_fancyoverlay.png +0 -0
  30. images/colorbox/sketchtoon/colorbox_sketchtoon.png +0 -0
  31. images/colorbox/sketchtoon/paper.jpg +0 -0
  32. images/colorbox/square-black/controls.png +0 -0
  33. images/colorbox/square-white/controls.png +0 -0
  34. images/colorbox/tablet/frame1.png +0 -0
  35. images/colorbox/tablet/frame2.png +0 -0
  36. images/colorbox/vintage/frame1.png +0 -0
  37. images/colorbox/vintage/frame2.png +0 -0
  38. images/colorbox/vintage/pattern.jpg +0 -0
  39. images/colorbox/wood/colorbox_woodtable.png +0 -0
  40. images/colorbox/wood/woodpattern.jpg +0 -0
  41. images/controls.png +0 -0
  42. images/gmw-logo-pro-dialog.png +0 -0
  43. images/gmw-logo-pro.png +0 -0
  44. images/gmw-logo.png +0 -0
  45. images/loading.gif +0 -0
  46. images/loading_background.png +0 -0
  47. images/overlay.png +0 -0
  48. images/pins/default/2hand.png +0 -0
  49. images/pins/default/360degrees.png +0 -0
  50. images/pins/default/abduction.png +0 -0
  51. images/pins/default/aboriginal.png +0 -0
  52. images/pins/default/accesdenied.png +0 -0
  53. images/pins/default/acupuncture.png +0 -0
  54. images/pins/default/administration.png +0 -0
  55. images/pins/default/administrativeboundary.png +0 -0
  56. images/pins/default/aed-2.png +0 -0
  57. images/pins/default/agritourism.png +0 -0
  58. images/pins/default/air_fixwing.png +0 -0
  59. images/pins/default/aircraftcarrier.png +0 -0
  60. images/pins/default/aircraftsmall.png +0 -0
  61. images/pins/default/airport.png +0 -0
  62. images/pins/default/airport_apron.png +0 -0
  63. images/pins/default/airport_runway.png +0 -0
  64. images/pins/default/airport_terminal.png +0 -0
  65. images/pins/default/airshow-2.png +0 -0
  66. images/pins/default/algae.png +0 -0
  67. images/pins/default/alien.png +0 -0
  68. images/pins/default/alligator.png +0 -0
  69. images/pins/default/amphitheater-2.png +0 -0
  70. images/pins/default/amphitheater.png +0 -0
  71. images/pins/default/anchorpier.png +0 -0
  72. images/pins/default/anemometer_mono.png +0 -0
  73. images/pins/default/animal-shelter-export.png +0 -0
  74. images/pins/default/anniversary.png +0 -0
  75. images/pins/default/ant-export.png +0 -0
  76. images/pins/default/anthropo.png +0 -0
  77. images/pins/default/apartment-3.png +0 -0
  78. images/pins/default/apple.png +0 -0
  79. images/pins/default/aquarium.png +0 -0
  80. images/pins/default/arch.png +0 -0
  81. images/pins/default/archery.png +0 -0
  82. images/pins/default/army.png +0 -0
  83. images/pins/default/art-museum-2.png +0 -0
  84. images/pins/default/artgallery.png +0 -0
  85. images/pins/default/atm-2.png +0 -0
  86. images/pins/default/atv.png +0 -0
  87. images/pins/default/audio.png +0 -0
  88. images/pins/default/australian-football.png +0 -0
  89. images/pins/default/avalanche1.png +0 -0
  90. images/pins/default/award.png +0 -0
  91. images/pins/default/badminton-2.png +0 -0
  92. images/pins/default/bags.png +0 -0
  93. images/pins/default/bank.png +0 -0
  94. images/pins/default/bar.png +0 -0
  95. images/pins/default/bar_coktail.png +0 -0
  96. images/pins/default/bar_juice.png +0 -0
  97. images/pins/default/barbecue.png +0 -0
  98. images/pins/default/barber.png +0 -0
  99. images/pins/default/barrier.png +0 -0
  100. images/pins/default/baseball.png +0 -0
  101. images/pins/default/basketball.png +0 -0
  102. images/pins/default/bats.png +0 -0
  103. images/pins/default/battlefield.png +0 -0
  104. images/pins/default/battleship-3.png +0 -0
  105. images/pins/default/beach.png +0 -0
  106. images/pins/default/beachvolleyball.png +0 -0
  107. images/pins/default/beautifulview.png +0 -0
  108. images/pins/default/beautysalon.png +0 -0
  109. images/pins/default/bed_breakfast1-2.png +0 -0
  110. images/pins/default/beergarden.png +0 -0
  111. images/pins/default/bicycle_shop.png +0 -0
  112. images/pins/default/bigcity.png +0 -0
  113. images/pins/default/bike_downhill.png +0 -0
  114. images/pins/default/bike_rising.png +0 -0
  115. images/pins/default/billiard-2.png +0 -0
  116. images/pins/default/binoculars.png +0 -0
  117. images/pins/default/birds-2.png +0 -0
  118. images/pins/default/blast.png +0 -0
  119. images/pins/default/boardercross.png +0 -0
  120. images/pins/default/boat.png +0 -0
  121. images/pins/default/boatcrane.png +0 -0
  122. images/pins/default/bobsleigh.png +0 -0
  123. images/pins/default/bollie.png +0 -0
  124. images/pins/default/bomb.png +0 -0
  125. images/pins/default/bomber-2.png +0 -0
  126. images/pins/default/bouddha.png +0 -0
  127. images/pins/default/bowling.png +0 -0
  128. images/pins/default/boxing.png +0 -0
  129. images/pins/default/bread.png +0 -0
  130. images/pins/default/brewery1.png +0 -0
  131. images/pins/default/bridge_modern.png +0 -0
  132. images/pins/default/bridge_old.png +0 -0
  133. images/pins/default/bulldozer.png +0 -0
  134. images/pins/default/bullfight.png +0 -0
  135. images/pins/default/bunker-2-2.png +0 -0
  136. images/pins/default/bus.png +0 -0
  137. images/pins/default/busstop.png +0 -0
  138. images/pins/default/bustour.png +0 -0
  139. images/pins/default/butcher-2.png +0 -0
  140. images/pins/default/butterfly-2.png +0 -0
  141. images/pins/default/cabin-2.png +0 -0
  142. images/pins/default/cablecar.png +0 -0
  143. images/pins/default/cafetaria.png +0 -0
  144. images/pins/default/calendar-3.png +0 -0
  145. images/pins/default/campfire-2.png +0 -0
  146. images/pins/default/camping-2.png +0 -0
  147. images/pins/default/candy.png +0 -0
  148. images/pins/default/canyon-2.png +0 -0
  149. images/pins/default/car.png +0 -0
  150. images/pins/default/caraccident.png +0 -0
  151. images/pins/default/carrental.png +0 -0
  152. images/pins/default/carwash.png +0 -0
  153. images/pins/default/casino-2.png +0 -0
  154. images/pins/default/castle-2.png +0 -0
  155. images/pins/default/cathedral.png +0 -0
  156. images/pins/default/catholicgrave.png +0 -0
  157. images/pins/default/caution.png +0 -0
  158. images/pins/default/cave-2.png +0 -0
  159. images/pins/default/cctv.png +0 -0
  160. images/pins/default/cemetary.png +0 -0
  161. images/pins/default/channelchange.png +0 -0
  162. images/pins/default/chapel-2.png +0 -0
  163. images/pins/default/chart-2.png +0 -0
  164. images/pins/default/cheese.png +0 -0
  165. images/pins/default/chemistry-2.png +0 -0
  166. images/pins/default/chicken-2.png +0 -0
  167. images/pins/default/childmuseum01.png +0 -0
  168. images/pins/default/chiropractor.png +0 -0
  169. images/pins/default/christmasmarket.png +0 -0
  170. images/pins/default/church-2.png +0 -0
  171. images/pins/default/cinema.png +0 -0
  172. images/pins/default/circus.png +0 -0
  173. images/pins/default/citysquare.png +0 -0
  174. images/pins/default/citywalls.png +0 -0
  175. images/pins/default/climbing.png +0 -0
  176. images/pins/default/clock.png +0 -0
  177. images/pins/default/closedroad.png +0 -0
  178. images/pins/default/clothers_female.png +0 -0
  179. images/pins/default/clothers_male.png +0 -0
  180. images/pins/default/cloudy.png +0 -0
  181. images/pins/default/cloudysunny.png +0 -0
  182. images/pins/default/coffee.png +0 -0
  183. images/pins/default/coins.png +0 -0
  184. images/pins/default/comedyclub.png +0 -0
  185. images/pins/default/comics.png +0 -0
  186. images/pins/default/comment-map-icon.png +0 -0
  187. images/pins/default/communitycentre.png +0 -0
  188. images/pins/default/company.png +0 -0
  189. images/pins/default/compost.png +0 -0
  190. images/pins/default/computers.png +0 -0
  191. images/pins/default/condominium.png +0 -0
  192. images/pins/default/conference.png +0 -0
  193. images/pins/default/congress.png +0 -0
  194. images/pins/default/construction.png +0 -0
  195. images/pins/default/constructioncrane.png +0 -0
  196. images/pins/default/contract.png +0 -0
  197. images/pins/default/conveniencestore.png +0 -0
  198. images/pins/default/convent-2.png +0 -0
  199. images/pins/default/conversation-map-icon.png +0 -0
  200. images/pins/default/convertible.png +0 -0
  201. images/pins/default/corral.png +0 -0
  202. images/pins/default/country.png +0 -0
  203. images/pins/default/court.png +0 -0
  204. images/pins/default/cow-export.png +0 -0
  205. images/pins/default/cowabduction.png +0 -0
  206. images/pins/default/craftstore.png +0 -0
  207. images/pins/default/cramschool.png +0 -0
  208. images/pins/default/cricket.png +0 -0
  209. images/pins/default/crimescene.png +0 -0
  210. images/pins/default/cromlech.png +0 -0
  211. images/pins/default/cropcircles.png +0 -0
  212. images/pins/default/cross-2.png +0 -0
  213. images/pins/default/crossingguard.png +0 -0
  214. images/pins/default/cruiseship.png +0 -0
  215. images/pins/default/cup.png +0 -0
  216. images/pins/default/curling-2.png +0 -0
  217. images/pins/default/currencyexchange.png +0 -0
  218. images/pins/default/customs.png +0 -0
  219. images/pins/default/cycling.png +0 -0
  220. images/pins/default/cycling_feed.png +0 -0
  221. images/pins/default/cycling_sprint.png +0 -0
  222. images/pins/default/dam.png +0 -0
  223. images/pins/default/dance_class.png +0 -0
  224. images/pins/default/dancinghall.png +0 -0
  225. images/pins/default/database.png +0 -0
  226. images/pins/default/daycare.png +0 -0
  227. images/pins/default/deepseafishing.png +0 -0
  228. images/pins/default/deer.png +0 -0
  229. images/pins/default/dentist.png +0 -0
  230. images/pins/default/departmentstore.png +0 -0
  231. images/pins/default/desert-2.png +0 -0
  232. images/pins/default/dinopark.png +0 -0
  233. images/pins/default/direction_down.png +0 -0
  234. images/pins/default/disability.png +0 -0
  235. images/pins/default/diving.png +0 -0
  236. images/pins/default/dogs_leash.png +0 -0
  237. images/pins/default/dolphins.png +0 -0
  238. images/pins/default/doublebendright.png +0 -0
  239. images/pins/default/downloadicon.png +0 -0
  240. images/pins/default/drinkingfountain.png +0 -0
  241. images/pins/default/drinkingwater.png +0 -0
  242. images/pins/default/drugstore.png +0 -0
  243. images/pins/default/duck-export.png +0 -0
  244. images/pins/default/earthquake-3.png +0 -0
  245. images/pins/default/eggs.png +0 -0
  246. images/pins/default/elephants.png +0 -0
  247. images/pins/default/elevator.png +0 -0
  248. images/pins/default/elevator_down.png +0 -0
  249. images/pins/default/elevator_up.png +0 -0
  250. images/pins/default/embassy.png +0 -0
  251. images/pins/default/entrance.png +0 -0
  252. images/pins/default/exchequer.png +0 -0
  253. images/pins/default/exit.png +0 -0
  254. images/pins/default/expert.png +0 -0
  255. images/pins/default/factory.png +0 -0
  256. images/pins/default/fallingrocks.png +0 -0
  257. images/pins/default/family.png +0 -0
  258. images/pins/default/farm-2.png +0 -0
  259. images/pins/default/farmstand.png +0 -0
  260. images/pins/default/fastfood.png +0 -0
  261. images/pins/default/female-2.png +0 -0
  262. images/pins/default/ferriswheel.png +0 -0
  263. images/pins/default/ferry.png +0 -0
  264. images/pins/default/festival.png +0 -0
  265. images/pins/default/fetalalcoholsyndrom.png +0 -0
  266. images/pins/default/field.png +0 -0
  267. images/pins/default/fillingstation.png +0 -0
  268. images/pins/default/findajob.png +0 -0
  269. images/pins/default/finish.png +0 -0
  270. images/pins/default/fire-hydrant-2.png +0 -0
  271. images/pins/default/fire.png +0 -0
  272. images/pins/default/fireexstinguisher.png +0 -0
  273. images/pins/default/firemen.png +0 -0
  274. images/pins/default/fireworks.png +0 -0
  275. images/pins/default/firstaid.png +0 -0
  276. images/pins/default/fishchips.png +0 -0
  277. images/pins/default/fishing.png +0 -0
  278. images/pins/default/fishingboat.png +0 -0
  279. images/pins/default/fishingstore.png +0 -0
  280. images/pins/default/fitness.png +0 -0
  281. images/pins/default/fjord-2.png +0 -0
  282. images/pins/default/flag-export.png +0 -0
  283. images/pins/default/flood.png +0 -0
  284. images/pins/default/flowers.png +0 -0
  285. images/pins/default/folder-2.png +0 -0
  286. images/pins/default/fooddeliveryservice.png +0 -0
  287. images/pins/default/foodtruck.png +0 -0
  288. images/pins/default/footprint.png +0 -0
  289. images/pins/default/ford-2.png +0 -0
  290. images/pins/default/forest.png +0 -0
  291. images/pins/default/forest2.png +0 -0
  292. images/pins/default/fossils.png +0 -0
  293. images/pins/default/foundry-2.png +0 -0
  294. images/pins/default/fountain-2.png +0 -0
  295. images/pins/default/fourbyfour.png +0 -0
  296. images/pins/default/freqchg.png +0 -0
  297. images/pins/default/frog-2.png +0 -0
  298. images/pins/default/fruits.png +0 -0
  299. images/pins/default/ft.png +0 -0
  300. images/pins/default/funicolar-22x22.png +0 -0
  301. images/pins/default/gas_cylinder1.png +0 -0
  302. images/pins/default/gay-female.png +0 -0
  303. images/pins/default/gay-male.png +0 -0
  304. images/pins/default/geocaching-3.png +0 -0
  305. images/pins/default/geothermal-site.png +0 -0
  306. images/pins/default/geyser-2.png +0 -0
  307. images/pins/default/ghosttown.png +0 -0
  308. images/pins/default/gifts.png +0 -0
  309. images/pins/default/glacier-2.png +0 -0
  310. images/pins/default/glasses.png +0 -0
  311. images/pins/default/golfing.png +0 -0
  312. images/pins/default/gondola-2.png +0 -0
  313. images/pins/default/gourmet_0star.png +0 -0
  314. images/pins/default/grass.png +0 -0
  315. images/pins/default/grocery.png +0 -0
  316. images/pins/default/group-2.png +0 -0
  317. images/pins/default/gumball_machine.png +0 -0
  318. images/pins/default/handball.png +0 -0
  319. images/pins/default/hanggliding.png +0 -0
  320. images/pins/default/harbor.png +0 -0
  321. images/pins/default/hare1.png +0 -0
  322. images/pins/default/hats.png +0 -0
  323. images/pins/default/haybale.png +0 -0
  324. images/pins/default/headstone-2.png +0 -0
  325. images/pins/default/helicopter.png +0 -0
  326. images/pins/default/highhills.png +0 -0
  327. images/pins/default/highschool.png +0 -0
  328. images/pins/default/highway.png +0 -0
  329. images/pins/default/hiking.png +0 -0
  330. images/pins/default/historical_museum.png +0 -0
  331. images/pins/default/historicalquarter.png +0 -0
  332. images/pins/default/hoergeraeteakustiker_22px.png +0 -0
  333. images/pins/default/home-2.png +0 -0
  334. images/pins/default/homecenter.png +0 -0
  335. images/pins/default/honeycomb.png +0 -0
  336. images/pins/default/hookah_final.png +0 -0
  337. images/pins/default/horseriding.png +0 -0
  338. images/pins/default/hospital-building.png +0 -0
  339. images/pins/default/hostel_0star.png +0 -0
  340. images/pins/default/hotairbaloon.png +0 -0
  341. images/pins/default/hotel_0star.png +0 -0
  342. images/pins/default/hotspring.png +0 -0
  343. images/pins/default/house.png +0 -0
  344. images/pins/default/hunting.png +0 -0
  345. images/pins/default/hut.png +0 -0
  346. images/pins/default/icecream.png +0 -0
  347. images/pins/default/icehockey.png +0 -0
  348. images/pins/default/iceskating.png +0 -0
  349. images/pins/default/icy_road.png +0 -0
  350. images/pins/default/indoor-arena.png +0 -0
  351. images/pins/default/information.png +0 -0
  352. images/pins/default/iobridge.png +0 -0
  353. images/pins/default/jacuzzi.png +0 -0
  354. images/pins/default/japanese-food.png +0 -0
  355. images/pins/default/japanese-lantern.png +0 -0
  356. images/pins/default/japanese-sake.png +0 -0
  357. images/pins/default/japanese-sweet-2.png +0 -0
  358. images/pins/default/japanese-temple.png +0 -0
  359. images/pins/default/jazzclub.png +0 -0
  360. images/pins/default/jeep.png +0 -0
  361. images/pins/default/jetfighter.png +0 -0
  362. images/pins/default/jewelry.png +0 -0
  363. images/pins/default/jewishgrave.png +0 -0
  364. images/pins/default/jewishquarter.png +0 -0
  365. images/pins/default/jogging.png +0 -0
  366. images/pins/default/judo.png +0 -0
  367. images/pins/default/junction.png +0 -0
  368. images/pins/default/karate.png +0 -0
  369. images/pins/default/karting.png +0 -0
  370. images/pins/default/kayak1.png +0 -0
  371. images/pins/default/kayaking.png +0 -0
  372. images/pins/default/kebab.png +0 -0
  373. images/pins/default/kingair.png +0 -0
  374. images/pins/default/kiosk.png +0 -0
  375. images/pins/default/kitesurfing.png +0 -0
  376. images/pins/default/laboratory.png +0 -0
  377. images/pins/default/lake.png +0 -0
  378. images/pins/default/landfill.png +0 -0
  379. images/pins/default/landmark.png +0 -0
  380. images/pins/default/laterne.png +0 -0
  381. images/pins/default/laundromat.png +0 -0
  382. images/pins/default/levelcrossing.png +0 -0
  383. images/pins/default/library.png +0 -0
  384. images/pins/default/lifeguard-2.png +0 -0
  385. images/pins/default/lighthouse-2.png +0 -0
  386. images/pins/default/linedown.png +0 -0
  387. images/pins/default/lingerie.png +0 -0
  388. images/pins/default/liquor.png +0 -0
  389. images/pins/default/lobster-export.png +0 -0
  390. images/pins/default/lock.png +0 -0
  391. images/pins/default/lockerrental.png +0 -0
  392. images/pins/default/lodging_0star.png +0 -0
  393. images/pins/default/love_date.png +0 -0
  394. images/pins/default/loveinterest.png +0 -0
  395. images/pins/default/magicshow.png +0 -0
  396. images/pins/default/mainroad.png +0 -0
  397. images/pins/default/male-2.png +0 -0
  398. images/pins/default/mall.png +0 -0
  399. images/pins/default/map.png +0 -0
  400. images/pins/default/mapicon.png +0 -0
  401. images/pins/default/marina-2.png +0 -0
  402. images/pins/default/market.png +0 -0
  403. images/pins/default/massage.png +0 -0
  404. images/pins/default/mastcrane1.png +0 -0
  405. images/pins/default/medicalstore.png +0 -0
  406. images/pins/default/medicine.png +0 -0
  407. images/pins/default/megalith.png +0 -0
  408. images/pins/default/memorial.png +0 -0
  409. images/pins/default/metronetwork.png +0 -0
  410. images/pins/default/military.png +0 -0
  411. images/pins/default/mine.png +0 -0
  412. images/pins/default/missile-2.png +0 -0
  413. images/pins/default/mobilephonetower.png +0 -0
  414. images/pins/default/modernmonument.png +0 -0
  415. images/pins/default/moderntower.png +0 -0
  416. images/pins/default/monkey-export.png +0 -0
  417. images/pins/default/monument-historique-icon-white-22x22.png +0 -0
  418. images/pins/default/monument.png +0 -0
  419. images/pins/default/moonstar.png +0 -0
  420. images/pins/default/mosquee.png +0 -0
  421. images/pins/default/mosquito-2.png +0 -0
  422. images/pins/default/motel-2.png +0 -0
  423. images/pins/default/motorbike.png +0 -0
  424. images/pins/default/motorcycle.png +0 -0
  425. images/pins/default/mountain-pass-locator-diagonal-reverse-export.png +0 -0
  426. images/pins/default/mountainbiking-3.png +0 -0
  427. images/pins/default/mountains.png +0 -0
  428. images/pins/default/movierental.png +0 -0
  429. images/pins/default/moving-walkway-enter-export.png +0 -0
  430. images/pins/default/muffin_bagle.png +0 -0
  431. images/pins/default/mural.png +0 -0
  432. images/pins/default/museum_archeological.png +0 -0
  433. images/pins/default/museum_art.png +0 -0
  434. images/pins/default/museum_crafts.png +0 -0
  435. images/pins/default/museum_industry.png +0 -0
  436. images/pins/default/museum_naval.png +0 -0
  437. images/pins/default/museum_openair.png +0 -0
  438. images/pins/default/museum_science.png +0 -0
  439. images/pins/default/museum_war.png +0 -0
  440. images/pins/default/mushroom.png +0 -0
  441. images/pins/default/music.png +0 -0
  442. images/pins/default/music_choral.png +0 -0
  443. images/pins/default/music_classical.png +0 -0
  444. images/pins/default/music_hiphop.png +0 -0
  445. images/pins/default/music_live.png +0 -0
  446. images/pins/default/music_rock.png +0 -0
  447. images/pins/default/nanny.png +0 -0
  448. images/pins/default/ne_barn-2.png +0 -0
  449. images/pins/default/newsagent.png +0 -0
  450. images/pins/default/no-nuke-export.png +0 -0
  451. images/pins/default/nordicski.png +0 -0
  452. images/pins/default/notvisited.png +0 -0
  453. images/pins/default/nursery.png +0 -0
  454. images/pins/default/nursing_home_icon.png +0 -0
  455. images/pins/default/observatory.png +0 -0
  456. images/pins/default/office-building.png +0 -0
  457. images/pins/default/oil-2.png +0 -0
  458. images/pins/default/oilpumpjack.png +0 -0
  459. images/pins/default/oilrig2.png +0 -0
  460. images/pins/default/olympicsite.png +0 -0
  461. images/pins/default/ophthalmologist.png +0 -0
  462. images/pins/default/outlet2.png +0 -0
  463. images/pins/default/oyster-3.png +0 -0
  464. images/pins/default/pagoda-2.png +0 -0
  465. images/pins/default/paint.png +0 -0
  466. images/pins/default/paintball.png +0 -0
  467. images/pins/default/palace-2.png +0 -0
  468. images/pins/default/palm-tree-export.png +0 -0
  469. images/pins/default/panoramicview.png +0 -0
  470. images/pins/default/paragliding.png +0 -0
  471. images/pins/default/parasailing.png +0 -0
  472. images/pins/default/parkandride.png +0 -0
  473. images/pins/default/parking-meter-export.png +0 -0
  474. images/pins/default/parkinggarage.png +0 -0
  475. images/pins/default/party-2.png +0 -0
  476. images/pins/default/patisserie.png +0 -0
  477. images/pins/default/peace.png +0 -0
  478. images/pins/default/pedestriancrossing.png +0 -0
  479. images/pins/default/penguin-2.png +0 -0
  480. images/pins/default/pens.png +0 -0
  481. images/pins/default/perfumery.png +0 -0
  482. images/pins/default/petanque.png +0 -0
  483. images/pins/default/petroglyphs-2.png +0 -0
  484. images/pins/default/pets.png +0 -0
  485. images/pins/default/phantom.png +0 -0
  486. images/pins/default/phones.png +0 -0
  487. images/pins/default/photo.png +0 -0
  488. images/pins/default/photography.png +0 -0
  489. images/pins/default/picnic-2.png +0 -0
  490. images/pins/default/pig.png +0 -0
  491. images/pins/default/pin-export.png +0 -0
  492. images/pins/default/pirates.png +0 -0
  493. images/pins/default/pizzaria.png +0 -0
  494. images/pins/default/planecrash.png +0 -0
  495. images/pins/default/planetarium-2.png +0 -0
  496. images/pins/default/playground.png +0 -0
  497. images/pins/default/pleasurepier.png +0 -0
  498. images/pins/default/poker.png +0 -0
  499. images/pins/default/police.png +0 -0
  500. images/pins/default/postal.png +0 -0
  501. images/pins/default/powerlinepole.png +0 -0
  502. images/pins/default/poweroutage.png +0 -0
  503. images/pins/default/powerplant.png +0 -0
  504. images/pins/default/powersubstation.png +0 -0
  505. images/pins/default/prayer.png +0 -0
  506. images/pins/default/presentation.png +0 -0
  507. images/pins/default/price-tag-export.png +0 -0
  508. images/pins/default/printer-2.png +0 -0
  509. images/pins/default/prison.png +0 -0
  510. images/pins/default/publicart.png +0 -0
  511. images/pins/default/pyramid.png +0 -0
  512. images/pins/default/quadrifoglio.png +0 -0
  513. images/pins/default/radar.png +0 -0
  514. images/pins/default/radiation.png +0 -0
  515. images/pins/default/radio-control-model-car.png +0 -0
  516. images/pins/default/radio-station-2.png +0 -0
  517. images/pins/default/rainy.png +0 -0
  518. images/pins/default/rape.png +0 -0
  519. images/pins/default/reatorlogowhite-22x22.png +0 -0
  520. images/pins/default/recycle.png +0 -0
  521. images/pins/default/regroup.png +0 -0
  522. images/pins/default/repair.png +0 -0
  523. images/pins/default/rescue-2.png +0 -0
  524. images/pins/default/resort.png +0 -0
  525. images/pins/default/restaurant.png +0 -0
  526. images/pins/default/restaurant_african.png +0 -0
  527. images/pins/default/restaurant_breakfast.png +0 -0
  528. images/pins/default/restaurant_buffet.png +0 -0
  529. images/pins/default/restaurant_chinese.png +0 -0
  530. images/pins/default/restaurant_fish.png +0 -0
  531. images/pins/default/restaurant_greek.png +0 -0
  532. images/pins/default/restaurant_indian.png +0 -0
  533. images/pins/default/restaurant_italian.png +0 -0
  534. images/pins/default/restaurant_korean.png +0 -0
  535. images/pins/default/restaurant_mediterranean.png +0 -0
  536. images/pins/default/restaurant_mexican.png +0 -0
  537. images/pins/default/restaurant_romantic.png +0 -0
  538. images/pins/default/restaurant_steakhouse.png +0 -0
  539. images/pins/default/restaurant_tapas.png +0 -0
  540. images/pins/default/restaurant_thai.png +0 -0
  541. images/pins/default/restaurant_turkish.png +0 -0
  542. images/pins/default/restaurant_vegetarian.png +0 -0
  543. images/pins/default/revolt.png +0 -0
  544. images/pins/default/riparianhabitat.png +0 -0
  545. images/pins/default/river-2.png +0 -0
  546. images/pins/default/road.png +0 -0
  547. images/pins/default/roadtype_gravel.png +0 -0
  548. images/pins/default/rockhouse.png +0 -0
  549. images/pins/default/rodent.png +0 -0
  550. images/pins/default/rollerskate.png +0 -0
  551. images/pins/default/ropescourse.png +0 -0
  552. images/pins/default/rowboat.png +0 -0
  553. images/pins/default/rugbyfield.png +0 -0
  554. images/pins/default/ruins-2.png +0 -0
  555. images/pins/default/sailing.png +0 -0
  556. images/pins/default/sandwich-2.png +0 -0
  557. images/pins/default/sauna.png +0 -0
  558. images/pins/default/sawmill-2.png +0 -0
  559. images/pins/default/school.png +0 -0
  560. images/pins/default/schreibwaren_web.png +0 -0
  561. images/pins/default/scoutgroup.png +0 -0
  562. images/pins/default/scubadiving.png +0 -0
  563. images/pins/default/seals.png +0 -0
  564. images/pins/default/segway.png +0 -0
  565. images/pins/default/seniorsite.png +0 -0
  566. images/pins/default/septic_tank.png +0 -0
  567. images/pins/default/share.png +0 -0
  568. images/pins/default/shark-export.png +0 -0
  569. images/pins/default/shintoshrine.png +0 -0
  570. images/pins/default/shipwreck.png +0 -0
  571. images/pins/default/shoes.png +0 -0
  572. images/pins/default/shooting.png +0 -0
  573. images/pins/default/shootingrange.png +0 -0
  574. images/pins/default/shore-2.png +0 -0
  575. images/pins/default/shower.png +0 -0
  576. images/pins/default/sight-2.png +0 -0
  577. images/pins/default/signpost-2.png +0 -0
  578. images/pins/default/sikh.png +0 -0
  579. images/pins/default/ski_shoe1.png +0 -0
  580. images/pins/default/skiing.png +0 -0
  581. images/pins/default/skijump.png +0 -0
  582. images/pins/default/skilifting.png +0 -0
  583. images/pins/default/skis.png +0 -0
  584. images/pins/default/skull.png +0 -0
  585. images/pins/default/sledge.png +0 -0
  586. images/pins/default/sledge_summer.png +0 -0
  587. images/pins/default/sledgerental.png +0 -0
  588. images/pins/default/slipway.png +0 -0
  589. images/pins/default/smallcity.png +0 -0
  590. images/pins/default/smiley_happy.png +0 -0
  591. images/pins/default/smoking.png +0 -0
  592. images/pins/default/snail.png +0 -0
  593. images/pins/default/snakes.png +0 -0
  594. images/pins/default/sneakers.png +0 -0
  595. images/pins/default/snorkeling.png +0 -0
  596. images/pins/default/snowboarding.png +0 -0
  597. images/pins/default/snowmobiling.png +0 -0
  598. images/pins/default/snowpark_arc.png +0 -0
  599. images/pins/default/snowshoeing.png +0 -0
  600. images/pins/default/snowy-2.png +0 -0
  601. images/pins/default/soccer.png +0 -0
  602. images/pins/default/solarenergy.png +0 -0
  603. images/pins/default/sozialeeinrichtung.png +0 -0
  604. images/pins/default/spa.png +0 -0
  605. images/pins/default/spaceport-2.png +0 -0
  606. images/pins/default/speed_50.png +0 -0
  607. images/pins/default/speedhump.png +0 -0
  608. images/pins/default/speedriding.png +0 -0
  609. images/pins/default/spelunking.png +0 -0
  610. images/pins/default/spider.png +0 -0
  611. images/pins/default/splice.png +0 -0
  612. images/pins/default/sportscar.png +0 -0
  613. images/pins/default/sportutilityvehicle.png +0 -0
  614. images/pins/default/square-compass.png +0 -0
  615. images/pins/default/squash-2.png +0 -0
  616. images/pins/default/stadium.png +0 -0
  617. images/pins/default/stairs.png +0 -0
  618. images/pins/default/star-3.png +0 -0
  619. images/pins/default/stargate-raw.png +0 -0
  620. images/pins/default/start-race-2.png +0 -0
  621. images/pins/default/statue-2.png +0 -0
  622. images/pins/default/steamtrain.png +0 -0
  623. images/pins/default/stop.png +0 -0
  624. images/pins/default/strike.png +0 -0
  625. images/pins/default/stripclub2.png +0 -0
  626. images/pins/default/submarine-2.png +0 -0
  627. images/pins/default/sugar-shack.png +0 -0
  628. images/pins/default/summercamp.png +0 -0
  629. images/pins/default/sumo-2.png +0 -0
  630. images/pins/default/sunny.png +0 -0
  631. images/pins/default/sunsetland.png +0 -0
  632. images/pins/default/supermarket.png +0 -0
  633. images/pins/default/surfacelift.png +0 -0
  634. images/pins/default/surfing.png +0 -0
  635. images/pins/default/surfpaddle.png +0 -0
  636. images/pins/default/surveying-2.png +0 -0
  637. images/pins/default/swimming.png +0 -0
  638. images/pins/default/synagogue-2.png +0 -0
  639. images/pins/default/taekwondo-2.png +0 -0
  640. images/pins/default/tailor.png +0 -0
  641. images/pins/default/takeaway.png +0 -0
  642. images/pins/default/targ.png +0 -0
  643. images/pins/default/taxi.png +0 -0
  644. images/pins/default/taxiboat.png +0 -0
  645. images/pins/default/taxiway.png +0 -0
  646. images/pins/default/teahouse.png +0 -0
  647. images/pins/default/tebletennis.png +0 -0
  648. images/pins/default/telephone.png +0 -0
  649. images/pins/default/temple-2.png +0 -0
  650. images/pins/default/templehindu.png +0 -0
  651. images/pins/default/tennis.png +0 -0
  652. images/pins/default/terrace.png +0 -0
  653. images/pins/default/text.png +0 -0
  654. images/pins/default/textiles.png +0 -0
  655. images/pins/default/theater.png +0 -0
  656. images/pins/default/theft.png +0 -0
  657. images/pins/default/themepark.png +0 -0
  658. images/pins/default/therapy.png +0 -0
  659. images/pins/default/theravadapagoda.png +0 -0
  660. images/pins/default/theravadatemple.png +0 -0
  661. images/pins/default/thunderstorm.png +0 -0
  662. images/pins/default/ticket_office2.png +0 -0
  663. images/pins/default/tidaldiamond.png +0 -0
  664. images/pins/default/tiger-2.png +0 -0
  665. images/pins/default/tires.png +0 -0
  666. images/pins/default/toilets.png +0 -0
  667. images/pins/default/tollstation.png +0 -0
  668. images/pins/default/tools.png +0 -0
  669. images/pins/default/tornado-2.png +0 -0
  670. images/pins/default/torture.png +0 -0
  671. images/pins/default/tower.png +0 -0
  672. images/pins/default/townhouse.png +0 -0
  673. images/pins/default/toys.png +0 -0
  674. images/pins/default/trafficcamera.png +0 -0
  675. images/pins/default/trafficlight.png +0 -0
  676. images/pins/default/train.png +0 -0
  677. images/pins/default/tramway.png +0 -0
  678. images/pins/default/trash.png +0 -0
  679. images/pins/default/travel_agency.png +0 -0
  680. images/pins/default/treasure-mark.png +0 -0
  681. images/pins/default/treedown.png +0 -0
  682. images/pins/default/triskelion.png +0 -0
  683. images/pins/default/trolley.png +0 -0
  684. images/pins/default/truck3.png +0 -0
  685. images/pins/default/tsunami.png +0 -0
  686. images/pins/default/tunnel.png +0 -0
  687. images/pins/default/turtle-2.png +0 -0
  688. images/pins/default/tweet.png +0 -0
  689. images/pins/default/u-pick_stand.png +0 -0
  690. images/pins/default/ufo.png +0 -0
  691. images/pins/default/umbrella-2.png +0 -0
  692. images/pins/default/underground.png +0 -0
  693. images/pins/default/university.png +0 -0
  694. images/pins/default/usfootball.png +0 -0
  695. images/pins/default/van.png +0 -0
  696. images/pins/default/vespa.png +0 -0
  697. images/pins/default/veterinary.png +0 -0
  698. images/pins/default/video.png +0 -0
  699. images/pins/default/videogames.png +0 -0
  700. images/pins/default/villa.png +0 -0
  701. images/pins/default/vineyard-2.png +0 -0
  702. images/pins/default/volcano-2.png +0 -0
  703. images/pins/default/volleyball.png +0 -0
  704. images/pins/default/waiting.png +0 -0
  705. images/pins/default/walkingtour.png +0 -0
  706. images/pins/default/war.png +0 -0
  707. images/pins/default/warehouse-2.png +0 -0
  708. images/pins/default/water.png +0 -0
  709. images/pins/default/watercraft.png +0 -0
  710. images/pins/default/waterfall-2.png +0 -0
  711. images/pins/default/watermill-2.png +0 -0
  712. images/pins/default/waterpark.png +0 -0
  713. images/pins/default/waterskiing.png +0 -0
  714. images/pins/default/watertower.png +0 -0
  715. images/pins/default/waterwell.png +0 -0
  716. images/pins/default/waterwellpump.png +0 -0
  717. images/pins/default/webcam.png +0 -0
  718. images/pins/default/wedding.png +0 -0
  719. images/pins/default/weights.png +0 -0
  720. images/pins/default/wetlands.png +0 -0
  721. images/pins/default/whale-2.png +0 -0
  722. images/pins/default/wifi.png +0 -0
  723. images/pins/default/wiki-export.png +0 -0
  724. images/pins/default/wildlifecrossing.png +0 -0
  725. images/pins/default/wind-2.png +0 -0
  726. images/pins/default/windmill-2.png +0 -0
  727. images/pins/default/windsurfing.png +0 -0
  728. images/pins/default/windturbine.png +0 -0
  729. images/pins/default/winebar.png +0 -0
  730. images/pins/default/winetasting.png +0 -0
  731. images/pins/default/woodshed.png +0 -0
  732. images/pins/default/workoffice.png +0 -0
  733. images/pins/default/workshop.png +0 -0
  734. images/pins/default/world.png +0 -0
  735. images/pins/default/worldheritagesite.png +0 -0
  736. images/pins/default/worldwildway.png +0 -0
  737. images/pins/default/wrestling-2.png +0 -0
  738. images/pins/default/yoga.png +0 -0
  739. images/pins/default/yooner.png +0 -0
  740. images/pins/default/you-are-here-2.png +0 -0
  741. images/pins/default/youthhostel.png +0 -0
  742. images/pins/default/zombie-outbreak1.png +0 -0
  743. images/pins/default/zoo.png +0 -0
  744. images/pins/default/zoom.png +0 -0
  745. images/santa_cap.png +0 -0
  746. images/spinner.gif +0 -0
  747. js/gmw-admin.js +469 -112
  748. js/gmw.js +124 -21
  749. js/jquery.colorbox.min.js +2 -2
  750. js/select2.min.js +2 -0
  751. readme.txt +47 -30
css/gmw-admin.css CHANGED
@@ -2,13 +2,79 @@
2
  * Google Maps Widget
3
  * (c) Web factory Ltd, 2012 - 2016
4
  */
 
5
  @import url(http://fonts.googleapis.com/css?family=RobotoDraft:regular,bold,italic,thin,light&lang=en);
6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
  .gmw-label {
8
  width: 115px;
9
  display: inline-block;
10
  }
11
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  .gmw-label-wide {
13
  width: 90%;
14
  }
@@ -24,7 +90,7 @@
24
  padding: 1px 6px;
25
  }
26
 
27
- .gmw-tabs select {
28
  min-width: 230px;
29
  max-width: 331px;
30
  width: 100%;
@@ -34,7 +100,17 @@
34
  max-width: 331px;
35
  }
36
 
37
- option.promo {
 
 
 
 
 
 
 
 
 
 
38
  color: #e14d43;
39
  }
40
 
@@ -48,12 +124,24 @@ option.promo {
48
  }
49
 
50
  .gmw-dialog .ui-dialog-titlebar {
51
- line-height: 90px;
52
- height: 90px;
53
  background-color: #303030;
54
  text-align: center;
55
  }
56
 
 
 
 
 
 
 
 
 
 
 
 
 
57
  .gmw-dialog .ui-dialog-titlebar span {
58
  color: #fff;
59
  }
@@ -81,17 +169,17 @@ option.promo {
81
  .gmw-left-box,
82
  .gmw-right-box {
83
  position: relative;
84
- min-height: 335px;
85
- padding: 42px 50px 63px 50px !important;
86
  width: 34.6%;
87
  float: left;
88
  text-align: center;
89
  }
90
 
91
  .gmw-left-box .gmw_goto_activation.button-primary,
92
- .gmw-right-box .gmw_goto_subscribe.button-secondary {
93
  position: absolute;
94
- bottom: 63px;
95
  left: 77px;
96
  letter-spacing: 1px;
97
  width: 170px;
@@ -131,9 +219,15 @@ option.promo {
131
  font-size: 20px;
132
  }
133
 
 
 
 
 
 
 
134
  .gmw-dialog .ui-dialog-titlebar-close {
135
- top: 27px;
136
- right: 25px;
137
  }
138
 
139
  #gmw_promo_dialog ul {
@@ -148,9 +242,9 @@ option.promo {
148
  }
149
 
150
  .gmw-dialog input.error {
151
- border-color: rgb(225, 77, 67);
152
- outline-color: rgb(225, 77, 67);
153
- -webkit-box-shadow: rgba(225, 77, 67, 0.8) 0px 0px 2px 0px;
154
  }
155
 
156
  .gmw-dialog .input_row {
@@ -175,7 +269,19 @@ option.promo {
175
  color: #dd3d36;
176
  padding: 8px 0 0 1px;
177
  display: inline-block;
 
 
 
 
 
 
 
 
178
 
 
 
 
 
179
  }
180
 
181
  #gmw_promo_dialog .center {
@@ -203,6 +309,74 @@ input:required:invalid {
203
  border-color: #D54E21;
204
  }
205
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
206
  /*
207
  * jQuery UI Tabs 1.8.14
208
  *
@@ -217,7 +391,7 @@ input:required:invalid {
217
  .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
218
  .ui-tabs .ui-tabs-nav li a { text-decoration: none; outline: none; box-shadow: none; }
219
  .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; border-bottom: 1px solid white !important; }
220
- .ui-tabs .ui-tabs-nav li.ui-tabs-active { margin-bottom: 0; border-bottom: 1px solid white !important; }
221
  .ui-tabs .ui-tabs-nav li.ui-tabs-active a { outline: none;}
222
  .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
223
  .ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
@@ -229,6 +403,7 @@ input:required:invalid {
229
  line-height: 32px;
230
  color: #AAAAAA;
231
  padding: 0 9px;
 
232
  }
233
 
234
  .ui-tabs ul.ui-tabs-nav li {
@@ -240,11 +415,27 @@ input:required:invalid {
240
  display: inline-block;
241
  font-size: 12px;
242
  line-height: 16px;
243
- margin: 0 0 -1px 10px;
244
  text-decoration: none;
245
  text-shadow: 0 1px 0 #FFFFFF;
246
  }
247
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
248
  /* fixes for customizer */
249
  #customize-theme-controls .ui-tabs ul.ui-tabs-nav li {
250
  margin: 0 0 -1px 2px;
@@ -262,22 +453,7 @@ input:required:invalid {
262
  content: "\f230";
263
  }
264
 
265
- ul.ui-tabs-nav{
266
- float: left;
267
- border-bottom: 1px solid #e5e5e5;
268
- padding-bottom: 0;
269
- width: 100%;
270
- margin-bottom: 20px !important
271
- }
272
-
273
- .ui-state-hover a, .ui-state-active a {
274
- color: #464646 !important;
275
- }
276
-
277
- .ui-state-hover a {
278
- color: #0073aa !important;
279
- }
280
-
281
 
282
  .gmw-content-box-alternate h3,
283
  .gmw-content-box h3 {
@@ -293,8 +469,8 @@ ul.ui-tabs-nav{
293
  padding: 0;
294
  }
295
 
296
- .gmw-content-box-alternate i,
297
- .gmw-content-box i {
298
  font-size: 32px;
299
  padding: 15px 0px;
300
  }
@@ -322,13 +498,18 @@ ul.ui-tabs-nav{
322
  position: absolute;
323
  left: 0;
324
  top: 0;
 
 
 
 
 
325
  }
326
 
327
  .gmw-content-box ul li {
328
  position: relative;
329
  padding-left: 25px;
330
  text-align: left;
331
- padding-bottom: 10px;
332
  color: #fff;
333
  }
334
 
@@ -363,7 +544,7 @@ ul.ui-tabs-nav{
363
  border: 2px solid #fff;
364
  }
365
 
366
- .gmw_goto_subscribe.button-secondary {
367
  border: 2px solid #666;
368
  box-shadow: none !important;
369
  border-radius: 4px;
@@ -377,13 +558,32 @@ ul.ui-tabs-nav{
377
  height: auto !important;
378
  }
379
 
380
- .gmw_goto_subscribe.button-secondary:hover {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
381
  background: rgba(0,0,0,0.15);
382
  }
383
 
384
  .gmw-footer-intro {
385
  display: block;
386
- padding: 45px 40px;
387
  text-align: center;
388
  margin: 0px !important;
389
  font-size: 14px;
@@ -416,7 +616,7 @@ ul.ui-tabs-nav{
416
  display: block;
417
  border: 1px solid #fff;
418
  border-radius:4px;
419
- background: #0085ba;
420
  color: #fff !important;
421
  font-weight: bold;
422
  text-transform: uppercase;
@@ -459,7 +659,7 @@ ul.ui-tabs-nav{
459
  }
460
 
461
  #gmw_dialog_subscribe .button.button-primary {
462
- display: block;
463
  border: 1px solid #fff;
464
  border-radius:4px;
465
  background: #0085ba;
@@ -485,4 +685,136 @@ ul.ui-tabs-nav{
485
  #gmw_dialog_subscribe .footer p,
486
  #gmw_dialog_subscribe .footer ul li {
487
  color: #fff;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
488
  }
2
  * Google Maps Widget
3
  * (c) Web factory Ltd, 2012 - 2016
4
  */
5
+
6
  @import url(http://fonts.googleapis.com/css?family=RobotoDraft:regular,bold,italic,thin,light&lang=en);
7
 
8
+ .settings_page_gmw_options .form-table td {
9
+ padding: 15px 10px;
10
+ }
11
+
12
+ .wrap.gmw-options .ui-tabs {
13
+ margin-top: 30px;
14
+ }
15
+
16
+ .settings_page_gmw_options #gmw_activate_notice {
17
+ display: none;
18
+ }
19
+
20
+ .wrap.gmw-options .ui-tabs li.ui-tabs-active a {
21
+ font-weight: bold;
22
+ color: #404448;
23
+ }
24
+
25
+ .wrap.gmw-options .ui-tabs li.ui-tabs-active {
26
+ border-bottom: 3px solid #F1F1F1 !important;
27
+ background-color: #f1f1f1;
28
+ }
29
+
30
+ .wrap.gmw-options .ui-tabs li {
31
+ background-color: #dfdfdf;
32
+ }
33
+
34
+ .wrap.gmw-options .ui-tabs li a {
35
+ color: #908E8E;
36
+ font-weight: bold;
37
+ font-size: 13px;
38
+ padding: 0 20px;
39
+ }
40
+
41
+ .wrap.gmw-options .ui-tabs li.ui-state-hover a {
42
+ color: #404448 !important;
43
+ }
44
+
45
  .gmw-label {
46
  width: 115px;
47
  display: inline-block;
48
  }
49
 
50
+ .gmw-tabs p.colorpicker_section {
51
+ height: 30px;
52
+ }
53
+
54
+ .gmw-tabs p.colorpicker_section label {
55
+ padding-bottom: 18px;
56
+ }
57
+
58
+ .gmw-tabs p.colorpicker_section .wp-picker-container {
59
+ margin-top: 3px;
60
+ }
61
+
62
+ .gmw-tabs .gmw_lightbox_fullscreen_custom_section {
63
+ display: inline-block;
64
+ margin-top: 13px;
65
+ }
66
+
67
+ .gmw-tabs .select2-container--default .select2-selection--multiple {
68
+ border: 1px solid #ddd;
69
+ -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.07);
70
+ box-shadow: inset 0 1px 2px rgba(0,0,0,.07);
71
+ border-radius: 0;
72
+ }
73
+
74
+ .gmw-tabs .select2-container--default .select2-selection--multiple ul {
75
+ margin-bottom: -5px;
76
+ }
77
+
78
  .gmw-label-wide {
79
  width: 90%;
80
  }
90
  padding: 1px 6px;
91
  }
92
 
93
+ .gmw-tabs select, .gmw-tabs input[type=text]:not(.wp-color-picker) {
94
  min-width: 230px;
95
  max-width: 331px;
96
  width: 100%;
100
  max-width: 331px;
101
  }
102
 
103
+ option.gmw_promo {
104
+ color: #e14d43;
105
+ }
106
+
107
+ .gmw-api-key-error {
108
+ border: 1px solid #ff3f3f;
109
+ color: #ff3f3f;
110
+ padding: 10px 15px;
111
+ }
112
+
113
+ body.widgets-php .select2-container--default .select2-results__option[aria-disabled=true] {
114
  color: #e14d43;
115
  }
116
 
124
  }
125
 
126
  .gmw-dialog .ui-dialog-titlebar {
127
+ line-height: 70px;
128
+ height: 70px;
129
  background-color: #303030;
130
  text-align: center;
131
  }
132
 
133
+ .gmw-map-dialog .ui-dialog-titlebar {
134
+ line-height: 70px;
135
+ height: 70px;
136
+ font-weight: bold;
137
+ padding-left: 26px;
138
+ }
139
+
140
+ .gmw-map-dialog .ui-dialog-titlebar-close {
141
+ top: 19px;
142
+ right: 18px;
143
+ }
144
+
145
  .gmw-dialog .ui-dialog-titlebar span {
146
  color: #fff;
147
  }
169
  .gmw-left-box,
170
  .gmw-right-box {
171
  position: relative;
172
+ min-height: 300px;
173
+ padding: 35px 50px 55px 50px !important;
174
  width: 34.6%;
175
  float: left;
176
  text-align: center;
177
  }
178
 
179
  .gmw-left-box .gmw_goto_activation.button-primary,
180
+ .gmw-right-box .gmw_goto_activation.button-secondary {
181
  position: absolute;
182
+ bottom: 40px;
183
  left: 77px;
184
  letter-spacing: 1px;
185
  width: 170px;
219
  font-size: 20px;
220
  }
221
 
222
+ .gmw-dialog .ui-dialog-title img {
223
+ height: 30px;
224
+ padding-left: 35px;
225
+ padding-top: 20px;
226
+ }
227
+
228
  .gmw-dialog .ui-dialog-titlebar-close {
229
+ top: 18px;
230
+ right: 18px;
231
  }
232
 
233
  #gmw_promo_dialog ul {
242
  }
243
 
244
  .gmw-dialog input.error {
245
+ border-color: rgb(225, 77, 67) !important;
246
+ outline-color: rgb(225, 77, 67) !important;
247
+ -webkit-box-shadow: rgba(225, 77, 67, 0.8) 0px 0px 2px 0px !important;
248
  }
249
 
250
  .gmw-dialog .input_row {
269
  color: #dd3d36;
270
  padding: 8px 0 0 1px;
271
  display: inline-block;
272
+ font-weight: bold;
273
+ }
274
+
275
+ .gmw_spinner {
276
+ background: url(../images/spinner.gif) no-repeat center center;
277
+ -webkit-background-size: 20px 20px;
278
+ background-size: 20px 20px;
279
+ }
280
 
281
+ .gmw_disabled {
282
+ pointer-events: none;
283
+ opacity: .65;
284
+ filter: alpha(opacity=65);
285
  }
286
 
287
  #gmw_promo_dialog .center {
309
  border-color: #D54E21;
310
  }
311
 
312
+ .gmw-options p.description, .gmw-options span.description {
313
+ font-size: 14px;
314
+ color: rgb(102, 102, 102);
315
+ margin-left: 5px;
316
+ line-height: 180%;
317
+ }
318
+
319
+ .gmw-tabs .iris-picker {
320
+ position: absolute !important;
321
+ z-index: 99;
322
+ }
323
+
324
+ #gmw-thumb > p, #gmw-lightbox > p {
325
+ min-height: 30px;
326
+ }
327
+
328
+ #gmw_map_canvas {
329
+ width: 100%;
330
+ height: 400px;
331
+ }
332
+
333
+ #pins_container {
334
+ height: 400px;
335
+ overflow: auto;
336
+ text-align: center;
337
+ margin-left: -15px;
338
+ }
339
+
340
+ #pins_container>a {
341
+ padding: 10px;
342
+ margin: 5px 8px;
343
+ border: 1px solid #fff;
344
+ width: 80px;
345
+ height: 80px;
346
+ font-size: 12px;
347
+ word-break: break-all;
348
+ text-align: center;
349
+ display: inline-block;
350
+ text-decoration: none;
351
+ color: #111;
352
+ vertical-align: top;
353
+ }
354
+
355
+ #pins_container>a span {
356
+ display: block;
357
+ }
358
+
359
+ #pins_container a:hover {
360
+ border: 1px solid #e5e5e5;
361
+ }
362
+
363
+ #search_header input {
364
+ width: 45%;
365
+ padding: 17px;
366
+ font-size: 17px;
367
+ }
368
+
369
+ #search_header {
370
+ text-align: center;
371
+ padding: 10px;
372
+ }
373
+
374
+ .thumb_pin_img_library_preview {
375
+ height: 28px;
376
+ vertical-align: bottom;
377
+ margin-right: 10px;
378
+ }
379
+
380
  /*
381
  * jQuery UI Tabs 1.8.14
382
  *
391
  .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
392
  .ui-tabs .ui-tabs-nav li a { text-decoration: none; outline: none; box-shadow: none; }
393
  .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; border-bottom: 1px solid white !important; }
394
+ .ui-tabs .ui-tabs-nav li.ui-tabs-active { margin-bottom: -1px; border-bottom: 3px solid white !important; }
395
  .ui-tabs .ui-tabs-nav li.ui-tabs-active a { outline: none;}
396
  .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
397
  .ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
403
  line-height: 32px;
404
  color: #AAAAAA;
405
  padding: 0 9px;
406
+ display: block;
407
  }
408
 
409
  .ui-tabs ul.ui-tabs-nav li {
415
  display: inline-block;
416
  font-size: 12px;
417
  line-height: 16px;
418
+ margin: 0 0 0 10px;
419
  text-decoration: none;
420
  text-shadow: 0 1px 0 #FFFFFF;
421
  }
422
 
423
+ ul.ui-tabs-nav{
424
+ float: left;
425
+ border-bottom: 1px solid #e5e5e5;
426
+ padding-bottom: 0;
427
+ width: 100%;
428
+ margin-bottom: 20px !important
429
+ }
430
+
431
+ .ui-state-hover a, .ui-state-active a {
432
+ color: #464646 !important;
433
+ }
434
+
435
+ .ui-state-hover a {
436
+ color: #0073aa !important;
437
+ }
438
+
439
  /* fixes for customizer */
440
  #customize-theme-controls .ui-tabs ul.ui-tabs-nav li {
441
  margin: 0 0 -1px 2px;
453
  content: "\f230";
454
  }
455
 
456
+ /* upgrade dialog */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
457
 
458
  .gmw-content-box-alternate h3,
459
  .gmw-content-box h3 {
469
  padding: 0;
470
  }
471
 
472
+ .gmw-content-box-alternate i.dashicons,
473
+ .gmw-content-box i.dashicons {
474
  font-size: 32px;
475
  padding: 15px 0px;
476
  }
498
  position: absolute;
499
  left: 0;
500
  top: 0;
501
+ font-weight: bold;
502
+ }
503
+
504
+ .gmw-content-box ul li.gmw-not-available:before {
505
+ content:'\f335';
506
  }
507
 
508
  .gmw-content-box ul li {
509
  position: relative;
510
  padding-left: 25px;
511
  text-align: left;
512
+ padding-bottom: 3px;
513
  color: #fff;
514
  }
515
 
544
  border: 2px solid #fff;
545
  }
546
 
547
+ .gmw_goto_activation.button-secondary {
548
  border: 2px solid #666;
549
  box-shadow: none !important;
550
  border-radius: 4px;
558
  height: auto !important;
559
  }
560
 
561
+ .gmw_goto_activation.button-secondary:hover {
562
+ background: rgba(0,0,0,0.15);
563
+ }
564
+
565
+ .gmw_goto_pro.button-secondary {
566
+ border: 2px solid #d54e21;
567
+ box-shadow: none !important;
568
+ border-radius: 4px;
569
+ background: #fff;
570
+ color: #d54e21;
571
+ font-weight: bold;
572
+ text-transform: uppercase;
573
+ font-size: 12px;
574
+ padding: 10px 20px;
575
+ text-shadow:none !important;
576
+ height: auto !important;
577
+ margin-top: 20px;
578
+ }
579
+
580
+ .gmw_goto_pro.button-secondary:hover {
581
  background: rgba(0,0,0,0.15);
582
  }
583
 
584
  .gmw-footer-intro {
585
  display: block;
586
+ padding: 25px 0px;
587
  text-align: center;
588
  margin: 0px !important;
589
  font-size: 14px;
616
  display: block;
617
  border: 1px solid #fff;
618
  border-radius:4px;
619
+ background-color: #0085ba;
620
  color: #fff !important;
621
  font-weight: bold;
622
  text-transform: uppercase;
659
  }
660
 
661
  #gmw_dialog_subscribe .button.button-primary {
662
+ display: block;
663
  border: 1px solid #fff;
664
  border-radius:4px;
665
  background: #0085ba;
685
  #gmw_dialog_subscribe .footer p,
686
  #gmw_dialog_subscribe .footer ul li {
687
  color: #fff;
688
+ }
689
+
690
+ .gmw-pro-red {
691
+ color: #d54e21;
692
+ font-weight: bold;
693
+ }
694
+
695
+ .gmw_pointer h3 {
696
+ background-color: #f7f7f7;
697
+ border: 1px solid #dfdfdf;
698
+ border-bottom: none;
699
+ padding-left: 15px;
700
+ color: #797979;
701
+ }
702
+ .gmw_pointer h3:before, .gmw_pointer .wp-pointer-buttons {
703
+ display: none;
704
+ }
705
+
706
+ .gmw-pick-address {
707
+ display: inline-block;
708
+ }
709
+
710
+ .input-address-group {
711
+ width: 100%;
712
+ position: relative;
713
+ }
714
+
715
+ .input-address-group input {
716
+ position: relative;
717
+ z-index:100;
718
+ padding-right: 55px;
719
+ height: 29px;
720
+ max-width: 100% !important;
721
+ padding: 4px 10px;
722
+ margin: 0px !important;
723
+ }
724
+
725
+ .input-address-group .gmw-pick-address {
726
+ position: absolute;
727
+ top: 0;
728
+ right:-1px;
729
+ z-index: 9999;
730
+ padding: 4px 10px;
731
+ border-top-left-radius: 0;
732
+ border-bottom-left-radius: 0;
733
+ box-shadow: none;
734
+ height: 29px;
735
+ }
736
+
737
+ #gmw-lightbox .input-address-group {
738
+ display: inline-block;
739
+ max-width: 330px;
740
+ }
741
+
742
+ .gmw_dialog_current_coordinates {
743
+ display: inline-block;
744
+ vertical-align: top;
745
+ width: 49%;
746
+ max-width: 420px;
747
+ font-size: 14px;
748
+ }
749
+
750
+ .gmw_closest_matching_address {
751
+ display: inline-block;
752
+ vertical-align: top;
753
+ width: 49%;
754
+ max-width: 420px;
755
+ font-size: 14px;
756
+ }
757
+
758
+ .gmw_close_save_map_dialog {
759
+ margin-top: 5px !important;
760
+ }
761
+
762
+ #gmw_dialog_pro_features .list-left {
763
+ width: 65%;
764
+ display: inline-block;
765
+ vertical-align: top;
766
+ margin: 0;
767
+ padding: 0;
768
+ }
769
+
770
+ #gmw_dialog_pro_features .list-right {
771
+ width: 33%;
772
+ display: inline-block;
773
+ vertical-align: top;
774
+ margin: 0;
775
+ padding: 0;
776
+ }
777
+
778
+ #gmw_dialog_pro_features li {
779
+ margin-bottom: 20px;
780
+ list-style-position: inside;
781
+ text-indent: -1em;
782
+ padding-left: 1em;
783
+ }
784
+
785
+ #gmw_dialog_pro_features li:first-letter {
786
+ text-transform: capitalize
787
+ }
788
+
789
+ #gmw_dialog_pro_features .content {
790
+ padding: 0 35px 20px 55px;
791
+ }
792
+
793
+ #gmw_dialog_pro_features h4 {
794
+ text-align: center;
795
+ margin: 30px 0 35px 0;
796
+ font-size: 19px;
797
+ }
798
+
799
+ #gmw_dialog_pro_features .footer {
800
+ background-color: #f5f5f5;
801
+ }
802
+
803
+ .gmw_goto_intro.button-secondary {
804
+ border: 2px solid #d54e21;
805
+ box-shadow: none !important;
806
+ border-radius: 4px;
807
+ background: #f5f5f5;
808
+ color: #d54e21;
809
+ font-weight: bold;
810
+ text-transform: uppercase;
811
+ font-size: 12px;
812
+ padding: 10px 20px;
813
+ text-shadow:none !important;
814
+ height: auto !important;
815
+ margin: 0 0 10px 0;
816
+ }
817
+
818
+ .gmw_goto_intro.button-secondary:hover {
819
+ background: rgba(0,0,0,0.15);
820
  }
css/gmw.css CHANGED
@@ -7,10 +7,14 @@
7
  padding: 5px;
8
  font-style: italic;
9
  }
 
10
  .gmw-map iframe {
11
  border: none;
12
  margin: 0;
13
  padding: 0;
 
 
 
14
  }
15
 
16
  .gmw-error {
@@ -31,220 +35,716 @@
31
  #cboxLoadedContent{overflow:auto; -webkit-overflow-scrolling: touch;}
32
  #cboxTitle{margin:0;}
33
  #cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;}
 
34
  #cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
35
  .cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none; -ms-interpolation-mode:bicubic;}
36
  .cboxIframe{width:100%; height:100%; display:block; border:0; padding:0; margin:0;}
37
  #colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box; -moz-box-sizing:content-box; -webkit-box-sizing:content-box;}
38
 
39
  /* dark */
40
- #cboxOverlay.gmw-dark{background:url(../images/overlay.png) repeat 0 0;}
41
  #colorbox.gmw-dark{outline:0;}
42
- .gmw-dark #cboxTopLeft{width:21px; height:21px; background:url(../images/controls.png) no-repeat -101px 0;}
43
- .gmw-dark #cboxTopRight{width:21px; height:21px; background:url(../images/controls.png) no-repeat -130px 0;}
44
- .gmw-dark #cboxBottomLeft{width:21px; height:21px; background:url(../images/controls.png) no-repeat -101px -29px;}
45
- .gmw-dark #cboxBottomRight{width:21px; height:21px; background:url(../images/controls.png) no-repeat -130px -29px;}
46
- .gmw-dark #cboxMiddleLeft{width:21px; background:url(../images/controls.png) left top repeat-y;}
47
- .gmw-dark #cboxMiddleRight{width:21px; background:url(../images/controls.png) right top repeat-y;}
48
- .gmw-dark #cboxTopCenter{height:21px; background:url(../images/border.png) 0 0 repeat-x;}
49
- .gmw-dark #cboxBottomCenter{height:21px; background:url(../images/border.png) 0 -29px repeat-x;}
50
- .gmw-dark #cboxContent{background:#fff; overflow:hidden;}
51
- .gmw-dark .cboxIframe{background:#fff;}
52
- .gmw-dark #cboxError{padding:50px; border:1px solid #ccc;}
53
- .gmw-dark #cboxLoadedContent{margin-bottom:28px;}
54
- .gmw-dark #cboxTitle{position:absolute; bottom:4px; left:0; text-align:center; width:100%; color:#949494;}
55
- .gmw-dark #cboxCurrent{position:absolute; bottom:4px; left:58px; color:#949494;}
56
- .gmw-dark #cboxLoadingOverlay{background:url(../images/loading_background.png) no-repeat center center;}
57
- .gmw-dark #cboxLoadingGraphic{background:url(../images/loading.gif) no-repeat center center;}
58
-
59
- .gmw-dark #cboxPrevious, .gmw-dark #cboxNext, .gmw-dark #cboxSlideshow, .gmw-dark #cboxClose {border:0; padding:0; margin:0; overflow:visible; width:auto; background:none; }
60
-
61
- .gmw-dark #cboxPrevious:active, .gmw-dark #cboxNext:active, .gmw-dark #cboxSlideshow:active, .gmw-dark #cboxClose:active {outline:0;}
62
-
63
- .gmw-dark #cboxSlideshow{position:absolute; bottom:4px; right:30px; color:#0092ef;}
64
- .gmw-dark #cboxPrevious{position:absolute; bottom:0; left:0; background:url(../images/controls.png) no-repeat -75px 0; width:25px; height:25px; text-indent:-9999px;}
65
- .gmw-dark #cboxPrevious:hover{background-position:-75px -25px;}
66
- .gmw-dark #cboxNext{position:absolute; bottom:0; left:27px; background:url(../images/controls.png) no-repeat -50px 0; width:25px; height:25px; text-indent:-9999px;}
67
- .gmw-dark #cboxNext:hover{background-position:-50px -25px;}
68
- .gmw-dark #cboxClose{position:absolute; bottom:0; right:0; background:url(../images/controls.png) no-repeat -25px 0; width:25px; height:25px; text-indent:-9999px;}
69
- .gmw-dark #cboxClose:hover{background-position:-25px -25px;}
70
-
71
 
72
  /* light */
73
  #cboxOverlay.gmw-light {background:#fff;}
74
  #colorbox.gmw-light {outline:0;}
75
- .gmw-light #cboxContent{margin-top:32px; overflow:visible; background:#000;}
76
- .gmw-light .cboxIframe{background:#fff;}
77
- .gmw-light #cboxError{padding:50px; border:1px solid #ccc;}
78
- .gmw-light #cboxLoadedContent{background:#fff; padding:1px; border:1px solid #777;}
79
- .gmw-light #cboxLoadingGraphic{background:url(../images/loading.gif) no-repeat center center;}
80
- .gmw-light #cboxLoadingOverlay{background:#000;}
81
- .gmw-light #cboxTitle{position:absolute; top:-22px; left:0; color:#000;}
82
- .gmw-light #cboxCurrent{position:absolute; top:-22px; right:205px; text-indent:-9999px;}
83
-
84
- .gmw-light #cboxPrevious, .gmw-light #cboxNext, .gmw-light #cboxSlideshow, .gmw-light #cboxClose {border:0; padding:0; margin:0; overflow:visible; text-indent:-9999px; width:20px; height:20px; position:absolute; top:-20px; background:url(../images/controls.png) no-repeat 0 0;}
85
-
86
- .gmw-light #cboxPrevious:active, .gmw-light #cboxNext:active, .gmw-light #cboxSlideshow:active, .gmw-light #cboxClose:active {outline:0;}
87
-
88
- .gmw-light #cboxPrevious{background-position:0px 0px; right:44px;}
89
- .gmw-light #cboxPrevious:hover{background-position:0px -25px;}
90
- .gmw-light #cboxNext{background-position:-25px 0px; right:22px;}
91
- .gmw-light #cboxNext:hover{background-position:-25px -25px;}
92
- .gmw-light #cboxClose{background-position:-50px 0px; right:0;}
93
- .gmw-light #cboxClose:hover{background-position:-50px -25px;}
94
- .gmw-light .cboxSlideshow_on #cboxPrevious, .cboxSlideshow_off .gmw-light #cboxPrevious{right:66px;}
95
- .gmw-light .cboxSlideshow_on #cboxSlideshow{background-position:-75px -25px; right:44px;}
96
- .gmw-light .cboxSlideshow_on #cboxSlideshow:hover{background-position:-100px -25px;}
97
- .gmw-light .cboxSlideshow_off #cboxSlideshow{background-position:-100px 0px; right:44px;}
98
- .gmw-light .cboxSlideshow_off #cboxSlideshow:hover{background-position:-75px -25px;}
99
-
100
 
101
  /* blue */
102
  #cboxOverlay.gmw-noimage-blue { background:#80a2ba; }
103
- .gmw-noimage-blue #cboxTopLeft, .gmw-noimage-blue #cboxTopCenter, .gmw-noimage-blue #cboxTopRight, .gmw-noimage-blue #cboxBottomLeft, .gmw-noimage-blue #cboxBottomCenter, .gmw-noimage-blue #cboxBottomRight, .gmw-noimage-blue #cboxMiddleLeft, .gmw-noimage-blue #cboxMiddleRight {
104
- background:#0d4270;
105
- }
106
- #colorbox.gmw-noimage-blue {
107
- outline: 1px solid #3175a5;
108
- -webkit-box-shadow: 0px 0px 25px rgba(50, 50, 50, 0.5);
109
- -moz-box-shadow: 0px 0px 25px rgba(50, 50, 50, 0.5);
110
- box-shadow: 0px 0px 25px rgba(50, 50, 50, 0.5);
111
- }
112
- .gmw-noimage-blue #cboxTopLeft{width:15px; height:15px; }
113
- .gmw-noimage-blue #cboxTopCenter{height:15px; }
114
- .gmw-noimage-blue #cboxTopRight{width:15px; height:15px; }
115
- .gmw-noimage-blue #cboxBottomLeft{width:15px; height:15px; }
116
- .gmw-noimage-blue #cboxBottomCenter{height:15px; }
117
- .gmw-noimage-blue #cboxBottomRight{width:15px; height:15px; }
118
- .gmw-noimage-blue #cboxMiddleLeft{width:15px; }
119
- .gmw-noimage-blue #cboxMiddleRight{width:15px; }
120
-
121
- .gmw-noimage-blue #cboxContent{background:#0d4270; overflow:visible;}
122
- .gmw-noimage-blue .cboxIframe {background:#fff;}
123
- .gmw-noimage-blue .cboxPhoto {margin-bottom:28px; margin-top:0 !important;}
124
- .gmw-noimage-blue .cboxPhoto.withLongCaption { margin-bottom:12px; }
125
- .gmw-noimage-blue span.better-caption { text-align:center; }
126
- .gmw-noimage-blue #cboxError{padding:50px; border:1px solid #ccc;}
127
- .gmw-noimage-blue #cboxLoadedContent{margin-bottom:8px; font-style: italic; }
128
- .gmw-noimage-blue #cboxTitle{
129
- display:none !important;
130
- position:absolute; bottom:18px; clear:both; text-align:center; width:100%; color:#999; min-height:16px; overflow:hidden;
131
- }
132
- .gmw-noimage-blue .better-caption { display:none !important; }
133
- .gmw-noimage-blue #cboxCurrent{
134
- position:absolute; bottom:0px; left:100px; color:#CCCCCC; text-transform:capitalize; display:inline-block; padding-left:1.5em;
135
- font-size:11px; line-height:20px; left:45%;
136
- }
137
- .gmw-noimage-blue #cboxLoadingOverlay{background:#fff url(../images/loading.gif) no-repeat 50% 50%;}
138
-
139
- /* these elements are buttons, and may need to have additional styles reset to avoid unwanted base styles */
140
- .gmw-noimage-blue #cboxPrevious, .gmw-noimage-blue #cboxNext, .gmw-noimage-blue #cboxSlideshow, .gmw-noimage-blue #cboxClose {
141
- border:0; padding:0; margin:0; overflow:visible; width:auto; background:none; text-transform:capitalize;
142
- -webkit-border-radius:5px; border-radius:5px;
143
- }
144
-
145
- /* avoid outlines on :active (mouseclick), but preserve outlines on :focus (tabbed navigating) */
146
- .gmw-noimage-blue #cboxPrevious:active, .gmw-noimage-blue #cboxNext:active, .gmw-noimage-blue #cboxSlideshow:active, .gmw-noimage-blue #cboxClose:active {outline:0;}
147
- button:focus{ outline:1px dotted #000000; }
148
-
149
- .gmw-noimage-blue #cboxSlideshow{position:absolute; bottom:0px; right:62px; }
150
- .gmw-noimage-blue #cboxPrevious{position:absolute; bottom:0px; left:0; }
151
- .gmw-noimage-blue #cboxNext{position:absolute; bottom:0px; left:76px; }
152
- .gmw-noimage-blue #cboxClose{position:absolute; bottom:0; right:0; display:block; }
153
-
154
- /* Button Styles */
155
- .gmw-noimage-blue #cboxPrevious,
156
- .gmw-noimage-blue #cboxNext,
157
- .gmw-noimage-blue #cboxSlideshow,
158
- .gmw-noimage-blue #cboxClose {
159
- color:#D2D2D2;
160
- font-size:12px; line-height:12px;
161
- background-color: #0b2a44;
162
- border-right: 1px solid #061c2f;
163
- border-bottom: 1px solid #061c2f;
164
- padding: 6px 10px;
165
- transition: all 0.35s ease;
166
- }
167
- .gmw-noimage-blue #cboxPrevious:hover,
168
- .gmw-noimage-blue #cboxNext:hover,
169
- .gmw-noimage-blue #cboxSlideshow:hover,
170
- .gmw-noimage-blue #cboxClose:hover {
171
- background-color: #cccccc; color:#444444;
172
- }
173
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
174
 
175
- /*
176
- IE7 and IE8. This style is not applied to IE9.
177
- */
178
- /*.gmw-noimage-blue .cboxIE #colorbox {} */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
179
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
180
 
181
- /* rounded */
182
- #cboxOverlay.gmw-noimage-rounded {
183
- background:#fff;
184
- }
185
- .gmw-noimage-rounded #cboxTopLeft, .gmw-noimage-rounded #cboxTopCenter, .gmw-noimage-rounded #cboxTopRight, .gmw-noimage-rounded #cboxBottomLeft, .gmw-noimage-rounded #cboxBottomCenter, .gmw-noimage-rounded #cboxBottomRight, .gmw-noimage-rounded #cboxMiddleLeft, .gmw-noimage-rounded #cboxMiddleRight {
186
- background:#ffffff;
187
- }
188
- #colorbox.gmw-noimage-rounded {
189
- outline: 1px solid #D5D5D5;
190
- -webkit-box-shadow: 0px 0px 25px rgba(50, 50, 50, 0.5);
191
- -moz-box-shadow: 0px 0px 25px rgba(50, 50, 50, 0.5);
192
- box-shadow: 0px 0px 25px rgba(50, 50, 50, 0.5);
193
- -webkit-border-radius: 8px;
194
- border-radius: 8px;
195
- }
196
- .gmw-noimage-rounded #cboxTopLeft{width:15px; height:15px; }
197
- .gmw-noimage-rounded #cboxTopCenter{height:15px; }
198
- .gmw-noimage-rounded #cboxTopRight{width:15px; height:15px; }
199
- .gmw-noimage-rounded #cboxBottomLeft{width:15px; height:15px; }
200
- .gmw-noimage-rounded #cboxBottomCenter{height:15px; }
201
- .gmw-noimage-rounded #cboxBottomRight{width:15px; height:15px; }
202
- .gmw-noimage-rounded #cboxMiddleLeft{width:15px; }
203
- .gmw-noimage-rounded #cboxMiddleRight{width:15px; }
204
-
205
- .gmw-noimage-rounded #cboxContent{background:#fff; overflow:visible;}
206
- .gmw-noimage-rounded .cboxIframe {background:#fff;}
207
- .gmw-noimage-rounded .cboxPhoto {margin-bottom:28px; margin-top:0 !important;}
208
- .gmw-noimage-rounded .cboxPhoto.withLongCaption { margin-bottom:12px; }
209
- .gmw-noimage-rounded span.better-caption { line-height:16px; text-align:left; margin-bottom:6px; display:block; }
210
- .gmw-noimage-rounded #cboxError{padding:50px; border:1px solid #ccc;}
211
- .gmw-noimage-rounded #cboxLoadedContent{margin-bottom:24px; font-style: italic; }
212
- .gmw-noimage-rounded #cboxTitle{ position:absolute; bottom:0px; clear:both; text-align:left; width:100%; color:#999; min-height:16px; overflow:hidden; }
213
- .gmw-noimage-rounded #cboxCurrent{position:absolute; bottom:0px; left:100px; color:#999; text-transform:capitalize; display:inline-block; padding-left:1.5em; }
214
- .gmw-noimage-rounded #cboxLoadingOverlay{background:#fff url(../images/loading.gif) no-repeat 50% 50%;}
215
-
216
- /* these elements are buttons, and may need to have additional styles reset to avoid unwanted base styles */
217
- .gmw-noimage-rounded #cboxPrevious, .gmw-noimage-rounded #cboxNext, .gmw-noimage-rounded #cboxSlideshow, .gmw-noimage-rounded #cboxClose {border:0; padding:0; margin:0; overflow:visible; width:auto; background:none; text-transform:capitalize; }
218
-
219
- /* avoid outlines on :active (mouseclick), but preserve outlines on :focus (tabbed navigating) */
220
- .gmw-noimage-rounded #cboxPrevious:active, .gmw-noimage-rounded #cboxNext:active, .gmw-noimage-rounded #cboxSlideshow:active, .gmw-noimage-rounded #cboxClose:active {outline:0;}
221
- button:focus{ outline:1px dotted #ffffff; }
222
-
223
- .gmw-noimage-rounded #cboxSlideshow{position:absolute; bottom:0px; right:52px; color:#444;}
224
- .gmw-noimage-rounded #cboxPrevious{position:absolute; bottom:0px; left:0; color:#444;}
225
- .gmw-noimage-rounded #cboxNext{position:absolute; bottom:0px; left:63px; color:#444;}
226
- .gmw-noimage-rounded #cboxClose{position:absolute; bottom:0; right:0; display:block; color:#444;}
227
-
228
- /* Button Styles */
229
- .gmw-noimage-rounded #cboxPrevious,
230
- .gmw-noimage-rounded #cboxNext,
231
- .gmw-noimage-rounded #cboxSlideshow,
232
- .gmw-noimage-rounded #cboxClose {
233
- color: #777777;
234
- font-size:10px; line-height:12px;
235
- background-color: #dddddd;
236
- border-right: 1px solid #ccc;
237
- border-bottom: 1px solid #ccc;
238
- padding: 4px 8px;
239
- }
240
- .gmw-noimage-rounded #cboxPrevious:hover,
241
- .gmw-noimage-rounded #cboxNext:hover,
242
- .gmw-noimage-rounded #cboxSlideshow:hover,
243
- .gmw-noimage-rounded #cboxClose:hover {
244
- background-color: #cccccc; color:#444444;
245
- }
246
 
247
- /*
248
- IE7 and IE8. This style is not applied to IE9.
249
- */
250
- /*.gmw-noimage-rounded .cboxIE #colorbox {} */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
  padding: 5px;
8
  font-style: italic;
9
  }
10
+
11
  .gmw-map iframe {
12
  border: none;
13
  margin: 0;
14
  padding: 0;
15
+ z-index: 999;
16
+ position: relative;
17
+ background: url(../images/colorbox/loading.gif) no-repeat center center;
18
  }
19
 
20
  .gmw-error {
35
  #cboxLoadedContent{overflow:auto; -webkit-overflow-scrolling: touch;}
36
  #cboxTitle{margin:0;}
37
  #cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;}
38
+ #cboxLoadingOverlay{background: url(../images/colorbox/loading.gif) no-repeat 50% 50%;}
39
  #cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
40
  .cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none; -ms-interpolation-mode:bicubic;}
41
  .cboxIframe{width:100%; height:100%; display:block; border:0; padding:0; margin:0;}
42
  #colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box; -moz-box-sizing:content-box; -webkit-box-sizing:content-box;}
43
 
44
  /* dark */
45
+ #cboxOverlay.gmw-dark{background:url(../images/colorbox/dark/overlay.png) repeat 0 0;}
46
  #colorbox.gmw-dark{outline:0;}
47
+ .gmw-dark #cboxTopLeft{width:21px; height:21px; background:url(../images/colorbox/dark/controls.png) no-repeat -101px 0;}
48
+ .gmw-dark #cboxTopRight{width:21px; height:21px; background:url(../images/colorbox/dark/controls.png) no-repeat -130px 0;}
49
+ .gmw-dark #cboxBottomLeft{width:21px; height:21px; background:url(../images/colorbox/dark/controls.png) no-repeat -101px -29px;}
50
+ .gmw-dark #cboxBottomRight{width:21px; height:21px; background:url(../images/colorbox/dark/controls.png) no-repeat -130px -29px;}
51
+ .gmw-dark #cboxMiddleLeft{width:21px; background:url(../images/colorbox/dark/controls.png) left top repeat-y;}
52
+ .gmw-dark #cboxMiddleRight{width:21px; background:url(../images/colorbox/dark/controls.png) right top repeat-y;}
53
+ .gmw-dark #cboxTopCenter{height:21px; background:url(../images/colorbox/dark/border.png) 0 0 repeat-x;}
54
+ .gmw-dark #cboxBottomCenter{height:21px; background:url(../images/colorbox/dark/border.png) 0 -29px repeat-x;}
55
+ .gmw-dark #cboxContent{background:#fff; overflow:hidden;}
56
+ .gmw-dark .cboxIframe{background:#fff;}
57
+ .gmw-dark #cboxError{padding:50px; border:1px solid #ccc;}
58
+ .gmw-dark #cboxLoadedContent{margin-bottom:28px;}
59
+ .gmw-dark #cboxTitle{position:absolute; bottom:-1px; left:0; text-align:center; width:100%; color:#949494; }
60
+ .gmw-dark #cboxCurrent{position:absolute; bottom:4px; left:58px; color:#949494;}
61
+ .gmw-dark #cboxLoadingOverlay{background:url(../images/colorbox/dark/loading_background.png) no-repeat center center;}
62
+ .gmw-dark #cboxPrevious, .gmw-dark #cboxNext, .gmw-dark #cboxSlideshow, .gmw-dark #cboxClose {border:0; padding:0; margin:0; overflow:visible; width:auto; background:none; }
63
+ .gmw-dark #cboxPrevious:active, .gmw-dark #cboxNext:active, .gmw-dark #cboxSlideshow:active, .gmw-dark #cboxClose:active {outline:0;}
64
+ .gmw-dark #cboxSlideshow{position:absolute; bottom:4px; right:30px; color:#0092ef;}
65
+ .gmw-dark #cboxPrevious{position:absolute; bottom:0; left:0; background:url(../images/colorbox/dark/controls.png) no-repeat -75px 0; width:25px; height:25px; text-indent:-9999px;}
66
+ .gmw-dark #cboxPrevious:hover{background-position:-75px -25px;}
67
+ .gmw-dark #cboxNext{position:absolute; bottom:0; left:27px; background:url(../images/colorbox/dark/controls.png) no-repeat -50px 0; width:25px; height:25px; text-indent:-9999px;}
68
+ .gmw-dark #cboxNext:hover{background-position:-50px -25px;}
69
+ .gmw-dark #cboxClose{position:absolute; bottom:0; right:0; background:url(../images/colorbox/dark/controls.png) no-repeat -25px 0; width:25px; height:25px; text-indent:-9999px;}
70
+ .gmw-dark #cboxClose:hover{background-position:-25px -25px;}
 
 
 
 
 
71
 
72
  /* light */
73
  #cboxOverlay.gmw-light {background:#fff;}
74
  #colorbox.gmw-light {outline:0;}
75
+ .gmw-light #cboxContent{margin-top:32px; overflow:visible; background:#000;}
76
+ .gmw-light .cboxIframe{background:#fff;}
77
+ .gmw-light #cboxError{padding:50px; border:1px solid #ccc;}
78
+ .gmw-light #cboxLoadedContent{background:#fff; padding:1px; border:1px solid #777;}
79
+ .gmw-light #cboxLoadingOverlay{background:#000;}
80
+ .gmw-light #cboxTitle{position:absolute; top:-33px; left:0; color:#000;}
81
+ .gmw-light #cboxCurrent{position:absolute; top:-22px; right:205px; text-indent:-9999px;}
82
+ .gmw-light #cboxPrevious, .gmw-light #cboxNext, .gmw-light #cboxSlideshow, .gmw-light #cboxClose {border:0; padding:0; margin:0; overflow:visible; text-indent:-9999px; width:21px; height:23px; position:absolute; top:-26px; background:url(../images/colorbox/dark/controls.png) no-repeat 0 0;}
83
+ .gmw-light #cboxPrevious:active, .gmw-light #cboxNext:active, .gmw-light #cboxSlideshow:active, .gmw-light #cboxClose:active {outline:0;}
84
+ .gmw-light #cboxPrevious{background-position:0px 0px; right:44px;}
85
+ .gmw-light #cboxPrevious:hover{background-position:0px -25px;}
86
+ .gmw-light #cboxNext{background-position:-25px 0px; right:22px;}
87
+ .gmw-light #cboxNext:hover{background-position:-25px -25px;}
88
+ .gmw-light #cboxClose{background-position:-27px 0px;top:1px;right: 2px;}
89
+ .gmw-light #cboxClose:hover{background-position:-27px -25px;}
90
+ .gmw-light .cboxSlideshow_on #cboxPrevious, .cboxSlideshow_off .gmw-light #cboxPrevious{right:66px;}
91
+ .gmw-light .cboxSlideshow_on #cboxSlideshow{background-position:-75px -25px; right:44px;}
92
+ .gmw-light .cboxSlideshow_on #cboxSlideshow:hover{background-position:-100px -25px;}
93
+ .gmw-light .cboxSlideshow_off #cboxSlideshow{background-position:-100px 0px; right:44px;}
94
+ .gmw-light .cboxSlideshow_off #cboxSlideshow:hover{background-position:-75px -25px;}
 
 
 
 
 
95
 
96
  /* blue */
97
  #cboxOverlay.gmw-noimage-blue { background:#80a2ba; }
98
+ .gmw-noimage-blue #cboxTopLeft, .gmw-noimage-blue #cboxTopCenter, .gmw-noimage-blue #cboxTopRight, .gmw-noimage-blue #cboxBottomLeft, .gmw-noimage-blue #cboxBottomCenter, .gmw-noimage-blue #cboxBottomRight, .gmw-noimage-blue #cboxMiddleLeft, .gmw-noimage-blue #cboxMiddleRight { background:#0d4270; }
99
+ #colorbox.gmw-noimage-blue { outline: 1px solid #3175a5; -webkit-box-shadow: 0px 0px 25px rgba(50, 50, 50, 0.5); -moz-box-shadow: 0px 0px 25px rgba(50, 50, 50, 0.5); box-shadow: 0px 0px 25px rgba(50, 50, 50, 0.5); }
100
+ .gmw-noimage-blue #cboxTopLeft{width:15px; height:15px; }
101
+ .gmw-noimage-blue #cboxTopCenter{height:15px; }
102
+ .gmw-noimage-blue #cboxTopRight{width:15px; height:15px; }
103
+ .gmw-noimage-blue #cboxBottomLeft{width:15px; height:15px; }
104
+ .gmw-noimage-blue #cboxBottomCenter{height:15px; }
105
+ .gmw-noimage-blue #cboxBottomRight{width:15px; height:15px; }
106
+ .gmw-noimage-blue #cboxMiddleLeft{width:15px; }
107
+ .gmw-noimage-blue #cboxMiddleRight{width:15px; }
108
+ .gmw-noimage-blue #cboxContent{background:#0d4270; overflow:visible;}
109
+ .gmw-noimage-blue .cboxIframe {background:#fff;}
110
+ .gmw-noimage-blue .cboxPhoto {margin-bottom:28px; margin-top:0 !important;}
111
+ .gmw-noimage-blue .cboxPhoto.withLongCaption { margin-bottom:12px; }
112
+ .gmw-noimage-blue span.better-caption { text-align:center; }
113
+ .gmw-noimage-blue #cboxError{padding:50px; border:1px solid #ccc;}
114
+ .gmw-noimage-blue #cboxLoadedContent{margin-bottom:8px; font-style: italic; }
115
+ .gmw-noimage-blue #cboxTitle{ display:none !important; position:absolute; bottom:18px; clear:both; text-align:center; width:100%; color:#999; min-height:16px; overflow:hidden; }
116
+ .gmw-noimage-blue .gmw-header, .gmw-noimage-blue .gmw-footer{color:#FFF;}
117
+ .gmw-noimage-blue .better-caption { display:none !important; }
118
+ .gmw-noimage-blue #cboxCurrent{ position:absolute; bottom:0px; left:100px; color:#CCCCCC; text-transform:capitalize; display:inline-block; padding-left:1.5em; font-size:11px; line-height:20px; left:45%; }
119
+ .gmw-noimage-blue #cboxLoadingOverlay{background:#fff;}
120
+ .gmw-noimage-blue #cboxPrevious, .gmw-noimage-blue #cboxNext, .gmw-noimage-blue #cboxSlideshow, .gmw-noimage-blue #cboxClose { border:0; padding:0; margin:0; overflow:visible; width:auto; background:none; text-transform:capitalize; -webkit-border-radius:5px; border-radius:5px; }
121
+ .gmw-noimage-blue #cboxPrevious:active, .gmw-noimage-blue #cboxNext:active, .gmw-noimage-blue #cboxSlideshow:active, .gmw-noimage-blue #cboxClose:active {outline:0;}
122
+ .gmw-noimage-blue button:focus{ outline:1px dotted #000000; }
123
+ .gmw-noimage-blue #cboxSlideshow{position:absolute; bottom:0px; right:62px; }
124
+ .gmw-noimage-blue #cboxPrevious{position:absolute; bottom:0px; left:0; }
125
+ .gmw-noimage-blue #cboxNext{position:absolute; bottom:0px; left:76px; }
126
+ .gmw-noimage-blue #cboxClose{position:absolute; bottom:0; right:0; display:block; }
127
+ .gmw-noimage-blue #cboxPrevious,
128
+ .gmw-noimage-blue #cboxNext,
129
+ .gmw-noimage-blue #cboxSlideshow,
130
+ .gmw-noimage-blue #cboxClose { color:#D2D2D2; font-size:12px; line-height:12px; background-color: #0b2a44; border-right: 1px solid #061c2f; border-bottom: 1px solid #061c2f; padding: 6px 10px; transition: all 0.35s ease; }
131
+ .gmw-noimage-blue #cboxPrevious:hover,
132
+ .gmw-noimage-blue #cboxNext:hover,
133
+ .gmw-noimage-blue #cboxSlideshow:hover,
134
+ .gmw-noimage-blue #cboxClose:hover { background-color: #cccccc; color:#444444; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
135
 
136
+ /* rounded */
137
+ #cboxOverlay.gmw-noimage-rounded { background:#fff; }
138
+ .gmw-noimage-rounded #cboxTopLeft, .gmw-noimage-rounded #cboxTopCenter, .gmw-noimage-rounded #cboxTopRight, .gmw-noimage-rounded #cboxBottomLeft, .gmw-noimage-rounded #cboxBottomCenter, .gmw-noimage-rounded #cboxBottomRight, .gmw-noimage-rounded #cboxMiddleLeft, .gmw-noimage-rounded #cboxMiddleRight { background:#ffffff; }
139
+ #colorbox.gmw-noimage-rounded { outline: 1px solid #D5D5D5; -webkit-box-shadow: 0px 0px 25px rgba(50, 50, 50, 0.5); -moz-box-shadow: 0px 0px 25px rgba(50, 50, 50, 0.5); box-shadow: 0px 0px 25px rgba(50, 50, 50, 0.5); -webkit-border-radius: 8px; border-radius: 8px; }
140
+ .gmw-noimage-rounded #cboxTopLeft{width:15px; height:15px; }
141
+ .gmw-noimage-rounded #cboxTopCenter{height:15px; }
142
+ .gmw-noimage-rounded #cboxTopRight{width:15px; height:15px; }
143
+ .gmw-noimage-rounded #cboxBottomLeft{width:15px; height:15px; }
144
+ .gmw-noimage-rounded #cboxBottomCenter{height:15px; }
145
+ .gmw-noimage-rounded #cboxBottomRight{width:15px; height:15px; }
146
+ .gmw-noimage-rounded #cboxMiddleLeft{width:15px; }
147
+ .gmw-noimage-rounded #cboxMiddleRight{width:15px; }
148
+ .gmw-noimage-rounded #cboxContent{background:#fff; overflow:visible;}
149
+ .gmw-noimage-rounded .cboxIframe {background:#fff;}
150
+ .gmw-noimage-rounded .cboxPhoto {margin-bottom:28px; margin-top:0 !important;}
151
+ .gmw-noimage-rounded .cboxPhoto.withLongCaption { margin-bottom:12px; }
152
+ .gmw-noimage-rounded span.better-caption { line-height:16px; text-align:left; margin-bottom:6px; display:block; }
153
+ .gmw-noimage-rounded #cboxError{padding:50px; border:1px solid #ccc;}
154
+ .gmw-noimage-rounded #cboxLoadedContent{margin-bottom:24px; font-style: italic; }
155
+ .gmw-noimage-rounded #cboxTitle{ position:absolute; bottom:0px; clear:both; text-align:left; width:100%; color:#999; min-height:16px; overflow:hidden; }
156
+ .gmw-noimage-rounded #cboxCurrent{position:absolute; bottom:0px; left:100px; color:#999; text-transform:capitalize; display:inline-block; padding-left:1.5em; }
157
+ .gmw-noimage-rounded #cboxLoadingOverlay{background:#fff;}
158
+ .gmw-noimage-rounded #cboxPrevious, .gmw-noimage-rounded #cboxNext, .gmw-noimage-rounded #cboxSlideshow, .gmw-noimage-rounded #cboxClose {border:0; padding:0; margin:0; overflow:visible; width:auto; background:none; text-transform:capitalize; }
159
+ .gmw-noimage-rounded #cboxPrevious:active, .gmw-noimage-rounded #cboxNext:active, .gmw-noimage-rounded #cboxSlideshow:active, .gmw-noimage-rounded #cboxClose:active {outline:0;}
160
+ .gmw-noimage-rounded button:focus{ outline:1px dotted #ffffff; }
161
+ .gmw-noimage-rounded #cboxSlideshow{position:absolute; bottom:0px; right:52px; color:#444;}
162
+ .gmw-noimage-rounded #cboxPrevious{position:absolute; bottom:0px; left:0; color:#444;}
163
+ .gmw-noimage-rounded #cboxNext{position:absolute; bottom:0px; left:63px; color:#444;}
164
+ .gmw-noimage-rounded #cboxClose{position:absolute; bottom:0; right:0; display:block; color:#444;}
165
+ .gmw-noimage-rounded #cboxPrevious,
166
+ .gmw-noimage-rounded #cboxNext,
167
+ .gmw-noimage-rounded #cboxSlideshow,
168
+ .gmw-noimage-rounded #cboxClose { color: #777777; font-size:10px; line-height:12px; background-color: #dddddd; border-right: 1px solid #ccc; border-bottom: 1px solid #ccc; padding: 4px 8px; }
169
+ .gmw-noimage-rounded #cboxPrevious:hover,
170
+ .gmw-noimage-rounded #cboxNext:hover,
171
+ .gmw-noimage-rounded #cboxSlideshow:hover,
172
+ .gmw-noimage-rounded #cboxClose:hover { background-color: #cccccc; color:#444444; }
173
 
174
+ /* darkrimmed */
175
+ #cboxOverlay.gmw-darkrimmed{ background:#202020; }
176
+ .gmw-darkrimmed #cboxWrapper { overflow:visible; }
177
+ .gmw-darkrimmed #cboxTopLeft, .gmw-darkrimmed#cboxTopCenter, .gmw-darkrimmed #cboxTopRight, .gmw-darkrimmed #cboxBottomLeft, .gmw-darkrimmed #cboxBottomCenter, .gmw-darkrimmed #cboxBottomRight, .gmw-darkrimmed #cboxMiddleLeft, .gmw-darkrimmed #cboxMiddleRight {background:#090909;}
178
+ #colorbox.gmw-darkrimmed {outline:0;background:#090909;overflow:visible;}
179
+ .gmw-darkrimmed #cboxTopLeft{width:12px; height:12px; -webkit-border-radius: 12px 0 0 0; border-radius: 10px 0 0 0; }
180
+ .gmw-darkrimmed #cboxTopCenter{height:12px; }
181
+ .gmw-darkrimmed #cboxTopRight{width:12px; height:12px; -webkit-border-radius: 0 12px 0 0; border-radius: 0 10px 0 0; }
182
+ .gmw-darkrimmed #cboxBottomLeft{width:12px; height:12px; -webkit-border-radius: 0 0 0 12px; border-radius: 0 0 0 10px; }
183
+ .gmw-darkrimmed #cboxBottomCenter{height:12px; }
184
+ .gmw-darkrimmed #cboxBottomRight{width:12px; height:12px; -webkit-border-radius: 0 0 12px 0; border-radius: 0 0 10px 0; }
185
+ .gmw-darkrimmed #cboxMiddleLeft{width:12px; }
186
+ .gmw-darkrimmed #cboxMiddleRight{width:12px; }
187
+ .gmw-darkrimmed .gmw-header,.gmw-darkrimmed .gmw-footer {color:#FFF;}
188
+ .gmw-darkrimmed #cboxContent{ background:#090909; -webkit-border-radius: 6px; border-radius: 6px; overflow:visible; }
189
+ .gmw-darkrimmed .cboxIframe {background:#fff;}
190
+ .gmw-darkrimmed .cboxPhoto { margin-bottom:0px;}
191
+ .gmw-darkrimmed .cboxPhoto.withLongCaption { margin-bottom:0px; }
192
+ .gmw-darkrimmed #cboxError{padding:50px; border:1px solid #ccc;}
193
+ .gmw-darkrimmed #cboxLoadedContent{ margin-bottom:0px; font-style: italic; background:#090909; -webkit-border-radius: 9px; border-radius: 9px;}
194
+ .gmw-darkrimmed #cboxTitle{ position:absolute; left:0; bottom:0; clear:both; text-align:center; width:100%; overflow:hidden; min-height:16px; background:#333333; background:rgba(0,0,0,0.7); padding:10px 0; color:#fefefe; }
195
+ .gmw-darkrimmed #cboxCurrent{position:absolute; bottom:0px; left:100px; color:#999; text-transform:capitalize; display:inline-block; padding-left:1.5em; }
196
+ .gmw-darkrimmed #cboxLoadingOverlay{background:#fff;}
197
+ .gmw-darkrimmed #cboxPrevious, .gmw-darkrimmed #cboxNext, .gmw-darkrimmed #cboxSlideshow, .gmw-darkrimmed #cboxClose {border:0; padding:0; margin:0; overflow:visible; width:auto; background:none; text-transform:capitalize; }
198
+ .gmw-darkrimmed #cboxPrevious:active, .gmw-darkrimmed #cboxNext:active, .gmw-darkrimmed #cboxSlideshow:active, .gmw-darkrimmed #cboxClose:active {outline:none;}
199
+ .gmw-darkrimmed button:focus{ outline:1px dotted #000; }
200
+ .gmw-darkrimmed #cboxPrevious, .gmw-darkrimmed #cboxNext, .gmw-darkrimmed #cboxClose { display:block; background:url(../images/colorbox/darkrimmed/colorbox_darkrimmed.png) 0 0 no-repeat;transition:opacity 0.35s ease; color:#e5e5e5;}
201
+ .gmw-darkrimmed #cboxPrevious, .gmw-darkrimmed #cboxNext {text-indent: 100%;white-space: nowrap;overflow: hidden;}
202
+ .gmw-darkrimmed #cboxPrevious, .gmw-darkrimmed #cboxNext { width:64px; height:64px; }
203
+ .gmw-darkrimmed #cboxPrevious:hover, .gmw-darkrimmed #cboxNext:hover, .gmw-darkrimmed #cboxClose:hover { opacity:0.75; }
204
+ .gmw-darkrimmed #cboxPrevious{position:absolute; bottom:46%; left:-68px; color:#444; background-position:0 -64px; }
205
+ .gmw-darkrimmed #cboxNext{position:absolute; bottom:46%; right:-68px; color:#444; background-position:0 0; }
206
+ .gmw-darkrimmed #cboxClose{position:absolute; top:0; right:0; display:block; color:#444; background-image:none; color:#fefefe;background-position:right -1px;font-size:12px;background-color:#090909; font-weight:bold; text-transform:uppercase; text-align:left; width:auto; height:28px; padding:0 8px; line-height:28px; -webkit-border-radius: 0 0 0 6px; border-radius: 0 0 0 6px;}
207
+ .gmw-darkrimmed #cboxCurrent { left:0; bottom:-28px; font-size:10px; width:100%; margin:0; text-align:left; color:#555555; }
208
+ .gmw-darkrimmed #cboxSlideshow{position:absolute; top:32px; right:-6px; color:#444;}
209
+ .gmw-darkrimmed #cboxSlideshow {color: #f9f9f9; font-size:10px; line-height:12px;background-color: #000000; padding: 4px 8px;}
210
+ .gmw-darkrimmed #cboxSlideshow:hover { background-color: #111111; color:#ffffff;}
211
+ .gmw-darkrimmed #cboxSlideshow { width:32px; height:32px; top:auto; bottom:-48px; left:48%; background:url(../images/colorbox/darkrimmed/colorbox_darkrimmed.png) no-repeat -16px -148px; display:block; transition:opacity 0.35s ease;text-indent: 150%; white-space: nowrap;overflow: hidden;}
212
+ .gmw-darkrimmed #cboxSlideshow:hover { background-color:transparent; opacity:0.75; }
213
+ .gmw-darkrimmed .cboxSlideshow_off #cboxSlideshow { background-position:-16px -207px; }
214
+ .gmw-darkrimmed .cboxSlideshow_on #cboxSlideshow { background-position:-16px -148px; }
215
+ #colorbox.gmw-darkrimmed { border-radius: 18px; }
216
 
217
+ /* vintage */
218
+ #cboxOverlay.gmw-vintage{ background:#555555 url("../images/colorbox/vintage/pattern.jpg") repeat 0 0; -webkit-box-shadow: inset 0px 0px 256px 0px rgba(0, 0, 0, 0.75); box-shadow: inset 0px 0px 256px 0px rgba(0, 0, 0, 0.75);}
219
+ .gmw-vintage #cboxWrapper { overflow:visible; }
220
+ .gmw-vintage #cboxTopLeft, .gmw-vintage #cboxTopCenter, .gmw-vintage #cboxTopRight, .gmw-vintage #cboxBottomLeft, .gmw-vintage #cboxBottomCenter, .gmw-vintage #cboxBottomRight, .gmw-vintage #cboxMiddleLeft, .gmw-vintage #cboxMiddleRight { background:#ffffff;}
221
+ #colorbox.gmw-vintage { outline:none;background:transparent;overflow:visible;}
222
+ .gmw-vintage #cboxTopLeft,.gmw-vintage #cboxTopRight,.gmw-vintage #cboxBottomLeft,.gmw-vintage #cboxBottomRight,.gmw-vintage #cboxMiddleLeft,.gmw-vintage #cboxMiddleRight{ background:transparent url("../images/colorbox/vintage/frame1.png") no-repeat 0 0;}
223
+ .gmw-vintage #cboxMiddleLeft,.gmw-vintage #cboxMiddleRight { background-repeat:repeat-y; }
224
+ .gmw-vintage #cboxTopCenter, .gmw-vintage #cboxBottomCenter { background:transparent url("../images/colorbox/vintage/frame2.png") repeat-x 0 0;}
225
+ .gmw-vintage #cboxTopLeft { width:32px; height:32px; background-position:0 0; }
226
+ .gmw-vintage #cboxTopCenter{height:32px; background-position:0 -32px; }
227
+ .gmw-vintage #cboxTopRight{width:32px; height:32px; background-position:-32px 0; }
228
+ .gmw-vintage #cboxBottomLeft{width:32px; height:32px; background-position:0 -32px; }
229
+ .gmw-vintage #cboxBottomCenter{height:32px; }
230
+ .gmw-vintage #cboxBottomRight{width:32px; height:32px; background-position:-32px -32px; }
231
+ .gmw-vintage #cboxMiddleLeft{width:32px; background-position:-96px 0; }
232
+ .gmw-vintage #cboxMiddleRight{width:32px; background-position:-64px 0; }
233
+ .gmw-vintage #cboxContent{ background:#ffffff; overflow:visible; }
234
+ .gmw-vintage .cboxIframe {background:#fff;}
235
+ .gmw-vintage .cboxPhoto { margin-bottom:0px;}
236
+ .gmw-vintage .cboxPhoto.withLongCaption { margin-bottom:0px; }
237
+ .gmw-vintage #cboxError{padding:50px; border:1px solid #ccc;}
238
+ .gmw-vintage #cboxLoadedContent{ margin-bottom:0px; font-style: italic; background:#ffffff; }
239
+ .gmw-vintage #cboxTitle { display:none !important; }
240
+ .gmw-vintage #cboxCurrent{ display:none !important; }
241
+ .gmw-vintage #cboxLoadingOverlay{background:#fff;}
242
+ .gmw-vintage #cboxPrevious, .gmw-vintage #cboxNext, .gmw-vintage #cboxSlideshow, .gmw-vintage #cboxClose {border:0; padding:0; margin:0; overflow:visible; width:auto; background:none; text-transform:capitalize; }
243
+ .gmw-vintage #cboxPrevious:active, .gmw-vintage #cboxNext:active, .gmw-vintage #cboxSlideshow:active, .gmw-vintage #cboxClose:active {outline:0;}
244
+ .gmw-vintage #cboxPrevious, .gmw-vintage #cboxNext, .gmw-vintage #cboxClose { display:block; background:transparent url(../images/colorbox/vintage/frame1.png) 0 0 no-repeat; transition:opacity 0.35s ease; color:#e5e5e5; }
245
+ .gmw-vintage #cboxPrevious, .gmw-vintage #cboxNext, .gmw-vintage #cboxClose { text-indent: 100%; white-space: nowrap; overflow: hidden; }
246
+ .gmw-vintage #cboxPrevious, .gmw-vintage #cboxNext, .gmw-vintage #cboxClose { width:64px; height:64px; }
247
+ .gmw-vintage #cboxPrevious, .gmw-vintage #cboxNext { opacity:0.5; }
248
+ .gmw-vintage #cboxClose { opacity:1.0; border-left:none; }
249
+ .gmw-vintage #cboxPrevious:hover, .gmw-vintage #cboxNext:hover, .gmw-vintage #cboxClose:hover { opacity:1.0; }
250
+ .gmw-vintage #cboxPrevious{ position:absolute; bottom:46%; left:-85px; color:#444; background-position:-196px 0px; }
251
+ .gmw-vintage #cboxNext{ position:absolute; bottom:46%; right:-92px; color:#444; background-position:-128px 0px; }
252
+ .gmw-vintage #cboxClose{ width:22px; height:22px; position:absolute; top:36px; left:100%; margin-left:30px; color:#444; background-position:right 0px; transition:width 0.25s ease; background-color:#888687; border:1px solid #67676b; -webkit-box-shadow: inset 8px 0px 15px -6px rgba(0, 0, 0, 0.4);box-shadow: inset 8px 0px 15px -6px rgba(0, 0, 0, 0.4); }
253
+ .gmw-vintage #cboxClose:hover { width:26px; }
254
+ .gmw-vintage #cboxSlideshow { position:absolute; top:100%; margin-top:28px; left:50%; margin-left:-25px; width:100px; height:25px; color: #e7e8e5; text-shadow:1px 1px 0 #6e6d6d; font-size:10px; line-height:12px; background-color: #ffffff;padding: 6px 10px; background-color:#888687; -webkit-box-shadow: inset 0px 8px 15px -6px rgba(0, 0, 0, 0.4);box-shadow: inset 0px 8px 15px -6px rgba(0, 0, 0, 0.4);}
255
+ .gmw-vintage #cboxSlideshow:hover { color:#ffffff; }
256
 
257
+ /* fancyoverlay */
258
+ #cboxOverlay.gmw-fancyoverlay{ background:#272727; }
259
+ .gmw-fancyoverlay #cboxWrapper { overflow:visible; }
260
+ .gmw-fancyoverlay #cboxTopLeft, .gmw-fancyoverlay #cboxTopCenter, .gmw-fancyoverlay #cboxTopRight, .gmw-fancyoverlay #cboxBottomLeft, .gmw-fancyoverlay #cboxBottomCenter, .gmw-fancyoverlay #cboxBottomRight, .gmw-fancyoverlay #cboxMiddleLeft, .gmw-fancyoverlay #cboxMiddleRight {background:#ffffff;}
261
+ #colorbox.gmw-fancyoverlay {overflow:visible;border: 1px solid #D5D5D5;}
262
+ .gmw-fancyoverlay #cboxTopLeft{width:6px; height:6px; }
263
+ .gmw-fancyoverlay #cboxTopCenter{height:6px; }
264
+ .gmw-fancyoverlay #cboxTopRight{width:6px; height:6px; }
265
+ .gmw-fancyoverlay #cboxBottomLeft{width:6px; height:6px; }
266
+ .gmw-fancyoverlay #cboxBottomCenter{height:6px; }
267
+ .gmw-fancyoverlay #cboxBottomRight{width:6px; height:6px; }
268
+ .gmw-fancyoverlay #cboxMiddleLeft{width:6px; }
269
+ .gmw-fancyoverlay #cboxMiddleRight{width:6px; }
270
+ .gmw-fancyoverlay #cboxContent{background:#fff; overflow:visible;}
271
+ .gmw-fancyoverlay .cboxIframe {background:#fff;}
272
+ .gmw-fancyoverlay .cboxPhoto {margin-bottom:0px;}
273
+ .gmw-fancyoverlay .cboxPhoto.withLongCaption { margin-bottom:0px; }
274
+ .gmw-fancyoverlay #cboxError{padding:50px; border:1px solid #ccc;}
275
+ .gmw-fancyoverlay #cboxLoadedContent{margin-bottom:0px; font-style: italic; outline:0;}
276
+ .gmw-fancyoverlay #cboxLoadedContent:focus { outline: none;}
277
+ .gmw-fancyoverlay #cboxTitle{position:absolute; left:0; bottom:0; clear:both; text-align:center; width:100%; overflow:hidden;min-height:16px; background:#FFF;background:rgba(255, 255, 255, 0.7);padding:10px 0; color:#000; }
278
+ .gmw-fancyoverlay #cboxCurrent{position:absolute; bottom:0px; left:100px; color:#999; text-transform:capitalize; display:inline-block; padding-left:1.5em; }
279
+ .gmw-fancyoverlay #cboxPrevious, .gmw-fancyoverlay #cboxNext, .gmw-fancyoverlay #cboxSlideshow, .gmw-fancyoverlay #cboxClose {border:0; padding:0; margin:0; overflow:visible; width:auto; background:none; text-transform:capitalize; }
280
+ .gmw-fancyoverlay #cboxPrevious:active, .gmw-fancyoverlay #cboxNext:active, .gmw-fancyoverlay #cboxSlideshow:active, .gmw-fancyoverlay #cboxClose:active {outline:0;}
281
+ .gmw-fancyoverlay #cboxPrevious, .gmw-fancyoverlay #cboxNext, .gmw-fancyoverlay #cboxClose {width:27px; height:27px; display:block; background:url(../images/colorbox/fancyoverlay/colorbox_fancyoverlay.png) no-repeat 0 0;transition:opacity 0.35s ease;text-indent: 100%;white-space: nowrap; overflow: hidden;}
282
+ .gmw-fancyoverlay #cboxPrevious:hover, .gmw-fancyoverlay #cboxNext:hover, .gmw-fancyoverlay #cboxClose:hover { opacity:0.75; }
283
+ .gmw-fancyoverlay #cboxPrevious{position:absolute; bottom:50%; left:0; color:#444; background-position:0 -54px; }
284
+ .gmw-fancyoverlay #cboxNext{position:absolute; bottom:50%; right:0; color:#444; background-position:0 -27px; }
285
+ .gmw-fancyoverlay #cboxClose{position:absolute; top:-21px; right:-21px; display:block; color:#444; background-position:0 0; }
286
+ .gmw-fancyoverlay #cboxCurrent { left:0; bottom:-24px; font-size:10px; width:100%; margin:0; text-align:center; }
287
+ .gmw-fancyoverlay #cboxSlideshow{position:absolute; bottom:-28px; right:-6px; color:#444;}
288
+ .gmw-fancyoverlay #cboxSlideshow {color: #f9f9f9;font-size:10px; line-height:12px;background-color: #191919;padding: 4px 8px;}
289
+ .gmw-fancyoverlay #cboxSlideshow:hover {background-color: #111111; color:#ffffff;}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
290
 
291
+ /* rounded-white */
292
+ #cboxOverlay.gmw-rounded-white{background:#fff; opacity: 0.9; filter: alpha(opacity = 90);}
293
+ #colorbox.gmw-rounded-white{outline:0;}
294
+ .gmw-rounded-white #cboxTopLeft{width:25px; height:25px; background:url(../images/colorbox/rounded-white/border1.png) no-repeat 0 0;}
295
+ .gmw-rounded-white #cboxTopCenter{height:25px; background:url(../images/colorbox/rounded-white/border1.png) repeat-x 0 -50px;}
296
+ .gmw-rounded-white #cboxTopRight{width:25px; height:25px; background:url(../images/colorbox/rounded-white/border1.png) no-repeat -25px 0;}
297
+ .gmw-rounded-white #cboxBottomLeft{width:25px; height:25px; background:url(../images/colorbox/rounded-white/border1.png) no-repeat 0 -25px;}
298
+ .gmw-rounded-white #cboxBottomCenter{height:25px; background:url(../images/colorbox/rounded-white/border1.png) repeat-x 0 -75px;}
299
+ .gmw-rounded-white #cboxBottomRight{width:25px; height:25px; background:url(../images/colorbox/rounded-white/border1.png) no-repeat -25px -25px;}
300
+ .gmw-rounded-white #cboxMiddleLeft{width:25px; background:url(../images/colorbox/rounded-white/border2.png) repeat-y 0 0;}
301
+ .gmw-rounded-white #cboxMiddleRight{width:25px; background:url(../images/colorbox/rounded-white/border2.png) repeat-y -25px 0;}
302
+ .gmw-rounded-white #cboxContent{background:#fff; overflow:hidden;}
303
+ .gmw-rounded-white .cboxIframe{background:#fff;}
304
+ .gmw-rounded-white #cboxError{padding:50px; border:1px solid #ccc;}
305
+ .gmw-rounded-white #cboxLoadedContent{margin-bottom:20px;}
306
+ .gmw-rounded-white #cboxTitle{position:absolute; bottom:0px; left:0; text-align:center; width:100%; color:#999;}
307
+ .gmw-rounded-white #cboxCurrent{position:absolute; bottom:0px; left:100px; color:#999;}
308
+ .gmw-rounded-white #cboxPrevious, .gmw-rounded-white #cboxNext, .gmw-rounded-white #cboxSlideshow, .gmw-rounded-white #cboxClose {border:0; padding:0; margin:0; overflow:visible; width:auto; background:none; }
309
+ .gmw-rounded-white #cboxPrevious:active, .gmw-rounded-white #cboxNext:active, .gmw-rounded-white #cboxSlideshow:active, .gmw-rounded-white #cboxClose:active {outline:0;}
310
+ .gmw-rounded-white #cboxSlideshow{position:absolute; bottom:0px; right:42px; color:#444;}
311
+ .gmw-rounded-white #cboxPrevious{position:absolute; bottom:0px; left:0; color:#444;}
312
+ .gmw-rounded-white #cboxNext{position:absolute; bottom:0px; left:63px; color:#444;}
313
+ .gmw-rounded-white #cboxClose{position:absolute; bottom:0; right:0; display:block; color:#444;}
314
+ /*.gmw-rounded-white.cboxIE #cboxTopLeft,.gmw-rounded-white.cboxIE #cboxTopCenter,.gmw-rounded-white.cboxIE #cboxTopRight,.gmw-rounded-white.cboxIE #cboxBottomLeft,.gmw-rounded-white.cboxIE #cboxBottomCenter,.gmw-rounded-white.cboxIE #cboxBottomRight,.gmw-rounded-white.cboxIE #cboxMiddleLeft, .gmw-rounded-white.cboxIE #cboxMiddleRight {filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF);} */
315
+
316
+ /* gray-square */
317
+ #cboxOverlay.gmw-gray-square{background:#000; opacity: 0.9; filter: alpha(opacity = 90);}
318
+ #colorbox.gmw-gray-square{outline:0;}
319
+ .gmw-gray-square #cboxTopLeft{width:14px; height:14px; background:url(../images/colorbox/gray-square/controls.png) no-repeat 0 0;}
320
+ .gmw-gray-square #cboxTopCenter{height:14px; background:url(../images/colorbox/gray-square/border.png) repeat-x top left;}
321
+ .gmw-gray-square #cboxTopRight{width:14px; height:14px; background:url(../images/colorbox/gray-square/controls.png) no-repeat -36px 0;}
322
+ .gmw-gray-square #cboxBottomLeft{width:14px; height:43px; background:url(../images/colorbox/gray-square/controls.png) no-repeat 0 -32px;}
323
+ .gmw-gray-square #cboxBottomCenter{height:43px; background:url(../images/colorbox/gray-square/border.png) repeat-x bottom left;}
324
+ .gmw-gray-square #cboxBottomRight{width:14px; height:43px; background:url(../images/colorbox/gray-square/controls.png) no-repeat -36px -32px;}
325
+ .gmw-gray-square #cboxMiddleLeft{width:14px; background:url(../images/colorbox/gray-square/controls.png) repeat-y -175px 0;}
326
+ .gmw-gray-square #cboxMiddleRight{width:14px; background:url(../images/colorbox/gray-square/controls.png) repeat-y -211px 0;}
327
+ .gmw-gray-square #cboxContent{background:#fff; overflow:visible;}
328
+ .gmw-gray-square .cboxIframe{background:#fff;}
329
+ .gmw-gray-square #cboxError{padding:50px; border:1px solid #ccc;}
330
+ .gmw-gray-square #cboxLoadedContent{margin-bottom:5px;}
331
+ .gmw-gray-square #cboxLoadingOverlay{background:url(../images/colorbox/gray-square/loading_background.png) no-repeat center center;}
332
+ .gmw-gray-square #cboxTitle{position:absolute; bottom:-25px; left:0; text-align:center; width:100%; font-weight:bold; color:#7C7C7C;}
333
+ .gmw-gray-square #cboxCurrent{position:absolute; bottom:-25px; left:58px; font-weight:bold; color:#7C7C7C;}
334
+ .gmw-gray-square #cboxPrevious, .gmw-gray-square #cboxNext, .gmw-gray-square #cboxSlideshow, .gmw-gray-square #cboxClose {border:0; padding:0; margin:0; overflow:visible; position:absolute; bottom:-29px; background:url(../images/colorbox/gray-square/controls.png) no-repeat 0px 0px; width:23px; height:23px; text-indent:-9999px;}
335
+ .gmw-gray-square #cboxPrevious:active, .gmw-gray-square #cboxNext:active, .gmw-gray-square #cboxSlideshow:active, .gmw-gray-square #cboxClose:active {outline:0;}
336
+ .gmw-gray-square #cboxPrevious{left:0px; background-position: -51px -25px;}
337
+ .gmw-gray-square #cboxPrevious:hover{background-position:-51px 0px;}
338
+ .gmw-gray-square #cboxNext{left:27px; background-position:-75px -25px;}
339
+ .gmw-gray-square #cboxNext:hover{background-position:-75px 0px;}
340
+ .gmw-gray-square #cboxClose{right:0; background-position:-100px -25px;}
341
+ .gmw-gray-square #cboxClose:hover{background-position:-100px 0px;}
342
+ .gmw-gray-square .cboxSlideshow_on #cboxSlideshow{background-position:-125px 0px; right:27px;}
343
+ .gmw-gray-square .cboxSlideshow_on #cboxSlideshow:hover{background-position:-150px 0px;}
344
+ .gmw-gray-square .cboxSlideshow_off #cboxSlideshow{background-position:-150px -25px; right:27px;}
345
+ .gmw-gray-square .cboxSlideshow_off #cboxSlideshow:hover{background-position:-125px 0px;}
346
+
347
+ /* square-white */
348
+ #cboxOverlay.gmw-square-white{background:#fff; opacity: 0.9; filter: alpha(opacity = 90);}
349
+ #colorbox.gmw-square-white{outline:0;}
350
+ .gmw-square-white #cboxContent{margin-top:32px; overflow:visible; background:#000;}
351
+ .gmw-square-white .cboxIframe{background:#fff;}
352
+ .gmw-square-white #cboxError{padding:50px; border:1px solid #ccc;}
353
+ .gmw-square-white #cboxLoadedContent{background:#FFF; padding:1px;}
354
+ .gmw-square-white #cboxLoadingOverlay{background:#000;}
355
+ .gmw-square-white #cboxTitle{position:absolute; top:-22px; left:0; color:#000;}
356
+ .gmw-square-white #cboxCurrent{position:absolute; top:-22px; right:205px; text-indent:-9999px;}
357
+ .gmw-square-white #cboxPrevious, .gmw-square-white #cboxNext, .gmw-square-white #cboxSlideshow, .gmw-square-white #cboxClose {border:0; padding:0; margin:0; overflow:visible; text-indent:-9999px; width:20px; height:20px; position:absolute; top:-20px; background:url(../images/colorbox/square-white/controls.png) no-repeat 0 0;}
358
+ .gmw-square-white #cboxPrevious:active, .gmw-square-white #cboxNext:active, .gmw-square-white #cboxSlideshow:active, .gmw-square-white #cboxClose:active {outline:0;}
359
+ .gmw-square-white #cboxPrevious{background-position:0px 0px; right:44px;}
360
+ .gmw-square-white #cboxPrevious:hover{background-position:0px -25px;}
361
+ .gmw-square-white #cboxNext{background-position:-25px 0px; right:22px;}
362
+ .gmw-square-white #cboxNext:hover{background-position:-25px -25px;}
363
+ .gmw-square-white #cboxClose{background-position:-50px 0px; right:0;}
364
+ .gmw-square-white #cboxClose:hover{background-position:-50px -25px;}
365
+ .gmw-square-white .cboxSlideshow_on #cboxPrevious, .gmw-square-white .cboxSlideshow_off #cboxPrevious{right:66px;}
366
+ .gmw-square-white .cboxSlideshow_on #cboxSlideshow{background-position:-75px -25px; right:44px;}
367
+ .gmw-square-white .cboxSlideshow_on #cboxSlideshow:hover{background-position:-100px -25px;}
368
+ .gmw-square-white .cboxSlideshow_off #cboxSlideshow{background-position:-100px 0px; right:44px;}
369
+ .gmw-square-white .cboxSlideshow_off #cboxSlideshow:hover{background-position:-75px -25px;}
370
+
371
+ /* square-black */
372
+ #cboxOverlay.gmw-square-black{background:#000; opacity: 0.9; filter: alpha(opacity = 90);}
373
+ #colorbox.gmw-square-black{outline:0;}
374
+ .gmw-square-black #cboxContent{margin-top:20px;background:#000;}
375
+ .gmw-square-black .cboxIframe{background:#fff;}
376
+ .gmw-square-black #cboxError{padding:50px; border:1px solid #ccc;}
377
+ .gmw-square-black #cboxLoadedContent{border:5px solid #000; background:#fff;}
378
+ .gmw-square-black #cboxTitle{position:absolute; top:-20px; left:0; color:#ccc;}
379
+ .gmw-square-black #cboxCurrent{position:absolute; top:-20px; right:0px; color:#ccc;}
380
+ .gmw-square-black #cboxPrevious, .gmw-square-black #cboxNext, .gmw-square-black #cboxSlideshow, .gmw-square-black #cboxClose {border:0; padding:0; margin:0; overflow:visible; width:auto; background:none; }
381
+ .gmw-square-black #cboxPrevious:active, .gmw-square-black #cboxNext:active, .gmw-square-black #cboxSlideshow:active, .gmw-square-black #cboxClose:active {outline:0;}
382
+ .gmw-square-black #cboxSlideshow{position:absolute; top:-20px; right:90px; color:#fff;}
383
+ .gmw-square-black #cboxPrevious{position:absolute; top:50%; left:5px; margin-top:-32px; background:url(../images/colorbox/square-black/controls.png) no-repeat top left; width:28px; height:65px; text-indent:-9999px;}
384
+ .gmw-square-black #cboxPrevious:hover{background-position:bottom left;}
385
+ .gmw-square-black #cboxNext{position:absolute; top:50%; right:5px; margin-top:-32px; background:url(../images/colorbox/square-black/controls.png) no-repeat top right; width:28px; height:65px; text-indent:-9999px;}
386
+ .gmw-square-black #cboxNext:hover{background-position:bottom right;}
387
+ .gmw-square-black #cboxClose{position:absolute; top:5px; right:5px; display:block; background:url(../images/colorbox/square-black/controls.png) no-repeat top center; width:38px; height:19px; text-indent:-9999px;}
388
+ .gmw-square-black #cboxClose:hover{background-position:bottom center;}
389
+
390
+ /* minimal */
391
+ #cboxOverlay.gmw-minimal{ background:#fdfdfd; }
392
+ .gmw-minimal #cboxWrapper{ overflow:visible; }
393
+ .gmw-minimal #cboxTopLeft, .gmw-minimal #cboxTopCenter, .gmw-minimal #cboxTopRight, .gmw-minimal #cboxBottomLeft, .gmw-minimal #cboxBottomCenter, .gmw-minimal #cboxBottomRight, .gmw-minimal #cboxMiddleLeft, .gmw-minimal #cboxMiddleRight {background:#ffffff;}
394
+ #colorbox.gmw-minimal{outline:0;background:#ffffff;overflow:visible;-webkit-box-shadow: 0 0 20px 0 rgba(0,0,0,0.15);}
395
+ .gmw-minimal #cboxTopLeft{width:8px; height:8px; }
396
+ .gmw-minimal #cboxTopCenter{height:8px; }
397
+ .gmw-minimal #cboxTopRight{width:8px; height:8px; }
398
+ .gmw-minimal #cboxBottomLeft{width:8px; height:8px; }
399
+ .gmw-minimal #cboxBottomCenter{height:8px; }
400
+ .gmw-minimal #cboxBottomRight{width:8px; height:8px; }
401
+ .gmw-minimal #cboxMiddleLeft{width:8px; }
402
+ .gmw-minimal #cboxMiddleRight{width:8px; }
403
+ .gmw-minimal #cboxContent{ background:#ffffff; overflow:visible;}
404
+ .gmw-minimal .cboxIframe {background:#fff;}
405
+ .gmw-minimal .cboxPhoto { margin-bottom:0px;}
406
+ .gmw-minimal .cboxPhoto.withLongCaption { margin-bottom:0px; }
407
+ .gmw-minimal #cboxError{padding:50px; border:1px solid #ccc;}
408
+ .gmw-minimal #cboxLoadedContent{margin-bottom:0px; font-style: italic; background:#ffffff; }
409
+ .gmw-minimal #cboxTitle { display:none !important;}
410
+ .gmw-minimal #cboxCurrent{ display:none !important;}
411
+ .gmw-minimal #cboxPrevious, .gmw-minimal #cboxNext, .gmw-minimal #cboxSlideshow, .gmw-minimal #cboxClose {border:0; padding:0; margin:0; overflow:visible; width:auto; background:none; text-transform:capitalize; }
412
+ .gmw-minimal #cboxPrevious:active, .gmw-minimal #cboxNext:active, .gmw-minimal #cboxSlideshow:active, .gmw-minimal #cboxClose:active {outline:0;}
413
+ .gmw-minimal button:focus{ outline:1px dotted #ffffff; }
414
+ .gmw-minimal #cboxPrevious, .gmw-minimal #cboxNext, .gmw-minimal #cboxClose {display:block; background:url(../images/colorbox/minimal/colorbox_minimal.png) 0 0 no-repeat;transition:opacity 0.35s ease; color:#e5e5e5;}
415
+ .gmw-minimal #cboxPrevious, .gmw-minimal #cboxNext {text-indent: 100%;white-space: nowrap;overflow: hidden;}
416
+ .gmw-minimal #cboxPrevious, .gmw-minimal #cboxNext { width:64px; height:64px; opacity:0.6; }
417
+ .gmw-minimal #cboxPrevious:hover, .gmw-minimal #cboxNext:hover { opacity:1.0; }
418
+ .gmw-minimal #cboxPrevious{position:absolute; bottom:46%; left:-68px; color:#444; background-position:0 -64px; }
419
+ .gmw-minimal #cboxNext{position:absolute; bottom:46%; right:-68px; color:#444; background-position:0 0; }
420
+ .gmw-minimal #cboxClose{position:absolute; top:-6px; right:-6px; display:block; color:#444; background-image:none; color:#888888; background-position:right -1px; font-size:11px; background-color:#ffffff; font-weight:normal; letter-spacing:1px; text-transform:lowercase; text-align:left;width:auto; height:23px; padding:0 8px; line-height:23px; transition:color 0.35s ease;}
421
+ .gmw-minimal #cboxClose:hover { color:#000000; }
422
+ .gmw-minimal #cboxSlideshow { position:absolute; bottom:-32px; left:48%; color: #888888; font-size:10px; line-height:12px; background-color: #ffffff; padding: 6px 10px; transition:color 0.35s ease;}
423
+ .gmw-minimal #cboxSlideshow:hover { color:#000000; }
424
+
425
+ /* minimal-circles */
426
+ #cboxOverlay.gmw-minimal-circles{ background:#fdfdfd; }
427
+ .gmw-minimal-circles #cboxWrapper { overflow:visible; }
428
+ .gmw-minimal-circles #cboxTopLeft, .gmw-minimal-circles #cboxTopCenter, .gmw-minimal-circles #cboxTopRight, .gmw-minimal-circles #cboxBottomLeft, .gmw-minimal-circles #cboxBottomCenter, .gmw-minimal-circles #cboxBottomRight, .gmw-minimal-circles #cboxMiddleLeft, .gmw-minimal-circles #cboxMiddleRight {background:#ffffff;}
429
+ #colorbox.gmw-minimal-circles{outline:1px solid #ffffff;background:#ffffff;overflow:visible;-webkit-box-shadow: 0 0 20px 0 rgba(0,0,0,0.15);}
430
+ .gmw-minimal-circles #cboxTopLeft { display:none; }
431
+ .gmw-minimal-circles #cboxTopCenter{display:none; }
432
+ .gmw-minimal-circles #cboxTopRight{display:none; }
433
+ .gmw-minimal-circles #cboxBottomLeft{display:none; }
434
+ .gmw-minimal-circles #cboxBottomCenter{display:none; }
435
+ .gmw-minimal-circles #cboxBottomRight{display:none; }
436
+ .gmw-minimal-circles #cboxMiddleLeft{display:none; }
437
+ .gmw-minimal-circles #cboxMiddleRight{display:none; }
438
+ .gmw-minimal-circles #cboxContent{ background:#ffffff; overflow:visible;}
439
+ .gmw-minimal-circles .cboxIframe {background:#fff;}
440
+ .gmw-minimal-circles .cboxPhoto { margin-bottom:0px;}
441
+ .gmw-minimal-circles .cboxPhoto.withLongCaption { margin-bottom:0px; }
442
+ .gmw-minimal-circles #cboxError{padding:50px; border:1px solid #ccc;}
443
+ .gmw-minimal-circles #cboxLoadedContent{margin-bottom:0px; font-style: italic; background:#ffffff;}
444
+ .gmw-minimal-circles #cboxTitle { display:none !important;}
445
+ .gmw-minimal-circles #cboxCurrent{display:none !important;}
446
+ .gmw-minimal-circles #cboxPrevious, .gmw-minimal-circles #cboxNext, .gmw-minimal-circles #cboxSlideshow, .gmw-minimal-circles #cboxClose {border:0; padding:0; margin:0; overflow:visible; width:auto; background:none; text-transform:capitalize; }
447
+ .gmw-minimal-circles #cboxPrevious:active, .gmw-minimal-circles #cboxNext:active, .gmw-minimal-circles #cboxSlideshow:active, .gmw-minimal-circles #cboxClose:active {outline:0;}
448
+ .gmw-minimal-circles button:focus{ outline:1px dotted #ffffff; }
449
+ .gmw-minimal-circles #cboxPrevious, .gmw-minimal-circles #cboxNext, .gmw-minimal-circles #cboxClose {display:block; background:url(../images/colorbox/minimal-circles/colorbox_minimalcircles.png) 0 0 no-repeat;transition:opacity 0.35s ease; color:#e5e5e5;}
450
+ .gmw-minimal-circles #cboxPrevious, .gmw-minimal-circles #cboxNext, .gmw-minimal-circles #cboxClose {text-indent: 100%;white-space: nowrap;overflow: hidden;}
451
+ .gmw-minimal-circles #cboxPrevious, .gmw-minimal-circles #cboxNext, .gmw-minimal-circles #cboxClose { width:64px; height:64px; }
452
+ .gmw-minimal-circles #cboxPrevious, .gmw-minimal-circles #cboxNext { opacity:0.5; }
453
+ .gmw-minimal-circles #cboxClose { opacity:0.4; }
454
+ .gmw-minimal-circles #cboxPrevious:hover, .gmw-minimal-circles #cboxNext:hover, .gmw-minimal-circles #cboxClose:hover { opacity:1.0; }
455
+ .gmw-minimal-circles #cboxPrevious{position:absolute; bottom:46%; left:8px; color:#444; background-position:0 -64px; }
456
+ .gmw-minimal-circles #cboxNext{position:absolute; bottom:46%; right:8px; color:#444; background-position:0 0; }
457
+ .gmw-minimal-circles #cboxClose{ position:absolute; top:-68px; right:-8px; color:#444; background-position:0 -256px; }
458
+ .gmw-minimal-circles #cboxSlideshow {position:absolute; bottom:-32px; left:48%; color: #888888; font-size:10px; line-height:12px;background-color: #ffffff; padding: 6px 10px;transition:color 0.35s ease;}
459
+ .gmw-minimal-circles #cboxSlideshow:hover { color:#000000; }
460
+
461
+ /* noimage */
462
+ #cboxOverlay.gmw-noimage{ background:#fff; }
463
+ .gmw-noimage #cboxTopLeft, .gmw-noimage #cboxTopCenter, .gmw-noimage #cboxTopRight, .gmw-noimage #cboxBottomLeft, .gmw-noimage #cboxBottomCenter, .gmw-noimage #cboxBottomRight, .gmw-noimage #cboxMiddleLeft, .gmw-noimage #cboxMiddleRight { background:#ffffff;}
464
+ #colorbox.gmw-noimage{outline: 1px solid #D5D5D5;-webkit-box-shadow: 0px 0px 25px rgba(50, 50, 50, 0.5);-moz-box-shadow: 0px 0px 25px rgba(50, 50, 50, 0.5); box-shadow: 0px 0px 25px rgba(50, 50, 50, 0.5);}
465
+ .gmw-noimage #cboxTopLeft{width:15px; height:15px; }
466
+ .gmw-noimage #cboxTopCenter{height:15px; }
467
+ .gmw-noimage #cboxTopRight{width:15px; height:15px; }
468
+ .gmw-noimage #cboxBottomLeft{width:15px; height:15px; }
469
+ .gmw-noimage #cboxBottomCenter{height:15px; }
470
+ .gmw-noimage #cboxBottomRight{width:15px; height:15px; }
471
+ .gmw-noimage #cboxMiddleLeft{width:15px; }
472
+ .gmw-noimage #cboxMiddleRight{width:15px; }
473
+ .gmw-noimage #cboxContent{background:#fff; overflow:visible;}
474
+ .gmw-noimage .cboxIframe {background:#fff;}
475
+ .gmw-noimage .cboxPhoto {margin-bottom:28px; margin-top:0 !important;}
476
+ .gmw-noimage .cboxPhoto.withLongCaption { margin-bottom:12px; }
477
+ .gmw-noimage span.better-caption { line-height:16px; text-align:left; margin-bottom:6px; display:block; }
478
+ .gmw-noimage #cboxError{padding:50px; border:1px solid #ccc;}
479
+ .gmw-noimage #cboxLoadedContent{margin-bottom:24px; font-style: italic; }
480
+ .gmw-noimage #cboxTitle{ position:absolute; bottom:26px; clear:both; text-align:left; width:100%; color:#999; min-height:16px; overflow:hidden; }
481
+ .gmw-noimage #cboxCurrent{position:absolute; bottom:0px; left:100px; color:#999; text-transform:capitalize; display:inline-block; padding-left:1.5em; }
482
+ .gmw-noimage #cboxPrevious, .gmw-noimage #cboxNext, .gmw-noimage #cboxSlideshow, .gmw-noimage #cboxClose {border:0; padding:0; margin:0; overflow:visible; width:auto; background:none; text-transform:capitalize; }
483
+ .gmw-noimage #cboxPrevious:active, .gmw-noimage #cboxNext:active, .gmw-noimage #cboxSlideshow:active, .gmw-noimage #cboxClose:active {outline:0;}
484
+ .gmw-noimage button:focus{ outline:1px dotted #ffffff; }
485
+ .gmw-noimage #cboxSlideshow{position:absolute; bottom:0px; right:52px; color:#444;}
486
+ .gmw-noimage #cboxPrevious{position:absolute; bottom:0px; left:0; color:#444;}
487
+ .gmw-noimage #cboxNext{position:absolute; bottom:0px; left:63px; color:#444;}
488
+ .gmw-noimage #cboxClose{position:absolute; bottom:0; right:0; display:block; color:#444;}
489
+ .gmw-noimage #cboxPrevious,.gmw-noimage #cboxNext,.gmw-noimage #cboxSlideshow,.gmw-noimage #cboxClose {color: #777777;font-size:10px; line-height:12px;background-color: #dddddd;border-right: 1px solid #ccc;border-bottom: 1px solid #ccc;padding: 4px 8px;transition: all 0.35s ease;}
490
+ .gmw-noimage #cboxPrevious:hover,.gmw-noimage #cboxNext:hover,.gmw-noimage #cboxSlideshow:hover,.gmw-noimage #cboxClose:hover { background-color: #cccccc; color:#444444;}
491
+
492
+ /* noimage-polaroid */
493
+ #cboxOverlay.gmw-noimage-polaroid{ background:#000000; }
494
+ .gmw-noimage-polaroid #cboxTopLeft, .gmw-noimage-polaroid #cboxTopCenter, .gmw-noimage-polaroid #cboxTopRight, .gmw-noimage-polaroid #cboxBottomLeft, .gmw-noimage-polaroid #cboxBottomCenter, .gmw-noimage-polaroid #cboxBottomRight, .gmw-noimage-polaroid #cboxMiddleLeft, .gmw-noimage-polaroid #cboxMiddleRight { background:#ffffff;}
495
+ #colorbox.gmw-noimage-polaroid{ outline: 1px solid #D5D5D5; -webkit-box-shadow: 0px 0px 25px rgba(50, 50, 50, 0.5); -moz-box-shadow: 0px 0px 25px rgba(50, 50, 50, 0.5); box-shadow: 0px 0px 25px rgba(50, 50, 50, 0.5);}
496
+ .gmw-noimage-polaroid #cboxTopLeft{width:18px; height:18px; }
497
+ .gmw-noimage-polaroid #cboxTopCenter{height:18px; }
498
+ .gmw-noimage-polaroid #cboxTopRight{width:18px; height:18px; }
499
+ .gmw-noimage-polaroid #cboxBottomLeft{width:18px; height:18px; }
500
+ .gmw-noimage-polaroid #cboxBottomCenter{height:18px; }
501
+ .gmw-noimage-polaroid #cboxBottomRight{width:18px; height:18px; }
502
+ .gmw-noimage-polaroid #cboxMiddleLeft{width:18px; }
503
+ .gmw-noimage-polaroid #cboxMiddleRight{width:18px; }
504
+ .gmw-noimage-polaroid #cboxContent{background:#fff; overflow:visible;}
505
+ .gmw-noimage-polaroid .cboxIframe {background:#fff;}
506
+ .gmw-noimage-polaroid .cboxPhoto { margin-bottom:0; margin-top:0 !important; z-index:-1; }
507
+ .gmw-noimage-polaroid .photoWrap { display:block; position:relative;}
508
+ .gmw-noimage-polaroid .photoWrap:before {display:block;content:'';position:absolute;width:100%; height:100%;-webkit-box-shadow: inset 0px 0px 16px 2px rgba(0, 0, 0, 0.4);box-shadow: inset 0px 0px 16px 2px rgba(0, 0, 0, 0.4);}
509
+ .gmw-noimage-polaroid #cboxError{padding:50px; border:1px solid #ccc;}
510
+ .gmw-noimage-polaroid .gmw-header, .gmw-noimage-polaroid .gmw-footer{color:#FFF; background:#333;}
511
+ .gmw-noimage-polaroid #cboxLoadedContent{ margin-bottom:90px; font-style: italic; }
512
+ .gmw-noimage-polaroid #cboxTitle{ position:absolute; bottom:0; clear:both; text-align:left; width:100%; color:#666; height:76px; overflow:hidden; font-style:italic; }
513
+ .gmw-noimage-polaroid #cboxCurrent{ display:none;}
514
+ .gmw-noimage-polaroid #cboxPrevious, .gmw-noimage-polaroid #cboxNext, .gmw-noimage-polaroid #cboxSlideshow, .gmw-noimage-polaroid #cboxClose {border:0; padding:0; margin:0; overflow:visible; width:auto; background:none; text-transform:capitalize; }
515
+ .gmw-noimage-polaroid #cboxPrevious:active, #cboxNext:active, #cboxSlideshow:active, #cboxClose:active {outline:0;}
516
+ .gmw-noimage-polaroid button:focus{ outline:1px dotted #ffffff; }
517
+ .gmw-noimage-polaroid #cboxSlideshow{position:absolute; bottom:0px; right:52px; color:#444;}
518
+ .gmw-noimage-polaroid #cboxPrevious{position:absolute; bottom:0px; left:0; color:#444;}
519
+ .gmw-noimage-polaroid #cboxNext{position:absolute; bottom:0px; left:63px; color:#444;}
520
+ .gmw-noimage-polaroid #cboxClose{ position:absolute; bottom:0; right:0; display:block; }
521
+ .gmw-noimage-polaroid #cboxPrevious, .gmw-noimage-polaroid #cboxNext,.gmw-noimage-polaroid #cboxSlideshow,.gmw-noimage-polaroid #cboxClose {color: #777777;font-size:10px; line-height:12px;background-color: #dddddd;border-right: 1px solid #ccc;border-bottom: 1px solid #ccc;padding: 4px 8px;}
522
+ .gmw-noimage-polaroid #cboxPrevious:hover,.gmw-noimage-polaroid #cboxNext:hover,.gmw-noimage-polaroid #cboxSlideshow:hover,.gmw-noimage-polaroid #cboxClose:hover { background-color: #cccccc; color:#444444;}
523
+
524
+ /* shadow */
525
+ #cboxOverlay.gmw-shadow{ background:#090909; }
526
+ .gmw-shadow #cboxWrapper { overflow:visible; }
527
+ .gmw-shadow #cboxTopLeft, .gmw-shadow #cboxTopCenter, .gmw-shadow #cboxTopRight, .gmw-shadow #cboxBottomLeft, .gmw-shadow #cboxBottomCenter, .gmw-shadow #cboxBottomRight, .gmw-shadow #cboxMiddleLeft, .gmw-shadow #cboxMiddleRight { background:#ffffff;}
528
+ #colorbox.gmw-shadow {overflow:visible; outline: 1px solid #555555;}
529
+ .gmw-shadow #cboxTopLeft,.gmw-shadow #cboxTopCenter,.gmw-shadow #cboxTopRight,.gmw-shadow #cboxBottomLeft,.gmw-shadow #cboxBottomCenter,.gmw-shadow #cboxBottomRight,.gmw-shadow #cboxMiddleLeft,.gmw-shadow #cboxMiddleRight{display:none;}
530
+ .gmw-shadow #cboxContent{background:#fff; overflow:visible;}
531
+ .gmw-shadow .cboxIframe {background:#fff;}
532
+ .gmw-shadow .cboxPhoto {margin-bottom:0px;}
533
+ .gmw-shadow .cboxPhoto.withLongCaption { margin-bottom:0px; }
534
+ .gmw-shadow #cboxError{padding:50px; border:1px solid #ccc;}
535
+ .gmw-shadow #cboxLoadedContent{margin-bottom:0px; font-style: italic; }
536
+ .gmw-shadow #cboxTitle{position:absolute; left:0; bottom:100%; clear:both; text-align:left; width:100%; overflow:hidden;min-height:16px; padding:10px 0 4px 0;color:#d5d5d5; font-size:11px;}
537
+ .gmw-shadow #cboxCurrent{position:absolute; bottom:0px; left:100px; color:#999; text-transform:capitalize; display:inline-block; padding-left:1.5em; }
538
+ .gmw-shadow #cboxPrevious, .gmw-shadow #cboxNext, .gmw-shadow #cboxSlideshow, .gmw-shadow #cboxClose {border:0; padding:0; margin:0; overflow:visible; width:auto; background:none; text-transform:capitalize; }
539
+ .gmw-shadow #cboxPrevious:active, .gmw-shadow #cboxNext:active, .gmw-shadow #cboxSlideshow:active, .gmw-shadow #cboxClose:active {outline:0;}
540
+ .gmw-shadow button:focus{ outline:1px dotted #000000; }
541
+ .gmw-shadow #cboxPrevious, .gmw-shadow #cboxNext, .gmw-shadow #cboxClose {width:27px; height:27px; display:block; background:url(../images/colorbox/shadow/colorbox_fancyoverlay.png) no-repeat 0 0; transition:opacity 0.35s ease;text-indent: 100%;white-space: nowrap;overflow: hidden;}
542
+ .gmw-shadow #cboxPrevious:hover, .gmw-shadow #cboxNext:hover, .gmw-shadow #cboxClose:hover { opacity:0.75; }
543
+ .gmw-shadow #cboxPrevious{position:absolute; bottom:-28px; right:64px; color:#444; background-position:0 -54px; }
544
+ .gmw-shadow #cboxNext{position:absolute; bottom:-28px; right:37px; color:#444; background-position:0 -27px; }
545
+ .gmw-shadow #cboxClose{position:absolute; bottom:-28px; right:-6px; display:block; color:#444; background-position:0 0; }
546
+ .gmw-shadow #cboxCurrent { left:0; padding-left:0; margin-left:0; bottom:-18px; font-size:10px; margin:0; text-align:left; }
547
+ .gmw-shadow #cboxSlideshow{position:absolute; bottom:-22px; right:102px; color:#444;}
548
+ .gmw-shadow #cboxSlideshow {color: #f9f9f9; font-size:10px; line-height:12px;background-color: #191919; padding: 4px 8px;}
549
+ .gmw-shadow #cboxSlideshow:hover { background-color: #333333; color:#ffffff; }
550
+
551
+ /* sketchtoon */
552
+ #cboxOverlay.gmw-sketchtoon{ background:#ece8df url("../images/colorbox/sketchtoon/paper.jpg") repeat 0 0; }
553
+ .gmw-sketchtoon #cboxWrapper { overflow:visible; }
554
+ .gmw-sketchtoon #cboxTopLeft, .gmw-sketchtoon #cboxTopCenter, .gmw-sketchtoon #cboxTopRight, .gmw-sketchtoon #cboxBottomLeft, .gmw-sketchtoon #cboxBottomCenter, .gmw-sketchtoon #cboxBottomRight, .gmw-sketchtoon #cboxMiddleLeft, .gmw-sketchtoon #cboxMiddleRight {background:#ffffff;}
555
+ #colorbox.gmw-sketchtoon {overflow:visible;border: 1px solid #D5D5D5;}
556
+ .gmw-sketchtoon #cboxTopLeft{width:10px; height:10px; }
557
+ .gmw-sketchtoon #cboxTopCenter{height:10px; }
558
+ .gmw-sketchtoon #cboxTopRight{width:10px; height:10px; }
559
+ .gmw-sketchtoon #cboxBottomLeft{width:10px; height:10px; }
560
+ .gmw-sketchtoon #cboxBottomCenter{height:10px; }
561
+ .gmw-sketchtoon #cboxBottomRight{width:10px; height:10px; }
562
+ .gmw-sketchtoon #cboxMiddleLeft{width:10px; }
563
+ .gmw-sketchtoon #cboxMiddleRight{width:10px; }
564
+ .gmw-sketchtoon #cboxContent{background:#fff; overflow:visible;}
565
+ .gmw-sketchtoon .cboxIframe {background:#fff;}
566
+ .gmw-sketchtoon .cboxPhoto {margin-bottom:0px;}
567
+ .gmw-sketchtoon #cboxError{padding:50px; border:1px solid #ccc;}
568
+ .gmw-sketchtoon #cboxLoadedContent{margin-bottom:0; font-style: italic; }
569
+ .gmw-sketchtoon #cboxTitle{ position:absolute; left:0; bottom:0; clear:both; text-align:center; width:98%; overflow:hidden; min-height:16px;background:#e5e5e5; background:rgba(255,255,255,0.75); padding:10px 1%;color:#444444; font-size:13px; line-height:16px;font-style:italic;}
570
+ .gmw-sketchtoon #cboxTitle.tooltipload { display:none !important; }
571
+ .gmw-sketchtoon #cboxTitle.tooltiphover {display:block !important;background: #1f93a2;color:#ffffff;border: 1px solid #ccc; padding: 10px;border-radius: 8px;box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); position: absolute;left:16px; bottom:-7px; width: 40%; overflow:visible;}
572
+ .gmw-sketchtoon #cboxTitle.tooltiphover:before {position: absolute;display: inline-block; border-left: 7px solid transparent; border-top: 7px solid #1f93a2;border-right: 7px solid transparent;border-bottom-color: rgba(0, 0, 0, 0.2);left: 10px; bottom: -7px;content: '';}
573
+ .gmw-sketchtoon #cboxTitle.tooltiphover:after { position: absolute; display: inline-block; border-right: 6px solid transparent;border-top: 6px solid #1f93a2; border-left: 6px solid transparent; left: 10px; bottom: -7px;content: '';}
574
+ .gmw-sketchtoon #cboxCurrent{position:absolute; bottom:0px; left:100px; color:#999; text-transform:capitalize; display:inline-block; padding-left:1.5em; }
575
+ .gmw-sketchtoon #cboxPrevious, .gmw-sketchtoon #cboxNext, .gmw-sketchtoon #cboxSlideshow, .gmw-sketchtoon #cboxClose {border:0; padding:0; margin:0; overflow:visible; width:auto; background:none; text-transform:capitalize; }
576
+ .gmw-sketchtoon #cboxPrevious:active, .gmw-sketchtoon #cboxNext:active, .gmw-sketchtoon #cboxSlideshow:active, .gmw-sketchtoon #cboxClose:active {outline:0;}
577
+ .gmw-sketchtoon #cboxPrevious, .gmw-sketchtoon #cboxNext, .gmw-sketchtoon #cboxClose, .gmw-sketchtoon #cboxInfo, .gmw-sketchtoon #cboxSlideshow {width:64px; height:64px; display:block; background:url(../images/colorbox/sketchtoon/colorbox_sketchtoon.png) no-repeat 0 0;transition:opacity 0.35s ease;text-indent: 100%;white-space: nowrap;overflow: hidden;}
578
+ .gmw-sketchtoon #cboxPrevious:hover, .gmw-sketchtoon #cboxNext:hover, .gmw-sketchtoon #cboxClose:hover, .gmw-sketchtoon #cboxInfo:hover, .gmw-sketchtoon #cboxSlideshow:hover { opacity:0.75; }
579
+ .gmw-sketchtoon #cboxPrevious{position:absolute; bottom:-68px; right:51%; color:#444; background-position:0 -64px; }
580
+ .gmw-sketchtoon #cboxNext{position:absolute; bottom:-68px; left:51%; color:#444; background-position:0 0; }
581
+ .gmw-sketchtoon #cboxClose{position:absolute; bottom:-72px; right:0; display:block; color:#444; background-position:0 -256px; }
582
+ .gmw-sketchtoon #cboxInfo { position:absolute; background-position:0 -320px; left:0; bottom:-68px; }
583
+ .gmw-sketchtoon #cboxCurrent { display:none !important; }
584
+ .gmw-sketchtoon .cboxSlideshow_on #cboxPrevious, .gmw-sketchtoon .cboxSlideshow_off #cboxPrevious { right:55%;}
585
+ .gmw-sketchtoon .cboxSlideshow_on #cboxNext, .gmw-sketchtoon .cboxSlideshow_off #cboxNext { left:55%;}
586
+ .gmw-sketchtoon #cboxSlideshow { position:relative; left:50%; margin-left:-32px; background-position:0 -124px; }
587
+ .gmw-sketchtoon .cboxSlideshow_on #cboxSlideshow { background-position:0 -124px; }
588
+ .gmw-sketchtoon .cboxSlideshow_off #cboxSlideshow {background-position:0 -187px; }
589
+
590
+ /* wood */
591
+ #cboxOverlay.gmw-wood{ background:#d29c55 url("../images/colorbox/wood/woodpattern.jpg") repeat 0 0; }
592
+ .gmw-wood #cboxWrapper { overflow:visible; }
593
+ .gmw-wood #cboxTopLeft, .gmw-wood #cboxTopCenter, .gmw-wood #cboxTopRight, .gmw-wood #cboxBottomLeft, .gmw-wood #cboxBottomCenter, .gmw-wood #cboxBottomRight, .gmw-wood #cboxMiddleLeft, .gmw-wood #cboxMiddleRight {background:#ffffff; position:relative;}
594
+ #colorbox.gmw-wood {outline:0;background:#ffffff;overflow:visible;box-shadow: 0 1px 3px 0 rgba(0,0,0,0.6);-webkit-box-shadow: 0 1px 3px 0 rgba(0,0,0,0.6);}
595
+ .gmw-wood #cboxTopLeft{width:10px; height:10px; }
596
+ .gmw-wood #cboxTopCenter{height:10px; }
597
+ .gmw-wood #cboxTopRight{width:10px; height:10px; }
598
+ .gmw-wood #cboxBottomLeft{width:10px; height:10px; }
599
+ .gmw-wood #cboxBottomCenter{height:10px; }
600
+ .gmw-wood #cboxBottomRight{width:10px; height:10px; }
601
+ .gmw-wood #cboxMiddleLeft{width:10px; }
602
+ .gmw-wood #cboxMiddleRight{width:10px; }
603
+ .gmw-wood #cboxTopLeft:after,.gmw-wood #cboxTopRight:after, .gmw-wood #cboxBottomLeft:after,.gmw-wood #cboxBottomRight:after{ content: " "; display:block; width:32px; height:32px; position:absolute; background:url("../images/colorbox/wood/colorbox_woodtable.png") no-repeat 0 -50px;overflow:visible;z-index:500;}
604
+ .gmw-wood #cboxTopLeft:after { background-position:0 -50px; left:0; top:0; }
605
+ .gmw-wood #cboxTopRight:after { background-position:0 -82px; right:0; top:0; }
606
+ .gmw-wood #cboxBottomLeft:after { background-position:0 -146px; left:0; bottom:0; }
607
+ .gmw-wood #cboxBottomRight:after { background-position:0 -114px; right:0; bottom:0; }
608
+ .gmw-wood #cboxContent{ background:#ffffff; overflow:visible;}
609
+ .gmw-wood .cboxIframe {background:#fff;}
610
+ .gmw-wood .cboxPhoto { margin-bottom:0px;}
611
+ .gmw-wood .cboxPhoto.withLongCaption { margin-bottom:0px; }
612
+ .gmw-wood #cboxError{padding:50px; border:1px solid #ccc;}
613
+ .gmw-wood #cboxLoadedContent{margin-bottom:0px; font-style: italic;background:#ffffff; }
614
+ .gmw-wood #cboxTitle { position:absolute; left:0; top:100%; margin-top:50px; clear:both; text-align:center; width:100%; overflow:hidden;min-height:16px;background:transparent; padding:8px 0; font-size:12px;color:#29282c; text-shadow:0px 0px 22px rgba(255,255,255,1.0);}
615
+ .gmw-wood #cboxCurrent{ display:none !important;}
616
+ .gmw-wood #cboxPrevious, .gmw-wood #cboxNext, .gmw-wood #cboxSlideshow, .gmw-wood #cboxClose {border:0; padding:0; margin:0; overflow:visible; width:auto; background:none; text-transform:capitalize; }
617
+ .gmw-wood #cboxPrevious:active, .gmw-wood #cboxNext:active, .gmw-wood #cboxSlideshow:active, .gmw-wood #cboxClose:active {outline:0;}
618
+ .gmw-wood #cboxPrevious, .gmw-wood #cboxNext, .gmw-wood #cboxClose {display:block; background:url(../images/colorbox/wood/colorbox_woodtable.png) 0 0 no-repeat; transition:opacity 0.35s ease; color:#e5e5e5;}
619
+ .gmw-wood #cboxPrevious, .gmw-wood #cboxNext { text-indent: 100%;white-space: nowrap;overflow: hidden;}
620
+ .gmw-wood #cboxPrevious, #cboxNext { width:33px; height:25px; opacity:0.6; }
621
+ .gmw-wood #cboxPrevious:hover, #cboxNext:hover { opacity:1.0; }
622
+ .gmw-wood #cboxPrevious{position:absolute; bottom:-46px; right:52.5%; color:#444; background-position:0 0; }
623
+ .gmw-wood #cboxNext{position:absolute; bottom:-46px; left:52.5%; color:#444; background-position:0 -25px; }
624
+ .gmw-wood #cboxClose{position:absolute; top:-28px; right:32px; display:block; color:#444; background-image:none; color:#888888;background-position:right -1px;font-size:11px; background-color:#ffffff; font-weight:normal; letter-spacing:1px; text-transform:lowercase; text-align:left;width:auto; height:18px; line-height:18px; padding:0 8px; transition:color 0.35s ease;-webkit-box-shadow: inset 0px -6px 12px -8px rgba(0, 0, 0, 0.45); box-shadow: inset 0px -6px 12px -8px rgba(0, 0, 0, 0.45);}
625
+ .gmw-wood #cboxClose:hover { color:#000000; height:22px; line-height:18px; top:-32px; }
626
+ .gmw-wood #cboxSlideshow {position:absolute; top:-28px; left:50%; width:120px; margin-left:-60px;color: #888888; letter-spacing:1px;font-size:11px; text-transform:lowercase;background-color: #ffffff; padding: 0 10px; height:18px; line-height:18px; transition:color 0.35s ease;-webkit-box-shadow: inset 0px -6px 12px -8px rgba(0, 0, 0, 0.45);box-shadow: inset 0px -6px 12px -8px rgba(0, 0, 0, 0.45);}
627
+ .gmw-wood #cboxSlideshow:hover { color:#000000; height:22px; line-height:18px; top:-32px; }
628
+
629
+ /* tablet */
630
+ #cboxOverlay.gmw-tablet{ background:#555555 repeat 0 0; -webkit-box-shadow: inset 0px 0px 256px 0px rgba(0, 0, 0, 0.75); box-shadow: inset 0px 0px 256px 0px rgba(0, 0, 0, 0.75);}
631
+ .gmw-tablet #cboxWrapper { overflow:visible; }
632
+ .gmw-tablet #cboxTopLeft, .gmw-tablet #cboxTopCenter, .gmw-tablet #cboxTopRight, .gmw-tablet #cboxBottomLeft, .gmw-tablet #cboxBottomCenter, .gmw-tablet #cboxBottomRight, .gmw-tablet #cboxMiddleLeft, .gmw-tablet #cboxMiddleRight { background:#ffffff;}
633
+ #colorbox.gmw-tablet { outline:none;background:transparent;overflow:visible;}
634
+ .gmw-tablet #cboxTopLeft,.gmw-tablet #cboxTopRight,.gmw-tablet #cboxBottomLeft,.gmw-tablet #cboxBottomRight,.gmw-tablet #cboxMiddleLeft,.gmw-tablet #cboxMiddleRight{ background:transparent url("../images/colorbox/tablet/frame1.png") no-repeat 0 0;}
635
+ .gmw-tablet #cboxMiddleLeft,.gmw-tablet #cboxMiddleRight { background-repeat:repeat-y; }
636
+ .gmw-tablet #cboxTopCenter, .gmw-tablet #cboxBottomCenter { background:transparent url("../images/colorbox/tablet/frame2.png") repeat-x 0 0;}
637
+ .gmw-tablet #cboxTopLeft { width:32px; height:32px; background-position:0 0; }
638
+ .gmw-tablet #cboxTopCenter{height:32px; background-position:0 -32px; }
639
+ .gmw-tablet #cboxTopRight{width:32px; height:32px; background-position:-32px 0; }
640
+ .gmw-tablet #cboxBottomLeft{width:32px; height:32px; background-position:0 -32px; }
641
+ .gmw-tablet #cboxBottomCenter{height:32px; }
642
+ .gmw-tablet #cboxBottomRight{width:32px; height:32px; background-position:-32px -32px; }
643
+ .gmw-tablet #cboxMiddleLeft{width:32px; background-position:-96px 0; }
644
+ .gmw-tablet #cboxMiddleRight{width:32px; background-position:-64px 0; }
645
+ .gmw-tablet #cboxContent{ background:#ffffff; overflow:visible; }
646
+ .gmw-tablet .gmw-header, .gmw-tablet .gmw-footer{background: #5F5F5F;color: #FFF;}
647
+ .gmw-tablet .cboxIframe {background:#fff;}
648
+ .gmw-tablet .cboxPhoto { margin-bottom:0px;}
649
+ .gmw-tablet .cboxPhoto.withLongCaption { margin-bottom:0px; }
650
+ .gmw-tablet #cboxError{padding:50px; border:1px solid #ccc;}
651
+ .gmw-tablet #cboxLoadedContent{ margin-bottom:0px; font-style: italic; background:#ffffff; }
652
+ .gmw-tablet #cboxTitle { display:none !important; }
653
+ .gmw-tablet #cboxCurrent{ display:none !important; }
654
+ .gmw-tablet #cboxLoadingOverlay{background:#fff;}
655
+ .gmw-tablet #cboxPrevious, .gmw-tablet #cboxNext, .gmw-tablet #cboxSlideshow, .gmw-tablet #cboxClose {border:0; padding:0; margin:0; overflow:visible; width:auto; background:none; text-transform:capitalize; }
656
+ .gmw-tablet #cboxPrevious:active, .gmw-tablet #cboxNext:active, .gmw-tablet #cboxSlideshow:active, .gmw-tablet #cboxClose:active {outline:0;}
657
+ .gmw-tablet #cboxPrevious, .gmw-tablet #cboxNext, .gmw-tablet #cboxClose { display:block; background:transparent url(../images/colorbox/tablet/frame1.png) 0 0 no-repeat; transition:opacity 0.35s ease; color:#e5e5e5; }
658
+ .gmw-tablet #cboxPrevious, .gmw-tablet #cboxNext, .gmw-tablet #cboxClose { text-indent: 100%; white-space: nowrap; overflow: hidden; }
659
+ .gmw-tablet #cboxPrevious, .gmw-tablet #cboxNext, .gmw-tablet #cboxClose { width:64px; height:64px; }
660
+ .gmw-tablet #cboxPrevious, .gmw-tablet #cboxNext { opacity:0.5; }
661
+ .gmw-tablet #cboxClose { opacity:1.0; border-left:none; }
662
+ .gmw-tablet #cboxPrevious:hover, .gmw-tablet #cboxNext:hover, .gmw-tablet #cboxClose:hover { opacity:1.0; }
663
+ .gmw-tablet #cboxPrevious{ position:absolute; bottom:46%; left:-85px; color:#444; background-position:-196px 0px; }
664
+ .gmw-tablet #cboxNext{ position:absolute; bottom:46%; right:-92px; color:#444; background-position:-128px 0px; }
665
+ .gmw-tablet #cboxClose{ width:22px; height:22px; position:absolute; top:36px; left:100%; margin-left:30px; color:#333; background-position:right 0px; transition:width 0.25s ease; background-color:#F3F3F3; -webkit-box-shadow: inset 8px 0px 15px -6px rgba(0, 0, 0, 0.4);box-shadow: inset 8px 0px 15px -6px rgba(0, 0, 0, 0.4); }
666
+ .gmw-tablet #cboxClose:hover { width:26px; }
667
+ .gmw-tablet #cboxSlideshow { position:absolute; top:100%; margin-top:28px; left:50%; margin-left:-25px; width:100px; height:25px; color: #e7e8e5; text-shadow:1px 1px 0 #6e6d6d; font-size:10px; line-height:12px; background-color: #ffffff;padding: 6px 10px; background-color:#888687; -webkit-box-shadow: inset 0px 8px 15px -6px rgba(0, 0, 0, 0.4);box-shadow: inset 0px 8px 15px -6px rgba(0, 0, 0, 0.4);}
668
+ .gmw-tablet #cboxSlideshow:hover { color:#ffffff; }
669
+
670
+ /* gears */
671
+ #cboxOverlay.gmw-gears{ background:#DEDEDE repeat 0 0; -webkit-box-shadow: inset 0px 0px 256px 0px rgba(0, 0, 0, 0.75); box-shadow: inset 0px 0px 256px 0px rgba(0, 0, 0, 0.75);}
672
+ .gmw-gears #cboxWrapper { overflow:visible; }
673
+ .gmw-gears #cboxTopLeft, .gmw-gears #cboxTopCenter, .gmw-gears #cboxTopRight, .gmw-gears #cboxBottomLeft, .gmw-gears #cboxBottomCenter, .gmw-gears #cboxBottomRight, .gmw-gears #cboxMiddleLeft, .gmw-gears #cboxMiddleRight { background:#ffffff;}
674
+ #colorbox.gmw-gears { outline:none;background:transparent;overflow:visible;}
675
+ .gmw-gears #cboxTopLeft,.gmw-gears #cboxTopRight,.gmw-gears #cboxBottomLeft,.gmw-gears #cboxBottomRight,.gmw-gears #cboxMiddleLeft,.gmw-gears #cboxMiddleRight{ background:transparent url("../images/colorbox/gears/frame1.png") no-repeat 0 0;}
676
+ .gmw-gears #cboxMiddleLeft,.gmw-gears #cboxMiddleRight { background-repeat:repeat-y; }
677
+ .gmw-gears #cboxTopCenter, .gmw-gears #cboxBottomCenter { background:transparent url("../images/colorbox/gears/frame2.png") repeat-x 0 0;}
678
+ .gmw-gears #cboxTopLeft { width:32px; height:32px; background-position:0 0; }
679
+ .gmw-gears #cboxTopCenter{height:32px; background-position:0 -32px; }
680
+ .gmw-gears #cboxTopRight{width:32px; height:32px; background-position:-32px 0; }
681
+ .gmw-gears #cboxBottomLeft{width:32px; height:32px; background-position:0 -32px; }
682
+ .gmw-gears #cboxBottomCenter{height:32px; }
683
+ .gmw-gears #cboxBottomRight{width:32px; height:32px; background-position:-32px -32px; }
684
+ .gmw-gears #cboxMiddleLeft{width:32px; background-position:-96px 0; }
685
+ .gmw-gears #cboxMiddleRight{width:32px; background-position:-64px 0; }
686
+ .gmw-gears #cboxContent{ background:#ffffff; overflow:visible; }
687
+ .gmw-gears .gmw-header, .gmw-gears .gmw-footer{background: #5D5D5D;color: #FFF;}
688
+ .gmw-gears .cboxIframe {background:#fff;}
689
+ .gmw-gears .cboxPhoto { margin-bottom:0px;}
690
+ .gmw-gears .cboxPhoto.withLongCaption { margin-bottom:0px; }
691
+ .gmw-gears #cboxError{padding:50px; border:1px solid #ccc;}
692
+ .gmw-gears #cboxLoadedContent{ margin-bottom:0px; font-style: italic; background:#ffffff; }
693
+ .gmw-gears #cboxTitle { display:none !important; }
694
+ .gmw-gears #cboxCurrent{ display:none !important; }
695
+ .gmw-gears #cboxLoadingOverlay{background:#fff;}
696
+ .gmw-gears #cboxPrevious, .gmw-gears #cboxNext, .gmw-gears #cboxSlideshow, .gmw-gears #cboxClose {border:0; padding:0; margin:0; overflow:visible; width:auto; background:none; text-transform:capitalize; }
697
+ .gmw-gears #cboxPrevious:active, .gmw-gears #cboxNext:active, .gmw-gears #cboxSlideshow:active, .gmw-gears #cboxClose:active {outline:0;}
698
+ .gmw-gears #cboxPrevious, .gmw-gears #cboxNext, .gmw-gears #cboxClose { display:block; background:transparent url(../images/colorbox/gears/frame1.png) 0 0 no-repeat; transition:opacity 0.35s ease; color:#e5e5e5; }
699
+ .gmw-gears #cboxPrevious, .gmw-gears #cboxNext, .gmw-gears #cboxClose { text-indent: 100%; white-space: nowrap; overflow: hidden; }
700
+ .gmw-gears #cboxPrevious, .gmw-gears #cboxNext, .gmw-gears #cboxClose { width:64px; height:64px; }
701
+ .gmw-gears #cboxPrevious, .gmw-gears #cboxNext { opacity:0.5; }
702
+ .gmw-gears #cboxClose { opacity:1.0; border-left:none; }
703
+ .gmw-gears #cboxPrevious:hover, .gmw-gears #cboxNext:hover, .gmw-gears #cboxClose:hover { opacity:1.0; }
704
+ .gmw-gears #cboxPrevious{ position:absolute; bottom:46%; left:-85px; color:#444; background-position:-196px 0px; }
705
+ .gmw-gears #cboxNext{ position:absolute; bottom:46%; right:-92px; color:#444; background-position:-128px 0px; }
706
+ .gmw-gears #cboxClose{ width:22px; height:22px; position:absolute; top:-10px; left:100%; margin-left:18px; color:#333; background-position:right 0px; transition:width 0.25s ease; background-color:#909090; -webkit-box-shadow: inset 8px 0px 15px -6px rgba(0, 0, 0, 0.4);box-shadow: inset 8px 0px 15px -6px rgba(0, 0, 0, 0.4); }
707
+ .gmw-gears #cboxClose:hover { width:26px; }
708
+ .gmw-gears #cboxSlideshow { position:absolute; top:100%; margin-top:28px; left:50%; margin-left:-25px; width:100px; height:25px; color: #e7e8e5; text-shadow:1px 1px 0 #6e6d6d; font-size:10px; line-height:12px; background-color: #ffffff;padding: 6px 10px; background-color:#888687; -webkit-box-shadow: inset 0px 8px 15px -6px rgba(0, 0, 0, 0.4);box-shadow: inset 0px 8px 15px -6px rgba(0, 0, 0, 0.4);}
709
+ .gmw-gears #cboxSlideshow:hover { color:#ffffff; }
710
+
711
+ /* painting */
712
+ #cboxOverlay.gmw-painting{ background:#FFEAAD repeat 0 0; -webkit-box-shadow: inset 0px 0px 256px 0px rgba(0, 0, 0, 0.75); box-shadow: inset 0px 0px 256px 0px rgba(0, 0, 0, 0.75);}
713
+ .gmw-painting #cboxWrapper { overflow:visible; }
714
+ .gmw-painting #cboxTopLeft, .gmw-painting #cboxTopCenter, .gmw-painting #cboxTopRight, .gmw-painting #cboxBottomLeft, .gmw-painting #cboxBottomCenter, .gmw-painting #cboxBottomRight, .gmw-painting #cboxMiddleLeft, .gmw-painting #cboxMiddleRight { background:#ffffff;}
715
+ #colorbox.gmw-painting { outline:none;background:transparent;overflow:visible;}
716
+ .gmw-painting #cboxTopLeft,.gmw-painting #cboxTopRight,.gmw-painting #cboxBottomLeft,.gmw-painting #cboxBottomRight,.gmw-painting #cboxMiddleLeft,.gmw-painting #cboxMiddleRight{ background:transparent url("../images/colorbox/painting/frame1.png") no-repeat 0 0;}
717
+ .gmw-painting #cboxMiddleLeft,.gmw-painting #cboxMiddleRight { background-repeat:repeat-y; }
718
+ .gmw-painting #cboxTopCenter, .gmw-painting #cboxBottomCenter { background:transparent url("../images/colorbox/painting/frame2.png") repeat-x 0 0;}
719
+ .gmw-painting #cboxTopLeft { width:32px; height:32px; background-position:0 0; }
720
+ .gmw-painting #cboxTopCenter{height:32px; background-position:0 -32px; }
721
+ .gmw-painting #cboxTopRight{width:32px; height:32px; background-position:-32px 0; }
722
+ .gmw-painting #cboxBottomLeft{width:32px; height:32px; background-position:0 -32px; }
723
+ .gmw-painting #cboxBottomCenter{height:32px; }
724
+ .gmw-painting #cboxBottomRight{width:32px; height:32px; background-position:-32px -32px; }
725
+ .gmw-painting #cboxMiddleLeft{width:32px; background-position:-96px 0; }
726
+ .gmw-painting #cboxMiddleRight{width:32px; background-position:-64px 0; }
727
+ .gmw-painting #cboxContent{ background:#ffffff; overflow:visible; }
728
+ .gmw-painting .gmw-header, .gmw-painting .gmw-footer{background:#E0D58D;color:#331A00;}
729
+ .gmw-painting .cboxIframe {background:#fff;}
730
+ .gmw-painting .cboxPhoto { margin-bottom:0px;}
731
+ .gmw-painting .cboxPhoto.withLongCaption { margin-bottom:0px; }
732
+ .gmw-painting #cboxError{padding:50px; border:1px solid #ccc;}
733
+ .gmw-painting #cboxLoadedContent{ margin-bottom:0px; font-style: italic; background:#ffffff; }
734
+ .gmw-painting #cboxTitle { display:none !important; }
735
+ .gmw-painting #cboxCurrent{ display:none !important; }
736
+ .gmw-painting #cboxLoadingOverlay{background:#fff;}
737
+ .gmw-painting #cboxPrevious, .gmw-painting #cboxNext, .gmw-painting #cboxSlideshow, .gmw-painting #cboxClose {border:0; padding:0; margin:0; overflow:visible; width:auto; background:none; text-transform:capitalize; }
738
+ .gmw-painting #cboxPrevious:active, .gmw-painting #cboxNext:active, .gmw-painting #cboxSlideshow:active, .gmw-painting #cboxClose:active {outline:0;}
739
+ .gmw-painting #cboxPrevious, .gmw-painting #cboxNext, .gmw-painting #cboxClose { display:block; background:transparent url(../images/colorbox/painting/frame1.png) 0 0 no-repeat; transition:opacity 0.35s ease; color:#e5e5e5; }
740
+ .gmw-painting #cboxPrevious, .gmw-painting #cboxNext, .gmw-painting #cboxClose { text-indent: 100%; white-space: nowrap; overflow: hidden; }
741
+ .gmw-painting #cboxPrevious, .gmw-painting #cboxNext, .gmw-painting #cboxClose { width:64px; height:64px; }
742
+ .gmw-painting #cboxPrevious, .gmw-painting #cboxNext { opacity:0.5; }
743
+ .gmw-painting #cboxClose { opacity:1.0; border-left:none; }
744
+ .gmw-painting #cboxPrevious:hover, .gmw-painting #cboxNext:hover, .gmw-painting #cboxClose:hover { opacity:1.0; }
745
+ .gmw-painting #cboxPrevious{ position:absolute; bottom:46%; left:-85px; color:#444; background-position:-196px 0px; }
746
+ .gmw-painting #cboxNext{ position:absolute; bottom:46%; right:-92px; color:#444; background-position:-128px 0px; }
747
+ .gmw-painting #cboxClose{ width:22px; height:22px; position:absolute; top:-10px; left:100%; margin-left:30px; color:#333; background-position:right 0px; transition:width 0.25s ease; background-color:#996F34; -webkit-box-shadow: inset 8px 0px 15px -6px rgba(0, 0, 0, 0.4);box-shadow: inset 8px 0px 15px -6px rgba(0, 0, 0, 0.4); }
748
+ .gmw-painting #cboxClose:hover { width:26px; }
749
+ .gmw-painting #cboxSlideshow { position:absolute; top:100%; margin-top:28px; left:50%; margin-left:-25px; width:100px; height:25px; color: #e7e8e5; text-shadow:1px 1px 0 #6e6d6d; font-size:10px; line-height:12px; background-color: #ffffff;padding: 6px 10px; background-color:#888687; -webkit-box-shadow: inset 0px 8px 15px -6px rgba(0, 0, 0, 0.4);box-shadow: inset 0px 8px 15px -6px rgba(0, 0, 0, 0.4);}
750
+ .gmw-painting #cboxSlideshow:hover { color:#ffffff; }
css/select2.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;height:1px !important;margin:-1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid #000 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb}
gmw-export-import.php ADDED
@@ -0,0 +1,217 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * Google Maps Widget
4
+ * (c) Web factory Ltd, 2013 - 2016
5
+ *
6
+ * Parts of code are based on Widget Importer & Exporter
7
+ * (c) Steven Gliebe, http://stevengliebe.com/
8
+ * https://wordpress.org/plugins/widget-importer-exporter/
9
+ */
10
+
11
+
12
+ // this is an include only WP file
13
+ if (!defined('ABSPATH')) {
14
+ die;
15
+ }
16
+
17
+
18
+ class GMW_export_import {
19
+ // pack all GMW widget instances in an array
20
+ static function generate_export_data() {
21
+ $widget_instances = $instances = $sidebars_widget_instances = array();
22
+
23
+ $instances = get_option('widget_googlemapswidget', array());
24
+ foreach ($instances as $instance_id => $instance_data) {
25
+ if ( is_numeric( $instance_id ) ) {
26
+ $unique_instance_id = 'googlemapswidget' . '-' . $instance_id;
27
+ $widget_instances[$unique_instance_id] = $instance_data;
28
+ }
29
+ } // foreach
30
+
31
+ // get sidebars with their widget instances
32
+ $sidebars_widgets = get_option('sidebars_widgets');
33
+ foreach ($sidebars_widgets as $sidebar_id => $widget_ids ) {
34
+ if ('_wp_inactive_widgets' == $sidebar_id ) {
35
+ continue;
36
+ }
37
+ if (!is_array($widget_ids) || empty($widget_ids)) {
38
+ continue;
39
+ }
40
+
41
+ // loop widget IDs for this sidebar
42
+ foreach ($widget_ids as $widget_id ) {
43
+ if (isset($widget_instances[$widget_id])) {
44
+ $sidebars_widget_instances[$sidebar_id][$widget_id] = $widget_instances[$widget_id];
45
+ }
46
+ }
47
+ } // sidebar widgets
48
+
49
+ return $sidebars_widget_instances;
50
+ } // generate_export_data
51
+
52
+
53
+ // creates a file with GMW export
54
+ static function send_export_file() {
55
+ $filename = str_replace(array('http://', 'https://'), '', home_url());
56
+ $filename = str_replace(array('/', '\\', '.'), '-', $filename);
57
+ $filename .= '-' . date('Y-m-d') . '-googlemapswidgets.txt';
58
+
59
+ $out = array('type' => 'GMW export', 'version' => GMW::$version, 'data' => self::generate_export_data());
60
+ $out = json_encode($out);
61
+
62
+ header('Content-Type: text/plain');
63
+ header('Content-Disposition: attachment; filename=' . $filename);
64
+ header('Expires: 0');
65
+ header('Cache-Control: must-revalidate');
66
+ header('Pragma: public');
67
+ header('Content-Length: ' . strlen($out));
68
+
69
+ @ob_end_clean();
70
+ flush();
71
+
72
+ echo $out;
73
+ exit;
74
+ } // send_export_file
75
+
76
+
77
+ // validate import file after upload
78
+ static function validate_import_file() {
79
+ if (empty($_POST) || empty($_FILES['gmw_widgets_import'])) {
80
+ return new WP_Error('0', 'No import file uploaded.');
81
+ }
82
+
83
+ $uploaded_file = $_FILES['gmw_widgets_import'];
84
+ $wp_filetype = wp_check_filetype_and_ext($uploaded_file['tmp_name'], $uploaded_file['name'], false);
85
+ if ($wp_filetype['ext'] != 'txt' && !wp_match_mime_types('txt', $wp_filetype['type'])) {
86
+ return new WP_Error(1, 'Please upload a <i>TXT</i> file generated by Google Maps Widget.');
87
+ }
88
+
89
+ if ($uploaded_file['size'] < 500) {
90
+ return new WP_Error(1, 'Uploaded file is too small. Please verify that you have uploaded the right file.');
91
+ }
92
+
93
+ if ($uploaded_file['size'] > 100000) {
94
+ return new WP_Error(1, 'Uploaded file is too large to process. Please verify that you have uploaded the right file.');
95
+ }
96
+
97
+ $content = file_get_contents($uploaded_file['tmp_name']);
98
+ $content = json_decode($content, true);
99
+ if (!isset($content['type']) || !isset($content['version']) || !isset($content['data']) ||
100
+ $content['type'] != 'GMW export' || !is_array($content['data'])) {
101
+ return new WP_Error(1, 'Uploaded file is not a GMW export file. Please verify that you have uploaded the right file.');
102
+ }
103
+
104
+ return $content;
105
+ } // validate_import_file
106
+
107
+
108
+ // process uploaded import file
109
+ static function process_import_file($import_data) {
110
+ global $wp_registered_sidebars;
111
+ $results = array('total' => 0);
112
+
113
+ $data = $import_data['data'];
114
+ $widget_instances = array('googlemapswidget' => get_option('widget_googlemapswidget', array()));
115
+
116
+ // loop import data's sidebars
117
+ foreach ($data as $sidebar_id => $widgets) {
118
+ // check if sidebar is available on this site; or add to inactive
119
+ if (isset($wp_registered_sidebars[$sidebar_id])) {
120
+ $sidebar_available = true;
121
+ $use_sidebar_id = $sidebar_id;
122
+ $sidebar_message_type = 'success';
123
+ $sidebar_message = '';
124
+ } else {
125
+ $sidebar_available = false;
126
+ $use_sidebar_id = 'wp_inactive_widgets';
127
+ $sidebar_message_type = 'error';
128
+ $sidebar_message = __('Sidebar does not exist in theme (using Inactive)', 'google-maps-widget');
129
+ }
130
+
131
+ $results[$sidebar_id]['name'] = ! empty($wp_registered_sidebars[$sidebar_id]['name']) ? $wp_registered_sidebars[$sidebar_id]['name']: $sidebar_id;
132
+ $results[$sidebar_id]['message_type'] = $sidebar_message_type;
133
+ $results[$sidebar_id]['message'] = $sidebar_message;
134
+ $results[$sidebar_id]['widgets'] = array();
135
+
136
+ // loop widgets
137
+ foreach ( $widgets as $widget_instance_id => $widget ) {
138
+ $fail = false;
139
+
140
+ $id_base = preg_replace('/-[0-9]+$/', '', $widget_instance_id);
141
+ $instance_id_number = str_replace($id_base . '-', '', $widget_instance_id);
142
+
143
+ // Does widget with identical settings already exist in same sidebar?
144
+ if (!$fail && isset($widget_instances[$id_base])) {
145
+
146
+ // Get existing widgets in this sidebar
147
+ $sidebars_widgets = get_option('sidebars_widgets');
148
+ $sidebar_widgets = isset($sidebars_widgets[$use_sidebar_id])? $sidebars_widgets[$use_sidebar_id]: array();
149
+
150
+ // Loop widgets with ID base
151
+ $single_widget_instances = !empty($widget_instances[$id_base])? $widget_instances[$id_base]: array();
152
+ foreach ($single_widget_instances as $check_id => $check_widget) {
153
+ // is widget in same sidebar and has identical settings?
154
+ if (in_array("$id_base-$check_id", $sidebar_widgets) && (array) $widget == $check_widget) {
155
+ $fail = true;
156
+ $widget_message_type = 'warning';
157
+ $widget_message = __('Widget already exists', 'google-maps-widget');
158
+ break;
159
+ }
160
+ }
161
+ }
162
+
163
+ if (!$fail) {
164
+ // Add widget instance
165
+ $single_widget_instances = get_option('widget_' . $id_base);
166
+ $single_widget_instances = !empty($single_widget_instances)? $single_widget_instances: array('_multiwidget' => 1);
167
+ $single_widget_instances[] = $widget; // add it
168
+
169
+ // Get the key it was given
170
+ end($single_widget_instances);
171
+ $new_instance_id_number = key($single_widget_instances);
172
+
173
+ // If key is 0, make it 1
174
+ // When 0, an issue can occur where adding a widget causes data from other widget to load, and the widget doesn't stick (reload wipes it)
175
+ if ('0' === strval($new_instance_id_number)) {
176
+ $new_instance_id_number = 1;
177
+ $single_widget_instances[$new_instance_id_number] = $single_widget_instances[0];
178
+ unset( $single_widget_instances[0] );
179
+ }
180
+
181
+ // Move _multiwidget to end of array for uniformity
182
+ if (isset($single_widget_instances['_multiwidget'])) {
183
+ $multiwidget = $single_widget_instances['_multiwidget'];
184
+ unset($single_widget_instances['_multiwidget']);
185
+ $single_widget_instances['_multiwidget'] = $multiwidget;
186
+ }
187
+
188
+ // Update option with new widget
189
+ update_option('widget_' . $id_base, $single_widget_instances);
190
+
191
+ // Assign widget instance to sidebar
192
+ $sidebars_widgets = get_option('sidebars_widgets'); // which sidebars have which widgets, get fresh every time
193
+ $new_instance_id = $id_base . '-' . $new_instance_id_number; // use ID number from new widget instance
194
+ $sidebars_widgets[$use_sidebar_id][] = $new_instance_id; // add new instance to sidebar
195
+ update_option('sidebars_widgets', $sidebars_widgets); // save the amended data
196
+
197
+ // Success message
198
+ if ( $sidebar_available ) {
199
+ $widget_message_type = 'success';
200
+ $widget_message = 'Imported';
201
+ } else {
202
+ $widget_message_type = 'warning';
203
+ $widget_message = 'Imported to inactive';
204
+ }
205
+ }
206
+
207
+ $results[$sidebar_id]['widgets'][$widget_instance_id]['name'] = isset( $available_widgets[$id_base]['name'] ) ? $available_widgets[$id_base]['name'] : $id_base; // widget name or ID if name not available (not supported by site)
208
+ $results[$sidebar_id]['widgets'][$widget_instance_id]['title'] = ! empty( $widget['title'] ) ? $widget['title'] : __( 'No Title', 'google-maps-widget' ); // show "No Title" if widget instance is untitled
209
+ $results[$sidebar_id]['widgets'][$widget_instance_id]['message_type'] = $widget_message_type;
210
+ $results[$sidebar_id]['widgets'][$widget_instance_id]['message'] = $widget_message;
211
+ $results['total']++;
212
+ }
213
+ }
214
+
215
+ return $results;
216
+ } // process_import_file
217
+ } // GMW_export_import
gmw-map-styles.php ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * Google Maps Widget
4
+ * (c) Web factory Ltd, 2013 - 2016
5
+ */
6
+
7
+
8
+ // this is an include only WP file
9
+ if (!defined('ABSPATH')) {
10
+ die;
11
+ }
12
+
13
+
14
+ class GMW_styles {
15
+ static $js_styles = array(
16
+ 'pale' => '[{"featureType":"water","stylers":[{"visibility":"on"},{"color":"#acbcc9"}]},{"featureType":"landscape","stylers":[{"color":"#f2e5d4"}]},{"featureType":"road.highway","elementType":"geometry","stylers":[{"color":"#c5c6c6"}]},{"featureType":"road.arterial","elementType":"geometry","stylers":[{"color":"#e4d7c6"}]},{"featureType":"road.local","elementType":"geometry","stylers":[{"color":"#fbfaf7"}]},{"featureType":"poi.park","elementType":"geometry","stylers":[{"color":"#c5dac6"}]},{"featureType":"administrative","stylers":[{"visibility":"on"},{"lightness":33}]},{"featureType":"road"},{"featureType":"poi.park","elementType":"labels","stylers":[{"visibility":"on"},{"lightness":20}]},{},{"featureType":"road","stylers":[{"lightness":20}]}]',
17
+ 'blue' => '[{"featureType":"water","stylers":[{"color":"#46bcec"},{"visibility":"on"}]},{"featureType":"landscape","stylers":[{"color":"#f2f2f2"}]},{"featureType":"road","stylers":[{"saturation":-100},{"lightness":45}]},{"featureType":"road.highway","stylers":[{"visibility":"simplified"}]},{"featureType":"road.arterial","elementType":"labels.icon","stylers":[{"visibility":"off"}]},{"featureType":"administrative","elementType":"labels.text.fill","stylers":[{"color":"#444444"}]},{"featureType":"transit","stylers":[{"visibility":"off"}]},{"featureType":"poi","stylers":[{"visibility":"off"}]}]',
18
+ 'light' => '[{"featureType":"water","elementType":"all","stylers":[{"hue":"#e9ebed"},{"saturation":-78},{"lightness":67},{"visibility":"simplified"}]},{"featureType":"landscape","elementType":"all","stylers":[{"hue":"#ffffff"},{"saturation":-100},{"lightness":100},{"visibility":"simplified"}]},{"featureType":"road","elementType":"geometry","stylers":[{"hue":"#bbc0c4"},{"saturation":-93},{"lightness":31},{"visibility":"simplified"}]},{"featureType":"poi","elementType":"all","stylers":[{"hue":"#ffffff"},{"saturation":-100},{"lightness":100},{"visibility":"off"}]},{"featureType":"road.local","elementType":"geometry","stylers":[{"hue":"#e9ebed"},{"saturation":-90},{"lightness":-8},{"visibility":"simplified"}]},{"featureType":"transit","elementType":"all","stylers":[{"hue":"#e9ebed"},{"saturation":10},{"lightness":69},{"visibility":"on"}]},{"featureType":"administrative.locality","elementType":"all","stylers":[{"hue":"#2c2e33"},{"saturation":7},{"lightness":19},{"visibility":"on"}]},{"featureType":"road","elementType":"labels","stylers":[{"hue":"#bbc0c4"},{"saturation":-93},{"lightness":31},{"visibility":"on"}]},{"featureType":"road.arterial","elementType":"labels","stylers":[{"hue":"#bbc0c4"},{"saturation":-93},{"lightness":-2},{"visibility":"simplified"}]}]',
19
+ 'bright' => '[{"featureType":"water","stylers":[{"color":"#19a0d8"}]},{"featureType":"administrative","elementType":"labels.text.stroke","stylers":[{"color":"#ffffff"},{"weight":6}]},{"featureType":"administrative","elementType":"labels.text.fill","stylers":[{"color":"#e85113"}]},{"featureType":"road.highway","elementType":"geometry.stroke","stylers":[{"color":"#efe9e4"},{"lightness":-40}]},{"featureType":"road.arterial","elementType":"geometry.stroke","stylers":[{"color":"#efe9e4"},{"lightness":-20}]},{"featureType":"road","elementType":"labels.text.stroke","stylers":[{"lightness":100}]},{"featureType":"road","elementType":"labels.text.fill","stylers":[{"lightness":-100}]},{"featureType":"road.highway","elementType":"labels.icon"},{"featureType":"landscape","elementType":"labels","stylers":[{"visibility":"off"}]},{"featureType":"landscape","stylers":[{"lightness":20},{"color":"#efe9e4"}]},{"featureType":"landscape.man_made","stylers":[{"visibility":"off"}]},{"featureType":"water","elementType":"labels.text.stroke","stylers":[{"lightness":100}]},{"featureType":"water","elementType":"labels.text.fill","stylers":[{"lightness":-100}]},{"featureType":"poi","elementType":"labels.text.fill","stylers":[{"hue":"#11ff00"}]},{"featureType":"poi","elementType":"labels.text.stroke","stylers":[{"lightness":100}]},{"featureType":"poi","elementType":"labels.icon","stylers":[{"hue":"#4cff00"},{"saturation":58}]},{"featureType":"poi","elementType":"geometry","stylers":[{"visibility":"on"},{"color":"#f0e4d3"}]},{"featureType":"road.highway","elementType":"geometry.fill","stylers":[{"color":"#efe9e4"},{"lightness":-25}]},{"featureType":"road.arterial","elementType":"geometry.fill","stylers":[{"color":"#efe9e4"},{"lightness":-10}]},{"featureType":"poi","elementType":"labels","stylers":[{"visibility":"simplified"}]}]',
20
+ 'apple' => '[{"featureType":"water","elementType":"geometry","stylers":[{"color":"#a2daf2"}]},{"featureType":"landscape.man_made","elementType":"geometry","stylers":[{"color":"#f7f1df"}]},{"featureType":"landscape.natural","elementType":"geometry","stylers":[{"color":"#d0e3b4"}]},{"featureType":"landscape.natural.terrain","elementType":"geometry","stylers":[{"visibility":"off"}]},{"featureType":"poi.park","elementType":"geometry","stylers":[{"color":"#bde6ab"}]},{"featureType":"poi","elementType":"labels","stylers":[{"visibility":"off"}]},{"featureType":"poi.medical","elementType":"geometry","stylers":[{"color":"#fbd3da"}]},{"featureType":"poi.business","stylers":[{"visibility":"off"}]},{"featureType":"road","elementType":"geometry.stroke","stylers":[{"visibility":"off"}]},{"featureType":"road","elementType":"labels","stylers":[{"visibility":"off"}]},{"featureType":"road.highway","elementType":"geometry.fill","stylers":[{"color":"#ffe15f"}]},{"featureType":"road.highway","elementType":"geometry.stroke","stylers":[{"color":"#efd151"}]},{"featureType":"road.arterial","elementType":"geometry.fill","stylers":[{"color":"#ffffff"}]},{"featureType":"road.local","elementType":"geometry.fill","stylers":[{"color":"black"}]},{"featureType":"transit.station.airport","elementType":"geometry.fill","stylers":[{"color":"#cfb2db"}]}]',
21
+ 'gray' => '[{"featureType":"landscape","stylers":[{"saturation":-100},{"lightness":65},{"visibility":"on"}]},{"featureType":"poi","stylers":[{"saturation":-100},{"lightness":51},{"visibility":"simplified"}]},{"featureType":"road.highway","stylers":[{"saturation":-100},{"visibility":"simplified"}]},{"featureType":"road.arterial","stylers":[{"saturation":-100},{"lightness":30},{"visibility":"on"}]},{"featureType":"road.local","stylers":[{"saturation":-100},{"lightness":40},{"visibility":"on"}]},{"featureType":"transit","stylers":[{"saturation":-100},{"visibility":"simplified"}]},{"featureType":"administrative.province","stylers":[{"visibility":"off"}]},{"featureType":"water","elementType":"labels","stylers":[{"visibility":"on"},{"lightness":-25},{"saturation":-100}]},{"featureType":"water","elementType":"geometry","stylers":[{"hue":"#ffff00"},{"lightness":-25},{"saturation":-97}]}]',
22
+ 'gray2' => '[{"featureType":"all","stylers":[{"saturation":-100},{"gamma":0.5}]}]',
23
+ 'gowalla' => '[{"featureType":"road","elementType":"labels","stylers":[{"visibility":"simplified"},{"lightness":20}]},{"featureType":"administrative.land_parcel","elementType":"all","stylers":[{"visibility":"off"}]},{"featureType":"landscape.man_made","elementType":"all","stylers":[{"visibility":"off"}]},{"featureType":"transit","elementType":"all","stylers":[{"visibility":"off"}]},{"featureType":"road.local","elementType":"labels","stylers":[{"visibility":"simplified"}]},{"featureType":"road.local","elementType":"geometry","stylers":[{"visibility":"simplified"}]},{"featureType":"road.highway","elementType":"labels","stylers":[{"visibility":"simplified"}]},{"featureType":"poi","elementType":"labels","stylers":[{"visibility":"off"}]},{"featureType":"road.arterial","elementType":"labels","stylers":[{"visibility":"off"}]},{"featureType":"water","elementType":"all","stylers":[{"hue":"#a1cdfc"},{"saturation":30},{"lightness":49}]},{"featureType":"road.highway","elementType":"geometry","stylers":[{"hue":"#f49935"}]},{"featureType":"road.arterial","elementType":"geometry","stylers":[{"hue":"#fad959"}]}]',
24
+ 'mapbox' => '[{"featureType":"water","stylers":[{"saturation":43},{"lightness":-11},{"hue":"#0088ff"}]},{"featureType":"road","elementType":"geometry.fill","stylers":[{"hue":"#ff0000"},{"saturation":-100},{"lightness":99}]},{"featureType":"road","elementType":"geometry.stroke","stylers":[{"color":"#808080"},{"lightness":54}]},{"featureType":"landscape.man_made","elementType":"geometry.fill","stylers":[{"color":"#ece2d9"}]},{"featureType":"poi.park","elementType":"geometry.fill","stylers":[{"color":"#ccdca1"}]},{"featureType":"road","elementType":"labels.text.fill","stylers":[{"color":"#767676"}]},{"featureType":"road","elementType":"labels.text.stroke","stylers":[{"color":"#ffffff"}]},{"featureType":"poi","stylers":[{"visibility":"off"}]},{"featureType":"landscape.natural","elementType":"geometry.fill","stylers":[{"visibility":"on"},{"color":"#b8cb93"}]},{"featureType":"poi.park","stylers":[{"visibility":"on"}]},{"featureType":"poi.sports_complex","stylers":[{"visibility":"on"}]},{"featureType":"poi.medical","stylers":[{"visibility":"on"}]},{"featureType":"poi.business","stylers":[{"visibility":"simplified"}]}]',
25
+ 'peper' => '[{"featureType":"landscape","stylers":[{"hue":"#F1FF00"},{"saturation":-27.4},{"lightness":9.4},{"gamma":1}]},{"featureType":"road.highway","stylers":[{"hue":"#0099FF"},{"saturation":-20},{"lightness":36.4},{"gamma":1}]},{"featureType":"road.arterial","stylers":[{"hue":"#00FF4F"},{"saturation":0},{"lightness":0},{"gamma":1}]},{"featureType":"road.local","stylers":[{"hue":"#FFB300"},{"saturation":-38},{"lightness":11.2},{"gamma":1}]},{"featureType":"water","stylers":[{"hue":"#00B6FF"},{"saturation":4.2},{"lightness":-63.4},{"gamma":1}]},{"featureType":"poi","stylers":[{"hue":"#9FFF00"},{"saturation":0},{"lightness":0},{"gamma":1}]}]',
26
+ 'midnight' => '[{"featureType":"water","stylers":[{"color":"#021019"}]},{"featureType":"landscape","stylers":[{"color":"#08304b"}]},{"featureType":"poi","elementType":"geometry","stylers":[{"color":"#0c4152"},{"lightness":5}]},{"featureType":"road.highway","elementType":"geometry.fill","stylers":[{"color":"#000000"}]},{"featureType":"road.highway","elementType":"geometry.stroke","stylers":[{"color":"#0b434f"},{"lightness":25}]},{"featureType":"road.arterial","elementType":"geometry.fill","stylers":[{"color":"#000000"}]},{"featureType":"road.arterial","elementType":"geometry.stroke","stylers":[{"color":"#0b3d51"},{"lightness":16}]},{"featureType":"road.local","elementType":"geometry","stylers":[{"color":"#000000"}]},{"elementType":"labels.text.fill","stylers":[{"color":"#ffffff"}]},{"elementType":"labels.text.stroke","stylers":[{"color":"#000000"},{"lightness":13}]},{"featureType":"transit","stylers":[{"color":"#146474"}]},{"featureType":"administrative","elementType":"geometry.fill","stylers":[{"color":"#000000"}]},{"featureType":"administrative","elementType":"geometry.stroke","stylers":[{"color":"#144b53"},{"lightness":14},{"weight":1.4}]}]');
27
+
28
+
29
+ static $php_styles = array(
30
+ 'pale' => 'style=feature:water|element:all|visibility:on|color:0xacbcc9|&style=feature:landscape|element:all|color:0xf2e5d4|&style=feature:road.highway|element:geometry|color:0xc5c6c6|&style=feature:road.arterial|element:geometry|color:0xe4d7c6|&style=feature:road.local|element:geometry|color:0xfbfaf7|&style=feature:poi.park|element:geometry|color:0xc5dac6|&style=feature:administrative|element:all|visibility:on|lightness:33|&style=&style=feature:poi.park|element:labels|visibility:on|lightness:20|&style=&style=feature:road|element:all|lightness:20|',
31
+ 'blue' => 'style=feature:water|element:all|color:0x46bcec|visibility:on|&style=feature:landscape|element:all|color:0xf2f2f2|&style=feature:road|element:all|saturation:-100|lightness:45|&style=feature:road.highway|element:all|visibility:simplified|&style=feature:road.arterial|element:labels.icon|visibility:off|&style=feature:administrative|element:labels.text.fill|color:0x444444|&style=feature:transit|element:all|visibility:off|&style=feature:poi|element:all|visibility:off|',
32
+ 'light' => 'style=feature:water|element:all|hue:0xe9ebed|saturation:-78|lightness:67|visibility:simplified|&style=feature:landscape|element:all|hue:0xffffff|saturation:-100|lightness:100|visibility:simplified|&style=feature:road|element:geometry|hue:0xbbc0c4|saturation:-93|lightness:31|visibility:simplified|&style=feature:poi|element:all|hue:0xffffff|saturation:-100|lightness:100|visibility:off|&style=feature:road.local|element:geometry|hue:0xe9ebed|saturation:-90|lightness:-8|visibility:simplified|&style=feature:transit|element:all|hue:0xe9ebed|saturation:10|lightness:69|visibility:on|&style=feature:administrative.locality|element:all|hue:0x2c2e33|saturation:7|lightness:19|visibility:on|&style=feature:road|element:labels|hue:0xbbc0c4|saturation:-93|lightness:31|visibility:on|&style=feature:road.arterial|element:labels|hue:0xbbc0c4|saturation:-93|lightness:-2|visibility:simplified|',
33
+ 'bright' => 'style=feature:water|element:all|color:0x19a0d8|&style=feature:administrative|element:labels.text.stroke|color:0xffffff|weight:6|&style=feature:administrative|element:labels.text.fill|color:0xe85113|&style=feature:road.highway|element:geometry.stroke|color:0xefe9e4|lightness:-40|&style=feature:road.arterial|element:geometry.stroke|color:0xefe9e4|lightness:-20|&style=feature:road|element:labels.text.stroke|lightness:100|&style=feature:road|element:labels.text.fill|lightness:-100|&style=&style=feature:landscape|element:labels|visibility:off|&style=feature:landscape|element:all|lightness:20|color:0xefe9e4|&style=feature:landscape.man_made|element:all|visibility:off|&style=feature:water|element:labels.text.stroke|lightness:100|&style=feature:water|element:labels.text.fill|lightness:-100|&style=feature:poi|element:labels.text.fill|hue:0x11ff00|&style=feature:poi|element:labels.text.stroke|lightness:100|&style=feature:poi|element:labels.icon|hue:0x4cff00|saturation:58|&style=feature:poi|element:geometry|visibility:on|color:0xf0e4d3|&style=feature:road.highway|element:geometry.fill|color:0xefe9e4|lightness:-25|&style=feature:road.arterial|element:geometry.fill|color:0xefe9e4|lightness:-10|&style=feature:poi|element:labels|visibility:simplified|',
34
+ 'apple' => 'style=feature:water|element:geometry|color:0xa2daf2|&style=feature:landscape.man_made|element:geometry|color:0xf7f1df|&style=feature:landscape.natural|element:geometry|color:0xd0e3b4|&style=feature:landscape.natural.terrain|element:geometry|visibility:off|&style=feature:poi.park|element:geometry|color:0xbde6ab|&style=feature:poi|element:labels|visibility:off|&style=feature:poi.medical|element:geometry|color:0xfbd3da|&style=feature:poi.business|element:all|visibility:off|&style=feature:road|element:geometry.stroke|visibility:off|&style=feature:road|element:labels|visibility:off|&style=feature:road.highway|element:geometry.fill|color:0xffe15f|&style=feature:road.highway|element:geometry.stroke|color:0xefd151|&style=feature:road.arterial|element:geometry.fill|color:0xffffff|&style=feature:road.local|element:geometry.fill|color:black|&style=feature:transit.station.airport|element:geometry.fill|color:0xcfb2db|',
35
+ 'gray' => 'style=feature:landscape|element:all|saturation:-100|lightness:65|visibility:on|&style=feature:poi|element:all|saturation:-100|lightness:51|visibility:simplified|&style=feature:road.highway|element:all|saturation:-100|visibility:simplified|&style=feature:road.arterial|element:all|saturation:-100|lightness:30|visibility:on|&style=feature:road.local|element:all|saturation:-100|lightness:40|visibility:on|&style=feature:transit|element:all|saturation:-100|visibility:simplified|&style=feature:administrative.province|element:all|visibility:off|&style=feature:water|element:labels|visibility:on|lightness:-25|saturation:-100|&style=feature:water|element:geometry|hue:0xffff00|lightness:-25|saturation:-97|',
36
+ 'gray2' => 'style=feature:all|element:all|saturation:-100|gamma:0.5|',
37
+ 'gowalla' => 'style=feature:road|element:labels|visibility:simplified|lightness:20|&style=feature:administrative.land_parcel|element:all|visibility:off|&style=feature:landscape.man_made|element:all|visibility:off|&style=feature:transit|element:all|visibility:off|&style=feature:road.local|element:labels|visibility:simplified|&style=feature:road.local|element:geometry|visibility:simplified|&style=feature:road.highway|element:labels|visibility:simplified|&style=feature:poi|element:labels|visibility:off|&style=feature:road.arterial|element:labels|visibility:off|&style=feature:water|element:all|hue:0xa1cdfc|saturation:30|lightness:49|&style=feature:road.highway|element:geometry|hue:0xf49935|&style=feature:road.arterial|element:geometry|hue:0xfad959|',
38
+ 'mapbox' => 'style=feature:water|element:all|saturation:43|lightness:-11|hue:0x0088ff|&style=feature:road|element:geometry.fill|hue:0xff0000|saturation:-100|lightness:99|&style=feature:road|element:geometry.stroke|color:0x808080|lightness:54|&style=feature:landscape.man_made|element:geometry.fill|color:0xece2d9|&style=feature:poi.park|element:geometry.fill|color:0xccdca1|&style=feature:road|element:labels.text.fill|color:0x767676|&style=feature:road|element:labels.text.stroke|color:0xffffff|&style=feature:poi|element:all|visibility:off|&style=feature:landscape.natural|element:geometry.fill|visibility:on|color:0xb8cb93|&style=feature:poi.park|element:all|visibility:on|&style=feature:poi.sports_complex|element:all|visibility:on|&style=feature:poi.medical|element:all|visibility:on|&style=feature:poi.business|element:all|visibility:simplified|',
39
+ 'paper' => 'style=feature:landscape|element:all|hue:0xF1FF00|saturation:-27.4|lightness:9.4|gamma:1|&style=feature:road.highway|element:all|hue:0x0099FF|saturation:-20|lightness:36.4|gamma:1|&style=feature:road.arterial|element:all|hue:0x00FF4F|saturation:0|lightness:0|gamma:1|&style=feature:road.local|element:all|hue:0xFFB300|saturation:-38|lightness:11.2|gamma:1|&style=feature:water|element:all|hue:0x00B6FF|saturation:4.2|lightness:-63.4|gamma:1|&style=feature:poi|element:all|hue:0x9FFF00|saturation:0|lightness:0|gamma:1|',
40
+ 'midnight' => 'style=feature:water|element:all|color:0x021019|&style=feature:landscape|element:all|color:0x08304b|&style=feature:poi|element:geometry|color:0x0c4152|lightness:5|&style=feature:road.highway|element:geometry.fill|color:0x000000|&style=feature:road.highway|element:geometry.stroke|color:0x0b434f|lightness:25|&style=feature:road.arterial|element:geometry.fill|color:0x000000|&style=feature:road.arterial|element:geometry.stroke|color:0x0b3d51|lightness:16|&style=feature:road.local|element:geometry|color:0x000000|&style=feature:all|element:labels.text.fill|color:0xffffff|&style=feature:all|element:labels.text.stroke|color:0x000000|lightness:13|&style=feature:transit|element:all|color:0x146474|&style=feature:administrative|element:geometry.fill|color:0x000000|&style=feature:administrative|element:geometry.stroke|color:0x144b53|lightness:14|weight:1.4|');
41
+ } // GMW_styles
gmw-tracking.php CHANGED
@@ -6,18 +6,20 @@
6
  */
7
 
8
 
9
- // include only file
10
  if (!defined('ABSPATH')) {
11
- die();
12
  }
13
 
14
 
15
  class GMW_tracking {
 
 
16
  // set things up
17
  static function init() {
18
  self::check_opt_in_out();
19
 
20
- add_action(GMW_CRON, array(__CLASS__, 'send_data'));
21
  GMW_tracking::setup_cron();
22
  } // init
23
 
@@ -37,17 +39,17 @@ class GMW_tracking {
37
 
38
  // clear cron scheadule
39
  static function clear_cron() {
40
- wp_clear_scheduled_hook(GMW_CRON);
41
  } // clear_cron
42
 
43
 
44
  // setup cron job when user allows tracking
45
  static function setup_cron() {
46
- $options = get_option(GMW_OPTIONS);
47
 
48
  if (isset($options['allow_tracking']) && $options['allow_tracking'] === true) {
49
- if (!wp_next_scheduled(GMW_CRON)) {
50
- wp_schedule_event(time() + 30, 'gmw_biweekly', GMW_CRON);
51
  }
52
  } else {
53
  self::clear_cron();
@@ -57,17 +59,13 @@ class GMW_tracking {
57
 
58
  // save user's choice for (not) allowing tracking
59
  static function check_opt_in_out() {
60
- $options = get_option(GMW_OPTIONS);
61
-
62
  if (isset($_GET['gmw_tracking']) && $_GET['gmw_tracking'] == 'opt_in') {
63
- $options['allow_tracking'] = true;
64
- update_option(GMW_OPTIONS, $options);
65
  self::send_data(true);
66
  wp_redirect(esc_url_raw(remove_query_arg('gmw_tracking')));
67
  die();
68
- } else if (isset($_GET['gmw_tracking']) && $_GET['gmw_tracking'] == 'opt_out') {
69
- $options['allow_tracking'] = false;
70
- update_option(GMW_OPTIONS, $options);
71
  wp_redirect(esc_url_raw(remove_query_arg('gmw_tracking')));
72
  die();
73
  }
@@ -80,7 +78,7 @@ class GMW_tracking {
80
  $optout_url = add_query_arg('gmw_tracking', 'opt_out');
81
 
82
  echo '<div class="updated"><p>';
83
- echo __('Please help us improve <strong>Google Maps Widget</strong> by allowing us to track anonymous usage data. Absolutely <strong>no sensitive data is tracked</strong> (<a href="http://www.googlemapswidget.com/plugin-tracking-info/" target="_blank">complete disclosure &amp; details of our tracking policy</a>).', 'google-maps-widget');
84
  echo '<br /><a href="' . esc_url($optin_url) . '" style="vertical-align: baseline; margin-top: 15px;" class="button-primary">' . __('Allow', 'google-maps-widget') . '</a>';
85
  echo '&nbsp;&nbsp;<a href="' . esc_url($optout_url) . '" class="">' . __('Do not allow tracking', 'google-maps-widget') . '</a>';
86
  echo '</p></div>';
@@ -89,7 +87,7 @@ class GMW_tracking {
89
 
90
  // send usage data once a week to our server
91
  static function send_data($force = false) {
92
- $options = get_option(GMW_OPTIONS);
93
 
94
  if ($force == false && (!isset($options['allow_tracking']) || $options['allow_tracking'] !== true)) {
95
  return;
@@ -108,13 +106,13 @@ class GMW_tracking {
108
  'user-agent' => 'GMW/' . GMW::$version));
109
 
110
  $options['last_tracking'] = current_time('timestamp');
111
- update_option(GMW_OPTIONS, $options);
112
  } // send_data
113
 
114
 
115
  // get and prepare data that will be sent out
116
  static function prepare_data() {
117
- $options = get_option(GMW_OPTIONS);
118
  $data = array();
119
  $current_user = wp_get_current_user();
120
 
@@ -132,15 +130,9 @@ class GMW_tracking {
132
  $data['ioncube'] = extension_loaded('IonCube Loader');
133
  $data['gmw_count'] = self::count_active_widgets();
134
 
135
- if (get_bloginfo('version') < '3.4') {
136
- $theme = get_theme_data(get_stylesheet_directory() . '/style.css');
137
- $data['theme_name'] = $theme['Name'];
138
- $data['theme_version'] = $theme['Version'];
139
- } else {
140
- $theme = wp_get_theme();
141
- $data['theme_name'] = $theme->Name;
142
- $data['theme_version'] = $theme->Version;
143
- }
144
 
145
  // get current plugin information
146
  if (!function_exists('get_plugins')) {
6
  */
7
 
8
 
9
+ // this is an include only WP file
10
  if (!defined('ABSPATH')) {
11
+ die;
12
  }
13
 
14
 
15
  class GMW_tracking {
16
+ static $cron_biweekly = 'gmw_biweekly_cron';
17
+
18
  // set things up
19
  static function init() {
20
  self::check_opt_in_out();
21
 
22
+ add_action(self::$cron_biweekly, array(__CLASS__, 'send_data'));
23
  GMW_tracking::setup_cron();
24
  } // init
25
 
39
 
40
  // clear cron scheadule
41
  static function clear_cron() {
42
+ wp_clear_scheduled_hook(self::$cron_biweekly);
43
  } // clear_cron
44
 
45
 
46
  // setup cron job when user allows tracking
47
  static function setup_cron() {
48
+ $options = GMW::get_options();
49
 
50
  if (isset($options['allow_tracking']) && $options['allow_tracking'] === true) {
51
+ if (!wp_next_scheduled(self::$cron_biweekly)) {
52
+ wp_schedule_event(current_time('timestamp') + 60, 'gmw_biweekly', self::$cron_biweekly);
53
  }
54
  } else {
55
  self::clear_cron();
59
 
60
  // save user's choice for (not) allowing tracking
61
  static function check_opt_in_out() {
 
 
62
  if (isset($_GET['gmw_tracking']) && $_GET['gmw_tracking'] == 'opt_in') {
63
+ GMW::set_options(array('allow_tracking' => true));
 
64
  self::send_data(true);
65
  wp_redirect(esc_url_raw(remove_query_arg('gmw_tracking')));
66
  die();
67
+ } elseif (isset($_GET['gmw_tracking']) && $_GET['gmw_tracking'] == 'opt_out') {
68
+ GMW::set_options(array('allow_tracking' => false));
 
69
  wp_redirect(esc_url_raw(remove_query_arg('gmw_tracking')));
70
  die();
71
  }
78
  $optout_url = add_query_arg('gmw_tracking', 'opt_out');
79
 
80
  echo '<div class="updated"><p>';
81
+ echo __('Please help us improve <strong>Google Maps Widget</strong> by allowing tracking of anonymous usage data. Absolutely <strong>no sensitive data is tracked</strong> (<a href="http://www.googlemapswidget.com/plugin-tracking-info/" target="_blank">complete disclosure &amp; details of our tracking policy</a>).', 'google-maps-widget');
82
  echo '<br /><a href="' . esc_url($optin_url) . '" style="vertical-align: baseline; margin-top: 15px;" class="button-primary">' . __('Allow', 'google-maps-widget') . '</a>';
83
  echo '&nbsp;&nbsp;<a href="' . esc_url($optout_url) . '" class="">' . __('Do not allow tracking', 'google-maps-widget') . '</a>';
84
  echo '</p></div>';
87
 
88
  // send usage data once a week to our server
89
  static function send_data($force = false) {
90
+ $options = GMW::get_options();
91
 
92
  if ($force == false && (!isset($options['allow_tracking']) || $options['allow_tracking'] !== true)) {
93
  return;
106
  'user-agent' => 'GMW/' . GMW::$version));
107
 
108
  $options['last_tracking'] = current_time('timestamp');
109
+ update_option(GMW::$options, $options);
110
  } // send_data
111
 
112
 
113
  // get and prepare data that will be sent out
114
  static function prepare_data() {
115
+ $options = GMW::get_options();
116
  $data = array();
117
  $current_user = wp_get_current_user();
118
 
130
  $data['ioncube'] = extension_loaded('IonCube Loader');
131
  $data['gmw_count'] = self::count_active_widgets();
132
 
133
+ $theme = wp_get_theme();
134
+ $data['theme_name'] = $theme->Name;
135
+ $data['theme_version'] = $theme->Version;
 
 
 
 
 
 
136
 
137
  // get current plugin information
138
  if (!function_exists('get_plugins')) {
gmw-widget.php CHANGED
@@ -1,280 +1,568 @@
1
  <?php
2
  /*
3
  * Google Maps Widget
4
- * Widget definition, admin GUI and front-end functions
5
  * (c) Web factory Ltd, 2012 - 2016
6
  */
7
 
8
 
9
- // this is an include only file
10
  if (!defined('ABSPATH')) {
11
- die();
12
  }
13
 
14
 
15
  // main widget class, extends WP widget interface/class
16
  class GoogleMapsWidget extends WP_Widget {
17
  static $widgets = array();
18
-
19
-
20
- // constructor method
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
  function __construct() {
 
 
 
 
 
22
  $widget_ops = array('classname' => 'google-maps-widget', 'description' => __('Displays a map image thumbnail with a larger map available in a lightbox.', 'google-maps-widget'));
23
  $control_ops = array('width' => 450, 'height' => 350);
24
- parent::__construct('GoogleMapsWidget', __('Google Maps Widget', 'google-maps-widget'), $widget_ops, $control_ops);
25
- } // __construct
 
 
 
 
 
 
 
26
 
27
 
28
  // widget edit form HTML
29
  function form($instance) {
30
- $instance = wp_parse_args((array) $instance,
31
- array('title' => __('Map', 'google-maps-widget'),
32
- 'address' => __('New York, USA', 'google-maps-widget'),
33
- 'thumb_pin_color' => 'red',
34
- 'thumb_pin_type' => 'predefined',
35
- 'thumb_pin_size' => 'default',
36
- 'thumb_pin_img' => '',
37
- 'thumb_width' => '250',
38
- 'thumb_height' => '250',
39
- 'thumb_type' => 'roadmap',
40
- 'thumb_zoom' => '13',
41
- 'thumb_header' => '',
42
- 'thumb_footer' => 'Powered by Google Maps Widget',
43
- 'thumb_color_scheme' => '',
44
- 'thumb_link_type' => 'lightbox',
45
- 'thumb_link' => '',
46
- 'lightbox_width' => '550',
47
- 'lightbox_height' => '550',
48
- 'lightbox_type' => 'roadmap',
49
- 'lightbox_zoom' => '14',
50
- 'lightbox_bubble' => '1',
51
- 'lightbox_skin' => 'light',
52
- 'lightbox_title' => '1',
53
- 'lightbox_header' => '',
54
- 'lightbox_footer' => ''));
55
-
56
  extract($instance, EXTR_SKIP);
57
 
58
- // legacy fixes for older versions; it's auto-fixed on first widget save but has to be here
59
- if(!$thumb_pin_type) {
60
- $thumb_pin_type = 'predefined';
61
- }
62
- if(!$thumb_link_type) {
63
- $thumb_link_type = 'lightbox';
64
- }
65
- if(!$lightbox_skin) {
66
- $lightbox_skin = 'light';
67
- }
68
-
69
- $map_types_thumb = array(array('val' => 'roadmap', 'label' => __('Road (default)', 'google-maps-widget')),
70
  array('val' => 'satellite', 'label' => __('Satellite', 'google-maps-widget')),
71
  array('val' => 'terrain', 'label' => __('Terrain', 'google-maps-widget')),
72
  array('val' => 'hybrid', 'label' => __('Hybrid', 'google-maps-widget')));
73
 
74
- $map_types_lightbox = array(array('val' => 'm', 'label' => __('Road (default)', 'google-maps-widget')),
75
- array('val' => 'k', 'label' => __('Satellite', 'google-maps-widget')),
76
- array('val' => 'p', 'label' => __('Terrain', 'google-maps-widget')),
77
- array('val' => 'h', 'label' => __('Hybrid', 'google-maps-widget')));
78
-
79
- $pin_colors = array(array('val' => 'black', 'label' => __('Black', 'google-maps-widget')),
80
- array('val' => 'brown', 'label' => __('Brown', 'google-maps-widget')),
81
- array('val' => 'green', 'label' => __('Green', 'google-maps-widget')),
82
- array('val' => 'purple', 'label' => __('Purple', 'google-maps-widget')),
83
- array('val' => 'yellow', 'label' => __('Yellow', 'google-maps-widget')),
84
- array('val' => 'blue', 'label' => __('Blue', 'google-maps-widget')),
85
- array('val' => 'gray', 'label' => __('Gray', 'google-maps-widget')),
86
- array('val' => 'orange', 'label' => __('Orange', 'google-maps-widget')),
87
- array('val' => 'red', 'label' => __('Red (default)', 'google-maps-widget')),
88
- array('val' => 'white', 'label' => __('White', 'google-maps-widget')));
89
-
90
- $pin_sizes = array(array('val' => 'tiny', 'label' => __('Tiny', 'google-maps-widget')),
91
  array('val' => 'small', 'label' => __('Small', 'google-maps-widget')),
92
  array('val' => 'mid', 'label' => __('Medium', 'google-maps-widget')),
93
  array('val' => 'default', 'label' => __('Large (default)', 'google-maps-widget')));
94
 
95
- $zoom_levels = array(array('val' => '0', 'label' => __('0 - entire world', 'google-maps-widget')));
 
 
 
 
 
 
 
 
 
 
 
 
 
96
  for ($tmp = 1; $tmp <= 21; $tmp++) {
97
- $zoom_levels[] = array('val' => $tmp, 'label' => $tmp);
 
 
 
 
98
  }
 
 
 
99
 
100
  $lightbox_skins = array(array('val' => 'light', 'label' => __('Light (default)', 'google-maps-widget')),
101
  array('val' => 'dark', 'label' => __('Dark', 'google-maps-widget')));
102
 
103
- $lightbox_bubbles = array(array('val' => '0', 'label' => __('Hide', 'google-maps-widget')),
104
- array('val' => '1', 'label' => __('Show (default)', 'google-maps-widget')));
105
-
106
- $lightbox_titles = array(array('val' => '0', 'label' => __('Do not show map title on lightbox', 'google-maps-widget')),
107
- array('val' => '1', 'label' => __('Show map title on lightbox (default)', 'google-maps-widget')));
108
 
109
- $thumb_pin_types = array(array('val' => 'predefined', 'label' => __('Predefined (default)', 'google-maps-widget')),
110
- array('val' => 'custom', 'label' => __('Custom', 'google-maps-widget')));
111
-
112
- $thumb_link_types = array(array('val' => 'lightbox', 'label' => __('Lightbox (default)', 'google-maps-widget')),
113
  array('val' => 'custom', 'label' => __('Custom URL', 'google-maps-widget')),
114
  array('val' => 'nolink', 'label' => __('Disable link', 'google-maps-widget')));
115
 
116
- $thumb_color_schemes = array(array('val' => 'default', 'label' => __('Default', 'gmw')),
117
- array('val' => 'new', 'label' => __('Refreshed by Google', 'gmw')));
 
 
 
 
 
 
 
 
 
 
 
 
 
118
 
119
  if (GMW::is_activated()) {
120
  array_push($thumb_color_schemes, array('val' => 'apple', 'label' => __('Apple', 'google-maps-widget')),
 
 
 
121
  array('val' => 'gray', 'label' => __('Gray', 'google-maps-widget')),
 
 
 
 
 
122
  array('val' => 'paper', 'label' => __('Paper', 'google-maps-widget')));
123
- array_push($lightbox_skins, array('val' => 'noimage-blue', 'label' => __('Blue', 'google-maps-widget')),
124
- array('val' => 'noimage-rounded', 'label' => __('Rounded', 'google-maps-widget')));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
125
  }
126
 
127
- echo '<p><label for="' . $this->get_field_id('title') . '">' . __('Title', 'google-maps-widget') . ':</label><input class="widefat" id="' . $this->get_field_id('title') . '" name="' . $this->get_field_name('title') . '" placeholder="' . __('Map title', 'google-maps-widget') . '" type="text" value="' . esc_attr($title) . '" /></p>';
128
- echo '<p><label for="' . $this->get_field_id('address') . '">' . __('Address', 'google-maps-widget') . ':</label><input class="widefat" id="' . $this->get_field_id('address') . '" placeholder="' . __('Address to show', 'google-maps-widget') . '" name="' . $this->get_field_name('address') . '" type="text" value="' . esc_attr($address) . '" required="required" /></p>';
129
-
130
- echo '<div class="gmw-tabs" id="tab-' . $this->id . '"><ul><li><a href="#gmw-thumb">' . __('Thumbnail map', 'google-maps-widget') . '</a></li><li><a href="#gmw-lightbox">' . __('Lightbox map', 'google-maps-widget') . '</a></li><li><a href="#gmw-shortcode">' . __('Shortcode', 'google-maps-widget') . '</a></li><li><a href="#gmw-info">' . __('Info &amp; Support', 'google-maps-widget') . '</a></li></ul>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
131
  echo '<div id="gmw-thumb">';
132
-
133
  echo '<p><label class="gmw-label" for="' . $this->get_field_id('thumb_width') . '">' . __('Map Size', 'google-maps-widget') . ':</label>';
134
- echo '<input min="50" max="640" step="1" class="small-text" id="' . $this->get_field_id('thumb_width') . '" name="' . $this->get_field_name('thumb_width') . '" type="number" value="' . esc_attr($thumb_width) . '" required="required" /> x ';
135
- echo '<input min="50" max="640" step="1" class="small-text" id="' . $this->get_field_id('thumb_height') . '" name="' . $this->get_field_name('thumb_height') . '" type="number" value="' . esc_attr($thumb_height) . '" required="required" />';
136
  echo ' px</p>';
137
 
138
  echo '<p><label class="gmw-label" for="' . $this->get_field_id('thumb_type') . '">' . __('Map Type', 'google-maps-widget') . ':</label>';
139
- echo '<select id="' . $this->get_field_id('thumb_type') . '" name="' . $this->get_field_name('thumb_type') . '">';
140
- GMW::create_select_options($map_types_thumb, $thumb_type);
 
 
 
 
 
141
  echo '</select></p>';
142
 
 
 
 
 
 
143
  echo '<p><label class="gmw-label" for="' . $this->get_field_id('thumb_pin_type') . '">' . __('Pin Type', 'google-maps-widget') . ':</label>';
144
- echo '<select class="gmw_thumb_pin_type" id="' . $this->get_field_id('thumb_pin_type') . '" name="' . $this->get_field_name('thumb_pin_type') . '">';
 
 
145
  GMW::create_select_options($thumb_pin_types, $thumb_pin_type);
146
  echo '</select></p>';
 
 
 
 
 
147
 
148
- echo '<p class="gmw_thumb_pin_type_predefined_section"><label class="gmw-label" for="' . $this->get_field_id('thumb_pin_color') . '">' . __('Pin Color', 'google-maps-widget') . ':</label>';
149
- echo '<select id="' . $this->get_field_id('thumb_pin_color') . '" name="' . $this->get_field_name('thumb_pin_color') . '">';
150
- GMW::create_select_options($pin_colors, $thumb_pin_color);
151
- echo '</select></p>';
 
 
 
 
 
 
152
 
153
- echo '<p class="gmw_thumb_pin_type_predefined_section"><label class="gmw-label" for="' . $this->get_field_id('thumb_pin_size') . '">' . __('Pin Size', 'google-maps-widget') . ':</label>';
154
- echo '<select id="' . $this->get_field_id('thumb_pin_size') . '" name="' . $this->get_field_name('thumb_pin_size') . '">';
155
- GMW::create_select_options($pin_sizes, $thumb_pin_size);
156
  echo '</select></p>';
157
 
158
- echo '<p class="gmw_thumb_pin_type_custom_section"><label class="gmw-label" for="' . $this->get_field_id('thumb_pin_img') . '">' . __('Pin Image URL', 'google-maps-widget') . ':</label>';
159
- echo '<input type="url" placeholder="http://" class="regular-text" id="' . $this->get_field_id('thumb_pin_img') . '" name="' . $this->get_field_name('thumb_pin_img') . '" value="' . esc_attr($thumb_pin_img) . '" required="required" />';
160
-
161
- echo '<p><label class="gmw-label" for="' . $this->get_field_id('thumb_zoom') . '">' . __('Zoom Level', 'google-maps-widget') . ':</label>';
162
- echo '<select id="' . $this->get_field_id('thumb_zoom') . '" name="' . $this->get_field_name('thumb_zoom') . '">';
163
- GMW::create_select_options($zoom_levels, $thumb_zoom);
164
  echo '</select></p>';
165
 
 
 
 
 
166
  echo '<p><label class="gmw-label" for="' . $this->get_field_id('thumb_link_type') . '">' . __('Link To', 'google-maps-widget') . ':</label>';
167
- echo '<select class="gmw_thumb_link_type" id="' . $this->get_field_id('thumb_link_type') . '" name="' . $this->get_field_name('thumb_link_type') . '">';
168
  GMW::create_select_options($thumb_link_types, $thumb_link_type);
169
  echo '</select></p>';
170
 
171
  echo '<p class="gmw_thumb_link_section"><label class="gmw-label" for="' . $this->get_field_id('thumb_link') . '">' . __('Custom URL', 'google-maps-widget') . ':</label>';
172
- echo '<input class="regular-text" placeholder="http://" id="' . $this->get_field_id('thumb_link') . '" name="' . $this->get_field_name('thumb_link') . '" type="url" value="' . esc_attr($thumb_link) . '" required="required" /></p>';
 
173
 
174
- echo '<p><label class="gmw-label" for="' . $this->get_field_id('thumb_color_scheme') . '">' . __('Color Scheme', 'google-maps-widget') . ':</label>';
175
- echo '<select class="gmw_thumb_color_scheme" id="' . $this->get_field_id('thumb_color_scheme') . '" name="' . $this->get_field_name('thumb_color_scheme') . '">';
176
- GMW::create_select_options($thumb_color_schemes, $thumb_color_scheme);
177
- if (!GMW::is_activated()) {
178
- echo '<option class="promo" value="-1">' . __('Add more schemes for FREE', 'google-maps-widget') . '</option>';
179
- }
180
  echo '</select></p>';
181
 
182
- echo '<p><label for="' . $this->get_field_id('thumb_header') . '">' . __('Text Above Map', 'google-maps-widget') . ':</label>';
183
- echo '<textarea class="widefat" rows="3" cols="20" id="' . $this->get_field_id('thumb_header') . '" name="' . $this->get_field_name('thumb_header') . '">'. esc_textarea($thumb_header) . '</textarea></p>';
 
 
184
 
 
 
 
 
185
  echo '<p><label for="' . $this->get_field_id('thumb_footer') . '">' . __('Text Below Map', 'google-maps-widget') . ':</label>';
186
- echo '<textarea class="widefat" rows="3" cols="20" id="' . $this->get_field_id('thumb_footer') . '" name="' . $this->get_field_name('thumb_footer') . '">'. esc_textarea($thumb_footer) . '</textarea></p>';
 
 
 
 
187
 
188
- echo '</div>'; // thumbnail tab
189
  echo '<div id="gmw-lightbox">';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
190
 
191
- echo '<p><label class="gmw-label" for="' . $this->get_field_id('lightbox_width') . '">' . __('Map Size', 'google-maps-widget') . ':</label>';
192
- echo '<input min="50" max="2000" step="1" class="small-text" id="' . $this->get_field_id('lightbox_width') . '" name="' . $this->get_field_name('lightbox_width') . '" type="number" value="' . esc_attr($lightbox_width) . '" required="required" /> x ';
193
- echo '<input min="50" max="2000" step="1" class="small-text" id="' . $this->get_field_id('lightbox_height') . '" name="' . $this->get_field_name('lightbox_height') . '" type="number" value="' . esc_attr($lightbox_height) . '" required="required" />';
194
- echo ' px</p>';
 
 
 
 
 
 
 
 
 
 
 
 
 
195
 
196
  echo '<p><label class="gmw-label" for="' . $this->get_field_id('lightbox_type') . '">' . __('Map Type', 'google-maps-widget') . ':</label>';
197
- echo '<select id="' . $this->get_field_id('lightbox_type') . '" name="' . $this->get_field_name('lightbox_type') . '">';
198
- GMW::create_select_options($map_types_lightbox, $lightbox_type);
199
  echo '</select></p>';
200
 
201
  echo '<p><label class="gmw-label" for="' . $this->get_field_id('lightbox_zoom') . '">' . __('Zoom Level', 'google-maps-widget') . ':</label>';
202
- echo '<select id="' . $this->get_field_id('lightbox_zoom') . '" name="' . $this->get_field_name('lightbox_zoom') . '">';
203
- GMW::create_select_options($zoom_levels, $lightbox_zoom);
204
  echo '</select></p>';
205
 
206
  echo '<p><label class="gmw-label" for="' . $this->get_field_id('lightbox_skin') . '">' . __('Lightbox Skin', 'google-maps-widget') . ':</label>';
207
- echo '<select class="gmw_lightbox_skin" id="' . $this->get_field_id('lightbox_skin') . '" name="' . $this->get_field_name('lightbox_skin') . '">';
208
  GMW::create_select_options($lightbox_skins, $lightbox_skin);
209
- if (!GMW::is_activated()) {
210
- echo '<option class="promo" value="-1">' . __('Add more skins for FREE', 'google-maps-widget') . '</option>';
211
- }
212
  echo '</select></p>';
213
 
214
- echo '<p><label class="gmw-label" for="' . $this->get_field_id('lightbox_bubble') . '">' . __('Address Bubble', 'google-maps-widget') . ':</label>';
215
- echo '<select id="' . $this->get_field_id('lightbox_bubble') . '" name="' . $this->get_field_name('lightbox_bubble') . '">';
216
- GMW::create_select_options($lightbox_bubbles, $lightbox_bubble);
 
217
  echo '</select></p>';
218
 
219
- echo '<p><label class="gmw-label" for="' . $this->get_field_id('lightbox_title') . '">' . __('Map Title', 'google-maps-widget') . ':&nbsp;</label>';
220
- echo '<select id="' . $this->get_field_id('lightbox_title') . '" name="' . $this->get_field_name('lightbox_title') . '">';
221
- GMW::create_select_options($lightbox_titles, $lightbox_title);
222
  echo '</select></p>';
223
 
224
  echo '<p><label for="' . $this->get_field_id('lightbox_header') . '">' . __('Header Text', 'google-maps-widget') . ':</label>';
225
- echo '<textarea class="widefat" rows="3" cols="20" id="' . $this->get_field_id('lightbox_header') . '" name="' . $this->get_field_name('lightbox_header') . '">'. esc_textarea($lightbox_header) . '</textarea></p>';
 
226
 
227
  echo '<p><label for="' . $this->get_field_id('lightbox_footer') . '">' . __('Footer Text', 'google-maps-widget') . ':</label>';
228
- echo '<textarea class="widefat" rows="3" cols="20" id="' . $this->get_field_id('lightbox_footer') . '" name="' . $this->get_field_name('lightbox_footer') . '">'. esc_textarea($lightbox_footer) . '</textarea></p>';
 
229
 
230
- echo '</div>'; // lightbox tab
 
231
 
232
  // shortcode tab
233
  echo '<div id="gmw-shortcode">';
234
  if (GMW::is_activated()) {
235
  $id = str_replace('googlemapswidget-', '', $this->id);
236
 
237
- if (!$id || !is_numeric($id)) {
238
  echo '<p>' . __('Please save the widget so that the shortcode can be generated.', 'google-maps-widget') . '</p>';
239
  } else {
240
- echo '<p><code>[gmw id="' . $id . '"]</code><br></p>';
241
- echo '<p>' . __('Use the above shortcode to display this Google Maps Widget instance in any page or post. <br>Please note that your theme might style the widget in the post as if it is placed in a sidebar. In that case use the <code>span.gmw-shortcode-widget</code> class to target the shortcode and make necessary changes via CSS.', 'google-maps-widget') . '</p>';
242
  }
243
  } else {
244
- echo '<p>Shortcode support is an extra feature. You can activate it <b>for free</b> and get more features &amp; options for free as well.<br><br><a class="button open_promo_dialog" href="#">Activate extra features</a></p>';
245
  }
246
- echo '</div>'; // shortcode tab
 
247
 
 
248
  echo '<div id="gmw-info">';
249
- echo '<h4>' . __('Support', 'google-maps-widget') . '</h4>';
250
- echo '<p>If you have any problems, questions or would like a new feature added post it on the <a href="https://wordpress.org/support/plugin/google-maps-widget" target="_blank">official support forum</a>. Since it\'s free and community powered please be patient. <a href="mailto:wp.support@webfactoryltd.com?subject=GMW%20support">Premium support</a> via email is available to users who have donated.</p>';
251
- if (!GMW::is_activated()) {
252
- echo '<h4>' . __('Activate extra features &amp; options', 'google-maps-widget') . '</h4>';
253
- echo '<p>' . __('If you donate or subscribe to our mailing list we\'ll instantly activate additional features in the plugin! At the moment those features are: shortcode support, 3 additional thumbnail map skins and 2 additional lightbox skins. More extra features will be available soon.', 'google-maps-widget') . '</p><p><a class="button-secondary open_promo_dialog" href="#">Activate extra features</a></p>';
 
 
 
 
 
 
 
 
 
 
 
 
254
  }
255
- echo '</p>';
256
  echo '<h4>' . __('Rate the plugin &amp; spread the word', 'google-maps-widget') . '</h4>';
257
- echo '<p>It won\'t take you more than a minute but it will help us immensely. So please - <a href="https://wordpress.org/support/view/plugin-reviews/google-maps-widget" target="_blank">rate the plugin</a>. Or spread the word by <a href="https://twitter.com/intent/tweet?via=WebFactoryLtd&amp;text=' . urlencode('I\'m using the #free Google Maps Widget for #wordpress. You can grab it too at http://goo.gl/2qcbbf') . '" target="_blank">tweeting about it</a>. Thank you!</p>';
258
- echo '</div>'; // info tab
 
259
 
260
  echo '</div><p></p>'; // tabs
261
 
262
- if (!gmw::is_activated('pro') && (username_exists('admin') || get_userdata(1))) {
263
- echo '<p>' . __('We have detected at least one <b><span style="color: #d54e21;">security issue</span></b> on this site related to user accounts. Don\'t become a statistic! Protect your site with <a href="http://security-ninja-plugins-bundle.webfactoryltd.com/?ref=gmw" target="_blank">Security Ninja</a>.', 'google-maps-widget') . '</p>';
 
 
 
 
 
 
264
  }
265
  } // form
266
 
267
 
268
  // update/save widget options
269
  function update($new_instance, $old_instance) {
270
- $instance = $old_instance;
271
 
272
  $instance['title'] = $new_instance['title'];
273
- $instance['address'] = $new_instance['address'];
 
274
  $instance['thumb_pin_type'] = $new_instance['thumb_pin_type'];
275
- $instance['thumb_pin_color'] = $new_instance['thumb_pin_color'];
276
  $instance['thumb_pin_size'] = $new_instance['thumb_pin_size'];
 
277
  $instance['thumb_pin_img'] = trim($new_instance['thumb_pin_img']);
 
278
  $instance['thumb_width'] = min(640, max(50, (int) $new_instance['thumb_width']));
279
  $instance['thumb_height'] = min(640, max(50, (int) $new_instance['thumb_height']));
280
  $instance['thumb_zoom'] = $new_instance['thumb_zoom'];
@@ -284,127 +572,170 @@ class GoogleMapsWidget extends WP_Widget {
284
  $instance['thumb_header'] = trim($new_instance['thumb_header']);
285
  $instance['thumb_footer'] = trim($new_instance['thumb_footer']);
286
  $instance['thumb_color_scheme'] = $new_instance['thumb_color_scheme'];
 
 
 
 
287
  $instance['lightbox_width'] = min(2000, max(50, (int) $new_instance['lightbox_width']));
288
  $instance['lightbox_height'] = min(2000, max(50, (int) $new_instance['lightbox_height']));
289
- $instance['lightbox_type'] = $new_instance['lightbox_type'];
 
 
 
 
 
 
290
  $instance['lightbox_zoom'] = $new_instance['lightbox_zoom'];
291
- $instance['lightbox_bubble'] = $new_instance['lightbox_bubble'];
292
- $instance['lightbox_title'] = $new_instance['lightbox_title'];
293
  $instance['lightbox_header'] = trim($new_instance['lightbox_header']);
294
  $instance['lightbox_footer'] = trim($new_instance['lightbox_footer']);
295
  $instance['lightbox_skin'] = $new_instance['lightbox_skin'];
 
 
296
  $instance['core_ver'] = GMW::$version;
297
 
298
  return $instance;
299
  } // update
300
 
301
 
302
- // echo widget
303
- function widget($args, $instance) {
304
- $out = $tmp = '';
 
305
 
306
- $thumb_styles = array(
307
- 'apple' => 'style=feature:water|element:geometry|color:0xa2daf2|&style=feature:landscape.man_made|element:geometry|color:0xf7f1df|&style=feature:landscape.natural|element:geometry|color:0xd0e3b4|&style=feature:landscape.natural.terrain|element:geometry|visibility:off|&style=feature:poi.park|element:geometry|color:0xbde6ab|&style=feature:poi|element:labels|visibility:off|&style=feature:poi.medical|element:geometry|color:0xfbd3da|&style=feature:poi.business|element:all|visibility:off|&style=feature:road|element:geometry.stroke|visibility:off|&style=feature:road|element:labels|visibility:off|&style=feature:road.highway|element:geometry.fill|color:0xffe15f|&style=feature:road.highway|element:geometry.stroke|color:0xefd151|&style=feature:road.arterial|element:geometry.fill|color:0xffffff|&style=feature:road.local|element:geometry.fill|color:black|&style=feature:transit.station.airport|element:geometry.fill|color:0xcfb2db|',
308
- 'gray' => 'style=feature:landscape|element:all|saturation:-100|lightness:65|visibility:on|&style=feature:poi|element:all|saturation:-100|lightness:51|visibility:simplified|&style=feature:road.highway|element:all|saturation:-100|visibility:simplified|&style=feature:road.arterial|element:all|saturation:-100|lightness:30|visibility:on|&style=feature:road.local|element:all|saturation:-100|lightness:40|visibility:on|&style=feature:transit|element:all|saturation:-100|visibility:simplified|&style=feature:administrative.province|element:all|visibility:off|&style=feature:water|element:labels|visibility:on|lightness:-25|saturation:-100|&style=feature:water|element:geometry|hue:0xffff00|lightness:-25|saturation:-97|',
309
- 'paper' => 'style=feature:landscape|element:all|hue:0xF1FF00|saturation:-27.4|lightness:9.4|gamma:1|&style=feature:road.highway|element:all|hue:0x0099FF|saturation:-20|lightness:36.4|gamma:1|&style=feature:road.arterial|element:all|hue:0x00FF4F|saturation:0|lightness:0|gamma:1|&style=feature:road.local|element:all|hue:0xFFB300|saturation:-38|lightness:11.2|gamma:1|&style=feature:water|element:all|hue:0x00B6FF|saturation:4.2|lightness:-63.4|gamma:1|&style=feature:poi|element:all|hue:0x9FFF00|saturation:0|lightness:0|gamma:1|');
310
 
311
- extract($args, EXTR_SKIP);
 
 
312
 
313
- $ll = '';
314
- if ($instance['lightbox_zoom'] > 14) {
315
- $coordinates = GMW::get_coordinates($instance['address']);
316
- if ($coordinates) {
317
- $ll = $coordinates['lat'] . ',' . $coordinates['lng'];
318
- }
319
  }
320
-
321
- $lang = substr(@$_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
322
- if (!$lang) {
323
- $lang = 'en';
 
 
324
  }
325
-
326
- // legacy fix for older versions; it's auto-fixed on first widget save but has to be here
327
- if(!$instance['lightbox_skin']) {
328
- $instance['lightbox_skin'] = 'light';
 
 
 
329
  }
330
-
331
- self::$widgets[] = array('title' => ($instance['lightbox_title']? $instance['title']: ''),
332
- 'width' => $instance['lightbox_width'],
333
- 'height' => $instance['lightbox_height'],
334
- 'footer' => $instance['lightbox_footer'],
335
- 'header' => $instance['lightbox_header'],
336
- 'address' => $instance['address'],
337
- 'zoom' => $instance['lightbox_zoom'],
338
- 'type' => $instance['lightbox_type'],
339
- 'skin' => $instance['lightbox_skin'],
340
- 'bubble' => $instance['lightbox_bubble'],
341
- 'll' => $ll,
342
- 'id' => $widget_id);
343
-
344
- $out .= $before_widget;
345
-
346
- if (!isset($instance['thumb_pin_type']) || empty($instance['thumb_pin_type'])) {
347
- $instance['thumb_pin_type'] = 'predefined';
348
  }
349
 
350
- if (!isset($instance['thumb_link_type']) || empty($instance['thumb_link_type'])) {
351
- $instance['thumb_link_type'] = 'lightbox';
352
- }
353
 
354
- $title = empty($instance['title'])? ' ' : apply_filters('widget_title', $instance['title']);
 
355
  if (!empty($title)) {
356
- $out .= $before_title . $title . $after_title;
357
  }
358
 
359
- if (isset($instance['thumb_header']) && $instance['thumb_header']) {
360
- $tmp .= wpautop(do_shortcode($instance['thumb_header']));
361
- }
362
- $tmp .= '<p>';
363
-
364
- if ($instance['thumb_link_type'] == 'lightbox') {
365
- $alt = __('Click to open larger map', 'google-maps-widget');
366
- } else {
367
- $alt = esc_attr($instance['address']);
368
  }
 
369
 
370
  if ($instance['thumb_link_type'] == 'lightbox') {
371
- $tmp .= '<a class="gmw-thumbnail-map gmw-lightbox-enabled" href="#gmw-dialog-' . $widget_id . '" title="' . __('Click to open larger map', 'google-maps-widget') . '">';
 
 
 
 
 
 
372
  } elseif ($instance['thumb_link_type'] == 'custom') {
373
- $tmp .= '<a class="gmw-thumbnail-map" title="' . esc_attr($instance['address']) . '" href="' . $instance['thumb_link'] . '">';
374
- }
375
- $tmp .= '<img alt="' . $alt . '" title="' . $alt . '" src="//maps.googleapis.com/maps/api/staticmap?center=' .
376
- urlencode($instance['address']) . '&amp;zoom=' . $instance['thumb_zoom'] .
377
- '&amp;size=' . $instance['thumb_width'] . 'x' . $instance['thumb_height'] . '&amp;maptype=' . $instance['thumb_type'] .
378
- '&amp;scale=1&amp;';
379
- if ($instance['thumb_pin_type'] != 'custom') {
380
- $tmp .= 'markers=size:' . $instance['thumb_pin_size'] . '%7Ccolor:' . $instance['thumb_pin_color'];
381
- } else {
382
- $tmp .= 'markers=icon:' . urlencode($instance['thumb_pin_img']);
383
- }
384
- $tmp .= '%7Clabel:A%7C' . urlencode($instance['address']) . '&amp;language=' . $lang;
385
- if (!isset($instance['thumb_color_scheme']) || $instance['thumb_color_scheme'] == 'default') {
386
- $tmp .= '&amp;visual_refresh=false';
387
- } elseif ($instance['thumb_color_scheme'] == 'new') {
388
- $tmp .= '&amp;visual_refresh=true';
389
- } elseif (GMW::is_activated()) {
390
- $tmp .= '&amp;' . str_replace('&', '&amp;', $thumb_styles[$instance['thumb_color_scheme']]);
391
  }
392
- $tmp .= '">';
393
- if ($instance['thumb_link_type'] == 'lightbox' || $instance['thumb_link_type'] == 'custom') {
394
- $tmp .= '</a>';
 
 
 
 
 
 
 
 
 
395
  }
396
- $tmp .= '</p>';
397
- if (isset($instance['thumb_footer']) && $instance['thumb_footer']) {
 
 
398
  if ($instance['thumb_footer'] == 'Powered by Google Maps Widget') {
399
- $tmp .= '<span class="gmw-powered-by">Powered by <a title="Powered by free Google Maps Widget plugin for WordPress" href="http://www.googlemapswidget.com" target="_blank">Google Maps Widget</a></span>';
400
  } else {
401
- $tmp .= wpautop(do_shortcode($instance['thumb_footer']));
 
402
  }
403
  }
404
- $out .= apply_filters('google_maps_widget_content', $tmp);
405
 
406
- $out .= $after_widget;
 
407
 
408
  echo $out;
409
  } // widget
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
410
  } // class GoogleMapsWidget
1
  <?php
2
  /*
3
  * Google Maps Widget
4
+ * Widget definition, admin GUI and widget rendering functions
5
  * (c) Web factory Ltd, 2012 - 2016
6
  */
7
 
8
 
9
+ // this is an include only WP file
10
  if (!defined('ABSPATH')) {
11
+ die;
12
  }
13
 
14
 
15
  // main widget class, extends WP widget interface/class
16
  class GoogleMapsWidget extends WP_Widget {
17
  static $widgets = array();
18
+ static $defaults = array('title' => 'Map',
19
+ 'address' => 'New York, USA',
20
+ 'thumb_pin_color' => '#ff0000',
21
+ 'thumb_pin_type' => 'predefined',
22
+ 'thumb_pin_size' => 'default',
23
+ 'thumb_pin_label' => 'A',
24
+ 'thumb_pin_img' => '',
25
+ 'thumb_pin_img_library' => 'default/shootingrange.png',
26
+ 'thumb_width' => '250',
27
+ 'thumb_height' => '250',
28
+ 'thumb_type' => 'roadmap',
29
+ 'thumb_zoom' => '13',
30
+ 'thumb_header' => '',
31
+ 'thumb_footer' => 'Powered by Google Maps Widget',
32
+ 'thumb_color_scheme' => 'new',
33
+ 'thumb_link_type' => 'lightbox',
34
+ 'thumb_link' => '',
35
+ 'thumb_format' => 'png',
36
+ 'thumb_lang' => 'en',
37
+ 'lightbox_width' => '550',
38
+ 'lightbox_height' => '550',
39
+ 'lightbox_fullscreen' => '0',
40
+ 'lightbox_mode' => 'place',
41
+ 'lightbox_origin' => '',
42
+ 'lightbox_search' => '',
43
+ 'lightbox_unit' => 'auto',
44
+ 'lightbox_heading' => '0',
45
+ 'lightbox_pitch' => '0',
46
+ 'lightbox_map_type' => 'roadmap',
47
+ 'lightbox_zoom' => '14',
48
+ 'lightbox_feature' => array('overlay_close'),
49
+ 'lightbox_skin' => 'light',
50
+ 'lightbox_lang' => 'en',
51
+ 'lightbox_header' => '',
52
+ 'lightbox_footer' => '');
53
+
54
+
55
+ // constructor - define the widget
56
  function __construct() {
57
+ $title = __('Google Maps Widget', 'google-maps-widget');
58
+ if (GMW::is_activated()) {
59
+ $title .= ' <b>PRO</b>';
60
+ }
61
+
62
  $widget_ops = array('classname' => 'google-maps-widget', 'description' => __('Displays a map image thumbnail with a larger map available in a lightbox.', 'google-maps-widget'));
63
  $control_ops = array('width' => 450, 'height' => 350);
64
+ parent::__construct('GoogleMapsWidget', $title, $widget_ops, $control_ops);
65
+
66
+ self::$defaults['title'] = __('Map', 'google-maps-widget');
67
+ self::$defaults['address'] = __('New York, USA', 'google-maps-widget');
68
+
69
+ if (GMW::is_activated()) {
70
+ self::$defaults['thumb_footer'] = '';
71
+ }
72
+ } // GoogleMapsWidget
73
 
74
 
75
  // widget edit form HTML
76
  function form($instance) {
77
+ $options = GMW::get_options();
78
+ $instance = self::upgrade_wiget_instance($instance);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79
  extract($instance, EXTR_SKIP);
80
 
81
+ $thumb_map_types = array(array('val' => 'roadmap', 'label' => __('Road (default)', 'google-maps-widget')),
 
 
 
 
 
 
 
 
 
 
 
82
  array('val' => 'satellite', 'label' => __('Satellite', 'google-maps-widget')),
83
  array('val' => 'terrain', 'label' => __('Terrain', 'google-maps-widget')),
84
  array('val' => 'hybrid', 'label' => __('Hybrid', 'google-maps-widget')));
85
 
86
+ $lightbox_map_types = array(array('val' => 'roadmap', 'label' => __('Road (default)', 'google-maps-widget')),
87
+ array('val' => 'satellite', 'label' => __('Satellite', 'google-maps-widget')));
88
+
89
+ $lightbox_modes = array(array('val' => 'place', 'label' => __('Place (default)', 'google-maps-widget')));
90
+
91
+ $thumb_pin_sizes = array(array('val' => 'tiny', 'label' => __('Tiny', 'google-maps-widget')),
 
 
 
 
 
 
 
 
 
 
 
92
  array('val' => 'small', 'label' => __('Small', 'google-maps-widget')),
93
  array('val' => 'mid', 'label' => __('Medium', 'google-maps-widget')),
94
  array('val' => 'default', 'label' => __('Large (default)', 'google-maps-widget')));
95
 
96
+ $thumb_pin_colors = array(array('val' => '#000000', 'label' => __('Black', 'google-maps-widget')),
97
+ array('val' => '#a52a2a', 'label' => __('Brown', 'google-maps-widget')),
98
+ array('val' => '#00ff00', 'label' => __('Green', 'google-maps-widget')),
99
+ array('val' => '#800080', 'label' => __('Purple', 'google-maps-widget')),
100
+ array('val' => '#ffff00', 'label' => __('Yellow', 'google-maps-widget')),
101
+ array('val' => '#0000ff', 'label' => __('Blue', 'google-maps-widget')),
102
+ array('val' => '#808080', 'label' => __('Gray', 'google-maps-widget')),
103
+ array('val' => '#ffa500', 'label' => __('Orange', 'google-maps-widget')),
104
+ array('val' => '#ff0000', 'label' => __('Red (default)', 'google-maps-widget')),
105
+ array('val' => '#ffffff', 'label' => __('White', 'google-maps-widget')));
106
+
107
+ $pin_labels = array(array('val' => 'A', 'label' => __('A (default)', 'google-maps-widget')));
108
+
109
+ $zoom_levels_thumb = array(array('val' => '0', 'label' => __('0 - entire world', 'google-maps-widget')));
110
  for ($tmp = 1; $tmp <= 21; $tmp++) {
111
+ if ($tmp == 13) {
112
+ $zoom_levels_thumb[] = array('val' => $tmp, 'label' => $tmp . ' (default)');
113
+ } else {
114
+ $zoom_levels_thumb[] = array('val' => $tmp, 'label' => $tmp);
115
+ }
116
  }
117
+ $zoom_levels_lightbox = $zoom_levels_thumb;
118
+
119
+ $lightbox_sizes = array(array('val' => '0', 'label' => __('Custom size (default)', 'google-maps-widget')));
120
 
121
  $lightbox_skins = array(array('val' => 'light', 'label' => __('Light (default)', 'google-maps-widget')),
122
  array('val' => 'dark', 'label' => __('Dark', 'google-maps-widget')));
123
 
124
+ $thumb_pin_types = array(array('val' => 'predefined', 'label' => __('Predefined by Google (default)', 'google-maps-widget')),
125
+ array('val' => 'custom', 'label' => __('Custom image', 'google-maps-widget')));
 
 
 
126
 
127
+ $thumb_link_types = array(array('val' => 'lightbox', 'label' => __('Interactive map in lightbox (default)', 'google-maps-widget')),
 
 
 
128
  array('val' => 'custom', 'label' => __('Custom URL', 'google-maps-widget')),
129
  array('val' => 'nolink', 'label' => __('Disable link', 'google-maps-widget')));
130
 
131
+ $thumb_color_schemes = array(array('val' => 'default', 'label' => __('Default', 'google-maps-widget')),
132
+ array('val' => 'new', 'label' => __('Refreshed by Google', 'google-maps-widget')));
133
+
134
+ $thumb_formats = array(array('val' => 'png', 'label' => __('PNG 8-bit (default)', 'google-maps-widget')));
135
+
136
+ $thumb_langs = array(array('val' => 'en', 'label' => 'English'));
137
+
138
+ $lightbox_langs = array(array('val' => 'en', 'label' => 'English'));
139
+
140
+ $lightbox_features = array(array('val' => 'title', 'label' => __('Show map title', 'google-maps-widget')),
141
+ array('val' => 'overlay_close', 'label' => __('Close on overlay click', 'google-maps-widget')));
142
+
143
+ $lightbox_units = array(array('val' => 'auto', 'label' => __('Detect automatically', 'google-maps-widget')),
144
+ array('val' => 'metric', 'label' => __('Metric', 'google-maps-widget')),
145
+ array('val' => 'imperial', 'label' => __('Imperial', 'google-maps-widget')));
146
 
147
  if (GMW::is_activated()) {
148
  array_push($thumb_color_schemes, array('val' => 'apple', 'label' => __('Apple', 'google-maps-widget')),
149
+ array('val' => 'blue', 'label' => __('Blue', 'google-maps-widget')),
150
+ array('val' => 'bright', 'label' => __('Bright', 'google-maps-widget')),
151
+ array('val' => 'gowalla', 'label' => __('Gowalla', 'google-maps-widget')),
152
  array('val' => 'gray', 'label' => __('Gray', 'google-maps-widget')),
153
+ array('val' => 'gray2', 'label' => __('Gray #2', 'google-maps-widget')),
154
+ array('val' => 'light', 'label' => __('Light', 'google-maps-widget')),
155
+ array('val' => 'mapbox', 'label' => __('Mapbox', 'google-maps-widget')),
156
+ array('val' => 'midnight', 'label' => __('Midnight', 'google-maps-widget')),
157
+ array('val' => 'pale', 'label' => __('Pale', 'google-maps-widget')),
158
  array('val' => 'paper', 'label' => __('Paper', 'google-maps-widget')));
159
+
160
+ array_push($thumb_pin_types, array('val' => 'custom-library', 'label' => __('GMW pins library', 'google-maps-widget')));
161
+
162
+ array_push($thumb_formats, array('val' => 'png32', 'label' => __('PNG 32-bit', 'google-maps-widget')),
163
+ array('val' => 'gif', 'label' => __('GIF', 'google-maps-widget')),
164
+ array('val' => 'jpg', 'label' => __('JPEG', 'google-maps-widget')),
165
+ array('val' => 'jpg-baseline', 'label' => __('Non-progressive JPEG', 'google-maps-widget')));
166
+
167
+ $thumb_link_types = array(array('val' => 'lightbox', 'label' => __('Interactive map in lightbox (default)', 'google-maps-widget')),
168
+ array('val' => 'replace', 'label' => __('Replace thumb map with an interactive map', 'google-maps-widget')),
169
+ array('val' => 'map_blank', 'label' => __('Interactive map in a new window', 'google-maps-widget')),
170
+ array('val' => 'custom', 'label' => __('Custom URL', 'google-maps-widget')),
171
+ array('val' => 'custom_blank', 'label' => __('Custom URL in a new window', 'google-maps-widget')),
172
+ array('val' => 'nolink', 'label' => __('Disable link', 'google-maps-widget')));
173
+
174
+ array_push($thumb_langs, array('val' => 'auto', 'label' => __('Automatic (based on user\'s browser settings)', 'google-maps-widget')),
175
+ array('val' => 'ar', 'label' => __('Arabic', 'google-maps-widget')),
176
+ array('val' => 'eu', 'label' => __('Basque', 'google-maps-widget')),
177
+ array('val' => 'bn', 'label' => __('Bengali', 'google-maps-widget')),
178
+ array('val' => 'bg', 'label' => __('Bulgarian', 'google-maps-widget')),
179
+ array('val' => 'ca', 'label' => __('Catalan', 'google-maps-widget')),
180
+ array('val' => 'zh-CN', 'label' => __('Chinese (Simplified)', 'google-maps-widget')),
181
+ array('val' => 'zh-TW', 'label' => __('Chinese (Traditional)', 'google-maps-widget')),
182
+ array('val' => 'hr', 'label' => __('Croatian', 'google-maps-widget')),
183
+ array('val' => 'cs', 'label' => __('Czech', 'google-maps-widget')),
184
+ array('val' => 'da', 'label' => __('Danish', 'google-maps-widget')),
185
+ array('val' => 'nl', 'label' => __('Dutch', 'google-maps-widget')),
186
+ array('val' => 'en-AU', 'label' => __('English (Australian)', 'google-maps-widget')),
187
+ array('val' => 'en-GB', 'label' => __('English (Great Britain)', 'google-maps-widget')),
188
+ array('val' => 'fa', 'label' => __('Farsi', 'google-maps-widget')),
189
+ array('val' => 'fil', 'label' => __('Filipino', 'google-maps-widget')),
190
+ array('val' => 'fi', 'label' => __('Finnish', 'google-maps-widget')),
191
+ array('val' => 'fr', 'label' => __('French', 'google-maps-widget')),
192
+ array('val' => 'gl', 'label' => __('Galician', 'google-maps-widget')),
193
+ array('val' => 'de', 'label' => __('German', 'google-maps-widget')),
194
+ array('val' => 'el', 'label' => __('Greek', 'google-maps-widget')),
195
+ array('val' => 'gu', 'label' => __('Gujarati', 'google-maps-widget')),
196
+ array('val' => 'iw', 'label' => __('Hebrew', 'google-maps-widget')),
197
+ array('val' => 'hi', 'label' => __('Hindi', 'google-maps-widget')),
198
+ array('val' => 'hu', 'label' => __('Hungarian', 'google-maps-widget')),
199
+ array('val' => 'id', 'label' => __('Indonesian', 'google-maps-widget')),
200
+ array('val' => 'it', 'label' => __('Italian', 'google-maps-widget')),
201
+ array('val' => 'ja', 'label' => __('Japanese', 'google-maps-widget')),
202
+ array('val' => 'kn', 'label' => __('Kannada', 'google-maps-widget')),
203
+ array('val' => 'ko', 'label' => __('Korean', 'google-maps-widget')),
204
+ array('val' => 'lv', 'label' => __('Latvian', 'google-maps-widget')),
205
+ array('val' => 'lt', 'label' => __('Lithuanian', 'google-maps-widget')),
206
+ array('val' => 'ml', 'label' => __('Malayalam', 'google-maps-widget')),
207
+ array('val' => 'mr', 'label' => __('Marathi', 'google-maps-widget')),
208
+ array('val' => 'no', 'label' => __('Norwegian', 'google-maps-widget')),
209
+ array('val' => 'pl', 'label' => __('Polish', 'google-maps-widget')),
210
+ array('val' => 'pt', 'label' => __('Portuguese', 'google-maps-widget')),
211
+ array('val' => 'pt-BR', 'label' => __('Portuguese (Brazil)', 'google-maps-widget')),
212
+ array('val' => 'pt-PT', 'label' => __('Portuguese (Portugal)', 'google-maps-widget')),
213
+ array('val' => 'ro', 'label' => __('Romanian', 'google-maps-widget')),
214
+ array('val' => 'ru', 'label' => __('Russian', 'google-maps-widget')),
215
+ array('val' => 'sr', 'label' => __('Serbian', 'google-maps-widget')),
216
+ array('val' => 'sk', 'label' => __('Slovak', 'google-maps-widget')),
217
+ array('val' => 'sl', 'label' => __('Slovenian', 'google-maps-widget')),
218
+ array('val' => 'es', 'label' => __('Spanish', 'google-maps-widget')),
219
+ array('val' => 'sv', 'label' => __('Swedish', 'google-maps-widget')),
220
+ array('val' => 'tl', 'label' => __('Tagalog', 'google-maps-widget')),
221
+ array('val' => 'ta', 'label' => __('Tamil', 'google-maps-widget')),
222
+ array('val' => 'te', 'label' => __('Telugu', 'google-maps-widget')),
223
+ array('val' => 'th', 'label' => __('Thai', 'google-maps-widget')),
224
+ array('val' => 'tr', 'label' => __('Turkish', 'google-maps-widget')),
225
+ array('val' => 'uk', 'label' => __('Ukrainian', 'google-maps-widget')),
226
+ array('val' => 'vi', 'label' => __('Vietnamese', 'google-maps-widget')));
227
+ $lightbox_langs = $thumb_langs;
228
+
229
+ array_push($lightbox_skins, array('val' => 'darkrimmed', 'label' => __('Dark rim', 'google-maps-widget')),
230
+ array('val' => 'fancyoverlay', 'label' => __('Fancy', 'google-maps-widget')),
231
+ array('val' => 'gray-square', 'label' => __('Gray squared', 'google-maps-widget')),
232
+ array('val' => 'minimal', 'label' => __('Minimalistic', 'google-maps-widget')),
233
+ array('val' => 'minimal-circles', 'label' => __('Minimalistic #2', 'google-maps-widget')),
234
+ array('val' => 'noimage', 'label' => __('Simple', 'google-maps-widget')),
235
+ array('val' => 'noimage-blue', 'label' => __('Blue', 'google-maps-widget')),
236
+ array('val' => 'noimage-polaroid', 'label' => __('Polaroid', 'google-maps-widget')),
237
+ array('val' => 'noimage-rounded', 'label' => __('Rounded', 'google-maps-widget')),
238
+ array('val' => 'tablet', 'label' => __('Tablet', 'google-maps-widget')),
239
+ array('val' => 'gears', 'label' => __('Gears', 'google-maps-widget')),
240
+ array('val' => 'painting', 'label' => __('Painting', 'google-maps-widget')),
241
+ array('val' => 'rounded-white', 'label' => __('Rounded white', 'google-maps-widget')),
242
+ array('val' => 'shadow', 'label' => __('Shadow', 'google-maps-widget')),
243
+ array('val' => 'sketchtoon', 'label' => __('Cartoonish', 'google-maps-widget')),
244
+ array('val' => 'square-black', 'label' => __('Squared black', 'google-maps-widget')),
245
+ array('val' => 'square-white', 'label' => __('Squared white', 'google-maps-widget')),
246
+ array('val' => 'vintage', 'label' => __('Vintage', 'google-maps-widget')),
247
+ array('val' => 'wood', 'label' => __('Wood', 'google-maps-widget')));
248
+
249
+ array_push($lightbox_modes, array('val' => 'directions', 'label' => __('Directions', 'google-maps-widget')),
250
+ array('val' => 'search', 'label' => __('Search', 'google-maps-widget')),
251
+ array('val' => 'view', 'label' => __('View (clean map, no markers)', 'google-maps-widget')),
252
+ array('val' => 'streetview', 'label' => __('Street View', 'google-maps-widget')));
253
+
254
+ $pin_labels = array(array('val' => 'x', 'label' => __('Dot', 'google-maps-widget')));
255
+ for ($tmp = 'A'; $tmp <= 'Z'; $tmp = chr(ord($tmp)+1)) {
256
+ $pin_labels[] = array('val' => $tmp, 'label' => $tmp);
257
+ }
258
+ for ($tmp = 1; $tmp <= 9; $tmp++) {
259
+ $pin_labels[] = array('val' => $tmp, 'label' => $tmp);
260
+ }
261
+
262
+ array_push($lightbox_sizes, array('val' => '1', 'label' => __('Fullscreen', 'google-maps-widget')));
263
+
264
+ array_push($lightbox_features, array('val' => 'esc_close', 'label' => __('Close on Esc key', 'google-maps-widget')),
265
+ array('val' => 'close_button', 'label' => __('Show close button', 'google-maps-widget')));
266
+ } else {
267
+ array_push($thumb_color_schemes, array('val' => '-1', 'label' => __('Add 11 additional color schemes', 'google-maps-widget')));
268
+
269
+ array_push($thumb_pin_types, array('val' => '-1', 'label' => __('GMW pins library (700+ pins)', 'google-maps-widget')));
270
+
271
+ array_push($thumb_formats, array('val' => '-1', 'label' => __('Add 4 more image formats', 'google-maps-widget')));
272
+
273
+ array_push($thumb_langs, array('val' => '-1', 'label' => __('Add auto-detection and 50 more languages', 'google-maps-widget')));
274
+ $lightbox_langs = $thumb_langs;
275
+
276
+ $thumb_link_types = array(array('val' => 'lightbox', 'label' => __('Interactive map in lightbox (default)', 'google-maps-widget')),
277
+ array('val' => '-1', 'label' => __('Replace thumb map with an interactive map', 'google-maps-widget')),
278
+ array('val' => '-1', 'label' => __('Interactive map in a new window', 'google-maps-widget')),
279
+ array('val' => 'custom', 'label' => __('Custom URL', 'google-maps-widget')),
280
+ array('val' => '-1', 'label' => __('Custom URL in a new window', 'google-maps-widget')),
281
+ array('val' => 'nolink', 'label' => __('Disable link', 'google-maps-widget')));
282
+
283
+ array_push($lightbox_skins, array('val' => '-1', 'label' => __('Add 17 more skins', 'google-maps-widget')));
284
+
285
+ array_push($lightbox_modes, array('val' => '-1', 'label' => __('Directions', 'google-maps-widget')),
286
+ array('val' => '-1', 'label' => __('Search', 'google-maps-widget')),
287
+ array('val' => '-1', 'label' => __('View (clean map, no markers)', 'google-maps-widget')),
288
+ array('val' => '-1', 'label' => __('Street View', 'google-maps-widget')));
289
+
290
+ array_push($pin_labels, array('val' => '-1', 'label' => __('Choose a custom label by going PRO', 'google-maps-widget')));
291
+
292
+ array_push($lightbox_sizes, array('val' => '-1', 'label' => __('Fullscreen', 'google-maps-widget')));
293
+
294
+ array_push($lightbox_features, array('val' => '-1', 'disabled' => true, 'label' => __('Show close button', 'google-maps-widget') . ' (upgrade to PRO)'),
295
+ array('val' => '-1', 'disabled' => true, 'label' => __('Close on Esc key', 'google-maps-widget') . ' (upgrade to PRO)'));
296
+
297
+ array_push($thumb_pin_colors, array('val' => '-1', 'label' => __('PRO offers unlimited color choices', 'google-maps-widget')));
298
+ } // not activated
299
+
300
+ // warn if API key is not set
301
+ if (!GMW::get_api_key()) {
302
+ echo '<p class="gmw-api-key-error"><b>Important!</b> ';
303
+ echo 'Go to <a href="' . admin_url('options-general.php?page=gmw_options') . '" title="Google Maps Widget options">options</a> and follow instructions on how to obtain your <b>free maps API key</b>. Without a key the maps will stop working.</p>';
304
  }
305
 
306
+ // widget options markup
307
+ // title & address
308
+ echo '<p><label for="' . $this->get_field_id('title') . '">' . __('Title', 'google-maps-widget') . ':</label>';
309
+ echo '<input data-tooltip="Widget title styled as defined in the active theme. HTML tags and shortcodes are not supported. Title is optional." class="widefat" id="' . $this->get_field_id('title') . '" name="' . $this->get_field_name('title') . '" placeholder="' . __('Map title', 'google-maps-widget') . '" type="text" value="' . esc_attr($title) . '">';
310
+ echo '</p>';
311
+ echo '<label for="' . $this->get_field_id('address') . '">' . __('Address', 'google-maps-widget') . ':</label>';
312
+ echo '<div class="input-address-group">';
313
+ echo '<input name="' . $this->get_field_name('address') . '" type="text" value="' . esc_attr($address) . '" required="required" class="widefat" id="' . $this->get_field_id('address') . '" placeholder="' . __('Address / location to show', 'google-maps-widget') . '" data-tooltip="' . htmlspecialchars('Address or location shown on both maps. Coordinates can be used as well, but please write them in a numerical fashion, not in degrees, ie: 40.70823, -74.01052
314
+ If interactive map mode is set to directions this address is used as the destination address. If the mode is set to search the address will be used as the map and search center.') . '">';
315
+ if (GMW::is_activated()) {
316
+ echo '<a data-target="address" href="#" class="button-secondary gmw-pick-address"><span class="dashicons dashicons-location"></span></a>';
317
+ } else {
318
+ echo '<a data-target="address" href="#" class="button-secondary gmw-pick-address gmw-pick-address-non-pro"><span class="dashicons dashicons-location"></span></a>';
319
+ }
320
+ echo '</div>';
321
+ // end - title & address
322
+
323
+ echo '<div class="gmw-tabs" id="tab-' . $this->id . '"><ul>';
324
+ echo '<li><a href="#gmw-thumb">' . __('Thumbnail Map', 'google-maps-widget') . '</a></li>';
325
+ echo '<li><a href="#gmw-lightbox">' . __('Interactive Map', 'google-maps-widget') . '</a></li>';
326
+ echo '<li><a href="#gmw-shortcode">' . __('Shortcode', 'google-maps-widget') . '</a></li>';
327
+ echo '<li><a href="#gmw-info">' . __('Info &amp; Support', 'google-maps-widget') . '</a></li>';
328
+ echo '</ul>';
329
+
330
+ // thumb tab
331
  echo '<div id="gmw-thumb">';
 
332
  echo '<p><label class="gmw-label" for="' . $this->get_field_id('thumb_width') . '">' . __('Map Size', 'google-maps-widget') . ':</label>';
333
+ echo '<input data-title="Map Width" data-tooltip="Map width in pixels; from 50 to 640. The size limit is imposed by Google. Image may be resized by the theme if the sidebar is narrower." min="50" max="640" step="1" class="small-text" id="' . $this->get_field_id('thumb_width') . '" name="' . $this->get_field_name('thumb_width') . '" type="number" value="' . esc_attr($thumb_width) . '" required="required"> x ';
334
+ echo '<input data-title="Map Height" data-tooltip="Map height in pixels; from 50 to 640. The size limit is imposed by Google." min="50" max="640" step="1" class="small-text" id="' . $this->get_field_id('thumb_height') . '" name="' . $this->get_field_name('thumb_height') . '" type="number" value="' . esc_attr($thumb_height) . '" required="required">';
335
  echo ' px</p>';
336
 
337
  echo '<p><label class="gmw-label" for="' . $this->get_field_id('thumb_type') . '">' . __('Map Type', 'google-maps-widget') . ':</label>';
338
+ echo '<select data-tooltip="Controls the map layers shown. Roadmap is the most popular, hybrid combines road and satellite while terrain shows physical relief map image, displaying terrain and vegetation." id="' . $this->get_field_id('thumb_type') . '" name="' . $this->get_field_name('thumb_type') . '">';
339
+ GMW::create_select_options($thumb_map_types, $thumb_type);
340
+ echo '</select></p>';
341
+
342
+ echo '<p><label class="gmw-label" for="' . $this->get_field_id('thumb_color_scheme') . '">' . __('Color Scheme', 'google-maps-widget') . ':</label>';
343
+ echo '<select data-tooltip="Changes the overall appearance of the map. Please note that most visitors are acustomed to the Refreshed color scheme." class="gmw_thumb_color_scheme" id="' . $this->get_field_id('thumb_color_scheme') . '" name="' . $this->get_field_name('thumb_color_scheme') . '">';
344
+ GMW::create_select_options($thumb_color_schemes, $thumb_color_scheme);
345
  echo '</select></p>';
346
 
347
+ echo '<p><label class="gmw-label" for="' . $this->get_field_id('thumb_zoom') . '">' . __('Zoom Level', 'google-maps-widget') . ':</label>';
348
+ echo '<select data-tooltip="Zoom varies from the lowest level, in which the entire world can be seen, to highest, which shows streets and individual buildings. Building outlines, where available, appear on the map around zoom level 17. This value differs from area to area." class="gmw_thumb_zoom" id="' . $this->get_field_id('thumb_zoom') . '" name="' . $this->get_field_name('thumb_zoom') . '">';
349
+ GMW::create_select_options($zoom_levels_thumb, $thumb_zoom);
350
+ echo '</select></p>';
351
+
352
  echo '<p><label class="gmw-label" for="' . $this->get_field_id('thumb_pin_type') . '">' . __('Pin Type', 'google-maps-widget') . ':</label>';
353
+ echo '<select data-tooltip="Predefined pin can be adjusted in terms of color, size and one letter label.
354
+ Custom pin can be any custom image stored on a publically available server.
355
+ If you are using a pin from the library please note that it will *not work* if your site is on a localhost or a secure only (https) server." class="gmw_thumb_pin_type" id="' . $this->get_field_id('thumb_pin_type') . '" name="' . $this->get_field_name('thumb_pin_type') . '">';
356
  GMW::create_select_options($thumb_pin_types, $thumb_pin_type);
357
  echo '</select></p>';
358
+
359
+ echo '<p class="gmw_thumb_pin_type_custom_library"><label class="gmw-label" for="">' . __('Pin Image', 'google-maps-widget') . ':</label>';
360
+ echo '<input class="thumb_pin_img_library" type="hidden" id="' . $this->get_field_id('thumb_pin_img_library') . '" name="' . $this->get_field_name('thumb_pin_img_library') . '" value="' . esc_attr($thumb_pin_img_library) . '">';
361
+ echo '<img class="thumb_pin_img_library_preview" src="' . plugins_url('/images/pins/' . $thumb_pin_img_library, __FILE__) . '"> <a class="button button-secondary open_pins_library" href="#">Open pins library</a>';
362
+ echo '</p>';
363
 
364
+ if (GMW::is_activated()) {
365
+ echo '<p class="gmw_thumb_pin_type_predefined colorpicker_section"><label class="gmw-label" for="' . $this->get_field_id('thumb_pin_color') . '">' . __('Pin Color', 'google-maps-widget') . ':</label>';
366
+ echo '<input data-tooltip="Use the colorpicker to choose a custom color for the pin." class="gmw-colorpicker" data-specialtype="colorpicker" id="' . $this->get_field_id('thumb_pin_color') . '" name="' . $this->get_field_name('thumb_pin_color') . '" type="text" value="' . esc_attr($thumb_pin_color) . '">';
367
+ } else {
368
+ echo '<p class="gmw_thumb_pin_type_predefined"><label class="gmw-label" for="' . $this->get_field_id('thumb_pin_color') . '">' . __('Pin Color', 'google-maps-widget') . ':</label>';
369
+ echo '<select data-tooltip="Choose one of the predefined pin colors, or upgrade to <b class=\'gmw-pro-red\'>PRO</b> to have an unlimited choice of colors." id="' . $this->get_field_id('thumb_pin_color') . '" name="' . $this->get_field_name('thumb_pin_color') . '">';
370
+ GMW::create_select_options($thumb_pin_colors, $thumb_pin_color);
371
+ echo '</select>';
372
+ }
373
+ echo '</p>';
374
 
375
+ echo '<p class="gmw_thumb_pin_type_predefined"><label class="gmw-label" for="' . $this->get_field_id('thumb_pin_size') . '">' . __('Pin Size', 'google-maps-widget') . ':</label>';
376
+ echo '<select data-tooltip="Location pin size. All sizes besides the large one are quite small." id="' . $this->get_field_id('thumb_pin_size') . '" name="' . $this->get_field_name('thumb_pin_size') . '">';
377
+ GMW::create_select_options($thumb_pin_sizes, $thumb_pin_size);
378
  echo '</select></p>';
379
 
380
+ echo '<p class="gmw_thumb_pin_type_predefined"><label class="gmw-label" for="' . $this->get_field_id('thumb_pin_label') . '">' . __('Pin Label', 'google-maps-widget') . ':</label>';
381
+ echo '<select data-tooltip="Due to the pin\'s size only single-letter labels are available." id="' . $this->get_field_id('thumb_pin_label') . '" name="' . $this->get_field_name('thumb_pin_label') . '">';
382
+ GMW::create_select_options($pin_labels, $thumb_pin_label);
 
 
 
383
  echo '</select></p>';
384
 
385
+ echo '<p class="gmw_thumb_pin_type_custom"><label class="gmw-label" for="' . $this->get_field_id('thumb_pin_img') . '">' . __('Pin Image URL', 'google-maps-widget') . ':</label>';
386
+ echo '<input data-tooltip="Enter the full URL to the image, starting with http://. Image has to be publicly accessible and with size up to 64x64px. Https and localhost are *not* supported." placeholder="http://" type="text" class="regular-text" id="' . $this->get_field_id('thumb_pin_img') . '" name="' . $this->get_field_name('thumb_pin_img') . '" value="' . esc_attr($thumb_pin_img) . '" required="required">';
387
+ echo '</p>';
388
+
389
  echo '<p><label class="gmw-label" for="' . $this->get_field_id('thumb_link_type') . '">' . __('Link To', 'google-maps-widget') . ':</label>';
390
+ echo '<select data-tooltip="Choose what happens when the map is clicked. Clicks are tracked in Google Analytics if that option is set in settings. Please configure interactive map\'s settings in its tab." class="gmw_thumb_link_type" id="' . $this->get_field_id('thumb_link_type') . '" name="' . $this->get_field_name('thumb_link_type') . '">';
391
  GMW::create_select_options($thumb_link_types, $thumb_link_type);
392
  echo '</select></p>';
393
 
394
  echo '<p class="gmw_thumb_link_section"><label class="gmw-label" for="' . $this->get_field_id('thumb_link') . '">' . __('Custom URL', 'google-maps-widget') . ':</label>';
395
+ echo '<input data-tooltip="Make sure the URL starts with http:// if it leads to a different site." placeholder="http://" class="regular-text" id="' . $this->get_field_id('thumb_link') . '" name="' . $this->get_field_name('thumb_link') . '" type="url" value="' . esc_attr($thumb_link) . '" required="required">';
396
+ echo '</p>';
397
 
398
+ echo '<p><label class="gmw-label" for="' . $this->get_field_id('thumb_format') . '">' . __('Image Format', 'google-maps-widget') . ':</label>';
399
+ echo '<select data-tooltip="Jpg and jpg-baseline typically provide the smallest image size, though they do so through _lossy_ compression which may degrade the image. Gif, png8 and png32 provide lossless compression." id="' . $this->get_field_id('thumb_format') . '" name="' . $this->get_field_name('thumb_format') . '">';
400
+ GMW::create_select_options($thumb_formats, $thumb_format);
 
 
 
401
  echo '</select></p>';
402
 
403
+ echo '<p><label class="gmw-label" for="' . $this->get_field_id('thumb_lang') . '">' . __('Map Language', 'google-maps-widget') . ':</label>';
404
+ echo '<select data-tooltip="Not all map labels and texts have translations. Everything is controlled by Google at their discretion. If you choose the auto-detect mode language will be detected from the users browser settings." id="' . $this->get_field_id('thumb_lang') . '" name="' . $this->get_field_name('thumb_lang') . '">';
405
+ GMW::create_select_options($thumb_langs, $thumb_lang);
406
+ echo '</select></p>';
407
 
408
+ echo '<p><label for="' . $this->get_field_id('thumb_header') . '">' . __('Text Above Map', 'google-maps-widget') . ':</label>';
409
+ echo '<textarea data-tooltip="Text that appears above the map. HTML tags and shortcodes are fully supported.
410
+ If you choose to have the thumb replaced by an interactive map this text will be replaced by the interactive header text.
411
+ Use the _{address}_ variable to display the map\'s address." class="widefat" rows="1" cols="20" id="' . $this->get_field_id('thumb_header') . '" name="' . $this->get_field_name('thumb_header') . '">'. esc_textarea($thumb_header) . '</textarea></p>';
412
  echo '<p><label for="' . $this->get_field_id('thumb_footer') . '">' . __('Text Below Map', 'google-maps-widget') . ':</label>';
413
+ echo '<textarea data-tooltip="Text that appears below the map. HTML tags and shortcodes are fully supported.
414
+ If you choose to have the thumb replaced by an interactive map this text will be replaced by the interactive header text.
415
+ Use the _{address}_ variable to display the map\'s address." class="widefat" rows="1" cols="20" id="' . $this->get_field_id('thumb_footer') . '" name="' . $this->get_field_name('thumb_footer') . '">'. esc_textarea($thumb_footer) . '</textarea></p>';
416
+ echo '</div>';
417
+ // end - thumbnail tab
418
 
419
+ // lightbox tab
420
  echo '<div id="gmw-lightbox">';
421
+ echo '<p><label class="gmw-label" for="' . $this->get_field_id('lightbox_fullscreen') . '">' . __('Lightbox Size', 'google-maps-widget') . ':</label>';
422
+ echo '<select data-tooltip="Choose from a custom size or a fullscreen, border-to-border option for the lightbox map." class="gmw_lightbox_fullscreen" id="' . $this->get_field_id('lightbox_fullscreen') . '" name="' . $this->get_field_name('lightbox_fullscreen') . '">';
423
+ GMW::create_select_options($lightbox_sizes, $lightbox_fullscreen);
424
+ echo '</select>';
425
+ echo '<span class="gmw_lightbox_fullscreen_custom_section"><label class="gmw-label" for="">&nbsp;</label>';
426
+ echo '<input data-title="Map Width" data-tooltip="Interactive map width in pixels; from 50 to 2000. If needed, map will be resized to accomodate for smaller screens." class="small-text fullscreen_fix" min="50" max="2000" step="1" id="' . $this->get_field_id('lightbox_width') . '" type="number" name="' . $this->get_field_name('lightbox_width') . '" type="text" value="' . esc_attr($lightbox_width) . '" required="required"> x ';
427
+ echo '<input data-title="Map Height" data-tooltip="Interactive map height in pixels; from 50 to 2000. If needed, map will be resized to accomodate for smaller screens." class="small-text" id="' . $this->get_field_id('lightbox_height') . '" name="' . $this->get_field_name('lightbox_height') . '" type="number" step="1" min="50" max="2000" type="text" value="' . esc_attr($lightbox_height) . '" required="required"> px</span></p>';
428
+
429
+ echo '<p><label class="gmw-label" for="' . $this->get_field_id('lightbox_mode') . '">' . __('Map Mode', 'google-maps-widget') . ':</label>';
430
+ echo '<select data-tooltip="Place mode displays a map pin at a defined place or address.
431
+ Directions mode displays the path between a start address defined below, and destination defined in the map\'s address.
432
+ Search mode displays results for a search across the area around the map\'s address.
433
+ View mode returns a map with no markers or directions; it produces a very clean map.
434
+ Street View provides panoramic views on the designated location. Please note that it\'s not available on all locations." class="gmw_lightbox_mode" id="' . $this->get_field_id('lightbox_mode') . '" name="' . $this->get_field_name('lightbox_mode') . '">';
435
+ GMW::create_select_options($lightbox_modes, $lightbox_mode);
436
+ echo '</select></p>';
437
+
438
+ echo '<p class="gmw_lightbox_mode_search"><label class="gmw-label" for="' . $this->get_field_id('lightbox_search') . '">' . __('Search Query', 'google-maps-widget') . ':</label>';
439
+ echo '<input data-tooltip="The search term, ie: pizza. It can include a geographic restriction, such as \'In New York\' but it is not required as the search will be performed around the main map address as the location." required="required" placeholder="' . __('Pizza', 'google-maps-widget') . '" type="text" id="' . $this->get_field_id('lightbox_search') . '" name="' . $this->get_field_name('lightbox_search') . '" type="text" value="' . esc_attr($lightbox_search) . '">';
440
+ echo '</p>';
441
 
442
+ echo '<p class="gmw_lightbox_mode_directions">';
443
+ echo '<label class="gmw-label" for="' . $this->get_field_id('lightbox_origin') . '">' . __('Start Address', 'google-maps-widget') . ':</label>';
444
+ echo '<span class="input-address-group">';
445
+ echo '<input data-tooltip="Start address for directions. Destination is defined in the map\'s address." type="text" id="' . $this->get_field_id('lightbox_origin') . '" name="' . $this->get_field_name('lightbox_origin') . '" type="text" value="' . esc_attr($lightbox_origin) . '">';
446
+ echo '<a href="#" data-target="lightbox_origin" class="button-secondary gmw-pick-address"><span class="dashicons dashicons-location"></span></a>';
447
+ echo '</span>';
448
+ echo '</p>';
449
+
450
+ echo '<p class="gmw_lightbox_mode_directions"><label class="gmw-label" for="' . $this->get_field_id('lightbox_unit') . '">' . __('Distance Units', 'google-maps-widget') . ':</label>';
451
+ echo '<select data-tooltip="Units in which the distance is measured." id="' . $this->get_field_id('lightbox_unit') . '" name="' . $this->get_field_name('lightbox_unit') . '">';
452
+ GMW::create_select_options($lightbox_units, $lightbox_unit);
453
+ echo '</select></p>';
454
+
455
+ echo '<p class="gmw_lightbox_mode_streetview"><label class="gmw-label" for="' . $this->get_field_id('lightbox_heading') . '">' . __('Streetview', 'google-maps-widget') . ':</label>';
456
+ echo 'Heading: <input data-title="Streetview Camera Heading" data-tooltip="Indicates the compass heading of the camera in degrees clockwise from North. Accepted values are from -180° to 360°." class="small-text" min="-180" max="360" step="1" id="' . $this->get_field_id('lightbox_heading') . '" type="number" name="' . $this->get_field_name('lightbox_heading') . '" type="text" value="' . esc_attr($lightbox_heading) . '" required="required"> ';
457
+ echo 'Pitch: <input data-title="Streetview Camera Pitch" data-tooltip="Specifies the angle, up or down, of the camera. The pitch is specified in degrees from -90° to 90°. Positive values will angle the camera up, while negative values will angle the camera down." class="small-text" id="' . $this->get_field_id('lightbox_pitch') . '" name="' . $this->get_field_name('lightbox_pitch') . '" type="number" step="1" min="-90" max="90" type="text" value="' . esc_attr($lightbox_pitch) . '" required="required"> degrees';
458
+ echo '</p>';
459
 
460
  echo '<p><label class="gmw-label" for="' . $this->get_field_id('lightbox_type') . '">' . __('Map Type', 'google-maps-widget') . ':</label>';
461
+ echo '<select data-tooltip="Controls the map layers shown." id="' . $this->get_field_id('lightbox_type') . '" name="' . $this->get_field_name('lightbox_type') . '">';
462
+ GMW::create_select_options($lightbox_map_types, $lightbox_map_type);
463
  echo '</select></p>';
464
 
465
  echo '<p><label class="gmw-label" for="' . $this->get_field_id('lightbox_zoom') . '">' . __('Zoom Level', 'google-maps-widget') . ':</label>';
466
+ echo '<select data-tooltip="Zoom varies from the lowest level, in which the entire world can be seen, to highest, which shows streets and individual buildings. Building outlines, where available, appear on the map around zoom level 17. This value differs from area to area." id="' . $this->get_field_id('lightbox_zoom') . '" name="' . $this->get_field_name('lightbox_zoom') . '">';
467
+ GMW::create_select_options($zoom_levels_lightbox, $lightbox_zoom);
468
  echo '</select></p>';
469
 
470
  echo '<p><label class="gmw-label" for="' . $this->get_field_id('lightbox_skin') . '">' . __('Lightbox Skin', 'google-maps-widget') . ':</label>';
471
+ echo '<select data-tooltip="Controls the overall appearance of the lightbox, not the map itself. Adjust according to your site\'s design." class="gmw_lightbox_skin" id="' . $this->get_field_id('lightbox_skin') . '" name="' . $this->get_field_name('lightbox_skin') . '">';
472
  GMW::create_select_options($lightbox_skins, $lightbox_skin);
 
 
 
473
  echo '</select></p>';
474
 
475
+ echo '<p><label class="gmw-label" for="' . $this->get_field_id('lightbox_feature') . '">' . __('Lightbox Features', 'google-maps-widget') . ':</label>';
476
+ echo '<select data-tooltip="Title is taken from the widget title field. Not all skins have a title, and the ones that do have it in different places, so please test your maps.
477
+ Other 3 options control the way users close the lightbox. Enable at least one of them." class="gmw-select2" data-placeholder="' . __('Click to choose features', 'google-maps-widget') . '" multiple="multiple" id="' . $this->get_field_id('lightbox_feature') . '" name="' . $this->get_field_name('lightbox_feature') . '[]">';
478
+ GMW::create_select_options($lightbox_features, $lightbox_feature);
479
  echo '</select></p>';
480
 
481
+ echo '<p><label class="gmw-label" for="' . $this->get_field_id('lightbox_lang') . '">' . __('Map Language', 'google-maps-widget') . ':</label>';
482
+ echo '<select data-tooltip="Not all map labels and texts have translations. Everything is controlled by Google at their discretion. If you choose the auto-detect mode language will be detected from the users browser settings." id="' . $this->get_field_id('lightbox_lang') . '" name="' . $this->get_field_name('lightbox_lang') . '">';
483
+ GMW::create_select_options($lightbox_langs, $lightbox_lang);
484
  echo '</select></p>';
485
 
486
  echo '<p><label for="' . $this->get_field_id('lightbox_header') . '">' . __('Header Text', 'google-maps-widget') . ':</label>';
487
+ echo '<textarea data-tooltip="Text that appears above the interactive map. HTML tags and shortcodes are fully supported.
488
+ Use the _{address}_ variable to display the map\'s address." class="widefat" rows="1" cols="20" id="' . $this->get_field_id('lightbox_header') . '" name="' . $this->get_field_name('lightbox_header') . '">'. esc_textarea($lightbox_header) . '</textarea></p>';
489
 
490
  echo '<p><label for="' . $this->get_field_id('lightbox_footer') . '">' . __('Footer Text', 'google-maps-widget') . ':</label>';
491
+ echo '<textarea data-tooltip="Text that appears below the interactive map. HTML tags and shortcodes are fully supported.
492
+ Use the _{address}_ variable to display the map\'s address." class="widefat" rows="1" cols="20" id="' . $this->get_field_id('lightbox_footer') . '" name="' . $this->get_field_name('lightbox_footer') . '">'. esc_textarea($lightbox_footer) . '</textarea></p>';
493
 
494
+ echo '</div>';
495
+ // end - lightbox tab
496
 
497
  // shortcode tab
498
  echo '<div id="gmw-shortcode">';
499
  if (GMW::is_activated()) {
500
  $id = str_replace('googlemapswidget-', '', $this->id);
501
 
502
+ if (empty($id) || !is_numeric($id)) {
503
  echo '<p>' . __('Please save the widget so that the shortcode can be generated.', 'google-maps-widget') . '</p>';
504
  } else {
505
+ echo '<p><code>[' . $options['sc_map'] . ' thumb_width="' . $thumb_width . '" thumb_height="' . $thumb_width . '" id="' . $id . '"]</code><br></p>';
506
+ echo '<p>' . __('Use the above shortcode to display this Google Maps Widget instance in any page or post. <br>Please note that your theme might style the widget in the post as if it is placed in a sidebar. In that case use the <code>div.gmw-shortcode-widget</code> class to target the shortcode and make necessary changes via CSS.', 'google-maps-widget') . '</p>';
507
  }
508
  } else {
509
+ echo '<p>Shortcode support is a <span class="gmw-pro-red">PRO</span> feature. Activating it will imediatelly get you more than 50 extra options.<br><br><a class="button open_promo_dialog" href="#">Activate PRO features</a></p>';
510
  }
511
+ echo '</div>';
512
+ // end - shortcode tab
513
 
514
+ // info tab
515
  echo '<div id="gmw-info">';
516
+ if (GMW::is_activated()) {
517
+ echo '<h4>' . __('Support', 'google-maps-widget') . '</h4>';
518
+ echo '<p>If you have any problems, questions or would like a new feature added, please contact our support <a href="mailto:gmw@webfactoryltd.com?subject=GMW%20support">via email</a>. As a paying customer you have access to premium, prioritised support.';
519
+ echo '</p>';
520
+
521
+ echo '<h4>' . __('License', 'google-maps-widget') . '</h4>';
522
+ echo '<p>Your <span class="gmw-pro-red">PRO</span> license is active and valid ' . ($options['license_expires'] == '2035-01-01'? 'indefinitely': 'until ' . date(get_option('date_format'), strtotime($options['license_expires']))) . '. ';
523
+ echo 'Additional info is available in <a href="' . admin_url('options-general.php?page=gmw_options') . '" title="Settings">settings</a>.</p>';
524
+ } else {
525
+ echo '<h4>' . __('Support', 'google-maps-widget') . '</h4>';
526
+ echo '<p>If you have any problems, questions or would like a new feature added post it on the <a href="https://wordpress.org/support/plugin/google-maps-widget" target="_blank">official support forum</a>. It\'s the only place to get support. Since it\'s free and community powered please be patient.<br>';
527
+ echo 'If you <a href="#" class="open_promo_dialog">upgrade</a> to <span class="gmw-pro-red">PRO</span> you will get instant access to premium, prioritised support via email.</p>';
528
+
529
+ echo '<h4>' . __('Activate <span class="gmw-pro-red">PRO</span> features', 'google-maps-widget') . '</h4>';
530
+ echo '<p><span class="gmw-pro-red">PRO</span> features give you access to priority support and more than 50 extra options including shortcode support, additional map types, more map skins and a host of other additional features.';
531
+ echo ' <a class="open_promo_dialog" href="#">Activate PRO features</a>';
532
+ echo '</p>';
533
  }
 
534
  echo '<h4>' . __('Rate the plugin &amp; spread the word', 'google-maps-widget') . '</h4>';
535
+ echo '<p>It won\'t take you more than a minute, but it will help us immensely. So please - <a href="https://wordpress.org/support/view/plugin-reviews/google-maps-widget" target="_blank">rate the plugin</a>. Or spread the word by <a href="https://twitter.com/intent/tweet?via=WebFactoryLtd&amp;text=' . urlencode('I\'m using the #free Google Maps Widget for #wordpress. You can grab it too at http://goo.gl/2qcbbf') . '" target="_blank">tweeting about it</a>. Thank you!</p>';
536
+ echo '</div>';
537
+ // end - info tab
538
 
539
  echo '</div><p></p>'; // tabs
540
 
541
+ if (!GMW::is_activated()) {
542
+ if (date('d') % 2 && (username_exists('admin') || get_userdata(1))) {
543
+ echo '<p>' . __('We have detected at least one <span class="gmw-pro-red">security issue</span> on this site related to user accounts. Don\'t become a statistic! Protect your site with <a href="http://security-ninja-plugins-bundle.webfactoryltd.com/?ref=gmw" target="_blank">Security Ninja</a>.', 'google-maps-widget') . '</p>';
544
+ } else {
545
+ echo '<p>' . __('Upgrade to Google Maps Widget <span class="gmw-pro-red">PRO</span> to get more than 50 extra options available immeditely. <a class="open_promo_dialog" href="#">Upgrade now</a>.', 'google-maps-widget') . '</p>';
546
+ }
547
+ } else {
548
+ echo '<p>' . sprintf(__('Additional options are available in <a href="%s" title="Settings">settings</a>. ', 'google-maps-widget'), admin_url('options-general.php?page=gmw_options')) . __('If you experience any problems or need help, please contact <a href="mailto:gmw@webfactoryltd.com?subject=GMW%20support">support</a>.', 'google-maps-widget') . '</p>';
549
  }
550
  } // form
551
 
552
 
553
  // update/save widget options
554
  function update($new_instance, $old_instance) {
555
+ $instance = array();
556
 
557
  $instance['title'] = $new_instance['title'];
558
+ $instance['address'] = strip_tags(trim($new_instance['address']));
559
+
560
  $instance['thumb_pin_type'] = $new_instance['thumb_pin_type'];
561
+ $instance['thumb_pin_color'] = GMW::sanitize_hex_color($new_instance['thumb_pin_color']);
562
  $instance['thumb_pin_size'] = $new_instance['thumb_pin_size'];
563
+ $instance['thumb_pin_label'] = $new_instance['thumb_pin_label'];
564
  $instance['thumb_pin_img'] = trim($new_instance['thumb_pin_img']);
565
+ $instance['thumb_pin_img_library'] = trim($new_instance['thumb_pin_img_library']);
566
  $instance['thumb_width'] = min(640, max(50, (int) $new_instance['thumb_width']));
567
  $instance['thumb_height'] = min(640, max(50, (int) $new_instance['thumb_height']));
568
  $instance['thumb_zoom'] = $new_instance['thumb_zoom'];
572
  $instance['thumb_header'] = trim($new_instance['thumb_header']);
573
  $instance['thumb_footer'] = trim($new_instance['thumb_footer']);
574
  $instance['thumb_color_scheme'] = $new_instance['thumb_color_scheme'];
575
+ $instance['thumb_format'] = $new_instance['thumb_format'];
576
+ $instance['thumb_lang'] = $new_instance['thumb_lang'];
577
+
578
+ $instance['lightbox_fullscreen'] = (int) $new_instance['lightbox_fullscreen'];
579
  $instance['lightbox_width'] = min(2000, max(50, (int) $new_instance['lightbox_width']));
580
  $instance['lightbox_height'] = min(2000, max(50, (int) $new_instance['lightbox_height']));
581
+ $instance['lightbox_mode'] = $new_instance['lightbox_mode'];
582
+ $instance['lightbox_origin'] = trim($new_instance['lightbox_origin']);
583
+ $instance['lightbox_search'] = trim($new_instance['lightbox_search']);
584
+ $instance['lightbox_unit'] = $new_instance['lightbox_unit'];
585
+ $instance['lightbox_heading'] = min(360, max(-180, (int) $new_instance['lightbox_heading']));
586
+ $instance['lightbox_pitch'] = min(90, max(-90, (int) $new_instance['lightbox_pitch']));
587
+ $instance['lightbox_map_type'] = $new_instance['lightbox_map_type'];
588
  $instance['lightbox_zoom'] = $new_instance['lightbox_zoom'];
589
+ $instance['lightbox_feature'] = (array) $new_instance['lightbox_feature'];
 
590
  $instance['lightbox_header'] = trim($new_instance['lightbox_header']);
591
  $instance['lightbox_footer'] = trim($new_instance['lightbox_footer']);
592
  $instance['lightbox_skin'] = $new_instance['lightbox_skin'];
593
+ $instance['lightbox_lang'] = $new_instance['lightbox_lang'];
594
+
595
  $instance['core_ver'] = GMW::$version;
596
 
597
  return $instance;
598
  } // update
599
 
600
 
601
+ // output widget
602
+ function widget($widget, $instance) {
603
+ $out = $widget_content = $style = '';
604
+ $map_params = array();
605
 
606
+ $options = GMW::get_options();
607
+ $instance = self::upgrade_wiget_instance($instance);
608
+
609
+ $map_src = '//maps.googleapis.com/maps/api/staticmap';
610
 
611
+ // make sure all params are defined
612
+ $instance = wp_parse_args((array) $instance, self::$defaults);
613
+ $instance['id'] = $widget['widget_id'];
614
 
615
+ // build thumbnail map parameters
616
+ if (GMW::get_api_key('static')) {
617
+ $map_params['key'] = GMW::get_api_key('static');
 
 
 
618
  }
619
+ $map_params['scale'] = 1;
620
+ $map_params['format'] = $instance['thumb_format'];
621
+ $map_params['zoom'] = $instance['thumb_zoom'];
622
+ $map_params['size'] = $instance['thumb_width'] . 'x' . $instance['thumb_height'];
623
+ if ($instance['thumb_lang'] != 'auto') {
624
+ $map_params['language'] = $instance['thumb_lang'];
625
  }
626
+ $map_params['maptype'] = $instance['thumb_type'];
627
+ if ($instance['thumb_pin_type'] == 'custom') {
628
+ $map_params['markers'] = 'icon:' . $instance['thumb_pin_img'];
629
+ } elseif ($instance['thumb_pin_type'] == 'custom-library') {
630
+ $map_params['markers'] = 'icon:' . plugins_url('/images/pins/' . $instance['thumb_pin_img_library'], __FILE__);
631
+ } else {
632
+ $map_params['markers'] = 'size:' . $instance['thumb_pin_size'] . '|color:' . str_replace('#', '0x', $instance['thumb_pin_color']) . '|label:' . $instance['thumb_pin_label'];
633
  }
634
+ $map_params['markers'] .= '|' . $instance['address'];
635
+ $map_params['center'] = $instance['address'];
636
+ if ($instance['thumb_color_scheme'] == 'new') {
637
+ $map_params['visual_refresh'] = 'true';
638
+ } elseif ($instance['thumb_color_scheme'] != 'default') {
639
+ $map_params['visual_refresh'] = 'false';
640
+ $style = '&amp;' . str_replace('&', '&amp;', GMW_styles::$php_styles[$instance['thumb_color_scheme']]);
 
 
 
 
 
 
 
 
 
 
 
641
  }
642
 
643
+ // start building widget markup
644
+ $out .= $widget['before_widget'];
 
645
 
646
+ // add widget title; respect sidebar markup
647
+ $title = empty($instance['title'])? '' : apply_filters('widget_title', $instance['title']);
648
  if (!empty($title)) {
649
+ $out .= $widget['before_title'] . $title . $widget['after_title'];
650
  }
651
 
652
+ // if not empty, add header text
653
+ if (!empty($instance['thumb_header'])) {
654
+ $tmp = str_ireplace(array('{address}'), array($instance['address']), $instance['thumb_header']);
655
+ $widget_content .= wpautop(do_shortcode($tmp));
 
 
 
 
 
656
  }
657
+ $widget_content .= '<p>';
658
 
659
  if ($instance['thumb_link_type'] == 'lightbox') {
660
+ self::$widgets[$widget['widget_id']] = $instance;
661
+ $map_alt = __('Click to open a larger map', 'google-maps-widget');
662
+ $widget_content .= '<a data-gmw-id="' . $widget['widget_id'] . '" class="gmw-thumbnail-map gmw-lightbox-enabled" href="#gmw-dialog-' . $widget['widget_id'] . '" title="' . __('Click to open a larger map', 'google-maps-widget') . '">';
663
+ } elseif ($instance['thumb_link_type'] == 'replace') {
664
+ self::$widgets[$widget['widget_id']] = $instance;
665
+ $map_alt = __('Click to open the interactive map', 'google-maps-widget');
666
+ $widget_content .= '<a data-gmw-id="' . $widget['widget_id'] . '" class="gmw-thumbnail-map gmw-replace-enabled" href="#gmw-dialog-' . $widget['widget_id'] . '" title="' . __('Click to open an interactive map', 'google-maps-widget') . '">';
667
  } elseif ($instance['thumb_link_type'] == 'custom') {
668
+ $map_alt = esc_attr($instance['address']);
669
+ $widget_content .= '<a class="gmw-thumbnail-map" title="' . esc_attr($instance['address']) . '" href="' . $instance['thumb_link'] . '">';
670
+ } elseif ($instance['thumb_link_type'] == 'custom_blank') {
671
+ $map_alt = esc_attr($instance['address']);
672
+ $widget_content .= '<a class="gmw-thumbnail-map" title="' . esc_attr($instance['address']) . '" target="_blank" href="' . $instance['thumb_link'] . '">';
673
+ } elseif ($instance['thumb_link_type'] == 'map_blank') {
674
+ $map_alt = __('Click to open the interactive map in a new window', 'google-maps-widget');
675
+ $map_url = GMW::build_lightbox_url($instance);
676
+ $widget_content .= '<a class="gmw-thumbnail-map" title="' . esc_attr($instance['address']) . '" target="_blank" href="' . $map_url . '">';
677
+ } elseif ($instance['thumb_link_type'] == 'nolink') {
678
+ $map_alt = esc_attr($instance['address']);
 
 
 
 
 
 
 
679
  }
680
+
681
+ // build map image source
682
+ $map_src .= '?' . http_build_query($map_params, null, '&amp;') . $style;
683
+ $map_src = apply_filters('gmw_thumb_map_src', $map_src, $instance);
684
+ $widget_content .= '<img width="' . $instance['thumb_width'] . 'px" height="' . $instance['thumb_height'] . 'px" alt="' . $map_alt . '" title="' . $map_alt . '" src="' . $map_src . '">';
685
+
686
+ if ($instance['thumb_link_type'] == 'lightbox' ||
687
+ $instance['thumb_link_type'] == 'replace' ||
688
+ $instance['thumb_link_type'] == 'custom' ||
689
+ $instance['thumb_link_type'] == 'custom_blank' ||
690
+ $instance['thumb_link_type'] == 'map_blank') {
691
+ $widget_content .= '</a>';
692
  }
693
+ $widget_content .= '</p>';
694
+
695
+ // if not empty, add footer text
696
+ if (!empty($instance['thumb_footer'])) {
697
  if ($instance['thumb_footer'] == 'Powered by Google Maps Widget') {
698
+ $widget_content .= '<span class="gmw-powered-by">Powered by <a title="Powered by free Google Maps Widget plugin for WordPress" href="http://www.googlemapswidget.com/" target="_blank">Google Maps Widget</a></span>';
699
  } else {
700
+ $tmp = str_ireplace(array('{address}'), array($instance['address']), $instance['thumb_footer']);
701
+ $widget_content .= wpautop(do_shortcode($tmp));
702
  }
703
  }
 
704
 
705
+ $out .= apply_filters('gmw_widget_content', $widget_content, $instance);
706
+ $out .= $widget['after_widget'];
707
 
708
  echo $out;
709
  } // widget
710
+
711
+
712
+ // compatibility fixes for widgets prior to v3.0
713
+ static function upgrade_wiget_instance($instance) {
714
+ $instance = wp_parse_args((array) $instance, self::$defaults);
715
+
716
+ if (isset($instance['core_ver']) && version_compare($instance['core_ver'], '3.0', '>=')) {
717
+ return $instance;
718
+ }
719
+
720
+ // pin color is now in hex
721
+ if ($instance['thumb_pin_color'][0] != '#') {
722
+ $instance['thumb_pin_color'] = GMW::convert_color($instance['thumb_pin_color']);
723
+ } elseif (empty($instance['thumb_pin_color'])) {
724
+ $instance['thumb_pin_color'] = '#ff0000';
725
+ }
726
+
727
+ // if we had title before, we need it now too
728
+ if (!empty($instance['lightbox_title']) && !in_array('title', $instance['lightbox_feature'])) {
729
+ $instance['lightbox_feature'][] = 'title';
730
+ }
731
+
732
+ // map type values changed
733
+ if (isset($instance['lightbox_map_type']) && $instance['lightbox_map_type'] == 'k') {
734
+ $instance['lightbox_map_type'] = 'satellite';
735
+ } else {
736
+ $instance['lightbox_map_type'] = 'roadmap';
737
+ }
738
+
739
+ return $instance;
740
+ } // upgrade_widget_instance
741
  } // class GoogleMapsWidget
google-maps-widget.php CHANGED
@@ -2,9 +2,9 @@
2
  /*
3
  Plugin Name: Google Maps Widget
4
  Plugin URI: http://www.googlemapswidget.com/
5
- Description: Display a single-image super-fast loading Google map in a widget. A larger, full featured map is available on click in a lightbox. Includes shortcode support and numerous options.
6
  Author: Web factory Ltd
7
- Version: 2.92
8
  Author URI: http://www.webfactoryltd.com/
9
  Text Domain: google-maps-widget
10
  Domain Path: lang
@@ -26,63 +26,79 @@ Domain Path: lang
26
  */
27
 
28
 
 
29
  if (!defined('ABSPATH')) {
30
- die();
31
  }
32
 
33
 
34
- define('GMW_OPTIONS', 'gmw_options');
35
- define('GMW_CRON', 'gmw_cron');
36
- define('GMW_PLUGIN_DIR', plugin_dir_path(__FILE__));
37
 
 
38
 
39
- require_once GMW_PLUGIN_DIR . 'gmw-widget.php';
40
  require_once GMW_PLUGIN_DIR . 'gmw-tracking.php';
 
 
 
 
 
 
41
 
42
 
43
  class GMW {
44
- static $version = '2.92';
 
 
45
 
46
  // hook everything up
47
  static function init() {
48
- GMW_tracking::init();
49
-
50
  if (is_admin()) {
51
- // check if minimal required WP version is used
52
- self::check_wp_version(3.3);
 
 
53
 
54
- // check some variables
55
- self::upgrade();
56
 
57
  // aditional links in plugin description
58
  add_filter('plugin_action_links_' . basename(dirname(__FILE__)) . '/' . basename(__FILE__),
59
- array(__CLASS__, 'plugin_action_links'));
60
- add_filter('plugin_row_meta', array(__CLASS__, 'plugin_meta_links'), 10, 2);
61
 
62
  // enqueue admin scripts
63
- add_action('admin_enqueue_scripts', array(__CLASS__, 'admin_enqueue_scripts'));
64
- add_action('customize_controls_enqueue_scripts', array(__CLASS__, 'admin_enqueue_scripts'));
65
 
66
  // JS dialog markup
67
- add_action('admin_footer', array(__CLASS__, 'admin_dialogs_markup'));
68
 
69
  // register AJAX endpoints
70
- add_action('wp_ajax_gmw_subscribe', array(__CLASS__, 'email_subscribe'));
71
- add_action('wp_ajax_gmw_activate', array(__CLASS__, 'activate_via_code'));
72
 
73
- // handle dismiss button for all notices
74
- add_action('admin_action_gmw_dismiss_notice', array(__CLASS__, 'dismiss_notice'));
 
 
 
 
 
 
 
75
 
76
  // display various notices
77
- self::add_notices();
78
  } else {
79
  // enqueue frontend scripts
80
- add_action('wp_enqueue_scripts', array(__CLASS__, 'enqueue_scripts'));
81
- add_action('wp_footer', array(__CLASS__, 'dialogs_markup'));
82
  }
83
 
 
 
 
84
  // add shortcode support
85
- self::add_shortcode();
86
  } // init
87
 
88
 
@@ -96,13 +112,161 @@ class GMW {
96
  // initialize widgets
97
  static function widgets_init() {
98
  register_widget('GoogleMapsWidget');
 
 
 
 
 
 
 
 
 
 
 
 
99
  } // widgets_init
100
 
101
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
102
  // add widgets link to plugins page
103
  static function plugin_action_links($links) {
104
- $settings_link = '<a href="' . admin_url('widgets.php') . '" title="' . __('Configure Google Maps Widget', 'google-maps-widget') . '">' . __('Widgets', 'google-maps-widget') . '</a>';
 
 
105
  array_unshift($links, $settings_link);
 
106
 
107
  return $links;
108
  } // plugin_action_links
@@ -111,17 +275,19 @@ class GMW {
111
  // add links to plugin's description in plugins table
112
  static function plugin_meta_links($links, $file) {
113
  $documentation_link = '<a target="_blank" href="http://www.googlemapswidget.com/documentation/" title="' . __('View Google Maps Widget documentation', 'google-maps-widget') . '">'. __('Documentation', 'google-maps-widget') . '</a>';
114
- $support_link = '<a target="_blank" href="http://wordpress.org/support/plugin/google-maps-widget" title="' . __('Problems? We are here to help!', 'google-maps-widget') . '">' . __('Support', 'google-maps-widget') . '</a>';
 
 
 
 
115
  $review_link = '<a target="_blank" href="http://wordpress.org/support/view/plugin-reviews/google-maps-widget" title="' . __('If you like it, please review the plugin', 'google-maps-widget') . '">' . __('Review the plugin', 'google-maps-widget') . '</a>';
116
- $donate_link = '<a target="_blank" href="https://gum.co/gmw-wp" title="' . __('If you feel we deserve it, buy us coffee', 'google-maps-widget') . '">' . __('Donate', 'google-maps-widget') . '</a>';
117
- $activate_link = '<a href="' . esc_url(admin_url('widgets.php?gmw_open_promo_dialog')) . '">' . __('Activate premium features for <b>FREE</b>', 'google-maps-widget') . '</a>';
118
 
119
  if ($file == plugin_basename(__FILE__)) {
120
  $links[] = $documentation_link;
121
  $links[] = $support_link;
122
  $links[] = $review_link;
123
- $links[] = $donate_link;
124
- if (!self::is_activated()) {
125
  $links[] = $activate_link;
126
  }
127
  }
@@ -130,57 +296,185 @@ class GMW {
130
  } // plugin_meta_links
131
 
132
 
133
- // check if user has the minimal WP version required by the plugin
134
  static function check_wp_version($min_version) {
135
  if (!version_compare(get_bloginfo('version'), $min_version, '>=')) {
136
- add_action('admin_notices', array(__CLASS__, 'notice_min_version_error'));
 
137
  }
 
 
138
  } // check_wp_version
139
 
140
 
141
  // display error message if WP version is too low
142
  static function notice_min_version_error() {
143
- echo '<div class="error"><p>' . sprintf(__('Google Maps Widget <b>requires WordPress version 3.3</b> or higher to function properly. You are using WordPress version %s. Please <a href="%s">update it</a>.', 'google-maps-widget'), get_bloginfo('version'), admin_url('update-core.php')) . '</p></div>';
144
  } // notice_min_version_error
145
 
146
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
147
  // print dialogs markup in footer
148
  static function dialogs_markup() {
149
  $out = '';
150
- $widgets = GoogleMapsWidget::$widgets;
 
151
 
152
- if (!$widgets) {
153
- wp_dequeue_script('gmw');
154
- wp_dequeue_script('gmw-fancybox');
155
  return;
156
  }
157
 
158
- foreach ($widgets as $widget) {
159
- if ($widget['bubble']) {
160
- $iwloc = 'addr';
161
- } else {
162
- $iwloc = 'near';
163
- }
164
- if ($widget['ll']) {
165
- $ll = '&amp;ll=' . $widget['ll'];
166
- } else {
167
- $ll = '';
168
- }
 
169
 
170
- $lang = substr(@$_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
171
- if (!$lang) {
172
- $lang = 'en';
173
- }
174
 
175
- $map_url = '//maps.google.com/maps?hl=' . $lang . '&amp;ie=utf8&amp;output=embed&amp;iwloc=' . $iwloc . '&amp;iwd=1&amp;mrt=loc&amp;t=' . $widget['type'] . '&amp;q=' . urlencode(remove_accents($widget['address'])) . '&amp;z=' . urlencode($widget['zoom']) . $ll;
 
 
 
176
 
177
- $out .= '<div class="gmw-dialog" style="display: none;" data-map-height="' . $widget['height'] . '" data-map-width="' . $widget['width'] . '" data-map-skin="' . $widget['skin'] . '" data-map-iframe-url="' . $map_url . '" id="gmw-dialog-' . $widget['id'] . '" title="' . esc_attr($widget['title']) . '">';
178
- if ($widget['header']) {
179
- $out .= '<div class="gmw-header">' . wpautop(do_shortcode($widget['header'])) . '</div>';
 
 
 
 
 
 
 
 
180
  }
181
  $out .= '<div class="gmw-map"></div>';
182
- if ($widget['footer']) {
183
- $out .= '<div class="gmw-footer">' . wpautop(do_shortcode($widget['footer'])) . '</div>';
 
184
  }
185
  $out .= "</div>\n";
186
  } // foreach $widgets
@@ -189,340 +483,598 @@ class GMW {
189
  } // dialogs_markup
190
 
191
 
 
 
 
 
 
 
 
 
 
 
 
192
  // check availability and register shortcode
193
- static function add_shortcode() {
 
 
 
 
194
  global $shortcode_tags;
 
195
 
196
- if (isset($shortcode_tags['gmw'])) {
197
- add_action('admin_notices', array(__CLASS__, 'notice_sc_conflict_error'));
198
  } else {
199
- add_shortcode('gmw', array(__CLASS__, 'do_shortcode'));
200
  }
201
- } // add_shortcode
202
 
203
 
204
  // display notice if shortcode name is already taken
205
  static function notice_sc_conflict_error() {
206
- if (!self::is_activated()) {
207
- return;
208
- }
209
 
210
- echo '<div class="error"><p><strong>' . __('Google Maps Widget shortcode is not active!', 'google-maps-widget') . '</strong>' . __(' Shortcode <i>[gmw]</i> is already in use by another plugin or theme. Please deactivate that theme or plugin.', 'google-maps-widget') . '</p></div>';
211
  } // notice_sc_conflict_error
212
 
213
 
214
- // handle dismiss button for all notices
215
- // todo - convert all notices
216
  static function dismiss_notice() {
217
- $options = get_option(GMW_OPTIONS, array());
218
-
219
- if (isset($_GET['notice']) && $_GET['notice'] == 'upgrade') {
220
- $options['dismiss_notice_upgrade'] = true;
221
- update_option(GMW_OPTIONS, $options);
222
- }
223
- if (isset($_GET['notice']) && $_GET['notice'] == 'rate') {
224
- $options['dismiss_notice_rate'] = true;
225
- update_option(GMW_OPTIONS, $options);
226
  }
227
 
228
- if ($_GET['redirect']) {
 
 
 
 
 
 
 
 
 
 
 
 
 
229
  wp_redirect($_GET['redirect']);
230
  } else {
231
  wp_redirect(admin_url());
232
  }
 
233
  exit;
234
  } // dismiss_notice
235
 
236
 
237
- // maybe show some notices
238
  static function add_notices() {
239
- $options = get_option(GMW_OPTIONS, array());
240
  $notice = false;
 
 
 
 
 
 
 
241
 
242
- if (empty($options['dismiss_notice_upgrade']) && !self::is_activated()) {
243
- add_action('admin_notices', array(__CLASS__, 'notice_activate_extra_features'));
 
 
 
 
 
 
 
 
 
244
  $notice = true;
245
  } // show upgrade notice
246
 
 
247
  if (!$notice && empty($options['dismiss_notice_rate']) &&
248
  GMW_tracking::count_active_widgets() > 0 &&
249
- (current_time('timestamp') - $options['first_install']) > (DAY_IN_SECONDS * 3)) {
250
- add_action('admin_notices', array(__CLASS__, 'notice_rate_plugin'));
251
  $notice = true;
252
  } // show rate notice
253
-
254
- if (!$notice && !isset($options['allow_tracking']) && ((current_time('timestamp') - $options['first_install']) > (DAY_IN_SECONDS * 5))) {
 
 
255
  add_action('admin_notices', array('GMW_tracking', 'tracking_notice'));
256
  $notice = true;
257
  } // show tracking notice
258
  } // add_notices
259
 
260
 
261
- // display message to get extra features for GMW
262
- static function notice_activate_extra_features() {
263
- $activate_url = admin_url('widgets.php?gmw_open_promo_dialog');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
264
  $dismiss_url = add_query_arg(array('action' => 'gmw_dismiss_notice', 'notice' => 'upgrade', 'redirect' => urlencode($_SERVER['REQUEST_URI'])), admin_url('admin.php'));
265
 
266
- // todo detect WP version and add support for "is-dismissible"
267
- // todo remove style from HTML
268
- echo '<div id="gmw_activate_notice" class="updated notice"><p>' . __('<b>Google Maps Widget</b> has extra premium features you can get for <b style="color: #d54e21;">FREE</b>. This is a limited time offer so act now!', 'google-maps-widget');
269
 
270
- echo '<br /><a href="' . esc_url($activate_url) . '" style="vertical-align: baseline; margin-top: 15px;" class="button-primary">' . __('Activate extra features for <b>FREE</b>', 'google-maps-widget') . '</a>';
271
- echo '&nbsp;&nbsp;<a href="' . esc_url($dismiss_url) . '">' . __('Dismiss notice', 'google-maps-widget') . '</a>';
272
  echo '</p></div>';
273
  } // notice_activate_extra_features
274
-
275
-
276
- // display message to get extra features for GMW
277
  static function notice_rate_plugin() {
278
  $rate_url = 'https://wordpress.org/support/view/plugin-reviews/google-maps-widget?rate=5#postform';
279
  $dismiss_url = add_query_arg(array('action' => 'gmw_dismiss_notice', 'notice' => 'rate', 'redirect' => urlencode($_SERVER['REQUEST_URI'])), admin_url('admin.php'));
280
 
281
- // todo detect WP version and add support for "is-dismissible"
282
- // todo remove style from HTML
283
- echo '<div id="gmw_rate_notice" class="updated notice"><p>' . __('Hi! We saw you\'ve been using <b>Google Maps Widget</b> for some time and wanted to ask for your help to make the plugin even better.<br>We don\'t need money :), just a minute of your time to rate the plugin. Thank you!', 'google-maps-widget');
284
 
285
- echo '<br /><a target="_blank" href="' . esc_url($rate_url) . '" style="vertical-align: baseline; margin-top: 15px;" class="button-primary">' . __('Help us out &amp; rate the plugin', 'google-maps-widget') . '</a>';
286
- echo '&nbsp;&nbsp;<a href="' . esc_url($dismiss_url) . '" class="">' . __('Dismiss notice', 'google-maps-widget') . '</a>';
287
  echo '</p></div>';
288
  } // notice_rate_plugin
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
289
 
290
 
291
- // enqueue frontend scripts if necessary
292
- static function enqueue_scripts() {
293
- if (is_active_widget(false, false, 'googlemapswidget', true)) {
294
- wp_enqueue_style('gmw', plugins_url('/css/gmw.css', __FILE__), array(), GMW::$version);
295
- wp_enqueue_script('gmw-colorbox', plugins_url('/js/jquery.colorbox.min.js', __FILE__), array('jquery'), GMW::$version, true);
296
- wp_enqueue_script('gmw', plugins_url('/js/gmw.js', __FILE__), array('jquery'), GMW::$version, true);
 
 
 
 
 
 
297
  }
298
- } // enqueue_scripts
299
 
300
 
301
- // enqueue CSS and JS scripts on widgets page
302
  static function admin_enqueue_scripts() {
303
  global $wp_customize;
 
304
 
305
- if (self::is_plugin_admin_page() || isset($wp_customize)) {
306
  wp_enqueue_script('jquery-ui-tabs');
307
  wp_enqueue_script('jquery-ui-dialog');
 
 
308
  wp_enqueue_script('gmw-cookie', plugins_url('js/jquery.cookie.js', __FILE__), array('jquery'), GMW::$version, true);
 
 
309
  wp_enqueue_script('gmw-admin', plugins_url('js/gmw-admin.js', __FILE__), array('jquery'), GMW::$version, true);
310
 
311
  wp_enqueue_style('wp-jquery-ui-dialog');
 
 
 
312
  wp_enqueue_style('gmw-admin', plugins_url('css/gmw-admin.css', __FILE__), array(), GMW::$version);
313
 
314
- $js_localize = array('subscribe_ok' => __('Check your inbox. Email with activation code is on its way.', 'google-maps-widget'),
315
- 'subscribe_duplicate' => __('You are already subscribed to our list. One activation code is valid for all sites so just use the code you already have.', 'google-maps-widget'),
316
- 'subscribe_error' => __('Something is not right on our end. Sorry :( Try again later.', 'google-maps-widget'),
317
- 'activate_ok' => __('Superb! Extra features are active ;)', 'google-maps-widget'),
318
- 'dialog_title' => __('Google Maps Widget <b>Extra Features</b>', 'google-maps-widget'),
319
  'undocumented_error' => __('An undocumented error has occured. Please refresh the page and try again.', 'google-maps-widget'),
320
- 'id_base' => 'googlemapswidget');
 
 
 
 
 
 
 
 
 
321
  wp_localize_script('gmw-admin', 'gmw', $js_localize);
322
  } // if
323
  } // admin_enqueue_scripts
324
 
325
 
326
  // check if plugin's admin page is shown
327
- static function is_plugin_admin_page() {
328
  $current_screen = get_current_screen();
329
 
330
- if ($current_screen->id == 'widgets') {
 
 
 
 
331
  return true;
332
- } else {
333
- return false;
334
  }
 
 
 
 
 
 
335
  } // is_plugin_admin_page
336
 
337
 
338
- // check if activate-by-subscribing features have been activated
339
- static function is_activated($activation_type = '') {
340
- $options = get_option(GMW_OPTIONS);
341
 
342
- if (!isset($options['activated']) || $options['activated'] !== true) {
343
- return false;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
344
  } else {
345
- if ($activation_type == 'pro') {
346
- return strlen($options['activation_code']) === 35;
347
- } else {
348
- return true;
349
- }
350
  }
351
  } // is_activated
352
 
353
 
354
  // echo markup for promo dialog; only on widgets page
355
  static function admin_dialogs_markup() {
356
- if (!self::is_plugin_admin_page()) {
357
- return false;
358
- }
359
-
360
- $current_user = wp_get_current_user();
361
- if (empty($current_user->user_firstname)) {
362
- $name = $current_user->display_name;
363
- } else {
364
- $name = $current_user->user_firstname;
365
- }
366
-
367
- $out = '<div id="gmw_promo_dialog">';
368
-
369
- $out .= '<div id="gmw_dialog_intro">
370
- <div class="content">
371
- <h3 class="center boxed-h">' . __('Choose your prefered way of activating extra features:', 'google-maps-widget') . '</h3>';
372
- $out .= '<div class="gmw-left-box gmw-content-box">
373
- <h3>Support</h3>
374
- <p>development &amp; help us maintain GMW</p>
375
- <i class="dashicons dashicons-heart"></i>
376
- <ul>
377
- <li>Premium email support for 1 year</li>
378
- <li>Access to all new extra features</li>
379
- <li>No annoying emails</li>
380
- <li>No ads in the plugin</li>
381
- </ul>
382
- <a href="https://gum.co/gmw-wp" data-noprevent="1" class="gmw_goto_activation button-primary" target="_blank">Donate</a>
383
- </div>';
384
- $out .= '<div class="gmw-right-box gmw-content-box gmw-content-box-alternate">
385
- <h3>Subscribe</h3>
386
- <p>and receive promotional e-mails</p>
387
- <i class="dashicons dashicons-email-alt"></i>
388
- <ul>
389
- <li>Community based support</li>
390
- <li>Access to new extra features</li>
391
- <li>Receive promotional emails</li>
392
- <li>Ads in the plugin</li>
393
- </ul>
394
- <br>
395
- <a href="#" class="gmw_goto_subscribe button-secondary">Subscribe</a>
396
- </div>';
397
- $out .= '<p class="clear center gmw-footer-intro">Already have an activation code? <a href="#" class="gmw_goto_activation">Enter it here</a></p>';
398
- $out .= '</div></div>'; // dialog intro
399
-
400
- $out .= '<div id="gmw_dialog_subscribe">
401
- <div class="content">
402
- <h3>' . __('Fill out the form and get extra features for <b>FREE</b> instantly!', 'google-maps-widget') . '</h3>';
403
- $out .= '<p class="input_row">
404
- <input value="' . $name . '" type="text" id="gmw_name" name="gmw_name" placeholder="Your name">
405
- <span class="error name" style="display: none;">Please enter your name.</span>
406
- </p>';
407
- $out .= '<p class="input_row">
408
- <input value="' . $current_user->user_email . '" type="text" name="gmw_email" id="gmw_email" placeholder="Your email address">
409
- <span style="display: none;" class="error email">Please double check your email address.</span>
410
- </p>';
411
- $out .= '<p class="center">
412
- <a id="gmw_subscribe" href="#" class="button button-primary">Activate extra features</a></p>
413
- <p class="center">Already have an activation code? <a href="#" class="gmw_goto_activation">Enter it here</a></p>
414
- </div>';
415
- $out .= '<div class="footer">
416
- <p><b>Still not sure?</b></p>
417
- <ul>
418
- <li>We\'ll never share your email address</li>
419
- <li>We won\'t spam you or overwhelm with emails</li>
420
- <li>You\'ll get discounts for our premium WP plugins</li>
421
- </ul>
422
- </div>';
423
- $out .= '</div>'; // dialog subscribe
424
 
425
- $out .= '<div id="gmw_dialog_activate">
426
- <div class="content">';
427
- $out .= '<p class="input_row">
428
- <input type="text" id="gmw_code" name="gmw_code" placeholder="Please enter the activation code">
429
- <span style="display: none;" class="error gmw_code">Please double check the activation code.</span></p>
430
- <p class="center">
431
- <a href="#" class="button button-primary" id="gmw_activate">Activate extra features</a>
432
- </p>
433
- <p class="center">If you don\'t have an activation code - <a href="#" class="gmw_goto_intro">Get it now</a></p>
434
- </div>';
435
- $out .= '<div class="footer">
436
- <p><b>FAQ</b></p>
437
- <ul class="gmw-faq-ul">
438
- <li>Donated and haven\'t received the code? <a href="mailto:gmw@webfactoryltd.com?subject=Lost%20activation%20code">Email us</a></li>
439
- <li>Didn\'t receive the email? Check your SPAM folder.</li>
440
- <li>Code is valid for an unlimited number of plugin installations.</li>
441
  </ul>
442
- </div>';
443
- $out .= '</div>'; // activate screen
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
444
 
445
- $out .= '</div>'; // dialog
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
446
 
447
  echo $out;
448
  } // admin_dialogs_markup
449
 
450
 
451
- // send user's email to MailChimp via our server
452
- static function email_subscribe() {
453
- $name = trim($_POST['name']);
454
- $email = trim($_POST['email']);
455
- if (defined('WPLANG')) {
456
- $lang = strtolower(substr(WPLANG, 0, 2));
 
457
  } else {
458
- $lang = 'en';
459
  }
460
 
461
- $res = wp_remote_post('http://www.googlemapswidget.com/subscribe.php', array('body' => array('name' => $name, 'email' => $email, 'lang' => $lang, 'ip' => $_SERVER['REMOTE_ADDR'], 'site' => get_home_url())));
462
-
463
- // something's wrong with our server
464
- if ($res['response']['code'] != 200 || is_wp_error($res)) {
465
- wp_send_json_error('unknown');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
466
  }
467
 
468
- if ($res['body'] == 'ok') {
469
- wp_send_json_success();
470
- } elseif ($res['body'] == 'duplicate') {
471
- wp_send_json_error('duplicate');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
472
  } else {
473
- wp_send_json_error('unknown');
474
  }
475
- } // email_subscribe
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
476
 
 
 
 
477
 
478
- // check activation code and save if valid
479
- static function activate_via_code() {
480
- $code = trim($_POST['code']);
481
 
482
- if (self::validate_activation_code($code) !== false) {
483
- $options = get_option(GMW_OPTIONS);
484
- $options['activation_code'] = $code;
485
- $options['activated'] = true;
486
- update_option(GMW_OPTIONS, $options);
 
 
487
 
 
 
 
 
 
488
  wp_send_json_success();
489
  } else {
490
- wp_send_json_error();
491
  }
492
- } // email_activate
493
 
494
 
495
- // check if activation code for additional features is valid
496
- static function validate_activation_code_format($code) {
497
- // old key format
498
- if (strlen($code) == 6) {
499
- if (($code[0] + $code[5]) != 9 || preg_match('/[0-9a-f]+/i', $code, $matches) != 1) {
500
- return false;
501
- }
502
- return true;
503
- } // old key format
504
-
505
- // new key format
506
- if (strlen($code) == 35) {
507
- if (preg_match('/^[a-z0-9]{8}-[a-z0-9]{8}-[a-z0-9]{8}-[a-z0-9]{8}$/i', $code, $matches) != 1) {
508
- return false;
509
- }
510
- return true;
511
- } // new key format
512
-
513
- return false;
514
- } // validate_activation_code_format
515
-
516
-
517
- // check if activation code for additional features is valid
518
  static function validate_activation_code($code) {
519
- $code = trim($code);
 
 
 
520
 
521
- if (self::validate_activation_code_format($code)) {
522
- return true;
 
 
 
 
 
 
 
523
  } else {
524
- return false;
525
  }
 
 
526
  } // validate_activation_code
527
 
528
 
@@ -530,11 +1082,25 @@ class GMW {
530
  static function create_select_options($options, $selected = null, $output = true) {
531
  $out = "\n";
532
 
 
 
 
 
533
  foreach ($options as $tmp) {
534
- if ($selected == $tmp['val']) {
535
- $out .= "<option selected=\"selected\" value=\"{$tmp['val']}\">{$tmp['label']}&nbsp;</option>\n";
 
 
 
 
 
 
 
 
 
 
536
  } else {
537
- $out .= "<option value=\"{$tmp['val']}\">{$tmp['label']}&nbsp;</option>\n";
538
  }
539
  } // foreach
540
 
@@ -546,102 +1112,126 @@ class GMW {
546
  } // create_select_options
547
 
548
 
549
- // fetch coordinates based on the address
550
- static function get_coordinates($address, $force_refresh = false) {
551
- $address_hash = md5('gmw' . $address);
 
 
552
 
553
- if ($force_refresh || ($coordinates = get_transient($address_hash)) === false) {
554
- $url = 'http://maps.googleapis.com/maps/api/geocode/xml?address=' . urlencode($address) . '&sensor=false';
555
- $result = wp_remote_get($url);
 
 
556
 
557
- if (!is_wp_error($result) && $result['response']['code'] == 200) {
558
- $data = new SimpleXMLElement($result['body']);
559
 
560
- if ($data->status == 'OK') {
561
- $cache_value['lat'] = (string) $data->result->geometry->location->lat;
562
- $cache_value['lng'] = (string) $data->result->geometry->location->lng;
563
- $cache_value['address'] = (string) $data->result->formatted_address;
 
 
 
564
 
565
- // cache coordinates for 3 months
566
- set_transient($address_hash, $cache_value, 3600*24*30*3);
567
- $data = $cache_value;
568
- } elseif (!$data->status) {
569
- return false;
570
- } else {
571
- return false;
572
- }
573
- } else {
574
- return false;
575
- }
576
  } else {
577
- // data is cached, get it
578
- $data = get_transient($address_hash);
579
  }
 
580
 
581
- return $data;
582
- } // get_coordinates
 
 
 
 
 
 
 
 
 
583
 
584
 
585
  // shortcode support for any GMW instance
586
  static function do_shortcode($atts, $content = null) {
587
- if (!self::is_activated()) {
588
  return '';
589
  }
590
 
591
  global $wp_widget_factory;
592
  $out = '';
593
- $atts = shortcode_atts(array('id' => 0), $atts);
594
  $id = (int) $atts['id'];
595
  $widgets = get_option('widget_googlemapswidget');
596
 
597
- if (!$id || empty($widgets[$id])) {
598
- $out .= '<span class="gmw-error">' . __('Google Maps Widget shortcode error - please double-check the widget ID.', 'google-maps-widget') . '</span>';
599
  } else {
600
  $widget_args = $widgets[$id];
601
  $widget_instance['widget_id'] = 'googlemapswidget-' . $id;
602
  $widget_instance['widget_name'] = 'Google Maps Widget';
 
 
 
 
 
603
 
604
- $out .= '<span class="gmw-shortcode-widget">';
605
  ob_start();
606
  the_widget('GoogleMapsWidget', $widget_args, $widget_instance);
607
  $out .= ob_get_contents();
608
  ob_end_clean();
609
- $out .= '</span>';
610
  }
611
-
612
  return $out;
613
  } // do_shortcode
614
 
615
 
616
  // activate doesn't get fired on upgrades so we have to compensate
617
- public static function upgrade() {
618
- $options = get_option(GMW_OPTIONS);
 
 
 
 
 
 
 
 
 
 
 
619
 
620
  if (!isset($options['first_version']) || !isset($options['first_install'])) {
621
- $options['first_version'] = GMW::$version;
622
- $options['first_install'] = current_time('timestamp');
623
- update_option(GMW_OPTIONS, $options);
 
624
  }
625
- } // upgrade
626
 
627
 
628
  // write down a few things on plugin activation
629
  // NO DATA is sent anywhere unless user explicitly agrees to it!
630
  static function activate() {
631
- $options = get_option(GMW_OPTIONS);
632
 
633
  if (!isset($options['first_version']) || !isset($options['first_install'])) {
634
  $options['first_version'] = GMW::$version;
635
  $options['first_install'] = current_time('timestamp');
636
  $options['last_tracking'] = false;
637
- update_option(GMW_OPTIONS, $options);
638
  }
639
  } // activate
640
 
641
 
642
  // clean up on deactivation
643
  static function deactivate() {
644
- $options = get_option(GMW_OPTIONS);
645
 
646
  if (isset($options['allow_tracking']) && $options['allow_tracking'] === true) {
647
  GMW_tracking::clear_cron();
@@ -651,14 +1241,12 @@ class GMW {
651
 
652
  // clean up on uninstall / delete
653
  static function uninstall() {
654
- if (!defined('WP_UNINSTALL_PLUGIN')) {
655
- return;
656
- }
657
-
658
- delete_option(GMW_OPTIONS);
659
  } // uninstall
660
  } // class GMW
661
 
 
 
662
 
663
  // hook everything up
664
  register_activation_hook(__FILE__, array('GMW', 'activate'));
2
  /*
3
  Plugin Name: Google Maps Widget
4
  Plugin URI: http://www.googlemapswidget.com/
5
+ Description: Display a single-image super-fast loading Google map in a widget. A larger, full featured map is available as an image replacement or in a lightbox. Includes shortcode support and numerous options.
6
  Author: Web factory Ltd
7
+ Version: 3.0
8
  Author URI: http://www.webfactoryltd.com/
9
  Text Domain: google-maps-widget
10
  Domain Path: lang
26
  */
27
 
28
 
29
+ // this is an include only WP file
30
  if (!defined('ABSPATH')) {
31
+ die;
32
  }
33
 
34
 
35
+ if (!class_exists('GMW')) :
 
 
36
 
37
+ define('GMW_PLUGIN_DIR', plugin_dir_path( __FILE__ ));
38
 
 
39
  require_once GMW_PLUGIN_DIR . 'gmw-tracking.php';
40
+ require_once GMW_PLUGIN_DIR . 'gmw-widget.php';
41
+ require_once GMW_PLUGIN_DIR . 'gmw-map-styles.php';
42
+ require_once GMW_PLUGIN_DIR . 'gmw-export-import.php';
43
+ if (file_exists(GMW_PLUGIN_DIR . 'gmw-pro-license.php')) {
44
+ require_once GMW_PLUGIN_DIR . 'gmw-pro-license.php';
45
+ }
46
 
47
 
48
  class GMW {
49
+ static $version = '3.0';
50
+ static $options = 'gmw_options';
51
+
52
 
53
  // hook everything up
54
  static function init() {
 
 
55
  if (is_admin()) {
56
+ // check if minimal required WP version is present
57
+ if (false === GMW::check_wp_version(3.8)) {
58
+ return false;
59
+ }
60
 
61
+ // check a few variables
62
+ GMW::maybe_upgrade();
63
 
64
  // aditional links in plugin description
65
  add_filter('plugin_action_links_' . basename(dirname(__FILE__)) . '/' . basename(__FILE__),
66
+ array('GMW', 'plugin_action_links'));
67
+ add_filter('plugin_row_meta', array('GMW', 'plugin_meta_links'), 10, 2);
68
 
69
  // enqueue admin scripts
70
+ add_action('admin_enqueue_scripts', array('GMW', 'admin_enqueue_scripts'));
71
+ add_action('customize_controls_enqueue_scripts', array('GMW', 'admin_enqueue_scripts'));
72
 
73
  // JS dialog markup
74
+ add_action('admin_footer', array('GMW', 'admin_dialogs_markup'));
75
 
76
  // register AJAX endpoints
77
+ add_action('wp_ajax_gmw_activate', array('GMW', 'activate_license_key_ajax'));
 
78
 
79
+ // custom admin actions
80
+ add_action('admin_action_gmw_dismiss_notice', array('GMW', 'dismiss_notice'));
81
+ add_action('admin_action_gmw_export_widgets', array('GMW_export_import', 'send_export_file'));
82
+
83
+ // add options menu
84
+ add_action('admin_menu', array('GMW', 'add_menus'));
85
+
86
+ // settings registration
87
+ add_action('admin_init', array('GMW', 'register_settings'));
88
 
89
  // display various notices
90
+ GMW::add_notices();
91
  } else {
92
  // enqueue frontend scripts
93
+ add_action('wp_enqueue_scripts', array('GMW', 'register_scripts'));
94
+ add_action('wp_footer', array('GMW', 'dialogs_markup'));
95
  }
96
 
97
+ // track plugin usage
98
+ GMW_tracking::init();
99
+
100
  // add shortcode support
101
+ GMW::add_shortcodes();
102
  } // init
103
 
104
 
112
  // initialize widgets
113
  static function widgets_init() {
114
  register_widget('GoogleMapsWidget');
115
+
116
+ if (GMW::is_activated()) {
117
+ register_sidebar( array(
118
+ 'name' => __('Google Maps Widget PRO hidden sidebar', 'google-maps-widget'),
119
+ 'id' => 'google-maps-widget-hidden',
120
+ 'description' => __('Widgets in this area will never be shown anywhere in the theme. Area only helps you to build maps that are displayed with shortcodes.', 'google-maps-widget'),
121
+ 'before_widget' => '<li id="%1$s" class="widget %2$s">',
122
+ 'after_widget' => '</li>',
123
+ 'before_title' => '<h2 class="widgettitle">',
124
+ 'after_title' => '</h2>',
125
+ ));
126
+ } // if activated
127
  } // widgets_init
128
 
129
 
130
+ // all settings are saved in one option
131
+ static function register_settings() {
132
+ register_setting(GMW::$options, GMW::$options, array('GMW', 'sanitize_settings'));
133
+ } // register_settings
134
+
135
+
136
+ // sanitize settings on save
137
+ static function sanitize_settings($values) {
138
+ $new_values = array();
139
+ $old_options = GMW::get_options();
140
+
141
+ // license_key_changed
142
+ if (isset($_POST['submit-license'])) {
143
+ if (empty($values['activation_code'])) {
144
+ $new_values['license_type'] = '';
145
+ $new_values['license_expires'] = '';
146
+ $new_values['license_active'] = false;
147
+ $new_values['activation_code'] = '';
148
+ } else {
149
+ $tmp = GMW::validate_activation_code($values['activation_code']);
150
+ $new_values['activation_code'] = $values['activation_code'];
151
+ if ($tmp['success']) {
152
+ $new_values['license_type'] = $tmp['license_type'];
153
+ $new_values['license_expires'] = $tmp['license_expires'];
154
+ $new_values['license_active'] = $tmp['license_active'];
155
+ if ($tmp['license_active']) {
156
+ add_settings_error(GMW::$options, 'license_key', __('License key saved and activated!', 'google-maps-widget'), 'updated');
157
+ } else {
158
+ add_settings_error(GMW::$options, 'license_key', 'License not active. ' . $tmp['error'], 'error');
159
+ }
160
+ } else {
161
+ add_settings_error(GMW::$options, 'license_key', 'Unable to contact licensing server. Please try again in a few moments.', 'error');
162
+ }
163
+ }
164
+ $values = $new_values;
165
+ } elseif (isset($_POST['submit'])) { // save settings
166
+ foreach ($values as $key => $value) {
167
+ switch ($key) {
168
+ case 'api_key':
169
+ $values[$key] = str_replace(' ', '', $value);
170
+ break;
171
+ case 'sc_map':
172
+ $values[$key] = sanitize_title_with_dashes($value);
173
+ break;
174
+ case 'activation_code':
175
+ $values[$key] = substr(trim($value), 0, 50);
176
+ break;
177
+ case 'track_ga':
178
+ case 'include_jquery':
179
+ case 'include_lightbox_css':
180
+ case 'include_lightbox_js':
181
+ case 'disable_tooltips':
182
+ $values[$key] = (int) $value;
183
+ break;
184
+ } // switch
185
+ } // foreach
186
+
187
+ if (GMW::is_activated()) {
188
+ $values = GMW::check_var_isset($values, array('track_ga' => 0, 'include_jquery' => 0, 'include_lightbox_js' => '0', 'include_lightbox_css' => '0', 'disable_tooltips' => '0'));
189
+ }
190
+
191
+ if (strlen($values['api_key']) < 30) {
192
+ add_settings_error(GMW::$options, 'api_key', __('Google Maps API key is not valid. Access <a href="https://console.developers.google.com/project">Google Developers Console</a> to generate a key for free.', 'google-maps-widget'), 'error');
193
+ }
194
+
195
+ if (GMW::is_activated() && empty($values['sc_map'])) {
196
+ $values['sc_map'] = 'gmw';
197
+ add_settings_error(GMW::$options, 'api_key', __('Map Shortcode is not valid. Please enter a valid shortcode name, eg: <i>gmw</i>.', 'google-maps-widget'), 'error');
198
+ }
199
+ } elseif (isset($_POST['submit-import'])) { // import widgets
200
+ $import_data = GMW_export_import::validate_import_file();
201
+ if (is_wp_error($import_data)) {
202
+ add_settings_error(GMW::$options, 'import_widgets', $import_data->get_error_message(), 'error');
203
+ } else {
204
+ $results = GMW_export_import::process_import_file($import_data);
205
+ add_settings_error(GMW::$options, 'import_widgets', __($results['total'] . ' widgets imported.', 'google-maps-widget'), 'updated');
206
+ }
207
+ }
208
+
209
+ return array_merge($old_options, $values);
210
+ } // sanitize_settings
211
+
212
+
213
+ // return default options
214
+ static function default_options() {
215
+ $defaults = array('sc_map' => 'gmw',
216
+ 'api_key' => '',
217
+ 'track_ga' => '0',
218
+ 'include_jquery' => '1',
219
+ 'include_lightbox_js' => '1',
220
+ 'include_lightbox_css' => '1',
221
+ 'disable_tooltips' => '0',
222
+ 'activation_code' => '',
223
+ 'license_active' => '',
224
+ 'license_expires' => '',
225
+ 'license_type' => ''
226
+ );
227
+
228
+ return $defaults;
229
+ } // default_settings
230
+
231
+
232
+ // get plugin's options
233
+ static function get_options() {
234
+ $options = get_option(GMW::$options, array());
235
+
236
+ if (!is_array($options)) {
237
+ $options = array();
238
+ }
239
+ if (empty($options) || !isset($options['sc_map']) || !isset($options['track_ga'])) {
240
+ $options = array_merge(GMW::default_options(), $options);
241
+ update_option(GMW::$options, $options);
242
+ }
243
+
244
+ return $options;
245
+ } // get_options
246
+
247
+
248
+ // update and set one or more options
249
+ static function set_options($new_options) {
250
+ if (!is_array($new_options)) {
251
+ return false;
252
+ }
253
+
254
+ $options = GMW::get_options();
255
+ $options = array_merge($options, $new_options);
256
+
257
+ update_option(GMW::$options, $options);
258
+
259
+ return $options;
260
+ } // set_options
261
+
262
+
263
  // add widgets link to plugins page
264
  static function plugin_action_links($links) {
265
+ $settings_link = '<a href="' . admin_url('options-general.php?page=gmw_options') . '" title="' . __('Settings for Google Maps Widget', 'google-maps-widget') . '">' . __('Settings', 'google-maps-widget') . '</a>';
266
+ $widgets_link = '<a href="' . admin_url('widgets.php') . '" title="' . __('Configure Google Maps Widget for your theme', 'google-maps-widget') . '">' . __('Widgets', 'google-maps-widget') . '</a>';
267
+
268
  array_unshift($links, $settings_link);
269
+ array_unshift($links, $widgets_link);
270
 
271
  return $links;
272
  } // plugin_action_links
275
  // add links to plugin's description in plugins table
276
  static function plugin_meta_links($links, $file) {
277
  $documentation_link = '<a target="_blank" href="http://www.googlemapswidget.com/documentation/" title="' . __('View Google Maps Widget documentation', 'google-maps-widget') . '">'. __('Documentation', 'google-maps-widget') . '</a>';
278
+ if (GMW::is_activated()) {
279
+ $support_link = '<a target="_blank" href="mailto:gmw@webfactoryltd.com?subject=GMW%20support" title="' . __('Problems? We are here to help!', 'google-maps-widget') . '">' . __('Support', 'google-maps-widget') . '</a>';
280
+ } else {
281
+ $support_link = '<a target="_blank" href="http://wordpress.org/support/plugin/google-maps-widget" title="' . __('Problems? We are here to help!', 'google-maps-widget') . '">' . __('Support', 'google-maps-widget') . '</a>';
282
+ }
283
  $review_link = '<a target="_blank" href="http://wordpress.org/support/view/plugin-reviews/google-maps-widget" title="' . __('If you like it, please review the plugin', 'google-maps-widget') . '">' . __('Review the plugin', 'google-maps-widget') . '</a>';
284
+ $activate_link = '<a href="' . esc_url(admin_url('options-general.php?page=gmw_options&gmw_open_promo_dialog')) . '">' . __('Activate PRO features', 'google-maps-widget') . '</a>';
 
285
 
286
  if ($file == plugin_basename(__FILE__)) {
287
  $links[] = $documentation_link;
288
  $links[] = $support_link;
289
  $links[] = $review_link;
290
+ if (!GMW::is_activated()) {
 
291
  $links[] = $activate_link;
292
  }
293
  }
296
  } // plugin_meta_links
297
 
298
 
299
+ // check if user has the minimal WP version required by GMW
300
  static function check_wp_version($min_version) {
301
  if (!version_compare(get_bloginfo('version'), $min_version, '>=')) {
302
+ add_action('admin_notices', array('GMW', 'notice_min_version_error'));
303
+ return false;
304
  }
305
+
306
+ return true;
307
  } // check_wp_version
308
 
309
 
310
  // display error message if WP version is too low
311
  static function notice_min_version_error() {
312
+ echo '<div class="error"><p>' . sprintf(__('Google Maps Widget <b>requires WordPress version 3.8</b> or higher to function properly. You are using WordPress version %s. Please <a href="%s">update it</a>.', 'google-maps-widget'), get_bloginfo('version'), admin_url('update-core.php')) . '</p></div>';
313
  } // notice_min_version_error
314
 
315
 
316
+ // get users maps api key or one of temporary plugin ones
317
+ static function get_api_key($type = 'static') {
318
+ $options = GMW::get_options();
319
+ $default_api_keys = array('AIzaSyB35Ukt8bKRSY-mII-1Q7DmVx8LnlpmND0', 'AIzaSyCsY7jqJLTFBtRsGLcb-JQOhW6910qh1ts', 'AIzaSyDawXzxQurkSkkTxzzW-WRYKmia_Y28S1Q', 'AIzaSyAROFAWFu9Jr9s7RlBmrMqeQ8COGIL_R1Y', 'AIzaSyD6CpBT4dZ49Or182CXjr29le1eJeZ-NPU');
320
+
321
+ if ($type == 'static') {
322
+ return $options['api_key'];
323
+ } elseif ($type == 'embed') {
324
+ if (!empty($options['api_key'])) {
325
+ return $options['api_key'];
326
+ } else {
327
+ shuffle($default_api_keys);
328
+ return $default_api_keys[0];
329
+ }
330
+ }
331
+
332
+ return false;
333
+ } // get_api_key
334
+
335
+
336
+ // build a complete URL for the iframe map
337
+ static function build_lightbox_url($widget) {
338
+ $map_params = array();
339
+
340
+ if ($widget['lightbox_mode'] == 'place') {
341
+ $map_params['q'] = $widget['address'];
342
+ $map_params['attribution_source'] = get_bloginfo('name');
343
+ $map_params['attribution_web_url'] = get_bloginfo('url');
344
+ $map_params['attribution_ios_deep_link_id'] = 'comgooglemaps://?daddr=' . $widget['address'];
345
+ $map_params['maptype'] = $widget['lightbox_map_type'];
346
+ $map_params['zoom'] = $widget['lightbox_zoom'];
347
+ } elseif ($widget['lightbox_mode'] == 'directions') {
348
+ $map_params['origin'] = $widget['lightbox_origin'];
349
+ $map_params['destination'] = $widget['address'];
350
+ $map_params['maptype'] = $widget['lightbox_map_type'];
351
+ if (!empty($widget['lightbox_unit']) && $widget['lightbox_unit'] != 'auto') {
352
+ $map_params['units'] = $widget['lightbox_unit'];
353
+ }
354
+ if ($widget['lightbox_zoom'] != 'auto') {
355
+ $map_params['zoom'] = $widget['lightbox_zoom'];
356
+ }
357
+ } elseif ($widget['lightbox_mode'] == 'search') {
358
+ if (($coordinates = GMW::get_coordinates($widget['address'])) !== false) {
359
+ $map_params['center'] = $coordinates['lat'] . ',' . $coordinates['lng'];
360
+ }
361
+ $map_params['q'] = $widget['lightbox_search'];
362
+ $map_params['maptype'] = $widget['lightbox_map_type'];
363
+ if ($widget['lightbox_zoom'] != 'auto') {
364
+ $map_params['zoom'] = $widget['lightbox_zoom'];
365
+ }
366
+ } elseif ($widget['lightbox_mode'] == 'view') {
367
+ if (($coordinates = GMW::get_coordinates($widget['address'])) !== false) {
368
+ $map_params['center'] = $coordinates['lat'] . ',' . $coordinates['lng'];
369
+ }
370
+ $map_params['maptype'] = $widget['lightbox_map_type'];
371
+ if ($widget['lightbox_zoom'] != 'auto') {
372
+ $map_params['zoom'] = $widget['lightbox_zoom'];
373
+ }
374
+ } elseif ($widget['lightbox_mode'] == 'streetview') {
375
+ if (($coordinates = GMW::get_coordinates($widget['address'])) !== false) {
376
+ $map_params['location'] = $coordinates['lat'] . ',' . $coordinates['lng'];
377
+ }
378
+ $map_params['heading'] = $widget['lightbox_heading'];
379
+ $map_params['pitch'] = $widget['lightbox_pitch'];
380
+ }
381
+
382
+ if ($widget['lightbox_lang'] != 'auto') {
383
+ $map_params['language'] = $widget['lightbox_lang'];
384
+ }
385
+ $map_params['key'] = GMW::get_api_key('embed');
386
+
387
+ $map_url = 'https://www.google.com/maps/embed/v1/' . $widget['lightbox_mode'] . '?';
388
+ $map_url .= http_build_query($map_params, null, '&amp;');
389
+
390
+ return $map_url;
391
+ } // build_lightbox_url
392
+
393
+
394
+ // fetch coordinates based on the address
395
+ static function get_coordinates($address, $force_refresh = false) {
396
+ $address_hash = md5('gmw_' . $address);
397
+
398
+ if ($force_refresh || ($data = get_transient($address_hash)) === false) {
399
+ $url = 'https://maps.googleapis.com/maps/api/geocode/xml?address=' . urlencode($address) . '&sensor=false';
400
+ $result = wp_remote_get($url, array('sslverify' => false, 'timeout' => 5));
401
+
402
+ if (!is_wp_error($result) && $result['response']['code'] == 200) {
403
+ $data = new SimpleXMLElement($result['body']);
404
+
405
+ if ($data->status == 'OK') {
406
+ $cache_value['lat'] = (string) $data->result->geometry->location->lat;
407
+ $cache_value['lng'] = (string) $data->result->geometry->location->lng;
408
+ $cache_value['address'] = (string) $data->result->formatted_address;
409
+
410
+ // cache coordinates for 2 months
411
+ set_transient($address_hash, $cache_value, DAY_IN_SECONDS * 60);
412
+ $data = $cache_value;
413
+ $data['cached'] = false;
414
+ } elseif (!$data->status) {
415
+ return false;
416
+ } else {
417
+ return false;
418
+ }
419
+ } else {
420
+ return false;
421
+ }
422
+ } else {
423
+ // data is cached
424
+ $data['cached'] = true;
425
+ }
426
+
427
+ return $data;
428
+ } // get_coordinates
429
+
430
+
431
  // print dialogs markup in footer
432
  static function dialogs_markup() {
433
  $out = '';
434
+ $js_vars = array();
435
+ $options = GMW::get_options();
436
 
437
+ if (empty(GoogleMapsWidget::$widgets)) {
 
 
438
  return;
439
  }
440
 
441
+ // add CSS and JS in footer
442
+ $js_vars['track_ga'] = $options['track_ga'];
443
+ if ($options['include_lightbox_css']) {
444
+ $js_vars['colorbox_css'] = plugins_url('/css/gmw.css', __FILE__) . '?ver=' . GMW::$version;
445
+ } else {
446
+ $js_vars['colorbox_css'] = false;
447
+ }
448
+ if ($options['include_lightbox_js']) {
449
+ wp_enqueue_script('gmw-colorbox');
450
+ }
451
+ wp_enqueue_script('gmw');
452
+ wp_localize_script('gmw', 'gmw_data', $js_vars);
453
 
454
+ foreach (GoogleMapsWidget::$widgets as $widget) {
455
+ $map_url = GMW::build_lightbox_url($widget);
 
 
456
 
457
+ if ($widget['lightbox_fullscreen']) {
458
+ $widget['lightbox_width'] = '100%';
459
+ $widget['lightbox_height'] = '100%';
460
+ }
461
 
462
+ $out .= '<div class="gmw-dialog" style="display: none;" data-map-height="' . $widget['lightbox_height'] . '"
463
+ data-map-width="' . $widget['lightbox_width'] . '" data-thumb-height="' . $widget['thumb_height'] . '"
464
+ data-thumb-width="' . $widget['thumb_width'] . '" data-map-skin="' . $widget['lightbox_skin'] . '"
465
+ data-map-iframe-url="' . $map_url . '" id="gmw-dialog-' . $widget['id'] . '" title="' . esc_attr($widget['title']) . '"
466
+ data-close-button="' . (int) in_array('close_button', $widget['lightbox_feature']) . '"
467
+ data-show-title="' . (int) in_array('title', $widget['lightbox_feature']) . '"
468
+ data-close-overlay="' . (int) in_array('overlay_close', $widget['lightbox_feature']) . '"
469
+ data-close-esc="' . (int) in_array('esc_close', $widget['lightbox_feature']) . '">';
470
+ if ($widget['lightbox_header']) {
471
+ $tmp = str_ireplace(array('{address}'), array($widget['address']), $widget['lightbox_header']);
472
+ $out .= '<div class="gmw-header">' . wpautop(do_shortcode($tmp)) . '</div>';
473
  }
474
  $out .= '<div class="gmw-map"></div>';
475
+ if ($widget['lightbox_footer']) {
476
+ $tmp = str_ireplace(array('{address}'), array($widget['address']), $widget['lightbox_footer']);
477
+ $out .= '<div class="gmw-footer">' . wpautop(do_shortcode($tmp)) . '</div>';
478
  }
479
  $out .= "</div>\n";
480
  } // foreach $widgets
483
  } // dialogs_markup
484
 
485
 
486
+ // add plugin menus
487
+ static function add_menus() {
488
+ $title = __('Google Maps Widget', 'google-maps-widget');
489
+ if (GMW::is_activated()) {
490
+ $title = '<span style="font-size: 11px;">' . $title . ' <span style="color: #d54e21;">PRO</span></span>';
491
+ }
492
+
493
+ add_options_page($title, $title, 'manage_options', GMW::$options, array('GMW', 'settings_screen'));
494
+ } // add_menus
495
+
496
+
497
  // check availability and register shortcode
498
+ static function add_shortcodes() {
499
+ if (!GMW::is_activated()) {
500
+ return;
501
+ }
502
+
503
  global $shortcode_tags;
504
+ $options = GMW::get_options();
505
 
506
+ if (isset($shortcode_tags[$options['sc_map']])) {
507
+ add_action('admin_notices', array('GMW', 'notice_sc_conflict_error'));
508
  } else {
509
+ add_shortcode($options['sc_map'], array('GMW', 'do_shortcode'));
510
  }
511
+ } // add_shortcodes
512
 
513
 
514
  // display notice if shortcode name is already taken
515
  static function notice_sc_conflict_error() {
516
+ $options = GMW::get_options();
 
 
517
 
518
+ echo '<div class="error"><p><strong>' . __('Google Maps Widget shortcode is not active!', 'google-maps-widget') . '</strong>' . sprintf(__(' Shortcode <i>[%s]</i> is already in use by another plugin or theme. Please deactivate that theme or plugin, or <a href="%s">change</a> the GMW shortcode.', 'google-maps-widget'), $options['sc_map'], admin_url('options-general.php?page=gmw_options')) . '</p></div>';
519
  } // notice_sc_conflict_error
520
 
521
 
522
+ // handle dismiss button for notices
 
523
  static function dismiss_notice() {
524
+ if (empty($_GET['notice'])) {
525
+ wp_redirect(admin_url());
526
+ exit;
 
 
 
 
 
 
527
  }
528
 
529
+ if ($_GET['notice'] == 'upgrade') {
530
+ GMW::set_options(array('dismiss_notice_upgrade2' => true));
531
+ }
532
+ if ($_GET['notice'] == 'rate') {
533
+ GMW::set_options(array('dismiss_notice_rate' => true));
534
+ }
535
+ if ($_GET['notice'] == 'api_key') {
536
+ GMW::set_options(array('dismiss_notice_api_key' => true));
537
+ }
538
+ if ($_GET['notice'] == 'license_expires') {
539
+ GMW::set_options(array('dismiss_notice_license_expires' => true));
540
+ }
541
+
542
+ if (!empty($_GET['redirect'])) {
543
  wp_redirect($_GET['redirect']);
544
  } else {
545
  wp_redirect(admin_url());
546
  }
547
+
548
  exit;
549
  } // dismiss_notice
550
 
551
 
552
+ // controls which notices are shown
553
  static function add_notices() {
554
+ $options = GMW::get_options();
555
  $notice = false;
556
+
557
+ // license expire notice is always shown
558
+ if (!$notice && GMW::is_activated() && empty($options['dismiss_notice_license_expires']) &&
559
+ (strtotime($options['license_expires']) - time() < DAY_IN_SECONDS * 15)) {
560
+ add_action('admin_notices', array('GMW', 'notice_license_expires'));
561
+ $notice = true;
562
+ } // show license expire notice
563
 
564
+ // API key notification is shown if there are active widgets and no key
565
+ if (!$notice && empty($options['dismiss_notice_api_key']) &&
566
+ !GMW::get_api_key('static') && GMW_tracking::count_active_widgets() > 0) {
567
+ add_action('admin_notices', array('GMW', 'notice_api_key'));
568
+ $notice = true;
569
+ } // show api key notice
570
+
571
+ // upgrade notice is shown after one day
572
+ if (!$notice && empty($options['dismiss_notice_upgrade2']) && !GMW::is_activated() &&
573
+ (current_time('timestamp') - $options['first_install']) > (DAY_IN_SECONDS)) {
574
+ add_action('admin_notices', array('GMW', 'notice_upgrade'));
575
  $notice = true;
576
  } // show upgrade notice
577
 
578
+ // rating notification is shown after 5 days if you have active widgets
579
  if (!$notice && empty($options['dismiss_notice_rate']) &&
580
  GMW_tracking::count_active_widgets() > 0 &&
581
+ (current_time('timestamp') - $options['first_install']) > (DAY_IN_SECONDS * 5)) {
582
+ add_action('admin_notices', array('GMW', 'notice_rate_plugin'));
583
  $notice = true;
584
  } // show rate notice
585
+
586
+ // tracking notification is shown after 15 days and only to non PRO users
587
+ if (!$notice && !isset($options['allow_tracking']) && !GMW::is_activated() &&
588
+ ((current_time('timestamp') - $options['first_install']) > (DAY_IN_SECONDS * 15))) {
589
  add_action('admin_notices', array('GMW_tracking', 'tracking_notice'));
590
  $notice = true;
591
  } // show tracking notice
592
  } // add_notices
593
 
594
 
595
+ // display message if license will expire in 14 days or less
596
+ static function notice_license_expires() {
597
+ $options = GMW::get_options();
598
+
599
+ $buy_url = admin_url('options-general.php?page=gmw_options&gmw_open_promo_dialog');
600
+ $dismiss_url = add_query_arg(array('action' => 'gmw_dismiss_notice', 'notice' => 'license_expires', 'redirect' => urlencode($_SERVER['REQUEST_URI'])), admin_url('admin.php'));
601
+ $days = strtotime($options['license_expires']) - time();
602
+ $days = round($days / DAY_IN_SECONDS);
603
+
604
+ echo '<div id="gmw_license_expires_notice" class="error notice"><p>';
605
+ echo 'Your <b>Google Maps Widget</b> <b style="color: #d54e21;">PRO</b> license ';
606
+ if ($days > 1) {
607
+ echo '<b>expires in ' . $days . ' days</b>!';
608
+ } elseif ($days == 0) {
609
+ echo '<b>expires today</b>!';
610
+ } else {
611
+ echo '<b>has expired</b>!';
612
+ }
613
+ echo ' <a href="' . esc_url($buy_url) . '">Renew now</a> and for a limited time pay only as much as you <b>think is far</b>!<br>';
614
+ echo 'All extra features will be disabled once the license expires.';
615
+
616
+ echo '<br><a href="' . esc_url($buy_url) . '" style="vertical-align: baseline; margin-top: 15px;" class="button-primary">' . __('Pay what you think is fair', 'google-maps-widget') . '</a>';
617
+ echo '&nbsp;&nbsp;<a href="' . esc_url($dismiss_url) . '" class="">' . __('I will pay the full price later', 'google-maps-widget') . '</a>';
618
+ echo '</p></div>';
619
+ } // notice_license_expires
620
+
621
+
622
+ // display message to get pro features for GMW
623
+ static function notice_upgrade() {
624
+ $activate_url = admin_url('options-general.php?page=gmw_options&gmw_open_promo_dialog');
625
  $dismiss_url = add_query_arg(array('action' => 'gmw_dismiss_notice', 'notice' => 'upgrade', 'redirect' => urlencode($_SERVER['REQUEST_URI'])), admin_url('admin.php'));
626
 
627
+ echo '<div id="gmw_activate_notice" class="updated notice"><p>' . __('<b>Google Maps Widget</b> has more than 50 <b style="color: #d54e21;">PRO</b> features. Check them out and grab the limited time offer! Act now!', 'google-maps-widget');
 
 
628
 
629
+ echo '<br><a href="' . esc_url($activate_url) . '" style="vertical-align: baseline; margin-top: 15px;" class="button-primary">' . __('Activate PRO features', 'google-maps-widget') . '</a>';
630
+ echo '&nbsp;&nbsp;<a href="' . esc_url($dismiss_url) . '" class="">' . __('I will pay more later', 'google-maps-widget') . '</a>';
631
  echo '</p></div>';
632
  } // notice_activate_extra_features
633
+
634
+
635
+ // display message to get pro features for GMW
636
  static function notice_rate_plugin() {
637
  $rate_url = 'https://wordpress.org/support/view/plugin-reviews/google-maps-widget?rate=5#postform';
638
  $dismiss_url = add_query_arg(array('action' => 'gmw_dismiss_notice', 'notice' => 'rate', 'redirect' => urlencode($_SERVER['REQUEST_URI'])), admin_url('admin.php'));
639
 
640
+ echo '<div id="gmw_rate_notice" class="updated notice"><p>' . __('Hi! We saw you\'ve been using <b>Google Maps Widget</b> for a few days and wanted to ask for your help to make the plugin even better.<br>We just need a minute of your time to rate the plugin. Thank you!', 'google-maps-widget');
 
 
641
 
642
+ echo '<br><a target="_blank" href="' . esc_url($rate_url) . '" style="vertical-align: baseline; margin-top: 15px;" class="button-primary">' . __('Help us out &amp; rate the plugin', 'google-maps-widget') . '</a>';
643
+ echo '&nbsp;&nbsp;<a href="' . esc_url($dismiss_url) . '">' . __('I already rated the plugin', 'google-maps-widget') . '</a>';
644
  echo '</p></div>';
645
  } // notice_rate_plugin
646
+
647
+
648
+ // display message to get pro features for GMW
649
+ static function notice_api_key() {
650
+ if (GMW::is_plugin_admin_page('settings')) {
651
+ echo '<div id="gmw_api_key_notice" class="error notice"><p>';
652
+ echo '<b>Important!</b> New Google rules dictate that you have to register for a <b>free Google Maps API key</b>. ';
653
+ echo 'Please follow the instructions below to obtain and enter the key. If you don\'t configure the API key the maps will stop working.';
654
+ echo '</p></div>';
655
+ } else {
656
+ $dismiss_url = add_query_arg(array('action' => 'gmw_dismiss_notice', 'notice' => 'api_key', 'redirect' => urlencode($_SERVER['REQUEST_URI'])), admin_url('admin.php'));
657
+
658
+ echo '<div id="gmw_api_key_notice" class="error notice"><p>';
659
+ echo '<b>Important!</b> New Google rules dictate that you have to register for a <b>free Google Maps API key</b>. ';
660
+ echo 'Please open Google Maps Widget <a href="' . admin_url('options-general.php?page=gmw_options') . '" title="Google Maps Widget settings">settings</a> and follow instructions on how to obtain it. If you don\'t configure the API key the maps will stop working.';
661
+ echo '<br><a href="' . admin_url('options-general.php?page=gmw_options') . '" style="vertical-align: baseline; margin-top: 15px;" class="button-primary">' . __('Configure the API key', 'google-maps-widget') . '</a>';
662
+ echo '&nbsp;&nbsp;<a href="' . esc_url($dismiss_url) . '">' . __('Dismiss notice', 'google-maps-widget') . '</a>';
663
+ echo '</p></div>';
664
+ }
665
+ } // notice_api_key
666
 
667
 
668
+ // register frontend scripts and styles
669
+ static function register_scripts() {
670
+ $options = GMW::get_options();
671
+
672
+ wp_register_style('gmw', plugins_url('/css/gmw.css', __FILE__), array(), GMW::$version);
673
+
674
+ if ($options['include_jquery']) {
675
+ wp_register_script('gmw-colorbox', plugins_url('/js/jquery.colorbox.min.js', __FILE__), array('jquery'), GMW::$version, true);
676
+ wp_register_script('gmw', plugins_url('/js/gmw.js', __FILE__), array('jquery'), GMW::$version, true);
677
+ } else {
678
+ wp_register_script('gmw-colorbox', plugins_url('/js/jquery.colorbox.min.js', __FILE__), array(), GMW::$version, true);
679
+ wp_register_script('gmw', plugins_url('/js/gmw.js', __FILE__), array(), GMW::$version, true);
680
  }
681
+ } // register_scripts
682
 
683
 
684
+ // enqueue CSS and JS scripts in admin
685
  static function admin_enqueue_scripts() {
686
  global $wp_customize;
687
+ $options = GMW::get_options();
688
 
689
+ if (GMW::is_plugin_admin_page('widgets') || GMW::is_plugin_admin_page('settings') || !empty($wp_customize)) {
690
  wp_enqueue_script('jquery-ui-tabs');
691
  wp_enqueue_script('jquery-ui-dialog');
692
+ wp_enqueue_script('wp-color-picker');
693
+ wp_enqueue_script('wp-pointer');
694
  wp_enqueue_script('gmw-cookie', plugins_url('js/jquery.cookie.js', __FILE__), array('jquery'), GMW::$version, true);
695
+ wp_enqueue_script('gmw-gmap', '//maps.google.com/maps/api/js', array(), GMW::$version, true);
696
+ wp_enqueue_script('gmw-select2', plugins_url('js/select2.min.js', __FILE__), array('jquery'), GMW::$version, true);
697
  wp_enqueue_script('gmw-admin', plugins_url('js/gmw-admin.js', __FILE__), array('jquery'), GMW::$version, true);
698
 
699
  wp_enqueue_style('wp-jquery-ui-dialog');
700
+ wp_enqueue_style('wp-color-picker');
701
+ wp_enqueue_style('wp-pointer');
702
+ wp_enqueue_style('gmw-select2', plugins_url('css/select2.min.css', __FILE__), array(), GMW::$version);
703
  wp_enqueue_style('gmw-admin', plugins_url('css/gmw-admin.css', __FILE__), array(), GMW::$version);
704
 
705
+ $js_localize = array('activate_ok' => __('Superb! PRO features are active ;)', 'google-maps-widget'),
706
+ 'dialog_map_title' => __('Pick an address by drag &amp; dropping the pin', 'google-maps-widget'),
 
 
 
707
  'undocumented_error' => __('An undocumented error has occured. Please refresh the page and try again.', 'google-maps-widget'),
708
+ 'dialog_promo_title' => '<img alt="' . __('Google Maps Widget PRO', 'google-maps-widget') . '" title="' . __('Google Maps Widget PRO', 'google-maps-widget') . '" src="' . plugins_url('/images/gmw-logo-pro-dialog.png', __FILE__) . '">',
709
+ 'dialog_pins_title' => __('Pins Library', 'google-maps-widget'),
710
+ 'plugin_name' => GMW::is_activated()? __('Google Maps Widget PRO', 'google-maps-widget'): __('Google Maps Widget', 'google-maps-widget'),
711
+ 'id_base' => 'googlemapswidget',
712
+ 'map_picker_not_active' => __('Drag&drop address picking interface is a PRO feature. Interested in switching to PRO?', 'google-maps-widget'),
713
+ 'map' => false,
714
+ 'marker' => false,
715
+ 'pins_library' => plugins_url('/images/pins/', __FILE__),
716
+ 'disable_tooltips' => $options['disable_tooltips'],
717
+ 'is_activated' => GMW::is_activated());
718
  wp_localize_script('gmw-admin', 'gmw', $js_localize);
719
  } // if
720
  } // admin_enqueue_scripts
721
 
722
 
723
  // check if plugin's admin page is shown
724
+ static function is_plugin_admin_page($page = 'widgets') {
725
  $current_screen = get_current_screen();
726
 
727
+ if ($page == 'widgets' && $current_screen->id == 'widgets') {
728
+ return true;
729
+ }
730
+
731
+ if ($page == 'settings' && $current_screen->id == 'settings_page_gmw_options') {
732
  return true;
 
 
733
  }
734
+
735
+ if ($page == 'plugins' && $current_screen->id == 'plugins') {
736
+ return true;
737
+ }
738
+
739
+ return false;
740
  } // is_plugin_admin_page
741
 
742
 
743
+ // check if license key is valid and not expired
744
+ static function is_activated($license_type = false) {
745
+ $options = GMW::get_options();
746
 
747
+ if (isset($options['license_active']) && $options['license_active'] === true &&
748
+ isset($options['license_expires']) && $options['license_expires'] >= date('Y-m-d')) {
749
+
750
+ if (mt_rand(0, 500) == 500) {
751
+ $tmp = GMW::validate_activation_code($options['activation_code']);
752
+ if ($tmp['success']) {
753
+ $update['license_type'] = $tmp['license_type'];
754
+ $update['license_expires'] = $tmp['license_expires'];
755
+ $update['license_active'] = $tmp['license_active'];
756
+ GMW::set_options($update);
757
+ }
758
+ } // random license revalidation
759
+
760
+ // check for specific license type?
761
+ if (!empty($license_type)) {
762
+ if (strtolower(trim($license_type)) == strtolower($options['license_type'])) {
763
+ return true;
764
+ } else {
765
+ return false;
766
+ }
767
+ } // check specific license type
768
+
769
+ return true;
770
  } else {
771
+ return false;
 
 
 
 
772
  }
773
  } // is_activated
774
 
775
 
776
  // echo markup for promo dialog; only on widgets page
777
  static function admin_dialogs_markup() {
778
+ $out = '';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
779
 
780
+ if ((GMW::is_plugin_admin_page('widgets') || GMW::is_plugin_admin_page('settings'))) {
781
+ $out .= '<div id="gmw_promo_dialog" style="display: none;">';
782
+
783
+ $out .= '<div id="gmw_dialog_intro" class="gmw_promo_dialog_screen">
784
+ <div class="content">
785
+ <div class="center boxed-h">Not sure if it\'s worth it? See everything <span class="gmw-pro-red">PRO</span> has to offer.<br><a href="#" class="button-secondary gmw_goto_pro">See PRO features</a></div>';
786
+ $out .= '<div class="gmw-left-box gmw-content-box">
787
+ <h3>Buy PRO</h3>
788
+ <p><strike><i>$29</i></strike> $19 for unlimited sites</p>
789
+ <i class="dashicons dashicons-star-filled"></i>
790
+ <ul>
791
+ <li>One-time fee - lifetime license</li>
792
+ <li>Premium email support for 1 year</li>
793
+ <li>Access to all PRO features</li>
794
+ <li>Export &amp; import feature</li>
795
+ <li style="display: none;">Extra skins and icons</li>
796
  </ul>
797
+ <a href="http://www.googlemapswidget.com/buy/?p=pro" data-noprevent="1" class="gmw_goto_activation button-primary" target="_blank">BUY NOW</a>
798
+ </div>';
799
+ $out .= '<div class="gmw-right-box gmw-content-box gmw-content-box-alternate">
800
+ <h3>Donate</h3>
801
+ <p>as much as you thinks is fair</p>
802
+ <i class="dashicons dashicons-heart"></i>
803
+ <ul>
804
+ <li>One-time fee - lifetime license</li>
805
+ <li>Priority community based support</li>
806
+ <li>Access to PRO features</li>
807
+ <li class="gmw-not-available">Export &amp; import feature</li>
808
+ <li style="display: none;" class="gmw-not-available">Extra skins and icons</li>
809
+ </ul>
810
+ <a href="http://www.googlemapswidget.com/buy/?p=donate" data-noprevent="1" class="gmw_goto_activation button-secondary" target="_blank">Donate</a>
811
+ </div>';
812
+ $out .= '<p class="clear center gmw-footer-intro">Already have a license key? <a href="#" class="gmw_goto_activation">Enter it here</a></p>';
813
+ $out .= '</div></div>'; // dialog intro
814
+
815
+ $out .= '<div id="gmw_dialog_activate" style="display: none;" class="gmw_promo_dialog_screen">
816
+ <div class="content">';
817
+ $out .= '<p class="input_row">
818
+ <input type="text" id="gmw_code" name="gmw_code" placeholder="Please enter the license key.">
819
+ <span style="display: none;" class="error gmw_code">Unable to verify license key. Unknown error.</span></p>
820
+ <p class="center">
821
+ <a href="#" class="button button-primary" id="gmw_activate">Activate PRO features</a>
822
+ </p>
823
+ <p class="center">If you don\'t have a license key - <a href="#" class="gmw_goto_intro">Get it now</a></p>
824
+ </div>';
825
+ $out .= '<div class="footer">
826
+ <p><b>FAQ</b></p>
827
+ <ul class="gmw-faq-ul">
828
+ <li>Payed or donated and didn\'t received the key? <a href="mailto:gmw@webfactoryltd.com?subject=Activation%20key%20problem">Email us</a></li>
829
+ <li>Key not working? Our <a href="mailto:gmw@webfactoryltd.com?subject=Activation%20key%20problem">support</a> is here to help</li>
830
+ <li>Your key is valid for an unlimited number of sites</li>
831
+ </ul>
832
+ </div>';
833
+ $out .= '</div>'; // activate screen
834
+
835
+ $out .= '<div id="gmw_dialog_pro_features" style="display: none;" class="gmw_promo_dialog_screen">
836
+ <div class="content">';
837
+ $out .= '<h4>Detailed description of <span class="gmw-pro-red">PRO</span> features</h4>';
838
+ $out .= '<ul class="list-left">';
839
+ $out .= '<li>11 thumbnail map skins</li>
840
+ <li>700+ thumbnail map pins</li>
841
+ <li>4 extra map image formats for even faster loading</li>
842
+ <li>replace thumb with interactive map feature</li>
843
+ <li>extra hidden sidebar for easier shortcode handling</li>
844
+ <li>custom map language option</li>
845
+ <li>4 map modes; directions, view, street & streetview</li>
846
+ <li>fully customizable pin options for thumbnail map</li>
847
+ <li>Advanced cache &amp; fastest loading times</li>
848
+ <li>JS &amp; CSS optimization options</li>';
849
+ $out .= '</ul>';
850
+ $out .= '<ul class="list-right">';
851
+ $out .= '<li>3 additional map link types</li>
852
+ <li>fullscreen lightbox mode</li>
853
+ <li>extra lightbox features</li>
854
+ <li>19 lightbox skins</li>
855
+ <li>full shortcode support</li>
856
+ <li>export & import tools</li>
857
+ <li>Google Analytics integration</li>
858
+ <li>no ads</li>
859
+ <li>no promo emails</li>
860
+ <li>premium support</li>';
861
+ $out .= '</ul>';
862
+ $out .= ' </div>';
863
+ $out .= '<div class="footer">';
864
+ $out .= '<p class="center"><a href="#" class="button-secondary gmw_goto_intro">Go PRO now</a><br>
865
+ Or <a href="#" class="gmw_goto_activation">enter the license key</a> if you already have it.</p>';
866
+ $out .= '</div>';
867
+ $out .= '</div>'; // pro features screen
868
+
869
+ $out .= '</div>'; // dialog
870
+ } // promo dialog
871
 
872
+ // address picker and pins dialog
873
+ if (GMW::is_plugin_admin_page('widgets') && GMW::is_activated()) {
874
+ $out .= '<div id="gmw_map_dialog" style="display: none;">';
875
+ $out .= '<div id="gmw_map_canvas"></div><hr>';
876
+ $out .= '<div id="gmw_map_dialog_footer">';
877
+
878
+ // current coordinates
879
+ $out .= '<div class="gmw_dialog_current_coordinates">';
880
+ $out .= 'Current coordinates: <input type="text" id="gmw_map_pin_coordinates" class="regular-text"> <a href="#" class="button-secondary gmw-move-pin" data-location-holder="gmw_map_pin_coordinates">Go</a><br>';
881
+ $out .= '<a href="#" class="button-secondary gmw_close_save_map_dialog" data-location-holder="gmw_map_pin_coordinates">Use selected coordinates</a>';
882
+ $out .= '</div>';
883
+
884
+ // closest matching address
885
+ $out .= '<div class="gmw_closest_matching_address">';
886
+ $out .= 'Closest matching address: <input type="text" id="gmw_map_pin_address" class="regular-text"> <a href="#" class="button-secondary gmw-move-pin" data-location-holder="gmw_map_pin_address">Go</a><br>';
887
+ $out .= '<a href="#" class="button-primary gmw_close_save_map_dialog" data-location-holder="gmw_map_pin_address">Use selected address</a>';
888
+ $out .= '</div>';
889
+
890
+ $out .= '</div>'; // footer
891
+ $out .= '</div>'; // dialog
892
+
893
+ // pins
894
+ $out .= '<div id="gmw_pins_dialog" style="display: none;">';
895
+ $out .= '<div id="search_header"><input type="search" id="pins_search" name="pins_search" placeholder="Search pins by name, eg hotel"></div>';
896
+ $out .= '<div id="pins_container">';
897
+ foreach (glob(GMW_PLUGIN_DIR . 'images/pins/default/*.png') as $filename) {
898
+ $filename = basename($filename);
899
+ $name = str_replace(array('.png', '-', '_'), array('', ' ', ' '), $filename);
900
+ $name = ucfirst($name);
901
+ $filename = 'default/' . $filename;
902
+ $out .= '<a href="#" data-filename="' . $filename . '"><img src="" alt="' . $name . '" title="' . $name . '"><span>' . $name . '</span></a>';
903
+ }
904
+ $out .= '<p><i>Most icons are created by Nicolas Mollet under the Creative Commons Attribution-Share Alike 3.0 Unported license. You can find them on the <a class="skip-search" href="https://mapicons.mapsmarker.com/" target="_blank">Maps Icons Collection</a>.</i></p>';
905
+ $out .= '</div>';
906
+ $out .= '</div>'; // dialog
907
+ } // address picker and pins dialog if activated
908
 
909
  echo $out;
910
  } // admin_dialogs_markup
911
 
912
 
913
+ // complete options screen markup
914
+ static function settings_screen() {
915
+ $options = GMW::get_options();
916
+
917
+ echo '<div class="wrap gmw-options">';
918
+ if (GMW::is_activated()) {
919
+ echo '<h1><img alt="' . __('Google Maps Widget PRO', 'google-maps-widget') . '" title="' . __('Google Maps Widget PRO', 'google-maps-widget') . '" height="55" src="' . plugins_url('/images/gmw-logo-pro.png', __FILE__) . '"></h1>';
920
  } else {
921
+ echo '<h1><img alt="' . __('Google Maps Widget', 'google-maps-widget') . '" title="' . __('Google Maps Widget', 'google-maps-widget') . '" height="55" src="' . plugins_url('/images/gmw-logo.png', __FILE__) . '"></h1>';
922
  }
923
 
924
+ echo '<form method="post" action="options.php" enctype="multipart/form-data">';
925
+ settings_fields(GMW::$options);
926
+
927
+ echo '<div id="gmw-settings-tabs"><ul>';
928
+ echo '<li><a href="#gmw-settings">' . __('Settings', 'google-maps-widget') . '</a></li>';
929
+ echo '<li><a href="#gmw-export">' . __('Export &amp; Import', 'google-maps-widget') . '</a></li>';
930
+ echo '<li><a href="#gmw-license">' . __('License', 'google-maps-widget') . '</a></li>';
931
+ echo '</ul>';
932
+
933
+ echo '<div id="gmw-settings">';
934
+ echo '<table class="form-table">';
935
+ echo '<tr>
936
+ <th scope="row"><label for="api_key">' . __('Google Maps API Key', 'google-maps-widget') . '</label></th>
937
+ <td><input name="' . GMW::$options . '[api_key]" type="text" id="api_key" value="' . esc_attr($options['api_key']) . '" class="regular-text" placeholder="Google Maps API key" oninput="setCustomValidity(\'\')" oninvalid="this.setCustomValidity(\'Please use Google Developers Console to generate an API key and enter it here. It is completely free.\')">
938
+ <p class="description">New Google Maps usage policy dictates that everyone using the maps should register for a free API key.<br>
939
+ Please create a key using <a href="https://console.developers.google.com/project" target="blank">Google Developers Console</a> or use this <a href="https://console.developers.google.com/flows/enableapi?apiid=maps_embed_backend&keyType=CLIENT_SIDE&reusekey=true" target="_blank">wizard</a>.
940
+ Detailed video instructions coming soon.</p></td>
941
+ </tr>';
942
+ if (GMW::is_activated()) {
943
+ echo '<tr>
944
+ <th scope="row"><label for="sc_map">' . __('Map Shortcode', 'google-maps-widget') . '</label></th>
945
+ <td><input class="regular-text" name="' . GMW::$options . '[sc_map]" type="text" id="sc_map" value="' . esc_attr($options['sc_map']) . '" placeholder="Map shortcode" required="required" oninvalid="this.setCustomValidity(\'Please enter the shortcode you want to use for Google Maps Widget maps.\')" oninput="setCustomValidity(\'\')">
946
+ <p class="description">If the default shortcode "gmw" is taken by another plugin change it to something else, eg: "gmaps".</p></td>
947
+ </tr>';
948
+ }
949
+ echo '</table>';
950
+
951
+ if (GMW::is_activated()) {
952
+ echo '<h3 class="title">Advanced Settings</h3>';
953
+ echo '<table class="form-table">';
954
+ echo '<tr>
955
+ <th scope="row"><label for="track_ga">' . __('Track with Google Analytics', 'google-maps-widget') . '</label></th>
956
+ <td><input name="' . GMW::$options . '[track_ga]" type="checkbox" id="track_ga" value="1"' . checked('1', $options['track_ga'], false) . '>
957
+ <span class="description">Each time the interactive map is opened either in lightbox or as a thumbnail replacement a Google Analytics Event will be tracked.<br>You need to have GA already configured on the site. It is fully compatibile with all GA plugins and all GA tracking code versions. Default: unchecked.</span></td></tr>';
958
+ echo '<tr>
959
+ <th scope="row"><label for="include_jquery">' . __('Include jQuery', 'google-maps-widget') . '</label></th>
960
+ <td><input name="' . GMW::$options . '[include_jquery]" type="checkbox" id="include_jquery" value="1"' . checked('1', $options['include_jquery'], false) . '>
961
+ <span class="description">If you\'re experiencing problems with double jQuery include disable this option. Default: checked.</span></td></tr>';
962
+ echo '<tr>
963
+ <th scope="row"><label for="include_lightbox_css">' . __('Include Colorbox &amp; Thumbnail CSS', 'google-maps-widget') . '</label></th>
964
+ <td><input name="' . GMW::$options . '[include_lightbox_css]" type="checkbox" id="include_lightbox_css" value="1"' . checked('1', $options['include_lightbox_css'], false) . '>
965
+ <span class="description">If your theme or other plugins already include Colorbox CSS disable this option.<br>Please note that widget (thumbnail map) related CSS will also be removed which will cause minor differences in the way it\'s displayed. Default: checked.</span></td></tr>';
966
+ echo '<tr>
967
+ <th scope="row"><label for="include_lightbox_js">' . __('Include Colorbox JS', 'google-maps-widget') . '</label></th>
968
+ <td><input name="' . GMW::$options . '[include_lightbox_js]" type="checkbox" id="include_lightbox_js" value="1"' . checked('1', $options['include_lightbox_js'], false) . '>
969
+ <span class="description">If your theme or other plugins already include Colorbox JS file disable this option. Default: checked.</span></td></tr>';
970
+ echo '<tr>
971
+ <th scope="row"><label for="disable_tooltips">' . __('Disable Admin Tooltips', 'google-maps-widget') . '</label></th>
972
+ <td><input name="' . GMW::$options . '[disable_tooltips]" type="checkbox" id="disable_tooltips" value="1"' . checked('1', $options['disable_tooltips'], false) . '>
973
+ <span class="description">All settings in widget edit GUI have tooltips. This setting completely disables them. Default: unchecked.</span></td></tr>';
974
+ echo '</table>';
975
+ } // advanced settings
976
+
977
+ if (!GMW::is_activated()) {
978
+ echo '<p>Not sure if you should upgrade to <span class="gmw-pro-red">PRO</span>? It offers more than 50 extra features like shortcodes and Google Analytics tracking; <a href="#" class="open_promo_dialog">compare features now</a>.</p>';
979
  }
980
 
981
+ echo get_submit_button(__('Save Settings', 'google-maps-widget'));
982
+ echo '</div>'; // settings tab
983
+
984
+ echo '<div id="gmw-export">';
985
+ if (GMW::is_activated('pro')) {
986
+ echo '<table class="form-table">';
987
+ echo '<tr>
988
+ <th scope="row"><label for="">' . __('Export widgets', 'google-maps-widget') . '</label></th>
989
+ <td><a href="' . add_query_arg(array('action' => 'gmw_export_widgets'), admin_url('admin.php')) . '" class="button button-secondary">Download export file</a>
990
+ <p class="description">The export file will only containt Google Maps Widget widgets. This includes active (in sidebars) widgets and inactive ones as well.</p></td>
991
+ </tr>';
992
+ echo '<tr>
993
+ <th scope="row"><label for="">' . __('Import widgets', 'google-maps-widget') . '</label></th>
994
+ <td><input type="file" name="gmw_widgets_import" id="gmw_widgets_import" accept=".txt">
995
+ <input type="submit" name="submit-import" id="submit-import" class="button button-secondary button-large" value="Import widgets">';
996
+ echo '<p class="description">Only use TXT export files generated by Google Maps Widget.<br>
997
+ Existing GMW widgets will not be overwritten nor any other widgets touched. If you renamed a sidebar or old one no longer exists widgets will be placed in the inactive widgets area.</p></td>
998
+ </tr>';
999
+ echo '</table>';
1000
  } else {
1001
+ echo '<p>Export &amp; Import are one of many <span class="gmw-pro-red">PRO</span> features. <a href="#" class="open_promo_dialog">Upgrade now</a> to get access to more than 50 extra options.</p>';
1002
  }
1003
+ echo '</div>'; // export/import tab
1004
+
1005
+ echo '<div id="gmw-license">';
1006
+ if (!GMW::is_activated()) {
1007
+ echo '<p>Not sure if you should upgrade to <span class="gmw-pro-red">PRO</span>? It offers more than 50 extra features; <a href="#" class="open_promo_dialog">compare features now</a>.</p>';
1008
+ }
1009
+ echo '<table class="form-table">';
1010
+ echo '<tr>
1011
+ <th scope="row"><label for="activation_code">' . __('License Key', 'google-maps-widget') . '</label></th>
1012
+ <td><input class="regular-text" name="' . GMW::$options . '[activation_code]" type="text" id="activation_code" value="' . esc_attr($options['activation_code']) . '" placeholder="12345-12345-12345">
1013
+ <p class="description">License key can be found in the confirmation email you received after purchasing.</p></td>
1014
+ </tr>';
1015
+ if (GMW::is_activated()) {
1016
+ echo '<tr>
1017
+ <th scope="row"><label for="">' . __('License Key Status', 'google-maps-widget') . '</label></th>
1018
+ <td><b style="color: green">Active</b><br>
1019
+ Type: ' . $options['license_type'] . '<br>
1020
+ Valid ' . ($options['license_expires'] == '2035-01-01'? 'indefinitely': 'until ' . date(get_option('date_format'), strtotime($options['license_expires']))) . '</td>
1021
+ </tr>';
1022
+ } else {
1023
+ echo '<tr>
1024
+ <th scope="row"><label for="">' . __('License Key Status', 'google-maps-widget') . '</label></th>
1025
+ <td><b style="color: red">Inactive</b></td>
1026
+ </tr>';
1027
+ }
1028
+ echo '</table>';
1029
+ echo get_submit_button(__('Save and Validate License Key', 'google-maps-widget'), 'primary large', 'submit-license', true, array());
1030
+ echo '</div>'; // license tab
1031
 
1032
+ echo '</form>';
1033
+ echo '</div>'; // wrap
1034
+ } // settings_screen
1035
 
 
 
 
1036
 
1037
+ // check activation code and save if valid
1038
+ static function activate_license_key_ajax() {
1039
+ $code = str_replace(' ', '', $_POST['code']);
1040
+
1041
+ if (strlen($code) < 6 || strlen($code) > 50) {
1042
+ wp_send_json_error(__('Please double-check the license key. The format is not valid.', 'google-maps-widget'));
1043
+ }
1044
 
1045
+ $tmp = GMW::validate_activation_code($code);
1046
+ if ($tmp['success']) {
1047
+ GMW::set_options(array('activation_code' => $code, 'license_active' => $tmp['license_active'], 'license_type' => $tmp['license_type'], 'license_expires' => $tmp['license_expires']));
1048
+ }
1049
+ if ($tmp['license_active'] && $tmp['success']) {
1050
  wp_send_json_success();
1051
  } else {
1052
+ wp_send_json_error($tmp['error']);
1053
  }
1054
+ } // activate_license_key_ajax
1055
 
1056
 
1057
+ // check if activation code is valid
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1058
  static function validate_activation_code($code) {
1059
+ $out = array('success' => false, 'license_active' => false, 'activation_code' => $code, 'error' => '', 'license_type' => '', 'license_expires' => '1900-01-01');
1060
+
1061
+ $url = add_query_arg(array('code' => $code, 'domain' => get_home_url()), 'http://www.googlemapswidget.com/verify_license.php');
1062
+ $response = wp_remote_get(esc_url_raw($url), array('sslverify' => false));
1063
 
1064
+ if (!is_wp_error($response) && wp_remote_retrieve_body($response)) {
1065
+ $result = wp_remote_retrieve_body($response);
1066
+ $result = @json_decode($result, true);
1067
+ if (is_array($result['data']) && sizeof($result['data']) == 4) {
1068
+ $out['success'] = true;
1069
+ $out = array_merge($out, $result['data']);
1070
+ } else {
1071
+ $out['error'] = 'Invalid response from licensing server. Please try again later.';
1072
+ }
1073
  } else {
1074
+ $out['error'] = 'Unable to contact licensing server. Please try again in a few moments.';
1075
  }
1076
+
1077
+ return $out;
1078
  } // validate_activation_code
1079
 
1080
 
1082
  static function create_select_options($options, $selected = null, $output = true) {
1083
  $out = "\n";
1084
 
1085
+ if(!is_array($selected)) {
1086
+ $selected = array($selected);
1087
+ }
1088
+
1089
  foreach ($options as $tmp) {
1090
+ $data = '';
1091
+ if (isset($tmp['data-imagesrc'])) {
1092
+ $data .= ' data-imagesrc="' . $tmp['data-imagesrc'] . '" ';
1093
+ }
1094
+ if (isset($tmp['disabled'])) {
1095
+ $data .= ' disabled="disabled" ';
1096
+ }
1097
+ if ($tmp['val'] == '-1') {
1098
+ $data .= ' class="gmw_promo" ';
1099
+ }
1100
+ if (in_array($tmp['val'], $selected)) {
1101
+ $out .= "<option selected=\"selected\" value=\"{$tmp['val']}\"{$data}>{$tmp['label']}&nbsp;</option>\n";
1102
  } else {
1103
+ $out .= "<option value=\"{$tmp['val']}\"{$data}>{$tmp['label']}&nbsp;</option>\n";
1104
  }
1105
  } // foreach
1106
 
1112
  } // create_select_options
1113
 
1114
 
1115
+ // sanitizes color code string, leaves # intact
1116
+ static function sanitize_hex_color( $color ) {
1117
+ if (empty($color)) {
1118
+ return '#ff0000';
1119
+ }
1120
 
1121
+ // 3 or 6 hex digits
1122
+ if (preg_match('|^#([A-Fa-f0-9]{3}){1,2}$|', $color)) {
1123
+ return $color;
1124
+ }
1125
+ } // sanitize_hex_color
1126
 
 
 
1127
 
1128
+ // converts color from human readable to hex
1129
+ static function convert_color($color) {
1130
+ $color_codes = array('black' => '#000000', 'white' => '#ffffff',
1131
+ 'brown' => '#a52a2a', 'green' => '#00ff00',
1132
+ 'purple' => '#800080', 'yellow' => '#ffff00',
1133
+ 'blue' => '#0000ff', 'gray' => '#808080',
1134
+ 'orange' => '#ffa500', 'red' => '#ff0000');
1135
 
1136
+ $color = strtolower(trim($color));
1137
+
1138
+ if (empty($color) || !isset($color_codes[$color])) {
1139
+ return '#ff0000';
 
 
 
 
 
 
 
1140
  } else {
1141
+ return $color_codes[$color];
 
1142
  }
1143
+ } // convert_color
1144
 
1145
+
1146
+ // helper function for checkbox handling
1147
+ static function check_var_isset($values, $variables) {
1148
+ foreach ($variables as $key => $value) {
1149
+ if (!isset($values[$key])) {
1150
+ $values[$key] = $value;
1151
+ }
1152
+ }
1153
+
1154
+ return $values;
1155
+ } // check_var_isset
1156
 
1157
 
1158
  // shortcode support for any GMW instance
1159
  static function do_shortcode($atts, $content = null) {
1160
+ if (!GMW::is_activated()) {
1161
  return '';
1162
  }
1163
 
1164
  global $wp_widget_factory;
1165
  $out = '';
1166
+ $atts = shortcode_atts(array('id' => 0, 'thumb_width' => 0, 'thumb_height' => 0), $atts);
1167
  $id = (int) $atts['id'];
1168
  $widgets = get_option('widget_googlemapswidget');
1169
 
1170
+ if (!$id || !isset($widgets[$id]) || empty($widgets[$id])) {
1171
+ $out .= '<span class="gmw-error">Google Maps Widget shortcode error - please double-check the widget ID.</span>';
1172
  } else {
1173
  $widget_args = $widgets[$id];
1174
  $widget_instance['widget_id'] = 'googlemapswidget-' . $id;
1175
  $widget_instance['widget_name'] = 'Google Maps Widget';
1176
+
1177
+ if (!empty($atts['thumb_width']) && !empty($atts['thumb_height'])) {
1178
+ $widget_args['thumb_width'] = min(640, max(50, (int) $atts['thumb_width']));
1179
+ $widget_args['thumb_height'] = min(640, max(50, (int) $atts['thumb_height']));
1180
+ }
1181
 
1182
+ $out .= '<div class="gmw-shortcode-widget">';
1183
  ob_start();
1184
  the_widget('GoogleMapsWidget', $widget_args, $widget_instance);
1185
  $out .= ob_get_contents();
1186
  ob_end_clean();
1187
+ $out .= '</div>';
1188
  }
1189
+
1190
  return $out;
1191
  } // do_shortcode
1192
 
1193
 
1194
  // activate doesn't get fired on upgrades so we have to compensate
1195
+ public static function maybe_upgrade() {
1196
+ $options = GMW::get_options();
1197
+
1198
+ // pro was active with old key, recheck
1199
+ if (!empty($options['activation_code']) && $options['license_active'] === '') {
1200
+ $tmp = GMW::validate_activation_code($options['activation_code']);
1201
+ if ($tmp['success']) {
1202
+ $update['license_type'] = $tmp['license_type'];
1203
+ $update['license_expires'] = $tmp['license_expires'];
1204
+ $update['license_active'] = $tmp['license_active'];
1205
+ GMW::set_options($update);
1206
+ }
1207
+ } // old license upgrade
1208
 
1209
  if (!isset($options['first_version']) || !isset($options['first_install'])) {
1210
+ $update = array();
1211
+ $update['first_version'] = GMW::$version;
1212
+ $update['first_install'] = current_time('timestamp');
1213
+ GMW::set_options($update);
1214
  }
1215
+ } // maybe_upgrade
1216
 
1217
 
1218
  // write down a few things on plugin activation
1219
  // NO DATA is sent anywhere unless user explicitly agrees to it!
1220
  static function activate() {
1221
+ $options = GMW::get_options();
1222
 
1223
  if (!isset($options['first_version']) || !isset($options['first_install'])) {
1224
  $options['first_version'] = GMW::$version;
1225
  $options['first_install'] = current_time('timestamp');
1226
  $options['last_tracking'] = false;
1227
+ GMW::set_options($options);
1228
  }
1229
  } // activate
1230
 
1231
 
1232
  // clean up on deactivation
1233
  static function deactivate() {
1234
+ $options = GMW::get_options();
1235
 
1236
  if (isset($options['allow_tracking']) && $options['allow_tracking'] === true) {
1237
  GMW_tracking::clear_cron();
1241
 
1242
  // clean up on uninstall / delete
1243
  static function uninstall() {
1244
+ delete_option(GMW::$options);
 
 
 
 
1245
  } // uninstall
1246
  } // class GMW
1247
 
1248
+ endif; // if GMW class exists
1249
+
1250
 
1251
  // hook everything up
1252
  register_activation_hook(__FILE__, array('GMW', 'activate'));
images/blank.gif DELETED
Binary file
images/border.png DELETED
Binary file
images/colorbox/dark/border.png ADDED
Binary file
images/colorbox/dark/controls.png ADDED
Binary file
images/colorbox/dark/loading_background.png ADDED
Binary file
images/colorbox/dark/overlay.png ADDED
Binary file
images/colorbox/darkrimmed/colorbox_darkrimmed.png ADDED
Binary file
images/colorbox/fancyoverlay/colorbox_fancyoverlay.png ADDED
Binary file
images/colorbox/gears/frame1.png ADDED
Binary file
images/colorbox/gears/frame2.png ADDED
Binary file
images/colorbox/gray-square/border.png ADDED
Binary file
images/colorbox/gray-square/controls.png ADDED
Binary file
images/colorbox/gray-square/loading_background.png ADDED
Binary file
images/colorbox/loading.gif ADDED
Binary file
images/colorbox/minimal-circles/colorbox_minimalcircles.png ADDED
Binary file
images/colorbox/minimal/colorbox_minimal.png ADDED
Binary file
images/colorbox/painting/frame1.png ADDED
Binary file
images/colorbox/painting/frame2.png ADDED
Binary file
images/colorbox/rounded-white/border1.png ADDED
Binary file
images/colorbox/rounded-white/border2.png ADDED
Binary file
images/colorbox/shadow/colorbox_fancyoverlay.png ADDED
Binary file
images/colorbox/sketchtoon/colorbox_sketchtoon.png ADDED
Binary file
images/colorbox/sketchtoon/paper.jpg ADDED
Binary file
images/colorbox/square-black/controls.png ADDED
Binary file
images/colorbox/square-white/controls.png ADDED
Binary file
images/colorbox/tablet/frame1.png ADDED
Binary file
images/colorbox/tablet/frame2.png ADDED
Binary file
images/colorbox/vintage/frame1.png ADDED
Binary file
images/colorbox/vintage/frame2.png ADDED
Binary file
images/colorbox/vintage/pattern.jpg ADDED
Binary file
images/colorbox/wood/colorbox_woodtable.png ADDED
Binary file
images/colorbox/wood/woodpattern.jpg ADDED
Binary file
images/controls.png DELETED
Binary file
images/gmw-logo-pro-dialog.png ADDED
Binary file
images/gmw-logo-pro.png ADDED
Binary file
images/gmw-logo.png ADDED
Binary file
images/loading.gif DELETED
Binary file
images/loading_background.png DELETED
Binary file
images/overlay.png DELETED
Binary file
images/pins/default/2hand.png ADDED
Binary file
images/pins/default/360degrees.png ADDED
Binary file
images/pins/default/abduction.png ADDED
Binary file
images/pins/default/aboriginal.png ADDED
Binary file
images/pins/default/accesdenied.png ADDED
Binary file
images/pins/default/acupuncture.png ADDED
Binary file
images/pins/default/administration.png ADDED
Binary file
images/pins/default/administrativeboundary.png ADDED
Binary file
images/pins/default/aed-2.png ADDED
Binary file
images/pins/default/agritourism.png ADDED
Binary file
images/pins/default/air_fixwing.png ADDED
Binary file
images/pins/default/aircraftcarrier.png ADDED
Binary file
images/pins/default/aircraftsmall.png ADDED
Binary file
images/pins/default/airport.png ADDED
Binary file
images/pins/default/airport_apron.png ADDED
Binary file
images/pins/default/airport_runway.png ADDED
Binary file
images/pins/default/airport_terminal.png ADDED
Binary file
images/pins/default/airshow-2.png ADDED
Binary file
images/pins/default/algae.png ADDED
Binary file
images/pins/default/alien.png ADDED
Binary file
images/pins/default/alligator.png ADDED
Binary file
images/pins/default/amphitheater-2.png ADDED
Binary file
images/pins/default/amphitheater.png ADDED
Binary file
images/pins/default/anchorpier.png ADDED
Binary file
images/pins/default/anemometer_mono.png ADDED
Binary file
images/pins/default/animal-shelter-export.png ADDED
Binary file
images/pins/default/anniversary.png ADDED
Binary file
images/pins/default/ant-export.png ADDED
Binary file
images/pins/default/anthropo.png ADDED
Binary file
images/pins/default/apartment-3.png ADDED
Binary file
images/pins/default/apple.png ADDED
Binary file
images/pins/default/aquarium.png ADDED
Binary file
images/pins/default/arch.png ADDED
Binary file
images/pins/default/archery.png ADDED
Binary file
images/pins/default/army.png ADDED
Binary file
images/pins/default/art-museum-2.png ADDED
Binary file
images/pins/default/artgallery.png ADDED
Binary file
images/pins/default/atm-2.png ADDED
Binary file
images/pins/default/atv.png ADDED
Binary file
images/pins/default/audio.png ADDED
Binary file
images/pins/default/australian-football.png ADDED
Binary file
images/pins/default/avalanche1.png ADDED
Binary file
images/pins/default/award.png ADDED
Binary file
images/pins/default/badminton-2.png ADDED
Binary file
images/pins/default/bags.png ADDED
Binary file
images/pins/default/bank.png ADDED
Binary file
images/pins/default/bar.png ADDED
Binary file
images/pins/default/bar_coktail.png ADDED
Binary file
images/pins/default/bar_juice.png ADDED
Binary file
images/pins/default/barbecue.png ADDED
Binary file
images/pins/default/barber.png ADDED
Binary file
images/pins/default/barrier.png ADDED
Binary file
images/pins/default/baseball.png ADDED
Binary file
images/pins/default/basketball.png ADDED
Binary file
images/pins/default/bats.png ADDED
Binary file
images/pins/default/battlefield.png ADDED
Binary file
images/pins/default/battleship-3.png ADDED
Binary file
images/pins/default/beach.png ADDED
Binary file
images/pins/default/beachvolleyball.png ADDED
Binary file
images/pins/default/beautifulview.png ADDED
Binary file
images/pins/default/beautysalon.png ADDED
Binary file
images/pins/default/bed_breakfast1-2.png ADDED
Binary file
images/pins/default/beergarden.png ADDED
Binary file
images/pins/default/bicycle_shop.png ADDED
Binary file
images/pins/default/bigcity.png ADDED
Binary file
images/pins/default/bike_downhill.png ADDED
Binary file
images/pins/default/bike_rising.png ADDED
Binary file
images/pins/default/billiard-2.png ADDED
Binary file
images/pins/default/binoculars.png ADDED
Binary file
images/pins/default/birds-2.png ADDED
Binary file
images/pins/default/blast.png ADDED
Binary file
images/pins/default/boardercross.png ADDED
Binary file
images/pins/default/boat.png ADDED
Binary file
images/pins/default/boatcrane.png ADDED
Binary file
images/pins/default/bobsleigh.png ADDED
Binary file
images/pins/default/bollie.png ADDED
Binary file
images/pins/default/bomb.png ADDED
Binary file
images/pins/default/bomber-2.png ADDED
Binary file
images/pins/default/bouddha.png ADDED
Binary file
images/pins/default/bowling.png ADDED
Binary file
images/pins/default/boxing.png ADDED
Binary file
images/pins/default/bread.png ADDED
Binary file
images/pins/default/brewery1.png ADDED
Binary file
images/pins/default/bridge_modern.png ADDED
Binary file
images/pins/default/bridge_old.png ADDED
Binary file
images/pins/default/bulldozer.png ADDED
Binary file
images/pins/default/bullfight.png ADDED
Binary file
images/pins/default/bunker-2-2.png ADDED
Binary file
images/pins/default/bus.png ADDED
Binary file
images/pins/default/busstop.png ADDED
Binary file
images/pins/default/bustour.png ADDED
Binary file
images/pins/default/butcher-2.png ADDED
Binary file
images/pins/default/butterfly-2.png ADDED
Binary file
images/pins/default/cabin-2.png ADDED
Binary file
images/pins/default/cablecar.png ADDED
Binary file
images/pins/default/cafetaria.png ADDED
Binary file
images/pins/default/calendar-3.png ADDED
Binary file
images/pins/default/campfire-2.png ADDED
Binary file
images/pins/default/camping-2.png ADDED
Binary file
images/pins/default/candy.png ADDED
Binary file
images/pins/default/canyon-2.png ADDED
Binary file
images/pins/default/car.png ADDED
Binary file
images/pins/default/caraccident.png ADDED
Binary file
images/pins/default/carrental.png ADDED
Binary file
images/pins/default/carwash.png ADDED
Binary file
images/pins/default/casino-2.png ADDED
Binary file
images/pins/default/castle-2.png ADDED
Binary file
images/pins/default/cathedral.png ADDED
Binary file
images/pins/default/catholicgrave.png ADDED
Binary file
images/pins/default/caution.png ADDED
Binary file
images/pins/default/cave-2.png ADDED
Binary file
images/pins/default/cctv.png ADDED
Binary file
images/pins/default/cemetary.png ADDED
Binary file
images/pins/default/channelchange.png ADDED
Binary file
images/pins/default/chapel-2.png ADDED
Binary file
images/pins/default/chart-2.png ADDED
Binary file
images/pins/default/cheese.png ADDED
Binary file
images/pins/default/chemistry-2.png ADDED
Binary file
images/pins/default/chicken-2.png ADDED
Binary file
images/pins/default/childmuseum01.png ADDED
Binary file
images/pins/default/chiropractor.png ADDED
Binary file
images/pins/default/christmasmarket.png ADDED
Binary file
images/pins/default/church-2.png ADDED
Binary file
images/pins/default/cinema.png ADDED
Binary file
images/pins/default/circus.png ADDED
Binary file
images/pins/default/citysquare.png ADDED
Binary file
images/pins/default/citywalls.png ADDED
Binary file
images/pins/default/climbing.png ADDED
Binary file
images/pins/default/clock.png ADDED
Binary file
images/pins/default/closedroad.png ADDED
Binary file
images/pins/default/clothers_female.png ADDED
Binary file
images/pins/default/clothers_male.png ADDED
Binary file
images/pins/default/cloudy.png ADDED
Binary file
images/pins/default/cloudysunny.png ADDED
Binary file
images/pins/default/coffee.png ADDED
Binary file
images/pins/default/coins.png ADDED
Binary file
images/pins/default/comedyclub.png ADDED
Binary file
images/pins/default/comics.png ADDED
Binary file
images/pins/default/comment-map-icon.png ADDED
Binary file
images/pins/default/communitycentre.png ADDED
Binary file
images/pins/default/company.png ADDED
Binary file
images/pins/default/compost.png ADDED
Binary file
images/pins/default/computers.png ADDED
Binary file
images/pins/default/condominium.png ADDED
Binary file
images/pins/default/conference.png ADDED
Binary file
images/pins/default/congress.png ADDED
Binary file
images/pins/default/construction.png ADDED
Binary file
images/pins/default/constructioncrane.png ADDED
Binary file
images/pins/default/contract.png ADDED
Binary file
images/pins/default/conveniencestore.png ADDED
Binary file
images/pins/default/convent-2.png ADDED
Binary file
images/pins/default/conversation-map-icon.png ADDED
Binary file
images/pins/default/convertible.png ADDED
Binary file
images/pins/default/corral.png ADDED
Binary file
images/pins/default/country.png ADDED
Binary file
images/pins/default/court.png ADDED
Binary file
images/pins/default/cow-export.png ADDED
Binary file
images/pins/default/cowabduction.png ADDED
Binary file
images/pins/default/craftstore.png ADDED
Binary file
images/pins/default/cramschool.png ADDED
Binary file
images/pins/default/cricket.png ADDED
Binary file
images/pins/default/crimescene.png ADDED
Binary file
images/pins/default/cromlech.png ADDED
Binary file
images/pins/default/cropcircles.png ADDED
Binary file
images/pins/default/cross-2.png ADDED
Binary file
images/pins/default/crossingguard.png ADDED
Binary file
images/pins/default/cruiseship.png ADDED
Binary file
images/pins/default/cup.png ADDED
Binary file
images/pins/default/curling-2.png ADDED
Binary file
images/pins/default/currencyexchange.png ADDED
Binary file
images/pins/default/customs.png ADDED
Binary file
images/pins/default/cycling.png ADDED
Binary file
images/pins/default/cycling_feed.png ADDED
Binary file
images/pins/default/cycling_sprint.png ADDED
Binary file
images/pins/default/dam.png ADDED
Binary file
images/pins/default/dance_class.png ADDED
Binary file
images/pins/default/dancinghall.png ADDED
Binary file
images/pins/default/database.png ADDED
Binary file
images/pins/default/daycare.png ADDED
Binary file
images/pins/default/deepseafishing.png ADDED
Binary file
images/pins/default/deer.png ADDED
Binary file
images/pins/default/dentist.png ADDED
Binary file
images/pins/default/departmentstore.png ADDED
Binary file
images/pins/default/desert-2.png ADDED
Binary file
images/pins/default/dinopark.png ADDED
Binary file
images/pins/default/direction_down.png ADDED
Binary file
images/pins/default/disability.png ADDED
Binary file
images/pins/default/diving.png ADDED
Binary file
images/pins/default/dogs_leash.png ADDED
Binary file
images/pins/default/dolphins.png ADDED
Binary file
images/pins/default/doublebendright.png ADDED
Binary file
images/pins/default/downloadicon.png ADDED
Binary file
images/pins/default/drinkingfountain.png ADDED
Binary file
images/pins/default/drinkingwater.png ADDED
Binary file
images/pins/default/drugstore.png ADDED
Binary file
images/pins/default/duck-export.png ADDED
Binary file
images/pins/default/earthquake-3.png ADDED
Binary file
images/pins/default/eggs.png ADDED
Binary file
images/pins/default/elephants.png ADDED
Binary file
images/pins/default/elevator.png ADDED
Binary file
images/pins/default/elevator_down.png ADDED
Binary file
images/pins/default/elevator_up.png ADDED
Binary file
images/pins/default/embassy.png ADDED
Binary file
images/pins/default/entrance.png ADDED
Binary file
images/pins/default/exchequer.png ADDED
Binary file
images/pins/default/exit.png ADDED
Binary file
images/pins/default/expert.png ADDED
Binary file
images/pins/default/factory.png ADDED
Binary file
images/pins/default/fallingrocks.png ADDED
Binary file
images/pins/default/family.png ADDED
Binary file
images/pins/default/farm-2.png ADDED
Binary file
images/pins/default/farmstand.png ADDED
Binary file
images/pins/default/fastfood.png ADDED
Binary file
images/pins/default/female-2.png ADDED
Binary file
images/pins/default/ferriswheel.png ADDED
Binary file
images/pins/default/ferry.png ADDED
Binary file
images/pins/default/festival.png ADDED
Binary file
images/pins/default/fetalalcoholsyndrom.png ADDED
Binary file
images/pins/default/field.png ADDED
Binary file
images/pins/default/fillingstation.png ADDED
Binary file
images/pins/default/findajob.png ADDED
Binary file
images/pins/default/finish.png ADDED
Binary file
images/pins/default/fire-hydrant-2.png ADDED
Binary file
images/pins/default/fire.png ADDED
Binary file
images/pins/default/fireexstinguisher.png ADDED
Binary file
images/pins/default/firemen.png ADDED
Binary file
images/pins/default/fireworks.png ADDED
Binary file
images/pins/default/firstaid.png ADDED
Binary file
images/pins/default/fishchips.png ADDED
Binary file
images/pins/default/fishing.png ADDED
Binary file
images/pins/default/fishingboat.png ADDED
Binary file
images/pins/default/fishingstore.png ADDED
Binary file
images/pins/default/fitness.png ADDED
Binary file
images/pins/default/fjord-2.png ADDED
Binary file
images/pins/default/flag-export.png ADDED
Binary file
images/pins/default/flood.png ADDED
Binary file
images/pins/default/flowers.png ADDED
Binary file
images/pins/default/folder-2.png ADDED
Binary file
images/pins/default/fooddeliveryservice.png ADDED
Binary file
images/pins/default/foodtruck.png ADDED
Binary file
images/pins/default/footprint.png ADDED
Binary file
images/pins/default/ford-2.png ADDED
Binary file
images/pins/default/forest.png ADDED
Binary file
images/pins/default/forest2.png ADDED
Binary file
images/pins/default/fossils.png ADDED
Binary file
images/pins/default/foundry-2.png ADDED
Binary file
images/pins/default/fountain-2.png ADDED
Binary file
images/pins/default/fourbyfour.png ADDED
Binary file
images/pins/default/freqchg.png ADDED
Binary file
images/pins/default/frog-2.png ADDED
Binary file
images/pins/default/fruits.png ADDED
Binary file
images/pins/default/ft.png ADDED
Binary file
images/pins/default/funicolar-22x22.png ADDED
Binary file
images/pins/default/gas_cylinder1.png ADDED
Binary file
images/pins/default/gay-female.png ADDED
Binary file
images/pins/default/gay-male.png ADDED
Binary file
images/pins/default/geocaching-3.png ADDED
Binary file
images/pins/default/geothermal-site.png ADDED
Binary file
images/pins/default/geyser-2.png ADDED
Binary file
images/pins/default/ghosttown.png ADDED
Binary file
images/pins/default/gifts.png ADDED
Binary file
images/pins/default/glacier-2.png ADDED
Binary file
images/pins/default/glasses.png ADDED
Binary file
images/pins/default/golfing.png ADDED
Binary file
images/pins/default/gondola-2.png ADDED
Binary file
images/pins/default/gourmet_0star.png ADDED
Binary file
images/pins/default/grass.png ADDED
Binary file
images/pins/default/grocery.png ADDED
Binary file
images/pins/default/group-2.png ADDED
Binary file
images/pins/default/gumball_machine.png ADDED
Binary file
images/pins/default/handball.png ADDED
Binary file
images/pins/default/hanggliding.png ADDED
Binary file
images/pins/default/harbor.png ADDED
Binary file
images/pins/default/hare1.png ADDED
Binary file
images/pins/default/hats.png ADDED
Binary file
images/pins/default/haybale.png ADDED
Binary file
images/pins/default/headstone-2.png ADDED
Binary file
images/pins/default/helicopter.png ADDED
Binary file
images/pins/default/highhills.png ADDED
Binary file
images/pins/default/highschool.png ADDED
Binary file
images/pins/default/highway.png ADDED
Binary file
images/pins/default/hiking.png ADDED
Binary file
images/pins/default/historical_museum.png ADDED
Binary file
images/pins/default/historicalquarter.png ADDED
Binary file
images/pins/default/hoergeraeteakustiker_22px.png ADDED
Binary file
images/pins/default/home-2.png ADDED
Binary file
images/pins/default/homecenter.png ADDED
Binary file
images/pins/default/honeycomb.png ADDED
Binary file
images/pins/default/hookah_final.png ADDED
Binary file
images/pins/default/horseriding.png ADDED
Binary file
images/pins/default/hospital-building.png ADDED
Binary file
images/pins/default/hostel_0star.png ADDED
Binary file
images/pins/default/hotairbaloon.png ADDED
Binary file
images/pins/default/hotel_0star.png ADDED
Binary file
images/pins/default/hotspring.png ADDED
Binary file
images/pins/default/house.png ADDED
Binary file
images/pins/default/hunting.png ADDED
Binary file
images/pins/default/hut.png ADDED
Binary file
images/pins/default/icecream.png ADDED
Binary file
images/pins/default/icehockey.png ADDED
Binary file
images/pins/default/iceskating.png ADDED
Binary file
images/pins/default/icy_road.png ADDED
Binary file
images/pins/default/indoor-arena.png ADDED
Binary file
images/pins/default/information.png ADDED
Binary file
images/pins/default/iobridge.png ADDED
Binary file
images/pins/default/jacuzzi.png ADDED
Binary file
images/pins/default/japanese-food.png ADDED
Binary file
images/pins/default/japanese-lantern.png ADDED
Binary file
images/pins/default/japanese-sake.png ADDED
Binary file
images/pins/default/japanese-sweet-2.png ADDED
Binary file
images/pins/default/japanese-temple.png ADDED
Binary file
images/pins/default/jazzclub.png ADDED
Binary file
images/pins/default/jeep.png ADDED
Binary file
images/pins/default/jetfighter.png ADDED
Binary file
images/pins/default/jewelry.png ADDED
Binary file
images/pins/default/jewishgrave.png ADDED
Binary file
images/pins/default/jewishquarter.png ADDED
Binary file
images/pins/default/jogging.png ADDED
Binary file
images/pins/default/judo.png ADDED
Binary file
images/pins/default/junction.png ADDED
Binary file
images/pins/default/karate.png ADDED
Binary file
images/pins/default/karting.png ADDED
Binary file
images/pins/default/kayak1.png ADDED
Binary file
images/pins/default/kayaking.png ADDED
Binary file
images/pins/default/kebab.png ADDED
Binary file
images/pins/default/kingair.png ADDED
Binary file
images/pins/default/kiosk.png ADDED
Binary file
images/pins/default/kitesurfing.png ADDED
Binary file
images/pins/default/laboratory.png ADDED
Binary file
images/pins/default/lake.png ADDED
Binary file
images/pins/default/landfill.png ADDED
Binary file
images/pins/default/landmark.png ADDED
Binary file
images/pins/default/laterne.png ADDED
Binary file
images/pins/default/laundromat.png ADDED
Binary file
images/pins/default/levelcrossing.png ADDED
Binary file
images/pins/default/library.png ADDED
Binary file
images/pins/default/lifeguard-2.png ADDED
Binary file
images/pins/default/lighthouse-2.png ADDED
Binary file
images/pins/default/linedown.png ADDED
Binary file
images/pins/default/lingerie.png ADDED
Binary file
images/pins/default/liquor.png ADDED
Binary file
images/pins/default/lobster-export.png ADDED
Binary file
images/pins/default/lock.png ADDED
Binary file
images/pins/default/lockerrental.png ADDED
Binary file
images/pins/default/lodging_0star.png ADDED
Binary file
images/pins/default/love_date.png ADDED
Binary file
images/pins/default/loveinterest.png ADDED
Binary file
images/pins/default/magicshow.png ADDED
Binary file
images/pins/default/mainroad.png ADDED
Binary file
images/pins/default/male-2.png ADDED
Binary file
images/pins/default/mall.png ADDED
Binary file
images/pins/default/map.png ADDED
Binary file
images/pins/default/mapicon.png ADDED
Binary file
images/pins/default/marina-2.png ADDED
Binary file
images/pins/default/market.png ADDED
Binary file
images/pins/default/massage.png ADDED
Binary file
images/pins/default/mastcrane1.png ADDED
Binary file
images/pins/default/medicalstore.png ADDED
Binary file
images/pins/default/medicine.png ADDED
Binary file
images/pins/default/megalith.png ADDED
Binary file
images/pins/default/memorial.png ADDED
Binary file
images/pins/default/metronetwork.png ADDED
Binary file
images/pins/default/military.png ADDED
Binary file
images/pins/default/mine.png ADDED
Binary file
images/pins/default/missile-2.png ADDED
Binary file
images/pins/default/mobilephonetower.png ADDED
Binary file
images/pins/default/modernmonument.png ADDED
Binary file
images/pins/default/moderntower.png ADDED
Binary file
images/pins/default/monkey-export.png ADDED
Binary file
images/pins/default/monument-historique-icon-white-22x22.png ADDED
Binary file
images/pins/default/monument.png ADDED
Binary file
images/pins/default/moonstar.png ADDED
Binary file
images/pins/default/mosquee.png ADDED
Binary file
images/pins/default/mosquito-2.png ADDED
Binary file
images/pins/default/motel-2.png ADDED
Binary file
images/pins/default/motorbike.png ADDED
Binary file
images/pins/default/motorcycle.png ADDED
Binary file
images/pins/default/mountain-pass-locator-diagonal-reverse-export.png ADDED
Binary file
images/pins/default/mountainbiking-3.png ADDED
Binary file
images/pins/default/mountains.png ADDED
Binary file
images/pins/default/movierental.png ADDED
Binary file
images/pins/default/moving-walkway-enter-export.png ADDED
Binary file
images/pins/default/muffin_bagle.png ADDED
Binary file
images/pins/default/mural.png ADDED
Binary file
images/pins/default/museum_archeological.png ADDED
Binary file
images/pins/default/museum_art.png ADDED
Binary file
images/pins/default/museum_crafts.png ADDED
Binary file
images/pins/default/museum_industry.png ADDED
Binary file
images/pins/default/museum_naval.png ADDED
Binary file
images/pins/default/museum_openair.png ADDED
Binary file
images/pins/default/museum_science.png ADDED
Binary file
images/pins/default/museum_war.png ADDED
Binary file
images/pins/default/mushroom.png ADDED
Binary file
images/pins/default/music.png ADDED
Binary file
images/pins/default/music_choral.png ADDED
Binary file
images/pins/default/music_classical.png ADDED
Binary file
images/pins/default/music_hiphop.png ADDED
Binary file
images/pins/default/music_live.png ADDED
Binary file
images/pins/default/music_rock.png ADDED
Binary file
images/pins/default/nanny.png ADDED
Binary file
images/pins/default/ne_barn-2.png ADDED
Binary file
images/pins/default/newsagent.png ADDED
Binary file
images/pins/default/no-nuke-export.png ADDED
Binary file
images/pins/default/nordicski.png ADDED
Binary file
images/pins/default/notvisited.png ADDED
Binary file
images/pins/default/nursery.png ADDED
Binary file
images/pins/default/nursing_home_icon.png ADDED
Binary file
images/pins/default/observatory.png ADDED
Binary file
images/pins/default/office-building.png ADDED
Binary file
images/pins/default/oil-2.png ADDED
Binary file
images/pins/default/oilpumpjack.png ADDED
Binary file
images/pins/default/oilrig2.png ADDED
Binary file
images/pins/default/olympicsite.png ADDED
Binary file
images/pins/default/ophthalmologist.png ADDED
Binary file
images/pins/default/outlet2.png ADDED
Binary file
images/pins/default/oyster-3.png ADDED
Binary file
images/pins/default/pagoda-2.png ADDED
Binary file
images/pins/default/paint.png ADDED
Binary file
images/pins/default/paintball.png ADDED
Binary file
images/pins/default/palace-2.png ADDED
Binary file
images/pins/default/palm-tree-export.png ADDED
Binary file
images/pins/default/panoramicview.png ADDED
Binary file
images/pins/default/paragliding.png ADDED
Binary file
images/pins/default/parasailing.png ADDED
Binary file
images/pins/default/parkandride.png ADDED
Binary file
images/pins/default/parking-meter-export.png ADDED
Binary file
images/pins/default/parkinggarage.png ADDED
Binary file
images/pins/default/party-2.png ADDED
Binary file
images/pins/default/patisserie.png ADDED
Binary file
images/pins/default/peace.png ADDED
Binary file
images/pins/default/pedestriancrossing.png ADDED
Binary file
images/pins/default/penguin-2.png ADDED
Binary file
images/pins/default/pens.png ADDED
Binary file
images/pins/default/perfumery.png ADDED
Binary file
images/pins/default/petanque.png ADDED
Binary file
images/pins/default/petroglyphs-2.png ADDED
Binary file
images/pins/default/pets.png ADDED
Binary file
images/pins/default/phantom.png ADDED
Binary file
images/pins/default/phones.png ADDED
Binary file
images/pins/default/photo.png ADDED
Binary file
images/pins/default/photography.png ADDED
Binary file
images/pins/default/picnic-2.png ADDED
Binary file
images/pins/default/pig.png ADDED
Binary file
images/pins/default/pin-export.png ADDED
Binary file
images/pins/default/pirates.png ADDED
Binary file
images/pins/default/pizzaria.png ADDED
Binary file
images/pins/default/planecrash.png ADDED
Binary file
images/pins/default/planetarium-2.png ADDED
Binary file
images/pins/default/playground.png ADDED
Binary file
images/pins/default/pleasurepier.png ADDED
Binary file
images/pins/default/poker.png ADDED
Binary file
images/pins/default/police.png ADDED
Binary file
images/pins/default/postal.png ADDED
Binary file
images/pins/default/powerlinepole.png ADDED
Binary file
images/pins/default/poweroutage.png ADDED
Binary file
images/pins/default/powerplant.png ADDED
Binary file
images/pins/default/powersubstation.png ADDED
Binary file
images/pins/default/prayer.png ADDED
Binary file
images/pins/default/presentation.png ADDED
Binary file
images/pins/default/price-tag-export.png ADDED
Binary file
images/pins/default/printer-2.png ADDED
Binary file
images/pins/default/prison.png ADDED
Binary file
images/pins/default/publicart.png ADDED
Binary file
images/pins/default/pyramid.png ADDED
Binary file
images/pins/default/quadrifoglio.png ADDED
Binary file
images/pins/default/radar.png ADDED
Binary file
images/pins/default/radiation.png ADDED
Binary file
images/pins/default/radio-control-model-car.png ADDED
Binary file
images/pins/default/radio-station-2.png ADDED
Binary file
images/pins/default/rainy.png ADDED
Binary file
images/pins/default/rape.png ADDED
Binary file
images/pins/default/reatorlogowhite-22x22.png ADDED
Binary file
images/pins/default/recycle.png ADDED
Binary file
images/pins/default/regroup.png ADDED
Binary file
images/pins/default/repair.png ADDED
Binary file
images/pins/default/rescue-2.png ADDED
Binary file
images/pins/default/resort.png ADDED
Binary file
images/pins/default/restaurant.png ADDED
Binary file
images/pins/default/restaurant_african.png ADDED
Binary file
images/pins/default/restaurant_breakfast.png ADDED
Binary file
images/pins/default/restaurant_buffet.png ADDED
Binary file
images/pins/default/restaurant_chinese.png ADDED
Binary file
images/pins/default/restaurant_fish.png ADDED
Binary file
images/pins/default/restaurant_greek.png ADDED
Binary file
images/pins/default/restaurant_indian.png ADDED
Binary file
images/pins/default/restaurant_italian.png ADDED
Binary file
images/pins/default/restaurant_korean.png ADDED
Binary file
images/pins/default/restaurant_mediterranean.png ADDED
Binary file
images/pins/default/restaurant_mexican.png ADDED
Binary file
images/pins/default/restaurant_romantic.png ADDED
Binary file
images/pins/default/restaurant_steakhouse.png ADDED
Binary file
images/pins/default/restaurant_tapas.png ADDED
Binary file
images/pins/default/restaurant_thai.png ADDED
Binary file
images/pins/default/restaurant_turkish.png ADDED
Binary file
images/pins/default/restaurant_vegetarian.png ADDED
Binary file
images/pins/default/revolt.png ADDED
Binary file
images/pins/default/riparianhabitat.png ADDED
Binary file
images/pins/default/river-2.png ADDED
Binary file
images/pins/default/road.png ADDED
Binary file
images/pins/default/roadtype_gravel.png ADDED
Binary file
images/pins/default/rockhouse.png ADDED
Binary file
images/pins/default/rodent.png ADDED
Binary file
images/pins/default/rollerskate.png ADDED
Binary file
images/pins/default/ropescourse.png ADDED
Binary file
images/pins/default/rowboat.png ADDED
Binary file
images/pins/default/rugbyfield.png ADDED
Binary file
images/pins/default/ruins-2.png ADDED
Binary file
images/pins/default/sailing.png ADDED
Binary file
images/pins/default/sandwich-2.png ADDED
Binary file
images/pins/default/sauna.png ADDED
Binary file
images/pins/default/sawmill-2.png ADDED
Binary file
images/pins/default/school.png ADDED
Binary file
images/pins/default/schreibwaren_web.png ADDED
Binary file
images/pins/default/scoutgroup.png ADDED
Binary file
images/pins/default/scubadiving.png ADDED
Binary file
images/pins/default/seals.png ADDED
Binary file
images/pins/default/segway.png ADDED
Binary file
images/pins/default/seniorsite.png ADDED
Binary file
images/pins/default/septic_tank.png ADDED
Binary file
images/pins/default/share.png ADDED
Binary file
images/pins/default/shark-export.png ADDED
Binary file
images/pins/default/shintoshrine.png ADDED
Binary file
images/pins/default/shipwreck.png ADDED
Binary file
images/pins/default/shoes.png ADDED
Binary file
images/pins/default/shooting.png ADDED
Binary file
images/pins/default/shootingrange.png ADDED
Binary file
images/pins/default/shore-2.png ADDED
Binary file
images/pins/default/shower.png ADDED
Binary file
images/pins/default/sight-2.png ADDED
Binary file
images/pins/default/signpost-2.png ADDED
Binary file
images/pins/default/sikh.png ADDED
Binary file
images/pins/default/ski_shoe1.png ADDED
Binary file
images/pins/default/skiing.png ADDED
Binary file
images/pins/default/skijump.png ADDED
Binary file
images/pins/default/skilifting.png ADDED
Binary file
images/pins/default/skis.png ADDED
Binary file
images/pins/default/skull.png ADDED
Binary file
images/pins/default/sledge.png ADDED
Binary file
images/pins/default/sledge_summer.png ADDED
Binary file
images/pins/default/sledgerental.png ADDED
Binary file
images/pins/default/slipway.png ADDED
Binary file
images/pins/default/smallcity.png ADDED
Binary file
images/pins/default/smiley_happy.png ADDED
Binary file
images/pins/default/smoking.png ADDED
Binary file
images/pins/default/snail.png ADDED
Binary file
images/pins/default/snakes.png ADDED
Binary file
images/pins/default/sneakers.png ADDED
Binary file
images/pins/default/snorkeling.png ADDED
Binary file
images/pins/default/snowboarding.png ADDED
Binary file
images/pins/default/snowmobiling.png ADDED
Binary file
images/pins/default/snowpark_arc.png ADDED
Binary file
images/pins/default/snowshoeing.png ADDED
Binary file
images/pins/default/snowy-2.png ADDED
Binary file
images/pins/default/soccer.png ADDED
Binary file
images/pins/default/solarenergy.png ADDED
Binary file
images/pins/default/sozialeeinrichtung.png ADDED
Binary file
images/pins/default/spa.png ADDED
Binary file
images/pins/default/spaceport-2.png ADDED
Binary file
images/pins/default/speed_50.png ADDED
Binary file
images/pins/default/speedhump.png ADDED
Binary file
images/pins/default/speedriding.png ADDED
Binary file
images/pins/default/spelunking.png ADDED
Binary file
images/pins/default/spider.png ADDED
Binary file
images/pins/default/splice.png ADDED
Binary file
images/pins/default/sportscar.png ADDED
Binary file
images/pins/default/sportutilityvehicle.png ADDED
Binary file
images/pins/default/square-compass.png ADDED
Binary file
images/pins/default/squash-2.png ADDED
Binary file
images/pins/default/stadium.png ADDED
Binary file
images/pins/default/stairs.png ADDED
Binary file
images/pins/default/star-3.png ADDED
Binary file
images/pins/default/stargate-raw.png ADDED
Binary file
images/pins/default/start-race-2.png ADDED
Binary file
images/pins/default/statue-2.png ADDED
Binary file
images/pins/default/steamtrain.png ADDED
Binary file
images/pins/default/stop.png ADDED
Binary file
images/pins/default/strike.png ADDED
Binary file
images/pins/default/stripclub2.png ADDED
Binary file
images/pins/default/submarine-2.png ADDED
Binary file
images/pins/default/sugar-shack.png ADDED
Binary file
images/pins/default/summercamp.png ADDED
Binary file
images/pins/default/sumo-2.png ADDED
Binary file
images/pins/default/sunny.png ADDED
Binary file
images/pins/default/sunsetland.png ADDED
Binary file
images/pins/default/supermarket.png ADDED
Binary file
images/pins/default/surfacelift.png ADDED
Binary file
images/pins/default/surfing.png ADDED
Binary file
images/pins/default/surfpaddle.png ADDED
Binary file
images/pins/default/surveying-2.png ADDED
Binary file
images/pins/default/swimming.png ADDED
Binary file
images/pins/default/synagogue-2.png ADDED
Binary file
images/pins/default/taekwondo-2.png ADDED
Binary file
images/pins/default/tailor.png ADDED
Binary file
images/pins/default/takeaway.png ADDED
Binary file
images/pins/default/targ.png ADDED
Binary file
images/pins/default/taxi.png ADDED
Binary file
images/pins/default/taxiboat.png ADDED
Binary file
images/pins/default/taxiway.png ADDED
Binary file
images/pins/default/teahouse.png ADDED
Binary file
images/pins/default/tebletennis.png ADDED
Binary file
images/pins/default/telephone.png ADDED
Binary file
images/pins/default/temple-2.png ADDED
Binary file
images/pins/default/templehindu.png ADDED
Binary file
images/pins/default/tennis.png ADDED
Binary file
images/pins/default/terrace.png ADDED
Binary file
images/pins/default/text.png ADDED
Binary file
images/pins/default/textiles.png ADDED
Binary file
images/pins/default/theater.png ADDED
Binary file
images/pins/default/theft.png ADDED
Binary file
images/pins/default/themepark.png ADDED
Binary file
images/pins/default/therapy.png ADDED
Binary file
images/pins/default/theravadapagoda.png ADDED
Binary file
images/pins/default/theravadatemple.png ADDED
Binary file
images/pins/default/thunderstorm.png ADDED
Binary file
images/pins/default/ticket_office2.png ADDED
Binary file
images/pins/default/tidaldiamond.png ADDED
Binary file
images/pins/default/tiger-2.png ADDED
Binary file
images/pins/default/tires.png ADDED
Binary file
images/pins/default/toilets.png ADDED
Binary file
images/pins/default/tollstation.png ADDED
Binary file
images/pins/default/tools.png ADDED
Binary file
images/pins/default/tornado-2.png ADDED
Binary file
images/pins/default/torture.png ADDED
Binary file
images/pins/default/tower.png ADDED
Binary file
images/pins/default/townhouse.png ADDED
Binary file
images/pins/default/toys.png ADDED
Binary file
images/pins/default/trafficcamera.png ADDED
Binary file
images/pins/default/trafficlight.png ADDED
Binary file
images/pins/default/train.png ADDED
Binary file
images/pins/default/tramway.png ADDED
Binary file
images/pins/default/trash.png ADDED
Binary file
images/pins/default/travel_agency.png ADDED
Binary file
images/pins/default/treasure-mark.png ADDED
Binary file
images/pins/default/treedown.png ADDED
Binary file
images/pins/default/triskelion.png ADDED
Binary file
images/pins/default/trolley.png ADDED
Binary file
images/pins/default/truck3.png ADDED
Binary file
images/pins/default/tsunami.png ADDED
Binary file
images/pins/default/tunnel.png ADDED
Binary file
images/pins/default/turtle-2.png ADDED
Binary file
images/pins/default/tweet.png ADDED
Binary file
images/pins/default/u-pick_stand.png ADDED
Binary file
images/pins/default/ufo.png ADDED
Binary file
images/pins/default/umbrella-2.png ADDED
Binary file
images/pins/default/underground.png ADDED
Binary file
images/pins/default/university.png ADDED
Binary file
images/pins/default/usfootball.png ADDED
Binary file
images/pins/default/van.png ADDED
Binary file
images/pins/default/vespa.png ADDED
Binary file
images/pins/default/veterinary.png ADDED
Binary file
images/pins/default/video.png ADDED
Binary file
images/pins/default/videogames.png ADDED
Binary file
images/pins/default/villa.png ADDED
Binary file
images/pins/default/vineyard-2.png ADDED
Binary file
images/pins/default/volcano-2.png ADDED
Binary file
images/pins/default/volleyball.png ADDED
Binary file
images/pins/default/waiting.png ADDED
Binary file
images/pins/default/walkingtour.png ADDED
Binary file
images/pins/default/war.png ADDED
Binary file
images/pins/default/warehouse-2.png ADDED
Binary file
images/pins/default/water.png ADDED
Binary file
images/pins/default/watercraft.png ADDED
Binary file
images/pins/default/waterfall-2.png ADDED
Binary file
images/pins/default/watermill-2.png ADDED
Binary file
images/pins/default/waterpark.png ADDED
Binary file
images/pins/default/waterskiing.png ADDED
Binary file
images/pins/default/watertower.png ADDED
Binary file
images/pins/default/waterwell.png ADDED
Binary file
images/pins/default/waterwellpump.png ADDED
Binary file
images/pins/default/webcam.png ADDED
Binary file
images/pins/default/wedding.png ADDED
Binary file
images/pins/default/weights.png ADDED
Binary file
images/pins/default/wetlands.png ADDED
Binary file
images/pins/default/whale-2.png ADDED
Binary file
images/pins/default/wifi.png ADDED
Binary file
images/pins/default/wiki-export.png ADDED
Binary file
images/pins/default/wildlifecrossing.png ADDED
Binary file
images/pins/default/wind-2.png ADDED
Binary file
images/pins/default/windmill-2.png ADDED
Binary file
images/pins/default/windsurfing.png ADDED
Binary file
images/pins/default/windturbine.png ADDED
Binary file
images/pins/default/winebar.png ADDED
Binary file
images/pins/default/winetasting.png ADDED
Binary file
images/pins/default/woodshed.png ADDED
Binary file
images/pins/default/workoffice.png ADDED
Binary file
images/pins/default/workshop.png ADDED
Binary file
images/pins/default/world.png ADDED
Binary file
images/pins/default/worldheritagesite.png ADDED
Binary file
images/pins/default/worldwildway.png ADDED
Binary file
images/pins/default/wrestling-2.png ADDED
Binary file
images/pins/default/yoga.png ADDED
Binary file
images/pins/default/yooner.png ADDED
Binary file
images/pins/default/you-are-here-2.png ADDED
Binary file
images/pins/default/youthhostel.png ADDED
Binary file
images/pins/default/zombie-outbreak1.png ADDED
Binary file
images/pins/default/zoo.png ADDED
Binary file
images/pins/default/zoom.png ADDED
Binary file
images/santa_cap.png DELETED
Binary file
images/spinner.gif ADDED
Binary file
js/gmw-admin.js CHANGED
@@ -5,11 +5,53 @@
5
 
6
 
7
  jQuery(function($) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  // init JS for each active widget
9
- $(".widget-liquid-right [id*='" + gmw.id_base + "'].widget, .inactive-sidebar [id*='" + gmw.id_base + "'].widget, #accordion-panel-widgets [id*='" + gmw.id_base + "'].customize-control-widget_form").each(function (i, widget) {
10
  gmw_init_widget_ui(widget);
11
  }); // foreach GMW active widget
12
 
 
13
  // re-init JS on widget update and add
14
  $(document).on('widget-updated', function(event, widget) {
15
  id = $(widget).attr('id');
@@ -24,9 +66,22 @@ jQuery(function($) {
24
  }
25
  });
26
 
27
-
28
  // init JS UI for an individual GMW
29
  function gmw_init_widget_ui(widget) {
 
 
 
 
 
 
 
 
 
 
 
 
 
30
  // handle dropdown fields that have dependant fields
31
  $('.gmw_thumb_pin_type', widget).on('change', function(e) {
32
  gmw_change_pin_type(widget);
@@ -34,28 +89,121 @@ jQuery(function($) {
34
  $('.gmw_thumb_link_type', widget).on('change', function(e) {
35
  gmw_change_link_type(widget);
36
  }).trigger('change');
37
- $('.gmw_thumb_color_scheme', widget).on('change', function(e) {
38
- gmw_promo_option_change(widget, '.gmw_thumb_color_scheme');
39
- });
40
- $('.gmw_lightbox_skin', widget).on('change', function(e) {
41
- gmw_promo_option_change(widget, '.gmw_lightbox_skin');
42
- });
43
 
44
  // open promo/activation dialog
45
  $('.open_promo_dialog', widget).on('click', function(e) {
46
  e.preventDefault();
47
- gmw_open_promo_dialog(this);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
 
49
  return false;
50
  });
 
 
51
 
52
- // init tabs
53
- $('.gmw-tabs', widget).tabs({ active: gmw_get_active_tab($('.gmw-tabs', widget).attr('id')),
54
- activate: function(event, ui) { gmw_save_active_tab(this); }
 
 
 
 
 
 
 
 
55
  });
 
 
56
  } // gmw_init_widget_ui
57
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
 
 
59
  // get active tab index from cookie
60
  function gmw_get_active_tab(el_id) {
61
  id = parseInt(0 + $.cookie(el_id), 10);
@@ -69,13 +217,13 @@ jQuery(function($) {
69
 
70
  // save active tab index to cookie
71
  function gmw_save_active_tab(elem) {
72
- $.cookie($(elem).attr('id'), $(elem).tabs('option', 'active'), { expires: 30 });
73
  } // save_active_tab
74
 
75
 
76
  // show/hide custom link field based on user's link type choice
77
  function gmw_change_link_type(widget) {
78
- if ($('.gmw_thumb_link_type', widget).val() == 'custom') {
79
  $('.gmw_thumb_link_section', widget).show();
80
  } else {
81
  $('.gmw_thumb_link_section', widget).hide();
@@ -83,39 +231,57 @@ jQuery(function($) {
83
  } // link_type
84
 
85
 
86
- // show/hide custom pin URL field based on user's pin type choice
87
- function gmw_change_pin_type(widget) {
88
- if ($('.gmw_thumb_pin_type', widget).val() == 'custom') {
89
- $('.gmw_thumb_pin_type_custom_section', widget).show();
90
- $('.gmw_thumb_pin_type_predefined_section', widget).hide();
91
  } else {
92
- $('.gmw_thumb_pin_type_custom_section', widget).hide();
93
- $('.gmw_thumb_pin_type_predefined_section', widget).show();
94
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
95
  } // pin_type
96
 
97
 
98
- // extra features related functions
99
  // open promo dialog on load
100
  if (window.location.search.search('gmw_open_promo_dialog') != -1) {
101
  gmw_open_promo_dialog();
102
  }
103
 
104
-
105
  // opens promo dialog when special value is selected in widget's options
106
- function gmw_promo_option_change(widget, el) {
107
- if (($(el, widget).val()) == '-1') {
108
- $(el, widget).find('option').attr('selected', '');
109
- $(el, widget).find('option:first').attr('selected', 'selected');
 
 
 
110
  gmw_open_promo_dialog(widget);
111
  }
112
  } // promo_option_change
113
 
114
-
115
  // already subscribed button in dialog
116
  $('.gmw_goto_activation').on('click', function(e) {
117
- $('#gmw_dialog_intro').hide();
118
- $('#gmw_dialog_subscribe').hide();
119
  $('#gmw_dialog_activate').show();
120
 
121
  if ($(this).data('noprevent')) {
@@ -130,126 +296,317 @@ jQuery(function($) {
130
  // go to intro button in dialog
131
  $('.gmw_goto_intro').on('click', function(e) {
132
  e.preventDefault();
 
 
133
  $('#gmw_dialog_intro').show();
134
- $('#gmw_dialog_subscribe').hide();
135
- $('#gmw_dialog_activate').hide();
136
 
137
  return false;
138
  }); // go to intro click
139
-
140
 
141
- // go to subscribe in dialog
142
- $('.gmw_goto_subscribe').on('click', function(e) {
 
143
  e.preventDefault();
144
- $('#gmw_dialog_intro').hide();
145
- $('#gmw_dialog_subscribe').show();
146
- $('#gmw_dialog_activate').hide();
147
 
148
  return false;
149
- }); // already subscribed click
150
-
151
 
152
- // subscribe button in dialog
153
- $('#gmw_subscribe').on('click', function(e) {
154
- e.preventDefault();
155
-
156
- err = false;
157
- $('#gmw_promo_dialog input.error').removeClass('error');
158
- $('#gmw_promo_dialog span.error').hide();
159
-
160
- if ($('#gmw_name').val().length < 3) {
161
- $('#gmw_name').addClass('error');
162
- $('#gmw_promo_dialog span.error.name').show();
163
- $('#gmw_name').focus().select();
164
-
165
- err = true;
166
- } // check name
167
-
168
- re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
169
- if (!re.test($('#gmw_email').val())) {
170
- $('#gmw_email').addClass('error');
171
- $('#gmw_promo_dialog span.error.email').show();
172
- $('#gmw_email').focus().select();
173
  return false;
174
  }
175
-
176
- if (err) {
 
 
 
 
 
 
177
  return false;
178
  }
179
-
180
- $.post(ajaxurl,
181
- { 'action': 'gmw_subscribe',
182
- 'name': $('#gmw_name').val(),
183
- 'email': $('#gmw_email').val()
184
- },
185
- function(data) {
186
- if (data && data.success == true) {
187
- $('#gmw_dialog_subscribe').hide();
188
- $('#gmw_dialog_activate').show();
189
- alert(gmw.subscribe_ok);
190
- } else if (data && data.success == false && data.data == 'duplicate') {
191
- $('#gmw_dialog_subscribe').hide();
192
- $('#gmw_dialog_activate').show();
193
- alert(gmw.subscribe_duplicate);
194
- } else {
195
- alert(gmw.subscribe_error);
196
- }
197
- }, 'json').fail(function() {
198
- alert(gmw.undocumented_error);
199
- });
200
-
201
- return false;
202
- }); // subscribe click
203
-
204
-
205
  // check code and activate button in dialog
206
  $('#gmw_activate').on('click', function(e) {
207
  e.preventDefault();
208
 
209
  $('#gmw_promo_dialog input.error').removeClass('error');
210
  $('#gmw_promo_dialog span.error').hide();
 
 
211
 
212
- $.post(ajaxurl, { action: 'gmw_activate', 'code': $('#gmw_code').val()}, function(data) {
213
- if (data && data.success == true) {
214
  alert(gmw.activate_ok);
215
- if ($('#gmw_promo_dialog').data('widget-id')) {
216
- $('#' + $('#gmw_promo_dialog').data('widget-id') + ' .widget-control-save').trigger('click');
217
- $('#gmw_activate_notice').hide();
218
- $('#gmw_promo_dialog').dialog('close');
219
- } else {
220
- window.location = 'widgets.php';
221
- }
222
  } else {
223
- $('#gmw_promo_dialog span.error.gmw_code').show();
 
224
  $('#gmw_code').focus().select();
225
  }
226
- }, 'json').fail(function() {
 
227
  alert(gmw.undocumented_error);
228
- });
229
-
 
 
 
 
230
  return false;
231
  }); // activate button click
232
 
233
-
234
  // open promo/activation dialog
235
- function gmw_open_promo_dialog(widget) {
 
236
  $('#gmw_dialog_intro').show();
237
- $('#gmw_dialog_subscribe').hide();
238
- $('#gmw_dialog_activate').hide();
239
 
240
  $('#gmw_promo_dialog').dialog({
241
  'dialogClass' : 'wp-dialog gmw-dialog',
242
  'modal' : true,
 
243
  'width': 650,
244
- 'title': gmw.dialog_title,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
245
  'autoOpen': false,
246
  'closeOnEscape': true,
247
- open: function(event, ui) { $(this).siblings().find('span.ui-dialog-title').html(gmw.dialog_title); },
248
- close: function(event, ui) { $('#gmw_promo_dialog').data('widget-id', ''); }
 
 
 
 
 
 
 
 
 
 
 
 
 
249
  }).dialog('open');
 
 
 
 
 
 
250
 
251
- if (widget) {
252
- $('#gmw_promo_dialog').data('widget-id', $(widget).parents('div.widget').attr('id'));
 
 
253
  }
254
- } // open_promo_dialog
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
255
  }); // onload
5
 
6
 
7
  jQuery(function($) {
8
+ if (typeof gmw === 'undefined') {
9
+ return;
10
+ }
11
+
12
+
13
+ // init tabs on settings
14
+ $('#gmw-settings-tabs').tabs({ active: gmw_get_active_tab('gmw-settings-tabs'),
15
+ activate: function(event, ui) { gmw_save_active_tab(this); }
16
+ });
17
+
18
+
19
+ // open promo dialog on settings
20
+ $('.settings_page_gmw_options .open_promo_dialog').on('click', function(e) {
21
+ e.preventDefault();
22
+
23
+ gmw_open_promo_dialog();
24
+
25
+ return false;
26
+ }); // open promo dialog
27
+
28
+
29
+ // branding for widget title
30
+ if (gmw.is_activated) {
31
+ $("[id*='" + gmw.id_base + "-'].widget").each(function (i, widget) {
32
+ title_tmp = $('.widget-title h3', widget).html();
33
+ if (!title_tmp) {
34
+ return true;
35
+ }
36
+ title_tmp = title_tmp.replace('PRO', '<span class="gmw-pro-red">PRO</span>');
37
+ $('.widget-title h3', widget).html(title_tmp);
38
+ }); // foreach GMW widget
39
+ } // branding if PRO
40
+
41
+
42
+ // init variables
43
+ if (typeof google != 'undefined') {
44
+ gmw.geocoder = new google.maps.Geocoder();
45
+ }
46
+ gmw.map = gmw.marker = false;
47
+
48
+
49
  // init JS for each active widget
50
+ $(".widget-liquid-right [id*='" + gmw.id_base + "-'].widget, .inactive-sidebar [id*='" + gmw.id_base + "'].widget").each(function (i, widget) {
51
  gmw_init_widget_ui(widget);
52
  }); // foreach GMW active widget
53
 
54
+
55
  // re-init JS on widget update and add
56
  $(document).on('widget-updated', function(event, widget) {
57
  id = $(widget).attr('id');
66
  }
67
  });
68
 
69
+
70
  // init JS UI for an individual GMW
71
  function gmw_init_widget_ui(widget) {
72
+ $('.gmw-colorpicker', widget).wpColorPicker();
73
+ $('.gmw-select2', widget).select2({ minimumResultsForSearch: 100, width: '331px' });
74
+
75
+ // init tabs
76
+ $('.gmw-tabs', widget).tabs({ active: gmw_get_active_tab($('.gmw-tabs', widget).attr('id')),
77
+ activate: function(event, ui) { gmw_save_active_tab(this); }
78
+ });
79
+
80
+ // promo options in dropdown
81
+ $('select', widget).on('change', function(event) {
82
+ gmw_promo_option_change(widget, event);
83
+ });
84
+
85
  // handle dropdown fields that have dependant fields
86
  $('.gmw_thumb_pin_type', widget).on('change', function(e) {
87
  gmw_change_pin_type(widget);
89
  $('.gmw_thumb_link_type', widget).on('change', function(e) {
90
  gmw_change_link_type(widget);
91
  }).trigger('change');
92
+ $('.gmw_lightbox_fullscreen', widget).on('change', function(e) {
93
+ gmw_change_fullscreen(widget);
94
+ }).trigger('change');
95
+ $('.gmw_lightbox_mode', widget).on('change', function(e) {
96
+ gmw_change_mode(widget);
97
+ }).trigger('change');
98
 
99
  // open promo/activation dialog
100
  $('.open_promo_dialog', widget).on('click', function(e) {
101
  e.preventDefault();
102
+
103
+ gmw_open_promo_dialog();
104
+
105
+ return false;
106
+ }); // open promo/activation dialog
107
+
108
+ // open pin library
109
+ $('.open_pins_library', widget).on('click', function(e) {
110
+ e.preventDefault();
111
+
112
+ gmw_open_pins_library_dialog(this);
113
+
114
+ return false;
115
+ }); // open pin library
116
+
117
+ // open address picking map dialog - non pro, just ad
118
+ $('a.gmw-pick-address.gmw-pick-address-non-pro', widget).on('click', function(e) {
119
+ e.preventDefault();
120
+
121
+ if (confirm(gmw.map_picker_not_active)) {
122
+ gmw_open_promo_dialog();
123
+ }
124
+
125
+ return false;
126
+ }); // open address picking map dialog - non pro, just ad
127
+
128
+ // open address picking map dialog
129
+ $('a.gmw-pick-address', widget).on('click', function(e) {
130
+ e.preventDefault();
131
+
132
+ gmw_open_map_dialog($(this).parents('div.widget'), $(this).data('target'));
133
+
134
+ return false;
135
+ }); // open address picking map dialog
136
+
137
+ // auto-expand textarea
138
+ $('textarea', widget).on('focus', function(e) {
139
+ e.preventDefault();
140
+
141
+ $(this).attr('rows', '3');
142
 
143
  return false;
144
  });
145
+ $('textarea', widget).on('focusout', function(e) {
146
+ e.preventDefault();
147
 
148
+ $(this).attr('rows', '1');
149
+
150
+ return false;
151
+ });
152
+
153
+ // show help when field is focused
154
+ $('input[type=text], input[type=number], input[type=url], select, textarea', widget).on('focus', function(e) {
155
+ gmw_show_pointer(this, widget, true);
156
+
157
+ }).on('focusout', function(e) {
158
+ gmw_show_pointer(this, widget, false);
159
  });
160
+ $('.gmw-select2', widget).on('select2:open', function(e) { gmw_show_pointer(this, widget, true); });
161
+ $('.gmw-select2', widget).on('select2:close', function(e) { gmw_show_pointer(this, widget, false); });
162
  } // gmw_init_widget_ui
163
 
164
+
165
+ // display help text when element is in focus
166
+ function gmw_show_pointer(element, widget, show) {
167
+ if (gmw.disable_tooltips == '1') {
168
+ return;
169
+ }
170
+
171
+ if (show) {
172
+ help_text = $(element).data('tooltip');
173
+
174
+ // skip fields that don't have any help text
175
+ if (!help_text) {
176
+ return;
177
+ }
178
+
179
+ help_text = help_text.replace(/(?:\r\n|\r|\n)/g, '<br />');
180
+ help_text = help_text.replace(/_(.*)_/g, '<i>$1</i>');
181
+ help_text = help_text.replace(/\*(.*)\*/g, '<b>$1</b>');
182
+
183
+ title = $(element).data('title') || $(element).prev('label').html() || gmw.plugin_name;
184
+ title = title.replace(':', '');
185
+
186
+ try {
187
+ $(gmw_pointer).pointer('close');
188
+ } catch(err) {}
189
+
190
+ gmw_pointer = $(element).pointer({
191
+ content: '<h3>' + title + '</h3><p>' + help_text + '</p>',
192
+ position: {
193
+ edge: 'bottom',
194
+ align: 'left'
195
+ },
196
+ width: 400,
197
+ pointerClass: 'wp_pointer gmw_pointer'
198
+ }).pointer('open');
199
+ } else {
200
+ try {
201
+ $(gmw_pointer).pointer('close');
202
+ } catch(err) {}
203
+ }
204
+ } // gmw_show_pointer
205
 
206
+
207
  // get active tab index from cookie
208
  function gmw_get_active_tab(el_id) {
209
  id = parseInt(0 + $.cookie(el_id), 10);
217
 
218
  // save active tab index to cookie
219
  function gmw_save_active_tab(elem) {
220
+ $.cookie($(elem).attr('id'), $(elem).tabs('option', 'active'), { expires: 180 });
221
  } // save_active_tab
222
 
223
 
224
  // show/hide custom link field based on user's link type choice
225
  function gmw_change_link_type(widget) {
226
+ if ($('.gmw_thumb_link_type', widget).val() == 'custom' || $('.gmw_thumb_link_type', widget).val() == 'custom_blank') {
227
  $('.gmw_thumb_link_section', widget).show();
228
  } else {
229
  $('.gmw_thumb_link_section', widget).hide();
231
  } // link_type
232
 
233
 
234
+ // show/hide custom lightbox map size
235
+ function gmw_change_fullscreen(widget) {
236
+ if ($('.gmw_lightbox_fullscreen', widget).val() == '1') {
237
+ $('.gmw_lightbox_fullscreen_custom_section', widget).hide();
 
238
  } else {
239
+ $('.gmw_lightbox_fullscreen_custom_section', widget).show();
 
240
  }
241
+ } // fullscreen
242
+
243
+
244
+ // show/hide fields based on mode
245
+ function gmw_change_mode(widget) {
246
+ mode = $('.gmw_lightbox_mode', widget).val();
247
+
248
+ $('p[class^="gmw_lightbox_mode_"]', widget).hide();
249
+ $('p.gmw_lightbox_mode_' + mode, widget).show();
250
+ } // mode
251
+
252
+
253
+ // show/hide custom pin URL field based on user's pin type choice
254
+ function gmw_change_pin_type(widget) {
255
+ type = $('.gmw_thumb_pin_type', widget).val();
256
+ type = type.replace('-', '_');
257
+
258
+ $('p[class^="gmw_thumb_pin_type_"]', widget).hide();
259
+ $('p.gmw_thumb_pin_type_' + type, widget).show();
260
  } // pin_type
261
 
262
 
 
263
  // open promo dialog on load
264
  if (window.location.search.search('gmw_open_promo_dialog') != -1) {
265
  gmw_open_promo_dialog();
266
  }
267
 
268
+
269
  // opens promo dialog when special value is selected in widget's options
270
+ function gmw_promo_option_change(widget, event) {
271
+ if (($(event.target).val()) == '-1') {
272
+ event.stopPropagation();
273
+ event.preventDefault();
274
+
275
+ $(event.target).find('option').attr('selected', '');
276
+ $(event.target).find('option:first').attr('selected', 'selected');
277
  gmw_open_promo_dialog(widget);
278
  }
279
  } // promo_option_change
280
 
281
+
282
  // already subscribed button in dialog
283
  $('.gmw_goto_activation').on('click', function(e) {
284
+ $('.gmw_promo_dialog_screen').hide();
 
285
  $('#gmw_dialog_activate').show();
286
 
287
  if ($(this).data('noprevent')) {
296
  // go to intro button in dialog
297
  $('.gmw_goto_intro').on('click', function(e) {
298
  e.preventDefault();
299
+
300
+ $('.gmw_promo_dialog_screen').hide();
301
  $('#gmw_dialog_intro').show();
 
 
302
 
303
  return false;
304
  }); // go to intro click
 
305
 
306
+
307
+ // go to PRO features button in dialog
308
+ $('.gmw_goto_pro').on('click', function(e) {
309
  e.preventDefault();
310
+
311
+ $('.gmw_promo_dialog_screen').hide();
312
+ $('#gmw_dialog_pro_features').show();
313
 
314
  return false;
315
+ }); // go to PRO features click
 
316
 
317
+
318
+ // enter is pressed in license key field
319
+ $('#gmw_code').on('keypress', function(e) {
320
+ if (e.which === 13) {
321
+ e.preventDefault();
322
+ $('#gmw_activate').trigger('click');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
323
  return false;
324
  }
325
+ }); // enter press
326
+
327
+
328
+ // enter is pressed in license key field in settings
329
+ $('#activation_code').on('keypress', function(e) {
330
+ if (e.which === 13 || e.which === 10) {
331
+ e.preventDefault();
332
+ $('#submit-license').trigger('click');
333
  return false;
334
  }
335
+ }); // enter press
336
+
337
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
338
  // check code and activate button in dialog
339
  $('#gmw_activate').on('click', function(e) {
340
  e.preventDefault();
341
 
342
  $('#gmw_promo_dialog input.error').removeClass('error');
343
  $('#gmw_promo_dialog span.error').hide();
344
+ $('#gmw_promo_dialog input').addClass('gmw_spinner').addClass('gmw_disabled');
345
+ $('#gmw_activate').addClass('gmw_disabled');
346
 
347
+ $.post(ajaxurl, { action: 'gmw_activate', 'code': $('#gmw_code').val()}, function(response) {
348
+ if (response.success === true) {
349
  alert(gmw.activate_ok);
350
+ tmp = window.location.pathname + window.location.search;
351
+ tmp = tmp.replace('gmw_open_promo_dialog', '');
352
+ window.location = tmp;
 
 
 
 
353
  } else {
354
+ $('#gmw_promo_dialog input').addClass('error');
355
+ $('#gmw_promo_dialog span.error.gmw_code').html(response.data).show();
356
  $('#gmw_code').focus().select();
357
  }
358
+ }, 'json')
359
+ .fail(function() {
360
  alert(gmw.undocumented_error);
361
+ })
362
+ .always(function() {
363
+ $('#gmw_promo_dialog input').removeClass('gmw_spinner').removeClass('gmw_disabled');
364
+ $('#gmw_activate').removeClass('gmw_disabled');
365
+ });;
366
+
367
  return false;
368
  }); // activate button click
369
 
370
+
371
  // open promo/activation dialog
372
+ function gmw_open_promo_dialog() {
373
+ $('.gmw_promo_dialog_screen').hide();
374
  $('#gmw_dialog_intro').show();
 
 
375
 
376
  $('#gmw_promo_dialog').dialog({
377
  'dialogClass' : 'wp-dialog gmw-dialog',
378
  'modal' : true,
379
+ 'resizable': false,
380
  'width': 650,
381
+ 'title': gmw.plugin_name,
382
+ 'autoOpen': false,
383
+ 'closeOnEscape': false,
384
+ open: function(event, ui) {
385
+ $(this).siblings().find('span.ui-dialog-title').html(gmw.dialog_promo_title);
386
+ $('.ui-widget-overlay').bind('click', function () { $(this).siblings('.ui-dialog').find('.ui-dialog-content').dialog('close'); });
387
+ $('.gmw_goto_pro').blur();
388
+ },
389
+ close: function(event, ui) { }
390
+ }).dialog('open');
391
+ } // open_promo_dialog
392
+
393
+
394
+ // open pin picker library dialog
395
+ function gmw_open_pins_library_dialog(button) {
396
+ $('#gmw_pins_dialog').dialog({
397
+ 'dialogClass' : 'wp-dialog gmw-map-dialog',
398
+ 'modal' : true,
399
+ 'resizable': true,
400
+ 'width': $(window).width() * 0.4,
401
+ 'height': 585,
402
+ 'title': gmw.dialog_pins_title,
403
  'autoOpen': false,
404
  'closeOnEscape': true,
405
+ open: function(event, ui) {
406
+ $('.ui-widget-overlay').bind('click', function () { $(this).siblings('.ui-dialog').find('.ui-dialog-content').dialog('close'); });
407
+ $('#pins_container').height($('#gmw_pins_dialog').dialog('option', 'height') - 185);
408
+ $('#pins_container img').each(function(ind, el) {
409
+ if (!$(el).attr('src')) {
410
+ tmp = gmw.pins_library + $(el).parent('a').data('filename');
411
+ $(el).attr('src', tmp);
412
+ }
413
+ });
414
+ },
415
+ close: function(event, ui) { },
416
+ resizeStop: function(event, ui) {
417
+ $('#gmw_pins_dialog').dialog('option', 'position', {my: 'center', at: 'center', of: window});
418
+ $('#pins_container').height($('#gmw_pins_dialog').dialog('option', 'height') - 185);
419
+ }
420
  }).dialog('open');
421
+
422
+ if (button) {
423
+ $('#gmw_pins_dialog').data('widget-id', $(button).parents('div.widget').attr('id'));
424
+ }
425
+ } // open_pins_library_dialog
426
+
427
 
428
+ // recenter dialogs when window resizes
429
+ $(window).resize(function(e) {
430
+ if ($('.ui-dialog #gmw_promo_dialog').is(':visible')) {
431
+ $('#gmw_promo_dialog').dialog('option', 'position', {my: 'center', at: 'center', of: window});
432
  }
433
+ if ($('.ui-dialog #gmw_map_dialog').is(':visible')) {
434
+ $('#gmw_map_dialog').dialog('option', 'position', {my: 'center', at: 'center', of: window});
435
+ }
436
+ if ($('.ui-dialog #gmw_pins_dialog').is(':visible')) {
437
+ $('#gmw_pins_dialog').dialog('option', 'position', {my: 'center', at: 'center', of: window});
438
+ }
439
+
440
+ return true;
441
+ }); // recenter dialogs
442
+
443
+
444
+ // open address picking map dialog
445
+ function gmw_open_map_dialog(widget, target) {
446
+ $('#gmw_map_dialog').dialog({
447
+ 'dialogClass' : 'wp-dialog gmw-map-dialog',
448
+ 'modal' : true,
449
+ 'width': 880,
450
+ 'minWidth': 500,
451
+ 'minHeight': 500,
452
+ 'resizable': true,
453
+ 'title': gmw.dialog_map_title,
454
+ 'autoOpen': false,
455
+ 'closeOnEscape': true,
456
+ open: function(event, ui) {
457
+ $('.ui-widget-overlay').bind('click', function () { $(this).siblings('.ui-dialog').find('.ui-dialog-content').dialog('close'); });
458
+ gmw_init_map($('input[id$="-' + target + '"]', widget).val());
459
+ $('#gmw_map_dialog').data('widget-id', $(widget).attr('id'));
460
+ $('#gmw_map_dialog').data('target', target);
461
+ },
462
+ resizeStop: function(event, ui) {
463
+ $('#gmw_map_dialog').dialog('option', 'position', {my: 'center', at: 'center', of: window});
464
+ $('#gmw_map_canvas').height($('#gmw_map_dialog').dialog('option', 'height') - $('#gmw_map_dialog_footer').height() - 90);
465
+ google.maps.event.trigger(gmw.map, 'resize');
466
+ },
467
+ close: function(event, ui) {}
468
+ }).dialog('open');
469
+ } // open_map_dialog
470
+
471
+
472
+ // filter pins
473
+ // bind and run
474
+ var last_search = '';
475
+ $('#pins_search').val($.cookie('gmw_pins_search'));
476
+ $('#pins_search').on('change mouseup keyup focus blur search', function(e) {
477
+ search = $(this).val();
478
+
479
+ if (search == last_search) {
480
+ return false;
481
+ }
482
+
483
+ last_search = search;
484
+ if (!search) {
485
+ $.cookie('gmw_pins_search', search, { expires: 90 });
486
+ $('#pins_container a').show();
487
+
488
+ return true;
489
+ } else {
490
+ $.cookie('gmw_pins_search', search, { expires: 90 });
491
+ reg_exp = new RegExp(search, 'i');
492
+
493
+ $('#pins_container a:not(.skip-search)').each(function(ind, el) {
494
+ name = $('span', el).text();
495
+ if (name.search(reg_exp) != -1) {
496
+ $(el).show();
497
+ } else {
498
+ $(el).hide();
499
+ }
500
+ });
501
+
502
+ return true;
503
+ }
504
+ }).trigger('search');
505
+ // filter pins
506
+
507
+
508
+ // select pin from dialog
509
+ $('#pins_container a:not(.skip-search)').on('click', function(e) {
510
+ e.preventDefault();
511
+ widget_id = $('#gmw_pins_dialog').data('widget-id');
512
+
513
+ $('#' + widget_id + ' .thumb_pin_img_library').val($(this).data('filename'));
514
+ $('#' + widget_id + ' .thumb_pin_img_library_preview').attr('src', gmw.pins_library + $(this).data('filename'));
515
+
516
+ $('#gmw_pins_dialog').dialog('close');
517
+
518
+ return false;
519
+ }); // select pin from dialog
520
+
521
+ function gmw_init_map(address) {
522
+ if (!address) {
523
+ address = 'New York, USA';
524
+ }
525
+ gmw_put_pin(address);
526
+ } // gmw_init_map
527
+
528
+
529
+ function gmw_put_pin(address) {
530
+ gmw.geocoder.geocode({'address': address}, function(results, status) {
531
+ if (status === google.maps.GeocoderStatus.OK) {
532
+ point = results[0].geometry.location;
533
+ $('#gmw_map_pin_coordinates').val(results[0].geometry.location.lat().toFixed(5) + ', ' + results[0].geometry.location.lng().toFixed(5));
534
+ $('#gmw_map_pin_address').val(results[0].formatted_address);
535
+ gmw.map = new google.maps.Map(document.getElementById('gmw_map_canvas'), {
536
+ zoom: 15,
537
+ center: point,
538
+ mapTypeId: google.maps.MapTypeId.ROADMAP
539
+ });
540
+ gmw.marker = new google.maps.Marker({
541
+ position: point,
542
+ title: 'Drag and drop pin to change the address',
543
+ map: gmw.map,
544
+ draggable: true
545
+ });
546
+ google.maps.event.addListener(gmw.marker, 'dragend', function(e) {
547
+ $('#gmw_map_pin_coordinates').val(e.latLng.lat().toFixed(5) + ', ' + e.latLng.lng().toFixed(5));
548
+ gmw_update_address_by_pos(gmw.marker.getPosition());
549
+ });
550
+ google.maps.event.addListener(gmw.marker, 'drag', function(e) {
551
+ $('#gmw_map_pin_coordinates').val(e.latLng.lat().toFixed(5) + ', ' + e.latLng.lng().toFixed(5));
552
+ $('#gmw_map_pin_address').val('Searching for the closest address ...');
553
+ });
554
+ } else {
555
+ alert('Geocoder was unable to process the address; ' + status);
556
+ }
557
+ });
558
+ } // gmw_put_pin
559
+
560
+
561
+ // get address from coordinates
562
+ function gmw_update_address_by_pos(point) {
563
+ $('#gmw_map_dialog_address').val('Processing coordinates ...');
564
+ gmw.geocoder.geocode({
565
+ latLng: point
566
+ }, function(responses) {
567
+ if (responses && responses.length > 0) {
568
+ $('#gmw_map_pin_address').val(responses[0].formatted_address);
569
+ } else {
570
+ $('#gmw_map_pin_address').val('Can\'t determine address at this location.');
571
+ }
572
+ });
573
+ } // gmw_update_address_by_pos
574
+
575
+
576
+ // move pin in dialog based on entered coordinates or address
577
+ $('.gmw-move-pin').on('click', function(e) {
578
+ e.preventDefault();
579
+
580
+ field = $(this).data('location-holder');
581
+ gmw_put_pin($('#' + field).val());
582
+
583
+ return false;
584
+ }); // move pin in dialog
585
+
586
+
587
+ // just close the map dialog
588
+ $('#gmw_close_map_dialog').on('click', function(e) {
589
+ e.preventDefault();
590
+
591
+ $('#gmw_map_dialog').dialog('close');
592
+
593
+ return false;
594
+ }); // close dialog
595
+
596
+
597
+ // close map dialog and transfer address or coordinates
598
+ $('.gmw_close_save_map_dialog').on('click', function(e) {
599
+ e.preventDefault();
600
+
601
+ field = $(this).data('location-holder');
602
+ field_val = $('#' + field).val();
603
+
604
+ widget_id = $('#gmw_map_dialog').data('widget-id');
605
+ target = $('#gmw_map_dialog').data('target');
606
+ $('#' + widget_id + ' input[id$="-' + target + '"]').val(field_val);
607
+
608
+ $('#gmw_map_dialog').dialog('close');
609
+
610
+ return false;
611
+ }); // move pin in dialog
612
  }); // onload
js/gmw.js CHANGED
@@ -3,37 +3,140 @@
3
  * (c) Web factory Ltd, 2012 - 2016
4
  */
5
 
 
6
  jQuery(function($) {
7
- $('a.gmw-thumbnail-map.gmw-lightbox-enabled').click(function(e) {
8
- e.preventDefault();
9
-
10
- dialog = $($(this).attr('href'));
11
- map_width = dialog.attr('data-map-width');
12
- map_height = dialog.attr('data-map-height');
13
- map_url = dialog.attr('data-map-iframe-url');
14
- map_title = dialog.attr('title');
15
- map_skin = dialog.attr('data-map-skin');
16
-
17
- // adjust map size if screen is too small
18
- screen_width = $(window).width() - 50;
 
 
 
 
 
 
 
 
 
 
19
  if (screen_width < map_width) {
20
  map_width = screen_width;
21
  map_height *= screen_width / map_width;
22
  }
23
- screen_height = $(window).height() - 50;
24
  if (screen_height < map_height) {
25
  map_height = screen_height;
26
  map_width *= screen_height / map_height;
27
  }
28
 
29
- content = $(dialog.html());
30
- content.filter('.gmw-map').html('<iframe width="' + map_width + 'px" height="' + map_height + 'px" src="' + map_url + '"></iframe>');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
 
32
- $.colorbox({ html: content,
33
- title: map_title,
34
- className: 'gmw-' + map_skin,
35
- closeButton: false });
 
 
 
 
 
 
 
 
 
 
36
 
37
- return false;
38
- });
 
 
 
 
39
  }); // onload
3
  * (c) Web factory Ltd, 2012 - 2016
4
  */
5
 
6
+
7
  jQuery(function($) {
8
+ if (gmw_data.colorbox_css) {
9
+ $('head').append('<link id="gmw-colorbox" rel="stylesheet" href="' + gmw_data.colorbox_css + '" type="text/css" media="all">');
10
+ }
11
+
12
+ // click map to open lightbox
13
+ $('a.gmw-thumbnail-map.gmw-lightbox-enabled').click(function(e) {
14
+ e.preventDefault();
15
+
16
+ dialog = $($(this).attr('href'));
17
+ map_width = dialog.data('map-width');
18
+ map_height = dialog.data('map-height');
19
+ map_url = dialog.data('map-iframe-url');
20
+ map_title = dialog.attr('title');
21
+ map_skin = dialog.data('map-skin');
22
+ close_button = Boolean(dialog.data('close-button'));
23
+ show_title = Boolean(dialog.data('show-title'));
24
+ close_overlay = Boolean(dialog.data('close-overlay'));
25
+ close_esc = Boolean(dialog.data('close-esc'));
26
+
27
+ // adjust map size if screen is too small
28
+ if (map_width !== '100%' && map_height !== '100%') {
29
+ screen_width = $(window).width() - 75;
30
  if (screen_width < map_width) {
31
  map_width = screen_width;
32
  map_height *= screen_width / map_width;
33
  }
34
+ screen_height = $(window).height() - 75;
35
  if (screen_height < map_height) {
36
  map_height = screen_height;
37
  map_width *= screen_height / map_height;
38
  }
39
 
40
+ map_height += 'px';
41
+ map_width += 'px';
42
+ } // if !fullscreen
43
+
44
+ if (!show_title) {
45
+ map_title = '';
46
+ }
47
+
48
+ content = $(dialog.html());
49
+ content.filter('.gmw-map').html('<iframe width="100%" height="100%" src="' + map_url + '" allowfullscreen></iframe>');
50
+
51
+ $.colorbox({ html: content,
52
+ title: map_title,
53
+ width: map_width,
54
+ height: map_width,
55
+ scrolling: false,
56
+ preloading: false,
57
+ arrowKey: false,
58
+ className: 'gmw-' + map_skin,
59
+ closeButton: close_button,
60
+ overlayClose: close_overlay,
61
+ escKey: close_esc });
62
+
63
+ // if GA tracking is enabled - track
64
+ if (gmw_data.track_ga === '1') {
65
+ if (typeof _gaq !== 'undefined') {
66
+ _gaq.push(['_trackEvent', 'Open GMW interactive map in lightbox', dialog.attr('title')]);
67
+ }
68
+
69
+ if (typeof ga !== 'undefined') {
70
+ ga('send', 'event', 'Open GMW interactive map in lightbox', dialog.attr('title'));
71
+ }
72
+ } // if track GA
73
+
74
+ return false;
75
+ }); // click map to open lightbox
76
+
77
+
78
+ // click map to replace img with interactive map
79
+ $('a.gmw-thumbnail-map.gmw-replace-enabled').click(function(e) {
80
+ e.preventDefault();
81
+
82
+ dialog = $($(this).attr('href'));
83
+ map_width = dialog.data('map-width');
84
+ map_height = dialog.data('map-height');
85
+ map_url = dialog.data('map-iframe-url');
86
+
87
+ // adjust map size if screen is too small
88
+ screen_width = $(window).width() - 50;
89
+ if (screen_width < map_width) {
90
+ map_width = screen_width;
91
+ map_height *= screen_width / map_width;
92
+ }
93
+ screen_height = $(window).height() - 50;
94
+ if (screen_height < map_height) {
95
+ map_height = screen_height;
96
+ map_width *= screen_height / map_height;
97
+ }
98
+
99
+ content = $(dialog.html());
100
+ content.filter('.gmw-map').html('<iframe width="' + map_width + 'px" height="' + map_height + 'px" src="' + map_url + '" allowfullscreen></iframe>');
101
+
102
+ $(this).parent('p').prev('p').hide();
103
+ $(this).parent('p').next('p, span.gmw-powered-by').hide();
104
+ $(this).parent('p').replaceWith(content);
105
+
106
+ // if GA tracking is enabled - track
107
+ if (gmw_data.track_ga === '1') {
108
+ if (typeof _gaq !== 'undefined') {
109
+ _gaq.push(['_trackEvent', 'Replace GMW thumbnail with interactive map', dialog.attr('title')]);
110
+ }
111
+
112
+ if (typeof ga !== 'undefined') {
113
+ ga('send', 'event', 'Replace GMW thumbnail with interactive map', dialog.attr('title'));
114
+ }
115
+ } // if track GA
116
+
117
+ return false;
118
+ }); // click map to replace img with interactive map
119
+
120
 
121
+ // fix lightbox height when header/footer are used
122
+ $(document).bind('cbox_complete', function(e){
123
+ // test if this is a GMW colorbox
124
+ colorbox = e.currentTarget.activeElement;
125
+ if ($('div[class^=gmw-]', colorbox).length === 0) {
126
+ return;
127
+ }
128
+
129
+ if ($('#cboxTitle', colorbox).html() === '') {
130
+ $('#cboxTitle').hide();
131
+ title_height = 0;
132
+ } else {
133
+ title_height = parseInt(0 + $('#cboxTitle', colorbox).outerHeight(true), 10);;
134
+ }
135
 
136
+ // adjust iframe size
137
+ container = parseInt(0 + $('#cboxLoadedContent').height(), 10);
138
+ header = parseInt(0 + $('#cboxLoadedContent div.gmw-header').outerHeight(true), 10);
139
+ footer = parseInt(0 + $('#cboxLoadedContent div.gmw-header').outerHeight(true), 10);
140
+ $('.gmw-map iframe').height((container - header - footer - title_height) + 'px');
141
+ });
142
  }); // onload
js/jquery.colorbox.min.js CHANGED
@@ -1,6 +1,6 @@
1
  /*!
2
- Colorbox 1.5.14
3
  license: MIT
4
  http://www.jacklmoore.com/colorbox
5
  */
6
- (function(t,e,i){function n(i,n,o){var r=e.createElement(i);return n&&(r.id=Z+n),o&&(r.style.cssText=o),t(r)}function o(){return i.innerHeight?i.innerHeight:t(i).height()}function r(e,i){i!==Object(i)&&(i={}),this.cache={},this.el=e,this.value=function(e){var n;return void 0===this.cache[e]&&(n=t(this.el).attr("data-cbox-"+e),void 0!==n?this.cache[e]=n:void 0!==i[e]?this.cache[e]=i[e]:void 0!==X[e]&&(this.cache[e]=X[e])),this.cache[e]},this.get=function(e){var i=this.value(e);return t.isFunction(i)?i.call(this.el,this):i}}function h(t){var e=W.length,i=(z+t)%e;return 0>i?e+i:i}function a(t,e){return Math.round((/%/.test(t)?("x"===e?E.width():o())/100:1)*parseInt(t,10))}function s(t,e){return t.get("photo")||t.get("photoRegex").test(e)}function l(t,e){return t.get("retinaUrl")&&i.devicePixelRatio>1?e.replace(t.get("photoRegex"),t.get("retinaSuffix")):e}function d(t){"contains"in y[0]&&!y[0].contains(t.target)&&t.target!==v[0]&&(t.stopPropagation(),y.focus())}function c(t){c.str!==t&&(y.add(v).removeClass(c.str).addClass(t),c.str=t)}function g(e){z=0,e&&e!==!1&&"nofollow"!==e?(W=t("."+te).filter(function(){var i=t.data(this,Y),n=new r(this,i);return n.get("rel")===e}),z=W.index(_.el),-1===z&&(W=W.add(_.el),z=W.length-1)):W=t(_.el)}function u(i){t(e).trigger(i),ae.triggerHandler(i)}function f(i){var o;if(!G){if(o=t(i).data(Y),_=new r(i,o),g(_.get("rel")),!$){$=q=!0,c(_.get("className")),y.css({visibility:"hidden",display:"block",opacity:""}),L=n(se,"LoadedContent","width:0; height:0; overflow:hidden; visibility:hidden"),b.css({width:"",height:""}).append(L),D=T.height()+k.height()+b.outerHeight(!0)-b.height(),j=C.width()+H.width()+b.outerWidth(!0)-b.width(),A=L.outerHeight(!0),N=L.outerWidth(!0);var h=a(_.get("initialWidth"),"x"),s=a(_.get("initialHeight"),"y"),l=_.get("maxWidth"),f=_.get("maxHeight");_.w=(l!==!1?Math.min(h,a(l,"x")):h)-N-j,_.h=(f!==!1?Math.min(s,a(f,"y")):s)-A-D,L.css({width:"",height:_.h}),J.position(),u(ee),_.get("onOpen"),O.add(F).hide(),y.focus(),_.get("trapFocus")&&e.addEventListener&&(e.addEventListener("focus",d,!0),ae.one(re,function(){e.removeEventListener("focus",d,!0)})),_.get("returnFocus")&&ae.one(re,function(){t(_.el).focus()})}var p=parseFloat(_.get("opacity"));v.css({opacity:p===p?p:"",cursor:_.get("overlayClose")?"pointer":"",visibility:"visible"}).show(),_.get("closeButton")?B.html(_.get("close")).appendTo(b):B.appendTo("<div/>"),w()}}function p(){y||(V=!1,E=t(i),y=n(se).attr({id:Y,"class":t.support.opacity===!1?Z+"IE":"",role:"dialog",tabindex:"-1"}).hide(),v=n(se,"Overlay").hide(),S=t([n(se,"LoadingOverlay")[0],n(se,"LoadingGraphic")[0]]),x=n(se,"Wrapper"),b=n(se,"Content").append(F=n(se,"Title"),I=n(se,"Current"),P=t('<button type="button"/>').attr({id:Z+"Previous"}),K=t('<button type="button"/>').attr({id:Z+"Next"}),R=n("button","Slideshow"),S),B=t('<button type="button"/>').attr({id:Z+"Close"}),x.append(n(se).append(n(se,"TopLeft"),T=n(se,"TopCenter"),n(se,"TopRight")),n(se,!1,"clear:left").append(C=n(se,"MiddleLeft"),b,H=n(se,"MiddleRight")),n(se,!1,"clear:left").append(n(se,"BottomLeft"),k=n(se,"BottomCenter"),n(se,"BottomRight"))).find("div div").css({"float":"left"}),M=n(se,!1,"position:absolute; width:9999px; visibility:hidden; display:none; max-width:none;"),O=K.add(P).add(I).add(R)),e.body&&!y.parent().length&&t(e.body).append(v,y.append(x,M))}function m(){function i(t){t.which>1||t.shiftKey||t.altKey||t.metaKey||t.ctrlKey||(t.preventDefault(),f(this))}return y?(V||(V=!0,K.click(function(){J.next()}),P.click(function(){J.prev()}),B.click(function(){J.close()}),v.click(function(){_.get("overlayClose")&&J.close()}),t(e).bind("keydown."+Z,function(t){var e=t.keyCode;$&&_.get("escKey")&&27===e&&(t.preventDefault(),J.close()),$&&_.get("arrowKey")&&W[1]&&!t.altKey&&(37===e?(t.preventDefault(),P.click()):39===e&&(t.preventDefault(),K.click()))}),t.isFunction(t.fn.on)?t(e).on("click."+Z,"."+te,i):t("."+te).live("click."+Z,i)),!0):!1}function w(){var e,o,r,h=J.prep,d=++le;if(q=!0,U=!1,u(he),u(ie),_.get("onLoad"),_.h=_.get("height")?a(_.get("height"),"y")-A-D:_.get("innerHeight")&&a(_.get("innerHeight"),"y"),_.w=_.get("width")?a(_.get("width"),"x")-N-j:_.get("innerWidth")&&a(_.get("innerWidth"),"x"),_.mw=_.w,_.mh=_.h,_.get("maxWidth")&&(_.mw=a(_.get("maxWidth"),"x")-N-j,_.mw=_.w&&_.w<_.mw?_.w:_.mw),_.get("maxHeight")&&(_.mh=a(_.get("maxHeight"),"y")-A-D,_.mh=_.h&&_.h<_.mh?_.h:_.mh),e=_.get("href"),Q=setTimeout(function(){S.show()},100),_.get("inline")){var c=t(e);r=t("<div>").hide().insertBefore(c),ae.one(he,function(){r.replaceWith(c)}),h(c)}else _.get("iframe")?h(" "):_.get("html")?h(_.get("html")):s(_,e)?(e=l(_,e),U=new Image,t(U).addClass(Z+"Photo").bind("error",function(){h(n(se,"Error").html(_.get("imgError")))}).one("load",function(){d===le&&setTimeout(function(){var e;t.each(["alt","longdesc","aria-describedby"],function(e,i){var n=t(_.el).attr(i)||t(_.el).attr("data-"+i);n&&U.setAttribute(i,n)}),_.get("retinaImage")&&i.devicePixelRatio>1&&(U.height=U.height/i.devicePixelRatio,U.width=U.width/i.devicePixelRatio),_.get("scalePhotos")&&(o=function(){U.height-=U.height*e,U.width-=U.width*e},_.mw&&U.width>_.mw&&(e=(U.width-_.mw)/U.width,o()),_.mh&&U.height>_.mh&&(e=(U.height-_.mh)/U.height,o())),_.h&&(U.style.marginTop=Math.max(_.mh-U.height,0)/2+"px"),W[1]&&(_.get("loop")||W[z+1])&&(U.style.cursor="pointer",U.onclick=function(){J.next()}),U.style.width=U.width+"px",U.style.height=U.height+"px",h(U)},1)}),U.src=e):e&&M.load(e,_.get("data"),function(e,i){d===le&&h("error"===i?n(se,"Error").html(_.get("xhrError")):t(this).contents())})}var v,y,x,b,T,C,H,k,W,E,L,M,S,F,I,R,K,P,B,O,_,D,j,A,N,z,U,$,q,G,Q,J,V,X={html:!1,photo:!1,iframe:!1,inline:!1,transition:"elastic",speed:300,fadeOut:300,width:!1,initialWidth:"600",innerWidth:!1,maxWidth:!1,height:!1,initialHeight:"450",innerHeight:!1,maxHeight:!1,scalePhotos:!0,scrolling:!0,opacity:.9,preloading:!0,className:!1,overlayClose:!0,escKey:!0,arrowKey:!0,top:!1,bottom:!1,left:!1,right:!1,fixed:!1,data:void 0,closeButton:!0,fastIframe:!0,open:!1,reposition:!0,loop:!0,slideshow:!1,slideshowAuto:!0,slideshowSpeed:2500,slideshowStart:"start slideshow",slideshowStop:"stop slideshow",photoRegex:/\.(gif|png|jp(e|g|eg)|bmp|ico|webp|jxr|svg)((#|\?).*)?$/i,retinaImage:!1,retinaUrl:!1,retinaSuffix:"@2x.$1",current:"image {current} of {total}",previous:"previous",next:"next",close:"close",xhrError:"This content failed to load.",imgError:"This image failed to load.",returnFocus:!0,trapFocus:!0,onOpen:!1,onLoad:!1,onComplete:!1,onCleanup:!1,onClosed:!1,rel:function(){return this.rel},href:function(){return t(this).attr("href")},title:function(){return this.title}},Y="colorbox",Z="cbox",te=Z+"Element",ee=Z+"_open",ie=Z+"_load",ne=Z+"_complete",oe=Z+"_cleanup",re=Z+"_closed",he=Z+"_purge",ae=t("<a/>"),se="div",le=0,de={},ce=function(){function t(){clearTimeout(h)}function e(){(_.get("loop")||W[z+1])&&(t(),h=setTimeout(J.next,_.get("slideshowSpeed")))}function i(){R.html(_.get("slideshowStop")).unbind(s).one(s,n),ae.bind(ne,e).bind(ie,t),y.removeClass(a+"off").addClass(a+"on")}function n(){t(),ae.unbind(ne,e).unbind(ie,t),R.html(_.get("slideshowStart")).unbind(s).one(s,function(){J.next(),i()}),y.removeClass(a+"on").addClass(a+"off")}function o(){r=!1,R.hide(),t(),ae.unbind(ne,e).unbind(ie,t),y.removeClass(a+"off "+a+"on")}var r,h,a=Z+"Slideshow_",s="click."+Z;return function(){r?_.get("slideshow")||(ae.unbind(oe,o),o()):_.get("slideshow")&&W[1]&&(r=!0,ae.one(oe,o),_.get("slideshowAuto")?i():n(),R.show())}}();t[Y]||(t(p),J=t.fn[Y]=t[Y]=function(e,i){var n,o=this;if(e=e||{},t.isFunction(o))o=t("<a/>"),e.open=!0;else if(!o[0])return o;return o[0]?(p(),m()&&(i&&(e.onComplete=i),o.each(function(){var i=t.data(this,Y)||{};t.data(this,Y,t.extend(i,e))}).addClass(te),n=new r(o[0],e),n.get("open")&&f(o[0])),o):o},J.position=function(e,i){function n(){T[0].style.width=k[0].style.width=b[0].style.width=parseInt(y[0].style.width,10)-j+"px",b[0].style.height=C[0].style.height=H[0].style.height=parseInt(y[0].style.height,10)-D+"px"}var r,h,s,l=0,d=0,c=y.offset();if(E.unbind("resize."+Z),y.css({top:-9e4,left:-9e4}),h=E.scrollTop(),s=E.scrollLeft(),_.get("fixed")?(c.top-=h,c.left-=s,y.css({position:"fixed"})):(l=h,d=s,y.css({position:"absolute"})),d+=_.get("right")!==!1?Math.max(E.width()-_.w-N-j-a(_.get("right"),"x"),0):_.get("left")!==!1?a(_.get("left"),"x"):Math.round(Math.max(E.width()-_.w-N-j,0)/2),l+=_.get("bottom")!==!1?Math.max(o()-_.h-A-D-a(_.get("bottom"),"y"),0):_.get("top")!==!1?a(_.get("top"),"y"):Math.round(Math.max(o()-_.h-A-D,0)/2),y.css({top:c.top,left:c.left,visibility:"visible"}),x[0].style.width=x[0].style.height="9999px",r={width:_.w+N+j,height:_.h+A+D,top:l,left:d},e){var g=0;t.each(r,function(t){return r[t]!==de[t]?(g=e,void 0):void 0}),e=g}de=r,e||y.css(r),y.dequeue().animate(r,{duration:e||0,complete:function(){n(),q=!1,x[0].style.width=_.w+N+j+"px",x[0].style.height=_.h+A+D+"px",_.get("reposition")&&setTimeout(function(){E.bind("resize."+Z,J.position)},1),t.isFunction(i)&&i()},step:n})},J.resize=function(t){var e;$&&(t=t||{},t.width&&(_.w=a(t.width,"x")-N-j),t.innerWidth&&(_.w=a(t.innerWidth,"x")),L.css({width:_.w}),t.height&&(_.h=a(t.height,"y")-A-D),t.innerHeight&&(_.h=a(t.innerHeight,"y")),t.innerHeight||t.height||(e=L.scrollTop(),L.css({height:"auto"}),_.h=L.height()),L.css({height:_.h}),e&&L.scrollTop(e),J.position("none"===_.get("transition")?0:_.get("speed")))},J.prep=function(i){function o(){return _.w=_.w||L.width(),_.w=_.mw&&_.mw<_.w?_.mw:_.w,_.w}function a(){return _.h=_.h||L.height(),_.h=_.mh&&_.mh<_.h?_.mh:_.h,_.h}if($){var d,g="none"===_.get("transition")?0:_.get("speed");L.remove(),L=n(se,"LoadedContent").append(i),L.hide().appendTo(M.show()).css({width:o(),overflow:_.get("scrolling")?"auto":"hidden"}).css({height:a()}).prependTo(b),M.hide(),t(U).css({"float":"none"}),c(_.get("className")),d=function(){function i(){t.support.opacity===!1&&y[0].style.removeAttribute("filter")}var n,o,a=W.length;$&&(o=function(){clearTimeout(Q),S.hide(),u(ne),_.get("onComplete")},F.html(_.get("title")).show(),L.show(),a>1?("string"==typeof _.get("current")&&I.html(_.get("current").replace("{current}",z+1).replace("{total}",a)).show(),K[_.get("loop")||a-1>z?"show":"hide"]().html(_.get("next")),P[_.get("loop")||z?"show":"hide"]().html(_.get("previous")),ce(),_.get("preloading")&&t.each([h(-1),h(1)],function(){var i,n=W[this],o=new r(n,t.data(n,Y)),h=o.get("href");h&&s(o,h)&&(h=l(o,h),i=e.createElement("img"),i.src=h)})):O.hide(),_.get("iframe")?(n=e.createElement("iframe"),"frameBorder"in n&&(n.frameBorder=0),"allowTransparency"in n&&(n.allowTransparency="true"),_.get("scrolling")||(n.scrolling="no"),t(n).attr({src:_.get("href"),name:(new Date).getTime(),"class":Z+"Iframe",allowFullScreen:!0}).one("load",o).appendTo(L),ae.one(he,function(){n.src="//about:blank"}),_.get("fastIframe")&&t(n).trigger("load")):o(),"fade"===_.get("transition")?y.fadeTo(g,1,i):i())},"fade"===_.get("transition")?y.fadeTo(g,0,function(){J.position(0,d)}):J.position(g,d)}},J.next=function(){!q&&W[1]&&(_.get("loop")||W[z+1])&&(z=h(1),f(W[z]))},J.prev=function(){!q&&W[1]&&(_.get("loop")||z)&&(z=h(-1),f(W[z]))},J.close=function(){$&&!G&&(G=!0,$=!1,u(oe),_.get("onCleanup"),E.unbind("."+Z),v.fadeTo(_.get("fadeOut")||0,0),y.stop().fadeTo(_.get("fadeOut")||0,0,function(){y.hide(),v.hide(),u(he),L.remove(),setTimeout(function(){G=!1,u(re),_.get("onClosed")},1)}))},J.remove=function(){y&&(y.stop(),t[Y].close(),y.stop(!1,!0).remove(),v.remove(),G=!1,y=null,t("."+te).removeData(Y).removeClass(te),t(e).unbind("click."+Z).unbind("keydown."+Z))},J.element=function(){return t(_.el)},J.settings=X)})(jQuery,document,window);
1
  /*!
2
+ Colorbox 1.6.3
3
  license: MIT
4
  http://www.jacklmoore.com/colorbox
5
  */
6
+ (function(t,e,i){function n(i,n,o){var r=e.createElement(i);return n&&(r.id=Z+n),o&&(r.style.cssText=o),t(r)}function o(){return i.innerHeight?i.innerHeight:t(i).height()}function r(e,i){i!==Object(i)&&(i={}),this.cache={},this.el=e,this.value=function(e){var n;return void 0===this.cache[e]&&(n=t(this.el).attr("data-cbox-"+e),void 0!==n?this.cache[e]=n:void 0!==i[e]?this.cache[e]=i[e]:void 0!==X[e]&&(this.cache[e]=X[e])),this.cache[e]},this.get=function(e){var i=this.value(e);return t.isFunction(i)?i.call(this.el,this):i}}function h(t){var e=W.length,i=(A+t)%e;return 0>i?e+i:i}function a(t,e){return Math.round((/%/.test(t)?("x"===e?E.width():o())/100:1)*parseInt(t,10))}function s(t,e){return t.get("photo")||t.get("photoRegex").test(e)}function l(t,e){return t.get("retinaUrl")&&i.devicePixelRatio>1?e.replace(t.get("photoRegex"),t.get("retinaSuffix")):e}function d(t){"contains"in x[0]&&!x[0].contains(t.target)&&t.target!==v[0]&&(t.stopPropagation(),x.focus())}function c(t){c.str!==t&&(x.add(v).removeClass(c.str).addClass(t),c.str=t)}function g(e){A=0,e&&e!==!1&&"nofollow"!==e?(W=t("."+te).filter(function(){var i=t.data(this,Y),n=new r(this,i);return n.get("rel")===e}),A=W.index(_.el),-1===A&&(W=W.add(_.el),A=W.length-1)):W=t(_.el)}function u(i){t(e).trigger(i),ae.triggerHandler(i)}function f(i){var o;if(!G){if(o=t(i).data(Y),_=new r(i,o),g(_.get("rel")),!$){$=q=!0,c(_.get("className")),x.css({visibility:"hidden",display:"block",opacity:""}),I=n(se,"LoadedContent","width:0; height:0; overflow:hidden; visibility:hidden"),b.css({width:"",height:""}).append(I),j=T.height()+k.height()+b.outerHeight(!0)-b.height(),D=C.width()+H.width()+b.outerWidth(!0)-b.width(),N=I.outerHeight(!0),z=I.outerWidth(!0);var h=a(_.get("initialWidth"),"x"),s=a(_.get("initialHeight"),"y"),l=_.get("maxWidth"),f=_.get("maxHeight");_.w=Math.max((l!==!1?Math.min(h,a(l,"x")):h)-z-D,0),_.h=Math.max((f!==!1?Math.min(s,a(f,"y")):s)-N-j,0),I.css({width:"",height:_.h}),J.position(),u(ee),_.get("onOpen"),O.add(F).hide(),x.focus(),_.get("trapFocus")&&e.addEventListener&&(e.addEventListener("focus",d,!0),ae.one(re,function(){e.removeEventListener("focus",d,!0)})),_.get("returnFocus")&&ae.one(re,function(){t(_.el).focus()})}var p=parseFloat(_.get("opacity"));v.css({opacity:p===p?p:"",cursor:_.get("overlayClose")?"pointer":"",visibility:"visible"}).show(),_.get("closeButton")?B.html(_.get("close")).appendTo(b):B.appendTo("<div/>"),w()}}function p(){x||(V=!1,E=t(i),x=n(se).attr({id:Y,"class":t.support.opacity===!1?Z+"IE":"",role:"dialog",tabindex:"-1"}).hide(),v=n(se,"Overlay").hide(),L=t([n(se,"LoadingOverlay")[0],n(se,"LoadingGraphic")[0]]),y=n(se,"Wrapper"),b=n(se,"Content").append(F=n(se,"Title"),R=n(se,"Current"),P=t('<button type="button"/>').attr({id:Z+"Previous"}),K=t('<button type="button"/>').attr({id:Z+"Next"}),S=n("button","Slideshow"),L),B=t('<button type="button"/>').attr({id:Z+"Close"}),y.append(n(se).append(n(se,"TopLeft"),T=n(se,"TopCenter"),n(se,"TopRight")),n(se,!1,"clear:left").append(C=n(se,"MiddleLeft"),b,H=n(se,"MiddleRight")),n(se,!1,"clear:left").append(n(se,"BottomLeft"),k=n(se,"BottomCenter"),n(se,"BottomRight"))).find("div div").css({"float":"left"}),M=n(se,!1,"position:absolute; width:9999px; visibility:hidden; display:none; max-width:none;"),O=K.add(P).add(R).add(S)),e.body&&!x.parent().length&&t(e.body).append(v,x.append(y,M))}function m(){function i(t){t.which>1||t.shiftKey||t.altKey||t.metaKey||t.ctrlKey||(t.preventDefault(),f(this))}return x?(V||(V=!0,K.click(function(){J.next()}),P.click(function(){J.prev()}),B.click(function(){J.close()}),v.click(function(){_.get("overlayClose")&&J.close()}),t(e).bind("keydown."+Z,function(t){var e=t.keyCode;$&&_.get("escKey")&&27===e&&(t.preventDefault(),J.close()),$&&_.get("arrowKey")&&W[1]&&!t.altKey&&(37===e?(t.preventDefault(),P.click()):39===e&&(t.preventDefault(),K.click()))}),t.isFunction(t.fn.on)?t(e).on("click."+Z,"."+te,i):t("."+te).live("click."+Z,i)),!0):!1}function w(){var e,o,r,h=J.prep,d=++le;if(q=!0,U=!1,u(he),u(ie),_.get("onLoad"),_.h=_.get("height")?a(_.get("height"),"y")-N-j:_.get("innerHeight")&&a(_.get("innerHeight"),"y"),_.w=_.get("width")?a(_.get("width"),"x")-z-D:_.get("innerWidth")&&a(_.get("innerWidth"),"x"),_.mw=_.w,_.mh=_.h,_.get("maxWidth")&&(_.mw=a(_.get("maxWidth"),"x")-z-D,_.mw=_.w&&_.w<_.mw?_.w:_.mw),_.get("maxHeight")&&(_.mh=a(_.get("maxHeight"),"y")-N-j,_.mh=_.h&&_.h<_.mh?_.h:_.mh),e=_.get("href"),Q=setTimeout(function(){L.show()},100),_.get("inline")){var c=t(e);r=t("<div>").hide().insertBefore(c),ae.one(he,function(){r.replaceWith(c)}),h(c)}else _.get("iframe")?h(" "):_.get("html")?h(_.get("html")):s(_,e)?(e=l(_,e),U=_.get("createImg"),t(U).addClass(Z+"Photo").bind("error."+Z,function(){h(n(se,"Error").html(_.get("imgError")))}).one("load",function(){d===le&&setTimeout(function(){var e;_.get("retinaImage")&&i.devicePixelRatio>1&&(U.height=U.height/i.devicePixelRatio,U.width=U.width/i.devicePixelRatio),_.get("scalePhotos")&&(o=function(){U.height-=U.height*e,U.width-=U.width*e},_.mw&&U.width>_.mw&&(e=(U.width-_.mw)/U.width,o()),_.mh&&U.height>_.mh&&(e=(U.height-_.mh)/U.height,o())),_.h&&(U.style.marginTop=Math.max(_.mh-U.height,0)/2+"px"),W[1]&&(_.get("loop")||W[A+1])&&(U.style.cursor="pointer",t(U).bind("click."+Z,function(){J.next()})),U.style.width=U.width+"px",U.style.height=U.height+"px",h(U)},1)}),U.src=e):e&&M.load(e,_.get("data"),function(e,i){d===le&&h("error"===i?n(se,"Error").html(_.get("xhrError")):t(this).contents())})}var v,x,y,b,T,C,H,k,W,E,I,M,L,F,R,S,K,P,B,O,_,j,D,N,z,A,U,$,q,G,Q,J,V,X={html:!1,photo:!1,iframe:!1,inline:!1,transition:"elastic",speed:300,fadeOut:300,width:!1,initialWidth:"600",innerWidth:!1,maxWidth:!1,height:!1,initialHeight:"450",innerHeight:!1,maxHeight:!1,scalePhotos:!0,scrolling:!0,opacity:.9,preloading:!0,className:!1,overlayClose:!0,escKey:!0,arrowKey:!0,top:!1,bottom:!1,left:!1,right:!1,fixed:!1,data:void 0,closeButton:!0,fastIframe:!0,open:!1,reposition:!0,loop:!0,slideshow:!1,slideshowAuto:!0,slideshowSpeed:2500,slideshowStart:"start slideshow",slideshowStop:"stop slideshow",photoRegex:/\.(gif|png|jp(e|g|eg)|bmp|ico|webp|jxr|svg)((#|\?).*)?$/i,retinaImage:!1,retinaUrl:!1,retinaSuffix:"@2x.$1",current:"image {current} of {total}",previous:"previous",next:"next",close:"close",xhrError:"This content failed to load.",imgError:"This image failed to load.",returnFocus:!0,trapFocus:!0,onOpen:!1,onLoad:!1,onComplete:!1,onCleanup:!1,onClosed:!1,rel:function(){return this.rel},href:function(){return t(this).attr("href")},title:function(){return this.title},createImg:function(){var e=new Image,i=t(this).data("cbox-img-attrs");return"object"==typeof i&&t.each(i,function(t,i){e[t]=i}),e},createIframe:function(){var i=e.createElement("iframe"),n=t(this).data("cbox-iframe-attrs");return"object"==typeof n&&t.each(n,function(t,e){i[t]=e}),"frameBorder"in i&&(i.frameBorder=0),"allowTransparency"in i&&(i.allowTransparency="true"),i.name=(new Date).getTime(),i.allowFullscreen=!0,i}},Y="colorbox",Z="cbox",te=Z+"Element",ee=Z+"_open",ie=Z+"_load",ne=Z+"_complete",oe=Z+"_cleanup",re=Z+"_closed",he=Z+"_purge",ae=t("<a/>"),se="div",le=0,de={},ce=function(){function t(){clearTimeout(h)}function e(){(_.get("loop")||W[A+1])&&(t(),h=setTimeout(J.next,_.get("slideshowSpeed")))}function i(){S.html(_.get("slideshowStop")).unbind(s).one(s,n),ae.bind(ne,e).bind(ie,t),x.removeClass(a+"off").addClass(a+"on")}function n(){t(),ae.unbind(ne,e).unbind(ie,t),S.html(_.get("slideshowStart")).unbind(s).one(s,function(){J.next(),i()}),x.removeClass(a+"on").addClass(a+"off")}function o(){r=!1,S.hide(),t(),ae.unbind(ne,e).unbind(ie,t),x.removeClass(a+"off "+a+"on")}var r,h,a=Z+"Slideshow_",s="click."+Z;return function(){r?_.get("slideshow")||(ae.unbind(oe,o),o()):_.get("slideshow")&&W[1]&&(r=!0,ae.one(oe,o),_.get("slideshowAuto")?i():n(),S.show())}}();t[Y]||(t(p),J=t.fn[Y]=t[Y]=function(e,i){var n,o=this;return e=e||{},t.isFunction(o)&&(o=t("<a/>"),e.open=!0),o[0]?(p(),m()&&(i&&(e.onComplete=i),o.each(function(){var i=t.data(this,Y)||{};t.data(this,Y,t.extend(i,e))}).addClass(te),n=new r(o[0],e),n.get("open")&&f(o[0])),o):o},J.position=function(e,i){function n(){T[0].style.width=k[0].style.width=b[0].style.width=parseInt(x[0].style.width,10)-D+"px",b[0].style.height=C[0].style.height=H[0].style.height=parseInt(x[0].style.height,10)-j+"px"}var r,h,s,l=0,d=0,c=x.offset();if(E.unbind("resize."+Z),x.css({top:-9e4,left:-9e4}),h=E.scrollTop(),s=E.scrollLeft(),_.get("fixed")?(c.top-=h,c.left-=s,x.css({position:"fixed"})):(l=h,d=s,x.css({position:"absolute"})),d+=_.get("right")!==!1?Math.max(E.width()-_.w-z-D-a(_.get("right"),"x"),0):_.get("left")!==!1?a(_.get("left"),"x"):Math.round(Math.max(E.width()-_.w-z-D,0)/2),l+=_.get("bottom")!==!1?Math.max(o()-_.h-N-j-a(_.get("bottom"),"y"),0):_.get("top")!==!1?a(_.get("top"),"y"):Math.round(Math.max(o()-_.h-N-j,0)/2),x.css({top:c.top,left:c.left,visibility:"visible"}),y[0].style.width=y[0].style.height="9999px",r={width:_.w+z+D,height:_.h+N+j,top:l,left:d},e){var g=0;t.each(r,function(t){return r[t]!==de[t]?(g=e,void 0):void 0}),e=g}de=r,e||x.css(r),x.dequeue().animate(r,{duration:e||0,complete:function(){n(),q=!1,y[0].style.width=_.w+z+D+"px",y[0].style.height=_.h+N+j+"px",_.get("reposition")&&setTimeout(function(){E.bind("resize."+Z,J.position)},1),t.isFunction(i)&&i()},step:n})},J.resize=function(t){var e;$&&(t=t||{},t.width&&(_.w=a(t.width,"x")-z-D),t.innerWidth&&(_.w=a(t.innerWidth,"x")),I.css({width:_.w}),t.height&&(_.h=a(t.height,"y")-N-j),t.innerHeight&&(_.h=a(t.innerHeight,"y")),t.innerHeight||t.height||(e=I.scrollTop(),I.css({height:"auto"}),_.h=I.height()),I.css({height:_.h}),e&&I.scrollTop(e),J.position("none"===_.get("transition")?0:_.get("speed")))},J.prep=function(i){function o(){return _.w=_.w||I.width(),_.w=_.mw&&_.mw<_.w?_.mw:_.w,_.w}function a(){return _.h=_.h||I.height(),_.h=_.mh&&_.mh<_.h?_.mh:_.h,_.h}if($){var d,g="none"===_.get("transition")?0:_.get("speed");I.remove(),I=n(se,"LoadedContent").append(i),I.hide().appendTo(M.show()).css({width:o(),overflow:_.get("scrolling")?"auto":"hidden"}).css({height:a()}).prependTo(b),M.hide(),t(U).css({"float":"none"}),c(_.get("className")),d=function(){function i(){t.support.opacity===!1&&x[0].style.removeAttribute("filter")}var n,o,a=W.length;$&&(o=function(){clearTimeout(Q),L.hide(),u(ne),_.get("onComplete")},F.html(_.get("title")).show(),I.show(),a>1?("string"==typeof _.get("current")&&R.html(_.get("current").replace("{current}",A+1).replace("{total}",a)).show(),K[_.get("loop")||a-1>A?"show":"hide"]().html(_.get("next")),P[_.get("loop")||A?"show":"hide"]().html(_.get("previous")),ce(),_.get("preloading")&&t.each([h(-1),h(1)],function(){var i,n=W[this],o=new r(n,t.data(n,Y)),h=o.get("href");h&&s(o,h)&&(h=l(o,h),i=e.createElement("img"),i.src=h)})):O.hide(),_.get("iframe")?(n=_.get("createIframe"),_.get("scrolling")||(n.scrolling="no"),t(n).attr({src:_.get("href"),"class":Z+"Iframe"}).one("load",o).appendTo(I),ae.one(he,function(){n.src="//about:blank"}),_.get("fastIframe")&&t(n).trigger("load")):o(),"fade"===_.get("transition")?x.fadeTo(g,1,i):i())},"fade"===_.get("transition")?x.fadeTo(g,0,function(){J.position(0,d)}):J.position(g,d)}},J.next=function(){!q&&W[1]&&(_.get("loop")||W[A+1])&&(A=h(1),f(W[A]))},J.prev=function(){!q&&W[1]&&(_.get("loop")||A)&&(A=h(-1),f(W[A]))},J.close=function(){$&&!G&&(G=!0,$=!1,u(oe),_.get("onCleanup"),E.unbind("."+Z),v.fadeTo(_.get("fadeOut")||0,0),x.stop().fadeTo(_.get("fadeOut")||0,0,function(){x.hide(),v.hide(),u(he),I.remove(),setTimeout(function(){G=!1,u(re),_.get("onClosed")},1)}))},J.remove=function(){x&&(x.stop(),t[Y].close(),x.stop(!1,!0).remove(),v.remove(),G=!1,x=null,t("."+te).removeData(Y).removeClass(te),t(e).unbind("click."+Z).unbind("keydown."+Z))},J.element=function(){return t(_.el)},J.settings=X)})(jQuery,document,window);
js/select2.min.js ADDED
@@ -0,0 +1,2 @@
 
 
1
+ /*! Select2 4.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){var b=function(){if(a&&a.fn&&a.fn.select2&&a.fn.select2.amd)var b=a.fn.select2.amd;var b;return function(){if(!b||!b.requirejs){b?c=b:b={};var a,c,d;!function(b){function e(a,b){return u.call(a,b)}function f(a,b){var c,d,e,f,g,h,i,j,k,l,m,n=b&&b.split("/"),o=s.map,p=o&&o["*"]||{};if(a&&"."===a.charAt(0))if(b){for(a=a.split("/"),g=a.length-1,s.nodeIdCompat&&w.test(a[g])&&(a[g]=a[g].replace(w,"")),a=n.slice(0,n.length-1).concat(a),k=0;k<a.length;k+=1)if(m=a[k],"."===m)a.splice(k,1),k-=1;else if(".."===m){if(1===k&&(".."===a[2]||".."===a[0]))break;k>0&&(a.splice(k-1,2),k-=2)}a=a.join("/")}else 0===a.indexOf("./")&&(a=a.substring(2));if((n||p)&&o){for(c=a.split("/"),k=c.length;k>0;k-=1){if(d=c.slice(0,k).join("/"),n)for(l=n.length;l>0;l-=1)if(e=o[n.slice(0,l).join("/")],e&&(e=e[d])){f=e,h=k;break}if(f)break;!i&&p&&p[d]&&(i=p[d],j=k)}!f&&i&&(f=i,h=j),f&&(c.splice(0,h,f),a=c.join("/"))}return a}function g(a,c){return function(){var d=v.call(arguments,0);return"string"!=typeof d[0]&&1===d.length&&d.push(null),n.apply(b,d.concat([a,c]))}}function h(a){return function(b){return f(b,a)}}function i(a){return function(b){q[a]=b}}function j(a){if(e(r,a)){var c=r[a];delete r[a],t[a]=!0,m.apply(b,c)}if(!e(q,a)&&!e(t,a))throw new Error("No "+a);return q[a]}function k(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function l(a){return function(){return s&&s.config&&s.config[a]||{}}}var m,n,o,p,q={},r={},s={},t={},u=Object.prototype.hasOwnProperty,v=[].slice,w=/\.js$/;o=function(a,b){var c,d=k(a),e=d[0];return a=d[1],e&&(e=f(e,b),c=j(e)),e?a=c&&c.normalize?c.normalize(a,h(b)):f(a,b):(a=f(a,b),d=k(a),e=d[0],a=d[1],e&&(c=j(e))),{f:e?e+"!"+a:a,n:a,pr:e,p:c}},p={require:function(a){return g(a)},exports:function(a){var b=q[a];return"undefined"!=typeof b?b:q[a]={}},module:function(a){return{id:a,uri:"",exports:q[a],config:l(a)}}},m=function(a,c,d,f){var h,k,l,m,n,s,u=[],v=typeof d;if(f=f||a,"undefined"===v||"function"===v){for(c=!c.length&&d.length?["require","exports","module"]:c,n=0;n<c.length;n+=1)if(m=o(c[n],f),k=m.f,"require"===k)u[n]=p.require(a);else if("exports"===k)u[n]=p.exports(a),s=!0;else if("module"===k)h=u[n]=p.module(a);else if(e(q,k)||e(r,k)||e(t,k))u[n]=j(k);else{if(!m.p)throw new Error(a+" missing "+k);m.p.load(m.n,g(f,!0),i(k),{}),u[n]=q[k]}l=d?d.apply(q[a],u):void 0,a&&(h&&h.exports!==b&&h.exports!==q[a]?q[a]=h.exports:l===b&&s||(q[a]=l))}else a&&(q[a]=d)},a=c=n=function(a,c,d,e,f){if("string"==typeof a)return p[a]?p[a](c):j(o(a,c).f);if(!a.splice){if(s=a,s.deps&&n(s.deps,s.callback),!c)return;c.splice?(a=c,c=d,d=null):a=b}return c=c||function(){},"function"==typeof d&&(d=e,e=f),e?m(b,a,c,d):setTimeout(function(){m(b,a,c,d)},4),n},n.config=function(a){return n(a)},a._defined=q,d=function(a,b,c){if("string"!=typeof a)throw new Error("See almond README: incorrect module build, no module name");b.splice||(c=b,b=[]),e(q,a)||e(r,a)||(r[a]=[a,b,c])},d.amd={jQuery:!0}}(),b.requirejs=a,b.require=c,b.define=d}}(),b.define("almond",function(){}),b.define("jquery",[],function(){var b=a||$;return null==b&&console&&console.error&&console.error("Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."),b}),b.define("select2/utils",["jquery"],function(a){function b(a){var b=a.prototype,c=[];for(var d in b){var e=b[d];"function"==typeof e&&"constructor"!==d&&c.push(d)}return c}var c={};c.Extend=function(a,b){function c(){this.constructor=a}var d={}.hasOwnProperty;for(var e in b)d.call(b,e)&&(a[e]=b[e]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},c.Decorate=function(a,c){function d(){var b=Array.prototype.unshift,d=c.prototype.constructor.length,e=a.prototype.constructor;d>0&&(b.call(arguments,a.prototype.constructor),e=c.prototype.constructor),e.apply(this,arguments)}function e(){this.constructor=d}var f=b(c),g=b(a);c.displayName=a.displayName,d.prototype=new e;for(var h=0;h<g.length;h++){var i=g[h];d.prototype[i]=a.prototype[i]}for(var j=(function(a){var b=function(){};a in d.prototype&&(b=d.prototype[a]);var e=c.prototype[a];return function(){var a=Array.prototype.unshift;return a.call(arguments,b),e.apply(this,arguments)}}),k=0;k<f.length;k++){var l=f[k];d.prototype[l]=j(l)}return d};var d=function(){this.listeners={}};return d.prototype.on=function(a,b){this.listeners=this.listeners||{},a in this.listeners?this.listeners[a].push(b):this.listeners[a]=[b]},d.prototype.trigger=function(a){var b=Array.prototype.slice;this.listeners=this.listeners||{},a in this.listeners&&this.invoke(this.listeners[a],b.call(arguments,1)),"*"in this.listeners&&this.invoke(this.listeners["*"],arguments)},d.prototype.invoke=function(a,b){for(var c=0,d=a.length;d>c;c++)a[c].apply(this,b)},c.Observable=d,c.generateChars=function(a){for(var b="",c=0;a>c;c++){var d=Math.floor(36*Math.random());b+=d.toString(36)}return b},c.bind=function(a,b){return function(){a.apply(b,arguments)}},c._convertData=function(a){for(var b in a){var c=b.split("-"),d=a;if(1!==c.length){for(var e=0;e<c.length;e++){var f=c[e];f=f.substring(0,1).toLowerCase()+f.substring(1),f in d||(d[f]={}),e==c.length-1&&(d[f]=a[b]),d=d[f]}delete a[b]}}return a},c.hasScroll=function(b,c){var d=a(c),e=c.style.overflowX,f=c.style.overflowY;return e!==f||"hidden"!==f&&"visible"!==f?"scroll"===e||"scroll"===f?!0:d.innerHeight()<c.scrollHeight||d.innerWidth()<c.scrollWidth:!1},c.escapeMarkup=function(a){var b={"\\":"&#92;","&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#47;"};return"string"!=typeof a?a:String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})},c.appendMany=function(b,c){if("1.7"===a.fn.jquery.substr(0,3)){var d=a();a.map(c,function(a){d=d.add(a)}),c=d}b.append(c)},c}),b.define("select2/results",["jquery","./utils"],function(a,b){function c(a,b,d){this.$element=a,this.data=d,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<ul class="select2-results__options" role="tree"></ul>');return this.options.get("multiple")&&b.attr("aria-multiselectable","true"),this.$results=b,b},c.prototype.clear=function(){this.$results.empty()},c.prototype.displayMessage=function(b){var c=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var d=a('<li role="treeitem" aria-live="assertive" class="select2-results__option"></li>'),e=this.options.get("translations").get(b.message);d.append(c(e(b.args))),d[0].className+=" select2-results__message",this.$results.append(d)},c.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},c.prototype.append=function(a){this.hideLoading();var b=[];if(null==a.results||0===a.results.length)return void(0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"}));a.results=this.sort(a.results);for(var c=0;c<a.results.length;c++){var d=a.results[c],e=this.option(d);b.push(e)}this.$results.append(b)},c.prototype.position=function(a,b){var c=b.find(".select2-results");c.append(a)},c.prototype.sort=function(a){var b=this.options.get("sorter");return b(a)},c.prototype.setClasses=function(){var b=this;this.data.current(function(c){var d=a.map(c,function(a){return a.id.toString()}),e=b.$results.find(".select2-results__option[aria-selected]");e.each(function(){var b=a(this),c=a.data(this,"data"),e=""+c.id;null!=c.element&&c.element.selected||null==c.element&&a.inArray(e,d)>-1?b.attr("aria-selected","true"):b.attr("aria-selected","false")});var f=e.filter("[aria-selected=true]");f.length>0?f.first().trigger("mouseenter"):e.first().trigger("mouseenter")})},c.prototype.showLoading=function(a){this.hideLoading();var b=this.options.get("translations").get("searching"),c={disabled:!0,loading:!0,text:b(a)},d=this.option(c);d.className+=" loading-results",this.$results.prepend(d)},c.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},c.prototype.option=function(b){var c=document.createElement("li");c.className="select2-results__option";var d={role:"treeitem","aria-selected":"false"};b.disabled&&(delete d["aria-selected"],d["aria-disabled"]="true"),null==b.id&&delete d["aria-selected"],null!=b._resultId&&(c.id=b._resultId),b.title&&(c.title=b.title),b.children&&(d.role="group",d["aria-label"]=b.text,delete d["aria-selected"]);for(var e in d){var f=d[e];c.setAttribute(e,f)}if(b.children){var g=a(c),h=document.createElement("strong");h.className="select2-results__group";a(h);this.template(b,h);for(var i=[],j=0;j<b.children.length;j++){var k=b.children[j],l=this.option(k);i.push(l)}var m=a("<ul></ul>",{"class":"select2-results__options select2-results__options--nested"});m.append(i),g.append(h),g.append(m)}else this.template(b,c);return a.data(c,"data",b),c},c.prototype.bind=function(b,c){var d=this,e=b.id+"-results";this.$results.attr("id",e),b.on("results:all",function(a){d.clear(),d.append(a.data),b.isOpen()&&d.setClasses()}),b.on("results:append",function(a){d.append(a.data),b.isOpen()&&d.setClasses()}),b.on("query",function(a){d.hideMessages(),d.showLoading(a)}),b.on("select",function(){b.isOpen()&&d.setClasses()}),b.on("unselect",function(){b.isOpen()&&d.setClasses()}),b.on("open",function(){d.$results.attr("aria-expanded","true"),d.$results.attr("aria-hidden","false"),d.setClasses(),d.ensureHighlightVisible()}),b.on("close",function(){d.$results.attr("aria-expanded","false"),d.$results.attr("aria-hidden","true"),d.$results.removeAttr("aria-activedescendant")}),b.on("results:toggle",function(){var a=d.getHighlightedResults();0!==a.length&&a.trigger("mouseup")}),b.on("results:select",function(){var a=d.getHighlightedResults();if(0!==a.length){var b=a.data("data");"true"==a.attr("aria-selected")?d.trigger("close",{}):d.trigger("select",{data:b})}}),b.on("results:previous",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a);if(0!==c){var e=c-1;0===a.length&&(e=0);var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top,h=f.offset().top,i=d.$results.scrollTop()+(h-g);0===e?d.$results.scrollTop(0):0>h-g&&d.$results.scrollTop(i)}}),b.on("results:next",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a),e=c+1;if(!(e>=b.length)){var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top+d.$results.outerHeight(!1),h=f.offset().top+f.outerHeight(!1),i=d.$results.scrollTop()+h-g;0===e?d.$results.scrollTop(0):h>g&&d.$results.scrollTop(i)}}),b.on("results:focus",function(a){a.element.addClass("select2-results__option--highlighted")}),b.on("results:message",function(a){d.displayMessage(a)}),a.fn.mousewheel&&this.$results.on("mousewheel",function(a){var b=d.$results.scrollTop(),c=d.$results.get(0).scrollHeight-d.$results.scrollTop()+a.deltaY,e=a.deltaY>0&&b-a.deltaY<=0,f=a.deltaY<0&&c<=d.$results.height();e?(d.$results.scrollTop(0),a.preventDefault(),a.stopPropagation()):f&&(d.$results.scrollTop(d.$results.get(0).scrollHeight-d.$results.height()),a.preventDefault(),a.stopPropagation())}),this.$results.on("mouseup",".select2-results__option[aria-selected]",function(b){var c=a(this),e=c.data("data");return"true"===c.attr("aria-selected")?void(d.options.get("multiple")?d.trigger("unselect",{originalEvent:b,data:e}):d.trigger("close",{})):void d.trigger("select",{originalEvent:b,data:e})}),this.$results.on("mouseenter",".select2-results__option[aria-selected]",function(b){var c=a(this).data("data");d.getHighlightedResults().removeClass("select2-results__option--highlighted"),d.trigger("results:focus",{data:c,element:a(this)})})},c.prototype.getHighlightedResults=function(){var a=this.$results.find(".select2-results__option--highlighted");return a},c.prototype.destroy=function(){this.$results.remove()},c.prototype.ensureHighlightVisible=function(){var a=this.getHighlightedResults();if(0!==a.length){var b=this.$results.find("[aria-selected]"),c=b.index(a),d=this.$results.offset().top,e=a.offset().top,f=this.$results.scrollTop()+(e-d),g=e-d;f-=2*a.outerHeight(!1),2>=c?this.$results.scrollTop(0):(g>this.$results.outerHeight()||0>g)&&this.$results.scrollTop(f)}},c.prototype.template=function(b,c){var d=this.options.get("templateResult"),e=this.options.get("escapeMarkup"),f=d(b,c);null==f?c.style.display="none":"string"==typeof f?c.innerHTML=e(f):a(c).append(f)},c}),b.define("select2/keys",[],function(){var a={BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46};return a}),b.define("select2/selection/base",["jquery","../utils","../keys"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,b.Observable),d.prototype.render=function(){var b=a('<span class="select2-selection" role="combobox" aria-haspopup="true" aria-expanded="false"></span>');return this._tabindex=0,null!=this.$element.data("old-tabindex")?this._tabindex=this.$element.data("old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),b.attr("title",this.$element.attr("title")),b.attr("tabindex",this._tabindex),this.$selection=b,b},d.prototype.bind=function(a,b){var d=this,e=(a.id+"-container",a.id+"-results");this.container=a,this.$selection.on("focus",function(a){d.trigger("focus",a)}),this.$selection.on("blur",function(a){d._handleBlur(a)}),this.$selection.on("keydown",function(a){d.trigger("keypress",a),a.which===c.SPACE&&a.preventDefault()}),a.on("results:focus",function(a){d.$selection.attr("aria-activedescendant",a.data._resultId)}),a.on("selection:update",function(a){d.update(a.data)}),a.on("open",function(){d.$selection.attr("aria-expanded","true"),d.$selection.attr("aria-owns",e),d._attachCloseHandler(a)}),a.on("close",function(){d.$selection.attr("aria-expanded","false"),d.$selection.removeAttr("aria-activedescendant"),d.$selection.removeAttr("aria-owns"),d.$selection.focus(),d._detachCloseHandler(a)}),a.on("enable",function(){d.$selection.attr("tabindex",d._tabindex)}),a.on("disable",function(){d.$selection.attr("tabindex","-1")})},d.prototype._handleBlur=function(b){var c=this;window.setTimeout(function(){document.activeElement==c.$selection[0]||a.contains(c.$selection[0],document.activeElement)||c.trigger("blur",b)},1)},d.prototype._attachCloseHandler=function(b){a(document.body).on("mousedown.select2."+b.id,function(b){var c=a(b.target),d=c.closest(".select2"),e=a(".select2.select2-container--open");e.each(function(){var b=a(this);if(this!=d[0]){var c=b.data("element");c.select2("close")}})})},d.prototype._detachCloseHandler=function(b){a(document.body).off("mousedown.select2."+b.id)},d.prototype.position=function(a,b){var c=b.find(".selection");c.append(a)},d.prototype.destroy=function(){this._detachCloseHandler(this.container)},d.prototype.update=function(a){throw new Error("The `update` method must be defined in child classes.")},d}),b.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(a,b,c,d){function e(){e.__super__.constructor.apply(this,arguments)}return c.Extend(e,b),e.prototype.render=function(){var a=e.__super__.render.call(this);return a.addClass("select2-selection--single"),a.html('<span class="select2-selection__rendered"></span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span>'),a},e.prototype.bind=function(a,b){var c=this;e.__super__.bind.apply(this,arguments);var d=a.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",d),this.$selection.attr("aria-labelledby",d),this.$selection.on("mousedown",function(a){1===a.which&&c.trigger("toggle",{originalEvent:a})}),this.$selection.on("focus",function(a){}),this.$selection.on("blur",function(a){}),a.on("selection:update",function(a){c.update(a.data)})},e.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},e.prototype.display=function(a,b){var c=this.options.get("templateSelection"),d=this.options.get("escapeMarkup");return d(c(a,b))},e.prototype.selectionContainer=function(){return a("<span></span>")},e.prototype.update=function(a){if(0===a.length)return void this.clear();var b=a[0],c=this.$selection.find(".select2-selection__rendered"),d=this.display(b,c);c.empty().append(d),c.prop("title",b.title||b.text)},e}),b.define("select2/selection/multiple",["jquery","./base","../utils"],function(a,b,c){function d(a,b){d.__super__.constructor.apply(this,arguments)}return c.Extend(d,b),d.prototype.render=function(){var a=d.__super__.render.call(this);return a.addClass("select2-selection--multiple"),a.html('<ul class="select2-selection__rendered"></ul>'),a},d.prototype.bind=function(b,c){var e=this;d.__super__.bind.apply(this,arguments),this.$selection.on("click",function(a){e.trigger("toggle",{originalEvent:a})}),this.$selection.on("click",".select2-selection__choice__remove",function(b){if(!e.options.get("disabled")){var c=a(this),d=c.parent(),f=d.data("data");e.trigger("unselect",{originalEvent:b,data:f})}})},d.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},d.prototype.display=function(a,b){var c=this.options.get("templateSelection"),d=this.options.get("escapeMarkup");return d(c(a,b))},d.prototype.selectionContainer=function(){var b=a('<li class="select2-selection__choice"><span class="select2-selection__choice__remove" role="presentation">&times;</span></li>');return b},d.prototype.update=function(a){if(this.clear(),0!==a.length){for(var b=[],d=0;d<a.length;d++){var e=a[d],f=this.selectionContainer(),g=this.display(e,f);f.append(g),f.prop("title",e.title||e.text),f.data("data",e),b.push(f)}var h=this.$selection.find(".select2-selection__rendered");c.appendMany(h,b)}},d}),b.define("select2/selection/placeholder",["../utils"],function(a){function b(a,b,c){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c)}return b.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},b.prototype.createPlaceholder=function(a,b){var c=this.selectionContainer();return c.html(this.display(b)),c.addClass("select2-selection__placeholder").removeClass("select2-selection__choice"),c},b.prototype.update=function(a,b){var c=1==b.length&&b[0].id!=this.placeholder.id,d=b.length>1;if(d||c)return a.call(this,b);this.clear();var e=this.createPlaceholder(this.placeholder);this.$selection.find(".select2-selection__rendered").append(e)},b}),b.define("select2/selection/allowClear",["jquery","../keys"],function(a,b){function c(){}return c.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),null==this.placeholder&&this.options.get("debug")&&window.console&&console.error&&console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."),this.$selection.on("mousedown",".select2-selection__clear",function(a){d._handleClear(a)}),b.on("keypress",function(a){d._handleKeyboardClear(a,b)})},c.prototype._handleClear=function(a,b){if(!this.options.get("disabled")){var c=this.$selection.find(".select2-selection__clear");if(0!==c.length){b.stopPropagation();for(var d=c.data("data"),e=0;e<d.length;e++){var f={data:d[e]};if(this.trigger("unselect",f),f.prevented)return}this.$element.val(this.placeholder.id).trigger("change"),this.trigger("toggle",{})}}},c.prototype._handleKeyboardClear=function(a,c,d){d.isOpen()||(c.which==b.DELETE||c.which==b.BACKSPACE)&&this._handleClear(c)},c.prototype.update=function(b,c){if(b.call(this,c),!(this.$selection.find(".select2-selection__placeholder").length>0||0===c.length)){var d=a('<span class="select2-selection__clear">&times;</span>');d.data("data",c),this.$selection.find(".select2-selection__rendered").prepend(d)}},c}),b.define("select2/selection/search",["jquery","../utils","../keys"],function(a,b,c){function d(a,b,c){a.call(this,b,c)}return d.prototype.render=function(b){var c=a('<li class="select2-search select2-search--inline"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" aria-autocomplete="list" /></li>');this.$searchContainer=c,this.$search=c.find("input");var d=b.call(this);return this._transferTabIndex(),d},d.prototype.bind=function(a,b,d){var e=this;a.call(this,b,d),b.on("open",function(){e.$search.trigger("focus")}),b.on("close",function(){e.$search.val(""),e.$search.removeAttr("aria-activedescendant"),e.$search.trigger("focus")}),b.on("enable",function(){e.$search.prop("disabled",!1),e._transferTabIndex()}),b.on("disable",function(){e.$search.prop("disabled",!0)}),b.on("focus",function(a){e.$search.trigger("focus")}),b.on("results:focus",function(a){e.$search.attr("aria-activedescendant",a.id)}),this.$selection.on("focusin",".select2-search--inline",function(a){e.trigger("focus",a)}),this.$selection.on("focusout",".select2-search--inline",function(a){e._handleBlur(a)}),this.$selection.on("keydown",".select2-search--inline",function(a){a.stopPropagation(),e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented();var b=a.which;if(b===c.BACKSPACE&&""===e.$search.val()){var d=e.$searchContainer.prev(".select2-selection__choice");if(d.length>0){var f=d.data("data");e.searchRemoveChoice(f),a.preventDefault()}}});var f=document.documentMode,g=f&&11>=f;this.$selection.on("input.searchcheck",".select2-search--inline",function(a){return g?void e.$selection.off("input.search input.searchcheck"):void e.$selection.off("keyup.search")}),this.$selection.on("keyup.search input.search",".select2-search--inline",function(a){if(g&&"input"===a.type)return void e.$selection.off("input.search input.searchcheck");var b=a.which;b!=c.SHIFT&&b!=c.CTRL&&b!=c.ALT&&b!=c.TAB&&e.handleSearch(a)})},d.prototype._transferTabIndex=function(a){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},d.prototype.createPlaceholder=function(a,b){this.$search.attr("placeholder",b.text)},d.prototype.update=function(a,b){var c=this.$search[0]==document.activeElement;this.$search.attr("placeholder",""),a.call(this,b),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch(),c&&this.$search.focus()},d.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},d.prototype.searchRemoveChoice=function(a,b){this.trigger("unselect",{data:b}),this.$search.val(b.text),this.handleSearch()},d.prototype.resizeSearch=function(){this.$search.css("width","25px");var a="";if(""!==this.$search.attr("placeholder"))a=this.$selection.find(".select2-selection__rendered").innerWidth();else{var b=this.$search.val().length+1;a=.75*b+"em"}this.$search.css("width",a)},d}),b.define("select2/selection/eventRelay",["jquery"],function(a){function b(){}return b.prototype.bind=function(b,c,d){var e=this,f=["open","opening","close","closing","select","selecting","unselect","unselecting"],g=["opening","closing","selecting","unselecting"];b.call(this,c,d),c.on("*",function(b,c){if(-1!==a.inArray(b,f)){c=c||{};var d=a.Event("select2:"+b,{params:c});e.$element.trigger(d),-1!==a.inArray(b,g)&&(c.prevented=d.isDefaultPrevented())}})},b}),b.define("select2/translation",["jquery","require"],function(a,b){function c(a){this.dict=a||{}}return c.prototype.all=function(){return this.dict},c.prototype.get=function(a){return this.dict[a]},c.prototype.extend=function(b){this.dict=a.extend({},b.all(),this.dict)},c._cache={},c.loadPath=function(a){if(!(a in c._cache)){var d=b(a);c._cache[a]=d}return new c(c._cache[a])},c}),b.define("select2/diacritics",[],function(){var a={"Ⓐ":"A","A":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"E","E":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"O","O":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","a":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"e","e":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"o","o":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ω":"ω","ς":"σ"};return a}),b.define("select2/data/base",["../utils"],function(a){function b(a,c){b.__super__.constructor.call(this)}return a.Extend(b,a.Observable),b.prototype.current=function(a){throw new Error("The `current` method must be defined in child classes.")},b.prototype.query=function(a,b){throw new Error("The `query` method must be defined in child classes.")},b.prototype.bind=function(a,b){},b.prototype.destroy=function(){},b.prototype.generateResultId=function(b,c){var d=b.id+"-result-";return d+=a.generateChars(4),d+=null!=c.id?"-"+c.id.toString():"-"+a.generateChars(4)},b}),b.define("select2/data/select",["./base","../utils","jquery"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,a),d.prototype.current=function(a){var b=[],d=this;this.$element.find(":selected").each(function(){var a=c(this),e=d.item(a);b.push(e)}),a(b)},d.prototype.select=function(a){var b=this;if(a.selected=!0,c(a.element).is("option"))return a.element.selected=!0,void this.$element.trigger("change");if(this.$element.prop("multiple"))this.current(function(d){var e=[];a=[a],a.push.apply(a,d);for(var f=0;f<a.length;f++){var g=a[f].id;-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")});else{var d=a.id;this.$element.val(d),this.$element.trigger("change")}},d.prototype.unselect=function(a){
2
+ var b=this;if(this.$element.prop("multiple"))return a.selected=!1,c(a.element).is("option")?(a.element.selected=!1,void this.$element.trigger("change")):void this.current(function(d){for(var e=[],f=0;f<d.length;f++){var g=d[f].id;g!==a.id&&-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")})},d.prototype.bind=function(a,b){var c=this;this.container=a,a.on("select",function(a){c.select(a.data)}),a.on("unselect",function(a){c.unselect(a.data)})},d.prototype.destroy=function(){this.$element.find("*").each(function(){c.removeData(this,"data")})},d.prototype.query=function(a,b){var d=[],e=this,f=this.$element.children();f.each(function(){var b=c(this);if(b.is("option")||b.is("optgroup")){var f=e.item(b),g=e.matches(a,f);null!==g&&d.push(g)}}),b({results:d})},d.prototype.addOptions=function(a){b.appendMany(this.$element,a)},d.prototype.option=function(a){var b;a.children?(b=document.createElement("optgroup"),b.label=a.text):(b=document.createElement("option"),void 0!==b.textContent?b.textContent=a.text:b.innerText=a.text),a.id&&(b.value=a.id),a.disabled&&(b.disabled=!0),a.selected&&(b.selected=!0),a.title&&(b.title=a.title);var d=c(b),e=this._normalizeItem(a);return e.element=b,c.data(b,"data",e),d},d.prototype.item=function(a){var b={};if(b=c.data(a[0],"data"),null!=b)return b;if(a.is("option"))b={id:a.val(),text:a.text(),disabled:a.prop("disabled"),selected:a.prop("selected"),title:a.prop("title")};else if(a.is("optgroup")){b={text:a.prop("label"),children:[],title:a.prop("title")};for(var d=a.children("option"),e=[],f=0;f<d.length;f++){var g=c(d[f]),h=this.item(g);e.push(h)}b.children=e}return b=this._normalizeItem(b),b.element=a[0],c.data(a[0],"data",b),b},d.prototype._normalizeItem=function(a){c.isPlainObject(a)||(a={id:a,text:a}),a=c.extend({},{text:""},a);var b={selected:!1,disabled:!1};return null!=a.id&&(a.id=a.id.toString()),null!=a.text&&(a.text=a.text.toString()),null==a._resultId&&a.id&&null!=this.container&&(a._resultId=this.generateResultId(this.container,a)),c.extend({},b,a)},d.prototype.matches=function(a,b){var c=this.options.get("matcher");return c(a,b)},d}),b.define("select2/data/array",["./select","../utils","jquery"],function(a,b,c){function d(a,b){var c=b.get("data")||[];d.__super__.constructor.call(this,a,b),this.addOptions(this.convertToOptions(c))}return b.Extend(d,a),d.prototype.select=function(a){var b=this.$element.find("option").filter(function(b,c){return c.value==a.id.toString()});0===b.length&&(b=this.option(a),this.addOptions(b)),d.__super__.select.call(this,a)},d.prototype.convertToOptions=function(a){function d(a){return function(){return c(this).val()==a.id}}for(var e=this,f=this.$element.find("option"),g=f.map(function(){return e.item(c(this)).id}).get(),h=[],i=0;i<a.length;i++){var j=this._normalizeItem(a[i]);if(c.inArray(j.id,g)>=0){var k=f.filter(d(j)),l=this.item(k),m=c.extend(!0,{},l,j),n=this.option(m);k.replaceWith(n)}else{var o=this.option(j);if(j.children){var p=this.convertToOptions(j.children);b.appendMany(o,p)}h.push(o)}}return h},d}),b.define("select2/data/ajax",["./array","../utils","jquery"],function(a,b,c){function d(a,b){this.ajaxOptions=this._applyDefaults(b.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),d.__super__.constructor.call(this,a,b)}return b.Extend(d,a),d.prototype._applyDefaults=function(a){var b={data:function(a){return c.extend({},a,{q:a.term})},transport:function(a,b,d){var e=c.ajax(a);return e.then(b),e.fail(d),e}};return c.extend({},b,a,!0)},d.prototype.processResults=function(a){return a},d.prototype.query=function(a,b){function d(){var d=f.transport(f,function(d){var f=e.processResults(d,a);e.options.get("debug")&&window.console&&console.error&&(f&&f.results&&c.isArray(f.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),b(f)},function(){});e._request=d}var e=this;null!=this._request&&(c.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var f=c.extend({type:"GET"},this.ajaxOptions);"function"==typeof f.url&&(f.url=f.url.call(this.$element,a)),"function"==typeof f.data&&(f.data=f.data.call(this.$element,a)),this.ajaxOptions.delay&&""!==a.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(d,this.ajaxOptions.delay)):d()},d}),b.define("select2/data/tags",["jquery"],function(a){function b(b,c,d){var e=d.get("tags"),f=d.get("createTag");if(void 0!==f&&(this.createTag=f),b.call(this,c,d),a.isArray(e))for(var g=0;g<e.length;g++){var h=e[g],i=this._normalizeItem(h),j=this.option(i);this.$element.append(j)}}return b.prototype.query=function(a,b,c){function d(a,f){for(var g=a.results,h=0;h<g.length;h++){var i=g[h],j=null!=i.children&&!d({results:i.children},!0),k=i.text===b.term;if(k||j)return f?!1:(a.data=g,void c(a))}if(f)return!0;var l=e.createTag(b);if(null!=l){var m=e.option(l);m.attr("data-select2-tag",!0),e.addOptions([m]),e.insertTag(g,l)}a.results=g,c(a)}var e=this;return this._removeOldTags(),null==b.term||null!=b.page?void a.call(this,b,c):void a.call(this,b,d)},b.prototype.createTag=function(b,c){var d=a.trim(c.term);return""===d?null:{id:d,text:d}},b.prototype.insertTag=function(a,b,c){b.unshift(c)},b.prototype._removeOldTags=function(b){var c=(this._lastTag,this.$element.find("option[data-select2-tag]"));c.each(function(){this.selected||a(this).remove()})},b}),b.define("select2/data/tokenizer",["jquery"],function(a){function b(a,b,c){var d=c.get("tokenizer");void 0!==d&&(this.tokenizer=d),a.call(this,b,c)}return b.prototype.bind=function(a,b,c){a.call(this,b,c),this.$search=b.dropdown.$search||b.selection.$search||c.find(".select2-search__field")},b.prototype.query=function(a,b,c){function d(a){e.trigger("select",{data:a})}var e=this;b.term=b.term||"";var f=this.tokenizer(b,this.options,d);f.term!==b.term&&(this.$search.length&&(this.$search.val(f.term),this.$search.focus()),b.term=f.term),a.call(this,b,c)},b.prototype.tokenizer=function(b,c,d,e){for(var f=d.get("tokenSeparators")||[],g=c.term,h=0,i=this.createTag||function(a){return{id:a.term,text:a.term}};h<g.length;){var j=g[h];if(-1!==a.inArray(j,f)){var k=g.substr(0,h),l=a.extend({},c,{term:k}),m=i(l);null!=m?(e(m),g=g.substr(h+1)||"",h=0):h++}else h++}return{term:g}},b}),b.define("select2/data/minimumInputLength",[],function(){function a(a,b,c){this.minimumInputLength=c.get("minimumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){return b.term=b.term||"",b.term.length<this.minimumInputLength?void this.trigger("results:message",{message:"inputTooShort",args:{minimum:this.minimumInputLength,input:b.term,params:b}}):void a.call(this,b,c)},a}),b.define("select2/data/maximumInputLength",[],function(){function a(a,b,c){this.maximumInputLength=c.get("maximumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){return b.term=b.term||"",this.maximumInputLength>0&&b.term.length>this.maximumInputLength?void this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:b.term,params:b}}):void a.call(this,b,c)},a}),b.define("select2/data/maximumSelectionLength",[],function(){function a(a,b,c){this.maximumSelectionLength=c.get("maximumSelectionLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){var d=this;this.current(function(e){var f=null!=e?e.length:0;return d.maximumSelectionLength>0&&f>=d.maximumSelectionLength?void d.trigger("results:message",{message:"maximumSelected",args:{maximum:d.maximumSelectionLength}}):void a.call(d,b,c)})},a}),b.define("select2/dropdown",["jquery","./utils"],function(a,b){function c(a,b){this.$element=a,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<span class="select2-dropdown"><span class="select2-results"></span></span>');return b.attr("dir",this.options.get("dir")),this.$dropdown=b,b},c.prototype.bind=function(){},c.prototype.position=function(a,b){},c.prototype.destroy=function(){this.$dropdown.remove()},c}),b.define("select2/dropdown/search",["jquery","../utils"],function(a,b){function c(){}return c.prototype.render=function(b){var c=b.call(this),d=a('<span class="select2-search select2-search--dropdown"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" /></span>');return this.$searchContainer=d,this.$search=d.find("input"),c.prepend(d),c},c.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),this.$search.on("keydown",function(a){e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented()}),this.$search.on("input",function(b){a(this).off("keyup")}),this.$search.on("keyup input",function(a){e.handleSearch(a)}),c.on("open",function(){e.$search.attr("tabindex",0),e.$search.focus(),window.setTimeout(function(){e.$search.focus()},0)}),c.on("close",function(){e.$search.attr("tabindex",-1),e.$search.val("")}),c.on("results:all",function(a){if(null==a.query.term||""===a.query.term){var b=e.showSearch(a);b?e.$searchContainer.removeClass("select2-search--hide"):e.$searchContainer.addClass("select2-search--hide")}})},c.prototype.handleSearch=function(a){if(!this._keyUpPrevented){var b=this.$search.val();this.trigger("query",{term:b})}this._keyUpPrevented=!1},c.prototype.showSearch=function(a,b){return!0},c}),b.define("select2/dropdown/hidePlaceholder",[],function(){function a(a,b,c,d){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c,d)}return a.prototype.append=function(a,b){b.results=this.removePlaceholder(b.results),a.call(this,b)},a.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},a.prototype.removePlaceholder=function(a,b){for(var c=b.slice(0),d=b.length-1;d>=0;d--){var e=b[d];this.placeholder.id===e.id&&c.splice(d,1)}return c},a}),b.define("select2/dropdown/infiniteScroll",["jquery"],function(a){function b(a,b,c,d){this.lastParams={},a.call(this,b,c,d),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return b.prototype.append=function(a,b){this.$loadingMore.remove(),this.loading=!1,a.call(this,b),this.showLoadingMore(b)&&this.$results.append(this.$loadingMore)},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),c.on("query",function(a){e.lastParams=a,e.loading=!0}),c.on("query:append",function(a){e.lastParams=a,e.loading=!0}),this.$results.on("scroll",function(){var b=a.contains(document.documentElement,e.$loadingMore[0]);if(!e.loading&&b){var c=e.$results.offset().top+e.$results.outerHeight(!1),d=e.$loadingMore.offset().top+e.$loadingMore.outerHeight(!1);c+50>=d&&e.loadMore()}})},b.prototype.loadMore=function(){this.loading=!0;var b=a.extend({},{page:1},this.lastParams);b.page++,this.trigger("query:append",b)},b.prototype.showLoadingMore=function(a,b){return b.pagination&&b.pagination.more},b.prototype.createLoadingMore=function(){var b=a('<li class="select2-results__option select2-results__option--load-more"role="treeitem" aria-disabled="true"></li>'),c=this.options.get("translations").get("loadingMore");return b.html(c(this.lastParams)),b},b}),b.define("select2/dropdown/attachBody",["jquery","../utils"],function(a,b){function c(b,c,d){this.$dropdownParent=d.get("dropdownParent")||a(document.body),b.call(this,c,d)}return c.prototype.bind=function(a,b,c){var d=this,e=!1;a.call(this,b,c),b.on("open",function(){d._showDropdown(),d._attachPositioningHandler(b),e||(e=!0,b.on("results:all",function(){d._positionDropdown(),d._resizeDropdown()}),b.on("results:append",function(){d._positionDropdown(),d._resizeDropdown()}))}),b.on("close",function(){d._hideDropdown(),d._detachPositioningHandler(b)}),this.$dropdownContainer.on("mousedown",function(a){a.stopPropagation()})},c.prototype.destroy=function(a){a.call(this),this.$dropdownContainer.remove()},c.prototype.position=function(a,b,c){b.attr("class",c.attr("class")),b.removeClass("select2"),b.addClass("select2-container--open"),b.css({position:"absolute",top:-999999}),this.$container=c},c.prototype.render=function(b){var c=a("<span></span>"),d=b.call(this);return c.append(d),this.$dropdownContainer=c,c},c.prototype._hideDropdown=function(a){this.$dropdownContainer.detach()},c.prototype._attachPositioningHandler=function(c,d){var e=this,f="scroll.select2."+d.id,g="resize.select2."+d.id,h="orientationchange.select2."+d.id,i=this.$container.parents().filter(b.hasScroll);i.each(function(){a(this).data("select2-scroll-position",{x:a(this).scrollLeft(),y:a(this).scrollTop()})}),i.on(f,function(b){var c=a(this).data("select2-scroll-position");a(this).scrollTop(c.y)}),a(window).on(f+" "+g+" "+h,function(a){e._positionDropdown(),e._resizeDropdown()})},c.prototype._detachPositioningHandler=function(c,d){var e="scroll.select2."+d.id,f="resize.select2."+d.id,g="orientationchange.select2."+d.id,h=this.$container.parents().filter(b.hasScroll);h.off(e),a(window).off(e+" "+f+" "+g)},c.prototype._positionDropdown=function(){var b=a(window),c=this.$dropdown.hasClass("select2-dropdown--above"),d=this.$dropdown.hasClass("select2-dropdown--below"),e=null,f=(this.$container.position(),this.$container.offset());f.bottom=f.top+this.$container.outerHeight(!1);var g={height:this.$container.outerHeight(!1)};g.top=f.top,g.bottom=f.top+g.height;var h={height:this.$dropdown.outerHeight(!1)},i={top:b.scrollTop(),bottom:b.scrollTop()+b.height()},j=i.top<f.top-h.height,k=i.bottom>f.bottom+h.height,l={left:f.left,top:g.bottom};if("static"!==this.$dropdownParent[0].style.position){var m=this.$dropdownParent.offset();l.top-=m.top,l.left-=m.left}c||d||(e="below"),k||!j||c?!j&&k&&c&&(e="below"):e="above",("above"==e||c&&"below"!==e)&&(l.top=g.top-h.height),null!=e&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+e),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+e)),this.$dropdownContainer.css(l)},c.prototype._resizeDropdown=function(){var a={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(a.minWidth=a.width,a.width="auto"),this.$dropdown.css(a)},c.prototype._showDropdown=function(a){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},c}),b.define("select2/dropdown/minimumResultsForSearch",[],function(){function a(b){for(var c=0,d=0;d<b.length;d++){var e=b[d];e.children?c+=a(e.children):c++}return c}function b(a,b,c,d){this.minimumResultsForSearch=c.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),a.call(this,b,c,d)}return b.prototype.showSearch=function(b,c){return a(c.data.results)<this.minimumResultsForSearch?!1:b.call(this,c)},b}),b.define("select2/dropdown/selectOnClose",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("close",function(){d._handleSelectOnClose()})},a.prototype._handleSelectOnClose=function(){var a=this.getHighlightedResults();if(!(a.length<1)){var b=a.data("data");null!=b.element&&b.element.selected||null==b.element&&b.selected||this.trigger("select",{data:b})}},a}),b.define("select2/dropdown/closeOnSelect",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("select",function(a){d._selectTriggered(a)}),b.on("unselect",function(a){d._selectTriggered(a)})},a.prototype._selectTriggered=function(a,b){var c=b.originalEvent;c&&c.ctrlKey||this.trigger("close",{})},a}),b.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(a){var b=a.input.length-a.maximum,c="Please delete "+b+" character";return 1!=b&&(c+="s"),c},inputTooShort:function(a){var b=a.minimum-a.input.length,c="Please enter "+b+" or more characters";return c},loadingMore:function(){return"Loading more results…"},maximumSelected:function(a){var b="You can only select "+a.maximum+" item";return 1!=a.maximum&&(b+="s"),b},noResults:function(){return"No results found"},searching:function(){return"Searching…"}}}),b.define("select2/defaults",["jquery","require","./results","./selection/single","./selection/multiple","./selection/placeholder","./selection/allowClear","./selection/search","./selection/eventRelay","./utils","./translation","./diacritics","./data/select","./data/array","./data/ajax","./data/tags","./data/tokenizer","./data/minimumInputLength","./data/maximumInputLength","./data/maximumSelectionLength","./dropdown","./dropdown/search","./dropdown/hidePlaceholder","./dropdown/infiniteScroll","./dropdown/attachBody","./dropdown/minimumResultsForSearch","./dropdown/selectOnClose","./dropdown/closeOnSelect","./i18n/en"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C){function D(){this.reset()}D.prototype.apply=function(l){if(l=a.extend({},this.defaults,l),null==l.dataAdapter){if(null!=l.ajax?l.dataAdapter=o:null!=l.data?l.dataAdapter=n:l.dataAdapter=m,l.minimumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,r)),l.maximumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,s)),l.maximumSelectionLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,t)),l.tags&&(l.dataAdapter=j.Decorate(l.dataAdapter,p)),(null!=l.tokenSeparators||null!=l.tokenizer)&&(l.dataAdapter=j.Decorate(l.dataAdapter,q)),null!=l.query){var C=b(l.amdBase+"compat/query");l.dataAdapter=j.Decorate(l.dataAdapter,C)}if(null!=l.initSelection){var D=b(l.amdBase+"compat/initSelection");l.dataAdapter=j.Decorate(l.dataAdapter,D)}}if(null==l.resultsAdapter&&(l.resultsAdapter=c,null!=l.ajax&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,x)),null!=l.placeholder&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,w)),l.selectOnClose&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,A))),null==l.dropdownAdapter){if(l.multiple)l.dropdownAdapter=u;else{var E=j.Decorate(u,v);l.dropdownAdapter=E}if(0!==l.minimumResultsForSearch&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,z)),l.closeOnSelect&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,B)),null!=l.dropdownCssClass||null!=l.dropdownCss||null!=l.adaptDropdownCssClass){var F=b(l.amdBase+"compat/dropdownCss");l.dropdownAdapter=j.Decorate(l.dropdownAdapter,F)}l.dropdownAdapter=j.Decorate(l.dropdownAdapter,y)}if(null==l.selectionAdapter){if(l.multiple?l.selectionAdapter=e:l.selectionAdapter=d,null!=l.placeholder&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,f)),l.allowClear&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,g)),l.multiple&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,h)),null!=l.containerCssClass||null!=l.containerCss||null!=l.adaptContainerCssClass){var G=b(l.amdBase+"compat/containerCss");l.selectionAdapter=j.Decorate(l.selectionAdapter,G)}l.selectionAdapter=j.Decorate(l.selectionAdapter,i)}if("string"==typeof l.language)if(l.language.indexOf("-")>0){var H=l.language.split("-"),I=H[0];l.language=[l.language,I]}else l.language=[l.language];if(a.isArray(l.language)){var J=new k;l.language.push("en");for(var K=l.language,L=0;L<K.length;L++){var M=K[L],N={};try{N=k.loadPath(M)}catch(O){try{M=this.defaults.amdLanguageBase+M,N=k.loadPath(M)}catch(P){l.debug&&window.console&&console.warn&&console.warn('Select2: The language file for "'+M+'" could not be automatically loaded. A fallback will be used instead.');continue}}J.extend(N)}l.translations=J}else{var Q=k.loadPath(this.defaults.amdLanguageBase+"en"),R=new k(l.language);R.extend(Q),l.translations=R}return l},D.prototype.reset=function(){function b(a){function b(a){return l[a]||a}return a.replace(/[^\u0000-\u007E]/g,b)}function c(d,e){if(""===a.trim(d.term))return e;if(e.children&&e.children.length>0){for(var f=a.extend(!0,{},e),g=e.children.length-1;g>=0;g--){var h=e.children[g],i=c(d,h);null==i&&f.children.splice(g,1)}return f.children.length>0?f:c(d,f)}var j=b(e.text).toUpperCase(),k=b(d.term).toUpperCase();return j.indexOf(k)>-1?e:null}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:j.escapeMarkup,language:C,matcher:c,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,sorter:function(a){return a},templateResult:function(a){return a.text},templateSelection:function(a){return a.text},theme:"default",width:"resolve"}},D.prototype.set=function(b,c){var d=a.camelCase(b),e={};e[d]=c;var f=j._convertData(e);a.extend(this.defaults,f)};var E=new D;return E}),b.define("select2/options",["require","jquery","./defaults","./utils"],function(a,b,c,d){function e(b,e){if(this.options=b,null!=e&&this.fromElement(e),this.options=c.apply(this.options),e&&e.is("input")){var f=a(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=d.Decorate(this.options.dataAdapter,f)}}return e.prototype.fromElement=function(a){var c=["select2"];null==this.options.multiple&&(this.options.multiple=a.prop("multiple")),null==this.options.disabled&&(this.options.disabled=a.prop("disabled")),null==this.options.language&&(a.prop("lang")?this.options.language=a.prop("lang").toLowerCase():a.closest("[lang]").prop("lang")&&(this.options.language=a.closest("[lang]").prop("lang"))),null==this.options.dir&&(a.prop("dir")?this.options.dir=a.prop("dir"):a.closest("[dir]").prop("dir")?this.options.dir=a.closest("[dir]").prop("dir"):this.options.dir="ltr"),a.prop("disabled",this.options.disabled),a.prop("multiple",this.options.multiple),a.data("select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),a.data("data",a.data("select2Tags")),a.data("tags",!0)),a.data("ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),a.attr("ajax--url",a.data("ajaxUrl")),a.data("ajax--url",a.data("ajaxUrl")));var e={};e=b.fn.jquery&&"1."==b.fn.jquery.substr(0,2)&&a[0].dataset?b.extend(!0,{},a[0].dataset,a.data()):a.data();var f=b.extend(!0,{},e);f=d._convertData(f);for(var g in f)b.inArray(g,c)>-1||(b.isPlainObject(this.options[g])?b.extend(this.options[g],f[g]):this.options[g]=f[g]);return this},e.prototype.get=function(a){return this.options[a]},e.prototype.set=function(a,b){this.options[a]=b},e}),b.define("select2/core",["jquery","./options","./utils","./keys"],function(a,b,c,d){var e=function(a,c){null!=a.data("select2")&&a.data("select2").destroy(),this.$element=a,this.id=this._generateId(a),c=c||{},this.options=new b(c,a),e.__super__.constructor.call(this);var d=a.attr("tabindex")||0;a.data("old-tabindex",d),a.attr("tabindex","-1");var f=this.options.get("dataAdapter");this.dataAdapter=new f(a,this.options);var g=this.render();this._placeContainer(g);var h=this.options.get("selectionAdapter");this.selection=new h(a,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,g);var i=this.options.get("dropdownAdapter");this.dropdown=new i(a,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,g);var j=this.options.get("resultsAdapter");this.results=new j(a,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var k=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(a){k.trigger("selection:update",{data:a})}),a.addClass("select2-hidden-accessible"),a.attr("aria-hidden","true"),this._syncAttributes(),a.data("select2",this)};return c.Extend(e,c.Observable),e.prototype._generateId=function(a){var b="";return b=null!=a.attr("id")?a.attr("id"):null!=a.attr("name")?a.attr("name")+"-"+c.generateChars(2):c.generateChars(4),b="select2-"+b},e.prototype._placeContainer=function(a){a.insertAfter(this.$element);var b=this._resolveWidth(this.$element,this.options.get("width"));null!=b&&a.css("width",b)},e.prototype._resolveWidth=function(a,b){var c=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==b){var d=this._resolveWidth(a,"style");return null!=d?d:this._resolveWidth(a,"element")}if("element"==b){var e=a.outerWidth(!1);return 0>=e?"auto":e+"px"}if("style"==b){var f=a.attr("style");if("string"!=typeof f)return null;for(var g=f.split(";"),h=0,i=g.length;i>h;h+=1){var j=g[h].replace(/\s/g,""),k=j.match(c);if(null!==k&&k.length>=1)return k[1]}return null}return b},e.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},e.prototype._registerDomEvents=function(){var b=this;this.$element.on("change.select2",function(){b.dataAdapter.current(function(a){b.trigger("selection:update",{data:a})})}),this._sync=c.bind(this._syncAttributes,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._sync);var d=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=d?(this._observer=new d(function(c){a.each(c,b._sync)}),this._observer.observe(this.$element[0],{attributes:!0,subtree:!1})):this.$element[0].addEventListener&&this.$element[0].addEventListener("DOMAttrModified",b._sync,!1)},e.prototype._registerDataEvents=function(){var a=this;this.dataAdapter.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerSelectionEvents=function(){var b=this,c=["toggle","focus"];this.selection.on("toggle",function(){b.toggleDropdown()}),this.selection.on("focus",function(a){b.focus(a)}),this.selection.on("*",function(d,e){-1===a.inArray(d,c)&&b.trigger(d,e)})},e.prototype._registerDropdownEvents=function(){var a=this;this.dropdown.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerResultsEvents=function(){var a=this;this.results.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerEvents=function(){var a=this;this.on("open",function(){a.$container.addClass("select2-container--open")}),this.on("close",function(){a.$container.removeClass("select2-container--open")}),this.on("enable",function(){a.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){a.$container.addClass("select2-container--disabled")}),this.on("blur",function(){a.$container.removeClass("select2-container--focus")}),this.on("query",function(b){a.isOpen()||a.trigger("open",{}),this.dataAdapter.query(b,function(c){a.trigger("results:all",{data:c,query:b})})}),this.on("query:append",function(b){this.dataAdapter.query(b,function(c){a.trigger("results:append",{data:c,query:b})})}),this.on("keypress",function(b){var c=b.which;a.isOpen()?c===d.ESC||c===d.TAB||c===d.UP&&b.altKey?(a.close(),b.preventDefault()):c===d.ENTER?(a.trigger("results:select",{}),b.preventDefault()):c===d.SPACE&&b.ctrlKey?(a.trigger("results:toggle",{}),b.preventDefault()):c===d.UP?(a.trigger("results:previous",{}),b.preventDefault()):c===d.DOWN&&(a.trigger("results:next",{}),b.preventDefault()):(c===d.ENTER||c===d.SPACE||c===d.DOWN&&b.altKey)&&(a.open(),b.preventDefault())})},e.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.options.get("disabled")?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},e.prototype.trigger=function(a,b){var c=e.__super__.trigger,d={open:"opening",close:"closing",select:"selecting",unselect:"unselecting"};if(void 0===b&&(b={}),a in d){var f=d[a],g={prevented:!1,name:a,args:b};if(c.call(this,f,g),g.prevented)return void(b.prevented=!0)}c.call(this,a,b)},e.prototype.toggleDropdown=function(){this.options.get("disabled")||(this.isOpen()?this.close():this.open())},e.prototype.open=function(){this.isOpen()||this.trigger("query",{})},e.prototype.close=function(){this.isOpen()&&this.trigger("close",{})},e.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},e.prototype.hasFocus=function(){return this.$container.hasClass("select2-container--focus")},e.prototype.focus=function(a){this.hasFocus()||(this.$container.addClass("select2-container--focus"),this.trigger("focus",{}))},e.prototype.enable=function(a){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),(null==a||0===a.length)&&(a=[!0]);var b=!a[0];this.$element.prop("disabled",b)},e.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var a=[];return this.dataAdapter.current(function(b){a=b}),a},e.prototype.val=function(b){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==b||0===b.length)return this.$element.val();var c=b[0];a.isArray(c)&&(c=a.map(c,function(a){return a.toString()})),this.$element.val(c).trigger("change")},e.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._sync),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&this.$element[0].removeEventListener("DOMAttrModified",this._sync,!1),this._sync=null,this.$element.off(".select2"),this.$element.attr("tabindex",this.$element.data("old-tabindex")),this.$element.removeClass("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null},e.prototype.render=function(){var b=a('<span class="select2 select2-container"><span class="selection"></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>');return b.attr("dir",this.options.get("dir")),this.$container=b,this.$container.addClass("select2-container--"+this.options.get("theme")),b.data("element",this.$element),b},e}),b.define("jquery-mousewheel",["jquery"],function(a){return a}),b.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults"],function(a,b,c,d){if(null==a.fn.select2){var e=["open","close","destroy"];a.fn.select2=function(b){if(b=b||{},"object"==typeof b)return this.each(function(){var d=a.extend(!0,{},b);new c(a(this),d)}),this;if("string"==typeof b){var d;return this.each(function(){var c=a(this).data("select2");null==c&&window.console&&console.error&&console.error("The select2('"+b+"') method was called on an element that is not using Select2.");var e=Array.prototype.slice.call(arguments,1);d=c[b].apply(c,e)}),a.inArray(b,e)>-1?this:d}throw new Error("Invalid arguments for Select2: "+b)}}return null==a.fn.select2.defaults&&(a.fn.select2.defaults=d),c}),{define:b.define,require:b.require}}(),c=b.require("jquery.select2");return a.fn.select2.amd=b,c});
readme.txt CHANGED
@@ -4,11 +4,11 @@ Tags: address, best google maps, best maps, chinese, cross-browser, custom googl
4
  Donate link: https://www.paypal.com/cgi-bin/webscr?business=gordan@webfactoryltd.com&cmd=_xclick&currency_code=USD&amount=&item_name=Google%20Maps%20Widget%20Donation
5
  License: GPLv2 or later
6
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
7
- Requires at least: 3.3
8
  Tested up to: 4.4
9
- Stable tag: 2.92
10
 
11
- Displays a single-image super-fast loading Google map in a widget. A larger map with all the usual features is available on click in a lightbox.
12
 
13
  == Description ==
14
 
@@ -24,33 +24,35 @@ http://www.youtube.com/watch?v=y1siX9ha7Pw&hd=1
24
  **Thumbnail map options**
25
 
26
  * map size - width & height
27
- * map type - road, satellite, map or hybrid
 
 
28
  * pin color
29
  * pin size
 
30
  * custom pin icon - any image can be used
31
- * zoom level
32
- * link type - lightbox, custom URL or disable link
33
- * map color scheme - default, refreshed, apple, gray, paper
34
  * text above map
35
  * text below map
36
 
37
- **Lightbox map options**
38
 
39
- * map size - width & height (auto-adjusted on smaller screens)
40
- * map type - road, satellite, map or hybrid
 
41
  * zoom level
42
- * skin - light, dark, blue, rounded
43
- * show/hide address bubble
44
- * show/hide map title
45
  * header text
46
  * footer text
47
 
48
  **Shortcode**
49
 
50
- * by using the _[gmw id="#"]_ shortcode you can display the map in any page, post, or custom post type
51
 
52
 
53
- > If you need a Google Maps shortcode plugin you might be interested in purchasing our premium <a title="5sec Google Maps" href="http://5sec-google-maps-pro.webfactoryltd.com/">5sec Google Maps PRO</a> plugin.
54
 
55
 
56
  **What others say about the plugin**
@@ -80,19 +82,26 @@ http://www.youtube.com/watch?v=y1siX9ha7Pw&hd=1
80
  * Serbian - Ogi Djuraskovic from <a href="http://firstsiteguide.com/">FirstSiteGuide</a>
81
  * Russian - Ivanka from <a href="http://www.coupofy.com/">Coupofy</a>
82
 
 
 
 
 
 
 
83
  == Installation ==
84
 
85
  Follow the usual routine;
86
 
87
- 1. Open WP admin - Plugins - Add New
88
- 2. Enter "Google Maps Widget" under search and hit Enter
89
  3. Plugin will show up as the first on the list, click "Install Now"
 
90
 
91
  Or if needed, upload manually;
92
 
93
  1. Download the plugin.
94
- 2. Unzip it and upload to wp-content/plugin/
95
- 3. Open WP admin - Plugins and click "Activate" next to the plugin
96
  4. Configure the plugin under Appearance - Widgets
97
 
98
 
@@ -100,30 +109,38 @@ Or if needed, upload manually;
100
 
101
  = Who is this plugin for? =
102
 
103
- For just about anyone who needs a map on their site in 5 seconds.
 
 
 
 
104
 
105
  = Thumbnail map works but lightbox won't open on click =
106
 
107
- You most probably have Fancybox JS and CSS files included twice; once by the theme and second time by GMW plugin. Remove one instance of files. If that's not the case then you have a fatal JS error thats preventing execution of other JS code. Hit F12 in Firefox or Chrome and have a look at the debug console. If there are any red lines - it's a fatal error. Open a new thread in the support forums but please bear in mind that support is community based and we do this in our spare time.
 
108
 
109
  = It's not working!!! Arrrrrrrrr =
110
 
111
- A more detailed help is coming soon. Till then check 2 things: does your theme have _wp_footer()_ function call in the footer and if there are any jQuery errors on the site.
112
- If you can't figure it out open a thread in the support forums.
113
 
114
  == Screenshots ==
115
 
116
- 1. Small map is shown as a widget and since it's just one image it loads super-fast
117
- 2. Larger map with all features is available in the lightbox
118
- 3. Widget options - thumbnail map
119
- 4. Widget options - lightbox map
120
- 5. Widget options - shortcode
121
- 6. Widget options - info & support
122
 
123
  == Changelog ==
 
 
 
 
 
124
  = 2.92 =
125
  * 2016/01/14
126
- * we crossed 100 thousand active installations ;)
127
  * minor bug fixes
128
 
129
  = 2.90 =
4
  Donate link: https://www.paypal.com/cgi-bin/webscr?business=gordan@webfactoryltd.com&cmd=_xclick&currency_code=USD&amount=&item_name=Google%20Maps%20Widget%20Donation
5
  License: GPLv2 or later
6
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
7
+ Requires at least: 3.8
8
  Tested up to: 4.4
9
+ Stable tag: 3.0
10
 
11
+ Displays a single image, super-fast loading Google map in a widget. A larger map with all interactive features is available on click in a lightbox.
12
 
13
  == Description ==
14
 
24
  **Thumbnail map options**
25
 
26
  * map size - width & height
27
+ * map type - road, satellite, terrain & hybrid
28
+ * map color scheme - default, refreshed + 11 extra in PRO
29
+ * zoom level
30
  * pin color
31
  * pin size
32
+ * pin label
33
  * custom pin icon - any image can be used
34
+ * 700+ pins library in PRO
35
+ * link type - lightbox, custom URL, replace thumbnail with interactive map, or disable link
 
36
  * text above map
37
  * text below map
38
 
39
+ **Interactive map options**
40
 
41
+ * map size - width & height (auto-adjusted on smaller screens) or fullscreen
42
+ * map mode - place + in PRO: directions, search, view & street view
43
+ * map type - road & satellite
44
  * zoom level
45
+ * lightbox skin - light, dark + 20 extra in PRO
46
+ * lightbox features - close on overlay click, close on esc key, close button & show map title
 
47
  * header text
48
  * footer text
49
 
50
  **Shortcode**
51
 
52
+ * by using the _[gmw id="#"]_ shortcode you can display the map in any page, post, or custom post type (this is a PRO feature)
53
 
54
 
55
+ > **PRO** version offers more than 50 extra features including extra pins, skins, export & import features, Google Analytics integration and premium support. Install the plugin and if you like PRO features pay what you think is fair. There's no fixed price!
56
 
57
 
58
  **What others say about the plugin**
82
  * Serbian - Ogi Djuraskovic from <a href="http://firstsiteguide.com/">FirstSiteGuide</a>
83
  * Russian - Ivanka from <a href="http://www.coupofy.com/">Coupofy</a>
84
 
85
+
86
+ **License info**
87
+ * Parts of export & import code are based on <a href="https://wordpress.org/plugins/widget-importer-exporter/">Widget Importer & Exporter</a> plugin, (c) Steven Gliebe
88
+ * Most icons are created by Nicolas Mollet under the Creative Commons Attribution-Share Alike 3.0 Unported license. You can find them on https://mapicons.mapsmarker.com/
89
+
90
+
91
  == Installation ==
92
 
93
  Follow the usual routine;
94
 
95
+ 1. Open WordPress admin, go to Plugins, click Add New
96
+ 2. Enter "Google Maps Widget" in search and hit Enter
97
  3. Plugin will show up as the first on the list, click "Install Now"
98
+ 4. Activate & go to Appearance - Widgets to configure
99
 
100
  Or if needed, upload manually;
101
 
102
  1. Download the plugin.
103
+ 2. Unzip it and upload to _wp-content/plugin/_
104
+ 3. Open WordPress admin - Plugins and click "Activate" next to the plugin
105
  4. Configure the plugin under Appearance - Widgets
106
 
107
 
109
 
110
  = Who is this plugin for? =
111
 
112
+ For anyone who needs a map on their site in 5 seconds.
113
+
114
+ = Map shows the wrong location =
115
+
116
+ Write the address differently, or more precisely. Make sure you enter the street, town and country name. If necessary enter lat/lng coordinates instead of the address. Use the numeric notation, eg: "40.7127, 74.0059"
117
 
118
  = Thumbnail map works but lightbox won't open on click =
119
 
120
+ You probably have Fancybox JS and CSS files included twice; once by the theme and second time by GMW plugin. Remove one instance of files. If that's not the case then you have a fatal JS error that's preventing execution of other JS code. Hit F12 in Firefox or Chrome and have a look at the debug console. If there are any red lines - it's a fatal error.
121
+ Open a new thread in the <a href="http://wordpress.org/support/plugin/google-maps-widget">support forums</a> but please bear in mind that support is community based and we do this in our spare time.
122
 
123
  = It's not working!!! Arrrrrrrrr =
124
 
125
+ Read the <a href="http://wordpress.org/support/plugin/google-maps-widget">support forum</a> rules (no seriously, read them) and then if needed open new a thread.
 
126
 
127
  == Screenshots ==
128
 
129
+ 1. Thumbnail map is shown as a widget and since it's just one image it loads super-fast (1 request, about 20KB)
130
+ 2. Larger map with all interactive features is available in the lightbox
131
+ 3. Widget options - Thumbnail map
132
+ 4. Widget options - Interactive map
133
+ 5. Widget options - Shortcode
 
134
 
135
  == Changelog ==
136
+ = 3.0 =
137
+ * 2016/02/16
138
+ * huge upgrade - numerous functions added
139
+ * switched to new Google Maps API
140
+
141
  = 2.92 =
142
  * 2016/01/14
143
+ * we made it to 100 thousand active installations ;)
144
  * minor bug fixes
145
 
146
  = 2.90 =