script.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536
  1. /*jshint jquery:true */
  2. /*global $:true */
  3. var Constant = {
  4. //根据当前环境修改
  5. serverUrl: "",
  6. query:{},
  7. };
  8. //开发环境
  9. if(window.location.href.indexOf("http://127.0.0.1:8848/")>=0){
  10. Constant.serverUrl="http://121.37.187.149/jp-group/website-server/"
  11. }
  12. if(window.location.href.indexOf("http://127.0.0.1:8848/")>=0){
  13. //Constant.serverUrl="http://127.0.0.1:8086/website-server/"
  14. Constant.serverUrl="http://121.37.187.149/jp-group/website-server/"
  15. }
  16. if(window.location.href.indexOf("http://121.37.187.149/jp-group/")>=0){
  17. Constant.serverUrl="http://121.37.187.149/jp-group/website-server/"
  18. }
  19. getQueryVariable()
  20. function getQueryVariable()
  21. {
  22. var query = window.location.search.substring(1);
  23. query=decodeURI(query)
  24. var vars = query.split("&");
  25. for (var i=0;i<vars.length;i++) {
  26. var pair = vars[i].split("=");
  27. Constant.query[pair[0]]=pair[1];
  28. }
  29. // 链接必须带jpcode 没有就跳到首页
  30. if(!Constant.query.jpcode){
  31. if(window.location.pathname.indexOf("index.html")==-1){
  32. window.location.href="index.html";
  33. }
  34. }else{
  35. }
  36. }
  37. var $ = jQuery.noConflict();
  38. $(document).ready(function($) {
  39. "use strict";
  40. /* global google: false */
  41. /*-------------------------------------------------*/
  42. /* = portfolio isotope
  43. /*-------------------------------------------------*/
  44. var winDow = $(window);
  45. // Needed variables
  46. var $container=$('.masonry');
  47. var $filter=$('.filter');
  48. try{
  49. $container.imagesLoaded( function(){
  50. $container.trigger('resize');
  51. $container.isotope({
  52. filter:'*',
  53. layoutMode:'masonry',
  54. animationOptions:{
  55. duration:750,
  56. easing:'linear'
  57. }
  58. });
  59. $('.triggerAnimation').waypoint(function() {
  60. var animation = $(this).attr('data-animate');
  61. $(this).css('opacity', '');
  62. $(this).addClass("animated " + animation);
  63. },
  64. {
  65. offset: '75%',
  66. triggerOnce: true
  67. }
  68. );
  69. });
  70. } catch(err) {
  71. }
  72. winDow.bind('resize', function(){
  73. var selector = $filter.find('a.active').attr('data-filter');
  74. try {
  75. $container.isotope({
  76. filter : selector,
  77. animationOptions: {
  78. duration: 750,
  79. easing : 'linear',
  80. queue : false,
  81. }
  82. });
  83. } catch(err) {
  84. }
  85. return false;
  86. });
  87. // Isotope Filter
  88. $filter.find('a').click(function(){
  89. var selector = $(this).attr('data-filter');
  90. try {
  91. $container.isotope({
  92. filter : selector,
  93. animationOptions: {
  94. duration: 750,
  95. easing : 'linear',
  96. queue : false,
  97. }
  98. });
  99. } catch(err) {
  100. }
  101. return false;
  102. });
  103. var filterItemA = $('.filter li a');
  104. filterItemA.on('click', function(){
  105. var $this = $(this);
  106. if ( !$this.hasClass('active')) {
  107. filterItemA.removeClass('active');
  108. $this.addClass('active');
  109. }
  110. });
  111. $(window).imagesLoaded( function(){
  112. $('#container').addClass('active');
  113. });
  114. /*-------------------------------------------------*/
  115. /* = browser detect
  116. /*-------------------------------------------------*/
  117. try {
  118. $.browserSelector();
  119. // Adds window smooth scroll on chrome.
  120. if($("html").hasClass("chrome")) {
  121. $.smoothScroll();
  122. }
  123. } catch(err) {
  124. }
  125. /*-------------------------------------------------*/
  126. /* = Animated content
  127. /*-------------------------------------------------*/
  128. try {
  129. /* ================ ANIMATED CONTENT ================ */
  130. if ($(".animated")[0]) {
  131. $('.animated').css('opacity', '0');
  132. }
  133. $('.triggerAnimation').waypoint(function() {
  134. var animation = $(this).attr('data-animate');
  135. $(this).css('opacity', '');
  136. $(this).addClass("animated " + animation);
  137. },
  138. {
  139. offset: '75%',
  140. triggerOnce: true
  141. }
  142. );
  143. } catch(err) {
  144. }
  145. /*-------------------------------------------------*/
  146. /* = remove animation in mobile device
  147. /*-------------------------------------------------*/
  148. if ( winDow.width() < 992 ) {
  149. $('div.triggerAnimation').removeClass('animated');
  150. $('div.triggerAnimation').removeClass('triggerAnimation');
  151. }
  152. /*-------------------------------------------------*/
  153. /* = Search animation
  154. /*-------------------------------------------------*/
  155. var searchToggle = $('.open-search'),
  156. inputAnime = $(".form-search"),
  157. body = $('body');
  158. searchToggle.on('click', function(event){
  159. event.preventDefault();
  160. if ( !inputAnime.hasClass('active') ) {
  161. inputAnime.addClass('active');
  162. } else {
  163. inputAnime.removeClass('active');
  164. }
  165. });
  166. body.on('click', function(){
  167. inputAnime.removeClass('active');
  168. });
  169. var elemBinds = $('.open-search, .form-search');
  170. elemBinds.bind('click', function(e) {
  171. e.stopPropagation();
  172. });
  173. /*-------------------------------------------------*/
  174. /* = flexslider
  175. /*-------------------------------------------------*/
  176. try {
  177. $('#carousel').flexslider({
  178. animation: "slide",
  179. controlNav: false,
  180. animationLoop: false,
  181. slideshow: false,
  182. itemWidth: 235,
  183. itemMargin: 4,
  184. asNavFor: '#slider2'
  185. });
  186. $('#slider2').flexslider({
  187. animation: "slide",
  188. controlNav: false,
  189. animationLoop: false,
  190. slideshow: false,
  191. sync: "#carousel"
  192. });
  193. } catch(err) {
  194. }
  195. try {
  196. var SliderPost = $('.flexslider');
  197. SliderPost.flexslider({
  198. slideshowSpeed: 3000,
  199. easing: "swing"
  200. });
  201. } catch(err) {
  202. }
  203. /*-------------------------------------------------*/
  204. /* = price range code
  205. /*-------------------------------------------------*/
  206. try {
  207. for( var i = 100; i <= 10000; i++ ){
  208. $('#start-val').append(
  209. '<option value="' + i + '">' + i + '</option>'
  210. );
  211. }
  212. // Initialise noUiSlider
  213. $('.noUiSlider').noUiSlider({
  214. range: [0,30],
  215. start: [5,20],
  216. handles: 2,
  217. connect: true,
  218. step: 1,
  219. serialization: {
  220. to: [ $('#start-val'),
  221. $('#end-val') ],
  222. resolution: 1
  223. }
  224. });
  225. } catch(err) {
  226. }
  227. /* ---------------------------------------------------------------------- */
  228. /* Contact Map
  229. /* ---------------------------------------------------------------------- */
  230. var contact = {"lat":"-33.880641", "lon":"151.204298"}; //Change a map coordinate here!
  231. try {
  232. var mapContainer = $('.map');
  233. mapContainer.gmap3({
  234. action: 'addMarker',
  235. marker:{
  236. options:{
  237. icon : new google.maps.MarkerImage('images/marker.png')
  238. }
  239. },
  240. latLng: [contact.lat, contact.lon],
  241. map:{
  242. center: [contact.lat, contact.lon],
  243. zoom: 15
  244. },
  245. },
  246. {action: 'setOptions', args:[{scrollwheel:false}]}
  247. );
  248. } catch(err) {
  249. }
  250. /* ---------------------------------------------------------------------- */
  251. /* magnific-popup
  252. /* ---------------------------------------------------------------------- */
  253. try {
  254. // Example with multiple objects
  255. $('.zoom').magnificPopup({
  256. type: 'image',
  257. gallery: {
  258. enabled: true
  259. }
  260. });
  261. } catch(err) {
  262. }
  263. /* ---------------------------------------------------------------------- */
  264. /* Bootstrap tabs
  265. /* ---------------------------------------------------------------------- */
  266. var tabId = $('.nav-tabs a');
  267. try{
  268. tabId.click(function (e) {
  269. e.preventDefault();
  270. $(this).tab('show');
  271. });
  272. } catch(err) {
  273. }
  274. /*-------------------------------------------------*/
  275. /* = slider Testimonial
  276. /*-------------------------------------------------*/
  277. /*
  278. var slidertestimonial = $('.bxslider');
  279. try{
  280. slidertestimonial.bxSlider({
  281. mode: 'vertical'
  282. });
  283. } catch(err) {
  284. }*/
  285. /*-------------------------------------------------*/
  286. /* = skills animate
  287. /*-------------------------------------------------*/
  288. try{
  289. var skillBar = $('.skills-progress');
  290. skillBar.appear(function() {
  291. var animateElement = $(".meter > p");
  292. animateElement.each(function() {
  293. $(this)
  294. .data("origWidth", $(this).width())
  295. .width(0)
  296. .animate({
  297. width: $(this).data("origWidth")
  298. }, 1200);
  299. });
  300. });
  301. } catch(err) {
  302. }
  303. /*-------------------------------------------------*/
  304. /* = count increment
  305. /*-------------------------------------------------*/
  306. /*try {
  307. $('.statistic-post').appear(function() {
  308. $('.timer').countTo({
  309. speed: 4000,
  310. refreshInterval: 60,
  311. formatter: function (value, options) {
  312. return value.toFixed(options.decimals);
  313. }
  314. });
  315. });
  316. } catch(err) {
  317. }*/
  318. /*-------------------------------------------------*/
  319. /* = feature box appear
  320. /*-------------------------------------------------*/
  321. try{
  322. $('.feature-box').appear(function() {
  323. $(this).addClass('active');
  324. });
  325. } catch(err) {
  326. }
  327. /* ---------------------------------------------------------------------- */
  328. /* Shop galery image replacement
  329. /* ---------------------------------------------------------------------- */
  330. var elemToShow = $('.other-products a');
  331. elemToShow.on('click', function(e){
  332. e.preventDefault();
  333. var newImg = $(this).attr('data-image');
  334. var prodHolder = $('.image-holder img');
  335. prodHolder.attr('src', newImg);
  336. });
  337. /*-------------------------------------------------*/
  338. /* = product increase
  339. /*-------------------------------------------------*/
  340. var fieldNum = $('.product-details input[type="text"]'),
  341. btnIncrease = $('button.increase'),
  342. btnDecrease = $('button.decrease');
  343. btnIncrease.on('click', function(){
  344. var fieldVal = fieldNum.val();
  345. var nextVal = parseFloat(fieldVal) + 1;
  346. fieldNum.val(nextVal);
  347. });
  348. btnDecrease.on('click', function(){
  349. var fieldVal = fieldNum.val();
  350. var nextVal = parseFloat(fieldVal) - 1;
  351. if (fieldVal > 0) {
  352. fieldNum.val(nextVal);
  353. } else {
  354. fieldNum.val(0);
  355. }
  356. });
  357. /* ---------------------------------------------------------------------- */
  358. /* Accordion
  359. /* ---------------------------------------------------------------------- */
  360. var clickElem = $('a.accord-link');
  361. clickElem.on('click', function(e){
  362. e.preventDefault();
  363. var $this = $(this),
  364. parentCheck = $this.parents('.accord-elem'),
  365. accordItems = $('.accord-elem'),
  366. accordContent = $('.accord-content');
  367. if( !parentCheck.hasClass('active')) {
  368. accordContent.slideUp(400, function(){
  369. accordItems.removeClass('active');
  370. });
  371. parentCheck.find('.accord-content').slideDown(400, function(){
  372. parentCheck.addClass('active');
  373. });
  374. } else {
  375. accordContent.slideUp(400, function(){
  376. accordItems.removeClass('active');
  377. });
  378. }
  379. });
  380. /* ---------------------------------------------------------------------- */
  381. /* Contact Form
  382. /* ---------------------------------------------------------------------- */
  383. var submitContact = $('#submit_contact'),
  384. message = $('#msg');
  385. submitContact.on('click', function(e){
  386. e.preventDefault();
  387. var $this = $(this);
  388. $.ajax({
  389. type: "POST",
  390. url: 'contact.php',
  391. dataType: 'json',
  392. cache: false,
  393. data: $('#contact-form').serialize(),
  394. success: function(data) {
  395. if(data.info !== 'error'){
  396. $this.parents('form').find('input[type=text],textarea,select').filter(':visible').val('');
  397. message.hide().removeClass('success').removeClass('error').addClass('success').html(data.msg).fadeIn('slow').delay(5000).fadeOut('slow');
  398. } else {
  399. message.hide().removeClass('success').removeClass('error').addClass('error').html(data.msg).fadeIn('slow').delay(5000).fadeOut('slow');
  400. }
  401. }
  402. });
  403. });
  404. /* ---------------------------------------------------------------------- */
  405. /* Header animate after scroll
  406. /* ---------------------------------------------------------------------- */
  407. (function() {
  408. var docElem = document.documentElement,
  409. didScroll = false,
  410. changeHeaderOn = 40;
  411. document.querySelector( 'header' );
  412. function init() {
  413. window.addEventListener( 'scroll', function() {
  414. if( !didScroll ) {
  415. didScroll = true;
  416. setTimeout( scrollPage, 100 );
  417. }
  418. }, false );
  419. }
  420. function scrollPage() {
  421. var sy = scrollY();
  422. if ( sy >= changeHeaderOn ) {
  423. $( 'header' ).addClass('active');
  424. }
  425. else {
  426. $( 'header' ).removeClass('active');
  427. }
  428. didScroll = false;
  429. }
  430. function scrollY() {
  431. return window.pageYOffset || docElem.scrollTop;
  432. }
  433. init();
  434. })();
  435. });