HashSearch = null;
var viewedMessages = [];
var myStatusCheck;

$(document).ready( function() {

    if (("standalone" in window.navigator) && window.navigator.standalone)
    {
      // For iOS Apps
      $( 'a' ).on( 'click', function ( e ) {
        e.preventDefault();
        var new_location = $( this ).attr( 'href' );
        if (new_location != undefined && new_location.substr( 0, 1 ) != '#' && $( this ).attr( 'data-method' ) == undefined)
        {
          window.location = new_location;
        }
      } );
    }
    $('.secretToggle').on('click', function(e){
        e.preventDefault();
        var secret = $(this).parent().find('.hidden');
        if(secret.is(':visible')){
            $(this).text( $(this).data("options").show );
        } else {
            $(this).text( $(this).data("options").hide );
        }
        $(this).toggleClass('alert').toggleClass('success');
        secret.fadeToggle('fast');
    });
    $('#tempolex_client_teacher_clientuser_lastname').on('blur keyup', Foundation.utils.throttle(function(e){
        suggestUsername();
    }, 2500));
    $('#tempolex_client_teacher_clientuser_firstname').on('blur keyup', Foundation.utils.throttle(function(e){
        suggestUsername();
    }, 2500));

    $( document ).on( 'close.fndtn.alert', function ( event ) {
      setMessageViewed(event.target.id);
    } );

   var displayUnseenMessages = function() {
     getMessagesViewed();

     $('.globalmessage' ).each(function(e){
       var parts = $( this ).attr( 'id' ).split('-');
       if( parts[1].length > 0 ) {
         if($.inArray( parts[1], viewedMessages ) === -1 ) {
           $( this ).show().addClass('showmsg');
         }
       }
     });

     // if (viewedMessages.length > 0)
       //{
       //$.each( viewedMessages, function ( ix, msg ) {
       //  var mymsg = $( '#msg-' + msg );
       //  if (mymsg.length)
       //  {
       //    mymsg.hide();
       //  }
       //} );
     //} else {
     //
     // }
   }
    displayUnseenMessages();

    // myStatusCheck = setInterval(initSsoActions, 5000);
   
   initSsoActions();

});


    function suggestUsername() {
        var typedFname = $('#tempolex_client_teacher_clientuser_firstname').val();
        var typedLname = $('#tempolex_client_teacher_clientuser_lastname').val();

        $.ajax({
          type: "POST",
          dataType: "json",
          url: Routing.generate('tlx_client_api_namesuggest', {format: 'json'}),
          data: { firstname: typedFname, lastname: typedLname }
        })
          .done(function( data ) {
            $('#tempolex_client_teacher_clientuser_username').val(data.suggestion);
          });


    }

    HashSearch = new function () {
        var params;

        this.set = function ( key, value ) {
          params[key] = value;
          this.push();
        };

        this.remove = function ( key, value ) {
          delete params[key];
          this.push();
        };

        this.getHashLessUri = function () {
            var uri = window.location.toString();
            if (uri.indexOf("#") > 0) {
                return uri.substring(0, uri.indexOf("#"));
            }
            return uri;
        };

        this.get = function ( key, value ) {
          return params[key];
        };

        this.keyExists = function ( key ) {
          return params.hasOwnProperty( key );
        };

        this.push = function () {
          var hashBuilder = [], key, value;

          for (key in params) if (params.hasOwnProperty( key ))
          {
            key = encodeURIComponent( key ), value = encodeURIComponent( params[key] ); // escape(undefined) == "undefined"
            hashBuilder.push( key + ( (value !== "undefined") ? '=' + value : "" ) );
          }

          window.location.hash = hashBuilder.join( "&" );
        };

        (this.load = function () {
          params = {}
          var hashStr = window.location.hash, hashArray, keyVal
          hashStr = hashStr.substring( 1, hashStr.length );
          hashArray = hashStr.split( '&' );

          for (var i = 0; i < hashArray.length; i ++)
          {
            keyVal = hashArray[i].split( '=' );
            params[decodeURIComponent( keyVal[0] )] = (typeof keyVal[1] != "undefined") ? decodeURIComponent( keyVal[1] ) : keyVal[1];
          }
        })();
    };

  function setMessageViewed(msgid) {

    window.document.cookie = 'viewedmsg=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
    var now = new Date();
    var time = now.getTime();
    var expireTime = time + 200000;
    now.setTime( expireTime );
    msgid = msgid.replace('msg-','');
    viewedMessages.push(msgid);
    window.document.cookie = 'viewedmsg=' + viewedMessages.join('#') + '; Path=/;';
  }

function getMessagesViewed() {
    var msglist = [];
    var nameEQ = "viewedmsg=";
    var ca = document.cookie.split( ';' );
    for (var i = 0; i < ca.length; i ++)
    {
      var c = ca[i];
      while (c.charAt( 0 ) == ' ') c = c.substring( 1, c.length );
      if (c.indexOf( nameEQ ) == 0) {
        msglist = c.substring( nameEQ.length, c.length );
      }
    }

    if(msglist.length > 0) {
        var msgs = msglist.split( '#' );
        if(msgs.length > 0)
        {
            viewedMessages = msgs;
            return msgs;
        }
    }

    return [];
}

function initSsoActions() {
  if (typeof sso_context === "undefined")
  {
      return null;
  }

  switch(sso_context) {
      case 'enroll-wait':
          break
      default:
          break;
  }
}

function ssoEnrollWaitActions() {

    var targets = $('div.sso-action');
    var ii=0;
}

function updateUi(target, icon_class, label_action, icon_animate) {

}

function populateStudyDocList(scope, id) {
    var uri = Routing.generate('studydoc-get-listing', {scope: scope, app_id: tlx_client_app_id, target_id: id });
    return $.ajax(
          {
              url: uri,
              data: null,
              dataType: 'json',
              success: function (data) {
                  var res = renderStudyDocList(scope, data);
                  return true;
              }
          });
}


function renderStudyDocList(scope, data) {
    var target = $('.dl-'+scope);
    var heading = $('.h-'+scope);
    var list = data.docList;
    $(heading).text(data.collectionLabel);
    target.empty();
    console.log('Rendering DocList for scope: ' + scope);
    console.log('Scope data: ');
    console.log(list);
    for(var ll=0;ll<list.length;ll++){
        var elem = $('<li><a href="#" class="dlc-item">' + getDocTargetLabelsHtml(list[ll]['targets']) + list[ll].title + '</a></li>');
        target.append(elem);
        elem.on('click', {docId: list[ll].id }, function(ev) {
            var docId = ev.data.docId;
            console.log(docId);
            if(typeof docId !== undefined )
            {
                viewStudyDoc(docId);
            }
            ev.stopPropagation();
        })
    }
    return true;
}

function getDocTargetLabelsHtml(targets) {
    var targetCount=0;
    var htmlString='';
    var spacer = '';
    if(targets['teacher'] == true){
      targetCount++;
      htmlString += '<span class="round label" aria-label="For lærere">' + 'Lærere' + '</span>';
      spacer = ' ';
    }
    if(targets['student'] == true){
        targetCount++;
        htmlString += spacer + '<span class="round label" aria-label="For elever">' + 'Elever' + '</span>';
        spacer = ' ';
    }
    if(targets['parent'] == true){
        targetCount++;
        htmlString += spacer + '<span class="round label" aria-label="For foreldre">' + 'Foreldre' + '</span>';
    }

    if(targetCount === 0 || targetCount === 3){
        htmlString = '<span class="secondary round label" aria-label="For alle">' + 'Alle' + '</span>';
    }

    return htmlString + '&nbsp;';
}

function viewStudyDoc(docid) {
    $('#studyDocModal').empty();
    $.ajax({
        url: Routing.generate('studydoc-get-doc', {doc: docid})
    })
        .success(function (data){
            $('#studyDocModal').append(data.content);
            $('body').addClass('sd-modal-open');
            $('#studyDocModal').foundation('reveal', 'open', {
                bg_class: 'reveal-sdoc-modal-bg',
                bg : $('.reveal-sdoc-modal-bg'),
            });
            window.history.pushState({view:'studydoc',doc: docid}, data.metadata.title, '#studydoc='+docid);
        })

    return true;
}

$(document).on('close.fndtn.reveal', '[data-reveal]', function () {
    if( $(this).attr('id') === 'studyDocModal')
    {
        $('body').removeClass('sd-modal-open');
        $('#studyDocModal').empty();
        window.history.replaceState([], window.document.title, HashSearch.getHashLessUri());
    }
});

window.addEventListener("popstate", function(e) {
    window.addEventListener('popstate', e => console.log(e) );
    var studyModal = $('#studyDocModal');
    var location = document.location;
    var state = e.state;
    // return to last st ate
    if (state !== null  && 'view' in state && state.view === "studydoc") {
        viewStudyDoc(state.doc);
    } else if(studyModal.length !== 0 && $(studyModal).hasClass('open')) {
        $(studyModal).foundation('reveal', 'close');
    }

});

$(document).ready(function() {
    var studyDoc = HashSearch.get('studydoc');
    if(studyDoc !== undefined){
        viewStudyDoc(studyDoc);
    }
})

$(document).on('close.fndtn.alert', function(event) {
    var target = $(event.target);
    if($(target).hasClass("globalmessage"))
    {
        $(target).remove();
    }
    console.info('An alert box has been closed!');
});
