﻿var strCurrentVideoURL;

    function vp_UpdateSiteStripe(){
        var strStripe = "";
        strStripe = document.getElementById("txtTagHdn").value;
        ret = ws_VideoProgress.UpdateSiteStripe(strStripe, vp_OnCompleteUpdateSiteStripe, vp_OnErrorGeneric, vp_OnTimeOutGeneric);
    }
    function vp_OnCompleteUpdateSiteStripe(result){
        window.alert("Site stripe updated: " + result);
    }
    function vp_GetSiteStripe(){
        ret = ws_VideoProgress.UpdateSiteStripe(strStripe, vp_OnCompleteUpdateSiteStripe, vp_OnErrorGeneric, vp_OnTimeOutGeneric);
    }
    function vp_OnCompleteGetSiteStripe(result){
        //not using this function yet
    }


    function vp_GetUserJourneyDetails(strGUID){
        document.getElementById("divResults").innerHTML = 'loading...';
        ret = ws_VideoProgress.LoadIndividualVisit(strGUID, vp_OnCompleteGetUserJourneyDetails, vp_OnErrorGeneric, vp_OnTimeOutGeneric);
    }
    function vp_OnCompleteGetUserJourneyDetails(result){
        document.getElementById("divResults").innerHTML = result;
    }


    function vp_GetMainIndividualVisits(){
        document.getElementById("divIndividualVisitsTable").innerHTML = 'loading...';
        ret = ws_VideoProgress.LoadIndividualVisitorsTable(vp_OnCompleteGetMainIndividualVisits, vp_OnErrorGeneric, vp_OnTimeOutGeneric);
    }
    function vp_OnCompleteGetMainIndividualVisits(result){
        document.getElementById("divIndividualVisitsTable").innerHTML = result;
    }
    

    function vp_GetMainIPVisits(){
        document.getElementById("divIPUsersTable").innerHTML = 'loading...';
        ret = ws_VideoProgress.LoadIndividualIPVisitorsTable(vp_OnCompleteGetMainIPVisits, vp_OnErrorGeneric, vp_OnTimeOutGeneric);
    }
    function vp_OnCompleteGetMainIPVisits(result){
        document.getElementById("divIPUsersTable").innerHTML = result;
    }


    function vp_DrawVideoGraph(strVideoName, intVideoID, intPC1, intPC2, intPC3, intPC4){
        var strIP= '';
        var boolExcludeIP = false;
        var boolExcludeAYS = false;
        var boolExcludeMS = false;
        var boolIncludeFSOnly = false;
        var boolIncludeSTOnly = false;
        var boolIncludeEMOnly = false;
        var strStartDate='';
        var strEndDate='';
        
        /*
        strIP = document.getElementById("txtIP").value;
        boolExcludeIP = document.getElementById("cmbIncludeExcludeIP").value;
        boolExcludeAYS = document.getElementById("chkExcludeAYS").checked;
        boolExcludeMS = document.getElementById("chkExcludeMS").checked;
        boolIncludeFSOnly = document.getElementById("chkIncludeFS").checked;
        boolIncludeSTOnly = document.getElementById("chkIncludeST").checked;
        boolIncludeEMOnly = document.getElementById("chkIncludeEC").checked;
        strStartDate = document.getElementById("txtDateFrom").value;
        strEndDate = document.getElementById("txtDateTo").value;
        
        if (boolExcludeIP==1){
            boolExcludeIP = true;
        }else{
            boolExcludeIP = false;
        }
        if (boolExcludeAYS==1){
            boolExcludeAYS= true;
        }else{
            boolExcludeAYS = false;
        }
        if (boolExcludeMS==1){
            boolExcludeMS = true;
        }else{
            boolExcludeMS = false;
        }
        if (boolIncludeEMOnly==1){
            boolIncludeEMOnly = true;
        }else{
            boolIncludeEMOnly = false;
        }
        if (boolIncludeFSOnly==1){
            boolIncludeFSOnly = true;
        }else{
            boolIncludeFSOnly = false;
        }
        if (boolIncludeSTOnly==1){
            boolIncludeSTOnly = true;
        }else{
            boolIncludeSTOnly = false;
        }
        */
        
        strStartDate = document.getElementById("txtDateFrom").value;
        strEndDate = document.getElementById("txtDateTo").value;
        document.getElementById("divChart").innerHTML = 'Loading chart...';
        ret = ws_VideoProgress.LoadVideoProgressGraph(strVideoName, intVideoID, strIP, boolExcludeIP, boolExcludeAYS, boolExcludeMS, boolIncludeFSOnly, boolIncludeSTOnly, boolIncludeEMOnly, strStartDate, strEndDate, intPC1, intPC2, intPC3, intPC4, vp_OnCompleteShowProgressChart, vp_OnErrorGeneric, vp_OnTimeOutGeneric);
    }
    function vp_OnCompleteDrawVideoChart(result){
        document.getElementById("divChart").innerHTML = result;
    }

    function vp_DrawVideoTable(){
        //LoadVideoReportingChart(Int64 intVideoID, String strIP, Boolean boolExcludeIP, Boolean boolExcludeAYS, Boolean boolExcludeMS, Boolean boolIncludeFSOnly, Boolean boolIncludeSTOnly, Boolean boolIncludeEMOnly, String strStartDate, String strEndDate)
        var strStartDate;
        var strEndDate;
        var boolExcludeAYS;
        var boolExcludeMS;

        document.getElementById("divResults").innerHTML = 'Loading data...';
        boolExcludeAYS = document.getElementById("chkExcludeAYS").checked;
        boolExcludeMS = document.getElementById("chkExcludeMS").checked;

        strStartDate = document.getElementById("txtDateFrom").value;
        strEndDate = document.getElementById("txtDateTo").value;

        ret = ws_VideoProgress.LoadVideoReportingTable(0, "", false, boolExcludeAYS, boolExcludeMS, false, false, false, strStartDate, strEndDate, "COUNT DESC", vp_OnCompleteDrawVideoReport, vp_OnErrorGeneric, vp_OnTimeOutGeneric);            
    }
    function vp_DrawVideoTableAppend(){
        //LoadVideoReportingChart(Int64 intVideoID, String strIP, Boolean boolExcludeIP, Boolean boolExcludeAYS, Boolean boolExcludeMS, Boolean boolIncludeFSOnly, Boolean boolIncludeSTOnly, Boolean boolIncludeEMOnly, String strStartDate, String strEndDate)
        var strStartDate;
        var strEndDate;
        var boolExcludeAYS;
        var boolExcludeMS;
        var intVideoID='';

        document.getElementById("divResults").innerHTML = 'Loading data...';
        boolExcludeAYS = document.getElementById("chkExcludeAYS").checked;
        boolExcludeMS = document.getElementById("chkExcludeMS").checked;
        intVideoID = document.getElementById("cmbVideos").value;
        if (intVideoID.length<1){
            intVideoID = document.getElementById("txtVideoID").value;
        }
        if (intVideoID.length<1){
            intVideoID = 0;
        }

        strStartDate = document.getElementById("txtDateFrom").value;
        strEndDate = document.getElementById("txtDateTo").value;
        
        ret = ws_VideoProgress.LoadVideoReportingTableAppendMethod(intVideoID, "", false, boolExcludeAYS, boolExcludeMS, false, false, false, strStartDate, strEndDate, "COUNT DESC", vp_OnCompleteDrawVideoReport, vp_OnErrorGeneric, vp_OnTimeOutGeneric);            
    }
    function vp_OnCompleteDrawVideoReport(result){
        document.getElementById("divResults").innerHTML = result;
    }    



    function vp_ApplyFilters(){
        var strIP;
        var boolExcludeIP;
        var boolExcludeAYS;
        var boolExcludeMS;
        var boolIncludeFSOnly;
        var boolIncludeSTOnly;
        var boolIncludeEMOnly;
        var strStartDate;
        var strEndDate;
        
        strIP = document.getElementById("txtIP").value;
        boolExcludeIP = document.getElementById("cmbIncludeExcludeIP").value;
        boolExcludeAYS = document.getElementById("chkExcludeAYS").checked;
        boolExcludeMS = document.getElementById("chkExcludeMS").checked;
        boolIncludeFSOnly = document.getElementById("chkIncludeFS").checked;
        boolIncludeSTOnly = document.getElementById("chkIncludeST").checked;
        boolIncludeEMOnly = document.getElementById("chkIncludeEC").checked;
        strStartDate = document.getElementById("txtDateFrom").value;
        strEndDate = document.getElementById("txtDateTo").value;
        
        if (boolExcludeIP==1){
            boolExcludeIP = true;
        }else{
            boolExcludeIP = false;
        }
        if (boolExcludeAYS==1){
            boolExcludeAYS= true;
        }else{
            boolExcludeAYS = false;
        }
        if (boolExcludeMS==1){
            boolExcludeMS = true;
        }else{
            boolExcludeMS = false;
        }
        if (boolIncludeEMOnly==1){
            boolIncludeEMOnly = true;
        }else{
            boolIncludeEMOnly = false;
        }
        if (boolIncludeFSOnly==1){
            boolIncludeFSOnly = true;
        }else{
            boolIncludeFSOnly = false;
        }
        if (boolIncludeSTOnly==1){
            boolIncludeSTOnly = true;
        }else{
            boolIncludeSTOnly = false;
        }
        
        document.getElementById("divVideoCombo").innerHTML = 'Select video: refreshing...';
        ret = ws_VideoProgress.ApplyFilters('cmbVideos', true, "100px", "vp_LoadVideoProgressInfo()", strIP, boolExcludeIP, boolExcludeAYS, boolExcludeMS, boolIncludeFSOnly, boolIncludeSTOnly, boolIncludeEMOnly, strStartDate, strEndDate, vp_OnCompleteApplyFilters, vp_OnErrorGeneric, vp_OnTimeOutGeneric);
    }
    function vp_OnCompleteApplyFilters(result){
        document.getElementById("divVideoCombo").innerHTML = 'Select video: ' + result;
    }    


    function vp_ValidateData(){
        ret = ws_VideoProgress.ValidateData(vp_OnCompleteValidateData, vp_OnErrorGeneric, vp_OnTimeOutGeneric);            
    }
    function vp_OnCompleteValidateData(result){
        document.getElementById("divResult").innerHTML = result;
    }    


    function vp_GetGeneralInfo(){
            ret = ws_VideoProgress.LoadGeneralInfo(vp_OnCompleteGetGeneralInfo, vp_OnErrorGeneric, vp_OnTimeOutGeneric);            
    }
    function vp_OnCompleteGetGeneralInfo(result){
        document.getElementById("divGeneralInfo").innerHTML = result;
    }    

    function vp_ShowItemInfo(strItemInfo){
        document.getElementById("divItemInfo").innerHTML = strItemInfo;
    }

    function vp_LoadVideoProgressInfo(){
        var intVideoID;
        var strIP;
        var boolExcludeIP;
        var boolExcludeAYS;
        var boolExcludeMS;
        var boolIncludeFSOnly;
        var boolIncludeSTOnly;
        var boolIncludeEMOnly;
        var strStartDate;
        var strEndDate;
        
        intVideoID = document.getElementById("cmbVideos").value;
        strIP = document.getElementById("txtIP").value;
        boolExcludeIP = document.getElementById("cmbIncludeExcludeIP").value;
        boolExcludeAYS = document.getElementById("chkExcludeAYS").checked;
        boolExcludeMS = document.getElementById("chkExcludeMS").checked;
        boolIncludeFSOnly = document.getElementById("chkIncludeFS").checked;
        boolIncludeSTOnly = document.getElementById("chkIncludeST").checked;
        boolIncludeEMOnly = document.getElementById("chkIncludeEC").checked;
        strStartDate = document.getElementById("txtDateFrom").value;
        strEndDate = document.getElementById("txtDateTo").value;
        
        if (boolExcludeIP==1){
            boolExcludeIP = true;
        }else{
            boolExcludeIP = false;
        }
        if (boolExcludeAYS==1){
            boolExcludeAYS= true;
        }else{
            boolExcludeAYS = false;
        }
        if (boolExcludeMS==1){
            boolExcludeMS = true;
        }else{
            boolExcludeMS = false;
        }
        if (boolIncludeEMOnly==1){
            boolIncludeEMOnly = true;
        }else{
            boolIncludeEMOnly = false;
        }
        if (boolIncludeFSOnly==1){
            boolIncludeFSOnly = true;
        }else{
            boolIncludeFSOnly = false;
        }
        if (boolIncludeSTOnly==1){
            boolIncludeSTOnly = true;
        }else{
            boolIncludeSTOnly = false;
        }

        if (intVideoID.length>0){
            ret = ws_VideoProgress.LoadVideoProgressInfo(intVideoID, strIP, boolExcludeIP, boolExcludeAYS, boolExcludeMS, boolIncludeFSOnly, boolIncludeSTOnly, boolIncludeEMOnly, strStartDate, strEndDate, vp_OnCompleteShowProgressInfo, vp_OnErrorGeneric, vp_OnTimeOutGeneric);    
            ret = ws_VideoProgress.LoadVideoProgressChart(intVideoID, strIP, boolExcludeIP, boolExcludeAYS, boolExcludeMS, boolIncludeFSOnly, boolIncludeSTOnly, boolIncludeEMOnly, strStartDate, strEndDate, vp_OnCompleteShowProgressChart, vp_OnErrorGeneric, vp_OnTimeOutGeneric);    
        }
    }    
    function vp_OnCompleteShowProgressInfo(result){
        document.getElementById("divResults").innerHTML = result;
    }
    function vp_OnCompleteShowProgressChart(result){
        document.getElementById("divChart").innerHTML = result;
    }
    
    
    function vp_StoreVideoProgress(objProgressObject){
        //check that the info passed in is valid
        var strCuePointInfo='';
        var objCuePoint;
        var i;
        var strLink;
        
        if (objProgressObject.videoName != 'no title' && IsNumeric(objProgressObject.videoId) && objProgressObject.elapsedTime != '00:00'){
            if (objProgressObject.cuePointsPressed.length>0){
                for (i=0; i <= objProgressObject.cuePointsPressed.length-1; i++) {
                    objCuePoint = objProgressObject.cuePointsPressed[i]; 
                    strLink = objCuePoint.link;
                    //strLink = "link_missing"
                    strCuePointInfo += "|" + objCuePoint.linktype + "¬" + objCuePoint.timeStampFormatted + "¬" + objCuePoint.timestampMilli + "¬" + strLink; 
                }        
            }
            ret = ws_VideoProgress.SaveVideoProgress(objProgressObject.playerObjectPressed, objProgressObject.videoId, objProgressObject.videoName, objProgressObject.playlistID, objProgressObject.playlistName, objProgressObject.elapsedTime, objProgressObject.elapsedTimeMilli, objProgressObject.totalTime, objProgressObject.totalTimeMilli, objProgressObject.endOfVideoReached, objProgressObject.fullscreenPressedDuringPlayback, objProgressObject.subtitlesPressedDuringPlayback, objProgressObject.emailPressedDuringPlayback, objProgressObject.userSessionID, strCuePointInfo, "Web_Player", vp_OnCompleteStoreProgress, vp_OnErrorGeneric, vp_OnTimeOutGeneric);    
        }
    }
    function vp_OnCompleteStoreProgress(result){
        //dont do anything here
    }

    function vp_StoreEngagementEvent(objEngagementObject, strPlayerType){
        //check that the info passed in is valid
        var strCuePointInfo='';
        var strRet = "";
        
        //strRet = "videoID:" + objEngagementObject.videoID + ", ";
        //strRet += "duration:" + objEngagementObject.totalTime + ", ";
        //strRet += "duration secs:" + objEngagementObject.totalTimeSec + ", ";
        //strRet += "elapsed:" + objEngagementObject.elapsedTime + ", ";
        //strRet += "elapsed secs:" + objEngagementObject.elapsedTimeSec;
        
        //window.alert("in the js store event method: " + strRet);
        //ret = ws_VideoProgress.SaveVideoProgress(objEngagementObject.playerObjectPressed, objEngagementObject.videoId, objEngagementObject.videoName, objEngagementObject.playlistID, objEngagementObject.playlistName, objEngagementObject.elapsedTime, objEngagementObject.elapsedTimeMilli, objEngagementObject.totalTime, objEngagementObject.totalTimeMilli, objEngagementObject.endOfVideoReached, objEngagementObject.fullscreenPressedDuringPlayback, objEngagementObject.subtitlesPressedDuringPlayback, objEngagementObject.emailPressedDuringPlayback, objEngagementObject.userSessionID, strCuePointInfo, vp_OnCompleteStoreProgress, vp_OnErrorGeneric, vp_OnTimeOutGeneric);    
        strRet = ws_VideoProgress.SaveVideoProgressEngagement("Cue Point", objEngagementObject.videoID, "", 0, "", objEngagementObject.elapsedTime, objEngagementObject.elapsedTimeSec, objEngagementObject.totalTime, objEngagementObject.totalTimeSec, false, false, false, false, "", "", strPlayerType, vp_OnCompleteStoreEngagementEvent, vp_OnErrorGeneric, vp_OnTimeOutGeneric);    
    }
    function vp_OnCompleteStoreEngagementEvent(result){
        //dont do anything here
    }



    function vp_StoreIPhoneVideoEvent(intVideoID, strVideoName, strVideoURL){
        //window.alert("in vp_StoreIPhoneVideoEvent");
        var strGUID = 'guid123abc';
        strCurrentVideoURL = strVideoURL;
        //window.alert("guid:" + strGUID + ", vidURL:" + strCurrentVideoURL);
        ret = ws_VideoProgress.SaveIPhone(intVideoID, strVideoName, strGUID, vp_OnCompleteStoreIPhoneVideoEvent, vp_OnErrorGeneric, vp_OnTimeOutGeneric);            
    }
    function vp_OnCompleteStoreIPhoneVideoEvent(result){
        //dont do anything here
        //window.alert("save done, going to vidURL:" + strCurrentVideoURL);
        playVideo(strCurrentVideoURL);
    }


    function IsNumeric(sText)
    {
       var ValidChars = "0123456789.";
       var IsNumber=true;
       var Char;

     
       for (i = 0; i < sText.length && IsNumber == true; i++) 
          { 
          Char = sText.charAt(i); 
          if (ValidChars.indexOf(Char) == -1) 
             {
             IsNumber = false;
             }
          }
       return IsNumber;
       
       }


    function vp_OnErrorGeneric(error){
        var stackTrace = error.get_stackTrace();
        var message = error.get_message();
        var statusCode = error.get_statusCode();
        var exceptionType = error.get_exceptionType();
        var timedout = error.get_timedOut();
        var strMessage;
       
        // Display the error.    
        //strMessage = "Stack Trace: " +  stackTrace + "    ||    Service Error: " + message + "    ||    Status Code: " + statusCode + "    ||    Exception Type: " + exceptionType + "    ||    Timedout: " + timedout;
        strMessage = "Message: " +  message;
        //window.alert("Error in ws_VideoProgress:" + strMessage);  
    }

    function vp_OnTimeOutGeneric(error){
        var stackTrace = error.get_stackTrace();
        var message = error.get_message();
        var statusCode = error.get_statusCode();
        var exceptionType = error.get_exceptionType();
        var timedout = error.get_timedOut();
        var strMessage;
       
        // Display the error.    
        //strMessage = "Stack Trace: " +  stackTrace + "    ||    Service Error: " + message + "    ||    Status Code: " + statusCode + "    ||    Exception Type: " + exceptionType + "    ||    Timedout: " + timedout;
        strMessage = "Message: " +  message;
        //window.alert("Timeout in ws_VideoProgress:" + strMessage);  
    }


