/* 2010-02-03
   mostly from w3schools.com */

/* Strings */
var s_BrNotSupXhttp = "Your browser does not support XMLHTTP!"

/* AJAX 
   for a synchronous call (wait-till-response-come) 
   pass "false" as the third parameter in the .open method */
var xhttp

function GetAjaxObj() {
 if (window.XMLHttpRequest){/*IE7+, FF, Chrome, Opera, Safari*/ return new XMLHttpRequest();
   if (http_request.overrideMimeType) {/* set type accordingly to anticipated content type*/
     /*http_request.overrideMimeType('text/xml');*/ http_request.overrideMimeType('text/html');}
     }
 if (window.ActiveXObject){/*IE6, IE5*/ return new ActiveXObject("Microsoft.XMLHTTP");}
    {/*OR... alt.way for IE- try {http_request = new ActiveXObject("Msxml2.XMLHTTP");} catch (e) {try {http_request = new ActiveXObject("Microsoft.XMLHTTP");} catch (e) {} }*/}
 return null;}

/* AJAX using .responseText, returns string 
   note "loader" (for wait-animation) check! */
var ResultDiv=''
function stateChanged(){/*document.getElementById(ResultDiv).innerHTML+="<br />"+xhttp.readyState;*/
 var s="";
 if (xhttp.readyState==4){
  s=xhttp.responseText; /*alert(s);*/
  if (document.getElementById("loader")!==null){document.getElementById("loader").style.display="none";}
  if (document.getElementById(ResultDiv)!==null){document.getElementById(ResultDiv).innerHTML+=s;} 
  return s;}
 return xhttp.readyState;}

function loadbox(divId,url,isCleanup){
 if (isCleanup==1){document.getElementById(divId).innerHTML="";return;}
 ResultDiv=divId; xhttp=GetAjaxObj();
 if (xhttp==null){msg=s_BrNotSupXhttp;document.getElementById(divId).innerHTML=msg;alert(msg);return;}
 document.getElementById(divId).innerHTML+="<a href='"+url+"'>"+url+"</a><br>";
 if (document.getElementById("loader")!==null){document.getElementById("loader").style.display="inline";}
 xhttp.onreadystatechange=stateChanged;
 xhttp.open("GET",url,true);
 xhttp.send(null); /* or .send("");*/}

/* AJAX using .responseXML, returns DOM-compatible document object */
function loadXMLDoc(dname) {
 xhttp=GetAjaxObj();
 xhttp.open("GET",dname,true);
 xhttp.send("");
 return xhttp.responseXML;}

/* XMLDOM PARSER */
function loadXMLString(txt){/* takes string, returns DOM-compatible document object */
if (window.DOMParser)
  {parser=new DOMParser(); xmlDoc=parser.parseFromString(txt,"text/xml");}
else // IE
  {xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async="false";xmlDoc.loadXML(txt);}
return xmlDoc;
}

/* XMLDOM XSL-format */
function displayByXSL(fxml,fxsl,targetDivId){
var xml=loadXMLDoc(fxml);var xsl=loadXMLDoc(fxsl);
// IE
if (window.ActiveXObject){
  var ex=xml.transformNode(xsl);
  document.getElementById(targetDivId).innerHTML=ex;}
// FF etc.
else if (document.implementation && document.implementation.createDocument){
  var xsltProcessor=new XSLTProcessor();
  xsltProcessor.importStylesheet(xsl);
  var resultDocument = xsltProcessor.transformToFragment(xml,document);
  document.getElementById(targetDivId).appendChild(resultDocument);}
}


function getFormStr(obj) {
/* usage: <input type="button" name="button" value="Submit" onclick="x=getFormStr(this.parentNode);">
   http://www.captain.at/howto-ajax-form-post-get.php 
   */
  var getstr = "?";
  for (var i=0; i<obj.getElementsByTagName("input").length; i++) {
  /* first version was drilling down in for loops to find form objects with 
     childNodes: for (i=0; i<obj.childNodes.length; i++) {... 
     though the simplest path is to use getElementsByTagName("input")...
     */
        if (obj.getElementsByTagName("input")[i].type == "text") {
           getstr += obj.getElementsByTagName("input")[i].name + "=" + 
                   obj.getElementsByTagName("input")[i].value + "&";
        }
        if (obj.getElementsByTagName("input")[i].type == "checkbox") {
           if (obj.getElementsByTagName("input")[i].checked) {
              getstr += obj.getElementsByTagName("input")[i].name + "=" + 
                   obj.getElementsByTagName("input")[i].value + "&";
           } else {
              getstr += obj.getElementsByTagName("input")[i].name + "=&";
           }
        }
        if (obj.getElementsByTagName("input")[i].type == "radio") {
           if (obj.getElementsByTagName("input")[i].checked) {
              getstr += obj.getElementsByTagName("input")[i].name + "=" + 
                   obj.getElementsByTagName("input")[i].value + "&";
           }
     }  
     if (obj.getElementsByTagName("input")[i].tagName == "SELECT") {
        var sel = obj.getElementsByTagName("input")[i];
        getstr += sel.name + "=" + sel.options[sel.selectedIndex].value + "&";
     }
  }
  return getstr;
}

