﻿/**
 * @author Paulo Martins <paulo.martins@wunderman.com.br>
 */
jQuery(function() {
    Jw._init();
});

var Jw = {
    _init: function() {
        try {
            Jw._analytics();
            Jw._navMenu();
            Jw._facebox();
            Jw._validaDataNascimento();
			Jw._clearFieldDate();
			Jw._changeFieldDate();
        }
        catch (e) {
            //console.log('Error: ' + e.description);
        }
    },

    _metrics: function() {
        if (window.location.host === "www.johnniewalker.com.br") {
            gaId = "UA-9769670-3"
        } else {
            gaId = "UA-9769600-3"
        }

        return gaId;
    },

    _analytics: function() {

        $('#terms, #policy, #contact-form').click(function() {
            var pageTracker = _gat._getTracker(Jw._metrics());
            pageTracker._trackPageview('/footer/' + this.id);
        })

    },

    _navMenu: function() {
        var menus = $('#menu li[class^=nav]');
	
		menus.each(function()
		{
			var sub = $('ul',this);
						
			if (sub.length == 0)
				return;
			
			var menu = this;
			var link = $('a:first',this);
			
			link.attr('href','javascript:void(0);');
			link.unbind('click');
		
			$(this).hover(
	      		function () 
	      		{
					if ($(menu)[0].isOpening)
						return;
									
					$(menu)[0].isOpening = true;
					
					$(menu).addClass("open");
					$(sub).slideDown("slow");
					
					$(menu)[0].isClosing = false;
					
	      		}, 
	      		function () 
	      		{	
	        		if ($(menu)[0].isClosing) 
	        			return;
	        		
	        		$(menu)[0].isClosing = true;
					
	        		$(sub).slideUp(250, function()
					{
						$(menu).removeClass("open");
						$(menu)[0].isOpening = false;
					});
	      		}
	    	);
		});

    },

    _facebox: function() {
        jQuery('a[rel*=facebox]').facebox()
    },

    _validaDataNascimento: function() {
        $('#form-nascimento').validate({
			
			submitHandler: function(form) {
				var dia = $('#dia').val();
				var mes = $('#mes').val();
				var ano = $('#ano').val();
				
				var idade = Jw._validaData(dia,mes,ano);
				
				if(idade == "erro") {
					$('p.erro').html('');
					$('p.erro').show();
					$('p.erro').html('Data inválida');
					return false;
				}
				
				if(idade == true) {
					this.submit();
				} else {
					$('p.erro').html('');
					$('p.erro').show();
					$('p.erro').html('Você deve ter idade legal para tomar bebidas alcoólicas');
				}
				
			},
			
            errorLabelContainer: $('p.erro'),

            highlight: function(element, errorClass) {
                $(element).addClass('error');
                $('p.erro').html('Preencha os campos corretamente');
            },

            rules: {
                dia: {
                    required: true,
                    number: true,
                    minlength: 2,
                    maxlength: 2
                },
                mes: {
                    required: true,
                    number: true,
                    minlength: 2,
                    maxlength: 2
                },
                ano: {
                    required: true,
                    number: true,
                    minlength: 4,
                    maxlength: 4
                }
            },

            messages: {
                dia: {
                    required: '',
                    number: '',
                    minlength: '',
                    maxlength: ''
                },
                mes: {
                    required: '',
                    number: '',
                    minlength: '',
                    maxlength: ''
                },
                ano: {
                    required: '',
                    number: '',
                    minlength: '',
                    maxlength: ''
                }
            }

        });
    },
    
    _validaData: function(dia,mes,ano) {
		/* the minumum age you want to allow in */
		var min_age = 18;

		/* change "age_form" to whatever your form has for a name="..." */
		var year = parseInt(ano, 10);
		var month = parseInt(mes, 10);
		var day = parseInt(dia, 10);
		
		if(Jw._isDate(day,month,year) == false) {
			return "erro";
		}
		
		var theirDate = new Date((year + min_age), month, day);
		var today = new Date;

		if ( (today.getTime() - theirDate.getTime()) < 0) {			
			return false;
		}
		else {
			return true;
		}
		
    },
	
	_isDate: function(day,month,year) {
	    year = parseInt(year, 10);
	    month = parseInt(month, 10);
	    day = parseInt(day, 10);
	    var date = new Date(year, month - 1, day);
	    var convertedDate = "" + date.getFullYear() + (date.getMonth() + 1) + date.getDate();
	    var givenDate = "" + year + month + day;
	    return (givenDate == convertedDate);
    },
	
	_clearFieldDate: function() {
		$('#dia, #mes, #ano').focus(function(){
			$(this).val('');
		})
	},
	
	_changeFieldDate: function() {
		$('#dia, #mes, #ano').keyup(function(){
			var n = this.value.length;
			if(n==2) {
				$(this).next('input').focus();
			}
		});
	}
    
}