var SBFactory={games:new Object(),timer:null,timeout:10000,numberOfGames:0,createGame:function(gameId,static_properties){var league=static_properties['league'];if(!SBFactory.games[league+'-'+gameId]){SBFactory.games[league+'-'+gameId]=new Game(gameId,static_properties);SBFactory.numberOfGames++;}
return SBFactory.games[league+'-'+gameId];},removeGame:function(key){if(SBFactory.games[key]){delete SBFactory.games[key];SBFactory.numberOfGames--;}},createConnection:function(){SBFactory.timer=setTimeout("SBFactory.update()",SBFactory.timeout);},disconnect:function(){if(SBFactory.timer){clearTimeout(SBFactory.timer);SBFactory.timer=null;}},update:function(){if(!SBUpdate){var SBUpdate=new SBUpdatePump();SBUpdate.setHTTPMethod("post");SBUpdate.setCallbackHandler(SBFactory.handleResponse);SBUpdate.setErrorHandler(SBFactory.handleError);}
Util.addClass(Util.getElement('note-refresh'),"sb-loading");if(SBFactory.timer){clearTimeout(SBFactory.timer);SBFactory.timer=null;}
if(SBFactory.numberOfGames>0){var jsonGames=ColdFusion.JSON.encode(SBFactory.games);SBUpdate.updateGames(jsonGames);}else{Util.removeClass(Util.getElement('note-refresh'),"sb-loading");SBFactory.disconnect();}},handleResponse:function(data){Util.removeClass(Util.getElement('note-refresh'),"sb-loading");var SBGames=ColdFusion.JSON.decode(data);for(var key1 in SBGames){Game.UpdateHandler(SBGames[key1],key1);}
if(SBFactory.numberOfGames>0){SBFactory.createConnection();}},handleError:function(code,msg){Util.removeClass(Util.getElement('note-refresh'),"sb-loading");SBFactory.createConnection();}}
function Game(gameId,static_properties){this.updateTime=new Date();this.gameId=gameId;this.gstatus=null;this.finalStatusTime=null;this.static_properties=static_properties;this.updateDefaults=function(params){if(params.updateTime){this.updateTime=params.updateTime;}
if(params.gameStatus){this.static_properties['gameStatus']=params.gameStatus;}
if(params.gstatus){this.gstatus=params.gstatus;}
if(params.finalStatusTime){this.finalStatusTime=params.finalStatusTime;}}}
Game.UpdateHandler=function(SBGame,key){if(SBGame.TYPE=='complete'){switch(SBGame.LEAGUE.toLowerCase()){case'mlb':GameLoader.mlb.load(SBGame,key,null);break;case'nhl':GameLoader.nhl.load(SBGame,key,null);break;case'nba':GameLoader.nba.load(SBGame,key,null);break;case'nfl':GameLoader.nfl.load(SBGame,key,null);break;case'ncaab':GameLoader.ncaab.load(SBGame,key,null);break;case'ncaaf':GameLoader.ncaaf.load(SBGame,key,null);break;case'wnba':GameLoader.wnba.load(SBGame,key,null);break;default:break;}
if(SBFactory.games[key]){var bufferTime=1800000;var diffTime=(new Date().getTime())-Date.parse(SBFactory.games[key].finalStatusTime);if(Util.REStatus().test(SBGame.STATUS)&&SBFactory.games[key].finalStatusTime==null){SBFactory.games[key].updateDefaults({"updateTime":SBGame.UPDATETIME,"gameStatus":SBGame.GAMESTATUS,"gstatus":SBGame.STATUS,"finalStatusTime":SBGame.UPDATETIME});}else if(Util.REStatus().test(SBGame.STATUS)&&(diffTime>bufferTime)){SBFactory.removeGame(key);}else{SBFactory.games[key].updateDefaults({"updateTime":SBGame.UPDATETIME,"gameStatus":SBGame.GAMESTATUS,"gstatus":SBGame.STATUS});}}}}
function collegeDropDownMagic(){var el=Util.getElement('conference-id');var selectchange=function(){window.location.href=el.options[el.selectedIndex].value;};if(el.addEventListener){el.addEventListener("change",selectchange,false)}else if(el.attachEvent){el.attachEvent("onchange",selectchange);}else{el.onchange=selectchange;}}
var Util={REStatus:function(){return new RegExp('(final|postponed)','gi')},getElement:function(id){if(document.getElementById){return document.getElementById(id);}else if(document.all){return document.all[id];}else if(document.layers){return document.layers[id];}else{return null;}},updateValue:function(el,value,changetype){if(changetype=="append"){el.innerHTML+=value;}else{el.innerHTML=value;}},toggleDisplay:function(el){if(el.style.display=='none'){el.style.display='';}else{el.style.display='none';}},addClass:function(el,cls){if((new RegExp('(^|\\s*\\b[^-])'+cls+'($|\\b(?=[^-]))','gi')).test(el.className))return;el.className+=(el.className.length>0?' ':'')+cls;},removeClass:function(el,cls){el.className=el.className.replace(new RegExp('(^|\\s*\\b[^-])'+cls+'($|\\b(?=[^-]))','gi'),'');},Debug:{getIPAddress:function(){var ip=remote_addr!='undefined'?remote_addr:'';return ip;},getWindow:function(){var el=Util.getElement('ajax-debug');if(!el){el=document.createElement('div');el.id='ajax-debug';el.style.position='absolute';el.style.left='1000px';el.style.top='10px';el.style.backgroundColor='#FFF';el.style.width='300px';el.style.height='600px';el.style.padding='5px';el.style.overflow='auto';el.zIndex=1000;document.body.appendChild(el);}
if(Util.Debug.getIPAddress().substr(0,6)!='10.10.'){el.style.display='none';}
return el;},removeWindow:function(){var debugScreen=Util.Debug.getWindow();document.body.removeChild(debugScreen);},alert:function(heading,msg){var debugScreen=Util.Debug.getWindow();var p=document.createElement("p");p.className="debug";if(heading){var span=document.createElement("h4");span.className="msg-head";span.appendChild(document.createTextNode(heading));p.appendChild(span);}
p.appendChild(document.createTextNode(msg));debugScreen.appendChild(p);},clear:function(){var debugScreen=Util.Debug.getWindow();debugScreen.innerHTML='';}}}