﻿var ischatting = false;
var isbilling = false;
var cammer = new Object;

function _get(val) {
    return document.getElementById(val);
}

function init() {
    _get("clipID").value = '';
    var clickText = '<%= Me.GetLocalResourceObject("MovieInit.Text").ToString() %>';
    var prevs = getElementsByClassName(_get("pictures"), "div", "prev");
    
    for (var ii = 0; ii < prevs.length; ii++) {
        $addHandler(prevs[ii], "mouseover", function setborder(evt) { this.style.border = "1pt solid fuchsia" });
        $addHandler(prevs[ii], "mouseout", function clearborder(evt) { this.style.border = "1pt solid silver"; });
    }
    var defaultprev = prevs[0];
    swapFilm(defaultprev.id);
 }

function vMode(mode) {
    showJSDebug("vMode " + mode);
    _get("PlayCompleteMsg").style.display = "none";
    _get("chat").style.display = "none";
    //_get("moviecontainer").style.display = "none";
    _get("calling").style.display = "none";
    _get("noconnect").style.display = "none";

    _get("PlayCompleteMsg").style.height="0%";
    _get("chat").style.height="0%";
    _get("moviecontainer").style.height = "0%";
    _get("calling").style.height = "0%";
    _get("noconnect").style.height = "0%";
    
    
    switch (mode) {
        case "endclip":
            ischatting ? _get("chat").style.display = "block" : _get("PlayCompleteMsg").style.display = "block";
            ischatting ? _get("chat").style.height = "100%" : _get("PlayCompleteMsg").style.height = "100%";
            break;
        case "startclip":
            _get("moviecontainer").style.height = "100%";
            
            break;
        case "startchat":
            ischatting = true;
            _get("chat").style.height = "100%";
            _get("chat").style.display = "block";
            break;
        case "stopchat":
            ischatting = false;
            _get("chathistory").innerHTML = "";
            _get("PlayCompleteMsg").style.height = "100%";
            _get("PlayCompleteMsg").style.display = "block";
            break;
        case "calling":
            ischatting = false;
            _get("calling").style.height = "100%";
            _get("calling").style.display = "block";
            if (!cammer.available) {
                //vMode("noconnect");
            }
            break;
        case "noconnect":
            _get("noconnect").style.height = "100%";
            _get("noconnect").style.display = "block";
            //cammer.hasvideo ? _get("videooption").style.display = "block" : _get("videooption").style.display = "none";
            //_get("videooption").style.height = "100%";
            _get("videooption").style.display="block";
            break;
    }
}

function FoundCamObj(eventArgs) {
    if (eventArgs) {
        cammer = eventArgs;
        
        if (eventArgs.isvalid==true) {
            vMode("startclip");
            showJSDebug("availables:" + cammer.availables);
            cammer.availables > 0 ? _get("anycam").style.display = "block" : _get("anycam").style.display = "none";
            _get("callingNickname").innerHTML = cammer.nickname;
            _get("nickname").innerHTML = cammer.nickname;
            _get("age").innerHTML = cammer.age;
            _get("region").innerHTML = cammer.region;
            _get("languages").innerHTML = cammer.languages;
            _get("memo").innerHTML = cammer.memo;
            _get("clipID").value = cammer.clip;
            _get("camid").value = cammer.camid;
            _get("prevreq").value = cammer.prevreq;
            var clipid = cammer.clip;
            var oCam = new Object;
            oCam.camid = cammer.camid;
            oCam.clip = cammer.clip;
            oCam.nickname = cammer.nickname;
            oCam.video = false;
            ischatting = false;
            if (isbilling && !cammer.available) {
                _get("myMovie").getVideos(cammer.camid, cammer.voiceonly)
                vMode("noconnect");
                return;
            }
            try {
                _get("myMovie").setCamid(oCam);
            }
            catch (err) {
            }
        }
    }
}

function swapFilm(camid) {
    var oClient = new Object;
    oClient.currentcamid = _get("camid").value;
    oClient.newcamid = camid;
    oClient.prevreq = _get("prevreq").value || 0;
    oClient.ivccode = _get("ivccode").value;
    _get("camid").value = camid;
    //showJSDebug("swapFilm " + camid);
    if (ischatting) {stopchat(); }
    Thinc.nl.WebService.GetCamObject(oClient, FoundCamObj);
}

function flashLoaded() { //called from actionscript when connection with fms established
    var ivccode = _get("ivccode").value;
    var culture = _get("culture").value;
    _get("myMovie").setIvcCode(ivccode, culture);
    init();
}

function showJSDebug(value) {
    var oDbg = _get("dbgwindow");
    var today = new Date();
    oDbg.innerHTML += today.toLocaleTimeString() + " " + value + "<br />";
    var h = oDbg.scrollHeight;
    oDbg.scrollTop = h;
}

function PlayComplete(value) {
    if (value.code == "NetStream.Play.Complete" && isbilling==false) {
        var insm = _get("chatto").value;
        
        if (!insm == "") {
            _get("ischatenabled").style.display = "block";
            //_get("ischatenabled").style.height= "100%";
        }
     
        vMode("endclip");
    }
}

function playVideo() {
    var oCam = new Object;
    oCam.camid = cammer.camid;
    oCam.curVideo = cammer.video;
    oCam.voiceonly = cammer.voiceonly;
    oCam.video = true;
    oCam.speelTijd = 0;
    vMode("startclip");
    try {
        _get("myMovie").playVideo(oCam);
     }
    catch (err) {
     }
}

function billingEvent(evt) {
    _get("camid").value = evt["camid"];
    isbilling = evt["hook"] == "off";
    if (!isbilling) {
        _get("prevreq").value = 0;
        swapFilm(evt["camid"]);
    }
    else {
        //showJSDebug("billingEvent " + evt.callresult);
        switch (evt.callresult) {
            case "calling":
                //_get("myMovie").getVideos(evt['camid'], cammer.voiceonly);
                vMode("calling");
                swapFilm(cammer.camid);
                break;
            case "busy":
                //_get("myMovie").getVideos(evt['camid'], cammer.voiceonly);    
                vMode("noconnect");
                break;
            case "noanswer":
                //_get("myMovie").getVideos(evt['camid'], cammer.voiceonly);    
                vMode("noconnect");
                break;
            case "connect":
                //_get("prevreq").value = 0;
                vMode("connect");
                swapFilm(evt["camid"]);
                
                break;
        }
    }
 }

 function updateModelsList(streams) {
/*   
 var ol = getElementsByClassName(document.getElementById("pictures"), "span", "o1");
    for (sp = 0; sp < ol.length; sp++)  {
        ol[sp].className = "o0";
     }
     for (var stream in streams) {
         showJSDebug("updateModelsList " + stream + " is online");
        document.getElementById("sp_" + stream).className = "o1";
    }
*/ 
}


 function listVideos(videoos) {
     var vidIdx = Math.round(Math.random() * (videoos.length-1));
     var video = videoos[vidIdx];
     var fEnd = video.lastIndexOf(".") ;
     var fName = video.substring(0, fEnd);
     cammer.video = fName;
     cammer.hasvideo = true;
 }

function keyPress(event, obj) {
    var keycode;
    if (event.which) { // mozilla
        keycode = event.which;
    }
    else {// ie
        keycode = event.keyCode;
    }
    if (keycode == 13 || keycode == 9) { //Enter {
        sendmsg();
    }
    return true;
}

function sendmsg() {
    var msg = new Object;
    var ivccode = _get("ivccode").value;
    msg.action = "send";
    msg.to = _get("chatto").value;
    msg.text = ivccode + ": " + _get("chatmsg").value;
    msg.camid = _get("camid").value;
    _get("chatmsg").value = "";
    msg.ivccode = ivccode;
    msg.fromfms = false;
    Chat(msg);
}

function startchat() { //initiated by client
    var msg = new Object;
    msg.action = "start";
    msg.to = _get("chatto").value;
    msg.ivccode = _get("ivccode").value;
    msg.text = msg.ivccode + " start ";
    msg.camid = _get("camid").value;
    msg.fromfms = false;
    msg.wilchat = true;
    msg.camid = _get("camid").value;
    vMode("startchat");
    Chat(msg);
}

function stopchat() {
    var msg = new Object;
    msg.action = "stop";
    msg.to = _get("chatto").value;
    msg.ivccode = _get("ivccode").value;
    msg.text = msg.ivccode + " stop ";
    msg.camid = _get("camid").value;
    msg.fromfms = false
    msg.wilchat=false;
    vMode("stopchat");
    Chat(msg);
}

function Chat(msg) {
    var chathistory = _get("chathistory");
    var newEl;
    if (!isbilling) {
        switch (msg.fromfms) {
            case true: //message from fms
                ischatting = true;
                _get("chatto").value = msg.returnto;
                if (msg.action == "start") {
                    //_get("chatto").value = msg.returnto;
                }
                else {
                    vMode("startchat");
                    newEl = chathistory.cloneNode(false);
                    newEl.innerHTML = chathistory.innerHTML + "<b class='rx'>" + msg.text + "</b><br />";
                    chathistory.parentNode.replaceChild(newEl, chathistory);
                    newEl.scrollTop = newEl.scrollHeight;
                    _get("chatmsg").focus();
                }
                break;
            case false: //message from client
                if (msg.action == "stop") {
                    vMode("stopchat");
                    chathistory.innerHTML = "";
                    _get("myMovie").Chat(msg);
                    ischatting = false;
                }
                else if (msg.action == "start") {
                    chathistory.innerHTML = "";
                    _get("chatmsg").focus();
                    _get("myMovie").Chat(msg);
                }
                else {
                    msg.text = msg.text.replace(/<.*>/g, ""); //clear tags
                    newEl = chathistory.cloneNode(false);
                    newEl.innerHTML = chathistory.innerHTML + "<b class='tx'>" + msg.text + "</b><br />";
                    chathistory.parentNode.replaceChild(newEl, chathistory);
                    newEl.scrollTop = newEl.scrollHeight;
                    _get("chatmsg").focus();
                    _get("myMovie").Chat(msg);
                }
                break;
        }
    }
}

function getElementsByClassName(oElm, strTagName, strClassName) {
    var arrElements = (strTagName == "*" && oElm.all) ? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for (var i = 0; i < arrElements.length; i++) {
        oElement = arrElements[i];
        if (oRegExp.test(oElement.className)) {
            arrReturnElements.push(oElement);
        }
    }
    return (arrReturnElements)
}

//picture scroll
var rLimit;
function scrollMe(dir) {
    var step = 500;
    var pictures = _get("pictures");
    rLimit = _get("dl_cams").clientWidth - _get("picturecontainer").clientWidth;
    var oldPos = parseInt(pictures.style.left.substring(0, pictures.style.left.length - 2));
    var newPos = eval(parseInt(oldPos) + dir + step);
    doScroll(dir, oldPos, newPos);
}

function doScroll(dir, oldPos, newPos) {
    var pictures = _get("pictures");
    var currPos = eval(oldPos + dir + 10);
    oldPos = currPos;
    if (-newPos > rLimit) {
        oldPos = -rLimit;
        newPos = oldPos;
    }
    if (newPos > 0) {
        oldPos = 0;
        newPos = oldPos;
    }
    if (oldPos == newPos) {
        clearTimeout(t);
    }
    else {
        var t = setTimeout("doScroll('" + dir + "', " + oldPos + "," + newPos + ");", 10);
    }
    pictures.style.left = oldPos + "px";
}
window.onload = function() {
    window.focus();
}
window.onunload = function() {
    Thinc.nl.WebService.ClientLeft(_get("ivccode").value, null);
}
