//
// Funzioni Varie
//

//Data una SELECT "oSelect",
//restituisce l'indice dell'OPTION con valore "sValue"
function getIndex(oSelect, sValue) {
   var iCnt=0;
   while (iCnt<oSelect.options.length) {
      if (oSelect.options[iCnt].value==sValue) {
         return iCnt;
      };
      iCnt++;
   }
   return -1;
}

function ltrim(s) {
	return s.replace( /^\s*/, "" );
}
function rtrim(s) {
	return s.replace( /\s*$/, "" );
}
function trim ( s ) {
	return rtrim(ltrim(s));
}

function SelectAllText(object) {
   object.select();
}


//
// Gestione dei tag di formattazione
//

//function insertTag(cStart, cEnd) {
//   //var oTmp = getObject(ciMainReceiver);
//   var oTmp = getObject(ciMainReceiver);
//   alert(oTmp);
//   var oDest = getObject(Number(oTmp.value));
//   if (oDest!=null) {
//	   var text = getSelText(oDest);
//	   var AddTxt = cStart + text + cEnd;
//	   setSelText(oDest, AddTxt);
//	   oDest.focus();
//	};
//}


function insertTagTo(oDest, cStart, cEnd) {
	   var text = window.parent.Body.oTxtSel.text;              
	   var AddTxt = cStart + text + cEnd;
	   setSelText(oDest, AddTxt);
	   parent.Body.storeCaret(oDest);
	   oDest.focus();
}

function deleteTag(csTipotag, iId, sText) {
	// Funzione che prende ininput un tipo di tag, un id e una stringa e restituisce la stringa senza tutti i tag del tipo indicato
   var sTmp="", sTesta="", sCoda=""
	var iPostag=0; 
	while (iPostag>=0) { //Cerco tutte le istanze da cancellare
		iPostag=sText.indexOf(csTipotag.H + " " + iId); //Cerco la posizione del tag d'apertura
		if (iPostag<0) { //Nel caso in cui non lo trovo lo cerco anche senza lo spazio
			iPostag=sText.indexOf(csTipotag.H + iId);
		}
		if (iPostag<0) { //Nel caso in cui non lo trovo
			return sText;
		}
		sTesta=sText.slice(0,iPostag);//Metto in sTesta ciņ che c'č prima del tag
		sCoda=sText.slice(iPostag);//Metto in sCoda ciņ che sta dopo il tag;
		iPosfin=sCoda.indexOf(csTipotag.C);
		if (iPosfin<0) { //Non ho trovato la fine del tag iniziale
			return sText;
		}
		sCoda=sCoda.slice(iPosfin+csTipotag.C.length);//Ora sCoda contiene tutto ciņ che segue il tag iniziale
		sTmp="";
		if (csTipotag.T!="") { //Se devo trovare un tag finale
			iPosfin=sCoda.indexOf(csTipotag.T);
			if (iPosfin<0) { //Non ho trovato il tag finale
				return sText;
			}
			sTmp=sCoda.slice(0, iPosfin);//sTmp contiene tutto ciņ che c'č tra il tag iniziale e quello finale
			sCoda=sCoda.slice(iPosfin+csTipotag.T.length);//Ora sCoda contiene tutto ciņ che segue il tag finale
		}	
		sText=sTesta.concat(sTmp, sCoda);
	}
}


// Salva posizione cursore ed area selezionata
function storeCaret(oText) {
   window.parent.Body.oTxtSel = document.selection.createRange().duplicate();
}

// Restituisce il testo della selezione
function getSelText(oText) {
   // oText: Textarea interessata
	if (oText.createTextRange && oText.caretPos) {
		return oText.caretPos.text;
	} else {
		return '';
	}
}

// Sostituisce il testo della selezione con quello passato
function setSelText(oText, sNewText) {
   // oText: Textarea interessata
   // sNewText: Testo da inserire
	if (oText.createTextRange && window.parent.Body.oTxtSel) {
		var caretPos = window.parent.Body.oTxtSel;
		caretPos.text = sNewText;
	} else {
		oText.value+=sNewText;
	}
}

//Inserisce http:// se necessario
function setHttp(sUrl) {
   var sHttp = "http://";
   if ((sUrl.indexOf("://")<0) && (sUrl.indexOf("mailto:")<0)) {
      sUrl = sHttp.concat(sUrl);
   }
   return sUrl;
}

//Seleziona un radiobutton tramite il suo value
function RadioSelect(name, value) {
   var oRadio = document.getElementsByName(name);
   if (oRadio!=undefined) {
      var iCnt;
      var iElements=oRadio.length;
      for (iCnt=0; iCnt<iElements; iCnt++) {
         if (oRadio[iCnt].value==value) {
            oRadio[iCnt].click();
         }
      }
   }
   //document.getElementsByName(name)[index].click();
}

