function validate_communication(form) { if(form.massive_meter.value==0) { if(!validate_ip(form.host.value)) return false; if(!validate_number('Puerto TCP', form.port.value)) return false; if(!validate_number('Direcci\u00f3n SMC X-Bus', form.address.value)) return false; } return true; } function validate_parametrization(form) { var caption="Tolerancia de demanda activa m\u00e1xima"; if(!validate_number(caption, form.max_active_demand_tolerance.value)) return false; var caption="Tolerancia de demanda reactiva m\u00e1xima"; if(!validate_number(caption, form.max_reactive_demand_tolerance.value)) return false; var caption="Tolerancia de consumo de energ\u00eda"; if(!validate_number(caption, form.consumption_tolerance.value)) return false; var caption="Tensi\u00f3n"; if(!validate_number(caption, form.primary_voltage.value) || !validate_number(caption, form.nominal_voltage.value)) return false; var caption="Corriente"; if(!validate_number(caption, form.primary_current.value) || !validate_number(caption, form.nominal_current.value)) return false; var caption="Potencia"; if(!validate_decimal(caption, form.power_limit_a.value) || !validate_decimal(caption, form.power_limit_b.value)) return false; var caption="Tolerancia de tensi\u00f3n"; if(!validate_number(caption, form.voltage_tolerance.value)) return false; var caption="Tolerancia de corriente"; if(!validate_number(caption, form.current_tolerance.value)) return false; var caption="M\u00ednimo factor de potencia"; if(!validate_decimal(caption, form.min_power_factor.value)) return false; var caption="Notificaci\u00f3n de potencia"; if(!validate_decimal(caption, form.power_limit_notification.value)) return false; return true; } function validate_meter(form) { target=document.getElementById("editmeter_serialnumber_textbox"); if(target.disabled==false) if(!validate_string("Nº de serie", form.serial_number.value)) return false; target1=document.getElementById("editmeter_meterid_textbox"); if(target1.disabled==false) if(!validate_string("Medidor", form.meter_id.value)) return false; target2=document.getElementById("editmeter_serviceid_textbox"); if(target2.disabled==false) if(!validate_string("Suministro", form.service_id.value)) return false; if(!validate_string("Cabecera", form.header_id.value)) return false; if(!validate_string("Designación", form.location.value)) return false; if(!validate_coordinate("Latitud", form.latitude.value)) return false; if(!validate_coordinate("Longitud", form.longitude.value)) return false; return true; } function validate_concentrator(form) { target=document.getElementById("editmeter_serialnumber_textbox"); if(target.disabled==false) if(!validate_string("Nº de serie", form.serial_number.value)) return false; if(!validate_string("Designación", form.location.value)) return false; if(!validate_coordinate("Latitud", form.latitude.value)) return false; if(!validate_coordinate("Longitud", form.longitude.value)) return false; return true; } function validate_config(form) { var en=form.nominal_freq; var em=form.max_rtc_drift; if(!validate_number("Frecuencia", en.value)) return false; if(!validate_number("Desajuste", em.value)) return false; var n=parseInt(en.value); var m=parseInt(em.value); if(n<1||n>255||!n) { alert('Frecuencia incorrecta'); en.focus(); return false; } else { en.value=n; if(m<1||m>255||!m) { alert('Desajuste incorrecto'); em.focus(); return false; } else { em.value=m; } } return true; } function validate_user(form, validate_pass, validate_empty_pass) { if(!validate_string("Nombre", form.name.value)) return false; if(!validate_string("Apellido", form.lastname.value)) return false; if(!validate_empty("Usuario", form.username.value)) return false; if(validate_empty_pass) { if(!validate_empty("Contraseña", form.password.value)) return false; } if(form.email.value!='') if(!validate_email(form.email.value)) return false; if(form.phone.value!='') if(!validate_phone("Tel\u00e9fono",form.phone.value)) return false; if(form.mobile_phone.value!='') if(!validate_mobile_phone("Tel\u00e9fono m\u00f3vil",form.mobile_phone.value)) return false; if(!validate_string("Usuario", form.username.value)) return false; if(validate_pass) { if(!validate_password(form.password.value, form.password2.value)) return false; } return true; } function validate_role(form) { if(!validate_empty("Rol", form.rol_name.value)) return false; return true; } function validate_company(form) { if(!validate_empty("Nombre", form.name.value)) return false; if(!validate_string("Nombre", form.name.value)) return false; if(form.email.value!='') if(!validate_email(form.email.value)) return false; if(!validate_string("Tel\u00e9fono de contacto", form.phone.value)) return false; if(!validate_string("Contacto", form.contact.value)) return false; if(form.password.value!='' || form.password2.value!='') if(!validate_password(form.password.value, form.password2.value)) return false; return true; } function validate_password(pass1, pass2) { if(pass1!=pass2) { alert("Las contraseñas no coinciden"); return false; } return true; } function validate_new_billing(form) { if(!validate_string("Descripci\u00f3n", form.description.value)) return false; return true; } function validate_new_fiscalization(form) { return true; } function validate_tariff(form) { if(!validate_empty("Descripción", form.description.value)) return false; return true; } function validate_edit_tariff(form) { if(!validate_empty("Nombre", form.description.value)) return false; return true; } function validate_holiday(form) { if(!validate_empty("Descripción", form.description.value)) return false; return true; } function validate_edit_holiday(form) { if(!validate_empty("Descripción", form.description.value)) return false; if(!validate_date("", form.holiday_date_year.value, form.holiday_date_month.value, form.holiday_date_day.value)) return false; return true; } function validate_edit_band(form) { if(!validate_empty("Nombre", form.description.value)) return false; var selects=form.getElementsByTagName('select'); var days=form.getElementsByClassName('dayband'); if(selects.length>=2) { for(i=0;i=parseInt(selects[i+1].value)) { alert("Inicio debe ser menor a fin"); return false; } } for(i=0;i255||num<0||num.length==0||isNaN(num)) { alert('Direcci\u00f3n ip no v\u00e1lida'); return false; } } } return true; } function validate_empty(caption, expression) { if(!isNotEmpty(expression)) { alert("El campo \""+caption+"\" no puede quedar en blanco"); return false; } return true; } function validate_number(caption, expression) { if(!isNumeric(expression)) { alert("El campo \""+caption+"\" solo permite n\u00fameros enteros positivos"); return false; } return true; } function validate_decimal(caption, expression) { if(!isDecimal(expression)) { alert("El campo \""+caption+"\" solo permite n\u00fameros decimales positivos"); return false; } return true; } function validate_string(caption, expression) { if(isAlphaNumeric(expression)) { alert("El campo \""+caption+"\" solo permite letras, n\u00fameros, espacios, puntos, guiones y guines bajos"); return false; } return true; } function validate_date(caption, year, month, day) { if(!isValidDate(year, month, day)) { if(caption=="") alert("La fecha es inválida"); else alert("La fecha \""+caption+"\" es inválida"); return false; } return true; } function validate_email(expression) { if(expression!='') { if(isEmail(expression)) { alert("La direcci\u00f3n de e-mail no es v\u00e1lida"); return false; } } return true; } function validate_mobile_phone(caption, expression) { if(expression!='') { if(isMobilePhone(expression)) { alert("El campo \""+caption+"\" solo permite n\u00fameros y el signo +"); return false; } } return true; } function validate_phone(caption, expression) { if(expression!='') { if(isPhone(expression)) { alert("El campo \""+caption+"\" solo permite n\u00fameros, espacios y los signo + y -"); return false; } } return true; } function validate_coordinate(caption, value) { if(value!='') { if(!(value>-180 && value<180)) { alert("El campo \""+caption+"\" solo permite n\u00fameros entre -90 y 90"); return false; } } return true; } function isPhone(expression) { return (String(expression).search(/[^0-9+\- ]/) != -1); } function isMobilePhone(expression) { return (String(expression).search(/[^0-9+]/) != -1); } function isEmail(expression) { return !(String(expression).search(/(^[0-9a-zA-Z]+(?:[._][0-9a-zA-Z]+)*)@([0-9a-zA-Z]+(?:[._-][0-9a-zA-Z]+)*\.[0-9a-zA-Z]{2,3})$/) != -1); } function isNumeric(expression) { return (String(expression).search(/^\d+$/) != -1); } function isDecimal(expression) { var ret=false; ret=(String(expression).search(/^\d+(\.\d+)?$/) != -1); ret|=(String(expression).search(/^\d+(\,\d+)?$/) != -1); return ret; } function isAlphaNumeric(expression) { return (String(expression).search(/[^A-Za-z0-9+._\-\s/\/áéíóúÁÉÍÓÚñÑ\"\\]/) != -1); } function isNotEmpty(expression) { if(expression=='') return false; return true } function isValidDate(year, month, day) { var monthLength=new Array(31,28,31,30,31,30,31,31,30,31,30,31); if(!day||!month||!year) return false; if(year/4==parseInt(year/4)) monthLength[1]=29; if(month<1||month>12) return false; if(day>monthLength[month-1]) return false; return true; } function number_format(number, decimals, dec_point, thousands_sep) { var n = number, prec = decimals; var toFixedFix = function (n,prec) { var k = Math.pow(10,prec); return (Math.round(n*k)/k).toString(); }; n = !isFinite(+n) ? 0 : +n; prec = !isFinite(+prec) ? 0 : Math.abs(prec); var sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep; var dec = (typeof dec_point === 'undefined') ? '.' : dec_point; var s = (prec > 0) ? toFixedFix(n, prec) : toFixedFix(Math.round(n), prec); //fix for IE parseFloat(0.55).toFixed(0) = 0; var abs = toFixedFix(Math.abs(n), prec); var _, i; if (abs >= 1000) { _ = abs.split(/\D/); i = _[0].length % 3 || 3; _[0] = s.slice(0,i + (n < 0)) + _[0].slice(i).replace(/(\d{3})/g, sep+'$1'); s = _.join(dec); } else { s = s.replace('.', dec); } var decPos = s.indexOf(dec); if (prec >= 1 && decPos !== -1 && (s.length-decPos-1) < prec) { s += new Array(prec-(s.length-decPos-1)).join(0)+'0'; } else if (prec >= 1 && decPos === -1) { s += dec+new Array(prec).join(0)+'0'; } return s; }