/*
DD Ajax lib
*/


/*=======================================================================
add the outerHTML setter for support on Firefox
=========================================================================*/
/*HTMLElement.prototype.__defineSetter__("outerHTML", function (sHTML) {
   var r = this.ownerDocument.createRange();
   r.setStartBefore(this);
   var df = r.createContextualFragment(sHTML);
   this.parentNode.replaceChild(df, this);
});*/

/*=======================================================================
ddRequest function
purpose:
	This function ... get ...
parameters:
	elemId : element that recieves the result
	ddUrl : the url that gives the result
	replaceElem : when true the result replaces the element identified by elemId 
								otherwise the result is placed inside the element.
=========================================================================*/

function ddRequest(elemId, lUrl, replaceElem) {
    var xmlhttp=false;
    /*@cc_on @*/
    /*@if (@_jscript_version >= 5)
    try {
        xmlhttp = new ActiveXObject('Msxml2.XMLHTTP');
    } catch (e) {
        try { xmlhttp = new ActiveXObject('Microsoft.XMLHTTP'); } catch (E) { xmlhttp = false; }
    }
    @end @*/
    if(!xmlhttp) { xmlhttp=new XMLHttpRequest(); }
    xmlhttp.open('GET',lUrl, true);
    xmlhttp.onreadystatechange = function() {
        if(xmlhttp.readyState==4) { 
        	if (replaceElem) {
        		document.getElementById(elemId).outerHTML =xmlhttp.responseText ; 
        	} else {
        		document.getElementById(elemId).innerHTML =xmlhttp.responseText ; 
        	}
        	execJS(document.getElementById(elemId));
        }
    }
    xmlhttp.setRequestHeader("Pragma", "no-cache");
		xmlhttp.setRequestHeader("Cache-Control","no-cache");

    xmlhttp.send(null);

}

function execJS(node)
{
  var bSaf = (navigator.userAgent.indexOf('Safari') != -1);
  var bOpera = (navigator.userAgent.indexOf('Opera') != -1);
  var bMoz = (navigator.appName == 'Netscape');

  if (!node) {alert("No node"); return};

  /* IE wants it uppercase */
  var st = node.getElementsByTagName('SCRIPT');
  var strExec;

  for(var i=0;i<st.length; i++)
  {
    //alert("Go!!!");
    if (bSaf) {
      strExec = st[i].innerHTML;
      st[i].innerHTML = "";
    } else if (bOpera) {
      strExec = st[i].text;
      st[i].text = "";
    } else if (bMoz) {
      strExec = st[i].textContent;
      st[i].textContent = "";
    } else {
      strExec = st[i].text;
      st[i].text = "";
    }

		//alert(strExec);

    try {
      var x = document.createElement("script");
      x.type = "text/javascript";

      /* In IE we must use .text! */
      if ((bSaf) || (bOpera) || (bMoz))
        x.innerHTML = strExec;
      else x.text = strExec;

      document.getElementsByTagName("head")[0].appendChild(x);
    } catch(e) {
      alert(e);
    }
  }
};

/*=======================================================================
ddPostForm
=========================================================================*/
function ddPostForm(elemId, ddUrl, replaceElem, frm, trgt ) {
	
    var xmlhttp=false;
  	var obj, subField;
    /*@cc_on @*/
    /*@if (@_jscript_version >= 5)
    try {
        xmlhttp = new ActiveXObject('Msxml2.XMLHTTP');
    } catch (e) {
        try { xmlhttp = new ActiveXObject('Microsoft.XMLHTTP'); } catch (E) { xmlhttp = false; }
    }
    @end @*/
    
		//get form vars
		if( checkForm(frm, '' ) )
		{
			subField = ( frm.elements[ 'DD_DIAG_TARGET' ] ) ? 'DD_DIAG_TARGET' : ( frm.elements[ 'subButton' ] ) ? 'subButton' : undef;
			if( frm.elements[ subField ] )
			{
				if( frm.elements[ subField ].type )
				{
					if( frm.elements[ subField ].type == 'hidden' )
					{
						frm.elements[ subField ].value = trgt;
					}
				}
			}
			else
			{
				// Do not no how to submit both DD_DIAG_TARGET and subButton are not defined.
				alert( 'Kan niet submitten zowel DD_DIAG_TARGET als subButton zijn niet gedefinieerd.');
			}
		}

		var str = getFormValues(frm,"validate");     
    
    if(!xmlhttp) { xmlhttp=new XMLHttpRequest(); }
    xmlhttp.open('GET',ddUrl + str, true);
    xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=ISO-8859-1"); 
    xmlhttp.onreadystatechange = function() {
        if(xmlhttp.readyState==4) { 
        	if (replaceElem) {
        		document.getElementById(elemId).outerHTML =xmlhttp.responseText ; 
        	} else {
        		document.getElementById(elemId).innerHTML =xmlhttp.responseText ; 
        	}
        	execJS(document.getElementById(elemId));
        }
    }
    xmlhttp.send(null);
		return false;
}

function getFormValues(fobj,valFunc) 
{ 
   var str = "?"; 
   var valueArr = null; 
   var val = ""; 
   var cmd = ""; 
   for(var i = 0;i < fobj.elements.length;i++) 
   { 
       switch(fobj.elements[i].type) 
       { 
           case "text": 
                /*if(valFunc) 
                { 
                    //use single quotes for argument so that the value of 
                    //fobj.elements[i].value is treated as a string not a literal 
                    cmd = valFunc + "(" + 'fobj.elements[i].value' + ")"; 
                    val = eval(cmd) 
                } */
                str += fobj.elements[i].name + 
                 "=" + escape(fobj.elements[i].value) + "&"; 
                 break; 
           case "select-one": 
                str += fobj.elements[i].name + 
                "=" + fobj.elements[i].options[fobj.elements[i].selectedIndex].value + "&"; 
                break; 
           case "hidden": 
                str += fobj.elements[i].name + 
                 "=" + escape(fobj.elements[i].value) + "&"; 
                 break; 
           case "checkbox":
           		if( fobj.elements[i].checked) {
                str += fobj.elements[i].name + 
                 "=" + escape(fobj.elements[i].value) + "&"; 
                 break; 
                }

       } 
   } 
   str = str.substr(0,(str.length - 1)); 
   return str; 

}



/*=======================================================================

=========================================================================*/


