﻿
// Identifico il browser /////////////////////////////////////////////////////////////////////////////////////////////////////////
var bName = Browser.Engine.name;
var bVers = Browser.Engine.version;

var ie6 = bName == 'trident' && bVers < 5 ? true : false;
var ie7 = bName == 'trident' && bVers == 5 && navigator.userAgent.indexOf('MSIE 7') > 0 ? true : false;
var ie8 = bName == 'trident' && bVers == 5 && navigator.userAgent.indexOf('MSIE 8') > 0 ? true : false;
var safari3 = bName == 'webkit' && bVers >= 420 ? true : false;
var ff3 = bName == 'gecko' && bVers >= 19 ? true : false;

// Funzioni gestione campo /////////////////////////////////////////////////////////////////////////////////////////////////////////
function emptyField(field) { if (field.defaultValue == field.value) { field.value = ''; } }
function fillField(field) { if (field.value == '') { field.value = field.defaultValue; } }

// Mostra il popup /////////////////////////////////////////////////////////////////////////////////////////////////////////
var cookiePopup_Name = 'popupMessage';
function showPopup(cassa, freq, width, height) {
    // Leggo il cookie per determinare se far apparire il messaggio
    var show = Cookie.read(cookiePopup_Name + cassa);
    if (show != 1 || freq <= 0) {
        Cookie.write(cookiePopup_Name + cassa, 1, { duration: freq, path: '/' });
        window.open('/Page.aspx', 'Page', 'width=' + width + ',height=' + height + ',toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=yes');
    }
}

// Mappa casse /////////////////////////////////////////////////////////////////////////////////////////////////////////
var logoMappa = null;
var logoCassa = null;
var logoLoader = null;
var logoDim = null;

function setLogo(id) {
    var qryStr = 'cassaid=' + id;
    var myRequest = new Request({
        onRequest: function () {
            logoCassa.setStyle('display', 'none');
            logoLoader.setStyle('display', 'block');
        },
        onCancel: function () { },
        onSuccess: function (responseText, responseXML) {
            logoLoader.setStyle('display', 'none');
            logoCassa.set('src', responseText).addEvent('load', function () {
                logoCassa.setStyle('display', 'inline');
                logoMappa.morph({ 'height': logoCassa.getSize().y });
            });
        },
        onFailure: function (instance) { alert("Errore durante l'operazione!"); },
        method: 'post',
        url: '/Logo.aspx'
    }).send(qryStr);
}

function overMappa(event, id) {
    if (!$type(logoCassa)) { logoCassa = $('logo-cassa'); }
    if (!$type(logoLoader)) { logoLoader = $('logo-loader'); }
    if (!$type(logoMappa)) {
        logoMappa = $('logo-mappa');
        logoMappa.setStyles({ 'opacity': 0, 'display': 'block' }).set('tween', {
            duration: 300,
            onComplete: function () {
                if (logoMappa.getStyle('opacity') == 0) {
                    logoCassa.setStyle('display', 'none');
                    logoLoader.setStyle('display', 'block');
                }
            }
        }).set('morph', { duration: 300 });
        logoDim = logoMappa.getSize();
    }
    event = new Event(event);
    logoMappa.setStyles({ 'top': event.page.y + 9, 'left': event.page.x + 9 });
    logoMappa.tween('opacity', 0.9);
    setLogo(id);
}

function outMappa() {
    logoMappa.tween('opacity', 0);
}

// Controllo indirizzi email /////////////////////////////////////////////////////////////////////////////////////////////////////////
function isEmail(emailStr) {
    // Formato user@domain e separazione di username e dominio
    var emailPat = /^(.+)@(.+)$/;
    // Pattern per ritrovare i caratteri speciali (non consentiti)
    var specialChars = "\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
    // Caratteri consentiti in username o domainname
    var validChars = "\[^\\s" + specialChars + "\]";
    // Username contenente spazi
    var quotedUser = "(\"[^\"]*\")";
    // domainName costituito da un indirizzo IP
    var ipDomainPat = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
    // Unità 'atomo' ovvero una serie di caratteri non speciali
    var atom = validChars + '+';
    // Una 'word' dell'username. L'username può essere costituito da più 'word'
    // separate da .
    var word = "(" + atom + "|" + quotedUser + ")";
    // Struttura dell'username
    var userPat = new RegExp("^" + word + "(\\." + word + ")*$");
    // Dominio sombolico
    var domainPat = new RegExp("^" + atom + "(\\." + atom + ")*$");

    // Controllo della sintassi username@domain e separazione dell'username dal
    // domain
    var matchArray = emailStr.match(emailPat);
    if (matchArray == null) {
        //alert("Email address seems incorrect (check @ and .'s)")
        return false;
    }
    var user = matchArray[1];
    var domain = matchArray[2];

    // User valido.
    if (user.match(userPat) == null) {
        //alert("The username doesn't seem to be valid.")
        return false;
    }

    // Indirizzo IP valido (nel caso in cui il domain sia un IP.
    var IPArray = domain.match(ipDomainPat);
    if (IPArray != null) {
        for (var i = 1; i <= 4; i++) {
            if (IPArray[i] > 255) {
                //alert("Destination IP address is invalid!")
                return false;
            }
        }
        return true;
    }

    // Domain è un nome simbolico
    var domainArray = domain.match(domainPat);
    if (domainArray == null) {
        //alert("The domain name doesn't seem to be valid.")
        return false;
    }

    // controllo sulla parte terminale del domain.

    // Spezzo il domain in 'atomi'
    var atomPat = new RegExp(atom, "g");
    var domArr = domain.match(atomPat);
    var len = domArr.length;
    if ((domArr[domArr.length - 1].length < 2) ||
	    (domArr[domArr.length - 1].length > 6)) {
        // alert("The address must end in a three-letter domain, or two letter country.")
        return false;
    }

    // Parte terminale del dominio preceduta da un host name.
    if (len < 2) {
        //var errStr="This address is missing a hostname!"
        //alert(errStr)
        return false;
    }

    return true;
}

// Controllo submit form /////////////////////////////////////////////////////////////////////////////////////////////////////////
var checkSubmitForm_Email = '';

function checkSubmitForm(sender) {
    sender = $(sender);

    var formsubmit = true;
    $$('.required-field').setStyle('display', 'none');

    var req = sender.getElements('.required-field');
    req.each(function (el) {
        var forceMessage = false;
        var prev = el.getPrevious('input');
        if (!prev) { prev = el.getPrevious('.privacy-nl-group'); }
        if (!prev) { prev = el.getPrevious('select'); }
        if (!prev) { prev = el.getPrevious('textarea'); }

        var fieldValue = '';
        if (prev.get('type') == 'checkbox') {
            fieldValue = prev.checked ? '1' : '';
        }
        else if (prev.className == 'email') {
            fieldValue = isEmail(prev.value) ? prev.value : '';
            checkSubmitForm_Email = fieldValue;
        }
        else if (prev.className == 'email-confirm') {
            fieldValue = isEmail(prev.value) ? prev.value : '';
            forceMessage = checkSubmitForm_Email != fieldValue;
        }
        else if (prev.className == 'privacy-nl-group') {
            var checkedRadio = prev.getChildren('input[type="radio"]:checked');
            if (checkedRadio.length > 0) {
                fieldValue = checkedRadio[0].value == "1" ? checkedRadio[0].value : '';
            }
        }
        else {
            if ($defined(prev.value)) {
                fieldValue = prev.value;
            }
        }

        if (fieldValue.length <= 0 || forceMessage) {
            prev.focus();
            el.setStyle('display', 'block');
            formsubmit = false;
        }

    });

    return formsubmit;
}

// Funzione back browser /////////////////////////////////////////////////////////////////////////////////////////////////////////
function browserBack(e) {
    e = new Event(e);
    e.preventDefault();
    history.back();
    return false;
}


/****************************************************************************************************/
/* GESTIONE CONTO DEPOSITO                                                                          */
/****************************************************************************************************/

var showContoDepositoSection = function (el) {

    if (el.getStyle('display') == 'none') {
        el.setStyles({ 'display': 'block', 'opacity': 0 });
        el.set('tween', { duration: 400 }).tween('opacity', 1);
    }

}

window.addEvent('domready', function () {

    $$('#section01,#section02,#section03').each(function (el) {
        el.store('otop', el.getPosition().y);
    });

    $$('#section01,#section02,#section03').setStyle('display', 'none');

    // click sulle ancore
    $$('.cd-nav a').addEvent('click', function (e) {

        e = new Event(e);
        e.preventDefault();

        var anchor = this.href.substring(this.href.indexOf('#'));
        var anchorID = anchor.substring(1);

        showContoDepositoSection($$(anchor));

        //var myFx = new Fx.Scroll(window).toElement(anchorID);
        var myFx = new Fx.Scroll(window).start(0, parseInt($(anchorID).retrieve('otop')));

    });

});

window.addEvent('scroll', function () {

    var bottomPage = $(window).getScroll().y + $(document).getSize().y;

    $$('#section01,#section02,#section03').each(function (el) {

        if (bottomPage > parseInt(el.retrieve('otop'))) {

            showContoDepositoSection(el);

        }

    });

});

