function storeCaret (textEl) {
  if (textEl.createTextRange) 
    textEl.caretPos = document.selection.createRange().duplicate();
  }

function insertAtCaret (textEl, text) {
  if (textEl.createTextRange && textEl.caretPos) {
    var caretPos = textEl.caretPos;
    caretPos.text =
    caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
  }
  else textEl.value = text;
}

function inserisciImmagine(Field, path) 
{
	if (Field=='') Field='edit';
	        var temp = '';
	        var stringa = "";
	        // magico comando di javascript non documentato sul libro che prede le parti selezionate
		//stringa=document.selection.createRange();
	
		
	
		
		// prende il valore del campo della select e ne crea il tag di chiusura e apertura
		//Tag = document.framework.select1.options[document.framework.select1.selectedIndex].value;
		var iTag = "";
		path = (path == null || path == '') ? "download" : path;
		temp = prompt('Inserisci il percorso dell\'immagine', stringa);
		if (temp != null)
		{
		        //if (temp.indexOf('http:')<0) temp = 'http://' + temp;
		       	var centro = confirm('L\'immagine è allineata al centro?');
		        var allineamento = "";
		        if (centro)
		        	allineamento = "text-align: center;";
		       	else {
		       		var destra = confirm('L\'immagine è allineata al destra?');
		       		if (destra) 
		        		allineamento = "text-align: right;";
		        	else 
                                        allineamento = "text-align: left;";
		        }
		        iTag = '<span style="width: 100%; '+allineamento+'"><img src="'+path+'/'+temp+'" alt="" border="0"></span>';
		}
		else 
		{
		        iTag = '';
		}

		// magico comando di javascript non documentato sul libro che prede le parti selezionate
		eval('var aTextArea=document.framework.' + Field + ';');
		//insertAtCaret(this.form.aTextArea, this.form.aText.value);
		
		insertAtCaret(aTextArea, iTag);

		
		// costruzione del  pezzo + il tag
		//eval('document.framework.' + Field + '.value=stringa');
	
		// modifichiamo il layer
		if (Field=='edit') riempi(Field);
}

function cambia(Tag, Field) 
{
   if (Field=='') Field='edit';
        var temp = '';
        // magico comando di javascript non documentato sul libro che prede le parti selezionate
	stringa=document.selection.createRange();

	// prende il valore del campo della select e ne crea il tag di chiusura e apertura
	//Tag = document.framework.select1.options[document.framework.select1.selectedIndex].value;
	iTag= '<'+Tag+'>';
	
	// caso in cui il tag sia il <BR>
	if (Tag == 'BR')
	{
		fTag = '';
		iTag = '<BR>\n';
	}
        
        // caso in cui sia richiesta la creazione di un link
        else if (Tag == 'link')
	{
		var esterno = confirm('Il link rimanda a una pagina esterna al sito?');
		var finestra = confirm('La pagina si deve aprire in una nuova finestra?');
		temp = prompt('Inserisci l\'URL', stringa.text);
		finestra = (finestra) ? 'target="_blank"' : '';
		// gestione del pulsante annulla del prompt
		if (temp != null)
		{
		        if ((esterno) && (temp.indexOf('http:')<0)) temp = 'http://' + temp;
		        fTag = '</a>';
		        iTag = '<a href="'+temp+'" '+finestra+'>';
		} 
		else 
		{
		        fTag = '';
		        iTag = '';
     
		}
	}
	else if (Tag == 'immagine')
	{
		temp = prompt('Inserisci il percorso dell\'immagine', stringa.text);
		if (temp != null)
		{
		        //if (temp.indexOf('http:')<0) temp = 'http://' + temp;
		        var centro = confirm('L\'immagine è allineata al centro?');
		        var allineamento = "";
		        if (centro)
		        	allineamento = "align=\"center\"";
		       	else {
		       		var destra = confirm('L\'immagine è allineata al destra?');
		       		if (destra) {
		        		allineamento = "align=\"right\"";
		        	}
		        }
		        
		        fTag = '';
		        iTag = '<img href="'+temp+'" '+allineamento+' alt="">';
		}
		else 
		{
		        fTag = '';
		        iTag = '';
		}
		
	}
	else if (Tag == 'mail')
	{
		temp = prompt('Inserisci l\' indirizzo di posta elettronica', stringa.text);
		// gestione del pulsante annulla del prompt
		if (temp != null)
		{
		        fTag = '</a>';
		        iTag = '<a href="mailto:'+temp+'">';
		}
		else
		{
		        fTag = '';
		        iTag = '';
		}
	}
	else fTag= '</'+Tag+'>';
	// se la selezione e' effettivamente un testo, parte il resto della funzione
	
	// lo script dentro l'if ritorna l'elemento html da cui e' presa la selezione
	if (document.selection.createRange().parentElement().tagName == 'TEXTAREA')
	{
		// costruzione del  pezzo + il tag
		stuff = stringa.text;
		// scrive dentro la selezione
		stringa.text=iTag+stuff+fTag;
	
		// modifichiamo il layer
		if (Field=='edit') riempi(Field);
	}
	else
	{
		// magico comando di javascript non documentato sul libro che prede le parti selezionate
		eval('stringa=document.framework.' + Field + '.value');
		// costruzione del  pezzo + il tag
		eval('document.framework.' + Field + '.value=stringa+iTag+fTag');
	
		// modifichiamo il layer
		if (Field=='edit') riempi(Field);
	}
}

// aggiorna il layer con l'editor
function riempi(Field)
{
   if (Field=='') Field='edit';
   
	// visualizza le modifiche in HTML
	var testo = "";
	eval('testo = document.framework.' + Field + '.value');
	if ((testo.indexOf("\n")>0) && (testo.indexOf("<t")<0) && (testo.indexOf("</t")<0))
	while (testo.indexOf("\n")>0) {
	   testo = testo.replace("\n","<br>");
	}
	document.getElementById('view').innerHTML = testo;
}

// questa funzione passa il contenuto della textare di fianco al tasto edit all'editor, oltre che al nome della textarea di origine
function edit(_area, Field)
{
   if (Field=='')  Field='edit';
	// controlla che il menu sia aperto, se no lo e' lo apre
	correggiSelect('hidden');
        
	if (aperto == 0) apri('Menu');
	// passa i valori
	var temp = document.forms[0].elements[_area].value;
        eval('document.framework.' + Field + '.value = temp');
        // salva il nome della textarea origine
        area = _area;
        if (Field=='edit') riempi(Field);
		return false;
}

function salva(Field)
{
        if (Field=='') Field='edit';
        
        // Salva la modifica
        var temp = "";
        eval('temp = document.framework.' + Field + '.value');
        document.forms[0].elements[area].value = temp;
        chiudiEditor();
}

function chiudiEditor()
{
        window.close();
}

