
if (typeof Map == 'undefined' || !Map) 
    var Map = {};

/**
 * Info window class
 * @author Tsuyoshi Saito
 * @version 1.0
 */
Map.InfoWindow = function(){
    var _template = '\
        <div class="map-marker-info-window cb" style="display:none;"> \
            <div class="bt"><div /></div> \
            <div class="i1"><div class="i2"><div class="i3"> \
                <h2 class="map-marker-info-header" /> \
                <a class="map-marker-info-close">Close</a> \
                <div class="map-marker-action clearfix"> \
					<a class="add-to-my-map">Add to my map</a> \
					<div class="map-marker-share" /> \
				</div> \
				<div class="map-marker-gallery clearfix" /> \
                <div class="map-marker-info-description"> \
                    <div class="map-marker-info-description-content" /> \
                </div> \
            </div></div></div> \
            <div class="bb"><div /></div> \
        </div> \
    ';
    
    var window = function(){
        return $('.map-marker-info-window');
    }
    
    return {
        open: function(object, addCallback){
            var o = object;
            window().remove();
            $('#content').css({
                'position': 'relative'
            }).append(_template);
			window().addClass(o.type);
            window().find('.map-marker-info-header').html(o.title);
            window().find('.map-marker-info-description-content').html(o.description);
            window().find('a.map-marker-info-close').click(function(){
                window().fadeOut('fast');
            });
            // Creating image gallery with loading
            $(o.images).each(function(i, item){
                var a = $('<a class="item"></a>').attr('href', item.enlarge).attr('title', item.title).addClass('loading');
                if (i == 4) $(a).addClass('last');
                window().find('.map-marker-gallery').append(a);
                var image = new Image();
                $(image).load(function(){
                    $(this).css('display', 'none');
                    $(a).append(this).removeClass('loading');
                    $(this).fadeIn('fast');
                }).error(function(){
                    $(a).removeClass('loading');
                }).attr('src', item.thumbnail);
            });
            // Enlarge image
            var mw = new ModalWindow();
            mw.createGallery({
                items: '.map-marker-gallery .item',
                dataPath: ''
            });
            // Add to my map function
            if (o.object == 'Event') {
                window().find('.add-to-my-map').parent().hide();
            } else {
                if(addCallback) {
                    window().find('.add-to-my-map').click(function(event){
                        event.preventDefault();
                        addCallback(object, $(this));
                    });
                } else {
                    window().find('.add-to-my-map').parent().hide();
                }
            }
            window().fadeIn('fast');
        }
    }
}
