var log = function(x) {
    if (typeof console != 'undefined') {
        console.log(x);
    }
};

function createCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++){
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}
function eraseCookie(name) {
    createCookie(name,"",-1);
}

var autoInput = function(){
    var selecteur = 'input.auto';
    if (jQuery(selecteur).length) {
        var attribut  = 'title';
        var valeur    = 'value';
        var vide      = '';
        var elt       = jQuery(selecteur);
        elt.attr(valeur,elt.attr(attribut));
        elt.focus(function(){
            if(elt.val() == elt.attr(attribut)){
                elt.val(vide);
            }
        });
        elt.blur(function(){
            if(elt.val() == vide){
                elt.val(elt.attr(attribut));
            }        
        });
    }
};
var maps = function(){
    var selecteur = '#place'
    if (jQuery(selecteur).length) {
        var url = jQuery(selecteur).next('ul').find('a:first').attr('href');
        if(url == undefined){
            url = 'http://maps.google.fr/maps/ms?ie=UTF8&amp;hl=fr&amp;source=embed&amp;msa=0&amp;msid=115481926486899494492.000484a3acd6abd0779ab&amp;ll=48.872845,2.331848&amp;spn=0.130069,0.424347&amp;z=10';
        }
        jQuery(selecteur).html(''+
            '<p>'+
                '<iframe frameborder="0" '+
                        'src="' + url.replace('source','output') + '">'+
                '</iframe>'+
            '</p>'+
        '');
    }
};
var screenTop = function(){
    var body         = 'body';
    var anchorTop    = '#top a';
    var hide         = 'hide';
    var nbScreen     = 2;
    var jAnchorTop   = jQuery(anchorTop);
    var bodyHeight   = jQuery(body).height();
    var screenHeight = jQuery(window).height();
    jAnchorTop.show();
    if(screenHeight * nbScreen > bodyHeight){
        jAnchorTop.addClass(hide);
    }
};
var inscription = function(selecteur){
    var id     = '#';
    var classe = '.';
    var att    = 'name';
    if((jQuery(classe + selecteur).length)&&(jQuery(id + selecteur).length)){
        if(jQuery(id + selecteur)[0].checked){
            jQuery(classe + selecteur).show();
        }
        jQuery(id + selecteur).click(function(){
            if(this.checked){
                jQuery(classe + selecteur).slideDown();
            }else{
                jQuery(classe + selecteur).slideUp();        
            }
        });
    }
    else if((jQuery(classe + selecteur).length)&&(jQuery('[' + att +'=' + selecteur +']').length)){
        if(jQuery('[' + att +'=' + selecteur +']')[0].checked){
            jQuery(classe + selecteur).show();
        }
        jQuery('[' + att +'=' + selecteur +']').click(function(){
            if(jQuery('[' + att +'=' + selecteur +']')[0].checked){
                jQuery(classe + selecteur).slideDown();
            }else{
                jQuery(classe + selecteur).slideUp();            
            }
        });
    }
};

var validForm = function(selecteur){
    jQuery.validator.addMethod("numberInter",function(value, element, params){ 
        return this.optional(element) || /^[+]?([0-9]*[\.\s\-\(\)]|[0-9]+){3,24}$/.test(value); 
    });
    if (jQuery(selecteur).length) {
        var errors    = '#errors';
        var adresse   = '<input type="hidden" name="chkReqAddressMode" id="chkReqAddressMode" checked="checked" />';
        var messageS  = '<strong>Attention ! Votre saisie comporte une erreur ou un oubli : merci de bien vouloir la corriger.</strong>';
        var messageP  = '<strong>Attention ! Votre saisie comporte des erreurs ou des oublis : merci de bien vouloir la corriger.</strong>';
        var jErrors   = jQuery(errors);
        if((selecteur == '#step1')||(selecteur == '#step3')){
            jQuery(selecteur).append(adresse);
        }
        jQuery(selecteur).validate({
            focusInvalid:false,
            errorPlacement:function(error, element){
                error.appendTo(element.parent());
            },
            invalidHandler:function(form, validator){
                var errors = validator.numberOfInvalids();
                if (errors){
                    var message = errors == 1
                    ? messageS
                    : messageP;
                    jErrors.html(message);
                    jErrors.show();
                    jErrors.attr('tabindex','-1');
                    jErrors.focus();
                } else {
                    jErrors.html('');
                    jErrors.hide();
                }
            },
            errorContainer:errors,
            rules: {
                conditions:'required',
                edtPromoCode:{
                    required:'#chkPromoMode:checked'
                },
                edtReqCompany:{
                    required:'#chkCompanyMode:checked'
                },
                edtReqBadge:{
                    required:'#chkBadgeMode:checked'
                },
                edtReqAddress:{
                    required:'#chkReqAddressMode:checked'
                },                
                edtReqFirstName:'required',
                edtReqLastName:'required',
                edtReqPhone:{
                    required:true,
                    numberInter:true
                },
                edtReqEmail:{
                    required:true,
                    email:true
                }
            }
        });
    }
};
var tableTotal = function(selecteur){
    var table          = jQuery(selecteur).find('table');
    var tr             = table.find('tbody tr.participant');
    var conteneur      = '.option';
    var conteneurPrice = 'td.price';
    var hide           = 'hide';
    var point          = '.';
    var price          = 'span.price';
    var tfoot          = 'tfoot';
    var thead          = 'thead';
    var espace         = ' ';
    var not            = ':not';
    var radio          = 'input:radio';
    var checked        = 'input:checked';
    var contenuTFoot   = ''+
        '<tfoot>'+
            '<tr>'+
                '<td></td>'+
                '<td></td>'+
                '<td>'+
                    '<span>Total : </span><span class="price"></span><span> €</span>'+
                '</td>'+
                '<td></td>'+
            '</tr>'+
        '</tfoot>';
    var calculTotal = function(){
        var total = 0;
        tr.each(function(){
            total += parseInt(jQuery(this).find(conteneur + not + '(' + point + hide +')').find(price).text());
        });
        table.find(tfoot + espace + price).html(total);
    }
    var calculLignes = function(){
        tr.each(function(){
            jQuery(this).find(conteneurPrice + espace + conteneur).show().addClass(hide);
            var id = jQuery(this).find(checked).attr('id');
            jQuery(point+id).removeClass(hide);
        });
        calculTotal();
    }
    var init = function(){
        table.find(thead).after(contenuTFoot);
        calculLignes();
        action();
    }
    var action = function(){
        tr.find(radio).click(function(){
            calculLignes();
        });
    }
    init();
};

var pw = {
    input : document.getElementById('dhjug-dhjug')
};

function newsletter() {
    var input  = jQuery(pw.input);
    var form   = jQuery('#newsletter');
    var email  = document.getElementById('dhjug-dhjug');
    var filter = /^([a-zA-Z0-9_\+\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    form.attr('action','http://newsletter.paris-web.fr/t/r/s/dhjug/');

    var init = function(){
        var load = new Image();
        load.src = '\/img\/loading.gif';
        var success = new Image();
        success.src = '\/img\/success.png';        
        var error = new Image();
        error.src = '\/img\/error.png';
        form.bind('submit',function(e){
            e.preventDefault();
            form.find('strong').remove();
            if (!filter.test(email.value)) {
                input.parent().find('img').remove();
                input.parent().append('<label for="dhjug-dhjug" class="error"> <img width="24" height="24" title="Merci d’indiquez un courriel valide." alt="Merci d’indiquez un courriel valide." src="\/img\/error.png"><\/label>');
                var msg = input.parent().find('img')[0];
                email.state = 1;
                msg.tabIndex = -1;
                msg.focus();
            }
            else {
                input.parent().find('img').remove();
                input.parent().append('<img class="loading" width="24" height="24" title="Veuillez patienter…" alt="Veuillez patienter…" src="\/img\/loading.gif">');
                var data = encodeURI(form.serialize() + "&action=" + form[0].action);
                jQuery.ajax({
                    url: "/php/proxy.php",
                    type: "POST",
                    data: data,
                    success: function(html){
                        input.parent().find('img').remove();
                        input.parent().append('<img class="succes" width="24" height="24" title="Inscription correctement effectuée, merci !" alt="Inscription correctement effectuée, merci !" src="\/img\/success.png">');
                        var msg = input.parent().find('img')[0];
                        input.val('Courriel');
                        msg.tabIndex = -1;
                        msg.focus();
                        try {
                            pageTracker._trackPageview("/newsletter_signup");
                        } catch(e){log('google analytics not found');}
                    },
                    error: function(err){
                        alert("Nous sommes désolés mais une erreur est survenue.\n\n Merci de nous envoyer un e-mail à contact@paris-web.fr pour nous la signaler.")
                        input.parent().find('img').remove();
                        input.parent().append('<img width="24" height="24" title="Nous sommes désolés mais une erreur est survenue. " alt="Nous sommes désolés mais une erreur est survenue. " src="\/img\/error.png">');
                        var msg = input.parent().find('img')[0];
                        email.state = 1;
                        msg.tabIndex = -1;
                        msg.focus();
                    }
                });
            }
        });
    }();
}
jQuery(document).ready(function(){
    maps();
    autoInput();
    screenTop();
    inscription('chkCompanyMode');
    inscription('attendees_mode');
    inscription('chkReqAddressMode');
    inscription('chkPromoMode');
    inscription('chkBadgeMode');
    validForm('#step1');
    validForm('#step2ajouter');
    validForm('#step3');
    tableTotal('#step2');
    tableTotal('#step2ajouter');
    newsletter();
});
