// GLOBALS
var _gData; //JSON result
var _gHttp; // XMLHttp handle
var _gTimer;
var _gCurrWeek=0;
var _gCurrGame=0;
var _gCurrType=0;
_gNum = {"1": "1", "2":"2", "3": "3", "4": "4"}; 
var _gW;
var _gTVImg = {
   "cbs":"cbs.gif",
   "abc":"abc.gif",
   "nbc":"nbc.gif",
   "fox":"fox.gif",
   "espn":"espn.gif"
};

GAME_LIVE=1
GAME_FINAL=2
GAME_SCHED=3
var _gType = {
   "In-Progress":GAME_LIVE,
   "Final":GAME_FINAL,
   "Pg":GAME_SCHED
}


//var JSONLOC= "http://my.plusmo.com/data/nfl/widget/json/";
//var JSONLOC= "http://static.plusmo.com/data/nfl/widget/json/";
var JSONLOC= "http://sports.plusmo.com/w/nfl/s/json/";
var IMGLOC = "http://images.plusmo.com/w/nfl/s/";

addEventListener("load", function(){setTimeout(updateLayout, 0);}, false);
function updateLayout() {
   currentWidth = window.innerWidth;
   $('body').style.left=currentWidth-740/2+'px';
}
setInterval(updateLayout, 500);


function initSchedule() {
   _gHttp = getHttp(); //get HTTP handle
   _gCurrWeek=getCurrWeek();
   getSchedData();
   if (_gCurrWeek<=5)
      $('week').innerHTML="WEEK "+_gCurrWeek+" (Exhibition)";
   else
      $('week').innerHTML="WEEK "+(_gCurrWeek-5)+" (Regular)";
   $('sbox').options[_gCurrWeek-1].selected=true;
   _gTimer = window.setTimeout('updateSched()', 10000);
}


function initGameCenter() {
   _gHttp = getHttp(); //get HTTP handle
   _gCurrWeek=getCurrWeek();
   getGameData();
   changeWeek(_gCurrWeek);
   _gTimer = window.setTimeout('updateGrid()', 10000);

}


function updateSched() {
   getSchedData();
   _gTimer = window.setTimeout('updateSched()', 10000);

}


function updateGrid() {
   getGameData();
   _gTimer = window.setTimeout('updateGrid()', 10000);

}


function getSchedData() {
   if (_gCurrWeek>5)
       var url = JSONLOC+"jnfl_"+(_gCurrWeek-5)+".json";
   else
       var url = JSONLOC+"jnfl_"+_gCurrWeek+"e.json";

   try {
      if (_gHttp && _gHttp.readyState!=0) {
         _gHttp.abort();
         _gHttp=getHttp();
      }
   }
   catch(e) {
      //alert(e.message);
   }


   if(_gHttp) {
      //alert("url"+url);
      _gHttp.open('GET', url+"?r="+Math.random(), true);
      _gHttp.onreadystatechange = function() {
         if(_gHttp.readyState == 4 && _gHttp.status == 200) {
            _gData = _gHttp.responseText.parseJSON();
            data = updateSchedule();
            //alert(data);
            $('grid').innerHTML = data;
         }
         else {
             // alert("wait");
            // wait for the call to complete
         }
      }
      _gHttp.send(null);
   }
   else {
      //alert("No gHttp");
   }
}


function getGameData() {
   if (_gCurrWeek>5)
       var url = JSONLOC+"jnfl_"+(_gCurrWeek-5)+".json";
   else
       var url = JSONLOC+"jnfl_"+_gCurrWeek+"e.json";

   try {
      if (_gHttp && _gHttp.readyState!=0) {
         _gHttp.abort();
         _gHttp=getHttp();
      }
   }
   catch(e) {
      //alert(e.message);
   }


   if(_gHttp) {
      //alert("url"+url);
      _gHttp.open('GET', url+"?r="+Math.random(), true);
      _gHttp.onreadystatechange = function() {
         if(_gHttp.readyState == 4 && _gHttp.status == 200) {
            _gData = _gHttp.responseText.parseJSON();
            data = updateGC();
            //alert(data);
            $('grid').innerHTML = data;
         }
         else {
             // alert("wait");
            // wait for the call to complete
         }
      }
      _gHttp.send(null);
   }
   else {
      //alert("No gHttp");
   }
}

function getCurrWeek() {
   var today = new Date();
   // September 9th for 2007
   // August 3rd for 2008
   var season_start =new Date(2008, 7, 3); 
   var one_week = 1000* 24*60*60*7;
   var one_day = 1000* 24*60*60;
   var week = Math.ceil((today - season_start - 3*one_day)/one_week);
   week++;
   if (week >= 27) {
      week=26;
   }
   return(week);
}


function changeWeek(wk) {
   for(i=1;i<=26;i++){
      name="week"+i;
      $(name).style.color="#c0c0c0";
   }
   _gCurrWeek = wk; 
   _gCurrGame=0;
   _gCurrType=0;
   name="week"+_gCurrWeek;
   $(name).style.color="#FBAA04";
   getGameData();

   return 1;
}

function isLiveGame(index) {
   try {
      var schedGames = _gData.resultSet.scheduled;
      var liveGames = _gData.resultSet.live;
      var liveCount = parseInt(_gData.resultSet.live.length);
   } catch(err) {return -1;}

   var t1 = schedGames[index]["t1alias"].toUpperCase();
   var t2 = schedGames[index]["t2alias"].toUpperCase();
   var found = -1;

   for(var i=0; i<liveCount;i++) {
      var home = liveGames[i].team1.alias.toUpperCase();
      var visitor = liveGames[i].team2.alias.toUpperCase();

      if(((t1==home) && (t2==visitor)) || ((t2==home) && (t1==visitor))) {
        found = i;
        break;
      }
   }

   return (found);
}


function schedChange(sel) {
   var ind=sel.options.selectedIndex;
   var wk = sel.options[ind].value;
   _gCurrWeek = wk; 
   
   if (_gCurrWeek<=5)
      $('week').innerHTML="WEEK "+_gCurrWeek+" (Exhibition)";
   else
      $('week').innerHTML="WEEK "+(_gCurrWeek-5)+" (Regular)";
   sel.options[_gCurrWeek-1].selected=true;
   getSchedData();
}


function updateSchedule() {
   try {
      var schedGames = _gData.resultSet.scheduled;
      var schedCount = parseInt(_gData.resultSet.scheduled.length);
      var liveGames = _gData.resultSet.live;
      var liveCount = parseInt(_gData.resultSet.live.length);
      var buffer = "";
   } catch(err) {return;}

   var type, id;

  
   buffer += '                              <table class="bro"> <tr>\n';
   for(var i=0; i<liveCount;i++) {
      var hname = liveGames[i].team1.name;
      var vname = liveGames[i].team2.name;
      var home = liveGames[i].team1.alias.toUpperCase();
      var visitor = liveGames[i].team2.alias.toUpperCase();
      var hscore = liveGames[i].score.t1;
      var vscore = liveGames[i].score.t2;
      var gid = liveGames[i].game_id;
      var qtr =_gNum[liveGames[i].quarter];
      var qname = "Q"+qtr;
      var num = parseInt(liveGames[i].timeleft);
      var time = getTimeString(num);

      type=_gType[liveGames[i].status];
 
      if (liveGames[i].status == "Final") {
         buffer += '                                 <td align="left" style="width:2px"><img src="'+IMGLOC+'images/spacer.gif" width="1" height="1" alt="" /></td>\n';
         buffer += '                                 <td align="left" style="width:25px"><a href="'+visitor.toLowerCase()+'_home.html">'+visitor+'</a></td>\n';
         buffer += '                                 <td align="center" style="width:5px">@</td>\n';
         buffer += '                                 <td align="right" style="width:25px"><a href="'+home.toLowerCase()+'_home.html">'+home+'</a></td>\n';
         buffer += '                                 <td align="center" style="width:60px">FINAL</td>\n';
         buffer += '                                 <td align="right" style="width:43px" class="c"><a href="#"'+vscore+' - '+hscore+'</a></td>\n';
         buffer += '                                 <td style="width:68px" align="right" class="c"><a href="'+gid+'_score.html">'+vscore+' - '+hscore+'</a></td>\n';
         buffer += '                              </tr> <tr>\n';
      }
      else {
         buffer += '                                 <td align="left" style="width:2px"><img src="'+IMGLOC+'images/spacer.gif" width="1" height="1" alt="" /></td>\n';
         buffer += '                                 <td align="left" style="width:25px"><a href="'+visitor.toLowerCase()+'_home.html">'+visitor+'</a></td>\n';
         buffer += '                                 <td align="center" style="width:5px">@</td>\n';
         buffer += '                                 <td align="right" style="width:25px"><a href="'+home.toLowerCase()+'_home.html">'+home+'</a></td>\n';
         buffer += '                                 <td align="center" style="width:35px">LIVE!</td>\n';
         buffer += '                                 <td colspan="2" align="right" style="width:68px; color:#ffff00; font-weight: bold;" class="c">'+qname+' '+vscore+'-'+hscore+' </td>\n';
         buffer += '                              </tr> <tr>\n';
      }
   }


   for(i=0; i<schedCount;i++) {
      var index = isLiveGame(i);
      if(index < 0) { // scheduled game
         var home = schedGames[i]["t1alias"].toUpperCase();
         var visitor = schedGames[i]["t2alias"].toUpperCase();
         var day = schedGames[i]["day"];
         var epoch = schedGames[i]["epoch"];
         var est=new Date((epoch*1000)+(60*60*3*1000));
         var tim=formatDate(est, "E hh:mm a");
         var tv = schedGames[i]["tv"].toLowerCase();
         var tvimg=_gTVImg[tv];


         type=_gType["Pg"];
    
         buffer += '                                 <td align="left" style="width:2px"><img src="'+IMGLOC+'images/spacer.gif" width="1" height="1" alt="" /></td>\n';
         buffer += '                                 <td align="left" style="width:25px"><a href="'+visitor.toLowerCase()+'_home.html">'+visitor+'</a></td>\n';
         buffer += '                                 <td align="center" style="width:5px">@</td>\n';
         buffer += '                                 <td align="right" style="width:25px"><a href="'+home.toLowerCase()+'_home.html">'+home+'</a></td>\n';
         if((tv!="") && (tvimg!=undefined))
            buffer += '                                 <td align="center" style="width:35px"><img src="'+IMGLOC+'img/'+tvimg+'" border="0" height="16"/></td>\n';
         else
            buffer += '                                 <td align="center" style="width:35px"><img src="'+IMGLOC+'img/1x1.gif" border="0" height="16" /></td>\n';
         buffer += '                                 <td colspan="2" align="right" style="width:68px" class="c">'+tim+'</td>\n';
         buffer += '                              </tr> <tr>\n';
      }
   }


   return(buffer);
}


function updateGC() {
   try {
      var schedGames = _gData.resultSet.scheduled;
      var schedCount = parseInt(_gData.resultSet.scheduled.length);
      var liveGames = _gData.resultSet.live;
      var liveCount = parseInt(_gData.resultSet.live.length);
      var buffer = "";
   } catch(err) {return;}

   var type, id;

   for(var i=0; i<liveCount;i++) {
      var hname = liveGames[i].team1.name;
      var vname = liveGames[i].team2.name;
      var home = liveGames[i].team1.alias.toUpperCase();
      var visitor = liveGames[i].team2.alias.toUpperCase();
      var hscore = liveGames[i].score.t1;
      var vscore = liveGames[i].score.t2;
      var qtr =_gNum[liveGames[i].quarter];
      var qname = qtr+ " Qtr";
      var num = parseInt(liveGames[i].timeleft);
      var time = getTimeString(num);

      type=_gType[liveGames[i].status];
 
      if (liveGames[i].status == "Final") {
         buffer += '                 <li class="item"><a href="javascript:void(0)" onclick="javascript:showGameCenter('+i+','+type+');return(false);">\n';
         buffer += '                 <div class="sfinal">\n';
         buffer += '                 <table width="100%"><tr>\n';
         buffer += '                 <tr><td align="center" class="matchup">'+visitor+' @ '+home+'</td></tr>\n';
         buffer += '                 <tr><td align="center" class="gridscore">'+vscore+' - '+hscore+'</td></tr>\n';
         buffer += '                 <tr><td align="center">FINAL</td></tr>\n';
         buffer += '                 </table></div></a></li>\n';
      }
      else {
         buffer += '                 <li class="item"><a href="javascript:void(0)" onclick="javascript:showGameCenter('+i+','+type+');return(false);">\n';
         buffer += '                 <div class="slive">\n';
         buffer += '                 <table width="100%"><tr>\n';
         buffer += '                 <tr><td align="center" class="matchup">'+visitor+' @ '+home+'</td></tr>\n';
         buffer += '                 <tr><td align="center" class="gridscore">'+vscore+' - '+hscore+'</td></tr>\n';
         buffer += '                 <tr><td align="center">'+qname+'&nbsp;&nbsp;'+time+'</td></tr>\n';
         buffer += '                 </table></div></a></li>\n';
      }
   }


   for(i=0; i<schedCount;i++) {
      var index = isLiveGame(i);
      if(index < 0) { // scheduled game
         var home = schedGames[i]["t1alias"].toUpperCase();
         var visitor = schedGames[i]["t2alias"].toUpperCase();
         var day = schedGames[i]["day"];
         var epoch = schedGames[i]["epoch"];
         var est=new Date((epoch*1000)+(60*60*3*1000));
         var tim=formatDate(est, "hh:mm a");
         var tv = schedGames[i]["tv"].toLowerCase();
         var tvimg=_gTVImg[tv];


         type=_gType["Pg"];
    
         buffer += '                 <li class="item"><a href="javascript:void(0)" onclick="javascript:showGameCenter('+i+','+type+');return(false);">\n';
         buffer += '                 <div class="sscheduled">\n';
         buffer += '                 <table width="100%">\n';
         buffer += '                 <tr><td align="center" class="matchup">'+visitor+' @ '+home+'</td></tr>\n';
         buffer += '                 <tr><td  align="center" class="gridscore">'+day+' '+tim+'</td></tr>\n';
         if((tv!="") && (tvimg!=undefined))
            buffer += '                 <tr><td align="center"><img border="0" height="16" src="'+IMGLOC+'img/'+tvimg+'"/></td></tr>\n';
         else
            buffer += '                 <tr><td><img border="0" width="1" height="16" src="'+IMGLOC+'img/1x1.gif"/></td></tr>\n';
         buffer += '                 </table></div></a></li>\n';
      }
   }


   if(_gCurrGame != 0)
      id = _gCurrGame;
    else
       id = 0;
   
   if(liveCount>0) {  // live games are there
      if (_gCurrType != 0)
         type = _gCurrType;
      else
         type=_gType[liveGames[0].status];
   }
   else if(schedCount>0) {  // scheduled games are there
      if (_gCurrType != 0)
         type = _gCurrType;
      else
         type=_gType["Pg"];
   }

   showGameCenter(id, type);

   return(buffer);
}


function showGameCenter(gameId,type) {
   _gCurrGame = gameId;
   _gCurrType = type;
   updateGameCenter(type);
   if (type==GAME_SCHED) {
      show('gameInfo');
      hide('quarterScore');
      hide('liveScore');
   }
   else if (type==GAME_FINAL) {
      show('quarterScore');
      hide('gameInfo');
      hide('liveScore');
   }
   else {
      hide('gameInfo');
      show('quarterScore');
      show('liveScore');
   }
      
   return 1;
}


function updateGameCenter(type) {
   try{
      if (type==GAME_SCHED)
         var currGame = _gData.resultSet.scheduled[_gCurrGame];
      else
         var currGame = _gData.resultSet.live[_gCurrGame];
   }
   catch(err){return;}


   if (type==GAME_SCHED) {
      var hname = currGame.t1name;
      var home = currGame.t1alias;
      var vname = currGame.t2name;
      var visitor = currGame.t2alias;
      var stadium = currGame.stadium;
      var tv=currGame.tv.toLowerCase();
      var tvimg = _gTVImg[tv];
      var day = currGame.day;
      var epoch = currGame.epoch;
      var est = new Date((epoch*1000)+(60*60*3*1000));
      var tim = formatDate(est, "hh:mm a")+' ET';

      $('sTeam1Img').src = IMGLOC+"img/h/"+visitor.toLowerCase()+".png";
      $('sTeam1Score').innerHTML = "&nbsp;";
      $('sTeam2Img').src= IMGLOC+"img/h/"+home.toLowerCase()+".png";
      $('sTeam2Score').innerHTML = "&nbsp;";
      $('teamNames').innerHTML=vname+" @ "+hname;
      $('location').innerHTML="@ "+stadium;
      $('schedTime').innerHTML=day+" "+tim;
      if((tv!="") && (tvimg!=undefined))
         $('tvImg').innerHTML='<img border="0" height="16" src="'+IMGLOC+'img/'+tvimg+'"/>';
      else
         $('tvImg').innerHTML = "&nbsp;";
   }
   else {
      if (currGame.status != "Final") {
         var num = parseInt(currGame.timeleft);
         var time = getTimeString(num);
         var qtr =_gNum[currGame.quarter];
         $('sTimeLeft').innerHTML=time + " &nbsp;"+ qtr+ " Qtr";

         try {
            if ((currGame.ballwith != "-1") && (currGame.ballwith != "None") &&
                (currGame.ballwith != "")) {
               if(currGame.ballwith==currGame.team1.name) 
                  $('sballWith').innerHTML = currGame.team1.name+": ";
               else
                  $('sballWith').innerHTML = currGame.team2.name+": ";
            } else {
               $('sballWith').innerHTML= "&nbsp;";
            }
         } catch(err) {
            $('sballWith').innerHTML= "&nbsp;";
         }


         try {
            var d = currGame.down;
            if ((parseInt(d)>0) && (parseInt(d)<=4)){ 
               var downstring = _gNum[d];
               $('sDown').innerHTML= downstring;
            } else {
               $('sDown').innerHTML= "&nbsp;";
            }
         } catch(err) {
            $('sDown').innerHTML= "&nbsp;";
         }


         try {   
            var togo = currGame.togo;
            if (parseInt(togo) >= 0){
               $('sTogo').innerHTML= " and " + togo;
            } else {
               $('sTogo').innerHTML= "&nbsp;";
            }
         } catch(err) {
            $('sTogo').innerHTML= "&nbsp;";
         }


         try {
            if ((currGame.ballon != "-1") && (currGame.ballon != "None"))
               $('sBallLocation').innerHTML=" on " + currGame.ballon.toUpperCase();
         } catch(err) {
            $('sBallLocation').innerHTML= "&nbsp;";
         }


         $('lastPlayData').innerHTML= currGame.lastplay;
      }
      else {
         $('sTimeLeft').innerHTML="FINAL";
      }

      hname = currGame.team1.name;
      home = currGame.team1.alias;
      $('sTeam2Img').src = IMGLOC+"img/h/"+home.toLowerCase()+".png";
      $('sTeam2Name').innerHTML=hname.toUpperCase();
      $('sTeam2Score').innerHTML=currGame.score.t1;
      data = parseInt(currGame.score.t1_q1);
      score = (data < 0)? "&nbsp;":data;
      $('sTeam2Q1').innerHTML= score;
      data = parseInt(currGame.score.t1_q2);
      score = (data < 0)? "&nbsp;":data;
      $('sTeam2Q2').innerHTML= score;
      data = parseInt(currGame.score.t1_q3);
      score = (data < 0)? "&nbsp;":data;
      $('sTeam2Q3').innerHTML= score;
      data = parseInt(currGame.score.t1_q4);
      score = (data < 0)? "&nbsp;":data;
      $('sTeam2Q4').innerHTML= score;
      data = parseInt(currGame.score.t1_ot);
      score = (data < 0)? "&nbsp;":data;
      $('sTeam2OT').innerHTML= score;
      data = parseInt(currGame.score.t1);
      score = (data < 0)? "&nbsp;":data;
      $('sTeam2Final').innerHTML= score;

      vname = currGame.team2.name;
      visitor = currGame.team2.alias;
      $('sTeam1Img').src= IMGLOC+"img/h/"+visitor.toLowerCase()+".png";
      $('sTeam1Name').innerHTML=vname.toUpperCase();
      $('sTeam1Score').innerHTML=currGame.score.t2;
      data = parseInt(currGame.score.t2_q1);
      score = (data < 0)? "&nbsp;":data;
      $('sTeam1Q1').innerHTML= score;
      data = parseInt(currGame.score.t2_q2);
      score = (data < 0)? "&nbsp;":data;
      $('sTeam1Q2').innerHTML= score;
      data = parseInt(currGame.score.t2_q3);
      score = (data < 0)? "&nbsp;":data;
      $('sTeam1Q3').innerHTML= score;
      data = parseInt(currGame.score.t2_q4);
      score = (data < 0)? "&nbsp;":data;
      $('sTeam1Q4').innerHTML= score;
      data = parseInt(currGame.score.t2_ot);
      score = (data < 0)? "&nbsp;":data;
      $('sTeam1OT').innerHTML= score;
      data = parseInt(currGame.score.t2);
      score = (data < 0)? "&nbsp;":data;
      $('sTeam1Final').innerHTML= score;

   }

   fixPNG();

   return 1;
}


function getTimeString(num) {
   var min_num = parseInt(num /60);
   var tl = "";

   if (min_num <10)
      tl = "0"+min_num+":";
   else
      tl = min_num+":";
   var sec_num = num % 60;
   if (sec_num <10)
      tl = tl+"0"+sec_num;
   else
      tl = tl+sec_num;
 
   return tl;
}


function initWidget(par, tid) {
  _gW = new NFLWidget($(par), tid, 1, 1, 1);
}
