var g_reqObj;
var g_regex = /(^[^\ ]{1,})/;
var g_timer = null;
var g_loftId = null;
var g_photoDiv = null;
var g_moduleName = null;
var g_datePicker = null;
var g_participantId = null;
var g_eventsAfterLoadMod = new Array();

function changeLoftSort(obj) {
  if (obj && obj.options) {
    window.parent.toggleStatusMessage();
    document.location = "?sort="+obj.options[obj.options.selectedIndex].value;
  }
}

function changeLoftSortArea(obj) {
  if (obj && obj.options) {
    window.parent.toggleStatusMessage();
    document.location = "?sort=neighborhood&area="+obj.options[obj.options.selectedIndex].value;
  }
}

function copyPageLinks() {
  var pageLinks = document.getElementById('pageLinks');
  var pageLinksHolder = document.getElementById('pageLinksHolder');
  if (pageLinks && pageLinksHolder) {
    pageLinksHolder.id = 'pageLinks';
    pageLinksHolder.innerHTML = pageLinks.innerHTML;
  }
}

function setClassName(fieldId,className) {
  var fieldObj = document.getElementById(fieldId);
  if (fieldObj) {
    fieldObj.className = className;
  }
}

function initClassName(fieldId) {
  var fieldObj = document.getElementById(fieldId);
  if (fieldObj && g_regex.test(fieldObj.value)) {
    fieldObj.className = 'cnClear';
  }
}

// load html doc
function loadHTMLDoc(e,functionName) {
  try {
    g_reqObj = new ActiveXObject("Msxml2.XMLHTTP");
  } catch(e) {
    try {
      g_reqObj = new ActiveXObject("Microsoft.XMLHTTP");
    } catch(oc) {
      g_reqObj = null;
    }
  }
  if (!g_reqObj && typeof XMLHttpRequest != "undefined") {
    g_reqObj = new XMLHttpRequest();
  }
  if (g_reqObj != null) {
    g_reqObj.onreadystatechange = functionName;
    g_reqObj.open("GET",e,true);
    g_reqObj.send(null);
  }
}

// post html form
function postHTMLForm(e,functionName,data) {
  try {
    g_reqObj = new ActiveXObject("Msxml2.XMLHTTP");
  } catch(e) {
    try {
      g_reqObj = new ActiveXObject("Microsoft.XMLHTTP");
    } catch(oc) {
      g_reqObj = null;
    }
  }
  if (!g_reqObj && typeof XMLHttpRequest != "undefined") {
    g_reqObj = new XMLHttpRequest();
  }
  if (g_reqObj != null) {
    g_reqObj.onreadystatechange = functionName;
    g_reqObj.open("POST",e,true);
    g_reqObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    g_reqObj.send(data);
  }
}


// process functions
function processClientList() {
  if (g_reqObj.readyState == 4 && g_reqObj.status == 200) {
    document.getElementById('clientList').innerHTML = g_reqObj.responseText;
    g_timer = null;
  }
}

function processLoftDetails() {
  if (g_reqObj.readyState == 4 && g_reqObj.status == 200 && g_loftId != null) {
    var anchorObj;
    if (anchorObj = document.getElementById('loftDetail_'+g_loftId)) {
      anchorObj.innerHTML = g_reqObj.responseText;
    }
    g_timer = null;
  }
}

function processLoftUnits() {
  if (g_reqObj.readyState == 4 && g_reqObj.status == 200 && g_loftId != null) {
    var anchorObj;
    if (anchorObj = document.getElementById('loftProp_'+g_loftId)) {
      var imgs = anchorObj.getElementsByTagName('img');
      if (imgs.length > 0) {
        anchorObj.parentNode.innerHTML = '<img src='+imgs[0].src+'><br>'+g_reqObj.responseText;
      }  
    }
    g_timer = null;
  }
}

function processHelpHint() {
  if (g_reqObj.readyState == 4 && g_reqObj.status == 200) {
    var helpHint = document.getElementById('helpHint');
    if (helpHint) {
      helpHint.innerHTML = g_reqObj.responseText;
      helpHint.style.display = 'block';
    }
    g_timer = null;
  }
}

function processSetFilter() {
  if (g_reqObj.readyState == 4 && g_reqObj.status == 200) {
    g_timer = null;
    // how about activating the filter?
    if (g_reqObj.responseText.length == 0) {
      document.location = '?rpp=filter';
    }
  }
}

function processGetLoftPhoto() {
  if (g_reqObj.readyState == 4 && g_reqObj.status == 200) {
    if (g_photoDiv == null) {
      g_photoDiv = document.createElement('div');
      g_photoDiv.id = 'floatPhoto';
      g_photoDiv.style.width = '159px';
      g_photoDiv.style.height = '124px';
      document.body.appendChild(g_photoDiv);
    }
    if (g_photoDiv != null) {
      var parts = g_reqObj.responseText.split("||");
      if (parts.length == 2) {
        var linkObj = document.getElementById(parts[0]);
        if (linkObj) {
          g_photoDiv.innerHTML = parts[1];
          g_photoDiv.style.top = getTopPos(linkObj)+'px';
          g_photoDiv.style.left = (getLeftPos(linkObj)-170)+'px';
          g_photoDiv.style.display = 'block';
        }
      }
    }
    g_timer = null;
  }
}

function processGetAgentPhoto() {
  if (g_reqObj.readyState == 4 && g_reqObj.status == 200) {
    if (g_photoDiv == null) {
      g_photoDiv = document.createElement('div');
      g_photoDiv.id = 'floatPhoto';
      g_photoDiv.style.width = '100px';
      g_photoDiv.style.height = '120px';
      document.body.appendChild(g_photoDiv);
    }
    if (g_photoDiv != null) {
      var parts = g_reqObj.responseText.split("||");
      if (parts.length == 2) {
        var linkObj = document.getElementById(parts[0]);
        if (linkObj) {
          g_photoDiv.innerHTML = parts[1];
          g_photoDiv.style.top = getTopPos(linkObj)+'px';
          g_photoDiv.style.left = (getLeftPos(linkObj)+100)+'px';
          g_photoDiv.style.display = 'block';
        }
      }
    }
    g_timer = null;
  }
}

function processGetClientSearchInfo() {
  if (g_reqObj.readyState == 4 && g_reqObj.status == 200) {
    if (g_photoDiv == null) {
      g_photoDiv = document.createElement('div');
      g_photoDiv.id = 'floatPhoto';
      g_photoDiv.style.width = '400px';
      g_photoDiv.style.padding = '6px 6px';
      g_photoDiv.style.textAlign = 'left';
      g_photoDiv.onmouseover = doShowNotes;
      g_photoDiv.onmouseout = tryHideNotes;
      g_photoDiv.onclick = tryHideNotes;
      g_photoDiv.style.backgroundColor = '#dddddd';
      document.body.appendChild(g_photoDiv);
    }
    if (g_photoDiv != null) {
      var parts = g_reqObj.responseText.split("||");
      if (parts.length == 2) {
        var linkObj = document.getElementById(parts[0]);
        if (linkObj) {
          g_photoDiv.innerHTML = parts[1];
          g_photoDiv.style.top = (getTopPos(linkObj)-3)+'px';
          g_photoDiv.style.left = (getLeftPos(linkObj)+170)+'px';
          g_photoDiv.style.display = 'block';
        }
      }
    }
    g_timer = null;
  }
}

function processToggleLoftStatus() {
  if (g_reqObj.readyState == 4 && g_reqObj.status == 200) {
    var parts = g_reqObj.responseText.split("||");
    if (parts.length == 2) {
      var imgObj = document.getElementById('st_'+parts[0]);
      if (imgObj) {
        if (parts[1] == 'disabled') {
          imgObj.src = '../images/status_disabled.gif';
          imgObj.title = "Click to enable loft";
        } else {
          imgObj.src = '../images/status_enabled.gif';
          imgObj.title = "Click to disable loft";
        }
      }
    }
    g_timer = null;
  }
}

function processToggleDelete() {
  if (g_reqObj.readyState == 4 && g_reqObj.status == 200) {
    var parts = g_reqObj.responseText.split("||");
    if (parts.length == 2) {
      var imgObj = document.getElementById('df_'+parts[0]);
      var rowObj = document.getElementById('row_'+parts[0]);
      if (imgObj && rowObj) {
        if (parts[1] == 'trash') {
          imgObj.src = '../images/trash.gif';
          imgObj.title = "Undelete";
        } else {
          imgObj.src = '../images/untrash.gif';
          imgObj.title = "Mark for deletion";
        }
        var colObjs = rowObj.getElementsByTagName('td');
        for (var i=0;i<colObjs.length;i++) {
          var col = colObjs[i];
          var colData = col.innerHTML;
          if (colData.toLowerCase().indexOf("</s>") > 0) {
            col.innerHTML = colData.substring(3,colData.length-4);
          } else {
            col.innerHTML = '<s>'+colData+'</s>';
          }
        }
      }
    }
    g_timer = null;
  }
}

function processShowFullNotes() {
  if (g_reqObj.readyState == 4 && g_reqObj.status == 200) {
    if (g_photoDiv == null) {
      g_photoDiv = document.createElement('div');
      g_photoDiv.id = 'floatPhoto';
      g_photoDiv.style.width = '250px';
      g_photoDiv.style.padding = '6px 6px';
      g_photoDiv.style.textAlign = 'left';
      g_photoDiv.onmouseover = doShowNotes;
      g_photoDiv.onmouseout = tryHideNotes;
      g_photoDiv.style.backgroundColor = '#dddddd';
      document.body.appendChild(g_photoDiv);
    }
    if (g_photoDiv != null) {
      var parts = g_reqObj.responseText.split("||");
      if (parts.length == 2) {
        var linkObj = document.getElementById(parts[0]);
        if (linkObj) {
          g_photoDiv.innerHTML = parts[1];
          g_photoDiv.style.top = (getTopPos(linkObj)-3)+'px';
          g_photoDiv.style.left = (getLeftPos(linkObj)-252)+'px';
          g_photoDiv.style.display = 'block';
        }
      }
    }
    g_timer = null;
  }
}

function processLoadModule() {
  var areaName = null;
  if (g_reqObj.readyState == 4 && g_reqObj.status == 200) {
    var parts = g_reqObj.responseText.split("||");
    if (parts.length == 2) {
      areaName = parts[0];
      var areaObj = document.getElementById(areaName);
      if (areaObj) {
        areaObj.firstChild.innerHTML = parts[1];
        if (g_eventsAfterLoadMod.length > 0) {
          for(var i=0;i<g_eventsAfterLoadMod.length;i++) {
            eval(g_eventsAfterLoadMod[i]);
          }
          g_eventsAfterLoadMod = new Array();
        }
      }
    } else {
      if (g_moduleName != null) {
        areaName = g_moduleName;
        var areaObj = document.getElementById(areaName);
        if (areaObj) {
          areaObj.firstChild.innerHTML = '<center><img id='+areaName+'Error src=../images/error_icon.png> ERROR LOADING</center>';
        }
      }
    }
  }
  if (areaName != null) {
    toggleClientInfo(areaName,true);
  }
}

function processSaveFormBackground() {
  if (g_reqObj.readyState == 4 && g_reqObj.status == 200) {
    // check for error before invoking actions
    if (g_reqObj.responseText.length > 0) {
      alert(g_reqObj.responseText);
    } else {
      if (g_doActionAfterPost.length > 0) {
        for (var i=0;i<g_doActionAfterPost.length;i++) {
          eval(g_doActionAfterPost[i]);
        }
        g_doActionAfterPost = new Array();
      }
    }
  }
}

function processParticipantList() {
  if (g_reqObj.readyState == 4 && g_reqObj.status == 200) {
    if (g_participantId) {
      var selectList = document.getElementById(g_participantId);
      if (selectList) {
        var newDiv = document.createElement('div');
        if (newDiv) {
          newDiv.style.display = 'inline';
          newDiv.innerHTML = '<select id='+g_participantId+' name='+g_participantId+
            ' onchange="determineNewParticipant(this);">'+g_reqObj.responseText+'</select>';
          var element = selectList.parentNode;
          if (element.tagName == 'div') {
            element = element.parentNode;
          }
          element.replaceChild(newDiv,selectList);
        }
      }
    }
    g_participantId = null;
    g_timer = null;
  }
}

function processAddToCommsLog() {
  if (g_reqObj.readyState == 4 && g_reqObj.status == 200) {
    if (g_reqObj.responseText.length > 0) {
      alert(g_reqObj.responseText);
    }
  }
}

function processShowContractHelp() {
  if (g_reqObj.readyState == 4 && g_reqObj.status == 200) {
    var contractHelpSpan = document.getElementById('contractHelp');
    if (contractHelpSpan) {
      contractHelpSpan.innerHTML = g_reqObj.responseText;
    }
  }
}

function processSetQuickDate() {
  if (g_reqObj.readyState == 4 && g_reqObj.status == 200) {
    var parts = g_reqObj.responseText.split('||');
    if (parts.length == 2) {
      var fieldObj = document.getElementById(parts[0]);
      if (fieldObj) {
        fieldObj.value = parts[1];
      }
    }
  }
}

function processMarkItemDone() {
  if (g_reqObj.readyState == 4 && g_reqObj.status == 200) {
    var imgObj = document.getElementById('img_'+g_reqObj.responseText);
    if (imgObj) {
      imgObj.src = '../images/status_enabled.gif';
      imgObj.title = 'Item done!';
      var hrefObj = imgObj.parentNode;
      if (hrefObj) {
        hrefObj.href = "javascript:alert('This item has been marked done already.');";
      }
    }
  }
}

// command functions
function doLookup(value,param) {
  if (g_regex.test(value) || g_regex.test(param)) {
    loadHTMLDoc('../common/getClientList.php?val='+value+'&clientId='+param+'&rnd='+Math.random(),processClientList);
    document.getElementById('clientList').style.display = 'inline';
  }else{
    document.getElementById('clientList').style.display = 'none';
  }
}

function tryLookup(fieldId,param) {
  var fieldObj = document.getElementById(fieldId);
  if (fieldObj) {
    if (g_timer != null) window.clearTimeout(g_timer);
    g_timer = window.setTimeout("doLookup('"+fieldObj.value+"','"+param+"')",450);
  }
}

function doParticipantLookup(value,param,ppl) {
  if (g_regex.test(value)) {
    g_participantId = param;
    loadHTMLDoc('../common/getParticipantList.php?val='+value+'&ppl='+ppl+'&rnd='+Math.random(),processParticipantList);
  }
}

function tryParticipantLookup(fieldId,param,ppl) {
  var fieldObj = document.getElementById(fieldId);
  if (fieldObj) {
    if (g_timer != null) window.clearTimeout(g_timer);
    g_timer = window.setTimeout("doParticipantLookup('"+fieldObj.value+"','"+param+"','"+ppl+"')",450);
  }
}

function getLoftUnits(anchor,props) {
  loadHTMLDoc('../shared/getLoftUnits.php?props='+props+'&anchor='+anchor+'&rnd='+Math.random(),processLoftUnits);
  g_loftId = anchor;
}

function getLoftDetails(anchor,prop) {
  loadHTMLDoc('../shared/getLoftDetails.php?prop='+prop+'&rnd='+Math.random(),processLoftDetails);
  g_loftId = anchor;
}

function getHelpHint(helpId) {
  loadHTMLDoc('../shared/getHelpHint.php?helpId='+helpId+'&rnd='+Math.random(),processHelpHint);
}

function setFilter(fieldId) {
  if (fieldId) {
    var fieldObj = document.getElementById(fieldId);
    if (fieldObj) {
      var val = '';
      switch (fieldObj.type) {
        case 'select-one':
          val = fieldObj.options[fieldObj.options.selectedIndex].value;
          break;
        case 'text':
        case 'password':
          val = fieldObj.value;
          break;
        case 'checkbox':
          val = (fieldObj.checked?'true':'false');
          break;
      }
      loadHTMLDoc('../shared/setFilter.php?id='+fieldId+'&val='+val+'&rnd='+Math.random(),processSetFilter);
    }
  }
}

function trySetFilter(fieldId) {
  if (fieldId) {
    var fieldObj = document.getElementById(fieldId);
    if (fieldObj) {
      if (g_timer != null) window.clearTimeout(g_timer);
      g_timer = window.setTimeout("doSetFilter('"+fieldId+"','"+fieldObj.value+"')",450);
    }
  }
}

function doSetFilter(fieldId,value) {
  loadHTMLDoc('../shared/setFilter.php?id='+fieldId+'&val='+value+'&rnd='+Math.random(),processSetFilter);
}

function tryGetLoftPhoto(photoId) {
  if (photoId) {
    if (g_timer != null) window.clearTimeout(g_timer);
    g_timer = window.setTimeout("doGetLoftPhoto('"+photoId+"')",400);
  }
}

function doGetLoftPhoto(photoId) {
  loadHTMLDoc('../shared/getLoftPhoto.php?id='+photoId+'&rnd='+Math.random(),processGetLoftPhoto);
}

function doHidePhoto() {
  if (g_photoDiv) {
    if (g_timer != null) window.clearTimeout(g_timer);
    g_photoDiv.style.display = 'none';
  }
}

function tryGetAgentPhoto(photoId) {
  if (photoId) {
    if (g_timer != null) window.clearTimeout(g_timer);
    g_timer = window.setTimeout("doGetAgentPhoto('"+photoId+"')",400);
  }
}

function doGetAgentPhoto(photoId) {
  loadHTMLDoc('../shared/getAgentPhoto.php?id='+photoId+'&rnd='+Math.random(),processGetAgentPhoto);
}

function tryGetClientSearchInfo(clientId) {
  if (clientId) {
    if (g_timer != null) window.clearTimeout(g_timer);
    g_timer = window.setTimeout("doGetClientSearchInfo("+clientId+")",400);
  }
}

function doGetClientSearchInfo(clientId) {
  loadHTMLDoc('../shared/getClientSearchInfo.php?clientId='+clientId+'&rnd='+Math.random(),processGetClientSearchInfo);
}

function doToggleItemStatus(funcId,itemId,rowId) {
  switch (funcId) {
    case 'loftDir':
      loadHTMLDoc('../shared/toggleItemStatus.php?funcId='+funcId+'&itemId='+itemId+'&rowId='+rowId+'&rnd='+Math.random(),processToggleLoftStatus);
      break;
  }
}

function tryShowFullNotes(comId) {
  if (comId) {
    if (g_timer != null) window.clearTimeout(g_timer);
    g_timer = window.setTimeout("doShowFullNotes('"+comId+"')",400);
  }
}

function doShowFullNotes(comId) {
  loadHTMLDoc('../shared/getFullNotes.php?id='+comId+'&rnd='+Math.random(),processShowFullNotes);
}

function tryHideNotes() {
  window.clearTimeout(g_timer);
  g_timer = window.setTimeout("doHidePhoto()",300);
}

function doShowNotes() {
  if (g_photoDiv) {
    if (g_timer != null) window.clearTimeout(g_timer);
    g_photoDiv.style.display = 'block';
  }
}

function doHideNotes() {
  if (g_photoDiv) {
    if (g_timer != null && g_photoDiv.style.display == 'none') window.clearTimeout(g_timer);
  }
}

function doToggleDelete(funcId,itemId,rowId) {
  switch (funcId) {
    case 'comms_log_id':
    case 'hood_id':
      loadHTMLDoc('../shared/toggleDelete.php?funcId='+funcId+'&itemId='+itemId+'&rowId='+rowId+'&rnd='+Math.random(),processToggleDelete);
      break;
  }
}

function doLoadModule(funcId,mode,itemId) {
  g_moduleName = funcId;
  var areaObj = document.getElementById(funcId);
  if (areaObj) {
    if (areaObj.style.display == '' || areaObj.firstChild.innerHTML == '') {
      areaObj.firstChild.innerHTML = '<center><img src=../images/loading.gif></center>';
      var uri = '../shared/getModuleInfo.php?id='+funcId+'&rnd='+Math.random();
      if (itemId) {
        uri += '&itemId='+itemId;
      }
      loadHTMLDoc(uri,processLoadModule);
    }
    toggleClientInfo(funcId,mode);
  }
}

function postForm(e,formId,functionName) {
  try {
    g_reqObj = new ActiveXObject("Msxml2.XMLHTTP");
  } catch(e) {
    try {
      g_reqObj = new ActiveXObject("Microsoft.XMLHTTP");
    } catch(oc) {
      g_reqObj = null;
    }
  }
  if (!g_reqObj && typeof XMLHttpRequest != "undefined") {
    g_reqObj = new XMLHttpRequest();
  }
  if (g_reqObj != null) {
    // build the data from the form for a post
    var formObj = document.getElementById(formId);
    if (formObj) {
      var dataArray = new Array();
      dataArray[0] = "formName="+formId;
      var els = formObj.elements;
      for (var i=0;i<els.length;i++) {
        if (els[i].name.length > 0) {
          switch (els[i].type) {
            case 'checkbox':
              dataArray[dataArray.length] = els[i].name+"="+(els[i].checked?'on':'');
              break;
            default:
              dataArray[dataArray.length] = els[i].name+"="+els[i].value;
              break;
          }
        }
      }
      //alert(dataArray.join("&"));
      if (dataArray.length > 0) {
        g_reqObj.onreadystatechange = functionName;
        g_reqObj.open("POST",e,true);
        g_reqObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        g_reqObj.send(dataArray.join("&"));
      }
    }
  }  
}

function trySetCustomDate(obj) {
  if (obj && obj.options) {
    if (obj[obj.options.selectedIndex].value == 'custom') {
      if (g_datePicker == null) {
        g_datePicker = document.createElement('div');
        g_datePicker.id = 'datePicker';
        g_datePicker.style.left = getLeftPos(obj)+"px";
        g_datePicker.style.top = (getTopPos(obj)+20)+"px";
        g_datePicker.style.display = 'none';
        var innerDiv = document.createElement('div');
        g_datePicker.appendChild(innerDiv);
        document.body.appendChild(g_datePicker);
      }
      if (g_datePicker) {
        g_datePicker.style.display = 'block';
        if (g_datePicker.firstChild.innerHTML == null || g_datePicker.firstChild.innerHTML.length == 0) {
          doLoadModule('datePicker');
        }
      }
    } else {
      if (g_datePicker) {
        g_datePicker.style.display = 'none';
      }
    }
  }
}

function setTheDate() {
  var fromDate = document.getElementById('fromDate');
  var toDate = document.getElementById('toDate');
  var quickMonth = document.getElementById('quickMonth');
  var quickYear = document.getElementById('quickYear');
  if (fromDate && toDate && quickMonth && quickYear) {
    loadHTMLDoc('../shared/setCustomDate.php?fromDate='+fromDate.value+'&toDate='+toDate.value+
      '&quickMonth='+quickMonth.value+'&quickYear='+quickYear.value+'&rnd='+Math.random(),processSetTheDate);
  }
}

function processSetTheDate() {
  if (g_reqObj.readyState == 4 && g_reqObj.status == 200) {
    if (g_reqObj.responseText.length > 0) {
      alert(g_reqObj.responseText);
    } else {
      var datePicker = document.getElementById('datePicker');
      if (datePicker) {
        datePicker.style.display = 'none';
        if (document.forms.length > 0) {
          document.forms[0].submit();
        }
      }
    }
  }
}

function addToCommsLog(comType,clientId,email) {
  loadHTMLDoc('../shared/addToCommsLog.php?comType='+comType+'&clientId='+clientId+'&email='+email+'&rnd='+Math.random(),processAddToCommsLog);
}


function showContractHelp(fieldObj) {
  if (fieldObj) {
    loadHTMLDoc('../shared/getContractHelp.php?fieldId='+fieldObj.id+'&rnd='+Math.random(),processShowContractHelp);
  }
}

function setQuickDate(fieldId,selObj) {
  if (fieldId && selObj.options) {
    loadHTMLDoc('../shared/getQuickDate.php?fieldId='+fieldId+'&daysOut='+selObj.options[selObj.options.selectedIndex].value+'&rnd='+Math.random(),processSetQuickDate);
  }
}

function markItemDone(itemId) {
  if (itemId > 999) {
    loadHTMLDoc('../shared/markItemDone.php?itemId='+itemId+'&rnd='+Math.random(),processMarkItemDone);
  }
}

