// ---------------------------------------------
// AJAX DATA GRID FUNCTIONS
// ---------------------------------------------
var checkForNewContentInProgress = false;


  function loadXMLDoc(inUrl) {
    if( window.XMLHttpRequest ) {
	  xmlreq = new XMLHttpRequest();
	  xmlreq.onreadystatechange = processReqChange;
	  xmlreq.open("GET", inUrl, true);
	  xmlreq.send(null);
	} else if ( window.ActiveXObject ) {
	  xmlreq = new ActiveXObject("Microsoft.XMLHTTP")
	  if( xmlreq ) {
	    xmlreq.onreadystatechange = processReqChange;
		xmlreq.open("GET", inUrl, true);
		xmlreq.send();
	  }
	}
  }

  function processReqChange() {
    if( xmlreq.readyState == 4 ) {
      if( xmlreq.status == 200 ) {
        parseXMLDoc();
//	window.status = "Received Data: " + (xmlreq.responseText.length);
//      } else {
//        window.status = "Communication Error: " + xmlreq.statusText;
      }
      xmlreq = null;
      checkForNewContentInProgress = false;
    }
  }

  function parseXMLDoc() {
    if( xmlreq.responseText == '0' ) {
      document.getElementById('badloginmsg').style.display = "";
    } else {
      document.forms['login'].submit();
    }
  }

  function loadData() {
    if( !checkForNewContentInProgress ) {
      checkForNewContentInProgress = true;
      loadXMLDoc(getDataSourceLink());
    }
  }

  function getDataSourceLink() {
    var strUsername = document.forms['login']._username.value;
    var strPassword = document.forms['login']._password.value;
    return "/verify_login.asp?_username=" + strUsername + "&_password=" + strPassword;
  }

// AJAX for registration
var checkForNewRegistrationInProgress = false;

  function loadRegistrationXMLDoc(inUrl) {
    if( inUrl.length > 0 ) {
    if( window.XMLHttpRequest ) {
	  xmlreqA = new XMLHttpRequest();
	  xmlreqA.onreadystatechange = processRegistrationReqChange;
	  xmlreqA.open("GET", inUrl, true);
	  xmlreqA.send(null);
	} else if ( window.ActiveXObject ) {
	  xmlreqA = new ActiveXObject("Microsoft.XMLHTTP")
	  if( xmlreqA ) {
	    xmlreqA.onreadystatechange = processRegistrationReqChange;
		xmlreqA.open("GET", inUrl, true);
		xmlreqA.send();
	  }
	}
    }
  }

  function processRegistrationReqChange() {
    if( xmlreqA.readyState == 4 ) {
      if( xmlreqA.status == 200 ) {
        parseRegistrationXMLDoc();
      }
      xmlreqA = null;
      checkForNewRegistrationInProgress = false;
    }
  }

  function parseRegistrationXMLDoc() {
    if( xmlreqA.responseText == '0' ) {
      document.getElementById('badregistrationmsg').style.display = "";
    } else {
      document.forms['registration'].submit();
    }
  }

  function loadRegistrationData() {
    if( !checkForNewRegistrationInProgress ) {
      checkForNewRegistrationInProgress = true;
      loadRegistrationXMLDoc(getRegistrationDataSourceLink());
    }
  }

  function getRegistrationDataSourceLink() {
    var strUsername = document.forms['registration']._username.value;
    var strPassword = document.forms['registration']._password.value;
    var strPasswordConfirm = document.forms['registration']._password_confirm.value;
    if( strPassword == strPasswordConfirm ) {
      return "/verify_registration.asp?_username=" + strUsername + "&_password=" + strPassword;
    } else {
      document.getElementById('badregistrationmsg').style.display = "";
      return "";
    }
  }


// AJAX for discussion

var checkForNewForumInProgress = false;

function loadForumXMLDoc(inUrl) {
    if( window.XMLHttpRequest ) {
	  xmlreqB = new XMLHttpRequest();
	  xmlreqB.onreadystatechange = processForumReqChange;
	  xmlreqB.open("GET", inUrl, true);
	  xmlreqB.send(null);
	} else if ( window.ActiveXObject ) {
	  xmlreqB = new ActiveXObject("Microsoft.XMLHTTP")
	  if( xmlreqB ) {
	    xmlreqB.onreadystatechange = processReqChange;
		xmlreqB.open("GET", inUrl, true);
		xmlreqB.send();
	  }
	}
}

function processForumReqChange() {
  if( xmlreqB.readyState == 4 ) {
      if( xmlreqB.status == 200 ) {
        parseForumXMLDoc();
      }
      xmlreqB = null;
      checkForNewForumInProgress = false;
    }
  }

function parseForumXMLDoc() {
  document.getElementById('forumsubnav').innerHTML = xmlreqB.responseText;
}

  function loadForumData() {
    if( !checkForNewForumInProgress ) {
      checkForNewForumInProgress = true;
      loadForumXMLDoc('discuss_subnav.asp');
    }
  }

// AJAX for new message count
var checkForNewMessageCountInProgress = false;

  function loadMessageCountXMLDoc(inUrl) {
    if( inUrl.length > 0 ) {
    if( window.XMLHttpRequest ) {
	  xmlreqC = new XMLHttpRequest();
	  xmlreqC.onreadystatechange = processMessageCountReqChange;
	  xmlreqC.open("GET", inUrl, true);
	  xmlreqC.send(null);
	} else if ( window.ActiveXObject ) {
	  xmlreqC = new ActiveXObject("Microsoft.XMLHTTP")
	  if( xmlreqC ) {
	    xmlreqC.onreadystatechange = processMessageCountReqChange;
		xmlreqC.open("GET", inUrl, true);
		xmlreqC.send();
	  }
	}
    }
  }

  function processMessageCountReqChange() {
    if( xmlreqC.readyState == 4 ) {
      if( xmlreqC.status == 200 ) {
        parseMessageCountXMLDoc();
      }
      xmlreqC = null;
      checkForNewMessageCountInProgress = false;
      loadTotalMessageCountData();
    }
  }

  function parseMessageCountXMLDoc() {
    document.getElementById('discuss_new').innerHTML = xmlreqC.responseText;
  }

  function loadMessageCountData() {
    if( !checkForNewMessageCountInProgress ) {
      checkForNewMessageCountInProgress = true;
      loadMessageCountXMLDoc(getMessageCountDataSourceLink());
    }
  }

  function getMessageCountDataSourceLink() {
    return "http://www.digsville.com/dashboard/discuss_subnav.asp?nav=new";
  }

// AJAX for total message count
var checkForTotalMessageCountInProgress = false;

  function loadTotalMessageCountXMLDoc(inUrl) {
    if( inUrl.length > 0 ) {
    if( window.XMLHttpRequest ) {
	  xmlreqD = new XMLHttpRequest();
	  xmlreqD.onreadystatechange = processTotalMessageCountReqChange;
	  xmlreqD.open("GET", inUrl, true);
	  xmlreqD.send(null);
	} else if ( window.ActiveXObject ) {
	  xmlreqD = new ActiveXObject("Microsoft.XMLHTTP")
	  if( xmlreqD ) {
	    xmlreqD.onreadystatechange = processTotalMessageCountReqChange;
		xmlreqD.open("GET", inUrl, true);
		xmlreqD.send();
	  }
	}
    }
  }

  function processTotalMessageCountReqChange() {
    if( xmlreqD.readyState == 4 ) {
      if( xmlreqD.status == 200 ) {
        parseTotalMessageCountXMLDoc();
      }
      xmlreqD = null;
      checkForTotalMessageCountInProgress = false;
    }
  }

  function parseTotalMessageCountXMLDoc() {
    document.getElementById('discuss_total').innerHTML = xmlreqD.responseText;
  }

  function loadTotalMessageCountData() {
    if( !checkForTotalMessageCountInProgress ) {
      checkForTotalMessageCountInProgress = true;
      loadTotalMessageCountXMLDoc(getTotalMessageCountDataSourceLink());
    }
  }

  function getTotalMessageCountDataSourceLink() {
    return "http://www.digsville.com/dashboard/discuss_subnav.asp?nav=total";
  }

// AJAX for message nav
var checkForMessageNavInProgress = false;

  function loadMessageNavXMLDoc(inUrl) {
    if( inUrl.length > 0 ) {
    if( window.XMLHttpRequest ) {
	  xmlreqE = new XMLHttpRequest();
	  xmlreqE.onreadystatechange = processMessageNavReqChange;
	  xmlreqE.open("GET", inUrl, true);
	  xmlreqE.send(null);
	} else if ( window.ActiveXObject ) {
	  xmlreqE = new ActiveXObject("Microsoft.XMLHTTP")
	  if( xmlreqE ) {
	    xmlreqE.onreadystatechange = processMessageNavReqChange;
		xmlreqE.open("GET", inUrl, true);
		xmlreqE.send();
	  }
	}
    }
  }

  function processMessageNavReqChange() {
    if( xmlreqE.readyState == 4 ) {
      if( xmlreqE.status == 200 ) {
        parseMessageNavXMLDoc();
      }
      xmlreqE = null;
      checkForMessageNavInProgress = false;
    }
  }

  function parseMessageNavXMLDoc() {
    var results = xmlreqE.responseXML;
    var navList = null;
    var navItem = null;
    var navName = "";
    var navCount = "";
    var navLink = "";
    var navList = results.getElementsByTagName("nav");
    if(navList.length<1)return;
    //add header of the search table
    //addHeader(); 
    //dynamically add search results in a table
    for(var i = 0; i < navList.length; i++) {
      navItem = navList[i];
      navName = navItem.getElementsByTagName("name")[0].firstChild.nodeValue;
      navCount = navItem.getElementsByTagName("count")[0].firstChild.nodeValue;
      navLink = navItem.getElementsByTagName("link")[0].firstChild.nodeValue;
      //creating new table row
      addTableRow(navName, navCount, navLink);
    }
    //document.getElementById("tblSearchResults").setAttribute("border", "1");
    //document.getElementById("tblSearchResults").setAttribute("class", "searchtable");
  }


  function addTableRow(fName, fCount, fLink) {
    var row = document.createElement("tr");
    var cell = createCellWithText(fName + ' (' + fCount + ')');
    cell.onclick=function(){selectCategory(this,fLink);}
    cell.className='leftNavMsgTD';
    cell.onmouseover=function(){this.className='leftNavMsgTDhighlight';}
    cell.onmouseout=function(){this.className='leftNavMsgTD';}
    row.appendChild(cell);
//    cell = createCellWithText(fCount);
//    row.appendChild(cell);
//    cell = createCellWithText(fLink);
//    row.appendChild(cell);
    document.getElementById("categoryResults").appendChild(row);
  }


  function loadMessageNavData(fCode) {
    if( !checkForMessageNavInProgress ) {
      checkForMessageNavInProgress = true;
      loadMessageNavXMLDoc(getMessageNavDataSourceLink(fCode));
    }
  }

  function getMessageNavDataSourceLink(fCode) {
    return "http://www.digsville.com/dashboard/discuss_subnav.asp?nav=" + fCode;
  }

// AJAX for messages
var checkForMessageInProgress = false;

  function loadMessageXMLDoc(inUrl) {
    if( inUrl.length > 0 ) {
    if( window.XMLHttpRequest ) {
	  xmlreqF = new XMLHttpRequest();
	  xmlreqF.onreadystatechange = processMessageReqChange;
	  xmlreqF.open("GET", inUrl, true);
	  xmlreqF.send(null);
	} else if ( window.ActiveXObject ) {
	  xmlreqF = new ActiveXObject("Microsoft.XMLHTTP")
	  if( xmlreqF ) {
	    xmlreqF.onreadystatechange = processMessageReqChange;
		xmlreqF.open("GET", inUrl, true);
		xmlreqF.send();
	  }
	}
    }
  }

  function processMessageReqChange() {
    if( xmlreqF.readyState == 4 ) {
      if( xmlreqF.status == 200 ) {
        parseMessageXMLDoc();
      }
      xmlreqF = null;
      checkForMessageInProgress = false;
    }
  }

  function parseMessageXMLDoc() {
    var results = xmlreqF.responseXML;
    var navItem = null;
    var msgId = ""
    var msgFrom = "";
    var msgTopic = "";
    var msgCity = "";
    var msgState = "";
    var msgCountry = "";
    var msgRating = "";
    var msgDate = "";
    var navList = results.getElementsByTagName("message");
    if(navList.length<1) {
//      addMessageTableRow("No results","","","","");
      return;
    }
    //dynamically add search results in a table
    for(var i = 0; i < navList.length; i++) {
      navItem = navList[i];
//alert(navItem.getElementsByTagName("city")[0].childNodes.length);
      msgId = navItem.getElementsByTagName("id")[0].firstChild.nodeValue;
      msgFrom = navItem.getElementsByTagName("senderName")[0].firstChild.nodeValue;
      msgTopic = navItem.getElementsByTagName("topicName")[0].firstChild.nodeValue;
      if(navItem.getElementsByTagName("city")[0].childNodes.length > 0) {
        msgCity = navItem.getElementsByTagName("city")[0].firstChild.nodeValue;
        msgState = navItem.getElementsByTagName("state")[0].firstChild.nodeValue;
        msgCountry = navItem.getElementsByTagName("country")[0].firstChild.nodeValue;
      } else {
        msgCity = "";
        msgState = "";
        msgCountry = "";
      }
      msgRating = navItem.getElementsByTagName("ratingName")[0].firstChild.nodeValue;
      msgDate = navItem.getElementsByTagName("timestamp")[0].firstChild.nodeValue;
      //creating new table row
      if(msgFrom.length>0) {
        addMessageTableRow(msgId, msgFrom, msgTopic, msgCity, msgState, msgCountry, msgRating, msgDate);
      }
    }
    //document.getElementById("tblSearchResults").setAttribute("border", "1");
    //document.getElementById("tblSearchResults").setAttribute("class", "searchtable");
  }


  function addMessageTableRow(fId, fFrom, fTopic, fCity, fState, fCountry, fRating, fDate) {
    var row = document.createElement("tr");
    row.className='leftNavTD';
//    row.onmouseover=function(){this.className='leftNavTDhighlight';showMessage(this);}
//    row.onmouseout=function(fId){this.className='leftNavTD';hideMessage(""+fId);}
    row.onmouseover=function(){this.className='leftNavTDhighlight';}
    row.onmouseout=function(fId){this.className='leftNavTD';}
    row.onclick=function(){showMessage(this);}
    var cell = createCellWithText(fId);
    cell.style.display = "none";
    row.appendChild(cell);
    cell = createCellWithText(fFrom);
//    cell.onclick=function(){alert(fLink);}
//    cell.className='leftNavTD';
//    cell.onmouseover=function(){this.className='leftNavTDhighlight';}
//    cell.onmouseout=function(){this.className='leftNavTD';}
    row.appendChild(cell);
    cell = createCellWithText(fTopic);
    row.appendChild(cell);
    if(fCity.length == 0) {
      cell = createCellWithText(' ');
    } else {
      cell = createCellWithText(fCity + ', ' + fState + ', ' + fCountry);
    }
    row.appendChild(cell);
    cell = createCellWithText(fRating);
    row.appendChild(cell);
    cell = createCellWithText(fDate);
    row.appendChild(cell);
    document.getElementById("messageResults").appendChild(row);
  }


  function loadMessageData(fCode) {
    if( !checkForMessageInProgress ) {
      checkForMessageInProgress = true;
      loadMessageXMLDoc(getMessageDataSourceLink(fCode));
    }
  }

  function getMessageDataSourceLink(fCode) {
    return "http://www.digsville.com/dashboard/discuss_msg.asp?" + fCode;
  }

// AJAX for message reading
var checkForMessageReadInProgress = false;

  function loadMessageReadXMLDoc(inUrl) {
    if( inUrl.length > 0 ) {
    if( window.XMLHttpRequest ) {
	  xmlreqG = new XMLHttpRequest();
	  xmlreqG.onreadystatechange = processMessageReadReqChange;
	  xmlreqG.open("GET", inUrl, true);
	  xmlreqG.send(null);
	} else if ( window.ActiveXObject ) {
	  xmlreqG = new ActiveXObject("Microsoft.XMLHTTP")
	  if( xmlreqG ) {
	    xmlreqG.onreadystatechange = processMessageReadReqChange;
		xmlreqG.open("GET", inUrl, true);
		xmlreqG.send();
	  }
	}
    }
  }

  function processMessageReadReqChange() {
    if( xmlreqG.readyState == 4 ) {
      if( xmlreqG.status == 200 ) {
        parseMessageReadXMLDoc();
      }
      xmlreqG = null;
      checkForMessageReadInProgress = false;
    }
  }

  function parseMessageReadXMLDoc() {
    var results = xmlreqG.responseXML;
    var navItem = null;
    var msgId = "";
    var msgFrom = "";
    var msgTo = "";
    var msgText = "";
    var msgDate = "";
    var navList = results.getElementsByTagName("message");
    if(navList.length<1) {
      //addMessageTableRow("No results","","","","");
      document.getElementById("msgSender").innerHTML = "";
      document.getElementById("msgReceiver").innerHTML = "";
      document.getElementById("msgDate").innerHTML = "";
      document.getElementById("msgText").innerHTML = "Unable to load message.";
      return;
    }
    //dynamically add search results in a table
    for(var i = 0; i < navList.length; i++) {
      navItem = navList[i];
      msgId = navItem.getElementsByTagName("id")[0].firstChild.nodeValue;
      msgFrom = navItem.getElementsByTagName("senderName")[0].firstChild.nodeValue;
      msgTo = navItem.getElementsByTagName("receiverName")[0].firstChild.nodeValue;
      msgDate = navItem.getElementsByTagName("timestamp")[0].firstChild.nodeValue;
      msgText = navItem.getElementsByTagName("messageText")[0].firstChild.nodeValue;
      document.getElementById("msgSender").innerHTML = msgFrom;
      document.getElementById("msgReceiver").innerHTML = msgTo;
      document.getElementById("msgDate").innerHTML = msgDate;
      document.getElementById("msgText").innerHTML = msgText.replace( /&lt;br&gt;/g, "<br>" );
      document.forms['msgReply'].disc_message.value = msgId;
    }
  }

  function loadMessageReadData(fCode) {
    if( !checkForMessageReadInProgress ) {
      checkForMessageReadInProgress = true;
      loadMessageReadXMLDoc(getMessageReadDataSourceLink(fCode));
    }
  }

  function getMessageReadDataSourceLink(fCode) {
    return "http://www.digsville.com/dashboard/discuss_read.asp?disc_message=" + fCode;
  }

// Utility functions

  function createCellWithText(text) {
    var cell = document.createElement("td");
    var textNode = document.createTextNode(text);
    cell.appendChild(textNode);
    return cell;
  }
