
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){
                          if(document.obs_form.region2){
                        	  document.obs_form.region2.options[0] = new Option(locallangtxt3[0]["nodevalue"],"-");                          
                        	  for(var x=0;x<dborte.length;x++){ //x=0 geŠndert nach prob mit ahlbeck(vorher x=1)
                        	       //alert(dborte);
                                   document.obs_form.region2.options[(x+1)] = new Option(dborte[x],dbortid[x]);
                        	  }
                          }
                    }
                    else{
                          clearOption(2);
                          document.obs_form.region2.options[0] = new Option(locallangtxt3[1]["nodevalue"],"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+'/languages/'+lang+'.xml',"caltxt","phpsc_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");
         if(caltxt!=null)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(opts);
     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(url.indexOf("remove")!=-1)updateField("itemlistprice","chargefee","value",xml.getElementsByTagName('chargefee').item(0).firstChild.nodeValue);
     }

     if(was=="tooltipps"){
     	var txtstr = txt[0].firstChild.nodeValue;
     	writeLayer(txtstr);
     }
     
     if(was=="arrfacts"){
    	 writeArrFacts(txt.item(0));
    	 
     }

}

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){                	 
                	 if(location.href.indexOf("show=bask")!=-1) self.location.reload(true);
                	 else 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;   

    if(xml!= null){
    	var txt = xml.getElementsByTagName(String(optspices[0]));
    	writeNewRRv(txt,optspices[1]);
    }
    
    if(xml == null){
    	xml = req.responseText;
    	writeNewRRv(xml,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" && options!="dchk" && options!="bbst" && options!="offp" && options!="offm" && options!="roomsbybasket_result"){ 
   		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;}
        if(element!=null && options.indexOf("or_list")==-1){
        	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\">"+locallangtxt3[2]["nodevalue"]+":</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);
                      }
                  }
         }
         
         if(options.indexOf("or_list")!=-1){       	 
        	 
        	 if(element.childNodes.length>0){
        		 for(var i=0;i<element.childNodes.length;i++){
        			 if(element.childNodes[i].nodeName=="TD"){
        				 element.childNodes[i].innerHTML="";
        				 element=  element.childNodes[i];
        			 }        			 
        		 }
        	 }
         }
         
         
         if(element!=null) 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);
    	if(document.getElementById("o_list_tab")!=null){ 
    		//var jQuery111 = jQuery.noConflict();
        	jQuery(document).ready(function(){
			jQuery(".galery").fancybox();			 
			});
        }
    }
    
    if( options.indexOf("or_list")!=-1){  
        	jQuery(document).ready(function(){
			jQuery(".galery").fancybox();			 
			});        
    }
    
}
//////////////////////////////////////////////////////////////////////

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'));
                 if(document.getElementById('o_lists_navi'))document.getElementById('o_lists_navi').appendChild(inputfield1);
                 if(document.getElementById('o_list_alternates2'))document.getElementById('o_list_alternates2').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(locallangtxt3[3]["nodevalue"]);
                            break;
                            default:alert(locallangtxt3[4]["nodevalue"]);
                            }
                         }
                 }
         }
   }
   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[]":
       case "cb_objekte":	   
       	updateSelectboxes(opts,xml);
         //alert(opts+" ------------ "+erg);
       break;
       
       }

}
/////////////////////////////////////////////////////////////////

function updateRate(){
	var xml = req.responseXML;
         writeUpdateRating(xml.getElementsByTagName("root").item(0));


}

////////////////////////////////////////////////////////////////

function loadLl(){
     var xml = req.responseXML;    
     var optis = opts.split(",");

     if(optis[0].indexOf("all")== -1){
     	if(xml.getElementsByTagName(optis[0]).length > 0){
     		if(optis.length > 2)var wrtx= xml.getElementsByTagName(optis[0]).item(0).getAttribute(optis[1]);
         	else var wrtx= xml.getElementsByTagName(optis[0]).item(0).firstChild.nodeValue;
     	}
     	else  getLocalLangTxt("german",opts);
     }
     else{
     	if(optis[0]=="all1"){
     		for(var i=0;i<locallangtxt1.length;i++){
              		locallangtxt1[i]["nodevalue"] = xml.getElementsByTagName(locallangtxt1[i]["nodename"]).item(0).firstChild.nodeValue;
         	}
         }
         if(optis[0]=="all2"){
     		for(var i=0;i<locallangtxt2.length;i++){
              		locallangtxt2[i]["nodevalue"] = xml.getElementsByTagName(locallangtxt2[i]["nodename"]).item(0).firstChild.nodeValue;
         	}
         }
         if(optis[0]=="all3"){
     		for(var i=0;i<locallangtxt3.length;i++){
              		locallangtxt3[i]["nodevalue"] = xml.getElementsByTagName(locallangtxt3[i]["nodename"]).item(0).firstChild.nodeValue;
         	}
         }
         if(optis[0]=="all4"){
     		for(var i=0;i<locallangtxt4.length;i++){
              		locallangtxt4[i]["nodevalue"] = xml.getElementsByTagName(locallangtxt4[i]["nodename"]).item(0).firstChild.nodeValue;
         	}
         }
         if(optis[0]=="all5"){
     		for(var i=0;i<locallangtxt5.length;i++){
              		locallangtxt5[i]["nodevalue"] = xml.getElementsByTagName(locallangtxt5[i]["nodename"]).item(0).firstChild.nodeValue;
         	}
         }
         if(optis[0]=="all6"){
      		for(var i=0;i<locallangtxt6.length;i++){
               		locallangtxt6[i]["nodevalue"] = xml.getElementsByTagName(locallangtxt6[i]["nodename"]).item(0).firstChild.nodeValue;
               		
          	}
          }

     }
     if(wrtx && wrtx!= "") writeLocalLangTxt(wrtx,optis[(optis.length-1)]);

}
////////////////////////////////////////////////////////////////////////

function setCustomer(){	
	 document.getElementById("pft_k_name").innerHTML="";
	 
	 if(req.responseText !=""){ 		 
		 document.getElementById("pft_k_name").className="pformtool_on";
		 document.getElementById("pft_k_name").innerHTML = req.responseText;
	 }
	 else document.getElementById("pft_k_name").className="pformtool_off";
	
}

/////////////////////////////////////////////////////////////////////

function vm_cachecbbettings(){
	if(opts =="get"){
		var txt = req.responseText;
		var items = txt.split(";");
		if(items.length>0){
			for(var i=0;i<items.length;i++){
				 var uitem = items[i].split(":");
				 
				 switch(uitem[0]){
				 case "cb_showever":
					 if(uitem[1]=='1')document.cb_form.cb_showever.checked = true;
					 else document.cb_form.cb_showever.checked = false;
				 break;
				 case "cb_objekte":
					 changeSelectedOptionOnMultipleSelectbox(uitem[0],uitem[1]);					 
				 break;
				 
				 default: changeSelectedOption(uitem[0],uitem[1]);
				 
				 } 				 				 
			}
		}
		//alert(txt);
	}
	
}

//////////////////////////////////////////////////////////////////////

function getUpdateMask(){
	var xml = req.responseXML;    
	var optis = opts.split(",");
	var param = new Array();
	
	
	
	switch(optis[0]){
	case "tagung":
	case "tagung2":
		if(xml!=null){
			var room = xml.getElementsByTagName("room");
			if(room.length >0){
				for(var i=0;i < room.length;i++){
					param[i] = new Object;
					param[i]["oid"] = room[i].getElementsByTagName("o_id").item(0).firstChild.data;
					if(i==0){
						var ss = room[i].getElementsByTagName("seasonsettings");
						for(var is=0;is < ss.length;is++){
							if(ss[is].getAttribute("name")==optis[1]){
								param[i]["datestart"] = ss[is].getAttribute("datestart");
								param[i]["dateend"] = ss[is].getAttribute("dateend");
							}
						}		
					}				
				}
				
				if(param.length>0){
					switch(optis[0]){
						case "tagung":updateMask(optis[0],optis[1],param);
						break;
						case "tagung2":	
							if(lang=="german")var lp="";
							if(lang=="english") var lp="";// &l=1
							document.getElementById("openertxt").innerHTML = "<a href=\"#\" onclick=\"window.open('http://www.buchen.travel/rostock-buchen/index.php?mask=tagung&tc="+optis[1]+lp+"','_blank')\">"+locallangtxt6[2]["nodevalue"]+"</a>";									  
						break;
					}
				}	
				else {
					switch(optis[0]){
						case "tagung": document.getElementById("openertxt").innerHTML = "";
						break;
						case "tagung2": document.getElementById("openertxt").innerHTML = locallangtxt6[1]["nodevalue"];
						break;
					}					
				}
			}
			else {
				switch(optis[0]){
					case "tagung": document.getElementById("openertxt").innerHTML = "";
					break;
					case "tagung2": document.getElementById("openertxt").innerHTML = locallangtxt6[1]["nodevalue"];
					break;
				}					
			}
		}
		else {
			switch(optis[0]){
				case "tagung": document.getElementById("openertxt").innerHTML = "";
				break;
				case "tagung2": document.getElementById("openertxt").innerHTML = locallangtxt6[1]["nodevalue"];
				break;
			}					
		}
	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);                              
                            }
                        }
                        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": 
                             case "arrfacts": writeNotice();
                             break;

                             case "chknotice":
                             case "chkbasket": chNot();
                             break;

                             case "errortxt":
                             case "tooltipps": writeNotice();
                             break;

                             case "rrv": outNewRRV();
                             break;

                             case "excl_achievs": giveExcls();
                             break;
                          
                             case "getUpdateMask": getUpdateMask();
                             break;
                                                          
                             case "be_reslist":
                             case "be_booking":
                             case "be_offering":
                             case "listbasknoti":
                             case "be_dchk":
                             case "calbooking_reslist":
                             case "roomsbybasket_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": 
                             case "vm_objlist":	 updateSelectbox();
                             break;

                             case "updaterating": updateRate();
                             break;

                             case "locallang": loadLl();
                             break;  
                             
                             case "vm_customers": setCustomer();
                             break; 
                             
                             case "vm_cachecbbettings":vm_cachecbbettings();
                             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();



}
