var nr_xmlhttpreq;
var dm_xmlhttpreq;
var snd_xmlhttpreq;
var del_xmlhttpreq;
var invite_xmlhttpreq;
var inq_xmlhttpreq;
var pvtMsgDivId;
var msgBoxPanel = null;
var rgstrBoxPanel;
var pvtMsgType;
var confirmDeletePanel;
var vdeleting;
var vcontext;

function initConnectTab()
{
   var my_lid = document.getElementById("my_lid").innerHTML;
   var my_ftype = document.getElementById("my_ftype").innerHTML;

   initNoteBar(my_lid, my_ftype, "nw");
   initDiscuss(my_lid);
}

function updateClient()
{
    var my_lid = null;
    var my_ftype = null;

    if (document.getElementById("my_lid") == null) {
        g_enableTabNotes(true);
        return;
    } else {
        my_lid = document.getElementById("my_lid").innerHTML;
        my_ftype = document.getElementById("my_ftype").innerHTML;
    }

    nr_xmlhttpreq = false;
    if (window.XMLHttpRequest) { // Mozilla, Safari,...
	nr_xmlhttpreq = new XMLHttpRequest();
	if (nr_xmlhttpreq.overrideMimeType) {
	    nr_xmlhttpreq.overrideMimeType('text/html');
	}
    } else if (window.ActiveXObject) { // IE
	try {
	    nr_xmlhttpreq = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
	    try {
		nr_xmlhttpreq = new ActiveXObject("Microsoft.XMLHTTP");
	    } catch (e) {}
	}
    }
    if (!nr_xmlhttpreq) {
	alert('Cannot create XMLHTTP instance');
	return false;
    }
    
    nr_xmlhttpreq.onreadystatechange = insertNotes;

    var url= noCache1("http://www.zoomatlas.com/notebar/LoadNotes.php?lid=" + my_lid + "&ft=" + my_ftype);

    nr_xmlhttpreq.open('GET', url, true);
    nr_xmlhttpreq.send(null);
}

function insertNotes()
{
    if (nr_xmlhttpreq.readyState == 4) {
        if (nr_xmlhttpreq.status == 200) {
            var response = nr_xmlhttpreq.responseText;
            document.getElementById('messages').innerHTML = response;        
        } else {
            alert("insertNotes: problem with request");
        }
    }
}

function updateMessages()
{
    dm_xmlhttpreq = false;

    if (window.XMLHttpRequest) { // Mozilla, Safari,...
	dm_xmlhttpreq = new XMLHttpRequest();
	if (dm_xmlhttpreq.overrideMimeType) {
	    dm_xmlhttpreq.overrideMimeType('text/html');
	}
    } else if (window.ActiveXObject) { // IE
	try {
	    dm_xmlhttpreq = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
	    try {
		dm_xmlhttpreq = new ActiveXObject("Microsoft.XMLHTTP");
	    } catch (e) {}
	}
    }

    if (!dm_xmlhttpreq) {
	alert('Cannot create XMLHTTP instance');
	return false;
    }
   
    dm_xmlhttpreq.onreadystatechange = insertMessages;

    var url = noCache1("http://www.zoomatlas.com/notebar/LoadDiscussion.php?lid=" + notebar_lid);

    dm_xmlhttpreq.open('GET', url, true);
    dm_xmlhttpreq.send(null);
}

// Called after a note has been inserted in database
function insertMessages()
{
     if (dm_xmlhttpreq.readyState == 4) {
        if (dm_xmlhttpreq.status == 200) {
            var response = dm_xmlhttpreq.responseText;
            var discussionDiv = document.getElementById('discussion');
	    // If the note was posted from a popup and there is no discussion div to update, do nothing
	    if (discussionDiv == null) { return; }
            document.getElementById('discussion').innerHTML = response;
        } else {
            alert("insertMessages: problem with request");
        }
    }
}

function noCache1(uri){
    return uri.concat(/\?/.test(uri)?"&":"?","noCache=",(new Date).getTime(),".",Math.random()*1234567);
}

function displayPrivateMsgBox(message_id, to_userid, type)
{
    pvtMsgType = type;
    pvt_xmlhttpreq = false;
    if (window.XMLHttpRequest) { // Mozilla, Safari,...
        pvt_xmlhttpreq = new XMLHttpRequest();
        if (pvt_xmlhttpreq.overrideMimeType) {
            pvt_xmlhttpreq.overrideMimeType('text/html');
        }
    } else if (window.ActiveXObject) { // IE
        try {
            pvt_xmlhttpreq = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                pvt_xmlhttpreq = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }
    if (!pvt_xmlhttpreq) {
        alert('Cannot create XMLHTTP instance');
        return false;
    }

    pvt_xmlhttpreq.onreadystatechange = processPvtMsgForm;

    var url= noCache1("http://www.zoomatlas.com/notebar/PvtMsgBox.php?to=" + to_userid+"&note=" + message_id);
    pvtMsgDivId = message_id;
    pvt_xmlhttpreq.open('GET', url, true);
    pvt_xmlhttpreq.send(null);
}

function processPvtMsgForm()
{
     if (pvt_xmlhttpreq.readyState == 4) {
        if (pvt_xmlhttpreq.status == 200) {
          var response = pvt_xmlhttpreq.responseText;

          msgBoxPanel =  new YAHOO.widget.Panel("msgBoxPanel" + pvtMsgDivId, 
	    {
		width:"320px", 
		visible:true,
		draggable:true, 
		close:true,
	   	constraintoviewport:true,
		context:['notebarReply' + pvtMsgDivId,'br','bl']
	    }
	  );
          msgBoxPanel.setHeader("Send a private message.");
          msgBoxPanel.setBody(response);
          //msgBoxPanel.render("notebarReply" + pvtMsgDivId);
	  msgBoxPanel.render(document.body);
          return false;
       }
   }
}

function cancelPvtMsg()
{
    if (msgBoxPanel != null) {
       msgBoxPanel.hide();
       msgBoxPanel = null;
    }
}

function closeRgstrMsg()
{
   rgstrBoxPanel.hide();
}

function closeVerifyMsg()
{
   confirmDeletePanel.hide();
}

function sendPvtMsg(userId, msgId)
{
   var messageElement = document.getElementById("pvtMsg");
   var pvtMsg;
   if (messageElement!="null")
   {
      pvtMsg = messageElement.value;
   }
   snd_xmlhttpreq = false;
   if (window.XMLHttpRequest) { // Mozilla, Safari,...
	snd_xmlhttpreq = new XMLHttpRequest();
	if (snd_xmlhttpreq.overrideMimeType) {
	    snd_xmlhttpreq.overrideMimeType('text/xml');
	}
    } else if (window.ActiveXObject) { // IE
	try {
	    snd_xmlhttpreq = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
	    try {
		snd_xmlhttpreq = new ActiveXObject("Microsoft.XMLHTTP");
	    } catch (e) {}
	}
    }
    if (!snd_xmlhttpreq) {
	alert('Cannot create XMLHTTP instance');
	return false;
    }
    
    snd_xmlhttpreq.onreadystatechange = processSentMsg;

    var url = "";

    if (pvtMsgType == "myplaces")
    {
       url = noCache1("http://www.zoomatlas.com/NoteMan/NoteBar?op=pvtmsg&mid=" + msgId + "&uid=" +userId + "&msg=" + escape(pvtMsg));
    }
    else if (pvtMsgType == "find")
    {
       url = noCache1("http://www.zoomatlas.com/NoteMan/NoteBar?op=pvtfindmsg&mid=" + msgId + "&uid=" +userId + "&msg=" + escape(pvtMsg));
    }

    snd_xmlhttpreq.open('GET', url, true);
    snd_xmlhttpreq.send(null);
}

function processSentMsg()
{
    if (snd_xmlhttpreq.readyState == 4) {
        if (snd_xmlhttpreq.status == 200) {
          var xmlDoc = snd_xmlhttpreq.responseXML.documentElement; 
          var resultArray = xmlDoc.getElementsByTagName('Result');
          var successDisplay;
          if (resultArray[0].firstChild.nodeValue == "OK") {
          //if (true) {
             successDisplay = "Your message was sent successfully.<br/><input type='button' value='OK' onclick='cancelPvtMsg();'>";
          } else {
            successDisplay = "ERROR: Your message could not be sent.<br/><input type='button' value='OK' onclick='cancelPvtMsg();'>";
          }
          msgBoxPanel.setBody(successDisplay);
        }
    }
}

function updateInvites()
{
    invite_xmlhttpreq = false;
    if (window.XMLHttpRequest) { // Mozilla, Safari,...
	invite_xmlhttpreq = new XMLHttpRequest();
	if (invite_xmlhttpreq.overrideMimeType) {
	    invite_xmlhttpreq.overrideMimeType('text/html');
	}
    } else if (window.ActiveXObject) { // IE
	try {
	    invite_xmlhttpreq = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
	    try {
		invite_xmlhttpreq = new ActiveXObject("Microsoft.XMLHTTP");
	    } catch (e) {}
	}
    }
    if (!invite_xmlhttpreq) {
	alert('Cannot create XMLHTTP instance');
	return false;
    } 
    invite_xmlhttpreq.onreadystatechange = insertInvites;

    var url= noCache1("http://www.zoomatlas.com/notebar/LoadInvites.php?lid=" + notebar_lid + "&ft=" + nbfeatureType);

    invite_xmlhttpreq.open('GET', url, true);
    invite_xmlhttpreq.send(null);
}

function insertInvites()
{
   if (invite_xmlhttpreq.readyState == 4) {
        if (invite_xmlhttpreq.status == 200) {
            var response = invite_xmlhttpreq.responseText;
            document.getElementById('invites').innerHTML = response;
        } else {
            alert("insertInvites: problem with request");
        }
    }
}

function updateFind()
{
    inq_xmlhttpreq = false;

    if (window.XMLHttpRequest) { // Mozilla, Safari,...
	inq_xmlhttpreq = new XMLHttpRequest();
	if (inq_xmlhttpreq.overrideMimeType) {
	    inq_xmlhttpreq.overrideMimeType('text/html');
	}
    }else if (window.ActiveXObject) { // IE
	try {
	    inq_xmlhttpreq = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
	    try {
		inq_xmlhttpreq = new ActiveXObject("Microsoft.XMLHTTP");
	    } catch (e) {}
	}
    }

    if (!inq_xmlhttpreq) {
	alert('Cannot create XMLHTTP instance');
	return false;
    }

    inq_xmlhttpreq.onreadystatechange = insertInqueries;

    var url= noCache1("http://www.zoomatlas.com/notebar/LoadFinds.php?lid=" + notebar_lid + "&ft=" + nbfeatureType);

    inq_xmlhttpreq.open('GET', url, true);
    inq_xmlhttpreq.send(null);
}

function insertInqueries()
{
   if (inq_xmlhttpreq.readyState == 4) {
        if (inq_xmlhttpreq.status == 200) {
            var response = inq_xmlhttpreq.responseText;
            if (document.getElementById('finds'))
                document.getElementById('finds').innerHTML = response;

        } else {
            alert("insertInvites: problem with request");
        }
    }
}

function askToRegister()
{
    rgstrBoxPanel =  new YAHOO.widget.Panel("rgstrBoxPanel",
    {
        width:"320px",
        visible:true,
        draggable:true,
        close:true,
        constraintoviewport:true,
	context:['demo','br','bl']
    } );

    rgstrBoxPanel.setHeader("Please Log In/Register.");

    var askRegister = "<table width='300' align='center'><tr><td colspan='2'>Unregistered users cannot mark locations or look for people. Please login at the top of the page or click on the button below to register.</tr><tr><td><input type='button' value='Register Now' onclick='location.href=\"http://www.zoomatlas.com/mediawiki/skins/za_skin/UserAccount.php\"'></td><td><input type='button' value  = 'No, thank you' onclick='closeRgstrMsg()'></td></tr></table>";

    rgstrBoxPanel.setBody(askRegister);
    rgstrBoxPanel.render(document.body);
}

function loggedIn()
{
    var theCookies = document.cookie.split(/[; ]+/);
    for (var i = 0 ; i < theCookies.length; i++) {
        var aName = theCookies[i].substring(0,theCookies[i].indexOf('='));
        if (aName == "UserId") {
            return true;	
        }
    }
    return false;
}

function deleteNote(note_id )
{
   vdeleting ="note";
   vcontext = "newConnectHere";
   verifyDelete(note_id);
}

function deleteComment(cmt_id)
{
   vdeleting = "comment";
   vcontext = "newDiscussHere";
   verifyDelete(cmt_id);
}

function deleteFind(find_id)
{
   vdeleting = "find item";
   vcontext = "newInviteHere";
   verifyDelete(find_id);
}

function verifyDelete(post_id)
{
       confirmDeletePanel  =  new YAHOO.widget.Panel("confirmDeletePanel",
            {
                width:"320px",
                visible:true,
                draggable:true,
                close:true,
                constraintoviewport:true,
		context:[vcontext,'tr','tl']
            }
          );
          confirmDeletePanel.setHeader("Delete " + vdeleting + "?");
          var confirmDelete = "<table width='300' align='center'><tr><td colspan='2'>Are you sure you wish to delete your " + vdeleting +"?</tr><tr><td><input type='button' value='Yes' onclick='deletePost(" + post_id + ")'></td><td><input type='button' value  = 'No' onclick='closeVerifyMsg()'></td></tr></table>"; 
          confirmDeletePanel.setBody(confirmDelete);
          confirmDeletePanel.render(document.body);
}

function deletePost(postId)
{
   del_xmlhttpreq = false;
   if (window.XMLHttpRequest) { // Mozilla, Safari,...
	del_xmlhttpreq = new XMLHttpRequest();
	if (del_xmlhttpreq.overrideMimeType) {
	    del_xmlhttpreq.overrideMimeType('text/html');
	}
    } else if (window.ActiveXObject) { // IE
	try {
	    del_xmlhttpreq = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
	    try {
		del_xmlhttpreq = new ActiveXObject("Microsoft.XMLHTTP");
	    } catch (e) {}
	}
    }
    if (!del_xmlhttpreq) {
	alert('Cannot create XMLHTTP instance');
	return false;
    }
    
    del_xmlhttpreq.onreadystatechange = processDelete;

    var url = "";
    var iZoom = getZoomLevel();

    if (vdeleting == "note")
    {
       url = noCache1("http://www.zoomatlas.com/NoteMan/NoteBar?op=delloc&id=" + postId + "&zoom=" + iZoom);
    }
    else if (vdeleting == "comment")
    {
       url = noCache1("http://www.zoomatlas.com/NoteMan/NoteBar?op=delmsg&id=" + postId + "&zoom=" + iZoom);
    }
    else if (vdeleting == "find item")
    {
       url = noCache1("http://www.zoomatlas.com/NoteMan/NoteBar?op=delfind&id=" + postId + "&zoom=" + iZoom);
    }

    del_xmlhttpreq.open('GET', url, true);
    del_xmlhttpreq.send(null);
}

function getZoomLevel()
{
    var iZoom = parseInt(ibFloatPanelZ);

    if (isNaN(iZoom)) {
        iZoom = 15;
    }

    return iZoom;
}

function processDelete()
{
  if (del_xmlhttpreq.readyState == 4) {
        if (del_xmlhttpreq.status == 200) {
       	  var xmlDoc = del_xmlhttpreq.responseXML;
          //var resultArray = xmlDoc.getElementsByTagName('Result');
          var successDisplay;
          //if (resultArray[0].firstChild.nodeValue == "OK") {
          if (true) {
             successDisplay = "Your " + vdeleting + " was deleted successfully.<br/><input type='button' value='OK' onclick='closeVerifyMsg();'>";
             doRedrawMap(xmlDoc);
          } else {
            successDisplay = "ERROR: Your " +  vdeleting + " could not be deleted.<br/><input type='button' value='OK' onclick='closeVerifyMsg();'>";
          }
          confirmDeletePanel.setBody(successDisplay);
          if (vdeleting == "note") {
              vdeleting = "";
              updateClient();
          } else if (vdeleting == "comment") {
              vdeleting = "";
              updateMessages();
          } else if (vdeleting == "find item") {
              vdeleting = "";
              updateFind();
          }
      }
   }
}

function noteWidgetFocus()
{
  alert("b");
  postNote();
  return true;
}
