﻿/// <reference path="../../main/education/OnlineCourses/DirectorsCredentials/default.aspx"/>
var tstData = null;
var curQuestion = -1;
var curIndex = -1;
var activeSyll = -1;
function test() {

    QMM.getAssignments(getCookieVal("qid"), getCookieVal("CompanyID"), buildAssignments, WebServiceFail)
    
}
function WebServiceFail(error, userContext, methodName) {
    alert(error.get_message() + "\n" + userContext + "\n" + methodName);
}
function buildAssignments(result, usercontext, method) {
    for (var i = 0; i < result.length; i++) {
        addAssignment(result[i])
    }
}
function addAssignment(result) {
    var target = document.getElementById("AssignmentList")
    var crs = document.getElementById("course_" + result.CourseId)        
    if (!crs) {
        crs = document.createElement("div");
        crs.id = "course_" + result.CourseId;
        crs.className = "CourseContain";
        var open = document.createElement("div");
        var str ="openTree('" + result.CourseId + "')"
        open.onclick = function() { openTree(result.CourseId); };
        open.id = "opener_" + result.CourseId 
        open.className = "openTree";
        open.innerHTML = "+";
        open.style.lineHeight = "32px";
        crs.appendChild(open);
        var title = document.createElement("div");
        title.id="title_" + result.CourseId
        title.onclick = function() { openTree(result.CourseId); };
        title.className="courseTitle";
        var str = result.CourseDesc        
        title.innerHTML=str.replace("-","<br>");
        crs.appendChild(title);
        
        var assignmentcontain = document.createElement("div");
        assignmentcontain.id = "assignmentContain_" + result.CourseId;
        assignmentcontain.className="assignmentContainer"
        assignmentcontain.style.display = "none";
        crs.appendChild(assignmentcontain);
        var subGroupContain = document.createElement("div");
        subGroupContain.id = "cdoccontain_" + result.CourseId;
        subGroupContain.className = "subCourseContain";
        assignmentcontain.appendChild(subGroupContain);
        var subGroupopen = document.createElement("div");
        subGroupopen.innerHTML = "+"
        subGroupopen.onclick = function() { fireElement("courseDocument", result.CourseId); };
        subGroupopen.id = "opener_" + subGStr;
        subGroupopen.className = "openTree";
        subGroupopen.style.height = "20px";
        subGroupopen.style.lineHeight = "20px";
        subGroupContain.appendChild(subGroupopen);
        var cDocs = document.createElement("div");
        cDocs.id = "courseDoc_" + result.CourseId;
        cDocs.className = "subCourseTitle";
        cDocs.onclick = function() { fireElement("courseDocument", result.CourseId); };
        cDocs.innerHTML = "Course Documents";
        subGroupContain.appendChild(cDocs);
        target.appendChild(crs);
    }
    if (result.SyllDescr.indexOf("|") > -1) {
        var subGroup = document.getElementById("subContain_" + result.SyllDescr.split("|")[0]);
        if (!subGroup) {
            subGroup = document.createElement("div");
            var subGStr = result.SyllDescr.split("|")[0]
            subGroup.id = "subContain_" + subGStr;
            subGroup.className = "subCourseContain";
            var subGroupopen = document.createElement("div");
            var subGroupstr = "openTree('" + subGStr + "')"
            subGroupopen.onclick = function() { openTree(subGStr); };
            subGroupopen.id = "opener_" + subGStr;
            subGroupopen.className = "openTree";
            subGroupopen.style.height = "20px";
            subGroupopen.style.lineHeight = "20px";
            subGroupopen.innerHTML = "+";
            subGroup.appendChild(subGroupopen);
            var subGrouptitle = document.createElement("div");
            subGrouptitle.id = "title_" + subGStr
            subGrouptitle.onclick = function() { openTree(subGStr); };
            subGrouptitle.className = "subCourseTitle";
            var subGroupstr = result.CourseDesc
            subGrouptitle.innerHTML = "Week " + subGStr.substr(5, 2);            
            subGroup.appendChild(subGrouptitle);
            var subGroupassignmentcontain = document.createElement("div");
            subGroupassignmentcontain.id = "assignmentContain_" + subGStr;
            subGroupassignmentcontain.className = "subAssignmentContainer"
            subGroupassignmentcontain.style.display = "none";
            subGroup.appendChild(subGroupassignmentcontain);
            document.getElementById("assignmentContain_" + result.CourseId).appendChild(subGroup);
        }
    }
    var assign = document.getElementById("assignment_" + result.SyllID)
    if (!assign) {
        assign = document.createElement("div");
        assign.id = "assignment_" + result.SyllID;
        assign.className = result.Description;
        //assign.style.borderBottom = "solid 1px black";
        assign.onclick = function() { fireElement(result.Description, result.SyllID); };

        if (result.SyllDescr.indexOf("|") > -1) {
            assign.innerHTML = result.SyllDescr.split("|")[1];
            document.getElementById("assignmentContain_" + result.SyllDescr.split("|")[0]).appendChild(assign);
        } else {
        assign.innerHTML = result.SyllDescr
        document.getElementById("assignmentContain_" + result.CourseId).appendChild(assign);
        }
        
    }
}

function cdocsLoaded(result, usercontext, method) {
    var docsTitle = document.createElement("div");
    docsTitle.innerHTML = "Course Documents";
    docsTitle.className = "docsTitle";
    document.getElementById("AssignmentContent").appendChild(docsTitle);
    if (result.length > 0) {
        for (var i = 0; i < result.length; i++) {
            addDocToArea(result[i]);       
        }
    } else {
        alert("No Documents Found");
    }
}
function addDocToArea(rslt) {
    
    
    var docElem = document.createElement("a");
    docElem.id = "courseDoc_" + rslt.id;
    docElem.className = "courseDocLink";    
    docElem.href = "http://www.q-multimedia.com/qview12_lms/UploadedFiles/" + rslt.fileName;
    docElem.target = "new";
    var docTitle = document.createElement("div");
    docTitle.innerHTML = rslt.docName;
    docTitle.className = "courseDocTitle";
    docElem.appendChild(docTitle);
    var docDescrip = document.createElement("div");
    docDescrip.innerHTML = rslt.description;
    docDescrip.className = "courseDocDescrip";
    docElem.appendChild(docDescrip);
    document.getElementById("AssignmentContent").appendChild(docElem);
    docElem = null;
    docTitle = null;
    docDescrip = null;
}
function fireElement(type, id) {
    
    //if (document.getElementById("AssignmentContent").childNodes.length == 0 || confirm("You are about to close an open assignment. Are you sure you want to do this?")) {
        activeSyll=id;
        if (document.getElementById("AssignmentContent").childNodes.length > 0) {
            removeAllChildNodes("AssignmentContent");
            tstData = null;
            curQuestion = -1;
            curIndex = -1;
        }
            switch (type) {
            case "Assignment":
                QMM.loadAssignment(id, getCookieVal("qid"), assignmentLoaded, WebServiceFail)
                break;
            case "Quiz" || "Test":                
                QMM.loadQuizTest(id, getCookieVal("qid"), quizTestLoaded, WebServiceFail)
                break;
            case "Lesson":                
                QMM.loadLesson(id, getCookieVal("qid"), lessonLoaded, WebServiceFail)
                $find("tbcContent").set_activeTabIndex(2);
                break;
            case "courseDocument":
                QMM.loadCourseDocs(id, cdocsLoaded, WebServiceFail);
                break;
        }
    //}
}
function assignmentLoaded(result, usercontext, method) {    
    var assignment = document.createElement("div");
    assignment.id = "assignmentDocument_" + result[0].SyllabusItemId;
    document.getElementById("AssignmentContent").appendChild(assignment);
    assignment.className = "assignmentDocument";
    var assignmentHeader = document.createElement("div");
    assignmentHeader.id = "assignmentHeader_" + result[0].SyllabusItemId;
    assignmentHeader.className = "assignmentHeader";
    assignmentHeader.innerHTML = result[0].AssignmentDesc.split("|")[1];
    var assignmentBody = document.createElement("div");
    assignmentBody.id = "assignmentBody_" + result[0].SyllabusItemId;
    assignmentBody.className = "assignmentBody";
    assignmentBody.innerHTML = result[0].AssignmentDir;
    document.getElementById("AssignmentContent").appendChild(assignmentHeader);
    document.getElementById("AssignmentContent").appendChild(assignmentBody);

}

function quizTestLoaded(result, usercontext, method) {
    if (result.length > 0) {
        tstData = result;
        buildTest()
    }
}
function buildTest() {
    target = "AssignmentContent"
    var tstContain = document.getElementById("testContainer_" + tstData[0].TestID);
    if (!tstContain) {
        tstContain = document.createElement("div")
        tstContain.id = "testContainer_" + tstData[0].TestID;
        tstContain.className = "testContainer";
        document.getElementById(target).appendChild(tstContain);
        var tstTitle = document.createElement("div")
        tstTitle.id = "testTitle_" + tstData[0].TestID;
        tstTitle.className = "testTitle";
        tstTitle.innerHTML = tstData[0].testTitle.split("|")[1];
        tstContain.appendChild(tstTitle);
        var tstInstructions = document.createElement("div");
        tstInstructions.id = "testInstr_" + tstData[0].TestID;
        tstInstructions.className = "testInstructions";
        tstInstructions.innerHTML ="Instructions: <br>" +  tstData[0].testInstructions;
        tstContain.appendChild(tstInstructions);
        var tstLength = document.createElement("div");
        tstLength.id = "testLength_" + tstData[0].TestID;
        tstLength.className = "testLength";
        tstLength.innerHTML = "You will have " + (tstData[tstData.length - 1].questionOrder + 1) + " questions to answer."
        tstContain.appendChild(tstLength);
        var tstQArea = document.createElement("div")
        tstQArea.id = "testQArea_" + tstData[0].TestID;
        tstQArea.className = "questionArea";
        tstContain.appendChild(tstQArea);
        var tstQText = document.createElement("div")
        tstQText.id = "testQText_" + tstData[0].TestID;
        tstQText.className = "questionText";
        tstQArea.appendChild(tstQText);
        var tstQAnswer = document.createElement("form")
        tstQAnswer.id = "testQAnswerArea_" + tstData[0].TestID;
        tstQAnswer.className = "answerArea";
        tstQArea.appendChild(tstQAnswer);
        var prevQuestion = document.createElement("div");
        prevQuestion.id = "testPrevQuestion_" + tstData[0].TestID;
        prevQuestion.className = "previousQuestion";
        prevQuestion.innerHTML = "Previous Question";
        prevQuestion.onclick = showPrevQuestion;
        tstQArea.appendChild(prevQuestion);
        var nextQuestion = document.createElement("div");
        nextQuestion.id = "testNextQuestion_" + tstData[0].TestID;
        nextQuestion.onclick = showNextQuestion;
        nextQuestion.className = "nextQuestion";
        nextQuestion.innerHTML = "Next Question";
        tstQArea.appendChild(nextQuestion);
        prevQuestion = null;
        nextQuestion = null;   
        tstQAnswer = null;
        tstQText = null;
        tstQArea = null;
        tstTitle = null;
        tstInstructions = null;
        tstLength = null;        
    }
    tstContain = null;
    showNextQuestion();
}
function showNextQuestion() {
    if (curQuestion < tstData[tstData.length - 1].questionOrder) {
        curQuestion++;
        var tst = tstData[0].TestID;
        var strtIndex = -1;
        for (var i = 0; i < tstData.length; i++) {
            if (tstData[i].questionOrder == curQuestion) {
                strtIndex = i;
                break;
            }
        }
        loadQuestion(strtIndex)
    } else {
    if (confirm("Are you finished with this test? Click OK to see your score, click CANCEL to go back to the test")) {
            finishTest()
        }
    }
}
function finishTest() {
    var score = 0;
    for (var i = 0; i < tstData.length; i++) {
        if (tstData[i].AnswerID == tstData[i].selAnsId) {
            if (tstData[i].correctAnswer) {
                score += tstData[i].questionValue;
            }
        }
    }
    QMM.closeTestQuiz(activeSyll, getCookieVal("qid"), score, tstData[0].totalPoints, tstData[0].pointstopass, 1, testClosed, WebServiceFail);
   
}
function showPrevQuestion() {
    if (curQuestion > 0) {
        curQuestion--;        
        var strtIndex = -1;
        for (var i = 0; i < tstData.length; i++) {
            if (tstData[i].questionOrder == curQuestion) {
                strtIndex = i;
                break;
            }
        }
        loadQuestion(strtIndex)
        
    }
}
function loadQuestion(strtIndex) {
    var tst = tstData[0].TestID;
    document.getElementById("testQText_" + tst).innerHTML = (curQuestion+1) + ". " + tstData[strtIndex].questionText;
    removeAllChildNodes("testQAnswerArea_" + tst);
    curIndex = strtIndex;
    for (var q = strtIndex; q < tstData.length; q++) {
        if (tstData[q].questionOrder != curQuestion) {
            break;
        } else {
            var answer = document.createElement("label");
            answer.className = "answerElement";

            var radID = "answer_" + tstData[q].AnswerID
            var rad
            var checked = ""
            if (document.all && !window.opera && document.createElement) {
                if (tstData[q].AnswerID == tstData[q].selAnsId) {
                    checked = "checked";
                }
                rad = document.createElement("<input type='radio' class='inputRadio' id='" + radID + "' name='answers' value='" + tstData[q].AnswerID + "' " + checked +">");
            }else if (document.createElement && document.createTextNode) {
                rad = document.createElement("input");
                rad.type = "radio";
                rad.name = "answertest";
                rad.className = "inputRadio";
                rad.id = radID;
                rad.value = tstData[q].AnswerID;
                if (tstData[q].AnswerID == tstData[q].selAnsId) {
                    checked = "checked";
                }
                rad.checked = checked;
            }
            rad.onclick = function() { setSelAnswer(this.value) };            
                answer.appendChild(rad);
                answer.htmlFor = radID;
                var ansText = document.createElement("div");
                ansText.id = "ansTxt_" + tstData[q].AnswerID;
                ansText.className = "answerText";
                ansText.innerHTML = tstData[q].AnswerText;
                answer.appendChild(ansText);
            
            document.getElementById("testQAnswerArea_" + tst).appendChild(answer);
            answer = null;
            rad = null;
            ansText = null;
        }
    }
}
function setSelAnswer(val) {    
    for (var q = curIndex; q < tstData.length; q++) {
        if (tstData[q].questionOrder != curQuestion) {
            break;
        }else{
            tstData[q].selAnsId = val
            if (tstData[q].AnswerID == val) {
                QMM.updateAnswerSheet(tstData[q].QuestionID, tstData[q].AnswerID, getCookieVal("qid"), tstData[q].TestID, tstData[q].AnswerText, answerUpdated, WebServiceFail)
            }
        }        
    }
}
function answerUpdated(result) {
}
function testClosed(result, usercontext, method) {
    document.getElementById("testNextQuestion_" + tstData[0].TestID).style.display = "none"
    document.getElementById("testPrevQuestion_" + tstData[0].TestID).style.display = "none"
    removeAllChildNodes("testQArea_" + tstData[0].TestID);
    var score = 0;
    var correctClass = "answerSheet_mark_InCorrect"
    var qpts = 0;
    addScoreRow("title","answerSheet_mark_Holder","Question","Your Answer","Pts.");
    for(var i=0;i<tstData.length;i++){
        if(tstData[i].AnswerID == tstData[i].selAnsId){
            if(tstData[i].correctAnswer){
                score+=tstData[i].questionValue;    
                qpts = tstData[i].questionValue;
                correctClass = "answerSheet_mark_Correct";
            }else{
                correctClass = "answerSheet_mark_InCorrect";
                qpts = 0;
            }
            addScoreRow(tstData[i].questionOrder,correctClass,tstData[i].questionText,tstData[i].AnswerText,qpts);
        }
    }
    addScoreRow("totals", "", "", "", "Your Score: " + score + "/" + tstData[0].totalPoints + " (" + (Math.round((score/ tstData[0].totalPoints)*100)) + "%)");
    
}
function addScoreRow(id, correctClass, qtext, atext, ptext) {
    var newRow = document.createElement("div")
    newRow.id = "scoresheetHeader";
    newRow.className = "answerSheet_questionRow";
    if (correctClass != "") {
        var correctMark = document.createElement("div")
        correctMark.id = "cMark_" + id;
        correctMark.className = correctClass;
        newRow.appendChild(correctMark);
    }
    if (qtext != "") {
        var qString = document.createElement("div");
        qString.id = "qString_" + id;
        qString.className = "answerSheet_questionString";
        qString.innerHTML = qtext;
        newRow.appendChild(qString);
    }
    if (atext != "") {
        var qAns = document.createElement("div");
        qAns.id = "qAnswer_" + id;
        qAns.className = "answerSheet_questionAnswer";
        qAns.innerHTML = atext;
        newRow.appendChild(qAns);
    }
    if (qPts != "") {
        var qPts = document.createElement("div");
        qPts.id = "qPts_" + id;
        qPts.className = "answerSheet_pts";
        qPts.innerHTML = ptext
        newRow.appendChild(qPts);
    }
    document.getElementById("testQArea_" + tstData[0].TestID).appendChild(newRow);
}
function openTree(elemID) {
    if (document.getElementById("opener_" + elemID).className == "openTree") {
        document.getElementById("opener_" + elemID).className = "closeTree";
        document.getElementById("opener_" + elemID).innerHTML = "-";
        document.getElementById("assignmentContain_" + elemID).style.display = "";
    } else {
        document.getElementById("opener_" + elemID).className = "openTree";
        document.getElementById("opener_" + elemID).innerHTML = "+";
        document.getElementById("assignmentContain_" + elemID).style.display = "none";
    }
}
function removeAllChildNodes(nodeName) {
 node = document.getElementById(nodeName)
 if (node && node.hasChildNodes && node.removeChild) {
    while (node.hasChildNodes()) {
         node.removeChild(node.firstChild);
    }
}
node = null;
 } // removeAllChildNodes()

function stripPX(str) {
    var string2 = new String(str)
    if (string2.indexOf("PX") > -1) {
        string2 = string2.substr(0, string2.indexOf("PX") - 1);
    }
    return parseInt(string2)
}
function activeTabChanged(sender, args) {
    if (sender.get_activeTabIndex() == 0) {
        growMsg();
        shrinkMsg();
    }
    if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){
    if (sender.get_activeTabIndex() == 2) {
        document.getElementById("Content").style.overflow ="visible"
    } else {
        document.getElementById("Content").style.overflow = "hidden";
    }
    }
    /*
    if (sender.get_activeTabIndex() == 2) {
    document.getElementById("playerContainer").style.position = "static";
    } else {
    document.getElementById("playerContainer").style.position = "absolute";
    document.getElementById("playerContainer").style.top = "-2000px";    
    document.getElementById("playerContainer").style.left= "-2000px";    
    
    }  */
    windowHeight();
}
function getScrollBarWidth () {
var inner = document.createElement('p');
inner.style.width = "100%";
inner.style.height = "200px";

var outer = document.createElement('div');
outer.style.position = "absolute";
outer.style.top = "0px";
outer.style.left = "0px";
outer.style.visibility = "hidden";
outer.style.width = "200px";
outer.style.height = "150px";
outer.style.overflow = "hidden";
outer.appendChild (inner);

document.body.appendChild (outer);
var w1 = inner.offsetWidth;
outer.style.overflow ="scroll";
var w2 = inner.offsetWidth;
if (w1 == w2) w2 = outer.clientWidth;

document.body.removeChild (outer);

return (w1 - w2);
};

function windowHeight() {
    var ht = (self.innerHeight ? self.innerHeight : document.documentElement.clientHeight);
    var wd = (self.innerWidth ? self.innerWidth : document.documentElement.clientWidth);
    var msgWindow = document.getElementById("messagingConversations");
    var asWindow = document.getElementById("AssignmentList");
    var asContent = document.getElementById("AssignmentContent");
    var plyrContainer = document.getElementById("playerContainer");
    var content = document.getElementById("Content");    
    content.style.width = wd;
    content.style.height = ht-37;    
    plyrContainer.style.width = wd-2 + "px";
    plyrContainer.style.height = ht-62 + "px";
    asContent.style.height = ht - 62+ "px";
    if (ht < document.getElementsByTagName("body")[0].scrollHeight) {
        asContent.style.width = wd - (204 + getScrollBarWidth()) + "px";
    } else {
        asContent.style.width = wd - 204 + "px";
    }
    msgWindow.style.height = ht - 132 + "px";
    asWindow.style.height = ht - 60 + "px";
    
    msgWindow = null;
    asWindow = null;
    asContent = null;
}
