Files
gateway-mnp-dbc/dbcmnpsrc/FE/mnpdev/mnp/web/jsp/util.js
2024-05-13 12:54:14 +02:00

738 lines
20 KiB
JavaScript

function setDefaultPointer() {
document.body.style.cursor="default";
var buttons = document.getElementsByTagName("INPUT");
for(i=0;i<buttons.length;i++)
buttons[i].style.cursor = "default";
}
function setWaitPointer() {
document.body.style.cursor="wait";
var buttons = document.getElementsByTagName("BUTTON");
for(i=0;i<buttons.length;i++) {
//alert("name=" + buttons[i].name);
buttons[i].style.cursor = "wait";
}
}
function setCursorStyle(cursorStyleName) {
document.body.style.cursor=cursorStyleName;
var buttons = document.getElementsByTagName("INPUT");
for(i=0;i<buttons.length;i++)
buttons[i].style.cursor = cursorStyleName;
}
function showProps(obj, obj_name) {
var result = "";
for (var i in obj)
result += obj_name + "." + i + " = " + obj[i] + "<BR>";
return result
}
function UnformatNumber(n) {
nn = n.replace(/\./g,"");
nn = nn.replace(/\,/g,".");
return nn;
}
function checkField(f){
// f deve essere un element HTML (input o altro)
// non sono tutti necessariamente implementati
var ok = 0;
if (f.getAttribute("notCheck") == 1)
return ok;
var label = f.getAttribute("label");
var dataFormat = f.getAttribute("dataFormat");
var notNull = f.getAttribute("notNull");
// INPUT
if (f.type == "text" || f.type == "hidden" || f.type == "file") {
if (f.value.length == 0){
if (notNull == 1)
return "Il campo " + label + " deve essere valorizzato";
else
return ok;
}
if (f.value.length > f.maxLength && f.maxLength != -1)
return "Il campo " + label + " deve avere una lunghezza massima di " + f.maxLength + " caratteri";
if (f.getAttribute("minLength") && f.value.length < parseFloat(f.getAttribute("minLength")))
return "Il campo " + label + " deve avere una lunghezza minima di " + f.getAttribute("minLength") + " caratteri";
switch (f.getAttribute("dataType")) {
case "String":
break;
case "Number": //numero anche con decimali
if (isNaN(UnformatNumber(f.value)))
return -10;
break;
case "Integer":
break;
case "Date":
if (dataFormat){
if (isDate(f.value,dataFormat))
return ok;
else
return "Il campo " + label + " deve essere inserito nel formato " + dataFormat;
}
else{
return "Formato data non definito";
}
break;
case "Digit": //stringa di soli numeri interi
if(!isDigit(f.value))
return "Il campo " + label + " deve essere composto da caratteri numerici";
break;
}
}
// TEXTAREA
else if (f.type == "textarea"){
if (f.getAttribute("notNull") && f.value.length==0)
return "Il campo " + label + " deve essere valorizzato";
if (f.value.length > f.maxLength && f.maxLength != -1)
return "Il campo " + label + " deve avere una lunghezza massima di " + f.maxLength + " caratteri";
if (f.getAttribute("minLength") && f.value.length < f.minLength)
return "Il campo " + label + " deve avere una lunghezza minima di " + f.getAttribute("minLength") + " caratteri";
}
return ok;
}
function isAlphaNumeric(s){
if (s.value.match(/[a-zA-Z0-9]/g).length == s.value.length)
return true;
else
return false;
}
function isDigit(s){
if (!s || !s.match(/[0-9]/g))
return false;
if (s.match(/[0-9]/g).length == s.length)
return true;
else
return false;
}
function isDate(d,formatType){
//formatType: 1 dd/mm/yyyy
fff = formatType.toLowerCase();
switch (fff){
case "dd/mm/yyyy":
dd = d.substr(0,2);
mm = d.substr(3,2);
yy = d.substr(6,4);
break;
default:
return false;
}
if (!isDigit(dd))
return false;
if (!isDigit(mm))
return false;
if (!isDigit(yy))
return false;
dddd = new Date(yy,mm-1,dd);
yyy=dddd.getFullYear().toString();
mmm=(dddd.getMonth()+1).toString();
mmm=mmm.length==1?"0"+mmm:mmm
ddd=dddd.getDate().toString();
ddd=ddd.length==1?"0"+ddd:ddd
if (!(ddd==dd && mmm==mm && yyy==yy))
return false;
else
return true;
}
function toDate(d,formatType){
//formatType: 1 dd/mm/yyyy
//in caso di errore ritorna undefined
if (isDate(d,formatType)){
fff = formatType.toLowerCase();
switch (fff){
case "dd/mm/yyyy":
dd = d.substr(0,2);
mm = d.substr(3,2);
yy = d.substr(6,4);
break;
default:
return undefined;
}
return new Date(yy,mm-1,dd);
}
else{
return undefined;
}
}
function getDate(f){
//dato un field f ritorna la Date relativa
//in caso di errore ritorna undefined
var label = f.getAttribute("label");
var dataFormat = f.getAttribute("dataFormat");
if (!dataFormat)
return undefined;
return toDate(f.value, dataFormat);
}
function checkNow(f){
//controlla se la data nel field f è superiore alla data odierna
if (f.value.length == 0)
return 0;
var label = f.getAttribute("label");
d = getDate(f);
if (d){
now = new Date();
if (d > now)
return "La data " + label + " deve essere inferiore o uguale alla data odierna.";
}
else{
return "Errore nel campo " + label + ".";
}
return 0;
}
function checkDateDiff(f1, f2){
//controlla se la data f1 è <= alla data f2
var label1 = f1.getAttribute("label");
var label2 = f2.getAttribute("label");
d1 = getDate(f1);
if (!d1)
return 0;
d2 = getDate(f2);
if (!d2)
return 0;
if (d1 > d2)
return label1 + " deve essere inferiore o uguale a " + label2 + "."
return 0;
}
function checkDateBetween(f1, f2){
//controllo di due field data DA e A
//return false se ok altrimenti il messaggio di errore
//i field devono avere gli attributi label
//il formato data è sempre lo stesso
dateFormat = "dd/mm/yyyy";
label1 = f1.getAttribute("label");
label2 = f2.getAttribute("label");
d1 = toDate(f1.value, dateFormat);
d2 = toDate(f2.value, dateFormat);
if (!d1 && d2)
return "Attenzione, il campo " + label1 + " deve essere valorizzato.";
if (d1 && d2){
if (d1 > d2)
return "Attenzione, " + label1 + " deve essere minore o uguale a " + label2 + "."
}
return false;
}
function composeDate(f,fD,fM,fY){
ok = 0;
if(fD.value.length==0 || fM.value.length==0 || fY.value.length==0){
f.value = "";
return;
}
if(!isDigit(fD.value) || !isDigit(fM.value) || !isDigit(fY.value)){
f.value = "";
return;
}
dd=fD.value.length==1?"0"+fD.value:fD.value
mm=fM.value.length==1?"0"+fM.value:fM.value
if (fY.value<100)
yy=parseFloat(fY.value)+2000;
else if (fY.value<1000)
yy=parseFloat(fY.value)+1000;
else
yy=fY.value;
fD.value = dd;
fM.value = mm;
fY.value = yy;
f.value = dd + "/" + mm + "/" + yy;
}
function setListVisibility(e,radioChecked){
for (i=0;i<e.length;i++){
if (e[i].getAttribute("radioVisibility")!=undefined){
if (e[i].getAttribute("radioVisibility") == radioChecked)
e[i].style.display="block";
else
e[i].style.display="none";
}
}
}
function myHRef(actionDescr, url, check, waitPointer){
//richiesta conferma utente
if (check){
ok =confirm("Procedere con l'operazione di " + actionDescr + "?");
if (!ok) return;
}
//set hourglass pointer
if (waitPointer)
setWaitPointer();
//href
try {
document.location.href=url;
}
catch(e){
alert("Errore: "+ e.message);
//set default pointer
setDefaultPointer();
}
return;
}
function mySubmitNoCheck(action, formIndex){
mySubmit("", action, formIndex, false, false, false, true);
return;
}
function mySubmit(actionDescr, action, formIndex, check, validate, checkLocal, waitPointer){
//get del form tramite l'indice
f = document.getElementsByTagName('FORM')[formIndex];
//struts form validation
if(validate){
ok=localValidate(f);
if (!ok) return;
}
//richiesta conferma utente
if (check){
if (!checkLocal)
ok =confirm("Procedere con l'operazione di " + actionDescr + "?");
else
ok =localCheck("\nProcedere con l'operazione di " + actionDescr + "?");
if (!ok) return;
}
//set hourglass pointer
if (waitPointer)
setWaitPointer();
//submit
f.action=action;
try {
f.submit();
}
catch(e){
alert("Errore:"+e.message);
setDefaultPointer();
}
return;
}
function invertElementVisibility(elementName,defaultVisibility){
e = document.getElementsByName(elementName)[0];
if (e){
if (e.style.display == "block")
e.style.display = "none";
else if (e.style.display == "none")
e.style.display = "block";
else
e.style.display = defaultVisibility;
}
return;
}
function myShowCalendar(inputName){
f = document.getElementsByName(inputName)[0];
format="dd/mm/yyyy";
popUpCalendar(f, f, format);
}
function setAllSelect(sourceName, destSearchName) {
//in base al valore della select sourceName valorizza le select dest
//trovate mediante la ricerca del destSearchName
index = document.getElementsByName(sourceName)[0].selectedIndex;
combo = document.getElementsByTagName('SELECT');
for(i=0;i<combo.length;i++) {
if(combo[i].name.search(destSearchName)!=-1){
combo[i].selectedIndex=index;
}
}
}
function disableField(fieldName, value){
f = document.getElementsByName(fieldName)[0];
f.disabled = value;
if (value){
f.className="readonly " + f.className;
}
else{
re=/readonly/gi;
f.className=f.className.replace(re,"");
}
}
function disableFieldByCheckbox(fieldName,checkboxName){
v = document.getElementsByName(checkboxName)[0].checked;
disableField(fieldName,v);
}
function enableFieldByCheckbox(fieldName,checkboxName){
v = !document.getElementsByName(checkboxName)[0].checked;
disableField(fieldName,v);
}
function enableFieldByCheckboxNamed(fieldName){
re=/\_checkbox/gi;
enableFieldByCheckbox(fieldName.replace(re,''),fieldName);
return;
}
function setFieldValue(fieldName,fieldValue){
f = document.getElementsByName(fieldName)[0];
if (f.type == "text" || f.type == 'hidden' || f.type == 'textarea' || f.type == 'file' || f.type == 'password'){
f.value = fieldValue;
}
else if (f.type == "checkbox"){
f.checked = fieldValue;
}
return;
}
function getFieldValue(fieldName){
f = document.getElementsByName(fieldName)[0];
if (f.type == "text" || f.type == "select-one" || f.type == 'hidden' || f.type == 'textarea' || f.type == 'file' || f.type == 'password'){
return f.value;
}
else if (f.type == "checkbox"){
return f.checked;
}
return "";
}
function setSelectValue(selectName,value){
s = document.getElementsByName(selectName)[0];
l=s.length;
for(j=0;j<l;j++) {
if(s[j].value == value){
s.selectedIndex=j;
return;
}
}
return;
}
function enableSelect(select) {
s = document.getElementsByName(select)[0];
s.disabled = false;
}
//data la selezione una combo ne riempie un'altra con i valori dell'array value
function setSelectFromSelect(nameFrom,nameTo,values,valueIndex,textIndex,checkIndex){
sFrom = document.getElementsByName(nameFrom)[0];
selectedValue = sFrom[sFrom.selectedIndex].value;
sTo = document.getElementsByName(nameTo)[0];
resizeSelect(sTo,1);
sToOptions= sTo.options;
for(i=0;i<values.length;i++) {
isInSelect=false;
l=sToOptions.length;
//verifica che non sia già presente nella lista di valori
for(j=0;j<l;j++) {
if(sToOptions[j].value == values[i][valueIndex])
isInSelect=true;
}
if ((selectedValue==values[i][checkIndex] || selectedValue == "" ) && !isInSelect){
sToOptions[l] = new Option(values[i][textIndex]);
sToOptions[l].value = values[i][valueIndex];
}
}
}
//data la selezione una combo ne riempie un'altra con i valori dell'array value
function setSelectFromSelectWithoutCheck(nameFrom,nameTo,values,valueIndex,textIndex,checkIndex){
sFrom = document.getElementsByName(nameFrom)[0];
selectedValue = sFrom[sFrom.selectedIndex].value;
sTo = document.getElementsByName(nameTo)[0];
resizeSelect(sTo,1);
sToOptions= sTo.options;
for(i=0;i<values.length;i++) {
isInSelect=false;
l=sToOptions.length;
if ((selectedValue==values[i][checkIndex] || selectedValue == "" )){
sToOptions[l] = new Option(values[i][textIndex]);
sToOptions[l].value = values[i][valueIndex];
}
}
}
//dalla selezione dei dati in due combo ne riempie un'altra con i valori dell'array value
function setSelectFromJoin(nameFrom1, nameFrom2, nameTo, values, valueIndex, textIndex, checkIndex1, checkIndex2){
sFrom1 = document.getElementsByName(nameFrom1)[0];
sFrom2 = document.getElementsByName(nameFrom2)[0];
selectedValue1 = sFrom1[sFrom1.selectedIndex].value;
selectedValue2 = sFrom2[sFrom2.selectedIndex].value;
sTo = document.getElementsByName(nameTo)[0];
resizeSelect(sTo,1);
sToOptions= sTo.options;
for(i=0;i<values.length;i++) {
l=sToOptions.length;
if ( (selectedValue1==values[i][checkIndex1]|| selectedValue1 == "") && (selectedValue2==values[i][checkIndex2] || selectedValue2=="") ){
sToOptions[l] = new Option(values[i][textIndex]);
sToOptions[l].value = values[i][valueIndex];
}
}
}
function resizeSelect(obj,n){
obj.options.length=n;
}
function addOption(select,value,text){
o=select.options;
l=o.length;
o[l] = new Option(text);
o[l].value = value;
}
/******************************************************************************/
/* gestione menu */
error={ok:0, ko:-1};
/* inverte la visibilità di sub menu (show/hide) */
function shideSubMenu(subMenuName,menuName){
subMenu = document.getElementsByName(subMenuName)[0];
menu = document.getElementsByName(menuName)[0];
if (subMenu && menu){
shideObjPos(subMenu,menu);
shideClass(menu,"open");
}
return error.ok;
}
/* visualizza il sub menu sotto e al centro del menu selezionato e set il focus sul menu in modo che si possa chiudere su onblur */
function showSubMenu(subMenuName,menuName){
subMenu = document.getElementsByName(subMenuName)[0];
menu = document.getElementsByName(menuName)[0];
if (subMenu && menu){
showPos(subMenu,menu);
menu.focus();
}
return error.ok;
}
/* nasconde il sub menu */
function hideSubMenu(subMenuName){
subMenu = document.getElementsByName(subMenuName)[0];
if (subMenu){
hide(subMenu);
}
return error.ok;
}
/******************************************************************************/
/* gestione tree */
/* inverte la visibilità di sub tree (show/hide) */
function shideSubTree(subTreeName,treeName){
tree = document.getElementsByName(treeName)[0];
subTree = document.getElementsByName(subTreeName)[0];
if (subTree && tree){
shideObj(subTree);
shideClass(tree,"open");
}
}
/******************************************************************************/
/* gestione obj */
/* inverte la visibilità di obj (show/hide) e lo posiziona */
function shideObjPos(obj,posObj){
if (obj.style.display == "block")
hide(obj);
else
showPos(obj,posObj);
return error.ok;
}
/* inverte la visibilità di obj (show/hide) */
function shideObj(obj){
if (obj.style.display == "block")
hide(obj);
else
show(obj);
return error.ok;
}
/* visualizza obj posizionato sotto e al centro di posObj */
function showPos(obj,posObj){
var newX = findPosX(posObj)-2;
var newY = findPosY(posObj) + posObj.offsetHeight;
obj.style.top = newY + 'px';
obj.style.left = newX + 'px';
obj.style.display = "block";
return error.ok;
}
/* visualizza obj senza posizionarlo */
function show(obj,posObj){
obj.style.display = "block";
return error.ok;
}
/* nasconde obj */
function hide(obj){
obj.style.display = "none";
return error.ok;
}
/* trova la posizione x di obj */
function findPosX(obj){
var curleft = 0;
if (obj.offsetParent)
{
while (obj.offsetParent)
{
curleft += obj.offsetLeft
obj = obj.offsetParent;
}
}
else if (obj.x)
curleft += obj.x;
return curleft;
}
/* trova la posizione y di obj */
function findPosY(obj){
var curtop = 0;
if (obj.offsetParent)
{
while (obj.offsetParent)
{
curtop += obj.offsetTop
obj = obj.offsetParent;
}
}
else if (obj.y)
curtop += obj.y;
return curtop;
}
/* aggiunge/elimina la class di obj */
function shideClass(obj,class0){
if (obj.className.match(class0))
removeClass(obj,class0)
else
addClass(obj,class0)
return error.ok;
}
/* aggiunge la class di obj */
function addClass(obj,class0){
obj.className=class0 + " " + obj.className;
return error.ok;
}
/* elimina la class di obj */
function removeClass(obj,class0){
re=new RegExp(class0, "g");
obj.className=obj.className.replace(re,"");
return error.ok;
}
/**/
function initSelectData(){
}
//kit luglio 07 settaggio filtro canale acquisizione vendita
function setSelectFromJoinCanale(nameTipoCliente, nameToCanale, disabledFilter,clusterCanale,valoreCodiceCanaleIndex, descrizioneCanaleIndex, checkIndex1tipoCliente){
sDisabledFilter=document.getElementsByName(disabledFilter)[0]
sFrom1TipoCliente = document.getElementsByName(nameTipoCliente)[0];// prendo il filtro tipo cliente per acquisire il valore scelto
selectedTipoCliente = sFrom1TipoCliente[sFrom1TipoCliente.selectedIndex].value; //prendo il valore del filtro tipo cliente ('BU' - 'CO')
sTo = document.getElementsByName(nameToCanale)[0]; //prendo il filtro canale acquisizione
resizeSelect(sTo,1); // svuoto il filtro canale acquisizione
sToOptions= sTo.options; //prendo il vettore di opzioni nel filtro canale acquisizione già vuoto per riempirlo in base al tipo cliente
if(selectedTipoCliente=="" || selectedTipoCliente=='null'){ // se non ho selezionato nessun valore di tipo cliente o 'tutti', aggiungo al filtro tutti i valori possibili del canale
for(j=0; j<clusterCanale.length;j++){
l=sToOptions.length;
sToOptions[l] = new Option(clusterCanale[j][descrizioneCanaleIndex]);
sToOptions[l].value = clusterCanale[j][valoreCodiceCanaleIndex];
}
}
else{
for(i=0;i<clusterCanale.length;i++) {
l=sToOptions.length;
if(selectedTipoCliente==clusterCanale[i][checkIndex1tipoCliente]){
sToOptions[l] = new Option(clusterCanale[i][descrizioneCanaleIndex]);
sToOptions[l].value = clusterCanale[i][valoreCodiceCanaleIndex];
}
}
}
if(selectedTipoCliente!='BU')
sDisabledFilter.disabled=false;
else{
sDisabledFilter.selectedIndex=0
sDisabledFilter.disabled=true;
}
}