
YAHOO.namespace("SW.local.PropertyPreview");
(function(){
    var yuiDom = YAHOO.util.Dom;
    var yuiEvent = YAHOO.util.Event;

    var newHotels;
    var defaultContent;
    var currentHotel;
    var showHotelInfoTimeout;
    var resetTimeout;
    SW.local.PropertyPreview = {
        init: function() {
            newHotels = yuiDom.getElementsByClassName("newHotel", "a" ,yuiDom.get("newHotels"));
            newHotels.forEach(function(newHotel){
                var propertyId = SW.tools.Url.getParameter(newHotel.getAttribute("href"),"propertyID");
                yuiEvent.addListener(newHotel, "mouseover", SW.local.PropertyPreview.showTimeout, newHotel);
                yuiEvent.addListener(yuiDom.get("hotel_"+propertyId), "mouseover", SW.local.PropertyPreview.showTimeout, newHotel);
                yuiEvent.addListener(yuiDom.get("hotel_"+propertyId), "mouseout", SW.local.PropertyPreview.resetTimeout, newHotel);
                yuiEvent.addListener(newHotel, "mouseout", SW.local.PropertyPreview.resetTimeout, newHotel);
                yuiEvent.addListener(newHotel, "click", SW.local.PropertyPreview.propertyHightlight, propertyId);
                newHotel.toggler = SW.widget.displayToggler({
                                        element: yuiDom.get("hotel_"+propertyId),
                                        showOnStart: function (config) {
                                            yuiDom.setStyle(config.element,"display","block");
                                            yuiDom.setStyle(config.element,"zIndex","2");
                                            yuiDom.setStyle(config.element,"opacity",0);
                                        },
                                        hideOnComplete: function (config) {
                                            yuiDom.setStyle(config.element,"zIndex","1");
                                            yuiDom.setStyle(config.element,"display","none");
                                        },
                                        showDuration:.500,
                                        hideDuration:.500
                                    });
            });
            defaultContent = yuiDom.get("newHotelsDefaultContent");

            defaultContent.toggler = SW.widget.displayToggler({
                                        element: defaultContent,
                                        isShowing: true,
                                        showOnStart: function (config) {
                                            yuiDom.setStyle(config.element,"display","block");
                                            yuiDom.setStyle(config.element,"zIndex","2");
                                            yuiDom.setStyle(config.element,"opacity",0);
                                        },
                                        hideOnComplete: function (config) {
                                            yuiDom.setStyle(config.element,"zIndex","1");
                                            yuiDom.setStyle(config.element,"display","none");
                                        },
                                        showDuration:.500,
                                        hideDuration:.500
                                    });
        },
        showTimeout: function(e, newHotel) {
            if(showHotelInfoTimeout != null) {
                clearTimeout(showHotelInfoTimeout);
                showHotelInfoTimeout = null;
            }
            if(resetTimeout != null) {
                clearTimeout(resetTimeout);
                resetTimeout = null;
            }
            currentHotel = newHotel;
            showHotelInfoTimeout = setTimeout(SW.local.PropertyPreview.show, 700);
            yuiEvent.stopPropagation(e);
        },
        show: function () {
            if(defaultContent.toggler.isShowing()) {
                defaultContent.toggler.hide();
            }
            newHotels.forEach(function(newHotels) {
                if(newHotels != currentHotel && newHotels.toggler.isShowing()) {
                    newHotels.toggler.hide();
                }
            });
            if(!currentHotel.toggler.isShowing()) {
                currentHotel.toggler.show();
            }
        },
        resetTimeout: function (e) {
            if(showHotelInfoTimeout != null) {
                clearTimeout(showHotelInfoTimeout);
                showHotelInfoTimeout = null;
            }
            if(resetTimeout != null) {
                clearTimeout(resetTimeout);
                resetTimeout = null;
            }
            resetTimeout = setTimeout(SW.local.PropertyPreview.reset, 700);
            yuiEvent.stopPropagation(e);
        },
        reset: function () {
            newHotels.forEach(function(newHotels) {
                if(newHotels.toggler.isShowing()) {
                    newHotels.toggler.hide();
                }
            });
            defaultContent.toggler.show();
        },
        propertyHightlight: function(e, propertyId) {
            loadPropertyHighlight(propertyId);
            yuiEvent.preventDefault(e);
        }
    }
    yuiEvent.onDOMReady(function() {
        SW.local.PropertyPreview.init();
    });

})();




