function loadExtXml(url,was,options){
var req = null;
var was= was;
var opts= options;
var url = url;




function fillOptionsReg2() {
 var xml = req.responseXML;
 var txt = xml.getElementsByTagName("loc");

                            for(i=0;i<txt.length;i++)
                            {
                               //document.write(txt[i].getAttribute("name")+", ");
                                 if(txt[i].getAttribute("regid") == opts)
                                  {
                                         var orte= txt[i].childNodes;
                                          //alert(orte.length);
                                          if(orte.length!=0)
                                          {
                                            var dborte = new Array();
                                            var dbortid = new Array();
                                            var dbureg = new Array();
                                            var dburegid = new Array();

                                            clearOption(2);
                                            var z_orte=0;
                                            var z_ureg=0;

                                            for(var a=0;a<orte.length;a++)
                                         	{
                                         		var ort = orte.item(a);
							if(ort.nodeType==1)
                                                  		{
                                                                         if(ort.getAttribute("zipcode"))
                                                                         {
                                                                                 dborte[z_orte] = ort.getAttribute("name")+" "+ort.getAttribute("zipcode");
                                                     				dbortid[z_orte] = ort.getAttribute("regid");
										z_orte++;
                                                                         }
                                                                 }
                                         	}
                                            //alert(dborte.length);
                                            if(dborte.length>0){
                                            	document.obs_form.region2.options[0] = new Option("Bitte wählen Sie einen Ort","-");
                                            	for(var x=1;x<dborte.length;x++)
                                            	{
                                               		document.obs_form.region2.options[x] = new Option(dborte[x],dbortid[x]);
                                            	}
                                            }
                                            else{
                                            clearOption(2);
                                                        document.obs_form.region2.options[0] = new Option("Keine Orte vorhanden","0");
                                            }
                                          }
                                    }
                            }


}
//////////////////////////////////////////////

function getAltquery(){
	var xml = req.responseXML;
       	var treffer = xml.getElementsByTagName("resultitem").length;
         var isdiv = document.getElementById("altrequests");
         if(!document.getElementById("altrequests")){
            var nnode=document.createElement("div");
            document.getElementById("klammer").appendChild(nnode);
            nnode.setAttribute("id","altrequests");

            var alternaterequests_txtnode_txt = xml.getElementsByTagName("altrequests_opener").item(0);
            var alternaterequests_txtnode = document.createElement("div");
            nnode.appendChild(alternaterequests_txtnode);
            alternaterequests_txtnode.innerHTML = alternaterequests_txtnode_txt.firstChild.nodeValue;
            alternaterequests_txtnode.className="altrequests_opener";

         }
         var alternatenode = document.createElement("div");
         document.getElementById("altrequests").appendChild(alternatenode);
	alternatenode.className="altreq";

         var alternatenode_head = document.createElement("div");
         alternatenode.appendChild(alternatenode_head);
	alternatenode_head.className="alternate_top";

         var alternatenode_content = document.createElement("div");
         alternatenode.appendChild(alternatenode_content);
	alternatenode_content.className="alternate_content";


         var hits = xml.getElementsByTagName("hits").item(0);
         var node_hits = document.createElement("div");
         alternatenode_content.appendChild(node_hits);
         node_hits.innerHTML = hits.firstChild.nodeValue;
         node_hits.className="hits";

         var altrequeststxt = xml.getElementsByTagName("altsearch").item(0);
         var node_altrequeststxt = document.createElement("div");
         alternatenode_content.appendChild(node_altrequeststxt);
         node_altrequeststxt.innerHTML = altrequeststxt.firstChild.nodeValue;
         node_altrequeststxt.className="altrequeststxt";


         var searchpara_txtnode_txt = xml.getElementsByTagName("alt"+opts).item(0);
         var newsearchpara_txt = xml.getElementsByTagName("newpara");

         if(newsearchpara_txt.item(0).firstChild){
           var newparameter = " "+newsearchpara_txt.item(0).firstChild.nodeValue;
	}
         else{
           var newparameter = "";
         }
         var searchpara = document.createElement("div");
         alternatenode_content.appendChild(searchpara);
         searchpara.innerHTML = searchpara_txtnode_txt.firstChild.nodeValue+newparameter;
         searchpara.className="alternate_newparameter";


         var node_link = document.createElement("a");
         alternatenode_content.appendChild(node_link);
         node_link.innerHTML = "Alternative ansehen?";

         var alternatenode_bottom = document.createElement("div");
         alternatenode.appendChild(alternatenode_bottom);
	alternatenode_bottom.className="alternate_bottom";

                 /*

                 var searchpara = xml.getElementsByTagName("searchpara").item(0);
         var node_searchpara = document.createElement("div");
         alternatenode_content.appendChild(node_searchpara);
         node_searchpara.className="searchpara";


                 for(i=0;i<txt.length;i++)
                 {
                 	//document.write(txt[i].getAttribute("name")+", ");
                         if(txt[i].getAttribute("regid") == opts)
                         {
                                 //alert(txt[i].parentNode.getAttribute("name"));
                                 eval("newregid = '"+txt[i].parentNode.getAttribute("regid")+"';");

                         }
                 }*/
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////

function setCalendar(){
var erg = req.responseText;
var nnode=document.createElement("div");
document.getElementById("calendar").appendChild(nnode);
nnode.innerHTML = erg;
nnode.setAttribute("id","caltab");



          //alert(document.getElementById("calendar").childNodes.length);
}
//////////////////////////

function changeCalendar(){

	var erg = req.responseText;
	var nmonth=document.createTextNode(erg);
	var element = document.getElementById("caltab");
	while (element.firstChild) {
  		element.removeChild(element.firstChild);
	}
	document.getElementById("caltab").innerHTML = erg;
         if(setdate==2)loadExtXml(path_classes+'/xml/ttips.xml',"caltxt","cal_txtab");

          //
}

//////////////////////////
function setCalTxt(){
     var xml = req.responseXML;
     var txt = xml.getElementsByTagName(opts);
     var txtstr = txt[0].firstChild.nodeValue;
     var caltxt = document.getElementById("cal_txt");
         caltxt.innerHTML= txtstr;


}
/////////////////////////////////////////////////////////////////////////////////

function getToolTipps(){
     var xml = req.responseXML;
     var txt = xml.getElementsByTagName(opts);
     var txtstr = txt[0].firstChild.nodeValue;
     var nnode=document.createElement("p");

     var pnode = document.getElementById(opts);
     var vnode = document.getElementById(opts).firstChild;
     pnode.insertBefore(nnode,vnode);
     nnode.innerHTML = txtstr;
}

//////////////////////////////////////////////////////////////////////////////////

function writeNotice(){

//alert(was);
     var xml = req.responseXML;
     if(xml!=null)var txt = xml.getElementsByTagName(opts);


     if(was =="notice" || was =="basket"|| was =="notibe" || was =="baskbe"){
     	var items = xml.getElementsByTagName("items").item(0).firstChild.nodeValue;
             updateItems(was,items);
     }

     if(was=="tooltipps"){
     	var txtstr = txt[0].firstChild.nodeValue;
     	writeLayer(txtstr);
     }

}

function chNot(error){
    if(error){
    	error = "nolist";
    	getErrorTxt(error);
    }
    else{
    	var phpshow = was.substr(3,4);
    	if(was=="chkbasket"){
                 //var xml = req.responseXML;
     		//var txt = xml.getElementsByTagName('root').item(0);
    		//updateBasketInReslist(txt);
                 if(typeof(iframelayout)!="undefined" && iframelayout==true)location.href="index.php?show=bask&sess="+sess+"#nachoben";
                 else {
                 	if(location.href.indexOf("show=bask")!=-1) self.location.reload(true);
                         else top.location.href="index.php?show=bask&sess="+sess+"#nachoben";
                 }
    	}
    	else{
    		popupWindow("520","600","100","100","extwindow.php?show="+phpshow+"&"+opts,"yes","noticelist");
    	}
    }
}

/////////////////////////////////////////////////////////////////////////

function outNewRRV(){
    var optspices = opts.split("_");
    var xml = req.responseXML;

    var txt = xml.getElementsByTagName(String(optspices[0]));
    writeNewRRv(txt,optspices[1]);
}

///////////////////////////////////////////////////////////////////////

function giveExcls(){
   var optis = opts.split(",");
   var xml = req.responseXML;
   var txt = xml.getElementsByTagName(optis[0]);

   for(var i=0;i<txt.length;i++){//alert(txt.item(i).getAttribute('id'));
           if(txt.item(i).getAttribute('id')==optis[1]){

                 var excls = txt.item(i).getElementsByTagName("excl");
	  }
   }

	writeExcls(excls,optis[1]);
}

/////////////////////////////////////////////////////////////////////

function getBeResults(){
   var erg = req.responseText;
   var element = document.getElementById(options);
   if(options!="noti" && options!="bask"){
   	var ergess = erg.substr(erg.indexOf("<table"));
         // calbooking - ergebnis der ersten anfrage wird zwischengespeichert
         if(calbooking_cache == true) {var ergcache = element.innerHTML;calbooking_cache = false;}

         while (element.firstChild) {
  		element.removeChild(element.firstChild);
   	}
    }
    else {
         if(erg.indexOf("<h1")!=-1)var ergess = erg.substr(erg.indexOf("<h1"));
    }

    if(erg.indexOf("<h1")!=-1){element.innerHTML=ergess;}
    else {
         if(options == "searchresult"){
                if(ergcache)erg = ergcache+"<p class=\"alttreffer\">Alternativtreffer:</p>"+erg;

         	if(erg.indexOf("errors")!=-1){
                 	element.style.background="url(img/kreuz.png) no-repeat";
                         getCalbookingAlternates(url,was,opts);

                 }
                 else element.style.background="url(img/haken.png) no-repeat";
                  //alert(document.body.scrollHeight);
                  //window.scrollBy =(0,(document.documentElement.offsetHeight+300));


                  function scrollSlow(){//out of order
			var currentScrollTop = document.documentElement.scrollTop;
                         alert(currentScrollTop+ " - "+lmit);
			if(currentScrollTop < lmit){
				window.scrollBy(0,10);
				var speed = 50;
				var callee = arguments.callee;
				window.setTimeout(function(){
				callee();
				}, speed);
			}
		}
         }
         element.innerHTML=erg;
         if(options == "searchresult"){
              if(document.getElementById("content").offsetHeight>0){
              	var lmit = (element.offsetHeight*1.3);
              	//scrollSlow();
              	document.getElementById("footer").scrollIntoView(true);
              }

         }
    }

    if(options=="r_lists_cont"){
    	var inclusive = element.getElementsByTagName("INPUT");
   	if(inclusive.length>0){
                 oldarchieve.length =0;
   		for(var i=0;i<inclusive.length;i++){
           		var incl = inclusive.item(i).value.split("#");
           		oldarchieve[oldarchieve.length] = new Array(incl[0],incl[1]);
         	}
   	}//alert(oldarchieve);
    }
    if(options=="o_lists_cont") writeOlistnavi();//alert(element.getElementsByTagName("TD").length);
}
//////////////////////////////////////////////////////////////////////

function altRegion(){
   var xml = req.responseXML;
   var txt = xml.getElementsByTagName("loc");
   for(var i=0;i<txt.length;i++){
   	if(txt[i].getAttribute("regid")==opts){
                 if(getBrowser()=="2")var inputfield1 = document.createElement('<INPUT name="altreg"></INPUT>');//verstecktes inputfeld für die ausgebe der alternativregion
                 else{ var inputfield1 =  document.createElement("INPUT");inputfield1.name="altreg";}
                  inputfield1.setAttribute("type","hidden");
                  inputfield1.value = txt[i].parentNode.getAttribute('regid'); //alert("ajax "+txt[i].parentNode.getAttribute('regid'));
                  document.getElementById('o_lists_navi').appendChild(inputfield1);

         }
   }

}
//////////////////////////////////////////////////////////////////////

function getarrdl(){
   var xml = req.responseXML;
   var txt = xml.getElementsByTagName("category");
   writeArrDl(txt);
}

//////////////////////////////////////////////////////////////////////

function getfreearrdl(){
   var optis = opts.split(",");
   var xml = req.responseXML;
   //alert(optis);
   if(optis[0]<5 || optis[0]==7){
   	var txt = xml.getElementsByTagName("arr");
   	if(txt)for(var i=0;i<txt.length;i++){

                 if(txt[i].getAttribute("id")==optis[1]){
                  	if(txt[i].getElementsByTagName("error").length==0)writeChangeArrDl(txt[i],optis);
                         else {
                            switch(txt[i].getElementsByTagName("error")[0].getAttribute("id")){
                            case "100":
                            	alert("Ticket ist z.Zt. leider nicht buchbar.");
                            break;
                            default:alert("Sehr geehrter Gast, der von Ihnen gewählte Reisezeitraum ist zu kurz oder zu lang. Bitte ändern Sie die Reisezeit. Beachten Sie auch, dass Sie An- UND Abreise wählen müssen.");
                            }
                         }
                 }
         }
   }
   else writeTickets(xml);
}
/////////////////////////////////////////////////////////////

function sessvar(){
	if(req.responseText ==""){
                 var optis = opts.split(",");
         	switch(optis[0]){
                 	case"flymv": location.href=optis[1]+"&sess="+sess;break;
         	}
         }
}

/////////////////////////////////////////////////////////////

function setBookingCal(){
       var erg = req.responseText;
       writeBookingCal(erg);

}


////////////////////////////////////////////////////////////

function updateSelectbox(){
       var xml = req.responseXML;

       switch(opts){
       case "zcat[]":
       	updateSelectboxes(opts,xml);
         //alert(opts+" ------------ "+erg);
       break;
       }

}









//////////////////////////////////////////////////////////////////////

function fillElements() {


                switch(req.readyState) {
                    case 4:
                        if(req.status!=200) {
                            switch (was){
                             case "chknotice":
                             case "chkbasket":
                                  chNot(req.status);

			    break;
                             default:
				alert("Fehler: "+req.status);
                              break;
                            }

                        }else{

                            //antwort des servers



                            switch (was){
                             case "reg2": fillOptionsReg2();
                             break;

                             case "cal": setCalendar();
			    break;

                             case "calch": changeCalendar();
			    break;

                             case "tt": getToolTipps();
			    break;

                             case "caltxt": setCalTxt();
			    break;

                             case "altquery": getAltquery();
                             break;

                             case "notice":
                             case "notibe":
                             case "basket":
                             case "baskbe":
                             case "basketremoveitem": writeNotice();
                             break;

                             case "chknotice":
                             case "chkbasket": chNot();
			    break;

                             case "errortxt":
                             case "tooltipps": writeNotice();
			    break;

                             case "rrv": outNewRRV();
			    break;

                             case "excl_achievs": giveExcls();
			    break;

                             case "be_reslist":
                             case "be_booking":
                             case "be_offering":
                             case "listbasknoti":
                             case "calbooking_reslist": getBeResults();
			    break;

                             case "alt_region": altRegion();
			    break;

                             case "getarrdl": getarrdl();
			    break;

                             case "getfreearrdl": getfreearrdl();
			    break;

                             case "sessvar": sessvar();
                             break;

                             case "calbooking": setBookingCal();
                             break;

                             case "updatezcat": updateSelectbox();
                             break;

                             default:
				alert(req.responseText);
                              break;
                            }


			   }
                    break;

                    default:
                        return false;
                    break;
                }

            }


 ///////////////////////////////////////////////////////



             function loadRequest(){
                 //erstellen des requests

                try{
                    req = new XMLHttpRequest();
                }
                catch (e){
                    try{
                        req = new ActiveXObject("Msxml2.XMLHTTP");
                    }
                    catch (e){
                        try{
                            req = new ActiveXObject("Microsoft.XMLHTTP");
                        }
                        catch (failed){
                            req = null;
                        }
                    }
                }

                if (req == null)
                      alert("Error creating request object!");

                  //anfrage erstellen (GET, url ist localhost,
                  //request ist asynchron

                  req.open("GET", url, true);



                //Beim abschliessen des request wird diese Funktion ausgeführt
                req.onreadystatechange = fillElements;




                  req.setRequestHeader("Content-Type",
                                      "application/x-www-form-urlencoded");
                req.send(null);
            }
 	loadRequest();



}