From b5d19e2644c717577290e62ea504da9a81c569c0 Mon Sep 17 00:00:00 2001 From: Chuck Scott Date: Tue, 19 May 2015 13:49:24 -0400 Subject: [PATCH] initial commit --- classes/class.swpm-fb-admin-custom-fields.php | 70 + classes/class.swpm-fb-fieldmeta.php | 622 ++++++ classes/class.swpm-fb-form-custom.php | 278 +++ classes/class.swpm-fb-form.php | 483 +++++ classes/class.swpm-fb-formmeta.php | 138 ++ classes/class.swpm-fb-forms-list.php | 421 ++++ classes/class.swpm-fb-installer.php | 73 + classes/class.swpm-fb-profile-formmeta.php | 18 + .../class.swpm-fb-registration-formmeta.php | 84 + classes/class.swpm-fb-utils.php | 228 +++ classes/class.swpm-form-builder.php | 1357 +++++++++++++ css/smoothness/images/animated-overlay.gif | Bin 0 -> 1738 bytes .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 212 bytes .../images/ui-bg_flat_75_ffffff_40x100.png | Bin 0 -> 208 bytes .../images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 0 -> 335 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 207 bytes .../images/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 262 bytes .../images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 0 -> 262 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 332 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 280 bytes .../images/ui-icons_222222_256x240.png | Bin 0 -> 6922 bytes .../images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4549 bytes .../images/ui-icons_454545_256x240.png | Bin 0 -> 6992 bytes .../images/ui-icons_888888_256x240.png | Bin 0 -> 6999 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4549 bytes css/smoothness/jquery-ui-1.10.3.css | 1177 ++++++++++++ css/smoothness/jquery-ui-1.10.3.min.css | 5 + css/swpm-form-builder-admin.css | 1705 +++++++++++++++++ css/swpm-form-builder-admin.min.css | 1 + css/swpm-form-builder.css | 530 +++++ css/swpm-form-builder.min.css | 1 + images/arrows-2x.png | Bin 0 -> 863 bytes images/arrows-dark-2x.png | Bin 0 -> 719 bytes images/arrows-dark-vs-2x.png | Bin 0 -> 761 bytes images/arrows-dark-vs.png | Bin 0 -> 243 bytes images/arrows-dark.png | Bin 0 -> 243 bytes images/arrows-vs-2x.png | Bin 0 -> 723 bytes images/arrows-vs.png | Bin 0 -> 243 bytes images/arrows.png | Bin 0 -> 243 bytes images/swpm-form-items-2x.png | Bin 0 -> 10585 bytes images/swpm-form-items.png | Bin 0 -> 4488 bytes images/swpm-interface-icons-2x.png | Bin 0 -> 3320 bytes images/swpm-interface-icons.png | Bin 0 -> 1394 bytes images/swpm_icon.png | Bin 0 -> 2952 bytes includes/admin-field-options.php | 448 +++++ includes/admin-form-creator.php | 242 +++ includes/admin-license-interface.php | 111 ++ includes/admin-new-form.php | 78 + includes/class-widget.php | 88 + includes/email.php | 65 + includes/form-output.php | 220 +++ js/ckeditor/ckeditor.js | 919 +++++++++ js/ckeditor/config.js | 30 + js/ckeditor/contents.css | 103 + js/ckeditor/lang/en.js | 5 + .../plugins/dialog/dialogDefinition.js | 4 + js/ckeditor/plugins/icons.png | Bin 0 -> 10452 bytes js/ckeditor/plugins/link/dialogs/anchor.js | 8 + js/ckeditor/plugins/link/dialogs/link.js | 36 + js/ckeditor/plugins/link/images/anchor.png | Bin 0 -> 566 bytes js/ckeditor/skins/moono/dialog.css | 5 + js/ckeditor/skins/moono/dialog_ie.css | 5 + js/ckeditor/skins/moono/dialog_ie7.css | 5 + js/ckeditor/skins/moono/dialog_ie8.css | 5 + js/ckeditor/skins/moono/dialog_iequirks.css | 5 + js/ckeditor/skins/moono/dialog_opera.css | 5 + js/ckeditor/skins/moono/editor.css | 5 + js/ckeditor/skins/moono/editor_gecko.css | 5 + js/ckeditor/skins/moono/editor_ie.css | 5 + js/ckeditor/skins/moono/editor_ie7.css | 5 + js/ckeditor/skins/moono/editor_ie8.css | 5 + js/ckeditor/skins/moono/editor_iequirks.css | 5 + js/ckeditor/skins/moono/icons.png | Bin 0 -> 20881 bytes js/ckeditor/skins/moono/images/arrow.png | Bin 0 -> 261 bytes js/ckeditor/skins/moono/images/close.png | Bin 0 -> 389 bytes js/ckeditor/skins/moono/images/mini.png | Bin 0 -> 818 bytes js/ckeditor/skins/moono/readme.md | 51 + js/i18n/datepicker/datepicker-cs_CS.js | 36 + js/i18n/datepicker/datepicker-de_DE.js | 36 + js/i18n/datepicker/datepicker-el_GR.js | 36 + js/i18n/datepicker/datepicker-en_AU.js | 36 + js/i18n/datepicker/datepicker-en_GB.js | 36 + js/i18n/datepicker/datepicker-en_US.js | 35 + js/i18n/datepicker/datepicker-es_ES.js | 36 + js/i18n/datepicker/datepicker-fr_FR.js | 38 + js/i18n/datepicker/datepicker-he_IL.js | 36 + js/i18n/datepicker/datepicker-hu_HU.js | 36 + js/i18n/datepicker/datepicker-id_ID.js | 36 + js/i18n/datepicker/datepicker-it_IT.js | 36 + js/i18n/datepicker/datepicker-ja_JP.js | 36 + js/i18n/datepicker/datepicker-ko_KR.js | 36 + js/i18n/datepicker/datepicker-nl_NL.js | 36 + js/i18n/datepicker/datepicker-pl_PL.js | 36 + js/i18n/datepicker/datepicker-pt_BR.js | 36 + js/i18n/datepicker/datepicker-pt_PT.js | 35 + js/i18n/datepicker/datepicker-ro_RO.js | 39 + js/i18n/datepicker/datepicker-ru_RU.js | 36 + js/i18n/datepicker/datepicker-sv_SE.js | 36 + js/i18n/datepicker/datepicker-tr_TR.js | 36 + js/i18n/datepicker/datepicker-zh_CN.js | 36 + js/i18n/datepicker/datepicker-zh_TW.js | 36 + js/i18n/validate/messages-cs_CS.js | 38 + js/i18n/validate/messages-de_DE.js | 38 + js/i18n/validate/messages-el_GR.js | 38 + js/i18n/validate/messages-en_AU.js | 38 + js/i18n/validate/messages-en_GB.js | 38 + js/i18n/validate/messages-en_US.js | 38 + js/i18n/validate/messages-es_ES.js | 38 + js/i18n/validate/messages-fr_FR.js | 38 + js/i18n/validate/messages-he_IL.js | 38 + js/i18n/validate/messages-hu_HU.js | 38 + js/i18n/validate/messages-id_ID.js | 38 + js/i18n/validate/messages-it_IT.js | 38 + js/i18n/validate/messages-ja_JP.js | 38 + js/i18n/validate/messages-ko_KR.js | 38 + js/i18n/validate/messages-nl_NL.js | 38 + js/i18n/validate/messages-pl_PL.js | 38 + js/i18n/validate/messages-pt_BR.js | 39 + js/i18n/validate/messages-pt_PT.js | 39 + js/i18n/validate/messages-ro_RO.js | 38 + js/i18n/validate/messages-ru_RU.js | 38 + js/i18n/validate/messages-sv_SE.js | 38 + js/i18n/validate/messages-tr_TR.js | 38 + js/i18n/validate/messages-zh_CN.js | 38 + js/i18n/validate/messages-zh_TW.js | 39 + js/jquery.metadata.js | 1 + js/jquery.ui.nestedSortable.js | 429 +++++ js/jquery.ui.nestedSortable.min.js | 1 + js/jquery.validate.min.js | 51 + js/swpm-admin.js | 665 +++++++ js/swpm-admin.min.js | 1 + js/swpm-validation.js | 66 + js/swpm-validation.min.js | 1 + languages/swpm-form-builder-bg_BG.mo | Bin 0 -> 8334 bytes languages/swpm-form-builder-bg_BG.po | 405 ++++ languages/swpm-form-builder-es_ES.mo | Bin 0 -> 14959 bytes languages/swpm-form-builder-es_ES.po | 1086 +++++++++++ languages/swpm-form-builder-fr_FR.mo | Bin 0 -> 15275 bytes languages/swpm-form-builder-fr_FR.po | 1087 +++++++++++ languages/swpm-form-builder-hu_HU.mo | Bin 0 -> 14420 bytes languages/swpm-form-builder-hu_HU.po | 1082 +++++++++++ languages/swpm-form-builder-nl_NL.mo | Bin 0 -> 14542 bytes languages/swpm-form-builder-nl_NL.po | 1083 +++++++++++ languages/swpm-form-builder.pot | 852 ++++++++ swpm-form-builder.php | 23 + uninstall.php | 21 + views/all_forms.php | 32 + views/button_palette_metabox.php | 51 + views/settings.php | 98 + 149 files changed, 18476 insertions(+) create mode 100644 classes/class.swpm-fb-admin-custom-fields.php create mode 100644 classes/class.swpm-fb-fieldmeta.php create mode 100644 classes/class.swpm-fb-form-custom.php create mode 100644 classes/class.swpm-fb-form.php create mode 100644 classes/class.swpm-fb-formmeta.php create mode 100644 classes/class.swpm-fb-forms-list.php create mode 100644 classes/class.swpm-fb-installer.php create mode 100644 classes/class.swpm-fb-profile-formmeta.php create mode 100644 classes/class.swpm-fb-registration-formmeta.php create mode 100644 classes/class.swpm-fb-utils.php create mode 100644 classes/class.swpm-form-builder.php create mode 100644 css/smoothness/images/animated-overlay.gif create mode 100644 css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100644 css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png create mode 100644 css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png create mode 100644 css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png create mode 100644 css/smoothness/images/ui-bg_glass_75_dadada_1x400.png create mode 100644 css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png create mode 100644 css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100644 css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png create mode 100644 css/smoothness/images/ui-icons_222222_256x240.png create mode 100644 css/smoothness/images/ui-icons_2e83ff_256x240.png create mode 100644 css/smoothness/images/ui-icons_454545_256x240.png create mode 100644 css/smoothness/images/ui-icons_888888_256x240.png create mode 100644 css/smoothness/images/ui-icons_cd0a0a_256x240.png create mode 100644 css/smoothness/jquery-ui-1.10.3.css create mode 100644 css/smoothness/jquery-ui-1.10.3.min.css create mode 100644 css/swpm-form-builder-admin.css create mode 100644 css/swpm-form-builder-admin.min.css create mode 100644 css/swpm-form-builder.css create mode 100644 css/swpm-form-builder.min.css create mode 100644 images/arrows-2x.png create mode 100644 images/arrows-dark-2x.png create mode 100644 images/arrows-dark-vs-2x.png create mode 100644 images/arrows-dark-vs.png create mode 100644 images/arrows-dark.png create mode 100644 images/arrows-vs-2x.png create mode 100644 images/arrows-vs.png create mode 100644 images/arrows.png create mode 100644 images/swpm-form-items-2x.png create mode 100644 images/swpm-form-items.png create mode 100644 images/swpm-interface-icons-2x.png create mode 100644 images/swpm-interface-icons.png create mode 100644 images/swpm_icon.png create mode 100644 includes/admin-field-options.php create mode 100644 includes/admin-form-creator.php create mode 100644 includes/admin-license-interface.php create mode 100644 includes/admin-new-form.php create mode 100644 includes/class-widget.php create mode 100644 includes/email.php create mode 100644 includes/form-output.php create mode 100644 js/ckeditor/ckeditor.js create mode 100644 js/ckeditor/config.js create mode 100644 js/ckeditor/contents.css create mode 100644 js/ckeditor/lang/en.js create mode 100644 js/ckeditor/plugins/dialog/dialogDefinition.js create mode 100644 js/ckeditor/plugins/icons.png create mode 100644 js/ckeditor/plugins/link/dialogs/anchor.js create mode 100644 js/ckeditor/plugins/link/dialogs/link.js create mode 100644 js/ckeditor/plugins/link/images/anchor.png create mode 100644 js/ckeditor/skins/moono/dialog.css create mode 100644 js/ckeditor/skins/moono/dialog_ie.css create mode 100644 js/ckeditor/skins/moono/dialog_ie7.css create mode 100644 js/ckeditor/skins/moono/dialog_ie8.css create mode 100644 js/ckeditor/skins/moono/dialog_iequirks.css create mode 100644 js/ckeditor/skins/moono/dialog_opera.css create mode 100644 js/ckeditor/skins/moono/editor.css create mode 100644 js/ckeditor/skins/moono/editor_gecko.css create mode 100644 js/ckeditor/skins/moono/editor_ie.css create mode 100644 js/ckeditor/skins/moono/editor_ie7.css create mode 100644 js/ckeditor/skins/moono/editor_ie8.css create mode 100644 js/ckeditor/skins/moono/editor_iequirks.css create mode 100644 js/ckeditor/skins/moono/icons.png create mode 100644 js/ckeditor/skins/moono/images/arrow.png create mode 100644 js/ckeditor/skins/moono/images/close.png create mode 100644 js/ckeditor/skins/moono/images/mini.png create mode 100644 js/ckeditor/skins/moono/readme.md create mode 100644 js/i18n/datepicker/datepicker-cs_CS.js create mode 100644 js/i18n/datepicker/datepicker-de_DE.js create mode 100644 js/i18n/datepicker/datepicker-el_GR.js create mode 100644 js/i18n/datepicker/datepicker-en_AU.js create mode 100644 js/i18n/datepicker/datepicker-en_GB.js create mode 100644 js/i18n/datepicker/datepicker-en_US.js create mode 100644 js/i18n/datepicker/datepicker-es_ES.js create mode 100644 js/i18n/datepicker/datepicker-fr_FR.js create mode 100644 js/i18n/datepicker/datepicker-he_IL.js create mode 100644 js/i18n/datepicker/datepicker-hu_HU.js create mode 100644 js/i18n/datepicker/datepicker-id_ID.js create mode 100644 js/i18n/datepicker/datepicker-it_IT.js create mode 100644 js/i18n/datepicker/datepicker-ja_JP.js create mode 100644 js/i18n/datepicker/datepicker-ko_KR.js create mode 100644 js/i18n/datepicker/datepicker-nl_NL.js create mode 100644 js/i18n/datepicker/datepicker-pl_PL.js create mode 100644 js/i18n/datepicker/datepicker-pt_BR.js create mode 100644 js/i18n/datepicker/datepicker-pt_PT.js create mode 100644 js/i18n/datepicker/datepicker-ro_RO.js create mode 100644 js/i18n/datepicker/datepicker-ru_RU.js create mode 100644 js/i18n/datepicker/datepicker-sv_SE.js create mode 100644 js/i18n/datepicker/datepicker-tr_TR.js create mode 100644 js/i18n/datepicker/datepicker-zh_CN.js create mode 100644 js/i18n/datepicker/datepicker-zh_TW.js create mode 100644 js/i18n/validate/messages-cs_CS.js create mode 100644 js/i18n/validate/messages-de_DE.js create mode 100644 js/i18n/validate/messages-el_GR.js create mode 100644 js/i18n/validate/messages-en_AU.js create mode 100644 js/i18n/validate/messages-en_GB.js create mode 100644 js/i18n/validate/messages-en_US.js create mode 100644 js/i18n/validate/messages-es_ES.js create mode 100644 js/i18n/validate/messages-fr_FR.js create mode 100644 js/i18n/validate/messages-he_IL.js create mode 100644 js/i18n/validate/messages-hu_HU.js create mode 100644 js/i18n/validate/messages-id_ID.js create mode 100644 js/i18n/validate/messages-it_IT.js create mode 100644 js/i18n/validate/messages-ja_JP.js create mode 100644 js/i18n/validate/messages-ko_KR.js create mode 100644 js/i18n/validate/messages-nl_NL.js create mode 100644 js/i18n/validate/messages-pl_PL.js create mode 100644 js/i18n/validate/messages-pt_BR.js create mode 100644 js/i18n/validate/messages-pt_PT.js create mode 100644 js/i18n/validate/messages-ro_RO.js create mode 100644 js/i18n/validate/messages-ru_RU.js create mode 100644 js/i18n/validate/messages-sv_SE.js create mode 100644 js/i18n/validate/messages-tr_TR.js create mode 100644 js/i18n/validate/messages-zh_CN.js create mode 100644 js/i18n/validate/messages-zh_TW.js create mode 100644 js/jquery.metadata.js create mode 100644 js/jquery.ui.nestedSortable.js create mode 100644 js/jquery.ui.nestedSortable.min.js create mode 100644 js/jquery.validate.min.js create mode 100644 js/swpm-admin.js create mode 100644 js/swpm-admin.min.js create mode 100644 js/swpm-validation.js create mode 100644 js/swpm-validation.min.js create mode 100644 languages/swpm-form-builder-bg_BG.mo create mode 100644 languages/swpm-form-builder-bg_BG.po create mode 100644 languages/swpm-form-builder-es_ES.mo create mode 100644 languages/swpm-form-builder-es_ES.po create mode 100644 languages/swpm-form-builder-fr_FR.mo create mode 100644 languages/swpm-form-builder-fr_FR.po create mode 100644 languages/swpm-form-builder-hu_HU.mo create mode 100644 languages/swpm-form-builder-hu_HU.po create mode 100644 languages/swpm-form-builder-nl_NL.mo create mode 100644 languages/swpm-form-builder-nl_NL.po create mode 100644 languages/swpm-form-builder.pot create mode 100644 swpm-form-builder.php create mode 100644 uninstall.php create mode 100644 views/all_forms.php create mode 100644 views/button_palette_metabox.php create mode 100644 views/settings.php diff --git a/classes/class.swpm-fb-admin-custom-fields.php b/classes/class.swpm-fb-admin-custom-fields.php new file mode 100644 index 0000000..f67c6d2 --- /dev/null +++ b/classes/class.swpm-fb-admin-custom-fields.php @@ -0,0 +1,70 @@ +fields = array(); + $this->membership_level = $membership_level; + $form_table_name = $wpdb->prefix . 'swpm_form_builder_forms'; + $field_table = $wpdb->prefix . 'swpm_form_builder_fields'; + $query = $wpdb->prepare("SELECT form_id FROM $form_table_name WHERE form_type = 1 AND " + . " (form_membership_level= %d OR form_membership_level=0 )" + . " ORDER BY form_membership_level DESC", $membership_level); + $form_id = $wpdb->get_var($query); + $this->form_id = $form_id; + if (empty($form_id)) {return; } + $query = $wpdb->prepare( + "SELECT + field_id AS id, + form_id, + field_key AS _key, + field_type AS type, + field_options AS options, + field_description AS description, + field_name AS name, + field_sequence AS sequence, + field_parent AS parent, + field_validation AS validation, + field_required AS required, + field_size AS size, + field_css AS css, + field_layout AS layout, + field_default AS _default, + field_readonly As readonly, + field_adminonly AS adminonly, + reg_field_id AS reg_field_id + FROM $field_table WHERE form_id= %d and field_key='custom' ORDER BY field_sequence ASC", + $form_id + ); + $data = $wpdb->get_results($query); + foreach ($data as $field){ + $obj = new SwpmFbFieldmeta(); + $obj->load($field); + $this->fields[] = $obj; + } + } + public function admin_ui(){ +// if (!(BUtils::is_admin() && is_admin())) {return '';} + $custom = new SwpmFbFormCustom(); + $member_id = filter_input(INPUT_GET, 'member_id'); + if (empty($member_id)){return'';} + $custom->init($member_id); + return $custom->admin_ui($this->fields); + } + public function save($user_id){ + $custom = new SwpmFbFormCustom(); + $custom->init($user_id); + $custom->process_custom($this->fields); + if ($custom->is_valid()){ + $custom->save(); + } + + } +} diff --git a/classes/class.swpm-fb-fieldmeta.php b/classes/class.swpm-fb-fieldmeta.php new file mode 100644 index 0000000..272e643 --- /dev/null +++ b/classes/class.swpm-fb-fieldmeta.php @@ -0,0 +1,622 @@ +table = $wpdb->prefix . 'swpm_form_builder_fields'; + $this->mtable = $wpdb->prefix . 'swpm_form_builder_multivalue'; + } + + public function save() { + global $wpdb; + $data = array( + 'form_id' => $this->form_id, + 'field_key' => $this->key, + 'field_type' => $this->type, + 'field_name' => $this->name, + 'field_description' => $this->description, + 'field_size' => $this->size, + 'field_required' => $this->required, + 'field_parent' => $this->parent, + 'field_sequence' => $this->sequence, + 'field_options' => $this->options, + 'field_validation' => $this->validation, + 'field_css' => $this->css, + 'field_layout' => $this->layout, + 'field_default' => $this->default, + 'field_readonly' => $this->readnly, + 'field_adminonly' => $this->adminonly, + 'reg_field_id' => $this->reg_field_id + ); + // todo: validate here + if (empty($this->id)) { + $wpdb->insert($this->table, $data); + } else { + $wpdb->update($this->table, $data, array('field_id', $this->id)); + } + } + + public function load($field) { + foreach ($field as $key => $value) { + if ($key == '_key') { + $this->key = $value; + } elseif ($key == '_default') { + $this->default = $value; + } else { + $this->$key = $value; + } + } + } + + public function load_from_db($field_id) { + global $wpdb; + $query = $wpdb->prepare( + "SELECT + field_id AS id, + form_id, + field_key AS _key, + field_type AS type, + field_options AS options, + field_description AS description, + field_name AS name, + field_sequence AS sequence, + field_parent AS parent, + field_validation AS validation, + field_required AS required, + field_size AS size, + field_css AS css, + field_layout AS layout, + field_default AS _default, + field_readonly AS readonly, + field_adminonly AS adminonly, + reg_field_id AS reg_field_id + FROM $this->table WHERE field_id= %d", $field_id + ); + $data = $wpdb->get_row($query); + $this->load($data); + } + + public function validate() { + + } + + public function get_unique_value_id() { + return empty($this->reg_field_id) ? $this->id : $this->reg_field_id; + } + + public function toHTML($value = null, $form_type = 0, $label_align = "") { + switch ($this->type) { + case 'text': + return $this->text($value, $form_type, $label_align); + break; + case 'select': + return $this->select($value, $form_type, $label_align); + break; + case 'radio': + return $this->radio($value, $form_type, $label_align); + break; + case 'fieldset': + return $this->fieldset($form_type, $label_align); + break; + case 'section': + return $this->section($form_type, $label_align); + break; + case 'secret': + return $this->secret($form_type, $label_align); + break; + case 'submit': + return $this->submit($form_type, $label_align); + break; + case 'verification': + return $this->verification($form_type, $label_align); + break; + case 'email': + return $this->email($value, $form_type, $label_align); + break; + case 'url': + return $this->url($value, $form_type, $label_align); + break; + case 'currency': + return $this->currency($value, $form_type, $label_align); + break; + case 'number': + return $this->number($value, $form_type, $label_align); + break; + case 'phone': + return $this->phone($value, $form_type, $label_align); + break; + case 'password': + return $this->password($form_type, $label_align); + break; + case 'textarea': + return $this->textarea($value, $form_type, $label_align); + break; + case 'checkbox': + return $this->checkbox($value, $form_type, $label_align); + break; + case 'address': + return $this->address($value, $form_type, $label_align); + break; + case 'date': + return $this->date($value, $form_type, $label_align); + break; + case 'time': + return $this->time($value, $form_type, $label_align); + break; + case 'html': + return $this->html($value, $form_type, $label_align); + break; + case 'file-upload': + return $this->file_upload($value, $form_type, $label_align); + break; + case 'instructions': + return $this->instructions($form_type, $label_align); + break; + } + } + + private function text($value = null, $form_type = 0, $label_align = "") { + $options = $this->get_sanitized_options(); + $value = empty($value) ? $options['default'] : $value; + $key = str_replace('-', '_', $this->key); + switch ($key) { + case 'membership_level': + return $this->membership_level($value, $form_type, $label_align); + default: + } + // HTML5 types + if (in_array($this->type, array('email', 'url'))) { + $type = esc_attr($this->type); + } elseif ('phone' == $this->type) { + $type = 'tel'; + } else { + $type = 'text'; + } + $form_item = sprintf( + '', $options['field_id'], $options['id_attr'], stripslashes($value), $options['size'], $options['required'], $options['validation'], $options['css'], $type, $options['readonly'] ? 'disabled' : '' + ); + if ($form_type == SwpmFbForm::PROFILE) { + switch ($key) { + case 'user_name': + $form_item = '' . $value . ''; + break; + } + } + return (!empty($options['description']) ) ? + sprintf('%1$s', $form_item, $options['description']) : $form_item; + } + + private function membership_level($level, $form_type = 0, $label_align = "") { + $options = $this->get_sanitized_options(); + $value = BPermission::get_instance($level)->get('alias'); + $id = BPermission::get_instance($level)->get('id'); + $type = 'hidden'; + $form_item = sprintf( + '', $options['field_id'], $options['id_attr'], $id, $options['size'], $options['required'], $options['validation'], $options['css'], $type, $options['readonly'] ? 'disabled' : '' + ); + $form_item .= sprintf('
%1$s
', $value); + return (!empty($options['description']) ) ? + sprintf('%1$s', $form_item, $options['description']) : $form_item; + } + + private function select($value = null, $form_type = 0, $label_align = "") { + extract($this->get_sanitized_options()); + $field_options = maybe_unserialize($this->options); + $options = ''; + $value = empty($value) ? $default : $value; + // Loop through each option and output + foreach ($field_options as $option => $tvalue) { + $options .= sprintf('', esc_attr(trim(stripslashes($tvalue))), selected($tvalue, $value, 0)); + } + + $form_item = sprintf( + '', $field_id, $id_attr, $size, $required, $css, $options + ); + + return (!empty($description) ) ? + sprintf('%1$s', $form_item, $description) : $form_item; + } + + private function radio($value = null, $form_type = 0, $label_align = "") { + extract($this->get_sanitized_options()); + $field_options = maybe_unserialize($this->options); + + $options = ''; + $value = empty($value) ? $default : $value; + // Loop through each option and output + foreach ($field_options as $option => $tvalue) { + $options .= sprintf( + '
', $field_id, $id_attr, $option, $required, $css, esc_attr(trim(stripslashes($tvalue))), wp_specialchars_decode(stripslashes($tvalue)), checked($tvalue, $value, 0) + ); + } + + $form_item = $options; + + $output = '
'; + + $output .= (!empty($description) ) ? sprintf('%1$s', $form_item, $description) : $form_item; + + $output .= '
'; + return $output; + } + + private function fieldset($form_type = 0, $label_align = "") { + + } + + private function section($form_type = 0, $label_align = "") { + + } + + private function secret($form_type = 0, $label_align = "") { + + } + + private function submit($form_type = 0, $label_align = "") { + extract($this->get_sanitized_options()); + return sprintf( + '
  • + + ' . BUtils::delete_account_button() . ' +
  • ', $field_id, $id_attr, wp_specialchars_decode(esc_html($field_name), ENT_QUOTES), $css + ); + } + + private function verification($form_type = 0) { + + } + + private function email($value = null, $form_type = 0) { + $options = $this->get_sanitized_options(); + $value = empty($value) ? $options['default'] : $value; + // HTML5 types + $type = esc_attr($this->type); + $form_item = sprintf( + '', $options['field_id'], $options['id_attr'], stripslashes($value), $options['size'], $options['required'], $options['validation'], $options['css'], $type, $options['readonly'] ? 'disabled' : '' + ); + + return (!empty($options['description']) ) ? + sprintf('%1$s', $form_item, $options['description']) : $form_item; + } + + private function url($value = null, $form_type = 0, $label_align = "") { + $options = $this->get_sanitized_options(); + $value = empty($value) ? $options['default'] : $value; + // HTML5 types + $type = esc_attr($this->type); + $form_item = sprintf( + '', $options['field_id'], $options['id_attr'], $value, $options['size'], $options['required'], $options['validation'], $options['css'], $type, $options['readonly'] ? 'disabled' : '' + ); + + return (!empty($options['description']) ) ? + sprintf('%1$s', $form_item, $options['description']) : $form_item; + } + + private function currency($value = null, $form_type = 0, $label_align = "") { + $options = $this->get_sanitized_options(); + $value = empty($value) ? $options['default'] : $value; + // HTML5 types + $type = 'text'; + $form_item = sprintf( + '', $options['field_id'], $options['id_attr'], $value, $options['size'], $options['required'], $options['validation'], $options['css'], $type, $options['readonly'] ? 'disabled' : '' + ); + + return (!empty($options['description']) ) ? + sprintf('%1$s', $form_item, $options['description']) : $form_item; + } + + private function number($value = null, $form_type = 0, $label_align = "") { + $options = $this->get_sanitized_options(); + $value = empty($value) ? $options['default'] : $value; + // HTML5 types + $type = 'text'; + $form_item = sprintf( + '', $options['field_id'], $options['id_attr'], $value, $options['size'], $options['required'], $options['validation'], $options['css'], $type, $options['readonly'] ? 'disabled' : '' + ); + + return (!empty($options['description']) ) ? + sprintf('%1$s', $form_item, $options['description']) : $form_item; + } + + private function phone($value = null, $form_type = 0, $label_align = "") { + $options = $this->get_sanitized_options(); + $value = empty($value) ? $options['default'] : $value; + // HTML5 types + $type = 'tel'; + $form_item = sprintf( + '', $options['field_id'], $options['id_attr'], $value, $options['size'], $options['required'], $options['validation'], $options['css'], $type, $options['readonly'] ? 'disabled' : '' + ); + + return (!empty($options['description']) ) ? + sprintf('%1$s', $form_item, $options['description']) : $form_item; + } + + private function password($form_type = 0, $label_align = "") { + extract($this->get_sanitized_options()); + $required = $form_type == SwpmFbForm::PROFILE ? '' : $required; + $form_item = sprintf( + '
    ', $field_id, $id_attr, $default, $size, $required, $validation, $css + ); + $form_item .= sprintf( + '
    ', $field_id, $id_attr, $default, $size, $required, $validation, $css + ); + + return (!empty($description) ) ? + sprintf('
    %1$s
    ', $form_item, $description) : $form_item; + } + + private function textarea($value = null, $form_type = 0, $label_align = "") { + extract($this->get_sanitized_options()); + $value = empty($value) ? $default : $value; + $form_item = sprintf( + '', $field_id, $id_attr, $value, $size, $required, $css + ); + + $output = '
    '; + + $output .= (!empty($description) ) ? + sprintf('%1$s', $form_item, $description) : $form_item; + + $output .= '
    '; + return $output; + } + + private function checkbox($value = null, $form_type = 0, $label_align = "") { + extract($this->get_sanitized_options()); + $field_options = maybe_unserialize($this->options); + + $options = ''; + $saved_value = maybe_unserialize(empty($value) ? $default : $value); + // Loop through each option and output + $indexes = array_keys((array) $saved_value); + foreach ($field_options as $option => $value) { + $options .= sprintf( + '
    ', $field_id, $id_attr, $option, $css, esc_attr(trim(stripslashes($value))), wp_specialchars_decode(stripslashes($value)), checked(in_array($option, $indexes) ? $option : -1, $option, 0) + ); + } + + $form_item = $options; + + $output = sprintf('
    ', empty($required) ? "" : "swpm-checkbox-required"); + + $output .= (!empty($description) ) ? sprintf('%1$s', $form_item, $description) : $form_item; + + $output .= '
    '; + return $output; + } + + private function address($value = array(), $form_type = 0, $label_align = "") { + extract($this->get_sanitized_options()); + $address = ''; + $swpm_settings = get_option('swpm-settings'); + + // Settings - Place Address labels above fields + $settings_address_labels = isset($swpm_settings['address-labels']) ? false : true; + $address_parts = array( + 'address' => array( + 'label' => __('Street Address', 'swpm-form-builder'), + 'layout' => 'full', + 'value' => isset($value['address']) ? $value['address'] : '' + ), + 'address-2' => array( + 'label' => __('Apt, Suite, Bldg. (optional)', 'swpm-form-builder'), + 'layout' => 'full', + 'value' => isset($value['address-2']) ? $value['address-2'] : '' + ), + 'city' => array( + 'label' => __('City', 'swpm-form-builder'), + 'layout' => 'left', + 'value' => isset($value['city']) ? $value['city'] : '' + ), + 'state' => array( + 'label' => __('State / Province / Region', 'swpm-form-builder'), + 'layout' => 'right', + 'value' => isset($value['state']) ? $value['state'] : '' + ), + 'zip' => array( + 'label' => __('Postal / Zip Code', 'swpm-form-builder'), + 'layout' => 'left', + 'value' => isset($value['zip']) ? $value['zip'] : '' + ), + 'country' => array( + 'label' => __('Country', 'swpm-form-builder'), + 'layout' => 'right', + 'value' => isset($value['country']) ? $value['country'] : $default + ) + ); + + $address_parts = apply_filters('swpm_address_labels', $address_parts, $this->form_id); + $label_placement = apply_filters('swpm_address_labels_placement', $settings_address_labels, $this->form_id); + $placement_bottom = ( $label_placement ) ? '' : ''; + $placement_top = (!$label_placement ) ? '' : ''; + + foreach ($address_parts as $parts => $part) : + + // Make sure the second address line is not required + $addr_required = ( 'address-2' !== $parts ) ? $required : ''; + + if ('country' == $parts) : + + $options = ''; + + foreach (SwpmFbUtils::$countries as $country) { + $options .= sprintf('', $country, selected($part['value'], $country, 0)); + } + + $address .= sprintf( + '' . $placement_top . '' . $placement_bottom . '', $field_id, $id_attr, esc_attr($part['layout']), esc_attr($parts), esc_html($part['label']), $options, $addr_required, $css + ); + + else : + + $address .= sprintf( + '' . $placement_top . '' . $placement_bottom . '', $field_id, $id_attr, esc_attr($part['layout']), esc_attr($parts), esc_html($part['label']), $size, $addr_required, $css + ); + + endif; + + endforeach; + + $output = '
    '; + + $output .=!empty($description) ? "$address" : $address; + + $output .= '
    '; + return $output; + } + + private function date($value = null, $form_type = 0, $label_align = "") { + extract($this->get_sanitized_options()); + // Load jQuery UI datepicker library + wp_enqueue_script('jquery-ui-datepicker'); + wp_enqueue_script('swpm-datepicker-i18n'); + + $options = maybe_unserialize($this->options); + $dateFormat = ( $options ) ? $options['dateFormat'] : ''; + $value = empty($value) ? $default : $value; + $form_item = sprintf( + '', $field_id, $id_attr, $value, $size, $required, $css, $dateFormat + ); + + $output = (!empty($description) ) ? sprintf('%1$s', $form_item, $description) : $form_item; + return $output; + } + + private function time($value = null, $form_type = 0, $label_align = "") { + extract($this->get_sanitized_options()); + $hour = $minute = $ampm = ''; + + // Get the time format (12 or 24) + $time_format = str_replace('time-', '', $validation); + + $time_format = apply_filters('swpm_time_format', $time_format, $this->form_id); + $total_mins = apply_filters('swpm_time_min_total', 55, $this->form_id); + $min_interval = apply_filters('swpm_time_min_interval', 5, $this->form_id); + + // Set whether we start with 0 or 1 and how many total hours + $hour_start = ( $time_format == '12' ) ? 1 : 0; + $hour_total = ( $time_format == '12' ) ? 12 : 23; + + // Hour + for ($i = $hour_start; $i <= $hour_total; $i++) { + $hour .= sprintf('', $i); + } + + // Minute + for ($i = 0; $i <= $total_mins; $i += $min_interval) { + $minute .= sprintf('', $i); + } + + // AM/PM + if ($time_format == '12') { + $ampm = sprintf( + '', $field_id, $id_attr, $hour, $minute, $required, $css + ); + } + + $form_item = sprintf( + '' . + '' . + '%7$s', $field_id, $id_attr, $hour, $minute, $required, $css, $ampm + ); + + $output = (!empty($description) ) ? sprintf('%1$s', $form_item, $description) : $form_item; + + $output .= '
    '; + return $output; + } + + private function html($value = null, $form_type = 0, $label_align = "") { + extract($this->get_sanitized_options()); + //Load CKEditor library + wp_enqueue_script('swpm-ckeditor'); + $value = empty($value) ? $default : $value; + $form_item = sprintf( + '', $field_id, $id_attr, $value, $size, $required, $css + ); + + $output = '
    '; + + $output .= (!empty($description) ) ? sprintf('%1$s', $form_item, $description) : $form_item; + + $output .= '
    '; + return $output; + } + + private function file_upload($value = null, $form_type = 0, $label_align = "") { + extract($this->get_sanitized_options()); + $options = maybe_unserialize($this->options); + $accept = (!empty($options[0]) ) ? " {accept:'$options[0]'}" : ''; + $form_item = sprintf( + '
    ', $field_id, $id_attr, $default, $size, (($form_type == SwpmFbForm::PROFILE) && !empty($value) ) ? "" : $required, $validation, $css, $accept + ); + + $section = (!empty($description) ) ? sprintf('%1$s', $form_item, $description) : $form_item; + if ($this->key == 'profile_image') { + $url = wp_get_attachment_url($value); + $profile_image = empty($url) ? get_avatar("", 100, "mm") : sprintf('', $url); + $section = '
    ' . $profile_image . '
    ' . $section; + } + return '
    ' . $section . '
    '; + } + + private function instructions($form_type = 0, $label_align = "") { + extract($this->get_sanitized_options()); + return wp_specialchars_decode(esc_html(stripslashes($description)), ENT_QUOTES); + } + + public function get_sanitized_options() { + $css = is_admin() ? ((in_array($this->type, array('text', 'password', 'email'))) ? 'regular-text' : '') : $this->css; + $description = $this->description; + return array( + 'field_id' => absint($this->id), + 'field_type' => esc_html($this->type), + 'field_name' => esc_html(stripslashes($this->name)), + 'required_span' => (!empty($this->required) && $this->required === 'yes' ) ? ' *' : '', + 'required' => (!empty($this->required) && $this->required === 'yes' ) ? esc_attr(' required') : '', + 'validation' => (!empty($this->validation) ) ? esc_attr(" $this->validation") : '', + 'css' => (!empty($css) ) ? esc_attr(" $css") : '', + 'id_attr' => "swpm-" . absint($this->id), + 'size' => (!empty($this->size) ) ? esc_attr(" swpm-$this->size") : '', + 'layout' => (!empty($this->layout) ) ? esc_attr(" swpm-$this->layout") : '', + 'default' => (!empty($this->default) ) ? wp_specialchars_decode(esc_html(stripslashes($this->default)), ENT_QUOTES) : '', + 'description' => (!empty($description) ) ? wp_specialchars_decode(esc_html(stripslashes($description)), ENT_QUOTES) : '', + 'readonly' => ( $this->readonly == 'yes') ? true : false, + 'adminonly' => ( $this->adminonly == 'yes') ? true : false, + ); + } + +} diff --git a/classes/class.swpm-fb-form-custom.php b/classes/class.swpm-fb-form-custom.php new file mode 100644 index 0000000..b7514ea --- /dev/null +++ b/classes/class.swpm-fb-form-custom.php @@ -0,0 +1,278 @@ +spam_score = 0; + $this->error = array(); + $this->custom_info = array(); + $this->custom = array(); + } + + protected function get_custom($member_id) { + global $wpdb; + $query = 'SELECT * FROM ' . $wpdb->prefix . 'swpm_form_builder_custom WHERE user_id= %d'; + $query = $wpdb->prepare($query, $member_id); + foreach ($wpdb->get_results($query) as $row) { + $id = empty($row->reg_field_id) ? $row->field_id : $row->reg_field_id; + $this->custom_info[$id] = $row; + } + } + + public function is_valid() { + return empty($this->error); + } + + public function admin_ui($fields) { + $html = '

    Custom Fields

    '; + $html .= ''; + foreach ($fields as $field) { + $id = $field->get_unique_value_id(); + $value = isset($this->custom_info[$id]) ? $this->custom_info[$id]->value : ''; + $html .= ''; + } + return $html . '
    '; + $html .= $field->toHTML($value, SwpmFbForm::PROFILE); + $html .= '
    '; + } + + public function init($member_id) { + $this->get_custom($member_id); + $this->member_id = $member_id; + } + + public function process_custom($fields) { + foreach ($fields as $field) { + $type = str_replace('-', '_', $field->type); + if (method_exists($this, $type)) { + $this->$type($field); + } + } + } + + protected function text($meta) { + $value = filter_input(INPUT_POST, 'swpm-' . $meta->id); + if ($meta->required == 'yes' && empty($value)) { + $this->error[$meta->id] = $meta->name . BUtils::_(' Field is required'); + return; + } + $this->custom[$meta->get_unique_value_id()] = sanitize_text_field($value); + $this->spam_score += SwpmFbUtils::calculate_spam_score($value); + } + + protected function checkbox($meta) { + $args = array('swpm-' . $meta->id => array( + 'filter' => FILTER_SANITIZE_STRING, + 'flags' => FILTER_REQUIRE_ARRAY, + )); + $value = filter_input_array(INPUT_POST, $args); + $value = $value['swpm-' . $meta->id]; + if ($meta->required == 'yes' && empty($value)) { + $this->error[$meta->id] = $meta->name . BUtils::_(' Field is required'); + return; + } + $this->custom[$meta->get_unique_value_id()] = $value; + } + + protected function radio($meta) { + $value = filter_input(INPUT_POST, 'swpm-' . $meta->id); + if ($meta->required == 'yes' && empty($value)) { + $this->error[$meta->id] = $meta->name . BUtils::_(' Field is required'); + return; + } + $this->custom[$meta->get_unique_value_id()] = wp_kses_data($value); + $this->spam_score += SwpmFbUtils::calculate_spam_score($value); + } + + protected function select($meta) { + $value = filter_input(INPUT_POST, 'swpm-' . $meta->id); + if ($meta->required == 'yes' && empty($value)) { + $this->error[$meta->id] = $meta->name . BUtils::_(' Field is required'); + return; + } + $this->custom[$meta->get_unique_value_id()] = wp_kses_data($value); + $this->spam_score += SwpmFbUtils::calculate_spam_score($value); + } + + protected function date($meta) { + $value = filter_input(INPUT_POST, 'swpm-' . $meta->id); + if ($meta->required == 'yes' && empty($value)) { + $this->error[$meta->id] = $meta->name . BUtils::_(' Field is required'); + return; + } + // todo: check date format. + $this->custom[$meta->get_unique_value_id()] = wp_kses_data($value); + $this->spam_score += SwpmFbUtils::calculate_spam_score($value); + } + + protected function time($meta) { + $value = filter_input(INPUT_POST, 'swpm-' . $meta->id); + if ($meta->required == 'yes' && empty($value)) { + $this->error[$meta->id] = $meta->name . BUtils::_(' Field is required'); + return; + } + //todo: check format. + $this->custom[$meta->get_unique_value_id()] = wp_kses_data($value); + $this->spam_score += SwpmFbUtils::calculate_spam_score($value); + } + + protected function phone($meta) { + $value = filter_input(INPUT_POST, 'swpm-' . $meta->id); + if ($meta->required == 'yes' && empty($value)) { + $this->error[$meta->id] = BUtils::_($meta->name . ' Field is required'); + return; + } + //todo: phone number format validation + $this->custom[$meta->get_unique_value_id()] = wp_kses_data($value); + $this->spam_score += SwpmFbUtils::calculate_spam_score($value); + } + + protected function url($meta) { + $value = filter_input(INPUT_POST, 'swpm-' . $meta->id); + if ($meta->required == 'yes' && empty($value)) { + $this->error[$meta->id] = $meta->name . BUtils::_(' Field is required'); + return; + } + if (!empty($value) && !preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i', $value)) { + $this->error[$meta->id] = $meta->name . BUtils::_(' not a valid url'); + return; + } + $this->custom[$meta->get_unique_value_id()] = wp_kses_data($value); + $this->spam_score += SwpmFbUtils::calculate_spam_score($value); + } + + protected function number($meta) { + $value = filter_input(INPUT_POST, 'swpm-' . $meta->id); + if ($meta->required == 'yes' && empty($value)) { + $this->error[$meta->id] = $meta->name . BUtils::_(' Field is required'); + return; + } + if (!is_numeric($value)) { + $this->error[$meta->id] = $meta->name . BUtils::_(' must be a valid number'); + return; + } + if (strlen($value) <= 9 || !preg_match('/^((\+)?[1-9]{1,2})?([-\s\.])?((\(\d{1,4}\))|\d{1,4})(([-\s\.])?[0-9]{1,12}){1,2}$/', $value)) { + $this->error[$meta->id] = $meta->name . BUtils::_(' not a valid phone number'); + return; + } + $this->custom[$meta->get_unique_value_id()] = wp_kses_data($value); + $this->spam_score += SwpmFbUtils::calculate_spam_score($value); + } + + protected function file_upload($meta) { + $value = ( isset($_FILES['swpm-' . $meta->id]) ) ? $_FILES['swpm-' . $meta->id] : ''; + if (is_array($value) && $value['size'] > 0) { + $status = SwpmFbUtils::handle_file_upload($value); + if (isset($status['error'])) { + $this->error[$meta->id] = $status['error']; + return; + } + $this->custom[$meta->get_unique_value_id()] = $status['file']; + } + if ($this->formmeta->type == self::PROFILE) { + // unlink existing image. + } + } + + protected function address($meta) { + if (isset($_POST['swpm-' . $meta->id])) { + $address = $_POST['swpm-' . $meta->id]; + $allowed_html = array('br' => array()); + $address['address'] = wp_kses($address['address'], $allowed_html); + $address['address'] = wp_kses($address['address-2'], $allowed_html); + $address['city'] = wp_kses($address['city'], $allowed_html); + $address['state'] = wp_kses($address['state'], $allowed_html); + $address['zip'] = wp_kses($address['zip'], $allowed_html); + $address['country'] = wp_kses($address['country'], $allowed_html); + $this->custom[$meta->get_unique_value_id()] = json_encode($address); + //todo: spam score + } else if ($meta->required == 'yes') { + $this->error[$meta->id] = BUtils::_($meta->name . ' Field is required'); + } + } + + protected function textarea($meta) { + $value = filter_input(INPUT_POST, 'swpm-' . $meta->id); + if ($meta->required == 'yes' && empty($value)) { + $this->error[$meta->id] = $meta->name . BUtils::_(' Field is required'); + return; + } + $this->custom[$meta->get_unique_value_id()] = wp_strip_all_tags($value); + $this->spam_score += SwpmFbUtils::calculate_spam_score($value); + } + + protected function currency($meta) { + $value = filter_input(INPUT_POST, 'swpm-' . $meta->id); + if ($meta->required == 'yes' && empty($value)) { + $this->error[$meta->id] = $meta->name . BUtils::_(' Field is required'); + return; + } + if (!is_numeric($value)) { + $this->error[$meta->id] = $meta->name . BUtils::_(' must be a valid number'); + return; + } + $this->custom[$meta->get_unique_value_id()] = wp_kses_data($value); + $this->spam_score += SwpmFbUtils::calculate_spam_score($value); + } + + protected function html($meta) { + $value = filter_input(INPUT_POST, 'swpm-' . $meta->id); + if ($meta->required == 'yes' && empty($value)) { + $this->error[$meta->id] = $meta->name . BUtils::_(' Field is required'); + return; + } + $this->custom[$meta->get_unique_value_id()] = wp_kses_data($value); + $this->spam_score += SwpmFbUtils::calculate_spam_score($value); + } + + protected function email($meta) { + $value = filter_input(INPUT_POST, 'swpm-' . $meta->id); + if ($meta->required == 'yes' && empty($value)) { + $this->error[$meta->id] = $meta->name . BUtils::_(' Field is required'); + return; + } + $this->custom[$meta->get_unique_value_id()] = sanitize_email($value); + $this->spam_score += SwpmFbUtils::calculate_spam_score($value); + } + + public function error($key = '', $value = '') { + if (empty($key)) { + return $this->error; + } + $this->error[$key] = $value; + } + + public function save() { + global $wpdb; + foreach ($this->custom as $field_id => $value) { + $v = is_array($value) ? serialize($value) : $value; + if (isset($this->custom_info[$field_id])) { + $wpdb->update($wpdb->prefix . 'swpm_form_builder_custom', array( + 'value' => $v + ), array('value_id' => $this->custom_info[$field_id]->value_id)); + } else { + $wpdb->insert($wpdb->prefix . 'swpm_form_builder_custom', array( + 'value' => $v, + 'user_id' => $this->member_id, + 'field_id' => $field_id + )); + } + } + } + +} diff --git a/classes/class.swpm-fb-form.php b/classes/class.swpm-fb-form.php new file mode 100644 index 0000000..0351fa9 --- /dev/null +++ b/classes/class.swpm-fb-form.php @@ -0,0 +1,483 @@ +fatal = array(); + $this->data = array(); + $this->member_info = new stdClass(); + $this->required_fields_count = 0; + parent::__construct(); + } + + public function init_by_id($form_id) { + if (BUtils::is_paid_registration()) { + $this->member_info = BUtils::get_paid_member_info(); + if (empty($this->member_info)) { + $form->error[] = BUtils::_('Error! Invalid Request. Could not find a match for the given security code and the user ID.'); + } else { + $membership_level = $this->member_info->membership_level; + } + } else { + $membership_level = BUtils::get_free_level(); + if (empty($membership_level)) { + $joinuspage_link = 'Join us'; + $this->fatal[] = BUtils::_('Free membership is disabled on this site. Please make a payment from the ' . $joinuspage_link . ' page to pay for a premium membership.'); + return; + } + } + $this->membership_level_info = BPermission::get_instance($membership_level); + $this->init($form_id); + } + + public function init_by_level_for_registration($membership_level) { + if (BUtils::is_paid_registration()) { + $this->member_info = BUtils::get_paid_member_info(); + if (empty($this->member_info)) { + $form->error[] = BUtils::_('Error! Invalid Request. Could not find a match for the given security code and the user ID.'); + } else { + $membership_level = $this->member_info->membership_level; + } + } + $this->membership_level_info = BPermission::get_instance($membership_level); + $level = $this->membership_level_info->get('id'); + + if (empty($level)) { + $joinuspage_link = 'Join us'; + $this->fatal[] = BUtils::_('Free membership is disabled on this site. Please make a payment from the ' . $joinuspage_link . ' page to pay for a premium membership.'); + return; + } + global $wpdb; + $query = $wpdb->prepare("SELECT form_id FROM {$wpdb->prefix}swpm_form_builder_forms WHERE form_type = 0 AND " + . " (form_membership_level = %d OR form_membership_level = 0 ) " + . " ORDER BY form_membership_level DESC", $level); + $form_id = $wpdb->get_var($query); + if (empty($form_id)) { + $this->fatal[] = BUtils::_('Error! Form not found.'); + return; + } + + $this->init($form_id); + } + + public function get_level_info($key) { + return $this->membership_level_info->get($key); + } + + public function init_by_level_for_profile() { + global $wpdb; + $auth = BAuth::get_instance(); + if (!$auth->is_logged_in()) { + $this->fatal[] = BUtils::_('Please login to edit profile.'); + } + + $membership_level = $auth->get('membership_level'); + $this->membership_level_info = BPermission::get_instance($membership_level); + $query = $wpdb->prepare("SELECT form_id FROM {$wpdb->prefix}swpm_form_builder_forms WHERE form_type = 1 AND " + . " (form_membership_level= %d OR form_membership_level=0 )" + . " ORDER BY form_membership_level DESC", $this->membership_level_info->get('id')); + $form_id = $wpdb->get_var($query); + parent::init($auth->get('member_id')); // load custom fields when editing profile. + if (empty($form_id)) { + $this->fatal[] = BUtils::_('Form Build Error! Form not found.'); + return; + } + $this->init($form_id); + $this->member_info = $auth->userData; + } + + public function init($form_id) { + $this->formmeta = new SwpmFbFormmeta(); + $this->formmeta->load($form_id, true); + return true; + } + + public function is_valid() { + if ($this->formmeta->type == SwpmFbForm::REGISTRATION && $this->required_fields_count != 3) { + return false; + } + return empty($this->error); + } + + public function get_field_value($field) { + if (isset($_POST['swpm-' . $field->id])) { + return $_POST['swpm-' . $field->id]; + } + $key = str_replace('-', '_', $field->key); + if ($this->formmeta->type == self::REGISTRATION) { + if ($key == 'membership_level') { + return $this->membership_level_info->get('id'); + } + return ''; + } + if ($this->formmeta->type == self::PROFILE) { + $id = $field->get_unique_value_id(); + if ($key == 'custom' && isset($this->custom_info[$id])) { + if ($field->type == 'address') { + return json_decode($this->custom_info[$id]->value, true); + } + return $this->custom_info[$id]->value; + } + if ($key == 'primary_address') { + $address = explode(',', $this->member_info->address_street); + return array('address' => $address[0], + 'address-2' => isset($address[1]) ? $address[1] : '', + 'city' => $this->member_info->address_city, + 'state' => $this->member_info->address_state, + 'zip' => $this->member_info->address_zipcode, + 'country' => $this->member_info->country + ); + } + if (isset($this->member_info->{$field->type})) { + return $this->member_info->{$field->type}; + } + if (isset($this->member_info->{$key})) { + return $this->member_info->{$key}; + } + } + return ''; + } + + public function process() { + if ($this->is_fatal()) { + return; // if already got fatal error. + } + // mandatory fields + foreach ($this->formmeta->fields as $field) { + $key = str_replace('-', '_', $field->key); + $type = str_replace('-', '_', $field->type); + if (method_exists($this, $key)) { + $this->$key($field); + } else if (method_exists($this, $type)) { + $this->$type($field); + } + } + if ($this->spam_score > self::SPAM_SENSITIVITY) { + $this->error["Spam Words"] = BUtils::_(' Information You submitted contains too many spam word. Cannot continue.'); + } + /* if ($this->is_valid()){ + $this->save(); + return true; + } + return false; */ + } + + private function password($meta) { + if ($this->formmeta->type == self::REGISTRATION) { + $this->required_fields_count += 1; + } + $value = filter_input(INPUT_POST, 'swpm-' . $meta->id); + if (empty($value)) { + if ($this->formmeta->type == self::PROFILE) { + return; + } + $this->error[$meta->id] = BUtils::_($meta->name . ' Field is required'); + return; + } + $value_re = filter_input(INPUT_POST, 'swpm-' . $meta->id . '_re'); + if ($value == $value_re) { + include_once(ABSPATH . WPINC . '/class-phpass.php'); + $wp_hasher = new PasswordHash(8, TRUE); + //$this->sanitized['plain_password'] = $password; + $this->data['password'] = $wp_hasher->HashPassword(trim($value)); + $this->data['plain_password'] = $value; + //$this->data['password'] = sanitize_text_field($value); + return; + } + $this->error[$meta->name] = BUtils::_($meta->name . ' Password doesn\'t match'); + } + + private function user_name($meta) { + $value = filter_input(INPUT_POST, 'swpm-' . $meta->id); + if ($this->formmeta->type == SwpmFbForm::REGISTRATION) { + if (empty($value)) { + $this->error[$meta->id] = BUtils::_($meta->name . ' Field is required'); + return; + } + if (preg_match("/^[a-zA-Z0-9!@#$%&*+\/=?^_`{|}~\.-]+$/", $value) === 0) { + $this->error[$meta->id] = BUtils::_($meta->name . ' Field has invalid character'); + return; + } + $this->required_fields_count += 1; + global $wpdb; + $query = $wpdb->prepare('SELECT 1 as yes FROM ' . $wpdb->prefix . 'swpm_members_tbl WHERE user_name=%s', $value); + + $exists = $wpdb->get_var($query); + if (!empty($exists)) { + $this->error[$meta->id] = $value . ' ' . BUtils::_('Already taken.'); + return; + } + $this->data['user_name'] = sanitize_text_field($value); + $this->spam_score += SwpmFbUtils::calculate_spam_score($value); + } + } + + private function first_name($meta) { + $value = filter_input(INPUT_POST, 'swpm-' . $meta->id); + if ($meta->required == 'yes' && empty($value)) { + $this->error[$meta->id] = BUtils::_($meta->name . ' Field is required'); + return; + } + $this->data['first_name'] = sanitize_text_field($value); + $this->spam_score += SwpmFbUtils::calculate_spam_score($value); + } + + private function last_name($meta) { + $value = filter_input(INPUT_POST, 'swpm-' . $meta->id); + if ($meta->required == 'yes' && empty($value)) { + $this->error[$meta->id] = BUtils::_($meta->name . ' Field is required'); + return; + } + $this->data['last_name'] = sanitize_text_field($value); + $this->spam_score += SwpmFbUtils::calculate_spam_score($value); + } + + private function gender($meta) { + $value = filter_input(INPUT_POST, 'swpm-' . $meta->id); + if ($meta->required == 'yes' && empty($value)) { + $this->error[$meta->id] = BUtils::_($meta->name . ' Field is required'); + return; + } + $this->data['gender'] = strtolower(wp_kses_data($value)); + $this->spam_score += SwpmFbUtils::calculate_spam_score($value); + } + + private function title($meta) { + $value = filter_input(INPUT_POST, 'swpm-' . $meta->id); + if ($meta->required == 'yes' && empty($value)) { + $this->error[$meta->id] = BUtils::_($meta->name . ' Field is required'); + return; + } + $this->data['title'] = strtolower(wp_kses_data($value)); + $this->spam_score += SwpmFbUtils::calculate_spam_score($value); + } + + private function primary_address($meta) { + if (isset($_POST['swpm-' . $meta->id])) { + $address = $_POST['swpm-' . $meta->id]; + $allowed_html = array('br' => array()); + $this->data['address_street'] = wp_kses($address['address'] . ', ' . $address['address-2'], $allowed_html); + $this->data['address_city'] = wp_kses($address['city'], $allowed_html); + $this->data['address_state'] = wp_kses($address['state'], $allowed_html); + $this->data['address_zipcode'] = wp_kses($address['zip'], $allowed_html); + $this->data['country'] = wp_kses($address['country'], $allowed_html); + //todo: spam score + } else if ($meta->required == 'yes') { + $this->error[$meta->id] = BUtils::_($meta->name . ' Field is required'); + } + } + + private function primary_phone($meta) { + $value = filter_input(INPUT_POST, 'swpm-' . $meta->id); + if ($meta->required == 'yes' && empty($value)) { + $this->error[$meta->id] = BUtils::_($meta->name . ' Field is required'); + return; + } + //todo: phone number format validation + $this->data['phone'] = wp_kses_data($value); + $this->spam_score += SwpmFbUtils::calculate_spam_score($value); + } + + private function primary_email($meta) { + if ($this->formmeta->type == self::REGISTRATION) { + $this->required_fields_count += 1; + } + $value = filter_input(INPUT_POST, 'swpm-' . $meta->id); + if (empty($value)) { + $this->error[$meta->id] = BUtils::_($meta->name . ' Field is required'); + return; + } + if (!is_email($value)) { + $this->error[$meta->id] = $value . ' ' . BUtils::_('Invalid email.'); + return; + } + + if ($this->formmeta->type == SwpmFbForm::PROFILE && $value == $this->member_info->email) { + return; // same email address. doesn't require storing in db again. + } + global $wpdb; + $query = $wpdb->prepare('SELECT email FROM ' . $wpdb->prefix . 'swpm_members_tbl WHERE email=%s', $value); + $exists = $wpdb->get_var($query); + if (!empty($exists)) { + $this->error[$meta->id] = $value . ' ' . BUtils::_('Already taken.'); + return; + } + $this->data['email'] = sanitize_email($value); + $this->spam_score += SwpmFbUtils::calculate_spam_score($value); + } + + private function membership_level($meta) { + if (!is_admin() && $this->formmeta->type == SwpmFbFormCustom::PROFILE) { + return; + } + if (BUtils::is_paid_registration()) { + return; + } + $free = BUtils::get_free_level(); + + if (empty($free)) { + return; + } + + $this->data['membership_level'] = $free; + } + + private function profile_image($meta) { + $value = ( isset($_FILES['swpm-' . $meta->id]) ) ? $_FILES['swpm-' . $meta->id] : ''; + if ($meta->required == 'yes') { + if ($this->formmeta->type == self::REGISTRATION && empty($value)) { + $this->error[$meta->id] = BUtils::_($meta->name . ' Field is required'); + return; + } + if ($this->formmeta->type == self::PROFILE && empty($value) && empty($this->member_info->profile_image)) { + $this->error[$meta->id] = BUtils::_($meta->name . ' Field is required'); + return; + } + } + + if (is_array($value) && $value['size'] > 0) { + $status = SwpmFbUtils::handle_file_upload($value); + if (isset($status['error'])) { + $this->error[$meta->id] = $status['error']; + return; + } + $this->data['profile_image'] = $status['attachment_id']; + if ($this->formmeta->type == self::PROFILE) { + //delete previously stored one. + wp_delete_attachment($this->member_info->profile_image, true); + } + } + } + + public function fatal($key = '', $value = '') { + if (empty($key)) { + return $this->fatal; + } + $this->fatal[$key] = $value; + } + + public function is_fatal() { + return !empty($this->fatal); + } + + public function save() { + global $wpdb; + + $account_status = BSettings::get_instance()->get_value('default-account-status', 'active'); + $auth = BAuth::get_instance(); + if ($this->formmeta->type == self::REGISTRATION) { + $plain_password = $this->data['plain_password']; + unset($this->data['plain_password']); + $this->data['account_state'] = $account_status; + if (isset($this->member_info->member_id)) { + $this->data['reg_code'] = ''; + $wpdb->update($wpdb->prefix . "swpm_members_tbl", $this->data, array('member_id' => $this->member_info->member_id)); + $user_id = $this->member_info->member_id; + } else { + $this->data['member_since'] = (date("Y-m-d")); + $this->data['subscription_starts'] = date("Y-m-d"); + $this->data['last_accessed_from_ip'] = BTransfer::get_real_ip_addr(); + $this->data['last_accessed'] = date("Y-m-d H:i:s"); + $wpdb->insert($wpdb->prefix . "swpm_members_tbl", $this->data); + $user_id = $wpdb->insert_id; + } + $query = "SELECT role FROM " . $wpdb->prefix . "swpm_membership_tbl WHERE id = " . $this->data['membership_level']; + $wp_user_info = array(); + $wp_user_info['user_nicename'] = implode('-', explode(' ', $this->data['user_name'])); + $wp_user_info['display_name'] = $this->data['user_name']; + $wp_user_info['user_email'] = $this->data['email']; + $wp_user_info['nickname'] = $this->data['user_name']; + $wp_user_info['first_name'] = $this->data['first_name']; + $wp_user_info['last_name'] = $this->data['last_name']; + $wp_user_info['user_login'] = $this->data['user_name']; + $wp_user_info['password'] = $plain_password; + $wp_user_info['role'] = $wpdb->get_var($query); + $wp_user_info['user_registered'] = date('Y-m-d H:i:s'); + BUtils::create_wp_user($wp_user_info); + $this->data['plain_password'] = $plain_password; + $this->send_reg_email(); + } else if (!$auth->is_logged_in()) { // must be profile edit/must be logged in. + return; + } + + if ($this->formmeta->type == self::PROFILE) { + $user_id = $auth->get('member_id'); + $plain_password = ''; + if (isset($this->data['plain_password'])) { + $plain_password = $this->data['plain_password']; + unset($this->data['plain_password']); + } + $wpdb->update($wpdb->prefix . "swpm_members_tbl", $this->data, array('member_id' => $user_id)); + $wp_data = $this->data; + if (!empty($plain_password)) { + $wp_data['plain_password'] = $plain_password; + } + Butils::update_wp_user($auth->get('user_name'), $wp_data); + + $wp_user = get_user_by('login', $auth->get('user_name')); + if ($wp_user) { + BUtils::update_wp_user_Role($wp_user->ID, $auth->get('role')); + } + } + parent::init($user_id); // load custom fields. + parent::save(); // save custom fields + } + + protected function send_reg_email() { + global $wpdb; + if (empty($this->data)) { + return false; + } + $member_info = $this->data; + $settings = BSettings::get_instance(); + $subject = empty($this->formmeta->notification_setting) ? + $settings->get_value('reg-complete-mail-subject') : stripslashes($this->formmeta->notification_subject); + + $body = empty($this->formmeta->notification_setting) ? + $settings->get_value('reg-complete-mail-body') : stripslashes(html_entity_decode(wp_kses_stripslashes(($this->formmeta->notification_message)))); + $from_address = empty($this->formmeta->notification_setting) ? + $settings->get_value('email-from') : stripslashes($this->formmeta->notification_email_name); + + $login_link = $settings->get_value('login-page-url'); + $headers = 'From: ' . $from_address . "\r\n"; + $headers .= "MIME-Version: 1.0\r\n"; + if (!empty($this->formmeta->notification_setting)) { + $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; + } + $query = "SELECT alias FROM " . $wpdb->prefix . "swpm_membership_tbl WHERE id = " . $member_info['membership_level']; + $member_info['membership_level_name'] = $wpdb->get_var($query); + $member_info['password'] = $member_info['plain_password']; + $member_info['login_link'] = $login_link; + $values = array_values($member_info); + $keys = array_map('swpm_enclose_var', array_keys($member_info)); + $body = str_replace($keys, $values, $body); + + $email = sanitize_email($this->formmeta->type == self::REGISTRATION ? $this->data['email'] : $this->member_info->email); +// if (!empty($this->formmeta->notification_setting)) { + wp_mail(trim($email), $subject, $body, $headers); +// } + if ($settings->get_value('enable-admin-notification-after-reg')) { + $subject = "Notification of New Member Registration"; + $body = "A new member has registered. The following email was sent to the member." . + "\n\n-------Member Email----------\n" . $body . + "\n\n------End------\n"; + wp_mail($from_address, $subject, $body, $headers); + } + return true; + } + +} diff --git a/classes/class.swpm-fb-formmeta.php b/classes/class.swpm-fb-formmeta.php new file mode 100644 index 0000000..9ae208c --- /dev/null +++ b/classes/class.swpm-fb-formmeta.php @@ -0,0 +1,138 @@ +error = array(); + $this->data = array(); + $this->custom = array(); + $this->table = $wpdb->prefix . 'swpm_form_builder_forms'; + $this->ftable = $wpdb->prefix . 'swpm_form_builder_fields'; + } + public function create(){ + + } + public function save(){ + global $wpdb; + $out = true; + $data = array( + 'form_key' => $this->key, + 'form_title' => $this->title, + 'form_type' => $this->type, + 'form_membership_level' => $this->for_level, + 'form_success_type' => $this->success_type, + 'form_success_message' => $this->success_message, + 'form_notification_email_name'=> $this->notification_email_name, + 'form_notification_subject'=> $this->notification_subject, + 'form_notification_message'=> $this->notification_message + ); + // todo: validate here + if (empty($this->id)){ + // Create the form + $out = $wpdb->insert($this->table, $data); + // Get form ID to add our first field + $this->id = $wpdb->insert_id; + for($i = 0; $i< count($this->fields); $i++){ + $field = $this->fields[$i]; + $field->form_id = $this->id; + //todo: set parent; + $field->save(); + } + } + else{ + $wpdb->update($this->table, $data, array('form_id'=>$this->id)); + for($i = 0; $i< count($this->fields); $i++){ + $field = $this->fields[$i]; + $field->form_id = $this->id; + //todo: set parent; + $field->save(); + } + } + return $out; + } + public function load($form_id, $load_fields=true){ + global $wpdb; + $query = $wpdb->prepare("SELECT + form_id AS id, + form_key AS _key, + form_title AS title, + form_type AS type, + form_membership_level AS for_level, + form_success_type AS success_type, + form_success_message AS success_message, + form_notification_setting AS notification_setting, + form_notification_email_name AS notification_email_name, + form_notification_subject AS notification_subject, + form_notification_message AS notification_message, + form_label_alignment AS label_alignment + FROM $this->table WHERE form_id=%d", $form_id); + $data = $wpdb->get_row($query); + foreach($data as $key=>$value){ + if ($key == '_key'){$this->key = $value; continue;} + $this->$key = $value; + } + if ($load_fields){ + $query = $wpdb->prepare( + "SELECT + field_id AS id, + form_id, + field_key AS _key, + field_type AS type, + field_options AS options, + field_description AS description, + field_name AS name, + field_sequence AS sequence, + field_parent AS parent, + field_validation AS validation, + field_required AS required, + field_size AS size, + field_css AS css, + field_layout AS layout, + field_default AS _default, + field_readonly As readonly, + field_adminonly AS adminonly, + reg_field_id AS reg_field_id + FROM $this->ftable WHERE form_id= %d ORDER BY field_sequence ASC", + $form_id + ); + $data = $wpdb->get_results($query); + foreach ($data as $field){ + $obj = new SwpmFbFieldmeta(); + $obj->load($field); + $this->fields[] = $obj; + } + } + } + public function validate(){ + + } + public static function get_registration_form_id_by_level($level){ + global $wpdb; + $query = $wpdb->prepare('SELECT form_id FROM ' . + $wpdb->prefix . 'swpm_form_builder_forms WHERE form_type = %d AND form_membership_level=%d', + SwpmFbFormCustom::REGISTRATION, $level + ); + + $form_id = $wpdb->get_var($query); + return $form_id; + } +} diff --git a/classes/class.swpm-fb-forms-list.php b/classes/class.swpm-fb-forms-list.php new file mode 100644 index 0000000..024e293 --- /dev/null +++ b/classes/class.swpm-fb-forms-list.php @@ -0,0 +1,421 @@ +field_table_name = $wpdb->prefix . 'swpm_form_builder_fields'; + $this->form_table_name = $wpdb->prefix . 'swpm_form_builder_forms'; + $this->multivalue_table_name = $wpdb->prefix . 'swpm_form_builder_multivalue'; + + // Set parent defaults + parent::__construct(array( + 'singular' => 'form', + 'plural' => 'forms', + 'ajax' => false + )); + + // Handle our bulk actions + $this->process_bulk_action(); + } + + /** + * Display column names + * + * @since 1.2 + * @returns $item string Column name + */ + function column_default($item, $column_name) { + global $wpdb; + switch ($column_name) { + case 'form_type': + return ($item[$column_name] == '0') ? __('Registration', 'swpm-form-builder') : __('Profile', 'swpm-form-builder'); + case 'form_membership_level': + if ($item[$column_name] == '0') + return __('All', 'swpm-form-builder'); + return $wpdb->get_var($wpdb->prepare("SELECT alias FROM " . $wpdb->prefix . "swpm_membership_tbl WHERE id =%d", $item[$column_name])); + case 'id': + case 'form_id' : + return $item[$column_name]; + } + } + + /** + * Builds the on:hover links for the Form column + * + * @since 1.2 + */ + function column_form_title($item) { + + $actions = array(); + + // Edit Form + $form_title = sprintf('%s', $_REQUEST['page'], $item['form_id'], $item['form_title']); + $actions['edit'] = sprintf('%s', $_REQUEST['page'], 'edit', $item['form_id'], __('Edit', 'swpm-form-builder')); + + // Duplicate Form + $actions['copy'] = sprintf('%s', wp_nonce_url(admin_url('admin.php?page=swpm-form-builder'), 'copy-form-' . $item['form_id']), 'copy_form', $item['form_id'], __('Duplicate', 'swpm-form-builder')); + + // Delete Form + $actions['delete'] = sprintf('%s', wp_nonce_url(admin_url('admin.php?page=swpm-form-builder'), 'delete-form-' . $item['form_id']), 'delete_form', $item['form_id'], __('Delete', 'swpm-form-builder')); + + return sprintf('%1$s %2$s', $form_title, $this->row_actions($actions)); + } + + /** + * Used for checkboxes and bulk editing + * + * @since 1.2 + */ + function column_cb($item) { + return sprintf('', $this->_args['singular'], $item['form_id']); + } + + /** + * Builds the actual columns + * + * @since 1.2 + */ + function get_columns() { + $columns = array( + 'cb' => '', //Render a checkbox instead of text + 'form_title' => __('Form', 'swpm-form-builder'), + 'form_id' => __('Form ID', 'swpm-form-builder'), + 'form_type' => __('Form Type', 'swpm-form-builder'), + 'form_membership_level' => __('For Membership Level', 'swpm-form-builder'), + ); + + return $columns; + } + + /** + * A custom function to get the entries and sort them + * + * @since 1.2 + * @returns array() $cols SQL results + */ + function get_forms($orderby = 'form_id', $order = 'ASC', $per_page, $offset = 0, $search = '') { + global $wpdb; + + // Set OFFSET for pagination + $offset = ( $offset > 0 ) ? "OFFSET $offset" : ''; + + $where = apply_filters('swpm_pre_get_forms', ''); + + // If the form filter dropdown is used + if ($this->current_filter_action()) + $where .= ' AND forms.form_id = ' . $this->current_filter_action(); + + $sql_order = sanitize_sql_orderby("$orderby $order"); + $cols = $wpdb->get_results("SELECT forms.form_id, forms.form_title, forms.form_type, forms.form_membership_level FROM " + . "$this->form_table_name AS forms WHERE 1=1 $where $search ORDER BY $sql_order LIMIT $per_page $offset", ARRAY_A); + return $cols; + } + + /** + * Build the different views for the entries screen + * + * @since 2.7.6 + * @returns array $status_links Status links with counts + */ + function get_views() { + $status_links = array(); + $num_forms = $this->get_forms_count(); + $class = ''; + $link = '?page=swpm-form-builder'; + + $stati = array( + 'all' => _n_noop('All (%s)', 'All (%s)'), + ); + + $entry_status = isset($_REQUEST['form_status']) ? $_REQUEST['form_status'] : 'all'; + + foreach ($stati as $status => $label) { + $class = ( $status == $entry_status ) ? ' class="current"' : ''; + + if (!isset($num_forms->$status)) + $num_forms->$status = 10; + + $link = add_query_arg('form_status', $status, $link); + + $status_links[$status] = "
  • " . sprintf( + translate_nooped_plural($label, $num_forms->$status), number_format_i18n($num_forms->$status) + ) . ''; + } + + return $status_links; + } + + /** + * Get the number of forms + * + * @since 2.2.7 + * @returns int $count Form count + */ + function get_forms_count() { + global $wpdb; + + $stats = array(); + + $count = $wpdb->get_var("SELECT COUNT(*) FROM $this->form_table_name"); + + $stats['all'] = $count; + + $stats = (object) $stats; + + return $stats; + } + + /** + * Setup which columns are sortable. Default is by Date. + * + * @since 1.2 + * @returns array() $sortable_columns Sortable columns + */ + function get_sortable_columns() { + $sortable_columns = array( + 'id' => array('id', false), + 'form_id' => array('form_id', false), + 'form_title' => array('form_title', true), + ); + + return $sortable_columns; + } + + /** + * Define our bulk actions + * + * @since 1.2 + * @returns array() $actions Bulk actions + */ + function get_bulk_actions() { + $actions = array(); + + // Build the row actions + $actions['delete'] = __('Delete Permanently', 'swpm-form-builder'); + + return $actions; + } + + /** + * Process ALL actions on the Entries screen, not only Bulk Actions + * + * @since 1.2 + */ + function process_bulk_action() { + global $wpdb; + + $form_id = ''; + + // Set the Entry ID array + if (isset($_REQUEST['form'])) { + if (is_array($_REQUEST['form'])) + $form_id = $_REQUEST['form']; + else + $form_id = (array) $_REQUEST['form']; + } + + switch ($this->current_action()) { + case 'trash' : + foreach ($form_id as $id) { + $id = absint($id); + $wpdb->update($this->form_table_name, array('form_approved' => 'trash'), array('form_id' => $id)); + } + break; + + case 'delete' : + foreach ($form_id as $id) { + $id = absint($id); + $wpdb->query($wpdb->prepare("DELETE FROM $this->form_table_name WHERE form_id = %d", $id)); + $wpdb->query($wpdb->prepare("DELETE FROM $this->field_table_name WHERE form_id = %d", $id)); + $wpdb->query($wpdb->prepare("DELETE FROM $this->entries_table_name WHERE form_id = %d", $id)); + } + break; + } + } + + /** + * Set our forms filter action + * + * @since 1.2 + * @returns int Form ID + */ + function current_filter_action() { + if (isset($_REQUEST['form-filter']) && -1 != $_REQUEST['form-filter']) + return $_REQUEST['form-filter']; + + return false; + } + + /** + * Display Search box + * + * @since 1.4 + * @returns html Search Form + */ + function search_box($text, $input_id) { + parent::search_box($text, $input_id); + } + + /** + * Prepares our data for display + * + * @since 1.2 + */ + function prepare_items() { + global $wpdb; + /* + // get the current user ID + $user = get_current_user_id(); + + // get the current admin screen + $screen = get_current_screen(); + + // retrieve the "per_page" option + $screen_option = $screen->get_option( 'per_page', 'option' ); + */ + // retrieve the value of the option stored for the current user + $per_page = 10; //get_user_meta( $user, $screen_option, true ); + // get the default value if none is set + if (empty($per_page) || $per_page < 1) + $per_page = $screen->get_option('per_page', 'default'); + + // Get the date/time format that is saved in the options table + $date_format = get_option('date_format'); + $time_format = get_option('time_format'); + + // What page are we looking at? + $current_page = $this->get_pagenum(); + + // Use offset for pagination + $offset = ( $current_page - 1 ) * $per_page; + + // Get column headers + $columns = $this->get_columns(); + $hidden = get_hidden_columns($this->screen); + + // Get sortable columns + $sortable = $this->get_sortable_columns(); + + // Build the column headers + $this->_column_headers = array($columns, $hidden, $sortable); + + // Get entries search terms + $search_terms = (!empty($_REQUEST['s']) ) ? explode(' ', $_REQUEST['s']) : array(); + + $searchand = $search = ''; + // Loop through search terms and build query + foreach ($search_terms as $term) { + $term = esc_sql(like_escape($term)); + + $search .= "{$searchand}((forms.form_title LIKE '%{$term}%') OR (forms.form_key LIKE '%{$term}%') OR (forms.form_email_subject LIKE '%{$term}%'))"; + $searchand = ' AND '; + } + + $search = (!empty($search) ) ? " AND ({$search}) " : ''; + + // Set our ORDER BY and ASC/DESC to sort the entries + $orderby = (!empty($_REQUEST['orderby']) ) ? $_REQUEST['orderby'] : 'form_id'; + $order = (!empty($_REQUEST['order']) ) ? $_REQUEST['order'] : 'desc'; + + // Get the sorted entries + $forms = $this->get_forms($orderby, $order, $per_page, $offset, $search); + + // How many forms do we have? + $total_items = $this->get_forms_count(); + + // Add sorted data to the items property + $this->items = (array) $forms; + + // Register our pagination + $this->set_pagination_args(array( + 'total_items' => $total_items->all, + 'per_page' => $per_page, + 'total_pages' => ceil($total_items->all / $per_page) + )); + } + + /** + * Display the pagination. + * Customize default function to work with months and form drop down filters + * + * @since 3.1.0 + * @access protected + */ + function pagination($which) { + + if (empty($this->_pagination_args)) + return; + + extract($this->_pagination_args, EXTR_SKIP); + + $output = '' . sprintf(_n('1 form', '%s forms', $total_items), number_format_i18n($total_items)) . ''; + + $current = $this->get_pagenum(); + + $current_url = ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + + $current_url = remove_query_arg(array('hotkeys_highlight_last', 'hotkeys_highlight_first'), $current_url); + + $page_links = array(); + + // Added to pick up the months dropdown + $m = isset($_REQUEST['m']) ? (int) $_REQUEST['m'] : 0; + + $disable_first = $disable_last = ''; + if ($current == 1) + $disable_first = ' disabled'; + if ($current == $total_pages) + $disable_last = ' disabled'; + + $page_links[] = sprintf("%s", 'first-page' . $disable_first, esc_attr__('Go to the first page'), esc_url(remove_query_arg('paged', $current_url)), '«' + ); + + // Modified the add_query_args to include my custom dropdowns + $page_links[] = sprintf("%s", 'prev-page' . $disable_first, esc_attr__('Go to the previous page'), esc_url(add_query_arg(array('paged' => max(1, $current - 1), 'm' => $m, 'form-filter' => $this->current_filter_action()), $current_url)), '‹' + ); + + if ('bottom' == $which) + $html_current_page = $current; + else + $html_current_page = sprintf("", esc_attr__('Current page'), $current, strlen($total_pages) + ); + + $html_total_pages = sprintf("%s", number_format_i18n($total_pages)); + $page_links[] = '' . sprintf(_x('%1$s of %2$s', 'paging'), $html_current_page, $html_total_pages) . ''; + + $page_links[] = sprintf("%s", 'next-page' . $disable_last, esc_attr__('Go to the next page'), esc_url(add_query_arg(array('paged' => min($total_pages, $current + 1), 'm' => $m, 'form-filter' => $this->current_filter_action()), $current_url)), '›' + ); + + // Modified the add_query_args to include my custom dropdowns + $page_links[] = sprintf("%s", 'last-page' . $disable_last, esc_attr__('Go to the last page'), esc_url(add_query_arg(array('paged' => $total_pages, 'm' => $m, 'form-filter' => $this->current_filter_action()), $current_url)), '»' + ); + + $pagination_links_class = 'pagination-links'; + if (!empty($infinite_scroll)) + $pagination_links_class = ' hide-if-js'; + $output .= "\n" . join("\n", $page_links) . ''; + + if ($total_pages) + $page_class = $total_pages < 2 ? ' one-page' : ''; + else + $page_class = ' no-pages'; + + $this->_pagination = "
    $output
    "; + + echo $this->_pagination; + } + +} diff --git a/classes/class.swpm-fb-installer.php b/classes/class.swpm-fb-installer.php new file mode 100644 index 0000000..3de8ae3 --- /dev/null +++ b/classes/class.swpm-fb-installer.php @@ -0,0 +1,73 @@ +prefix . 'swpm_form_builder_fields'; + $form_table = $wpdb->prefix . 'swpm_form_builder_forms'; + $custom_table = $wpdb->prefix . 'swpm_form_builder_custom'; + + // Explicitly set the character set and collation when creating the tables + $charset = ( defined('DB_CHARSET' && '' !== DB_CHARSET) ) ? DB_CHARSET : 'utf8'; + $collate = ( defined('DB_COLLATE' && '' !== DB_COLLATE) ) ? DB_COLLATE : 'utf8_general_ci'; + + require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); + + $field_sql = "CREATE TABLE $field_table ( + field_id BIGINT(20) NOT NULL AUTO_INCREMENT, + form_id BIGINT(20) NOT NULL, + field_key VARCHAR(255) NOT NULL, + field_type VARCHAR(25) NOT NULL, + field_options TEXT, + field_description TEXT, + field_name TEXT NOT NULL, + field_sequence BIGINT(20) DEFAULT '0', + field_parent BIGINT(20) DEFAULT '0', + field_validation VARCHAR(25), + field_required VARCHAR(25), + field_size VARCHAR(25) DEFAULT 'medium', + field_css VARCHAR(255), + field_layout VARCHAR(255), + field_default TEXT, + field_adminonly TINYINT DEFAULT 0, + field_readonly TINYINT DEFAULT 0, + reg_field_id BIGINT(20) NOT NULL DEFAULT 0, + PRIMARY KEY (field_id) + ) DEFAULT CHARACTER SET $charset COLLATE $collate;"; + + $form_sql = "CREATE TABLE $form_table ( + form_id BIGINT(20) NOT NULL AUTO_INCREMENT, + form_key TINYTEXT NOT NULL, + form_title TEXT NOT NULL, + form_type TINYINT DEFAULT 0, + form_membership_level INT DEFAULT 0, + form_success_type VARCHAR(25) DEFAULT 'text', + form_success_message TEXT, + form_notification_setting VARCHAR(25), + form_notification_email_name VARCHAR(255), + form_notification_subject VARCHAR(255), + form_notification_message TEXT, + form_label_alignment VARCHAR(25), + UNIQUE KEY form_unique_key_id (form_type,form_membership_level), + PRIMARY KEY (form_id) + ) DEFAULT CHARACTER SET $charset COLLATE $collate;"; + + $custom_sql = "CREATE TABLE $custom_table ( + value_id BIGINT(20) NOT NULL AUTO_INCREMENT, + field_id BIGINT(20) NOT NULL, + user_id INT NOT NULL, + value TEXT, + PRIMARY KEY (value_id) + ) DEFAULT CHARACTER SET $charset COLLATE $collate;"; + + // Create or Update database tables + dbDelta($field_sql); + dbDelta($form_sql); + dbDelta($custom_sql); + } +} diff --git a/classes/class.swpm-fb-profile-formmeta.php b/classes/class.swpm-fb-profile-formmeta.php new file mode 100644 index 0000000..e5581a8 --- /dev/null +++ b/classes/class.swpm-fb-profile-formmeta.php @@ -0,0 +1,18 @@ +id = null; // force to save it as new form. + $this->type = SwpmFbFormCustom::PROFILE; + $this->success_message = '

    ' . BUtils::_("Profile Updated.") . '

    '; + foreach($this->fields as &$value){ + $value->reg_field_id = $value->id; + $value->id = null; + } + return $this->save(); + } +} diff --git a/classes/class.swpm-fb-registration-formmeta.php b/classes/class.swpm-fb-registration-formmeta.php new file mode 100644 index 0000000..4d30a5c --- /dev/null +++ b/classes/class.swpm-fb-registration-formmeta.php @@ -0,0 +1,84 @@ +key = 'fieldset'; + $field->type = 'fieldset'; + $field->name = 'Fieldset'; + $field->sequence = 0; + $this->fields[$field->sequence] = $field; + + $field = new SwpmFbFieldmeta(); + $field->key = 'user_name'; + $field->type = 'text'; + $field->name = 'User Name'; + $field->description = 'User Name'; + $field->size = 'medium'; + $field->required = 'yes'; + $field->sequence = 1; + $this->fields[$field->sequence] = $field; + + $field = new SwpmFbFieldmeta(); + $field->key = 'password'; + $field->type = 'password'; + $field->name = 'Password'; + $field->description = 'Password'; + $field->size = 'medium'; + $field->required = 'yes'; + $field->sequence = 2; + $this->fields[$field->sequence] = $field; + + $field = new SwpmFbFieldmeta(); + $field->key = 'membership_level'; + $field->type = 'text'; + $field->name = 'Membership Level'; + $field->description = ''; + $field->size = 'medium'; + $field->required = 'yes'; + $field->readnly = 'yes'; + $field->sequence = 3; + $this->fields[$field->sequence] = $field; + + $field = new SwpmFbFieldmeta(); + $field->key = 'primary_email'; + $field->type = 'email'; + $field->name = 'Email'; + $field->description = 'Email'; + $field->size = 'medium'; + $field->required = 'yes'; + $field->sequence = 4; + $this->fields[$field->sequence] = $field; + $field = new SwpmFbFieldmeta(); + $field->key = 'verification'; + $field->type = 'verification'; + $field->name = 'Verification'; + $field->description = '(This is for preventing spam)'; + $field->sequence = 5; + $this->fields[$field->sequence] = $field; + + $field = new SwpmFbFieldmeta(); + $field->key = 'secret'; + $field->type = 'secret'; + $field->name = 'Please enter any two digits'; + $field->description = 'Example: 12'; + $field->size = 'medium'; + $field->required = 'yes'; + $field->sequence = 6; + $this->fields[$field->sequence] = $field; + $field = new SwpmFbFieldmeta(); + $field->key = 'submit'; + $field->type = 'submit'; + $field->name = 'Submit'; + $field->sequence = 7; + $this->fields[$field->sequence] = $field; + + $this->type = SwpmFbFormCustom::REGISTRATION; + $this->success_message = '

    ' . BUtils::_("Registration is complete") . '

    '; + return $this->save(); + } +} diff --git a/classes/class.swpm-fb-utils.php b/classes/class.swpm-fb-utils.php new file mode 100644 index 0000000..7a57801 --- /dev/null +++ b/classes/class.swpm-fb-utils.php @@ -0,0 +1,228 @@ +add_help_tab(array( + 'id' => 'swpm-help-tab-getting-started', + 'title' => 'Getting Started', + 'content' => '' + )); + + $screen->add_help_tab(array( + 'id' => 'swpm-help-tab-item-config', + 'title' => 'Form Item Configuration', + 'content' => "" + )); + + $screen->add_help_tab(array( + 'id' => 'swpm-help-tab-validation', + 'title' => 'Validation', + 'content' => "

    Visual Form Builder uses the jQuery Form Validation plugin to perform clientside form validation.

    + " + )); + + $screen->add_help_tab(array( + 'id' => 'swpm-help-tab-confirmation', + 'title' => 'Confirmation', + 'content' => "

    Each form allows you to customize the confirmation by selecing either a Text Message, a WordPress Page, or to Redirect to a URL.

    + " + )); + + $screen->add_help_tab(array( + 'id' => 'swpm-help-tab-notification', + 'title' => 'Notification', + 'content' => "

    Send a customized notification email to the user when the form has been successfully submitted.

    + " + )); + + $screen->add_help_tab(array( + 'id' => 'swpm-help-tab-tips', + 'title' => 'Tips', + 'content' => "" + )); + return $screen; + } + public static function is_mandatory_field($key){ + return in_array($key, array('user_name', 'primary_email', 'password', 'membership_level')); + } + public static function handle_file_upload($value, $destination = null){ + $status = array(); + // Settings - Max Upload Size + $settings_max_upload = 25; + if ( is_array( $value) && $value['size'] > 0 ) { + // 25MB is the max size allowed + $size = apply_filters( 'swpm_max_file_size', $settings_max_upload ); // change file size limit using filter. + $max_attach_size = $size * 1048576; + + // Display error if file size has been exceeded + if ( $value['size'] > $max_attach_size ){ + $status['error'] = sprintf( BUtils::_( "File size exceeds %dMB. Please decrease the file size and try again.", 'swpm-form-builder' ), $size ); + return $status; + } + + // Options array for the wp_handle_upload function. 'test_form' => false + $upload_overrides = array( 'test_form' => false ); + + // We need to include the file that runs the wp_handle_upload function + require_once( ABSPATH . 'wp-admin/includes/file.php' ); + + // Handle the upload using WP's wp_handle_upload function. Takes the posted file and an options array + $uploaded_file = wp_handle_upload( $value, $upload_overrides ); + + // If the wp_handle_upload call returned a local path for the image + if ( isset( $uploaded_file['file'] ) ) { + // Retrieve the file type from the file name. Returns an array with extension and mime type + $wp_filetype = wp_check_filetype( basename( $uploaded_file['file'] ), null ); + + // Return the current upload directory location + $wp_upload_dir = wp_upload_dir(); + + $media_upload = array( + 'guid' => $wp_upload_dir['url'] . '/' . basename( $uploaded_file['file'] ), + 'post_mime_type' => $wp_filetype['type'], + 'post_title' => preg_replace( '/\.[^.]+$/', '', basename( $uploaded_file['file'] ) ), + 'post_content' => '', + 'post_status' => 'inherit' + ); + + // Insert attachment into Media Library and get attachment ID + $attach_id = wp_insert_attachment( $media_upload, $uploaded_file['file'] ); + + // Include the file that runs wp_generate_attachment_metadata() + require_once( ABSPATH . 'wp-admin/includes/image.php' ); + require_once( ABSPATH . 'wp-admin/includes/media.php' ); + + // Setup attachment metadata + $attach_data = wp_generate_attachment_metadata( $attach_id, $uploaded_file['file'] ); + + // Update the attachment metadata + wp_update_attachment_metadata( $attach_id, $attach_data ); + + /*$attachments[ 'swpm-' . $field->id ] = $uploaded_file['file']; + + $data[] = array( + 'id' => $field->id, + 'slug' => $field->key, + 'name' => $field->name, + 'type' => $field->type, + 'options' => $field->options, + 'parent_id' => $field->parent, + 'value' => $uploaded_file['url'] + ); + + $body .= sprintf( + ' + %1$s: + %2$s + ' . "\n", + stripslashes( $field->name ), + $uploaded_file['url'] + );*/ + return array('attachment_id'=>$attach_id); + } + $status['error'] = BUtils::_('File not found.'); + }else{ + $status['error'] = BUtils::_('Invalid file.'); + } + return $status; + } +} diff --git a/classes/class.swpm-form-builder.php b/classes/class.swpm-form-builder.php new file mode 100644 index 0000000..48b7fd4 --- /dev/null +++ b/classes/class.swpm-form-builder.php @@ -0,0 +1,1357 @@ +field_table_name = $wpdb->prefix . 'swpm_form_builder_fields'; + $this->form_table_name = $wpdb->prefix . 'swpm_form_builder_forms'; + $this->custom_table_name = $wpdb->prefix . 'swpm_form_builder_custom'; + + if (class_exists('SimpleWpMembership')) { + // Add suffix to load dev files + $this->load_dev_files = ( defined('SWPMFB_SCRIPT_DEBUG') && SWPMFB_SCRIPT_DEBUG ) ? '' : '.min'; + + // Saving functions + add_action('admin_init', array(&$this, 'admin_init')); + + // Build options and settings pages. + add_action('admin_menu', array(&$this, 'admin_menu')); + + // Register AJAX functions + $actions = array( + // Form Builder + 'sort_field', + 'create_field', + 'delete_field', + 'form_settings', + // Media button + ); + + // Add all AJAX functions + foreach ($actions as $name) { + add_action("wp_ajax_swpm_form_builder_$name", array(&$this, "ajax_$name")); + } + + // Adds a Dashboard widget + //add_action('wp_dashboard_setup', array(&$this, 'add_dashboard_widget')); + // Adds a Settings link to the Plugins page + add_filter('plugin_action_links', array(&$this, 'plugin_action_links'), 10, 2); + + // Display update messages + add_action('admin_notices', array(&$this, 'admin_notices')); + + // Print meta keyword + add_action('wp_head', array(&$this, 'add_meta_keyword')); + + add_action('init', array(&$this, 'init'), 10); + + // Add CSS to the front-end + add_action('wp_enqueue_scripts', array(&$this, 'css')); + add_filter('swpm_registration_form_override', array(&$this, 'registration_override'), 10, 2); + add_filter('swpm_profile_form_override', array(&$this, 'profile_override')); + add_filter('swpm_admin_custom_fields', array(&$this, 'admin_profile_override'), 10, 2); + add_action('swpm_admin_edit_custom_fields', array(&$this, 'admin_save_custom_fields')); + } + } + + public function admin_save_custom_fields($member) { + $custom = new SwpmFbAdminCustomFields(); + $custom->init($member['membership_level']); + $custom->save($member['member_id']); + } + + public function admin_profile_override($output, $membership_level) { + $custom = new SwpmFbAdminCustomFields(); + $custom->init($membership_level); + return $custom->admin_ui(); + } + + public function profile_override($output = '') { + $this->form->init_by_level_for_profile(); + require( SWPM_FORM_BUILDER_PATH . 'includes/form-output.php' ); + return $output; + } + + public function registration_override($output, $membership_level) { + if ($membership_level == 1 || $membership_level == md5(1)) { + wp_die('Invalid membership level!'); + } + $this->form->init_by_level_for_registration($membership_level); + require( SWPM_FORM_BUILDER_PATH . 'includes/form-output.php' ); + return $output; + } + + public function admin_menu() { + $this->add_admin(); + $this->additional_plugin_setup(); + } + + public function admin_init() { + $this->save_add_new_form(); + $this->save_update_form(); + $this->save_trash_delete_form(); + $this->save_copy_form(); + $this->save_settings(); + } + + public function init() { + $this->form = new SwpmFbForm(); + $this->languages(); + $this->email(); + $this->confirmation(); + } + + /** + * Allow for additional plugin code to be run during admin_init + * which is not available during the plugin __construct() + * + * @since 2.7 + */ + public function additional_plugin_setup() { + + $page_main = $this->_admin_pages['swpm']; + + if (!get_option('swpm_dashboard_widget_options')) { + $widget_options['swpm_dashboard_recent_entries'] = array( + 'items' => 5, + ); + update_option('swpm_dashboard_widget_options', $widget_options); + } + } + + /** + * Output plugin version number to help with troubleshooting + * + * @since 2.7.5 + */ + public function add_meta_keyword() { + // Get global settings + $swpm_settings = get_option('swpm-settings'); + + // Settings - Disable meta tag version + $settings_meta = isset($swpm_settings['show-version']) ? '' : '' . "\n"; + + echo apply_filters('swpm_show_version', $settings_meta); + } + + /** + * Load localization file + * + * @since 2.7 + */ + public function languages() { + load_plugin_textdomain('swpm-form-builder', false, 'swpm-form-builder/languages'); + } + + public function include_forms_list() { + global $forms_list; + + // Load the Forms List class + require_once( SWPM_FORM_BUILDER_PATH . 'classes/class.swpm-fb-forms-list.php' ); + $forms_list = new SwpmFbFormsList(); + } + + /** + * Add Settings link to Plugins page + * + * @since 1.8 + * @return $links array Links to add to plugin name + */ + public function plugin_action_links($links, $file) { + if ($file == plugin_basename(__FILE__)) + $links[] = '' . __('Settings', 'swpm-form-builder') . ''; + + return $links; + } + + /** + * Adds the dashboard widget + * + * @since 2.7 + */ + public function add_dashboard_widget() { + wp_add_dashboard_widget('swpm-dashboard', __('Recent Visual Form Builder Entries', 'swpm-form-builder'), array(&$this, 'dashboard_widget'), array(&$this, 'dashboard_widget_control')); + } + + /** + * Displays the dashboard widget content + * + * @since 2.7 + */ + public function dashboard_widget() { + global $wpdb; + + // Get the date/time format that is saved in the options table + $date_format = get_option('date_format'); + $time_format = get_option('time_format'); + + $widgets = get_option('swpm_dashboard_widget_options'); + $total_items = isset($widgets['swpm_dashboard_recent_entries']) && isset($widgets['swpm_dashboard_recent_entries']['items']) ? + absint($widgets['swpm_dashboard_recent_entries']['items']) : 5; + + $forms = $wpdb->get_var("SELECT COUNT(*) FROM {$this->form_table_name}"); + + if (!$forms) : + echo sprintf( + '

    %1$s %3$s

    ', __('You currently do not have any forms.', 'swpm-form-builder'), esc_url(admin_url('admin.php?page=swpm-add-new')), __('Get started!', 'swpm-form-builder') + ); + + return; + endif; + + $entries = $wpdb->get_results($wpdb->prepare("SELECT forms.form_title, entries.entries_id, entries.form_id, " + . "entries.sender_name, entries.sender_email, entries.date_submitted FROM $this->form_table_name " + . "AS forms INNER JOIN $this->entries_table_name AS entries ON entries.form_id = forms.form_id ORDER BY " + . "entries.date_submitted DESC LIMIT %d", $total_items)); + + if (!$entries) : + echo sprintf('

    %1$s

    ', __('You currently do not have any entries.', 'swpm-form-builder')); + else : + + $content = ''; + + foreach ($entries as $entry) : + + $content .= sprintf( + '
  • %4$s via %5$s %6$s%3$s
  • ', esc_url(add_query_arg(array('action' => 'view', 'entry' => absint($entry->entries_id)), admin_url('admin.php?page=swpm-entries'))), esc_url(add_query_arg('form-filter', absint($entry->form_id), admin_url('admin.php?page=swpm-entries'))), esc_html($entry->sender_name), esc_html($entry->sender_email), esc_html($entry->form_title), date("$date_format $time_format", strtotime($entry->date_submitted)) + ); + + endforeach; + + echo "
    "; + + endif; + } + + /** + * Displays the dashboard widget form control + * + * @since 2.7 + */ + public function dashboard_widget_control() { + if (!$widget_options = get_option('swpm_dashboard_widget_options')) + $widget_options = array(); + + if (!isset($widget_options['swpm_dashboard_recent_entries'])) + $widget_options['swpm_dashboard_recent_entries'] = array(); + + if ('POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['swpm-widget-recent-entries'])) { + $number = absint($_POST['swpm-widget-recent-entries']['items']); + $widget_options['swpm_dashboard_recent_entries']['items'] = $number; + update_option('swpm_dashboard_widget_options', $widget_options); + } + + $number = isset($widget_options['swpm_dashboard_recent_entries']['items']) ? (int) $widget_options['swpm_dashboard_recent_entries']['items'] : ''; + + echo sprintf( + '

    + + +

    ', __('Number of entries to show:', 'swpm-form-builder'), $number + ); + } + + /** + * Register contextual help. This is for the Help tab dropdown + * + * @since 1.0 + */ + public function help() { + $screen = get_current_screen(); + SwpmFbUtils::help($screen); + } + + /** + * Adds the Screen Options tab to the Entries screen + * + * @since 1.0 + */ + public function screen_options() { + $screen = get_current_screen(); + + $page_main = $this->_admin_pages['swpm']; + + switch ($screen->id) { + case $page_main : + + if (isset($_REQUEST['form'])) : + add_screen_option('layout_columns', array( + 'max' => 2, + 'default' => 2 + )); + else : + add_screen_option('per_page', array( + 'label' => __('Forms per page', 'swpm-form-builder'), + 'default' => 20, + 'option' => 'swpm_forms_per_page' + )); + endif; + + break; + } + } + + /** + * Saves the Screen Options + * + * @since 1.0 + */ + public function save_screen_options($status, $option, $value) { + if ($option == 'swpm_forms_per_page') + return $value; + } + + /** + * Add meta boxes to form builder screen + * + * @since 1.8 + */ + public function add_meta_boxes() { + global $current_screen; + + $page_main = $this->_admin_pages['swpm']; + + if ($current_screen->id == $page_main && isset($_REQUEST['form'])) { + add_meta_box('swpm_form_items_meta_box', __('Form Items', 'swpm-form-builder'), array(&$this, 'meta_box_form_items'), $page_main, 'side', 'high'); + } + } + + /** + * Output for Form Items meta box + * + * @since 1.8 + */ + public function meta_box_form_items() { + include_once (SWPM_FORM_BUILDER_PATH . 'views/button_palette_metabox.php'); + } + + /** + * Queue plugin scripts for sorting form fields + * + * @since 1.0 + */ + public function admin_scripts() { + wp_enqueue_script('jquery-ui-sortable'); + wp_enqueue_script('postbox'); + wp_enqueue_script('jquery-form-validation', SWPM_FORM_BUILDER_URL . '/js/jquery.validate.min.js', array('jquery'), '1.9.0', true); + wp_enqueue_script('swpm-admin', SWPM_FORM_BUILDER_URL . "/js/swpm-admin$this->load_dev_files.js", array('jquery', 'jquery-form-validation'), '20140412', true); + wp_enqueue_script('nested-sortable', SWPM_FORM_BUILDER_URL . "/js/jquery.ui.nestedSortable$this->load_dev_files.js", array('jquery', 'jquery-ui-sortable'), '1.3.5', true); + + wp_enqueue_style('swpm-form-builder-style', SWPM_FORM_BUILDER_URL . "/css/swpm-form-builder-admin$this->load_dev_files.css", array(), '20140412'); + + wp_localize_script('swpm-admin', 'SwpmAdminPages', array('swpm_pages' => $this->_admin_pages)); + } + + /** + * Queue form validation scripts + * + * Scripts loaded in form-output.php, when field is present: + * jQuery UI date picker + * CKEditor + * + * @since 1.0 + */ + public function scripts() { + // Make sure scripts are only added once via shortcode + $this->add_scripts = true; + + wp_register_script('jquery-form-validation', SWPM_FORM_BUILDER_URL . '/js/jquery.validate.min.js', array('jquery'), '1.9.0', true); + wp_register_script('swpm-form-builder-validation', SWPM_FORM_BUILDER_URL . "/js/swpm-validation$this->load_dev_files.js", array('jquery', 'jquery-form-validation'), '20140412', true); + wp_register_script('swpm-form-builder-metadata', SWPM_FORM_BUILDER_URL . '/js/jquery.metadata.js', array('jquery', 'jquery-form-validation'), '2.0', true); + wp_register_script('swpm-ckeditor', SWPM_FORM_BUILDER_URL . '/js/ckeditor/ckeditor.js', array('jquery'), '4.1', true); + + wp_enqueue_script('jquery-form-validation'); + wp_enqueue_script('swpm-form-builder-validation'); + wp_enqueue_script('swpm-form-builder-metadata'); + + $locale = get_locale(); + $translations = array( + 'cs_CS', // Czech + 'de_DE', // German + 'el_GR', // Greek + 'en_US', // English (US) + 'en_AU', // English (AU) + 'en_GB', // English (GB) + 'es_ES', // Spanish + 'fr_FR', // French + 'he_IL', // Hebrew + 'hu_HU', // Hungarian + 'id_ID', // Indonseian + 'it_IT', // Italian + 'ja_JP', // Japanese + 'ko_KR', // Korean + 'nl_NL', // Dutch + 'pl_PL', // Polish + 'pt_BR', // Portuguese (Brazilian) + 'pt_PT', // Portuguese (European) + 'ro_RO', // Romanian + 'ru_RU', // Russian + 'sv_SE', // Swedish + 'tr_TR', // Turkish + 'zh_CN', // Chinese + 'zh_TW', // Chinese (Taiwan) + ); + + // Load localized vaidation and datepicker text, if translation files exist + if (in_array($locale, $translations)) { + wp_register_script('swpm-validation-i18n', SWPM_FORM_BUILDER_URL . "/js/i18n/validate/messages-$locale.js", array('jquery-form-validation'), '1.9.0', true); + wp_register_script('swpm-datepicker-i18n', SWPM_FORM_BUILDER_URL . "/js/i18n/datepicker/datepicker-$locale.js", array('jquery-ui-datepicker'), '1.0', true); + + wp_enqueue_script('swpm-validation-i18n'); + } + // Otherwise, load English translations + else { + wp_register_script('swpm-validation-i18n', SWPM_FORM_BUILDER_URL . "/js/i18n/validate/messages-en_US.js", array('jquery-form-validation'), '1.9.0', true); + wp_register_script('swpm-datepicker-i18n', SWPM_FORM_BUILDER_URL . "/js/i18n/datepicker/datepicker-en_US.js", array('jquery-ui-datepicker'), '1.0', true); + + wp_enqueue_script('swpm-validation-i18n'); + } + } + + /** + * Add form CSS to wp_head + * + * @since 1.0 + */ + public function css() { + $swpm_settings = get_option('swpm-settings'); + wp_register_style('swpm-jqueryui-css', apply_filters('swpm-date-picker-css', SWPM_FORM_BUILDER_URL . '/css/smoothness/jquery-ui-1.10.3.min.css'), array(), '20131203'); + wp_register_style('swpm-form-builder-css', apply_filters('swpm-form-builder-css', SWPM_FORM_BUILDER_URL . "/css/swpm-form-builder$this->load_dev_files.css"), array(), '20140412'); + + // Settings - Always load CSS + //if (isset($swpm_settings['always-load-css'])) { + wp_enqueue_style('swpm-form-builder-css'); + wp_enqueue_style('swpm-jqueryui-css'); + return; + //} + // Settings - Disable CSS + if (isset($swpm_settings['disable-css'])) + return; + + // Get active widgets + $widget = is_active_widget(false, false, 'swpm_widget'); + + // If no widget is found, test for shortcode + if (empty($widget)) { + // If WordPress 3.6, use internal function. Otherwise, my own + if (function_exists('has_shortcode')) { + global $post; + + // If no post exists, exit + if (!$post) + return; + + if (!has_shortcode($post->post_content, 'swpm')) + return; + } elseif (!$this->has_shortcode('swpm')) { + return; + } + } + + wp_enqueue_style('swpm-form-builder-css'); + wp_enqueue_style('swpm-jqueryui-css'); + } + + /** + * Save new forms on the VFB Pro > Add New page + * + * @access public + * @since 2.8.1 + * @return void + */ + public function save_add_new_form() { + $page = filter_input(INPUT_GET, 'page'); + $action = filter_input(INPUT_POST, 'action'); + + if ('swpm-form-builder' !== $page || 'create_form' !== $action) { + return; + } + $level = absint(filter_input(INPUT_POST, 'form_for_level')); + $type = absint(filter_input(INPUT_POST, 'form_type')); + check_admin_referer('create_form'); + if ($type == SwpmFbFormCustom::REGISTRATION) { + $form = new SwpmFbRegistrationFormmeta(); + } else if ($type == SwpmFbFormCustom::PROFILE) { + $form = new SwpmFbProfileFormmeta(); + $reg_form_id = SwpmFbFormmeta::get_registration_form_id_by_level($level); + if (empty($reg_form_id)) { + return; + } + $form->load($reg_form_id); + } + + $form->key = sanitize_title(filter_input(INPUT_POST, 'form_title')); + $form->title = esc_html(filter_input(INPUT_POST, 'form_title')); + $form->for_level = $level; + $success = $form->create(); + // Redirect to keep the URL clean (use AJAX in the future?) + if ($success) { + wp_redirect('admin.php?page=swpm-form-builder&action=edit&form=' . $form->id); + exit(); + } + } + + private function get_submitted_form_definition(&$form_id) { + $form_id = absint($_REQUEST['form_id']); + $form_key = sanitize_title($_REQUEST['form_title'], $form_id); + $form_title = $_REQUEST['form_title']; + + $form_notification_message = isset($_REQUEST['form_notification_message']) ? wp_richedit_pre($_REQUEST['form_notification_message']) : ''; + $form_notification_subject = isset($_REQUEST['form_notification_subject']) ? $_REQUEST['form_notification_subject'] : ''; + $form_notification_email_name = isset($_REQUEST['form_notification_email_name']) ? $_REQUEST['form_notification_email_name'] : ''; + $form_notification_setting = isset($_REQUEST['form_notification_setting']) ? $_REQUEST['form_notification_setting'] : ''; + $form_success_type = $_REQUEST['form_success_type']; + $form_label_alignment = $_REQUEST['form_label_alignment']; + + // Add confirmation based on which type was selected + switch ($form_success_type) { + case 'text' : + $form_success_message = wp_richedit_pre($_REQUEST['form_success_message_text']); + break; + case 'page' : + $form_success_message = $_REQUEST['form_success_message_page']; + break; + case 'redirect' : + $form_success_message = $_REQUEST['form_success_message_redirect']; + break; + } + + return array( + 'form_key' => $form_key, + 'form_title' => $form_title, + 'form_success_type' => $form_success_type, + 'form_success_message' => $form_success_message, + 'form_notification_setting' => $form_notification_setting, + 'form_notification_email_name' => $form_notification_email_name, + 'form_notification_subject' => $form_notification_subject, + 'form_notification_message' => $form_notification_message, + 'form_label_alignment' => $form_label_alignment + ); + } + + private function get_submitted_field_details($id) { + $id = absint($id); + + $field_name = ( isset($_REQUEST['field_name-' . $id]) ) ? trim($_REQUEST['field_name-' . $id]) : ''; + //$field_key = sanitize_key(sanitize_title($field_name, $id)); + $field_desc = ( isset($_REQUEST['field_description-' . $id]) ) ? trim($_REQUEST['field_description-' . $id]) : ''; + $field_options = ( isset($_REQUEST['field_options-' . $id]) ) ? serialize(array_map('trim', $_REQUEST['field_options-' . $id])) : ''; + $field_validation = ( isset($_REQUEST['field_validation-' . $id]) ) ? $_REQUEST['field_validation-' . $id] : ''; + $field_required = ( isset($_REQUEST['field_required-' . $id]) ) ? $_REQUEST['field_required-' . $id] : ''; + $field_size = ( isset($_REQUEST['field_size-' . $id]) ) ? $_REQUEST['field_size-' . $id] : ''; + $field_css = ( isset($_REQUEST['field_css-' . $id]) ) ? $_REQUEST['field_css-' . $id] : ''; + $field_layout = ( isset($_REQUEST['field_layout-' . $id]) ) ? $_REQUEST['field_layout-' . $id] : ''; + $field_default = ( isset($_REQUEST['field_default-' . $id]) ) ? trim($_REQUEST['field_default-' . $id]) : ''; + + return array( + 'field_name' => $field_name, + 'field_description' => $field_desc, + 'field_options' => $field_options, + 'field_validation' => $field_validation, + 'field_required' => $field_required, + 'field_size' => $field_size, + 'field_css' => $field_css, + 'field_layout' => $field_layout, + 'field_default' => $field_default + ); + } + + /** + * Save the form + * + * @access public + * @since 2.8.1 + * @return void + */ + public function save_update_form() { + global $wpdb; + $page = filter_input(INPUT_GET, 'page'); + $action = filter_input(INPUT_POST, 'action'); + if (empty($page) || empty($action)) + return; + + if ('swpm-form-builder' !== $page) + return; + + if ('update_form' !== $_REQUEST['action']) + return; + + check_admin_referer('swpm_update_form'); + + $form_id = 0; + $form_data = $this->get_submitted_form_definition($form_id); + + $where = array('form_id' => $form_id); + + // Update form details + $wpdb->update($this->form_table_name, $form_data, $where); + + $field_ids = array(); + + // Get max post vars, if available. Otherwise set to 1000 + $max_post_vars = ( ini_get('max_input_vars') ) ? intval(ini_get('max_input_vars')) : 1000; + + // Set a message to be displayed if we've reached a limit + if (count($_POST, COUNT_RECURSIVE) > $max_post_vars) + $this->post_max_vars = true; + + foreach ($_REQUEST['field_id'] as $fields) : + $field_ids[] = $fields; + endforeach; + + // Initialize field sequence + $field_sequence = 0; + $query = $wpdb->prepare("SELECT form_id FROM $this->form_table_name WHERE form_type= 1 AND `form_membership_level` = " + . " (SELECT `form_membership_level` FROM $this->form_table_name WHERE `form_id` = %d)", $form_id); + $edit_form = $wpdb->get_var($query); + + // Loop through each field and update + foreach ($field_ids as $id) : + $field_data = $this->get_submitted_field_details($id); + + $where = array( + 'form_id' => $form_id, + 'field_id' => $id + ); + + + if (!empty($edit_form)) { + $form_data['form_id'] = $edit_form; + $this->create_field($field_data, $id); + } + // Update all fields + + $wpdb->update($this->field_table_name, $field_data, $where); + + $field_sequence++; + endforeach; + } + + /** + * Handle trashing and deleting forms + * + * This is a placeholder function since all processing is handled in includes/class-forms-list.php + * + * @access public + * @since 2.8.1 + * @return void + */ + public function save_trash_delete_form() { + global $wpdb; + + if (!isset($_REQUEST['action']) || !isset($_GET['page'])) + return; + + if ('swpm-form-builder' !== $_GET['page']) + return; + + if ('delete_form' !== $_REQUEST['action']) + return; + + $id = absint($_REQUEST['form']); + + check_admin_referer('delete-form-' . $id); + + // Delete form and all fields + $wpdb->query($wpdb->prepare("DELETE FROM $this->form_table_name WHERE form_id = %d", $id)); + $wpdb->query($wpdb->prepare("DELETE FROM $this->field_table_name WHERE form_id = %d", $id)); + + // Redirect to keep the URL clean (use AJAX in the future?) + wp_redirect(add_query_arg('action', 'deleted', 'admin.php?page=swpm-form-builder')); + exit(); + } + + /** + * Handle form duplication + * + * @access public + * @since 2.8.1 + * @return void + */ + public function save_copy_form() { + global $wpdb; + + if (!isset($_REQUEST['action']) || !isset($_GET['page'])) + return; + + if ('swpm-form-builder' !== $_GET['page']) + return; + + if ('copy_form' !== $_REQUEST['action']) + return; + + $id = absint($_REQUEST['form']); + + check_admin_referer('copy-form-' . $id); + + // Get all fields and data for the request form + $fields = $wpdb->get_results($wpdb->prepare("SELECT * FROM $this->field_table_name WHERE form_id = %d", $id)); + $forms = $wpdb->get_results($wpdb->prepare("SELECT * FROM $this->form_table_name WHERE form_id = %d", $id)); + $override = $wpdb->get_var($wpdb->prepare("SELECT form_email_from_override, form_email_from_name_override, " + . "form_notification_email FROM $this->form_table_name WHERE form_id = %d", $id)); + $from_name = $wpdb->get_var(null, 1); + $notify = $wpdb->get_var(null, 2); + + // Copy this form and force the initial title to denote a copy + foreach ($forms as $form) { + $data = (array) $form; + $data['form_key'] = sanitize_title($form->form_key . ' copy'); + $data['form_title'] = form_title . ' Copy'; + $wpdb->insert($this->form_table_name, $data); + } + + // Get form ID to add our first field + $new_form_selected = $wpdb->insert_id; + + // Copy each field and data + foreach ($fields as $field) { + $data = (array) $field; + $data['form_id'] = $new_form_selected; + $wpdb->insert($this->field_table_name, $data); + + // If a parent field, save the old ID and the new ID to update new parent ID + if (in_array($field->field_type, array('fieldset', 'section', 'verification'))) + $parents[$field->field_id] = $wpdb->insert_id; + + if ($override == $field->field_id) + $wpdb->update($this->form_table_name, array('form_email_from_override' => $wpdb->insert_id), array('form_id' => $new_form_selected)); + + if ($from_name == $field->field_id) + $wpdb->update($this->form_table_name, array('form_email_from_name_override' => $wpdb->insert_id), array('form_id' => $new_form_selected)); + + if ($notify == $field->field_id) + $wpdb->update($this->form_table_name, array('form_notification_email' => $wpdb->insert_id), array('form_id' => $new_form_selected)); + } + + // Loop through our parents and update them to their new IDs + foreach ($parents as $k => $v) { + $wpdb->update($this->field_table_name, array('field_parent' => $v), array('form_id' => $new_form_selected, 'field_parent' => $k)); + } + } + + /** + * Save options on the VFB Pro > Settings page + * + * @access public + * @since 2.8.1 + * @return void + */ + public function save_settings() { + + if (!isset($_REQUEST['action']) || !isset($_GET['page'])) + return; + + if ('swpm-settings' !== $_GET['page']) + return; + + if ('swpm_settings' !== $_REQUEST['action']) + return; + + check_admin_referer('swpm-update-settings'); + + $data = array(); + + foreach ($_POST['swpm-settings'] as $key => $val) { + $data[$key] = esc_html($val); + } + + update_option('swpm-settings', $data); + } + + /** + * The jQuery field sorting callback + * + * @since 1.0 + */ + public function ajax_sort_field() { + global $wpdb; + + $data = array(); + + foreach ($_REQUEST['order'] as $k) : + if ('root' !== $k['item_id'] && !empty($k['item_id'])) : + $data[] = array( + 'field_id' => $k['item_id'], + 'parent' => $k['parent_id'] + ); + endif; + endforeach; + + foreach ($data as $k => $v) : + // Update each field with it's new sequence and parent ID + $wpdb->update($this->field_table_name, array( + 'field_sequence' => $k, + 'field_parent' => $v['parent']), array('field_id' => $v['field_id']), '%d' + ); + endforeach; + + die(1); + } + + /** + * The jQuery create field callback + * + * @since 1.9 + */ + public function ajax_create_field() { + global $wpdb; + + $data = array(); + $field_options = $field_validation = ''; + + foreach ($_REQUEST['data'] as $k) { + $data[$k['name']] = $k['value']; + } + + check_ajax_referer('create-field-' . $data['form_id'], 'nonce'); + + $form_id = absint($data['form_id']); + $field_key = esc_html($_REQUEST['field_key']); + $field_name = esc_html(str_replace('_', ' ', $field_key)); + $field_type = strtolower(sanitize_title($_REQUEST['field_type'])); + $field_description = str_replace('_', ' ', $field_key); + + // Set defaults for validation + switch ($field_type) { + case 'select' : + if ($field_key == 'gender') { + $field_options = serialize(array('male' => 'Male', 'female' => 'Female', 'not specified' => 'Not Specified')); + } else if ($field_key == 'title') { + $field_options = serialize(array('mr' => 'Mr', 'mrs' => 'Mrs', 'ms' => 'Ms', 'dr' => 'Dr', 'not specified' => 'Not Specified')); + } else { + $field_options = serialize(array('Option 1', 'Option 2', 'Option 3')); + } + break; + case 'radio' : + case 'checkbox' : + $field_options = serialize(array('Option 1', 'Option 2', 'Option 3')); + break; + case 'email' : + case 'url' : + case 'phone' : + $field_validation = $field_type; + break; + + case 'currency' : + $field_validation = 'number'; + break; + + case 'number' : + $field_validation = 'digits'; + break; + + case 'time' : + $field_validation = 'time-12'; + break; + + case 'file-upload' : + $field_options = serialize(array('png|jpe?g|gif')); + break; + } + + $newdata = array( + 'form_id' => $form_id, + 'field_key' => $field_key, + 'field_name' => $field_name, + 'field_type' => $field_type, + 'field_options' => $field_options, + 'field_validation' => $field_validation, + 'field_description' => $field_description + ); + + $insert_id = $this->create_field($newdata); + + $query = $wpdb->prepare("SELECT form_id FROM $this->form_table_name WHERE form_type= 1 AND `form_membership_level` = " + . " (SELECT `form_membership_level` FROM $this->form_table_name WHERE form_type= 0 AND `form_id` = %d)", $form_id); + $edit_form = $wpdb->get_var($query); + if (!empty($edit_form)) { + $newdata['form_id'] = $edit_form; + $this->create_field($newdata, $insert_id); + } + + echo $this->field_output($form_id, $insert_id); + + die(1); + } + + private function create_field($form_data, $reg_field_id = 0) { + global $wpdb; + $form_id = $form_data['form_id']; + $insert_id = 0; + if (!empty($reg_field_id)) { + $form_data['reg_field_id'] = $reg_field_id; + $query = $wpdb->prepare("SELECT field_id FROM $this->field_table_name WHERE reg_field_id = %d", $reg_field_id); + $insert_id = $wpdb->get_var($query); + } + + if (!empty($insert_id)) { + $wpdb->update($this->field_table_name, $form_data, array('field_id' => $insert_id)); + } else { + // Get the last row's sequence that isn't a Verification + $sequence_last_row = $wpdb->get_var( + $wpdb->prepare( + "SELECT field_sequence FROM $this->field_table_name WHERE form_id = %d AND field_type = 'verification' ORDER BY field_sequence DESC LIMIT 1", $form_id)); + + // If it's not the first for this form, add 1 + $field_sequence = (!empty($sequence_last_row) ) ? $sequence_last_row : 0; + $form_data['field_sequence'] = $field_sequence; + // Create the field + $wpdb->insert($this->field_table_name, $form_data); + $insert_id = $wpdb->insert_id; + // VIP fields + $vip_fields = array('verification', 'secret', 'submit'); + + // Move the VIPs + foreach ($vip_fields as $update) { + $field_sequence++; + $where = array('form_id' => absint($form_id), 'field_type' => $update); + $wpdb->update($this->field_table_name, array('field_sequence' => $field_sequence), $where); + } + } + + return $insert_id; + } + + /** + * The jQuery delete field callback + * + * @since 1.9 + */ + public function ajax_delete_field() { + global $wpdb; + + if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'swpm_form_builder_delete_field') { + $form_id = absint($_REQUEST['form']); + $field_id = absint($_REQUEST['field']); + + check_ajax_referer('delete-field-' . $form_id, 'nonce'); + + $field_key = $wpdb->get_var($wpdb->prepare("SELECT field_key FROM $this->field_table_name WHERE field_id=%d", $field_id)); + if (SwpmFbUtils::is_mandatory_field($field_key)) { + die('0'); // don't delete required fields + } + if (isset($_REQUEST['child_ids'])) { + foreach ($_REQUEST['child_ids'] as $children) { + $parent = absint($_REQUEST['parent_id']); + + // Update each child item with the new parent ID + $wpdb->update($this->field_table_name, array('field_parent' => $parent), array('field_id' => $children)); + } + } + + // Delete the field + $wpdb->query($wpdb->prepare("DELETE FROM $this->field_table_name WHERE field_id = %d", $field_id)); + } + + die(1); + } + + /** + * The jQuery form settings callback + * + * @since 2.2 + */ + public function ajax_form_settings() { + global $current_user; + get_currentuserinfo(); + + if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'swpm_form_builder_form_settings') { + $form_id = absint($_REQUEST['form']); + $status = isset($_REQUEST['status']) ? $_REQUEST['status'] : 'opened'; + $accordion = isset($_REQUEST['accordion']) ? $_REQUEST['accordion'] : 'general-settings'; + $user_id = $current_user->ID; + + $form_settings = get_user_meta($user_id, 'swpm-form-settings', true); + + $array = array( + 'form_setting_tab' => $status, + 'setting_accordion' => $accordion + ); + + // Set defaults if meta key doesn't exist + if (!$form_settings || $form_settings == '') { + $meta_value[$form_id] = $array; + + update_user_meta($user_id, 'swpm-form-settings', $meta_value); + } else { + $form_settings[$form_id] = $array; + + update_user_meta($user_id, 'swpm-form-settings', $form_settings); + } + } + + die(1); + } + + /** + * All Forms output in admin + * + * @since 2.5 + */ + public function all_forms() { + $searched = isset($_REQUEST['s']) && !empty($_REQUEST['s']) ? true : false; + global $wpdb, $forms_list; + require( SWPM_FORM_BUILDER_PATH . 'views/all_forms.php' ); + } + + /** + * Build field output in admin + * + * @since 1.9 + */ + public function field_output($form_nav_selected_id, $field_id = NULL) { + require( SWPM_FORM_BUILDER_PATH . 'includes/admin-field-options.php' ); + } + + /** + * Display admin notices + * + * @since 1.0 + */ + public function admin_notices() { + if (!isset($_REQUEST['action']) || !isset($_GET['page'])) + return; + + if (!in_array($_GET['page'], array('swpm-form-builder', + 'swpm-add-new', + 'swpm-email-design', + 'swpm-reports', + 'swpm-settings'))) + return; + + switch ($_REQUEST['action']) { + case 'create_form' : + echo '

    ' . + __('Error! Combination of membership level and form type must be unique.', 'swpm-form-builder') . '

    '; + $form_type = absint(filter_input(INPUT_POST, 'form_type')); + if ($form_type == SwpmFbFormCustom::PROFILE) { + echo '

    ' . __('You must create a registration form before creating edit profile form.', 'swpm-form-builder') . '

    '; + } + echo '
    '; + break; + + case 'update_form' : + echo '

    ' . + __('Form updated.', 'swpm-form-builder') . '

    '; + + if ($this->post_max_vars) : + // Get max post vars, if available. Otherwise set to 1000 + $max_post_vars = ( ini_get('max_input_vars') ) ? intval(ini_get('max_input_vars')) : 1000; + + echo '

    ' . + sprintf(__('Error saving form. The maximum amount of data allowed by your server has been reached. ' + . 'Please update max_input_vars in your php.ini ' + . 'file to allow more data to be saved. Current limit is %d', 'swpm-form-builder'), 'http://www.php.net/manual/en/info.configuration.php#ini.max-input-vars', $max_post_vars) . '

    '; + endif; + break; + + case 'deleted' : + echo '

    ' . + __('Item permanently deleted.', 'swpm-form-builder') . '

    '; + break; + + case 'copy_form' : + echo '

    ' . + __('Item successfully duplicated.', 'swpm-form-builder') . '

    '; + break; + + case 'swpm_settings' : + echo sprintf('

    %s

    ', __('Settings saved.', 'swpm-form-builder')); + break; + } + } + + /** + * Add options page to Settings menu + * + * + * @since 1.0 + * @uses add_options_page() Creates a menu item under the Settings menu. + */ + public function add_admin() { + $current_pages = array(); + + $current_pages['swpm'] = add_submenu_page('simple_wp_membership', __('Form Builder', 'swpm-form-builder'), __('Form Builder', 'swpm-form-builder'), 'manage_options', 'swpm-form-builder', array(&$this, 'admin')); + // All plugin page load hooks + foreach ($current_pages as $key => $page) { + // Load the jQuery and CSS we need if we're on our plugin page + add_action("load-$page", array(&$this, 'admin_scripts')); + + // Load the Help tab on all pages + add_action("load-$page", array(&$this, 'help')); + } + // Save pages array for filter/action use throughout plugin + $this->_admin_pages = $current_pages; + + // Adds a Screen Options tab to the Entries screen + add_action('load-' . $current_pages['swpm'], array(&$this, 'screen_options')); + + // Add meta boxes to the form builder admin page + add_action('load-' . $current_pages['swpm'], array(&$this, 'add_meta_boxes')); + + add_action('load-' . $current_pages['swpm'], array(&$this, 'include_forms_list')); + } + + /** + * Display Add New Form page + * + * + * @since 2.7.2 + */ + public function admin_add_new() { + ?> +
    +

    + +
    + +
    +

    + +
    +

    '; + BUtils::e('Simple Membership Form Builder'); + echo '

    '; + // Save current user ID + $user_id = $current_user->ID; + $current_tab = empty($action) ? '' : $action; + $tabs = array('' => "Form List", 'add' => 'New Form', 'license' => 'Product License'); + echo ''; + switch ($action) { + case 'add': + $this->admin_add_new(); + break; + case 'license': + $this->admin_license_menu(); + break; + case 'edit': + default: + $form_nav_selected_id = filter_input(INPUT_GET, 'form'); + if (empty($form_nav_selected_id) || $form_nav_selected_id == 0) { + $this->all_forms(); + } else { + include_once( SWPM_FORM_BUILDER_PATH . 'includes/admin-form-creator.php' ); + } + break; + } + echo ''; + } + + /** + * Handle confirmation when form is submitted + * + * @since 1.3 + */ + function confirmation() { + global $wpdb; + + $form_id = ( isset($_REQUEST['form_id']) ) ? (int) esc_html($_REQUEST['form_id']) : ''; + + if (!isset($_REQUEST['swpm-submit'])) + return; + if ($this->form->is_fatal() || !$this->form->is_valid()) { + return; + } + + // Get forms + $order = sanitize_sql_orderby('form_id DESC'); + $forms = $wpdb->get_results($wpdb->prepare("SELECT * FROM $this->form_table_name WHERE form_id = %d ORDER BY $order", $form_id)); + + foreach ($forms as $form) : + // If text, return output and format the HTML for display + if ('text' == $form->form_success_type) { + return stripslashes(html_entity_decode(wp_kses_stripslashes($form->form_success_message))); + }// If page, redirect to the permalink + elseif ('page' == $form->form_success_type) { + $page = get_permalink($form->form_success_message); + wp_redirect($page); + exit(); + } + // If redirect, redirect to the URL + elseif ('redirect' == $form->form_success_type) { + wp_redirect(esc_url($form->form_success_message)); + exit(); + } + endforeach; + } + + /** + * Handle emailing the content + * + * @since 1.0 + * @uses wp_mail() E-mails a message + */ + public function email() { + require( SWPM_FORM_BUILDER_PATH . 'includes/email.php' ); + } + + /** + * Make sure the User Agent string is not a SPAM bot + * + * @since 1.3 + */ + public function isBot() { + $bots = apply_filters('swpm_blocked_spam_bots', array( + '<', '>', '<', '%0A', '%0D', '%27', '%3C', '%3E', '%00', 'href', + 'binlar', 'casper', 'cmsworldmap', 'comodo', 'diavol', + 'dotbot', 'feedfinder', 'flicky', 'ia_archiver', 'jakarta', + 'kmccrew', 'nutch', 'planetwork', 'purebot', 'pycurl', + 'skygrid', 'sucker', 'turnit', 'vikspider', 'zmeu', + ) + ); + + $isBot = false; + + $user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? wp_kses_data($_SERVER['HTTP_USER_AGENT']) : ''; + + do_action('swpm_isBot', $user_agent, $bots); + + foreach ($bots as $bot) { + if (stripos($user_agent, $bot) !== false) + $isBot = true; + } + + return $isBot; + } + + /** + * Check whether the content contains the specified shortcode + * + * @access public + * @param string $shortcode (default: '') + * @return void + */ + function has_shortcode($shortcode = '') { + + $post_to_check = get_post(get_the_ID()); + + // false because we have to search through the post content first + $found = false; + + // if no short code was provided, return false + if (!$shortcode) { + return $found; + } + // check the post content for the short code + if (stripos($post_to_check->post_content, '[' . $shortcode) !== false) { + // we have found the short code + $found = true; + } + + // return our final results + return $found; + } + +} + +// The VFB widget +require( SWPM_FORM_BUILDER_PATH . 'includes/class-widget.php' ); diff --git a/css/smoothness/images/animated-overlay.gif b/css/smoothness/images/animated-overlay.gif new file mode 100644 index 0000000000000000000000000000000000000000..d441f75ebfbdf26a265dfccd670120d25c0a341c GIT binary patch literal 1738 zcmZ|OX;ji_6b5ixNYt8>l?gOuO)6lU%W(mxn(`>1S(XO;u`D+P%xqBvMr|w-Vyr1s z7R|Cn0b8|Hu<=Zmv1mFqh9Fj!NuZfKB2MP$e75`XJ@>=!y!Ux9xR3x;EW!q1^V>X| znVFuRUN`NqJ2)ybXh%e__h!!pv(M|S3+?9F%(K}zyE40MGyhWF5-IDgL&=%2-9`Nk z!1@8uk4t%_{(K~>N;sK&dzJbwJ=$kYTlL=$%#0Pfh>U{%i@~wWbvYsD_K-D`&+u1( z#Ma`>%q<^UhzGvi(hyE`zCD{-=2|zL5>wnB=DE!U?(CZG%q4@lDnCq_%&3DCla#(X zmBhDD+RN$aMWWHm?ig*>1Onn6~r?Ma~N2JKAxN>H%UtRyRqS)6Um!-Tz%-r=& zQmTb^JFIe3W^-kAm`}`2P|niMh>RYyd)S^f(dbrx965?rzbhP|XeP}o&&DSZ4|oYQ z)I{f!SfycYw?3=9W;o-B%U5xs(pP267X~9-7L|4WzaYexC0GtG8wWygm63rF{llCEraxzkc=IxvFQ-y37=_;e5 zJLq^gsSO0Ayz?a>E_?{dmUc+t#qv$)XN8$<<}rQ#)lsiw+pmL&J>~+hgpo>i$m+;l zZIa_ZRIfSeT$~v5d`EBV&*k`apPgjv&B|+d`Q!nyu{L4rs%ZfoF0*Kq8I%ByOcFpL zK=>wzofZo<+0GZLCnWM3oQ^pb(gRSf02;~cEn@LJ>~XB9IkEX{$N#Z`m%>S!U{uPx zloI%bLdo$Adxlh(Uv^yX7s5G&C zLwNRG>~T?G{kzupp8EcyLGPoPf)@&9Wqfw_l&uU-6cexk%5;uQg%wb=0k_733{i#& z1a2p)gV3S2+QG1-K9tZ}E~I<(P0r2aFFY-c{o?TUOz3Xjod#TLE2A_c?*T7t z=1>~%YW450{Qqno4t`}gvLnuMrcu8+#xEBoY%2_+Mb#Z6S38+r*M4O`-+!zl(@m`D zQsi|GA2l3gEy}LFe<#Hv8?$_L#u8E|3-bP$*La*E>B{X!Sy4i6?TKam!49aXCAW4S*P_O^H4^*DpiA40o}Uqw~Eo&veh1`|8i zD2$x+>_b^bXE4N;AW=5>iYak2%!JAh0j1*k1{p#iRCjbB7!cSws~U{1IA@acLII$t z$>X#A+^s6iJ5~DFG!xa?>z{=lxtdi1rzbM-(nqAu3D8h-&64xo6|E!p?pK0xT;qoK z`6%+SpBk+~M?nO}>2mTw!A{yZ6O>Z@kwSd4;8aWU5z!P~tQl?u==^+R`{OmOS}oZh zOXQ3{6kuz?Is^n^L7;9ieB9C+8B{>t+pDrlq4xGDDn#T#3T5$l1g`FTQkU;b-981j zNm{zC`$wn7etklM#qHI4=3m5gwa6DNS{?Z!vSObi_od{4eUo=_S2BKNpkSdiqe(k9WtkeM79;2-%CFbb)aB=&H1?i1}uwFzoZQ(38Kn1zBP ORn*B%u*Wk|4g3!*Rv{Mv literal 0 HcmV?d00001 diff --git a/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png b/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..81f996dac89b3b7b1a5e835ce164acd27d7ae4ee GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F1SA+{?>A)!QcOwS?k)_>#w|r1Kptm-M`SUO z_5fqIli7AahM1>|V~EA+ zRdP`(kYX@0Ff`URu+TNM2r;y@GBvd_GSf9Mw=yt@?7CNrq9HdwB{QuOw+4;tX$OHC O7(8A5T-G@yGywpmc{CIN literal 0 HcmV?d00001 diff --git a/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png b/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..7dc8742812cad5b5253f8ca38c0d22da501300a9 GIT binary patch literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F2qYNp$opRhQcOwS?k)_Bce{j_0C}7R9+AaB z+5?Q;PG;Ky8A6^ejv*T7lYj6t@hpC#;TbB#aBAWwna#KLs)4eqC9V-ADTyViR>?)F zK#IZ0z|dINz(Uv1BE-nc6a#?2AmP!?*K(O3p^r= zfwTu0yPeFo12TF&T^vI^j=w#x$i?I+((tf;UXnmgbH|3oY>pC!)f}(GR!16S-u+#{ ze6YEqRkW=8vGl=5qArKM<9}TC-}iEvB{zdaTcX5$wyRTK&AL(GzgD0I22WQ%mvv4FO#nzYb)5hJ literal 0 HcmV?d00001 diff --git a/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png b/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..e8791d7de89306feb928decc489c092e63ab9f6b GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^j6gI2NH8$CE1Q=ADW)WEcNYf6yIsOdfIQ9ukH}&m z?E%JaC$sH<3_(v9#}JM4$r%X}t&0mp9yKsb%{ak$*<@oTP*SzTHKHUXu_VRXUCGx5b?-VBQkUm|IuXOmYJrBRJgj{Vx zMbNnqUkncy+qa2-mWYc>swkcIuvGK#>(0d)B7)5f`@$Ei28nH~0h*~=;u=wsl30>z zm0Xkxq!^4042^XSEOZSmLJTdfOiisoTyrY}gI3#bmM9u>^HVa@DsgN0lHk`0)WG2B L>gTe~DWM4fTXIgP literal 0 HcmV?d00001 diff --git a/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png b/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..7e9446d5d382b75676157af6d8ecb3841b0129a6 GIT binary patch literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&0LWmFTHNUZq?nSt-Ch3w7g=q17Rci)@Q5r1 z(jH*!b~4)z#PD=+46!(!TrvH)L6@80)r*_cdCvDr%)6ghVL16=s@mbz7H!uRdGeDa z?kzLg)16i!f8fKx84s0>4nc6a#?2AmP!?*K(O3p^r= zfwTu0yPeFo12VciT^vI^j=w#>k(V)1qW$CZ|6)SVV-&*#dav<$DMuV&n0Dbpw@aZZT>@%g@O1TaS?83{1OWG9bmjm6 literal 0 HcmV?d00001 diff --git a/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png new file mode 100644 index 0000000000000000000000000000000000000000..4e130bc3a06d5fc12cf86b3f1368c6801f9a2755 GIT binary patch literal 280 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 QJ~;stWz}Trq%1=J3#jBGg8%>k literal 0 HcmV?d00001 diff --git a/css/smoothness/images/ui-icons_2e83ff_256x240.png b/css/smoothness/images/ui-icons_2e83ff_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..84b601bf0f726bf95801da487deaf2344a32e4b8 GIT binary patch literal 4549 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 F{{S81aohj^ literal 0 HcmV?d00001 diff --git a/css/smoothness/images/ui-icons_454545_256x240.png b/css/smoothness/images/ui-icons_454545_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..b6db1acdd433be80a472b045018f25c7f2cf7e08 GIT binary patch literal 6992 zcmZ{Jbx<76vhMDpfgr(y1`QHmaR~%lf_s1jS=@pJ3$lb=+yex64eoA%#UZ#ua0rVB z4KA18y{BHibKiM?%ydsxclFFS(>*ocgsQ8`;o(r?0000y1$l@j004Yc0Y}*AkG*V$ zv*e=ynJURa0J5d86F477Pd>?iaCwyS|J~jW*uDV(DD4#>Qtv!|9i+qTEablQNm$h= z&CE0X2ukQD(>|w9dGqdIX)YvBF@CS!Mo^03TqmwrllgV%KEo6shFx2oEehu^_cs!f zI;sw@aCA*YlEb$oWY?7%>bM;vUhxUi8np5~I@-VX^5GP5$Q`;Z0hf{15s`~)=nCIT z{KYcN=k)##CFFtF75!TrmQf$AG#Q`<^mG!=GIt&I#)o3-O*Wp{;A<1pI!eg?%2!!r z+zIv$wg$i}8}QOLFS=Xh+Qf4z6c-3wKnenV={H5)s729tL?tzQ^60h+rL#RDkR9~+ z^_M@C6WcitD=p^@wd$vx=;$W_mKfVOT6DDpbQ*tH$WpY5W`$H_qLZA(#re#!6)VtF zU@=7mmXUgOhjUus3l*37VNtNse7@B=>Cbiybh7iER2KOM?LhHBd$Upgt#lg+ZJO>l zxu833ex$XTUzvt!1q~LKA%ec^+*T{O{SPQ(pFDup!nZyM z??tIZc$9{v1Y+SUAeG0mvyl#&=ASO^c8)eTyrwZPrzrpP0P9l?A~{ukG)rOFeYVzq zzu|jZ{LNIs8{QUR*bR_jTemA#oduSf;ShdMO^19Z>hkCO(lWs5*T9y%kfQN0f&ePMv;kDisnr5y%7Wrrkwm3!>`zkB=ovcMAt8MEi~kp?m~ zfWU+~+`1LPuo*U~q+a~EcRcReTnZNxiS+zq!!}lR zeC}vfalp8A^dS5nePlmnMN9rV3866Yi&80me{+~71G`Bj)*jfaXC->#4ZTZKVig!J z1sxFCsdnX?F1@QQ!y+DnQc#eV>Noq!Bo%`R zCQ(53=NDNlW2@k8qW!H~j_$u4zW?zk{Da=f+F198-BsfYtYx*vT12>Pt)AGzy!EVs zB0VwU_wS7GmWz*gW3S&S4eB^Ikb#?0hD)7@zncvPpPsoT6)u8I%Ht5%p9-&@W`@hc zq>oG88M2fHhXn%KZXGzY2F)1UTR-Q#+b_iw#CvyW?X`v|_ZA%MNpC*Dt{+LRUQnfk zJ#pQcGi+Q?`h$vw+Vikh3-*uOV-5153P)ZBY5uhIuNpC?A?bRAZMWn_lu^$clDy-R zkAAPp*&jG%+0HBqQ(;%y7q1e^@eJH5@ngdrb>fH-qIkxR_W}0#N*2|w#hXUD=x0r8 zy;J7sx_ljR@Mt|^G`#6J=g;0tKIqUStGERM$dkQD1x7457!u%4xHiuJPXhk?nT47~qxNz753wpc%qyIWt|2Ng z_jZkTS6_=NSpP0`k-*q*!1RwZ7kAa1iYPUBI`_{S`|0r!((875#MsbVYZpzro`{uf z(1NYO8h`jJw@%C5!ogzs0E3AdeT3r!-m5A%6m)WJd@OVqIw|h!g`c(HYFw{tAtMv7 zf~zrF<(N8g1IBi$`-{PxQGBAk=_oNT7T1q1DM*sgATLMGy?22&M;JYSQcROI(mCZO zrNL>`KU*`J9mvW29TSQ zkoggZFYh@$?q0|Ls(JrF-t`htX7Yi_9`gjWYB?yFY$yG)m>;!D;Qm<7oB`IQ9R!DfGF|6|Lc08UQd%kf4i5$?|TTc-!(vs0SxuxHT<;OjH9i4e{GK~!f`;xI@rxNGkLi8b55(Sd*g+p zGjYqlGqEGPtnp91>kXd2jVuJ>OJu~$i8odw^qZQlVq(9gxX?It0+90@^LE$XUvX3N zYFylu(xzXrg!cz0Z87@>Rw6x%oMv6t3g%g*5|s+smzs5B@4 zQdQajJm^V%qeYzAG{oijbDQ8&j8RHRdk2HC?b zV<;R)jv?Sl!c;LWU_We`Z2jWOd+kH_J@Z$95xP9)r;Ax6!_6saYmjYY5Ks9y`#?!k zN(oS#K)=3{j>W@Q1mz)BlkO5`Z<%b-vMvUXFp7AHB>gGW@fzDRUCUnD!`So=6d|Lx>37E~b1{9RyEuRtrtcuQJ^tUmgo zhb<0OkTo!V02@;9VB8iT-7pVBircZJI_{zQv?gH7!;RKgHSi>Kq}dA!W_^Sl#=qD3 z+`y>QW9Mh)Kx+}|p_#5tl!}lt8|Ut%A7{&Df`k(5UFz^Sxr^&`POLSj#4?sBGE@Io zflPsOi(#MK73=H=>0!Q6?-LnsJiBoV%J;ha!$zCs9vHjNbcB1uI!*6LsM0VJl1w#n z5?fA%styL%3a)f+`4tZgo4#lE(`KyN(YKX|x8Xr>C4LmVGyxeye;oqGOyZrIk-|&2 zH=>-)NFueW{txOInI0Jnh>Fv_pqcb2@>sI>8v+^thI6@@+8peFs$AVKr}Hy7xu*ei zzZKr}$BOlvrC_F*`hU>D5fne(E?~z>+*@ex;50yyJakvscvIIlNy{S#Iu(uHVm&?6 z_3)RW)}4q&837WM>W!rh6^9QPzEl|p7-^Q5j#PJo$hTRj93U>As?(ZBT$$xK*P+0= z%_E)qOWKFt3r__z;xyBA5iV<$X1Ak@)>Nh1rtY%aT)}s>3Cn^Ln*vJD9a+zDnB~1z zs=tYH)ulLW1$s5~MB=Lf-k?YHb(w{y+u?uG(Ni(9`c+vb6HN1Yd%{8v*0`5>Mbq|E z%*ec`G8>KPyaGI(XtBDo{#^BxS@qO&vo|soFnQG3KEWrXDu70Yp^|fwmaALR}Dq>mmq6--TcV!Y%+e{!D*vU9fGS z<%;Ey>wOvVc?qn&@oRaC76jk2xictE><+gzs=!l1?bIh@Gom*TLZu$L_WX|B$26~G z!^+GtV9NzY__{Q|E^PPZC`eDFOfL;BiRPYPdABimd$v_@e zG63JrX4tQK$UbZ4J&&9Rg31G7d#N=dU#s9l2w#YhP&YS2$_a)Jy`D>#pZ4bAm+kPBOTt7`F=X)SbvJ!-6(%(D{u+KCqiJ zRGXraN!wWAdGBZD@S=-~Q!Xj=W$ns`%vFnK^T|l<&L0 zzF7Bc?KnKf0A%D0QiTyl0dcPy%TcSb$9qw7?c=_!DSw`zfME>V7ij#{%VhudH28{o zB55x8hm|#bDh?JaBPy!D^5#_j6%KNs7O1MDTG0$gG+RG&=DPP$Z7Eq>o5QTqBlKM{ zj^|5TOK*)mJW>iw(%AE6x@TT?rCuXBr2nns!2DZ0jlEl_rK11Pvj5PEb;6$B64$f; zERSKwc2z;}!v;6PLa%7PCMhJGW8i+@E7K}jP*->$-&BM7r)M%uguJ3*Z?-Gyn7t>y zlX2%l=&H(;(=~bPefDs?FpX!~vID-_KFsht{e0^=C3~s=l0nFeCDxkqPn%S{T;1}+ z^U0WV=8@02j-Yz`tg4+)X$O%kr*=8Kg)FuQPj0kXW^<1Vev#ZU`V4Wk+$IUdpKUb) zA_@fW>Lvt)rG$PE1PXAZ^+Nm?i#{6T`AW$d z2??rAo9}!(Wd%cbqQ(jLCvX=k4{J}kTh9o-)w`Lz<*y@X9U>0Aq+4ScSd{uv43}>L z9fmRPY!UcoY6o0`0USeBojif~*aKg`lf9lIIa)!gi6BRh8KNLjvUrs;91hLeqNMfS zCQsMu*9PMJRnWW>B;?z-E_w#`b$O1M=!ks8f7%8uYJ5zV zb;bZW_aSz$O%y-~?coWMpn7I_3YtpxTCDF?i7SbIPWAJOUt0~A??@T?@A$N|MeKTq z2HV2r=je7q7CfLiEc=-zX_E8siX%3%b-3(#7t5d+wwN^kB&%sK&3#nEr}z`}huWTw z-a3Q95`#gv;|I&a5zK|hXwC?#MqesKYAoSAA>mbf2=v=88JipZkQESDO_4Ps$kz*|4RJ3yvIWZ(OZC(W-A(zud&mfCZK^;Oi|X%ZRX1hZBT zqnpyTnlv%DBQlFDxy!t{M-l2Xl*0Y9l6-ouT0IY94V$H?@y|jxP{!KLsQjeY)MhU; zRB8L00(@^S1y`)}7ZmBGyr3^6hQ)>|Drp@DQc*@O`bt)$FjkAiFIR-J!9I!)7|YbJ z*6qbWVtG3~rx7*O;o9L3n^rgsEYi$?9HB0seONi*k)4n`wFA-;{p&gOwG}Y*@h)&> z_-g8#>+&|yv>BaL26{Od*MPOvzmx8GU@;c!aw-e=P=hW9Q<&!B{)6h4^iq1Ygnsr- zo+fT7G36pt8>MaZ*E)l9LRgerM@rjlo6ilV1|R|9)XPS@C!8Bm;w6fKDOV=9F{-Up zBpQZC1*Q|aZxzho42Yz~(N!V&AXawORuO{-EV$yGAFpg_WD7IDS7lL>Ig6rEpO3DAu^g-j&ztiixx<2cgQT(plWMHMwg?kpj!iiHLN+#}^m>=I zbNlI`>K~il&*C=+LlPd(HgkH`v{IVAU4(GnChq5-B*) z;$OjD*q;8{KjVAe>{Bn7YQw9A^jCAzbKCS(uX<__ZYp#YUc~*;3`Bsx;;@{QmMFEY z!i&@AvT67wy~hi+nMg8sVemK5s^3C#WCL?2v4OgBUW#uo4x&%KQy=X=&{olMee1*U zOc6w-6bVAzCQuG%yo7@uGq8s2v(dv}QSNSy_#_&t+<-idI-bpVK$@6JE?B4)kEKs+uQfI> zB!h$3d-=Xs_RoXFn?X|KM&-Wq!BWOq^O~xKjMWT<8ECHW>y|gm!V|%I`?=XiQ>7-~ zNL&kxvvV{_+NV`)R%AEI!D?9LY5sN`)*Q7&Ro6LFK4LjCpC&l^Y$^1sDkT0(Y=?PA; zvnObr1IRdBOGnJZ%fn9FE#yM)@?qA5Pb9;+Qqw@R>$as%$@QquyB4&Y0y;a^T;Ryg zB5&=eoyRGGbQeSJvQRXLx-Ej~ zHzi-1nbaQshcckghwHloKb%AEB^iHtwEfDr!B>}KXJYm<{6d=Ok5`07247mGu1Tol zmXG5;+oO>=5yet))qw1u?8xh0gq;xbDeF*<=^5#YYAmpzH;U>>o|7y zGX#Cr;a*1yMqm`yKK*@xTID=-`S2Pq1&TIK80~pa9;K45;Y}PK^H<8-O=+M zg~JK=P)9YRP5cD`AH+4{!~1o2);!I;2YLYfyM6ob9X4p*%it*pF#2Gx2Q;@m(3l$8 zw~IL=5G{TunViCbw!f2#k>zuPzH|EVEY(xP7_NrCYJA6pehay57n3e|3ziZ43S|zI zyeuV>a1F8Li~WL>Y)Kv@x`FvY34o_a&td}LU+va5?;eukqEA}a4wT*b*{)YBLl&WT z;$whurm@d-2&%g`#>tzPsq*AT{n9;?quB4LXc%dj4Y}a&J+AX0RpTY~YMSkpymzvp zce@5k3`B@shWuaKcSI#kiSLMK_rJ)y|IRvkO8-S}H9FO1IgI`pWYyV1 zIj^f>bKh9DF#43)Qn^5&m$*=2x?gZWD`1YIaj-llqtR-tqgOJW`w-nkR=+(M(-TO6 z#)#HO!8gH3K;spVB&3|gJq)he8Y+k<{<5S=iM3Et0shdrf% z04s}TObTG{5JuP^|I^H>;26f8+}M9X)qp7@E8JuT^WwwJ4CC;Dwyg<3KM4H%0gtkN znWhR38|$IQ=m%AjKH!nnFCWaW$TWULM2B`7i39|~KSK7W!%aGUB(S!hn467}0rgW_ z>cZih-~$qNlZU*Rwu3Fe55HFc7CdlrHOm!8LBK4oT9`CHeO?6-Px74);WjWx0nOu_ z08mbu^=6-3IL_=LfF(_i?J>p=ghET<+~F2LT(UwyviW|3BiL~@R>lcpuyb<3>FAZ zkmbGIJ!jwU+aLE<-@aAd=d0V*UG?1rZ7pRYd>VWJ06?UwqVNg;KznQgj&U&`?~3_8 zGLHh?MqOC}08>3;XMB9Z^HMSPeUvKyyp#rAr2qgLKUD=;y`Y7|yihm$-tc~D$9W=G zs$KsH?0L0bDFu}Lv_-8Byl|sU^Fyr4w-ruJ{qi&-r)73d7M0A3qE}E(mwUW%g);Mu z%CD(UI7oWi*)@exJxXw4CgFWb9-_BFs&A_*oPYD&^)RYvJ&4xi`2O-AZJoVbaO|2n zZ@s*A_%%HITLh6Kh{##REa>|@I45#I7(_^I0iYq~0|>C<<~$8x4R~S!P|&Ewa}!p@ zyx{@#cuJGUWZHV5r|&8-ss>-#A3V21192ficY@z$BF;{Fu2AF)pk_xljY@;pushQ_ z-0W8?^5Sw7&!wHuREAa(P%zm-Bp~q@3W1Zgr`n5}_%xftb8@}Rc4lg`4?u~)r}+D8~y!MZhPHlf%HERSaTF*T`sTBYB&!#+@6`1T+jdF zRnZ6@t7W*j6zkj@KBR7T*|JVj6>d7vdwNKbg-w7K|c_r-sJ$5Xkhb zW5L&t(Z{`l(40g&077&Tk}^_9wWo+4_68u*T@gC+RM6Ut#46%-o}~W_#@xud&dOy* zN`@)Pngg1k;ir7r^bfzQofqdk)x!k?r%SsW4KOHXF|w1sZgZo%WIxL&_7G^!=3LFZ z+naJPDbXCcG$#s{gmwmbFvE#$JqvjE(KMLXvP8`Hnu$jh8hVEtfpFeO(7goW72ic@qZ`tGbA*1fBpI)1X{U%_ zF8dce|M~6z6D}XY*mJrKGnu!f%nEUYjM7(g;VkZSjG| zw_IBtV^A~vrbOB5PE_#mC$w&Fjea2Juv(}rznb)0sLC=>bR?i%STt%8cMAo;ixMG* zk}sSsZX{x`+r$nl{eC$x{t|%JM_@rp}w^x@{ON1W&MDsvN?n-~`-&9PJUt*O0Vn*We}MzmHUzW>$-Lzzdg zOafa8Yd_0ljkJVwc)76^L$7bS22V(W@FhL}2A zb(v1FsgC%u-a^SwEwj>O{-#XQm$6AvjO}$krsCWc-37%$Y`KH*|>DL zKnd%O{0Qdc=?Kk0mQQo|au=4xQ^&{EZB+pX2H0|TiTRc=f0!Uma-tQ2sYV&HJv8lx#&dMtO4We+8rk;O4FM zhXyW21Q3ax-ua_=mmGY!9IbS>gq1aTM8?(r!?+R18k#xO)veq(PXRO4_!oF1Tv3nbyn>9h_0)&%U1kh55Vz+rFetsKj zRwM|)v}^8gp)G3w`I~F&g;txw#HFOLp&9@MR};!-&BmJteKTzp{G>uK6Zru{eb{}Y z%`~~)A-_O~+yQ!hzHujuGc)gp2-(-plF+2O=_6qG8{{0pVujRx%-M=!T8gY{#Z#Li zv(YbAQMqyGZFE_1d|Tn>ACL)MIkSw)!B{nVlIP3>L$4Hn4Afe(0k&~edDm~O-TYNQ z-F!f&CM(NrCyOq?%cvtTHX`|-8^V9>e@`XRoZkLmaTZLW28ft8589E7>-aO7_yun1 zyUj(ADq(Lg^|t5O^to=8sx!0j*tS&g?h77#B1i7aPytT4n}VBPI#2VosgdDMCcHXd z=~OvSE@f)_a5ebVMQeKGWi~BL17H{UThZ>qD{trw%IFXYx#n(gN!E)@_U>7k-$L!} z3~}NADQ{^_cA|S?Dq~>pkUT4_ZqR+dcNa7^X!h9#k^MF7KE2oNSvUzjnk7yGfJL9{ z-jJ!NTH4d}chw}rpUKnU6cRc1UtWSlnOi>pRLTKsR|+hDXm+#C7^)-SYzb;$C{;Fk zs>~8+)nphUCVl6_wF<}xCaC3cZDbgd=J9u@jv4ss!8mPikH`q`1-cuwcP z&yz=Yzw2ZH=%O@wrer2o$G%;8PQ{IaN%4?wX5L)G23jblq~g`Ml*tK~sCtc$HavG- zC2u74)g>-Ysb(8SglA8)USXD0wo23JCcET+DqXbc#_^5(#a3j7FGa6^e`khi!c7p> zU|2tYc2Bn>r0V#0k4mg6M}sPrgn!HzoxnP(;njBab~mKK;x+G%c4qtM4)!~#KJ|&; z(Pm@Vwn$-ji#30DqOt-VH>whhLJY^mr_5i1O`lDcpDLvBq1RUA#F`r54sZ(Y)|L$- zjc(lAWlT4`&y1e?aFbc5r+`s-t{UphpuEqECxt2P?D5xEv~Rp|vlFpo-$Swuw3jaR ziCj)A**Bck5&&-B4ZWYmWp5`T3EXH)ok{v;Cl^R@2zhO6 z!S?}GuR~z!jq`v7vkm%KewmdtlW7d7`OihUTQp1FrKCB;0MlA7Ko#fcp2o;7vI}bH zg=GlpqcnLDEcV`44DMpBPIb|PIR@&d8*|F?)vD{|ZgA75+etndI$1ShiX`tyN||+< zbYNimEx^l>Hv@X8J^s1QC_E<@rs~c2y+UdfbuBO5$QLd4`wWA&N` zws@aacvH&KriK~8A2?#DGo`km@SNEg(veO?x!5hgM^jLI zAc6-KP2=IrWB&W_ai_>qFaNmk1)Tw`{=+3Hj05;MM~=?gXkJAbu2RGrPa{a z_$dxvm_n7Y{zqs$rlp|-1sl5C%me7-K6BYs@k4{T9@(!dC*5ru7SrES5D%sl>J@L`rgjV2n1M`_yAcxOT>(XWQ)#c*BIGwW z;Uh2P(BDxz+z5zU!4cnc>DJ29^7S6jYxU}}$@gqrJg8Bn_)1rb+rxX@L)>2PJnGk! zgmBm<%Uv}LeWsYJDYZ?BJ+0FjPCPq)_|oLAQMe9!Yq?HTMI&~W&EO+g9_tKEp9)*g znp1hljDG~_))}zNPTXW=OnH~j_;K+~ec`G0Z^7_l009G&c|zu&t~CnfcJ(z{8^;q% zhWMc-COwXB93$TU78nyT=H}jo#@r2Q5ZTdONrvT-hb57R8Mk_Eh9DcI1wP?mnw1nY ztic`DhdRDr-I_(PIYicn)|}CZQvOU8XV5F)}nF#@6HTsw|iDHwsrxfBkZa9ic(#a3) z3-pT-_g9!AfZFjWIR-WYXwIFFth+jM$dC5OZl$)Zc zFAAo&g26}VX=&TfmeSi`%zsS*5=2XCl`Fnu$v5}NQ zv$6Xv9>%CW9xDld9bN9|;FRpMg9n>obNUb&Co2SJJg2frDsI^dU}XqPYIqaLai2(j zo2QWHnD7@>pOKvF4DeR9p~U7@!!pu~tD_&Zak+C{Vu2wwvHm{rTNJ4a-%6CghY+W= zVsFdkEoBKk;+^CLl-IMhEb&l+vriCuI5#V@fe8MeyWO za6zAlz3J(VZ>FS++Yuk9Di5+_r4_6~m?fA5;rr%4;}t@+d~J~tAJ zI}t13if`D(v?=#y>SLZWl*k}wosI#n2&p4?xH3W)&UVDelm+LwLgs1&T7mCsTy)R& zJH81oc6>8cyCMIG(Wjex?}B|1XyMFg#>~U#nJ8lbaaES)f1i&1o=~F{NJgX{%r0_C94ZkcJky>+< zX=~DK##TB&sG~U8hr_=(9Q@Qr5bzdNZMo%B(PJ!u960!86QU>?`KT?1-_Nr1be3n>Ftv@(9WATydpeFu7emOJl8R zR$-3^li`aoFOvip!_gG($mTD8yhZcCyeEe;I5y>$cM9`_NPOew@}p2MtS75k*!db{ zNXa~Kms4KB=JtJfs4GcjjsXQT4OS~;Jt(mLC^H|ycOpi$fnfe?9sS}62gpL>O!4z` z|HFweukO)WL9^&wOBz>j4p%GZy=R<@XRSM-7ti08IM){J7Jj@`f3(zxq}>ty zJs(5i?l=U6K;}j(c0}VuL0n8uBsRHwZKgLOuUlWk614H4yCYtt`}thR$GrTfgef#0 zlMnFE%KbSXpur?^JpE3{~LbXA0`~QV<9DSFdRA+Uxudj zy(%(`yj44}=wQrYSL(|Yx@!!!NCIC!O_A-$d&%#kwwkpizZ+{-qhu+didG-J6Bos` zI5#Vfw4%Q0?5|(7*$nC{*I8lw+Wb*4+t(0V`%`|sEP*+x6ucS;uIF9DTxDIP33y3e zl=$;I?^4|uW-|q?h&{_9%XY$I@SyrHV?_y5Sa6o;xAdhxEKPh5;$`<2OZtz2Gqq=W zLU&ro+HttGtSG<4e#g6)$Cr0jVT0&E%6B59OiK8H?Uvduju2wgbiOsF#`3E#Iy58MYiz-7x%ZMa$+8w-%heWX|8%D(mca18T z7|EbThNC7eRRspNnaCe)Io&pKutTnQu+}XYg%zC}io(f^x80E)lqN4P)9(%Xeh7uhtuYahWVK8kK^Z5eY6noTl7h2L zegI$aj1bi>+1i%E+Q$k`mzTr%dpc!Rvx|QI6yB3~&h2U5L0LE-QTH~k+g$K8jl!>N z^tLcQdT*|Z9**vUW@O(Nl+i%^Wf&x{Co9`)oE!S6R@=M!?10HtMh9TPW#IFq zrWao@)}HAL=5VdtP)gTg`j=mj3t4!{=+n)_soL%Yyytk=9Z-FskUNlhRSby?w6_IA=vXdEUmgH>PfKgVEK|aR%t-?(I;5}GQT)1siE)~31oDP zTHpYg3HM~3csfrT=jcNg{R`p`k2)-mqquot9INKrWhOO(OLh59NNZ~4lzpMj6k6L~ zLbwA;BcLK;+Q+5zKHwVfrZq2f%}C9Ch;*TQKSO4J1PKVn8S6$*7=}=T0`s99bd$3 zV8%Z%;=UQ}nOlDpl}Uz&q`$3teG$<`8Tm#1tJnuRq44o-TH#LYLSDwxTRx9m@$xHHW(a~UkGYLa z8KJAf(7XInf6#STHuj1w^F)8UA=7d=^7?9jqEE;?jNE)U_5;_8)IdsFiikl!eI*5) zxb}6*|9Go;^jCMZy3;yXBTeNk5-TkXZBtC6oC0Ii(%;7 z{IhoB$jWLfbFBGEl8o|J0c3ucF<@^NlCn~xgh+M7y0}yXT+Bk`kdWAiZ88(^>t`DQ zXPg|c=69SY^6@Rgg7fi2jkK-obqK!QKxz=l$KnubZOh*MQ$vkUAMizrf0xL*(WqVC z{!@j7hLHwyVHCsb^C}T{9YrKLYJE9g{-1I3Kh)4H$&xZmmHl(j)-uaMNLJ+gX53q;z3%Watu14E4+4r7vXEZQO0B^lo za_(k(@}E*}_4U1pf_0n@#h3TzB4Kh?V_M@l=3Um4Ts?fa&Y~UQ+J8$rI}!RwON0xd zfRv1;82uBTi$BKwQNZW%Hq_e5{);mddrfAD!^*J%0_fYQMK@YhLMS%98(|~;CeWbq zJk%+L8p;n6@Os1lT=LKOCuLahw-^+Xx|Xl(m_5OU8f3skDb_3&8*(_yDg%7MM1t;q z7ir$sKOjp1$aSIjZ&Sv)N`U`cTDRR0z00FLwIw{>#-yMEmuL9 zP*TMRx*$QTrh!Wx;D~0}KE$woROV=Lf#yL~+so#D_XEOZ5MU(S;E+{KI`X^>&lu3W zF}BMzZYJqsbGd*nar62CCu7Gc(}fVz^YKU23qM68KRatbdvRMI`$qu~0Pzd*fCP9z z{CXg;xS*goKZpk;Dh>j1SRvE?#lYRu&ec=nGObUhvX0uk5Yug1rarB_5Rks)||))pAy^{{xH72U-9C literal 0 HcmV?d00001 diff --git a/css/smoothness/images/ui-icons_cd0a0a_256x240.png b/css/smoothness/images/ui-icons_cd0a0a_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..ed5b6b0930f672fa08e9b9bdbe5e55370fd1dc30 GIT binary patch literal 4549 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 DTfr$v literal 0 HcmV?d00001 diff --git a/css/smoothness/jquery-ui-1.10.3.css b/css/smoothness/jquery-ui-1.10.3.css new file mode 100644 index 0000000..4e04c99 --- /dev/null +++ b/css/smoothness/jquery-ui-1.10.3.css @@ -0,0 +1,1177 @@ +/*! jQuery UI - v1.10.3 - 2013-08-21 +* http://jqueryui.com +* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px +* Copyright 2013 jQuery Foundation and other contributors Licensed MIT */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { + display: none; +} +.ui-helper-hidden-accessible { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} +.ui-helper-reset { + margin: 0; + padding: 0; + border: 0; + outline: 0; + line-height: 1.3; + text-decoration: none; + font-size: 100%; + list-style: none; +} +.ui-helper-clearfix:before, +.ui-helper-clearfix:after { + content: ""; + display: table; + border-collapse: collapse; +} +.ui-helper-clearfix:after { + clear: both; +} +.ui-helper-clearfix { + min-height: 0; /* support: IE7 */ +} +.ui-helper-zfix { + width: 100%; + height: 100%; + top: 0; + left: 0; + position: absolute; + opacity: 0; + filter:Alpha(Opacity=0); +} + +.ui-front { + z-index: 100; +} + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { + cursor: default !important; +} + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + display: block; + text-indent: -99999px; + overflow: hidden; + background-repeat: no-repeat; +} + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; +} +.ui-resizable { + position: relative; +} +.ui-resizable-handle { + position: absolute; + font-size: 0.1px; + display: block; +} +.ui-resizable-disabled .ui-resizable-handle, +.ui-resizable-autohide .ui-resizable-handle { + display: none; +} +.ui-resizable-n { + cursor: n-resize; + height: 7px; + width: 100%; + top: -5px; + left: 0; +} +.ui-resizable-s { + cursor: s-resize; + height: 7px; + width: 100%; + bottom: -5px; + left: 0; +} +.ui-resizable-e { + cursor: e-resize; + width: 7px; + right: -5px; + top: 0; + height: 100%; +} +.ui-resizable-w { + cursor: w-resize; + width: 7px; + left: -5px; + top: 0; + height: 100%; +} +.ui-resizable-se { + cursor: se-resize; + width: 12px; + height: 12px; + right: 1px; + bottom: 1px; +} +.ui-resizable-sw { + cursor: sw-resize; + width: 9px; + height: 9px; + left: -5px; + bottom: -5px; +} +.ui-resizable-nw { + cursor: nw-resize; + width: 9px; + height: 9px; + left: -5px; + top: -5px; +} +.ui-resizable-ne { + cursor: ne-resize; + width: 9px; + height: 9px; + right: -5px; + top: -5px; +} +.ui-selectable-helper { + position: absolute; + z-index: 100; + border: 1px dotted black; +} +.ui-accordion .ui-accordion-header { + display: block; + cursor: pointer; + position: relative; + margin-top: 2px; + padding: .5em .5em .5em .7em; + min-height: 0; /* support: IE7 */ +} +.ui-accordion .ui-accordion-icons { + padding-left: 2.2em; +} +.ui-accordion .ui-accordion-noicons { + padding-left: .7em; +} +.ui-accordion .ui-accordion-icons .ui-accordion-icons { + padding-left: 2.2em; +} +.ui-accordion .ui-accordion-header .ui-accordion-header-icon { + position: absolute; + left: .5em; + top: 50%; + margin-top: -8px; +} +.ui-accordion .ui-accordion-content { + padding: 1em 2.2em; + border-top: 0; + overflow: auto; +} +.ui-autocomplete { + position: absolute; + top: 0; + left: 0; + cursor: default; +} +.ui-button { + display: inline-block; + position: relative; + padding: 0; + line-height: normal; + margin-right: .1em; + cursor: pointer; + vertical-align: middle; + text-align: center; + overflow: visible; /* removes extra width in IE */ +} +.ui-button, +.ui-button:link, +.ui-button:visited, +.ui-button:hover, +.ui-button:active { + text-decoration: none; +} +/* to make room for the icon, a width needs to be set here */ +.ui-button-icon-only { + width: 2.2em; +} +/* button elements seem to need a little more width */ +button.ui-button-icon-only { + width: 2.4em; +} +.ui-button-icons-only { + width: 3.4em; +} +button.ui-button-icons-only { + width: 3.7em; +} + +/* button text element */ +.ui-button .ui-button-text { + display: block; + line-height: normal; +} +.ui-button-text-only .ui-button-text { + padding: .4em 1em; +} +.ui-button-icon-only .ui-button-text, +.ui-button-icons-only .ui-button-text { + padding: .4em; + text-indent: -9999999px; +} +.ui-button-text-icon-primary .ui-button-text, +.ui-button-text-icons .ui-button-text { + padding: .4em 1em .4em 2.1em; +} +.ui-button-text-icon-secondary .ui-button-text, +.ui-button-text-icons .ui-button-text { + padding: .4em 2.1em .4em 1em; +} +.ui-button-text-icons .ui-button-text { + padding-left: 2.1em; + padding-right: 2.1em; +} +/* no icon support for input elements, provide padding by default */ +input.ui-button { + padding: .4em 1em; +} + +/* button icon element(s) */ +.ui-button-icon-only .ui-icon, +.ui-button-text-icon-primary .ui-icon, +.ui-button-text-icon-secondary .ui-icon, +.ui-button-text-icons .ui-icon, +.ui-button-icons-only .ui-icon { + position: absolute; + top: 50%; + margin-top: -8px; +} +.ui-button-icon-only .ui-icon { + left: 50%; + margin-left: -8px; +} +.ui-button-text-icon-primary .ui-button-icon-primary, +.ui-button-text-icons .ui-button-icon-primary, +.ui-button-icons-only .ui-button-icon-primary { + left: .5em; +} +.ui-button-text-icon-secondary .ui-button-icon-secondary, +.ui-button-text-icons .ui-button-icon-secondary, +.ui-button-icons-only .ui-button-icon-secondary { + right: .5em; +} + +/* button sets */ +.ui-buttonset { + margin-right: 7px; +} +.ui-buttonset .ui-button { + margin-left: 0; + margin-right: -.3em; +} + +/* workarounds */ +/* reset extra padding in Firefox, see h5bp.com/l */ +input.ui-button::-moz-focus-inner, +button.ui-button::-moz-focus-inner { + border: 0; + padding: 0; +} +.ui-datepicker { + width: 17em; + padding: .2em .2em 0; + display: none; +} +.ui-datepicker .ui-datepicker-header { + position: relative; + padding: .2em 0; +} +.ui-datepicker .ui-datepicker-prev, +.ui-datepicker .ui-datepicker-next { + position: absolute; + top: 2px; + width: 1.8em; + height: 1.8em; +} +.ui-datepicker .ui-datepicker-prev-hover, +.ui-datepicker .ui-datepicker-next-hover { + top: 1px; +} +.ui-datepicker .ui-datepicker-prev { + left: 2px; +} +.ui-datepicker .ui-datepicker-next { + right: 2px; +} +.ui-datepicker .ui-datepicker-prev-hover { + left: 1px; +} +.ui-datepicker .ui-datepicker-next-hover { + right: 1px; +} +.ui-datepicker .ui-datepicker-prev span, +.ui-datepicker .ui-datepicker-next span { + display: block; + position: absolute; + left: 50%; + margin-left: -8px; + top: 50%; + margin-top: -8px; +} +.ui-datepicker .ui-datepicker-title { + margin: 0 2.3em; + line-height: 1.8em; + text-align: center; +} +.ui-datepicker .ui-datepicker-title select { + font-size: 1em; + margin: 1px 0; +} +.ui-datepicker select.ui-datepicker-month-year { + width: 100%; +} +.ui-datepicker select.ui-datepicker-month, +.ui-datepicker select.ui-datepicker-year { + width: 49%; +} +.ui-datepicker table { + width: 100%; + font-size: .9em; + border-collapse: collapse; + margin: 0 0 .4em; +} +.ui-datepicker th { + padding: .7em .3em; + text-align: center; + font-weight: bold; + border: 0; +} +.ui-datepicker td { + border: 0; + padding: 1px; +} +.ui-datepicker td span, +.ui-datepicker td a { + display: block; + padding: .2em; + text-align: right; + text-decoration: none; +} +.ui-datepicker .ui-datepicker-buttonpane { + background-image: none; + margin: .7em 0 0 0; + padding: 0 .2em; + border-left: 0; + border-right: 0; + border-bottom: 0; +} +.ui-datepicker .ui-datepicker-buttonpane button { + float: right; + margin: .5em .2em .4em; + cursor: pointer; + padding: .2em .6em .3em .6em; + width: auto; + overflow: visible; +} +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { + float: left; +} + +/* with multiple calendars */ +.ui-datepicker.ui-datepicker-multi { + width: auto; +} +.ui-datepicker-multi .ui-datepicker-group { + float: left; +} +.ui-datepicker-multi .ui-datepicker-group table { + width: 95%; + margin: 0 auto .4em; +} +.ui-datepicker-multi-2 .ui-datepicker-group { + width: 50%; +} +.ui-datepicker-multi-3 .ui-datepicker-group { + width: 33.3%; +} +.ui-datepicker-multi-4 .ui-datepicker-group { + width: 25%; +} +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { + border-left-width: 0; +} +.ui-datepicker-multi .ui-datepicker-buttonpane { + clear: left; +} +.ui-datepicker-row-break { + clear: both; + width: 100%; + font-size: 0; +} + +/* RTL support */ +.ui-datepicker-rtl { + direction: rtl; +} +.ui-datepicker-rtl .ui-datepicker-prev { + right: 2px; + left: auto; +} +.ui-datepicker-rtl .ui-datepicker-next { + left: 2px; + right: auto; +} +.ui-datepicker-rtl .ui-datepicker-prev:hover { + right: 1px; + left: auto; +} +.ui-datepicker-rtl .ui-datepicker-next:hover { + left: 1px; + right: auto; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane { + clear: right; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button { + float: left; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current, +.ui-datepicker-rtl .ui-datepicker-group { + float: right; +} +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { + border-right-width: 0; + border-left-width: 1px; +} +.ui-dialog { + position: absolute; + top: 0; + left: 0; + padding: .2em; + outline: 0; +} +.ui-dialog .ui-dialog-titlebar { + padding: .4em 1em; + position: relative; +} +.ui-dialog .ui-dialog-title { + float: left; + margin: .1em 0; + white-space: nowrap; + width: 90%; + overflow: hidden; + text-overflow: ellipsis; +} +.ui-dialog .ui-dialog-titlebar-close { + position: absolute; + right: .3em; + top: 50%; + width: 21px; + margin: -10px 0 0 0; + padding: 1px; + height: 20px; +} +.ui-dialog .ui-dialog-content { + position: relative; + border: 0; + padding: .5em 1em; + background: none; + overflow: auto; +} +.ui-dialog .ui-dialog-buttonpane { + text-align: left; + border-width: 1px 0 0 0; + background-image: none; + margin-top: .5em; + padding: .3em 1em .5em .4em; +} +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { + float: right; +} +.ui-dialog .ui-dialog-buttonpane button { + margin: .5em .4em .5em 0; + cursor: pointer; +} +.ui-dialog .ui-resizable-se { + width: 12px; + height: 12px; + right: -5px; + bottom: -5px; + background-position: 16px 16px; +} +.ui-draggable .ui-dialog-titlebar { + cursor: move; +} +.ui-menu { + list-style: none; + padding: 2px; + margin: 0; + display: block; + outline: none; +} +.ui-menu .ui-menu { + margin-top: -3px; + position: absolute; +} +.ui-menu .ui-menu-item { + margin: 0; + padding: 0; + width: 100%; + /* support: IE10, see #8844 */ + list-style-image: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); +} +.ui-menu .ui-menu-divider { + margin: 5px -2px 5px -2px; + height: 0; + font-size: 0; + line-height: 0; + border-width: 1px 0 0 0; +} +.ui-menu .ui-menu-item a { + text-decoration: none; + display: block; + padding: 2px .4em; + line-height: 1.5; + min-height: 0; /* support: IE7 */ + font-weight: normal; +} +.ui-menu .ui-menu-item a.ui-state-focus, +.ui-menu .ui-menu-item a.ui-state-active { + font-weight: normal; + margin: -1px; +} + +.ui-menu .ui-state-disabled { + font-weight: normal; + margin: .4em 0 .2em; + line-height: 1.5; +} +.ui-menu .ui-state-disabled a { + cursor: default; +} + +/* icon support */ +.ui-menu-icons { + position: relative; +} +.ui-menu-icons .ui-menu-item a { + position: relative; + padding-left: 2em; +} + +/* left-aligned */ +.ui-menu .ui-icon { + position: absolute; + top: .2em; + left: .2em; +} + +/* right-aligned */ +.ui-menu .ui-menu-icon { + position: static; + float: right; +} +.ui-progressbar { + height: 2em; + text-align: left; + overflow: hidden; +} +.ui-progressbar .ui-progressbar-value { + margin: -1px; + height: 100%; +} +.ui-progressbar .ui-progressbar-overlay { + background: url("images/animated-overlay.gif"); + height: 100%; + filter: alpha(opacity=25); + opacity: 0.25; +} +.ui-progressbar-indeterminate .ui-progressbar-value { + background-image: none; +} +.ui-slider { + position: relative; + text-align: left; +} +.ui-slider .ui-slider-handle { + position: absolute; + z-index: 2; + width: 1.2em; + height: 1.2em; + cursor: default; +} +.ui-slider .ui-slider-range { + position: absolute; + z-index: 1; + font-size: .7em; + display: block; + border: 0; + background-position: 0 0; +} + +/* For IE8 - See #6727 */ +.ui-slider.ui-state-disabled .ui-slider-handle, +.ui-slider.ui-state-disabled .ui-slider-range { + filter: inherit; +} + +.ui-slider-horizontal { + height: .8em; +} +.ui-slider-horizontal .ui-slider-handle { + top: -.3em; + margin-left: -.6em; +} +.ui-slider-horizontal .ui-slider-range { + top: 0; + height: 100%; +} +.ui-slider-horizontal .ui-slider-range-min { + left: 0; +} +.ui-slider-horizontal .ui-slider-range-max { + right: 0; +} + +.ui-slider-vertical { + width: .8em; + height: 100px; +} +.ui-slider-vertical .ui-slider-handle { + left: -.3em; + margin-left: 0; + margin-bottom: -.6em; +} +.ui-slider-vertical .ui-slider-range { + left: 0; + width: 100%; +} +.ui-slider-vertical .ui-slider-range-min { + bottom: 0; +} +.ui-slider-vertical .ui-slider-range-max { + top: 0; +} +.ui-spinner { + position: relative; + display: inline-block; + overflow: hidden; + padding: 0; + vertical-align: middle; +} +.ui-spinner-input { + border: none; + background: none; + color: inherit; + padding: 0; + margin: .2em 0; + vertical-align: middle; + margin-left: .4em; + margin-right: 22px; +} +.ui-spinner-button { + width: 16px; + height: 50%; + font-size: .5em; + padding: 0; + margin: 0; + text-align: center; + position: absolute; + cursor: default; + display: block; + overflow: hidden; + right: 0; +} +/* more specificity required here to overide default borders */ +.ui-spinner a.ui-spinner-button { + border-top: none; + border-bottom: none; + border-right: none; +} +/* vertical centre icon */ +.ui-spinner .ui-icon { + position: absolute; + margin-top: -8px; + top: 50%; + left: 0; +} +.ui-spinner-up { + top: 0; +} +.ui-spinner-down { + bottom: 0; +} + +/* TR overrides */ +.ui-spinner .ui-icon-triangle-1-s { + /* need to fix icons sprite */ + background-position: -65px -16px; +} +.ui-tabs { + position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ + padding: .2em; +} +.ui-tabs .ui-tabs-nav { + margin: 0; + padding: .2em .2em 0; +} +.ui-tabs .ui-tabs-nav li { + list-style: none; + float: left; + position: relative; + top: 0; + margin: 1px .2em 0 0; + border-bottom-width: 0; + padding: 0; + white-space: nowrap; +} +.ui-tabs .ui-tabs-nav li a { + float: left; + padding: .5em 1em; + text-decoration: none; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active { + margin-bottom: -1px; + padding-bottom: 1px; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active a, +.ui-tabs .ui-tabs-nav li.ui-state-disabled a, +.ui-tabs .ui-tabs-nav li.ui-tabs-loading a { + cursor: text; +} +.ui-tabs .ui-tabs-nav li a, /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ +.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { + cursor: pointer; +} +.ui-tabs .ui-tabs-panel { + display: block; + border-width: 0; + padding: 1em 1.4em; + background: none; +} +.ui-tooltip { + padding: 8px; + position: absolute; + z-index: 9999; + max-width: 300px; + -webkit-box-shadow: 0 0 5px #aaa; + box-shadow: 0 0 5px #aaa; +} +body .ui-tooltip { + border-width: 2px; +} + +/* Component containers +----------------------------------*/ +.ui-widget { + font-family: Verdana,Arial,sans-serif; + font-size: 1.1em; +} +.ui-widget .ui-widget { + font-size: 1em; +} +.ui-widget input, +.ui-widget select, +.ui-widget textarea, +.ui-widget button { + font-family: Verdana,Arial,sans-serif; + font-size: 1em; +} +.ui-widget-content { + border: 1px solid #aaaaaa; + background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; + color: #222222; +} +.ui-widget-content a { + color: #222222; +} +.ui-widget-header { + border: 1px solid #aaaaaa; + background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; + color: #222222; + font-weight: bold; +} +.ui-widget-header a { + color: #222222; +} + +/* Interaction states +----------------------------------*/ +.ui-state-default, +.ui-widget-content .ui-state-default, +.ui-widget-header .ui-state-default { + border: 1px solid #d3d3d3; + background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; + font-weight: normal; + color: #555555; +} +.ui-state-default a, +.ui-state-default a:link, +.ui-state-default a:visited { + color: #555555; + text-decoration: none; +} +.ui-state-hover, +.ui-widget-content .ui-state-hover, +.ui-widget-header .ui-state-hover, +.ui-state-focus, +.ui-widget-content .ui-state-focus, +.ui-widget-header .ui-state-focus { + border: 1px solid #999999; + background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; + font-weight: normal; + color: #212121; +} +.ui-state-hover a, +.ui-state-hover a:hover, +.ui-state-hover a:link, +.ui-state-hover a:visited { + color: #212121; + text-decoration: none; +} +.ui-state-active, +.ui-widget-content .ui-state-active, +.ui-widget-header .ui-state-active { + border: 1px solid #aaaaaa; + background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; + font-weight: normal; + color: #212121; +} +.ui-state-active a, +.ui-state-active a:link, +.ui-state-active a:visited { + color: #212121; + text-decoration: none; +} + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, +.ui-widget-content .ui-state-highlight, +.ui-widget-header .ui-state-highlight { + border: 1px solid #fcefa1; + background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; + color: #363636; +} +.ui-state-highlight a, +.ui-widget-content .ui-state-highlight a, +.ui-widget-header .ui-state-highlight a { + color: #363636; +} +.ui-state-error, +.ui-widget-content .ui-state-error, +.ui-widget-header .ui-state-error { + border: 1px solid #cd0a0a; + background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; + color: #cd0a0a; +} +.ui-state-error a, +.ui-widget-content .ui-state-error a, +.ui-widget-header .ui-state-error a { + color: #cd0a0a; +} +.ui-state-error-text, +.ui-widget-content .ui-state-error-text, +.ui-widget-header .ui-state-error-text { + color: #cd0a0a; +} +.ui-priority-primary, +.ui-widget-content .ui-priority-primary, +.ui-widget-header .ui-priority-primary { + font-weight: bold; +} +.ui-priority-secondary, +.ui-widget-content .ui-priority-secondary, +.ui-widget-header .ui-priority-secondary { + opacity: .7; + filter:Alpha(Opacity=70); + font-weight: normal; +} +.ui-state-disabled, +.ui-widget-content .ui-state-disabled, +.ui-widget-header .ui-state-disabled { + opacity: .35; + filter:Alpha(Opacity=35); + background-image: none; +} +.ui-state-disabled .ui-icon { + filter:Alpha(Opacity=35); /* For IE8 - See #6059 */ +} + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + width: 16px; + height: 16px; +} +.ui-icon, +.ui-widget-content .ui-icon { + background-image: url(images/ui-icons_222222_256x240.png); +} +.ui-widget-header .ui-icon { + background-image: url(images/ui-icons_222222_256x240.png); +} +.ui-state-default .ui-icon { + background-image: url(images/ui-icons_888888_256x240.png); +} +.ui-state-hover .ui-icon, +.ui-state-focus .ui-icon { + background-image: url(images/ui-icons_454545_256x240.png); +} +.ui-state-active .ui-icon { + background-image: url(images/ui-icons_454545_256x240.png); +} +.ui-state-highlight .ui-icon { + background-image: url(images/ui-icons_2e83ff_256x240.png); +} +.ui-state-error .ui-icon, +.ui-state-error-text .ui-icon { + background-image: url(images/ui-icons_cd0a0a_256x240.png); +} + +/* positioning */ +.ui-icon-blank { background-position: 16px 16px; } +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-on { background-position: -96px -144px; } +.ui-icon-radio-off { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-all, +.ui-corner-top, +.ui-corner-left, +.ui-corner-tl { + border-top-left-radius: 4px; +} +.ui-corner-all, +.ui-corner-top, +.ui-corner-right, +.ui-corner-tr { + border-top-right-radius: 4px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-left, +.ui-corner-bl { + border-bottom-left-radius: 4px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-right, +.ui-corner-br { + border-bottom-right-radius: 4px; +} + +/* Overlays */ +.ui-widget-overlay { + background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; + opacity: .3; + filter: Alpha(Opacity=30); +} +.ui-widget-shadow { + margin: -8px 0 0 -8px; + padding: 8px; + background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; + opacity: .3; + filter: Alpha(Opacity=30); + border-radius: 8px; +} diff --git a/css/smoothness/jquery-ui-1.10.3.min.css b/css/smoothness/jquery-ui-1.10.3.min.css new file mode 100644 index 0000000..f7efcac --- /dev/null +++ b/css/smoothness/jquery-ui-1.10.3.min.css @@ -0,0 +1,5 @@ +/*! jQuery UI - v1.10.3 - 2013-08-21 +* http://jqueryui.com +* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px +* Copyright 2013 jQuery Foundation and other contributors Licensed MIT */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted #000}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin-top:2px;padding:.5em .5em .5em .7em;min-height:0}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-noicons{padding-left:.7em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month-year{width:100%}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:700;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:21px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:0;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:0}.ui-menu .ui-menu{margin-top:-3px;position:absolute}.ui-menu .ui-menu-item{margin:0;padding:0;width:100%;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu .ui-menu-divider{margin:5px -2px 5px -2px;height:0;font-size:0;line-height:0;border-width:1px 0 0}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;min-height:0;font-weight:400}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{font-weight:400;margin:-1px}.ui-menu .ui-state-disabled{font-weight:400;margin:.4em 0 .2em;line-height:1.5}.ui-menu .ui-state-disabled a{cursor:default}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em}.ui-menu .ui-menu-icon{position:static;float:right}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url(images/animated-overlay.gif);height:100%;filter:alpha(opacity=25);opacity:.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:0;background:0;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:0;border-bottom:0;border-right:0}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav li a{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active a,.ui-tabs .ui-tabs-nav li.ui-state-disabled a,.ui-tabs .ui-tabs-nav li.ui-tabs-loading a{cursor:text}.ui-tabs .ui-tabs-nav li a,.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:0}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-state-default .ui-icon{background-image:url(images/ui-icons_888888_256x240.png)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-active .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_2e83ff_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_cd0a0a_256x240.png)}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px} \ No newline at end of file diff --git a/css/swpm-form-builder-admin.css b/css/swpm-form-builder-admin.css new file mode 100644 index 0000000..a3f9bcb --- /dev/null +++ b/css/swpm-form-builder-admin.css @@ -0,0 +1,1705 @@ +/* VFB Pro call to action */ +.swpm-pro-call-to-action { + padding: 5px 0; + text-align: center; +} + +.swpm-btn { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; + padding: 15px 10px; + margin-bottom: 0; + line-height: 20px; + text-align: center; + vertical-align: middle; + cursor: pointer; + color: #333333; + font-size: 21px; + font-weight: 500; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + background-color: #f5f5f5; + background-repeat: repeat-x; + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #e6e6e6; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + border: 1px solid #cccccc; + *border: 0; + border-bottom-color: #b3b3b3; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + *margin-left: .3em; + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); + box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); + text-decoration: none; +} + +.swpm-btn:hover, +.swpm-btn:focus { + color: #333333; + text-decoration: none; + background-position: 0 -15px; + -webkit-transition: background-position 0.1s linear; + -moz-transition: background-position 0.1s linear; + -o-transition: background-position 0.1s linear; + transition: background-position 0.1s linear; +} + +.swpm-btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.swpm-btn.active, +.swpm-btn:active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); + -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); + box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); +} + + +.swpm-btn-primary.active { + color: rgba(255, 255, 255, 0.75); +} + +.swpm-btn-primary { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #006dcc; + background-image: -moz-linear-gradient(top, #0088cc, #0044cc); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); + background-image: -o-linear-gradient(top, #0088cc, #0044cc); + background-image: linear-gradient(to bottom, #0088cc, #0044cc); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0); + border-color: #0044cc #0044cc #002a80; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #0044cc; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} + +.swpm-btn-primary:hover, +.swpm-btn-primary:focus, +.swpm-btn-primary:active, +.swpm-btn-primary.active, +.swpm-btn-primary.disabled, +.swpm-btn-primary[disabled] { + color: #ffffff; + background-color: #0044cc; + *background-color: #003bb3; +} + +.swpm-btn-primary:active, +.swpm-btn-primary.active { + background-color: #003399 \9; +} + +.swpm-btn-inverse { + background-color: #363636; + background-repeat: repeat-x; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + color: #FFFFFF; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.swpm-btn-inverse:hover, +.swpm-btn-inverse:focus, +.swpm-btn-inverse:active, +.swpm-btn-inverse.active, +.swpm-btn-inverse.disabled, +.swpm-btn-inverse[disabled] { + background-color: #222222; + color: #FFFFFF; +} + +.swpm-pro-call-to-action .cta-sign-up { + color: #fff; + display: block; + font-size: 24px; + font-weight: bold; + text-align: center; + text-decoration: none; + text-shadow: 1px 1px 1px #2b658c; + width: 100%; + line-height: 22px; +} + +.swpm-pro-call-to-action .cta-price { + color: #ace7ff; + display: block; + font-size: 12px; + font-weight: normal; + line-height: 20px; + text-align: center; + text-decoration: none; + width: 100%; + line-height: 20px; +} + +.swpm-pro-upgrade { + display: inline; + float: left; + padding: 10px; + margin-bottom: 20px; + background-color: #d3e7ee; + border: 1px solid #21759b; + border-radius: 5px; +} + +.rtl .swpm-pro-upgrade { + float: right; +} + +.swpm-pro-upgrade h2, +.wrap .swpm-pro-upgrade h2 { + font-size: 23px; + font-weight: 500; + padding: 5px 0; + text-align: center; +} + +.swpm-pro-upgrade h2 a { + text-decoration: none; +} + +.swpm-pro-upgrade ul { + list-style: outside; + margin-left: 10px; +} + +.rtl .swpm-pro-upgrade ul { + margin-left: 0; + margin-right: 10px; +} + +/* !Form View framework */ +#swpm-form-builder-frame{ + display:block; + margin: 0 -8px 0 290px; +} + +.rtl #swpm-form-builder-frame { + margin: 0 290px 0 -8px; +} + +#swpm-form-builder-frame:after, +#form-editor-header .swpm-major-publishing-actions:after, +#form-editor-footer .swpm-major-publishing-actions:after, +#swpm-form-builder-frame .menu-item-settings:after, +#swpm-form-list:after, +.option:after{ + display: block; + visibility: hidden; + clear:both; + height: 0; + content: "."; +} + +#swpm-form-builder-sidebar{ + clear:both; + width:281px; +} + +#swpm-form-builder-management{ + position: relative; + margin-right: 10px; +} + +.rtl #swpm-form-builder-management { + margin-right: 0; + margin-left: 10px; +} + +#swpm-form-builder-management .form-edit{ + margin-bottom: 20px; + border: 1px solid #dfdfdf; + border-radius: 3px; +} + +/* Blue Admin style */ +.admin-color-classic #swpm-form-builder-management .form-edit { + border-color: #D0DFE9; +} + +/* !Form Editor Header/Footer */ +#form-editor-header, +#form-editor-footer{ + padding: 0 10px; + background-color: #f1f1f1; +} + +#form-editor-footer{ + border-top:1px solid #dfdfdf; +} + +/* Blue Admin style */ +.admin-color-classic #form-editor-header, +.admin-color-classic #form-editor-footer { + background-color: #F5FAFD; +} + +.admin-color-class #form-editor-footer { + border-top-color: #D0DFE9; +} + +.swpm-major-publishing-actions{ + clear:both; + padding:3px 0 5px; +} + +.swpm-major-publishing-actions .publishing-action{ + float:right; + margin: 5px 0 1px; + text-align: right; + line-height: 23px; +} + +#form-editor-header .publishing-action{ + margin-top:12px; +} + +/* !Subnavigation links */ +.sub-navigation{ + float:none; + margin:8px 0 5px; + padding:0; + list-style: none; + white-space: nowrap; + font-size: 12px; +} + +.sub-navigation li{ + display: inline; + margin:0; + padding:0; +} + +.sub-navigation a{ + padding:0.2em; + text-decoration: none; + line-height: 2; +} + +.sub-navigation a.current{ + border:medium none; + background:none; + color: black; + font-weight: bold; +} + +.sub-navigation a:hover{ + color:rgb(213,78,33); +} + +/* Form Box view */ +#swpm-sidebar, +#swpm-main{ + float: left; + margin: 10px 0; + width: 280px; +} + +.rtl #swpm-sidebar, +.rtl #swpm-main { + float: right; +} + +#swpm-main{ + width:auto; +} +#swpm-main.swpm-order-type-list{ + width: 100%; +} + +#swpm-main p a, +#swpm-main h3 a{ + text-decoration: none; +} + +#swpm-main .submitdelete{ + color: #BC0B0B; + text-decoration: none; +} +#swpm-main .submitdelete:hover{ + color:red; +} + +#swpm-sidebar{ + margin-left: -300px; +} + +.rtl #swpm-sidebar { + margin-left: 0; + margin-right: -300px; +} + +#swpm-form-list{ + display: block; + /*margin-left: 300px;*/ +} + +.rtl #swpm-form-list { + margin-left: 0; + margin-right: 300px; +} + +/* !Form Boxes */ +.swpm-box{ + position:relative; + float:left; + padding:0 10px; + border: 1px solid #DFDFDF; + border-radius: 3px 3px 3px 3px; + background-color: #F5F5F5; + background: -moz-linear-gradient(top, #ffffff 0%, #f5f5f5 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#f5f5f5)); + background: -webkit-linear-gradient(top, #ffffff 0%,#f5f5f5 100%); + background: -o-linear-gradient(top, #ffffff 0%,#f5f5f5 100%); + background: -ms-linear-gradient(top, #ffffff 0%,#f5f5f5 100%); + background: linear-gradient(to bottom, #ffffff 0%,#f5f5f5 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#f5f5f5',GradientType=0 ); + box-shadow: 0 1px 0 #FFFFFF inset; + line-height: 1.4em; +} + +.swpm-form-alpha-list{ + width: 70%; + float: left; + padding-right:20px; +} + +.rtl .swpm-form-alpha-list { + float: right; + padding-right: 0; + padding-left: 20px; +} + +.swpm-form-alpha-list hr{ + display:block; + margin:1em 0; + padding:0; + height:1px; + border:0; + border-top:1px solid #ccc; +} + +.swpm-form-alpha-group .letter, +.wrap h2.letter{ + float:left; + padding:0; + color:#666; + font-size:14px; + line-height: 17px; +} + +.swpm-form-alpha-form{ + display: block; + margin:10px 0; + padding-left:150px; + width:auto; +} +.swpm-form-alpha-form h3{ + float:left; + margin: 0; + width:50%; + word-wrap: break-word; + font-size:17px; +} + +.swpm-form-alpha-form .swpm-publishing-actions, +.swpm-form-alpha-form .swpm-form-meta{ + float:left; + width:20%; + text-align: center; +} + +.swpm-form-alpha-form .swpm-form-meta{ + width: 30%; +} + +.swpm-form-alpha-form .swpm-publishing-actions p, +.swpm-form-alpha-form .swpm-form-meta p{ + margin:0; +} + +.swpm-form-alpha-form .swpm-form-meta, +.swpm-form-alpha-form .paypal{ + float:left; + margin:0; + text-align: left; +} + +.rtl .swpm-form-alpha-form .swpm-form-meta, +.rtl .swpm-form-alpha-form .paypal { + float: right; + text-align: right; +} + +.swpm-sortable-placeholder{ + display:block; + height:35px; + width:400px; + margin:8px; + border:1px dashed #bbb; + background-color:#f5f5f5; +} + +#swpm-main .swpm-sortable-placeholder{ + float:left; + margin:8px; + height:200px; + width:210px; +} + +.rtl #swpm-main .swpm-sortable-placeholder { + float: right; +} + +#swpm-menu-to-edit .mjs-nestedSortable-error{ + border-color:red; + background-color:#fbe3e4; + color:#8a1f11; +} +.swpm-meta-entries-total span, +.swpm-meta-entries-total-today span{ + font-size: 11px; + font-weight: bold; + height: 1.4em; + line-height: 1.4em; + min-width: .7em; + padding: 0 6px; + display: inline-block; + border-radius: 5px; + background-color: #bbb; + color: white; + text-align: center; +} + +.swpm-meta-entries-total:hover span, +.swpm-meta-entries-total-today:hover span{ + background-color: #d54e21; +} +.fixed .column-entries, +.fixed .column-form_id { + width: 8em; +} + +strong .swpm-meta-entries-total span { + background-color: #21759B; +} + +.entries-count-wrapper { + font-family: sans-serif; + min-width: 22px; + padding-bottom: 1px; +} + +/* !New Form box */ +#new-form{ + margin:8px 0; + padding-top:10px; + width:75px; + height:105px; + text-align: center; +} +#new-form a{ + display:block; + width:auto; + text-decoration: none; +} + +#post-body{ + padding: 10px; + background: white; +} + +/* !Form Editor columns */ +.swpm-postbox-container{ + float:left; + margin:0 8px; + width:100%; +} + +.rtl .swpm-postbox-container { + float: right; +} + +#swpm-postbox-container-1 .postbox{ + min-width:281px; +} + +#swpm-postbox-container-2{ + min-width: 485px; +} + +#swpm-form-builder-frame.columns-1{ + margin-left:-8px; +} + +.rtl #swpm-form-builder-frame.columns-1 { + margin-left: 0; + margin-right: -8px; +} + +#swpm-form-builder-frame.columns-1 #swpm-postbox-container-1{ + float:none; +} + +#swpm-form-builder-frame.columns-1 #swpm-postbox-container-2{ + width:99%; +} + +#swpm-form-builder-frame.columns-2 #swpm-postbox-container-3{ + display:none; +} + +#swpm-form-builder-frame.columns-2 #swpm-postbox-container-1, +#swpm-form-builder-frame.columns-3 #swpm-postbox-container-1{ + margin-left:-290px; + width:281px; +} + +.rtl #swpm-form-builder-frame.columns-2 #swpm-postbox-container-1, +.rtl #swpm-form-builder-frame.columns-3 #swpm-postbox-container-1{ + margin-left: 0; + margin-right: -290px; +} + +#swpm-form-builder-frame.columns-3 #swpm-form-builder-management{ + margin-right: 0; +} + +#swpm-form-builder-frame.columns-3 #swpm-postbox-container-2{ + width:30%; +} + +#swpm-form-builder-frame.columns-3 #swpm-postbox-container-3{ + display:inline; + margin-right:0; + width:46.5%; +} + +.rtl #swpm-form-builder-frame.columns-3 #swpm-postbox-container-3{ + margin-right: 0; + margin-left: 0; +} + +#swpm-form-meta-preview iframe{ + width:100%; + height: 100%; +} + +#swpm_form_media_button_tip input { + width: 100%; + border: 0; + padding: 6px; + font-family: Consolas, Monaco, monospace; + font-size: 12px; +} + +/* !Form Editor Columns - One Column */ +@media only screen and (max-width: 799px) { + #swpm-form-builder-frame .swpm-postbox-container { + width: 100%; + } + .columns-prefs .columns-prefs-3{ + display: none; + } +} + +/* !Form Editor Columns - Two Columns */ +@media only screen and (min-width: 800px) and (max-width: 1200px) { + #swpm-form-builder-frame .swpm-postbox-container { + width: 49.5%; + } + + #swpm-form-builder-frame.columns-3 #swpm-postbox-container-2, + #swpm-form-builder-frame.columns-3 #swpm-postbox-container-3{ + width: 50.5%; + } + + #swpm-form-builder-frame.columns-1 .swpm-postbox-container { + width: 100%; + } +} +/* !Form Editor Columns - Three Columns */ +@media only screen and (min-width: 1600px) { + #swpm-form-builder-frame.columns-3 #swpm-postbox-container-3{ + width: 58%; + } +} + +/* !Field Item arrows */ +.item-edit { + position: absolute; + top: 3px; + right: -20px; + display: block; + overflow: hidden; + width:30px; + height: 40px; + background:url('../images/arrows.png?d=20130703') no-repeat scroll 8px 10px transparent; + text-indent:-999em; +} + +/* Blue Admin style */ +.admin-color-classic .item-edit { + background: url('../images/arrows-vs.png?d=20130703') no-repeat scroll 8px 10px transparent; +} + +.rtl .item-edit { + right: auto; + left: -20px; +} + +.item-edit:hover{ + background:url('../images/arrows-dark.png?d=20130703') no-repeat scroll 8px 10px transparent; +} + +/* Blue Admin style */ +.admin-color-classic .item-edit:hover { + background: url('../images/arrows-dark-vs.png?d=20130703') no-repeat scroll 8px 10px transparent; +} + +.item-edit.opened{ + background:url('../images/arrows.png?d=20130703') no-repeat scroll 8px -25px transparent; +} + +/* Blue Admin style */ +.admin-color-classic .item-edit.opened { + background: url('../images/arrows-vs.png?d=20130703') no-repeat scroll 8px -25px transparent; +} + +.item-edit.opened:hover{ + background:url('../images/arrows-dark.png?d=20130703') no-repeat scroll 8px -25px transparent; +} + +/* Blue Admin style */ +.admin-color-classic .item-edit.opened:hover { + background: url('../images/arrows-dark-vs.png?d=20130703') no-repeat scroll 8px -25px transparent; +} + +/* !Field Item attribute input styles */ +.option .widefat, +.options-other-show .widefat, +.options-other-hide .widefat { + margin: 0 6px 7px 0; + width: 320px; +} + +.rtl .option .widefat, +.rtl .options-other-show .widefat, +.rtl .options-other-hide .widefat { + margin: 0 0 7px 6px; +} + +#form-settings .description-thin{ + margin:12px 10px 12px 0; +} + +.rtl #form-settings .description-thin { + margin: 12px 0 12px 10px; +} + +.description-thin, +.description-wide { + float: left; + margin-right: 10px; +} + +.rtl .description-thin, +.rtl .description-wide { + float: right; + margin-right: 0; + margin-left: 10px; +} + +.description-thin { + width: 190px; + height: 40px; +} + +.description-wide { + width: 390px; +} + +/* Interface icons */ +.swpm-interface-icon { + position: absolute; + top: 4px; + right: 4px; + display: inline-block; + width: 16px; + height: 16px; + background-color: transparent; + background-image: url('../images/swpm-interface-icons.png?d=20130713'); + background-repeat: no-repeat; + text-indent: -9999px; +} + +.swpm-interface-settings { background-position: -32px 0;} +.swpm-interface-duplicate { background-position: 0 0;} +.swpm-interface-trash { background-position: -64px 0;} +.swpm-interface-conditional { background-position: -224px 0;} +.swpm-interface-sort { background-position: -128px 0;} +.swpm-interface-plus { background-position: -160px 0;} +.swpm-interface-minus { background-position: -192px 0;} +.swpm-interface-bulk-add { background-position: -96px 0;} + +.swpm-interface-plus, +.swpm-interface-minus { + top: 0; +} + +/* Form Settings add/delete emails */ +.addEmail, +.deleteEmail { + top: 28px; +} +.addEmail { + right: 55px; +} + +.rtl .addEmail { + right: auto; + left: 55px; +} + +.deleteEmail { + right: 30px; +} + +.rtl .deleteEmail { + right: auto; + left: 30px; +} + +/* Form item delete/sort options */ +.deleteOption, +.swpm-interface-sort, +.addCondition, +.deleteCondition { + top: 3px; +} + +.deleteOption, +.addCondition { + right: 25px; +} + +.rtl .deleteOption, +.rtl .addCondition { + right: auto; + left: 25px; +} + +.swpm-interface-sort, +.deleteCondition { + right: 0; +} + +.rtl .swpm-interface-sort, +.rtl .deleteCondition { + right: auto; + left: 0; +} + +.swpm-interface-sort:hover { + cursor: pointer; +} + +.option { + float: left; + width: 97%; + position: relative; +} + +.rtl .option { + float: right; +} + +#swpm-poststuff{ + display:block; + margin-right:300px; +} + +.rtl #swpm-poststuff { + margin-right: 0; + margin-left: 300px; +} + +#swpm-entries-body-content{ + float:left; + width:100%; +} + +.rtl #swpm-entries-body-content { + float: right; +} + +.metabox-holder #swpm-entries-body-content h3{ + font-weight: bold; + font-family: sans-serif; +} + +#entry-edit #side-info-column{ + margin-right:-300px; +} + +.rtl #entry-edit #side-info-column { + margin-right: 0; + margin-left: -300px; +} + +label.error{ + display:block; + color:red; +} + +#visual-form-builder-update input.error, +#visual-form-builder-update textarea.error, +#visual-form-builder-update select.error{ + border:1px solid red; +} + +#swpm-menu-to-edit .menu-item-settings { + width: 402px; +} + +.swpm-menu-item-handle { + background: white; + border: 1px solid #DFDFDF; + border-radius: 3px; + height: auto; + line-height: 35px; + overflow: hidden; + padding: 10px 15px; + position: relative; + text-shadow: 0 1px 0 #FFFFFF; + width: 382px; + word-wrap: break-word; + cursor: move; +} + +.swpm-menu-item-handle:hover { + border-color: #999; +} + +/* Blue Admin style */ +.admin-color-classic .swpm-menu-item-handle { + background: #F5FAFD; + box-shadow: 0 1px 0 #FFFFFF inset; + border-color: #D0DFE9; +} + +.rtl .swpm-menu-item-handle { + padding-left: 0; + padding-right: 10px; +} + +.swpm-menu-item-type-fieldset, +.swpm-menu-item-type-verification, +#form-element-fieldset { + background: #e3e3e3; + box-shadow:0 1px 0 #e3e3e3 inset; +} + +/* Blue Admin style */ +.admin-color-classic .swpm-menu-item-type-fieldset, +.admin-color-classic .swpm-menu-item-type-verification, +.admin-color-classic #form-element-fieldset { + background: #e2f3ff; + box-shadow: 0 1px 0 #FFFFFF inset; +} + +.swpm-menu-item-handle .item-title { + min-height: 20px; + display: block; + font-size: 12px; + font-weight: bold; + line-height: 20px; + margin-right: 13em; +} + +.rtl .swpm-menu-item-handle .item-title { + margin-right: 0; + margin-left: 13em; +} + +.swpm-menu-item-active .swpm-menu-item-handle { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +.sender-labels{ + width:80px; +} + +.is-field-required{ + color:#BC1212; +} + +#form-details-nav{ + padding-top:10px; + font-size:1.0em; +} +#form-details-nav a, +.charts-nav a{ + padding:5px 10px; + text-decoration:none; + font-weight:bold; +} + +#form-details-nav a.current, +.charts-nav a.current{ + height:40px; + border-color: #dfdfdf; + border-radius:5px; + background-color:#777; + background-image: -ms-linear-gradient(bottom, #6d6d6d, #808080); + background-image: -moz-linear-gradient(bottom, #6d6d6d, #808080); + background-image: -o-linear-gradient(bottom, #6d6d6d, #808080); + background-image: -webkit-gradient(linear, left bottom, left top, from(#6d6d6d), to(#808080)); + background-image: -webkit-linear-gradient(bottom, #6d6d6d, #808080); + background-image: linear-gradient(bottom, #6d6d6d, #808080); + color:white; + text-shadow:0 -1px 0 #333333; +} + +/* !Form Settings - Confirmation */ +.form-details, +#form-success-message-text, +#form-success-message-page, +#form-success-message-redirect{ + display:none; +} + +.form-details-current, .active{ + display:block; +} + +#confirmation-message textarea, +#notification textarea{ + width:100%; + height:10em; + font-family:Consolas,Monaco,monospace; +} + +#form-success-message-page, +#form-success-message-redirect{ + margin-top:10px; + width:100%; +} + +.post-body-plain ol li{ + list-style:decimal; +} + +#swpm-upgrade-column { + display: inline; + float: left; + width: auto; +} + +.rtl #swpm-upgrade-column { + float: right; +} + +ul#promote-swpm { + margin-left: 20px; + list-style: disc; +} + +.rtl ul#promote-swpm { + margin-left: auto; + margin-right: 20px; +} + +#promote-swpm li { + text-align: left; +} + +.rtl #promote-swpm li { + text-align: right; +} + +.menu .ui-nestedSortable-error { + background-color: #fbe3e4; + border-color: red; + color: #8a1f11; +} + +ul#swpm-menu-to-edit ul{ + margin: 0 0 0 25px; + padding: 0; + width:98%; + list-style-type: none; +} +#swpm-menu-to-edit{ + margin-top:0; + padding:1em 0; +} + +#swpm-fieldset-first-warning{ + display: none; +} + +.ui-state-disabled, +.ui-state-disabled dl, +.ui-state-disabled dt, +.form-item.ui-state-disabled { + opacity: 100; + filter: alpha(Opacity=100); + background-image: none; +} + +.ui-state-disabled .swpm-menu-item-handle, +.ui-state-disabled .menu-item-handle { + background: #dfdfdf; + box-shadow: none; + cursor: default; +} + +.swpm-details{ + margin-bottom:10px; + padding:0 10px; + border:1px solid #ccc; + border-radius:3px; +} + +.swpm-details.section{ + width:97.55%; + background-color:#efefef; +} + +.swpm-details .postbox{ + min-height:60px; +} + +#poststuff .swpm-details h2{ + margin-top:0; +} + +#poststuff h3.section-heading{ + padding-left:0; +} + +/* !Form Items */ +#form-items .tabs-panel{ + overflow: visible; + padding: 0.5em 0 0.5em 4px; + min-height: 325px; + height: auto; +} + +.rtl #form-items .tabs-panel { + padding: 0.5em 4px 0.5em 0; +} + +ul.swpm-fields-col-1, +ul.swpm-fields-col-2{ + float:left; + width:50%; + list-style: none; +} + +.rtl ul.swpm-fields-col-1, +.rtl ul.swpm-fields-col-2 { + float: right; +} + +#swpm-form-builder-frame.columns-1 #swpm-postbox-container-1 #form-items .tabs-panel{ + height:auto; +} + +.swpm-draggable-form-items{ + position: relative; + position: relative; + display: block; + margin-right: 8px; + padding:4px 0 4px 34px; + border:1px solid #bbb; + border-radius: 3px; + color:#464646; + text-align: left; + text-decoration: none; + font-size: 12px; +} + +.rtl .swpm-draggable-form-items { + margin-right: 0; + margin-left: 8px; + padding: 4px 34px 4px 10px; +} + +.swpm-draggable-form-items:hover{ + border-color:#aaaaaa; +} + +.swpm-draggable-form-items b{ + position: absolute; + left:8px; + display: inline-block; + width:16px; + height:16px; + background-color: transparent; + background-image: url('../images/swpm-form-items.png?d=20130712'); + background-repeat: no-repeat; + line-height: 16px; +} + +.rtl .swpm-draggable-form-items b { + left: auto; + right: 8px; +} + +#form-element-address b{ background-position: -128px 0;} +#form-element-autocomplete b{ background-position: -384px 0;} +#form-element-checkbox b{ background-position: -672px 0;} +#form-element-color b{ background-position: 0 0;} +#form-element-currency b{ background-position: -64px 0;} +#form-element-datepicker b{ background-position: -224px 0;} +#form-element-digits b{ background-position: -832px 0;} +#form-element-email b{ background-position: -160px 0;} +#form-element-file b{ background-position: -512px 0;} +#form-element-hidden b{ background-position: -544px 0;} +#form-element-html b{ background-position: -800px 0;} +#form-element-instructions b{ background-position: -256px 0;} +#form-element-ip b{ background-position: -448px 0;} +#form-element-max b{ background-position: -576px 0;} +#form-element-min b{ background-position: -608px 0;} +#form-element-name b{ background-position: -320px 0;} +#form-element-pagebreak b{ background-position: -768px 0;} +#form-element-password b{ background-position: -352px 0;} +#form-element-phone b{ background-position: -96px 0;} +#form-element-radio b{ background-position: -704px 0;} +#form-element-range b{ background-position: -640px 0;} +#form-element-select b{ background-position: -416px 0;} +#form-element-text b{ background-position: -736px 0;} +#form-element-textarea b{ background-position: -32px 0;} +#form-element-time b{ background-position: -192px 0;} +#form-element-username b{ background-position: -288px 0;} +#form-element-url b{ background-position: -480px 0;} + +.static-vars-inactive{ + display:none; +} + +.static-vars-active{ + display:block; +} + +/* !Form Settings buttons */ +.swpm-button { + position: relative; + display: inline-block; + overflow: visible; + margin: 0; + padding:0.5em 2.5em 0.5em 1em; + outline: none; + border: 1px solid #d4d4d4; + border-radius: 0.2em; + background-color: #f5f5f5; + color: #333; + text-decoration: none; + white-space: nowrap; + font:12px/normal sans-serif; + cursor: pointer; + zoom: 1; + -webkit-background-clip: padding; + -moz-background-clip: padding; + -o-background-clip: padding-box; + *display: inline; +} + +.swpm-button:hover, +.swpm-button:active, +.swpm-button.current { + border-color: #929292; + border-bottom-color: #929292; + background-color: #eeeeee; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#eeeeee), to(#cccccc)); + background-image: -moz-linear-gradient(#eeeeee, #cccccc); + background-image: -o-linear-gradient(#eeeeee, #cccccc); + background-image: linear-gradient(#eeeeee, #cccccc); + color: #000; +} + +.swpm-button.current{ + font-weight:bold; +} + +.swpm-button::-moz-focus-inner { + padding: 0; + border: 0; +} + +.swpm-button.swpm-settings:hover, +.swpm-button.swpm-settings:focus, +.swpm-button.swpm-settings:active { + color: #3072b3; +} + +.swpm-button.swpm-delete:hover, +.swpm-button.swpm-delete:focus, +.swpm-button.swpm-delete:active { + color: #900; +} + +.swpm-button.swpm-duplicate:hover, +.swpm-button.swpm-duplicate:focus, +.swpm-button.swpm-duplicate:active { + color: #008e0d; +} + +.swpm-button.swpm-conditional-fields:hover, +.swpm-button.swpm-conditional-fields:focus, +.swpm-button.swpm-conditional-fields:active { + +} + +.swpm-button-group{ + display:inline-block; + margin: 10px 0; + list-style:none; +} + +.rtl .swpm-button-group { + margin-left: -2px; +} + +.swpm-button-group .swpm-button{ + float:left; + margin-right: 5px; +} + +.rtl .swpm-button-group .swpm-button { + float: right; + margin-right: 0; + margin-left: 5px; +} + +.swpm-button-group .button-primary { + margin-top: 2px; +} + +.swpm-item-actions{ + margin-right: 10px; + margin-bottom: 10px; + text-align: center; +} + +.rtl .swpm-item-actions { + margin-right: 0; + margin-left: 10px; +} + +.swpm-item-actions .swpm-delete{ + float:left; +} + +.rtl .swpm-item-actions .swpm-delete { + float: right; +} + +.swpm-item-actions .swpm-conditional-fields{ + float:right; +} + +.rtl .swpm-item-actions .swpm-conditional-fields { + float: left; +} + +.swpm-item-actions .swpm-delete, +.swpm-item-actions .swpm-duplicate, +.swpm-item-actions .swpm-conditional-fields{ + margin-top: 10px; +} + +#form-settings{ + display:none; + width: 100%; + max-width: 460px; + margin-bottom: 15px; + border-bottom: 1px solid #D6D6D6; +} + +#form-settings.current{ + display:block; +} + +.form-details{ + padding:20px; + background: rgb( 255, 255, 255 ); + background: rgba(255, 255, 255, 0.5); + border-left: 1px solid #D6D6D6; + border-right: 1px solid #D6D6D6; +} + +.form-details.on{ + display:block; +} + +.settings-links{ + position: relative; + z-index: 1; + display: block; + padding: 5px 15px; + height: 25px; + background: #f5f5f5; + border-top: 1px solid #cccccc; + border-left: 1px solid #cccccc; + border-right: 1px solid #cccccc; + color: #333333; + text-decoration:none; + text-transform:uppercase; + text-shadow: 0 1px 0 #FFFFFF; + font-weight: normal; + font-size: 15px; + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; + line-height: 25px; + cursor: pointer; +} + +.settings-links .swpm-large-arrow{ + position: absolute; + top: 16px; + right: 25px; + width: 5px; + height: 0; + z-index: 1; +} + +.settings-links .swpm-large-arrow:after { + content: ''; + width: 0; + height: 0; + border-color: #ccc transparent; + border-style: solid; + border-width: 6px 6px 0; + position: absolute; + z-index: 1; +} + +.rtl .settings-links .swpm-large-arrow { + right: auto; + left: 13px; +} + +.settings-links.on { + border-bottom: 1px solid #808080; +} + +.settings-links:hover, +.settings-links.on { + background: #808080; + color: #ffffff; + text-shadow: 0 -1px 0 #333333; +} + +.settings-links:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} + +/* !Help tooltip popups */ +.swpm-tooltip{ + position: relative; + float: right; + margin-right: 2px; + width: 16px; + height: 16px; + cursor: pointer; +} + +.rtl .swpm-tooltip { + float: left; + margin-right: 0; + margin-left: 2px; +} + +.swpm-tooltip-popup { + position: absolute; + top: -40px; + z-index: 200; + display: none; + padding: 5px 20px; + width: 250px; + border: 2px solid #333; + border-radius: 5px; + background: #222; + box-shadow: 0 0 7px black; + color: white; + text-indent: 0; + font-style: normal; +} + +.swpm-tooltip-popup h3, +.swpm-tooltip .swpm-tooltip-popup h3{ + margin: 5px 0; + padding: 0 0 6px 0; + border-bottom: 1px solid white; + color: white; + font-weight: normal; + font-size: 13px; + font-family: sans-serif; +} + +.swpm-tooltip-popup p{ + margin-top:1 0px; + color: white; + font-size: 12px; +} + +/* !Bulk Add Options */ +.swpm-add-options-group { + display: inline-block; + margin: 10px 0; + list-style: none; + text-align: center; + width: 95%; +} + +.swpm-add-options-group .swpm-interface-plus { + top: 4px; +} + +/* !Import/Export */ +.swpm-export-label { + width: 10em; + float: left; +} + +.rtl .swpm-export-label { + float: right; +} + +#swpm-export-entries-fields { + height:275px; + width:300px; + overflow: auto; + display: block; + border:1px solid #e8e8e8; + border-radius: 3px; + margin-left: 10em; + padding: 5px; + background: white; +} + +#swpm-export-select-all, +#swpm-export-unselect-all { + width: 150px; + display: inline-block; + text-align: left; +} + +#swpm-export-unselect-all { + text-align: right; + margin-left: 5px; +} + + +@media print { + body * { + float: none; + } + + html, + .wrap, + #wpbody-content, + #swpm-poststuff { + background: none !important; + padding: 0; + margin: 0; + height: auto; + } + + #wpadminbar, + #adminmenuwrap, + #adminmenushadow, + #adminmenuback, + .screen-reader-shortcut, + #screen-meta, + #screen-meta-links, + #wpfooter, + #icon-options-general, + .wrap h2, + .view-entry, + #major-publishing-actions, + .clear { + display: none; + } + + #wpcontent, + body #wpcontent { + margin-left: 0; + width: auto; + height: auto; + } + + #entry-edit h3 span { + font-size: 23px; + font-weight: normal; + } + + #swpm-poststuff { + page-break-after: auto; + } + + #swpm-entries-body-content { + width: 100%; + height: auto; + margin: 0 0 50px 0; + padding: 0; + } + + #side-info-column{ + width: 100%; + height: auto; + float: none; + } + + #side-info-column .postbox .inside { + margin: 0; + padding: 0; + } + + #minor-publishing, + .misc-pub-section, + #submitdiv, + #submitdiv h3 { + background: none !important; + border: none; + margin: 0; + } + + #submitdiv h3 span { + font-family: sans-serif; + font-size: 16px; + } + + .inner-sidebar #side-sortables, + .columns-2 .inner-sidebar #side-sortables { + margin: 0; + padding: 0; + width: auto; + } + + table { + page-break-inside: auto; + } + + tr textarea { + overflow: visible; + } +} + +/* !HiDPI Displays */ +@media print, +(-o-min-device-pixel-ratio: 5/4), +(-webkit-min-device-pixel-ratio: 1.25), +(min-resolution: 120dpi) { + + /* Interface icons */ + .swpm-interface-icon { + top: 5px; + background-image: url( '../images/swpm-interface-icons-2x.png?d=20130712' ); + background-size: cover; + } + + /* Form items */ + .swpm-draggable-form-items b { + background-image: url( '../images/swpm-form-items-2x.png?d=20130712' ); + background-size: cover; + } + + .swpm-add-options-group .swpm-interface-plus { + top: 5px; + } + + .addEmail, + .deleteEmail { + top: 28px; + } + + /* Field Item arrows */ + .item-edit { + background-image: url('../images/arrows-2x.png?d=20130611'); + background-size: 15px 123px; + } + + /* Blue Admin style */ + .admin-color-classic .item-edit { + background-image: url('../images/arrows-vs-2x.png?d=20130611'); + background-size: 15px 123px; + } + + .item-edit:hover{ + background-image: url('../images/arrows-dark-2x.png?d=20130611'); + background-size: 15px 123px; + } + + /* Blue Admin style */ + .admin-color-classic .item-edit:hover { + background-image: url('../images/arrows-dark-vs-2x.png?d=20130611'); + background-size: 15px 123px; + } + + .item-edit.opened{ + background-image: url('../images/arrows-2x.png?d=20130611'); + background-size: 15px 123px; + } + + /* Blue Admin style */ + .admin-color-classic .item-edit.opened { + background-image: url('../images/arrows-vs-2x.png?d=20130611'); + background-size: 15px 123px; + } + + .item-edit.opened:hover{ + background-image: url('../images/arrows-dark-2x.png?d=20130611'); + background-size: 15px 123px; + } + + /* Blue Admin style */ + .admin-color-classic .item-edit.opened:hover { + background-image: url('../images/arrows-dark-vs-2x.png?d=20130611'); + background-size: 15px 123px; + } + + /* Form Settings arrow */ + .button-icon.swpm-small-arrow{ + background-image: url('../images/arrows-2x.png?d=20130611'); + background-size: 15px 123px; + } + + /* Blue Admin style */ + .admin-color-classic .button-icon.swpm-small-arrow { + background-image: url('../images/arrows-vs-2x.png?d=20130611'); + background-size: 15px 123px; + } + + .current .button-icon.swpm-small-arrow{ + background-image: url('../images/arrows-2x.png?d=20130611'); + background-size: 15px 123px; + } + + /* Blue Admin style */ + .admin-color-classic .current .button-icon.swpm-small-arrow { + background-image: url('../images/arrows-vs.png?d=20130611'); + background-size: 15px 123px; + } +} \ No newline at end of file diff --git a/css/swpm-form-builder-admin.min.css b/css/swpm-form-builder-admin.min.css new file mode 100644 index 0000000..3ef9b77 --- /dev/null +++ b/css/swpm-form-builder-admin.min.css @@ -0,0 +1 @@ +.swpm-pro-call-to-action{padding:5px 0;text-align:center}.swpm-btn{display:inline-block;*display:inline;*zoom:1;padding:15px 10px;margin-bottom:0;line-height:20px;text-align:center;vertical-align:middle;cursor:pointer;color:#333;font-size:21px;font-weight:500;text-shadow:0 1px 1px rgba(255,255,255,0.75);background-color:#f5f5f5;background-repeat:repeat-x;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);*background-color:#e6e6e6;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);border:1px solid #ccc;*border:0;border-bottom-color:#b3b3b3;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;*margin-left:.3em;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);text-decoration:none}.swpm-btn:hover,.swpm-btn:focus{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.swpm-btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.swpm-btn.active,.swpm-btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05)}.swpm-btn-primary.active{color:rgba(255,255,255,0.75)}.swpm-btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#006dcc;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0044cc',GradientType=0);border-color:#04c #0044cc #002a80;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);*background-color:#04c;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.swpm-btn-primary:hover,.swpm-btn-primary:focus,.swpm-btn-primary:active,.swpm-btn-primary.active,.swpm-btn-primary.disabled,.swpm-btn-primary[disabled]{color:#fff;background-color:#04c;*background-color:#003bb3}.swpm-btn-primary:active,.swpm-btn-primary.active{background-color:#039 \9}.swpm-btn-inverse{background-color:#363636;background-repeat:repeat-x;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.swpm-btn-inverse:hover,.swpm-btn-inverse:focus,.swpm-btn-inverse:active,.swpm-btn-inverse.active,.swpm-btn-inverse.disabled,.swpm-btn-inverse[disabled]{background-color:#222;color:#fff}.swpm-pro-call-to-action .cta-sign-up{color:#fff;display:block;font-size:24px;font-weight:bold;text-align:center;text-decoration:none;text-shadow:1px 1px 1px #2b658c;width:100%;line-height:22px}.swpm-pro-call-to-action .cta-price{color:#ace7ff;display:block;font-size:12px;font-weight:normal;line-height:20px;text-align:center;text-decoration:none;width:100%;line-height:20px}.swpm-pro-upgrade{display:inline;float:left;padding:10px;margin-bottom:20px;background-color:#d3e7ee;border:1px solid #21759b;border-radius:5px}.rtl .swpm-pro-upgrade{float:right}.swpm-pro-upgrade h2,.wrap .swpm-pro-upgrade h2{font-size:23px;font-weight:500;padding:5px 0;text-align:center}.swpm-pro-upgrade h2 a{text-decoration:none}.swpm-pro-upgrade ul{list-style:outside;margin-left:10px}.rtl .swpm-pro-upgrade ul{margin-left:0;margin-right:10px}#swpm-form-builder-frame{display:block;margin:0 -8px 0 290px}.rtl #swpm-form-builder-frame{margin:0 290px 0 -8px}#swpm-form-builder-frame:after,#form-editor-header .swpm-major-publishing-actions:after,#form-editor-footer .swpm-major-publishing-actions:after,#swpm-form-builder-frame .menu-item-settings:after,#swpm-form-list:after,.option:after{display:block;visibility:hidden;clear:both;height:0;content:"."}#swpm-form-builder-sidebar{clear:both;width:281px}#swpm-form-builder-management{position:relative;margin-right:10px}.rtl #swpm-form-builder-management{margin-right:0;margin-left:10px}#swpm-form-builder-management .form-edit{margin-bottom:20px;border:1px solid #dfdfdf;border-radius:3px}.admin-color-classic #swpm-form-builder-management .form-edit{border-color:#d0dfe9}#form-editor-header,#form-editor-footer{padding:0 10px;background-color:#f1f1f1}#form-editor-footer{border-top:1px solid #dfdfdf}.admin-color-classic #form-editor-header,.admin-color-classic #form-editor-footer{background-color:#f5fafd}.admin-color-class #form-editor-footer{border-top-color:#d0dfe9}.swpm-major-publishing-actions{clear:both;padding:3px 0 5px}.swpm-major-publishing-actions .publishing-action{float:right;margin:5px 0 1px;text-align:right;line-height:23px}#form-editor-header .publishing-action{margin-top:12px}.sub-navigation{float:none;margin:8px 0 5px;padding:0;list-style:none;white-space:nowrap;font-size:12px}.sub-navigation li{display:inline;margin:0;padding:0}.sub-navigation a{padding:.2em;text-decoration:none;line-height:2}.sub-navigation a.current{border:medium none;background:0;color:black;font-weight:bold}.sub-navigation a:hover{color:#d54e21}#swpm-sidebar,#swpm-main{float:left;margin:10px 0;width:280px}.rtl #swpm-sidebar,.rtl #swpm-main{float:right}#swpm-main{width:auto}#swpm-main.swpm-order-type-list{width:100%}#swpm-main p a,#swpm-main h3 a{text-decoration:none}#swpm-main .submitdelete{color:#bc0b0b;text-decoration:none}#swpm-main .submitdelete:hover{color:red}#swpm-sidebar{margin-left:-300px}.rtl #swpm-sidebar{margin-left:0;margin-right:-300px}#swpm-form-list{display:block;margin-left:300px}.rtl #swpm-form-list{margin-left:0;margin-right:300px}.swpm-box{position:relative;float:left;padding:0 10px;border:1px solid #dfdfdf;border-radius:3px 3px 3px 3px;background-color:#f5f5f5;background:-moz-linear-gradient(top,#fff 0,#f5f5f5 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#fff),color-stop(100%,#f5f5f5));background:-webkit-linear-gradient(top,#fff 0,#f5f5f5 100%);background:-o-linear-gradient(top,#fff 0,#f5f5f5 100%);background:-ms-linear-gradient(top,#fff 0,#f5f5f5 100%);background:linear-gradient(to bottom,#fff 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#f5f5f5',GradientType=0);box-shadow:0 1px 0 #fff inset;line-height:1.4em}.swpm-form-alpha-list{width:70%;float:left;padding-right:20px}.rtl .swpm-form-alpha-list{float:right;padding-right:0;padding-left:20px}.swpm-form-alpha-list hr{display:block;margin:1em 0;padding:0;height:1px;border:0;border-top:1px solid #ccc}.swpm-form-alpha-group .letter,.wrap h2.letter{float:left;padding:0;color:#666;font-size:14px;line-height:17px}.swpm-form-alpha-form{display:block;margin:10px 0;padding-left:150px;width:auto}.swpm-form-alpha-form h3{float:left;margin:0;width:50%;word-wrap:break-word;font-size:17px}.swpm-form-alpha-form .swpm-publishing-actions,.swpm-form-alpha-form .swpm-form-meta{float:left;width:20%;text-align:center}.swpm-form-alpha-form .swpm-form-meta{width:30%}.swpm-form-alpha-form .swpm-publishing-actions p,.swpm-form-alpha-form .swpm-form-meta p{margin:0}.swpm-form-alpha-form .swpm-form-meta,.swpm-form-alpha-form .paypal{float:left;margin:0;text-align:left}.rtl .swpm-form-alpha-form .swpm-form-meta,.rtl .swpm-form-alpha-form .paypal{float:right;text-align:right}.swpm-sortable-placeholder{display:block;height:35px;width:400px;margin:8px;border:1px dashed #bbb;background-color:#f5f5f5}#swpm-main .swpm-sortable-placeholder{float:left;margin:8px;height:200px;width:210px}.rtl #swpm-main .swpm-sortable-placeholder{float:right}#swpm-menu-to-edit .mjs-nestedSortable-error{border-color:red;background-color:#fbe3e4;color:#8a1f11}.swpm-meta-entries-total span,.swpm-meta-entries-total-today span{font-size:11px;font-weight:bold;height:1.4em;line-height:1.4em;min-width:.7em;padding:0 6px;display:inline-block;border-radius:5px;background-color:#bbb;color:white;text-align:center}.swpm-meta-entries-total:hover span,.swpm-meta-entries-total-today:hover span{background-color:#d54e21}.fixed .column-entries,.fixed .column-form_id{width:8em}strong .swpm-meta-entries-total span{background-color:#21759b}.entries-count-wrapper{font-family:sans-serif;min-width:22px;padding-bottom:1px}#new-form{margin:8px 0;padding-top:10px;width:75px;height:105px;text-align:center}#new-form a{display:block;width:auto;text-decoration:none}#post-body{padding:10px;background:white}.swpm-postbox-container{float:left;margin:0 8px;width:100%}.rtl .swpm-postbox-container{float:right}#swpm-postbox-container-1 .postbox{min-width:281px}#swpm-postbox-container-2{min-width:485px}#swpm-form-builder-frame.columns-1{margin-left:-8px}.rtl #swpm-form-builder-frame.columns-1{margin-left:0;margin-right:-8px}#swpm-form-builder-frame.columns-1 #swpm-postbox-container-1{float:none}#swpm-form-builder-frame.columns-1 #swpm-postbox-container-2{width:99%}#swpm-form-builder-frame.columns-2 #swpm-postbox-container-3{display:none}#swpm-form-builder-frame.columns-2 #swpm-postbox-container-1,#swpm-form-builder-frame.columns-3 #swpm-postbox-container-1{margin-left:-290px;width:281px}.rtl #swpm-form-builder-frame.columns-2 #swpm-postbox-container-1,.rtl #swpm-form-builder-frame.columns-3 #swpm-postbox-container-1{margin-left:0;margin-right:-290px}#swpm-form-builder-frame.columns-3 #swpm-form-builder-management{margin-right:0}#swpm-form-builder-frame.columns-3 #swpm-postbox-container-2{width:30%}#swpm-form-builder-frame.columns-3 #swpm-postbox-container-3{display:inline;margin-right:0;width:46.5%}.rtl #swpm-form-builder-frame.columns-3 #swpm-postbox-container-3{margin-right:0;margin-left:0}#swpm-form-meta-preview iframe{width:100%;height:100%}#swpm_form_media_button_tip input{width:100%;border:0;padding:6px;font-family:Consolas,Monaco,monospace;font-size:12px}@media only screen and (max-width:799px){#swpm-form-builder-frame .swpm-postbox-container{width:100%}.columns-prefs .columns-prefs-3{display:none}}@media only screen and (min-width:800px) and (max-width:1200px){#swpm-form-builder-frame .swpm-postbox-container{width:49.5%}#swpm-form-builder-frame.columns-3 #swpm-postbox-container-2,#swpm-form-builder-frame.columns-3 #swpm-postbox-container-3{width:50.5%}#swpm-form-builder-frame.columns-1 .swpm-postbox-container{width:100%}}@media only screen and (min-width:1600px){#swpm-form-builder-frame.columns-3 #swpm-postbox-container-3{width:58%}}.item-edit{position:absolute;top:3px;right:-20px;display:block;overflow:hidden;width:30px;height:40px;background:url('../images/arrows.png?d=20130703') no-repeat scroll 8px 10px transparent;text-indent:-999em}.admin-color-classic .item-edit{background:url('../images/arrows-vs.png?d=20130703') no-repeat scroll 8px 10px transparent}.rtl .item-edit{right:auto;left:-20px}.item-edit:hover{background:url('../images/arrows-dark.png?d=20130703') no-repeat scroll 8px 10px transparent}.admin-color-classic .item-edit:hover{background:url('../images/arrows-dark-vs.png?d=20130703') no-repeat scroll 8px 10px transparent}.item-edit.opened{background:url('../images/arrows.png?d=20130703') no-repeat scroll 8px -25px transparent}.admin-color-classic .item-edit.opened{background:url('../images/arrows-vs.png?d=20130703') no-repeat scroll 8px -25px transparent}.item-edit.opened:hover{background:url('../images/arrows-dark.png?d=20130703') no-repeat scroll 8px -25px transparent}.admin-color-classic .item-edit.opened:hover{background:url('../images/arrows-dark-vs.png?d=20130703') no-repeat scroll 8px -25px transparent}.option .widefat,.options-other-show .widefat,.options-other-hide .widefat{margin:0 6px 7px 0;width:320px}.rtl .option .widefat,.rtl .options-other-show .widefat,.rtl .options-other-hide .widefat{margin:0 0 7px 6px}#form-settings .description-thin{margin:12px 10px 12px 0}.rtl #form-settings .description-thin{margin:12px 0 12px 10px}.description-thin,.description-wide{float:left;margin-right:10px}.rtl .description-thin,.rtl .description-wide{float:right;margin-right:0;margin-left:10px}.description-thin{width:190px;height:40px}.description-wide{width:390px}.swpm-interface-icon{position:absolute;top:4px;right:4px;display:inline-block;width:16px;height:16px;background-color:transparent;background-image:url('../images/swpm-interface-icons.png?d=20130713');background-repeat:no-repeat;text-indent:-9999px}.swpm-interface-settings{background-position:-32px 0}.swpm-interface-duplicate{background-position:0 0}.swpm-interface-trash{background-position:-64px 0}.swpm-interface-conditional{background-position:-224px 0}.swpm-interface-sort{background-position:-128px 0}.swpm-interface-plus{background-position:-160px 0}.swpm-interface-minus{background-position:-192px 0}.swpm-interface-bulk-add{background-position:-96px 0}.swpm-interface-plus,.swpm-interface-minus{top:0}.addEmail,.deleteEmail{top:28px}.addEmail{right:55px}.rtl .addEmail{right:auto;left:55px}.deleteEmail{right:30px}.rtl .deleteEmail{right:auto;left:30px}.deleteOption,.swpm-interface-sort,.addCondition,.deleteCondition{top:3px}.deleteOption,.addCondition{right:25px}.rtl .deleteOption,.rtl .addCondition{right:auto;left:25px}.swpm-interface-sort,.deleteCondition{right:0}.rtl .swpm-interface-sort,.rtl .deleteCondition{right:auto;left:0}.swpm-interface-sort:hover{cursor:pointer}.option{float:left;width:97%;position:relative}.rtl .option{float:right}#swpm-poststuff{display:block;margin-right:300px}.rtl #swpm-poststuff{margin-right:0;margin-left:300px}#swpm-entries-body-content{float:left;width:100%}.rtl #swpm-entries-body-content{float:right}.metabox-holder #swpm-entries-body-content h3{font-weight:bold;font-family:sans-serif}#entry-edit #side-info-column{margin-right:-300px}.rtl #entry-edit #side-info-column{margin-right:0;margin-left:-300px}label.error{display:block;color:red}#swpm-form-builder-update input.error,#swpm-form-builder-update textarea.error,#swpm-form-builder-update select.error{border:1px solid red}#swpm-menu-to-edit .menu-item-settings{width:402px}.swpm-menu-item-handle{background:white;border:1px solid #dfdfdf;border-radius:3px;height:auto;line-height:35px;overflow:hidden;padding:10px 15px;position:relative;text-shadow:0 1px 0 #fff;width:382px;word-wrap:break-word;cursor:move}.swpm-menu-item-handle:hover{border-color:#999}.admin-color-classic .swpm-menu-item-handle{background:#f5fafd;box-shadow:0 1px 0 #fff inset;border-color:#d0dfe9}.rtl .swpm-menu-item-handle{padding-left:0;padding-right:10px}.swpm-menu-item-type-fieldset,.swpm-menu-item-type-verification,#form-element-fieldset{background:#e3e3e3;box-shadow:0 1px 0 #e3e3e3 inset}.admin-color-classic .swpm-menu-item-type-fieldset,.admin-color-classic .swpm-menu-item-type-verification,.admin-color-classic #form-element-fieldset{background:#e2f3ff;box-shadow:0 1px 0 #fff inset}.swpm-menu-item-handle .item-title{min-height:20px;display:block;font-size:12px;font-weight:bold;line-height:20px;margin-right:13em}.rtl .swpm-menu-item-handle .item-title{margin-right:0;margin-left:13em}.swpm-menu-item-active .swpm-menu-item-handle{border-bottom-left-radius:0;border-bottom-right-radius:0}.sender-labels{width:80px}.is-field-required{color:#bc1212}#form-details-nav{padding-top:10px;font-size:1.0em}#form-details-nav a,.charts-nav a{padding:5px 10px;text-decoration:none;font-weight:bold}#form-details-nav a.current,.charts-nav a.current{height:40px;border-color:#dfdfdf;border-radius:5px;background-color:#777;background-image:-ms-linear-gradient(bottom,#6d6d6d,#808080);background-image:-moz-linear-gradient(bottom,#6d6d6d,#808080);background-image:-o-linear-gradient(bottom,#6d6d6d,#808080);background-image:-webkit-gradient(linear,left bottom,left top,from(#6d6d6d),to(#808080));background-image:-webkit-linear-gradient(bottom,#6d6d6d,#808080);background-image:linear-gradient(bottom,#6d6d6d,#808080);color:white;text-shadow:0 -1px 0 #333}.form-details,#form-success-message-text,#form-success-message-page,#form-success-message-redirect{display:none}.form-details-current,.active{display:block}#confirmation-message textarea,#notification textarea{width:100%;height:10em;font-family:Consolas,Monaco,monospace}#form-success-message-page,#form-success-message-redirect{margin-top:10px;width:100%}.post-body-plain ol li{list-style:decimal}#swpm-upgrade-column{display:inline;float:left;width:auto}.rtl #swpm-upgrade-column{float:right}ul#promote-swpm{margin-left:20px;list-style:disc}.rtl ul#promote-swpm{margin-left:auto;margin-right:20px}#promote-swpm li{text-align:left}.rtl #promote-swpm li{text-align:right}.menu .ui-nestedSortable-error{background-color:#fbe3e4;border-color:red;color:#8a1f11}ul#swpm-menu-to-edit ul{margin:0 0 0 25px;padding:0;width:98%;list-style-type:none}#swpm-menu-to-edit{margin-top:0;padding:1em 0}#swpm-fieldset-first-warning{display:none}.ui-state-disabled,.ui-state-disabled dl,.ui-state-disabled dt,.form-item.ui-state-disabled{opacity:100;filter:alpha(Opacity=100);background-image:none}.ui-state-disabled .swpm-menu-item-handle,.ui-state-disabled .menu-item-handle{background:#dfdfdf;box-shadow:none;cursor:default}.swpm-details{margin-bottom:10px;padding:0 10px;border:1px solid #ccc;border-radius:3px}.swpm-details.section{width:97.55%;background-color:#efefef}.swpm-details .postbox{min-height:60px}#poststuff .swpm-details h2{margin-top:0}#poststuff h3.section-heading{padding-left:0}#form-items .tabs-panel{overflow:visible;padding:.5em 0 .5em 4px;min-height:325px;height:auto}.rtl #form-items .tabs-panel{padding:.5em 4px .5em 0}ul.swpm-fields-col-1,ul.swpm-fields-col-2{float:left;width:50%;list-style:none}.rtl ul.swpm-fields-col-1,.rtl ul.swpm-fields-col-2{float:right}#swpm-form-builder-frame.columns-1 #swpm-postbox-container-1 #form-items .tabs-panel{height:auto}.swpm-draggable-form-items{position:relative;position:relative;display:block;margin-right:8px;padding:4px 0 4px 34px;border:1px solid #bbb;border-radius:3px;color:#464646;text-align:left;text-decoration:none;font-size:12px}.rtl .swpm-draggable-form-items{margin-right:0;margin-left:8px;padding:4px 34px 4px 10px}.swpm-draggable-form-items:hover{border-color:#aaa}.swpm-draggable-form-items b{position:absolute;left:8px;display:inline-block;width:16px;height:16px;background-color:transparent;background-image:url('../images/swpm-form-items.png?d=20130712');background-repeat:no-repeat;line-height:16px}.rtl .swpm-draggable-form-items b{left:auto;right:8px}#form-element-address b{background-position:-128px 0}#form-element-autocomplete b{background-position:-384px 0}#form-element-checkbox b{background-position:-672px 0}#form-element-color b{background-position:0 0}#form-element-currency b{background-position:-64px 0}#form-element-datepicker b{background-position:-224px 0}#form-element-digits b{background-position:-832px 0}#form-element-email b{background-position:-160px 0}#form-element-file b{background-position:-512px 0}#form-element-hidden b{background-position:-544px 0}#form-element-html b{background-position:-800px 0}#form-element-instructions b{background-position:-256px 0}#form-element-ip b{background-position:-448px 0}#form-element-max b{background-position:-576px 0}#form-element-min b{background-position:-608px 0}#form-element-name b{background-position:-320px 0}#form-element-pagebreak b{background-position:-768px 0}#form-element-password b{background-position:-352px 0}#form-element-phone b{background-position:-96px 0}#form-element-radio b{background-position:-704px 0}#form-element-range b{background-position:-640px 0}#form-element-select b{background-position:-416px 0}#form-element-text b{background-position:-736px 0}#form-element-textarea b{background-position:-32px 0}#form-element-time b{background-position:-192px 0}#form-element-username b{background-position:-288px 0}#form-element-url b{background-position:-480px 0}.static-vars-inactive{display:none}.static-vars-active{display:block}.swpm-button{position:relative;display:inline-block;overflow:visible;margin:0;padding:.5em 2.5em .5em 1em;outline:0;border:1px solid #d4d4d4;border-radius:.2em;background-color:#f5f5f5;color:#333;text-decoration:none;white-space:nowrap;font:12px/normal sans-serif;cursor:pointer;zoom:1;-webkit-background-clip:padding;-moz-background-clip:padding;-o-background-clip:padding-box;*display:inline}.swpm-button:hover,.swpm-button:active,.swpm-button.current{border-color:#929292;border-bottom-color:#929292;background-color:#eee;background-image:-webkit-gradient(linear,0 0,0 100%,from(#eee),to(#ccc));background-image:-moz-linear-gradient(#eee,#ccc);background-image:-o-linear-gradient(#eee,#ccc);background-image:linear-gradient(#eee,#ccc);color:#000}.swpm-button.current{font-weight:bold}.swpm-button::-moz-focus-inner{padding:0;border:0}.swpm-button.swpm-settings:hover,.swpm-button.swpm-settings:focus,.swpm-button.swpm-settings:active{color:#3072b3}.swpm-button.swpm-delete:hover,.swpm-button.swpm-delete:focus,.swpm-button.swpm-delete:active{color:#900}.swpm-button.swpm-duplicate:hover,.swpm-button.swpm-duplicate:focus,.swpm-button.swpm-duplicate:active{color:#008e0d}.swpm-button-group{display:inline-block;margin:10px 0;list-style:none}.rtl .swpm-button-group{margin-left:-2px}.swpm-button-group .swpm-button{float:left;margin-right:5px}.rtl .swpm-button-group .swpm-button{float:right;margin-right:0;margin-left:5px}.swpm-button-group .button-primary{margin-top:2px}.swpm-item-actions{margin-right:10px;margin-bottom:10px;text-align:center}.rtl .swpm-item-actions{margin-right:0;margin-left:10px}.swpm-item-actions .swpm-delete{float:left}.rtl .swpm-item-actions .swpm-delete{float:right}.swpm-item-actions .swpm-conditional-fields{float:right}.rtl .swpm-item-actions .swpm-conditional-fields{float:left}.swpm-item-actions .swpm-delete,.swpm-item-actions .swpm-duplicate,.swpm-item-actions .swpm-conditional-fields{margin-top:10px}#form-settings{display:none;width:100%;max-width:460px;margin-bottom:15px;border-bottom:1px solid #d6d6d6}#form-settings.current{display:block}.form-details{padding:20px;background:#fff;background:rgba(255,255,255,0.5);border-left:1px solid #d6d6d6;border-right:1px solid #d6d6d6}.form-details.on{display:block}.settings-links{position:relative;z-index:1;display:block;padding:5px 15px;height:25px;background:#f5f5f5;border-top:1px solid #ccc;border-left:1px solid #ccc;border-right:1px solid #ccc;color:#333;text-decoration:none;text-transform:uppercase;text-shadow:0 1px 0 #fff;font-weight:normal;font-size:15px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;line-height:25px;cursor:pointer}.settings-links .swpm-large-arrow{position:absolute;top:16px;right:25px;width:5px;height:0;z-index:1}.settings-links .swpm-large-arrow:after{content:'';width:0;height:0;border-color:#ccc transparent;border-style:solid;border-width:6px 6px 0;position:absolute;z-index:1}.rtl .settings-links .swpm-large-arrow{right:auto;left:13px}.settings-links.on{border-bottom:1px solid #808080}.settings-links:hover,.settings-links.on{background:#808080;color:#fff;text-shadow:0 -1px 0 #333}.settings-links:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.swpm-tooltip{position:relative;float:right;margin-right:2px;width:16px;height:16px;cursor:pointer}.rtl .swpm-tooltip{float:left;margin-right:0;margin-left:2px}.swpm-tooltip-popup{position:absolute;top:-40px;z-index:200;display:none;padding:5px 20px;width:250px;border:2px solid #333;border-radius:5px;background:#222;box-shadow:0 0 7px black;color:white;text-indent:0;font-style:normal}.swpm-tooltip-popup h3,.swpm-tooltip .swpm-tooltip-popup h3{margin:5px 0;padding:0 0 6px 0;border-bottom:1px solid white;color:white;font-weight:normal;font-size:13px;font-family:sans-serif}.swpm-tooltip-popup p{margin-top:1 0;color:white;font-size:12px}.swpm-add-options-group{display:inline-block;margin:10px 0;list-style:none;text-align:center;width:95%}.swpm-add-options-group .swpm-interface-plus{top:4px}.swpm-export-label{width:10em;float:left}.rtl .swpm-export-label{float:right}#swpm-export-entries-fields{height:275px;width:300px;overflow:auto;display:block;border:1px solid #e8e8e8;border-radius:3px;margin-left:10em;padding:5px;background:white}#swpm-export-select-all,#swpm-export-unselect-all{width:150px;display:inline-block;text-align:left}#swpm-export-unselect-all{text-align:right;margin-left:5px}@media print{body *{float:none}html,.wrap,#wpbody-content,#swpm-poststuff{background:none!important;padding:0;margin:0;height:auto}#wpadminbar,#adminmenuwrap,#adminmenushadow,#adminmenuback,.screen-reader-shortcut,#screen-meta,#screen-meta-links,#wpfooter,#icon-options-general,.wrap h2,.view-entry,#major-publishing-actions,.clear{display:none}#wpcontent,body #wpcontent{margin-left:0;width:auto;height:auto}#entry-edit h3 span{font-size:23px;font-weight:normal}#swpm-poststuff{page-break-after:auto}#swpm-entries-body-content{width:100%;height:auto;margin:0 0 50px 0;padding:0}#side-info-column{width:100%;height:auto;float:none}#side-info-column .postbox .inside{margin:0;padding:0}#minor-publishing,.misc-pub-section,#submitdiv,#submitdiv h3{background:none!important;border:0;margin:0}#submitdiv h3 span{font-family:sans-serif;font-size:16px}.inner-sidebar #side-sortables,.columns-2 .inner-sidebar #side-sortables{margin:0;padding:0;width:auto}table{page-break-inside:auto}tr textarea{overflow:visible}}@media print,(-o-min-device-pixel-ratio:5/4),(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.swpm-interface-icon{top:5px;background-image:url('../images/swpm-interface-icons-2x.png?d=20130712');background-size:cover}.swpm-draggable-form-items b{background-image:url('../images/swpm-form-items-2x.png?d=20130712');background-size:cover}.swpm-add-options-group .swpm-interface-plus{top:5px}.addEmail,.deleteEmail{top:28px}.item-edit{background-image:url('../images/arrows-2x.png?d=20130611');background-size:15px 123px}.admin-color-classic .item-edit{background-image:url('../images/arrows-vs-2x.png?d=20130611');background-size:15px 123px}.item-edit:hover{background-image:url('../images/arrows-dark-2x.png?d=20130611');background-size:15px 123px}.admin-color-classic .item-edit:hover{background-image:url('../images/arrows-dark-vs-2x.png?d=20130611');background-size:15px 123px}.item-edit.opened{background-image:url('../images/arrows-2x.png?d=20130611');background-size:15px 123px}.admin-color-classic .item-edit.opened{background-image:url('../images/arrows-vs-2x.png?d=20130611');background-size:15px 123px}.item-edit.opened:hover{background-image:url('../images/arrows-dark-2x.png?d=20130611');background-size:15px 123px}.admin-color-classic .item-edit.opened:hover{background-image:url('../images/arrows-dark-vs-2x.png?d=20130611');background-size:15px 123px}.button-icon.swpm-small-arrow{background-image:url('../images/arrows-2x.png?d=20130611');background-size:15px 123px}.admin-color-classic .button-icon.swpm-small-arrow{background-image:url('../images/arrows-vs-2x.png?d=20130611');background-size:15px 123px}.current .button-icon.swpm-small-arrow{background-image:url('../images/arrows-2x.png?d=20130611');background-size:15px 123px}.admin-color-classic .current .button-icon.swpm-small-arrow{background-image:url('../images/arrows-vs.png?d=20130611');background-size:15px 123px}} \ No newline at end of file diff --git a/css/swpm-form-builder.css b/css/swpm-form-builder.css new file mode 100644 index 0000000..ad42595 --- /dev/null +++ b/css/swpm-form-builder.css @@ -0,0 +1,530 @@ +form.swpm-form-builder{ + position: relative; + margin:20px 0; + background: none; + list-style:none; + list-style-type: none; + list-style-image: none; + text-shadow: none; + font-family:inherit; +} + +form.swpm-form-builder li{ + margin: 0 !important; + width: auto !important; + background: none !important; + list-style: none !important; + list-style-type: none !important; + list-style-image: none !important; + clear: both; +} + +form.swpm-form-builder li:before { + content: none; +} + +form.swpm-form-builder ul:after, +form.swpm-form-builder li:after, +form.swpm-form-builder li div:after { + clear: both; + content: '.'; + display: block; + height: 0; + visibility: hidden; +} + +/* Hide br tags for themes that auto add them */ +.swpm-form-builder br { + display: none; +} + +form.swpm-form-builder .swpm-item-instructions br { + display: inline; +} + +/* !Remove list item styles */ +.swpm-form-builder ul, +.entry-content .swpm-form-builder ul, +.comment-content .swpm-form-builder ul, +.mu_register .swpm-form-builder ul, +.swpm-form-builder ol, +.entry-content .swpm-form-builder ol, +.comment-content .swpm-form-builder ol, +.mu_register .swpm-form-builder ol { + margin: 0 14px !important; + padding: 0 !important; + background: none !important; + list-style: none !important; + list-style-type: none !important; + list-style-image: none !important; + font-size: 13px; + line-height: inherit; +} + +.swpm-form-builder ul li { + margin: 0 !important; + background: none !important; + list-style: none !important; + list-style-type: none !important; + list-style-image: none !important; +} + +.swpm-form-builder ul li:before { + content: none; +} + +.swpm-form-builder li, +.entry-content .swpm-form-builder li, +.comment-content .swpm-form-builder li, +.mu_register .swpm-form-builder li { + clear: both; + margin: 0 !important; + padding: 6px 1% 9px !important; + width: 64%; + background: none !important; + list-style: none !important; + list-style-type: none !important; + list-style-image: none !important; +} + +.swpm-form-builder li:before, +.entry-content .swpm-form-builder li:before, +.comment-content .swpm-form-builder li:before, +.mu_register .swpm-form-builder li:before { + content: none; +} + +.swpm-span, +.swpm-form-builder li div span.swpm-span, +.swpm-form-builder [class*="swpm-span"], +span.swpm-full input, +span.swpm-full input[type="text"].swpm-medium, +span.swpm-full select{ + display:block; + float:left; + margin: 0; + width:100%; +} + +.swpm-form-builder span.swpm-left{ + float:left; + width:48%; +} + +.swpm-form-builder span.swpm-right{ + float:right; + width:48%; +} + +.swpm-form-builder span.swpm-span ul li { + list-style: disc; +} + +.swpm-form-builder span.swpm-span ol li { + list-style: decimal; +} + +.swpm-form-builder span.swpm-right input, +.swpm-form-builder span.swpm-right input[type="text"], +.swpm-form-builder span.swpm-right select, +.swpm-form-builder span.swpm-left input, +.swpm-form-builder span.swpm-left input[type="text"], +.swpm-form-builder span.swpm-left select{ + width:100% !important; +} + +/* !Time Field */ +.swpm-form-builder span.swpm-time{ + float:left; + margin:0 0.3em 0 0; +} + +.rtl .swpm-form-builder span.swpm-time { + float: right; + margin: 0 0 0 0.3em; +} + +.swpm-form-builder li div label, +.swpm-form-builder li span label { + margin: 0; + font-size: 90%; +} + +/* !Fieldset */ +.swpm-form-builder fieldset{ + clear:both; + margin:15px 0; + padding: 0; + border:1px solid #D3D3D3; + border-radius:3px; + background-color:#eeeeee; +} + +/* !Legend */ +.swpm-form-builder .swpm-legend{ + margin:5px 14px; + padding:0 6px; + border-bottom:1px solid #CCCCCC; + color:#990000; + font-size:inherit; +} + +.swpm-form-builder .swpm-legend h3 { + margin: 0 !important; + padding: 0 !important; + font-size:20px; + line-height: 2.0em; +} + +/* !Description */ +.swpm-form-builder label, +label.swpm-desc{ + display:block; + margin:0; + padding: 0 0 3px 0; + color:#000; +} +label.swpm-desc{ + font-weight:bold; +} + +.swpm-form-builder.left-label .swpm-desc, +.swpm-form-builder.right-label .swpm-desc{ + float:left; + margin:0 15px 0 0; + width:20%; +} + +.swpm-form-builder.right-label .swpm-desc{ + padding-top:2px; + text-align:right; +} + +.swpm-form-builder li div { + margin: 0; + padding: 0; +} + +.swpm-form-builder.left-label li div, +.swpm-form-builder.right-label li div { + float: left; + width: 65%; +} + +.swpm-form-builder label.swpm-choice{ + margin:-16px 0 0 23px; + padding:0 0 5px; + width:88%; + font-size:100%; + line-height:150%; +} + +.rtl .swpm-form-builder label.swpm-choice { + margin: -16px 23px 0 0; +} + +.swpm-form-builder label .swpm-required-asterisk { + margin: 0; + padding: 0; + color: #BC1212; + vertical-align: baseline; + font-weight: bold; +} + +/* !Input, Textarea, and Select */ +input.swpm-text, +input[type="text"].swpm-text, +input[type="tel"].swpm-text, +input[type="email"].swpm-text, +input[type="url"].swpm-text, +textarea.swpm-textarea { + padding: 3px 0; + border: 1px solid #DDDDDD; + border-radius: 3px; + background: none repeat scroll 0 0 #FAFAFA; + + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border linear .2s, box-shadow linear .2s; + -moz-transition: border linear .2s, box-shadow linear .2s; + -o-transition: border linear .2s, box-shadow linear .2s; + transition: border linear .2s, box-shadow linear .2s; +} + +input.swpm-text:focus, +input[type="text"].swpm-text:focus, +input[type="tel"].swpm-text:focus, +input[type="email"].swpm-text:focus, +input[type="url"].swpm-text:focus, +textarea.swpm-textarea:focus { + outline: 0; + outline: thin dotted \9; + /* IE6-9 */ + border-color: rgba(82, 168, 236, 0.8); + + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); + -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); +} + +input.swpm-text.swpm-error:focus, +input[type="text"].swpm-text.swpm-error:focus, +input[type="tel"].swpm-text.swpm-error:focus, +input[type="email"].swpm-text.swpm-error:focus, +input[type="url"].swpm-text.swpm-error:focus, +textarea.swpm-textarea.swpm-error:focus { + border-color: rgba(238,83,83,0.8); + + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(238,83,83,.6); + -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(238,83,83,.6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(238,83,83,.6); +} + +input.swpm-text, +input[type="text"].swpm-text, +input[type="tel"].swpm-text, +input[type="email"].swpm-text, +input[type="url"].swpm-text, +textarea.swpm-textarea, +select.swpm-select { + margin: 0 0 5px 0; + height: auto; + color: #373737; + font-size:100%; + font-family:inherit; + line-height: normal; +} + +select.swpm-select{ + padding: 1px 0 0; +} + +input.swpm-small, +input[type="text"].swpm-small, +input[type="tel"].swpm-small, +input[type="email"].swpm-small, +input[type="url"].swpm-small, +select.swpm-small{ + width:25%; +} + +input.swpm-medium, +input[type="text"].swpm-medium, +input[type="tel"].swpm-medium, +input[type="email"].swpm-medium, +input[type="url"].swpm-medium, +select.swpm-medium{ + width:50%; +} + +input.swpm-large, +input[type="text"].swpm-large, +input[type="tel"].swpm-large, +input[type="email"].swpm-large, +input[type="url"].swpm-large, +select.swpm-large, +textarea.swpm-textarea{ + width:100%; +} + +input[type="file"].swpm-small, +input[type="file"].swpm-medium, +input[type="file"].swpm-large { + height: auto; + line-height: normal; +} + + +textarea.swpm-medium{ + height:5.5em; +} + +textarea.swpm-medium{ + height:10em; +} + +textarea.swpm-large{ + height:20em; +} + +/* !Submit Button */ +.swpm-submit, +input[type="submit"].swpm-submit { + font-size:1.1em; +} + +/* !Checkbox and Radio */ +input.swpm-checkbox, +input[type="checkbox"].swpm-checkbox, +input.swpm-radio, +input[type="radio"].swpm-radio { + display:block; + margin:4px 0 0; + width:13px; + height:13px; + font-size:1.1em; +} + +input.swpm-other, +input[type="text"].swpm-other { + margin: 0 0 8px 25px; +} + +/* !Field Layout */ +.swpm-form-builder li.swpm-two-column div span, +.swpm-form-builder li.swpm-three-column div span, +.swpm-form-builder li.swpm-auto-column div span{ + margin:0 5px 0 0; + width:48%; +} + +.swpm-form-builder li.swpm-three-column div span{ + width:30%; +} + +.swpm-form-builder li.swpm-auto-column div span{ + width:auto; +} + +.swpm-form-builder li.swpm-left-half, +.swpm-form-builder li.swpm-left-third, +.swpm-form-builder li.swpm-left-two-thirds{ + float:left; + clear:left; +} + +.swpm-form-builder li.swpm-right-half, +.swpm-form-builder li.swpm-right-third, +.swpm-form-builder li.swpm-right-two-thirds{ + float:right; + clear:none; +} + +.swpm-form-builder li.swpm-middle-third{ + float:left; + clear:none; + margin-left:2%; +} + +.swpm-form-builder li.swpm-left-half, +.swpm-form-builder li.swpm-right-half{ + width:47% !important; +} + +.swpm-form-builder li.swpm-left-third, +.swpm-form-builder li.swpm-middle-third, +.swpm-form-builder li.swpm-right-third{ + width:30% !important; +} + +.swpm-form-builder li.swpm-left-two-thirds, +.swpm-form-builder li.swpm-right-two-thirds{ + width:64% !important; +} + +li.swpm-left-half .swpm-small, +li.swpm-left-half .swpm-medium, +li.swpm-left-half .swpm-large, +li.swpm-right-half .swpm-small, +li.swpm-right-half .swpm-medium, +li.swpm-right-half .swpm-large, +li.swpm-left-third .swpm-small, +li.swpm-left-third .swpm-medium, +li.swpm-left-third .swpm-large, +li.swpm-middle-third .swpm-small, +li.swpm-middle-third .swpm-medium, +li.swpm-middle-third .swpm-large, +li.swpm-right-third .swpm-small, +li.swpm-right-third .swpm-medium, +li.swpm-right-third .swpm-large, +.swpm-form-builder li.swpm-left-two-thirds .swpm-small, +.swpm-form-builder li.swpm-left-two-thirds .swpm-medium, +.swpm-form-builder li.swpm-left-two-thirds .swpm-large, +.swpm-form-builder li.swpm-right-two-thirds .swpm-small, +.swpm-form-builder li.swpm-right-two-thirds .swpm-medium, +.swpm-form-builder li.swpm-right-two-thirds .swpm-large{ + width:100%; +} + +/* !Error */ +label.swpm-error{ + color:red; + font-weight:bold; + font-size:90%; +} + +input.swpm-error, +input.swpm-text.swpm-error, +input[type="text"].swpm-text.swpm-error, +input[type="tel"].swpm-text.swpm-error, +input[type="email"].swpm-text.swpm-error, +input[type="url"].swpm-text.swpm-error, +select.swpm-error, +textarea.swpm-error, +textarea.swpm-textarea.swpm-error,{ + border:1px solid red; +} + +/* !Success Mesage - Default */ +p#form_success, +.swpm-form-success { + color: green; + font-weight: bold; +} + +#ui-datepicker-div { + display: none; + font-size:12px; +} + +/* !Instructions */ +.swpm-item-instructions{ + border-radius:3px; + background-color:#e3e3e3; +} + +.swpm-item-instructions ul, +.swpm-item-instructions ul li { + padding-bottom: 0; + list-style: disc; +} + +.swpm-item-instructions ol, +.swpm-item-instructions ol li { + padding-bottom: 0; + list-style: decimal; +} + +/* !Sections */ +.swpm-section-div { + float:left; + margin:10px 0; + padding:10px; + width:97%; + border-radius:3px; + background-color:#D4D4D4; +} + +.swpm-form-builder .swpm-section-div h4 { + margin: 0 !important; + padding: 0 !important; + border-bottom:1px solid #BABABA; + font-size:16px; + line-height: inherit; +} + +/* !Clearing */ +.swpm-clear{ + display:block; + visibility:hidden; + clear:both; + overflow:hidden; + width:0; + height:0; +} + +/* !Conditional Field */ +.swpm-conditional-hide{ + display: none; +} diff --git a/css/swpm-form-builder.min.css b/css/swpm-form-builder.min.css new file mode 100644 index 0000000..5101276 --- /dev/null +++ b/css/swpm-form-builder.min.css @@ -0,0 +1 @@ +form.swpm-form-builder{position:relative;margin:20px 0;background:0;list-style:none;list-style-type:none;list-style-image:none;text-shadow:none;font-family:inherit}form.swpm-form-builder li{margin:0!important;width:auto!important;background:none!important;list-style:none!important;list-style-type:none!important;list-style-image:none!important;clear:both}form.swpm-form-builder li:before{content:none}form.swpm-form-builder ul:after,form.swpm-form-builder li:after,form.swpm-form-builder li div:after{clear:both;content:'.';display:block;height:0;visibility:hidden}.swpm-form-builder br{display:none}form.swpm-form-builder .swpm-item-instructions br{display:inline}.swpm-form-builder ul,.entry-content .swpm-form-builder ul,.comment-content .swpm-form-builder ul,.mu_register .swpm-form-builder ul,.swpm-form-builder ol,.entry-content .swpm-form-builder ol,.comment-content .swpm-form-builder ol,.mu_register .swpm-form-builder ol{margin:0 14px!important;padding:0!important;background:none!important;list-style:none!important;list-style-type:none!important;list-style-image:none!important;font-size:13px;line-height:inherit}.swpm-form-builder ul li{margin:0!important;background:none!important;list-style:none!important;list-style-type:none!important;list-style-image:none!important}.swpm-form-builder ul li:before{content:none}.swpm-form-builder li,.entry-content .swpm-form-builder li,.comment-content .swpm-form-builder li,.mu_register .swpm-form-builder li{clear:both;margin:0!important;padding:6px 1% 9px!important;width:64%;background:none!important;list-style:none!important;list-style-type:none!important;list-style-image:none!important}.swpm-form-builder li:before,.entry-content .swpm-form-builder li:before,.comment-content .swpm-form-builder li:before,.mu_register .swpm-form-builder li:before{content:none}.swpm-span,.swpm-form-builder li div span.swpm-span,.swpm-form-builder [class*="swpm-span"],span.swpm-full input,span.swpm-full input[type="text"].swpm-medium,span.swpm-full select{display:block;float:left;margin:0;width:100%}.swpm-form-builder span.swpm-left{float:left;width:48%}.swpm-form-builder span.swpm-right{float:right;width:48%}.swpm-form-builder span.swpm-span ul li{list-style:disc}.swpm-form-builder span.swpm-span ol li{list-style:decimal}.swpm-form-builder span.swpm-right input,.swpm-form-builder span.swpm-right input[type="text"],.swpm-form-builder span.swpm-right select,.swpm-form-builder span.swpm-left input,.swpm-form-builder span.swpm-left input[type="text"],.swpm-form-builder span.swpm-left select{width:100%!important}.swpm-form-builder span.swpm-time{float:left;margin:0 .3em 0 0}.rtl .swpm-form-builder span.swpm-time{float:right;margin:0 0 0 .3em}.swpm-form-builder li div label,.swpm-form-builder li span label{margin:0;font-size:90%}.swpm-form-builder fieldset{clear:both;margin:15px 0;padding:0;border:1px solid #d3d3d3;border-radius:3px;background-color:#eee}.swpm-form-builder .swpm-legend{margin:5px 14px;padding:0 6px;border-bottom:1px solid #ccc;color:#900;font-size:inherit}.swpm-form-builder .swpm-legend h3{margin:0!important;padding:0!important;font-size:20px;line-height:2.0em}.swpm-form-builder label,label.swpm-desc{display:block;margin:0;padding:0 0 3px 0;color:#000}label.swpm-desc{font-weight:bold}.swpm-form-builder.left-label .swpm-desc,.swpm-form-builder.right-label .swpm-desc{float:left;margin:0 15px 0 0;width:20%}.swpm-form-builder.right-label .swpm-desc{padding-top:2px;text-align:right}.swpm-form-builder li div{margin:0;padding:0}.swpm-form-builder.left-label li div,.swpm-form-builder.right-label li div{float:left;width:65%}.swpm-form-builder label.swpm-choice{margin:-16px 0 0 23px;padding:0 0 5px;width:88%;font-size:100%;line-height:150%}.rtl .swpm-form-builder label.swpm-choice{margin:-16px 23px 0 0}.swpm-form-builder label .swpm-required-asterisk{margin:0;padding:0;color:#bc1212;vertical-align:baseline;font-weight:bold}input.swpm-text,input[type="text"].swpm-text,input[type="tel"].swpm-text,input[type="email"].swpm-text,input[type="url"].swpm-text,textarea.swpm-textarea{padding:3px 0;border:1px solid #ddd;border-radius:3px;background:none repeat scroll 0 0 #fafafa;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border linear .2s,box-shadow linear .2s;-moz-transition:border linear .2s,box-shadow linear .2s;-o-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}input.swpm-text:focus,input[type="text"].swpm-text:focus,input[type="tel"].swpm-text:focus,input[type="email"].swpm-text:focus,input[type="url"].swpm-text:focus,textarea.swpm-textarea:focus{outline:0;outline:thin dotted \9;border-color:rgba(82,168,236,0.8);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(82,168,236,.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(82,168,236,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(82,168,236,.6)}input.swpm-text.swpm-error:focus,input[type="text"].swpm-text.swpm-error:focus,input[type="tel"].swpm-text.swpm-error:focus,input[type="email"].swpm-text.swpm-error:focus,input[type="url"].swpm-text.swpm-error:focus,textarea.swpm-textarea.swpm-error:focus{border-color:rgba(238,83,83,0.8);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(238,83,83,.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(238,83,83,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(238,83,83,.6)}input.swpm-text,input[type="text"].swpm-text,input[type="tel"].swpm-text,input[type="email"].swpm-text,input[type="url"].swpm-text,textarea.swpm-textarea,select.swpm-select{margin:0 0 5px 0;height:auto;color:#373737;font-size:100%;font-family:inherit;line-height:normal}select.swpm-select{padding:1px 0 0}input.swpm-small,input[type="text"].swpm-small,input[type="tel"].swpm-small,input[type="email"].swpm-small,input[type="url"].swpm-small,select.swpm-small{width:25%}input.swpm-medium,input[type="text"].swpm-medium,input[type="tel"].swpm-medium,input[type="email"].swpm-medium,input[type="url"].swpm-medium,select.swpm-medium{width:50%}input.swpm-large,input[type="text"].swpm-large,input[type="tel"].swpm-large,input[type="email"].swpm-large,input[type="url"].swpm-large,select.swpm-large,textarea.swpm-textarea{width:100%}input[type="file"].swpm-small,input[type="file"].swpm-medium,input[type="file"].swpm-large{height:auto;line-height:normal}textarea.swpm-medium{height:5.5em}textarea.swpm-medium{height:10em}textarea.swpm-large{height:20em}.swpm-submit,input[type="submit"].swpm-submit{font-size:1.1em}input.swpm-checkbox,input[type="checkbox"].swpm-checkbox,input.swpm-radio,input[type="radio"].swpm-radio{display:block;margin:4px 0 0;width:13px;height:13px;font-size:1.1em}input.swpm-other,input[type="text"].swpm-other{margin:0 0 8px 25px}.swpm-form-builder li.swpm-two-column div span,.swpm-form-builder li.swpm-three-column div span,.swpm-form-builder li.swpm-auto-column div span{margin:0 5px 0 0;width:48%}.swpm-form-builder li.swpm-three-column div span{width:30%}.swpm-form-builder li.swpm-auto-column div span{width:auto}.swpm-form-builder li.swpm-left-half,.swpm-form-builder li.swpm-left-third,.swpm-form-builder li.swpm-left-two-thirds{float:left;clear:left}.swpm-form-builder li.swpm-right-half,.swpm-form-builder li.swpm-right-third,.swpm-form-builder li.swpm-right-two-thirds{float:right;clear:none}.swpm-form-builder li.swpm-middle-third{float:left;clear:none;margin-left:2%}.swpm-form-builder li.swpm-left-half,.swpm-form-builder li.swpm-right-half{width:47%!important}.swpm-form-builder li.swpm-left-third,.swpm-form-builder li.swpm-middle-third,.swpm-form-builder li.swpm-right-third{width:30%!important}.swpm-form-builder li.swpm-left-two-thirds,.swpm-form-builder li.swpm-right-two-thirds{width:64%!important}li.swpm-left-half .swpm-small,li.swpm-left-half .swpm-medium,li.swpm-left-half .swpm-large,li.swpm-right-half .swpm-small,li.swpm-right-half .swpm-medium,li.swpm-right-half .swpm-large,li.swpm-left-third .swpm-small,li.swpm-left-third .swpm-medium,li.swpm-left-third .swpm-large,li.swpm-middle-third .swpm-small,li.swpm-middle-third .swpm-medium,li.swpm-middle-third .swpm-large,li.swpm-right-third .swpm-small,li.swpm-right-third .swpm-medium,li.swpm-right-third .swpm-large,.swpm-form-builder li.swpm-left-two-thirds .swpm-small,.swpm-form-builder li.swpm-left-two-thirds .swpm-medium,.swpm-form-builder li.swpm-left-two-thirds .swpm-large,.swpm-form-builder li.swpm-right-two-thirds .swpm-small,.swpm-form-builder li.swpm-right-two-thirds .swpm-medium,.swpm-form-builder li.swpm-right-two-thirds .swpm-large{width:100%}label.swpm-error{color:red;font-weight:bold;font-size:90%}input.swpm-error,input.swpm-text.swpm-error,input[type="text"].swpm-text.swpm-error,input[type="tel"].swpm-text.swpm-error,input[type="email"].swpm-text.swpm-error,input[type="url"].swpm-text.swpm-error,select.swpm-error,textarea.swpm-error,textarea.swpm-textarea.swpm-error,{border:1px solid red}p#form_success,.swpm-form-success{color:green;font-weight:bold}#ui-datepicker-div{display:none;font-size:12px}.swpm-item-instructions{border-radius:3px;background-color:#e3e3e3}.swpm-item-instructions ul,.swpm-item-instructions ul li{padding-bottom:0;list-style:disc}.swpm-item-instructions ol,.swpm-item-instructions ol li{padding-bottom:0;list-style:decimal}.swpm-section-div{float:left;margin:10px 0;padding:10px;width:97%;border-radius:3px;background-color:#d4d4d4}.swpm-form-builder .swpm-section-div h4{margin:0!important;padding:0!important;border-bottom:1px solid #bababa;font-size:16px;line-height:inherit}.swpm-clear{display:block;visibility:hidden;clear:both;overflow:hidden;width:0;height:0}.swpm-conditional-hide{display:none} \ No newline at end of file diff --git a/images/arrows-2x.png b/images/arrows-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0b0c53d1a6b1988f8a8a079cf58c3fdb4fc3596f GIT binary patch literal 863 zcmeAS@N?(olHy`uVBq!ia0vp^azOlzgBe8rJYLVhz^E4B6XN>+|9_we%i;9YXjJb2?0?Fyqr_Y%)r@kI&Cqr>@@ywYsv$C>)?5R_y=I7@(H#Y;> z@$vCMa?P4GH8nN9zP^Ehfk19$WhIbYv}jRbVPQ*4OGHG(+O=yZPo7*?S65L{v2x`~ zpyKH0=+4egpfaEp>(;GHN=gE<;Q*)+&IZ~A)CF`>RaMozdGnSnTefM_CZHipmMmGn zem&6SjT<+vUcDM<$nxdOmo8npb?erJ3m0zQym|5B#nqpqZvYJnE(!7rW{7c=W{%|H z4Rg?Ti_m4!Hw^HX5o2SD`mpb4(D~(pACxcN*}}c_%}np3i?{gnalKjH)MU9@;Oo*o zJ)h1mU;1fj&o=&xU;6^h87=0jMyt$TcyIB8N$HlhzzCV@>Eakt5%>1m(W1u=B5fD* zG`FQr69$IY;WGvtlg@ai-TSY)EY;HQ=)2XCDPb$Cx5Z!myES-nxdT(JbHqtj|Cg03 zpJ+}HU3Y8#(plYWxJ;A!xi`9XtO?xp$|+n?=5KCo-fsVjrc3>tpS`(+)~&zqc4ql` zmIr-&?SbZvOAcMX9v{S_A}@cMzZ`Jvsr zAIci+{vKL-pZBUyWcn$|I$p1xoRgX7iIva281uX_eCoY|h0E7m|Ls+}Ctz*MwN0;o zzh63k-PK#4w#=V)Yu>f}^NRmVI&mnryzyhY{o$5I%+a%ZO;UtY=ht7!k*q%#aRBX;b(WMa(Bo!*|t zCVqxTe?mVS(6vRkbd9%Gny)FU$`9UhqS^5gL)-$b$?W1U&Io8Safg`8&Mg*y@x(QD z*OMm`HE)Z^?0LKL;TM$+NAJrSi<{Yhc{;1C^zb{T7Y`+Ob1ym;d*gNN7x5Qyu?5!y R>pVaS$EaktaqI0}-?rpHnYNG1 zI29Mq5_3JVLL-aursIyE|7MB$u2)<nGhaYdxA+xy5AI{3fZW?%wbvX~)f+dl#p@IkT;#T=LC_ zldK<}y!yW5YSz>jQ`aP{5Bc<|VC(I-R*?r^#m#@^xBRouH^1}u?EUWMeQz^Maldt; z*Zs!T*I)Ndlzmx!fqBXO_xdOKqS)+rvNa!6etY86zYEC@H%w*to~KlP&Pe~7VY2GN z`#oMPH%#UFrGJ0fsu8gv;ULI0I+%0_phq{DmI^VY_ zYR_Q5p&OSqWs>L#?wTESo*BMnO6NC3ADoiuCV4Zub>FnbZkjh86%)k+oL=wPF#9P; z+_jPaxuvPsS7!&@VHELUdCT`;?p1E>pRYQ*1#2B|jn&R_Y3%=Fc(Q4g<3nNZj-F*9 zecZdlu6*DVpPPK4X_cM6(njN37xu32_E?jkd9~)8;hVYFrc~7T`^VT!y4Z8b=Bm4% zjOWR{YXl#dss{S4`;#`gCr#w#nzHQ+uY3VJ<^M14i>tV##kcKP08FS1p00i_>zopr E02c8?jQ{`u literal 0 HcmV?d00001 diff --git a/images/arrows-dark-vs-2x.png b/images/arrows-dark-vs-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c509a4ea8a63fc710f98285df915643466bf73d0 GIT binary patch literal 761 zcmeAS@N?(olHy`uVBq!ia0vp^azOlzgAGU?R5$l!U|>4n>EaktaqI1!vsuD{GHoB3 zofIcbeZVfl)wqVMHO}E$n5^txhOJkxg}ql;?GUz;&GCgP%QL zy)t~ZLFn_Fp62);H)ns|QykIhy`v}n$6MEloI2@~tRGA7(<$n)j(Eo3SDbEh_+#iy zK^jr1u-WZF=3?>b~KOM#YSYjuVyd95gDoI5q#Xth&g|14U{(jUOK4oM{}E3Z3}F0`;$0JQU1J5WSnAf5c)T|LT?Rt^IBsX9~N_^xIClk!9P`B^L{u z!UU_H1w|ybiiY7PPEVh;k?+_;c8#Y|5(=#c7k(^g(ah1j!0+AAN zIMme|zt3gHp=+EwYhEVstX8`6>8U_*M5y9){aBR^T{1O?#aAbtNszYqp%=gJ*;WG= zF71a8B>VJFmrOjsWl?d?@X=~tpuD!sp8fnwy2RQ%5({p;WLVmrQrfWSWbeG4B6wVw z*!q8Vf!Wp2rq3jj zOPX4<{fwSj@CdClJnnIU_gk0t8H2Qr=KaUBpNVU>Wjx!yE2V1Ug4-|d7v>ciI`5fm v9d5SO!|=$vcUNy-S+ts+5g1|>FZDaV1)b4c+y4%jq!~P2{an^LB{Ts5&1_yt literal 0 HcmV?d00001 diff --git a/images/arrows-dark-vs.png b/images/arrows-dark-vs.png new file mode 100644 index 0000000000000000000000000000000000000000..3c48995f352db9444a55febf5166238e68f12b9f GIT binary patch literal 243 zcmeAS@N?(olHy`uVBq!ia0vp^{6JjI!VDxMy^pU0QYryHA+A7LA|Mk#O5#vI1XRae z666=mAf)9SIBnON4}bpEn&+7Ug^N91978PplM@tpLrO|T8YJ)SF1K!w%-Ox&amkD{ z|0b<2z6PTuEDLzj+9q;8sB3R$)2Vr&$j0wnvEtC-N|6Ojd%NS38EO7a zT3vh%MoU;0@T9d(OR+IFeCi^y;iNJ zfaVLPToMvDWEb%C<#Giad$)4Jl9OAjzbAzV?vUD{*TleJ`&u^FWNBGB(0T?>S3j3^ HP6kDf9<}L1A?|3ySQ%u zshy{4f=B=_(@onSh3ZdIP?Kbxg`_-}iluMAlqRcv+u4gyN2ZEnSqZK{@zOaeB-%8>%|oZ4t~0Ry|PbH?6IDx z6NloFx@Vv6=FJlnH(ATD{Ozrz!0hJ2P7AMqTOZ1}S04PEwsl9SYk!rqclWoP^LlNU zclZ6+re3ycp~dH~k`k?9tCktm^82(t+gbWt>ob9|9-QVlQNBV1vmwYM-sV`*McspTj>dpQ} zw!c^V53<>}N$>D(7I5NFopfe~i?(2x&GjNfx13qRta%Du+&LC&R2`TrzvZfCF-OYr z1lxM){NkD2e|cB9Lgq(SoD?sDq}$(-HW9hb~V z^Ka7X;%hKk!m@xTt!*OrgSz&1Hl3OWifsJO6)O%Mt`u3oRIagh8?#gQxi*6t;qULY zYBdEkUohp8khmecfTu5)E8y6>l@pen+*`=7Ay`zjMWkLx(Fx7BH1-tlh@!)P1haU`F`+d#zec z0nHaoxg;cR$S&aN%jF6<_HN~bB`3F5e@_Y#+#$6?uZe-d_O)!T$0L2^pcFwsI!Ny|Af2Z)l`ci3i*yJzfYb;oy-Tl3 zAWDE>5MrqR%X_;!JG+@X$(>1NlAPaH&N<)r(m+p(<|^A&003yT@52lM;7TEQf0N=0 z_#8g?u^GGvv|)E2Kg-?83$5cc&ci8bQPA~rE3V(*{&~YE-BMer?{vEmg z`T9+Ec?^jr;nl$4iRqLMrU@2Y$jDo&uUA-h2!w^LAh9KnlF_O7f`GR)fsYSlYjHf@mBLmJ9z1A#o142- z@B#Xf78MQz#`J~r%%(nm^XAQQdvoJe#k|pfpm^W3ZfY5|dw2rS#S4wxSm??O&^#^m z_3ZW*D4~T0Um0L0@!%)&42;+<@3kOys?s95&#wZ^q^)nzj64w1Ixf__P6aPw$6b&a zr~<0}JheER4t_i{#Qe2+(?^nF_~8EGeQR|*QyQJ-sbv~nTE}J77oJevYAkjzbQMdU zRvE4bL24iy}`tDkOX|DY3iVqBPHv9Yilo^tXu;UD&JA9a!^MnM~7wu$b`q8E=} z*LNh2Rwg`LU0FHl&GhgH>eH@vn8Qc+(4kngvyrr#CjK(Q(?i?IlHAa;5E-EoC3>&x z6ftEk4)=5)5Fy=@1oX>X&c$mEuvY8~hP0c7>83AqZ%oX*UVr)ecQ;=m8L9jgREeF9 zSXFZ$V0m?oW%kgyWVa)zMvf9F5Nr&4hhvT!yZEu;*L_ukr^Rm)^RIKywl&v|X47eY z-S(+bqPsx(b-y6bY}yiFnuQU_U5jz z#Cl}EHgv0xuf9}AkJ1AoFZndaR}0|v;^1Ge0&;P)3zW9S@zoxa!?o`@HCL71(eF^B zGBed50)HR>({NsKlY-BZ-G+%LQW=I@{n%X3o9*kpxTc$Wup>HLR=o@#&ec<>Fl0aBGV<99aAIc3O?_x*r4NKEUH89;cd-TVfV= z8RGp_tsMUBFpE; zWo0KYIj}}JQFfIa_)FJ23NN-!esK-`=y(sp`*zMyO5@(10^P&|eC#bvFJGsnM%fud zN$C>OSJzU#TFpxgE>qd�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 I)NP;t57@;7ng9R* literal 0 HcmV?d00001 diff --git a/images/swpm-form-items.png b/images/swpm-form-items.png new file mode 100644 index 0000000000000000000000000000000000000000..98662dd324ed09925fb3fa5e0982be4c4794fbd6 GIT binary patch literal 4488 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 $wpdb->prepare( "SELECT * FROM $this->field_table_name WHERE form_id = %d $field_where ORDER BY field_sequence ASC", $form_nav_selected_id ) ); + +$depth = 1; +$parent = $last = 0; +ob_start(); + +// Loop through each field and display +foreach ( $fields as &$field ) : + // If we are at the root level + if ( !$field->field_parent && $depth > 1 ) { + // If we've been down a level, close out the list + while ( $depth > 1 ) { + echo ''; + $depth--; + } + + // Close out the root item + echo ''; + } + // first item of
      , so move down a level + elseif ( $field->field_parent && $field->field_parent == $last ) { + echo '
        '; + $depth++; + } + // Close up a
          and move up a level + elseif ( $field->field_parent && $field->field_parent != $parent ) { + echo '
        '; + $depth--; + } + // Same level so close list item + elseif ( $field->field_parent && $field->field_parent == $parent ) + echo ''; + + // Store item ID and parent ID to test for nesting + $last = $field->field_id; + $parent = $field->field_parent; +?> +
      • + + + + and
      • are closed +if ( $depth > 1 ) { + while( $depth > 1 ) { + echo '
      • +
      '; + $depth--; + } +} + +// Close out last item +echo ''; +echo ob_get_clean(); diff --git a/includes/admin-form-creator.php b/includes/admin-form-creator.php new file mode 100644 index 0000000..77afd96 --- /dev/null +++ b/includes/admin-form-creator.php @@ -0,0 +1,242 @@ +get_row( $wpdb->prepare( "SELECT * FROM $this->form_table_name WHERE form_id = %d ORDER BY $order", $form_nav_selected_id ) ); + +if ( !$form || $form->form_id !== $form_nav_selected_id ) + wp_die( 'You must select a form' ); + +$form_id = $form->form_id; +$form_title = stripslashes( $form->form_title ); +$form_subject = stripslashes( $form->form_email_subject ); +$form_email_from_name = stripslashes( $form->form_email_from_name ); +$form_email_from = stripslashes( $form->form_email_from); +$form_email_from_override = stripslashes( $form->form_email_from_override); +$form_email_from_name_override = stripslashes( $form->form_email_from_name_override); +$form_email_to = ( is_array( unserialize( $form->form_email_to ) ) ) ? unserialize( $form->form_email_to ) : explode( ',', unserialize( $form->form_email_to ) ); +$form_success_type = stripslashes( $form->form_success_type ); +$form_success_message = stripslashes( $form->form_success_message ); +$form_notification_setting = stripslashes( $form->form_notification_setting ); +$form_notification_email_name = stripslashes( $form->form_notification_email_name ); +$form_notification_email_from = stripslashes( $form->form_notification_email_from ); +$form_notification_email = stripslashes( $form->form_notification_email ); +$form_notification_subject = stripslashes( $form->form_notification_subject ); +$form_notification_message = stripslashes( $form->form_notification_message ); +$form_notification_entry = stripslashes( $form->form_notification_entry ); +$form_type = $form->form_type; +$form_label_alignment = stripslashes( $form->form_label_alignment ); + +// Only show required text fields for the sender name override +$senders = $wpdb->get_results( $wpdb->prepare( "SELECT field_id, field_name FROM $this->field_table_name WHERE form_id = %d AND field_type IN( 'text', 'name' ) AND field_validation = '' AND field_required = 'yes'", $form_nav_selected_id ) ); + +// Only show required email fields for the email override +$emails = $wpdb->get_results( $wpdb->prepare( "SELECT field_id, field_name FROM $this->field_table_name WHERE (form_id = %d AND field_type='text' AND field_validation = 'email' AND field_required = 'yes') OR (form_id = %d AND field_type='email' AND field_validation = 'email' AND field_required = 'yes')", $form_nav_selected_id, $form_nav_selected_id ) ); + +$screen = get_current_screen(); +$class = 'columns-' . get_current_screen()->get_columns(); + +$page_main = $this->_admin_pages[ 'swpm' ]; +?> +
      +
      + +
      + +
      +
      +
      +
      +
      + + + +
      +
      +
      + +
      + + + + + + +
      + + + + +
      +

      + + + +
      +

      + %s

      ', $msg ); + } + ?> + + + 'form_success_message_page', + 'id' => 'form-success-message-page', + 'class' => 'widefat', + 'show_option_none' => __( 'Select a Page' , 'swpm-form-builder'), + 'selected' => $form_success_message + )); + ?> + +

      +
      + +
      + + + +
      +

      + +
      +
      +

      + +

      +
      +

      + +

      +
      +

      + + (?) +
      + +

      +
      + +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      %1$s
      %2$s

      ', __( 'Warning — Missing Fieldset', 'swpm-form-builder' ), __( 'Your form may not function or display correctly. Please be sure to add or move a Fieldset to the beginning of your form.' , 'swpm-form-builder') ); ?>
      + + +
      +
      +
      +
      + +
      +
      +
      +
      +
      +
      + 'slm_activate', + 'secret_key' => SWPM_FB_SECRET_KEY, + 'license_key' => $license_key, + 'registered_domain' => $_SERVER['SERVER_NAME'], + 'item_reference' => urlencode(SWPM_FB_ITEM_REFERENCE), + ); + + // Send query to the license manager server + $response = wp_remote_get(add_query_arg($api_params, SWPM_FB_LICENSE_SERVER_URL), array('timeout' => 20, 'sslverify' => false)); + + // Check for error in the response + if (is_wp_error($response)) { + echo "Unexpected Error! The query returned with an error."; + } + + //var_dump($response);//uncomment it if you want to look at the full response + // License data. + $license_data = json_decode(wp_remote_retrieve_body($response)); + + // TODO - Do something with it. + //var_dump($license_data);//uncomment it to look at the data + + if ($license_data->result == 'success') {//Success was returned for the license activation + //Uncomment the followng line to see the message that returned from the license server + //echo '
      The following message was returned from the server: ' . $license_data->message; + echo '

      '.$license_data->message.'

      '; + + //Save the license key in the options table + update_option('swpm_fb_license_key', $license_key); + } else { + //Show error to the user. Probably entered incorrect license key. + //Uncomment the followng line to see the message that returned from the license server + echo '

      '.$license_data->message.'

      '; + } +} +/* * * End of license activation ** */ + +/* * * License activate button was clicked ** */ +if (isset($_REQUEST['deactivate_license'])) { + $license_key = $_REQUEST['swpm_fb_license_key']; + + // API query parameters + $api_params = array( + 'slm_action' => 'slm_deactivate', + 'secret_key' => SWPM_FB_SECRET_KEY, + 'license_key' => $license_key, + 'registered_domain' => $_SERVER['SERVER_NAME'], + 'item_reference' => urlencode(SWPM_FB_ITEM_REFERENCE), + ); + + // Send query to the license manager server + $response = wp_remote_get(add_query_arg($api_params, SWPM_FB_LICENSE_SERVER_URL), array('timeout' => 20, 'sslverify' => false)); + + // Check for error in the response + if (is_wp_error($response)) { + echo "Unexpected Error! The query returned with an error."; + } + + //var_dump($response);//uncomment it if you want to look at the full response + // License data. + $license_data = json_decode(wp_remote_retrieve_body($response)); + + // TODO - Do something with it. + //var_dump($license_data);//uncomment it to look at the data + + if ($license_data->result == 'success') {//Success was returned for the license activation + //Uncomment the followng line to see the message that returned from the license server + echo '

      '.$license_data->message.'

      '; + + //Remove the licensse key from the options table. It will need to be activated again. + update_option('swpm_fb_license_key', ''); + } else { + //Show error to the user. Probably entered incorrect license key. + //Uncomment the followng line to see the message that returned from the license server + echo '

      '.$license_data->message.'

      '; + } +} +/* * * End of sample license deactivation ** */ +?> +

      Please enter the license key for this product to activate it. You were given a license key when you purchased this item.

      +
      + + + + + +
      +

      + + +

      +
      + + + +

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +

      +
      + +

      +
      + +

      +
      + + \ No newline at end of file diff --git a/includes/class-widget.php b/includes/class-widget.php new file mode 100644 index 0000000..0047044 --- /dev/null +++ b/includes/class-widget.php @@ -0,0 +1,88 @@ +field_table_name = $wpdb->prefix . 'swpm_form_builder_fields'; + $this->form_table_name = $wpdb->prefix . 'swpm_form_builder_forms'; + $this->entries_table_name = $wpdb->prefix . 'swpm_form_builder_entries'; + + $args = array( + 'classname' => 'swpm_widget_class', + 'description' => 'Visual Form Builder widget' + ); + + $this->WP_Widget('swpm_widget', 'Visual Form Builder', $args); + } + + public function form($instance) { + global $wpdb; + + // Query to get all forms + $order = sanitize_sql_orderby('form_id ASC'); + $where = apply_filters('swpm_pre_get_forms_widget', ''); + $forms = $wpdb->get_results("SELECT * FROM $this->form_table_name WHERE 1=1 $where ORDER BY $order"); + + $instance = wp_parse_args((array) $instance); + + $title = isset($instance['title']) ? $instance['title'] : ''; + ?> +

      + + +

      +

      + + +

      + form; +// If the verification is set to required, run validation check +if (true == $required && !empty($secret_field)) { + if (!empty($honeypot)) { + $form->fatal[] = BUtils::_('Security check: hidden spam field should be blank.'); + } + if (!is_numeric($_POST[$secret_field]) || strlen($_POST[$secret_field]) !== 2) { + $form->fatal[] = BUtils::_('Security check: failed secret question. Please try again!'); + } +} + +// Basic security check before moving any further +if (!isset($_POST['swpm-submit'])) + return; +// Get global settings +$swpm_settings = get_option('swpm-settings'); + +// Settings - Max Upload Size +$settings_max_upload = isset($swpm_settings['max-upload-size']) ? $swpm_settings['max-upload-size'] : 25; + +// Settings - Spam word sensitivity +$settings_spam_points = isset($swpm_settings['spam-points']) ? $swpm_settings['spam-points'] : 4; + +// Set submitted action to display success message +$this->submitted = true; + +// Tells us which form to get from the database +$form_id = absint($_POST['form_id']); +$form->init_by_id($form_id); +if($form->formmeta->type == SwpmFbForm::PROFILE){ + $form->init_by_level_for_profile(); +} +$skip_referrer_check = apply_filters('swpm_skip_referrer_check', false, $form_id); + +// Test if referral URL has been set +if (!$referrer) { + $form->fatal('security', BUtils::_('Security check: referal URL does not appear to be set.')); +} +// Allow referrer check to be skipped +if (!$skip_referrer_check) { + // Test if the referral URL matches what sent from WordPress + if ($wp_get_referer) { + $form->fatal('security', BUtils::_('Security check: referal does not match this site.')); + } +} + +// Test if it's a known SPAM bot +if ($this->isBot()) { + $form->fatal('Spam Words', BUtils::_('Security check: looks like you are a SPAM bot. If you think this is an error, please email the site owner.')); + return; +} +if (!$form->is_fatal()) { + $form->process(); + if ($form->is_valid()) { + $form->save(); + } +} diff --git a/includes/form-output.php b/includes/form-output.php new file mode 100644 index 0000000..49684a7 --- /dev/null +++ b/includes/form-output.php @@ -0,0 +1,220 @@ +add_scripts) + $this->scripts(); + +$form = $this->form; + +if ($form->is_fatal()) { + $fatal = $form->fatal(); + echo '
      '; + foreach ($fatal as $each) { + echo $each . '
      '; + return; +} +if (!$form->is_valid()) { + $error = $form->error(); + foreach ($error as $each) { + echo $each . '
      '; + } +} + +// If form is submitted, show success message, otherwise the form +if (isset($_POST['swpm-submit'])) { + $output = $this->confirmation(); + if ($form->is_valid()) { + return; + }; // if submitted and valid +} else { //initialize the form if valid. + if ($form->is_fatal()) { + return; + } +} + +// Get fields +/* $order_fields = sanitize_sql_orderby( 'field_sequence ASC' ); + $fields = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $this->field_table_name WHERE form_id = %d ORDER BY $order_fields", $form_id ) ); */ + +// Setup default variables +$count = 1; +$open_fieldset = $open_section = false; +$submit = 'Submit'; +$verification = ''; +$form_id = $form->formmeta->id; +$label_alignment = ( $form->formmeta->label_alignment !== '' ) ? esc_attr($form->formmeta->label_alignment) : ''; + +// Start form container +$output .= sprintf('
      ', $form_id); + +$output .= sprintf( + '
      + ', esc_attr($form->formmeta->key), $form_id, "swpm-form-$form_id", $label_alignment, absint($form->formmeta->id) +); + +$level_identifier = md5($form->get_level_info('id')); +$output .= sprintf('', $level_identifier); +foreach ($form->formmeta->fields as $field) : + if (!BUtils::is_admin() && $field->adminonly) { + continue; + } // + extract($field->get_sanitized_options()); + // Close each section + if ($open_section == true) : + // If this field's parent does NOT equal our section ID + if ($sec_id && $sec_id !== absint($field->parent)) : + $output .= '
      '; + $open_section = false; + endif; + endif; + +// Force an initial fieldset and display an error message to strongly encourage user to add one + if ($count === 1 && $field_type !== 'fieldset') : + $output .= sprintf('

      %1$s

      %2$s

        ', __('Oops! Missing Fieldset', 'swpm-form-builder'), __('If you are seeing this message, it means you need to add a Fieldset to the beginning of your form. Your form may not function or display properly without one.', 'swpm-form-builder'), $count + ); + + $count++; + endif; + + if ($field_type == 'fieldset') : + // Close each fieldset + if ($open_fieldset == true) + $output .= '
       
      '; + + // Only display Legend if field name is not blank + $legend = !empty($field_name) ? sprintf('

      %s

      ', $field_name) : ' '; + + $output .= sprintf( + '
      %5$s
        ', $count, esc_attr($field->key), $css, $id_attr, $legend + ); + + $open_fieldset = true; + $count++; + + elseif ($field_type == 'section') : + + $output .= sprintf( + '

        %3$s

        ', $id_attr, $css, $field_name + ); + + // Save section ID for future comparison + $sec_id = $field_id; + $open_section = true; + + elseif (!in_array($field_type, array('verification', 'secret', 'submit'))) : + + $columns_choice = (!empty($field->size) && in_array($field_type, array('radio', 'checkbox')) ) ? esc_attr(" swpm-$field->size") : ''; + + if ($field_type !== 'hidden') : + + // Don't add for attribute for certain form items + $for = !in_array($field_type, array('checkbox', 'radio', 'time', 'address', 'instructions')) ? ' for="%4$s"' : ''; + + $output .= sprintf( + '
      • %5$s %6$s', $field_type, $columns_choice, $layout, $id_attr, $field_name, $required_span + ); + endif; + + elseif (in_array($field_type, array('verification', 'secret'))) : + + if ($field_type == 'verification') : + $verification .= sprintf( + '

        %5$s

          ', $count, esc_attr($field->key), $css, $id_attr, $field_name + ); + endif; + + if ($field_type == 'secret') : + // Default logged in values + $logged_in_display = $logged_in_value = ''; + $verification .= sprintf( + '
        • ', $field_type, $logged_in_display, $id_attr, $field_name, $required_span + ); + + // Set variable for testing if required is Yes/No + $verification .= ( empty($required) ) ? '' : ''; + + // Set hidden secret to matching input + $verification .= sprintf('', $field_id); + + $validation = '{digits:true,maxlength:2,minlength:2}'; + + $verification_item = sprintf( + '', $field_id, $id_attr, $logged_in_value, $size, $required, $validation, $css + ); + + $verification .= (!empty($description) ) ? sprintf('%1$s', $verification_item, $description) : $verification_item; + + endif; + endif; + $value = $form->get_field_value($field); + switch ($field_type) { + case 'text' : + case 'email' : + case 'url' : + case 'currency' : + case 'number' : + case 'phone' : + case 'password': + case 'textarea' : + case 'select' : + case 'radio' : + case 'checkbox' : + case 'address' : + case 'date' : + case 'time' : + case 'html' : + case 'file-upload' : + case 'instructions' : + $output .= $field->toHTML($value, $form->formmeta->type, $form->formmeta->label_alignment); + break; + case 'submit' : + $submit = $field->toHTML(null, $form->formmeta->type, $form->formmeta->label_alignment); + break; + default: + echo ''; + } + + // Closing
        • + $output .= (!in_array($field_type, array('verification', 'secret', 'submit', 'fieldset', 'section')) ) ? '' : ''; +endforeach; + + +// Close user-added fields +$output .= '
         
        '; + +// Make sure the verification displays even if they have not updated their form +if (empty($verification)) : + + $verification = sprintf( + '
        +

        %1$s

        +
          +
        • + +
          +
        • ', __('Verification', 'swpm-form-builder'), $count, __('Please enter any two digits with no spaces (Example: 12)', 'swpm-form-builder') + ); + +endif; + +// Output our security test +$output .= sprintf( + $verification . + '
        • + %2$s
        +
        ', __('This box is for spam protection - please leave it blank', 'swpm-form-builder'), $submit +); +$output .= wp_referer_field(false); + +// Close the form out +$output .= ''; + +// Close form container +$output .= '
      • '; + +// Force tags to balance +force_balance_tags($output); + +return $output; diff --git a/js/ckeditor/ckeditor.js b/js/ckeditor/ckeditor.js new file mode 100644 index 0000000..cfdeec4 --- /dev/null +++ b/js/ckeditor/ckeditor.js @@ -0,0 +1,919 @@ +/* +Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +(function(){if(window.CKEDITOR&&window.CKEDITOR.dom)return;window.CKEDITOR||(window.CKEDITOR=function(){var a={timestamp:"D3NA",version:"4.1.1",revision:"5a2a7e3",rnd:Math.floor(900*Math.random())+100,_:{pending:[]},status:"unloaded",basePath:function(){var b=window.CKEDITOR_BASEPATH||"";if(!b)for(var a=document.getElementsByTagName("script"),d=0;d=0;p--)if(n[p].priority<=l){n.splice(p+1,0,i);return{removeListener:m}}n.unshift(i)}return{removeListener:m}}, +once:function(){var b=arguments[1];arguments[1]=function(a){a.removeListener();return b.apply(this,arguments)};return this.on.apply(this,arguments)},capture:function(){CKEDITOR.event.useCapture=1;var b=this.on.apply(this,arguments);CKEDITOR.event.useCapture=0;return b},fire:function(){var b=0,a=function(){b=1},d=0,j=function(){d=1};return function(l,i,m){var n=c(this)[l],l=b,r=d;b=d=0;if(n){var p=n.listeners;if(p.length)for(var p=p.slice(0),g,h=0;h=0&&d.listeners.splice(j,1)}},removeAllListeners:function(){var b=c(this),a;for(a in b)delete b[a]},hasListeners:function(b){return(b=c(this)[b])&&b.listeners.length>0}}}()); +CKEDITOR.editor||(CKEDITOR.editor=function(){CKEDITOR._.pending.push([this,arguments]);CKEDITOR.event.call(this)},CKEDITOR.editor.prototype.fire=function(a,c){a in{instanceReady:1,loaded:1}&&(this[a]=true);return CKEDITOR.event.prototype.fire.call(this,a,c,this)},CKEDITOR.editor.prototype.fireOnce=function(a,c){a in{instanceReady:1,loaded:1}&&(this[a]=true);return CKEDITOR.event.prototype.fireOnce.call(this,a,c,this)},CKEDITOR.event.implementOn(CKEDITOR.editor.prototype)); +CKEDITOR.env||(CKEDITOR.env=function(){var a=navigator.userAgent.toLowerCase(),c=window.opera,b={ie:eval("/*@cc_on!@*/false"),opera:!!c&&c.version,webkit:a.indexOf(" applewebkit/")>-1,air:a.indexOf(" adobeair/")>-1,mac:a.indexOf("macintosh")>-1,quirks:document.compatMode=="BackCompat",mobile:a.indexOf("mobile")>-1,iOS:/(ipad|iphone|ipod)/.test(a),isCustomDomain:function(){if(!this.ie)return false;var b=document.domain,a=window.location.hostname;return b!=a&&b!="["+a+"]"},secure:location.protocol== +"https:"};b.gecko=navigator.product=="Gecko"&&!b.webkit&&!b.opera;if(b.webkit)a.indexOf("chrome")>-1?b.chrome=true:b.safari=true;var f=0;if(b.ie){f=b.quirks||!document.documentMode?parseFloat(a.match(/msie (\d+)/)[1]):document.documentMode;b.ie9Compat=f==9;b.ie8Compat=f==8;b.ie7Compat=f==7;b.ie6Compat=f<7||b.quirks}if(b.gecko){var e=a.match(/rv:([\d\.]+)/);if(e){e=e[1].split(".");f=e[0]*1E4+(e[1]||0)*100+(e[2]||0)*1}}b.opera&&(f=parseFloat(c.version()));b.air&&(f=parseFloat(a.match(/ adobeair\/(\d+)/)[1])); +b.webkit&&(f=parseFloat(a.match(/ applewebkit\/(\d+)/)[1]));b.version=f;b.isCompatible=b.iOS&&f>=534||!b.mobile&&(b.ie&&f>6||b.gecko&&f>=10801||b.opera&&f>=9.5||b.air&&f>=1||b.webkit&&f>=522||false);b.cssClass="cke_browser_"+(b.ie?"ie":b.gecko?"gecko":b.opera?"opera":b.webkit?"webkit":"unknown");if(b.quirks)b.cssClass=b.cssClass+" cke_browser_quirks";if(b.ie){b.cssClass=b.cssClass+(" cke_browser_ie"+(b.quirks||b.version<7?"6":b.version));if(b.quirks)b.cssClass=b.cssClass+" cke_browser_iequirks"}if(b.gecko)if(f< +10900)b.cssClass=b.cssClass+" cke_browser_gecko18";else if(f<=11E3)b.cssClass=b.cssClass+" cke_browser_gecko19";if(b.air)b.cssClass=b.cssClass+" cke_browser_air";return b}()); +"unloaded"==CKEDITOR.status&&function(){CKEDITOR.event.implementOn(CKEDITOR);CKEDITOR.loadFullCore=function(){if(CKEDITOR.status!="basic_ready")CKEDITOR.loadFullCore._load=1;else{delete CKEDITOR.loadFullCore;var a=document.createElement("script");a.type="text/javascript";a.src=CKEDITOR.basePath+"ckeditor.js";document.getElementsByTagName("head")[0].appendChild(a)}};CKEDITOR.loadFullCoreTimeout=0;CKEDITOR.add=function(a){(this._.pending||(this._.pending=[])).push(a)};(function(){CKEDITOR.domReady(function(){var a= +CKEDITOR.loadFullCore,c=CKEDITOR.loadFullCoreTimeout;if(a){CKEDITOR.status="basic_ready";a&&a._load?a():c&&setTimeout(function(){CKEDITOR.loadFullCore&&CKEDITOR.loadFullCore()},c*1E3)}})})();CKEDITOR.status="basic_loaded"}();CKEDITOR.dom={}; +(function(){var a=[],c=CKEDITOR.env.gecko?"-moz-":CKEDITOR.env.webkit?"-webkit-":CKEDITOR.env.opera?"-o-":CKEDITOR.env.ie?"-ms-":"";CKEDITOR.on("reset",function(){a=[]});CKEDITOR.tools={arrayCompare:function(b,a){if(!b&&!a)return true;if(!b||!a||b.length!=a.length)return false;for(var e=0;e"+a+""):e.push('');return e.join("")},htmlEncode:function(b){return(""+b).replace(/&/g,"&").replace(/>/g,">").replace(//g,">")},getNextNumber:function(){var b=0;return function(){return++b}}(),getNextId:function(){return"cke_"+this.getNextNumber()},override:function(b,a){var e=a(b);e.prototype=b.prototype;return e},setTimeout:function(b,a,e,d,c){c||(c=window);e||(e=c);return c.setTimeout(function(){d?b.apply(e,[].concat(d)):b.apply(e)},a||0)},trim:function(){var b=/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g;return function(a){return a.replace(b,"")}}(),ltrim:function(){var b=/^[ \t\n\r]+/g; +return function(a){return a.replace(b,"")}}(),rtrim:function(){var b=/[ \t\n\r]+$/g;return function(a){return a.replace(b,"")}}(),indexOf:function(b,a){if(typeof a=="function")for(var e=0,d=b.length;e=0?b[e]:null},bind:function(b,a){return function(){return b.apply(a,arguments)}},createClass:function(b){var a=b.$, +e=b.base,d=b.privates||b._,c=b.proto,b=b.statics;!a&&(a=function(){e&&this.base.apply(this,arguments)});if(d)var l=a,a=function(){var b=this._||(this._={}),a;for(a in d){var f=d[a];b[a]=typeof f=="function"?CKEDITOR.tools.bind(f,this):f}l.apply(this,arguments)};if(e){a.prototype=this.prototypedCopy(e.prototype);a.prototype.constructor=a;a.base=e;a.baseProto=e.prototype;a.prototype.base=function(){this.base=e.prototype.base;e.apply(this,arguments);this.base=arguments.callee}}c&&this.extend(a.prototype, +c,true);b&&this.extend(a,b,true);return a},addFunction:function(b,f){return a.push(function(){return b.apply(f||this,arguments)})-1},removeFunction:function(b){a[b]=null},callFunction:function(b){var f=a[b];return f&&f.apply(window,Array.prototype.slice.call(arguments,1))},cssLength:function(){var b=/^-?\d+\.?\d*px$/,a;return function(e){a=CKEDITOR.tools.trim(e+"")+"px";return b.test(a)?a:e||""}}(),convertToPx:function(){var b;return function(a){if(!b){b=CKEDITOR.dom.element.createFromHtml('
        ', +CKEDITOR.document);CKEDITOR.document.getBody().append(b)}if(!/%$/.test(a)){b.setStyle("width",a);return b.$.clientWidth}return a}}(),repeat:function(b,a){return Array(a+1).join(b)},tryThese:function(){for(var b,a=0,e=arguments.length;a8)&&c)a=c+":"+a;return new CKEDITOR.dom.nodeList(this.$.getElementsByTagName(a))},getHead:function(){var a=this.$.getElementsByTagName("head")[0];return a= +a?new CKEDITOR.dom.element(a):this.getDocumentElement().append(new CKEDITOR.dom.element("head"),true)},getBody:function(){return new CKEDITOR.dom.element(this.$.body)},getDocumentElement:function(){return new CKEDITOR.dom.element(this.$.documentElement)},getWindow:function(){var a=new CKEDITOR.dom.window(this.$.parentWindow||this.$.defaultView);return(this.getWindow=function(){return a})()},write:function(a){this.$.open("text/html","replace");CKEDITOR.env.isCustomDomain()&&(this.$.domain=document.domain); +this.$.write(a);this.$.close()}});CKEDITOR.dom.nodeList=function(a){this.$=a};CKEDITOR.dom.nodeList.prototype={count:function(){return this.$.length},getItem:function(a){if(a<0||a>=this.$.length)return null;return(a=this.$[a])?new CKEDITOR.dom.node(a):null}};CKEDITOR.dom.element=function(a,c){typeof a=="string"&&(a=(c?c.$:document).createElement(a));CKEDITOR.dom.domObject.call(this,a)}; +CKEDITOR.dom.element.get=function(a){return(a=typeof a=="string"?document.getElementById(a)||document.getElementsByName(a)[0]:a)&&(a.$?a:new CKEDITOR.dom.element(a))};CKEDITOR.dom.element.prototype=new CKEDITOR.dom.node;CKEDITOR.dom.element.createFromHtml=function(a,c){var b=new CKEDITOR.dom.element("div",c);b.setHtml(a);return b.getFirst().remove()}; +CKEDITOR.dom.element.setMarker=function(a,c,b,f){var e=c.getCustomData("list_marker_id")||c.setCustomData("list_marker_id",CKEDITOR.tools.getNextNumber()).getCustomData("list_marker_id"),d=c.getCustomData("list_marker_names")||c.setCustomData("list_marker_names",{}).getCustomData("list_marker_names");a[e]=c;d[b]=1;return c.setCustomData(b,f)};CKEDITOR.dom.element.clearAllMarkers=function(a){for(var c in a)CKEDITOR.dom.element.clearMarkers(a,a[c],1)}; +CKEDITOR.dom.element.clearMarkers=function(a,c,b){var f=c.getCustomData("list_marker_names"),e=c.getCustomData("list_marker_id"),d;for(d in f)c.removeCustomData(d);c.removeCustomData("list_marker_names");if(b){c.removeCustomData("list_marker_id");delete a[e]}}; +(function(){function a(b){for(var a=0,e=0,d=c[b].length;e]*>/g, +""):b},getOuterHtml:function(){if(this.$.outerHTML)return this.$.outerHTML.replace(/<\?[^>]*>/,"");var b=this.$.ownerDocument.createElement("div");b.appendChild(this.$.cloneNode(true));return b.innerHTML},getClientRect:function(){var b=CKEDITOR.tools.extend({},this.$.getBoundingClientRect());!b.width&&(b.width=b.right-b.left);!b.height&&(b.height=b.bottom-b.top);return b},setHtml:function(){var b=function(b){return this.$.innerHTML=b};return CKEDITOR.env.ie&&CKEDITOR.env.version<9?function(b){try{return this.$.innerHTML= +b}catch(a){this.$.innerHTML="";var c=new CKEDITOR.dom.element("body",this.getDocument());c.$.innerHTML=b;for(c=c.getChildren();c.count();)this.append(c.getItem(0));return b}}:b}(),setText:function(b){CKEDITOR.dom.element.prototype.setText=this.$.innerText!=void 0?function(b){return this.$.innerText=b}:function(b){return this.$.textContent=b};return this.setText(b)},getAttribute:function(){var b=function(b){return this.$.getAttribute(b,2)};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)? +function(b){switch(b){case "class":b="className";break;case "http-equiv":b="httpEquiv";break;case "name":return this.$.name;case "tabindex":b=this.$.getAttribute(b,2);b!==0&&this.$.tabIndex===0&&(b=null);return b;case "checked":b=this.$.attributes.getNamedItem(b);return(b.specified?b.nodeValue:this.$.checked)?"checked":null;case "hspace":case "value":return this.$[b];case "style":return this.$.style.cssText;case "contenteditable":case "contentEditable":return this.$.attributes.getNamedItem("contentEditable").specified? +this.$.getAttribute("contentEditable"):null}return this.$.getAttribute(b,2)}:b}(),getChildren:function(){return new CKEDITOR.dom.nodeList(this.$.childNodes)},getComputedStyle:CKEDITOR.env.ie?function(b){return this.$.currentStyle[CKEDITOR.tools.cssStyleToDomStyle(b)]}:function(b){var a=this.getWindow().$.getComputedStyle(this.$,null);return a?a.getPropertyValue(b):""},getDtd:function(){var b=CKEDITOR.dtd[this.getName()];this.getDtd=function(){return b};return b},getElementsByTag:CKEDITOR.dom.document.prototype.getElementsByTag, +getTabIndex:CKEDITOR.env.ie?function(){var b=this.$.tabIndex;b===0&&(!CKEDITOR.dtd.$tabIndex[this.getName()]&&parseInt(this.getAttribute("tabindex"),10)!==0)&&(b=-1);return b}:CKEDITOR.env.webkit?function(){var b=this.$.tabIndex;if(b==void 0){b=parseInt(this.getAttribute("tabindex"),10);isNaN(b)&&(b=-1)}return b}:function(){return this.$.tabIndex},getText:function(){return this.$.textContent||this.$.innerText||""},getWindow:function(){return this.getDocument().getWindow()},getId:function(){return this.$.id|| +null},getNameAtt:function(){return this.$.name||null},getName:function(){var b=this.$.nodeName.toLowerCase();if(CKEDITOR.env.ie&&!(document.documentMode>8)){var a=this.$.scopeName;a!="HTML"&&(b=a.toLowerCase()+":"+b)}return(this.getName=function(){return b})()},getValue:function(){return this.$.value},getFirst:function(b){var a=this.$.firstChild;(a=a&&new CKEDITOR.dom.node(a))&&(b&&!b(a))&&(a=a.getNext(b));return a},getLast:function(b){var a=this.$.lastChild;(a=a&&new CKEDITOR.dom.node(a))&&(b&&!b(a))&& +(a=a.getPrevious(b));return a},getStyle:function(b){return this.$.style[CKEDITOR.tools.cssStyleToDomStyle(b)]},is:function(){var b=this.getName();if(typeof arguments[0]=="object")return!!arguments[0][b];for(var a=0;a0&&(a>2||!c[b[0].nodeName]||a==2&&!c[b[1].nodeName])},hasAttribute:function(){function b(b){b=this.$.attributes.getNamedItem(b); +return!(!b||!b.specified)}return CKEDITOR.env.ie&&CKEDITOR.env.version<8?function(a){return a=="name"?!!this.$.name:b.call(this,a)}:b}(),hide:function(){this.setStyle("display","none")},moveChildren:function(b,a){var c=this.$,b=b.$;if(c!=b){var d;if(a)for(;d=c.lastChild;)b.insertBefore(c.removeChild(d),b.firstChild);else for(;d=c.firstChild;)b.appendChild(c.removeChild(d))}},mergeSiblings:function(){function b(b,a,c){if(a&&a.type==CKEDITOR.NODE_ELEMENT){for(var j=[];a.data("cke-bookmark")||a.isEmptyInlineRemoveable();){j.push(a); +a=c?a.getNext():a.getPrevious();if(!a||a.type!=CKEDITOR.NODE_ELEMENT)return}if(b.isIdentical(a)){for(var l=c?b.getLast():b.getFirst();j.length;)j.shift().move(b,!c);a.moveChildren(b,!c);a.remove();l&&l.type==CKEDITOR.NODE_ELEMENT&&l.mergeSiblings()}}}return function(a){if(a===false||CKEDITOR.dtd.$removeEmpty[this.getName()]||this.is("a")){b(this,this.getNext(),true);b(this,this.getPrevious())}}}(),show:function(){this.setStyles({display:"",visibility:""})},setAttribute:function(){var b=function(b, +a){this.$.setAttribute(b,a);return this};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)?function(a,c){a=="class"?this.$.className=c:a=="style"?this.$.style.cssText=c:a=="tabindex"?this.$.tabIndex=c:a=="checked"?this.$.checked=c:a=="contenteditable"?b.call(this,"contentEditable",c):b.apply(this,arguments);return this}:CKEDITOR.env.ie8Compat&&CKEDITOR.env.secure?function(a,c){if(a=="src"&&c.match(/^http:\/\//))try{b.apply(this,arguments)}catch(d){}else b.apply(this,arguments); +return this}:b}(),setAttributes:function(b){for(var a in b)this.setAttribute(a,b[a]);return this},setValue:function(b){this.$.value=b;return this},removeAttribute:function(){var b=function(b){this.$.removeAttribute(b)};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)?function(b){b=="class"?b="className":b=="tabindex"?b="tabIndex":b=="contenteditable"&&(b="contentEditable");this.$.removeAttribute(b)}:b}(),removeAttributes:function(b){if(CKEDITOR.tools.isArray(b))for(var a=0;a< +b.length;a++)this.removeAttribute(b[a]);else for(a in b)b.hasOwnProperty(a)&&this.removeAttribute(a)},removeStyle:function(b){var a=this.$.style;if(!a.removeProperty&&(b=="border"||b=="margin"||b=="padding")){var c=["top","left","right","bottom"],d;b=="border"&&(d=["color","style","width"]);for(var a=[],j=0;j=100?"":"progid:DXImageTransform.Microsoft.Alpha(opacity="+b+")")}else this.setStyle("opacity",b)},unselectable:function(){this.setStyles(CKEDITOR.tools.cssVendorPrefix("user-select", +"none"));if(CKEDITOR.env.ie||CKEDITOR.env.opera){this.setAttribute("unselectable","on");for(var b,a=this.getElementsByTag("*"),c=0,d=a.count();c0)m(0,a===true?i:a===false?j:i<0?i:j);if(c&&(l<0||d>0))m(l<0?l:d,0)},setState:function(b,a,c){a=a||"cke";switch(b){case CKEDITOR.TRISTATE_ON:this.addClass(a+"_on");this.removeClass(a+"_off");this.removeClass(a+"_disabled");c&&this.setAttribute("aria-pressed",true);c&&this.removeAttribute("aria-disabled"); +break;case CKEDITOR.TRISTATE_DISABLED:this.addClass(a+"_disabled");this.removeClass(a+"_off");this.removeClass(a+"_on");c&&this.setAttribute("aria-disabled",true);c&&this.removeAttribute("aria-pressed");break;default:this.addClass(a+"_off");this.removeClass(a+"_on");this.removeClass(a+"_disabled");c&&this.removeAttribute("aria-pressed");c&&this.removeAttribute("aria-disabled")}},getFrameDocument:function(){var b=this.$;try{b.contentWindow.document}catch(a){b.src=b.src}return b&&new CKEDITOR.dom.document(b.contentWindow.document)}, +copyAttributes:function(b,a){for(var c=this.$.attributes,a=a||{},d=0;d=0&&a0&&c;)c=b(c,a.shift());else c=b(c,a);return c?new CKEDITOR.dom.node(c):null}}(),getChildCount:function(){return this.$.childNodes.length},disableContextMenu:function(){this.on("contextmenu", +function(b){b.data.getTarget().hasClass("cke_enable_context_menu")||b.data.preventDefault()})},getDirection:function(b){return b?this.getComputedStyle("direction")||this.getDirection()||this.getParent()&&this.getParent().getDirection(1)||this.getDocument().$.dir||"ltr":this.getStyle("direction")||this.getAttribute("dir")},data:function(b,a){b="data-"+b;if(a===void 0)return this.getAttribute(b);a===false?this.removeAttribute(b):this.setAttribute(b,a);return null},getEditor:function(){var b=CKEDITOR.instances, +a,c;for(a in b){c=b[a];if(c.element.equals(this)&&c.elementMode!=CKEDITOR.ELEMENT_MODE_APPENDTO)return c}return null}});var c={width:["border-left-width","border-right-width","padding-left","padding-right"],height:["border-top-width","border-bottom-width","padding-top","padding-bottom"]};CKEDITOR.dom.element.prototype.setSize=function(b,c,e){if(typeof c=="number"){if(e&&(!CKEDITOR.env.ie||!CKEDITOR.env.quirks))c=c-a.call(this,b);this.setStyle(b,c+"px")}};CKEDITOR.dom.element.prototype.getSize=function(b, +c){var e=Math.max(this.$["offset"+CKEDITOR.tools.capitalize(b)],this.$["client"+CKEDITOR.tools.capitalize(b)])||0;c&&(e=e-a.call(this,b));return e}})();CKEDITOR.dom.documentFragment=function(a){a=a||CKEDITOR.document;this.$=a.type==CKEDITOR.NODE_DOCUMENT?a.$.createDocumentFragment():a}; +CKEDITOR.tools.extend(CKEDITOR.dom.documentFragment.prototype,CKEDITOR.dom.element.prototype,{type:CKEDITOR.NODE_DOCUMENT_FRAGMENT,insertAfterNode:function(a){a=a.$;a.parentNode.insertBefore(this.$,a.nextSibling)}},!0,{append:1,appendBogus:1,getFirst:1,getLast:1,getParent:1,getNext:1,getPrevious:1,appendTo:1,moveChildren:1,insertBefore:1,insertAfterNode:1,replace:1,trim:1,type:1,ltrim:1,rtrim:1,getDocument:1,getChildCount:1,getChild:1,getChildren:1}); +(function(){function a(a,b){var c=this.range;if(this._.end)return null;if(!this._.start){this._.start=1;if(c.collapsed){this.end();return null}c.optimize()}var d,n=c.startContainer;d=c.endContainer;var r=c.startOffset,p=c.endOffset,g,h=this.guard,u=this.type,f=a?"getPreviousSourceNode":"getNextSourceNode";if(!a&&!this._.guardLTR){var k=d.type==CKEDITOR.NODE_ELEMENT?d:d.getParent(),e=d.type==CKEDITOR.NODE_ELEMENT?d.getChild(p):d.getNext();this._.guardLTR=function(a,b){return(!b||!k.equals(a))&&(!e|| +!a.equals(e))&&(a.type!=CKEDITOR.NODE_ELEMENT||!b||!a.equals(c.root))}}if(a&&!this._.guardRTL){var F=n.type==CKEDITOR.NODE_ELEMENT?n:n.getParent(),D=n.type==CKEDITOR.NODE_ELEMENT?r?n.getChild(r-1):null:n.getPrevious();this._.guardRTL=function(a,b){return(!b||!F.equals(a))&&(!D||!a.equals(D))&&(a.type!=CKEDITOR.NODE_ELEMENT||!b||!a.equals(c.root))}}var B=a?this._.guardRTL:this._.guardLTR;g=h?function(a,b){return B(a,b)===false?false:h(a,b)}:B;if(this.current)d=this.current[f](false,u,g);else{if(a)d.type== +CKEDITOR.NODE_ELEMENT&&(d=p>0?d.getChild(p-1):g(d,true)===false?null:d.getPreviousSourceNode(true,u,g));else{d=n;if(d.type==CKEDITOR.NODE_ELEMENT&&!(d=d.getChild(r)))d=g(n,true)===false?null:n.getNextSourceNode(true,u,g)}d&&g(d)===false&&(d=null)}for(;d&&!this._.end;){this.current=d;if(!this.evaluator||this.evaluator(d)!==false){if(!b)return d}else if(b&&this.evaluator)return false;d=d[f](false,u,g)}this.end();return this.current=null}function c(b){for(var c,d=null;c=a.call(this,b);)d=c;return d} +CKEDITOR.dom.walker=CKEDITOR.tools.createClass({$:function(a){this.range=a;this._={}},proto:{end:function(){this._.end=1},next:function(){return a.call(this)},previous:function(){return a.call(this,1)},checkForward:function(){return a.call(this,0,1)!==false},checkBackward:function(){return a.call(this,1,1)!==false},lastForward:function(){return c.call(this)},lastBackward:function(){return c.call(this,1)},reset:function(){delete this.current;this._={}}}});var b={block:1,"list-item":1,table:1,"table-row-group":1, +"table-header-group":1,"table-footer-group":1,"table-row":1,"table-column-group":1,"table-column":1,"table-cell":1,"table-caption":1};CKEDITOR.dom.element.prototype.isBlockBoundary=function(a){a=a?CKEDITOR.tools.extend({},CKEDITOR.dtd.$block,a||{}):CKEDITOR.dtd.$block;return this.getComputedStyle("float")=="none"&&b[this.getComputedStyle("display")]||a[this.getName()]};CKEDITOR.dom.walker.blockBoundary=function(a){return function(b){return!(b.type==CKEDITOR.NODE_ELEMENT&&b.isBlockBoundary(a))}};CKEDITOR.dom.walker.listItemBoundary= +function(){return this.blockBoundary({br:1})};CKEDITOR.dom.walker.bookmark=function(a,b){function c(a){return a&&a.getName&&a.getName()=="span"&&a.data("cke-bookmark")}return function(d){var n,r;n=d&&d.type!=CKEDITOR.NODE_ELEMENT&&(r=d.getParent())&&c(r);n=a?n:n||c(d);return!!(b^n)}};CKEDITOR.dom.walker.whitespaces=function(a){return function(b){var c;b&&b.type==CKEDITOR.NODE_TEXT&&(c=!CKEDITOR.tools.trim(b.getText())||CKEDITOR.env.webkit&&b.getText()=="​");return!!(a^c)}};CKEDITOR.dom.walker.invisible= +function(a){var b=CKEDITOR.dom.walker.whitespaces();return function(c){if(b(c))c=1;else{c.type==CKEDITOR.NODE_TEXT&&(c=c.getParent());c=!c.$.offsetHeight}return!!(a^c)}};CKEDITOR.dom.walker.nodeType=function(a,b){return function(c){return!!(b^c.type==a)}};CKEDITOR.dom.walker.bogus=function(a){function b(a){return!e(a)&&!d(a)}return function(c){var d=!CKEDITOR.env.ie?c.is&&c.is("br"):c.getText&&f.test(c.getText());if(d){d=c.getParent();c=c.getNext(b);d=d.isBlockBoundary()&&(!c||c.type==CKEDITOR.NODE_ELEMENT&& +c.isBlockBoundary())}return!!(a^d)}};var f=/^[\t\r\n ]*(?: |\xa0)$/,e=CKEDITOR.dom.walker.whitespaces(),d=CKEDITOR.dom.walker.bookmark();CKEDITOR.dom.element.prototype.getBogus=function(){var a=this;do a=a.getPreviousSourceNode();while(d(a)||e(a)||a.type==CKEDITOR.NODE_ELEMENT&&a.getName()in CKEDITOR.dtd.$inline&&!(a.getName()in CKEDITOR.dtd.$empty));return a&&(!CKEDITOR.env.ie?a.is&&a.is("br"):a.getText&&f.test(a.getText()))?a:false}})(); +CKEDITOR.dom.range=function(a){this.endOffset=this.endContainer=this.startOffset=this.startContainer=null;this.collapsed=true;var c=a instanceof CKEDITOR.dom.document;this.document=c?a:a.getDocument();this.root=c?a.getBody():a}; +(function(){function a(){var a=false,b=CKEDITOR.dom.walker.whitespaces(),c=CKEDITOR.dom.walker.bookmark(true),g=CKEDITOR.dom.walker.bogus();return function(h){if(c(h)||b(h))return true;if(g(h)&&!a)return a=true;return h.type==CKEDITOR.NODE_TEXT&&(h.hasAscendant("pre")||CKEDITOR.tools.trim(h.getText()).length)||h.type==CKEDITOR.NODE_ELEMENT&&!h.is(d)?false:true}}function c(a){var b=CKEDITOR.dom.walker.whitespaces(),c=CKEDITOR.dom.walker.bookmark(1);return function(g){return c(g)||b(g)?true:!a&&j(g)|| +g.type==CKEDITOR.NODE_ELEMENT&&g.is(CKEDITOR.dtd.$removeEmpty)}}function b(a){return!l(a)&&!i(a)}var f=function(a){a.collapsed=a.startContainer&&a.endContainer&&a.startContainer.equals(a.endContainer)&&a.startOffset==a.endOffset},e=function(a,b,c,g){a.optimizeBookmark();var h=a.startContainer,d=a.endContainer,f=a.startOffset,k=a.endOffset,e,j;if(d.type==CKEDITOR.NODE_TEXT)d=d.split(k);else if(d.getChildCount()>0)if(k>=d.getChildCount()){d=d.append(a.document.createText(""));j=true}else d=d.getChild(k); +if(h.type==CKEDITOR.NODE_TEXT){h.split(f);h.equals(d)&&(d=h.getNext())}else if(f)if(f>=h.getChildCount()){h=h.append(a.document.createText(""));e=true}else h=h.getChild(f).getPrevious();else{h=h.append(a.document.createText(""),1);e=true}var f=h.getParents(),k=d.getParents(),l,i,q;for(l=0;l0&&!s.equals(d)&&(A=m.append(s.clone()));if(!f[c]||s.$.parentNode!=f[c].$.parentNode)for(s=s.getPrevious();s;){if(s.equals(f[c])||s.equals(h))break;v=s.getPrevious();if(b==2)m.$.insertBefore(s.$.cloneNode(true),m.$.firstChild);else{s.remove();b==1&&m.$.insertBefore(s.$,m.$.firstChild)}s=v}m&&(m=A)}if(b==2){i=a.startContainer;if(i.type==CKEDITOR.NODE_TEXT){i.$.data=i.$.data+i.$.nextSibling.data; +i.$.parentNode.removeChild(i.$.nextSibling)}a=a.endContainer;if(a.type==CKEDITOR.NODE_TEXT&&a.$.nextSibling){a.$.data=a.$.data+a.$.nextSibling.data;a.$.parentNode.removeChild(a.$.nextSibling)}}else{if(i&&q&&(h.$.parentNode!=i.$.parentNode||d.$.parentNode!=q.$.parentNode)){b=q.getIndex();e&&q.$.parentNode==h.$.parentNode&&b--;if(g&&i.type==CKEDITOR.NODE_ELEMENT){g=CKEDITOR.dom.element.createFromHtml(' ',a.document);g.insertAfter(i);i.mergeSiblings(false); +a.moveToBookmark({startNode:g})}else a.setStart(q.getParent(),b)}a.collapse(true)}e&&h.remove();j&&d.$.parentNode&&d.remove()},d={abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,"var":1},j=CKEDITOR.dom.walker.bogus(),l=new CKEDITOR.dom.walker.whitespaces,i=new CKEDITOR.dom.walker.bookmark,m=/^[\t\r\n ]*(?: |\xa0)$/;CKEDITOR.dom.range.prototype={clone:function(){var a=new CKEDITOR.dom.range(this.root); +a.startContainer=this.startContainer;a.startOffset=this.startOffset;a.endContainer=this.endContainer;a.endOffset=this.endOffset;a.collapsed=this.collapsed;return a},collapse:function(a){if(a){this.endContainer=this.startContainer;this.endOffset=this.startOffset}else{this.startContainer=this.endContainer;this.startOffset=this.endOffset}this.collapsed=true},cloneContents:function(){var a=new CKEDITOR.dom.documentFragment(this.document);this.collapsed||e(this,2,a);return a},deleteContents:function(a){this.collapsed|| +e(this,0,null,a)},extractContents:function(a){var b=new CKEDITOR.dom.documentFragment(this.document);this.collapsed||e(this,1,b,a);return b},createBookmark:function(a){var b,c,g,h,d=this.collapsed;b=this.document.createElement("span");b.data("cke-bookmark",1);b.setStyle("display","none");b.setHtml(" ");if(a){g="cke_bm_"+CKEDITOR.tools.getNextNumber();b.setAttribute("id",g+(d?"C":"S"))}if(!d){c=b.clone();c.setHtml(" ");a&&c.setAttribute("id",g+"E");h=this.clone();h.collapse();h.insertNode(c)}h= +this.clone();h.collapse(true);h.insertNode(b);if(c){this.setStartAfter(b);this.setEndBefore(c)}else this.moveToPosition(b,CKEDITOR.POSITION_AFTER_END);return{startNode:a?g+(d?"C":"S"):b,endNode:a?g+"E":c,serializable:a,collapsed:d}},createBookmark2:function(a){var b=this.startContainer,c=this.endContainer,g=this.startOffset,h=this.endOffset,d=this.collapsed,f,k;if(!b||!c)return{start:0,end:0};if(a){if(b.type==CKEDITOR.NODE_ELEMENT){if((f=b.getChild(g))&&f.type==CKEDITOR.NODE_TEXT&&g>0&&f.getPrevious().type== +CKEDITOR.NODE_TEXT){b=f;g=0}f&&f.type==CKEDITOR.NODE_ELEMENT&&(g=f.getIndex(1))}for(;b.type==CKEDITOR.NODE_TEXT&&(k=b.getPrevious())&&k.type==CKEDITOR.NODE_TEXT;){b=k;g=g+k.getLength()}if(!d){if(c.type==CKEDITOR.NODE_ELEMENT){if((f=c.getChild(h))&&f.type==CKEDITOR.NODE_TEXT&&h>0&&f.getPrevious().type==CKEDITOR.NODE_TEXT){c=f;h=0}f&&f.type==CKEDITOR.NODE_ELEMENT&&(h=f.getIndex(1))}for(;c.type==CKEDITOR.NODE_TEXT&&(k=c.getPrevious())&&k.type==CKEDITOR.NODE_TEXT;){c=k;h=h+k.getLength()}}}return{start:b.getAddress(a), +end:d?null:c.getAddress(a),startOffset:g,endOffset:h,normalized:a,collapsed:d,is2:true}},moveToBookmark:function(a){if(a.is2){var b=this.document.getByAddress(a.start,a.normalized),c=a.startOffset,g=a.end&&this.document.getByAddress(a.end,a.normalized),a=a.endOffset;this.setStart(b,c);g?this.setEnd(g,a):this.collapse(true)}else{b=(c=a.serializable)?this.document.getById(a.startNode):a.startNode;a=c?this.document.getById(a.endNode):a.endNode;this.setStartBefore(b);b.remove();if(a){this.setEndBefore(a); +a.remove()}else this.collapse(true)}},getBoundaryNodes:function(){var a=this.startContainer,b=this.endContainer,c=this.startOffset,g=this.endOffset,h;if(a.type==CKEDITOR.NODE_ELEMENT){h=a.getChildCount();if(h>c)a=a.getChild(c);else if(h<1)a=a.getPreviousSourceNode();else{for(a=a.$;a.lastChild;)a=a.lastChild;a=new CKEDITOR.dom.node(a);a=a.getNextSourceNode()||a}}if(b.type==CKEDITOR.NODE_ELEMENT){h=b.getChildCount();if(h>g)b=b.getChild(g).getPreviousSourceNode(true);else if(h<1)b=b.getPreviousSourceNode(); +else{for(b=b.$;b.lastChild;)b=b.lastChild;b=new CKEDITOR.dom.node(b)}}a.getPosition(b)&CKEDITOR.POSITION_FOLLOWING&&(a=b);return{startNode:a,endNode:b}},getCommonAncestor:function(a,b){var c=this.startContainer,g=this.endContainer,c=c.equals(g)?a&&c.type==CKEDITOR.NODE_ELEMENT&&this.startOffset==this.endOffset-1?c.getChild(this.startOffset):c:c.getCommonAncestor(g);return b&&!c.is?c.getParent():c},optimize:function(){var a=this.startContainer,b=this.startOffset;a.type!=CKEDITOR.NODE_ELEMENT&&(b?b>= +a.getLength()&&this.setStartAfter(a):this.setStartBefore(a));a=this.endContainer;b=this.endOffset;a.type!=CKEDITOR.NODE_ELEMENT&&(b?b>=a.getLength()&&this.setEndAfter(a):this.setEndBefore(a))},optimizeBookmark:function(){var a=this.startContainer,b=this.endContainer;a.is&&(a.is("span")&&a.data("cke-bookmark"))&&this.setStartAt(a,CKEDITOR.POSITION_BEFORE_START);b&&(b.is&&b.is("span")&&b.data("cke-bookmark"))&&this.setEndAt(b,CKEDITOR.POSITION_AFTER_END)},trim:function(a,b){var c=this.startContainer, +g=this.startOffset,h=this.collapsed;if((!a||h)&&c&&c.type==CKEDITOR.NODE_TEXT){if(g)if(g>=c.getLength()){g=c.getIndex()+1;c=c.getParent()}else{var d=c.split(g),g=c.getIndex()+1,c=c.getParent();if(this.startContainer.equals(this.endContainer))this.setEnd(d,this.endOffset-this.startOffset);else if(c.equals(this.endContainer))this.endOffset=this.endOffset+1}else{g=c.getIndex();c=c.getParent()}this.setStart(c,g);if(h){this.collapse(true);return}}c=this.endContainer;g=this.endOffset;if(!b&&!h&&c&&c.type== +CKEDITOR.NODE_TEXT){if(g){g>=c.getLength()||c.split(g);g=c.getIndex()+1}else g=c.getIndex();c=c.getParent();this.setEnd(c,g)}},enlarge:function(a,b){switch(a){case CKEDITOR.ENLARGE_INLINE:var c=1;case CKEDITOR.ENLARGE_ELEMENT:if(this.collapsed)break;var g=this.getCommonAncestor(),h=this.root,d,f,k,e,j,l=false,i,q;i=this.startContainer;q=this.startOffset;if(i.type==CKEDITOR.NODE_TEXT){if(q){i=!CKEDITOR.tools.trim(i.substring(0,q)).length&&i;l=!!i}if(i&&!(e=i.getPrevious()))k=i.getParent()}else{q&& +(e=i.getChild(q-1)||i.getLast());e||(k=i)}for(;k||e;){if(k&&!e){!j&&k.equals(g)&&(j=true);if(c?k.isBlockBoundary():!h.contains(k))break;if(!l||k.getComputedStyle("display")!="inline"){l=false;j?d=k:this.setStartBefore(k)}e=k.getPrevious()}for(;e;){i=false;if(e.type==CKEDITOR.NODE_COMMENT)e=e.getPrevious();else{if(e.type==CKEDITOR.NODE_TEXT){q=e.getText();/[^\s\ufeff]/.test(q)&&(e=null);i=/[\s\ufeff]$/.test(q)}else if((e.$.offsetWidth>0||b&&e.is("br"))&&!e.data("cke-bookmark"))if(l&&CKEDITOR.dtd.$removeEmpty[e.getName()]){q= +e.getText();if(/[^\s\ufeff]/.test(q))e=null;else for(var m=e.$.getElementsByTagName("*"),s=0,A;A=m[s++];)if(!CKEDITOR.dtd.$removeEmpty[A.nodeName.toLowerCase()]){e=null;break}e&&(i=!!q.length)}else e=null;i&&(l?j?d=k:k&&this.setStartBefore(k):l=true);if(e){i=e.getPrevious();if(!k&&!i){k=e;e=null;break}e=i}else k=null}}k&&(k=k.getParent())}i=this.endContainer;q=this.endOffset;k=e=null;j=l=false;if(i.type==CKEDITOR.NODE_TEXT){i=!CKEDITOR.tools.trim(i.substring(q)).length&&i;l=!(i&&i.getLength());if(i&& +!(e=i.getNext()))k=i.getParent()}else(e=i.getChild(q))||(k=i);for(;k||e;){if(k&&!e){!j&&k.equals(g)&&(j=true);if(c?k.isBlockBoundary():!h.contains(k))break;if(!l||k.getComputedStyle("display")!="inline"){l=false;j?f=k:k&&this.setEndAfter(k)}e=k.getNext()}for(;e;){i=false;if(e.type==CKEDITOR.NODE_TEXT){q=e.getText();/[^\s\ufeff]/.test(q)&&(e=null);i=/^[\s\ufeff]/.test(q)}else if(e.type==CKEDITOR.NODE_ELEMENT){if((e.$.offsetWidth>0||b&&e.is("br"))&&!e.data("cke-bookmark"))if(l&&CKEDITOR.dtd.$removeEmpty[e.getName()]){q= +e.getText();if(/[^\s\ufeff]/.test(q))e=null;else{m=e.$.getElementsByTagName("*");for(s=0;A=m[s++];)if(!CKEDITOR.dtd.$removeEmpty[A.nodeName.toLowerCase()]){e=null;break}}e&&(i=!!q.length)}else e=null}else i=1;i&&l&&(j?f=k:this.setEndAfter(k));if(e){i=e.getNext();if(!k&&!i){k=e;e=null;break}e=i}else k=null}k&&(k=k.getParent())}if(d&&f){g=d.contains(f)?f:d;this.setStartBefore(g);this.setEndAfter(g)}break;case CKEDITOR.ENLARGE_BLOCK_CONTENTS:case CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS:k=new CKEDITOR.dom.range(this.root); +h=this.root;k.setStartAt(h,CKEDITOR.POSITION_AFTER_START);k.setEnd(this.startContainer,this.startOffset);k=new CKEDITOR.dom.walker(k);var v,o,x=CKEDITOR.dom.walker.blockBoundary(a==CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS?{br:1}:null),I=function(a){var b=x(a);b||(v=a);return b},c=function(a){var b=I(a);!b&&(a.is&&a.is("br"))&&(o=a);return b};k.guard=I;k=k.lastBackward();v=v||h;this.setStartAt(v,!v.is("br")&&(!k&&this.checkStartOfBlock()||k&&v.contains(k))?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_AFTER_END); +if(a==CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS){k=this.clone();k=new CKEDITOR.dom.walker(k);var G=CKEDITOR.dom.walker.whitespaces(),C=CKEDITOR.dom.walker.bookmark();k.evaluator=function(a){return!G(a)&&!C(a)};if((k=k.previous())&&k.type==CKEDITOR.NODE_ELEMENT&&k.is("br"))break}k=this.clone();k.collapse();k.setEndAt(h,CKEDITOR.POSITION_BEFORE_END);k=new CKEDITOR.dom.walker(k);k.guard=a==CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS?c:I;v=null;k=k.lastForward();v=v||h;this.setEndAt(v,!k&&this.checkEndOfBlock()||k&& +v.contains(k)?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_BEFORE_START);o&&this.setEndAfter(o)}},shrink:function(a,b,c){if(!this.collapsed){var a=a||CKEDITOR.SHRINK_TEXT,g=this.clone(),h=this.startContainer,d=this.endContainer,e=this.startOffset,f=this.endOffset,j=1,i=1;if(h&&h.type==CKEDITOR.NODE_TEXT)if(e)if(e>=h.getLength())g.setStartAfter(h);else{g.setStartBefore(h);j=0}else g.setStartBefore(h);if(d&&d.type==CKEDITOR.NODE_TEXT)if(f)if(f>=d.getLength())g.setEndAfter(d);else{g.setEndAfter(d); +i=0}else g.setEndBefore(d);var g=new CKEDITOR.dom.walker(g),l=CKEDITOR.dom.walker.bookmark();g.evaluator=function(b){return b.type==(a==CKEDITOR.SHRINK_ELEMENT?CKEDITOR.NODE_ELEMENT:CKEDITOR.NODE_TEXT)};var m;g.guard=function(b,g){if(l(b))return true;if(a==CKEDITOR.SHRINK_ELEMENT&&b.type==CKEDITOR.NODE_TEXT||g&&b.equals(m)||c===false&&b.type==CKEDITOR.NODE_ELEMENT&&b.isBlockBoundary())return false;!g&&b.type==CKEDITOR.NODE_ELEMENT&&(m=b);return true};if(j)(h=g[a==CKEDITOR.SHRINK_ELEMENT?"lastForward": +"next"]())&&this.setStartAt(h,b?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_START);if(i){g.reset();(g=g[a==CKEDITOR.SHRINK_ELEMENT?"lastBackward":"previous"]())&&this.setEndAt(g,b?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_AFTER_END)}return!(!j&&!i)}},insertNode:function(a){this.optimizeBookmark();this.trim(false,true);var b=this.startContainer,c=b.getChild(this.startOffset);c?a.insertBefore(c):b.append(a);a.getParent()&&a.getParent().equals(this.endContainer)&&this.endOffset++;this.setStartBefore(a)}, +moveToPosition:function(a,b){this.setStartAt(a,b);this.collapse(true)},moveToRange:function(a){this.setStart(a.startContainer,a.startOffset);this.setEnd(a.endContainer,a.endOffset)},selectNodeContents:function(a){this.setStart(a,0);this.setEnd(a,a.type==CKEDITOR.NODE_TEXT?a.getLength():a.getChildCount())},setStart:function(a,b){if(a.type==CKEDITOR.NODE_ELEMENT&&CKEDITOR.dtd.$empty[a.getName()]){b=a.getIndex();a=a.getParent()}this.startContainer=a;this.startOffset=b;if(!this.endContainer){this.endContainer= +a;this.endOffset=b}f(this)},setEnd:function(a,b){if(a.type==CKEDITOR.NODE_ELEMENT&&CKEDITOR.dtd.$empty[a.getName()]){b=a.getIndex()+1;a=a.getParent()}this.endContainer=a;this.endOffset=b;if(!this.startContainer){this.startContainer=a;this.startOffset=b}f(this)},setStartAfter:function(a){this.setStart(a.getParent(),a.getIndex()+1)},setStartBefore:function(a){this.setStart(a.getParent(),a.getIndex())},setEndAfter:function(a){this.setEnd(a.getParent(),a.getIndex()+1)},setEndBefore:function(a){this.setEnd(a.getParent(), +a.getIndex())},setStartAt:function(a,b){switch(b){case CKEDITOR.POSITION_AFTER_START:this.setStart(a,0);break;case CKEDITOR.POSITION_BEFORE_END:a.type==CKEDITOR.NODE_TEXT?this.setStart(a,a.getLength()):this.setStart(a,a.getChildCount());break;case CKEDITOR.POSITION_BEFORE_START:this.setStartBefore(a);break;case CKEDITOR.POSITION_AFTER_END:this.setStartAfter(a)}f(this)},setEndAt:function(a,b){switch(b){case CKEDITOR.POSITION_AFTER_START:this.setEnd(a,0);break;case CKEDITOR.POSITION_BEFORE_END:a.type== +CKEDITOR.NODE_TEXT?this.setEnd(a,a.getLength()):this.setEnd(a,a.getChildCount());break;case CKEDITOR.POSITION_BEFORE_START:this.setEndBefore(a);break;case CKEDITOR.POSITION_AFTER_END:this.setEndAfter(a)}f(this)},fixBlock:function(a,b){var c=this.createBookmark(),g=this.document.createElement(b);this.collapse(a);this.enlarge(CKEDITOR.ENLARGE_BLOCK_CONTENTS);this.extractContents().appendTo(g);g.trim();CKEDITOR.env.ie||g.appendBogus();this.insertNode(g);this.moveToBookmark(c);return g},splitBlock:function(a){var b= +new CKEDITOR.dom.elementPath(this.startContainer,this.root),c=new CKEDITOR.dom.elementPath(this.endContainer,this.root),g=b.block,h=c.block,d=null;if(!b.blockLimit.equals(c.blockLimit))return null;if(a!="br"){if(!g){g=this.fixBlock(true,a);h=(new CKEDITOR.dom.elementPath(this.endContainer,this.root)).block}h||(h=this.fixBlock(false,a))}a=g&&this.checkStartOfBlock();b=h&&this.checkEndOfBlock();this.deleteContents();if(g&&g.equals(h))if(b){d=new CKEDITOR.dom.elementPath(this.startContainer,this.root); +this.moveToPosition(h,CKEDITOR.POSITION_AFTER_END);h=null}else if(a){d=new CKEDITOR.dom.elementPath(this.startContainer,this.root);this.moveToPosition(g,CKEDITOR.POSITION_BEFORE_START);g=null}else{h=this.splitElement(g);!CKEDITOR.env.ie&&!g.is("ul","ol")&&g.appendBogus()}return{previousBlock:g,nextBlock:h,wasStartOfBlock:a,wasEndOfBlock:b,elementPath:d}},splitElement:function(a){if(!this.collapsed)return null;this.setEndAt(a,CKEDITOR.POSITION_BEFORE_END);var b=this.extractContents(),c=a.clone(false); +b.appendTo(c);c.insertAfter(a);this.moveToPosition(a,CKEDITOR.POSITION_AFTER_END);return c},removeEmptyBlocksAtEnd:function(){function a(g){return function(a){return b(a)||(c(a)||a.type==CKEDITOR.NODE_ELEMENT&&a.isEmptyInlineRemoveable())||g.is("table")&&a.is("caption")?false:true}}var b=CKEDITOR.dom.walker.whitespaces(),c=CKEDITOR.dom.walker.bookmark(false);return function(b){for(var c=this.createBookmark(),d=this[b?"endPath":"startPath"](),e=d.block||d.blockLimit,f;e&&!e.equals(d.root)&&!e.getFirst(a(e));){f= +e.getParent();this[b?"setEndAt":"setStartAt"](e,CKEDITOR.POSITION_AFTER_END);e.remove(1);e=f}this.moveToBookmark(c)}}(),startPath:function(){return new CKEDITOR.dom.elementPath(this.startContainer,this.root)},endPath:function(){return new CKEDITOR.dom.elementPath(this.endContainer,this.root)},checkBoundaryOfElement:function(a,b){var d=b==CKEDITOR.START,g=this.clone();g.collapse(d);g[d?"setStartAt":"setEndAt"](a,d?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_END);g=new CKEDITOR.dom.walker(g); +g.evaluator=c(d);return g[d?"checkBackward":"checkForward"]()},checkStartOfBlock:function(){var b=this.startContainer,c=this.startOffset;if(CKEDITOR.env.ie&&c&&b.type==CKEDITOR.NODE_TEXT){b=CKEDITOR.tools.ltrim(b.substring(0,c));m.test(b)&&this.trim(0,1)}this.trim();b=new CKEDITOR.dom.elementPath(this.startContainer,this.root);c=this.clone();c.collapse(true);c.setStartAt(b.block||b.blockLimit,CKEDITOR.POSITION_AFTER_START);b=new CKEDITOR.dom.walker(c);b.evaluator=a();return b.checkBackward()},checkEndOfBlock:function(){var b= +this.endContainer,c=this.endOffset;if(CKEDITOR.env.ie&&b.type==CKEDITOR.NODE_TEXT){b=CKEDITOR.tools.rtrim(b.substring(c));m.test(b)&&this.trim(1,0)}this.trim();b=new CKEDITOR.dom.elementPath(this.endContainer,this.root);c=this.clone();c.collapse(false);c.setEndAt(b.block||b.blockLimit,CKEDITOR.POSITION_BEFORE_END);b=new CKEDITOR.dom.walker(c);b.evaluator=a();return b.checkForward()},getPreviousNode:function(a,b,c){var d=this.clone();d.collapse(1);d.setStartAt(c||this.root,CKEDITOR.POSITION_AFTER_START); +c=new CKEDITOR.dom.walker(d);c.evaluator=a;c.guard=b;return c.previous()},getNextNode:function(a,b,c){var d=this.clone();d.collapse();d.setEndAt(c||this.root,CKEDITOR.POSITION_BEFORE_END);c=new CKEDITOR.dom.walker(d);c.evaluator=a;c.guard=b;return c.next()},checkReadOnly:function(){function a(b,c){for(;b;){if(b.type==CKEDITOR.NODE_ELEMENT){if(b.getAttribute("contentEditable")=="false"&&!b.data("cke-editable"))return 0;if(b.is("html")||b.getAttribute("contentEditable")=="true"&&(b.contains(c)||b.equals(c)))break}b= +b.getParent()}return 1}return function(){var b=this.startContainer,c=this.endContainer;return!(a(b,c)&&a(c,b))}}(),moveToElementEditablePosition:function(a,c){if(a.type==CKEDITOR.NODE_ELEMENT&&!a.isEditable(false)){this.moveToPosition(a,c?CKEDITOR.POSITION_AFTER_END:CKEDITOR.POSITION_BEFORE_START);return true}for(var d=0;a;){if(a.type==CKEDITOR.NODE_TEXT){c&&this.checkEndOfBlock()&&m.test(a.getText())?this.moveToPosition(a,CKEDITOR.POSITION_BEFORE_START):this.moveToPosition(a,c?CKEDITOR.POSITION_AFTER_END: +CKEDITOR.POSITION_BEFORE_START);d=1;break}if(a.type==CKEDITOR.NODE_ELEMENT)if(a.isEditable()){this.moveToPosition(a,c?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_AFTER_START);d=1}else c&&(a.is("br")&&this.checkEndOfBlock())&&this.moveToPosition(a,CKEDITOR.POSITION_BEFORE_START);var g=a,h=d,e=void 0;g.type==CKEDITOR.NODE_ELEMENT&&g.isEditable(false)&&(e=g[c?"getLast":"getFirst"](b));!h&&!e&&(e=g[c?"getPrevious":"getNext"](b));a=e}return!!d},moveToElementEditStart:function(a){return this.moveToElementEditablePosition(a)}, +moveToElementEditEnd:function(a){return this.moveToElementEditablePosition(a,true)},getEnclosedNode:function(){var a=this.clone();a.optimize();if(a.startContainer.type!=CKEDITOR.NODE_ELEMENT||a.endContainer.type!=CKEDITOR.NODE_ELEMENT)return null;var a=new CKEDITOR.dom.walker(a),b=CKEDITOR.dom.walker.bookmark(false,true),c=CKEDITOR.dom.walker.whitespaces(true);a.evaluator=function(a){return c(a)&&b(a)};var d=a.next();a.reset();return d&&d.equals(a.previous())?d:null},getTouchedStartNode:function(){var a= +this.startContainer;return this.collapsed||a.type!=CKEDITOR.NODE_ELEMENT?a:a.getChild(this.startOffset)||a},getTouchedEndNode:function(){var a=this.endContainer;return this.collapsed||a.type!=CKEDITOR.NODE_ELEMENT?a:a.getChild(this.endOffset-1)||a},scrollIntoView:function(){var a=new CKEDITOR.dom.element.createFromHtml(" ",this.document),b,c,d,h=this.clone();h.optimize();if(d=h.startContainer.type==CKEDITOR.NODE_TEXT){c=h.startContainer.getText();b=h.startContainer.split(h.startOffset); +a.insertAfter(h.startContainer)}else h.insertNode(a);a.scrollIntoView();if(d){h.startContainer.setText(c);b.remove()}a.remove()}}})();CKEDITOR.POSITION_AFTER_START=1;CKEDITOR.POSITION_BEFORE_END=2;CKEDITOR.POSITION_BEFORE_START=3;CKEDITOR.POSITION_AFTER_END=4;CKEDITOR.ENLARGE_ELEMENT=1;CKEDITOR.ENLARGE_BLOCK_CONTENTS=2;CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS=3;CKEDITOR.ENLARGE_INLINE=4;CKEDITOR.START=1;CKEDITOR.END=2;CKEDITOR.SHRINK_ELEMENT=1;CKEDITOR.SHRINK_TEXT=2; +(function(){function a(a){if(!(arguments.length<1)){this.range=a;this.forceBrBreak=0;this.enlargeBr=1;this.enforceRealBlocks=0;this._||(this._={})}}function c(a,b,c){for(a=a.getNextSourceNode(b,null,c);!f(a);)a=a.getNextSourceNode(b,null,c);return a}var b=/^[\r\n\t ]+$/,f=CKEDITOR.dom.walker.bookmark(false,true),e=CKEDITOR.dom.walker.whitespaces(true),d=function(a){return f(a)&&e(a)};a.prototype={getNextParagraph:function(a){a=a||"p";if(!CKEDITOR.dtd[this.range.root.getName()][a])return null;var e, +i,m,n,r,p;if(!this._.started){i=this.range.clone();i.shrink(CKEDITOR.NODE_ELEMENT,true);n=i.endContainer.hasAscendant("pre",true)||i.startContainer.hasAscendant("pre",true);i.enlarge(this.forceBrBreak&&!n||!this.enlargeBr?CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS:CKEDITOR.ENLARGE_BLOCK_CONTENTS);if(!i.collapsed){n=new CKEDITOR.dom.walker(i.clone());var g=CKEDITOR.dom.walker.bookmark(true,true);n.evaluator=g;this._.nextNode=n.next();n=new CKEDITOR.dom.walker(i.clone());n.evaluator=g;n=n.previous();this._.lastNode= +n.getNextSourceNode(true);if(this._.lastNode&&this._.lastNode.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.trim(this._.lastNode.getText())&&this._.lastNode.getParent().isBlockBoundary()){g=this.range.clone();g.moveToPosition(this._.lastNode,CKEDITOR.POSITION_AFTER_END);if(g.checkEndOfBlock()){g=new CKEDITOR.dom.elementPath(g.endContainer,g.root);this._.lastNode=(g.block||g.blockLimit).getNextSourceNode(true)}}if(!this._.lastNode){this._.lastNode=this._.docEndMarker=i.document.createText("");this._.lastNode.insertAfter(n)}i= +null}this._.started=1}g=this._.nextNode;n=this._.lastNode;for(this._.nextNode=null;g;){var h=0,u=g.hasAscendant("pre"),w=g.type!=CKEDITOR.NODE_ELEMENT,k=0;if(w)g.type==CKEDITOR.NODE_TEXT&&b.test(g.getText())&&(w=0);else{var t=g.getName();if(g.isBlockBoundary(this.forceBrBreak&&!u&&{br:1})){if(t=="br")w=1;else if(!i&&!g.getChildCount()&&t!="hr"){e=g;m=g.equals(n);break}if(i){i.setEndAt(g,CKEDITOR.POSITION_BEFORE_START);if(t!="br")this._.nextNode=g}h=1}else{if(g.getFirst()){if(!i){i=this.range.clone(); +i.setStartAt(g,CKEDITOR.POSITION_BEFORE_START)}g=g.getFirst();continue}w=1}}if(w&&!i){i=this.range.clone();i.setStartAt(g,CKEDITOR.POSITION_BEFORE_START)}m=(!h||w)&&g.equals(n);if(i&&!h)for(;!g.getNext(d)&&!m;){t=g.getParent();if(t.isBlockBoundary(this.forceBrBreak&&!u&&{br:1})){h=1;w=0;m||t.equals(n);i.setEndAt(t,CKEDITOR.POSITION_BEFORE_END);break}g=t;w=1;m=g.equals(n);k=1}w&&i.setEndAt(g,CKEDITOR.POSITION_AFTER_END);g=c(g,k,n);if((m=!g)||h&&i)break}if(!e){if(!i){this._.docEndMarker&&this._.docEndMarker.remove(); +return this._.nextNode=null}e=new CKEDITOR.dom.elementPath(i.startContainer,i.root);g=e.blockLimit;h={div:1,th:1,td:1};e=e.block;if(!e&&g&&!this.enforceRealBlocks&&h[g.getName()]&&i.checkStartOfBlock()&&i.checkEndOfBlock()&&!g.equals(i.root))e=g;else if(!e||this.enforceRealBlocks&&e.getName()=="li"){e=this.range.document.createElement(a);i.extractContents().appendTo(e);e.trim();i.insertNode(e);r=p=true}else if(e.getName()!="li"){if(!i.checkStartOfBlock()||!i.checkEndOfBlock()){e=e.clone(false);i.extractContents().appendTo(e); +e.trim();p=i.splitBlock();r=!p.wasStartOfBlock;p=!p.wasEndOfBlock;i.insertNode(e)}}else if(!m)this._.nextNode=e.equals(n)?null:c(i.getBoundaryNodes().endNode,1,n)}if(r)(i=e.getPrevious())&&i.type==CKEDITOR.NODE_ELEMENT&&(i.getName()=="br"?i.remove():i.getLast()&&i.getLast().$.nodeName.toLowerCase()=="br"&&i.getLast().remove());if(p)(i=e.getLast())&&i.type==CKEDITOR.NODE_ELEMENT&&i.getName()=="br"&&(CKEDITOR.env.ie||i.getPrevious(f)||i.getNext(f))&&i.remove();if(!this._.nextNode)this._.nextNode=m|| +e.equals(n)||!n?null:c(e,1,n);return e}};CKEDITOR.dom.range.prototype.createIterator=function(){return new a(this)}})(); +CKEDITOR.command=function(a,c){this.uiItems=[];this.exec=function(b){if(this.state==CKEDITOR.TRISTATE_DISABLED||!this.checkAllowed())return false;this.editorFocus&&a.focus();return this.fire("exec")===false?true:c.exec.call(this,a,b)!==false};this.refresh=function(a,b){if(!this.readOnly&&a.readOnly)return true;if(this.context&&!b.isContextFor(this.context)){this.disable();return true}this.enable();return this.fire("refresh",{editor:a,path:b})===false?true:c.refresh&&c.refresh.apply(this,arguments)!== +false};var b;this.checkAllowed=function(){return typeof b=="boolean"?b:b=a.filter.checkFeature(this)};CKEDITOR.tools.extend(this,c,{modes:{wysiwyg:1},editorFocus:1,contextSensitive:!!c.context,state:CKEDITOR.TRISTATE_DISABLED});CKEDITOR.event.call(this)}; +CKEDITOR.command.prototype={enable:function(){this.state==CKEDITOR.TRISTATE_DISABLED&&this.checkAllowed()&&this.setState(!this.preserveState||typeof this.previousState=="undefined"?CKEDITOR.TRISTATE_OFF:this.previousState)},disable:function(){this.setState(CKEDITOR.TRISTATE_DISABLED)},setState:function(a){if(this.state==a||!this.checkAllowed())return false;this.previousState=this.state;this.state=a;this.fire("state");return true},toggleState:function(){this.state==CKEDITOR.TRISTATE_OFF?this.setState(CKEDITOR.TRISTATE_ON): +this.state==CKEDITOR.TRISTATE_ON&&this.setState(CKEDITOR.TRISTATE_OFF)}};CKEDITOR.event.implementOn(CKEDITOR.command.prototype);CKEDITOR.ENTER_P=1;CKEDITOR.ENTER_BR=2;CKEDITOR.ENTER_DIV=3; +CKEDITOR.config={customConfig:"config.js",autoUpdateElement:!0,language:"",defaultLanguage:"en",contentsLangDirection:"",enterMode:CKEDITOR.ENTER_P,forceEnterMode:!1,shiftEnterMode:CKEDITOR.ENTER_BR,docType:"",bodyId:"",bodyClass:"",fullPage:!1,height:200,extraPlugins:"",removePlugins:"",protectedSource:[],tabIndex:0,width:"",baseFloatZIndex:1E4,blockedKeystrokes:[CKEDITOR.CTRL+66,CKEDITOR.CTRL+73,CKEDITOR.CTRL+85]}; +(function(){function a(a,b,d,g,h){var f=b.name;if((g||typeof a.elements!="function"||a.elements(f))&&(!a.match||a.match(b))){if(g=!h){a:if(a.nothingRequired)g=true;else{if(h=a.requiredClasses){f=b.classes;for(g=0;g0;){k=d[--f];if(e&&(k.type==CKEDITOR.NODE_TEXT||k.type==CKEDITOR.NODE_ELEMENT&&D.$inline[k.name])){if(!j){j=new CKEDITOR.htmlParser.element(b);j.insertAfter(a);c.push({check:"parent-down",el:j})}j.add(k,0)}else{j=null;k.insertAfter(a);h.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT&&(k.type== +CKEDITOR.NODE_ELEMENT&&!D[h.name][k.name])&&c.push({check:"el-up",el:k})}}a.remove()}}else if(d=="style")a.remove();else{a.parent&&c.push({check:"it",el:a.parent});a.replaceWithChildren()}}function u(a,b,c){var d,g;for(d=0;d";if(e in this._.cachedChecks)return this._.cachedChecks[e];h=j(a).$1;g=h.styles;var k=h.classes;h.name=h.elements;h.classes=k=k?k.split(/\s*,\s*/): +[];h.styles=d(g);h.attributes=d(h.attributes);h.children=[];k.length&&(h.attributes["class"]=k.join(" "));if(g)h.attributes.style=CKEDITOR.tools.writeCssText(h.styles);g=h}else{h=a.getDefinition();g=h.styles;k=h.attributes||{};if(g){g=B(g);k.style=CKEDITOR.tools.writeCssText(g,true)}else g={};g={name:h.element,attributes:k,classes:k["class"]?k["class"].split(/\s+/):[],styles:g,children:[]}}var k=CKEDITOR.tools.clone(g),o=[],p;if(b!==false&&(p=this._.transformations[g.name])){for(h=0;h0?false:CKEDITOR.tools.objectCompare(g.attributes,k.attributes,true)?true:false;typeof a=="string"&&(this._.cachedChecks[e]=b);return b}};var s={styles:1,attributes:1,classes:1},A={styles:"requiredStyles",attributes:"requiredAttributes",classes:"requiredClasses"},v=/^([a-z0-9*\s]+)((?:\s*\{[!\w\-,\s\*]+\}\s*|\s*\[[!\w\-,\s\*]+\]\s*|\s*\([!\w\-,\s\*]+\)\s*){0,3})(?:;\s*|$)/i,o={styles:/{([^}]+)}/,attrs:/\[([^\]]+)\]/, +classes:/\(([^\)]+)\)/},x=CKEDITOR.filter.transformationsTools={sizeToStyle:function(a){this.lengthToStyle(a,"width");this.lengthToStyle(a,"height")},sizeToAttribute:function(a){this.lengthToAttribute(a,"width");this.lengthToAttribute(a,"height")},lengthToStyle:function(a,b,c){c=c||b;if(!(c in a.styles)){var d=a.attributes[b];if(d){/^\d+$/.test(d)&&(d=d+"px");a.styles[c]=d}}delete a.attributes[b]},lengthToAttribute:function(a,b,c){c=c||b;if(!(c in a.attributes)){var d=a.styles[b],h=d&&d.match(/^(\d+)(?:\.\d*)?px$/); +h?a.attributes[c]=h[1]:d==z&&(a.attributes[c]=z)}delete a.styles[b]},alignmentToStyle:function(a){if(!("float"in a.styles)){var b=a.attributes.align;if(b=="left"||b=="right")a.styles["float"]=b}delete a.attributes.align},alignmentToAttribute:function(a){if(!("align"in a.attributes)){var b=a.styles["float"];if(b=="left"||b=="right")a.attributes.align=b}delete a.styles["float"]},matchesStyle:w,transform:function(a,b){if(typeof b=="string")a.name=b;else{var c=b.getDefinition(),d=c.styles,h=c.attributes, +g,e,k,f;a.name=c.element;for(g in h)if(g=="class"){c=a.classes.join("|");for(k=h[g].split(/\s+/);f=k.pop();)c.indexOf(f)==-1&&a.classes.push(f)}else a.attributes[g]=h[g];for(e in d)a.styles[e]=d[e]}}}})(); +(function(){CKEDITOR.focusManager=function(a){if(a.focusManager)return a.focusManager;this.hasFocus=false;this.currentActive=null;this._={editor:a};return this};CKEDITOR.focusManager._={blurDelay:200};CKEDITOR.focusManager.prototype={focus:function(){this._.timer&&clearTimeout(this._.timer);if(!this.hasFocus&&!this._.locked){var a=CKEDITOR.currentInstance;a&&a.focusManager.blur(1);this.hasFocus=true;(a=this._.editor.container)&&a.addClass("cke_focus");this._.editor.fire("focus")}},lock:function(){this._.locked= +1},unlock:function(){delete this._.locked},blur:function(a){function c(){if(this.hasFocus){this.hasFocus=false;var a=this._.editor.container;a&&a.removeClass("cke_focus");this._.editor.fire("blur")}}if(!this._.locked){this._.timer&&clearTimeout(this._.timer);var b=CKEDITOR.focusManager._.blurDelay;a||!b?c.call(this):this._.timer=CKEDITOR.tools.setTimeout(function(){delete this._.timer;c.call(this)},b,this)}},add:function(a,c){var b=a.getCustomData("focusmanager");if(!b||b!=this){b&&b.remove(a);var b= +"focus",f="blur";if(c)if(CKEDITOR.env.ie){b="focusin";f="focusout"}else CKEDITOR.event.useCapture=1;var e={blur:function(){a.equals(this.currentActive)&&this.blur()},focus:function(){this.currentActive=a;this.focus()}};a.on(b,e.focus,this);a.on(f,e.blur,this);if(c)CKEDITOR.event.useCapture=0;a.setCustomData("focusmanager",this);a.setCustomData("focusmanager_handlers",e)}},remove:function(a){a.removeCustomData("focusmanager");var c=a.removeCustomData("focusmanager_handlers");a.removeListener("blur", +c.blur);a.removeListener("focus",c.focus)}}})();CKEDITOR.keystrokeHandler=function(a){if(a.keystrokeHandler)return a.keystrokeHandler;this.keystrokes={};this.blockedKeystrokes={};this._={editor:a};return this}; +(function(){var a,c=function(b){var b=b.data,c=b.getKeystroke(),d=this.keystrokes[c],j=this._.editor;a=j.fire("key",{keyCode:c})===false;if(!a){d&&(a=j.execCommand(d,{from:"keystrokeHandler"})!==false);a||(a=!!this.blockedKeystrokes[c])}a&&b.preventDefault(true);return!a},b=function(b){if(a){a=false;b.data.preventDefault(true)}};CKEDITOR.keystrokeHandler.prototype={attach:function(a){a.on("keydown",c,this);if(CKEDITOR.env.opera||CKEDITOR.env.gecko&&CKEDITOR.env.mac)a.on("keypress",b,this)}}})(); +(function(){CKEDITOR.lang={languages:{af:1,ar:1,bg:1,bn:1,bs:1,ca:1,cs:1,cy:1,da:1,de:1,el:1,"en-au":1,"en-ca":1,"en-gb":1,en:1,eo:1,es:1,et:1,eu:1,fa:1,fi:1,fo:1,"fr-ca":1,fr:1,gl:1,gu:1,he:1,hi:1,hr:1,hu:1,is:1,it:1,ja:1,ka:1,km:1,ko:1,ku:1,lt:1,lv:1,mk:1,mn:1,ms:1,nb:1,nl:1,no:1,pl:1,"pt-br":1,pt:1,ro:1,ru:1,sk:1,sl:1,sq:1,"sr-latn":1,sr:1,sv:1,th:1,tr:1,ug:1,uk:1,vi:1,"zh-cn":1,zh:1},load:function(a,c,b){if(!a||!CKEDITOR.lang.languages[a])a=this.detect(c,a);this[a]?b(a,this[a]):CKEDITOR.scriptLoader.load(CKEDITOR.getUrl("lang/"+ +a+".js"),function(){b(a,this[a])},this)},detect:function(a,c){var b=this.languages,c=c||navigator.userLanguage||navigator.language||a,f=c.toLowerCase().match(/([a-z]+)(?:-([a-z]+))?/),e=f[1],f=f[2];b[e+"-"+f]?e=e+"-"+f:b[e]||(e=null);CKEDITOR.lang.detect=e?function(){return e}:function(a){return a};return e||a}}})(); +CKEDITOR.scriptLoader=function(){var a={},c={};return{load:function(b,f,e,d){var j=typeof b=="string";j&&(b=[b]);e||(e=CKEDITOR);var l=b.length,i=[],m=[],n=function(a){f&&(j?f.call(e,a):f.call(e,i,m))};if(l===0)n(true);else{var r=function(a,b){(b?i:m).push(a);if(--l<=0){d&&CKEDITOR.document.getDocumentElement().removeStyle("cursor");n(b)}},p=function(b,d){a[b]=1;var h=c[b];delete c[b];for(var g=0;g +1)){var h=new CKEDITOR.dom.element("script");h.setAttributes({type:"text/javascript",src:b});if(f)if(CKEDITOR.env.ie)h.$.onreadystatechange=function(){if(h.$.readyState=="loaded"||h.$.readyState=="complete"){h.$.onreadystatechange=null;p(b,true)}};else{h.$.onload=function(){setTimeout(function(){p(b,true)},0)};h.$.onerror=function(){p(b,false)}}h.appendTo(CKEDITOR.document.getHead())}}};d&&CKEDITOR.document.getDocumentElement().setStyle("cursor","wait");for(var h=0;h=0)p=a.langCode;else{p=a.langCode.replace(/-.*/,"");p=p!=a.langCode&&CKEDITOR.tools.indexOf(o,p)>=0?p:CKEDITOR.tools.indexOf(o,"en")>=0?"en":o[0]}if(!j.langEntries||!j.langEntries[p])e.push(CKEDITOR.getUrl(j.path+"lang/"+p+".js"));else{a.lang[k]=j.langEntries[p];p=null}}g.push(p);d.push(j)}CKEDITOR.scriptLoader.load(e, +function(){for(var c=["beforeInit","init","afterInit"],e=0;e]+)>)|(?:!--([\\S|\\s]*?)--\>)|(?:([^\\s>]+)\\s*((?:(?:\"[^\"]*\")|(?:'[^']*')|[^\"'>])*)\\/?>))","g")}}; +(function(){var a=/([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g,c={checked:1,compact:1,declare:1,defer:1,disabled:1,ismap:1,multiple:1,nohref:1,noresize:1,noshade:1,nowrap:1,readonly:1,selected:1};CKEDITOR.htmlParser.prototype={onTagOpen:function(){},onTagClose:function(){},onText:function(){},onCDATA:function(){},onComment:function(){},parse:function(b){for(var f,e,d=0,j;f=this._.htmlPartsRegex.exec(b);){e=f.index;if(e>d){d=b.substring(d,e);if(j)j.push(d);else this.onText(d)}d= +this._.htmlPartsRegex.lastIndex;if(e=f[1]){e=e.toLowerCase();if(j&&CKEDITOR.dtd.$cdata[e]){this.onCDATA(j.join(""));j=null}if(!j){this.onTagClose(e);continue}}if(j)j.push(f[0]);else if(e=f[3]){e=e.toLowerCase();if(!/="/.test(e)){var l={},i;f=f[4];var m=!!(f&&f.charAt(f.length-1)=="/");if(f)for(;i=a.exec(f);){var n=i[1].toLowerCase();i=i[2]||i[3]||i[4]||"";l[n]=!i&&c[n]?n:i}this.onTagOpen(e,l,m);!j&&CKEDITOR.dtd.$cdata[e]&&(j=[])}}else if(e=f[2])this.onComment(e)}if(b.length>d)this.onText(b.substring(d, +b.length))}}})(); +CKEDITOR.htmlParser.basicWriter=CKEDITOR.tools.createClass({$:function(){this._={output:[]}},proto:{openTag:function(a){this._.output.push("<",a)},openTagClose:function(a,c){c?this._.output.push(" />"):this._.output.push(">")},attribute:function(a,c){typeof c=="string"&&(c=CKEDITOR.tools.htmlEncodeAttr(c));this._.output.push(" ",a,'="',c,'"')},closeTag:function(a){this._.output.push("")},text:function(a){this._.output.push(a)},comment:function(a){this._.output.push("<\!--",a,"--\>")},write:function(a){this._.output.push(a)}, +reset:function(){this._.output=[];this._.indent=false},getHtml:function(a){var c=this._.output.join("");a&&this.reset();return c}}});"use strict"; +(function(){CKEDITOR.htmlParser.node=function(){};CKEDITOR.htmlParser.node.prototype={remove:function(){var a=this.parent.children,c=CKEDITOR.tools.indexOf(a,this),b=this.previous,f=this.next;b&&(b.next=f);f&&(f.previous=b);a.splice(c,1);this.parent=null},replaceWith:function(a){var c=this.parent.children,b=CKEDITOR.tools.indexOf(c,this),f=a.previous=this.previous,e=a.next=this.next;f&&(f.next=a);e&&(e.previous=a);c[b]=a;a.parent=this.parent;this.parent=null},insertAfter:function(a){var c=a.parent.children, +b=CKEDITOR.tools.indexOf(c,a),f=a.next;c.splice(b+1,0,this);this.next=a.next;this.previous=a;a.next=this;f&&(f.previous=this);this.parent=a.parent},insertBefore:function(a){var c=a.parent.children,b=CKEDITOR.tools.indexOf(c,a);c.splice(b,0,this);this.next=a;(this.previous=a.previous)&&(a.previous.next=this);a.previous=this;this.parent=a.parent}}})();"use strict";CKEDITOR.htmlParser.comment=function(a){this.value=a;this._={isBlockLike:false}}; +CKEDITOR.htmlParser.comment.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_COMMENT,filter:function(a){var c=this.value;if(!(c=a.onComment(c,this))){this.remove();return false}if(typeof c!="string"){this.replaceWith(c);return false}this.value=c;return true},writeHtml:function(a,c){c&&this.filter(c);a.comment(this.value)}});"use strict"; +(function(){CKEDITOR.htmlParser.text=function(a){this.value=a;this._={isBlockLike:false}};CKEDITOR.htmlParser.text.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_TEXT,filter:function(a){if(!(this.value=a.onText(this.value,this))){this.remove();return false}},writeHtml:function(a,c){c&&this.filter(c);a.text(this.value)}})})();"use strict"; +(function(){CKEDITOR.htmlParser.cdata=function(a){this.value=a};CKEDITOR.htmlParser.cdata.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_TEXT,filter:function(){},writeHtml:function(a){a.write(this.value)}})})();"use strict";CKEDITOR.htmlParser.fragment=function(){this.children=[];this.parent=null;this._={isBlockLike:true,hasInlineStarted:false}}; +(function(){function a(a){return a.name=="a"&&a.attributes.href||CKEDITOR.dtd.$removeEmpty[a.name]}var c=CKEDITOR.tools.extend({table:1,ul:1,ol:1,dl:1},CKEDITOR.dtd.table,CKEDITOR.dtd.ul,CKEDITOR.dtd.ol,CKEDITOR.dtd.dl),b={ol:1,ul:1},f=CKEDITOR.tools.extend({},{html:1},CKEDITOR.dtd.html,CKEDITOR.dtd.body,CKEDITOR.dtd.head,{style:1,script:1});CKEDITOR.htmlParser.fragment.fromHtml=function(e,d,j){function l(a){var b;if(u.length>0)for(var c=0;c=0;b--)if(a==u[b].name){u.splice(b,1);return}for(var c=[],d=[],g=k;g!=h&&g.name!=a;){g._.isBlockLike||d.unshift(g);c.push(g);g=g.returnPoint||g.parent}if(g!=h){for(b=0;b0?this.children[b-1]:null;if(c){if(a._.isBlockLike&&c.type==CKEDITOR.NODE_TEXT){c.value=CKEDITOR.tools.rtrim(c.value);if(c.value.length===0){this.children.pop();this.add(a);return}}c.next=a}a.previous=c;a.parent=this; +this.children.splice(b,0,a);if(!this._.hasInlineStarted)this._.hasInlineStarted=a.type==CKEDITOR.NODE_TEXT||a.type==CKEDITOR.NODE_ELEMENT&&!a._.isBlockLike},filter:function(a){a.onRoot(this);this.filterChildren(a)},filterChildren:function(a,b){if(this.childrenFilteredBy!=a.id){if(b&&!this.parent)a.onRoot(this);this.childrenFilteredBy=a.id;for(var c=0;c=0;f--)if(n=b[f]){n.pri=c;a.splice(e,0,n)}}}function b(a,b,c){if(b)for(var e in b){var m=a[e];a[e]=f(m,b[e],c);m||a.$length++}}function f(a,b,f){if(b){b.pri=f;if(a){if(a.splice)c(a,b,f);else{a=a.pri>f?[b,a]:[a,b];a.filter=e}return a}return b.filter=b}}function e(a){for(var b= +a.type||a instanceof CKEDITOR.htmlParser.fragment,c=0;c7||e.name in CKEDITOR.dtd.tr||e.name in CKEDITOR.dtd.$listItem))h=false;else{h=b(e);h=!h||e.name=="form"&&h.name=="input"}h&&e.add(g(a))}}}function k(a,b){if((!p||!CKEDITOR.env.ie)&&a.type==CKEDITOR.NODE_ELEMENT&&a.name=="br"&&!a.attributes["data-cke-eol"])return true;var c;if(a.type== +CKEDITOR.NODE_TEXT&&(c=a.value.match(F))){if(c.index){j(a,new CKEDITOR.htmlParser.text(a.value.substring(0,c.index)));a.value=c[0]}if(CKEDITOR.env.ie&&p&&(!b||a.parent.name in r))return true;if(!p)if((c=a.previous)&&c.name=="br"||!c||d(c))return true}return false}var o={elements:{}},p=c=="html",r=CKEDITOR.tools.extend({},z),u;for(u in r)"#"in B[u]||delete r[u];for(u in r)o.elements[u]=h(p,a.config.fillEmptyBlocks!==false);o.root=h(p);o.elements.br=function(a){return function(b){if(b.parent.type!= +CKEDITOR.NODE_DOCUMENT_FRAGMENT){var c=b.attributes;if("data-cke-bogus"in c||"data-cke-eol"in c)delete c["data-cke-bogus"];else{for(c=b.next;c&&e(c);)c=c.next;var h=f(b);!c&&d(b.parent)?l(b.parent,g(a)):d(c)&&(h&&!d(h))&&j(c,g(a))}}}}(p);return o}function c(a){return a.enterMode!=CKEDITOR.ENTER_BR&&a.autoParagraph!==false?a.enterMode==CKEDITOR.ENTER_DIV?"div":"p":false}function b(a){for(a=a.children[a.children.length-1];a&&e(a);)a=a.previous;return a}function f(a){for(a=a.previous;a&&e(a);)a=a.previous; +return a}function e(a){return a.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.trim(a.value)||a.type==CKEDITOR.NODE_ELEMENT&&a.attributes["data-cke-bookmark"]}function d(a){return a&&(a.type==CKEDITOR.NODE_ELEMENT&&a.name in z||a.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT)}function j(a,b){var c=a.parent.children,g=CKEDITOR.tools.indexOf(c,a);c.splice(g,0,b);c=a.previous;a.previous=b;b.next=a;b.parent=a.parent;if(c){b.previous=c;c.next=b}}function l(a,b){var c=a.children[a.children.length-1];a.children.push(b); +b.parent=a;if(c){c.next=b;b.previous=c}}function i(a){var b=a.parent.children,c=CKEDITOR.tools.indexOf(b,a),g=a.previous,a=a.next;g&&(g.next=a);a&&(a.previous=g);b.splice(c,1)}function m(a){var b=a.parent;return b?CKEDITOR.tools.indexOf(b.children,a):-1}function n(a){a=a.attributes;a.contenteditable!="false"&&(a["data-cke-editable"]=a.contenteditable?"true":1);a.contenteditable="false"}function r(a){a=a.attributes;switch(a["data-cke-editable"]){case "true":a.contenteditable="true";break;case "1":delete a.contenteditable}} +function p(a){return a.replace(o,function(a,b,c){return"<"+b+c.replace(x,function(a,b){return!/^on/.test(b)&&c.indexOf("data-cke-saved-"+b)==-1?" data-cke-saved-"+a+" data-cke-"+CKEDITOR.rnd+"-"+a:a})+">"})}function g(a,b){return a.replace(b,function(a,b,c){a.indexOf("/g,">")+"");return""+encodeURIComponent(a)+""})}function h(a){return a.replace(C,function(a,b){return decodeURIComponent(b)})}function u(a){return a.replace(/<\!--(?!{cke_protected})[\s\S]+?--\>/g, +function(a){return"<\!--"+D+"{C}"+encodeURIComponent(a).replace(/--/g,"%2D%2D")+"--\>"})}function w(a){return a.replace(/<\!--\{cke_protected\}\{C\}([\s\S]+?)--\>/g,function(a,b){return decodeURIComponent(b)})}function k(a,b){var c=b._.dataStore;return a.replace(/<\!--\{cke_protected\}([\s\S]+?)--\>/g,function(a,b){return decodeURIComponent(b)}).replace(/\{cke_protected_(\d+)\}/g,function(a,b){return c&&c[b]||""})}function t(a,b){for(var c=[],g=b.config.protectedSource,d=b._.dataStore||(b._.dataStore= +{id:1}),e=/<\!--\{cke_temp(comment)?\}(\d*?)--\>/g,g=[//gi,//gi].concat(g),a=a.replace(/<\!--[\s\S]*?--\>/g,function(a){return"<\!--{cke_tempcomment}"+(c.push(a)-1)+"--\>"}),h=0;h"});a=a.replace(e,function(a,b,g){return"<\!--"+D+(b?"{C}":"")+encodeURIComponent(c[g]).replace(/--/g,"%2D%2D")+ +"--\>"});return a.replace(/(['"]).*?\1/g,function(a){return a.replace(/<\!--\{cke_protected\}([\s\S]+?)--\>/g,function(a,b){d[d.id]=decodeURIComponent(b);return"{cke_protected_"+d.id++ +"}"})})}CKEDITOR.htmlDataProcessor=function(b){var d,e,f=this;this.editor=b;this.dataFilter=d=new CKEDITOR.htmlParser.filter;this.htmlFilter=e=new CKEDITOR.htmlParser.filter;this.writer=new CKEDITOR.htmlParser.basicWriter;d.addRules(s);d.addRules(a(b,"data"));e.addRules(A);e.addRules(a(b,"html"));b.on("toHtml",function(a){var a= +a.data,d=a.dataValue,d=t(d,b),d=g(d,G),d=p(d),d=g(d,I),d=d.replace(Q,"$1cke:$2"),d=d.replace(E,""),d=CKEDITOR.env.opera?d:d.replace(/(]*>)(\r\n|\n)/g,"$1$2$2"),e=a.context||b.editable().getName(),f;if(CKEDITOR.env.ie&&CKEDITOR.env.version<9&&e=="pre"){e="div";d="
        "+d+"
        ";f=1}e=b.document.createElement(e);e.setHtml("a"+d);d=e.getHtml().substr(1);d=d.replace(RegExp(" data-cke-"+CKEDITOR.rnd+"-","ig")," ");f&&(d=d.replace(/^
        |<\/pre>$/gi,""));d=d.replace(L,"$1$2");
        +d=h(d);d=w(d);a.dataValue=CKEDITOR.htmlParser.fragment.fromHtml(d,a.context,a.fixForBody===false?false:c(b.config))},null,null,5);b.on("toHtml",function(a){a.data.dataValue.filterChildren(f.dataFilter,true)},null,null,10);b.on("toHtml",function(a){var a=a.data,b=a.dataValue,c=new CKEDITOR.htmlParser.basicWriter;b.writeChildrenHtml(c);b=c.getHtml(true);a.dataValue=u(b)},null,null,15);b.on("toDataFormat",function(a){a.data.dataValue=CKEDITOR.htmlParser.fragment.fromHtml(a.data.dataValue,b.editable().getName(),
        +c(b.config))},null,null,5);b.on("toDataFormat",function(a){a.data.dataValue.filterChildren(f.htmlFilter,true)},null,null,10);b.on("toDataFormat",function(a){var c=a.data.dataValue,g=f.writer;g.reset();c.writeChildrenHtml(g);c=g.getHtml(true);c=w(c);c=k(c,b);a.data.dataValue=c},null,null,15)};CKEDITOR.htmlDataProcessor.prototype={toHtml:function(a,b,c,g){var d=this.editor;!b&&b!==null&&(b=d.editable().getName());return d.fire("toHtml",{dataValue:a,context:b,fixForBody:c,dontFilter:!!g}).dataValue},
        +toDataFormat:function(a){return this.editor.fire("toDataFormat",{dataValue:a}).dataValue}};var F=/(?: |\xa0)$/,D="{cke_protected}",B=CKEDITOR.dtd,q=["caption","colgroup","col","thead","tfoot","tbody"],z=CKEDITOR.tools.extend({},B.$blockLimit,B.$block),s={elements:{},attributeNames:[[/^on/,"data-cke-pa-on"]]},A={elementNames:[[/^cke:/,""],[/^\?xml:namespace$/,""]],attributeNames:[[/^data-cke-(saved|pa)-/,""],[/^data-cke-.*/,""],["hidefocus",""]],elements:{$:function(a){var b=a.attributes;if(b){if(b["data-cke-temp"])return false;
        +for(var c=["name","href","src"],g,d=0;d-1&&g>-1&&c!=g)){c=m(a);g=m(b)}return c>g?1:-1})},embed:function(a){var b=a.parent;if(b&&b.name=="object"){var c=b.attributes.width,b=b.attributes.height;c&&(a.attributes.width=c);b&&(a.attributes.height=
        +b)}},param:function(a){a.children=[];a.isEmpty=true;return a},a:function(a){if(!a.children.length&&!a.attributes.name&&!a.attributes["data-cke-saved-name"])return false},span:function(a){a.attributes["class"]=="Apple-style-span"&&delete a.name},html:function(a){delete a.attributes.contenteditable;delete a.attributes["class"]},body:function(a){delete a.attributes.spellcheck;delete a.attributes.contenteditable},style:function(a){var b=a.children[0];b&&b.value&&(b.value=CKEDITOR.tools.trim(b.value));
        +if(!a.attributes.type)a.attributes.type="text/css"},title:function(a){var b=a.children[0];!b&&l(a,b=new CKEDITOR.htmlParser.text);b.value=a.attributes["data-cke-title"]||""}},attributes:{"class":function(a){return CKEDITOR.tools.ltrim(a.replace(/(?:^|\s+)cke_[^\s]*/g,""))||false}}};if(CKEDITOR.env.ie)A.attributes.style=function(a){return a.replace(/(^|;)([^\:]+)/g,function(a){return a.toLowerCase()})};for(var v in{input:1,textarea:1}){s.elements[v]=n;A.elements[v]=r}var o=/<(a|area|img|input|source)\b([^>]*)>/gi,
        +x=/\b(on\w+|href|src|name)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+))/gi,I=/(?:])[^>]*>[\s\S]*?<\/style>)|(?:<(:?link|meta|base)[^>]*>)/gi,G=/(])[^>]*>)([\s\S]*?)(?:<\/textarea>)/gi,C=/([^<]*)<\/cke:encoded>/gi,Q=/(<\/?)((?:object|embed|param|html|body|head|title)[^>]*>)/gi,L=/(<\/?)cke:((?:html|body|head|title)[^>]*>)/gi,E=/]*?)\/?>(?!\s*<\/cke:\1)/gi})();"use strict";
        +CKEDITOR.htmlParser.element=function(a,c){this.name=a;this.attributes=c||{};this.children=[];var b=a||"",f=b.match(/^cke:(.*)/);f&&(b=f[1]);b=!(!CKEDITOR.dtd.$nonBodyContent[b]&&!CKEDITOR.dtd.$block[b]&&!CKEDITOR.dtd.$listItem[b]&&!CKEDITOR.dtd.$tableContent[b]&&!(CKEDITOR.dtd.$nonEditable[b]||b=="br"));this.isEmpty=!!CKEDITOR.dtd.$empty[a];this.isUnknown=!CKEDITOR.dtd[a];this._={isBlockLike:b,hasInlineStarted:this.isEmpty||!b}};
        +CKEDITOR.htmlParser.cssStyle=function(a){var c={};((a instanceof CKEDITOR.htmlParser.element?a.attributes.style:a)||"").replace(/"/g,'"').replace(/\s*([^ :;]+)\s*:\s*([^;]+)\s*(?=;|$)/g,function(a,f,e){f=="font-family"&&(e=e.replace(/["']/g,""));c[f.toLowerCase()]=e});return{rules:c,populate:function(a){var c=this.toString();if(c)a instanceof CKEDITOR.dom.element?a.setAttribute("style",c):a instanceof CKEDITOR.htmlParser.element?a.attributes.style=c:a.style=c},toString:function(){var a=[],f;
        +for(f in c)c[f]&&a.push(f,":",c[f],";");return a.join("")}}};
        +(function(){var a=function(a,c){a=a[0];c=c[0];return ac?1:0},c=CKEDITOR.htmlParser.fragment.prototype;CKEDITOR.htmlParser.element.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_ELEMENT,add:c.add,clone:function(){return new CKEDITOR.htmlParser.element(this.name,this.attributes)},filter:function(a){var c=this,e,d;if(!c.parent)a.onRoot(c);for(;;){e=c.name;if(!(d=a.onElementName(e))){this.remove();return false}c.name=d;if(!(c=a.onElement(c))){this.remove();return false}if(c!==
        +this){this.replaceWith(c);return false}if(c.name==e)break;if(c.type!=CKEDITOR.NODE_ELEMENT){this.replaceWith(c);return false}if(!c.name){this.replaceWithChildren();return false}}e=c.attributes;var j,l;for(j in e){l=j;for(d=e[j];;)if(l=a.onAttributeName(j))if(l!=j){delete e[j];j=l}else break;else{delete e[j];break}l&&((d=a.onAttribute(c,l,d))===false?delete e[l]:e[l]=d)}c.isEmpty||this.filterChildren(a);return true},filterChildren:c.filterChildren,writeHtml:function(b,c){c&&this.filter(c);var e=this.name,
        +d=[],j=this.attributes,l,i;b.openTag(e,j);for(l in j)d.push([l,j[l]]);b.sortAttributes&&d.sort(a);l=0;for(i=d.length;l{voiceLabel}<{outerEl} class="cke_inner cke_reset" role="presentation">{topHtml}<{outerEl} id="{contentId}" class="cke_contents cke_reset" role="presentation">{bottomHtml}'));b=CKEDITOR.dom.element.createFromHtml(e.output({id:a.id,name:b,langDir:a.lang.dir,langCode:a.langCode,voiceLabel:a.lang.editor,
        +topHtml:m?''+m+"":"",contentId:a.ui.spaceId("contents"),bottomHtml:n?''+n+"":"",outerEl:CKEDITOR.env.ie?"span":"div"}));if(f==CKEDITOR.ELEMENT_MODE_REPLACE){c.hide();b.insertAfter(c)}else c.append(b);a.container=b;m&&a.ui.space("top").unselectable();n&&a.ui.space("bottom").unselectable();c=
        +a.config.width;f=a.config.height;c&&b.setStyle("width",CKEDITOR.tools.cssLength(c));f&&a.ui.space("contents").setStyle("height",CKEDITOR.tools.cssLength(f));b.disableContextMenu();CKEDITOR.env.webkit&&b.on("focus",function(){a.focus()});a.fireOnce("uiReady")}function f(a){var b=a.element;if(a.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE&&b.is("textarea")){var c=b.$.form&&new CKEDITOR.dom.element(b.$.form);if(c){var e=function(){a.updateElement()};c.on("submit",e);if(!c.$.submit.nodeName&&!c.$.submit.length)c.$.submit=
        +CKEDITOR.tools.override(c.$.submit,function(b){return function(){a.updateElement();b.apply?b.apply(this,arguments):b()}});a.on("destroy",function(){c.removeListener("submit",e)})}}}CKEDITOR.replace=function(b,c){return a(b,c,null,CKEDITOR.ELEMENT_MODE_REPLACE)};CKEDITOR.appendTo=function(b,c,e){return a(b,c,e,CKEDITOR.ELEMENT_MODE_APPENDTO)};CKEDITOR.replaceAll=function(){for(var a=document.getElementsByTagName("textarea"),b=0;b",k="",a=i+a.replace(f,function(){return k+i})+k}a=a.replace(/\n/g,"
        ");b||(a=a.replace(RegExp("
        (?=)"),function(a){return e.repeat(a,2)}));a=a.replace(/^ | $/g," ");a=a.replace(/(>|\s) /g,function(a,b){return b+" "}).replace(/ (?=<)/g," ");n(this,"text",a)},insertElement:function(a){d(this);for(var c=this.editor,g=c.config.enterMode, +e=c.getSelection(),f=e.getRanges(),i=a.getName(),k=CKEDITOR.dtd.$block[i],m,n,l,B=f.length-1;B>=0;B--){m=f[B];if(!m.checkReadOnly()){m.deleteContents(1);n=!B&&a||a.clone(1);var q,z;if(k)for(;(q=m.getCommonAncestor(0,1))&&(z=CKEDITOR.dtd[q.getName()])&&(!z||!z[i]);)if(q.getName()in CKEDITOR.dtd.span)m.splitElement(q);else if(m.checkStartOfBlock()&&m.checkEndOfBlock()){m.setStartBefore(q);m.collapse(true);q.remove()}else m.splitBlock(g==CKEDITOR.ENTER_DIV?"div":"p",c.editable());m.insertNode(n);l|| +(l=n)}}if(l){m.moveToPosition(l,CKEDITOR.POSITION_AFTER_END);if(k)if((a=l.getNext(b))&&a.type==CKEDITOR.NODE_ELEMENT&&a.is(CKEDITOR.dtd.$block))a.getDtd()["#"]?m.moveToElementEditStart(a):m.moveToElementEditEnd(l);else if(!a&&g!=CKEDITOR.ENTER_BR){a=m.fixBlock(true,g==CKEDITOR.ENTER_DIV?"div":"p");m.moveToElementEditStart(a)}}e.selectRanges([m]);j(this,CKEDITOR.env.opera)},setData:function(a,b){!b&&this.editor.dataProcessor&&(a=this.editor.dataProcessor.toHtml(a));this.setHtml(a);this.editor.fire("dataReady")}, +getData:function(a){var b=this.getHtml();!a&&this.editor.dataProcessor&&(b=this.editor.dataProcessor.toDataFormat(b));return b},setReadOnly:function(a){this.setAttribute("contenteditable",!a)},detach:function(){this.removeClass("cke_editable");var a=this.editor;this._.detach();delete a.document;delete a.window},isInline:function(){return this.getDocument().equals(CKEDITOR.document)},setup:function(){var a=this.editor;this.attachListener(a,"beforeGetData",function(){var b=this.getData();this.is("textarea")|| +a.config.ignoreEmptyParagraph!==false&&(b=b.replace(l,function(a,b){return b}));a.setData(b,null,1)},this);this.attachListener(a,"getSnapshot",function(a){a.data=this.getData(1)},this);this.attachListener(a,"afterSetData",function(){this.setData(a.getData(1))},this);this.attachListener(a,"loadSnapshot",function(a){this.setData(a.data,1)},this);this.attachListener(a,"beforeFocus",function(){var b=a.getSelection();(b=b&&b.getNative())&&b.type=="Control"||this.focus()},this);this.attachListener(a,"insertHtml", +function(a){this.insertHtml(a.data.dataValue,a.data.mode)},this);this.attachListener(a,"insertElement",function(a){this.insertElement(a.data)},this);this.attachListener(a,"insertText",function(a){this.insertText(a.data)},this);this.setReadOnly(a.readOnly);this.attachClass("cke_editable");this.attachClass(a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?"cke_editable_inline":a.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE||a.elementMode==CKEDITOR.ELEMENT_MODE_APPENDTO?"cke_editable_themed":"");this.attachClass("cke_contents_"+ +a.config.contentsLangDirection);a.keystrokeHandler.blockedKeystrokes[8]=a.readOnly;a.keystrokeHandler.attach(this);this.on("blur",function(a){CKEDITOR.env.opera&&CKEDITOR.document.getActive().equals(this.isInline()?this:this.getWindow().getFrame())?a.cancel():this.hasFocus=false},null,null,-1);this.on("focus",function(){this.hasFocus=true},null,null,-1);a.focusManager.add(this);if(this.equals(CKEDITOR.document.getActive())){this.hasFocus=true;a.once("contentDom",function(){a.focusManager.focus()})}this.isInline()&& +this.changeAttr("tabindex",a.tabIndex);if(!this.is("textarea")){a.document=this.getDocument();a.window=this.getWindow();var b=a.document;this.changeAttr("spellcheck",!a.config.disableNativeSpellChecker);var g=a.config.contentsLangDirection;this.getDirection(1)!=g&&this.changeAttr("dir",g);var d=CKEDITOR.getCss();if(d){g=b.getHead();if(!g.getCustomData("stylesheet")){d=b.appendStyleText(d);d=new CKEDITOR.dom.element(d.ownerNode||d.owningElement);g.setCustomData("stylesheet",d);d.data("cke-temp",1)}}g= +b.getCustomData("stylesheet_ref")||0;b.setCustomData("stylesheet_ref",g+1);this.setCustomData("cke_includeReadonly",!a.config.disableReadonlyStyling);this.attachListener(this,"click",function(a){var a=a.data,b=a.getTarget();b.is("a")&&(a.$.button!=2&&b.isReadOnly())&&a.preventDefault()});this.attachListener(a,"key",function(b){if(a.readOnly)return true;var c=b.data.keyCode,g;if(c in{8:1,46:1}){var d=a.getSelection(),b=d.getRanges()[0],h=b.startPath(),f,p,j,c=c==8;if(d=e(d)){a.fire("saveSnapshot"); +b.moveToPosition(d,CKEDITOR.POSITION_BEFORE_START);d.remove();b.select();a.fire("saveSnapshot");g=1}else if(b.collapsed)if((f=h.block)&&b[c?"checkStartOfBlock":"checkEndOfBlock"]()&&(j=f[c?"getPrevious":"getNext"](i))&&j.is("table")){a.fire("saveSnapshot");b[c?"checkEndOfBlock":"checkStartOfBlock"]()&&f.remove();b["moveToElementEdit"+(c?"End":"Start")](j);b.select();a.fire("saveSnapshot");g=1}else if(h.blockLimit&&h.blockLimit.is("td")&&(p=h.blockLimit.getAscendant("table"))&&b.checkBoundaryOfElement(p, +c?CKEDITOR.START:CKEDITOR.END)&&(j=p[c?"getPrevious":"getNext"](i))){a.fire("saveSnapshot");b["moveToElementEdit"+(c?"End":"Start")](j);b.checkStartOfBlock()&&b.checkEndOfBlock()?j.remove():b.select();a.fire("saveSnapshot");g=1}else if((p=h.contains(["td","th","caption"]))&&b.checkBoundaryOfElement(p,c?CKEDITOR.START:CKEDITOR.END))g=1}return!g});CKEDITOR.env.ie&&this.attachListener(this,"click",c);!CKEDITOR.env.ie&&!CKEDITOR.env.opera&&this.attachListener(this,"mousedown",function(b){var c=b.data.getTarget(); +if(c.is("img","hr","input","textarea","select")){a.getSelection().selectElement(c);c.is("input","textarea","select")&&b.data.preventDefault()}});CKEDITOR.env.gecko&&this.attachListener(this,"mouseup",function(b){if(b.data.$.button==2){b=b.data.getTarget();if(!b.getOuterHtml().replace(l,"")){var c=a.createRange();c.moveToElementEditStart(b);c.select(true)}}});if(CKEDITOR.env.webkit){this.attachListener(this,"click",function(a){a.data.getTarget().is("input","select")&&a.data.preventDefault()});this.attachListener(this, +"mouseup",function(a){a.data.getTarget().is("input","textarea")&&a.data.preventDefault()})}}}},_:{detach:function(){this.editor.setData(this.editor.getData(),0,1);this.clearListeners();this.restoreAttrs();var a;if(a=this.removeCustomData("classes"))for(;a.length;)this.removeClass(a.pop());a=this.getDocument();var b=a.getHead();if(b.getCustomData("stylesheet")){var c=a.getCustomData("stylesheet_ref");if(--c)a.setCustomData("stylesheet_ref",c);else{a.removeCustomData("stylesheet_ref");b.removeCustomData("stylesheet").remove()}}delete this.editor}}}); +CKEDITOR.editor.prototype.editable=function(a){var b=this._.editable;if(b&&a)return 0;if(arguments.length)b=this._.editable=a?a instanceof CKEDITOR.editable?a:new CKEDITOR.editable(this,a):(b&&b.detach(),null);return b};var l=/(^|]*>)\s*<(p|div|address|h\d|center|pre)[^>]*>\s*(?:]*>| |\u00A0| )?\s*(:?<\/\2>)?\s*(?=$|<\/body>)/gi,i=CKEDITOR.dom.walker.whitespaces(true),m=CKEDITOR.dom.walker.bookmark(false,true);CKEDITOR.on("instanceLoaded",function(b){var c=b.editor;c.on("insertElement", +function(a){a=a.data;if(a.type==CKEDITOR.NODE_ELEMENT&&(a.is("input")||a.is("textarea"))){a.getAttribute("contentEditable")!="false"&&a.data("cke-editable",a.hasAttribute("contenteditable")?"true":"1");a.setAttribute("contentEditable",false)}});c.on("selectionChange",function(b){if(!c.readOnly){var d=c.getSelection();if(d&&!d.isLocked){d=c.checkDirty();c.fire("lockSnapshot");a(b);c.fire("unlockSnapshot");!d&&c.resetDirty()}}})});CKEDITOR.on("instanceCreated",function(a){var b=a.editor;b.on("mode", +function(){var a=b.editable();if(a&&a.isInline()){var c=this.lang.editor+", "+this.name;a.changeAttr("role","textbox");a.changeAttr("aria-label",c);a.changeAttr("title",c);if(c=this.ui.space(this.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?"top":"contents")){var d=CKEDITOR.tools.getNextId(),e=CKEDITOR.dom.element.createFromHtml(''+this.lang.common.editorHelp+"");c.append(e);a.changeAttr("aria-describedby",d)}}})});CKEDITOR.addCss(".cke_editable{cursor:text}.cke_editable img,.cke_editable input,.cke_editable textarea{cursor:default}"); +var n=function(){function a(b){return b.type==CKEDITOR.NODE_ELEMENT}function c(b,d){var g,e,h,f,o=[],i=d.range.startContainer;g=d.range.startPath();for(var i=k[i.getName()],j=0,m=b.getChildren(),n=m.count(),l=-1,u=-1,t=0,w=g.contains(k.$list);j-1)o[l].firstNotAllowed=1;if(u>-1)o[u].lastNotAllowed=1;return o}function d(b,c){var e=[],h=b.getChildren(),f=h.count(),i,o=0,j=k[c],p=!b.is(k.$inline)||b.is("br");for(p&&e.push(" ");o ",s.document);s.insertNode(x);s.setStartAfter(x)}I=new CKEDITOR.dom.elementPath(s.startContainer);q.endPath=G=new CKEDITOR.dom.elementPath(s.endContainer);if(!s.collapsed){var o=G.block||G.blockLimit,Q=s.getCommonAncestor(); +o&&(!o.equals(Q)&&!o.contains(Q)&&s.checkEndOfBlock())&&q.zombies.push(o);s.deleteContents()}for(;(C=a(s.startContainer)&&s.startContainer.getChild(s.startOffset-1))&&a(C)&&C.isBlockBoundary()&&I.contains(C);)s.moveToPosition(C,CKEDITOR.POSITION_BEFORE_END);f(s,q.blockLimit,I,G);if(x){s.setEndBefore(x);s.collapse();x.remove()}x=s.startPath();if(o=x.contains(e,false,1)){s.splitElement(o);q.inlineStylesRoot=o;q.inlineStylesPeak=x.lastElement}x=s.createBookmark();(o=x.startNode.getPrevious(b))&&a(o)&& +e(o)&&v.push(o);(o=x.startNode.getNext(b))&&a(o)&&e(o)&&v.push(o);for(o=x.startNode;(o=o.getParent())&&e(o);)v.push(o);s.moveToBookmark(x);if(t){C=t;t=q.range;if(q.type=="text"&&q.inlineStylesRoot){x=C;C=q.inlineStylesPeak;s=C.getDocument().createText("{cke-peak}");for(v=q.inlineStylesRoot.getParent();!C.equals(v);){s=s.appendTo(C.clone());C=C.getParent()}C=s.getOuterHtml().replace("{cke-peak}",x)}x=q.blockLimit.getName();if(/^\s+|\s+$/.test(C)&&"span"in CKEDITOR.dtd[x]){var L=' '; +C=L+C+L}C=q.editor.dataProcessor.toHtml(C,null,false,q.dontFilter);x=t.document.createElement("body");x.setHtml(C);if(L){x.getFirst().remove();x.getLast().remove()}if((L=t.startPath().block)&&!(L.getChildCount()==1&&L.getBogus()))a:{var E;if(x.getChildCount()==1&&a(E=x.getFirst())&&E.is(l)){L=E.getElementsByTag("*");t=0;for(s=L.count();t0;else{y=E.startPath();if(!G.isBlock&&(N=q.editor.config.enterMode!=CKEDITOR.ENTER_BR&&q.editor.config.autoParagraph!==false?q.editor.config.enterMode==CKEDITOR.ENTER_DIV?"div":"p":false)&&!y.block&&y.blockLimit&&y.blockLimit.equals(E.root)){N=L.createElement(N);!CKEDITOR.env.ie&&N.appendBogus();E.insertNode(N);!CKEDITOR.env.ie&&(J=N.getBogus())&&J.remove();E.moveToPosition(N,CKEDITOR.POSITION_BEFORE_END)}if((y= +E.startPath().block)&&!y.equals(H)){if(J=y.getBogus()){J.remove();C.push(y)}H=y}G.firstNotAllowed&&(s=1);if(s&&G.isElement){y=E.startContainer;for(K=null;y&&!k[y.getName()][G.name];){if(y.equals(t)){y=null;break}K=y;y=y.getParent()}if(y){if(K){O=E.splitElement(K);q.zombies.push(O);q.zombies.push(K)}}else{K=t.getName();P=!x;y=x==I.length-1;K=d(G.node,K);for(var M=[],R=K.length,T=0,U=void 0,V=0,W=-1;T1&&f&&f.intersectsNode(c.$)){d=[e.anchorOffset,e.focusOffset];f=e.focusNode==c.$&&e.focusOffset>0;e.anchorNode==c.$&&e.anchorOffset>0&&d[0]--;f&&d[1]--;var i;f=e;if(!f.isCollapsed){i=f.getRangeAt(0);i.setStart(f.anchorNode,f.anchorOffset);i.setEnd(f.focusNode,f.focusOffset);i=i.collapsed}i&&d.unshift(d.pop())}}c.setText(j(c.getText()));if(d){c=e.getRangeAt(0);c.setStart(c.startContainer,d[0]);c.setEnd(c.startContainer,d[1]);e.removeAllRanges();e.addRange(c)}}}function j(a){return a.replace(/\u200B( )?/g, +function(a){return a[1]?" ":""})}var l,i,m=CKEDITOR.dom.walker.invisible(1);CKEDITOR.on("instanceCreated",function(b){function g(){var a=e.getSelection();a&&a.removeAllRanges()}var e=b.editor;e.define("selectionChange",{errorProof:1});e.on("contentDom",function(){var b=e.document,g=CKEDITOR.document,f=e.editable(),i=b.getBody(),j=b.getDocumentElement(),p=f.isInline(),m;CKEDITOR.env.gecko&&f.attachListener(f,"focus",function(a){a.removeListener();if(m!==0){a=e.getSelection().getNative();if(a.isCollapsed&& +a.anchorNode==f.$){a=e.createRange();a.moveToElementEditStart(f);a.select()}}},null,null,-2);f.attachListener(f,"focus",function(){e.unlockSelection(m);m=0},null,null,-1);f.attachListener(f,"mousedown",function(){m=0});if(CKEDITOR.env.ie||CKEDITOR.env.opera||p){var l,r=function(){l=e.getSelection(1);l.lock()};n?f.attachListener(f,"beforedeactivate",r,null,null,-1):f.attachListener(e,"selectionCheck",r,null,null,-1);f.attachListener(f,"blur",function(){e.lockSelection(l);m=1},null,null,-1)}if(CKEDITOR.env.ie&& +!p){var s;f.attachListener(f,"mousedown",function(a){a.data.$.button==2&&e.document.$.selection.type=="None"&&(s=e.window.getScrollPosition())});f.attachListener(f,"mouseup",function(a){if(a.data.$.button==2&&s){e.document.$.documentElement.scrollLeft=s.x;e.document.$.documentElement.scrollTop=s.y}s=null});if(b.$.compatMode!="BackCompat"){if(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)j.on("mousedown",function(a){function b(a){a=a.data.$;if(d){var c=i.$.createTextRange();try{c.moveToPoint(a.x, +a.y)}catch(e){}d.setEndPoint(f.compareEndPoints("StartToStart",c)<0?"EndToEnd":"StartToStart",c);d.select()}}function c(){j.removeListener("mousemove",b);g.removeListener("mouseup",c);j.removeListener("mouseup",c);d.select()}a=a.data;if(a.getTarget().is("html")&&a.$.y7){j.on("mousedown", +function(a){if(a.data.getTarget().is("html")){g.on("mouseup",A);j.on("mouseup",A)}});var A=function(){g.removeListener("mouseup",A);j.removeListener("mouseup",A);var a=CKEDITOR.document.$.selection,c=a.createRange();a.type!="None"&&c.parentElement().ownerDocument==b.$&&c.select()}}}}f.attachListener(f,"selectionchange",a,e);f.attachListener(f,"keyup",c,e);f.attachListener(f,"focus",function(){e.forceNextSelectionCheck();e.selectionChange(1)});if(p?CKEDITOR.env.webkit||CKEDITOR.env.gecko:CKEDITOR.env.opera){var v; +f.attachListener(f,"mousedown",function(){v=1});f.attachListener(b.getDocumentElement(),"mouseup",function(){v&&c.call(e);v=0})}else f.attachListener(CKEDITOR.env.ie?f:b.getDocumentElement(),"mouseup",c,e);CKEDITOR.env.webkit&&f.attachListener(b,"keydown",function(a){switch(a.data.getKey()){case 13:case 33:case 34:case 35:case 36:case 37:case 39:case 8:case 45:case 46:d(f)}},null,null,-1)});e.on("contentDomUnload",e.forceNextSelectionCheck,e);e.on("dataReady",function(){e.selectionChange(1)});CKEDITOR.env.ie9Compat&& +e.on("beforeDestroy",g,null,null,9);CKEDITOR.env.webkit&&e.on("setData",g);e.on("contentDomUnload",function(){e.unlockSelection()})});CKEDITOR.on("instanceReady",function(a){var b=a.editor;if(CKEDITOR.env.webkit){b.on("selectionChange",function(){var a=b.editable(),c=e(a);c&&(c.getCustomData("ready")?d(a):c.setCustomData("ready",1))},null,null,-1);b.on("beforeSetMode",function(){d(b.editable())},null,null,-1);var c,f,a=function(){var a=b.editable();if(a)if(a=e(a)){var d=b.document.$.defaultView.getSelection(); +d.type=="Caret"&&d.anchorNode==a.$&&(f=1);c=a.getText();a.setText(j(c))}},i=function(){var a=b.editable();if(a)if(a=e(a)){a.setText(c);if(f){b.document.$.defaultView.getSelection().setPosition(a.$,a.getLength());f=0}}};b.on("beforeUndoImage",a);b.on("afterUndoImage",i);b.on("beforeGetData",a,null,null,0);b.on("getData",i)}});CKEDITOR.editor.prototype.selectionChange=function(b){(b?a:c).call(this)};CKEDITOR.editor.prototype.getSelection=function(a){if(this._.savedSelection&&!a)return this._.savedSelection; +return(a=this.editable())?new CKEDITOR.dom.selection(a):null};CKEDITOR.editor.prototype.lockSelection=function(a){a=a||this.getSelection(1);if(a.getType()!=CKEDITOR.SELECTION_NONE){!a.isLocked&&a.lock();this._.savedSelection=a;return true}return false};CKEDITOR.editor.prototype.unlockSelection=function(a){var b=this._.savedSelection;if(b){b.unlock(a);delete this._.savedSelection;return true}return false};CKEDITOR.editor.prototype.forceNextSelectionCheck=function(){delete this._.selectionPreviousPath}; +CKEDITOR.dom.document.prototype.getSelection=function(){return new CKEDITOR.dom.selection(this)};CKEDITOR.dom.range.prototype.select=function(){var a=this.root instanceof CKEDITOR.editable?this.root.editor.getSelection():new CKEDITOR.dom.selection(this.root);a.selectRanges([this]);return a};CKEDITOR.SELECTION_NONE=1;CKEDITOR.SELECTION_TEXT=2;CKEDITOR.SELECTION_ELEMENT=3;var n=typeof window.getSelection!="function";CKEDITOR.dom.selection=function(a){var b=a instanceof CKEDITOR.dom.element;this.document= +a instanceof CKEDITOR.dom.document?a:a.getDocument();this.root=b?a:this.document.getBody();this.isLocked=0;this._={cache:{}};if(CKEDITOR.env.webkit){a=this.document.getWindow().$.getSelection();if(a.type=="None"&&this.document.getActive().equals(this.root)||a.type=="Caret"&&a.anchorNode.nodeType==CKEDITOR.NODE_DOCUMENT){var c=new CKEDITOR.dom.range(this.root);c.moveToPosition(this.root,CKEDITOR.POSITION_AFTER_START);b=this.document.$.createRange();b.setStart(c.startContainer.$,c.startOffset);b.collapse(1); +var d=this.root.on("focus",function(a){a.cancel()},null,null,-100);a.addRange(b);d.removeListener()}}var a=this.getNative(),e;if(a)if(a.getRangeAt)e=(c=a.rangeCount&&a.getRangeAt(0))&&new CKEDITOR.dom.node(c.commonAncestorContainer);else{try{c=a.createRange()}catch(f){}e=c&&CKEDITOR.dom.element.get(c.item&&c.item(0)||c.parentElement())}if(!e||!this.root.equals(e)&&!this.root.contains(e)){this._.cache.type=CKEDITOR.SELECTION_NONE;this._.cache.startElement=null;this._.cache.selectedElement=null;this._.cache.selectedText= +"";this._.cache.ranges=new CKEDITOR.dom.rangeList}return this};var r={img:1,hr:1,li:1,table:1,tr:1,td:1,th:1,embed:1,object:1,ol:1,ul:1,a:1,input:1,form:1,select:1,textarea:1,button:1,fieldset:1,thead:1,tfoot:1};CKEDITOR.dom.selection.prototype={getNative:function(){return this._.cache.nativeSel!==void 0?this._.cache.nativeSel:this._.cache.nativeSel=n?this.document.$.selection:this.document.getWindow().$.getSelection()},getType:n?function(){var a=this._.cache;if(a.type)return a.type;var b=CKEDITOR.SELECTION_NONE; +try{var c=this.getNative(),d=c.type;if(d=="Text")b=CKEDITOR.SELECTION_TEXT;if(d=="Control")b=CKEDITOR.SELECTION_ELEMENT;if(c.createRange().parentElement())b=CKEDITOR.SELECTION_TEXT}catch(e){}return a.type=b}:function(){var a=this._.cache;if(a.type)return a.type;var b=CKEDITOR.SELECTION_TEXT,c=this.getNative();if(!c||!c.rangeCount)b=CKEDITOR.SELECTION_NONE;else if(c.rangeCount==1){var c=c.getRangeAt(0),d=c.startContainer;if(d==c.endContainer&&d.nodeType==1&&c.endOffset-c.startOffset==1&&r[d.childNodes[c.startOffset].nodeName.toLowerCase()])b= +CKEDITOR.SELECTION_ELEMENT}return a.type=b},getRanges:function(){var a=n?function(){function a(b){return(new CKEDITOR.dom.node(b)).getIndex()}var b=function(b,c){b=b.duplicate();b.collapse(c);var d=b.parentElement(),e=d.ownerDocument;if(!d.hasChildNodes())return{container:d,offset:0};for(var f=d.children,h,i,j=b.duplicate(),m=0,p=f.length-1,l=-1,n,o;m<=p;){l=Math.floor((m+p)/2);h=f[l];j.moveToElementText(h);n=j.compareEndPoints("StartToStart",b);if(n>0)p=l-1;else if(n<0)m=l+1;else{if(CKEDITOR.env.ie9Compat&& +h.tagName=="BR"){f=e.defaultView.getSelection();return{container:f[c?"anchorNode":"focusNode"],offset:f[c?"anchorOffset":"focusOffset"]}}return{container:d,offset:a(h)}}}if(l==-1||l==f.length-1&&n<0){j.moveToElementText(d);j.setEndPoint("StartToStart",b);e=j.text.replace(/(\r\n|\r)/g,"\n").length;f=d.childNodes;if(!e){h=f[f.length-1];return h.nodeType!=CKEDITOR.NODE_TEXT?{container:d,offset:f.length}:{container:h,offset:h.nodeValue.length}}for(d=f.length;e>0&&d>0;){i=f[--d];if(i.nodeType==CKEDITOR.NODE_TEXT){o= +i;e=e-i.nodeValue.length}}return{container:o,offset:-e}}j.collapse(n>0?true:false);j.setEndPoint(n>0?"StartToStart":"EndToStart",b);e=j.text.replace(/(\r\n|\r)/g,"\n").length;if(!e)return{container:d,offset:a(h)+(n>0?0:1)};for(;e>0;)try{i=h[n>0?"previousSibling":"nextSibling"];if(i.nodeType==CKEDITOR.NODE_TEXT){e=e-i.nodeValue.length;o=i}h=i}catch(x){return{container:d,offset:a(h)}}return{container:o,offset:n>0?-e:o.nodeValue.length+e}};return function(){var a=this.getNative(),c=a&&a.createRange(), +d=this.getType();if(!a)return[];if(d==CKEDITOR.SELECTION_TEXT){a=new CKEDITOR.dom.range(this.root);d=b(c,true);a.setStart(new CKEDITOR.dom.node(d.container),d.offset);d=b(c);a.setEnd(new CKEDITOR.dom.node(d.container),d.offset);a.endContainer.getPosition(a.startContainer)&CKEDITOR.POSITION_PRECEDING&&a.endOffset<=a.startContainer.getIndex()&&a.collapse();return[a]}if(d==CKEDITOR.SELECTION_ELEMENT){for(var d=[],e=0;e=b.getLength()?l.setStartAfter(b):l.setStartBefore(b));i&&i.type==CKEDITOR.NODE_TEXT&&(m?l.setEndAfter(i):l.setEndBefore(i));b=new CKEDITOR.dom.walker(l);b.evaluator=function(a){if(a.type==CKEDITOR.NODE_ELEMENT&&a.isReadOnly()){var b=f.clone();f.setEndBefore(a);f.collapsed&&d.splice(e--,1);if(!(a.getPosition(l.endContainer)&CKEDITOR.POSITION_CONTAINS)){b.setStartAfter(a);b.collapsed||d.splice(e+1,0,b)}return true}return false};b.next()}}return c.ranges}}(),getStartElement:function(){var a=this._.cache; +if(a.startElement!==void 0)return a.startElement;var b;switch(this.getType()){case CKEDITOR.SELECTION_ELEMENT:return this.getSelectedElement();case CKEDITOR.SELECTION_TEXT:var c=this.getRanges()[0];if(c){if(c.collapsed){b=c.startContainer;b.type!=CKEDITOR.NODE_ELEMENT&&(b=b.getParent())}else{for(c.optimize();;){b=c.startContainer;if(c.startOffset==(b.getChildCount?b.getChildCount():b.getLength())&&!b.isBlockBoundary())c.setStartAfter(b);else break}b=c.startContainer;if(b.type!=CKEDITOR.NODE_ELEMENT)return b.getParent(); +b=b.getChild(c.startOffset);if(!b||b.type!=CKEDITOR.NODE_ELEMENT)b=c.startContainer;else for(c=b.getFirst();c&&c.type==CKEDITOR.NODE_ELEMENT;){b=c;c=c.getFirst()}}b=b.$}}return a.startElement=b?new CKEDITOR.dom.element(b):null},getSelectedElement:function(){var a=this._.cache;if(a.selectedElement!==void 0)return a.selectedElement;var b=this,c=CKEDITOR.tools.tryThese(function(){return b.getNative().createRange().item(0)},function(){for(var a=b.getRanges()[0],c,d,e=2;e&&(!(c=a.getEnclosedNode())||!(c.type== +CKEDITOR.NODE_ELEMENT&&r[c.getName()]&&(d=c)));e--)a.shrink(CKEDITOR.SHRINK_ELEMENT);return d.$});return a.selectedElement=c?new CKEDITOR.dom.element(c):null},getSelectedText:function(){var a=this._.cache;if(a.selectedText!==void 0)return a.selectedText;var b=this.getNative(),b=n?b.type=="Control"?"":b.createRange().text:b.toString();return a.selectedText=b},lock:function(){this.getRanges();this.getStartElement();this.getSelectedElement();this.getSelectedText();this._.cache.nativeSel=null;this.isLocked= +1},unlock:function(a){if(this.isLocked){if(a)var b=this.getSelectedElement(),c=!b&&this.getRanges();this.isLocked=0;this.reset();if(a)(a=b||c[0]&&c[0].getCommonAncestor())&&a.getAscendant("body",1)&&(b?this.selectElement(b):this.selectRanges(c))}},reset:function(){this._.cache={}},selectElement:function(a){var b=new CKEDITOR.dom.range(this.root);b.setStartBefore(a);b.setEndAfter(a);this.selectRanges([b])},selectRanges:function(a){if(a.length)if(this.isLocked){var b=CKEDITOR.document.getActive();this.unlock(); +this.selectRanges(a);this.lock();!b.equals(this.root)&&b.focus()}else{if(n){var c=CKEDITOR.dom.walker.whitespaces(true),e=/\ufeff|\u00a0/,i={table:1,tbody:1,tr:1};if(a.length>1){b=a[a.length-1];a[0].setEnd(b.endContainer,b.endOffset)}var b=a[0],a=b.collapsed,k,j,m,l=b.getEnclosedNode();if(l&&l.type==CKEDITOR.NODE_ELEMENT&&l.getName()in r&&(!l.is("a")||!l.getText()))try{m=l.$.createControlRange();m.addElement(l.$);m.select();return}catch(B){}(b.startContainer.type==CKEDITOR.NODE_ELEMENT&&b.startContainer.getName()in +i||b.endContainer.type==CKEDITOR.NODE_ELEMENT&&b.endContainer.getName()in i)&&b.shrink(CKEDITOR.NODE_ELEMENT,true);m=b.createBookmark();var i=m.startNode,q;if(!a)q=m.endNode;m=b.document.$.body.createTextRange();m.moveToElementText(i.$);m.moveStart("character",1);if(q){e=b.document.$.body.createTextRange();e.moveToElementText(q.$);m.setEndPoint("EndToEnd",e);m.moveEnd("character",-1)}else{k=i.getNext(c);j=i.hasAscendant("pre");k=!(k&&k.getText&&k.getText().match(e))&&(j||!i.hasPrevious()||i.getPrevious().is&& +i.getPrevious().is("br"));j=b.document.createElement("span");j.setHtml("");j.insertBefore(i);k&&b.document.createText("").insertBefore(i)}b.setStartBefore(i);i.remove();if(a){if(k){m.moveStart("character",-1);m.select();b.document.$.selection.clear()}else m.select();b.moveToPosition(j,CKEDITOR.POSITION_BEFORE_START);j.remove()}else{b.setEndBefore(q);q.remove();m.select()}}else{q=this.getNative();if(!q)return;if(CKEDITOR.env.opera){b=this.document.$.createRange();b.selectNodeContents(this.root.$); +q.addRange(b)}this.removeAllRanges();for(e=0;e=0){b.collapse(1);m.setEnd(b.endContainer.$,b.endOffset)}else throw z;}q.addRange(m)}}this.reset();this.root.fire("selectionchange")}},createBookmarks:function(a){return this.getRanges().createBookmarks(a)},createBookmarks2:function(a){return this.getRanges().createBookmarks2(a)},selectBookmarks:function(a){for(var b=[],c=0;c< +a.length;c++){var d=new CKEDITOR.dom.range(this.root);d.moveToBookmark(a[c]);b.push(d)}this.selectRanges(b);return this},getCommonAncestor:function(){var a=this.getRanges();return a[0].startContainer.getCommonAncestor(a[a.length-1].endContainer)},scrollIntoView:function(){this.type!=CKEDITOR.SELECTION_NONE&&this.getRanges()[0].scrollIntoView()},removeAllRanges:function(){var a=this.getNative();try{a&&a[n?"empty":"removeAllRanges"]()}catch(b){}this.reset()}}})(); +CKEDITOR.editor.prototype.attachStyleStateChange=function(a,c){var b=this._.styleStateChangeCallbacks;if(!b){b=this._.styleStateChangeCallbacks=[];this.on("selectionChange",function(a){for(var c=0;c]*>)[ \t\r\n]*/gi,"$1");f=f.replace(/([ \t\n\r]+| )/g," ");f=f.replace(/]*>/gi,"\n");if(CKEDITOR.env.ie){var g=a.getDocument().createElement("div");g.append(d);d.$.outerHTML="
        "+f+"
        ";d.copyAttributes(g.getFirst());d=g.getFirst().remove()}else d.setHtml(f);b=d}else f?b=n(c?[a.getHtml()]:i(a),b):a.moveChildren(b);b.replace(a);if(e){var c=b,j;if((j=c.getPrevious(v))&&j.is&&j.is("pre")){e=m(j.getHtml(),/\n$/,"")+ +"\n\n"+m(c.getHtml(),/^\n/,"");CKEDITOR.env.ie?c.$.outerHTML="
        "+e+"
        ":c.setHtml(e);j.remove()}}else c&&h(b)}function i(a){a.getName();var b=[];m(a.getOuterHtml(),/(\S\s*)\n(?:\s|(]+data-cke-bookmark.*?\/span>))*\n(?!$)/gi,function(a,b,c){return b+"
        "+c+"
        "}).replace(/([\s\S]*?)<\/pre>/gi,function(a,c){b.push(c)});return b}function m(a,b,c){var e="",d="",a=a.replace(/(^]+data-cke-bookmark.*?\/span>)|(]+data-cke-bookmark.*?\/span>$)/gi,function(a,
        +b,c){b&&(e=b);c&&(d=c);return""});return e+a.replace(b,c)+d}function n(a,b){var c;a.length>1&&(c=new CKEDITOR.dom.documentFragment(b.getDocument()));for(var e=0;e"),d=d.replace(/[ \t]{2,}/g,function(a){return CKEDITOR.tools.repeat(" ",
        +a.length-1)+" "});if(c){var f=b.clone();f.setHtml(d);c.append(f)}else b.setHtml(d)}return c||b}function r(a){var b=this._.definition,c=b.attributes,b=b.styles,d=t(this)[a.getName()],e=CKEDITOR.tools.isEmpty(c)&&CKEDITOR.tools.isEmpty(b),f;for(f in c)if(!((f=="class"||this._.definition.fullMatch)&&a.getAttribute(f)!=F(f,c[f]))){e=a.hasAttribute(f);a.removeAttribute(f)}for(var i in b)if(!(this._.definition.fullMatch&&a.getStyle(i)!=F(i,b[i],true))){e=e||!!a.getStyle(i);a.removeStyle(i)}g(a,d,B[a.getName()]);
        +e&&(this._.definition.alwaysRemoveElement?h(a,1):!CKEDITOR.dtd.$block[a.getName()]||this._.enterMode==CKEDITOR.ENTER_BR&&!a.hasAttributes()?h(a):a.renameNode(this._.enterMode==CKEDITOR.ENTER_P?"p":"div"))}function p(a){for(var b=t(this),c=a.getElementsByTag(this.element),d=c.count();--d>=0;)r.call(this,c.getItem(d));for(var e in b)if(e!=this.element){c=a.getElementsByTag(e);for(d=c.count()-1;d>=0;d--){var f=c.getItem(d);g(f,b[e])}}}function g(a,b,c){if(b=b&&b.attributes)for(var d=0;d",a||b.name,"");return c.join("")},getDefinition:function(){return this._.definition}};CKEDITOR.style.getStyleText=function(a){var b=a._ST;
        +if(b)return b;var b=a.styles,c=a.attributes&&a.attributes.style||"",d="";c.length&&(c=c.replace(z,";"));for(var e in b){var f=b[e],g=(e+":"+f).replace(z,";");f=="inherit"?d=d+g:c=c+g}c.length&&(c=CKEDITOR.tools.normalizeCssText(c,true));return a._ST=c+d}})();CKEDITOR.styleCommand=function(a,c){this.requiredContent=this.allowedContent=this.style=a;CKEDITOR.tools.extend(this,c,true)};
        +CKEDITOR.styleCommand.prototype.exec=function(a){a.focus();this.state==CKEDITOR.TRISTATE_OFF?a.applyStyle(this.style):this.state==CKEDITOR.TRISTATE_ON&&a.removeStyle(this.style)};CKEDITOR.stylesSet=new CKEDITOR.resourceManager("","stylesSet");CKEDITOR.addStylesSet=CKEDITOR.tools.bind(CKEDITOR.stylesSet.add,CKEDITOR.stylesSet);CKEDITOR.loadStylesSet=function(a,c,b){CKEDITOR.stylesSet.addExternal(a,c,"");CKEDITOR.stylesSet.load(a,b)};
        +CKEDITOR.editor.prototype.getStylesSet=function(a){if(this._.stylesDefinitions)a(this._.stylesDefinitions);else{var c=this,b=c.config.stylesCombo_stylesSet||c.config.stylesSet;if(b===false)a(null);else if(b instanceof Array){c._.stylesDefinitions=b;a(b)}else{b||(b="default");var b=b.split(":"),f=b[0];CKEDITOR.stylesSet.addExternal(f,b[1]?b.slice(1).join(":"):CKEDITOR.getUrl("styles.js"),"");CKEDITOR.stylesSet.load(f,function(b){c._.stylesDefinitions=b[f];a(c._.stylesDefinitions)})}}};
        +CKEDITOR.dom.comment=function(a,c){typeof a=="string"&&(a=(c?c.$:document).createComment(a));CKEDITOR.dom.domObject.call(this,a)};CKEDITOR.dom.comment.prototype=new CKEDITOR.dom.node;CKEDITOR.tools.extend(CKEDITOR.dom.comment.prototype,{type:CKEDITOR.NODE_COMMENT,getOuterHtml:function(){return"<\!--"+this.$.nodeValue+"--\>"}});
        +(function(){var a={},c;for(c in CKEDITOR.dtd.$blockLimit)c in CKEDITOR.dtd.$list||(a[c]=1);var b={};for(c in CKEDITOR.dtd.$block)c in CKEDITOR.dtd.$blockLimit||c in CKEDITOR.dtd.$empty||(b[c]=1);CKEDITOR.dom.elementPath=function(c,e){var d=null,j=null,l=[],e=e||c.getDocument().getBody(),i=c;do if(i.type==CKEDITOR.NODE_ELEMENT){l.push(i);if(!this.lastElement){this.lastElement=i;if(i.is(CKEDITOR.dtd.$object))continue}var m=i.getName();if(!j){!d&&b[m]&&(d=i);if(a[m]){var n;if(n=!d){if(m=m=="div"){a:{m=
        +i.getChildren();n=0;for(var r=m.count();n-1}:typeof a=="function"?f=a:typeof a=="object"&&(f=
        +function(b){return b.getName()in a});var e=this.elements,d=e.length;c&&d--;if(b){e=Array.prototype.slice.call(e,0);e.reverse()}for(c=0;c=f){d=e.createText("");d.insertAfter(this)}else{a=e.createText("");a.insertAfter(d);a.remove()}return d},substring:function(a,
        +c){return typeof c!="number"?this.$.nodeValue.substr(a):this.$.nodeValue.substring(a,c)}});
        +(function(){function a(a,c,e){var d=a.serializable,j=c[e?"endContainer":"startContainer"],l=e?"endOffset":"startOffset",i=d?c.document.getById(a.startNode):a.startNode,a=d?c.document.getById(a.endNode):a.endNode;if(j.equals(i.getPrevious())){c.startOffset=c.startOffset-j.getLength()-a.getPrevious().getLength();j=a.getNext()}else if(j.equals(a.getPrevious())){c.startOffset=c.startOffset-j.getLength();j=a.getNext()}j.equals(i.getParent())&&c[l]++;j.equals(a.getParent())&&c[l]++;c[e?"endContainer":"startContainer"]=
        +j;return c}CKEDITOR.dom.rangeList=function(a){if(a instanceof CKEDITOR.dom.rangeList)return a;a?a instanceof CKEDITOR.dom.range&&(a=[a]):a=[];return CKEDITOR.tools.extend(a,c)};var c={createIterator:function(){var a=this,c=CKEDITOR.dom.walker.bookmark(),e=[],d;return{getNextRange:function(j){d=d==void 0?0:d+1;var l=a[d];if(l&&a.length>1){if(!d)for(var i=a.length-1;i>=0;i--)e.unshift(a[i].createBookmark(true));if(j)for(var m=0;a[d+m+1];){for(var n=l.document,j=0,i=n.getById(e[m].endNode),n=n.getById(e[m+
        +1].startNode);;){i=i.getNextSourceNode(false);if(n.equals(i))j=1;else if(c(i)||i.type==CKEDITOR.NODE_ELEMENT&&i.isBlockBoundary())continue;break}if(!j)break;m++}for(l.moveToBookmark(e.shift());m--;){i=a[++d];i.moveToBookmark(e.shift());l.setEnd(i.endContainer,i.endOffset)}}return l}}},createBookmarks:function(b){for(var c=[],e,d=0;db?-1:1}),e=0,f;e
      ',CKEDITOR.document);a.appendTo(CKEDITOR.document.getHead());try{CKEDITOR.env.hc=a.getComputedStyle("border-top-color")==a.getComputedStyle("border-right-color")}catch(c){CKEDITOR.env.hc=false}a.remove()}if(CKEDITOR.env.hc)CKEDITOR.env.cssClass=CKEDITOR.env.cssClass+" cke_hc";CKEDITOR.document.appendStyleText(".cke{visibility:hidden;}"); +CKEDITOR.status="loaded";CKEDITOR.fireOnce("loaded");if(a=CKEDITOR._.pending){delete CKEDITOR._.pending;for(var b=0;bc;c++){var f=a,h=c,d;d=parseInt(a[c],16);d=("0"+(0>e?0|d*(1+e):0|d+(255-d)*e).toString(16)).slice(-2);f[h]=d}return"#"+a.join("")}}(),c=function(){var b=new CKEDITOR.template("background:#{to};background-image:-webkit-gradient(linear,lefttop,leftbottom,from({from}),to({to}));background-image:-moz-linear-gradient(top,{from},{to});background-image:-webkit-linear-gradient(top,{from},{to});background-image:-o-linear-gradient(top,{from},{to});background-image:-ms-linear-gradient(top,{from},{to});background-image:linear-gradient(top,{from},{to});filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='{from}',endColorstr='{to}');");return function(c, +a){return b.output({from:c,to:a})}}(),f={editor:new CKEDITOR.template("{id}.cke_chrome [border-color:{defaultBorder};] {id} .cke_top [ {defaultGradient}border-bottom-color:{defaultBorder};] {id} .cke_bottom [{defaultGradient}border-top-color:{defaultBorder};] {id} .cke_resizer [border-right-color:{ckeResizer}] {id} .cke_dialog_title [{defaultGradient}border-bottom-color:{defaultBorder};] {id} .cke_dialog_footer [{defaultGradient}outline-color:{defaultBorder};border-top-color:{defaultBorder};] {id} .cke_dialog_tab [{lightGradient}border-color:{defaultBorder};] {id} .cke_dialog_tab:hover [{mediumGradient}] {id} .cke_dialog_contents [border-top-color:{defaultBorder};] {id} .cke_dialog_tab_selected, {id} .cke_dialog_tab_selected:hover [background:{dialogTabSelected};border-bottom-color:{dialogTabSelectedBorder};] {id} .cke_dialog_body [background:{dialogBody};border-color:{defaultBorder};] {id} .cke_toolgroup [{lightGradient}border-color:{defaultBorder};] {id} a.cke_button_off:hover, {id} a.cke_button_off:focus, {id} a.cke_button_off:active [{mediumGradient}] {id} .cke_button_on [{ckeButtonOn}] {id} .cke_toolbar_separator [background-color: {ckeToolbarSeparator};] {id} .cke_combo_button [border-color:{defaultBorder};{lightGradient}] {id} a.cke_combo_button:hover, {id} a.cke_combo_button:focus, {id} .cke_combo_on a.cke_combo_button [border-color:{defaultBorder};{mediumGradient}] {id} .cke_path_item [color:{elementsPathColor};] {id} a.cke_path_item:hover, {id} a.cke_path_item:focus, {id} a.cke_path_item:active [background-color:{elementsPathBg};] {id}.cke_panel [border-color:{defaultBorder};] "), +panel:new CKEDITOR.template(".cke_panel_grouptitle [{lightGradient}border-color:{defaultBorder};] .cke_menubutton_icon [background-color:{menubuttonIcon};] .cke_menubutton:hover .cke_menubutton_icon, .cke_menubutton:focus .cke_menubutton_icon, .cke_menubutton:active .cke_menubutton_icon [background-color:{menubuttonIconHover};] .cke_menuseparator [background-color:{menubuttonIcon};] a:hover.cke_colorbox, a:focus.cke_colorbox, a:active.cke_colorbox [border-color:{defaultBorder};] a:hover.cke_colorauto, a:hover.cke_colormore, a:focus.cke_colorauto, a:focus.cke_colormore, a:active.cke_colorauto, a:active.cke_colormore [background-color:{ckeColorauto};border-color:{defaultBorder};] ")}; +return function(g,e){var a=g.uiColor,a={id:"."+g.id,defaultBorder:b(a,-0.1),defaultGradient:c(b(a,0.9),a),lightGradient:c(b(a,1),b(a,0.7)),mediumGradient:c(b(a,0.8),b(a,0.5)),ckeButtonOn:c(b(a,0.6),b(a,0.7)),ckeResizer:b(a,-0.4),ckeToolbarSeparator:b(a,0.5),ckeColorauto:b(a,0.8),dialogBody:b(a,0.7),dialogTabSelected:c("#FFFFFF","#FFFFFF"),dialogTabSelectedBorder:"#FFF",elementsPathColor:b(a,-0.6),elementsPathBg:a,menubuttonIcon:b(a,0.5),menubuttonIconHover:b(a,0.3)};return f[e].output(a).replace(/\[/g, +"{").replace(/\]/g,"}")}}();CKEDITOR.plugins.add("dialogui",{onLoad:function(){var h=function(b){this._||(this._={});this._["default"]=this._.initValue=b["default"]||"";this._.required=b.required||!1;for(var a=[this._],d=1;darguments.length)){var c=h.call(this,a);c.labelId=CKEDITOR.tools.getNextId()+"_label";this._.children=[];CKEDITOR.ui.dialog.uiElement.call(this,b,a,d,"div",null,{role:"presentation"},function(){var f=[],d=a.required?" cke_required":"";"horizontal"!= +a.labelLayout?f.push('",'"):(d={type:"hbox",widths:a.widths,padding:0,children:[{type:"html",html:'