var ajaxObj = null;
var id = "0";
var sendState = 0;
var txt = "";
var fieldValue = "";
var flagUpdated = false;

window.error = handleErr

function findPos(obj){
    var curleft = 0;
    var curtop = 0;
    if(obj.offsetParent) {
        curleft = obj.offsetLeft
        curtop = obj.offsetTop
        while (obj = obj.offsetParent) {
            curleft += obj.offsetLeft
            curtop += obj.offsetTop
        }
    }
    return [curleft, curtop];
}

function moveDiv(divID, top, left){
    var divObj = document.getElementById(divID);
    divObj.style.left = left + 'px';
    divObj.style.top = top + 'px';
}

function getAjaxObject(){
    var localObj = null;
    try{
        localObj = new ActiveXObject("Msxml2.XMLHTTP");
    }catch(e){
        try{
            localObj = new ActiveXObject("Microsoft.XMLHTTP");
        }catch(e1){
          //alert("exception: " + e1);
        }
    }
    if(localObj == null){
        localObj = new XMLHttpRequest();
    }
    return localObj;
}

function setUserList(usrStr, clrStr, stateStr){
    var divObj = document.getElementById("userList");
    var usrList1 = "";
    var usrList2 = "";
    var users = usrStr.split(", ");
    var clrs = clrStr.split(", ");
    var stats = stateStr.split(", ");
    var cnt = users.length;
    var bulletStr = "";

    usrList1 = "<div style='width:48%;float:left'>";
    usrList2 = "<div style='width:48%;float:right'>";

    for(var i = 0; i < cnt; i++){
        if(i < 3){
            bulletStr = "<div style='float:left; width:5px; height:5px; overflow:hidden;margin:6px 3px 0px 6px; background-color:" + clrs[i] + ";'>&nbsp</div>";
            usrList1 += bulletStr + "<div style='float:left;color:" + clrs[i] + ";" + stats[i] + ";'>" + users[i] + "</div><div class='clear'></div>";
        }else{
            bulletStr = "<div style='float:right; width:5px; height:5px; overflow:hidden;margin:6px 6px 0px 6px; background-color:" + clrs[i] + ";'>&nbsp</div>";
            usrList2 += bulletStr + "<div style='float:right;color:" + clrs[i] + ";" + stats[i] + ";'>" + users[i] + "</div><div class='clear'></div>";
        }
    }
    //close str
    usrList1 += "</div>";
    usrList2 += "</div>";
    if(divObj){
        divObj.innerHTML = usrList1 + usrList2;
    }
    if(cnt == 6){
        setUserCount("Users Connected : " + cnt + "(Board Limit)");
    }else{
        setUserCount("Users Connected : " + cnt);
    }
//    if(flagUpdated == false){
//      getBoardName();
//      flagUpdated = true;
//    }
}

function setUserCount(sizeStr){
    var divObj = document.getElementById("userCount");
    divObj.innerHTML = sizeStr;
}

function sendInvite(email, name, url, msg){
    var url = 'index.jsp?act=invite&dir=1&email=' + email + '&name=' + name + '&url=' + url + '&msg=' + msg;
    sendResponse(url, sendInviteHandler);
}

function sendInviteHandler(){
    if(ajaxObj.readyState == 4 || ajaxObj.readyState == "complete"){
        var resData = ajaxObj.responseText;
        var retArr = resData.split("--");
        if(retArr.length == 2){
            if(retArr[0].indexOf("OK") != -1){
                myApplet.doAction("inviteok", retArr[1]);
            }
        }
    }
}

function getConnectionErrorMessage(){
    var url = 'index.jsp?act=getmsg&dir=1&type=connectionError';
    sendResponse(url, downloadMessageHandler);
}

function getDownloadMessage(){
    var url = 'index.jsp?act=getmsg&dir=1&type=javadown';
    sendResponse(url, downloadMessageHandler);
}

function downloadMessageHandler(){
    if(ajaxObj.readyState == 4 || ajaxObj.readyState == "complete"){
        var resData = ajaxObj.responseText;
        var msgDiv = document.getElementById("msgDiv");
        msgDiv.innerHTML = resData;
    }
}

function getSupportMessage(){
    var url = 'index.jsp?act=getmsg&dir=1&type=support';
    sendResponse(url, supportMessageHandler);
}

function supportMessageHandler(){
    if(ajaxObj.readyState == 4 || ajaxObj.readyState == "complete"){
        var resData = ajaxObj.responseText;
        var msgDiv = document.getElementById("msgDiv");
        msgDiv.innerHTML = resData;
    }
}

function sendBoardInfo(cid, rid, bname, cname, clr, owner, pen, grid, tool, imgid){    //clientid, roomid, board name, creator name, color (integer)
    var url = 'index.jsp?act=regboard&dir=1&cid=' + cid + '&rid=' + rid + '&bn=' + bname + '&cn=' + cname + '&bclr=' + clr + '&owner=' + owner + '&pen=' + pen + '&grid=' + grid + '&tool=' + tool + '&imgid=' + imgid;
    sendResponse(url, sendBoardInfoHandler);
}

function sendBoardInfoHandler(){
    if(ajaxObj.readyState == 4 || ajaxObj.readyState == "complete"){
//        var resData = ajaxObj.responseText;
//        alert(resData);
//        if(resData.indexOf("OK") != -1){
//        }
    }
}

function printBoard(imgName){
    var url = 'index.jsp?act=getbimg&dir=1&in=' + imgName;
    window.open(url, 'print', 'menubar=1,resizable=1,scrollbars=1,width=850,height=500');
}

function sendResponse(url, handler){
    if(ajaxObj != null && sendState == 1){
        ajaxObj.abort();
        ajaxObj = null;
    }
    if(ajaxObj == null){
        ajaxObj = getAjaxObject();
    }
    ajaxObj.onreadystatechange = handler;
    ajaxObj.open("GET", url, true);
    ajaxObj.send(null);
    sendState = 1;
}

function handleErr(msg, url, l){
    txt = "There was an error on this page.\n\n";
    txt += "Error: " + msg + "\n";
    txt += "URL: " + url + "\n";
    txt += "Line: " + l + "\n\n";
    txt += "Click OK to continue.\n\n";
    alert(txt);
    return true;
}

function validateEmail(email) {
    var re_mail = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z])+$/;
    if(email.value.length == 0){
        return false;
    }else{
        if(!re_mail.test(email.value))
            return false;
        else
            return true;
    }
}

function rename(){
  var frm = document.getElementById("renameForm");
  myApplet.doAction("rename", frm.txtRenameInput.value);
  frm.txtRenameInput.value = "";
  return false;
}

function selectText(){
  document.getElementById("renameInput").select();
}

function getBoardName(){
  myApplet.doAction("getBoardName", "");
}

function hereTheName(name){
  if(!flagUpdated){
    boardName(name);
  }
}
function boardName(name){
  //alert("valeur de name : " + name);
  var frm = document.getElementById("renameForm");
  frm.txtRenameInput.value = name;
}

function clearRenameField(){
  var frm = document.getElementById("renameForm");
  frm.txtRenameInput.value = "";
}

function sendChat(){
    var frm = document.getElementById("chatForm");
    myApplet.doAction("Chat", frm.txtChatInput.value);
    frm.txtChatInput.value = "";
    return false;
}

function validateExtension(_localFile, _remoteFile){
  var ext;

  // --
  // extract the extension of the filename.
  if(_localFile.length > 4){
    ext = _localFile.substr(_localFile.length - 4);
  } else if(_remoteFile.length > 4){
    ext = _remoteFile.substr(_remoteFile.length - 4);
  }

  //
  // validate the file extension.
  if(ext.match("pdn")
    || ext.match("jpg")
    || ext.match("jpeg")
    || ext.match("jpe")
    || ext.match("bmp")
    || ext.match("gif")
    || ext.match("tif")
    || ext.match("tiff")
    || ext.match("tga")
    || ext.match("png")
    || ext.match("PDN")
    || ext.match("JPG")
    || ext.match("JPEG")
    || ext.match("JPE")
    || ext.match("BMP")
    || ext.match("GIF")
    || ext.match("TIF")
    || ext.match("TIFF")
    || ext.match("TGA")
    || ext.match("PNG")){
    // --
    // supported format
    return true;
  } else {
    // --
    // unsupported format
    alert("Image format not supported.");
    return false;
  }
}

function sendFile(){
  myApplet.doAction("send_file", "");
}

function getConfCall(){
    myApplet.doAction("conf", "");
}

function saveFileName(_filename){
//  alert("received filename : " + _filename);
  saveFilename = _filename;
  myApplet.doAction("Chat", _fileName);
}

function setChatMsg(msgStr){
    var divObj = document.getElementById("chatMsg");
    var tmpStr;
    var sentence;
    
    if(msgStr.indexOf("genLink") > -1){
      divObj.innerHTML += msgStr;
    } else {
      divObj.innerHTML += msgStr;
    }
    scrollDiv(divObj);
}

function scrollDiv(objDiv){
    var browSupport = objDiv.scrollHeight;
    if(browSupport){
        objDiv.scrollTop = objDiv.scrollHeight;
    }else{
        objDiv.scrollTop = objDiv.offsetHeight;
    }
}

function setTotalClient(count){
    var divObj = document.getElementById("userCount");
    if(divObj != null){
        if(count > 0){
            divObj.innerHTML = "Users Connected: " + count;
        }else{
            divObj.innerHTML = "Disconnected due to inactivity";
        }
   }
//    scrollDiv(divObj);
}

var binary;
var filename;

function upload() {
    var oThumbnail = document.getElementById("imgThumbnail");
    filename = document.getElementById('myfile').value;
    oThumbnail.src = "file:///" + escape(filename).replace(/%5C/gi,'/').replace(/%3A/gi,':');

    try {
        /*
            Note from the developer: rodboy
            If mozilla or netscape based browser then the img fileSize property will not work,
            therefore using the following will detect the file size.
        */

        netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
        // open the local file
        var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
        file.initWithPath( filename );
        var stream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
        stream.init(file,	0x01, 00004, null);
        var bstream =  Components.classes["@mozilla.org/network/buffered-input-stream;1"].getService();
        bstream.QueryInterface(Components.interfaces.nsIBufferedInputStream);
        bstream.init(stream, 1000);
        bstream.QueryInterface(Components.interfaces.nsIInputStream);
        binary = Components.classes["@mozilla.org/binaryinputstream;1"].createInstance(Components.interfaces.nsIBinaryInputStream);
        binary.setInputStream (stream);
        /*
            Note from the developer: rodboy
            Display the file size of the image using the binary method.
        */
        document.getElementById('sizespan').innerHTML = binary.available();

        binary = null;
        bstream = null;
        stream = null;
        file = null;
    } catch (e) {
        /* 
            Note from the developer: rodboy
            Either browser is IE, in which case the img onload event will take effect, or
            we'll not be able to detect the file size using the client side javascript.
        */
    }
    oThumbnail = null;
}

function getSize(oImg)
{
    if (oImg.fileSize >-1) {
        document.getElementById('sizespan').innerHTML = oImg.fileSize;
    }
}

function showAudio(group, user) {
    var srcURL = "http://api.phonefromhere.com/chatterbox/scriblink.xsql?"+
        "username="+user+"&group="+group+"&css=http://www.scriblink.com/sheets/audio.css";
    document.getElementById("phoneDiv").style.display="";
    document.getElementById("framePhoneFromHere").src=srcURL;
}

function showUrl(url) {
    var y=window.prompt("Your Board URL", url);
}

function S4() {
    return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
}

function generateUID() {
    return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()
        +"-"+S4()+S4()+S4()).toUpperCase();
}

var httpRequest;
//get xmlhttprequest
function getXmlHttp(){
  var xmlhttp;
  try {
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (e) {
    try {
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (E) {
      xmlhttp = false;
    }
  }
  if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
    xmlhttp = new XMLHttpRequest();
  }
  return xmlhttp;
}

function uploadMathImage(urlParam, name) {
    //var url = "http://www.scriblink.com/common/uploadImage.jsp?url="+
    //    urlParam+"&name="+name;
    //alert(urlParam);
    var loc = window.location.href;
    var url = "";
    if (loc.indexOf("www") != -1) {
        url = "http://www.scriblink.com/common/uploadImage.jsp?url="+
        urlParam+"&name="+name;
    }
    else {
        url = "http://scriblink.com/common/uploadImage.jsp?url="+
        urlParam+"&name="+name;
    }
    
    //var y=window.prompt("Your Board URL", url);
    httpRequest = getXmlHttp();
    //alert(httpRequest);
    httpRequest.onreadystatechange = testHandler;
    httpRequest.open("GET", url, true);
    httpRequest.send(null);	
}

function testHandler(){
    if(httpRequest.readyState == 4 || httpRequest.readyState == "complete"){
        var resData = httpRequest.responseText;
        //alert(resData);
    }
}

