Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

lechatdesnoisettes.js 20KB

8 лет назад
8 лет назад
8 лет назад
8 лет назад
8 лет назад
8 лет назад
8 лет назад
8 лет назад
8 лет назад
8 лет назад
8 лет назад
8 лет назад
8 лет назад
8 лет назад
8 лет назад
8 лет назад
8 лет назад
8 лет назад
8 лет назад
8 лет назад
8 лет назад
8 лет назад
8 лет назад
8 лет назад
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620
  1. /* French initialisation for the jQuery UI date picker plugin. */
  2. /* Written by Keith Wood (kbwood{at}iinet.com.au),
  3. Stéphane Nahmani (sholby@sholby.net),
  4. Stéphane Raimbault <stephane.raimbault@gmail.com> */
  5. (function( factory ) {
  6. if ( typeof define === "function" && define.amd ) {
  7. // AMD. Register as an anonymous module.
  8. define([ "../jquery.ui.datepicker" ], factory );
  9. } else {
  10. // Browser globals
  11. factory( jQuery.datepicker );
  12. }
  13. }(function( datepicker ) {
  14. datepicker.regional['fr'] = {
  15. closeText: 'Fermer',
  16. prevText: 'Précédent',
  17. nextText: 'Suivant',
  18. currentText: 'Aujourd\'hui',
  19. monthNames: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin',
  20. 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'],
  21. monthNamesShort: ['janv.', 'févr.', 'mars', 'avril', 'mai', 'juin',
  22. 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'],
  23. dayNames: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'],
  24. dayNamesShort: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'],
  25. dayNamesMin: ['D','L','M','M','J','V','S'],
  26. weekHeader: 'Sem.',
  27. dateFormat: 'dd/mm/yy',
  28. firstDay: 1,
  29. isRTL: false,
  30. showMonthAfterYear: false,
  31. yearSuffix: ''};
  32. datepicker.setDefaults(datepicker.regional['fr']);
  33. return datepicker.regional['fr'];
  34. }));
  35. $(document).ready(function() {
  36. //chat_scroll() ;
  37. chat_tabs_gamme_saison() ;
  38. //chat_slideshow() ;
  39. $('[data-toggle="tooltip"]').tooltip() ;
  40. chat_systeme_commande() ;
  41. chat_profil_user() ;
  42. }) ;
  43. function chat_profil_user() {
  44. if($('#profil-user').size()) {
  45. if($('#user-no_mail').is(':checked')) {
  46. $('#mails-jours-prod').hide() ;
  47. }
  48. $('#user-no_mail').change(function() {
  49. if($('#user-no_mail').is(':checked')) {
  50. $('#mails-jours-prod').hide() ;
  51. }
  52. else {
  53. $('#mails-jours-prod').fadeIn() ;
  54. }
  55. }) ;
  56. }
  57. }
  58. function chat_event_click_point_vente(id, force) {
  59. $('#commande-id_point_vente').val(id) ;
  60. $('#points-vente .point-vente').removeClass('selected') ;
  61. $('.point-vente-'+id).addClass('selected') ;
  62. $('.point-vente-'+id).hide().fadeIn('fast') ;
  63. var pain = parseInt($('.point-vente-'+id).data('pain')) ;
  64. var vrac = parseInt($('.point-vente-'+id).data('vrac')) ;
  65. if(pain) {
  66. $('#pain .table').show() ;
  67. $('#pain .indisponible').hide() ;
  68. }
  69. else {
  70. $('#pain .table').hide() ;
  71. $('#pain .indisponible').show() ;
  72. }
  73. if(vrac) {
  74. $('#vrac .table').show() ;
  75. $('#vrac .indisponible').hide() ;
  76. }
  77. else {
  78. $('#vrac .table').hide() ;
  79. $('#vrac .indisponible').show() ;
  80. }
  81. $('#produits, .valider-commande, .btn-commentaire, #bar-fixed').fadeIn() ;
  82. // credit pain
  83. chat_systeme_commande_credit_pain_event(chat_systeme_commande_maj_table_prix()) ;
  84. // scroll
  85. if(!force)
  86. boulange_scroll('step-choix-produits') ;
  87. }
  88. function chat_init_horaire_point_vente(date) {
  89. $('#points-vente .horaires .jour').hide() ;
  90. var selector_jour = '#points-vente .horaires .jour-'+date.getDay() ;
  91. $(selector_jour).show() ;
  92. // on cache les points de vente si la livraison n'est pas cochée
  93. /*$('#points-vente .point-vente').show() ;
  94. if($('#livraison').val() == 0) {
  95. $('#points-vente .point-vente').hide() ;
  96. $('#points-vente .point-vente').each(function() {
  97. if($(this).find('.nom').html() == 'Le Chat des Noisettes') {
  98. $(this).show() ;
  99. }
  100. }) ;
  101. }*/
  102. // on cache les points de vente qui sont fermés
  103. //$('#points-vente .point-vente').removeClass('disabled') ;
  104. /*$(selector_jour).each(function() {
  105. if($(this).html() == 'Fermé') {
  106. //$(this).parent().parent().parent().addClass('disabled') ;
  107. $(this).parent().parent().parent().hide() ;
  108. }
  109. }) ;*/
  110. }
  111. function chat_systeme_commande() {
  112. if($('.commande-form').size()) {
  113. // scroll initial
  114. if($('.boulangerie.selected').size())
  115. {
  116. boulange_scroll('step-choix-date') ;
  117. }
  118. // affichage des différentes parties du formulaire
  119. if(!$('#commande-id_production').val()) {
  120. $('#depots, #points-vente, #produits, .valider-commande, #info-horaire-retrait-commande, .btn-commentaire, #bar-fixed').hide() ;
  121. }
  122. else if(!$('#commande-id_point_vente').val()) {
  123. $('#produits, .valider-commande, .btn-commentaire, #bar-fixed').hide() ;
  124. }
  125. if($('#commande-id_point_vente').val())
  126. chat_event_click_point_vente($('#commande-id_point_vente').val(), true) ;
  127. $('#points-vente .point-vente').click(function() {
  128. var id = parseInt($(this).find('.id').html()) ;
  129. chat_event_click_point_vente(id) ;
  130. }) ;
  131. // datepicker
  132. var dates_production = [] ;
  133. $('#dates div').each(function() {
  134. dates_production.push($(this).find('.date').html()) ;
  135. }) ;
  136. //var var_datepicker = $.datepicker ;
  137. $('#datepicker-production').datepicker({
  138. beforeShowDay: function(date){
  139. var string = $.datepicker.formatDate('dd/mm/yy', date);
  140. for(var i=0; i<dates_production.length; i++) {
  141. //alert(dates_production[i]+' '+string) ;
  142. if(dates_production[i] == string)
  143. return [1] ;
  144. }
  145. return [0] ;
  146. // désactivé car internet explorer plante
  147. //return [ dates_production.indexOf(string) != -1 ] ;
  148. },
  149. onSelect: function(selectedDate) {
  150. // on remet tout les prix à zéro
  151. chat_systeme_commande_reset_table_prix() ;
  152. $('#has-commande-en-cours').hide() ;
  153. var tab_date = selectedDate.split('/') ;
  154. var date = new Date(tab_date[2],tab_date[1]-1,tab_date[0]) ;
  155. // set id production
  156. var id_production = 0 ;
  157. $('#dates div .date').each(function() {
  158. if($(this).html() == selectedDate) {
  159. id_production = $(this).parent().find('.id_production').html() ;
  160. }
  161. });
  162. $('#commande-id_production').val(id_production) ;
  163. // verif si le gars a une commande en cours pour cette production
  164. var has_commande_en_cours = false ;
  165. $('#commandes-en-cours .commande').each(function() {
  166. if($(this).data('idproduction') == id_production) {
  167. //alert('bada') ;
  168. $('#has-commande-en-cours a').attr('href',$(this).data('href')) ;
  169. $('#has-commande-en-cours').show() ;
  170. has_commande_en_cours = true ;
  171. $('#depots, #points-vente, #produits, #info-horaire-retrait-commande').hide() ;
  172. }
  173. }) ;
  174. if(!has_commande_en_cours) {
  175. chat_systeme_commande_produits_dispos(tab_date[2]+'-'+tab_date[1]+'-'+tab_date[0], date) ;
  176. $('#produits, .valider-commande, .btn-commentaire, #bar-fixed').hide() ;
  177. // déselection points de vente
  178. $('#points-vente .point-vente').removeClass('selected') ;
  179. $('#commande-id_point_vente').val('') ;
  180. // affichage points de vente
  181. $('#depots, #points-vente, #info-horaire-retrait-commande').fadeIn() ;
  182. // scroll
  183. boulange_scroll('step-choix-depot') ;
  184. }
  185. }
  186. }) ;
  187. if($('#commande-id_production').val()) {
  188. $("#dates .id_production").each(function() {
  189. if($(this).html() == $('#commande-id_production').val()) {
  190. var tab_date = $(this).parent().find('.date').html().split('/') ;
  191. var date = new Date(tab_date[2],tab_date[1]-1,tab_date[0]);
  192. $('#datepicker-production').datepicker('setDate',date) ;
  193. chat_systeme_commande_produits_dispos(tab_date[2]+'-'+tab_date[1]+'-'+tab_date[0], date) ;
  194. chat_init_horaire_point_vente(date) ;
  195. }
  196. }) ;
  197. }
  198. // tableau produits
  199. $('.commande-form .move-quantity').click(function() {
  200. var vrac = ($(this).parent().parent().parent().parent().parent().parent().parent().attr('id') == 'vrac') ;
  201. if(vrac) {
  202. var quantite = parseInt($(this).parent().parent().find('input.quantity').val()) ;
  203. if($(this).hasClass('moins') && quantite != 0)
  204. quantite -= 500 ;
  205. if($(this).hasClass('plus'))
  206. quantite += 500 ;
  207. $(this).parent().parent().find('input.quantity').val(quantite) ;
  208. chat_systeme_commande_maj_table_prix();
  209. }
  210. else {
  211. var quantite_totale = 0 ;
  212. $('.quantity').each(function() {
  213. quantite_totale += parseInt($(this).val()) ;
  214. }) ;
  215. if($(this).hasClass('plus') && quantite_totale > 2 && $('#confiance').val() == 0) {
  216. $('html, body').animate({
  217. scrollTop: $('#produits').offset().top - 150
  218. }, 'normal', function() {
  219. $('#mess-limit-quantity').fadeOut('fast',function() {
  220. $(this).fadeIn('fast') ;
  221. })
  222. });
  223. }
  224. else {
  225. var quantite = parseInt($(this).parent().parent().find('input.quantity').val()) ;
  226. var quantite_restante = parseInt($(this).parent().parent().parent().find('.quantite-restante .nb').html()) ;
  227. //alert('bada') ;
  228. if($(this).hasClass('moins') && quantite != 0)
  229. quantite -- ;
  230. if($(this).hasClass('plus')){
  231. if(quantite + 1 <= quantite_restante) {
  232. quantite ++ ;
  233. }
  234. else {
  235. if(quantite_restante <= 5) {
  236. $(this).parent().parent().parent().find('.quantite-restante').hide().fadeIn() ;
  237. }
  238. else {
  239. // alert ?
  240. // ...
  241. }
  242. }
  243. }
  244. $(this).parent().parent().find('input.quantity').val(quantite) ;
  245. chat_systeme_commande_maj_table_prix();
  246. }
  247. }
  248. }) ;
  249. chat_systeme_commande_maj_table_prix() ;
  250. chat_systeme_commande_credit_pain();
  251. }
  252. // commentaire commande
  253. $('.commande-form .btn-commentaire').click(function() {
  254. if($('.field-commande-commentaire').css('display') == 'none') {
  255. $('.field-commande-commentaire').slideDown() ;
  256. }
  257. else {
  258. $('.field-commande-commentaire').slideUp() ;
  259. }
  260. return false ;
  261. }) ;
  262. // bar fixed
  263. if($('#bar-fixed').size()) {
  264. $(window).scroll(function (event) {
  265. var scroll = $(window).scrollTop() + $(window).height();
  266. var pos_bottom_produits = $('#table-produits').offset().top + $('#table-produits').height() + 100 ;
  267. if(scroll > pos_bottom_produits) {
  268. if(!$('#bar-fixed').hasClass('not-fixed')) {
  269. $('#bar-fixed').addClass('not-fixed') ;
  270. }
  271. }
  272. else {
  273. $('#bar-fixed').removeClass('not-fixed') ;
  274. }
  275. });
  276. }
  277. }
  278. function chat_systeme_commande_produits_dispos(str_date, date) {
  279. // produits dispos à la vente à cette date
  280. $.get('index.php',{
  281. r: 'commande/infos-production',
  282. date: str_date,
  283. }, function(data) {
  284. if(data.produits_dispos) {
  285. $.each(data.produits_dispos, function( id_produit, produit ) {
  286. if(produit.actif) $('.produit-'+id_produit).show() ;
  287. else $('.produit-'+id_produit).hide() ;
  288. var quantite_restante = produit.quantite_max - produit.quantite_commandee ;
  289. //if(quantite_restante > 0 || !produit.epuise) {
  290. /*if(quantite_restante > 0) {
  291. $('.produit-'+id_produit+' .epuise').hide() ;
  292. $('.produit-'+id_produit+' .input-group').show() ;
  293. $('.produit-'+id_produit+' .quantite-restante .nb').html(quantite_restante) ;
  294. if(parseInt($('.produit-'+id_produit+' .quantite-restante .nb').html()) > 5) {
  295. $('.produit-'+id_produit+' .quantite-restante').hide() ;
  296. }
  297. else {
  298. $('.produit-'+id_produit+' .quantite-restante').show() ;
  299. }
  300. }
  301. else {
  302. $('.produit-'+id_produit+' .epuise').show() ;
  303. $('.produit-'+id_produit+' .quantite-restante').hide() ;
  304. $('.produit-'+id_produit+' .input-group').hide() ;
  305. } */
  306. if((!produit.vrac && (!quantite_restante || quantite_restante < 0 || produit.epuise)) || (produit.vrac && produit.epuise)) {
  307. $('.produit-'+id_produit+' .epuise').show() ;
  308. $('.produit-'+id_produit+' .quantite-restante').hide() ;
  309. $('.produit-'+id_produit+' .input-group').hide() ;
  310. }
  311. else {
  312. $('.produit-'+id_produit+' .epuise').hide() ;
  313. $('.produit-'+id_produit+' .input-group').show() ;
  314. $('.produit-'+id_produit+' .quantite-restante .nb').html(quantite_restante) ;
  315. if(parseInt($('.produit-'+id_produit+' .quantite-restante .nb').html()) > 5) {
  316. $('.produit-'+id_produit+' .quantite-restante').hide() ;
  317. }
  318. else {
  319. $('.produit-'+id_produit+' .quantite-restante').show() ;
  320. }
  321. }
  322. });
  323. }
  324. // init affichage points de vente
  325. $.each(data.points_vente, function(key, livraison) {
  326. console.log(key+' | '+livraison) ;
  327. if(livraison) {
  328. $('.point-vente-'+key).fadeIn() ;
  329. }
  330. else {
  331. $('.point-vente-'+key).hide() ;
  332. }
  333. }) ;
  334. chat_init_horaire_point_vente(date) ;
  335. }, 'json') ;
  336. }
  337. function chat_systeme_commande_reset_table_prix() {
  338. $('#table-produits tr .colonne-quantite .quantity').each(function() {
  339. $(this).val(0) ;
  340. }) ;
  341. chat_systeme_commande_maj_table_prix() ;
  342. }
  343. function chat_systeme_commande_maj_table_prix() {
  344. // produits pain
  345. var prix = 0 ;
  346. $('.commande-form #table-produits tbody tr').each(function() {
  347. var quantite = parseInt($(this).find('.quantity').val()) ;
  348. var prix_produit = parseFloat($(this).find('.prix').html()) ;
  349. var prix_total_produit = quantite * prix_produit ;
  350. if(prix_total_produit)
  351. $(this).find('.total').html(formate_prix(prix_total_produit)+' €') ;
  352. else
  353. $(this).find('.total').html('--') ;
  354. if(quantite > 0)
  355. prix += prix_total_produit ;
  356. }) ;
  357. $('#total-commande strong').html(formate_prix(prix)+' €') ;
  358. var prix_global = prix ;
  359. // produits vrac
  360. var prix = 0 ;
  361. $('.commande-form #table-produits-vrac tbody tr').each(function() {
  362. var quantite = parseInt($(this).find('.quantity').val()) ;
  363. var prix_produit = parseFloat($(this).find('.prix').html()) ;
  364. var prix_total_produit = quantite/1000 * prix_produit ;
  365. if(prix_total_produit)
  366. $(this).find('.total').html(formate_prix(prix_total_produit)+' €') ;
  367. else
  368. $(this).find('.total').html('--') ;
  369. if(quantite > 0)
  370. prix += prix_total_produit ;
  371. }) ;
  372. $('#total-commande-vrac strong').html(formate_prix(prix)+' €') ;
  373. prix_global += prix ;
  374. $('#total-commande-bottom span').html(formate_prix(prix_global)) ;
  375. if(prix_global)
  376. $('#total-commande-bottom').fadeIn() ;
  377. else
  378. $('#total-commande-bottom').hide() ;
  379. // maj credit pain
  380. chat_systeme_commande_credit_pain_event(prix_global) ;
  381. return prix_global ;
  382. }
  383. function chat_systeme_commande_credit_pain() {
  384. $('input[name=credit_pain]').change(function() {
  385. var prix_global = chat_systeme_commande_maj_table_prix() ;
  386. chat_systeme_commande_credit_pain_event(prix_global) ;
  387. }) ;
  388. }
  389. function chat_systeme_commande_credit_pain_event(prix_global) {
  390. var html = '' ;
  391. var use_credit_pain = $('input[name=credit_pain]').prop('checked') ;
  392. var credit_pain = parseFloat($('#montant-credit-pain').val()) ;
  393. var credit_pain_dispo = credit_pain ;
  394. var montant_paye = 0
  395. if($('#montant-paye').size() && $('#montant-paye').val())
  396. montant_paye = parseFloat($('#montant-paye').val()) ;
  397. if($('#id-commande').size() && $('#id-commande').val()) {
  398. credit_pain_dispo = credit_pain + montant_paye ;
  399. }
  400. var credit_pain_active = $('.point-vente.selected').data('credit-pain') ;
  401. if(credit_pain_active || montant_paye) {
  402. $('#checkbox-credit-pain #info-credit-vide').show() ;
  403. $('#checkbox-credit-pain label').show() ;
  404. $('#checkbox-credit-pain #credit-pain-disabled').hide() ;
  405. if(prix_global > credit_pain_dispo) {
  406. var reste_payer = prix_global - credit_pain_dispo ;
  407. if(use_credit_pain) {
  408. if(montant_paye) {
  409. html += '<span class="montant-paye">'+montant_paye+' € déjà payé</span><br />' ;
  410. }
  411. html += '<strong>'+credit_pain+' €</strong> seront débités<br />' ;
  412. html += 'Restera <strong>'+reste_payer+' €</strong> à payer à la boulangerie' ;
  413. $('#checkbox-credit-pain .info').html(html) ;
  414. }
  415. else {
  416. $('#checkbox-credit-pain .info').html('') ;
  417. }
  418. }
  419. else {
  420. $('#checkbox-credit-pain').removeClass('paiement-impossible') ;
  421. $('input[name=credit_pain]').removeAttr('disabled') ;
  422. if(use_credit_pain) {
  423. var html = '' ;
  424. // à payer
  425. if(prix_global > montant_paye)
  426. {
  427. montant = prix_global - montant_paye ;
  428. if(montant_paye) {
  429. html += '<span class="montant-paye">'+montant_paye+' € déjà payé</span><br />' ;
  430. }
  431. html += '<strong>'+montant+' €</strong> seront débités' ;
  432. $('#checkbox-credit-pain .info').html(html) ;
  433. }
  434. // remboursé
  435. else if(prix_global < montant_paye) {
  436. montant = montant_paye - prix_global ;
  437. if(montant_paye) {
  438. html += '<span class="montant-paye">'+montant_paye+' € déjà payé</span><br />' ;
  439. }
  440. html += '<strong>'+montant+' €</strong> seront remboursés' ;
  441. $('#checkbox-credit-pain .info').html(html) ;
  442. }
  443. else {
  444. if(montant_paye > 0)
  445. $('#checkbox-credit-pain .info').html('<span class="montant-paye">'+montant_paye+' € déjà payé</span>') ;
  446. else
  447. $('#checkbox-credit-pain .info').html('') ;
  448. }
  449. }
  450. else {
  451. $('#checkbox-credit-pain .info').html('')
  452. }
  453. }
  454. }
  455. else {
  456. $('#checkbox-credit-pain #info-credit-vide').hide() ;
  457. $('#checkbox-credit-pain label').hide() ;
  458. $('#checkbox-credit-pain #credit-pain-disabled').show() ;
  459. }
  460. }
  461. function formate_prix(prix) {
  462. return prix.toFixed(2).replace( ".", "," ) ;
  463. }
  464. function chat_slideshow() {
  465. if($('body').hasClass('home')) {
  466. var base_url = $('#base_url').val() ;
  467. $.vegas('slideshow', {
  468. backgrounds:[
  469. //{ src:'./img/background/back2.jpg' },
  470. { src:base_url+'/img/background/four.jpg' },
  471. { src:base_url+'/img/background/gueulard.jpg' }
  472. ],
  473. walk: function() {
  474. $('.vegas-loading').css('display','none') ;
  475. $('.vegas-background').css('position','absolute') ;
  476. }
  477. })('overlay');
  478. }
  479. }
  480. function chat_scroll() {
  481. if($('body').hasClass('home')) {
  482. $('#header nav ul a[href^="#"]').click(function(){
  483. var the_id = $(this).attr("href");
  484. $('html, body').animate({
  485. scrollTop: $(the_id).offset().top - 100
  486. }, 'normal');
  487. return false;
  488. });
  489. $(window).scroll(function() {
  490. chat_event_scroll() ;
  491. }) ;
  492. chat_event_scroll() ;
  493. }
  494. }
  495. function chat_event_scroll() {
  496. var scroll_top = $(window).scrollTop() ;
  497. //console.log(scroll_top + ' '+ ($('#horaires').offset().top-100)) ;
  498. $('#header nav ul a').each(function() {
  499. var top = $($(this).attr('href')).offset().top ;
  500. var test = top + $($(this).attr('href')).height() - 150 ;
  501. //console.log($(this).attr('href')+' : '+scroll_top+ ' | '+ test) ;
  502. if(scroll_top <= top + $($(this).attr('href')).height() - 150) {
  503. $('#header a').removeClass('selec') ;
  504. $(this).addClass('selec') ;
  505. }
  506. }) ;
  507. }
  508. function chat_tabs_gamme_saison() {
  509. $('#tab-gamme-saison a').click(function (e) {
  510. e.preventDefault();
  511. $(this).tab('show');
  512. });
  513. }