
// javascripts.js


//===========================================
// Navigazione
//===========================================
function navigateTo(URL)
{
	// Naviga verso l'url specificato
	document.location.href = URL;
}

//
function hideElement(elementID)
{
    document.getElementById(elementID).style.display = 'none';
}

//
function showElement(elementID)
{
    document.getElementById(elementID).style.display = 'block';
}

//
function showHideElement(elementID)
{
    if (document.getElementById(elementID).style.display == 'none')
        document.getElementById(elementID).style.display = 'block';
    else
        document.getElementById(elementID).style.display = 'none';
}

//
function validateMail(mailAddress)
{
    // restituisce true se mailAddress è un'indirizzo eMail valido
	var at="@";
	var dot=".";
	
	var lat = mailAddress.indexOf(at);
	var lstr = mailAddress.length;
	var ldot = mailAddress.indexOf(dot);

	if (mailAddress.indexOf(at)==-1) return false;      // manca @
    if (mailAddress.indexOf(at)==-1 || mailAddress.indexOf(at)==0 || mailAddress.indexOf(at)==lstr) return false;       // @ mancante, iniziale o finale
    if (mailAddress.indexOf(dot)==-1 || mailAddress.indexOf(dot)==0 || mailAddress.indexOf(dot)==lstr) return false;    // . (punto) mancante, iniziale o finale
    if (mailAddress.indexOf(at,(lat+1))!=-1) return false;
    if (mailAddress.substring(lat-1,lat)==dot || mailAddress.substring(lat+1,lat+2)==dot) return false;
    if (mailAddress.indexOf(dot,(lat+2))==-1) return false;
    if (mailAddress.indexOf(" ")!=-1) return false;
    return true;
}

//
function showFixedPopUp(url, width, height, scrollable)
{
	// Apre un popup con le dimensioni specificate all'url specificato
	// se title è <> '', imposta il titolo
	// Imposta scrollable se scrollable=true
	if (scrollable)
	    scrollable = 'yes';
    else
        scrollable = 'no';
        
	popup = window.open(url, '','scrollbars=' + scrollable + ',resizable=no, left=100, top=100, width=' + width + ',height=' + height + ',status=no,location=no,toolbar=no');
}

//
function linkUnavailable()
{
	// segnala link non disponibile
	alert('Siamo spiacenti, ma la pagina collegata al link è attualmente in fase di sviluppo.\nPer tanto non è al momento disponibile.\n\nScusandoci per il disagio vi invitiamo a visitarla più tardi.');
	return false;
}



//===========================================
// DHTML
//===========================================
function loadImageById(ImgElementId, FileName)
{	
	/* funzione per caricamento dinamico di immagini:
		ImgElementId:	id del tag <img>
		FileName:	percorso relativo del file d'immagine da caricare

	   Es:
		<select name="cboImages" onchange="LoadImage('imgPreview', MyForm.cboImages.value);">
			<option selected value="">Nessuna immagine</option>
			<option value="numbers/0.gif">0</option>
			<option value="numbers/2.gif">2</option>
			<option value="numbers/3.gif">3</option>
		</select
	*/
	document.getElementById(ImgElementId).src = FileName;
}

//
function loadImageByName(ImageName, FileName)
{
	/*  funzione per caricamento dinamico immagini da nome immagine e path	
	
		ImageName:	attributo "name" del tag <img>
		FileName:	percorso relativo del file d'immagine da caricare

	   Es:
		<img name="azienda" src="images/buttons/opt_sel_azienda_off.gif" alt="" border="0"
		onmouseout="LoadImageByName('azienda', 'images/buttons/opt_sel_azienda_off.gif')"
		onmouseover="LoadImageByName('azienda','images/buttons/opt_sel_azienda_on.gif')">
	*/

	if (document.images != null) document[ImageName].src = FileName;
}



//===========================================
// Forms e controlli
//===========================================
function formGetSubmit(frm, action)
{
	// Fa il submit del form frm con metodo get
	frm.action=action;
	frm.method="GET";
	frm.submit();
}

//
function formPostSubmit(frm, action)
{
	// Fa il submit del form frm con metodo post
	frm.action=action;
	frm.method="POST";
	frm.submit();
}

//
function findAndReplace(oField, textToFind, replaceText)
{
	// Trova e sostituisce textToFind con replaceText nel campo oField
    var currentText = oField.value
    
    if (currentText == null) return;
	if (textToFind == null) return;
	if (replaceText == null) return;
	
    // ottiene e verifica posizione del testo da cercare
    var iPos = currentText.indexOf(textToFind);		
    if (iPos == -1) return;

    currentText = currentText.replace(textToFind, replaceText);
    oField.value = currentText;
}

//
function setFocus(oField)
{
    // assegna focus al campo
    oField.focus();
}


//
function setMailField(oField, FieldDescription) 
{
    /* rende il campo oField un campo che accetta solo indirizzi eMail
	   FieldDescription è il nome user-friendly del campo gestito
	   ES: onbeforedeactivate="setMailField(this, 'EMail');"
    */

    var mailAddr = oField.value;

    if (mailAddr == '') return;
    
    if (!validateMail(mailAddr))
    {
        alert("L'indirizzo immesso nel campo '" + FieldDescription + "' non è un indirizzo eMail valido !");
        oField.value = '';
    }
}


//
function setNumericInt(oField, FieldDescription, IsOnDeactivate) 
{ 
    /* rende il campo oField un campo numerico per numeri interi
	   FieldDescription è il nome user-friendly del campo gestito
	   IsOnDeactivate: se vale true, in caso di carattere non valido viene cancellato tutto il campo
	  ES:	<input type="text" name="txtProva" onKeyUp="setNumericInt(this, 'C.A.P.');" onbeforedeactivate="setNumericInt(this, 'C.A.P.', true);"/>

	*/
	var bDeactivate = false;
	var bError = (isNaN(oField.value)); 

    if (IsOnDeactivate == null)
        bDeactivate = false;
    else
        bDeactivate = IsOnDeactivate;
        
	if ((!bError))
	{ 
		// Controlla:
		if (oField.value.substr(oField.value.length-1, 1) == ".") bError = true;
		if (oField.value.substr(oField.value.length-1, 1) == " ") bError = true;
	} 
	
    // nessun errore, verifica se è stato immesso un punto
    if (!bError)
        bError = (oField.value.substr(oField.value.length-1, oField.value.length) == '.');
        
	if (bError) 
	{ 
		alert("Il campo '" + FieldDescription + "' accetta solo caratteri numerici !"); 
		
		// cancella tutto il campo se in deactivate
		if (bDeactivate)
		    oField.value = '';
        else
		    oField.value = oField.value.substr(0, oField.value.length-1);
	} 
}

//
function setNumericDbl(oField, FieldDescription, IsOnDeactivate) 
{ 
    /* rende il campo oField un campo numerico per numeri con virgola mobile
	   FieldDescription è il nome user-friendly del campo gestito
	   IsOnDeactivate: se vale true, in caso di carattere non valido viene cancellato tutto il campo
	  ES:	<input type="text" name="txtProva" onKeyUp="setNumericDbl(this, 'C.A.P.');" onbeforedeactivate="setNumericDbl(this, 'C.A.P.', true);"/>
	*/
	var bDeactivate = false;
	var bError = (isNaN(oField.value)); 
    var AcceptDot = true;
    
    if (IsOnDeactivate == null)
        bDeactivate = false;
    else
        bDeactivate = IsOnDeactivate;
        
	// Se è stato immesso un valore numerico e controlla
	// la presenza di punti, la controlla
	if ((!bError) && (!AcceptDot))
	{ 
		// Controlla:
		if (oField.value.substr(oField.value.length-1, 1) == ".") bError = true;
		if (oField.value.substr(oField.value.length-1, 1) == " ") bError = true;
	} 

	if (bError) 
	{ 
		alert("Il campo '" + FieldDescription + "' accetta solo caratteri numerici !"); 
		
		// cancella tutto il campo se in deactivate
		if (bDeactivate)
		    oField.value = '';
        else
		    oField.value = oField.value.substr(0, oField.value.length-1);
	} 
}

//
function insertText(oField, Text)
{
	/* Inserisce il testo Text nel punto in cui si trova la
	   selezione nel campo oField   */
	if (document.all)
	{
		oField.focus();                     // IE, Opera
		var curRange = document.selection.createRange();
		// document.selection.createRange().text); restituisce il testo selezionato
		// alt:		window.getSelection()
		// alt:		document.getSelection()
	  	curRange.colapse;
	  	curRange.text = Text;
	}
	else if(oField.selectionEnd)
	{
		var lng = oField.textLength;        // Netscape, FireFox
		var from = oField.selectionStart;
		var to = oField.selectionEnd;
		oField.value = oField.value.substring(0,from) + Text + oField.value.substring(to,lng)
	}
	else oField.value += Text;

	oField.focus();
}


//===========================================
// Stringhe
//===========================================

function InStr(sourceString, searchString)
{
    // funzione Instr di VB6
    // restituisce 0 se non trovata corrispondenza
    if (sourceString == null || sourceString == '') return 0;
    if (searchString == null || searchString == '') return 0;
    return sourceString.indexOf(searchString) + 1;
}

//
function Replace(sourceString, stringToFind, stringReplace)
{   
    // funzione Replace di VB6    
    if (sourceString == null || sourceString == '') return '';
    if (stringToFind == null || stringToFind == '') return sourceString;
    
    if (stringReplace == null) stringReplace = '';

    var reg = new RegExp(stringToFind, 'gi');   // regExp per replace globale (g, tutte le occorrente) e case-insensitive (i)
    return sourceString.replace(reg, stringReplace);
}

//
function ReplaceEx(sourceString, stringToFind, stringReplace, global, caseinsensitive)
{   
    // funzione Replace di VB6 estesa
    // global:  se true fa il replace di tutte le occorrenze
    // caseinsensitive: se true fa replace case-insensitive
    var regexpFilter = '';
    
    if (sourceString == null || sourceString == '') return '';
    if (stringToFind == null || stringToFind == '') return sourceString;
    if (stringReplace == null || stringReplace == '') return sourceString;

    if (global) regexpFilter += 'g';
    if (caseinsensitive) regexpFilter += 'i';
    
    var reg = new RegExp(stringToFind, regexpFilter); 
    return sourceString.replace(reg, stringReplace);
}

//
function Trim(stringa)
{   
    // funzione Trim di VB6
    if (stringa == null) return '';
    if (stringa.length == 0) return '';
    
    while (stringa.substring(0,1) == ' ')
    {
        stringa = stringa.substring(1, stringa.length);    
    }

    while (stringa.substring(stringa.length-1, stringa.length) == ' ')     
    {
        stringa = stringa.substring(0,stringa.length-1);    
    }
    
    return stringa;
}

//
function RTrim(stringa)
{   
    // funzione RTrim di VB6
    if (stringa == null || stringa == '') return '';
    while (stringa.substring(stringa.length-1, stringa.length) == ' ')
    {   
        stringa = stringa.substring(0,stringa.length-1);    
    }
    return stringa;
}

//
function LTrim(stringa)
{   
    // funzione LTrim di VB6
    if (stringa == null || stringa == '') return '';
    while (stringa.substring(0,1) == ' ')
    {
        stringa = stringa.substring(1, stringa.length);
    }
    return stringa;
}

//
function TrimEx(stringa)
{   
    // funzione Trim estesa
    // elimina caratteri non alfanumerici
    return Trim(stringa);

    /*s = Replace(s, '?', '');
    s = Replace(s, '!', '');
    s = Replace(s, '"', '');
    s = Replace(s, '£', '');
    s = Replace(s, '$', '');
    s = Replace(s, '%', '');
    s = Replace(s, '&', '');
    s = Replace(s, '(', '');
    s = Replace(s, ')', '');
    s = Replace(s, '[', '');
    s = Replace(s, ']', '');
    s = Replace(s, '+', '');
    s = Replace(s, '-', '');
    s = Replace(s, '*', '');
    s = Replace(s, '/', '');
    s = Replace(s, '\\', '');
    s = Replace(s, '=', '');
    s = Replace(s, '_', '');
    s = Replace(s, '|', '');
    s = Replace(s, '\'', '');
    s = Replace(s, '^', '');
    s = Replace(s, '#', '');
    s = Replace(s, '°', '');
    s = Replace(s, '@', '');
    s = Replace(s, '§', '');
    s = Replace(s, '{', '');
    s = Replace(s, '}', '');
    */
}

//
function Left(stringa, len)
{
    // funzione Left$ di VB6
    var start = 0;
    
    if (start < 0 || len < 0) return '';
    var iEnd, iLen = String(stringa).length;
    
    if (start + len > iLen)
          iEnd = iLen;
    else
          iEnd = start + len;
    return String(stringa).substring(start,iEnd);
}

//
function Mid(stringa, start, len)
{
    // funzione Mid$ di VB6
    start = start -1;
    
    if (start < 0 || len < 0) return '';
    var iEnd, iLen = String(stringa).length;
    
    if (start + len > iLen)
          iEnd = iLen;
    else
          iEnd = start + len;
    return String(stringa).substring(start,iEnd);
}

//
function Len(stringa)
{
    // funzione Len di VB6
   if (stringa == null || stringa == '') return 0;
   return stringa.length;
}

//
function UCase(stringa)
{
    // funzione UCase di VB6
   if (stringa == null || stringa == '') return '';
   return stringa.toUpperCase();
}

//
function LCase(stringa)
{
    // funzione UCase di VB6
   if (stringa == null || stringa == '') return '';
   return stringa.toLowerCase();
}
