﻿var pageView;
var pageViewDefault = 'timeline';
var plannerInfo;
var plannerCat;
var slctPlannerDate;
var slctPlannerEventId;
var slctPlannerVenueId;
var firstLoadQuery = true;

var loggedIn;

$(function () {
    // On ready functions called 
    $(".contentContainer").ajaxStart(function () {
        $('<img src="images/ajax-loader.gif" class="loader" />').appendTo('body');
    });
    $(".contentContainer").ajaxComplete(function () {
        $('img.loader').remove();
    });
    //showInfoPop({title:'My overide',cat:'art'});

    slidePanel();
    socialPopups();
    getDateAndTime();
    helpPopUps();
    datePicker();
    setTimeout('checkAndSetCookie()', 1000);
    navigation();
    login();
    getDropDownSelect();

    // REMOVED FUNCTIONALITY queryFromRegister();
    // on ready clear JSON cache

    $.ajaxSetup({
        cache: false
    });

    $('div#flashLogo').flash({
        src: '/logotransitions.swf',
        wmode: 'Transparent',
        width: 320,
        height: 240
    });

    searchOnReturn();

    $(window).resize(function () {
        if (!$.cookie('visited')) {
            removeFVGuides();
            firstVisit();
        }
        if (pageView == 'timeline') {
            setTimelineKey();
        }
    });

    testLoginState();

    $('a').live('click', function () {
        if ($(this).attr('href').indexOf('javascript') == 0) {
            // return true;
        }
        else {
            return addHrefQuery(this);
        }

    });
});

function addHrefQuery(link) {
    pageView == undefined ? pageView = pageViewDefault : pageView;
    var href = $(link).attr('href');
    if (href != '#') {
        var href = ($(link).attr('href').indexOf('?') != -1) ? href + '&v=' + pageView : href + '/?v=' + pageView;
        $(link).attr('href', href);
    }
    return true;
}

function testLoginState() {
    var loggedInTest = $('#loggedIn').children('li:first').text();
    loggedInTest.indexOf('[name]') != -1 ? loggedIn = false : loggedIn = true;
}
var tagTitle;
var tagCat;

// Twitter and Facebook pop up ----------------------------------------------------------------- //

var t;

function socialPopups() {
    $('a.share').click(function () {
        var pos = $(this).parents('.share').position();
        $('.socialLinks').css({ 'top': pos.top - 40, 'left': pos.left });
        $('.socialLinks').show();
        return false;
    });
    $('div.share').hover(function () { }, function () {
        t = setTimeout('closeSocials()', 2000);
    });
    $('.socialLinks').mouseover(function () {
        clearTimeout(t);
    });
    $('div.socialLinks').hover(function () { }, function () {
        closeSocials();
    });
}

function closeSocials() {
    $('.socialLinks').hide();
}

function searchOnReturn() {
    $('div.homeSearch').bind("keypress", function(e) {
        if (e.keyCode == 13) $('div.homeSearch input.submit').trigger('click');
    });
}


// Date and time --------------------------------------------------------------------------------- //

//Date

function getDateAndTime() {
    var d_names = new Array("Sun", "Mon", "Tues",
    "Wed", "Thur", "Fri", "Sat");

    var m_names = new Array("Jan", "Feb", "Mar",
    "Apr", "May", "June", "July", "Aug", "Sept",
    "Oct", "Nov", "Dec");

    var d = new Date();
    var curr_day = d.getDay();
    var curr_date = d.getDate();
    var sup = "";
    if (curr_date == 1 || curr_date == 21 || curr_date == 31) {
        sup = "st";
    }
    else if (curr_date == 2 || curr_date == 22) {
        sup = "nd";
    }
    else if (curr_date == 3 || curr_date == 23) {
        sup = "rd";
    }
    else {
        sup = "th";
    }
    var curr_month = d.getMonth();
    var curr_year = d.getFullYear();
    document.getElementById('date').innerHTML = (d_names[curr_day] + " " + curr_date + sup + " " + m_names[curr_month]);

    // Call Time
    startTime();
}

function startTime() {
    var today = new Date();
    var h = today.getHours();
    var m = today.getMinutes();
    // add a zero in front of numbers<10
    m = checkTime(m);

    document.getElementById('time').innerHTML = h + ":" + m;
    t = setTimeout('startTime()', 60000);
}

function checkTime(i) {
    if (i < 10) {
        i = "0" + i;
    }
    return i;
}

function addWrap() {
    $('.dp-popup').wrap('<div class="middle-table-planner"></div>');
    $('.middle-table-planner').wrap('<div class="calenderWrap"></div>');
    $('<span class="top-table-planner"></span>').insertBefore('.middle-table-planner');
    $('<span class="bottom-table-planner"></span>').insertAfter('.middle-table-planner');
    var pos = $('#tl').position();
    $('.calenderWrap').css('left', pos.left + 45 + 'px');
    $('.calenderWrap').css('top', pos.top + 200 + 'px');
};

function removeContainer() {
    $('.middle-table-planner').remove();
    $('span.top-table-planner').remove();
    $('span.bottom-table-planner').remove();
    $('div.calenderWrap').remove();
}

// Lightbox --------------------------------------------------------------------------------------------- //


function callLightbox(funcName) {
    
    var docHeight = $(document).height();
    $('<div class="light-mask" style="width:100%; position:absolute; background:#000; left:0; top:0; z-index:9000;"></div>').appendTo('body');
    $('div.light-mask').css({ 'height': docHeight, opacity: '0.6' });
    funcName();
}

// check for cookie --------------------------------------------------------------------------------------

var countItF = 0;
function checkAndSetCookie() {
    
    if (!$.cookie('visited')) {
        $('img.bgimg').show();

        if ($.browser.msie && $.browser.version == 6.0) {
          
        }
        else {

            $('.contentContainer').empty();
           
           $('body').addClass('firstVisit');
            $('.mainNav ul li.selected').removeClass('selected');
            callLightbox(firstVisit);
            
            
            $('.infoSbutton').live('click', function () {
               setCookie();
                return false;
            });
            
            
        }
    }
    else {
       
        var winLoc = window.location;
        if (winLoc.toString().indexOf('#timeline') != -1) {
            showTimeline();
        }
        else if (winLoc.toString().indexOf('#map') != -1) {
            showMap();
        }
        else if (winLoc.toString().indexOf('#pictures') != -1) {
            showPictures();
        }
        else if (winLoc.toString().indexOf('#popular') != -1) {
            initCanvas();
            clearPopular();
            showPopular();

        }
        else if (winLoc.toString().indexOf('#tagCloud') != -1) {
            loadTags();
        }
        else {
            showTimeline();
        }
        
    }
  
}

function setCookie() {
    $.cookie('visited', 'true', { expires: 365 });
    $('div.light-mask').remove();
    removeFVGuides();
    
    //$('<div id="map"></div>').appendTo('.contentContainer');
    $('.mainNav ul li a.timeline').parent('li').addClass('selected');
    //$('#bgimg').hide();
    //initialize();
    showTimeline();
}

// first visit guides  ------------------------------------------------------------------------------------------- //


function firstVisit() {

    var fvChange = $('.mainNav').position().left - 120;
    var fvFind = $('.filtersWrap').position().top - 120;
    var fvPO = $('.navPlanner').position().left - 40;
    var fvShare = $('div.share').position().left - 40;
    var fvSearch = $('.homeSearch').position().left - 75;
    var fvFooter = $('.footer').position().left - 25;

    $('<p class="infoSFind">This is where you decide what you want to do in Nottingham</p>').css('top', fvFind).appendTo('body');
    $('<p class="infoSChange pf">Change your view</p>').css('left', fvChange).appendTo('body');
    $('<p class="infoSPO">Your personal organiser</p>').css('left', fvPO).appendTo('body');
    $('<p class="infoSShare">Share this site</p>').css('left', fvShare).appendTo('body');
    $('<p class="infoSSearch">Search</p>').css('left', fvSearch).appendTo('body');
    $('<p class="infoSUseful">Useful</p>').appendTo('body').css('left', fvFooter);
    $('<div class="infoSHeadings"></div>').appendTo('body');
    $('<h1 class="infoSHeading">Welcome</h1>').appendTo('.infoSHeadings');
    $('<p class="infoSInfo">Spirit is Nottingham\'s newest way to take part in the vibrant arts, heritage, bar and restaurant culture of this great city. Plan your day, evening, weekend, or even a spare 2 hours between meetings. We\'re currently developing the site - adding new venues, events and features daily.  Please pop in and take a look, tell us what you think and what you need to make the most of Nottingham.</p>').appendTo('.infoSHeadings');
    $('<span class="infoSbutton">Get started</span>').appendTo('.infoSHeadings');
}

// ---------------------------------------- Remove guides

function removeFVGuides() {

    $('div.infoSHeadings').remove();
    $('p.infoSFind').remove();
    $('p.infoSChange').remove();
    $('p.infoSPO').remove();
    $('p.infoSShare').remove();
    $('p.infoSSearch').remove();
    var docHeight = $(document).height();
    $('div.light-mask').css('height', docHeight);
    $('p.infoSUseful').remove();
}


// Navigation ---------------------------------------------------------------------------------------------
function homeSearch() {
    var term = $('.homeSearchValue').val()
    window.location = '/search/?q=' + term ;
}
function navigation() {

    $('.mainNav ul li a.map').click(function () {
        showMap();
        return false;
    });
    $('.mainNav ul li a.pictures').click(function () {
        showPictures();
        return false;
    });
    $('.mainNav ul li a.popular').click(function () {
        showPopular();
        return false;
    });
    $('.mainNav ul li a.tags').click(function () {
        loadTags();
        return false;
    });
    $('.mainNav ul li a.timeline').click(function () {
        showTimeline();
        return false;
    });

}

function clearAddSelected(clickedElem) {
    clearPictures();
    clearPopular();
    $('.bgimg').hide();
    $('.contentContainer').empty();
    $("div.eventCloud").remove();
    $('.mainNav ul li').removeClass('selected');
    $(clickedElem).parent('li').addClass('selected');
}

function triggerPanelClose() {
    var pos = $('div.filtersWrap').css('left');
    if (pos == '0px') {
        $('a.filtersButton').trigger('click');
    }
}

function showMap() {
    clearAddSelected('a.map');
    triggerPanelClose();
    setVenVisible();
    $('.contentContainer').append('<div id="map"></div>');
    
    pageView = 'map';
    if ($('div.checkTicks span#chk-fd').hasClass('check-on')) {
        $('div.checkTicks span#chk-fd').removeClass('check-on').addClass('check-off');
    }
    slide_fd = false;
    initialize();
}
function showPictures() {
    clearAddSelected('a.pictures');
    triggerPanelClose();
    setVenVisible();
    $('.contentContainer').append('<div id="imageWall"></div>');
    pageView = 'pictures';
    if ($('div.checkTicks span#chk-fd').hasClass('check-on')) {
        $('div.checkTicks span#chk-fd').removeClass('check-on').addClass('check-off');
    }
    slide_fd = false;
    getImagesOnLoad();
}
function triggerMap() {
    $('.mainNav li a.map').trigger('click');
}

function showTimeline() {
    clearAddSelected('a.timeline');
    pageView = 'timeline';
    $('.bgimg').show();
    if (!$.cookie('firstLook')) {
        $('div.filtersWrap').css({ 'left': '0' });
        $.cookie('firstLook', 'true', { expires: 0 });
    }
    else {
        triggerPanelClose();
        
    }
    setVenInvisible();
    resetTimeline();
    $('.contentContainer').append('<div id="dragWrap"><ul id="timeline" style="position:relative"><li class="timelineBuffer"></li></ul></div><img src="../images/timelineKey.png" alt="timeline" class="timelineKey"/>');
    //setTimeout('loadTimeLineJs()', 2000);

    setTimelineKey();
    getTimeline();
   
}
function showPopular() {
    clearAddSelected('a.popular');
    setVenInvisible();
    $('canvas').css('visibility', 'visible');
    
    triggerPanelClose();
    //$('.contentContainer').append('<canvas id="popularWall"></canvas><div id="imagePop"></div>');
    pageView = 'popular';
    startPopular();
}


var firstCount;
var lastCount;
var dataLength;
var tagSizeAmount = 7;
var tagGroupSize;
var size1;

function loadTags() {
    slide_fd = false;
    if ($('div.checkTicks span#chk-fd').hasClass('check-on')) {
        $('div.checkTicks span#chk-fd').removeClass('check-on').addClass('check-off');
    }
    clearAddSelected('a.tags');
    pageView = 'tagCloud';
    setVenVisible();
    $('canvas').css('visibility', 'hidden');

    triggerPanelClose();
    $('div#tagCloud').remove();
    $('.contentContainer').append('<div id="tagCloud"><ul></ul></div>');
    showEventTags(firstLoad);
}

function showEventTags(firstLoad) {
    $('#tagCloud ul').empty();
        var tags = '';
        $.getJSON('/Ajax/GetTags.ashx', GetFilters(), function (data) {
            
            checkData(data);
            var countCollect = [];

            for (var i = 0; i < data.length; i++) {
                countCollect.push(data[i].Count);
            }

            var firstCount = Math.max.apply(Math, countCollect);
            var lastCount = Math.min.apply(Math, countCollect);

            tagGroupSize = (firstCount - lastCount) / tagSizeAmount;

            $.each(data, function (i, tag) {
                var tagClass = (Math.floor((tag.Count - lastCount) / tagGroupSize) == 0) ? 1 : Math.floor((tag.Count - lastCount) / tagGroupSize);
                tags += '<li style="visibility:hidden"> <a href="/search/?t=' + tag.Tag + '" ' + 'class="tag' + ' ' + 'ts' + tagClass + ' ' + tag.Category.Name + '">' + tag.Tag + '</a></li>';
            });

            $('div#tagCloud ul').append(tags);
            if (findHeights() == true) {
                var halfHeight = parseInt($('#tagCloud ul').css('height')) / 2;
                $('div#tagCloud ul').css({ 'top': '50%', 'margin-top': -halfHeight });
            }
            triggerCufon();

        });
    
}

function showVenueTags(firstLoad) {
    
    //$('div.checkTicks span#chk-fd').removeClass('check-off').addClass('check-on');

    $('#tagCloud ul').empty();
    var tags = '';

        $.getJSON('/Ajax/GetTags.ashx',
        {
            fd: true
        },
        function (data) {
            checkData(data);
            var countCollect = [];
            

            for (var i = 0; i < data.length; i++) {
                countCollect.push(data[i].Count);
            }

            var firstCount = Math.max.apply(Math, countCollect);
            var lastCount = Math.min.apply(Math, countCollect);


            tagGroupSize = (firstCount - lastCount) / tagSizeAmount;

           

            $.each(data, function (i, tag) {
                var tagClass = (Math.floor((tag.Count - lastCount) / tagGroupSize) == 0) ? 1 : Math.floor((tag.Count - lastCount) / tagGroupSize);
                tags += '<li style="visibility:hidden"> <a href="/search/?t=' + tag.Tag + '" ' + 'class="tag' + ' ' + 'ts' + tagClass + ' ' + 'FoodDrink' + '">' + tag.Tag + '</a></li>';
            });

            $('div#tagCloud ul').append(tags);
            findHeights();
            if (findHeights() == true) {
                var halfHeight = parseInt($('#tagCloud ul').css('height')) / 2;
                $('div#tagCloud ul').css({ 'top': '50%', 'margin-top': -halfHeight });
            }

            triggerCufon();
        });
}


function findHeights() {
    var windowHeight = $(window).height();
    var tagHeight = $('#tagCloud ul').css('height');
    if (parseInt(windowHeight) > parseInt(tagHeight)) {
        return true;
    }
    else {
        return false;
    }
}

var tagCollection = [];
var tagCount = 0;

function showTagsInCloud() {

    tagLoading = false;

    var tags = $('div#tagCloud ul li');

    $.each(tags, function (i, tag) {
        tagCollection.push(tag);
    });

    loadTag();
}
function loadTag() {
    if (tagCount != tagCollection.length) {
        showTag(tagCollection[tagCount]);
    }
}

function showTag(tag) {
    $(tag).css({'display':'none','visibility':'visible'}).fadeIn();
    tagLoading = false;
    tagCount++;
    setTimeout('loadTag()', 100);
   
}

function loadTimeLineJs() {

    //$.getScript('scripts/timeline.js', function() {});
}
function getTagInfo(src, id) {
    alert(src);
}



// showLogin --------------------------------------------------------------

function login() {
    $('.navPlanner a.mainBut').click(function () {
        if ($(this).parent('div').hasClass('selectedPlanner')) {
            $(this).parent('div').removeClass('selectedPlanner');
            $('div.logInBlock').hide();
        }
        else {
            $(this).parent('div').addClass('selectedPlanner');
            $('div.logInBlock').show();
        }
        return false;
    });
    
}


// Nav help pop ups -------------------------------------------------------------------------------------

function helpPopUps() {
    $('a.navInfo').each(function () {
        $(this).hover(function () {
            if ($(this).parent().is('div.filtersWrap')) {

                var popPos = $(this).parent('div.filtersWrap').position();

                $('<p class="infoPFind helpPopUp">Find your spirit</p>')
                .css({
                    'left': popPos.left + 288,
                    'top': popPos.top - 165
                })
                .appendTo('body');
            }
            else if ($(this).parent('div').is('.mainNav')) {
                var popPos = $(this).parent('div.mainNav').position();

                $('<p class="infoPChange helpPopUp">Navigate</p>')
                    .css({
                        'left': popPos.left + 18,
                        'top': popPos.top + 15
                    })
                    .appendTo('body');
            }
            else if ($(this).parent('div').is('.navPlanner')) {

                var popPos = $(this).parent('div.navPlanner').position();

                $('<p class="infoPPO helpPopUp">Plan</p>')
                    .css({
                        'left': popPos.left - 116,
                        'top': popPos.top + 30
                    })
                    .appendTo('body');
            }
        }, function () {
            $('.helpPopUp').remove();
        });
    });
}

// ------------------------------------------------------- added cufon for tagcloud


function triggerCufon() {
    $.getScript('scripts/cufonTrigger.js');
    //tagResize();
}

//----------------------------------------------------- global info pop up

function requestInfoPop(eventId,globalOps) {
    $.getJSON('/ajax/getevent.ashx', { Id: eventId }, function (data) {

        showInfoPop(data, globalOps);
        plannerInfo = data;
        plannerCat = globalOps.cat;
        slctPlannerEventId = data.Id;
        slctPlannerVenueId = null;

    });
}

function showInfoPop(options,globalOps) {

    // Defaults allow us to set content if none found via javascript
    // Im sorry this is messy but was handy whilst in dev.

    var InfoPopDate;
    var defaults = {
        id: 1,
        Cat: globalOps.cat,
        Title: 'Default Title',
        date: 'Coming soon',
        Name: 'Default Name',
        ImgSmall: 'images/popUpbox/dummyIMAGE.gif',
        Price: '£15.00',
        MoreInfoUrl: '/SpiritNottingham/htmlBuild/britainsGotTalent.html',
        positionBy: pageView,
        leftPos: 0,
        topPos: 0
    }
		
    var opts = $.extend(defaults, options);
    if (opts.ImgSmall == '' || opts.ImgSmall == null) {
      
       opts.ImgSmall = findDefaultImage(opts.Cat);
	   
    }
	
    if (pageView == 'pictures' || pageView == 'popular') {
        
        var formatDate = stripDate(options.Dates[0]);
        InfoPopDate = formatDate.format('dS M Y');
        slctPlannerDate = formatDate.format('d/m/Y');
    }
    else if (pageView == 'timeline') {
        var formatDate = stripDate(globalOps.date);
        slctPlannerDate = formatDate.format('d/m/Y');
        InfoPopDate = formatDate.format('dS M Y');
    }
    else {
        InfoPopDate = globalOps.date;
        slctPlannerDate = globalOps.unformattedDate.format('d/m/Y');
    }
    
    var popHtml = '<div class="eventCloud singleEvent' + ' ' + opts.Cat + '">' +
    	'<div class="cloudTop pf"></div>' +
        '<div class="cloudMiddle pf">' +
           ' <div class="backgroundContent">' +
                '<div class="contentTop pf"></div>' +
                '<div class="contentMiddle pf">' +
              			'<div class="eventTopPart">' +
                            '<img src="' + opts.ImgSmall + '" alt="' + opts.Title + '"/>' +
                            '<span class="date">' + InfoPopDate + '</span>' +
                           ' <h3>' + opts.Title + '</h3>' +
                          '  <h4>' + opts.Venue.Name + '</h4>' +
                            '<span class="price">' + opts.Price + '</span>' +
                    	'</div>' +
                   ' <div class="bottomPart">' +
                        '<a class="button planner" href="#"  onclick="callLightbox(requestPlanner);return false;"><span>&nbsp;</span>Add to Planner</a>' +
                        '<a class="button moreInfo" href="' + opts.MoreInfoUrl +  '"><span>&nbsp;</span>More Info</a>' +
                       ' <span class="eventCategoryIR">' + opts.Cat + '</span>' +
                    '</div>' +
                '</div>' +
                '<div class="contentBottom pf"></div>' +
        	'</div>' +
        '</div>' +
        '<div class="cloudBottom pf"></div>' +
        '<a href="#" onclick="popClose(); return false;" class="popCloseBut">Close</a>' +
    '</div>';
	
    $('body').append(popHtml);
    
    var cloudHeight = $("div.eventCloud").height();

    if (pageView == 'none') {
        $("div.eventCloud").css({
            'left': '0',
            'margin-left': '0',
            'top': '0'
        });
    }
    else if (pageView == 'pictures' || pageView == 'popular' || pageView == 'timeline') {
        
        $('div.cloudBottom').css('background-position', '0 -929px');
        

        $("div.eventCloud").css({
            'left': globalOps.leftPos + 100,
            'margin-left': '-45px',
            'top': globalOps.topPos - 100,
            'visibility':'hidden'
        });

        if (pageView == 'popular') {
            $("div.eventCloud").css({
                'left': globalOps.leftPos + 20,
                'top': globalOps.topPos - 180
            });

        }
        fixPopPos();
    }
    else if (pageView == 'map') {
        $("div.eventCloud").css({
            'left': '50%',
            'margin-left': '-45px',
            'top': '50%',
            'margin-top': -cloudHeight / 2 - 130 + 'px'
        });
    }

}
var picVenueName;
function requestVenuePop(globalOps) {
    $.getJSON('Ajax/GetVenue.ashx', { Id: globalOps.VenId }, function (data) {

        showVenuePop(data, globalOps);
        plannerInfo = data;
        plannerCat = 'foodDrink';
        slctPlannerVenueId = data.Id;
        slctPlannerEventId = null;
    });
}
function showVenuePop(options,globalOps) {
    if (pageView == 'pictures') {
        picVenueName = options.Name;
     
    }
    else if(pageView == 'map') {
        picVenueName = globalOps.VenName;
    }
    
    if (options.ImgSmall == '' || options.ImgSmall == null) {
        switch (options.Category.Name) {
            
            case 'Cafe':
                options.ImgSmall = 'images/defaults/small/default-cafe-small.gif';
                break;
            case 'Restaurant':
                options.ImgSmall = 'images/defaults/small/default-restaurant-small.gif';
                break;
            case 'Bar':
                options.ImgSmall = 'images/defaults/small/default-bar-small.gif';
                break;
            case 'Pub':
                options.ImgSmall = 'images/defaults/small/default-pub-small.gif';
                break;
            default:
              
        }


    }


    ///////////////// VENUE HTML ///////////////////////////////////////////////////////////////


    var popHtml = '<div class="eventCloud singleEvent foodDrink">' +
    	'<div class="cloudTop pf"></div>' +
        '<div class="cloudMiddle pf">' +
           ' <div class="backgroundContent">' +
                '<div class="contentTop pf"></div>' +
                '<div class="contentMiddle pf">' +
              			'<div class="eventTopPart">' +
                            '<img src="' + options.ImgSmall + '" alt="' + picVenueName + '"/>' +
                           ' <h3>' + picVenueName + '</h3>' +
                          '  <h4>' + options.Address1 + '</h4>' +
                    	'</div>' +
                   ' <div class="bottomPart">' +
                        '<a class="button planner" href="#" onclick="callLightbox(requestPlanner); return false;"><span>&nbsp;</span>Add to Planner</a>' +
                        '<a class="button moreInfo" href="' + options.MoreInfoUrl + '"><span>&nbsp;</span>More Info</a>' +
                       ' <span class="eventCategoryIR">Food and drink</span>' +
                    '</div>' +
                '</div>' +
                '<div class="contentBottom pf"></div>' +
        	'</div>' +
        '</div>' +
        '<div class="cloudBottom pf"></div>' +
        '<a href="#" onclick="popClose(); return false;" class="popCloseBut">Close</a>' +
    '</div>';

    $('body').append(popHtml);

    var cloudHeight = $("div.eventCloud").height();

    if (pageView == 'map') {
        $("div.eventCloud").css({
            'left': '50%',
            'margin-left': '-45px',
            'top': '50%',
            'margin-top': -cloudHeight / 2 - 110 + 'px'
        });
    } else if (pageView == 'pictures') {
        
        $("div.eventCloud").css({
            'left': globalOps.leftPos + 100,
            'margin-left': '-45px',
            'top': globalOps.topPos - 100,
            'visibility': 'hidden'
        });
        fixPopPos();
    }
}

function showMultiplePop(callMode, options) {
    $('#popUpHolder').load('multiPopUp.html', function () { callMulitplePop( callMode, options); });
}

function callMulitplePop(callMode, options) {
    var html = '';
    var filters;
    var jsonCall;
    if ( callMode == 'venues' ) {
    	filters = GetFilters();
    	filters.venueid = options.venueId;
    	jsonCall = '/Ajax/GetVenueEvents.ashx';
  	} else if ( callMode == 'events' ) {
  		filters = {};
  		filters.Ids = options.eventIds;
  		//console.log(options.eventIds);
  		jsonCall = '/Ajax/GetEvents.ashx';
  	}

  	$.getJSON(jsonCall, filters, function (data) {

  	    plannerInfo = data;


  	    $.each(data, function (i, data) {

  	        var formatDate;
  	        var category;

  	        if (callMode == 'venues') {

  	            formatDate = stripDate(data.Dates[0]);
  	            category = data.Categories[0].Name;
  	            plannerCat = data.Categories[0].Name;
  	            


  	        } else if (callMode == 'events') {

  	            formatDate = stripDate(options.eventDate);
  	            category = options.eventCategory;
  	            plannerCat = options.eventCategory;
  	            //slctPlannerDate = unformattedDate.format('d/m/Y');

  	        }



  	        if (data.ImgSmall == '' || data.ImgSmall == null) {


  	            switch (category) {
  	                case 'Dance':
  	                    data.ImgSmall = 'images/defaults/small/default-dance-small.gif';
  	                    break;
  	                case 'Theatre':
  	                    data.ImgSmall = 'images/defaults/small/default-theatre-small.gif';
  	                    break;
  	                case 'Art':
  	                    data.ImgSmall = 'images/defaults/small/default-art-small.gif';
  	                    break;
  	                case 'Comedy':
  	                    data.ImgSmall = 'images/defaults/small/default-comedy-small.gif';
  	                    break;
  	                case 'Festivals':
  	                    data.ImgSmall = 'images/defaults/small/default-festivals-small.gif';
  	                    break;
  	                case 'Film':
  	                    data.ImgSmall = 'images/defaults/small/default-film-small.gif';
  	                    break;
  	                case 'Heritage':
  	                    data.ImgSmall = 'images/defaults/small/default-heritage-small.gif';
  	                    break;
  	                case 'Music':
  	                    data.ImgSmall = 'images/defaults/small/default-music-small.gif';
  	                    break;
  	                case 'Cafe':
  	                    data.ImgSmall = 'images/defaults/small/default-cafe-small.gif';
  	                    break;
  	                case 'Restaurant':
  	                    data.ImgSmall = 'images/defaults/small/default-restaurant-small.gif';
  	                    break;
  	                case 'Bar':
  	                    data.ImgSmall = 'images/defaults/small/default-bar-small.gif';
  	                    break;
  	                case 'Pub':
  	                    data.ImgSmall = 'images/defaults/small/default-pub-small.gif';
  	                    break;
					case 'More':
  	                    data.ImgSmall = 'images/defaults/small/default-more-small.gif';
  	                    break;
  	                default:

  	            }

  	        }



  	        html += '<div class="cell ' + category + '">',
            html += '<div class="eventTopPart">',
            html += '<img src="' + data.ImgSmall + '"/>',
            html += '<span class="date">' + formatDate.format('dS M Y') + '</span>',
            html += '<h3>' + data.Title + '</h3>',
            html += '<h4>' + data.Venue.Name + '</h4>',
            html += '<span class="price">' + data.Price + '</span>',
            html += '</div>',
            html += '<div class="bottomPart">',
            html += '<a class="button planner" href="#" onclick="callMultiPlanner(' + data.Id + ',\'' + formatDate.format('d/m/Y') + '\'' + ',\'' + plannerCat + '\');"><span>&nbsp;</span>Add to Planner</a>',

            html += '<a class="button moreInfo" href="' + data.MoreInfoUrl + '"><span>&nbsp;</span>More Info</a>',
            html += '<span class="eventCategoryIR">Theatre</span></div></div>';

  	    });

  	    $(html).appendTo('.multipleEvents .animWrap');
  	    $('div.multipleEvents').show();

  	    multiPopUp();
  	    addOpacityToPopButs();
  	    fixPopPos();

  	});
    

    var cloudHeight = $("div.eventCloud").height();
    if (pageView == 'map') {
        $("div.eventCloud").css({
            'left': '50%',
            'margin-left': '-40px',
            'top': '50%',
            'margin-top': -cloudHeight / 2 - 215 + 'px'
        });
    }
    else if (pageView == 'timeline') {
        $("div.eventCloud").css({
            'left': options.leftPos + 20,
            'top': options.topPos - 80,
            'visibility': 'hidden' 

        });
        $('div.cloudBottom').css('background-position', '0 -929px');
    }

    var heightOfDiv = [];
    var divNumberInView = 1;
    var divNumber = 0;
    var divMinusNumber = -1;
    var multiEventLength;
    var minusBy = 0;

    function multiPopUp() {

        $('div.cell').each(function (num) {
            multiEventLength = num + 1;
            heightOfDiv.push($(this).css('height'));
        });

        $('div.multiWrap').height(parseInt(heightOfDiv[0]));

        getCount(true);

        
        $('.scrButBotWrap a.up').click(function () {

            if (divNumberInView != multiEventLength) scrollDown();
            return false;
        });

       
        $('.scrButWrap a.down').click(function () {

            if (divNumberInView != 1) scrollUp();
            return false;
        });

       
    }

    function addOpacityToPopButs() {
        divNumberInView == multiEventLength ? $('.scrButBotWrap a.up').css('opacity', 0.3) : $('.scrButBotWrap a.up').css('opacity', 1);
        divNumberInView == 1 ? $('.scrButWrap a.down').css('opacity', 0.3) : $('.scrButWrap a.down').css('opacity', 1);
    }

    function getCount(first) {
        if (first != true) {
            $('.eventNum').text($('.eventNum').text().replace(divNumberInView - 1, divNumberInView));
        }
        else {
            $('.eventNum').text($('.eventNum').text().replace("[count]", divNumberInView).replace("[total]", multiEventLength));
        }
    }

    function getPlusCount() {
        $('.eventNum').text($('.eventNum').text().replace(divNumberInView + 1, divNumberInView));

    }

    function scrollDown() {

        var scrollTo = minusBy + parseInt(heightOfDiv[divNumber]) + 6;

        var sizeOfPopPort = parseInt(heightOfDiv[divNumberInView]) + 6
        if (divNumberInView < 4) {
            $('div.eventTopPart').css('padding-bottom', '6px');
        }
        $('div.multiWrap').animate({'height':sizeOfPopPort},200);
        $('.animWrap').animate({ 'top': -scrollTo }, 500);
        minusBy = parseInt(scrollTo);

        divNumber++;
        divNumberInView++;
        divMinusNumber++;

        getCount();
        
        addOpacityToPopButs();
    }

    function scrollUp() {

        divNumber--;
        divNumberInView--;
        divMinusNumber--;

        var scrollTo = minusBy - parseInt(heightOfDiv[divNumber]) - 6;
        var sizeOfPopPort = parseInt(heightOfDiv[divNumber]) + 6
        if (divNumberInView < 4) {
            $('div.eventTopPart').css('padding-bottom', '5px');
        }


        $('div.multiWrap').animate({ 'height': sizeOfPopPort },200);
        $('.animWrap').animate({ 'top': '-' + scrollTo }, 500);
        minusBy = parseInt(scrollTo);
        getPlusCount();
        addOpacityToPopButs();

        //selectClass($('div.eventTopPart')[divNumber]);

    }

    /*function selectClass(el) {
        var splitEl = el.className.split(" ");
        for (var i = 0; i < splitEl.length; i++) {
            if (splitEl[i] != 'eventTopPart' || splitEl[i] != 'first') {
                $('div.eventCloud').removeClass().addClass('eventCloud multipleEvents').addClass(splitEl[i]);
            }
        }
    }*/
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// PLANNER SHIZNICK

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


var plannerDates = [];

var firstDateSet;
var firstMonthSet;
var firstYearSet;
var getFirstTime;

function callMultiPlanner(PassedId, passedDate ,PassedCat) {
    plannerDates = [];
    $.getJSON('/Ajax/GetEventForPlanner.ashx', { Id: PassedId }, function (data) {
        plannerInfo = data;
        plannerCat = PassedCat;
        slctPlannerDate = passedDate;
        slctPlannerEventId = PassedId;
        slctPlannerVenueId = null;
        callLightbox(getPlanner);
    });
}
function requestPlanner() {

    $("div.eventCloud").remove();


    // ** Because of changes made to dates for events **
    // the request for planner has been made a bloated tangled mess.
    // All venues and food and drink categories should have been set at POP UP LEVEL as the global var plannerCat = foodDrink
    // IF VENUE / Restaurant / Bar etc.. => (foodDrink) we continue to the planner 
    // IF EVENT We need to make a new request for events because we need the new json info of First and Second times. 
    // My appologies for mess :) Matt

    plannerCat == 'foodDrink' ? getPlanner() : loadEvent();
}
function loadEvent() {
    $.getJSON('/Ajax/GetEventForPlanner.ashx', { Id: slctPlannerEventId }, function (data) {

        //showInfoPop(data, globalOps);
        plannerInfo = data;
        getPlanner();
    });
}
function getPlanner() {
    //console.log('theSlcPlannerDate' + slctPlannerDate);
    if (typeof (plannerInfo.EventDates) != "undefined") {

        $.each(plannerInfo.EventDates, function (i, passedDate) {
            var date = stripDate(passedDate.First);
            var formattedDate = date.format('dS M Y');

            passedDate.FormattedDate = formattedDate;
            plannerInfo.formattedDate = passedDate.FormattedDate;

        });
    }


    if (typeof (plannerInfo.EventDates) != "undefined") {
        var date = stripDate(plannerInfo.EventDates[0].First);
        //console.log(date + '' + 'StrippedDate for ');
    }

    else {
        var todaysDate = new Date();
        var date = todaysDate;

    }
    
    firstDate = date.format('dS M Y');
    firstDateSet = date.format('d/m/Y');
    date.setMonth(date.getMonth() -1);
    firstMonthSet = date.format('m');
    firstYearSet = date.format('Y');
    getFirstTime = date.format('g:i a');

    var winLoc = window.location.toString();
    if (winLoc.indexOf('?ReturnTo') != -1 && firstLoadQuery == true) {

        var urlDate = $.urlParam('Date');
        var stripToMonth = urlDate.slice(4, 6);
        firstMonthSet = parseInt(stripToMonth) - 1;

        var dateDay = urlDate.slice(6, 8) + '/';
        var dateMonth = urlDate.slice(4, 6) + '/';
        var dateYear = urlDate.slice(0, 4);

        firstDateSet = dateDay + dateMonth + dateYear;

        getFirstTime = urlDate.slice(8);
    }

    plannerInfo.ImgSmall == '' ? ImgSmall = findDefaultImage(plannerCat) : ImgSmall = plannerInfo.ImgSmall;
	
    if (plannerInfo.Venue) {
        var plannerVenueInfo = plannerInfo.Venue.Name;
        var plannerTitle = plannerInfo.Title;
        var plannerPrice = plannerInfo.Price;
    }
    else {
        var plannerVenueInfo = plannerInfo.Address1;
        var plannerTitle = plannerInfo.Name;
        var plannerPrice = '';
    }

    $('.eventCloud').remove();
    $('body').append('<div class="myPlannerPopUp">'
    + '<div class="topBox pf">&nbsp;</div><div class="middleBox pf">'
    + '<div class="header1"><span class="left"></span><div class="middle"><h2>Add to Planner</h2></div><span class="right"></span></div>'
            + '<div class="leftBlock">'
               + '<span class="popUpCloudText">'
                 + '<span class="left"></span>'
                 + '<span class="middleShort">'
                      + '<span class="textShort">Choose a date</span>'
                   + '</span>'
                    + '<span class="right"></span>'
               + ' </span> '
                + ' <div class="datePickerSmall">'
                    + '<div class="top-table-planner">&nbsp;</div>'
                    + '<div class="middle-table-planner">'
                        + '<div class="datepicker01">Datepicker</div>'
                    + '</div>'
                   + '<div class="bottom-table-planner">&nbsp;</div> '
        		+ '</div>'
             + '</div>'
            + '<div class="rightBlock' + ' ' + plannerCat + '">'
            	+ '<div class="top">'
                	+ '<span class="popUpCloudText">'
                        + '<span class="left"></span>'
                        + '<span class="middleShort">'
                            + '<span class="textShort">Choose a time</span>'
                        + '</span>'
                        + '<span class="right"></span>'
                	+ '</span>'
					+ '<div class="dropPlanner">'
                    	+ '<div class="inputWrap">'
                        	+ '<span class="input" id="firstTime"></span><a href="#" class="inpBut">Select</a>'
                            + '<div class="dropDown closed">'
                                        + '<ul id="timeList">'
                                        + '</ul>'
                                    + '</div>'
                                + '</div>'
                            + '</div>'
                + '</div>'
                + '<div class="middle">'
                	+ '<span class="popUpCloudText">'
                        + '<span class="left"></span>'
                        + '<span class="middleLong">'
                            + '<span class="textLong">What you\'re planning to do...</span>'
                        + '</span>'
                        + '<span class="right"></span>'
                	+ '</span>'
                    + '<div class="eventTopPart">'
                            + '<img src="' + ImgSmall + '" />'
                           + '<span class="date">' + firstDate + '</span>'
                            + '<h3>' + plannerTitle + ' </h3>'

                                + '<h4>' + plannerVenueInfo + '</h4>'
                           
                           + '<span class="price">' + plannerPrice + '</span>'
                    	+ '</div>'
                    	+ '</div>'
                + '<div class="bottom">'
                	+ '<a onclick="postPlannerDetails(); return false;" id="postMyPlanner" class="button red" href="#"><span>&nbsp;</span>Add to planner</a>'
                + '</div>'
            + '</div>'
        + '</div>'
       + '<div class="bottomBox pf">&nbsp;</div>' +
       '<a href="#" onclick="planClose(); return false;" class="popCloseBut">Close</a>'
    + '</div>');

    getPlannerDatePicker();
    getPlannerDropDownSelect();
    firstLoadQuery = false;
}

function planClose() {
    $('.myPlannerPopUp').remove();
    $('.light-mask').remove();
}

var planDCount = 0;

function getPlannerDatePicker() {

    planDCount = 0;

    $('.datepicker01').datePicker(
		{

		    inline: true, month: firstMonthSet, year: firstYearSet,

		    renderCallback: function ($td, thisDate, month, year) {

		        if (typeof (plannerInfo.EventDates) != "undefined") { //  << Testing for venue here 
		            
		            var alreadyDisabled = $td.is('.disabled');

		            date = thisDate;
		            newdate = date.format('dS M Y');

		            var found = false;
		            for (var i = 0; i < plannerInfo.EventDates.length; i++) {
		                if (plannerInfo.EventDates[i].FormattedDate == newdate) {
		                    found = true;
		                    break;
		                }
		            }

		            if (!found) {
		                $td.addClass('disabled');
		            }
		        }


		    }

		}).bind(
			'dateSelected',
			function (e, selectedDate, $td) {

			    var date = selectedDate;
			    var formattedDate = date.format('dS M Y');
			    if (typeof (plannerInfo.EventDates) != "undefined") {
			        compareDates(formattedDate);
			    }
			    else {
			        compareDates(date);
			    }
			    $('.eventTopPart .date').text(formattedDate);
			}
		);
			if (typeof (plannerInfo.EventDates) != "undefined") {
			    $('.datepicker01').dpSetSelected(slctPlannerDate);
			}
			else {
			    $('.datepicker01').dpSetSelected(firstDateSet);
			}
		
		//console.log(firstDateSet + 'firstDateSet');
		function compareDates(passedDate) {

		    $('#timeList').empty();
		    var datesForTime = [];
		    var listedTimes = '';
		    var firstTime = '';
		    if (typeof (plannerInfo.EventDates) != "undefined") { //  << Testing for venue here 
		        for (var i = 0; i < plannerInfo.EventDates.length; i++) {
		            if (plannerInfo.EventDates[i].FormattedDate == passedDate) {
		                dateForTime = new Object();
		                dateForTime.First = plannerInfo.EventDates[i].First;
		                dateForTime.Second = plannerInfo.EventDates[i].Second;
		                datesForTime.push(dateForTime);
                    }
		        }
		    }
		    else {
		        $('ul#timeList').parent('div').addClass('ddScroll');
		        for (var i = 0; i < 24; i++) {
		            datesForTime.push('/Date(' + passedDate.setHours(i) + ')/');
		         }
		    }

		    typeof (plannerInfo.EventDates) != "undefined" ? firstTime = datesForTime[0].First : firstTime = datesForTime[0];
		   
		    var date = stripDate(firstTime);
		    var slcDateFormatted = date.format('YmdHi');

            slctPlannerDate = slcDateFormatted;

            $.each(datesForTime, function (index, data) {

                var date;

                typeof (plannerInfo.EventDates) != "undefined" ? date = stripDate(data.First) : date = stripDate(data);
                var time = date.format('Hi');

                if (getFirstTime == time && firstLoadQuery == true) {
                    if (data.First == data.Second) {
                        if (typeof (plannerInfo.EventDates) != "undefined") {
                            listedTimes += '<li><a class="' + data.First + '" href="#" onclick="callAndClose(this); return false;">' + date.format('g:i a') + '</a></li>';
                        }
                        else {
                            listedTimes += '<li><a class="' + data + '" href="#" onclick="callAndClose(this); return false;">' + date.format('g:i a') + '</a></li>';
                        }
                    }
                    else {
                        if ($.browser.mozilla) {
                            console.log('Im unsure of when or why this situation occurs, possible cr45h (sorry :) ');
                        }
                    }
                    chooseUrlDate(data.First, date.format('g:i a'));
                }
                else {

                    if (data.First == data.Second) {
                        if (typeof (plannerInfo.EventDates) != "undefined") {
                            listedTimes += '<li><a class="' + data.First + '" href="#" onclick="callAndClose(this); return false;">' + date.format('g:i a') + '</a></li>';
                        }
                        else {
                            listedTimes += '<li><a class="' + data + '" href="#" onclick="callAndClose(this); return false;">' + date.format('g:i a') + '</a></li>';
                        }
                    }
                    else {
                        var firstDate = stripDate(data.First);
                        var secondDate = stripDate(data.Second);
                        date = firstDate;
                        while (firstDate < secondDate) {
                            listedTimes += '<li><a class="Date/(' + Date.parse(date) + ')/" href="#" onclick="callAndClose(this); return false;">' + date.format('g:i a') + '</a></li>';
                            date.setMinutes(date.getMinutes() + 30);
                        }

                    }


                }

            });

            var firstTime = $(listedTimes).first().text();

            $('#timeList').append(listedTimes);

            if ($('#firstTime').hasClass('fromUrl') != true) $('#firstTime').text(firstTime);

            var amountInList = $('#timeList li').length;
            amountInList > 10 ? $('#timeList').parent().addClass('ddScroll') : $('#timeList').parent().removeClass('ddScroll');
        }
}
function chooseUrlDate(data, time) {

    $('#firstTime').addClass('fromUrl').text(time);
    var date = stripDate(data);
    var formattedDate = date.format('YmdHi');
    slctPlannerDate = formattedDate;
}

function postPlannerDetails() {
    
    testLoginState();
    if (loggedIn == true) {
        $.getJSON('/Ajax/PlannerAdd.ashx', { EventId: slctPlannerEventId, VenueId: slctPlannerVenueId, Date: slctPlannerDate }, function (data) {
            if (typeof (data) == "string") {
                $('<p class="aaWarning" style="float: left; width: 100%; padding: 0px 0pt 10px 20px; color: red; text-decoration: blink;">' + data + '</p>').insertAfter('.myPlannerPopUp div.header1');
                setTimeout('$("p.aaWarning").remove()', 3000);
                return;
            }
            else if (!Error == undefined) {
                loggedOut();
            }
            else {
                $('.light-mask').remove();
                $('.myPlannerPopUp').remove();

                loginSuccess(data);
            }
        });
    }
    else {
        loggedOut();
    }
}

function loggedOut() {
    loggedIn = 'plannerPending';
    $('.myPlannerPopUp').hide();
    $('a.mainBut').trigger('click');
}

function stripDate(passedDate) {
    return new Date(parseInt(passedDate.substring(6)));
}

Date.prototype.format = function (format) {
    var returnStr = '';
    var replace = Date.replaceChars;
    for (var i = 0; i < format.length; i++) {
        var curChar = format.charAt(i);
        if (i - 1 >= 0 && format.charAt(i - 1) == "\\") {
            returnStr += curChar;
        }
        else if (replace[curChar]) {
            returnStr += replace[curChar].call(this);
        } else if (curChar != "\\") {
            returnStr += curChar;
        }
    }
    return returnStr;
};

Date.replaceChars = {
    shortMonths: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
    longMonths: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
    shortDays: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
    longDays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],

    // Day
    d: function () { return (this.getDate() < 10 ? '0' : '') + this.getDate(); },
    D: function () { return Date.replaceChars.shortDays[this.getDay()]; },
    j: function () { return this.getDate(); },
    l: function () { return Date.replaceChars.longDays[this.getDay()]; },
    N: function () { return this.getDay() + 1; },
    S: function () { return (this.getDate() % 10 == 1 && this.getDate() != 11 ? 'st' : (this.getDate() % 10 == 2 && this.getDate() != 12 ? 'nd' : (this.getDate() % 10 == 3 && this.getDate() != 13 ? 'rd' : 'th'))); },
    w: function () { return this.getDay(); },
    z: function () { var d = new Date(this.getFullYear(), 0, 1); return Math.ceil((this - d) / 86400000); }, // Fixed now
    // Week
    W: function () { var d = new Date(this.getFullYear(), 0, 1); return Math.ceil((((this - d) / 86400000) + d.getDay() + 1) / 7); }, // Fixed now
    // Month
    F: function () { return Date.replaceChars.longMonths[this.getMonth()]; },
    m: function () { return (this.getMonth() < 9 ? '0' : '') + (this.getMonth() + 1); },
    M: function () { return Date.replaceChars.shortMonths[this.getMonth()]; },
    n: function () { return this.getMonth() + 1; },
    t: function () { var d = new Date(); return new Date(d.getFullYear(), d.getMonth(), 0).getDate() }, // Fixed now, gets #days of date
    // Year
    L: function () { var year = this.getFullYear(); return (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)); }, // Fixed now
    o: function () { var d = new Date(this.valueOf()); d.setDate(d.getDate() - ((this.getDay() + 6) % 7) + 3); return d.getFullYear(); }, //Fixed now
    Y: function () { return this.getFullYear(); },
    y: function () { return ('' + this.getFullYear()).substr(2); },
    // Time
    a: function () { return this.getHours() < 12 ? 'am' : 'pm'; },
    A: function () { return this.getHours() < 12 ? 'AM' : 'PM'; },
    B: function () { return Math.floor((((this.getUTCHours() + 1) % 24) + this.getUTCMinutes() / 60 + this.getUTCSeconds() / 3600) * 1000 / 24); }, // Fixed now
    g: function () { return this.getHours() % 12 || 12; },
    G: function () { return this.getHours(); },
    h: function () { return ((this.getHours() % 12 || 12) < 10 ? '0' : '') + (this.getHours() % 12 || 12); },
    H: function () { return (this.getHours() < 10 ? '0' : '') + this.getHours(); },
    i: function () { return (this.getMinutes() < 10 ? '0' : '') + this.getMinutes(); },
    s: function () { return (this.getSeconds() < 10 ? '0' : '') + this.getSeconds(); },
    u: function () {
        var m = this.getMilliseconds(); return (m < 10 ? '00' : (m < 100 ?
'0' : '')) + m;
    },
    // Timezone
    e: function () { return "Not Yet Supported"; },
    I: function () { return "Not Yet Supported"; },
    O: function () { return (-this.getTimezoneOffset() < 0 ? '-' : '+') + (Math.abs(this.getTimezoneOffset() / 60) < 10 ? '0' : '') + (Math.abs(this.getTimezoneOffset() / 60)) + '00'; },
    P: function () { return (-this.getTimezoneOffset() < 0 ? '-' : '+') + (Math.abs(this.getTimezoneOffset() / 60) < 10 ? '0' : '') + (Math.abs(this.getTimezoneOffset() / 60)) + ':00'; }, // Fixed now
    T: function () { var m = this.getMonth(); this.setMonth(0); var result = this.toTimeString().replace(/^.+ \(?([^\)]+)\)?$/, '$1'); this.setMonth(m); return result; },
    Z: function () { return -this.getTimezoneOffset() * 60; },
    // Full Date/Time
    c: function () { return this.format("Y-m-d\\TH:i:sP"); }, // Fixed now
    r: function () { return this.toString(); },
    U: function () { return this.getTime() / 1000; }
};

function setVenInvisible() {
    $('div.checkFoodDrink').css('visibility', 'hidden');
}
function setVenVisible() {
    $('div.checkFoodDrink').css('visibility', 'visible');
}

function getCategoryColour( categoryName ) {
	switch ( categoryName ) {
		case 'Art' : 
			return '#90b129';
		case 'Comedy' : 
			return '#9d8d87';
		case 'Dance' : 
			return '#e7008d';
		case 'Festivals' : 
			return '#eb5f28';
		case 'Film' : 
			return '#76aeb8';
		case 'Heritage' : 
			return '#14496c';
		case 'Music' : 
			return '#820052';
		case 'Theatre' : 
			return '#d21d34';
		case 'FoodDrink' : 
			return '#000';
		case 'More' : 
			return '#eb5f28';
		default :
			return '#000';
	}
}

function fixPopPos() {
   
    var showPicReady = false;
    var top = $("div.eventCloud").position().top;
    var right = $("div.eventCloud").position().left + 354;
   
    if (top < 0) {
        $("div.eventCloud").css({ 'top': 0 });
        $("div.eventCloud").css({ 'visibility': 'visible' });
    }
    else {
        $("div.eventCloud").css({ 'visibility': 'visible' });
    }
    var windowWidth = $(window).width();
    if (right > windowWidth) {

        var newPos = right - windowWidth;
        var left = parseInt($("div.eventCloud").css('left'));
        var posIt = left - newPos;

        $("div.eventCloud").css({ 'left': posIt, 'visibility': 'visible' });
    }
    else {
        $("div.eventCloud").css({ 'visibility': 'visible' });
    }
      
}

function popClose() {
    $("div.eventCloud").remove();
}
function setTimelineKey() {
    var posOfTimeL = $('#timeline').offset().top;
    
    if ($.browser.msie) {
        $('.timelineKey').css('top', posOfTimeL + 7 + 'px');
    }
    else {
        $('.timelineKey').css('top', posOfTimeL + 187 + 'px');
    }
}

function panelLogin() {

    flag = true;

    var email = $('.formInputField input.email').val();
    var password = $('.formInputField input.password').val();
    var persist = $('span#chk-reg').hasClass('check-on');
   
    flag = testForEmpty();
    if (flag == true) {
        $.getJSON('Ajax/Login.ashx', { email: email, password: password, persist: persist }, function (data) {
            data == false ? postLoginError() : loginSuccess(data);
        });
    }
}

function loginSuccess(data) {
	
    var passedData = data;
    $('ul#errorInfo').remove();
    $('.loginBlock-middle').empty();
    $('ul#loggedIn').css({ 'display': 'block' });
    var html = '';

    if (data.UserName != null) {
        showLoggedIn(data.UserName);
        passedData = data.UpcomingEvents;
    }
    if (passedData.length == 0) {
        $('div.loginBlock-middle').prepend('<p class="emptyPlanner">Your planner is empty</p>');
    }


    $.each(passedData, function (i, info) {
		
        typeof (info.Categories[0]) != 'undefined' ? cat = info.Categories[0].Name : cat = 'FoodDrink';

        var date = stripDate(info.Date);
        var formattedDate = date.format('dS M Y');
        info.ImgSmall == '' ? ImgSmall = findDefaultImage(cat) : ImgSmall = info.ImgSmall;
        html += '<div class="' + cat + ' event">',
        info.PlannerType == 0 ? html += '<img src="' + ImgSmall + '" alt="' + info.Name + '" height="48" width="48" />' : html += '<img src="' + ImgSmall + '" alt="' + info.Name + '" height="48" width="48" />';
        html += '<span class="eventDate">' + formattedDate + '</span>',
        html += '<h3 class="event">' + info.Name + '</h3>';
        if (info.PlannerType == 0) html += '<h3 class="location">' + info.Venue.Name + '</h3>';

        html += '</div>',
        html += '<span class="borderDoubleOne">&nbsp;</span>',
        html += '<span class="borderDoubleTwo">&nbsp;</span>',
        '</div>';
    });

    html += '<a href="/my-planner" class="button black viewAll" style="width:50px;"><span>&nbsp;</span>View all</a>';
    html += '<a href="#" onclick="toggleLogList()" class="button black toggleLogList" style="width: 35px; float: right; margin:3px 15px 0 0"><span>&nbsp;</span>Close</a>';
    $(html).appendTo('div.loginBlock-middle');

    if (loggedIn == 'plannerPending') {
        toggleLogList();
        $('.myPlannerPopUp').show();
        testLoginState();
    }
    else {
        toggleLogList();
        var el = $('.logInBlock');
        if ($(el).css('display') != 'block') {
            toggleLogList();
        }
    }
}

function forgottenPassword() {
    $('ul#errorInfo').remove();
    var forgottenClick = 'forgottenPass(); return false';
    $('.passwordWrap')
        .slideUp('fast')
        .next('a.logIn').hide()
        .next('span.radioButton').hide().next('a.forgottenPassword').hide();
    $('<a onclick="sendForgot()" class="button black forgotPass" href="#"><span class="ieButtonFix">&nbsp;</span>Send</a>').insertAfter('.passwordWrap');
    $('<a href="#" class="cancelPas" style="float:right; color: #000000; font-size:10px; margin:10px 20px 0 0;" onclick="cancelForgPass()">Cancel</a>').insertAfter('a.forgotPass');
    $('h3.logIn:first').text('Please enter Your email');
}

function cancelForgPass() {
    $('h3.logIn:first').text('Please Log-in');
    $('.passwordWrap').slideDown('fast');
    $('a.forgotPass').remove();
    $('a.logIn').show();
    $('span.radioButton').show();
    $('a.forgottenPassword').show();
    $('a.cancelPas').remove();
}

function sendForgot() {
    var email = $('.formInputField input.email').val();
    $.getJSON('/Ajax/ForgottenPassword.ashx', {email:email}, function (data) {
        data == true ? forgPassSuccess() : forgPassError();
    });
}

function showLoggedIn(name) {
    var text = $('#loggedIn').children('li:contains("[name]")').text();
    var newText = text.replace('[name]', name);
    $('#loggedIn').children('li:contains("[name]")').text(newText);
}

function postLoginError() {
    $('ul#errorInfo').remove();
    $('<ul id="errorInfo"></ul>').insertAfter('.borderDoubleTwo');
    var html = '<li>Login details where incorrect</li>';
    $(html).appendTo('ul#errorInfo');
}
function forgPassError() {
    $('ul#errorInfo').remove();
    $('<ul id="errorInfo"></ul>').insertAfter('.borderDoubleTwo');
    var html = '<li>This email is not registered with us.</li>';
    $(html).appendTo('ul#errorInfo');
}
function forgPassSuccess() {
    $('ul#errorInfo').remove();
    $('<ul id="errorInfo"></ul>').insertAfter('.borderDoubleTwo');
    var html = '<li style="color:blue">A Details have been sent.</li>';
    $(html).appendTo('ul#errorInfo');
    setTimeout('$(".cancelPas").trigger("click")', 10000);
    
}
function toggleLogList() {
        $('a.mainBut').trigger('click');
    }

function testForEmpty(fromPost) {
    var returnString = false;
    $('.formInputField input').each(function () {

        if ($(this).val() == '') {
            $('ul#errorInfo').remove();
            $('<ul id="errorInfo"></ul>').insertAfter('.borderDoubleTwo');
            var html = '<li>Please fill in any empty fields</li>';
            $(html).appendTo('ul#errorInfo');
            returnString = false;
        }
        else {
            
            returnString = true;
        }
        
    });
    return returnString;
}

function findDefaultImage(cat) {

    switch (cat) {
            case 'Dance':
                return 'images/defaults/small/default-dance-small.gif';
                break;
            case 'Theatre':
                return 'images/defaults/small/default-theatre-small.gif';
                break;
            case 'Art':
                return 'images/defaults/small/default-art-small.gif';
                break;
            case 'Comedy':
                return 'images/defaults/small/default-comedy-small.gif';
                break;
            case 'Festivals':
                return 'images/defaults/small/default-festivals-small.gif';
                break;
            case 'Film':
                return 'images/defaults/small/default-film-small.gif';
                break;
            case 'Heritage':
                return 'images/defaults/small/default-heritage-small.gif';
                break;
            case 'Music':
                return 'images/defaults/small/default-music-small.gif';
                break;
			case 'More':
                return 'images/defaults/small/default-more-small.gif';
                break;
            case 'Cafe':
                return 'images/defaults/small/default-cafe-small.gif';
                break;
            case 'Restaurant':
                return 'images/defaults/small/default-restaurant-small.gif';
                break;
            case 'Bar':
                return 'images/defaults/small/default-bar-small.gif';
                break;
            case 'Pub':
                return 'images/defaults/small/default-pub-small.gif';
                break;
            default:
                //markerImage = imageUrl.number
        }
    }

    //////////////////////////////////////////////////
    // Register Bizzle

    function registerHit() {
        var plannerExist = $('.myPlannerPopUp').length;
        if (plannerExist) {
            var string = '';
            winLoc = window.location;
            if (winLoc.pathname) {
                //string += '?ReturnTo=' + winLoc.pathname;
            }


            if (slctPlannerEventId != undefined) {
                string += '?EventId=' + slctPlannerEventId;
            }
            else if (slctPlannerVenueId != undefined) {
                string += '?VenueId=' + slctPlannerVenueId;
            }
            string += '&Cat=' + plannerCat;
            string += '&Date=' + slctPlannerDate;
            window.location = '/register/' + string;

            return false;
        }
        else {
            window.location = '/register/';
        }
        
    }

    function chooseUrlDate(data, time) {

        $('#firstTime').addClass('fromUrl').text(time);
        var date = stripDate(data);
        var formattedDate = date.format('YmdHi');
        slctPlannerDate = formattedDate;
    }

    /* REMOVED FUNCTIONALITY ** function queryFromRegister() {

        // $.urlParam finds the value in query string, method created by a plugin found below on this page

        var winLoc = window.location.toString();

        if (winLoc.indexOf('?ReturnTo') != -1 && firstLoadQuery == true) {

            var docHeight = $(document).height();
            $('<div class="light-mask" style="width:100%; position:absolute; background:#000; left:0; top:0; z-index:9000;"></div>').appendTo('body');
            $('div.light-mask').css({ 'height': docHeight, opacity: '0.6' });

            winLoc.indexOf('&VenueId') != -1 ? setPlannerVenue($.urlParam('VenueId'), $.urlParam('Cat')) : setPlannerEvent($.urlParam('EventId'), $.urlParam('Cat'));
        }
    } */

    function setPlannerVenue(Id, Cat) {
        requestVenue(Id, Cat);
    }
    function setPlannerEvent(Id, Cat) {
        requestEvent(Id, Cat);
    }

    function requestEvent(Id, Cat) {

        $.getJSON('/Ajax/GetEventForPlanner.ashx', { Id: Id }, function (data) {

            //showInfoPop(data, globalOps);
            plannerInfo = data;
            plannerCat = Cat;
            slctPlannerEventId = data.Id;
            slctPlannerVenueId = null;
            getPlanner();
        });

    }
    function requestVenue(Id, Cat) {
        $.getJSON('/Ajax/GetVenue.ashx', { Id: Id }, function (data) {
            plannerInfo = data;
            plannerCat = Cat;
            slctPlannerVenueId = data.Id;
            slctPlannerEventId = null;
            getPlanner();
        });
    }


    // check query string params

    $.urlParam = function (name) {
        var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href);
        if (!results) { return 0; }
        return decodeURIComponent(results[1].replace(/\+/g, " ")) || 0;
    }


