/*
  Javascript engine for Teknologi og Design.

  Depends on jquery 1.2.6 to be loaded before this script is called
*/


jQuery(function($) {

  // creating activator buttons ("smultrings") for all mmj components shown above the "#contentfilter" component  
  /*$('#contentfilter').nextAll('.mmjkomponent').each(function(index) {
    $('#activators').append("<a class=\"activator item_" + index + "\" id=\"activator_" + $(this).attr('id') + "\" href=\"#\" onclick=\"activateComponent('#" + $(this).attr('id') + "');return false;\">"+ $(this).attr('id') + "</a>");
  });*/

  // muting the animation if a content element is to be opened on startup
  

  // fading in the content filter if one of the content elements is set to open by default
  if ($('#contentfilter').nextAll('.js-openonstartup').length > 0) {
    $('#contentfilter').css('display','block').fadeTo(100,0.75);
  }


  /* common code for closing factbox-elements */
  $('.nrk_input_articleelement_factbox').append("<a href=\"#\" class=\"factbox_close\"><img src=\"http://fil.nrk.no/contentfile/web/files/resources/projects/teknologiogdesign/design/faktaboks/faktaboks_btn_close.png\" alt=\"Lukk\" /></a>");
  $('.nrk_input_articleelement_factbox .factbox_close').click(function() { closeComponent($(this).parent()); return false});

  /* factboxlist-components */
  $('.nrk_input_articleelement_factboxlist .factboxlist_close').click(function() { closeComponent($(this).parent().parent())});
  $('.nrk_input_articleelement_factboxlist .factboxlist_next').click(function () {
    if ($('div.factbox.selected',$(this).parent()).next('div.factbox').length > 0) {
      $('div.factbox',$(this).parent()).each(function(i) {
        $(this).hide();
      });
      $('div.factbox.selected',$(this).parent()).removeClass("selected").next('div.factbox').addClass("selected").fadeIn();
    }
    return false;
  });
  $('.nrk_input_articleelement_factboxlist .factboxlist_previous').click(function () {
    if ($('div.factbox.selected', $(this).parent()).prev('div.factbox').length > 0) {
      $('div.factbox', $(this).parent()).each(function(i) {
        $(this).hide();
      });
      $('div.factbox.selected', $(this).parent()).removeClass("selected").prev('div.factbox').addClass("selected").fadeIn();
    }
    return false;
  });


  /* videoliste components */
  $('.videoliste_container .videoliste_btn_close').click(function() {
    try {
      getFlashMovie("tod_videoliste_player").sendEvent("STOP");
    } catch(exception) {

    }
    closeComponent($(this).parent().parent());
    return false;
  });

  $('.videoliste_container .klipplenke').each(function() {
    $(this).mouseover(function() {
      $(this).parent().addClass('hover');
      var videoliste = $(this).parents('.videoliste_container')[0];
      $('.klippbeskrivelse.visible', videoliste).removeClass('visible').hide();
      $('.klippbeskrivelse.selected', videoliste).hide();
      var elid = $(this).attr("id");
      var klippid = elid.substring("klipplenke_".length);
      $('#klippbeskrivelse_' + klippid, videoliste).addClass('visible').show();
    });
    $(this).mouseout(function() {
      $(this).parent().removeClass('hover');
      var videoliste = $(this).parents('.videoliste_container')[0];
      $('.klippbeskrivelse.visible', videoliste).removeClass('visible').hide();
      $('.klippbeskrivelse.selected', videoliste).show();
    });
    $(this).click(function() {
      var videoliste = $(this).parents('.videoliste_container')[0];
      $('.videoliste_klipplenker li.selected', videoliste).removeClass('selected');
      $(this).parent().addClass('selected');
      $('.klippbeskrivelse.visible', videoliste).removeClass('visible').hide();
      $('.klippbeskrivelse.selected', videoliste).removeClass('selected').hide();
      var elid = $(this).attr("id");
      var klippid = elid.substring("klipplenke_".length);
      $('#klippbeskrivelse_' + klippid, videoliste).addClass('selected').show();
      
    });
  });

  $('.videoklipp_btn_play').click(function () {
    var videoklipp = $(this).parents('.videoklipp')[0];
    $('.videoklipp_spill_img', videoklipp).attr("src","http://fil.nrk.no/contentfile/web/files/resources/projects/teknologiogdesign/design/videoklipp/videoklipp_spill_aktiv.gif");
    $('.videoklipp_stopp_img', videoklipp).attr("src","http://fil.nrk.no/contentfile/web/files/resources/projects/teknologiogdesign/design/videoklipp/videoklipp_stopp_inaktiv.gif");
    $('.videoklipp_pause_img', videoklipp).attr("src","http://fil.nrk.no/contentfile/web/files/resources/projects/teknologiogdesign/design/videoklipp/videoklipp_pause_inaktiv.gif");
    getFlashMovie("tod_videoklipp_player").sendEvent("PLAY", true);
    return false;
  });

  $('.videoklipp_btn_pause').click(function () {
    var videoklipp = $(this).parents('.videoklipp')[0];
    $('.videoklipp_spill_img', videoklipp).attr("src","http://fil.nrk.no/contentfile/web/files/resources/projects/teknologiogdesign/design/videoklipp/videoklipp_spill_inaktiv.gif");
    $('.videoklipp_stopp_img', videoklipp).attr("src","http://fil.nrk.no/contentfile/web/files/resources/projects/teknologiogdesign/design/videoklipp/videoklipp_stopp_inaktiv.gif");
    $('.videoklipp_pause_img', videoklipp).attr("src","http://fil.nrk.no/contentfile/web/files/resources/projects/teknologiogdesign/design/videoklipp/videoklipp_pause_aktiv.gif");
    getFlashMovie("tod_videoklipp_player").sendEvent("STOP");
    return false;
  });

  $('.videoklipp_btn_stop').click(function () {
    var videoklipp = $(this).parents('.videoklipp')[0];
    $('.videoklipp_spill_img', videoklipp).attr("src","http://fil.nrk.no/contentfile/web/files/resources/projects/teknologiogdesign/design/videoklipp/videoklipp_spill_inaktiv.gif");
    $('.videoklipp_stopp_img', videoklipp).attr("src","http://fil.nrk.no/contentfile/web/files/resources/projects/teknologiogdesign/design/videoklipp/videoklipp_stopp_aktiv.gif");
    $('.videoklipp_pause_img', videoklipp).attr("src","http://fil.nrk.no/contentfile/web/files/resources/projects/teknologiogdesign/design/videoklipp/videoklipp_pause_inaktiv.gif");
    getFlashMovie("tod_videoklipp_player").sendEvent("STOP");
    return false;
  });

  /* quiz components */
  /* todo: uncomment following append-statements after production */
  $('.nrk_input_articleelement_quiz .quiz_container').append("<a href=\"#\" class=\"quiz_btn_start\"><img src=\"http://fil.nrk.no/contentfile/web/files/resources/projects/teknologiogdesign/design/quiz_btn_startspill.gif\" alt=\"Start spill\"/></a>");
  $('.nrk_input_articleelement_quiz .quiz_container').append("<a href=\"#\" class=\"quiz_btn_neste\" style=\"display:none;\"><img src=\"http://fil.nrk.no/contentfile/web/files/resources/projects/teknologiogdesign/design/quiz_btn_neste.gif\" alt=\"Neste\"/></a>");
  $('.nrk_input_articleelement_quiz .quiz_container').append("<a href=\"#\" class=\"quiz_btn_poengsum\" style=\"display:none;\"><img src=\"http://fil.nrk.no/contentfile/web/files/resources/projects/teknologiogdesign/design/quiz_btn_poengsum.gif\" alt=\"Poengsum\"/></a>");
  $('.nrk_input_articleelement_quiz .quiz_container').append("<a href=\"#\" class=\"quiz_btn_spilligjen\" style=\"display:none;\"><img src=\"http://fil.nrk.no/contentfile/web/files/resources/projects/teknologiogdesign/design/quiz_btn_spilligjen.gif\" alt=\"Spill igjen\"/></a>");
  $('.nrk_input_articleelement_quiz .quiz_container').append("<a href=\"#\" class=\"quiz_btn_svar\" style=\"display:none;\"><img src=\"http://fil.nrk.no/contentfile/web/files/resources/projects/teknologiogdesign/design/quiz_btn_svar.gif\" alt=\"Spill igjen\"/></a>");
  $('.nrk_input_articleelement_quiz .quiz_container').append("<div class=\"quiz_response_container\"></div>");
  $('.nrk_input_articleelement_quiz .question a.quiz_btn_svar').remove();
  /* todo: end uncomment after production */

  $('.nrk_input_articleelement_quiz').each(function() {
    $('.quiz_title', $(this)).insertBefore($('.quiz_startpage', $(this)));
  });

  $('.nrk_input_articleelement_quiz .question').each(function(index) {
    $(this).prepend("<div class=\"question_number\">Oppgave " + (index+1) + "</div>");
  });


  $('.nrk_input_articleelement_quiz .answer_list li').each(function() {
    // removing any html from answertext (this should have been a text input type field
    $('.quiz_answertext', $(this)).text($('.quiz_answertext', $(this)).text());
    // shuffling the radio button / checkbox and the answer text around a bit
    $('input', $(this)).insertBefore($('.quiz_answertext', $(this)));
    // setting the name attribute to the input elements
    $('input[type=radio]', $(this)).attr("name","answer");
    $('input[type=checkbox]', $(this)).attr("name","answer");

  });



  $('.nrk_input_articleelement_quiz .quiz_container .quiz_btn_close').click(function() {
    var quiz = $(this).parent();
    $('.quiz_endpage', quiz).hide();
    $('.quiz_questions', quiz).hide();
    $('.question', quiz).hide();
    $('.quiz_startpage', quiz).fadeIn();
    $('>.quiz_btn_neste', quiz).hide();
    $('>.quiz_btn_poengsum', quiz).hide();
    $('>.quiz_btn_spilligjen', quiz).hide();
    $('>.quiz_btn_svar', quiz).hide();

    $('>.quiz_btn_start', quiz).show();

    closeComponent($(this).parent().parent());
    return false;
  });

  $('.nrk_input_articleelement_quiz .quiz_container .quiz_btn_start').click(function() {
    var quiz = $(this).parent();
    $('.quiz_startpage', quiz).hide();

    $('.quiz_questions', quiz).attr("current_question","0").show();

    // nuller ut alle spørsmålsattributter
    $('.question', quiz).each(function() {
      $(this).attr("correct","false");
      $('input[type=radio]', $(this)).each(function() {
        $(this).attr("checked","");
        this.checked = false;
      });
      $('input[type=checkbox]', $(this)).each(function() {
        $(this).attr("checked","");
        this.checked = false;
      });
    });

    $('div.question:first', quiz).fadeIn();
    // hiding start button
    $(this).hide();
    // showing "answer" button
    $('.quiz_btn_svar', quiz).show();

    return false;

  });

  $('.nrk_input_articleelement_quiz .quiz_container .quiz_btn_svar').click(function() {
    var quiz = $(this).parent();
    var current_question = parseInt($('.quiz_questions', quiz).attr("current_question"));

    var question = $($('.question', quiz)[current_question]);

    var question_form = $('.question_form', question);
    var question_answered_correctly = true;

    var answers = $('.answer_list li', question);
    for (var i = 0; i < answers.length; i++) {
      var answerElement = answers[i];
      var answertypefield = "answer_" + i +"_data";
      var answertype = $('input[name='+ answertypefield +']', question_form).attr("value");
      var answer = $('input[name=answer]', answerElement);
      if (answer.attr('checked') && answertype != "correct") {
        question_answered_correctly = false;
      } else if (!answer.attr('checked') && answertype == "correct") {
        question_answered_correctly = false;
      }
    }

    if (question_answered_correctly) {
      question.attr("correct", "true");
      $('.quiz_response_container', quiz).text($('.response_correct', question).text());
    } else {
      question.attr("correct", "false");
      $('.quiz_response_container', quiz).text($('.response_wrong', question).text());
    }

    if (question.next('.question').length > 0) {
      $('.quiz_btn_svar', quiz).hide();
      $('.quiz_btn_neste', quiz).show();
    } else {
      $('.quiz_btn_svar', quiz).hide();
      $('.quiz_btn_poengsum', quiz).show();
    }
    return false;

  });

  $('.nrk_input_articleelement_quiz .quiz_container .quiz_btn_neste').click(function() {
    var quiz = $(this).parent();
    var current_question = parseInt($('.quiz_questions', quiz).attr("current_question"));

    var previous_question = $($('.question', quiz)[current_question]);
    previous_question.hide();

    $('.quiz_response_container', quiz).text("");

    current_question += 1;
    $('.quiz_questions', quiz).attr("current_question","" + current_question);
    $($('.question', quiz)[current_question]).fadeIn();
    $(this).hide();
    $('.quiz_btn_svar', quiz).show();

    return false;

  });

  $('.nrk_input_articleelement_quiz .quiz_container .quiz_btn_poengsum').click(function() {
    var quiz = $(this).parent();
    var current_question = parseInt($('.quiz_questions', quiz).attr("current_question"));

    var previous_question = $($('.question', quiz)[current_question]);
    previous_question.hide();

    $('.quiz_response_container', quiz).text("");

    var numberOfQuestions = 0;
    var correctQuestions = 0;

    $('.question', quiz).each(function() {
      numberOfQuestions++;
      var correct = $(this).attr("correct");
      if (correct == "true") {
        correctQuestions += 1;
      }
    });

    $('.quiz_final_score').text("Du klarte " + correctQuestions + " av " + numberOfQuestions + " spørsmål!");
    $('.quiz_endtext_passed', quiz).show();
    $(this).hide();
    $('.quiz_btn_spilligjen', quiz).show();
    $('.quiz_endpage', quiz).fadeIn();

    return false;
  });

  $('.nrk_input_articleelement_quiz .quiz_container .quiz_btn_spilligjen').click(function() {
    var quiz = $(this).parent();
    $('.quiz_endpage', quiz).hide();
    $('.quiz_startpage', quiz).fadeIn();
    $(this).hide();
    $('>.quiz_btn_start', quiz).show();

    return false;
  });

  /* common functionality for all activator buttons ("smultrings")
  $('a.activator').each(function(i) {
    $(this).mouseover(function() {
      $('img', this)[0].setAttribute("src","http://fil.nrk.no/contentfile/web/files/resources/projects/teknologiogdesign/design/smultring_selected.png");
    });
    $(this).mouseout(function() {
      $('img', this)[0].setAttribute("src","http://fil.nrk.no/contentfile/web/files/resources/projects/teknologiogdesign/design/smultring.png");
    });

  });
  */


  $('a.level3nav').mouseover(function() {
    $(this).animate({ width: "247px"}, { queue: false, duration: 100}).animate({paddingLeft: "7px"}, 100).addClass('open');
    $(this).siblings('a.level3nav_selected, a.open').removeClass('open').animate({ width: "0"}, { queue: false, duration: 100}).animate({paddingLeft: "19px"}, 100);
  });

  $('a.level3nav_selected').mouseover(function() {
    $(this).animate({ width: "247px"}, { queue: false, duration: 100}).animate({paddingLeft: "7px"}, 100);
    $(this).siblings('a.open').removeClass('open').animate({ width: "0"}, { queue: false, duration: 100}).animate({paddingLeft: "19px"}, 100);
  });

  $('#logo').mouseover(function() {
    resetToppmeny();
  });
  $('#level4nav').mouseover(function() {
    resetToppmeny();
  });

  $('#breadcrumbs').mouseover(function() {
    resetToppmeny();
  });

  // trying to determine whether to open any content divs on page load (eg. video player)
  var urlattrs = document.location.href.substring(document.location.href.lastIndexOf("/") + 1);
  var defaultContent = "innhold=";
  if (urlattrs.indexOf(defaultContent) > -1) {
    var anchorTarget = "";
    if (urlattrs.indexOf("&") < 0) {
      anchorTarget = urlattrs.substring(urlattrs.indexOf(defaultContent) + defaultContent.length);
    } else {
      anchorTarget = urlattrs.substring(urlattrs.indexOf(defaultContent) + defaultContent.length, urlattrs.indexOf("&"));
    }    
    activateComponent("#" + anchorTarget);
  }

});

function resetToppmeny() {
  $('#level3nav .open').removeClass('open').animate({ width: "0"}, { queue: false, duration: 100}).animate({paddingLeft: "19px"}, 100);
  $('.level3nav_selected').animate({ width: "247px"}, { queue: false, duration: 100}).animate({paddingLeft: "7px"}, 100);
}

function closeComponent(elementToFade) {
  $('#contentfilter').fadeTo(0,0).css('display','none');
  $(elementToFade).fadeOut();
  $("#tod_animasjon").show();
  return false;
}

function activateComponent(elementToActivate) {
  try {
    getFlashMovie("tod_animasjon").muteAudio();
  } catch(err) {
    $("#tod_animasjon").hide();
  }
  $('#contentfilter').css('display','block').fadeTo(100,0.75);
  $('#contentfilter').nextAll('.mmjkomponent').hide();
  $(elementToActivate).fadeIn();
  return false;
}

/* Flash player callback */
/*
var player = null;
function playerReady(thePlayer) {
  $('#debug').append("<p>playerReady, with id: "  + thePlayer.id + "</p>");
  player = document.getElementById(thePlayer.id);
  $('#debug').append("<p>player: " + player + "</p>");
}
*/

/*function playerReady(thePlayer) {
  getFlashMovie(thePlayer.id).addModelListener("LOADED",jwLoadListener);
  getFlashMovie(thePlayer.id).addModelListener("ERROR",jwErrorListener);
  getFlashMovie(thePlayer.id).addViewListener("ERROR",jwErrorListener);
  getFlashMovie(thePlayer.id).addControllerListener("ERROR",jwErrorListener);
} */

function jwErrorListener(obj) {
  //alert("error: " + obj);
}

function jwLoadListener(obj) {
  //$('#debug').append("<p>load: " + obj.loaded + " total: " + obj.total + " offset: " + obj.offset);
}

function getFlashMovie(movieName) {
 var isIE = navigator.appName.indexOf("Microsoft") != -1;
  var playa = (isIE) ? window[movieName] : document[movieName];  
  return playa;
}


function playClip(clipId) {
  var klipp_url = "http://pd.nrk.no/nett-tv-stream/stream.ashx?id=" + clipId;
  $('#debug').append("<p>spiller klipp " + klipp_url + "</p>");

  var player = getFlashMovie("tod_videoliste_player");
  player.sendEvent("STOP");
  player.sendEvent("LOAD", klipp_url);
  player.sendEvent("PLAY", true);
}

function iAmReady() {
  // if we are going to play a clip or a content element is set to open on startup, mute audio
  if (document.location.href.indexOf("innhold=") > -1 || ($('#contentfilter').nextAll('.js-openonstartup').length > 0)) {
    window.setTimeout(function() { getFlashMovie('tod_animasjon').muteAudio(); }, 500);
  }
}


