function BBG_teamFocus(key) {
   var elId = 'bbg_scroll_container_' + key;
   
   var highlightEl = null;
   
   $$('#' + elId + ' tr.bbg_standings_highlight').each(function(el) {
      if (null != highlightEl) {
         return;
      }
      highlightEl = el;
   });

   if (null != highlightEl) {
      
      if (highlightEl.getPosition().y - $(elId).getPosition().y > $(elId).getSize().size.y - highlightEl.getSize().size.y) {
         var scroll = new Fx.Scroll(elId, {
         	wait: false,
         	duration: 400,
         	offset: {'x': -0, 'y': 0},
         	transition: Fx.Transitions.Quad.easeInOut
         });
         scroll.toElement(highlightEl);
      }
   }
}


function BBG_showStandings(key) {
   if (BBG_timers[key]) {
      clearInterval(BBG_timers[key]);
   }
   
   var language = BBG_settings[key].language;
   var team = BBG_settings[key].team;
   var contest = BBG_settings[key].contest;
   var updateElement = 'bbg_module_inner_' + key;
   var url = "./index.php?option=com_resosco&task=standings";
   url += '&ht=' + encodeURIComponent(team);
   url += '&c=' + encodeURIComponent(contest);
   url += '&key=' + encodeURIComponent(key);
   url += '&l=' + encodeURIComponent(language);
   
   var options = {encoding: 'UTF-8', method: 'get'};
   var autoupdate = false;
   
   options.onComplete = function(jsonObj) {
      if (jsonObj.errno || jsonObj.error) {
         $(updateElement).innerHTML = jsonObj.error;
         return false;
      }
      BBG_showLoader(key, 0);
      $(updateElement).innerHTML = jsonObj.html;
      BBG_teamFocus(key);
      $('bbg_top_panel_standings_' + key).setStyle('display', 'none');
      $('bbg_top_panel_matches_' + key).setStyle('display', 'inline');
      BBG_showCalendar(key, false);
      BBG_showMatchToolbar(key, false);
      
   }
   options.onRequest = function() {
      BBG_showLoader(key, 1);
   }
   try {
      console.log(url);
   } catch (BBG_ex) {
      
   }
   var json = new Json.Remote(url, options);
   json.send();
}



function BBG_changeContest(key, contest) {
   BBG_settings[key].contest = contest;
   
   var ward = '=';

   BBG_settings[key].date1 = BBG_settings[key].date3;
   BBG_settings[key].date2 = BBG_settings[key].date4;
   BBG_showMatches(key, ward);
}


function BBG_matchFocus(key) {
   var elId = 'bbg_scroll_container_' + key;
   
   if (null != BBG_settings[key].scrollTop) {
      $(elId).scrollTop = BBG_settings[key].scrollTop;
      BBG_settings[key].scrollTop = null;
      return;
   }
   
   var matchEl = null;
   
   $$('#' + elId + ' div.bbg_match_highlight').each(function(el) {
      if (null != matchEl) {
         return;
      }
      matchEl = el;
   });

   
   if (null != matchEl) {
      var scroll = new Fx.Scroll(elId, {
      	wait: false,
      	duration: 500,
      	offset: {'x': -0, 'y': -0},
      	transition: Fx.Transitions.Quad.easeInOut
      });
      scroll.toElement(matchEl);
   }
}

function BBG_backToMatches(key) {
   var ward = '=';
   if (null != BBG_settings[key].ward) {
      ward = BBG_settings[key].ward;
   }

   BBG_settings[key].date1 = BBG_settings[key].date3;
   BBG_settings[key].date2 = BBG_settings[key].date4;
   
   
   BBG_showMatches(key, ward);
}


function BBG_onMatch(key, idMatch) {
   var elId = 'bbg_scroll_container_' + key;
   BBG_settings[key].scrollTop = $(elId).scrollTop;
   
//   alert(BBG_settings[key].scrollTop);

   $(elId).scrollTop = 0;
   BBG_loadMatch(key, idMatch);
}


function BBG_loadMatch(key, idMatch) {
   if (BBG_timers[key]) {
      clearInterval(BBG_timers[key]);
   }
   
   var language = BBG_settings[key].language;
   var elId = 'bbg_module_inner_' + key;
   var url = "./index.php?option=com_resosco&task=match&m=" + idMatch + "&key=" + encodeURIComponent(key) + '&l=' + encodeURIComponent(language);
   var options = {encoding: 'UTF-8', method: 'get'};
   options.onComplete = function(jsonObj) {
      if (jsonObj.errno || jsonObj.error) {
         $(elId).innerHTML = jsonObj.error;
         return false;
      }
      BBG_showCalendar(key, false);
      BBG_showMatchToolbar(key, true);
      BBG_showLoader(key, 0);
      
      $('bbg_top_panel_standings_' + key).setStyle('display', 'none');
      $('bbg_top_panel_matches_' + key).setStyle('display', 'none');
      
      $(elId).innerHTML = jsonObj.html;
      var autoupdate = jsonObj.autoupdate;
      try {
         console.log("autoupdt: " + autoupdate);
      } catch (BBG_ex) {
      }
      if (autoupdate) {
         var options2 = {encoding: 'UTF-8', method: 'get'};
         options2.onComplete = function() {
            $(elId).setStyle('cursor', 'auto');
            var top = $('bbg_scroll_container_' + key).scrollTop;
            $(elId).innerHTML = jsonObj.html;
            $('bbg_scroll_container_' + key).scrollTop = top;
//            alert(jsonObj.html);
         }
         
         options2.onRequest = function() {
            $(elId).setStyle('cursor', 'wait');
         }
         
         BBG_timers[key] = setInterval(function(){
            var date2 = new Date();
            var url2 = url + '&aaa' + date2.getTime() + 'aaa=' + '793';
            var json2 = new Json.Remote(url2, options2);
            json2.send(null);
         }, 30 * 1000);
      }
   }
   
   options.onRequest = function() {
      BBG_showLoader(key, 1);
   }
   
   var json = new Json.Remote(url, options);
   json.send();
}


function BBG_onArr(key, where) {
   BBG_showMatches(key, where);
}


function BBG_showCalendar(key, flag) {
   var elId = 'bbg_calendar_' + key;
   if (flag) {
      $(elId).setStyle('display', 'block');
   } else {
      $(elId).setStyle('display', 'none');
   }
}

function BBG_setMonthDay(key, t1, t2, fixture) {
   
   var date1 = new Date();
   var date2 = new Date();
         
   date1.setTime(t1 * 1000);
   date2.setTime(t2 * 1000);
   
   BBG_settings[key].date3 = BBG_settings[key].date1;
   BBG_settings[key].date4 = BBG_settings[key].date2;
   
   BBG_settings[key].date1 = date1;
   BBG_settings[key].date2 = date2;
   
   
   var elName = 'bbg_monthday_picker_' + key;
   
   $(elName).innerHTML = BBG_monthes[date1.getMonth()] + "&nbsp;" + date1.getDate();
   if (date2.getMonth() + date2.getDate() != date1.getMonth() + date1.getDate()) {
      $(elName).innerHTML += ' &nbsp;-&nbsp; ';
      $(elName).innerHTML += BBG_monthes[date2.getMonth()] + "&nbsp;" + date2.getDate();
   }
   
   if (fixture > 0) {
      $(elName).innerHTML += '<br>&nbsp;&nbsp;(' + BBG_lang['fixture'] + '' + fixture + ')';
   }
}

function BBG_showMatchToolbar(key, flag) {
   var elId = 'bbg_match_toolbar_' + key;
   
   if (flag) {
      $(elId).setStyle('display', 'block');
   } else {
      $(elId).setStyle('display', 'none');
   }
}


function BBG_showLoader(key, flag) {
   var innerElId = 'bbg_module_inner_' + key;
   var outerElId = 'bbg_module_outer_' + key;

   
   $(innerElId).innerHTML = '';
   
   
   var loader = new Element('div');
   if (flag) {
      var size = $(innerElId).getSize().size;
      
      loader.setStyle('width', (size.x - 10) + 'px');
      loader.setStyle('height','50px');
      
      loader.setStyle('position', 'absolute');
      
      loader.setStyle('display', 'block');
      loader.setOpacity('1');
      
      loader.setStyle('top', (size.y / 2 - 50) + 'px');

      loader.setProperty('id','bbg_module_loader' + key);

      loader.setProperty('class','bbg_loader');
      
//      $(innerElId).setOpacity('0.1');
      loader.setOpacity('1');
      
      $(innerElId).appendChild(loader);      
      
   } else {
      $(innerElId).setOpacity('1');
   }
}

var BBG_timers = new Array();
function BBG_loadMatches(key) {
   if (BBG_timers[key]) {
      clearInterval(BBG_timers[key]);
   }
   
   var language = BBG_settings[key].language;
   var ward = '=';
   var date = new Date();
   
   if (arguments.length > 1) {
      switch (arguments[1]) {
         case '>':
            date = BBG_settings[key].date2;
            ward = '>';
            break;
            
         case '<':
            date = BBG_settings[key].date1;
            ward = '<';
            break;
      }
   }
   
   
   var team = BBG_settings[key].team;
   var contest = BBG_settings[key].contest;
   
   var updateElement = 'bbg_module_inner_' + key;
   
   var url = "./index.php?option=com_resosco&task=matches&d=" + (date.getTime() / 1000);
   url += '&ht=' + encodeURIComponent(team);
   url += '&c=' + encodeURIComponent(contest);
   url += '&key=' + encodeURIComponent(key);
   url += '&w=' + encodeURIComponent(ward);
   url += '&l=' + encodeURIComponent(language);
   
   
   var options = {encoding: 'UTF-8', method: 'get'};
   var autoupdate = false;
   
   options.onComplete = function(jsonObj) {
      if (jsonObj.errno || jsonObj.error) {
         $(updateElement).innerHTML = jsonObj.error;
         return false;
      }
      BBG_settings[key].ward = ward;
      BBG_showMatchToolbar(key, false);
      BBG_showLoader(key, 0);
      
      $('bbg_top_panel_standings_' + key).setStyle('display', 'inline');
      $('bbg_top_panel_matches_' + key).setStyle('display', 'none');
      
      $(updateElement).innerHTML = jsonObj.html;
      BBG_matchFocus(key);
      BBG_setMonthDay(key, jsonObj.t1, jsonObj.t2, jsonObj.fixture);
      BBG_showCalendar(key, true);
      autoupdate = jsonObj.autoupdate;

      try {
         console.log("autoupdt: " + autoupdate);
      } catch (BBG_ex) {
      }
           
      if ('1' == autoupdate || 1) {
         var options2 = {encoding: 'UTF-8', method: 'get'};
         options2.onComplete = function(jsonObj) {
            var top = $('bbg_scroll_container_' + key).scrollTop;
            $(updateElement).innerHTML = jsonObj.html;
            $('bbg_scroll_container_' + key).scrollTop = top;
            $(updateElement).setStyle('cursor', 'auto');
         }
         
         options2.onRequest = function() {
            $(updateElement).setStyle('cursor', 'wait');
         }
         
         BBG_timers[key] = setInterval(function(){
            var date2 = new Date();
            var url2 = url + '&aaa' + date2.getTime() + 'aaa=' + '793';
            var json2 = new Json.Remote(url2, options2);
            json2.send();
         }, 30 * 1000);
      }
      
   }
   
   options.onRequest = function() {
      BBG_showLoader(key, 1);
   }
   
   try {
      console.log(url);
   } catch (BBG_ex) {
      
   }
   var json = new Json.Remote(url, options);
   json.send();
}


function BBG_showMatches(key) {
   var ward = '=';
   if (arguments.length > 1) {
      ward = arguments[1];
   }
   BBG_loadMatches(key, ward);
}