document.write('<script language="JavaScript" type="text/javascript" src="/js/utility.js"></script>');

// - la funzione adatta le vetrine dell'home page alla risoluzione della pagina ed applica su di esse e sugli ultimi annunci un wordWrap
function adjustLayout(showcaseAdsSize, lastAdsSize)
    {
    // ciclo per le vetrine
    for(var i=0; i<showcaseAdsSize; i++)
        {
        wordWrapNoTags('vetrDesHref'+i);
        if(screenWidth<=800)
            {
            prendiElementoDaId('vetrTit'+i).style.height = 35;
            prendiElementoDaId('vetrDes'+i).style.height = 200;
            }
        }

    // ciclo per gli ultimi annunci pubblicati
    for(var i=0; i<lastAdsSize; i++)
        {
        wordWrap('annunciLastHref'+i);
        }
    }

// - la funzione consente l'apertura dei tooltip url sottoposti ad urlsGrabber privandoli dei tags html di evidenziazione
function openTooltipUrl(strUrl)
    {
    // rimuovo i tags di <i>evidenziazione</i>
    strUrl = replaceWord(strUrl, '</?i>', '');

    if(confirm('Verrà aperta la pagina ' + strUrl + ', si desidera continuare?'))
        {
        // apro l'url in un popup
        wndOpenUrl(strUrl, 'ExternalURL', '800', '600', '0', '0', 'yes', 'yes');
        }
    }

// - la funzione consente l'apertura dei tooltip mail sottoposti ad mailsGrabber privandoli dei tags html di evidenziazione
function openTooltipMail(strMail)
    {
    // rimuovo i tags di <i>evidenziazione</i>
    strMail = replaceWord(strMail, '</?i>', '');

    if(confirm('Si desidera inviare una e-mail a ' + strMail + '?'))
        {
        // apro il link mailto
        top.location.href = 'mailto:' + strMail;
        }
    }

function manageNoSelectedSearchFields(currForm)
	{
	// consente l'invio di un valore di default per i campi checkbox non selezionati (es.: 'cerca_descrizione')
	if(currForm && !currForm.cerca_descrizione.checked)
		{
		currForm.cerca_descrizione.value = 'no';
		currForm.cerca_descrizione.checked = true;
		}
	}

var wordSuggestion = '';
var locationSuggestion = '';
function setSearchSuggestion(wordField, _wordSuggestion, locationField, _locationSuggestion)
	{
	if(trim(wordField.value)=='' && trim(locationField.value)=='')
		{
		wordField.value = _wordSuggestion;
		wordField.style.color = '#999';
		
		locationField.value = _locationSuggestion;
		locationField.style.color = '#999';
		}
	
	wordSuggestion = _wordSuggestion;
	locationSuggestion = _locationSuggestion;
	}

function resetSearchSuggestion(wordField, locationField)
	{
	if(wordField.value==wordSuggestion)
		{
		wordField.value = '';
		wordField.style.color = 'black';
		}
	if(locationField.value==locationSuggestion)
		{
		locationField.value = '';
		locationField.style.color = 'black';
		}
	}

function getSimpleSearchCriteria(simpleSearchForm, locationSearchForm)
	{
	// il metodo sovrascrive i due campi hidden del form 'ricercaLocalita'
	if(simpleSearchForm && locationSearchForm)
		{
		var cercaCriterio = validateRadioButton(simpleSearchForm.cerca_criterio);
		var cercaDescrizione = simpleSearchForm.cerca_descrizione.value;
		var isCercaDescrizioneChecked = simpleSearchForm.cerca_descrizione.checked;
		
		if(cercaCriterio!=null)
			{
			locationSearchForm.cerca_criterio.value = cercaCriterio;
			}
		
		if(isCercaDescrizioneChecked)
			{
			locationSearchForm.cerca_descrizione.value = cercaDescrizione;
			}
		else{
			locationSearchForm.cerca_descrizione.value = 'no';
			}
		}
	}

function checkSimpleSearchCriteria(locationSearchForm)
	{
	if(trim(locationSearchForm.word.value)=='')
		{
		alert('Specificare un termine di ricerca!');
		return false;
		}
	return true;
	}

function advancedSearch()
    {
    var targetUrl = 'ricercaAvanzata.jsp';
    if(document.ricercaSemplice)
        {
        // ricerca di eventuali parametri ereditabili dalla ricerca semplice
        var cercaCriterioValue = validateRadioButton(document.ricercaSemplice.cerca_criterio);
        if(cercaCriterioValue!=null)
            {
            targetUrl += '?cerca_criterio=' + cercaCriterioValue;
            }
	targetUrl += (targetUrl.indexOf('?')!=-1 ? '&' : '?') + 'cerca_descrizione=' + (document.ricercaSemplice.cerca_descrizione.checked ? document.ricercaSemplice.cerca_descrizione.value : 'no');
        targetUrl += (targetUrl.indexOf('?')!=-1 ? '&' : '?') + 'word=' + document.ricercaSemplice.word.value;
        targetUrl += (targetUrl.indexOf('?')!=-1 ? '&' : '?') + 'location=' + document.ricercaSemplice.location.value;
        }
    top.location.href = targetUrl;
    }

// - validazione sul form di login/registrazione utente
function checkUserForm(currForm)
    {
    var username = trim(currForm.user.value);
    var password = trim(currForm.psw.value);

    switch(currForm.name)
        {
        case 'loginForm':
            {
            // validazione username
            if(username== '')
                {
                alert('Indicare la propria username');
                currForm.user.focus();
                return false;
                }
            // validazione password
            if(password== '')
                {
                alert('Indicare la propria password');
                currForm.psw.focus();
                return false;
                }
            break;
            }
        case 'recordForm':
            {
            var passwordConfirm = trim(currForm.confirm_psw.value);
            var email = trim(currForm.mail.value);
            var regolamento = currForm.regolamento;

            // validazione username
            if(username== '')
                {
                alert('Scegliere la propria username');
                currForm.user.focus();
                return false;
                }

            // validazione password
            if(password== '')
                {
                alert('Scegliere la propria password');
                currForm.psw.focus();
                return false;
                }
            if(passwordConfirm== '')
                {
                alert('Digitare nuovamente la propria password');
                currForm.confirm_psw.focus();
                return false;
                }
            if(password != passwordConfirm)
                {
                alert('La password non è stata digitata correttamente!');
                currForm.confirm_psw.focus();
                return false;
                }

            // validazione mail
            if(email == '')
                {
                alert('Indicare il proprio indirizzo e-mail');
                currForm.mail.focus();
                return false;
                }
            else if(!isValidMail(email))
                {
                alert('L\'indirizzo e-mail specificato non è valido!');
                currForm.mail.focus();
                return false;
                }

            // validazione regolamento
            if(!regolamento.checked)
                {
                alert('Esprimere il consenso all\'informativa sulla privacy');
                currForm.regolamento.focus();
                return false;
                }
            break;
            }
        }

    return true;
    }

// - validazione sul form di modifica account
function checkModifyUserForm(currForm)
    {
    var email = trim(currForm.email.value);

    // validazione mail
    if(email == '')
        {
        alert('Indicare il proprio indirizzo e-mail');
        currForm.email.focus();
        return false;
        }
    else if(!isValidMail(email))
        {
        alert('L\'indirizzo e-mail specificato non è valido!');
        currForm.email.focus();
        return false;
        }

    return true;
    }

// - validazione sul form d'inserimento/modifica/ripubblicazione annunci
function checkForm(currForm, isEditMode)
    {
    var blackListIntestazione = new Array('VENDO', 'VENDESI', 'VENDOSI', 'OFFRO', 'OFFRESI');

    // validazione tipo annuncio
    var tipoAnnuncio = validateRadioButton(currForm.TIPO_ANNUNCIO);
    if(tipoAnnuncio == null)
        {
        alert('Selezionare il tipo di annuncio che si desidera pubblicare');
        currForm.elements["TIPO_ANNUNCIO"][0].focus();
        return false;
        }

    // validazione intestazione
    var intestazione = trim(currForm.INTESTAZIONE.value);
    if(intestazione == '')
        {
        alert('Indicare un titolo che descriva bene l\'annuncio');
        currForm.INTESTAZIONE.focus();
        return false;
        }
    for(var i=0; i<blackListIntestazione.length; i++)
        {
        if(intestazione.toUpperCase() == blackListIntestazione[i])
            {
            alert('Il titolo dell\'annuncio è troppo generico! Evitare parole come ' + replaceWord(blackListIntestazione.toString(), ',', ', ') + ' ed indicare piuttosto un titolo che descriva bene l\'annuncio!');
            currForm.INTESTAZIONE.focus();
            return false;
            }
        }

    // validazione descrizione
    if(trim(currForm.DESCRIZIONE.value)== '')
        {
        alert('Specificare una breve descrizione per l\'annuncio');
        currForm.DESCRIZIONE.focus();
        return false;
        }

    // validazione prezzo
    var prezzoIntero = trim(currForm.PREZZO_I.value);
    var prezzoDecimale = trim(currForm.PREZZO_D.value);
    if(prezzoDecimale == '' || prezzoDecimale == '0')
        {
        prezzoDecimale = '00';
        }
    if(!isNumeric(prezzoIntero) || !isNumeric(prezzoDecimale))
        {
        alert('Il prezzo deve essere un valore numerico!');
        !isNumeric(prezzoIntero) ? currForm.PREZZO_I.focus() : currForm.PREZZO_D.focus();
        return false;
        }
    if(parseInt10(prezzoIntero)<0 || parseInt10(prezzoDecimale)<0)
        {
        alert('Il prezzo deve essere positivo!');
        parseInt10(prezzoIntero)<0 ? currForm.PREZZO_I.focus() : currForm.PREZZO_D.focus();
        return false;
        }

    // validazione durata annuncio (inserimento e ripubblicazione)
    if(!isEditMode)
        {
        if(currForm.SCADENZA[currForm.SCADENZA.selectedIndex].value == "")
            {
            alert('Specificare la durata dell\'annuncio');
            currForm.SCADENZA.focus();
            return false;
            }
        }

    // validazione provincia
    if(currForm.PROVINCIA[currForm.PROVINCIA.selectedIndex].value == "")
        {
        alert('Specificare la provincia di riferimento per l\'annuncio');
        currForm.PROVINCIA.focus();
        return false;
        }

    // validazione e-mail
    var email = trim(currForm.EMAIL_CONTATTI.value);
    if(email == '')
        {
        alert('Indicare un indirizzo e-mail valido');
        currForm.EMAIL_CONTATTI.focus();
        return false;
        }
    else if(!isValidMail(email))
        {
        alert('L\'indirizzo e-mail non è valido!');
        currForm.EMAIL_CONTATTI.focus();
        return false;
        }

    return true;
    }

// - validazione sul form di sendMail
function checkSendMailForm(currForm)
    {
    switch(currForm.name)
        {
        case 'sendMailForm':
            {
            var subject = trim(currForm.subject.value);
            var messageText = trim(currForm.messageText.value);
            var from = trim(currForm.from.value);
            var controlCode = trim(currForm.controlCode.value);

            // validazione subject
            if(subject== '')
                {
                alert('Indicare l\'oggetto dell\'e-mail');
                currForm.subject.focus();
                return false;
                }
            // validazione messageText
            if(messageText== '')
                {
                alert('Specificare il testo del messaggio');
                currForm.messageText.focus();
                return false;
                }
            // validazione from
            if(from== '')
                {
                alert('Specificare la propria e-mail');
                currForm.from.focus();
                return false;
                }
            else if(!isValidMail(from))
                {
                alert('L\'indirizzo e-mail indicato non è valido!');
                currForm.from.focus();
                return false;
                }
            // validazione controlCode
            if(controlCode== '')
                {
                alert('Specificare il codice di controllo');
                currForm.controlCode.focus();
                return false;
                }
            else{
                var randomCodeLength = parseInt10(currForm.randomCodeLength.value);
                if(controlCode.length != randomCodeLength)
                    {
                    alert('Il codice di controllo deve essere di ' + randomCodeLength + ' caratter' + (randomCodeLength>0 ? 'i' : 'e') + '!');
                    currForm.controlCode.focus();
                    return false;
                    }
                }
            break;
            }
        case 'sendMailFriendForm':
            {
            var to = trim(currForm.to.value);
            var fromAlias = trim(currForm.fromAlias.value);
            var from = trim(currForm.from.value);
            var controlCode = trim(currForm.controlCode.value);

            // validazione to
            if(to== '')
                {
                alert('Specificare l\'indirizzo e-mail del destinatario');
                currForm.to.focus();
                return false;
                }
            else if(!isValidMail(to))
                {
                alert('L\'indirizzo e-mail del destinatario non è valido!');
                currForm.to.focus();
                return false;
                }
            // validazione fromAlias
            if(fromAlias== '')
                {
                alert('Specificare il proprio nome');
                currForm.fromAlias.focus();
                return false;
                }
            // validazione from
            if(from== '')
                {
                alert('Specificare la propria e-mail');
                currForm.from.focus();
                return false;
                }
            else if(!isValidMail(from))
                {
                alert('L\'indirizzo e-mail indicato non è valido!');
                currForm.from.focus();
                return false;
                }
            // validazione controlCode
            if(controlCode== '')
                {
                alert('Specificare il codice di controllo');
                currForm.controlCode.focus();
                return false;
                }
            else{
                var randomCodeLength = parseInt10(currForm.randomCodeLength.value);
                if(controlCode.length != randomCodeLength)
                    {
                    alert('Il codice di controllo deve essere di ' + randomCodeLength + ' caratter' + (randomCodeLength>0 ? 'i' : 'e') + '!');
                    currForm.controlCode.focus();
                    return false;
                    }
                }

            break;
            }
        case 'sendMailAbuseForm':
            {
            var messageText = trim(currForm.messageText.value);
            var from = trim(currForm.from.value);
            var controlCode = trim(currForm.controlCode.value);

            // validazione messageText
            if(messageText== '')
                {
                alert('Specificare il testo del messaggio');
                currForm.messageText.focus();
                return false;
                }
            // validazione from
            if(from== '')
                {
                alert('Specificare la propria e-mail');
                currForm.from.focus();
                return false;
                }
            else if(!isValidMail(from))
                {
                alert('L\'indirizzo e-mail indicato non è valido!');
                currForm.from.focus();
                return false;
                }
            // validazione controlCode
            if(controlCode== '')
                {
                alert('Specificare il codice di controllo');
                currForm.controlCode.focus();
                return false;
                }
            else{
                var randomCodeLength = parseInt10(currForm.randomCodeLength.value);
                if(controlCode.length != randomCodeLength)
                    {
                    alert('Il codice di controllo deve essere di ' + randomCodeLength + ' caratter' + (randomCodeLength>0 ? 'i' : 'e') + '!');
                    currForm.controlCode.focus();
                    return false;
                    }
                }

            break;
            }
        }

    return true;
    }

// - ajax loader: lista comuni per provincia
function ajaxComuniLoader(provFullInfo, idComune, contextPath, comuniElementId)
    {
    var idProv = -1;
    var descrProv = '';
    if(provFullInfo!='')
        {
        if(provFullInfo.indexOf('^')!=-1)
            {
            var provAr = provFullInfo.split('^');
            idProv = provAr[0];
            descrProv = provAr[1];
            }
        }

    var req = getXmlHttpRequestObject();
    if(req!=null)
        {
        var url = contextPath + "/ajaxComuniLoader.jsp?id_prov=" + idProv + "&id_comune=" + idComune;
        req.open("get", url, true);
        //req.setRequestHeader('Content-Type','text/*');
        req.onreadystatechange = function()
            {
            if(req.readyState==4)   // complete
                {
                if(req.status==200) // ok response
                    {
                    var comuniSelect = req.responseText;
                    prendiElementoDaId(comuniElementId).innerHTML = comuniSelect;
                    }
                }
            }
        req.send(null);
        }
    else{
        prendiElementoDaId(comuniElementId).innerHTML = '<span class="intermediochiaro">lista comuni non disponibile' + (descrProv!='' ? (' per <b>'+descrProv+'</b>') : '') + '</span>';
        }
    }

