var nearAdress = {
    maporamaDirectory: 'accor',
    maporamaSiteOrigin: 'ALL',
    
    init : function(){
		
        //language
        this.lang = jQuery("html").attr("lang");
        //others
        this.urlMap ="/scripts-v66/booking/common/json/carto/map_"+nearAdress.lang+".json";
		
        //request pour récupérer le contexte site
        ajaxRequest._executeByUrl(
            "/bean/getViewBeans.action?beans=CurrenciesViewBean|OriginViewBean",
            "validatorInvalidState",
            "nearAdress.success(errors, response)"
            );
		
        /* Ecouteur de recherche près d'une adresse */
        jQuery("#filter-address-search-address").click(function(){ 
            jQuery("form.search-address").show();
            jQuery("form.search-site").hide();
            nearAdress.resetErrorMessage();
        });
        
        /* Ecouteur de recherche près d'un site touristique */
        jQuery("#filter-address-search-site").click(function(){ 
            jQuery("form.search-address").hide();
            jQuery("form.search-site").show();
            nearAdress.resetErrorMessage();
        });
		
		
        /* toggle search mode */
        function init_searchMode(){

            var anchorvalue = "";
            var url = document.location;

            var strippedUrl = url.toString().split("#");
            if(strippedUrl.length > 1) anchorvalue = strippedUrl[1];

            jQuery(".navPart #smNearPOIsearch").bind("click", function() {
                jQuery(".navPart li").removeClass("on");
                jQuery(this).addClass("on");
            });

            jQuery(".navPart #smNearAnAddressSearch").bind("click", function() {
                jQuery(".navPart li").removeClass("on");
                jQuery(this).addClass("on");
            });

            if(anchorvalue == "POIsearch")  {
                //fix ie bug
                jQuery("#smNearPOIsearch").addClass("on");

                jQuery("#smNearPOIsearch a").click();
            } else if (anchorvalue == "AddressSearch") {
                //fix ie bug
                jQuery("#smNearAnAddressSearch").addClass("on");

                jQuery("#smNearAnAddressSearch a").click();
            }
        }

        init_searchMode();
		
		
    },

    success : function(errors, json){
        if(json.viewBeans && json.viewBeans.CurrenciesViewBean && json.viewBeans.OriginViewBean ){
            nearAdress.maporamaDirectory = json.viewBeans.OriginViewBean.maporamaDirectory;
            nearAdress.maporamaSiteOrigin = json.viewBeans.OriginViewBean.maporamaSiteOrigin;
        }
		
        // récriture du paramètre siteOrigine pour maporama et du paramètre xml
        jQuery("input[name='siteOrigine']").val(nearAdress.maporamaSiteOrigin);
        if(nearAdress.maporamaSiteOrigin=="BUS" || nearAdress.maporamaSiteOrigin == "TRV")	jQuery("input[name='xml']").val("resa2010pro");

        // load options
        nearAdress.selectContent();
		
        //submit form
        nearAdress.subForm();
    },
	
    selectContent : function() {
        jQuery.getJSON(nearAdress.urlMap,
            function(data){
                var items = data.page.forms.common.countries.list.item;
                var options = data.page.forms.poi.categories.option;
                if(jQuery("select.tMapCountry")) {// load countries
                    jQuery.each(items, function(i,item){
                        if ( item.formap != 0 ) {
                            jQuery("select.tMapCountry").append('<option value="'+item.code+'">'+item.name+'</option>');
                        }
                    });
                }
                if(jQuery("select.tMapCategory")) {//load categories
                    jQuery.each(options, function(i,option){
                        jQuery("select.tMapCategory").append('<option value="'+option.code+'">'+option.name+'</option>');
                    });
                }
			
                // specific for hotelf1 : pre-select France
                if (nearAdress.maporamaSiteOrigin == 'HOF'){
                    jQuery("select.tMapCountry option[value=]").attr("selected", "");
                    jQuery("select.tMapCountry option[value=FR]").attr("selected", "selected");
                }

            });
    },
	
    /** City, ZIP code and country check */
    isError : false,
    subForm : function() {
        jQuery(".tSubmit").click(function(){
            nearAdress.checkForm();
            if (nearAdress.isError) {
                jQuery('.errorMessage').show();
            } else {
                jQuery(this).parents("form").submit();
            }
            return false;
        });
    },
    checkForm:function(city,zip){
        var country = jQuery("form:visible select[name='GC_country'] option:selected");
        var city = jQuery("form:visible input[name='GC_city']");
        var zip = jQuery("form:visible input[name='GC_zip']");
			
        nearAdress.isError = false;
        jQuery('.errorMessage').find('p').remove();
			
        nearAdress.checkCountry(country);
        nearAdress.checkCity(city,zip);
    },
    checkCountry: function(country){
        if (country.val() == '') {
            country.parent().parent().addClass('validatorInvalidState');
            jQuery('.errorMessage').append('<p>'+i18n.maporama.errorCountry+'</p>');
            nearAdress.isError = true;
        } else {
            country.parent().parent().removeClass('validatorInvalidState');
        }
    },
    checkCity: function(city,zip){
        if ((city.val() == '' && zip.val() == '')) {
            city.parent().addClass('validatorInvalidState');
            zip.parent().addClass('validatorInvalidState');
            jQuery('.errorMessage').append('<p>'+i18n.maporama.errorCity+'</p>');
            nearAdress.isError = true;
        }	else {
            city.parent().removeClass('validatorInvalidState');
            zip.parent().removeClass('validatorInvalidState');
        }
    },
    resetErrorMessage : function() {
        jQuery('form:hidden .validatorInvalidState').removeClass('validatorInvalidState');
        jQuery('.errorMessage').hide();
    }
};

jQuery(document).ready(function(){
    utils.rewriteTitle();
    jQuery.noConflict();
    utils.tooltips.init();
    nearAdress.init();
});
