var iwac_sort_array = ''; jQuery( document ).ready( function() { if ( jQuery( '#post_type' ).length > 0 && jQuery( '#post_type' ).val() == 'iwacontactform' ) { jQuery( '#use_custom_body' ).click( function() { jQuery( this ).parent().siblings( 'div.custom-body-editor' ).toggleClass( 'hidden' ); } ); jQuery( '#iwacf_use_captcha' ).click( function() { jQuery( '#iwacf_captcha_type' ).iwacontactToggleDisabled() } ); // Change Publish Metabox Stuff var publishbox = jQuery( 'div#submitdiv' ); if ( publishbox.length > 0 ) { publishbox.find( 'h3 span' ).html( ); } // Check to make sure this page contains an edit form section if ( jQuery( '#formFields div.form-field' ).length > 0 ) { // Do some initialisation stuff enableAdd(); enableDelete(); enableFields(); updateIcons(); // Show the first element editor box showFieldEditor( '0', false ); jQuery( '#iwacf_shortcode' ).click( function() { jQuery( this ).select(); } ); jQuery( "#fieldDisplays" ).sortable( { axis: "y", cursor: "move", placeholder: 'placeholder', forcePlaceholderSize: true, update: function() { updateDisplayOrder(); } } ); jQuery( "#fieldDisplays" ).disableSelection(); } var settings_tabs = jQuery( 'ul.iwac-settings-tabs li' ); var settings_pages = jQuery( 'div.iwac-settings-pages div.iwac-settings-page' ); if ( settings_tabs.length > 0 ) { settings_tabs.click( function() { var match = /iwacs\-([a-z-]+)/.exec( jQuery( this ).attr( 'class' ) ); var page_name = match[1]; settings_pages.hide(); jQuery( 'div.iwac-settings-pages div.iwacs-' + page_name ).show(); settings_tabs.removeClass( 'selected' ); jQuery( this ).addClass( 'selected' ); } ); } jQuery( 'input.iwac-lv-input' ).keyup( function() { var match = /(([2-9g-z]{1}[4-8t-x]{2}[0-3]{1})([0-6f-q]{3}[a-z]{1})([0-9a-g]{4})([4-7a-c]{2}[6-9b-g]{1}[2-6]{1}[2-4]{2}))/i.exec( jQuery( this ).val() ); if ( match != null ) { jQuery( 'input.iwac-lv-button' ).removeAttr( 'disabled' ); console.log( match[3] ); } else { jQuery( 'input.iwac-lv-button' ).attr( 'disabled', 'disabled' ); } } ); } } ); function updateDisplayOrder() { iwac_sort_array = jQuery( "#fieldDisplays" ).sortable( "toArray" ); for ( i = 0; i < iwac_sort_array.length; i++ ) { var fieldID = parseInt( iwac_sort_array[i].replace( /fieldDisplay\_/, '' ) ); jQuery( '#iwacf_displayorder_' + fieldID ).val( i + 1 ); } } function showFieldEditor( fieldID, focus ) { jQuery( '#formFields div.form-field' ).hide().removeClass( 'active' ); jQuery( '#formFields li.field-display' ).removeClass( 'selected' ); jQuery( '#formFields #formField_' + fieldID ).show().addClass( 'active' ); jQuery( '#formFields #fieldDisplay_' + fieldID ).addClass( 'selected' ); if ( focus ) jQuery( '#formFields #formField_' + fieldID + ' input.field-title' ).focus(); } function enableAdd() { // When the #addFormField button is clicked jQuery( 'input.addFieldButton' ).unbind(); jQuery( 'input.addFieldButton' ).click( function() { // Get the ID of the last field that currently exists var lastFieldID = jQuery( '#formFields' ).children( 'div.form-field:last' ).attr( 'id' ); // Strip out the formField_ part of the ID to return just the number lastFieldID = lastFieldID.replace( /formField\_/, '' ); // Add 1 to the last ID number var newID = parseInt( lastFieldID ) + 1; // Clone the div.form-field template, append it to the #formFields div and fade it in jQuery( '#formFields' ).append( jQuery( '#newFormField' ).html() ); jQuery( '#formFields' ).children( 'div.form-field:last' ).attr( 'id', 'formField_' + newID ); jQuery( '#formFields' ).find( 'li.field-display:last' ).attr( 'id', 'fieldDisplay_' + newID ); // Assign the new fields jQuery object to the newfield var var newfield = jQuery( '#formField_' + newID ); var newdisplay = jQuery( '#fieldDisplay_' + newID ); // Get the html contents of our new field in to the newhtml var var newfieldhtml = newfield.html(); // Replace any _x's with our new ID (e.g. _2 ) newfield.html( newfieldhtml.replace( /\_x/g, '_' + newID ) ); jQuery( '#fieldDisplays' ).append( '
  • ' + newdisplay.html().replace( /\_x/g, '_' + newID ) + '
  • ' ); newdisplay.remove(); showFieldEditor( newID, true ); // Set the default display order of this field jQuery( '#iwacf_displayorder_' + newID ).val( newID+1 ); // Enable the delete button for this field enableAdd(); enableDelete(); enableFields(); updateDisplayOrder(); enableTooltips(); } ); } function enableFields() { jQuery( '#formFields li.field-display a' ).unbind(); jQuery( '#formFields li.field-display a' ).click( function() { var fieldID = jQuery( this ).parent().attr( 'id' ).replace( /fieldDisplay\_/, '' ); showFieldEditor( fieldID, true ); return false; } ); jQuery( '#formFields input.field-title' ).unbind(); jQuery( '#formFields input.field-title' ).keyup( function() { var fieldID = jQuery( this ).attr( 'id' ); var fieldID = fieldID.replace( /iwacf\_fieldname\_/, '' ); if ( jQuery( this ).val() != '' ) { jQuery( '#formFields #fieldDisplay_' + fieldID + ' a' ).html( jQuery( this ).val() ); var field_id = jQuery( this ).val(); field_id = jQuery.trim( field_id.toLowerCase() ); field_id = field_id.replace( /\ /g, '_' ); field_id = field_id.replace( /[^a-z0-9-_]/g, '' ); console.log (field_id); jQuery( this ).parent().parent().find( 'input.field-id' ).val( field_id ); } else { jQuery( '#formFields #fieldDisplay_' + fieldID + ' a' ).html( 'Field ' + fieldID ); jQuery( this ).parent().parent().find( 'input.field-id' ).val( 'field_' + fieldID ); } } ); jQuery( '#formFields .field-type, #formFields .field-validation' ).unbind(); jQuery( '#formFields .field-type, #formFields .field-validation' ).change( function() { updateIcons(); } ); jQuery( '#formFields .field-required' ).unbind(); jQuery( '#formFields .field-required' ).change( function() { var fieldID = jQuery( this ).attr( 'id' ); var fieldID = fieldID.replace( /iwacf\_fieldrequired\_/, '' ); jQuery( '#formFields #fieldDisplay_' + fieldID ).toggleClass( 'required' ); console.log( fieldID ); console.log( '#formFields #fieldDisplay_' + fieldID ); } ); } function updateIcons() { jQuery( '#formFields .field-type, #formFields .field-validation' ).each( function() { if ( jQuery( this ).hasClass( 'field-validation' ) ) { if ( jQuery( this ).val() != 'none' ) { var newicon = 'icon-' + jQuery( this ).val(); var fieldID = jQuery( this ).attr( 'id' ).replace( /iwacf\_fieldvalidation\_/, '' ); changeIcon( fieldID, newicon ); } } else { switch ( jQuery( this ).val() ) { case 'input': //break; case 'password': //break; case 'textarea': //break; case 'hidden': //break; case 'readonly': jQuery( this ).parent().parent().find( 'p.iwacf_fieldoptions' ).removeClass( 'hidden' ); jQuery( this ).parent().parent().find( 'p.iwacf_fieldoptions label' ).html( 'Default Value ' ); break; case 'sendcopy': //break; case 'checkbox': //break; case 'h1': //break; case 'h2': //break; case 'h3': //break; case 'h4': jQuery( this ).parent().parent().find( 'p.iwacf_fieldoptions' ).addClass( 'hidden' ); break; case 'radio': //break; case 'selectbox': //break; case 'multiselect': jQuery( this ).parent().parent().find( 'p.iwacf_fieldoptions' ).removeClass( 'hidden' ); jQuery( this ).parent().parent().find( 'p.iwacf_fieldoptions label' ).html( 'Options (1 per line) ' ); break; } var newicon = 'icon-' + jQuery( this ).val(); var fieldID = jQuery( this ).attr( 'id' ).replace( /iwacf\_fieldtype\_/, '' ); changeIcon( fieldID, newicon ); } } ); enableTooltips(); } function changeIcon( fieldID, icon ) { jQuery( '#fieldDisplays #fieldDisplay_' + fieldID ).removeClass( 'icon-input icon-password icon-radio icon-checkbox icon-selectbox icon-multiselect icon-textarea icon-email icon-hidden icon-sendcopy icon-h1 icon-h2 icon-h3 icon-h4' ).addClass( icon ) ; } function enableTooltips() { hideTooltips(); jQuery( 'span.iwacf-help' ).unbind(); jQuery( 'span.iwacf-help' ).mouseenter( function( e ) { hideTooltips(); var element = jQuery( this ); var regex = /help\-([a-z0-9]+)/i; var match = regex.exec( element.attr( 'class' ) ); var tooltip = match[1]; var offset = jQuery( this ).closest( '.postbox' ).offset(); var positionX = e.pageX - offset.left; var positionY = e.pageY - offset.top; console.log( 'x' + tooltip + 'y' + positionX + 'y' + positionY ); showTooltip( tooltip, positionX, positionY ); } ); jQuery( 'span.iwacf-help' ).mouseleave( function() { var element = jQuery( this ); var regex = /help\-([a-z0-9]+)/i; var match = regex.exec( element.attr( 'class' ) ); var tooltip = match[1]; hideTooltip( tooltip ); } ); } function showTooltip( tooltip, x, y ) { var element = jQuery( 'div.iwacf-tooltip.tooltip-' + tooltip ); element.css( { 'top': y, 'left': x } ); element.fadeIn(); } function hideTooltip( tooltip ) { var element = jQuery( 'div.iwacf-tooltip.tooltip-' + tooltip ); element.fadeOut(); } function hideTooltips() { jQuery( 'div.iwacf-tooltip' ).hide(); } function enableDelete() { // When a delete button is clicked if ( jQuery( '.deleteFieldButton' ).length == 2 ) jQuery( '.deleteFieldButton:first' ).attr( 'disabled', 'disabled' ).addClass( 'disabled' ); else if ( jQuery( '.deleteFieldButton' ).length == 3 ) jQuery( '.deleteFieldButton:first' ).removeAttr( 'disabled' ).removeClass( 'disabled' ); jQuery( '.deleteFieldButton' ).unbind(); jQuery( '.deleteFieldButton' ).click( function() { // Get the ID of this delete button var deleteID = jQuery( this ).attr( 'id' ) // Get the ID number of the form field this remove button belongs to var fieldSequence = deleteID.replace( /removeField\_/, '' ); // Find this form field, fade it out and when thats finished, remove it from the page jQuery( '#formFields #fieldDisplays #fieldDisplay_' + fieldSequence ).remove(); jQuery( '#formFields #formField_' + fieldSequence ).remove(); showFieldEditor( jQuery( '#formFields div.form-field:first' ).attr( 'id' ).replace( /formField\_/, '' ), true ); enableDelete(); updateDisplayOrder(); } ); } ( function( $ ) { $.fn.iwacontactToggleDisabled = function() { return this.each( function() { this.disabled = !this.disabled; } ); }; } ) ( jQuery );