gloader.load(["glow", "1", "glow.anim", "glow.dom", "glow.net", "glow.events"], {
    onLoad: function(glow){
    	bbc.fmtj.apps.f1CountdownManager = (function(){

            var countdownArr 	= [], 
            	eventsArr 		= [],
				timerId;

            function addCountdown(o){
                countdownArr.push(o)
            }
            function addEvents(o){
                eventsArr.push()
            }
            
            function getCountdown(countdownId){
                for (var i = 0; i < countdownArr.length; i++) {
                    if (countdownArr[i].id == countdownId) {
                        return countdownArr[i]
                    }
                    
                }
            }
            
            function returnArr(){
                return countdownArr
            }
            
            function getNextEvent(countdownId){
            
                var countdown = getCountdown(countdownId);
                
                if (countdown.curSession < countdown.sessions.length - 1) {
                    countdown.curSession = countdown.curSession + 1
                    
                    // get the next session
                    var nextSession = countdown.sessions[countdown.curSession]
                    
                    return nextSession
                    
                } else {
                
                   glow.dom.get("#"+timerId).remove()
                    
                    return false
                    
                }
                
            }
			function applyNewCountdown(countdownId, sessionObject, time){
            
                if (sessionObject == false) {
                    return false
                }
                
                var countdown = getCountdown(countdownId);
				                
                var cd = new bbc.fmtj.apps.Countdown({
                    id: countdown.id,
                    to: sessionObject.startDateTime,
                    lap: sessionObject.endDateTime,
					serverTime:time
                });
                glow.events.addListener(cd, 'countdownComplete', function(event){
                    // thisVariable should not be called event.id.. It's actually the countdown ID
                    applyNewCountdown(event.countdownId, getNextEvent(event.countdownId),event.time)
                   
                });
                
                countdown.instance = cd
                cd.init({
                    id: countdown.id,
                    configuration: {
                        message: sessionObject.message,
                        lapMessage: sessionObject.inProgressMessage
                    }
                })
                
            }
            
            return {
                createCountdown: function(o){
					
					// assign the server time to a private var
					serverTime = o.serverTime;
					timerId = o.domId;
                
				
                    if (o.attachTo) {
                        var countdownElm = glow.dom.get("." + o.domId)
                        glow.dom.get("." + o.domId).remove()
                        glow.dom.get("." + o.attachTo).append(countdownElm)
                        
                    }

                    var raceSessions = o.events.sessions
					
					var events = []
					
					var x = function(){				
						var curDate = new Date(serverTime);
						for(i=0;i<raceSessions.length;i++){
							var endTime = new Date(raceSessions[i].endDateTime);
							if(curDate < endTime ){
								events.push(raceSessions[i])
							}
						}
					}()
					
					if(events.length>0){
	                    var cd = new bbc.fmtj.apps.Countdown({
	                        id: o.domId,
	                        to: events[0].startDateTime,
	                        lap: events[0].endDateTime,
							serverTime:o.serverTime
	                    });
	                    glow.events.addListener(cd, 'countdownComplete', function(event){
	                        // thisVariable should not be called event.id.. It's actually the countdown ID
	                        applyNewCountdown(event.countdownId, getNextEvent(event.countdownId),event.time)
	                        
	                    });   
							  
						
						
						               
	                    addCountdown({
	                        id: o.domId,
	                        instance: cd,
	                        sessions: events,
	                        curSession: 0
	                    })
	                    
	                    cd.init({
	                        id: o.domId,
	                        configuration: {
	                            message: events[0].message,
	                            lapMessage: events[0].inProgressMessage
	                        }
	                    })
					
					}else{glow.dom.get("#"+timerId).remove()}
                    
                    
                }
            }
            
        })()
        
    }
})
