// adapted from /preferredguest/js/global/components/propertyHighlight.js
var mapPanel = {
    closeOthers:false,
    initialMapPanelHeight:null,
    items:[],
    initialize : function() {
        var mapPanels = yuiDom.getElementsByClassName('mapPanel', 'div');
        var moreDetailsLinks = yuiDom.getElementsByClassName('moreDetails', 'div');
        var multiRateCalendar = yuiDom.getElementsByClassName('rateCalendarContainer','div');        
        moreDetailsLinks.forEach(function(moreDetailsLink, i) {
            var item = {
                propertyId:mapPanel._parsePropertyId(moreDetailsLink.id),
                link:moreDetailsLink,
                multiRateCalendar:multiRateCalendar[i],
                container:mapPanels[i]
            };
            mapPanel.items.push(item);
            moreDetailsLink.config = item;
            yuiEvent.addListener(moreDetailsLink, "click", mapPanel.toggle);
        });
    },
    toggle : function(e) {
        var item = this.config;
        if (yuiDom.hasClass(item.container, "mapPanelOpen")) {
            mapPanel.hide(item);
        } else {
            mapPanel.show(item);
        }
        yuiEvent.stopPropagation(e);
    },
    show : function(item) {
        if (mapPanel.closeOthers) {
            mapPanel.hideOthers(item);
        }
        if(item.multiRateCalendar && item.multiRateCalendar.calendar){
            item.multiRateCalendar.calendar.hide();
        }
        /// ####################### ///
        if (mapPanel.initialMapPanelHeight == null) {
            var mapPanelHeight = yuiDom.getStyle(item.container,"height");
            mapPanel.initialMapPanelHeight = mapPanelHeight.substr(0,mapPanelHeight.length - 2);
        }
        var animIn = new yuiAnim(item.container, {
            height:{from:0,to:mapPanel.initialMapPanelHeight}
        }, 0.4, YAHOO.util.Easing.easeIn);

        animIn.onStart.subscribe(function() {
            yuiDom.setStyle(item.container, "height", 0);
            yuiDom.addClass(item.link, "moreDetailsOpen");
            yuiDom.addClass(item.container, "mapPanelOpen");
        });
        animIn.animate();
        mapPanel._setMapPanelUrl(item);
    },
    hide : function(item) {
        var animOut = new yuiAnim(item.container, {
            height:{to:0}
        }, 0.4, YAHOO.util.Easing.easeIn);

        animOut.onComplete.subscribe(function() {
            YAHOO.util.Dom.removeClass(item.link, "moreDetailsOpen");
            YAHOO.util.Dom.removeClass(item.container, "mapPanelOpen");
        });
        animOut.animate();
    },
    hideOthers:function(item) {
        mapPanel.items.forEach(function(otherItem) {
            if (otherItem != item) {
                mapPanel.hide(otherItem);
            }
        });
    },
    _parsePropertyId:function(detailsId) {
        return detailsId.replace(/md_/, "");
    },
    _setMapPanelUrl:function(item) {
        var url;
        if (!item.urlSet) {
            item.iframe = document.createElement("iframe");
            item.iframe.allowTransparency = "1";
            item.iframe.frameBorder = 0;
            item.iframe.scrolling = "no";
            url = "/"+SW.tools.getSkinName()+"/property/map.html?propertyID=" + item.propertyId;
            item.urlSet = true;
            item.iframe.src = url;
            item.container.appendChild(item.iframe);
        }
    }
};

yuiEvent.onDOMReady(mapPanel.initialize);

