/************************************* * SPDX-FileCopyrightText: 2009-2020 Vtenext S.r.l. * SPDX-License-Identifier: AGPL-3.0-only ************************************/ /* crmv@65455 */ var DataImporter = { busy: false, dbports: { 'mysql' : 3306, 'mssql' : 1433, 'oci8po': 1521, }, showBusy: function() { var me = this; me.busy = true; jQuery('#dimporter_busy').show(); }, hideBusy: function() { var me = this; me.busy = false; jQuery('#dimporter_busy').hide(); }, gotoList: function() { var me = this; if (me.busy) return; me.showBusy(); location.href = 'index.php?module=Settings&action=DataImporter&parentTab=Settings'; }, createNew: function() { if (this.busy) return; this.showBusy(); location.href = 'index.php?module=Settings&action=DataImporter&parentTab=Settings&mode=create&data_importer_step=1'; }, editImport: function(importid) { if (this.busy) return; this.showBusy(); location.href = 'index.php?module=Settings&action=DataImporter&parentTab=Settings&mode=edit&data_importer_step=1&importid='+importid; }, deleteImport: function(importid) { var me = this; if (me.busy) return; if (confirm(alert_arr.SURE_TO_DELETE)) { me.ajaxCall('delete_import', {importid:importid}, function(data) { me.gotoList(); }); } }, enableImport: function(importid) { var me = this; if (me.busy) return; me.ajaxCall('enable_import', {importid:importid}, function(data) { me.gotoList(); }); }, disableImport: function(importid) { var me = this; if (me.busy) return; me.ajaxCall('disable_import', {importid:importid}, function(data) { me.gotoList(); }); }, gotoStep: function(step) { // set the inputs jQuery('#data_importer_step').val(step); // get the form var form = document.getElementById('data_importer_form'); // crmv@111926 if (form) { // count the number of vars and populate the counter field var varcount = jQuery(form).find(':input').length; jQuery('#form_var_count').val(varcount); // submit the form form.submit(); } // crmv@111926e }, getCurrentStep: function() { var step = parseInt(jQuery('#data_importer_prev_step').val()); return step; }, gotoNextStep: function() { var me = this, step = me.getCurrentStep(), nstep = step+1; if (!me.validateStep(step)) return false; me.hideError(); me.gotoStep(nstep); }, gotoPrevStep: function() { var me = this, step = me.getCurrentStep(), pstep = step-1; //if (!me.validateStep(step)) return false; me.hideError(); me.gotoStep(pstep); }, hideNavigationButtons: function() { jQuery('#dimport_div_navigation').hide(); }, showNavigationButtons: function() { jQuery('#dimport_div_navigation').show(); }, ajaxCall: function(action, params, callback, options) { var me = this; // return if busy if (me.busy) return; options = options || { includeForm: false, jsonData: true, callbackOnError: false, //hidePopupMessage: true, }; params = params || {}; var url = "index.php?module=Settings&action=SettingsAjax&file=DataImporter&ajax=1&subaction="+action; if (options.includeForm) { var form = jQuery('#data_importer_form').serialize(); params = jQuery.param(params) + '&' + form; } me.showBusy(); jQuery.ajax({ url: url, type: 'POST', async: true, data: params, success: function(data) { me.hideBusy(); //if (options.hidePopupMessage) me.hidePopupMessage(); if (options.jsonData) { // data should be json with a success property try { data = JSON.parse(data); } catch (e) { data = null; } if (data && data.success) { if (typeof callback == 'function') callback(data); } else if (data && data.error) { alert(data.error); } else { console.log('Unknown error'); console.log(data); } } else { if (typeof callback == 'function') callback(data); } }, error: function() { me.hideBusy(); //if (options.hidePopupMessage) me.hidePopupMessage(); if (options.callbackOnError) { if (typeof callback == 'function') callback(); } } }); }, initEditor: function(value, mode) { var me = this; if (!mode) mode = 'sql'; var ta = document.getElementById('dimport_dbquery'); if (ta) { // then transform me.codeMirror = CodeMirror.fromTextArea(ta, { theme: 'eclipse', lineWrapping: false, indentUnit: 4, tabSize: 4, indentWithTabs: true, }); me.setEditorText(value || '', mode); } else { console.log('Textarea not found'); } }, getEditorText: function() { var me = this, text; if (me.codeMirror) { text = me.codeMirror.getDoc().getValue(); } else { // fallback on standard textarea text = jQuery('#dimport_dbquery').val(); } return text; }, setEditorText: function(text, mode) { var me = this; if (!mode) mode = 'sql'; if (me.codeMirror) { me.codeMirror.getDoc().setValue(''); me.codeMirror.setOption('mode', mode); me.codeMirror.getDoc().setValue(text); } else { // fallback on standard textarea jQuery('#dimport_dbquery').val(text); } }, openFileChooser: function() { var me = this; me.showFloatingDiv('dimport_div_filechooser'); jQuery('#fileChooserTree').fileTree({ //root: 'dataimport/', script: 'include/js/jquery_plugins/fileTree/connectors/jqueryFileTree.php' }, function(file) { if (file && file.indexOf('/') == 0) file = file.substr(1); jQuery('#dimport_csvpath').val(file); me.hideFloatingDiv('dimport_div_filechooser') }); }, validateStep: function(step) { var me = this, fname = 'validateStep'+step; if (typeof me[fname] == 'function') { return me[fname](); } return true; }, saveImport: function() { var me = this; jQuery('#data_importer_savedata').val('1'); jQuery('#skip_vte_header').val('true'); me.gotoNextStep(); }, displayError: function(text) { var me = this; var div = jQuery('#dimport_error_box'); var oldbg = div.css('background-color') || '#ffffff'; // set the text and show it div.text(text).show(); // don't animate if already doing it if (me.displayErrorAnimation) return false; // animate the background me.displayErrorAnimation = true; div.css({ 'background-color': '#ff7070', }); jQuery('#mmaker_error_box').animate({ 'background-color': oldbg, }, { duration: 600, complete: function() { me.displayErrorAnimation = false; } }); return false; }, hideError: function() { jQuery('#dimport_error_box').hide().text(''); }, openLogsPopup: function(importid) { var me = this; jQuery('#dimport_logs_moduleid').val(importid); me.showFloatingDiv('dimport_div_logs'); me.ajaxCall('getlog', {importid: importid}, function(data) { if (data && data.log) { jQuery('#dimport_log_text').val(data.log); } else { jQuery('#dimport_log_text').val(''); } }); }, runNow: function(importid) { var me = this; me.ajaxCall('run', {importid: importid}, function(data) { alert(alert_arr.LBL_DATA_IMPORT_SCHEDULED_NOW); me.gotoList(); }); }, abortImport: function(importid) { var me = this; me.ajaxCall('abort', {importid: importid}, function(data) { alert(alert_arr.LBL_DATA_IMPORT_ABORTED); me.gotoList(); }); }, validateStep1: function() { var me = this; var module = jQuery('#dimport_module').val(); if (!module) { alert(alert_arr.LBL_PLEASE_SELECT_MODULE); return false; } if (module == 'ProductRows') { var invmodule = jQuery('#dimport_invmodule').val(); if (!invmodule) { alert(alert_arr.LBL_PLEASE_SELECT_MODULE); return false; } } return true; }, step1_onModuleSelect: function() { var me = this; var mod = jQuery('#dimport_module').val(); var invmodRow = jQuery('#dimport_cell_invmodule'); if (mod == 'ProductRows') { invmodRow.show(); } else { invmodRow.hide(); } }, validateStep2: function() { var me = this; var type = jQuery('#dimport_sourcetype_db:checked').val() || jQuery('#dimport_sourcetype_csv:checked').val(); if (!type) { alert(alert_arr.LBL_PLEASE_SELECT_VALUE); return false; } return true; }, validateStep3: function() { var me = this; var srcType = jQuery('#sourcetype').val(); if (srcType == 'database') { return me.validateStep3_database(); } else if (srcType == 'csv') { return me.validateStep3_csv(); } return true; }, validateStep3_database: function() { var me = this; var dbtype = jQuery('#dimport_dbtype').val(); var dbhost = jQuery('#dimport_dbhost').val().trim(); var dbport = jQuery('#dimport_dbport').val().trim(); var dbuser = jQuery('#dimport_dbuser').val(); var dbpass = jQuery('#dimport_dbpass').val(); var dbname = jQuery('#dimport_dbname').val(); if (!dbtype || !dbhost || !dbuser || dbport == '' || !dbname) { alert(alert_arr.LBL_FILL_ALL_FIELDS); return false; } var validHostnameRegex = /^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-\\]*[A-Za-z0-9])$/; // crmv@77830 var validIpAddressRegex = /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/; // remove ssl from host name dbhost = dbhost.replace(/^ssl:\/\//, ''); // crmv@193619 if (!dbhost.match(validHostnameRegex) && !dbhost.match(validIpAddressRegex)) { var label = jQuery('#dimport_dbhost').closest('tr').find('td span').text(); alert(alert_arr.LBL_FIELD_IS_INVALID.replace('%s', label)); return false; } if (dbport.match(/[^0-9]/)) { var label = jQuery('#dimport_dbport').closest('tr').find('td span').text(); alert(alert_arr.LBL_FIELD_IS_NUMERIC.replace('%s', label)); return false; } return true; }, validateStep3_csv: function() { var me = this; var path = jQuery('#dimport_csvpath').val().trim(); if (!path) { alert(alert_arr.LBL_FILL_ALL_FIELDS); return false; } if (path[0] == '/' || path.match(/[a-z]:\\/i)) { alert(alert_arr.LBL_CSVPATH_MUST_NOT_BE_ABSOLUTE); return false; } return true; }, step3_changedbType: function() { var me = this; var dbtype = jQuery('#dimport_dbtype').val(); var port = parseInt(jQuery('#dimport_dbport').val()) || 0; if (dbtype) { jQuery('#dimport_dbport').val(me.dbports[dbtype]); } }, validateStep4: function() { var me = this; var tab = jQuery('#dimport_dbtable').val(); var q = me.getEditorText(); if (q) q = q.trim(); if (!tab && !q) { alert(alert_arr.LBL_FILL_ALL_FIELDS); return false; } if (q && tab) { alert(alert_arr.LBL_SELECT_TABLE_OR_QUERY); return false; } return true; }, validateStep5: function() { var me = this; var module = DataImporterVars['module']; // get mandatory list var mandatoryFields = []; for (fname in DataImporterVars['fields']) { if (DataImporterVars['fields'][fname]['mandatory']) mandatoryFields.push(fname); } // check if not all mandatory fields are mapped var mappedFields = []; var importFields = []; var defFields = []; var exit = false; var table = jQuery('#dimport_table_mapping'); table.find('select').each(function(index, el) { if (el && el.id.match(/^dimport_map_(.*)_field$/)) { var val = jQuery(el).val(); if (val) { if (importFields.indexOf(val) != -1) { // same field twice! alert(alert_arr.LBL_FILTER_FIELD_MORE_THAN_ONCE); exit = true; return false; } mappedFields.push(val); importFields.push(val); } } }); if (exit) return false; // add also the defaults in creation exit = false; var deftable = jQuery('#dimport_table_dfield_c'); deftable.find('select').each(function(index, el) { if (el && el.id.match(/^dimport_dfield_c_(.*)_field$/)) { var val = jQuery(el).val(); if (val) { if (defFields.indexOf(val) != -1) { // same field twice! alert(alert_arr.LBL_FILTER_FIELD_MORE_THAN_ONCE); exit = true; return false; } // a mapped field can't appear in default fields if (importFields.indexOf(val) != -1) { // same field twice! alert(alert_arr.LBL_CANT_USE_DEFAULT_MAPPED_FIELD); exit = true; return false; } mappedFields.push(val); defFields.push(val); } } }); if (exit) return false; // some check for the defaults exit = false; var deftable = jQuery('#dimport_table_dfield_u'); deftable.find('select').each(function(index, el) { if (el && el.id.match(/^dimport_dfield_u_(.*)_field$/)) { var val = jQuery(el).val(); if (val) { if (defFields.indexOf(val) != -1) { // same field twice! alert(alert_arr.LBL_FILTER_FIELD_MORE_THAN_ONCE); exit = true; return false; } if (importFields.indexOf(val) != -1) { // same field twice! alert(alert_arr.LBL_CANT_USE_DEFAULT_MAPPED_FIELD); exit = true; return false; } // this is commented on purpouse //mappedFields.push(val); defFields.push(val); } } }); if (exit) return false; // now check for (var i=0; i 0) { // old js var tmp = [], len = arr.length; for (var i = 0; i < len; ++i) arr[i] && tmp.push(arr[i]); arr = tmp; } return arr || []; }, //crmv@90287 alignSelfReference: function(col) { var me = this; var module = DataImporterVars['module']; var fieldName = jQuery('#dimport_map_'+col+'_field').val(); var finfo = DataImporterVars['fields'][fieldName]; var select = jQuery('#dimport_map_'+col+'_reference'); var keylabel = jQuery('#dimport_map_'+col+'_reference_keylabel'); if (fieldName && finfo && (finfo.uitype == 10 || finfo.type == 'reference')) { var action = false; var showlabel = false; // if it's related to itself (eg. member of field), add the key field if (finfo.references && finfo.references.length > 0 && finfo.references.indexOf(module) >= 0) { // check if we already have a key field var keyfield = me.getKeyField(); if (keyfield) { action = 'add'; } else { action = 'remove'; showlabel = true; } } else { action = 'remove'; } // first remove all select.find('option[value^='+module+']').remove(); // then add if (action == 'add') { var flabel = me.getFieldLabel(keyfield), mlabel = DataImporterVars['modulelabel'], okey = module+':'+keyfield; if (select.find('option[value='+okey+']').length == 0) { select.append(jQuery('"; }); jQuery('#dimport_map_'+col+'_srcformatlist').html(opts); } } // set the specified format and value setformat = setformat || ""; value = value || ""; listvalue = listvalue || ""; if (setformat && enabledOpts.indexOf(setformat) >= 0) { // something selected var format = DataImporterVars['formats'][setformat]; jQuery('#dimport_map_'+col+'_srcformatval')[format.hasvalue ? 'show' : 'hide'](); jQuery('#dimport_map_'+col+'_srcformatlist')[format.hasvalues ? 'show' : 'hide'](); } else { // nothing selected setformat = ""; value = ""; listvalue = ""; jQuery('#dimport_map_'+col+'_srcformatval').hide(); jQuery('#dimport_map_'+col+'_srcformatlist').hide(); } select.val(setformat); select[(setformat || enabledOpts.length > 0) ? 'show' : 'hide'](); jQuery('#dimport_map_'+col+'_srcformatval').val(value); jQuery('#dimport_map_'+col+'_srcformatlist').val(listvalue); } else { // remove all select.hide(); select.val(''); jQuery('option', select).hide(); jQuery('#dimport_map_'+col+'_srcformatval').hide(); jQuery('#dimport_map_'+col+'_srcformatlist').hide(); } }, // crmv@117880e alignFormula: function(col, setformula, value) { var me = this; var fieldName = jQuery('#dimport_map_'+col+'_field').val(); var finfo = DataImporterVars['fields'][fieldName]; var format = jQuery('#dimport_map_'+col+'_srcformat').val(); var select = jQuery('#dimport_map_'+col+'_formula'); if (fieldName && finfo) { var enabledOpts = []; // select the valid options for (formula in DataImporterVars['formulas']) { var forTypes = DataImporterVars['formulas'][formula].fortypes; var forUitypes = DataImporterVars['formulas'][formula].foruitypes; var forFormats = DataImporterVars['formulas'][formula].forformats || []; var hasValue = DataImporterVars['formulas'][formula].hasvalue; if (typeof forTypes == 'string') forTypes = [forTypes]; if (typeof forUitypes == 'string') forUitypes = [forUitypes]; if (typeof forFormats == 'string') forFormats = [forFormats]; forTypes = me.arrayFilter(forTypes); forUitypes = me.arrayFilter(forUitypes); forFormats = me.arrayFilter(forFormats); if (forTypes.length > 0 || forUitypes.length > 0 || forFormats.length > 0) { // filter by [ui]type if (forTypes.indexOf(finfo.type) >= 0 || forUitypes.indexOf(finfo.uitype) >= 0 || forFormats.indexOf(format) >= 0) { // show it jQuery('option[value='+formula+']', select).show(); jQuery('#dimport_map_'+col+'_formulaval')[hasValue ? 'show' : 'hide'](); enabledOpts.push(formula); } else { // hide it jQuery('option[value='+formula+']', select).hide(); jQuery('#dimport_map_'+col+'_formulaval').hide(); } } else { // always visible jQuery('option[value='+formula+']', select).show(); jQuery('#dimport_map_'+col+'_formulaval')[hasValue ? 'show' : 'hide'](); enabledOpts.push(formula); } } // set the specified formula and value setformula = setformula || ""; value = value || ""; if (setformula && enabledOpts.indexOf(setformula) >= 0) { // something selected var format = DataImporterVars['formulas'][setformula]; jQuery('#dimport_map_'+col+'_formulaval')[format.hasvalue ? 'show' : 'hide'](); } else { // nothing selected setformula = ""; value = ""; jQuery('#dimport_map_'+col+'_formulaval').hide(); } select.val(setformula); select[(setformula || enabledOpts.length > 0) ? 'show' : 'hide'](); jQuery('#dimport_map_'+col+'_formulaval').val(value); //crmv@93655 if(finfo.uitype == 117 && finfo.type == 'integer'){ // remove all select.hide(); select.val(''); jQuery('option', select).hide(); jQuery('#dimport_map_'+col+'_formulaval').hide(); } //crmv@93655e } else { // remove all select.hide(); select.val(''); jQuery('option', select).hide(); jQuery('#dimport_map_'+col+'_formulaval').hide(); } }, onSelectFormat: function(col) { var me = this; var fieldName = jQuery('#dimport_map_'+col+'_field').val(); var finfo = DataImporterVars['fields'][fieldName]; var select = jQuery('#dimport_map_'+col+'_srcformat'); var format = select.val(), foinfo = DataImporterVars['formats'][format]; jQuery('#dimport_map_'+col+'_srcformatval').val(''); if (format && foinfo) { if (foinfo.hasvalue) { jQuery('#dimport_map_'+col+'_srcformatval').show(); if (foinfo.value) { jQuery('#dimport_map_'+col+'_srcformatval').val(foinfo.value); } } // crmv@117880 if (foinfo.hasvalues) { jQuery('#dimport_map_'+col+'_srcformatlist').show(); if (foinfo.values) { var opts = ''; jQuery.each(foinfo.values, function(value, label) { opts += ""; }); jQuery('#dimport_map_'+col+'_srcformatlist').html(opts); } } // crmv@117880e } else { jQuery('#dimport_map_'+col+'_srcformatval').hide(); jQuery('#dimport_map_'+col+'_srcformatlist').hide(); // crmv@117880e } // and align the formula as well me.alignFormula(col); }, onSelectFormula: function(col) { var me = this; var fieldName = jQuery('#dimport_map_'+col+'_field').val(); var finfo = DataImporterVars['fields'][fieldName]; var select = jQuery('#dimport_map_'+col+'_formula'); var formula = select.val(), foinfo = DataImporterVars['formulas'][formula]; jQuery('#dimport_map_'+col+'_formulaval').val(''); if (formula && foinfo) { if (foinfo.hasvalue) { jQuery('#dimport_map_'+col+'_formulaval').show(); if (foinfo.value) { jQuery('#dimport_map_'+col+'_formulaval').val(foinfo.value); } } } else { jQuery('#dimport_map_'+col+'_formulaval').hide(); } }, alignKey: function(col, checked) { var me = this; var checkbox = jQuery('#dimport_map_'+col+'_keycol'); var fieldName = jQuery('#dimport_map_'+col+'_field').val(); if (fieldName) { // crmv@203591 var wstype = DataImporterVars.fields[fieldName].type; if (wstype == 'table' || fieldName.match(/^prodattr_/)) { checkbox.prop('checked', false); checkbox.attr('disabled', true); } else { // ok, enable it and set the value checkbox.attr('disabled', false); checkbox.prop('checked', !!checked); } // crmv@203591e me.alignAllSelfReference(); // crmv@90287 } else { // disable it, remove the value checkbox.prop('checked', false); checkbox.attr('disabled', true); } }, onKeyFieldCheck: function(col) { var me = this; var checkbox = jQuery('#dimport_map_'+col+'_keycol'); var checked = checkbox.is(':checked'); // remove checked from other checkboxes if (checked) { jQuery('.dimport_map_keycol').each(function(index, el) { if (el.id != 'dimport_map_'+col+'_keycol') { el.checked = false; } }); jQuery('#dimport_mapping_keycol').val(col); } else { jQuery('#dimport_mapping_keycol').val(''); } me.alignAllSelfReference(); // crmv@90287 return true; }, // crmv@90287 getKeyField: function() { var me = this, field = null; var checkbox = jQuery('input[type=checkbox][id$=_keycol]:checked'); if (checkbox.length > 0) { var id = checkbox.attr('id'); var col = id.replace('dimport_map_', '').replace('_keycol', ''); field = jQuery('#dimport_map_'+col+'_field').val(); } return field; }, getFieldLabel: function(fieldname) { var me = this, label = fieldname; if (DataImporterVars && DataImporterVars['fields']) { for (fname in DataImporterVars['fields']) { if (!DataImporterVars['fields'].hasOwnProperty(fname)) continue; if (fname == fieldname) { label = DataImporterVars['fields'][fname].label; break; } } } return label; }, // crmv@90287e addDefaultField: function(type) { var me = this; DataImporter.ajaxCall('add_default_field', {type:type}, function(data) { jQuery('#dimport_div_deffields').html(data); }, { includeForm: true, jsonData: false, callbackOnError: false, }); }, removeDefaultField: function(type, fieldno) { var me = this; DataImporter.ajaxCall('del_default_field', {type:type, fieldno:fieldno}, function(data) { jQuery('#dimport_div_deffields').html(data); }, { includeForm: true, jsonData: false, callbackOnError: false, }); }, } var DataImporterSched = { onEveryKey: function() { var me = this; var val = jQuery('#dimport_sched_every').val(); if (val == '1') { // singular jQuery('#dimport_sched_every_day').text(DataImporterVars['sched']['labels']['day']); jQuery('#dimport_sched_every_hour').text(DataImporterVars['sched']['labels']['hour']); jQuery('#dimport_sched_every_minute').text(DataImporterVars['sched']['labels']['minute']); } else { // plural jQuery('#dimport_sched_every_day').text(DataImporterVars['sched']['labels']['days']); jQuery('#dimport_sched_every_hour').text(DataImporterVars['sched']['labels']['hours']); jQuery('#dimport_sched_every_minute').text(DataImporterVars['sched']['labels']['minutes']); } }, onIntervalChange: function() { var me = this; var val = jQuery('#dimport_sched_everywhat').val(); if (val == 'minute') { // hide next box jQuery('#dimport_cell_atlabel').hide(); jQuery('#dimport_cell_at').hide(); jQuery('#dimport_sched_at').val(''); } else { // show box var txt = DataImporterVars['sched']['labels'][val == 'day' ? 'at_hour' : 'at_minute']; jQuery('#dimport_sched_atlabel').text(txt); jQuery('#dimport_sched_at').val(DataImporterVars['sched'][val == 'day' ? 'default_hour' : 'default_minute']); jQuery('#dimport_cell_atlabel').show(); jQuery('#dimport_cell_at').show(); } }, validateHour: function(str) { if (!str.match(/^[0-9][0-9]:[0-9][0-9]$/)) return false; var split = str.split(':'); var h = parseInt(split[0]); var m = parseInt(split[1]); if (h < 0 || h > 23) return false; if (m < 0 || m > 59) return false; return true; }, validate: function() { var me = this, every = parseInt(jQuery('#dimport_sched_every').val()) || 0, everywhat = jQuery('#dimport_sched_everywhat').val(), everyat = jQuery('#dimport_sched_at').val(); // check emptyness if (!every || !everywhat) { alert(alert_arr.LBL_FILL_ALL_FIELDS); return false; } if (everywhat != 'minute' && !everyat) { alert(alert_arr.LBL_FILL_ALL_FIELDS); return false; } // check ranges if (everywhat == 'day') { if (every < 1) { alert(alert_arr.LBL_VALUE_TOO_SMALL+': '+every); return false;} if (every > 30) { alert(alert_arr.LBL_VALUE_TOO_BIG+': '+every); return false;} if (!me.validateHour(everyat)) { alert(alert_arr.LBL_INVALID_VALUE+': '+everyat); return false;} } else if (everywhat == 'hour') { everyat = parseInt(everyat); if (every < 1) { alert(alert_arr.LBL_VALUE_TOO_SMALL+': '+every); return false;} if (every > 48) { alert(alert_arr.LBL_VALUE_TOO_BIG+': '+every); return false;} if (everyat < 0 || everyat > 59) { alert(alert_arr.LBL_INVALID_VALUE+': '+everyat); return false;} } else if (everywhat == 'minute') { if (every < 1) { alert(alert_arr.LBL_VALUE_TOO_SMALL+': '+every); return false;} if (every > 120) { alert(alert_arr.LBL_VALUE_TOO_BIG+': '+every); return false;} } return true; } }