﻿var hdp = hdp || {};

hdp.inArray = function(v,a) {
    for(var i in a) {
        if(v === a[i]) {
            return true;
        }
    }
    return false;
}

hdp.tracking = {
	trackPageview : function(trackingParam) {
		pageTracker._trackPageview(trackingParam);
	},
	trackEvent : function(category, action, label, value) {
		pageTracker._trackEvent(category, action, label, value);
	},
	linkByPost : function(url) {
		pageTracker._linkByPost(url);
	},
	link : function(url) {
		pageTracker._link(url);
	}
}

hdp.gateway = {
    renderSwfObject : function() {
        var txtLocation = $('.hdp-gateway-country label').text();
        var txtPleaseSelect = $('.hdp-gateway-country select option:first').text();
		var defaultCountry = $('.hdp-gateway-country select').attr('value');
        var fieldOrder = 'dmy';
        var txtDay = $('.hdp-gateway-dob label:eq(0)').text();
        var txtMonth = $('.hdp-gateway-dob label:eq(1)').text();
        var txtYear = $('.hdp-gateway-dob label:eq(2)').text();
		var initialValues = '';
        var txtOverLda = '';
		var dobCheckBox = false;
        
		if ($('.hdp-gateway-dob').length && $('.hdp-gateway-dob input')[0].id.toLowerCase().indexOf('day') === -1) {
            fieldOrder = 'mdy';
            txtDay = $('.hdp-gateway-dob label:eq(1)').text();
            txtMonth = $('.hdp-gateway-dob label:eq(0)').text();
			initialValues = $('.hdp-gateway-dob input:first')[0].value + '-' + $('.hdp-gateway-dob input')[1].value + '-' + $('.hdp-gateway-dob input')[2].value;
        }
        
        if ($("li[key='DateOfBirthCheckbox']").length) {
			dobCheckBox = true;
            txtOverLda = $("li[key='DateOfBirthCheckbox']").children('span:last').text();
        }
	
        var countriesService = "gatewayCountries.ashx";
        var flashvars = {dobCheckBox:dobCheckBox,initialValues:initialValues, valuesOrder:fieldOrder, gateWayCountriesService:countriesService, defaultCountry:defaultCountry, locale:hdp.config.locale, basepath:'assets/global/flash/', copyLocation:encodeURIComponent(txtLocation), copyPleaseSelect:encodeURIComponent(txtPleaseSelect), copyDay:encodeURIComponent(txtDay), copyMonth:encodeURIComponent(txtMonth), copyYear:encodeURIComponent(txtYear), copyOverLda:encodeURIComponent(txtOverLda)};
        var params = {allowScriptAccess:"always", wmode:"transparent"};
        var attributes = {};
	    swfobject.embedSWF("assets/global/flash/Heineken_ageGate.swf", "hdp-gateway-flash-fields", "665", "217", "9.0.0", "assets/global/flash/expressInstall.swf", flashvars, params, attributes, this.swfObjectLoaded);
    },
    swfObjectLoaded : function() {
        if($('object#hdp-gateway-flash-fields').length) { 
            $('.hdp-gateway-country').css('display', 'none');
            $('.hdp-gateway-dob').css('display', 'none');
			$('.hdp-gateway-restrictions').css('display', 'none');
            $('object#hdp-gateway-flash-fields').css('display', 'block');          
        }
    },
    toggleDefaultValues : function() {
        var default_values = new Array();
        
        $("input.has-default").focus(function() {
            if (!default_values[this.id]) {
                default_values[this.id] = this.value;
            }
            
            if (this.value == default_values[this.id]) {
                this.value = '';
            }
            
            $(this).blur(function() {
                if (this.value == '') {
                    this.value = default_values[this.id];
                }
            });
        });
    },
    isLeapYear : function(yr) {
      return new Date(yr,2-1,29).getDate() === 29;
    }
}

hdp.gateway.validate = function() {
    var _this = {
        init: function() {
            $('.hdp-gateway-actions').after('<div class="hdp-gateway-error error-country"></div><div class="hdp-gateway-error error-dob"></div>');
            $('.hdp-gateway-actions a.linkBtn').toggleClass('hdp-hide').click(function() {
                $('form').validate().form();
                if($('form').valid()) {
                    __doPostBack('AgeGateway1$LinkButton2', '');
                }
                return false; 
            })
            $('.hdp-gateway-actions a.linkBtnCoo').css('display','block').click(function() {
                $('form').validate().form();
                if ($('form').valid()) {
                    __doPostBack('AgeGateway1$LinkButton3', '');
                }
                return false;
            })
            $('.hdp-gateway-country input,.hdp-gateway-actions input').toggleClass('hdp-hide');

            var countryField = $('.hdp-gateway-country select');
            var dayField = $('.dob-day');
            var monthField = $('.dob-month');
            var yearField = $('.dob-year');
            var shortMonths = [2, 4, 6, 9, 11];
            var checkBoxGroup = '';
            
            if( $(".hdp-gateway input[type='checkbox']").length ) {
                $(".hdp-gateway input[type='checkbox']").each(function(i, e){
                    checkBoxGroup += $(e).attr('name') + ' ';
                });
            }
            
            $('form').validate({ //sets the validation for form in current page
                errorElement: 'p',
                onfocusout: false,
                onkeyup: false,
                onclick: false,
                groups: {
                    dob: dayField.attr('name') + ' ' + monthField.attr('name') + ' ' + yearField.attr('name'),
                    restrictions: checkBoxGroup
                },
                /*messages: {
                    AgeGateway1$CountryOfOrigin: countryField.attr('title'),
                    AgeGateway1$DayTextBox: dayField.attr('title'),
                    AgeGateway1$MonthTextBox: monthField.attr('title'),
                    AgeGateway1$YearTextBox: yearField.attr('title')
                },*/
                errorPlacement: function(error, element) {
                    if (element.attr("name") == $('.hdp-gateway-country select').attr('name')) {
                        $('.error-country').append(error);
                    }
                    else {
                        $('.error-dob').append(error);
                    }
                },

                showErrors: function(errorMap, errorList) {
                    this.defaultShowErrors();
                    Cufon.refresh();
                }
            });

            if (dayField.length) {
                dayField.rules("add", {
                    minlength: 1,
                    maxlength: 2,
                    number: true,
                    range: [1, 31],
                    chkDobDay: true
                });
            }

            if (monthField.length) {
                monthField.rules("add", {
                    minlength: 1,
                    maxlength: 2,
                    number: true,
                    range: [1, 12]
                });
            }

            if (yearField.length) {
                yearField.rules("add", {
                    minlength: 2,
                    maxlength: 2,
                    number: true
                });
            }
            
            if( $(".hdp-gateway input[type='checkbox']").length ) {
                $(".hdp-gateway input[type='checkbox']").each(function(i, e){
                    
                    $(e).rules("add", {
                        required: true/*,
                        messages: {
                            required: $(e).attr('title')
                        } */
                    });
                });
            }

            $.validator.addMethod("chkDobDay", function() { //add custom validation method for DOB day
                var day = parseInt(dayField.attr('value'));
                var month = parseInt(monthField.attr('value'));
                var year = parseInt(yearField.attr('value'));
                var daysInFeb = hdp.gateway.isLeapYear(year) ? 29 : 28;

                if (hdp.inArray(month, shortMonths)) {
                    if (month === 2) {
                        return !(day > daysInFeb);
                    } else {
                        return !(day == 31)
                    }
                } else {
                    return true;
                }
            }, dayField.attr('title'));
        }
    }
    return _this;
} ();

Cufon.replace('a,p,h3,h4,h5,li,.cufonise, .hdp-gateway-error-panel p', {
    fontFamily: 'Futura Condensed Medium'
});

Cufon.replace('h1,h2,label,label.error,.hdp-gateway-actions a, .hdp-gateway-error-panel a', {
    fontFamily: 'Futura LT Pro Medium Cond',
    fontStretch: 'condensed'
});  

function setDate(day, month, year){
	$('.dob-day').attr('value',day);
	$('.dob-month').attr('value',month);
	$('.dob-year').attr('value',year);
}

function setCheckBox(){
	var overLDAChkbox = $("li[key='DateOfBirthCheckbox'] input");
	if (overLDAChkbox.attr('checked')) {
		overLDAChkbox.attr('checked',false);
	} else {
		overLDAChkbox.attr('checked',true)
	}
}

function setCountry(countryID){
	$('.hdp-gateway-country select').attr('selectedIndex',countryID+1);
	hdp.tracking.trackPageview('/global/agegateway/country.flashLink');
	__doPostBack('AgeGateway1$CountryOfOrigin', '');
}

function sendTracking(day, month, year) {
	hdp.tracking.trackPageview('/global/agegateway/dob.flashLink');
}

function hitEnter(day, month, year) {
	setDate(day,month,year);
	sendTracking(day, month, year);
	$('.hdp-gateway-actions a').trigger('click');
}

function hideCountryError() {
	$('.error-country p').addClass('hdp-hide');
}

$(document).ready(function(){
	// Only render DOB SWF stuff check if we haven't already failed!
	if ($('.hdp-gateway-country').length) {
		hdp.gateway.renderSwfObject();
		hdp.gateway.validate.init();
		hdp.gateway.toggleDefaultValues();
	}
});
