// ====================
// support functions
    function microtime() {
        var currTime = new Date().getTime();
        return currTime;
    }

    function getDayName(theDate) {
        var daynames = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']
        var day = new Date(theDate);
        return daynames[day.getDay()];
    }

    function getNextDays() {
        var today = new Date();
        var seconds = today.getTime();
        var day = '';

        for(var i = 0; i < 7; i++) {
            if(i == 0) {
                day  = 'Today';
                dayID = getDayName(seconds + i*86400000);
            } else {
                day = getDayName(seconds + i*86400000);
                dayID = day;
            }
            $('#dynDayFilter').append('<span class="nobr dayFilter" id="f'+dayID+'"><a href="#f'+dayID+'" class="f'+dayID+'">'+day+'</a></span> ')
        }
        $('#dynDayFilter').append('<span class="nobr dayFilter" id="fWeekend"><a href="#fWeekend" class="fWeekend">Weekend</a></span> ')
    }

    function setFilter(filterID, filterCount) {
        if(filterCount > 0) {
            $('#'+filterID+' a').append(' ('+filterCount+')');
        } else {
            $('#'+filterID+'').remove();
        }
    }

    function hideButtons() {
        $('.abAccessible').addClass('bAccessible').removeClass('abAccessible');
        $('.abWheelchair').addClass('bWheelchair').removeClass('abWheelchair');
        $('.bAccessible').hide();
        $('.bAccessible').hide();
        $('.bAccessible').hide();
        $('.bAlsoAsIMAX').hide();
        $('.bAlsoAsIMAX3D').hide();
        $('.bAlsoAsDigital').hide();
        $('.bAlsoAs3D').hide();
        $('.bWheelchair').show();
        $('.timeslisting .fWheelchair').css({backgroundColor:'#f0f0f0'});
        $('div.formats div.text').hide();
    }

    function showButtons() {
        $('.abAccessible').addClass('bAccessible').removeClass('abAccessible');
        $('.abWheelchair').addClass('bWheelchair').removeClass('abWheelchair');
        $('.bAccessible').show();
        $('.bAlsoAsIMAX').show();
        $('.bAlsoAsIMAX3D').show();
        $('.bAlsoAsDigital').show();
        $('.bAlsoAs3D').show();
        $('.bWheelchair').show();
        $('.timeslisting .fWheelchair').css({backgroundColor:'#f0f0f0'});
        $('div.formats div.text').show();
    }

	function filterShowAll() {
        $('.filmdiv').show();
        $('.filmblock').show();
        $('.timeslisting').show();
        $('.dayline').show();
    }

	function filterRegular() {
        filterShowAll();
        $('div.timeslisting.fAccessible').hide();
/*
		$('.fPlusSport').hide();
        $('.fPlusMusic').hide();
        $('.fPlusCulture').hide();
        $('.fPlusGaming').hide();
*/
        showButtons();
	}

    function bAccessibleOn(ctx) {
		$(ctx).addClass('abAccessible').removeClass('bAccessible');
        var filmdiv = $(ctx).parents('.filmdiv');
        $('.fAccessible', filmdiv).filter('div:not(.filmblock)').fadeIn();
    }

    function bAccessibleOff(ctx) {
    	$(ctx).addClass('bAccessible').removeClass('abAccessible');
        var filmdiv = $(ctx).parents('.filmdiv');
        $('.fAccessible', filmdiv).filter('div:not(.filmblock)').fadeOut();
    }

    function bWheelchairOn(ctx) {
		$(ctx).addClass('abWheelchair').removeClass('bWheelchair');
        var filmdiv = $(ctx).parents('.filmdiv');
        $('.timeslisting .fWheelchair', filmdiv).css({backgroundColor:'yellow'});
    }

    function bWheelchairOff(ctx) {
    	$(ctx).addClass('bWheelchair').removeClass('abWheelchair');
        var filmdiv = $(ctx).parents('.filmdiv');
        $('.timeslisting .fWheelchair', filmdiv).css({backgroundColor:'#f0f0f0'});
    }



// ====================
// ** main()
$(document).ready(function() {

    getNextDays();

    var size            = 0;
    var cAccessible     = 0;
    var cGallery        = 0;
    var cIntermission   = 0;
    var cDigital        = 0;
    var cIMAX           = 0;
    var c3D             = 0;
    var cSeniorScreen   = 0;
    var cKids           = 0;
    var cNewbies        = 0;
    var cBollywood      = 0;
    var cDirectorsChair = 0;
    var cPlusSport      = 0;
    var cPlusMusic      = 0;
    var cPlusCulture    = 0;
    var cPlusGaming     = 0;
    var cMonday         = 0;
    var cTuesday        = 0;
    var cWednesday      = 0;
    var cThursday       = 0;
    var cFriday         = 0;
    var cSaturday       = 0;
    var cSunday         = 0;
    var all             = 0;
    var parentclass;
    var myclass;
    $('.dayline').each(function(index) {
        size = 0;
        size = $('div.showingtimes', this).children().size();
        myclass = $(this).attr('class');
        parentclass = $(this).parent('.timeslisting').attr('class');
        if(parentclass.match('fAccessible'))    { cAccessible += size; }
        if(parentclass.match('fGallery'))       { cGallery += size; }
        if(parentclass.match('fIntermission'))  { cIntermission += size; }
        if(parentclass.match('fDigital'))       { cDigital += size; }
        if(parentclass.match('fIMAX'))          { cIMAX += size; }
        if(parentclass.match('f3D'))            { c3D += size; }
        if(parentclass.match('fSeniorScreen'))  { cSeniorScreen += size; }
        if(parentclass.match('fKids'))          { cKids += size; }
        if(parentclass.match('fNewbies'))       { cNewbies += size; }
        if(parentclass.match('fBollywood'))     { cBollywood += size; }
        if(parentclass.match('fDirectorsChair')){ cDirectorsChair += size; }
        if(parentclass.match('fPlusSport'))     { cPlusSport += size; }
        if(parentclass.match('fPlusMusic'))     { cPlusMusic += size; }
        if(parentclass.match('fPlusCulture'))   { cPlusCulture += size; }
        if(parentclass.match('fPlusGaming'))    { cPlusGaming += size; }
        if(myclass.match('fMonday'))        { cMonday += size; }
        if(myclass.match('fTuesday'))       { cTuesday += size; }
        if(myclass.match('fWednesday'))     { cWednesday += size; }
        if(myclass.match('fThursday'))      { cThursday += size; }
        if(myclass.match('fFriday'))        { cFriday += size; }
        if(myclass.match('fSaturday'))      { cSaturday += size; }
        if(myclass.match('fSunday'))        { cSunday += size; }
        all += size;
    });

    // show filter and hide line under tabs
    $('.filterline').show();

    // count performances for each filter and show count on filter
    $('#fRegular a').append(' ('+(all-cAccessible-cPlusSport-cPlusMusic-cPlusCulture-cPlusGaming)+')');
    $('.nobr a').removeClass('active');
    $('#fRegular a').addClass('active');
    setFilter('fAccessible', cAccessible);
    setFilter('fGallery', cGallery);
    setFilter('fIntermission', cIntermission);
    setFilter('fDigital', cDigital);
    setFilter('fIMAX', cIMAX);
    setFilter('f3D', c3D);
    setFilter('fSeniorScreen', cSeniorScreen);
    setFilter('fKids', cKids);
    setFilter('fNewbies', cNewbies);
    setFilter('fBollywood', cBollywood);
    setFilter('fDirectorsChair', cDirectorsChair);
    setFilter('fPlusSport', cPlusSport);
    setFilter('fPlusMusic', cPlusMusic);
    setFilter('fPlusCulture', cPlusCulture);
    setFilter('fPlusGaming', cPlusGaming);
    $('#fShowAll a').append(' ('+all+')');
    $('.eventFilter').append(' ');

    // count performances for each day and show count on filter
    $('#fMonday a').append(' ('+cMonday+')');
    $('#fTuesday a').append(' ('+cTuesday+')');
    $('#fWednesday a').append(' ('+cWednesday+')');
    $('#fThursday a').append(' ('+cThursday+')');
    $('#fFriday a').append(' ('+cFriday+')');
    $('#fSaturday a').append(' ('+cSaturday+')');
    $('#fSunday a').append(' ('+cSunday+')');
    $('#fWeekend a').append(' ('+(cFriday+cSaturday+cSunday)+')');

    // ====================
    // tooltips
    $('.formatinfo').cluetip({
      splitTitle: '|',
      hoverIntent: {
        sensitivity:  3,
        interval:     100,
        timeout:      0
      },
      dropShadow: true}
    );

    $('.bAlsoAsIMAX').attr('title','IMAX|IMAX is the ultimate cinematic experience - immerse yourself in action that towers 8 storeys high and is as wide as 3 double decker buses.').cluetip({
      splitTitle: '|',
      hoverIntent: {
        sensitivity:  3,
        interval:     100,
        timeout:      0
      },
      dropShadow: true}
    );

    $('.bAlsoAsIMAX3D').attr('title','IMAX3D|Imax is the ultimate cinematic experience - immerse yourself in action so real you\'ll want to reach out and touch it.').cluetip({
      splitTitle: '|',
      hoverIntent: {
        sensitivity:  3,
        interval:     100,
        timeout:      0
      },
      dropShadow: true}
    );

    $('.bAlsoAsDigital').attr('title','ODEON Digital|Digital performances offer crystal clear picture quality and superior digital sound.').cluetip({
      splitTitle: '|',
      hoverIntent: {
        sensitivity:  3,
        interval:     100,
        timeout:      0
      },
      dropShadow: true}
    );

    $('.bAlsoAs3D').attr('title','3D|Screening in Digital 3-D - a new dimension in cinema.').cluetip({
      splitTitle: '|',
      hoverIntent: {
        sensitivity:  3,
        interval:     100,
        timeout:      0
      },
      dropShadow: true}
    );

    $('.bAlsoAsIntermission').attr('title','Intermission|Some longer performances have an intermission, allowing you time to refresh without missing a minute of the action.').cluetip({
      splitTitle: '|',
      hoverIntent: {
        sensitivity:  3,
        interval:     100,
        timeout:      0
      },
      dropShadow: true}
    );


    $('.bAccessible').attr('title','Accessible performances|Includes Audio Described and/or Subtitled performances for the hard of hearing.').cluetip({
      splitTitle: '|',
      hoverIntent: {
        sensitivity:  3,
        interval:     100,
        timeout:      0
      },
      dropShadow: true}
    );

    $('.bWheelchair').attr('title','Wheelchair accessible performances|Wheelchair accessible screenings are shown highlighted in yellow.  Access to screen is either stair-free or via a lift.').cluetip({
      splitTitle: '|',
      hoverIntent: {
        sensitivity:  3,
        interval:     100,
        timeout:      0
      },
      dropShadow: true}
    );

    // ====================
    // add events -- toggles

    //  Accessible toggle button
    $('.bAccessible').click(function() {
    	if($(this).hasClass('bAccessible')) {
    		bAccessibleOn(this);
    	} else {
    		bAccessibleOff(this);
    	}
    	return false;
    });

	// Wheelchair toggle button
    $('.bWheelchair').click(function() {
    	if($(this).hasClass('bWheelchair')) {
    		bWheelchairOn(this);
    	} else {
    		bWheelchairOff(this);
    	}
    	return false;
    });


    // ====================
    // add events -- clicks

    // scroll to buttons
	$('.bAlsoAsIMAX').click(function() {
		var ref = $('a',this).attr('href').substring(2);
		$.scrollTo('#'+ref,800);
        return false;
	});

	$('.bAlsoAsIMAX3D').click(function() {
		var ref = $('a',this).attr('href').substring(2);
		$.scrollTo('#'+ref,800);
        return false;
	});

	$('.bAlsoAsDigital').click(function() {
		var ref = $('a',this).attr('href').substring(2);
		$.scrollTo('#'+ref,800);
        return false;
	});

	$('.bAlsoAs3D').click(function() {
		var ref = $('a',this).attr('href').substring(2);
		$.scrollTo('#'+ref,800);
        return false;
	});

	$('.bAlsoAsIntermission').click(function() {
		var ref = $('a',this).attr('href').substring(2);
		$.scrollTo('#'+ref,800);
        return false;
	});


    // assign click events to link in filter container
    // onclick: event filter:
    $('.eventFilter a').click(
        function(){
            var ft = $(this).attr('href').substring(1);

            if(ft == 'fRegular') {
            	filterRegular();
            } else {
                hideButtons();
                if(ft == 'fShowAll') {
                    filterShowAll();
                } else {
    				$('.filmdiv').hide();
                    $('.filmblock').show();
                    $('.timeslisting').hide();
                    $('.dayline').show();

                    if(ft == 'fIMAX') {
                        $('.fIMAX').parent('div.filmdiv').show();
                        $('.fIMAX3D').parent('div.filmdiv').show();
        				$('.fIMAX').show();
        				$('.fIMAX3D').show();
                    } else{
                        $('.'+ft).parent('div.filmdiv').show();
        				$('.'+ft).show();
                    }
                }
            }

            $('.nobr a').removeClass('active');
            $('#'+ft+' a').addClass('active');

            return false;
        }
    );
    // onclick: weekday filter
    $('.dayFilter a').click(
        function(){
            var ft = $(this).attr('class');
            if(ft != 'fWeekend') {
                hideButtons();

                $('.timeslisting').hide();
                $('.filmblock').hide();
                $('.dayline').hide();
                $('.filmdiv').show();

                $('.'+ft).show();

                $('.nobr a').removeClass('active');
                $('#'+ft+' a').addClass('active');
            } else {
                hideButtons();

                $('.timeslisting').hide();
                $('.filmblock').hide();
                $('.dayline').hide();
                $('.filmdiv').show();

                $('.fFriday').show();
                $('.fSaturday').show();
                $('.fSunday').show();

                $('.nobr a').removeClass('active');
                $('#fWeekend a').addClass('active');
            }
            return false;
        }
    );
});

