var timer;
var secondsToNextQuestion = 5;
var allowAnswering = true;
var seconds = 20;
var totalCategories = 0;
var categoriesNumber = 12;
var filtersAreUpdated = true;
var link;

function getLink()
{
  var el = document.getElementById('qlink');
  link = "http://it.binguru.com" + el.innerHTML;
}

function forwardToPreHome()
{
  setTimeout("location = '"+base+"preHome.do';", 1000);
}

function submitAccountDataForm()
{
  document.AccountDataFormBean.submit();
}

function submitPhotoForm()
{
  document.PhotoFormBean.submit();
}

function submitPasswordForm()
{
  document.PasswordFormBean.submit();
}

function disableKeyAnswer()
{
  document.onkeydown = "";
}

function contactUs(divId)
{
  var email = document.forms[0].email.value;
  if (email == null || email == '' || email.toString().match("@") == null)
  {
    var err = document.getElementById('error');
    err.innerHTML = "<b>Inserisci una mail valida!</b>";
    return;
  }
  var issue = document.forms[0].issue.value;
  var notes = document.forms[0].notes.value;
  new Ajax.Request(base+'contactUs.do',
  {
    method:'post',
    parameters: {
      email: email,
      issue: issue,
      notes: notes
    },
    onComplete: function forward()
    {
      var el = document.getElementById(divId);
      el.innerHTML = "Segnalazione inviata!";
      setTimeout("Modalbox.hide();", 1500);
    }
  });
}


function openRegTip(id, idError)
{
  var error = document.getElementById(idError);
  if (error != null)
  {
    error.innerHTML = "";
  }
  var el = document.getElementById(id);
  el.style.display = "block";
}

function closeRegTip(id)
{
  var el = document.getElementById(id);
  el.style.display = "none";
}

function submitQuiz()
{
  document.QuizFormBean.submit();
}


function setOnCheckBox()
{
  var checkBox1 = document.getElementById('remember');
  checkBox1.checked = true;
}


function changeCheckBoxValue(idCheckBox)
{
  var checkBox = document.getElementById(idCheckBox);
  if (checkBox.value == 1)
  {
    checkBox.value = 0;
  }
  else
  {
    checkBox.value = 1;
  }
}

function submitForm()
{
  document.BguserFormBean.submit();
}

function disableKeyAnswer()
{
  document.onkeydown = "";
}

function enableKeyAnswer()
{
  document.onkeydown = keyDown;
}

function sendAbuse(divId)
{
  var email = document.forms[0].email.value;
  var issue = document.forms[0].errorType.value;
  var exit = false;
  if (email == null || email == '' || email.toString().match("@") == null)
  {
    var err1 = document.getElementById('emailerror');
    err1.innerHTML = "<b>Inserisci una mail valida!</b> <br/>";
    exit = true;
  }
  if (issue == null || issue == '')
  {
    var err2 = document.getElementById('issueerror');
    err2.innerHTML = "<b>Scegli una motivazione!</b> <br/>";
    exit = true;
  }
  if (exit == true)
  {
    return;
  }
  var errorType = document.forms[0].errorType.value;
  var notes = document.forms[0].notes.value;
  var idQuestion = document.forms[0].idQuestion.value;
  new Ajax.Request(base+'reportAbuse.do',
  {
    method:'post',
    parameters: {
      email: email,
      errorType: errorType,
      notes: notes,
      idQuestion: idQuestion
    },
    onComplete: function forward()
    {
      var el = document.getElementById(divId);
      el.innerHTML = "Abuso segnalato!";
      setTimeout("Modalbox.hide();", 1500);
    }
  });
}

function sendQuizByMail(divId, idQuestion, url)
{
  var email1 = document.getElementById('friendMail1').value;
  var exit = false;
  if (email1 == '' || email1.toString().match("@") == null)
  {
    //&& email3.toString().match("@") == null && email4.toString().match("@") == null
    var err1 = document.getElementById('email1error');
    err1.innerHTML = "<b>Inserisci una mail valida!</b>";
    exit = true;
  }
  if (exit == true)
  {
    return;
  }
  new Ajax.Request(base+'sendQuizByMail.do',
  {
    method:'post',
    parameters: {
      email: email1,
      quizURL: url,
      idQuestion: idQuestion
    },
    onComplete: function forward()
    {
      var el = document.getElementById(divId);
      el.innerHTML = "Email inviate con successo!";
      setTimeout("Modalbox.hide();", 1500);
    }
  });
}

function inviteFriends(divId, friendsNumber)
{
  var i;
  var element;
  var emails = "";
  for (i = 1; i <= friendsNumber; i++)
  {
    element = document.getElementById('contact' + i);
    if (element.checked == true)
    {
      emails = emails + element.value + ';';
    }
  }
  var options = {
    asynchronous:true,
    method:'post',
    parameters: 'emails' + '=' + emails
  };
  var updater = new Ajax.Updater(divId, base+"sendInviteMail.do", options);
  updater = null;
}

function delete_cookie( cookie_name )
{
  var cookie_date = new Date ( );  // current date & time
  cookie_date.setTime ( cookie_date.getTime() - 1 );
  document.cookie = cookie_name += "=; expires=" + cookie_date.toGMTString();
  cookie_date = null;
}

function genericPause()
{
  clearInterval(timer);
}

function filtersAreNotUpdated()
{
  filtersAreUpdated = false;
  var el = document.getElementById('savePreferences');
  el.innerHTML = "<div class='btn2'><a href='javascript:void(0);' onclick=sendFilteringInfo(" + "'box2');" + ">Salva Preferenze</a></div>";
}

function countActiveCheckBox()
{
  var tot = 0;
  for (i = 1; i<=categoriesNumber; i++)
  {
    checkBox = document.getElementById('category' + i);
    if (checkBox.checked == true)
    {
      tot++;
    }
  }
  return tot;
}

function filterByUser(divId, idBguserRef)
{
  changeContent('t2', 'box2', 'a', 'tabMenu', 'boxHide');
  var checkBox = document.getElementById('filterByUserCheckBox');
  if (checkBox != null && idBguserRef == 0)
  {
    checkBox.disabled = true;
  }
  var options = {
    asynchronous:true,
    parameters: 'idBguserRef' + '=' + idBguserRef
  };
  var updater = new Ajax.Updater(divId,  base+"extractUserQuestion.do", options);
  if (idBguserRef == 0)
  {
    updateFilterImage(false);
  }
  else
  {
    updateFilterImage(true);
  }
  updater = null;
}

function closeOnClickOut(e)
{
  if(e.target.id != "userLink" || e.target.id != "languageDiv")
  {
    var el = document.getElementById('userLink');
    if (el != null)
    {
      el.style.display = "none";
    }
    el = document.getElementById('languageDiv');
    if (el != null)
    {
      el.style.display = "none";
    }
  }
}

function updateFilterImage(activate)
{
  var filterImage = document.getElementById('filterImage');
  if (activate == true)
  {
    filterImage.src =  base+"images/icon_filter_on.gif";
  }
  else
  {
    filterImage.src =  base+"images/icon_filter_of.gif";
  }
}

function sendFilteringInfo(divId)
{
  filtersAreUpdated = true;
  var checkBox;
  var i;
  var presentIds = "";
  for (i = 1; i<=categoriesNumber; i++)
  {
    checkBox = document.getElementById('category' + i);
    if (checkBox.checked == true)
    {
      if (presentIds != "")
      {
        presentIds = presentIds + "-";
      }
      presentIds = presentIds + checkBox.value;
    }
  }
   
  var options = {
    asynchronous:true,
    method:'post',
    parameters: 'presentIds' + '=' + presentIds
  };
  var updater = new Ajax.Updater(divId,  base+"sendFilteringInfo.do", options);
  if (presentIds != "")
  {
    updateFilterImage(true);
  }
  else
  {
    updateFilterImage(false);
  }
  updater = null;
}

function clickOnAllCategories(idCheckBox)
{
  var filterByUserCheckBox = document.getElementById('filterByUserCheckBox');
  if (filterByUserCheckBox.checked == true)
  {
    new Ajax.Request( base+'extractUserQuestion.do',
    {
      method:'post',
      parameters: {
        idBguserRef: 0
      },
      onComplete: function forward(response)
      {
        var el = document.getElementById('box2');
        el.innerHTML = response.responseText;
        filtersAreNotUpdated();
        totalCategories = countActiveCheckBox();
        return;
      }
    });
  }
  var checkBox = document.getElementById(idCheckBox);
  if (checkBox.checked == false)
  {
    checkBox.checked = true;
  }
  else
  {
    filtersAreNotUpdated();
    totalCategories = 0;
    var x;
    var current;
    for (x = 1; x <= categoriesNumber; x++)
    {
      current = document.getElementById('category'+x);
      if (current != null)
      {
        current.checked = false;
      }
    }
  }
}

function clickOnSingleCategory(idClickedCategory, idCheckBoxAllCategories, divId, directClick)
{
  var clickedCheckBox = document.getElementById(idClickedCategory);
  var userFilter = document.getElementById('filterByUserCheckBox');
  if (directClick == false)
  {
    if (userFilter.checked == true)
    {
      filterByUser('box2', 0);
    }
    clickedCheckBox.checked = true;
    sendFilteringInfo('box2');
    changeContent('t2', 'box2', 'a', 'tabMenu', 'boxHide');
    return;
  }
  if (directClick == true && userFilter.checked == true)
  {
    //filterByUser('box2', 0);
    new Ajax.Request( base+'extractUserQuestion.do',
    {
      method:'post',
      parameters: {
        idBguserRef: 0
      },
      onComplete: function forward(response)
      {
        var el = document.getElementById(divId);
        el.innerHTML = response.responseText;
        var c = document.getElementById(idClickedCategory);
        c.checked = true;
        filtersAreNotUpdated();
        totalCategories = countActiveCheckBox();
        var allCategoriesCheckBox = document.getElementById(idCheckBoxAllCategories);
        allCategoriesCheckBox.checked = false;
        if (totalCategories == categoriesNumber || totalCategories == 0)
        {
          clickOnAllCategories(idCheckBoxAllCategories, divId);
        }
        updateFilterImage(false);
        return;
      }
    });
  }
  filtersAreNotUpdated();
  totalCategories = countActiveCheckBox();
  var allCategoriesCheckBox = document.getElementById(idCheckBoxAllCategories);
  allCategoriesCheckBox.checked = false;
  if (totalCategories == categoriesNumber || totalCategories == 0)
  {
    clickOnAllCategories(idCheckBoxAllCategories, divId);
  }
}

function login()
{
  var username = document.forms[0].username.value;
  var password = document.forms[0].password.value;
  var rememberMe = document.forms[0].rememberMe.checked;
  new Ajax.Request( base+'login.do',
  {
    method:'post',
    parameters: {
      username: username,
      password: password,
      rememberMe: rememberMe
    },
    onComplete: function getLoginResults(response)
    {
      if (response.responseText.length == 3)
      {
        Modalbox.hide();
        location =  base+"userHome.do";
      }
      else
      {
        var spanerrors = document.getElementById('errors');
        spanerrors.innerHTML = "<b>Nome Utente o Password sbagliati!</b>";
      }
    },
    onFailure: function()
    {
      return;
    }
  });
}

function getPoints (actualseconds){
  var points = new Array(0, 1, 1, 2, 2, 2, 4, 4, 4, 6, 6, 6, 8, 8, 8, 10, 10, 10, 10, 10);
  return points[actualseconds];
  points = null;
}

function showHideDiv(div)
{
  if ($(div).style.display == "none")
  {
    $(div).style.display = "block";
  }
  else
  {
    $(div).style.display = "none";
  }
}

function showHideBox(title, body)
{
  titleObj = $(title);
  bodyObj = $(body);
  if(titleObj == null || bodyObj == null )
    return;
  titleObj.toggleClassName("titleOpen");
  titleObj.toggleClassName("titleClose");
  Effect.toggle(bodyObj,'slide',{
    duration:0.3
  });
}


function setLanguage(code)
{
  location =  base+"setLanguage.do?languageCode=" + code;
}

function openBox (url, heigth, width)
{
  GB_showCenter('', url, heigth, width);
}

function changeContent(elem, box, tagMenu, idMenu, classBoxContent)
{
  tabContainer = $(idMenu);
  menuItem = tabContainer.getElementsByTagName(tagMenu);
  boxItem = document.getElementsByTagName('div');
  boxToShow = $(box);
  
  var i;
  for(i=0; i < menuItem.length; i++)
  {
    menuItem[i].className=""
  }
  for(i=0; i < boxItem.length; i++)
  {
    if(boxItem[i].className.match(classBoxContent))
    {
      boxItem[i].style.display="none"
    }
  }
  $(elem).className="active";
  boxToShow.setOpacity(0);
  boxToShow.style.display="block";
  var myEffect = new Effect.Opacity(boxToShow, {
    duration: 0,
    transition: Effect.Transitions.linear,
    from: 0.0,
    to: 1.0
  });
  myEffect = null;
}
      
function pauseCountDown()
{
  clearInterval(timer);
//var span = document.getElementById('pauseButton');
//span.innerHTML = '<big>:0<span id=' + '"countDown">' + secondsToNextQuestion + '</span></big> <a class=' + '"btnPlay" ' + 'href=' + '"javascript:restartCountDown('+ logged + ');">Play</a>';
}  

function fakeCountDown()
{
  var TARG_ID = "countdowncontainer";
  var TARGPOINTS_ID = "pointscontainer";
  var e = document.getElementById(TARG_ID);
  var p = document.getElementById(TARGPOINTS_ID);
  if( ! e )
  {
    throw new Error('"COOL_REDIRECT" element id not found');
  }
  timer = setInterval(function()
  {
    if( seconds )
    {
      seconds = --seconds;
      if (seconds < 10)
      {
        e.innerHTML = ':' + '0' + seconds;
      }
      else
      {
        e.style.color = "#FF7100";
        p.style.color = "#FF7100";
        e.innerHTML = ':' + seconds;
      }
      p.innerHTML = getPoints(seconds) + " punti";
      if (seconds < 10 && seconds > 0)
      {
        e.style.color = "red";
        p.style.color = "red";
      }
      else
      {
        if (seconds == 0)
        {
          e.style.color = "#404040";
          p.style.color = "#404040";
        }
      }
    }
    else
    {
      seconds = 21;
      p.innerHTML = "";
    }
                              
  }, 1000);
}
var currentQuestion;
function coolRedirectCountDown(logged , statsBlock, idQuestion)
{
  if(idQuestion)
    currentQuestion = idQuestion;
  var TARG_ID = "countdowncontainer";
  var TARGPOINTS_ID = "pointscontainer";
  var HOME =  base+"home.do";
  var BLOCK = "overrideBox";
                    
  var e = document.getElementById(TARG_ID);
  var p = document.getElementById(TARGPOINTS_ID);
  if( ! e )
  {
    return;
  }
  timer = setInterval(function()
  {
    if( seconds )
    {
      seconds = --seconds;
      if (seconds < 10)
      {
        e.innerHTML = ':' + '0' + seconds;
      }
      else
      {
        e.innerHTML = ':' + seconds;
      }
      p.innerHTML = getPoints(seconds) + " punti";
      if (seconds < 10 && seconds > 0)
      {
        e.style.color = "red";
        p.style.color = "red";
      }
      else
      {
        if (seconds == 0)
        {
          e.style.color = "#404040";
          p.style.color = "#404040";
        }
      }
    }
    else
    {
      clearInterval(timer);
      //p.innerHTML = "";
      allowAnswering = false;
      noAnswer(BLOCK, logged, statsBlock, currentQuestion);
    }
                              
  }, 1000);
}

                          
function delayAnswer(whatToDo, delay){
  clearInterval(timer);
  emptyOnMouseEvents();
  setTimeout(whatToDo,delay);
}
                          
function emptyOnMouseEvents(){
  if ($('firstW') != null)
  {
    $('firstW').onmouseover = "";
    $('firstW').onmouseout = "";
  }
  if ($('firstC') != null)
  {
    $('firstC').onmouseover = "";
    $('firstC').onmouseout = "";
  }
  if ($('secondW') != null)
  {
    $('secondW').onmouseover = "";
    $('secondW').onmouseout = "";
  }
  if ($('secondC') != null)
  {
    $('secondC').onmouseover = "";
    $('secondC').onmouseout = "";
  }
  if ($('thirdW') != null)
  {
    $('thirdW').onmouseover = "";
    $('thirdW').onmouseout = "";
  }
  if ($('thirdC') != null)
  {
    $('thirdC').onmouseover = "";
    $('thirdC').onmouseout = "";
  }
  if ($('fourthW') != null)
  {
    $('fourthW').onmouseover = "";
    $('fourthW').onmouseout = "";
  }
  if ($('fourthC') != null)
  {
    $('fourthC').onmouseover = "";
    $('fourthC').onmouseout = "";
  }
}
                                          
//function answer(idAnswer){
//  var TARG_ID = "countdowncontainer";
//  var OVERRIDE_ZONE = "overrideBox";
//  var e = document.getElementById(TARG_ID);
//  var time = parseInt(e.innerHTML);
//  var url =  base+"answer.do?idAnswer=" + idAnswer + "&remainingTime=" + time;
//  location = url;
//
//}
//
//function getAnswerInBox(idAnswer){
//  var url = answer(idAnswer);
//  GB_showCenter('ciao', url, 450, 550);
//}
                                          
function emptyTextArea(idTextArea, edited)
{
  if ($(idTextArea).title != "Edit" && edited == false)
  {
    $(idTextArea).value="";
    $(idTextArea).title="Edit";
  }
}

function getObject(obj) 
{
  var theObj;
  if(document.all) {
    if(typeof obj=="string") {
      return document.all(obj);
    } else {
      return obj.style;
    }
  }
  if(document.getElementById) {
    if(typeof obj=="string") {
      return document.getElementById(obj);
    } else {
      return obj.style;
    }
  }
  return null;
}

function updateRemainingChars()
{
  var el1 = document.getElementById("questionTextArea");
  var el2 = document.getElementById("answerTextArea1");
  var el3 = document.getElementById("answerTextArea2");
  var el4 = document.getElementById("answerTextArea3");
  var el5 = document.getElementById("answerTextArea4");
  if (el1.value.toString().match("Inserisci qui") == null)
  {
    countChar('questionTextArea','questionSpan','{CHAR} carat.',120);
  }
  if (el2.value.toString().match("Inserisci qui") == null)
  {
    countChar('answerTextArea1','0','{CHAR} carat.',35);
  }
  if (el3.value.toString().match("Inserisci qui") == null)
  {
    countChar('answerTextArea2','1','{CHAR} carat.',35);
  }
  if (el4.value.toString().match("Inserisci qui") == null)
  {
    countChar('answerTextArea3','2','{CHAR} carat.',35);
  }
  if (el5.value.toString().match("Inserisci qui") == null)
  {
    countChar('answerTextArea4','3','{CHAR} carat.',35);
  }
}

function countChar(input,counter,text,characters) 
{
  var inputObj=getObject(input);
  var counterObj=getObject(counter);
  var longitud=characters - inputObj.value.length;
  if(longitud <= 0) {
    longitud=0;
    text='<span class="disable"> '+text+' </span>';
    inputObj.value=inputObj.value.substr(0,characters);
  }
  counterObj.innerHTML = text.replace("{CHAR}",longitud);
}

function remainingCharacters(textArea, idSpanCounter, maxChars)
{
  limitChars(textArea, maxChars);
  var remainingChars = maxChars - (textArea.value.length + 1);
  span = document.getElementById(idSpanCounter);
  span.innerHTML = remainingChars + ' carat.';
}

function limitChars(textArea, maxChars) 
{
  var text = textArea.value;
  if(text.length + 1 > maxChars)
  {
    text = text.substring(0,(maxChars - 1));
    textArea.value = text;
  }
}

function isCorrect(answerNumber)
{
  if(answerTable[answerNumber - 1] == true)
  {
    return true;
  }
  else
  {
    return false;
  }
}


function getCorrectAnswerDiv()
{
  var correctAnswerDiv = 1;
  for(var i=0; i < answerTable.length; i++)
  {
    if(answerTable[i] == true)
    {
      correctAnswerDiv = i+1;
    }
  }
  return correctAnswerDiv;
}


function noAnswer(block, logged, statsBlock, idQuestion)
{
  var idNotAnsweredQuestion = idQuestion;
  var time = seconds;
  if (!time)
  {
    time = 0;
  }
  var options = {
    method:'post',
    asynchronous:true,
    parameters: 'idAnswer'+ '=' + 0 + "&answerTime=" + time + "&" + "idNotAnsweredQuestion=" + idNotAnsweredQuestion,
    onComplete: function updateStats()
    {
      var options = {
        asynchronous:false
      };
      var updater2 = new Ajax.Updater('box1',  base+"getUserStats.do", options);
      updater2 = null;
    }
  };
  var updater = new Ajax.Updater(block,  base+"answerResult.do", options);
  updater = null;
  //setTimeout("getUpDateStatsBox('" +statsBlock + "');", 1000);
}

function getAnswerResults(idAnswer, divId, answerNumber, block, idSpinner, logged, statsBlock)
{
  if (idAnswer)
  {
    clearInterval(timer);
    if (allowAnswering == true)
    {
      if(isCorrect(answerNumber))
      {
        $(divId).className="answer answerC";
      }
      else
      {
        $(divId).className="answer answerW";
        $(getCorrectAnswerDiv()+"_Answer").className="answer answerC";
      }

      setTimeout("getUpDateAnswerBox('"+ idAnswer + "','"+ block + "','"+ idSpinner + "','" + logged +"'" +", '" + (20-seconds) +"'" + ");", 700);
      //setTimeout("getUpDateStatsBox('" + statsBlock + "');", 1300);
    }
    allowAnswering = false;
  }
  else
  {
    alert("Error: undefined idAnswer.");
  }
}


function goTo(url)
{
  document.location.href = url;
}
function hideSpinner(idSpinner) 
{
  var spinnersElement = document.getElementById(idSpinner);
        
  spinnersElement.style.display = 'none';
}

function getUpDateStatsBox(block)
{
  var options = {
    asynchronous:false
  };
  var updater = new Ajax.Updater(block,  base+"getUserStats.do", options);
  updater = null;
}


function getUpDateAnswerBox(idAnswer, block, idSpinner, logged, answerTime)
{
  var spinnersElement = document.getElementById(idSpinner);
  spinnersElement.style.display = '';
  hideSpinner(idSpinner);
  var el = document.getElementById('idNotAnsweredQuestion');
  var idNotAnsweredQuestion = -1;
  if (el != null)
  {
    idNotAnsweredQuestion = el.value;
  }
  var options =
  {
    method:'get',
    asynchronous:true,
    parameters: 'idAnswer'+ '=' + idAnswer + '&answerTime=' + answerTime + '&idNotAnsweredQuestion='+idNotAnsweredQuestion,
    onComplete: function updateStats()
    {
      var options = {
        asynchronous:false
      };
      var updater2 = new Ajax.Updater('box1',  base+"getUserStats.do", options);
      updater2 = null;
    }
  };
  var updater = new Ajax.Updater(block,  base+"answerResult.do", options);
  updater = null;
}

function restartCountDown(logged)
{
  var TARG_ID = "countDown";
  var DEF_MSG = "Loading...";
  var url;
  if (logged == true)
  {
    url =  base+"preHome.do";
  }
  else
  {
    url =  base+"home.do";
  }
  var span = document.getElementById('pauseButton');
  span.innerHTML = '<big>:0<span id=' + '"countDown">' + secondsToNextQuestion + '</span></big> <a class=' + '"btnPause" ' + 'href=' + '"javascript:pauseCountDown(' + logged + ');">Pausa</a>';

  if( ! url )
  {
    throw new Error('You didn\'t include the "url" parameter');
  }
  var e = document.getElementById(TARG_ID);
  timer = setInterval(function()
  {
    if( secondsToNextQuestion )
    {
      secondsToNextQuestion = --secondsToNextQuestion;
      e.innerHTML = secondsToNextQuestion;
    }
    else
    {
      clearInterval(timer);
      location = url;
    }

  }, 1000);
}

