var ptrIBE=null, objActiveNavButton=null;

function fnInitIBE () {

  ptrIBE=document.getElementById ('idgIBE');

  for (var dummy=0; dummy<arrViews.length; dummy++) { 
    if (arrViews[dummy][1]) {
      var obj=document.createElement ('img');
      if (dummy==0) obj.style.border='none';
      obj.onclick=fnSwitchViewIBE.bind (this, obj, dummy);
      obj.onmouseover=fnIBEmouseOver.bind (this, obj, dummy);
      obj.onmouseout=fnIBEmouseOut.bind (this, obj, dummy);
      obj.src=wl+'/externer_content/walls/allgemein/ibe/images/'+arrViews[dummy][1];
      document.getElementById ('idgIBEnavigation').appendChild (obj);
      if (dummy==intActiveViewStart) objActiveNavButton=obj;
    }
  }
  intActiveView=intActiveViewStart;
  fnSwitchViewIBE (objActiveNavButton, intActiveView);

}

function fnInitRLEDM (paramView, paramFormData) {

  ptrIBE=document.getElementById ('idgIBEform');

  for (var dummy=0; dummy<arrViews.length; dummy++) if (arrViews[dummy][0]==paramView) intActiveView=dummy;

  if (document.getElementById ('SchnBookingHeader')==undefined) document.getElementById ('ResultListEDM').style.display='block';
  RLEDMCalendar=new idgObjCalendar (paramFormData[2]);
  RLEDMCalendar.format='%d.%m.%y';


  var arrReisetermine=[TODAY, TOMORROW];
  var arrAnreisetermin=paramFormData[2].split ('.');
  arrReisetermine[0]=new Date (arrAnreisetermin[2], arrAnreisetermin[1]-1, arrAnreisetermin[0],12)
  var arrAbreisetermin=paramFormData[3].split ('.');
  arrReisetermine[1]=new Date (arrAbreisetermin[2], arrAbreisetermin[1]-1, arrAbreisetermin[0],12)
  RLEDMCalendar.fnSetPickups ([['elementAnreise', 'Anreisetermin', arrReisetermine[0]], ['elementAbreise', 'Abreisetermin', arrReisetermine[1]]]);
  RLEDMCalendar.fnSetPeriods (arrViews[intActiveView][4]);


  RLEDMCalendar.mindate=new Date (TODAY.getFullYear (), TODAY.getMonth (), TODAY.getDate ());;
  RLEDMCalendar.mindate.setDate (1);
  document.getElementById ('imageAnreise').onclick=RLEDMCalendar.showCalendar.bind (RLEDMCalendar, RLEDMCalendar.pickups[0][0], 0);
  document.getElementById ('imageAbreise').onclick=RLEDMCalendar.showCalendar.bind (RLEDMCalendar, RLEDMCalendar.pickups[1][0], 1);
  
  for (var dummy=0; dummy<ptrIBE.elements.length; dummy++) {
    ptrIBE.elements[dummy].onchange=fnIBETestInputs;
  }
  

  fnFillViewRLEDM (paramView, paramFormData);
  

}

function fnFillViewRLEDM (paramView, paramFormData) {

  switch (paramView) {
    case 'HOTEL'	: fnFillElement ('elementErwachsene', arrAnzahlErwachsene, paramFormData[4]);
    			  fnFillElement ('elementReiseziel', fnLabelElement (arrLaender, fnRemoveEmptyFilters(arrReisezieleHotel, arrReiseorte, arrFilterReiseziele2Reiseorte), arrFilterLaender2Reiseziele), paramFormData[0]);
    			  document.getElementById ('elementReiseziel').onchange= function () {
    						                                       fnClearElement ('elementReiseort');
    						                                       fnFillElement ('elementReiseort', fnFilterElement (document.getElementById ('elementReiseziel').options[document.getElementById ('elementReiseziel').selectedIndex].value, arrReiseorte, arrFilterReiseziele2Reiseorte));
																   fnIBETestInputs ();
    					                                           }
    			  fnFillElement ('elementReiseort', fnFilterElement (document.getElementById ('elementReiseziel').options[document.getElementById ('elementReiseziel').selectedIndex].value, arrReiseorte, arrFilterReiseziele2Reiseorte), paramFormData[1]=='-1'?paramFormData[1]:paramFormData[0]+paramFormData[1]);
    			  fnFillElement ('elementKind1', arrAlterKinder, paramFormData[5]);
    			  fnFillElement ('elementKind2', arrAlterKinder, paramFormData[6]);
    			  break;
    			  
    case 'FLUG'		: fnFillElement ('elementErwachsene', arrAnzahlErwachsene, paramFormData[4]);
                  	  fnFillElement ('elementAbflughafen', fnLabelElement (arrLaender, fnRemoveEmptyFilters(arrAbflughaefenFlug, arrFlughaefen, arrFilterAbflughafen2Zielflughafen), arrFilterLaender2Flughaefen), paramFormData[0]);
    			  document.getElementById ('elementAbflughafen').onchange= function () {
    						                                       fnClearElement ('elementZielflughafen');
    						                                       fnFillElement ('elementZielflughafen', fnLabelElement (arrLaender,  fnFilterElement (document.getElementById ('elementAbflughafen').options[document.getElementById ('elementAbflughafen').selectedIndex].value, arrFlughaefen, arrFilterAbflughafen2Zielflughafen), arrFilterLaender2Flughaefen));
																   fnIBETestInputs ();
  					                                           }
    			  fnFillElement ('elementZielflughafen', fnLabelElement (arrLaender, fnFilterElement (document.getElementById ('elementAbflughafen').options[document.getElementById ('elementAbflughafen').selectedIndex].value, arrFlughaefen, arrFilterAbflughafen2Zielflughafen), arrFilterLaender2Flughaefen), paramFormData[1]);
    			  fnFillElement ('elementKind1', arrAlterKinder, paramFormData[5]);
    			  fnFillElement ('elementKind2', arrAlterKinder, paramFormData[6]);
    			  if (document.getElementById ('oneway').value=='J') RLEDMCalendar.fnChangePickupLength (1);

    			  break;
    			  
    case 'MIETWAGEN'	: fnFillElement ('elementErwachsene', arrAnzahlErwachsene, paramFormData[4]);
    			  fnFillElement ('elementKind1', arrAlterKinder, paramFormData[5]);
    			  fnFillElement ('elementKind2', arrAlterKinder, paramFormData[6]);
    			  fnFillElement ('elementUhrzeitAnmietung', arrUhrzeiten, paramFormData[9]);
    			  fnFillElement ('elementUhrzeitRueckgabe', arrUhrzeiten, paramFormData[10]);
    			  fnFillElement ('elementReiseziel', fnLabelElement (arrLaender, fnRemoveEmptyFilters(arrReisezieleMietwagen, arrMietwagenstationen, arrFilterReiseziel2Mietwagenstation), arrFilterLaender2Reiseziele), paramFormData[1]=='-1'?paramFormData[1]:paramFormData[0]+paramFormData[1]);
    			  document.getElementById ('elementReiseziel').onchange= function () {
    						                                       fnClearElement ('elementAnmietstation');
    						                                       fnFillElement ('elementAnmietstation', fnFilterElement (document.getElementById ('elementReiseziel').options[document.getElementById ('elementReiseziel').selectedIndex].value, arrMietwagenstationen, arrFilterReiseziel2Mietwagenstation));
    						                                       fnClearElement ('elementRueckgabestation');
    						                                       fnFillElement ('elementRueckgabestation', fnFilterElement (document.getElementById ('elementReiseziel').options[document.getElementById ('elementReiseziel').selectedIndex].value, arrMietwagenstationen, arrFilterReiseziel2Mietwagenstation));
																   fnIBETestInputs ();
    					                                      }
    			  fnFillElement ('elementAnmietstation', fnFilterElement (document.getElementById ('elementReiseziel').options[document.getElementById ('elementReiseziel').selectedIndex].value, arrMietwagenstationen, arrFilterReiseziel2Mietwagenstation), paramFormData[7]);
    			  fnFillElement ('elementRueckgabestation', fnFilterElement (document.getElementById ('elementReiseziel').options[document.getElementById ('elementReiseziel').selectedIndex].value, arrMietwagenstationen, arrFilterReiseziel2Mietwagenstation), paramFormData[8]);
			  break;
			  
    case 'FINCA'	: fnFillElement ('elementErwachsene', arrAnzahlErwachsene, paramFormData[4]);
    			  fnFillElement ('elementReiseziel', fnLabelElement (arrLaender, fnRemoveEmptyFilters(arrReisezieleFinca, arrReiseorte, arrFilterReiseziele2Reiseorte), arrFilterLaender2Reiseziele), paramFormData[0]);
    			  document.getElementById ('elementReiseziel').onchange= function () {
    						                                       fnClearElement ('elementReiseort');
    						                                       fnFillElement ('elementReiseort', fnFilterElement (document.getElementById ('elementReiseziel').options[document.getElementById ('elementReiseziel').selectedIndex].value, arrReiseorte, arrFilterReiseziele2Reiseorte));
																   fnIBETestInputs ();
    					                                      }
    			  fnFillElement ('elementReiseort', fnFilterElement (document.getElementById ('elementReiseziel').options[document.getElementById ('elementReiseziel').selectedIndex].value, arrReiseorte, arrFilterReiseziele2Reiseorte), paramFormData[1]=='-1'?paramFormData[1]:paramFormData[0]+paramFormData[1]);
    			  fnFillElement ('elementKind1', arrAlterKinder, paramFormData[5]);
    			  fnFillElement ('elementKind2', arrAlterKinder, paramFormData[6]);
    			  break;
    			  
    case 'PAUSCHAL'	: fnFillElement ('elementErwachsene', arrAnzahlErwachsene, paramFormData[4]);
    			  fnFillElement ('elementKind1', arrAlterKinder, paramFormData[5]);
    			  fnFillElement ('elementKind2', arrAlterKinder, paramFormData[6]);
    			  fnFillElement ('elementReiseziel', fnLabelElement (arrLaender, fnRemoveEmptyFilters(arrReisezielePauschal, arrAbflughaefenPauschal, arrFilterReiseziel2Abflughafen), arrFilterLaender2Reiseziele), paramFormData[0]);
    			  document.getElementById ('elementReiseziel').onchange= function () {
    			                                                   var bufferAbflughafen=document.getElementById ('elementAbflughafen').value;
    						                                       fnClearElement ('elementAbflughafen');
    						                                       fnFillElement ('elementAbflughafen', fnLabelElement (arrLaender, fnFilterElement (document.getElementById ('elementReiseziel').options[document.getElementById ('elementReiseziel').selectedIndex].value, arrAbflughaefenPauschal, arrFilterReiseziel2Abflughafen), arrFilterLaender2Flughaefen), bufferAbflughafen);
																   fnIBETestInputs ();
    					                                      }
   			  fnFillElement ('elementAbflughafen', fnLabelElement (arrLaender, fnFilterElement (document.getElementById ('elementReiseziel').options[document.getElementById ('elementReiseziel').selectedIndex].value, arrAbflughaefenPauschal, arrFilterReiseziel2Abflughafen), arrFilterLaender2Flughaefen), paramFormData[1]);
    			  break;
    case 'EXTRAS'	: fnFillElement ('elementErwachsene', arrAnzahlErwachsene, paramFormData[4]);
    			  fnFillElement ('elementReiseziel', fnLabelElement (arrLaender, fnRemoveEmptyFilters(arrReisezieleExtra, arrReiseorte, arrFilterReiseziele2Reiseorte), arrFilterLaender2Reiseziele), paramFormData[0]);
    			  document.getElementById ('elementReiseziel').onchange= function () {
    						                                       fnClearElement ('elementReiseort');
    						                                       fnFillElement ('elementReiseort', fnFilterElement (document.getElementById ('elementReiseziel').options[document.getElementById ('elementReiseziel').selectedIndex].value, arrReiseorte, arrFilterReiseziele2Reiseorte));
																   fnIBETestInputs ();
    					                                      }
    			  fnFillElement ('elementReiseort', fnFilterElement (document.getElementById ('elementReiseziel').options[document.getElementById ('elementReiseziel').selectedIndex].value, arrReiseorte, arrFilterReiseziele2Reiseorte), paramFormData[1]=='-1'?paramFormData[1]:paramFormData[0]+paramFormData[1]);
    			  fnFillElement ('elementKind1', arrAlterKinder, paramFormData[5]);
    			  fnFillElement ('elementKind2', arrAlterKinder, paramFormData[6]);
    			  break;
  }
}


function fnSwitchViewIBE (obj, element) {

  document.getElementById ('idgIBEMessageWindowContainer').style.visibility='hidden';
  if(objActiveNavButton) {
    objActiveNavButton.src=wl+'/externer_content/walls/allgemein/ibe/images/'+arrViews[intActiveView][1];
    objActiveNavButton.className='';
  }
  obj.src=wl+'/externer_content/walls/allgemein/ibe/images/'+arrViews[element][2];
  obj.className='activeView';
  document.getElementById ('idgIBEform').innerHTML=arrViews[element][3];
  for (var dummy=0; dummy<document.getElementById ('idgIBEform').elements.length; dummy++) {
    document.getElementById ('idgIBEform').elements[dummy].onchange=fnIBETestInputs;
  }

  objActiveNavButton=obj;
  intActiveView=element;

  idgCalendar=new idgObjCalendar ();
  idgCalendar.fnSetPickups ([['elementAnreise', 'Anreisetermin', TODAY], ['elementAbreise', 'Abreisetermin', TODAY]]);
  idgCalendar.fnSetPeriods (arrViews[intActiveView][4]);
  idgCalendar.mindate=new Date (TODAY.getFullYear (), TODAY.getMonth (), TODAY.getDate ());;
  idgCalendar.mindate.setDate (1);

  fnFillViewIBE (element); 

}

function fnFillViewIBE (element) {

  switch (arrViews[element][0]) {
    case 'HOTEL'	:   fnFillElement ('elementErwachsene', arrAnzahlErwachsene, '2');
    			    if (document.getElementById ('elementReiseort')==undefined) {
    			      fnFillElement ('elementReiseziel', fnLabelElement (arrLaender, arrReisezieleHotel, arrFilterLaender2Reiseziele));
    			    } else {   
      			      fnFillElement ('elementReiseziel', fnLabelElement (arrLaender, fnRemoveEmptyFilters(arrReisezieleHotel, arrReiseorte, arrFilterReiseziele2Reiseorte), arrFilterLaender2Reiseziele));
    			      document.getElementById ('elementReiseziel').onchange= function () {
    						                                       fnClearElement ('elementReiseort');
    						                                       fnFillElement ('elementReiseort', fnFilterElement (document.getElementById ('elementReiseziel').options[document.getElementById ('elementReiseziel').selectedIndex].value, arrReiseorte, arrFilterReiseziele2Reiseorte));
    						                                       fnIBETestInputs ();
    					                                             }
    			      fnFillElement ('elementReiseort', fnFilterElement (document.getElementById ('elementReiseziel').options[document.getElementById ('elementReiseziel').selectedIndex].value, arrReiseorte, arrFilterReiseziele2Reiseorte));
    			    }
    			    fnFillElement ('elementKind1', arrAlterKinder);
    			    fnFillElement ('elementKind2', arrAlterKinder);
    			    fnFillElement ('elementVerpflegung', arrVerpflegung);
    			    fnFillElement ('elementZimmertyp', arrZimmertyp);
    			    fnFillElement ('elementHotelkategorie', arrHotelkategorie);
    			    break;
    case 'FLUG'		:   fnFillElement ('elementErwachsene', arrAnzahlErwachsene, '2');
                  	    fnFillElement ('elementAbflughafen', fnLabelElement (arrLaender, fnRemoveEmptyFilters(arrAbflughaefenFlug, arrFlughaefen, arrFilterAbflughafen2Zielflughafen), arrFilterLaender2Flughaefen));
    			    document.getElementById ('elementAbflughafen').onchange= function () {
    						                                       fnClearElement ('elementZielflughafen');
    						                                       fnFillElement ('elementZielflughafen', fnLabelElement (arrLaender,  fnFilterElement (document.getElementById ('elementAbflughafen').options[document.getElementById ('elementAbflughafen').selectedIndex].value, arrFlughaefen, arrFilterAbflughafen2Zielflughafen), arrFilterLaender2Flughaefen));
      						                                       fnIBETestInputs ();
    					                                             }
    			    fnFillElement ('elementZielflughafen', fnLabelElement (arrLaender, fnFilterElement (document.getElementById ('elementAbflughafen').options[document.getElementById ('elementAbflughafen').selectedIndex].value, arrFlughaefen, arrFilterAbflughafen2Zielflughafen), arrFilterLaender2Flughaefen));
    			    fnFillElement ('elementKind1', arrAlterKinder);
    			    fnFillElement ('elementKind2', arrAlterKinder);
    			    fnFillElement ('elementFlugabweichung', arrFlugabweichung, '1');
    			    document.getElementById ('oneway').onchange = fnSwitchOneWay.bind (document.getElementById ('oneway'), idgCalendar);

    			    break;
    case 'MIETWAGEN':	    fnFillElement ('elementErwachsene', arrAnzahlErwachsene, '2');
    			    fnFillElement ('elementKind1', arrAlterKinder);
    			    fnFillElement ('elementKind2', arrAlterKinder);
    			    fnFillElement ('elementUhrzeitAnmietung', arrUhrzeiten, '1200');
    			    fnFillElement ('elementUhrzeitRueckgabe', arrUhrzeiten, '1200');
    			    fnFillElement ('elementReiseziel', fnLabelElement (arrLaender, fnRemoveEmptyFilters(arrReisezieleMietwagen, arrMietwagenstationen, arrFilterReiseziel2Mietwagenstation), arrFilterLaender2Reiseziele));
    			    document.getElementById ('elementReiseziel').onchange= function () {
    						                                     fnClearElement ('elementAnmietstation');
    						                                     fnFillElement ('elementAnmietstation', fnFilterElement (document.getElementById ('elementReiseziel').options[document.getElementById ('elementReiseziel').selectedIndex].value, arrMietwagenstationen, arrFilterReiseziel2Mietwagenstation));
    						                                     fnClearElement ('elementRueckgabestation');
    						                                     fnFillElement ('elementRueckgabestation', fnFilterElement (document.getElementById ('elementReiseziel').options[document.getElementById ('elementReiseziel').selectedIndex].value, arrMietwagenstationen, arrFilterReiseziel2Mietwagenstation));
    						                                     fnIBETestInputs ();
    					                                           }
    			    fnFillElement ('elementAnmietstation', fnFilterElement (document.getElementById ('elementReiseziel').options[document.getElementById ('elementReiseziel').selectedIndex].value, arrMietwagenstationen, arrFilterReiseziel2Mietwagenstation));
    			    fnFillElement ('elementRueckgabestation', fnFilterElement (document.getElementById ('elementReiseziel').options[document.getElementById ('elementReiseziel').selectedIndex].value, arrMietwagenstationen, arrFilterReiseziel2Mietwagenstation));
			    break;
    case 'PAUSCHAL'	:   fnFillElement ('elementErwachsene', arrAnzahlErwachsene, '2');
    			    fnFillElement ('elementKind1', arrAlterKinder);
    			    fnFillElement ('elementKind2', arrAlterKinder);
    			    fnFillElement ('elementVerpflegung', arrVerpflegung);
    			    fnFillElement ('elementZimmertyp', arrZimmertyp);
    			    fnFillElement ('elementHotelkategorie', arrHotelkategorie);
    			    fnFillElement ('elementReiseziel', fnLabelElement (arrLaender, fnRemoveEmptyFilters(arrReisezielePauschal, arrAbflughaefenPauschal, arrFilterReiseziel2Abflughafen), arrFilterLaender2Reiseziele));
    			    document.getElementById ('elementReiseziel').onchange= function () {
    						                                     fnClearElement ('elementAbflughafen');
    						                                     fnFillElement ('elementAbflughafen', fnLabelElement (arrLaender, fnFilterElement (document.getElementById ('elementReiseziel').options[document.getElementById ('elementReiseziel').selectedIndex].value, arrAbflughaefenPauschal, arrFilterReiseziel2Abflughafen), arrFilterLaender2Flughaefen));
    						                                     fnIBETestInputs ();
    					                                           }
   			    fnFillElement ('elementAbflughafen', fnLabelElement (arrLaender, fnFilterElement (document.getElementById ('elementReiseziel').options[document.getElementById ('elementReiseziel').selectedIndex].value, arrAbflughaefenPauschal, arrFilterReiseziel2Abflughafen), arrFilterLaender2Flughaefen));
    			    break;
  }


}


function fnLabelElement (labeldata, elementdata, filterdata) {

  var arrRetValue=[];
  arrRetValue.push(['%', 'beliebig']);

  for (var dummy=0; dummy<labeldata.length; dummy++) {
    arrRetValue.push([labeldata[dummy][1], []]);
    for (var dummy2=0; dummy2<filterdata.length; dummy2++) {
      if (labeldata[dummy][0]==filterdata[dummy2][0]) {
        for (var dummy3=0; dummy3<elementdata.length; dummy3++) {
          for (var dummy4=0; dummy4<filterdata[dummy2][1].length; dummy4++) {
            if (elementdata[dummy3][0]==filterdata[dummy2][1][dummy4]) {
              arrRetValue[(arrRetValue.length-1)][1].push ([elementdata[dummy3][0],elementdata[dummy3][1]]);
            }
          }
        }
      }
    }
  }

  for (var dummy=0; dummy<arrRetValue.length; dummy++) {
    if (arrRetValue[dummy][1].length==0) {
      arrRetValue.splice (dummy, 1);
      dummy--;
    }
  }

  return (arrRetValue);
}


function fnRemoveEmptyFilters (filterarray, elementarray, filterdata) {

  for (var dummy=0; dummy<filterarray.length; dummy++) {
    arrTestFilter=fnFilterElement (filterarray[dummy][0], elementarray, filterdata);
    if (arrTestFilter.length==0) {
      filterarray.splice (dummy,1);
      dummy--;
    }
  }

  return (filterarray);


}

function fnFilterElement (filter, elementdata, filterdata) {

  var filterID, filterdataID;
  var arrFilteredElements=[];

  for (filterID=0; filterID<filterdata.length; filterID++) if (filterdata[filterID][0]==filter) break;

  if (typeof (filterdata[filterID])!='undefined') {
    for (var dummy=0; dummy<filterdata[filterID][1].length; dummy++) {
      for (var dummy2=0; dummy2<elementdata.length; dummy2++) {
        if (elementdata[dummy2][0]==filterdata[filterID][1][dummy]) {
          arrFilteredElements.push([elementdata[dummy2][0], elementdata[dummy2][1]]);
        }
      }
    }

  }

//  window.alert (arrFilteredElements);

  return (arrFilteredElements);

}

function fnFillElement (elementname, elementdata, selectedElement) {

  var obj=null;
  if (typeof (elementname)=='string') obj=document.getElementById (elementname);
    else obj=elementname;
    
   
  for (var dummy=0; dummy<elementdata.length; dummy++) {
    if (typeof (elementdata[dummy][1])=='object') {
    
      if (navigator.userAgent.substr (30,3)!='5.5') {      
        var newOptionGroup=document.createElement ('optgroup');
        newOptionGroup.label=elementdata[dummy][0];
        obj.appendChild (newOptionGroup);
        fnFillElement (newOptionGroup, elementdata[dummy][1], selectedElement);
      } else {
        fnFillElement (obj, elementdata[dummy][1], selectedElement);
      }
    } else {
      var newOption=document.createElement ('option');
      newOption.value=elementdata[dummy][0];
      
      var textNode = document.createTextNode(elementdata[dummy][1]);
      newOption.appendChild(textNode);      
      
      obj.appendChild (newOption);
      if (elementdata[dummy][0]==selectedElement) {
        if (obj.parentNode.nodeName=='SELECT') {
          obj.parentNode.selectedIndex=obj.parentNode.options.length-1;
          obj.parentNode.setAttribute ('default', obj.parentNode.selectedIndex);
          newOption.setAttribute ('selected', true);
        } else {
          obj.selectedIndex=dummy;
          obj.setAttribute ('default', dummy);
          newOption.setAttribute ('selected', true);
        }
      }
    }
  }
}

function fnDebug (text) {
  document.getElementById ('debug').innerHTML+=text;
}


function fnClearElement (elementname) {
  document.getElementById (elementname).innerHTML='';
}


function fnIBEmouseOver (obj, element) {
  obj.src=wl+'/externer_content/walls/allgemein/ibe/images/'+arrViews[element][2];
}


function fnIBEmouseOut (obj, element) {
  if (element!=intActiveView) obj.src=wl+'/externer_content/walls/allgemein/ibe/images/'+arrViews[element][1];
}


function fnIBEAlert (title, message, options) {

  strBuffer='<DIV id="idgIBEMessageWindowText">';
    strBuffer+='<H1>'+title+'</H1>';
    strBuffer+='<P>'+message+'</P>';
  strBuffer+='</DIV>';

  if (typeof (options)!='undefined') {
    strBuffer+='<DIV id="idgIBEMessageWindowOptions">';  
      strBuffer+='<A href="javascript:'+options[1][1]+'" style="float: right;"><IMG border=0 src="'+options[1][0]+'"></A>';
      strBuffer+='<A href="javascript:'+options[0][1]+'"><IMG border=0 src="'+options[0][0]+'"></A>';
    strBuffer+='</DIV>';
  }
  
  document.getElementById ('idgIBEMessageWindow').innerHTML=strBuffer;
  document.getElementById ('idgIBEMessageWindowContainer').style.visibility='visible';
  
}

function fnHideAlertWindow () {
  if (document.getElementById ('idgIBEMessageWindowContainer')!=undefined) document.getElementById ('idgIBEMessageWindowContainer').style.visibility='hidden';
  
}


function fnIBETrySubmit () {

//  fnSubmitIBE ();
//  return;

  document.getElementById ('idgIBEMessageWindowContainer').style.visibility='visible'; 
  fnIBETestInputs ();
  
  if (document.getElementById ('ResultListEDM')!=undefined && document.getElementById ('idgIBEMessageWindowContainer').style.visibility=='hidden') {
    fnSubmitIBE ();
  } else {
    if (document.getElementById ('idgIBEMessageWindowContainer').style.visibility=='hidden') { 
      fnIBETestChanges ();
    }
  }

}


function fnIBETestInputs () {

  var strAlertMessage='';

  if (document.getElementById ('idgIBEMessageWindowContainer').style.visibility=='visible') {

    for (var dummy=0; dummy<arrViews[intActiveView][5].length; dummy++) {
      if (arrViews[intActiveView][5][dummy][0].indexOf ('==')!=-1) {
        arrTest=arrViews[intActiveView][5][dummy][0].split ('==');
        if (document.getElementById (arrTest[0]).value==arrTest[1]) {
          strAlertMessage+=arrViews[intActiveView][5][dummy][1]+'<br>';
          document.getElementById ('caption_'+arrTest[0]).style.color='#F00';
        } else {
          document.getElementById ('caption_'+arrTest[0]).style.color='';
        }
      }  
    }
  
    if (strAlertMessage) {
      fnIBEAlert ('Bitte vervollständigen Sie Ihre Eingaben:', strAlertMessage);
    }  else {
      fnHideAlertWindow ();
    }
   
  }
  
}


function fnIBETestChanges () {

  var strAlertMessage='';

  for (var dummy=0; dummy<arrViews[intActiveView][6].length; dummy++) {
  
    if (document.getElementById (arrViews[intActiveView][6][dummy][0]).nodeName=='SELECT') {
      if (document.getElementById (arrViews[intActiveView][6][dummy][0]).selectedIndex==document.getElementById (arrViews[intActiveView][6][dummy][0]).getAttribute ('default')) {
        strAlertMessage+='<TR><TD>'+arrViews[intActiveView][6][dummy][1]+':</TD><TD>'+document.getElementById (arrViews[intActiveView][6][dummy][0]).options[document.getElementById (arrViews[intActiveView][6][dummy][0]).selectedIndex].text+'</TD></TR>';
      }
    } else {
      if (!(arrViews[intActiveView][6][dummy][1]=='Abreisedatum' && arrViews[intActiveView][0]=='FLUG' && (document.getElementById ('oneway').value=='J' || document.getElementById ('oneway').checked)) && document.getElementById (arrViews[intActiveView][6][dummy][0]).value==document.getElementById (arrViews[intActiveView][6][dummy][0]).getAttribute ('default')) {
        strAlertMessage+='<TR><TD>'+arrViews[intActiveView][6][dummy][1]+':</TD><TD>'+document.getElementById (arrViews[intActiveView][6][dummy][0]).value+'</TD></TR>';
      }
    }
  }
  
  if (strAlertMessage) {
    fnIBEAlert ('', 'Ist dies Ihr <b>Wunschtermin?</b><br>Dann weiter mit "JA".<br>Wenn nicht, klicken Sie auf "NEIN" und ändern Sie die Reisedaten.', [[wl+'/externer_content/walls/allgemein/ibe/images/bt_confirm_layer_nein.gif', 'fnHideAlertWindow ()'], [wl+'/externer_content/walls/allgemein/ibe/images/bt_confirm_layer_ja.gif', 'fnSubmitIBE ()']]);
  }  else {
    fnSubmitIBE ();
  }
}


function fnSubmitIBE () {

  fnHideAlertWindow ();
  var xmlObject=new idgXMLObject (arrViews[intActiveView][7]);
  
  for (var dummy=0; dummy<document.getElementById ('idgIBEform').elements.length; dummy++) {
    var xmlCromb=document.getElementById ('idgIBEform').elements[dummy].getAttribute ('xmlPos');
    if (xmlCromb!=null) {
      if (document.getElementById ('idgIBEform').elements[dummy].nodeName=='SELECT') {
        xmlObject.setValue (xmlCromb, document.getElementById ('idgIBEform').elements[dummy].options[document.getElementById ('idgIBEform').elements[dummy].selectedIndex].value);
      } else {
        xmlObject.setValue (xmlCromb, document.getElementById ('idgIBEform').elements[dummy].value);
      }
    }    
  }
  
  var arrXMLPath=document.getElementById('elementErwachsene').getAttribute ('xmlpos').explode ('.');
  var strXMLPath='';
  for (var dummy=0; dummy<arrXMLPath.length-1; dummy++) strXMLPath+=arrXMLPath[dummy]+'.';
  
  var intNumberOfChildren=0, intNumberOfInfants=0, intChildAge=0;
  for (var dummy=1; dummy<5; dummy++) {
    if (document.getElementById('elementKind'+dummy)!=undefined) {
      intChildAge=document.getElementById('elementKind'+dummy).nodeName=='SELECT'?document.getElementById('elementKind'+dummy).options[document.getElementById('elementKind'+dummy).selectedIndex].value:document.getElementById('elementKind'+dummy).value;
      
      if (intChildAge>0) {
        if (intChildAge==1) {
          intNumberOfInfants++;       
        } else {
          intNumberOfChildren++;
        }
        xmlObject.setValue (strXMLPath+'TravelerAgeList.Age.'+(intNumberOfChildren+intNumberOfInfants-1), intChildAge);
      }
    }
  }
  if (intNumberOfChildren) xmlObject.setValue (strXMLPath+'NumberOfChildren', intNumberOfChildren);
  if (intNumberOfInfants) xmlObject.setValue (strXMLPath+'NumberOfInfants', intNumberOfInfants);
  xmlObject.setValue (strXMLPath+'NumberOfTravelers', (parseInt(xmlObject.getValue (strXMLPath+'NumberOfTravelers'))+parseInt(intNumberOfChildren)+parseInt(intNumberOfInfants)));
  
  var arrFromDate=document.getElementById ('elementAnreise').value.explode ('.');
  if (arrFromDate[2].length==2) arrFromDate[2]='20'+arrFromDate[2];
  var strFromDate=arrFromDate[2]+'-'+arrFromDate[1]+'-'+arrFromDate[0];
  var arrEndDate=document.getElementById ('elementAbreise').value.explode ('.');
  if (arrEndDate[2].length==2) arrEndDate[2]='20'+arrEndDate[2];
  var strEndDate=arrEndDate[2]+'-'+arrEndDate[1]+'-'+arrEndDate[0];  
  xmlObject.setValue (document.getElementById('elementAnreise').getAttribute ('xmlpos'), strFromDate);
  xmlObject.setValue (document.getElementById('elementAbreise').getAttribute ('xmlpos'), strEndDate);
  
  
  if (arrViews[intActiveView][0]=='HOTEL' && (document.getElementById ('elementHotelname')==undefined || document.getElementById ('elementHotelname').value=='')) {
    xmlObject.deleteValue (strXMLPath+'ServiceDescription');
  }

  if (document.getElementById ('elementReiseort')!=undefined && document.getElementById ('elementReiseort').value=='%') {
    xmlObject.setValue (document.getElementById('elementReiseort').getAttribute ('xmlpos'), document.getElementById ('elementReiseziel').value+'%');
  }

  if (arrViews[intActiveView][0]=='FLUG' && document.getElementById ('elementFlugabweichung')!=undefined) {
      xmlObject.setValue (strXMLPath+'EndDateTolerance', document.getElementById('elementFlugabweichung').options[document.getElementById('elementFlugabweichung').selectedIndex].value);
  }
  
  if (document.getElementById('elementZimmertyp')!=undefined && document.getElementById('elementZimmertyp').value=='802'){
      xmlObject.setValue ('IbeMsg.AvailabilityListRQ.AvailabilityData.AdditionalData.Hotel.Type', 'DZ');
  }
  if (document.getElementById('elementZimmertyp')!=undefined && document.getElementById('elementZimmertyp').value=='803'){
      xmlObject.setValue ('IbeMsg.AvailabilityListRQ.AvailabilityData.AdditionalData.Hotel.Type', 'EZ');
  }
  if (document.getElementById('elementZimmertyp')!=undefined && (document.getElementById('elementZimmertyp').value=='-1' || document.getElementById('elementZimmertyp').value=='')){
      xmlObject.setValue ('IbeMsg.AvailabilityListRQ.AvailabilityData.AdditionalData.Hotel.Type', '%');
  }

  if (document.getElementById('elementVerpflegung')!=undefined && (document.getElementById('elementVerpflegung').value=='-1' || document.getElementById('elementVerpflegung').value=='')){
      xmlObject.setValue (strXMLPath+'Catering', '%');
  }

  if (document.getElementById('elementHotelkategorie')!=undefined && (document.getElementById('elementHotelkategorie').value=='-1' || document.getElementById('elementHotelkategorie').value=='')){
      xmlObject.setValue (strXMLPath+'RatingCode', '%');
  }

  if (document.getElementById('elementCarType')!=undefined && document.getElementById('elementCarType').value=='-1'){
      xmlObject.setValue ('IbeMsg.AvailabilityListRQ.AvailabilityData.AdditionalData.RentalCar.Type', '%');
  }

  if (document.getElementById ('elementAirline')==undefined || document.getElementById ('elementAirline').value=='-1') {
    xmlObject.deleteValue ('IbeMsg.AvailabilityListRQ.AvailabilityData.AvailabilityRQ.CRSFlightInfo.RequestedCRSList');
  }

  if (arrViews[intActiveView][0]=='FINCA' && (document.getElementById('elementAnzahlSchlafzimmer')==undefined || (document.getElementById('elementAnzahlSchlafzimmer')!=undefined && document.getElementById('elementAnzahlSchlafzimmer').value=='-1'))){
      xmlObject.setValue (strXMLPath+'SearchCriteria.Criterion.0', '0');
  }


  if (arrViews[intActiveView][0]=='EXTRAS' && document.getElementById('elementExtras')!=undefined && document.getElementById('elementExtras').value!=''){

    xmlObject['XML']['IbeMsg']['AvailabilityListRQ']['AvailabilityData']['AvailabilityRQ']['SearchCriteria']=[];
    xmlObject['XML']['IbeMsg']['AvailabilityListRQ']['AvailabilityData']['AvailabilityRQ']['SearchCriteria']['Criterion']=[];

    var arrExtras=document.getElementById ('elementExtras').value.split (',');
    for (var dummy=1; dummy<arrExtras.length; dummy++) {
      xmlObject['XML']['IbeMsg']['AvailabilityListRQ']['AvailabilityData']['AvailabilityRQ']['SearchCriteria']['Criterion'][dummy-1]=[];
      xmlObject['XML']['IbeMsg']['AvailabilityListRQ']['AvailabilityData']['AvailabilityRQ']['SearchCriteria']['Criterion'][dummy-1]['value']='true';
      xmlObject['XML']['IbeMsg']['AvailabilityListRQ']['AvailabilityData']['AvailabilityRQ']['SearchCriteria']['Criterion'][dummy-1]['attributes']=[];
      xmlObject['XML']['IbeMsg']['AvailabilityListRQ']['AvailabilityData']['AvailabilityRQ']['SearchCriteria']['Criterion'][dummy-1]['attributes']['Name']=[];
      xmlObject['XML']['IbeMsg']['AvailabilityListRQ']['AvailabilityData']['AvailabilityRQ']['SearchCriteria']['Criterion'][dummy-1]['attributes']['Name']['value']=arrExtras[dummy].replace (/&/g, '&amp;');
      xmlObject['XML']['IbeMsg']['AvailabilityListRQ']['AvailabilityData']['AvailabilityRQ']['SearchCriteria']['Criterion'][dummy-1]['attributes']['ValueType']=[];
      xmlObject['XML']['IbeMsg']['AvailabilityListRQ']['AvailabilityData']['AvailabilityRQ']['SearchCriteria']['Criterion'][dummy-1]['attributes']['ValueType']['value']='bool';
    }
  } 
  


  
  if (document.getElementById('elementSwimmingPool')!=undefined && document.getElementById('elementSwimmingPool').value=='false') {
      xmlObject.deleteValue (strXMLPath+'SearchCriteria.Criterion.1');
  }

  
  if (arrViews[intActiveView][0]=='FLUG' && document.getElementById ('oneway')!=undefined && (document.getElementById ('oneway').value=='J' || document.getElementById ('oneway').checked)) {
    xmlObject.setValue (strXMLPath+'CRSFlightInfo.attributes.OutwardReturn', 'Outward');
    xmlObject.setValue (strXMLPath+'EndDate', xmlObject.getValue (strXMLPath+'FromDate'));
//    xmlObject.deleteValue (strXMLPath+'EndDate');   Der Wert wird bei Oneway trotzdem benötigt
    xmlObject.deleteValue (strXMLPath+'EndDateTolerance');
  }
  
  if (arrViews[intActiveView][0]=='PAUSCHAL' && (document.getElementById ('elementHotelname')==undefined || document.getElementById ('elementHotelname').value=='')) {
    xmlObject.deleteValue (strXMLPath+'ServiceDescription');
  }
  if (arrViews[intActiveView][0]=='PAUSCHAL') {

    xmlObject.setValue (strXMLPath+'CRSFlightInfoList.CRSFlightInfo.DestinationLocation', 'PMI');  
  
  }

//  xmlObject['XML']['IbeMsg']['AvailabilityListRQ']['attributes']['WorkflowPosition']['value']='BasicData';

//  fnDebugOut (print_r (xmlObject.XML, true));
//  return;

  
  var strIBEMessage=xmlObject.fnXML2String (xmlObject.XML);
  var strEchoToken=String.randomString (20);
  strIBEMessage=strIBEMessage.replace (/EchoToken=""/g, 'EchoToken="'+strEchoToken+'"');

//  fnDebugOut ('<PRE>'+strIBEMessage.replace (/</g, '&lt;').replace (/>/g, '&gt;')+'</PRE>');
//  window.alert (strIBEMessage);
//  return;

  
  var xmlForm=document.createElement ('FORM');
  xmlForm.method='POST';
//  xmlForm.target='ibewindow';
  xmlForm.action=wl+"/xmlDispatch.do";
  var xmlRequest=document.createElement ('INPUT');
  xmlRequest.type='hidden';  
  xmlRequest.name='xmlRequest';
  xmlRequest.value=strIBEMessage;
  xmlForm.appendChild (xmlRequest);
  ptrIBE.appendChild (xmlForm);
  openProcessPopup (wl.substr (1));
  xmlForm.submit ();
  
  

}

var myPopupCloseVar=null;
function openProcessPopup(whitelabel){

       whitelabel = whitelabel.toLowerCase();
	url = "/" + whitelabel + "/popup_warten.html";
	// whitelabel = " ";
	if (typeof (session)!='undefined') title =  "IBEPopup" + session;
	else title =  "IBEPopup" + strSessionName;
	popup_height = "260";
	popup_width = "379";
	scrollbars = "no";
	
	screen_width = ( screen.width / 2 ) - ( popup_width / 2 ) - 20;
	screen_height = ( screen.height / 2 ) - ( popup_height / 2 ) - 20;					

	/* Falls Popupfenster zu weit links oben ist setze fixe Werte */
	if(screen_width < 200 && screen_height < 200)
	{
		screen_width = 200;
		screen_height = 200;
	}
	
	controlWindow=window.open(url,title,"toolbar=no,height="+popup_height+",width="+popup_width+",left="+screen_width+",top="+screen_height+",location=no,directories=no,status=no,menubar=no,scrollbars="+scrollbars+",resizable=no");
}



Function.prototype.bind = function () {
    var method = this, args = Array.prototype.slice.apply(arguments), object = args.shift();
    return function () { return method.apply(object, args); };
};


function is_array( mixed_var ) {
  var key = '';
  var getFuncName = function (fn) {
        var name = (/\W*function\s+([\w\$]+)\s*\(/).exec(fn);
        if(!name) return '(Anonymous)';
        return name[1];
      };

  if (!mixed_var) return false;
  if (typeof mixed_var === 'object') {
    if (mixed_var.hasOwnProperty) for (key in mixed_var) if (false === mixed_var.hasOwnProperty(key)) return false;
    return true;
  }

  return false;
}