﻿var httpRequest = null;
var where = "AjaxContent";
var StatusTagID = "AjaxStatus";
var SetFocusControlID = "";
var DynamicDivID = 0;

function DWAjaxGetURL(URL, ContentTag, StatusTag, SetFocusControl, ConfirmationText) {
    //updatepage('Fetching data....',divtag)
    //displayProgress(divtag)
    //ProgressIndicator.display();
    //makeRequest(url,divtag);
   
    
    if (typeof ConfirmationText != 'undefined' && ConfirmationText != "")
        {
                var answer = confirm (ConfirmationText)
                if (!answer)
                    return false;
        } 
    if (typeof StatusTag != 'undefined' && StatusTag != "")
        {
        StatusTagID = StatusTag;
        }
        else
        {
        StatusTagID = "AjaxStatus";
        }
    if (typeof SetFocusControl != 'undefined' && SetFocusControl != "")
        {
        SetFocusControlID = SetFocusControl;
        }
        else
        {
        SetFocusControlID = "";
        }
    if (typeof ContentTag != 'undefined' && ContentTag != "")
        {
        ContentTag = ContentTag;
        }
        else
        {
        ContentTag = "AjaxContent";
        }   
    where = ContentTag;
    makeRequest(URL); 
    return true;
}


//http://www.experts-exchange.com/Programming/Languages/Scripting/JavaScript/Q_21626069.html
function makeRequest(url) {
    if (url.indexOf('?') == -1) {
        url = url + '?';
    };
    url = url + '&zztimestamp=' + new Date().getTime();
    
     if (httpRequest != null && httpRequest.readyState != 0 && httpRequest.readyState != 4)
     {
          httpRequest.abort();
     }
     try
     {
          httpRequest = new XMLHttpRequest();
     }
     catch (error)
     {
          try
          {
               httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
          }
          catch (error)
          {
               httpRequest = null;               
               return false;
          }
     }
     httpRequest.onreadystatechange = showContents;
     httpRequest.open("GET", url, true);
     httpRequest.send(null);
     return true;
}

//trying this for a form post (hopefully does same as above with a post instead of a get):****************************************************

function DoFormPost(FormObj, GetURL, ResponseDivTag) {
      var getstr = "";
      getstr += getFormQueryStringValuePairs(FormObj);
      //alert(GetURL + getstr);
      //alert(ResponseDivTag);
      DWAjaxPostURL(GetURL , getstr, ResponseDivTag);
   } 
function DWAjaxPostURL(URL, parameters, ContentTag, StatusTag, SetFocusControl, ConfirmationText) {
    //updatepage('Fetching data....',divtag)
    //displayProgress(divtag)
    //ProgressIndicator.display();
    //makeRequest(url,divtag);
    //alert(parameters);
    if (typeof ConfirmationText != 'undefined' && ConfirmationText != "")
        {
                var answer = confirm (ConfirmationText)
                if (!answer)
                    return false;
        } 
    if (typeof StatusTag != 'undefined' && StatusTag != "")
        {
        StatusTagID = StatusTag;
        }
        else
        {
        StatusTagID = "AjaxStatus";
        }
    if (typeof SetFocusControl != 'undefined' && SetFocusControl != "")
        {
        SetFocusControlID = SetFocusControl;
        }
        else
        {
        SetFocusControlID = "";
        }
    if (typeof ContentTag != 'undefined' && ContentTag != "")
        {
        ContentTag = ContentTag;
        }
        else
        {
        ContentTag = "AjaxContent";
        }   
    where = ContentTag;
    makePOSTRequest(URL, parameters); 
    return true;
}
function makePOSTRequest(url, parameters) {
    if (url.indexOf('?') == -1) {
        url = url + '?';
    };
    url = url + '&zztimestamp=' + new Date().getTime();

    
     if (httpRequest != null && httpRequest.readyState != 0 && httpRequest.readyState != 4)
     {
          httpRequest.abort();
     }
     try
     {
          httpRequest = new XMLHttpRequest();
     }
     catch (error)
     {
          try
          {
               httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
          }
          catch (error)
          {
               httpRequest = null;               
               return false;
          }
      }
     httpRequest.onreadystatechange = showContents;
     httpRequest.open('POST', url, true);
     httpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
     httpRequest.setRequestHeader("Content-length", parameters.length);
     //httpRequest.setRequestHeader("Connection", "close");  //for some reason this kills it in IE
     httpRequest.send(parameters);
     return true;
}
//**************end of new code

function setStatusTag(StatusTagText){
    if (document.getElementById(StatusTagID)) {
        document.getElementById(StatusTagID).innerHTML = StatusTagText;
        }
    }
//this function isn't working yet!    
function inputSetFocus(){
//return;
        if (typeof SetFocusControlID != 'undefined' && SetFocusControlID != "")
        {
        //alert(SetFocusControlID);
        //try refreshing the content tag before calling this.
        document.getElementById(SetFocusControlID).focus();
        }
    }    

/* Execute the action which has been associated with the completion of this object */
function showContents()
{
     // If XMLHR object is loading
     if (httpRequest.readyState < 4)
     {
        //document.getElementById("loading").innerHTML = "<table class='Loading_content'><tr><td align='center'><div class='Loading_Text'>Loading<br><img src='images/loading.gif'></div></td></tr></table>";
        setStatusTag("<table class='AjaxStatus'><tr><td align='center'><div class='AjaxStatusText'>Loading<br><img src='images/loading.gif'></div></td></tr></table>");
     }
     // If XMLHR object has finished retrieving the data
     else if (httpRequest.readyState == 4)
     {
          // If the data was retrieved successfully
          try
          {
               if (httpRequest.status == 200)
               {
                    //document.getElementById("loading").innerHTML = "";
                    setStatusTag("");
                    document.getElementById(where).innerHTML = httpRequest.responseText;
                    //document.getElementByID(where).refresh;
                    inputSetFocus();
               }
               // IE returns a status code of 0 on some occasions, so ignore this case
               else if (httpRequest.status != 0)
               {
                    //document.getElementById("loading").innerHTML = "";
                    setStatusTag("");
                    alert("There was an error while making the request.");
                    alert("httpRequest.status=" + httpRequest.status);
               }
          }
          catch (error)
          {
          }
     }
     return true;
}



//FORM PROCESSING FUNCTIONS:






//creates getstr of all of FormObj's children tags and posts via get to GetURL and puts content into divtag
function DoFormGet(FormObj, GetURL, ResponseDivTag) {
      var getstr = "?";
      getstr += getFormQueryStringValuePairs(FormObj);
      //alert(GetURL + getstr);
      //alert(ResponseDivTag);
      DWAjaxGetURL(GetURL + getstr, ResponseDivTag);
   } 
     
//Gets the values of all of a form objects elements in a URL encoded QueryString:    
function getFormQueryStringValuePairs(obj) {
    var getstr = "";
    for (i=0; i<obj.elements.length; i++) {
            getstr += getInputQueryStringValuePair(obj.elements[i]);
            }
    return getstr      
    }
//returns a querystring value pair from an input object + an ampersand
function getInputQueryStringValuePair(obj) {
         if (obj.tagName == "INPUT") {
            if (obj.type == "text") {
               return obj.name + "=" + escape(obj.value) + "&";
            }
            if (obj.type == "hidden") {
               return obj.name + "=" + escape(obj.value) + "&";
            }            
            if (obj.type == "checkbox") {
               if (obj.checked) {
                  return obj.name + "=" + escape(obj.value) + "&";
               } else {
                  return obj.name + "=&";
               }
            }
            if (obj.type == "radio") {
               if (obj.checked) {
                  return obj.name + "=" + escape(obj.value) + "&";
               }
            }

         }   
         if (obj.tagName == "TEXTAREA") {
            if (obj.type == "textarea") {
               return obj.name + "=" + escape(obj.value) + "&";
            }             
         } 
         if (obj.tagName == "SELECT") {
            var sel = obj;
            return sel.name + "=" + escape(sel.options[sel.selectedIndex].value) + "&";
         }        
         return '';
      }

function addElement(TargetDiv, Content) {
  var ni = document.getElementById(TargetDiv);
  //var numi = document.getElementById('theValue');
  //var num = (document.getElementById('theValue').value -1)+ 2;
  //numi.value = num;
  DynamicDivID = DynamicDivID + 1;
  var num = DynamicDivID;
  var newdiv = document.createElement('div');
  var divIdName = 'AjaxDynamicDiv' + num;
  Content = Content.replace("[AJAXDynamicDiv]", divIdName);
  Content = Content.replace("[AJAXDynamicDivNumber]", DynamicDivID);
  newdiv.setAttribute('id',divIdName);
  //newdiv.innerHTML = 'Element Number '+num+' has been added! <a href='#' onclick='removeElement('+divIdName+')'>Remove the div "'+divIdName+'"</a>';
  newdiv.innerHTML = Content + '';
  ni.appendChild(newdiv);
}

function addAJAXElement(TargetDiv, URL) {
  var ni = document.getElementById(TargetDiv);
  DynamicDivID = DynamicDivID + 1;
  var num = DynamicDivID;
  var newdiv = document.createElement('div');
  var divIdName = 'AjaxDynamicDiv' + num;
  //Content = Content.replace("[AJAXDynamicDiv]", divIdName);
  //Content = Content.replace("[AJAXDynamicDivNumber]", DynamicDivID);
  newdiv.setAttribute('id',divIdName);
  newdiv.innerHTML = 'Loading...';
  ni.appendChild(newdiv);
  URL =  URL + "&AjaxContentTag=" + divIdName;
  DWAjaxGetURL(URL, divIdName);
}

function removeElement(TargetDiv) {
  var d = document.getElementById(TargetDiv).parentNode;
  var olddiv = document.getElementById(TargetDiv);
  d.removeChild(olddiv);
}


//OLD Stuff:

//form processing functions

//GetForm return a query string of all of the data on a form for use with form posts:
   function GetForm(obj) {
        //alert(document.getElementById(FormObj).childNodes.length);
      //var obj = document.getElementById(FormObj);
      
      var getstr = "?";
      for (i=0; i<obj.childNodes.length; i++) {
            //alert(obj.childNodes[i].name+obj.childNodes[i].type+obj.childNodes[i].tagName);
            alert(obj.childNodes[i].name);
         if (obj.childNodes[i].tagName == "INPUT") {
            if (obj.childNodes[i].type == "text") {
               getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
            }
            if (obj.childNodes[i].type == "checkbox") {
               if (obj.childNodes[i].checked) {
                  getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
               } else {
                  getstr += obj.childNodes[i].name + "=&";
               }
            }
            if (obj.childNodes[i].type == "radio") {
               if (obj.childNodes[i].checked) {
                  getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
               }
            }
         }
         if (obj.childNodes[i].tagName == "TEXTAREA") {
            if (obj.childNodes[i].type == "textarea") {
               getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
            }             
         }  
         if (obj.childNodes[i].tagName == "SELECT") {
            var sel = obj.childNodes[i];
            getstr += sel.name + "=" + sel.options[sel.selectedIndex].value + "&";
         }   
      }
      alert(getstr);
      return getstr;
   }

function get(obj) {
      var getstr = "?";
      //alert(obj.childNodes.length);
      for (i=0; i<obj.childNodes.length; i++) {
      //alert(obj.childNodes[i].name+obj.childNodes[i].type+obj.childNodes[i].tagName);
        //getstr += getInputQueryStringValuePair(obj.childNodes[i])
        getstr += getChildrenInputQueryStringValuePairs(obj.childNodes[i])
      }
      //DWAjaxGetURL(url, divtag)
      //makeRequest('activeandcoveredemployeelist.asp', getstr);
   }  

       
       
   
   
function UpdateDivTag(str, DivTag){
    document.getElementById(DivTag).innerHTML = str;
    //document.getElementById(divtag).refresh;
    //alert(str);
    
}

function doformtest(form, divtag) {
    
    //get(document.getElementById ('Form1'));
    var str = GetForm('Form1');
    UpdateDivTag(str, 'TestTag');
    
}



function getOld(obj) {
      var getstr = "?";
      //alert(obj.childNodes.length);
      for (i=0; i<obj.childNodes.length; i++) {
      //alert(obj.childNodes[i].name+obj.childNodes[i].type+obj.childNodes[i].tagName);
         if (obj.childNodes[i].tagName == "INPUT") {
            if (obj.childNodes[i].type == "text") {
               getstr += obj.childNodes[i].name + "=" + escape(obj.childNodes[i].value) + "&";
            }
            if (obj.childNodes[i].type == "hidden") {
               getstr += obj.childNodes[i].name + "=" + escape(obj.childNodes[i].value) + "&";
            }            
            if (obj.childNodes[i].type == "checkbox") {
               if (obj.childNodes[i].checked) {
                  getstr += obj.childNodes[i].name + "=" + escape(obj.childNodes[i].value) + "&";
               } else {
                  getstr += obj.childNodes[i].name + "=&";
               }
            }
            if (obj.childNodes[i].type == "radio") {
               if (obj.childNodes[i].checked) {
                  getstr += obj.childNodes[i].name + "=" + escape(obj.childNodes[i].value) + "&";
               }
            }

         }   
         if (obj.childNodes[i].tagName == "TEXTAREA") {
            if (obj.childNodes[i].type == "textarea") {
               getstr += obj.childNodes[i].name + "=" + escape(obj.childNodes[i].value) + "&";
            }             
         } 
         if (obj.childNodes[i].tagName == "SELECT") {
            var sel = obj.childNodes[i];
            getstr += sel.name + "=" + escape(sel.options[sel.selectedIndex].value) + "&";
         }        
      }
      alert(getstr);
      //makeRequest('activeandcoveredemployeelist.asp', getstr);
   }  


//Returns URL Encoded QueryString Value Pairs for all fields contained in obj and obj's children...
//This thing locks up the browser in an infinate loop!
function getChildrenInputQueryStringValuePairs(obj) {
    var getstr = "";
        //alert(obj.name + ' ' + obj.childNodes.length);
        if (obj.childNodes.length>0)
            {for (i=0; i<obj.childNodes.length; i++) {
                  //alert(obj.childNodes[i].name+obj.childNodes[i].type+obj.childNodes[i].tagName);
                    getstr += getChildrenInputQueryStringValuePairs(obj.childNodes[i]);
                    }
                {getstr += getInputQueryStringValuePair(obj);}
                }
            else
            {getstr += getInputQueryStringValuePair(obj);}
      return getstr      
    }
    
    
    
function DW_SetCheckBoxGroup (form, checkboxname, ischecked) {	
   checklength = checkboxname.length;
   
   for (var c = 0; c < form.elements.length; c++)
   {
   if (form.elements[c].type == 'checkbox' && form.elements[c].name.substring(0,checklength)==checkboxname)
      form.elements[c].checked = ischecked;
   }
}    

function DW_SetRadioButtonGroup (form, checkboxname, setvalue) {	
   checklength = checkboxname.length;
   
   for (var c = 0; c < form.elements.length; c++)
   {
   if (form.elements[c].type == 'radio' && form.elements[c].name.substring(0,checklength)==checkboxname)
      if (form.elements[c].value == setvalue)
         form.elements[c].checked = true;
   }
}  

function DW_ClearRadioButtonGroup(buttonGroup){
   for (i=0; i < buttonGroup.length; i++) {
    if (buttonGroup[i].checked == true) {
    buttonGroup[i].checked = false
    }
   }
}

