var iwac_sort_array = '';
jQuery( document ).ready( function() {
// 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();
}
} );
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 #formField_' + fieldID ).show().removeClass( 'hidden' );
jQuery( '#formFields li.field-display a' ).removeClass( 'selected' );
jQuery( '#formFields #fieldDisplay_' + fieldID + ' a' ).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();
} );
}
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() );
}
else {
jQuery( '#formFields #fieldDisplay_' + fieldID + ' a' ).html( 'Field ' + fieldID );
}
} );
jQuery( '#formFields .field-type, #formFields .field-validation' ).unbind();
jQuery( '#formFields .field-type, #formFields .field-validation' ).change( function() {
updateIcons();
} );
}
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 {
var newicon = 'icon-' + jQuery( this ).val();
var fieldID = jQuery( this ).attr( 'id' ).replace( /iwacf\_fieldtype\_/, '' );
changeIcon( fieldID, newicon );
}
} );
}
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-h1 icon-h2 icon-h3 icon-h4' ).addClass( icon ) ;
}
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();
} );
}