PageRenderTime 46ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/wp-content/plugins/event-espresso.3.1.23.P/scripts/espresso_cart_functions.js

https://bitbucket.org/anneivycat/ebcookhouse
JavaScript | 388 lines | 207 code | 130 blank | 51 comment | 21 complexity | 1128bdaabf376af2e6066da1834e46f4 MD5 | raw file
  1. jQuery(document).ready(function() {
  2. // clear firefox and safari cache
  3. jQuery(window).unload( function() {});
  4. jQuery.ajaxSetup({
  5. cache: false,
  6. xhr: function()
  7. {
  8. if (jQuery.browser.msie)
  9. {
  10. return new ActiveXObject("Microsoft.XMLHTTP");
  11. }
  12. else
  13. {
  14. return new XMLHttpRequest();
  15. }
  16. },
  17. type: "POST",
  18. url: EEGlobals.ajaxurl
  19. });
  20. var EECART = {
  21. progress: function(container){
  22. jQuery(container).html('<img src="' + EEGlobals.plugin_url + 'images/ajax-loader.gif">');
  23. },
  24. add_item : function(params){
  25. var _eecart = this;
  26. _eecart.progress(params.container);
  27. var data = {
  28. action: 'event_espresso_add_item',
  29. regevent_action: "event_espresso_add_item",
  30. item_type : params.item_type,
  31. id: params.id,
  32. name: params.event_name,
  33. direct_to_cart: params.direct_to_cart,
  34. moving_to_cart: params.moving_to_cart,
  35. event_page_id: EEGlobals.event_page_id
  36. };
  37. event_espresso_do_ajax( data, function(r){
  38. params.container.html(r.html);
  39. }) ;
  40. },
  41. delete_item : function(params){
  42. var _eecart = this;
  43. _eecart.progress(params.loader_container);
  44. var data = {
  45. action: 'event_espresso_delete_item',
  46. item_type : params.item_type,
  47. id: params.id,
  48. name: params.event_name
  49. };
  50. event_espresso_do_ajax( data, function(r){
  51. params.main_container.slideUp('fast', function(){
  52. params.main_container.remove();
  53. }).delay(1500).queue(function() {
  54. });
  55. _eecart.calculate_total();
  56. }) ;
  57. },
  58. calculate_total: function(grand_total){
  59. var _eecart = this;
  60. _eecart.progress(jQuery('#event_total_price'));
  61. if (grand_total){
  62. jQuery('#event_total_price').html(grand_total);
  63. return;
  64. }
  65. var data = "action=event_espresso_calculate_total&" + jQuery("#event_espresso_shopping_cart").serialize();
  66. event_espresso_do_ajax(data,function(r){
  67. jQuery('#event_total_price').html(r.grand_total);
  68. });
  69. }
  70. };
  71. jQuery('.ee_add_item_to_cart').live('click',function(){
  72. var data = {
  73. item_type: 'event',
  74. id : jQuery(this).attr('id'),
  75. event_name : jQuery(this).attr('title'),
  76. direct_to_cart : jQuery(this).attr('direct_to_cart'),
  77. moving_to_cart : jQuery(this).attr('moving_to_cart'),
  78. container : jQuery(this).parent()
  79. }
  80. EECART.add_item(data);
  81. return false;
  82. });
  83. jQuery('.ee_delete_item_from_cart').live('click',function(){
  84. var data = {
  85. item_type: 'event',
  86. id : jQuery(this).attr('id'),
  87. loader_container: jQuery(this).parent(),
  88. main_container : jQuery(this).parents('.multi_reg_cart_block')
  89. }
  90. EECART.delete_item(data);
  91. return false;
  92. });
  93. jQuery('#event_espresso_refresh_total').click(function(){
  94. EECART.calculate_total()
  95. return false;
  96. });
  97. jQuery('#event_espresso_checkout_form').submit(function(){
  98. var data = "action=event_espresso_update_item&" + jQuery(this).serialize()
  99. //progress(jQuery('#event_total_price'));
  100. /*event_espresso_do_ajax(data,function(r){
  101. //return true;
  102. });
  103. //return false;
  104. /*jQuery(this).validate({
  105. submitHandler: function(form) {
  106. form.submit();
  107. }
  108. });*/
  109. //return false;
  110. });
  111. jQuery('#event_espresso_shopping_cart').submit(function(e){
  112. //var data = "action=event_espresso_calculate_total&" + jQuery(this).serialize()
  113. //progress(jQuery('#event_total_price'));
  114. //event_espresso_do_ajax(data,jQuery('#event_total_price'),'');
  115. //return false;
  116. });
  117. /*
  118. * Constructs qty dropdown
  119. * el= dd that is being processed
  120. * num_options = number of options to create. Corresponds to # of open spaces
  121. **/
  122. function populate_qty_dd(el, num_options){
  123. var temp_val =0;
  124. temp_val = el.val(); // in case there is a selected value, remember
  125. if (temp_val > 0)
  126. num_options = parseInt(temp_val) + parseInt(num_options);
  127. //remove all the <options> and reconstruct
  128. el.children().remove();
  129. //Reconstruch the dd based on avaiable spaces left
  130. for (var i=0;i<=num_options;i++){
  131. jQuery(el).append(
  132. jQuery('<option></option>').val(i).html(i)
  133. );
  134. }
  135. //assign the previously selected value to the newly modified dd
  136. el.val(temp_val);
  137. }
  138. jQuery('#event_espresso_shopping_cart :input[id^="price_option-"], .price_id, #event_espresso_coupon_code ').change(function(){
  139. var me = jQuery(this);
  140. if (me.attr('type') == "select-one"){ //only run the code if a select is modified
  141. //all selects have an id
  142. var id = me.attr("id");
  143. var id = id.replace(/\D+/,"");
  144. //maximum attendees in a hidden field in each block
  145. var max_attendees = jQuery('#max_attendees-' + id).val();
  146. var num_selected_attendees = 0;
  147. var open_spaces = 0;
  148. //First, find total value of all selected elements. This is required if more than 2 prices are available for the event
  149. jQuery('#event_espresso_shopping_cart :input[name^="price_id[' + id + ']"]').each(function(){
  150. num_selected_attendees += Number(jQuery(this).val());
  151. });
  152. //find the number of available spaces left
  153. open_spaces = max_attendees - num_selected_attendees;
  154. //loop through each element again and determine the number of options to give in each.
  155. jQuery('#event_espresso_shopping_cart :input[name^="price_id[' + id + ']"]').each(function(){
  156. populate_qty_dd(jQuery(this), open_spaces);
  157. });
  158. }
  159. EECART.calculate_total();
  160. });
  161. jQuery('#event_espresso_continue_registration').click(function(){
  162. /* var data = "action=event_espresso_load_regis_form&" + jQuery('#event_espresso_shopping_cart').serialize()
  163. progress(jQuery('#event_espresso_multi_regis_form'));
  164. event_espresso_do_ajax(data,jQuery('#event_espresso_multi_regis_form'),'');
  165. */
  166. //return false;
  167. });
  168. jQuery('#event_espresso_confirm_pay').click(function(){
  169. var data = "action=event_espresso_confirm_and_pay&" + jQuery('#event_espresso_shopping_cart').serialize()
  170. progress(jQuery('#temp'));
  171. event_espresso_do_ajax(data,jQuery('#temp'),'');
  172. return false;
  173. });
  174. jQuery('.event_espresso_copy_info').live('change', function(){
  175. /*
  176. * Copies info from one section of the form to another. Will help the user so
  177. * they don't have to enter info again.
  178. */
  179. var val = jQuery(this).val().split('|');
  180. var to_event_id = val[0];
  181. var to_price_id = val[1];
  182. var to_attendee_no = val[2];
  183. if (jQuery('.event_espresso_copy_info option:selected').text() == "CLEAR FIELDS"){
  184. jQuery('#multi_regis_form_fields-' + to_event_id + "-" + to_price_id + " :input[name*='[" + to_event_id + "][" + to_price_id + "][" + to_attendee_no + "]']").each(function(){
  185. var type = jQuery(this).attr('type');
  186. if (type == 'radio' || type == 'checkbox' ){
  187. jQuery(this).attr("checked", false);
  188. } else jQuery(this).val('');
  189. });
  190. jQuery(this).val('');
  191. return false;
  192. }
  193. var from_event_id = val[3];
  194. var from_price_id = val[4];
  195. var from_attendee_no = val[5];
  196. jQuery('#multi_regis_form_fields-' + to_event_id + "-" + to_price_id + " :input[name*='[" + to_event_id + "][" + to_price_id + "][" + to_attendee_no + "]']").each(function(){
  197. //console.log(jQuery(this).attr('name') + ' > ' + jQuery(this).val());
  198. var val = jQuery(this).val();
  199. var name = jQuery(this).attr('name');
  200. var input_type = jQuery(this).attr('type');
  201. var copy_field_name = name.replace(/(\[\d+\])(\[\d+\])(\[\d+\])/,"[" + from_event_id + "][" + from_price_id + "][" + from_attendee_no + "]");
  202. // alert(copy_field_name);
  203. var copy_from = jQuery(":input[name='" + copy_field_name + "']");
  204. // console.log(jQuery(this).attr('name') + ' > ' + copy_field_name + ' > ' + copy_from.val());
  205. switch (input_type)
  206. {
  207. case 'text':
  208. case 'textarea':
  209. jQuery(this).val(copy_from.val());
  210. break;
  211. case 'radio':
  212. case 'checkbox':
  213. if (copy_from.attr('checked') && val == copy_from.val())
  214. jQuery(this).attr("checked", "checked");
  215. break;
  216. default:
  217. jQuery(this).val(copy_from.val());
  218. }
  219. //console.log(jQuery('#multi_regis_form_fields-' + to + " input[name='" + new_name + "']").val());
  220. //
  221. });
  222. jQuery(this).val('');
  223. });
  224. function event_espresso_do_ajax(data, callback){
  225. jQuery.ajax({
  226. data: data,
  227. dataType: "json",
  228. success: function(response, textStatus){
  229. process_response(response, callback);
  230. },
  231. error: function(resp) {
  232. //alert("Error.");
  233. }
  234. });
  235. }
  236. function process_response(from_server, callback)
  237. {
  238. if (from_server == null){
  239. return false;
  240. }
  241. if (from_server.code == 1)
  242. {
  243. callback(from_server);
  244. }
  245. else
  246. {
  247. callback(null);
  248. }
  249. return;
  250. }
  251. })