var textareaFocus;

function redirectme(myurl) {
    window.location = myurl;
}

/* Setta la textarea che ha il focus in questo momento */
function setFocus(nome) {
  textareaFocus = nome;
}



/* Visualizza un messaggio se si inserisce un testo piu' lungo
   della lunghezza del campo, passata come parametro
   obj = oggetto da controllare (es. nome della textarea)
   l = lunghezza campo
*/
function lunghezzatesto(obj,l) {
    ltesto = obj.value.length;
    if (ltesto > l) {
      obj.value = obj.value.substring(0,l)
      CharsLeft = 0
      window.alert("Il testo puo contenere solo " + l + " caratteri");
    } else {
      CharsLeft = l - ltesto
    }
}

/* Ritorna il testo selezionato */
function getSel(pageName) {
   /* Editor semplice */
   if (pageName == 'SimpleEditor') {
       if (document.getSelection)
           return document.getSelection();
       else if (document.selection)
           return document.selection.createRange().text;
       else return '';

   /* Container: editor visuale */
   } else { 
       if (browser.isIE5up) {
           var sel = window.document.getElementById('visualEditor').contentWindow.document.selection; 
	   if (sel != null) {
	       var newRng = sel.createRange();
	       return newRng.text;
	   }
       } else {
           b = window.document.getElementById('visualEditor').contentWindow.document;
           o = b.body;
           return o.innerHTML;
       }
   }
}

/* Ritorna il testo selezionato nella finestra che ha aperto
 * quella corrente
 */
function getOpenerSel(pageName) {
   if (pageName == 'SimpleEditor') {
       if (window.opener.document.getSelection)
           return window.opener.document.getSelection();
       else if (window.opener.document.selection)
           return window.opener.document.selection.createRange().text;
       else return '';
   
   /* Editor visuale */
   } else { 
       return getIFrameSelection();
   }
}

function getIFrameSelection() {    
    if (browser.isIE5up) {
        //retrieve selected range
	var sel = window.opener.document.getElementById('visualEditor').contentWindow.document.selection; 
	if (sel!=null) {
	    var newRng = sel.createRange();
	    return newRng.text;
	}
    } else {
        b = window.opener.document.getElementById('visualEditor').contentWindow.document;
        o = b.body;
        return o.innerHTML;
    }
}

/* Apre una finestra di popup
 * page = nome della pagina da aprire
 * w = larghezza della finestra
 * h = altezza della finestra
 * x = coordinata x dello schermo in cui si apre della finestra
 * y = coordinata y dello schermo in cui si apre la finestra
 * res = indica se si abilita il resizable oppure no (yes | no)
 * scrol = indica se visualizzare la scrollbar oppure no (yes | no)
 */
function openPopup(page,w,h,x,y,res,scrol) {
    win = window.open(page,'winpop','width='+w+',height='+h+',left='+x+',top='+y+',screenX='+x+',screenY='+y+',toolbar=no,directories=no,menubar=no,status=no,resizable='+ res +',location=no,scrollbars=' + scrol + ',copyhistory=no,');
    win.focus();
}


/* Apre una pop-up e visualizza il testo passato
 */
function showPreview(testo) {
  mywin = window.open('','winpop','width=530,height=400,left=50,top=50,screenX=50,screenY=50,toolbar=no,directories=no,menubar=no,status=no,resizable=yes,location=no,scrollbars=yes,copyhistory=no,');
  mywin.document.write('<html><head><title>Ceveas</title></head><body bgcolor="#FFFFFF"><table width="100%"><tr><td align="left"><div align="justify"><font face="Verdana" size="2">' + testo + '</font></div></td></tr></table></body></html>');
  mywin.focus();
}

/* Inserisce nella textarea selezionata il link inserito nel campo di 
 * testo passato al metodo.
 * Nella textarea scrivo:
 * [ext#indirizzo#nome#/]
 */
function addLinkEsterno(objindirizzo, objnome, idcompany, pageName) {
    closeit = true;
    indirizzo = objindirizzo.value;
    nome = objnome.value;

    if (indirizzo.length <= 0) {
        closeit = false;
        alert('Inserire l\'indirizzo del sito');
    }
    if (nome.length <= 0) {
        closeit = false;
        alert('Inserire la parola da collegare');
    }

    if (closeit) {
        /* Aggiungo la scritta http:// se non c'e' */
        if (indirizzo.indexOf(':') == -1) {
            indirizzo = 'http://' + indirizzo;
        }

        seltext = getOpenerSel(pageName);
        var obj;
        var ttext;

        if (pageName == 'SimpleEditor') {
            obj = window.opener.textareaFocus;
            ttext = obj.value;

        /* Editor Visuale */
        } else { 
            obj = window.opener.document.getElementById('visualEditor').contentWindow.document.body;
            ttext = obj.innerHTML;
        }
    
        n = 0;
        if (seltext.length > 0) {
            while (ttext.length > 0) {
                i = ttext.indexOf(seltext);
                if (i >= 0) {
                    n = n + 1;
                    ttemp = ttext;
                    ttext = ttemp.substring(i+seltext.length,ttemp.length);
                } else {
                    break;
                }
            }
        }

        if (n > 1) {
            alert("Attenzione: esistono diverse (" + (n) + ") corrispondenze della frase selezionata all'interno del testo. Seleziona una parte piu\' specifica!");
        } else {
            if (pageName == 'SimpleEditor') {
                if (seltext.length > 0) {
                    obj.value = obj.value.replace(seltext, seltext + ' [ext#' + indirizzo + '#' + nome + '#/] ');
                } else {
                    obj.value = obj.value + ' [ext#' + indirizzo + '#' + nome + '#/] ';
                }
            } else { 
                if (seltext.length > 0) {
                    obj.innerHTML = obj.innerHTML.replace(seltext, seltext + ' [ext#' + indirizzo + '#' + nome + '#/] ');
                } else {
                    obj.innerHTML = obj.innerHTML + ' [ext#' + indirizzo + '#' + nome + '#/] ';
                }
            }
        }
        window.close();
    }
}

/* Inserisce nella textarea selezionata il link inserito nel campo di 
 * testo passato al metodo.
 * Nella textarea scrivo:
 * [node#idCompany+indirizzo#nome#/]
 */
function addLinkNode(objindirizzo, objnome, idcompany, pageName) {
    closeit = true;
    indirizzo = objindirizzo.value;
    nome = objnome.value;

    if (indirizzo.length <= 0) {
        closeit = false;
        alert('Inserire il nome della pagina');
    }
    if (nome.length <= 0) {
        closeit = false;
        alert('Inserire la parola da collegare');
    }

    if (closeit) {
        /* Nome di pagina: aggiungo l'id della Company */
        if (indirizzo.indexOf(':') == -1) {
            indirizzo = idcompany + '+' + indirizzo;
        }
    
        seltext = getOpenerSel(pageName);
        var obj;
        var ttext;

        if (pageName == 'SimpleEditor') {
            obj = window.opener.textareaFocus;
            ttext = obj.value;
        } else {
            obj = window.opener.document.getElementById('visualEditor').contentWindow.document.body;
            ttext = obj.innerHTML;
        }

        n = 0;
        if (seltext.length > 0) {
            while (ttext.length > 0) {
                i = ttext.indexOf(seltext);
                if (i >= 0) {
                    n = n + 1;
                    ttemp = ttext;
                    ttext = ttemp.substring(i+seltext.length, ttemp.length);
                } else {
                    break;
                }
            }
        }

        if (n > 1) {
            alert("Attenzione: esistono diverse (" + (n) + ") corrispondenze della frase selezionata all'interno del testo. Seleziona una parte piu\' specifica!");
        } else {
            if (pageName == 'SimpleEditor') {
                if (seltext.length > 0) {
                    obj.value = obj.value.replace(seltext, seltext + ' [node#' + indirizzo + '#' + nome + '#/] ');
                } else {
                    obj.value = obj.value + ' [node#' + indirizzo + '#' + nome + '#/] ';
                }
            } else {
                if (seltext.length > 0) {
                    obj.innerHTML = obj.innerHTML.replace(seltext, seltext + ' [node#' + indirizzo + '#' + nome + '#/] ');
                } else {
                    obj.innerHTML = obj.innerHTML + ' [node#' + indirizzo + '#' + nome + '#/] ';
                }
            }
        }    
        window.close();
    }
}

/* *** Added by Gruppo Sistema +++ */
/* Inserisce nella textarea selezionata il link inserito nel campo di 
 * testo passato al metodo.
 * Nella textarea scrivo:
 * [ext#indirizzo#nome#/]
 * Aggiungo " target="_blank o meno a second del paramtro objpopup
 */
function addLinkEsternoPopup(objindirizzo, objnome, idcompany, pageName, objpopup) {
    closeit = true;
    indirizzo = objindirizzo.value;
    nome = objnome.value;

    if (indirizzo.length <= 0) {
        closeit = false;
        alert('Inserire l\'indirizzo del sito');
    }
    if (nome.length <= 0) {
        closeit = false;
        alert('Inserire la parola da collegare');
    }

    if (closeit) {
        /* Aggiungo la scritta http:// se non c'e' */
        if (indirizzo.indexOf(':') == -1) {
            indirizzo = 'http://' + indirizzo;
        }

        seltext = getOpenerSel(pageName);
        var obj;
        var ttext;

        if (pageName == 'SimpleEditor') {
            obj = window.opener.textareaFocus;
            ttext = obj.value;

        /* Editor Visuale */
        } else { 
            obj = window.opener.document.getElementById('visualEditor').contentWindow.document.body;
            ttext = obj.innerHTML;
        }
    
        n = 0;
        if (seltext.length > 0) {
            while (ttext.length > 0) {
                i = ttext.indexOf(seltext);
                if (i >= 0) {
                    n = n + 1;
                    ttemp = ttext;
                    ttext = ttemp.substring(i+seltext.length,ttemp.length);
                } else {
                    break;
                }
            }
        }

        if (n > 1) {
            alert("Attenzione: esistono diverse (" + (n) + ") corrispondenze della frase selezionata all'interno del testo. Seleziona una parte piu\' specifica!");
        } else {

            // *** Modified by Alessandro on 13/12/2004
            var popup;
            popup = "";
            if (objpopup.checked==true){
                popup = "\" target=\"_blank";
            }

            if (pageName == 'SimpleEditor') {
                if (seltext.length > 0) {
                    obj.value = obj.value.replace(seltext, seltext + ' [ext#' + indirizzo + popup + '#' + nome + '#/] ');
                } else {
                    obj.value = obj.value + ' [ext#' + indirizzo + popup + '#' + nome + '#/] ';
                }
            } else { 
                if (seltext.length > 0) {
                    obj.innerHTML = obj.innerHTML.replace(seltext, seltext + ' [ext#' + indirizzo + popup + '#' + nome + '#/] ');
                } else {
                    obj.innerHTML = obj.innerHTML + ' [ext#' + indirizzo + popup + '#' + nome + '#/] ';
                }
            }
            // *** End Modified by Alessandro on 13/12/2004
        }
        window.close();
    }
}

/* Inserisce nella textarea selezionata il link inserito nel campo di 
 * testo passato al metodo.
 * Nella textarea scrivo:
 * [node#idCompany+indirizzo#nome#/]
 * Aggiungo " target="_blank o meno a second del paramtro objpopup
 */
function addLinkNodePopup(objindirizzo, objnome, idcompany, pageName, objpopup) {
    closeit = true;
    indirizzo = objindirizzo.value;
    nome = objnome.value;

    if (indirizzo.length <= 0) {
        closeit = false;
        alert('Inserire il nome della pagina');
    }
    if (nome.length <= 0) {
        closeit = false;
        alert('Inserire la parola da collegare');
    }

    if (closeit) {
        /* Nome di pagina: aggiungo l'id della Company */
        if (indirizzo.indexOf(':') == -1) {
            indirizzo = idcompany + '+' + indirizzo;
        }
    
        seltext = getOpenerSel(pageName);
        var obj;
        var ttext;

        if (pageName == 'SimpleEditor') {
            obj = window.opener.textareaFocus;
            ttext = obj.value;
        } else {
            obj = window.opener.document.getElementById('visualEditor').contentWindow.document.body;
            ttext = obj.innerHTML;
        }

        n = 0;
        if (seltext.length > 0) {
            while (ttext.length > 0) {
                i = ttext.indexOf(seltext);
                if (i >= 0) {
                    n = n + 1;
                    ttemp = ttext;
                    ttext = ttemp.substring(i+seltext.length, ttemp.length);
                } else {
                    break;
                }
            }
        }

        if (n > 1) {
            alert("Attenzione: esistono diverse (" + (n) + ") corrispondenze della frase selezionata all'interno del testo. Seleziona una parte piu\' specifica!");
        } else {

            // *** Modified by Alessandro on 13/12/2004
            var popup;
            popup = "";
            if (objpopup.checked==true){
                popup = "\" target=\"_blank";
            }

            if (pageName == 'SimpleEditor') {
                if (seltext.length > 0) {
                    obj.value = obj.value.replace(seltext, seltext + ' [node#' + indirizzo + popup + '#' + nome + '#/] ');
                } else {
                    obj.value = obj.value + ' [node#' + indirizzo + popup + '#' + nome + '#/] ';
                }
            } else {
                if (seltext.length > 0) {
                    obj.innerHTML = obj.innerHTML.replace(seltext, seltext + ' [node#' + indirizzo + popup + '#' + nome + '#/] ');
                } else {
                    obj.innerHTML = obj.innerHTML + ' [node#' + indirizzo + popup + '#' + nome + '#/] ';
                }
            }
            // *** End Modified by Alessandro on 13/12/2004
        }    
        window.close();
    }
}
/* *** End Added by Gruppo Sistema +++ */

/* Inserisce nella textarea selezionata il link ad un ancora (link interno)
 * Nella textarea scrivo:
 * [int#nomeancora#nome#/]
 */
function addLinkInterno(objancora, objnome, pageName) {
    closeit = true;
    ancora = objancora.value;
    nome = objnome.value;

    if (ancora.length <= 0) {
        closeit = false;
        alert('Inserire il nome dell\'ancora a cui fare il collegamento');
    }
    if (nome.length <= 0) {
        closeit = false;
        alert('Inserire la parola da collegare');
    }

    if (closeit) {
        seltext = getOpenerSel(pageName);
        var obj;
        var ttext;

        if (pageName == 'SimpleEditor') {
            obj = window.opener.textareaFocus;
            ttext = obj.value;
        } else { 
            obj = window.opener.document.getElementById('visualEditor').contentWindow.document.body;
            ttext = obj.innerHTML;
        }

        n = 0;
        if (seltext.length > 0) {
            while (ttext.length > 0) {
                i = ttext.indexOf(seltext);
                if (i >= 0) {
                    n = n + 1;
                    ttemp = ttext;
                    ttext = ttemp.substring(i+seltext.length, ttemp.length);
                } else {
                    break;
                }
            }
        }

        if (n > 1) {
            alert("Attenzione: esistono diverse (" + (n) + ") corrispondenze della frase selezionata all'interno del testo. Seleziona una parte piu\' specifica!");
        } else {
            if (pageName == 'SimpleEditor') {
                if (seltext.length > 0) {
                    obj.value = obj.value.replace(seltext, seltext + ' [int#' + ancora + '#' + nome + '#/] ');
                } else {
                    obj.value = obj.value + ' [int#' + ancora + '#' + nome + '#/] ';
                }
            } else { 
                if (seltext.length > 0) {
                    obj.innerHTML = obj.innerHTML.replace(seltext, seltext + ' [int#' + ancora + '#' + nome + '#/] ');
                } else {
                    obj.innerHTML = obj.innerHTML + ' [int#' + ancora + '#' + nome + '#/] ';
                }
            }
        }
        window.close();
    }
}

/* Inserisce nella textarea selezionata l'ancora che verra poi
 * utilizzata per effettuare un collegamento a quel paragrafo
 * Nella textarea scrivo:
 * [ancora#nomeancora#/]
 */
function addLinkAncora(objnome, pageName) {
    closeit = true;
    nome = objnome.value;

    if (nome.length <= 0) {
        closeit = false;
        alert('Inserire il nome dell\'ancora');
    }

    if (closeit) {
        seltext = getOpenerSel(pageName);
        var obj;
        var ttext;

        if (pageName == 'SimpleEditor') {
            obj = window.opener.textareaFocus;
            ttext = obj.value;
        } else { 
            obj = window.opener.document.getElementById('visualEditor').contentWindow.document.body;
            ttext = obj.innerHTML;
        }

        n = 0;
        if (seltext.length > 0) {
            while (ttext.length > 0) {
                i = ttext.indexOf(seltext);
                if (i >= 0) {
                    n = n + 1;
                    ttemp = ttext;
                    ttext = ttemp.substring(i+seltext.length,ttemp.length);
                } else {
                    break;
                }
            }
        }

        if (n > 1) {
            alert("Attenzione: esistono diverse (" + (n) + ") corrispondenze della frase selezionata all'interno del testo. Seleziona una parte piu\' specifica!");
        } else {

            if (pageName == 'SimpleEditor') {
                if (seltext.length > 0) {
                    obj.value = obj.value.replace(seltext, seltext + ' [ancora#' + nome + '#/] ');
                } else {
                    obj.value = obj.value + ' [ancora#' + nome + '#/] ';
                }
            } else { 
                if (seltext.length > 0) {
                    obj.innerHTML = obj.innerHTML.replace(seltext, seltext + ' [ancora#' + nome + '#/] ');
                } else {
                    obj.innerHTML = obj.innerHTML + ' [ancora#' + nome + '#/] ';
                }
            }
        }
        window.close();
    }
}

/* Inserisce nella textarea selezionata il nome del campo della 
 * tabella OPERSON scelto fra le proposte
 * Nella textarea scrivo:
 * [campo_scelto]
 */
function addDbField(objnome, pageName) {
    closeit = true;
    nome = objnome.value;

    if (nome.length <= 0) {
        closeit = false;
        alert('Inserire il nome del campo');
    }

    if (closeit) {
        seltext = getOpenerSel(pageName);
        var obj;
        var ttext;

        if (pageName == 'SimpleEditor') {
            obj = window.opener.textareaFocus;
            ttext = obj.value;
        } else { 
            obj = window.opener.document.getElementById('visualEditor').contentWindow.document.body;
            ttext = obj.innerHTML;
        }

        n = 0;
        if (seltext.length > 0) {
            while (ttext.length > 0) {
                i = ttext.indexOf(seltext);
                if (i >= 0) {
                    n = n + 1;
                    ttemp = ttext;
                    ttext = ttemp.substring(i+seltext.length, ttemp.length);
                } else {
                    break;
                }
            }
        }

        if (n > 1) {
            alert("Attenzione: esistono diverse (" + (n) + ") corrispondenze della frase selezionata all'interno del testo. Seleziona una parte piu\' specifica!");
        } else {
            if (pageName == 'SimpleEditor') {
                if (seltext.length > 0) {
                    obj.value = obj.value.replace(seltext, seltext + ' [' + nome + '] ');
                } else {
                    obj.value = obj.value + ' [' + nome + '] ';
                }
            } else { 
                if (seltext.length > 0) {
                    obj.innerHTML = obj.innerHTML.replace(seltext, seltext + ' [' + nome + '] ');
                } else {
                    obj.innerHTML = obj.innerHTML + ' [' + nome + '] ';
                }
            }
        }    
        window.close();

    }
}


/* Aggiunge una stringa prima e dopo la stringa selezionata all' interno
 * dell' oggetto form obj
 * cfirst = carattere o stringa da inserire prima della frase selezionata
 * clast = carattere da aggiungere in fondo alla riga
 * obj = oggetto (textarea o textfield)
 */
function addChar(cfirst, clast, pageName) {
    seltext = getSel(pageName);
    var obj;
    var ttext;

    if (pageName == 'SimpleEditor') {
        obj = textareaFocus;
        ttext = obj.value;
    } else { 
        obj = window.document.getElementById('visualEditor').contentWindow.document.body;
        ttext = obj.innerHTML;
    }

    n = 0;
    if (seltext.length > 0) {
        while (ttext.length > 0) {
            i = ttext.indexOf(seltext);
            if (i >= 0) {
                n = n + 1;
                ttemp = ttext;
                ttext = ttemp.substring(i+seltext.length, ttemp.length);
            } else {
                break;
            }
        }
    }

    if (n > 1) {
        alert("Attenzione: esistono diverse (" + (n) + ") corrispondenze della frase selezionata all'interno del testo. Seleziona una parte piu\' specifica!");
    } else {
        if (pageName == 'SimpleEditor') {
            if (seltext.length > 0) {
                obj.value = obj.value.replace(seltext, cfirst + seltext + clast);
            } else {
                obj.value = obj.value + cfirst + clast;
            }
        } else { 
            if (seltext.length > 0) {
                obj.innerHTML = obj.innerHTML.replace(seltext, cfirst + seltext + clast);
            } else {
                obj.innerHTML = obj.innerHTML + cfirst + clast;
            }
        }
    }       
}


/* Aggiunge una tabella dopo il valore selezionato. La tabella avra' numero di 
 * righe e colonne come indicato dai valori passati, larghezza indicata e 
 * border = 1
 * rows = numero di righe
 * cols = numero di colonne
 * width = larghezza
 * wum = unita' di misura della larghezza (% o px)
 */
function addTable(rows, cols, width, wum) {
    seltext = getOpenerSel('VisualEditor');
    var obj;
    var ttext;
    var aTable;
    var closeit = true; 
    var space = '';
    var cWidth = 100;
    
    if (browser.isGecko) {
        space = '&#160;';
    }

    /* Controllo i valori */
    if (rows <= 0) {
        closeit = false;
        alert('Il numero di righe deve essere maggiore di zero');
    } else {
        try {
            div = rows / 1;
            if (isNaN(div)) {
                closeit = false;
                alert('Il numero di righe deve essere un valore numerico');
            }
        } catch (exception) {
            closeit = false;
            alert('Il numero di righe deve essere un valore numerico');
        }
    }
    
    if (cols <= 0) {
        closeit = false;
        alert('Il numero di colonne deve essere maggiore di zero');
    } else {
        try {
            div = cols / 1;
            if (isNaN(div)) {
                closeit = false;
                alert('Il numero di colonne deve essere un valore numerico');
            }
        } catch (exception) {
            closeit = false;
            alert('Il numero di colonne deve essere un valore numerico');
        }
    }   

    if (width <= 0) {
        closeit = false;
        alert('La tabella non puo\' avere larghezza zero');
    } else {
        try {
            div = width / 1;
            if (isNaN(div)) {
                closeit = false;
                alert('La larghezza deve essere un valore numerico');
            }
        } catch (exception) {
            closeit = false;
            alert('La larghezza deve essere un valore numerico');
        }
    }

    if (closeit) {
        obj = window.opener.document.getElementById('visualEditor').contentWindow.document.body;
        ttext = obj.innerHTML;

        n = 0;
        if (seltext.length > 0) {
            while (ttext.length > 0) {
                i = ttext.indexOf(seltext);
                if (i >= 0) {
                    n = n + 1;
                    ttemp = ttext;
                    ttext = ttemp.substring(i+seltext.length, ttemp.length);
                } else {
                    break;
                }
            }
        }

        cWidth = width / cols;
        aTable = '<TABLE border="1" cellspacing="0" cellpadding="5" width="' + width + wum + '">';
        for(var i = 1; i <= rows; i++) {
            aTable = aTable + '<TR>';
            for (var j = 1; j <= cols; j++) {
                aTable = aTable + '<TD width="'+ cWidth + wum + '">' + space + '</TD>';
            }
            aTable = aTable + '</TR>';
        }
        aTable = aTable + '</TABLE>';

        if (n > 1) {
            alert("Attenzione: esistono diverse (" + (n) + ") corrispondenze della frase selezionata all'interno del testo. Seleziona una parte piu\' specifica!");
        } else {
            if (seltext.length > 0) {
                obj.innerHTML = obj.innerHTML.replace(seltext, seltext + aTable);
            } else {
                obj.innerHTML = obj.innerHTML + aTable;
            }
        }       
        window.close();
    }
}

