var g_iWait=g_iRequest=g_iStartYear=g_iFinishYear=g_iNumPlayers=0;
var g_tRabbit;
var g_sUrl=g_sCode=g_sPageName='';
var g_sQuote=g_sAuthor='';

function ob(a){
  var o = {};
  for(var i=0;i<a.length;i++)
    o[a[i]]='';
  return o;
}

function callback(hash){ showOptions(); }

loadFlexData = function(sUrl){
  $("#main_div").show();
  swfobject.removeSWF("main_div");
  iH=document.body.clientHeight-200;
  sQuote="<html><body cornerRadius=\"6\" backgroundAlpha=\"1\" borderColor=\"#0077ff\" "+
    "borderThickness=\"2\" borderStyle=\"solid\" fontSize=\"10\" backgroundColor=\"#ffee77\" "+
    " dropShadowEnabled=\"true\" color=\"#000000\">"+g_sQuote+
    "<div align=\"right\">"+g_sAuthor+"</div></body></html>";
  var par = { flashvars:"xmlDataUrl="+escape("../"+sUrl)+'&waitMessage='+escape(sQuote),
              name:"opaque", wmode:"opaque"};
  var att = { data:"flex/bin/Tangraph.swf", width:"100%", height:iH, wmode:"opaque"};
  var id = "main";
  swfobject.createSWF(att, par, id);
  if(GL_SHOW){
    window.open(GL_ROOT+sUrl,"","resizable=yes,scrollbars=yes");
  }
  return;
}


function getService(sName){
  switch(sName){
    case 'favorites':
      if (window.sidebar) { // Mozilla Firefox Bookmark
        window.sidebar.addPanel(g_sPageName,g_sUrl,"");
      }else if( window.external ){ // IE Favorite
        window.external.AddFavorite(g_sUrl,g_sPageName);
      }
      else
        alert(" Sorry,  you need to do so manually through your browser.");
      break;
    case 'addthis':
      window.open("http://www.addthis.com/bookmark.php?url="+escape(g_sUrl)+"&title="+escape(g_sPageName),
          "","resizable=yes,scrollbars=yes,width=650,height=600");
      break;
    case 'twitter':
      window.open("http://twitter.com/home?status="+escape("RT @Sportometry "+g_sUrl+" "+g_sPageName),
          "","resizable=yes,scrollbars=yes,width=650,height=600");
      break;
    case 'facebook':
      window.open("http://www.facebook.com/share.php?u="+escape(g_sUrl)+"&t="+escape(g_sPageName),
          "","resizable=yes,scrollbars=yes,width=650,height=600");
      break;
    case 'digg':
      window.open("http://digg.com/submit?phase=2&url="+escape(g_sUrl)+"&title="+escape(g_sPageName),
          "","resizable=yes,scrollbars=yes,width=650,height=600");
      break;
    case 'reddit':
      window.open("http://reddit.com/submit?url="+escape(g_sUrl)+"&title="+escape(g_sPageName),
          "","resizable=yes,scrollbars=yes,width=650,height=600");
      break;
    case 'friendfeed':
      window.open("http://friendfeed.com/share?url="+escape(g_sUrl)+"&title="+escape(g_sPageName),
          "","resizable=yes,scrollbars=yes,width=650,height=600");
      break;
    case 'slashdot':
      window.open("http://slashdot.org/bookmark.pl?url="+escape(g_sUrl)+"&title="+escape(g_sPageName),
          "","resizable=yes,scrollbars=yes,width=650,height=600");
      break;
    case 'stumbleupon':
      window.open("http://www.stumbleupon.com/submit?url="+escape(g_sUrl)+"&title="+escape(g_sPageName),
          "","resizable=yes,scrollbars=yes,width=650,height=600");
      break;
    case 'tumblr':
      window.open("http://www.tumblr.com/share?u="+escape(g_sUrl)+'&t='+escape(g_sPageName),
          "","resizable=yes,scrollbars=yes,width=650,height=600");
      break;
    case 'myspace':
      window.open('http://www.myspace.com/Modules/PostTo/Pages/?c='+escape(g_sUrl)+'&t='+escape(g_sPageName),
          "","resizable=yes,scrollbars=yes,width=650,height=600");
      break;
    case 'delicious':
      window.open("http://del.icio.us/post?url="+escape(g_sUrl)+"&title="+escape(g_sPageName),
          "","resizable=yes,scrollbars=yes,width=650,height=600");
      break;
    case 'googlebookmarks':
      window.open("http://www.google.com/bookmarks/mark?op=edit&bkmk="+escape(g_sUrl)+"&title="+escape(g_sPageName),
          "","resizable=yes,scrollbars=yes,width=650,height=600");
  }
}

function colorRabbit(){
  var aSteps=['sport','what','type','year','position','player'];
  var sCurrentBlink='';
  for(var i in aSteps)
    $("#rabbit_"+aSteps[i]).fadeTo("fast",1);

  var sWhat=getWhat();
  if(($('#sport_name').val()=='0')||($('#sport_name').val()==null))
    sCurrentBlink='sport';
  else if(sWhat=='')
    sCurrentBlink='what';
  else if(($('#player_type').val()=='0')||($('#player_type').val()==null))
    sCurrentBlink='type';
  else if((sWhat!='total')&&
          (getYears()=='') &&
          (($('#year_player').val()=='0')||
          ($('#year_player').val()=='')||
          ($('#year_player').val()==null))
        )
    sCurrentBlink='year';
  else if(($('#position_name').val()=='0')||($('#position_name').val()==null))
    sCurrentBlink='position';
  else if((getPlayersId('one')==0) && (getPlayersId('multi')==''))
    sCurrentBlink='player';

  $("#rabbit_"+sCurrentBlink).fadeTo("fast",0.4);//.fadeTo("slow",1).fadeTo("fast",0.4);

  for(var i in aSteps)
    $("#rabbit_"+aSteps[i]).fadeTo("fast",1);

  g_tRabbit=setTimeout("colorRabbit()",2000);
}


$(document).ready(function(){
  $.history.init(callback);
  setupState();
  if(GL_FIRST){
    $("#first").show();
  }

  if(GL_URI!=""){
    hideOptions();
    loadFlexData(GL_URI);
  }
  sReq='index.php?'+GL_CORE+'.usrst&screen='+(
    (typeof(screen)=='undefined')?'':screen.width+'x'+screen.height);
  $.getJSON(sReq,function(stub){ });
});

function getSeason(iYear){
  var sGameName=$('#sport_name').val().toLowerCase();
  if(isOption(sGameName)){
    return iYear+'-'+(iYear+1);
  }else
    return iYear;
}

function setupYears(){
  $("#years_player").hide();
  $("#label_years").hide();
  $("#year_player").hide();
  $("#label_year").hide();
  $('#year_player').empty();
  var sGameName=$('#sport_name').val().toLowerCase();
  var sOptionsOne='<option value="0"></option>';
  var sOptionsMulti='';
  g_iStartYear=hashDates[sGameName]['years'][0];
  g_iFinishYear=hashDates[sGameName]['years'][hashDates[sGameName]['years'].length-1];
  for(var i in hashDates[sGameName]['years']){
    var iYear=hashDates[sGameName]['years'][i];
    sOptionsOne+='<option value="'+iYear+'">'+getSeason(iYear)+'</option>';
    sOptionsMulti+='<input type="checkbox" id="year_'+iYear+'" value="'+iYear+
                   '" onclick="updateButton();">'+getSeason(iYear)+'<br>';
  }
  $('#year_player').html(sOptionsOne);
  $('#years_player').html(sOptionsMulti);
}

function setYearsStatus(sStatus){
  emptyYears();
  if(sStatus=='show'){
    $("#years_player").show();
    $("#label_years").show();
  }else if(sStatus=='reset'){
    $("#years_player").hide();
    $("#label_years").hide();
  }else if(sStatus!='empty')
    alert('Unknown status of year');
}

function setYearStatus(sStatus){
  if($('#year_player').val()!='0')
    $('#year_player').val('0');//empty
  if(sStatus=='show'){
    $("#year_player").show();
    $("#label_year").show();
  }else if(sStatus=='reset'){
    $("#year_player").hide();
    $("#label_year").hide();
  }else if(sStatus!='empty')
    alert('Unknown status of year');
}

function getYears(){
  var sIds='';
  for(i=g_iStartYear;i>g_iFinishYear;i--)
    if($('#year_'+i).attr('checked'))
      sIds+=$('#year_'+i).val()+',';
  return sIds;
}

function emptyYears(){
  for(i=g_iStartYear;i>g_iFinishYear;i--)
    $('#year_'+i).attr("checked","");
}

function getPlayersId(sType){
  if(sType=='multi'){
    var sIds='';
    for(i=1;i<=g_iNumPlayers;i++)
      if($('#player_'+i).attr('checked'))
        sIds+=$('#player_'+i).val()+',';
    return sIds;
  }
  //one
  for(i=1;i<=g_iNumPlayers;i++)
    if($('#player_'+i).attr('checked'))
      return $('#player_'+i).val();
  return 0;
}

function setWaitCursor(bWait){
  if(bWait){
    g_iWait++;
    $('body').css({cursor: "wait"});
  }else{
    g_iWait--;
    if(g_iWait<=1){
      g_iWait=0;
      $('body').css({cursor:"default"});
    }
  }
}

function isNotSportAndType(){
  return ($('#sport_name').val()=='0')||($('#player_type').val()=='0')||
         ($('#sport_name').val()==null)||($('#player_type').val()==null);
}

function getWhat(){
  if($('#what_player').attr('checked')) return 'player';
  if($('#what_year').attr('checked')) return 'year';
  if($('#what_total').attr('checked')) return 'total';
  return '';
}

function isRequestPrepared(){
  var sWhat=getWhat();
  var sPlayersIds=getPlayersId('multi');
  var iPlayerId=getPlayersId('one');
  var bYear=(sWhat=='year')&&($('#year_player').val()!=null)&&
        ($('#year_player').val()!='0')&&(sPlayersIds!="");
  var bTotal=(sWhat=='total')&&(sPlayersIds!="");
  var bPlayer=(sWhat=='player')&&
          (iPlayerId!=0)&&
          (getYears()!='');
  var bCorrect=((!isNotSportAndType())&&
           ($('#position_name').val()!='0')&&
           ($('#position_name').val()!=null)&&
           (bYear || bTotal || bPlayer));
  if(!bCorrect){
    $("#warning").html('Please fill all fields');
    return false;
  }
  $("#warning").html('');
  return true;
}

function updateButton(){
  //setWaitCursor(false);
  setReadyStatus(isRequestPrepared()?'ready':'reset');
}

function resetState(){
  resetSport();
  resetWhat();
  resetPlayerType();
  setPlayersStatus('reset');
  resetPositions();
  setYearStatus('reset');
  setYearsStatus('reset');
  setReadyStatus('reset');
  colorRabbit();
}

function setupState(){
  $('#sport_name').html(GL_OPTIONS);
  resetState();
  ////////////////////////////////////////////////
  if((hsRequest['game']!='') && (hsRequest['type']!='')){
    $('#sport_name').val(hsRequest['game']);
    setupYears();
    fillPositions(hsPreset['positions']);
    $('#position_name').val(hsRequest['field']);
    if($('#position_name').val()!=hsRequest['field'])
      $('#position_name').val('-'+hsRequest['field']);
    onChangePosition();
    $('#uncumulate').attr('checked',(hsRequest['uncum']==1)?'true':'');
    fillStats(hsPreset['stats']);
    $('#player_type').val(hsRequest['ptype_in']);

    switch(hsRequest['type']){
      case 'demoyear':
        $("#what_year").attr("checked","true");
        setPlayersStatus('multi');
        setYearsStatus('reset');
        setYearStatus('show');
        $('#year_player').val(hsRequest['year']);
        fillPlayers(hsPreset['plsyear']);
        for(i=1;i<=g_iNumPlayers;i++){
          if($('#player_'+i).val() in ob(hsRequest['pids']))
            $('#player_'+i).attr('checked','true');
        }
      break;
      case 'demoplayer':
        $("#what_player").attr("checked","true");
        setYearStatus('reset');
        setYearsStatus('show');
        setPlayersStatus('one');
        for(sYear in hsRequest['years'])
          $('#year_'+hsRequest['years'][sYear]).attr('checked','true');
        fillPlayer(hsPreset['plstype']);
        for(i=1;i<=g_iNumPlayers;i++){
          if($('#player_'+i).val()==hsRequest['pid']){
            $('#player_'+i).attr('checked','true');
            break;
          }
        }
      break;
      case 'demototals':
        $("#what_total").attr("checked","true");
        setYearStatus('reset');
        setYearsStatus('reset');
        setPlayersStatus('multi');
        fillPlayers(hsPreset['plstotal']);
        for(i=1;i<=g_iNumPlayers;i++){
          if($('#player_'+i).val() in ob(hsRequest['pids']))
            $('#player_'+i).attr('checked','true');
        }
      break;
    }
    updateButton();
    showButtons();
  }
  ////////////////////////////////////////////////
  $('#position_name').change(function(){onChangePosition();});
  $('#sport_name').change(function(){setStateSportName();});
  $('#player_type').change(function(){setStatePlayerType();});
  $('#year_player').change(function(){setStateYear();});
  //$('#years_player').change(function(){updateButton();});
  $('#what_year').click(function(){setStateWhatYear();});
  $('#what_player').click(function(){setStateWhatPlayer();});
  $('#what_total').click(function(){setStateWhatTotal();});
}

function resetWhat(){
  $("#what_year").attr("checked","");
  $("#what_player").attr("checked","");
  $("#what_total").attr("checked","");
}

function resetSport(){
  if($('#sport_name').val()!='0')
    $('#sport_name').val('0');
}

function resetPlayerType(){$('#player_type').empty();  }
function resetPositions(){ $('#position_name').empty();  }

function onChangePosition(){
  if($('#position_name').val().charAt(0)=='-')
    $('#cum').show();
  else
    $('#cum').hide();
  updateButton();
}


function setPlayersStatus(sStatus){
  g_iNumPlayers=0;
  $("#players").empty();
  $("#player").empty();
  if(sStatus=='reset'){
    $("#players").hide();
    $("#label_players").hide();
    $("#player").hide();
    $("#label_player").hide();
  }else if(sStatus=='one'){
    $("#players").hide();
    $("#label_players").hide();
    $("#player").show();
    $("#label_player").show();
  }else if(sStatus=='multi'){
    $("#players").show();
    $("#label_players").show();
    $("#player").hide();
    $("#label_player").hide();
  }else if(sStatus!='empty')
    alert('Unknown status of players');
}


function setReadyStatus(sStatus){
  if(sStatus=='ready')
    $("#demo_button").removeAttr("disabled");
  else if(sStatus=='reset')
    $("#demo_button").attr("disabled","true");
  else
    alert('Unknown status of button');
}

function setStateSportName(){
  setupYears();
  setYearStatus('reset');
  setPlayersStatus('reset');
  setReadyStatus('reset');
  resetWhat();
  resetPositions();
  resetPlayerType();
  loadPlayerTypes();
  updateButton();
  $('#about').hide();
}

function setStatePlayerType(){
  setReadyStatus('reset');
  setPlayersStatus('empty');
  setYearStatus('empty');
  resetPositions();
  loadPostions();
  var sWhat=getWhat();
  if(sWhat=='player'){
    setPlayersStatus('one');
    setYearStatus('reset');
    setYearsStatus('show');
    loadPlayer();
  }else if(sWhat=='total'){
    setPlayersStatus('multi');
    setYearStatus('reset');
    setYearsStatus('reset');
    loadPlayers(false);
  }else if(sWhat=='year'){
    setPlayersStatus('multi');
    setYearStatus('show');
    setYearsStatus('reset');
  }
  updateButton();
}

function setStateYear(){
  setPlayersStatus('multi');
  loadPlayers(true);
  updateButton();
}

function setStateWhatYear(){
  if($('#sport_name').val()=='0') {
    resetWhat();
    return;
  }
  setReadyStatus('reset');
  setPlayersStatus('multi');
  setYearsStatus('reset');
  setYearStatus('show');
  resetPositions();
  loadPostions();
  updateButton();
}

function setStateWhatPlayer(){
  if($('#sport_name').val()=='0') {
    resetWhat();
    return;
  }
  setReadyStatus('reset');
  setYearStatus('reset');
  setYearsStatus('show');
  resetPositions();
  loadPostions();
  setPlayersStatus('one');
  loadPlayer();
  updateButton();
}

function setStateWhatTotal(){
  if($('#sport_name').val()=='0') {
    resetWhat();
    return;
  }
  setReadyStatus('reset');
  setYearStatus('reset');
  setYearsStatus('reset');
  setPlayersStatus('multi');
  loadPlayers(false);
  resetPositions();
  loadPostions();
  updateButton();
}


function fillPlayers(mData){
  var sOpt = '';
  g_iNumPlayers=0;
  $.each(mData, function(i,mItem){
      g_iNumPlayers++;
      sOpt += '<input type="checkbox" id="player_'+g_iNumPlayers+
              '" value="'+mItem._id+'" onclick="updateButton();">'+
              mItem._name+'<br>';
      });
  $('#players').html(sOpt);
}

function loadPlayers(bYear){
  if( isNotSportAndType() || (($('#year_player').val()=='0')&& bYear) ) return;
  setWaitCursor(true);
  var sReq='&game='+$('#sport_name').val()+"&ptype="+$('#player_type').val();
  sReq=(bYear)?'index.php?'+GL_CORE+'.plsyear'+sReq+'&year='+$('#year_player').val()
              :'index.php?'+GL_CORE+'.plstotal'+sReq;
  $.getJSON(sReq,
    function(mData){
      fillPlayers(mData);
      setWaitCursor(false);
    }
  );
  updateButton();
}

function fillPlayer(mData){
  var sOpt = '';
  g_iNumPlayers=0;
  $.each(mData, function(i,mItem){
      g_iNumPlayers++;
      sOpt += '<input type="radio" id="player_'+g_iNumPlayers+
             '" name="player_id" value="'+mItem._id+'" onclick="updateButton();">'+
             mItem._name+'<br>';
      });
  $('#player').html(sOpt);
}

function loadPlayer(){
  if(isNotSportAndType()) return;
  setWaitCursor(true);
  $.getJSON('index.php?'+GL_CORE+'.plstype&game='+$('#sport_name').val()+"&ptype="+$('#player_type').val(),
    function(mData){
      fillPlayer(mData);
      setWaitCursor(false);
    }
  );
  updateButton();
}

function fillStats(mData){
  var sOpt = '<option value="0"></option>';
  $.each(mData, function(i,mItem){
      if(mItem.position!='ALL')
        sOpt += '<option value="'+mItem.position+'">'+
              mItem.stattype+' - '+mItem.position+'</option>';
      else
        sOpt += '<option value="ALLIN_'+mItem.stattype.toUpperCase()+'">'+
            mItem.stattype+' - ALL'+'</option>';
      });
  $('#player_type').html(sOpt);
  if($('#player_type').val()!='0')
    $('#player_type').val('0');
}


function loadPlayerTypes(){
  if($('#sport_name').val()=='0') return;
  setWaitCursor(true);
  $.getJSON('index.php?'+GL_CORE+'.stats&game='+$('#sport_name').val(),
    function(mData){
      fillStats(mData);
      setWaitCursor(false);
    }
  );
  updateButton();
}

function fillPositions(mData){
  var sOpt = '<option value="0"></option>';
  $.each(mData, function(i,mItem){
      sOpt += '<option title="'+mItem.name+'" value="'+
      ((mItem.cum>0)?'-':'')+mItem.cod+'">'+mItem.label+'</option>';
      });
  $('#position_name').html(sOpt);
  if($('#position_name').val()!='0')
    $('#position_name').val('0');
}

function loadPostions(){
  if(isNotSportAndType()) return;
  var sWhat=getWhat();
  if(sWhat=='') return;
  setWaitCursor(true);

  $.getJSON('index.php?'+GL_CORE+'.positions&game='+$('#sport_name').val()+
            "&ptype="+$('#player_type').val()+'&what='+sWhat,
            function(mData){
              fillPositions(mData);
              setWaitCursor(false);
            });
  updateButton();
}

function createUrl(bPrintLink){
  var sWhat=getWhat();
  var sPosition=$('#position_name').val();//'&fn='=
  var sUri='';

  if(sPosition.charAt(0)=='-')
    sPosition=sPosition.slice(1)+(($('#uncumulate').attr('checked'))?'&uncum=1':'');

  if(sWhat=='year')
    sUri= 'demoyear&game='+$('#sport_name').val()+
          '&ptype='+escape($('#player_type').val())+
          '&year='+$('#year_player').val()+
          '&fn='+sPosition+
          '&pids='+getPlayersId('multi');

  if(sWhat=='player')
    sUri= 'demoplayer&game='+$('#sport_name').val()+
          '&ptype='+escape($('#player_type').val())+
          '&fn='+sPosition+
          '&pid='+getPlayersId('one')+
          '&years='+getYears();

  if(sWhat=='total')
    sUri='demototals&game='+$('#sport_name').val()+
         '&ptype='+escape($('#player_type').val())+
         '&fn='+sPosition+
         '&pids='+getPlayersId('multi');

  if(bPrintLink)
    return 'index.php?'+GL_CORE+'&type='+sUri;
  return 'index.php?'+GL_CORE+'.'+sUri;
}

function setLinkUrl(sCode,sText){
  g_sCode=sCode;
  g_sUrl=GL_BASEURL+g_sCode;
  g_sPageName=sText;
  if(window.opera){//opera patch
    $("#favorites").html('<a href="'+g_sUrl+'" title="'+g_sPageName+'" rel="sidebar">'+
        '<img src="images/favorites.gif" width="16" height="16" border="0" alt="Favorites"'+
        ' title="Favorites"></a>');
  }
  if(navigator.userAgent.toLowerCase().indexOf('webkit')>=0){
    $("#favorites").html('<img src="images/favorites_gray.gif" width="16" height="16" '+
        ' border="0" alt="Press CTRL-D for bookmark" title="Press CTRL-D for bookmark">');
  }
  $('#mail_link').html(g_sUrl);
  $('#mail_friend').html('<a href="mailto:?body='+escape(g_sUrl+' '+g_sPageName)+
      '">mail to friend</a>');
}

function loadData(){
  var sUrl=createUrl(false);
  var sUrlLink=createUrl(true);
  setWaitCursor(true);
  $.getJSON(sUrl+"&check=1",
    function(mData){
      setWaitCursor(false);
      if(mData.exists>0){
        g_sQuote=mData.quote;
        g_sAuthor=(mData.author!=null)?mData.author:'';
        loadFlexData(sUrl);
        setLinkUrl(mData.code,mData.text);
        hideOptions();
        showButtons();
      }else{
        setReadyStatus('reset');
        $("#warning").html('Sorry, there is no data for this request');
      }
    }
  );
}


function showDemo(){
  $.history.load("req="+(g_iRequest++));//N
  if(!isRequestPrepared()){
    setReadyStatus('reset');
    return;
  }
  loadData();
  return false; //N
}

function showOptions() {
  $("#options").show("slow");
  $("#showoptions").hide();
  $("#hideoptions").show();
  $("#main_div").hide();
}

function hideOptions() {
  $("#options").hide();
  $("#showoptions").show();
  $("#hideoptions").hide();
  $("#main_div").show();
  $("#howto_tab").hide();
  $("#howto").show();
  $("#close_howto").hide();
}

function showHowTo (){
  $("#howto_tab").show("slow");
  $("#howto").hide();
  $("#close_howto").show();
}

function hideHowTo (){
  $("#howto_tab").hide("slow");
  $("#howto").show();
  $("#close_howto").hide();
}

function closeLink(){
  $("#sendlink").hide();
}

function openLink(){
  $("#sendlink").show();
}

function closeBlog(){
  $("#addblog").hide();
}

function openBlog(){
  $("#addblog").show();
  var sCodeEscaped=escape(g_sCode+'&d');
  $("#blog_text").html(GL_FLASH1+sCodeEscaped+GL_FLASH2+sCodeEscaped+GL_FLASH3);//(g_sUrl);
}

function showButtons (){
  $(".open_buttons").show();
}
