var bcExp, modVP, modExp, modCon, modSearch;
var mysearch;
var videolist;
var pagesize = 5; // default pagesize
var searchtext = null;
var totalcount = true;
var playlist = new Array();
var divID;
function onTemplateLoaded(experienceID) {
    bcExp     = brightcove.getExperience(experienceID);         
    modVP     = bcExp.getModule(APIModules.VIDEO_PLAYER);
    modExp    = bcExp.getModule(APIModules.EXPERIENCE);
    modCon    = bcExp.getModule(APIModules.CONTENT);
    modSearch = bcExp.getModule(APIModules.SEARCH);
    modSearch.addEventListener(BCSearchEvent.RESULT, getVideoList);
    if (searchtext)
      searchVideosByText(searchtext);
}
function searchVideosByText(dsearch) {
    page = 0;
    videolist = new Array();

    if (dsearch) {
      searchtext = dsearch;
    } else {
      if (searchtext != document.getElementById("search").value) {
        searchtext = document.getElementById("search").value;
      }
      if (searchtext == null || searchtext == "") {
        document.getElementById("Box_m-009").innerHTML = "suchbegriff eingeben";
      }
    }
    mysearch = modSearch.findVideosByText(searchtext,pagesize,page,totalcount);
}
function searchVideosByTags(dsearch) {
    page = 0;
    videolist = new Array();
    if (dsearch) {
      searchtext = dsearch;
    } else {
      searchtext = document.getElementById("search").value;
      if (searchtext == null || searchtext == "") {
    document.getElementById("Box_m-009").innerHTML = "suchbegriff eingeben";
      }
    } 
    
    andtags = null;
    ortags = new Array(searchtext);
    
    mysearch = modSearch.findVideosByTags(andtags,ortags,pagesize,page,"MODIFIED_DATE","DESC",totalcount);
}
function searchRelatedVideos(id) {
    page = 0;
    mysearch = null;
    //id = 327572396;
    mysearch = modSearch.findRelatedVideos(id,pagesize,page,totalcount)
}
function getVideoList(e) { 
    videolist = mysearch.getItems();
    displayVideoList();
    //page = mysearch.getPageNumber();
    //pages = mysearch.getTotalPages()-1;
    if ( mysearch.getPageNumber() == 0 && !(modVP.isPlaying())) {
        loadVideo(videolist[0]['id']);
    }
}
function nextPage() {
    videolist = mysearch.getNextPageAsynch();
    displayVideoList();
}
function previousPage() {
    videolist = mysearch.getPreviousPageAsynch();
    displayVideoList();
}
function gotoPage(x) {
    if (mysearch.getPageNumber() != x) {
        videolist = mysearch.getPageAsynch(x);
        displayVideoList();
    }
}
function displayPaging() {
    var content = '<div id="' + divID + '">';
    var quantity = 7
    var pager_middle = 4;
    var pager_current = mysearch.getPageNumber()+1;
    var pager_first = pager_current - pager_middle+1;
    var pager_last = pager_current+quantity-pager_middle;
    var pager_max = mysearch.getTotalPages();
    i = pager_first;
    if (pager_last > pager_max) {
        i = i + (pager_max - pager_last);
        pager_last = pager_max;
    }
    if (i <= 0) {
        pager_last = pager_last + (1 - i);
        i = 1;
    }
    if (mysearch.getTotalPages() > 0) {
        
        if(pager_current > 1) {
            content += '<a href="Javascript: gotoPage(0);"> << </a>';
            content += '<a href="Javascript: previousPage();"> < </a>';
        }
        
        if (i != pager_max) {
            
            if (i > 1) {
                content += '... ';
            }
        
            for (i ; i <= pager_last && i <= pager_max; i++) {
                if (i < pager_current) {
                    content += '<a href="Javascript: gotoPage(' + (i-1) + ');"> ' + i + ' </a>';
                }
                if (i == pager_current) {
                    content += '<a id="selected" href="Javascript: gotoPage(' + (i-1) + ');"> ' + i + ' </a>';
                }
                if (i > pager_current) {
                    content += '<a href="Javascript: gotoPage(' + (i-1) + ');"> ' + i + ' </a>';
                }
            }
            if (i <= pager_max) {
                content += '... ';
            }
            if(pager_current < mysearch.getTotalPages()) {
                content += '<a href="Javascript: nextPage();"> > </a>';
                content += '<a href="Javascript: gotoPage('+(mysearch.getTotalPages()-1)+');"> >> </a>';
            }
        }
    }
    content += '</div>';
    return content;
}
function loadVideo(id) {
  if(modExp == null || !(modExp.getReady())) {
        alert("Player not initialized yet. Wait till after templateReady event.");
    } else {
        modVP.cueVideo(id);
    }
}
function playVideo(id) {
  if(modExp == null || !(modExp.getReady())) {
        alert("Player not initialized yet. Wait till after templateReady event.");
    } else {
        modVP.loadVideo(id);
        // cueVideo(), play(), stop(), pause(), seek(), mute(), isPlaying(), getID(), 
    }
}
function dump(arr,level) {
    var dumped_text = "";
    if(!level) level = 0;
    var level_padding = "";
    for(var j=0;j<level+1;j++) level_padding += "    ";
    
    if(typeof(arr) == 'object') { //Array/Hashes/Objects 
        for(var item in arr) {
            var value = arr[item];
            
            if(typeof(value) == 'object') { //If it is an array,
                dumped_text += level_padding + "'" + item + "' ...\n";
                dumped_text += dump(value,level+1);
            } else {
                dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
            }
        }
    } else { //Stings/Chars/Numbers etc.
        dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
    }
    return dumped_text;
}
