$(document).ready(function() {
	
	if ($('input[type="text"]').length > 0) initInputs();
	if ($('#cal').length > 0) initCalendar();
	if ($('.club li a.has-info').length > 0) initClubNights();
	if ($('#mapWrap').length > 0) initMap();
	if ($('#mailing.error span').length > 0) initMailError();
	if ($('ul.gallery a').length > 0) {
	    
	    $("ul.gallery.photo img").error(function(){
          $(this).attr('src', '/assets/images/gallery/brokenPhoto.png');
        });
        
        $("ul.gallery.video img").error(function(){
          $(this).attr('src', '/assets/images/gallery/brokenVideo.png');
        });
	    
        $("ul.gallery.photo a").fancybox({
    	    'cyclic': true,
    	    'overlayColor': '#111',
    	    'overlayOpacity': 0.95,
    	    'centerOnScroll': true,
    	    'padding': 0,
    	    'titleFormat': formatTitle
    	});
    	
    	$("ul.gallery.video a").fancybox({
    	    'cyclic': true,
    	    'overlayColor': '#111',
    	    'overlayOpacity': 0.95,
    	    'centerOnScroll': true,
    	    'padding': 0
    	});
    	
    	$('ul.gallery a').pngFix();
    	
    }
	//if ($('div.blogLinks').length > 0) $('div.blogLinks li').pngFix();
	
	if ($("#listings-date-filter").length) {
	    initDatePickers();
	}
    
});

function initDatePickers() {
    
    $("#listings-date-filter #from").datepicker({
        dateFormat: 'yy-mm-dd', // e.g., 15 June 2009
    });
    
    $("#listings-date-filter #to").datepicker({
        dateFormat: 'yy-mm-dd', // e.g., 15 June 2009
        altField: '#listings-date-filter input[name="to"]'
    });
    
    $("#listings-date-filter .select-all").click(function() {
        SelectText('full-listings');
    });
    
}

function SelectText(element) {
    var text = document.getElementById(element);
    if ($.browser.msie) {
        var range = document.body.createTextRange();
        range.moveToElementText(text);
        range.select();
    } else if ($.browser.mozilla || $.browser.opera) {
        var selection = window.getSelection();
        var range = document.createRange();
        range.selectNodeContents(text);
        selection.removeAllRanges();
        selection.addRange(range);
    } else if ($.browser.safari) {
        var selection = window.getSelection();
        selection.setBaseAndExtent(text, 0, text, 1);
    }
}


function initMailError() {
    $('#mailing.error span').click(function() {
        $(this).fadeOut(200);
    });
}

var fbLoaded = false;
function fbAsyncInit() {
    FB.init({ xfbml: true });
    fbLoaded = true;
}

function initFBLike() {
	$.getScript(document.location.protocol + '//connect.facebook.net/en_US/all.js');
}

function formatTitle(title, currentArray, currentIndex, currentOpts) {
    return '<table id="fancybox-title-float-wrap" cellpadding="0" cellspacing="0"><tbody><tr><td id="fancybox-title-float-left"></td><td id="fancybox-title-float-main">' + (currentIndex + 1) + ' of ' + currentArray.length + ' : ' + title + '</td><td id="fancybox-title-float-right"></td></tr></tbody></table>';
}

function initMap() {
    var latlng = new google.maps.LatLng(51.545834,-0.103489);
    var myOptions = {
      zoom: 15,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var _map = new google.maps.Map(document.getElementById("mapWrap"), myOptions);
    var image = '/assets/images/other/map-icon.png';
    var markerOptions = {
      position: latlng,
      map: _map,
      visible: true,
      title:"Hello World!",
      icon: image
    };
    var marker = new google.maps.Marker(markerOptions);
    
  }


function initClubNights() {
    
    var html = $('html, body');
    var loading = false;
    var infoShowing = false;
    var allLinks = $('.club li a.has-info');
    var allclubs = $('.allClubs');
    var nightInfo = $('<div class="nightInfo"></div>');
    var cScroll = html.scrollTop();
    var content = $('.content');
    var animated = false;
    
    allclubs.after(nightInfo);
    content.height(allclubs.height());
    allclubs.css({ position: 'absolute' });
    
    allLinks.click(function() {
        $(this).addClass('loading');
        loadInfo($(this).attr('href'));
        return false;
    });
    
    $('.nightInfo .lArrow').live('click', function() {
        hideInfo();
        return false;
    });
    
    function showInfo() {
        stopLoading();
        if (!infoShowing) {
            if (html.scrollTop() > 140) {
                animated = true;
                html.animate({ scrollTop: 140 }, { duration: 500, easing:'easeInOutCubic' });
            }
            if (fbLoaded) {
                FB.XFBML.parse(nightInfo[0]);
            }
            allclubs.animate({ left: -980 }, { duration: 500, easing:'easeInOutCubic' });
            nightInfo.animate({ left: 0 }, { duration: 500, easing:'easeInOutCubic' });
            infoShowing = true;
        }
    }
    
    function hideInfo() {
        if (infoShowing) {
            if (animated && html.scrollTop() != cScroll) {
                html.animate({ scrollTop: cScroll }, { duration: 500, easing:'easeInOutCubic' });
            }
            animated = false;
            stopLoading();
            allclubs.animate({ left: 0 }, { duration: 500, easing:'easeInOutCubic' });
            nightInfo.animate({ left: 981 }, { duration: 500, easing:'easeInOutCubic' });
            infoShowing = false;
        }
    }
    
    function loadInfo(src) {
        cScroll = html.scrollTop();
        nightInfo.load(src + ' .clubWrap', showInfo);
    }
    
    function stopLoading() {
        allLinks.removeClass('loading');
    }
    
}

function initCalendar() {
    
    var open = false;
    var loading = false;
    var noFade = false;
    var body = $('body');
    var html = $('html');
    var win = $(window).resize(onResize);
    var popup = $('<div id="popup"></div>').appendTo(body).addClass('closed').scroll(onPopupScroll).hide();
    var bg = $('<div id="popupBg"></div>').appendTo(popup).css({ opacity:.9 });
    var loader = $('<img id="loader" src="/assets/images/listings/loader.gif" />').appendTo(bg);
    var c = $('<div id="c"></div>').appendTo(popup).hide();
    $('#listingWrap .arrow').live('click', closePopup);
    bg.click(closePopup);
    
    $('#cal td a').click(function() {
        
        startLoading($(this).attr('href'));
        return false;
        
    });
    
    if (typeof(document.location.hash) != 'undefined' && document.location.hash != '') {
        noFade = true;
        $(document.location.hash).click();
    }
    
    function loadComplete(data) {
        popup.scrollTop(0);
        onPopupScroll();
        onResize();
        if (fbLoaded) {
            FB.XFBML.parse(c[0]);
        }
        c.delay(500).fadeIn(250);
    }
    
    function startLoading(src) {
        if (loading) stopLoading();
        popup.scrollTop(0);
        onResize();
        onPopupScroll();
        c.html('');
        c.hide();
        c.load(src+' #listingWrap', loadComplete);
        loading = true;
        openPopup();
    }
    
    function stopLoading() {
        loading = false;
    }
    
    function onResize() {
        var wH = win.height();
        popup.height(wH);
        bg.height(wH);
        loader.css('top', Math.round((wH-48)/2));
        if (open && c.innerHeight()>0) {
            
            var cH = c.innerHeight();
            if (cH < wH && wH-cH >= 60) {
                c.css('top', Math.round((wH-cH)/2));
            } else {
                c.css('top', 30);
            }
            
        }
    }
    
    function onPopupScroll() {
        bg.css('top', popup.scrollTop());
    }
    
    function openPopup() {
        if (open) return false;
        html.addClass('noScroll');
        popup.removeClass('closed');
        popup.stop(true, true);
        if (noFade) {
            popup.show();
        } else {
            popup.fadeIn(300);
        }
        open = true;
        onResize();
        return false;
    }
    
    function closePopup() {
        if (noFade) {
            noFade = false;
            return true;
        }
        if (!open) return false;
        popup.addClass('closed');
        html.removeClass('noScroll');
        popup.stop(true, true);
        popup.hide();
        open = false;
        return false;        
    }
    
}

function initInputs() {
	
	$('input[type="text"]').each(function() { checkInput($(this)); });
	
	$('input[type="text"]').focus(function() {
		if ($(this).val()==$(this).attr('title')) {
			$(this).val('');
		}
		$(this).removeClass('default');
	});
	
	$('input[type="text"]').blur(function() { checkInput($(this)); });
	
	function checkInput(input) {
		if (input.val()==''||input.val()==input.attr('title')) {
			input.addClass('default');
			input.val(input.attr('title'));
		}
	}
	
}
