script.js 12 KB

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