Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var FormField = {
- 'GetField':
- function(fieldId)
- {
- if (isNaN(fieldId) && typeof(fieldId) == 'object') {
- fieldId = parseInt(($(fieldId).attr('id')).substr(10));
- }
- if (fieldId == '' || isNaN(fieldId)) {
- return false;
- }
- var field = $('#FormField_' + fieldId);
- var length = $(field).length;
- if (length == 0) {
- return false;
- } else if (length > 1) {
- field = $(field).get(length-1);
- }
- return $(field);
- },
- 'GetFieldByPrivateId':
- function(formId, privateId)
- {
- if (isNaN(formId) || formId < 1 || privateId == '') {
- return false;
- }
- var field = $('.FormFieldPrivateId[value=' + privateId + ']').parent('*:has(.FormFieldFormId[value=' + formId + '])').find('.FormField');
- if (!field.length) {
- return false;
- }
- return field[0];
- },
- 'GetFieldByLabel':
- function(formId, label)
- {
- if (isNaN(formId) || formId < 1 || label == '') {
- return false;
- }
- var formfield = false;
- $('.FormField').each(
- function()
- {
- if (FormField.GetFieldFormId(this) == formId && FormField.GetLabel(this) == label) {
- formfield = $(this);
- }
- }
- );
- return formfield;
- },
- 'GetFieldType':
- function(field)
- {
- var dd = FormField.GetFieldDefinitionData(field);
- if (!dd) {
- return '';
- }
- return $('.FormFieldType', dd).val();
- },
- 'GetFieldId':
- function(field)
- {
- var dd = FormField.GetFieldDefinitionData(field);
- if (!dd) {
- return '';
- }
- return $('.FormFieldId', dd).val();
- },
- 'GetFieldFormId':
- function(field)
- {
- var dd = FormField.GetFieldDefinitionData(field);
- if (!dd) {
- return '';
- }
- return $('.FormFieldFormId', dd).val();
- },
- 'GetSelectorChoosePrefix':
- function(field)
- {
- var dd = FormField.GetFieldDefinitionData(field);
- if (!dd) {
- return '';
- }
- if ($('.FormFieldChoosePrefix', dd).length) {
- return $('.FormFieldChoosePrefix', dd).val();
- }
- return '';
- },
- 'GetFieldPrivateId':
- function(field)
- {
- var dd = FormField.GetFieldDefinitionData(field);
- if (!dd) {
- return '';
- }
- return $('.FormFieldPrivateId', dd).val();
- },
- 'GetFieldDefinitionData':
- function(field)
- {
- // Try by definition data first
- var dd = $(field).parent('dd');
- // If nothing, fall back to the new form layout
- if (!dd.length) {
- dd = $(field).parent('div.value');
- }
- if (!dd.length) {
- return false;
- }
- return dd;
- },
- 'GetFieldDefinitionTag':
- function(field)
- {
- var dd = FormField.GetFieldDefinitionData(field);
- if (!dd) {
- return false;
- }
- var dt = dd.prev('dt');
- // Could be a new form style?
- if (!dt.length) {
- dt = dd.prev('label');
- }
- if(!dt) {
- return false;
- }
- return dt;
- },
- 'GetValue':
- function(fieldId)
- {
- var field = FormField.GetField(fieldId);
- if (!field) {
- return '';
- }
- switch (FormField.GetFieldType(field).toLowerCase()) {
- case 'radioselect':
- case 'checkboxselect':
- var options = [];
- $('.FormFieldOption:checked', field).each(function() {
- options[options.length] = $(this).val();
- });
- if (options.length == 0) {
- if (FormField.GetFieldType(field).toLowerCase() == 'radioselect') {
- return '';
- } else {
- return [];
- }
- }
- if (FormField.GetFieldType(field).toLowerCase() == 'radioselect') {
- options = options[0];
- }
- return options;
- break;
- case 'datechooser':
- var day = $('.FormFieldDay', field).val();
- var month = $('.FormFieldMonth', field).val();
- var year = $('.FormFieldYear', field).val();
- if (day == '' || month == '' || year == '') {
- return '';
- }
- if (day.length == 1) {
- day = '0' + day;
- }
- if (month.length == 1) {
- month = '0' + month;
- }
- return year + '-' + month + '-' + day;
- break;
- default:
- return $(field).val();
- break;
- }
- },
- 'GetValues':
- function(formIdx, privateOnly)
- {
- var values = [];
- if (typeof(privateOnly) == 'undefined' || privateOnly !== true) {
- privateOnly = false;
- }
- if (!isNaN(formIdx)) {
- formIdx = [formIdx];
- }
- for (var i = formIdx.length; i--;) {
- var fieldFormId = formIdx[i];
- $('.FormFieldFormId[value=' + fieldFormId + ']').parent('dd, div.value').find('.FormField').each(
- function()
- {
- if (privateOnly && FormField.GetFieldPrivateId(this) == '') {
- return;
- }
- for (var i=0; i<formIdx.length; i++) {
- values[values.length] = {
- 'field': $(this),
- 'fieldId': FormField.GetFieldId(this),
- 'formId': fieldFormId,
- 'privateId': FormField.GetFieldPrivateId(this),
- 'label': FormField.GetLabel(this),
- 'value': FormField.GetValue(this)
- };
- }
- }
- );
- }
- return values;
- },
- 'SetValue':
- function(fieldId, val, options)
- {
- var field = FormField.GetField(fieldId);
- if (!field) {
- return false;
- }
- if (typeof(options) == 'undefined') {
- options = {};
- }
- switch (FormField.GetFieldType(field).toLowerCase()) {
- case 'selectortext':
- if (typeof(options.display) == 'undefined') {
- options.display = 'select';
- }
- if (options.display != field.get(0).tagName.toLowerCase()) {
- if (options.display == 'select') {
- var input = $('<select />');
- } else {
- var input = $('<input type="text" />');
- }
- $(input).attr('name', $(field).attr('name'));
- $(input).attr('class', $(field).attr('class'));
- $(input).attr('id', $(field).attr('id'));
- $(input).attr('style', $(field).attr('style'));
- $(field).replaceWith(input);
- if (options.display !== 'select') {
- var fieldId = FormField.GetFieldId(fieldId);
- var formId = FormField.GetFieldFormId(fieldId);
- $(input).after('<input type="hidden" name="FormFieldIsText[' + formId + '][' + fieldId + ']" value="1" />');
- }
- }
- else {
- var input = field;
- }
- if (typeof(options.options) !== 'undefined') {
- FormField.SetOptions(fieldId, options.options);
- }
- $(input).val(val);
- break;
- case 'radioselect':
- case 'checkboxselect':
- if (typeof(options.options) !== 'undefined') {
- FormField.SetOptions(fieldId, options.options);
- }
- if (typeof(val) == 'string') {
- val = [val];
- } else if (FormField.GetFieldType(field).toLowerCase() == 'radioselect' && val.length > 1) {
- val.length = 1;
- }
- $('.FormFieldOption', field).each(
- function()
- {
- var checked = false;
- for (var i=0; i<val.length; i++) {
- if ($(this).attr('value') == val[i]) {
- checked = true;
- break;
- }
- }
- $(this).attr('checked', checked);
- }
- );
- break;
- case 'datechooser':
- if (val.indexOf('-') == -1) {
- return false;
- }
- var tmpDate = val.split('-');
- if (tmpDate.length !== 3) {
- return false;
- }
- var year = parseInt(tmpDate[0], 10);
- var month = parseInt(tmpDate[1], 10);
- var day = parseInt(tmpDate[2], 10);
- if (isNaN(day) || isNaN(month) || isNaN(year)) {
- return false;
- }
- $('.FormFieldYear', field).val(year);
- $('.FormFieldMonth', field).val(month);
- $('.FormFieldDay', field).val(day);
- break;
- default:
- if (FormField.GetFieldType(field).toLowerCase() == 'singleselect' && typeof(options.options) !== 'undefined') {
- FormField.SetOptions(fieldId, options.options);
- }
- $(field).val(val);
- }
- },
- 'SetValueByIndex':
- function(fieldId, indexes, checked)
- {
- var field = FormField.GetField(fieldId);
- if (!field) {
- return false;
- }
- if (FormField.GetFieldType(field).toLowerCase() !== 'checkboxselect' || FormField.GetFieldType(field).toLowerCase() == 'radioselect') {
- return true;
- }
- if (typeof(indexes) !== 'object') {
- indexes = [indexes];
- }
- if (indexes.length == 0) {
- return true;
- }
- if (typeof(checked) == 'undefined') {
- checked = true;
- }
- if (checked !== true) {
- checked = false;
- } else {
- checked = true;
- }
- var i=0;
- $('input', field).each(
- function()
- {
- for (var n=0; n<indexes.length; n++) {
- if (indexes[n] == i) {
- $(this).attr('checked', checked);
- break;
- }
- }
- i++
- }
- );
- },
- 'GetOptions':
- function(fieldId, selectedOnly)
- {
- var field = FormField.GetField(fieldId);
- if (!field) {
- return false;
- }
- if (typeof(selectedOnly) == 'undefined' || selectedOnly !== true) {
- selectedOnly = false;
- }
- switch (FormField.GetFieldType(field).toLowerCase()) {
- case 'selectortext':
- case 'singleselect':
- if($(field).get(0).tagName == 'input') {
- return [];
- }
- var options = [];
- $('option', field).each(
- function()
- {
- if ($(this).val() !== '') {
- options[options.length] = $(this).val();
- }
- }
- );
- return options;
- break;
- case 'radioselect':
- case 'checkboxselect':
- var options = [];
- $('input', field).each(
- function()
- {
- if ($(this).val() !== '') {
- options[options.length] = $(this).val();
- }
- }
- );
- return options;
- break;
- default:
- return [];
- }
- },
- 'SetOptions':
- function(fieldId, options)
- {
- var field = FormField.GetField(fieldId);
- if (!field) {
- return false;
- }
- if (typeof(options) == 'string') {
- options = [options];
- }
- switch (FormField.GetFieldType(field).toLowerCase()) {
- case 'selectortext':
- case 'singleselect':
- var chooseOption = FormField.GetSelectorChoosePrefix(field);
- $(field).empty();
- if (chooseOption !== '') {
- $(field).append('<option value="">' + chooseOption + '</option>');
- }
- for (var i=0; i<options.length; i++) {
- $(field).append('<option value="' + options[i] + '">' + options[i] + '</option>');
- }
- break;
- case 'radioselect':
- case 'checkboxselect':
- field.empty();
- var id = $(select).attr('id');
- var name = $(select).attr('name');
- if (FormField.GetFieldType(field).toLowerCase() == 'radioselect') {
- var shell = '<input type="radio" />';
- } else {
- var shell = '<input type="checkbox" />';
- }
- for (var i=0; i<options.length; i++) {
- if (i > 0) {
- $(select).append('<br />');
- }
- var label = $(select).append('<label>');
- $(label).attr('for', id + '_' + i);
- var option = $(label).append(shell);
- $(option).attr('id', id + '_' + i);
- $(option).attr('name', name + '_[' + i + ']');
- $(option).val(options[i]);
- $(label).append(' ' + options[i]);
- }
- break;
- }
- },
- 'GetLabel':
- function(field)
- {
- var dt = FormField.GetFieldDefinitionTag(field);
- if (!dt) {
- return false;
- }
- var label = $('.FormFieldLabel', dt).text();
- label = label.replace(/:/, '');
- return label;
- },
- 'IsRequired':
- function(field)
- {
- var dt = FormField.GetFieldDefinitionTag(field);
- if (!dt) {
- return false;
- }
- var span = $('.FormFieldRequired', dt);
- if ($(span).css('visibility') == 'hidden') {
- return false;
- }
- return true;
- },
- 'SetRequired':
- function(fieldId, status)
- {
- var field = FormField.GetField(fieldId);
- dt = FormField.GetFieldDefinitionTag(field);
- if (!dt) {
- return false;
- }
- var span = $('.FormFieldRequired', dt);
- if (typeof(status) == 'undefined' || status !== true) {
- status = false;
- }
- if (status) {
- $(span).css('visibility', 'visible');
- } else {
- $(span).css('visibility', 'hidden');
- }
- return true;
- },
- 'SetDisabled':
- function(field, disabled)
- {
- field = FormField.GetField(field);
- if (!field) {
- return false;
- }
- if (typeof(disabled) == 'undefined' || disabled !== true) {
- status = false;
- }
- switch (FormField.GetFieldType(field).toLowerCase()) {
- case 'radioselect':
- case 'checkboxselect':
- $('input', field).each(
- function()
- {
- $(this).attr('disabled', disabled);
- }
- );
- break;
- default:
- $(field).attr('disabled', disabled);
- break;
- }
- return true;
- },
- 'BindEvent':
- function(field, event, func, args)
- {
- field = FormField.GetField(field);
- if (!field || typeof(event) == 'undefined' || event == '' || typeof(func) !== 'function') {
- return false;
- }
- if (typeof(args) == 'undefined') {
- args = {'fieldId': FormField.GetFieldId(field)};
- }
- switch (FormField.GetFieldType(field).toLowerCase()) {
- case 'radioselect':
- case 'checkboxselect':
- $('input', field).each(
- function()
- {
- $(this).bind(event, args, func);
- }
- );
- break;
- default:
- $(field).bind(event, args, func);
- break;
- }
- return true;
- },
- 'UnBindEvent':
- function(field, event, func)
- {
- field = FormField.GetField(field);
- if (!field || typeof(event) == 'undefined' || event == '') {
- return false;
- }
- switch (FormField.GetFieldType(field).toLowerCase()) {
- case 'radioselect':
- case 'checkboxselect':
- $('input', field).each(
- function()
- {
- $(this).unbind(event, func);
- }
- );
- break;
- default:
- $(field).unbind(event, func);
- break;
- }
- return true;
- },
- 'Focus':
- function(field)
- {
- field = FormField.GetField(field);
- if (!field) {
- return;
- }
- var selected = null;
- var doSelect = true;
- switch (FormField.GetFieldType(field).toLowerCase()) {
- case 'radioselect':
- case 'checkboxselect':
- selected = $('input:first', field);
- doSelect = false;
- break;
- case 'datechooser':
- selected = $('.FormFieldMonth', field);
- break;
- default:
- selected = field;
- }
- if (selected == null) {
- return;
- }
- if (doSelect) {
- $(selected).select();
- }
- $(selected).focus();
- },
- 'Hide':
- function(field)
- {
- var dd = FormField.GetFieldDefinitionData(field);
- var dt = FormField.GetFieldDefinitionTag(field);
- if (!dd || !dt) {
- return false;
- }
- $(dd).hide();
- $(dt).hide();
- },
- 'Show':
- function(field)
- {
- var dd = FormField.GetFieldDefinitionData(field);
- var dt = FormField.GetFieldDefinitionTag(field);
- if (!dd || !dt) {
- return false;
- }
- $(dd).show();
- $(dt).show();
- },
- 'Validate':
- function(field)
- {
- field = FormField.GetField(field);
- if (!field) {
- return false;
- }
- var rtn = {'status': true, 'msg': ''};
- var val = FormField.GetValue(field);
- var type = FormField.GetFieldType(field).toLowerCase();
- if (FormField.IsRequired(field) && val == '') {
- if (type == 'selectortext' && $(field).attr('type') && $(field).attr('type').toLowerCase() == 'text') {
- // Do nothing
- } else if (type == 'password') {
- // same here
- } else if (type == 'checkboxselect' || type == 'radioselect') {
- rtn.msg = lang.CustomFieldsValidationOptionRequired;
- } else {
- rtn.msg = lang.CustomFieldsValidationRequired;
- }
- }
- if (rtn.msg == '') {
- switch (type) {
- case 'numberonly':
- if (isNaN(val)) {
- rtn.msg = lang.CustomFieldsValidationNumbersOnly;
- } else {
- var dd = FormField.GetFieldDefinitionData(field);
- var limitfrom = $('.FormFieldLimitFrom', dd);
- var limitto = $('.FormFieldLimitTo', dd);
- if ($(limitfrom).length > 0 && parseInt(val, 10) < parseInt($(limitfrom).val(), 10)) {
- rtn.msg = lang.CustomFieldsValidationNumbersToLow;
- rtn.msg = rtn.msg.replace(/%d/, $(limitfrom).val());
- } else if ($(limitto).length > 0 && parseInt(val, 10) > parseInt($(limitto).val(), 10)) {
- rtn.msg = lang.CustomFieldsValidationNumbersToHigh;
- rtn.msg = rtn.msg.replace(/%d/, $(limitto).val());
- }
- }
- break;
- case 'datechooser':
- var day = $('.FormFieldDay', field).val();
- var month = $('.FormFieldMonth', field).val();
- var year = $('.FormFieldYear', field).val();
- if (day+''+month+''+year !== '' && (day == '' || month == '' || year == '')) {
- rtn.msg = lang.CustomFieldsValidationDateInvalid;
- }
- var dd = FormField.GetFieldDefinitionData(field);
- var limitfrom = $('.FormFieldLimitFrom', dd);
- var limitto = $('.FormFieldLimitTo', dd);
- if ($(limitfrom).length == 0 || $(limitto).length == 0) {
- break;
- }
- var thisValBits = val.split('-');
- var limitFromBits = $(limitfrom).val().split('-');
- var limitToBits = $(limitto).val().split('-');
- jQuery.each(thisValBits, function(i) { thisValBits[i] = parseInt(thisValBits[i], 10); });
- jQuery.each(limitFromBits, function(i) { limitFromBits[i] = parseInt(limitFromBits[i], 10); });
- jQuery.each(limitToBits, function(i) { limitToBits[i] = parseInt(limitToBits[i], 10); });
- var thisDate = new Date(thisValBits[0], thisValBits[1]-1, thisValBits[2]);
- var limitFromDate = new Date(limitFromBits[0], limitFromBits[1]-1, limitFromBits[2]);
- var limitToDate = new Date(limitToBits[0], limitToBits[1]-1, limitToBits[2]);
- if (thisDate.getTime() < limitFromDate.getTime()) {
- rtn.msg = lang.CustomFieldsValidationDateToLow;
- rtn.msg = rtn.msg.replace(/%s\./, limitFromDate.toLocaleDateString() + '.');
- } else if (thisDate.getTime() > limitToDate.getTime()) {
- rtn.msg = lang.CustomFieldsValidationDateToHigh;
- rtn.msg = rtn.msg.replace(/%s\./, limitToDate.toLocaleDateString() + '.');
- }
- break;
- case 'password':
- if (FormField.IsRequired(field)) {
- if ($(field).attr('type') == 'text' && val == '') {
- rtn.msg = lang.CustomFieldsValidationRequired;
- } else {
- var dd = FormField.GetFieldDefinitionData(field);
- var alreadySet = $('.FormFieldAlreadySet', dd);
- if (($(alreadySet).length == 0 || $(alreadySet).val() == '') && val == '') {
- rtn.msg = lang.CustomFieldsValidationRequired;
- }
- }
- }
- break;
- }
- }
- if (rtn.msg !== '') {
- rtn.msg = rtn.msg.replace(/'%s'/, "'" + FormField.GetLabel(field) + "'");
- rtn.status = false;
- }
- return rtn;
- }
- }
- var FormFieldEvent = {
- 'SingleSelectPopulateStates':
- function(event)
- {
- var countryId = event.data.countryId;
- var countryName = FormField.GetValue(countryId);
- var stateId = event.data.stateId;
- var selectedState = '';
- var inOrdersAdmin = false;
- if (typeof(event.data.selectedState) !== 'undefined') {
- selectedState = event.data.selectedState;
- }
- if (typeof(event.data.inOrdersAdmin) !== 'undefined') {
- inOrdersAdmin = event.data.inOrdersAdmin;
- }
- if (countryName == '') {
- var options = {
- 'display': 'option'
- };
- FormField.SetValue(stateId, '', options);
- return;
- }
- $.ajax({
- 'url': 'remote.php',
- 'type': 'post',
- 'data': {
- 'w': 'getStates',
- 'countryName': countryName
- },
- 'success':
- function(data)
- {
- if ($('status', data).text() == '0') {
- return;
- }
- var states = [];
- $('options option', data).each(
- function()
- {
- states[states.length] = $('name', this).text();
- }
- );
- if (states.length == 0) {
- var options = {
- 'display': 'option'
- };
- // make the state field not required
- FormField.SetRequired(stateId, false);
- } else {
- var options = {
- 'display': 'select',
- 'options': states
- };
- // make the state field required
- FormField.SetRequired(stateId, true);
- }
- FormField.SetValue(stateId, selectedState, options);
- if (inOrdersAdmin && typeof(OrderManager) !== 'undefined') {
- var orderArgs = {
- 'data': {
- 'fieldId': stateId
- }
- };
- OrderManager.BindAddressSyncEventsCallback(orderArgs);
- }
- }
- });
- },
- 'CheckBoxShipToAddress':
- function(event)
- {
- if (typeof(event.data.fieldId) == 'undefined') {
- return;
- }
- if (FormField.GetValue(event.data.fieldId).length > 0) {
- $('.billingButton').val(lang.BillAndShipToAddress);
- $('.shippingButton').val(lang.ShipToThisAddress);
- $('#ship_to_billing_existing').attr('checked', true);
- }
- else {
- $('.billingButton').val(lang.BillToThisAddress);
- $('.shippingButton').val(lang.ShipToThisAddress);
- $('#ship_to_billing_existing').attr('checked', false);
- }
- }
- }
- $(document).ready(function() {
- $('.FormField.JSHidden').show();
- });
Advertisement
Add Comment
Please, Sign In to add comment