(function($) {
    
    BOX.addFormRule('zip', /^([0-9]{1}|[0-9]{5})$/);


    var linkPopins = {
        'id': {
            'storeLocatorPopin': {
                'url': '/_de/_de/minisites/store-locator/store-locator-popin.aspx'
            },
            'storeLocatorMaps': {
                'url': '/_de/_de/minisites/store-locator/store-locator-maps.aspx'
            },
            'storeLocatorDatas': {
                'url': '/_de/_de/minisites/store-locator/store-locator-datas.aspx'
            }
        }
    }
    
    var displayResults = function(datas) {
        $('#scrollStoreLocator').html(datas);
	                            
        LOP.scrolls.storeLocatorScrollPopin = new BOX.SimpleScroll({
            'target': $('#scrollStoreLocator')[0]
        });
        
        $('#scrollStoreLocator li a').click(function(e) {
            window.open(linkPopins.id.storeLocatorMaps.url + '?adresse=' + $(this).parents('li').find('p:eq(1)').html() + ', ' + $(this).parents('li').find('p:eq(2)').html(), 'storeLocatorMaps', 'height=427, width=930, top=100, left=100, toolbar=no, menubar=yes, location=no, resizable=no, scrollbars=no, status=no');
            e.preventDefault();
        });
    };

    LOP.popinOpeningActions.storeLocatorPopin = function(e) {
        
        $('<link rel="stylesheet" type="text/css" href="/_de/_de/minisites/store-locator/css/storeLocatorGlobal.css" />').appendTo('head');
        $('#wrapPopinStoreLocatorPopin').css('display', 'block');
        
        BOX.form('popinStoreLocatorPopin').addValidation(function(form) {
            form.text('zipcode').mustValidate(function(field) {
                if (field.isEmpty()) {
                    return l10n.errorMsg.required.zip;
                } else if (!field.isMatching('zip')) {
                    return l10n.errorMsg.invalid.zip;
                }
            });
            
            return l10n.errorMsg.form.plural;
        }, 'p.save').addListeners({
	        'formError': {
	            fn: LOP.addFormError
	        },
	        'formValid': {
	            //fn: LOP.removeFormError
	            fn: function(e, formEvent) {
	                LOP.removeFormError.call(this, e, formEvent);
	                formEvent.preventDefault();
	                //$('#wrapPopinStoreLocatorPopin').css('background','url(/_de/_de/minisites/store-locator/img/popin/storeLocatorPopinDataResponse.gif)');

	                $('#popinStoreLocatorPopinResponse').addClass('visible');
                    
	                //Appel AJAX
	                $.get(linkPopins.id.storeLocatorDatas.url + '?code=Skincare_' + BOX.form('popinStoreLocatorPopin').text('zipcode').getValue(), function(datas) {
	                    
	                    if (datas.indexOf('noData') > -1) {
	                        $.get(linkPopins.id.storeLocatorDatas.url + '?code=Skincare_' + BOX.form('popinStoreLocatorPopin').text('zipcode').getValue().charAt(0), function(datas) {
	                            displayResults(datas);
                        
                            });
	                    }
	                    else {
	                        displayResults(datas);
	                    }
                        
                    });//Fin de l'Appel AJAX
                    
	            }
	        },
	        'fieldError': {
	            'fn': LOP.manageFieldError
	        },
	        'fieldValid': {
	            'fn': LOP.manageFieldError
	        }
	    }).addReplacement();

	    LOP.tooltips.add({
			selector: '#popinStoreLocatorPopin:hover',
			ruleNamespace: 'formError',
			rule: function(el) {
				if (el.nodeName.toLowerCase() == 'img') {
					this.setHTML(el.alt).setAttributeCache(el, 'alt').setId('toolTipError');
				}
			}
		});
		
    };
    
    LOP.popinClosingActions.storeLocatorPopin = function(e) {
        BOX.form('popinStoreLocatorPopin', true);
        $('head link:last-child').remove();
        $('#wrapPopinStoreLocatorPopin').css('display', 'none');

    };
    
})(jQuery);