  var offerlist=new Array();
  var offerstatus=new Array();
  var currentlyvalidated=null;
  var validatetimeout=null;
  var autovalidateenabled=false;
  var http_request=null;


// *********************************************************************
function validateTimeOut(oid) {
	console.debug("validateTimeOut("+oid+")");
	if (http_request) {
		console.debug("http_request ist da???");
		//      http_request.onreadystatechange = null;
		http_request.onreadystatechange = function(){};
		http_request.abort();
		http_request=null;
	}
	setValidateState(oid,'TO');
	currentlyvalidated=null;
	//autovalidate();
}

// *********************************************************************
function autovalidate() {
	autovalidateenabled = true;
	if(validatetimeout != null) clearTimeout(validatetimeout);
	var oid;
	var i;
	
	for (i=0;i<offerlist.length;i++) {
		oid=offerlist[i];
		if (!offerstatus[oid]) {
			validate(oid);
			validatetimeout = setTimeout('validateTimeOut('+oid+')',100000);
			return;
		}
	}
}

// *********************************************************************
function validate(index) {
	if(validatetimeout != null) clearTimeout(validatetimeout);
	setValidateState(currentlyvalidated,null);
	var a;
	if (!(a=getofferobj(index,'offer')))
		return false;
	var url;
	if (!(url=a.getAttribute('url')))
		return false;
	url=url.replace(/amp;/g,'');
	if (offerstatus[index]) {
		if (offerstatus[index]=='BA' || offerstatus[index]=='RQ') {
			var urla = url.substring(1).split("&");
			var le = urla.length;
			var newurl = "";
			for(var i=0;i<le;i++) {
				s = urla[i].split("=");
				if(s[0] != "sid") {
					if(newurl == "") newurl += "?"+s[0]+"="+s[1];
					else newurl += "&"+s[0]+"="+s[1];
				}
			}
			window.location.href = url;
			return;
		}
		else if(offerstatus[index] != 'TO')
			return false;
	}

	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text');
		// See note below about this line
		}
	} 
	else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	if (!http_request) {
		return false;
	}

	http_request.onreadystatechange = function() { setresults(http_request) };
	if (valprefixurl!='') {
		url = url+'&'+valurl;
		url = url.substring(url.indexOf('?'));
		url = valprefixurl+url;
	}
	else
		url = url+'&'+valurl;

	http_request.open('GET', url, true);
	http_request.send(null);

	currentlyvalidated = index;
	setValidateState(currentlyvalidated,'start');
	if (!document.tempRequests)
		document.tempRequests = Array();
	document.tempRequests.push(http_request);
	//    return http_request;
}

// *********************************************************************
function merken(index,urlp) {
	var a;
	if (!(a=getofferobj(index,'offer')))
		return false;
	var url;
	if (!(url=a.getAttribute('url')))
		return false;
	url=url.replace(/amp;/g,'');
	if (offerstatus[index]) {
		if (offerstatus[index]!='BA')   // <<<-----
		return false;
	}
	else return false;
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
		http_request.overrideMimeType('text');
		// See note below about this line
	}
	}
	else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	if (!http_request) {
		return false;
	}

	http_request.onreadystatechange = function() { setresultsMerkzettel(http_request) };
	if (valprefixurl!='') {
		url=url+'&'+urlp;
		url=url.substring(url.indexOf('?'));
		url=valprefixurl+url;
	}
	else
		url=url+'&'+urlp;

	http_request.open('GET', url, true);
	http_request.send(null);
}

// *********************************************************************
function getofferobj(index,name) {
	if(obj = document.getElementById(name+'_'+index))
		return obj;
	else
		return false;
}


// *********************************************************************
function iframeresult(sender) {
	processStateText(sender.contentWindow.document.firstChild.textContent);
}


// *********************************************************************

function setresults() {
	var http_request=setresults.arguments[0];
	var oid;
	//var type=setresults.arguments[1];
	if (!http_request) return;
	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
			processStateText(http_request.responseText);
			http_request=null;
		}
	}
}

function setresultsMerkzettel() {
	var http_request=setresultsMerkzettel.arguments[0];
	var oid;
	//var type=setresults.arguments[1];
	if (!http_request) return;
	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
			processMerkzettelStateText(http_request.responseText);
			http_request=null;
		}
	}
}

// *********************************************************************
function setValidateState(oid,state) {
	if (oid==null) return false;
	offerstatus[oid]=state;
	if (state == 'start') {
		if (a = getofferobj(oid,'status')) {
			a.innerHTML='<img src="'+vi_check+'" align="absmiddle" />&nbsp;&nbsp;&nbsp;'+msgDURING;
			if (a = getofferobj(oid,'hide'))
				a.style.display = 'block';
			if (a = getofferobj(oid,'hide2'))
				a.style.display = 'block';
		}
	}
	else { 
		if(a = getofferobj(oid,'status')) { //a.innerHTML=state;
			if (state == 'BA') {
				$("#offer_"+oid).attr("status","BA");
				a.innerHTML='<img src="'+vi_avail+'" align="absmiddle" />';
			} else if (state == 'RQ') {
				document.getElementById('show2_' + oid).getElementsByTagName('div')[1].innerHTML = 'Die Reise ist auf Anfrage buchbar';
				$("#offer_"+oid).attr("status","RQ");
//				a.innerHTML='Die Reise ist auf Anfrage buchbar';
			} else if (state == 'XX')
			{
				a.innerHTML=msgXX;
			} else if (state == 'TO')
			{
				a.innerHTML='<img src="'+vi_to+'" align="absmiddle" />';
			} else
			{
				a.innerHTML='<img src="'+vi_try+'" align="absmiddle" />';
			}
		}
	}
}

// *********************************************************************
function processStateText(t) {
	var res = t.split(';');
	clearTimeout(validatetimeout);
	oid = currentlyvalidated;
	currentlyvalidated = null;
	var a;
	if (a = getofferobj(oid,'status'))
		a.innerHTML = res[1];
	if (a = getofferobj(oid,'price')) {
		if (res[1] == 'XX')
			a.style.textDecoration = 'line-through';
		else if (res[1] != 'TO')
			a.innerHTML = res[6]+",-";
	}
	if ((res[1] != 'XX' ) && (res[1] != 'TO')) {
		if($("#step").val() != "5") {
			$("#table_"+oid).attr("class","listrow cdefault color2 color14bg color0bot color4bob wp100 listcontent");
			$("#table_"+oid).attr("mover","false");
			$("#table_"+oid).click(function(){ return false; });
		}
		
		if ((a=getofferobj(oid,'offer')) && a.getAttribute('surl') && (a.getAttribute('surl')=='true')) {
			a.setAttribute('url',document.URL.substring(0,document.URL.indexOf('?'))+res[9].substring(res[9].indexOf('?')));
		}
//    11            12              13            14            
//{mi:viaCode};{mi:viaarrTime};{mi:viadepTime};{mi:vianr} {mi:viacarrier};
//    15           16              17                 18 
//{mi:rviaCode};{mi:rviaarrTime};{mi:rviadepTime};{mi:rvianr} {mi:rviacarrier};    

    if (res[19]!='')
    {
      if (a=getofferobj(oid,'desCode'))
        a.innerHTML=res[19];
    }

    if (res[11]!='')
    {
      if (a=getofferobj(oid,'via1'))
        a.style.display='block';
      if (a=getofferobj(oid,'via2'))
        a.style.display='block';
      if (a = getofferobj(oid,'viaTimeTo'))
      {
        a.innerHTML=res[13]+' - '+res[3];
        res[3]=res[12];
      }
      if (a = getofferobj(oid,'vianrTo'))
      {
        a.innerHTML=res[14];
      }      
      if (a = getofferobj(oid,'viaCode'))
        a.innerHTML='via '+res[11];
      
    }
    if (res[16]!='')
    {
      if (a=getofferobj(oid,'rvia1'))
        a.style.display='block';
      if (a=getofferobj(oid,'rvia2'))
        a.style.display='block';
    
      if (a = getofferobj(oid,'viaTimeRet'))
      {
        a.innerHTML=res[17]+' - '+res[5];
        res[5]=res[16];
      }          
      if (a = getofferobj(oid,'vianrFrom'))
      {
        a.innerHTML=res[18];
      }            
      if (a = getofferobj(oid,'rviaCode'))
        a.innerHTML='via '+res[15];      
    }
    
		if (a = getofferobj(oid,'show'))
			a.style.display = 'block';
		if (a = getofferobj(oid,'show2'))
			a.style.display = 'block';
		if (a = getofferobj(oid,'show3'))
			a.style.display = 'block';
		if (a = getofferobj(oid,'hide'))
			a.style.display = 'none';
		if (a = getofferobj(oid,'hide2'))
			a.style.display = 'none';
		if (a = getofferobj(oid,'fTime'))
			a.innerHTML = res[2]+' - '+res[3]+'<br/>'+res[4]+' - '+res[5];
		if (a = getofferobj(oid,'fnrTo'))
			a.innerHTML = res[7];
		if (a = getofferobj(oid,'fnrFrom'))
			a.innerHTML = res[8];
		if (a = getofferobj(oid,'carrierdesc'))
			a.innerHTML = res[10];
		if (a = getofferobj(oid,'fTimeTo'))
			a.innerHTML = res[2]+' - '+res[3];
		if (a = getofferobj(oid,'fTimeRet'))
			a.innerHTML = res[4]+' - '+res[5];
//    if (a = getofferobj(oid,'carrierdesc'))
//      a.innerHTML = ;      
      
	}
	setValidateState(oid,res[1]);
	if (autovalidateenabled)
		autovalidate();
}

function loadRooms(rurl)
{
	//document.getElementById('roomsrow2').value = valprefixurl + '?' + unescape(document.getElementById('roomsrow2').value).replace(/^[^?]*/, '').replace('/', '').replace(/\?/g, '') + '&pst=3&';
	
	rurl = unescape(rurl).replace(/^[^?]*/, '').replace('/', '').replace(/\?/g, '');
	rurl = valprefixurl + '?' + rurl+'&pst=3&';
  
  document.getElementById('loaderanimation').style.display="block";
  document.getElementById('roomsDiv').innerHTML = '';
  
  if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text');
		// See note below about this line
		}
	} 
	else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	if (!http_request) {
		return false;
	}

	http_request.onreadystatechange = function() { setresultrooms(http_request) };
	/*
  if (valprefixurl!='') {
		url = url+'&'+valurl;
		url = url.substring(url.indexOf('?'));
		url = valprefixurl+url;
	}
	else
		url = url+'&'+valurl;
  */
	http_request.open('GET', rurl, true);
	http_request.send(null);

}
function setresultrooms() {
	var http_request=setresultrooms.arguments[0];
	var oid;
	//var type=setresults.arguments[1];
	if (!http_request) return;
	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
			processRooms(http_request.responseText);
			http_request=null;
		}
	}

  if (document.getElementById('priceinfodiv') && document.getElementById('priceinfo'))
    document.getElementById('priceinfodiv').innerHTML = document.getElementById('priceinfo').innerHTML;
  if (document.getElementById('bookingurl') && document.getElementById('bookurlval'))
  {
	document.getElementById('bookurlval').value = document.getElementById('bookurlval').value.replace(/^[^?]*/, '');
	document.getElementById('bookingurl').href = document.getElementById('bookurlval').value;
    }
}

function processRooms(roomstext)
{
  document.getElementById('loaderanimation').style.display="none";
  if (document.getElementById('roomsDiv'))
    document.getElementById('roomsDiv').innerHTML = roomstext.replace(/Box_4/, '');
}

function processMerkzettelStateText(merkzetteltext)
{
  if (document.getElementById('ep3bookmarks') && merkzetteltext!='')
    document.getElementById('ep3bookmarks').innerHTML = merkzetteltext;
}

function selectRoom()
{
  for (var i=0; i < document.puzzleform.rooms.length; i++)
    if (document.puzzleform.rooms[i].checked)
      var room_val = document.puzzleform.rooms[i].value;
  
  
  
  //window.location.href = room_val;
}
