jQuery(document).ready(function() { // clear firefox and safari cache jQuery(window).unload( function() {}); if ( ! jQuery('#event_espresso_notifications').hasClass('no-hide') ) { jQuery('#event_espresso_notifications').hide(); } jQuery.ajaxSetup({ cache: false, xhr: function() { if (jQuery.browser.msie) { return new ActiveXObject("Microsoft.XMLHTTP"); } else { return new XMLHttpRequest(); } }, type: "POST", url: EEGlobals.ajaxurl }); var EECART = { progress: function(container){ jQuery(container).html(''); }, add_item : function(params){ var _eecart = this; _eecart.progress(params.container); var data = { action: 'event_espresso_add_item', regevent_action: "event_espresso_add_item", item_type : params.item_type, id: params.id, name: params.event_name, direct_to_cart: params.direct_to_cart, moving_to_cart: params.moving_to_cart, event_page_id: EEGlobals.event_page_id }; event_espresso_do_ajax( data, function(r){ params.container.html(r.html); }) ; }, delete_item : function(params){ //alert( 'params = ' + params.toSource() ); var _eecart = this; _eecart.progress(params.loader_container); var data = { action: 'event_espresso_delete_item', item_type : params.item_type, id: params.id, name: params.event_name }; event_espresso_do_ajax( data, function(r){ params.main_container.slideUp('fast', function(){ params.main_container.remove(); }).delay(1500).queue(function() { }); _eecart.calculate_total(); }) ; }, calculate_total: function(grand_total){ var _eecart = this; _eecart.progress(jQuery('#event_total_price')); if (grand_total){ jQuery('#event_total_price').html(grand_total); return; } var data = "action=event_espresso_calculate_total&" + jQuery("#event_espresso_shopping_cart").serialize(); event_espresso_do_ajax(data,function(r){ jQuery('#event_total_price').html(r.grand_total); if ( r.msg != undefined && r.msg != '' ) { jQuery('#event_espresso_notifications').hide().html(r.msg).fadeIn(); } else { jQuery('#event_espresso_notifications').fadeOut(); } }); } }; jQuery('body').on('click', '.ee_add_item_to_cart',function(){ var data = { item_type: 'event', id : jQuery(this).attr('id'), event_name : jQuery(this).attr('title'), direct_to_cart : jQuery(this).attr('direct_to_cart'), moving_to_cart : jQuery(this).attr('moving_to_cart'), container : jQuery(this).parent() } EECART.add_item(data); return false; }); jQuery('.ee_delete_item_from_cart').on('click',function(){ var data = { item_type: 'event', id : jQuery(this).attr('id'), loader_container: jQuery(this).parent(), main_container : jQuery(this).parents('.multi_reg_cart_block') } EECART.delete_item(data); return false; }); jQuery('#event_espresso_refresh_total').click(function(){ EECART.calculate_total() return false; }); jQuery('#event_espresso_checkout_form').submit(function(){ var data = "action=event_espresso_update_item&" + jQuery(this).serialize() //progress(jQuery('#event_total_price')); /*event_espresso_do_ajax(data,function(r){ //return true; }); //return false; /*jQuery(this).validate({ submitHandler: function(form) { form.submit(); } });*/ //return false; }); jQuery('#event_espresso_shopping_cart').submit(function(e){ //var data = "action=event_espresso_calculate_total&" + jQuery(this).serialize() //progress(jQuery('#event_total_price')); //event_espresso_do_ajax(data,jQuery('#event_total_price'),''); //return false; }); /* * Constructs qty dropdown * el= dd that is being processed * num_options = number of options to create. Corresponds to # of open spaces **/ function populate_qty_dd(el, num_options){ var temp_val =0; temp_val = el.val(); // in case there is a selected value, remember if (temp_val > 0) num_options = parseInt(temp_val) + parseInt(num_options); //remove all the and reconstruct el.children().remove(); //Reconstruch the dd based on avaiable spaces left for (var i=0;i<=num_options;i++){ jQuery(el).append( jQuery('').val(i).html(i) ); } //assign the previously selected value to the newly modified dd el.val(temp_val); } //Couppon codes jQuery('#event_espresso_shopping_cart :input[id^="price_option-"], .price_id, #event_espresso_coupon_code, #event_espresso_groupon_code').on( 'change', function(){ var me = jQuery(this); //alert( 'me id = ' + me.attr("id") + "\n" + 'me type = ' + me.prop("type") ); if (me.prop('type') == "select-one"){ //only run the code if a select is modified //all selects have an id var id = me.attr("id"); id = id.replace(/\D+/,""); //maximum attendees in a hidden field in each block var max_attendees = jQuery('#max_attendees-' + id).val(); var num_selected_attendees = 0; var open_spaces = 0; //First, find total value of all selected elements. This is required if more than 2 prices are available for the event jQuery('#event_espresso_shopping_cart :input[name^="price_id[' + id + ']"]').each(function(){ num_selected_attendees += Number(jQuery(this).val()); }); //find the number of available spaces left open_spaces = max_attendees - num_selected_attendees; //loop through each element again and determine the number of options to give in each. jQuery('#event_espresso_shopping_cart :input[name^="price_id[' + id + ']"]').each(function(){ populate_qty_dd(jQuery(this), open_spaces); }); } EECART.calculate_total(); }); jQuery('#event_espresso_continue_registration').click(function(){ /* var data = "action=event_espresso_load_regis_form&" + jQuery('#event_espresso_shopping_cart').serialize() progress(jQuery('#event_espresso_multi_regis_form')); event_espresso_do_ajax(data,jQuery('#event_espresso_multi_regis_form'),''); */ //return false; }); jQuery('#event_espresso_confirm_pay').click(function(){ var data = "action=event_espresso_confirm_and_pay&" + jQuery('#event_espresso_shopping_cart').serialize() progress(jQuery('#temp')); event_espresso_do_ajax(data,jQuery('#temp'),''); return false; }); jQuery('.event_espresso_copy_info').on('change', function(){ /* * Copies info from one section of the form to another. Will help the user so * they don't have to enter info again. */ var val = jQuery(this).val().split('|'); var to_event_id = val[0]; var to_price_id = val[1]; var to_attendee_no = val[2]; if (jQuery('.event_espresso_copy_info option:selected').text() == "CLEAR FIELDS"){ jQuery('#multi_regis_form_fields-' + to_event_id + "-" + to_price_id + " :input[name*='[" + to_event_id + "][" + to_price_id + "][" + to_attendee_no + "]']").each(function(){ var type = jQuery(this).attr('type'); if (type == 'radio' || type == 'checkbox' ){ jQuery(this).attr("checked", false); } else jQuery(this).val(''); }); jQuery(this).val(''); return false; } var from_event_id = val[3]; var from_price_id = val[4]; var from_attendee_no = val[5]; jQuery('#multi_regis_form_fields-' + to_event_id + "-" + to_price_id + " :input[name*='[" + to_event_id + "][" + to_price_id + "][" + to_attendee_no + "]']").each(function(){ //console.log(jQuery(this).attr('name') + ' > ' + jQuery(this).val()); var val = jQuery(this).val(); var name = jQuery(this).attr('name'); var input_type = jQuery(this).attr('type'); var copy_field_name = name.replace(/(\[\d+\])(\[\d+\])(\[\d+\])/,"[" + from_event_id + "][" + from_price_id + "][" + from_attendee_no + "]"); // alert(copy_field_name); var copy_from = jQuery(":input[name='" + copy_field_name + "']"); // console.log(jQuery(this).attr('name') + ' > ' + copy_field_name + ' > ' + copy_from.val()); switch (input_type) { case 'text': case 'textarea': jQuery(this).val(copy_from.val()); break; case 'radio': case 'checkbox': if (copy_from.attr('checked') && val == copy_from.val()) jQuery(this).attr("checked", "checked"); break; default: jQuery(this).val(copy_from.val()); } //console.log(jQuery('#multi_regis_form_fields-' + to + " input[name='" + new_name + "']").val()); // }); jQuery(this).val(''); }); /* * Copies info from one section of the form to another. Will help the user so * they don't have to enter info again. */ jQuery('.copy-all-button').on( 'click', function() { var btn_clkd = jQuery(this); var val = btn_clkd.val().split('|'); var from_event_id = val[0]; var from_price_id = val[1]; var from_attendee_no = '1'; jQuery('.multi_regis_wrapper_attendee-additional .event_form_field :input').each(function(){ // console.log(jQuery(this).attr('id') + ' > ' + jQuery(this).val()); var val = jQuery(this).val(); var name = jQuery(this).attr('name'); var input_type = jQuery(this).attr('type'); var copy_field_name = name.replace(/(\[\d+\])(\[\d+\])(\[\d+\])/,"[" + from_event_id + "][" + from_price_id + "][" + from_attendee_no + "]"); // alert(copy_field_name); var copy_from = jQuery(":input[name='" + copy_field_name + "']"); //console.log(jQuery(this).attr('name') + ' > ' + copy_field_name + ' > ' + copy_from.val()); switch (input_type) { case 'text': case 'textarea': jQuery(this).val(copy_from.val()); break; case 'radio': case 'checkbox': if (copy_from.attr('checked') && val == copy_from.val()) jQuery(this).attr("checked", "checked"); break; default: jQuery(this).val(copy_from.val()); } //console.log(jQuery('#multi_regis_form_fields-' + to + " input[name='" + new_name + "']").val()); }); btn_hght = btn_clkd.parent('.copy-all-button-wrapper').innerHeight(); btn_wdth = btn_clkd.parent('.copy-all-button-wrapper').innerWidth(); btn_clkd.parent().next('.copy-all-button-success').css({ 'height' : btn_hght, 'width' : btn_wdth }).fadeIn(100).fadeOut(2000); }); //Updated in Event Espresso 3.1.31 to suport Jquery 1.9 function event_espresso_do_ajax(data, callback){ jQuery.ajax({ data: data, dataType: 'json' }) .done(function(response, textStatus){ process_response(response, callback); }) .fail(function(resp) { //alert('Error.'); }) .complete(function(resp){ //alert('Complete.'); }); } function process_response(from_server, callback) { if (from_server == null){ return false; } if (from_server.code == 1) { callback(from_server); } else { callback(null); } return; } })