// Content: js resize
// 2008-05-28. FM 22832 CB: 
// Set the correct domain (klm.com) for the ICI pages on klm.com so that IFrame information can be read 
// when the IFrame is located on a different server than where the klm.com pages are located.
setDomainForICI();
setDomainForEcomplaints();
// End set correct domain

function setDomainForICI()
{
	var strLocation = this.location.href;

	if ( ( strLocation.indexOf("klm.com") >= 0 ) && 
	     ( strLocation.indexOf("internet_checkin/ici_flightpax") >= 0 ) )
	{
		document.domain = "klm.com";
	}
}

function setDomainForEcomplaints()
{
	var strLocation = this.location.href;

	if ( ( strLocation.indexOf("klm.com") >= 0 ) &&
	( strLocation.indexOf("customer_support/ecomplaints") >= 0 ) )
	{
		document.domain = "klm.com";
	}
}

var w=null;function log(m){if(!w)w=window.open();w.document.write(m+'<br />');}

function updateSize () {
	updateIt();
}

function updateIt () {

	if (top.mainContainer)
	{
		/* Disable optimizing width 800 layout if bluebiz is running with a 4 column application */
		if ((document.body.offsetWidth < 988) && (!document.getElementById('bb_login') || !document.getElementById('app4jffp'))) {
			top.mainContainer.className = "main800";
			var d = document.getElementById("language_selector");
			if (d) d.style.width = "773px";
		}
		else {
			top.mainContainer.className = "main1024";
			var d = document.getElementById("language_selector");
			if (d) d.style.width = "987px";
		}
		/* Force correct positioning */
		if (navigator.product && navigator.product == "Gecko") {
			top.mainContainer.style.position = "relative";
			top.mainContainer.style.position = "";
		}
	}
}
// Content: js selfassist
var SelfAssist = function(country, lang){
  //General
  var self = this;
  this.base_url = "/commercial/selfassist/faq-web";
  this.loading_url = 'loading.htm';
  this.popup = 0;
  
  //Language Settings
  this.country = 'nl';
  this.language = 'en';
  
  /*if(country == null && lang == null && YAHOO.util.Cookie.get("countryLanguage") != null){
    var sLanguageSetting = YAHOO.util.Cookie.get("countryLanguage");
    this.country = sLanguageSetting.split('_')[0];
    this.lang = sLanguageSetting.split('_')[1];
  }else{*/
    if(country != null){
      this.country = country;
    }
    if(lang != null){
      this.language = lang;
    }
  //}

  if(YAHOO.util.Cookie && YAHOO.util.Cookie.get("popup") != null){
    this.popup = YAHOO.util.Cookie.get("popup");
  }else if(this.getCookie("popup") != null){
    this.popup = this.getCookie("popup");
  }
  //Self Assist controls
  //Container
  this.container = YAHOO.util.Dom.get("sa-container");
  this.container.style.display = 'block';

  var parentContainer = this.container.parentNode;
  this.layOver = new Overlay(parentContainer, {speed: .9, opacity: .8, animate: true, id:'sa-overlay'});
  this.layOver.addOnClickHandler(this);
  
  //Form
  this.defaultInput = YAHOO.util.Dom.get("mySearch");
  this.defaultButton = YAHOO.util.Dom.get("supportZoekLink");

  this.addForm(this.defaultInput, this.defaultButton);

  //Tabs
  this.searchTab = YAHOO.util.Dom.get("zoektab");
  this.catTab = YAHOO.util.Dom.get("tabcat");
  YAHOO.util.Event.addListener(this.catTab.getElementsByTagName('a')[0], 'click', this.onTabClickHandler, this.catTab)
  this.faqTab = YAHOO.util.Dom.get("tabfaq");
  YAHOO.util.Event.addListener(this.faqTab.getElementsByTagName('a')[0], 'click', this.onTabClickHandler, this.faqTab)
  this.closeTab = YAHOO.util.Dom.get("tabclose");
  YAHOO.util.Event.addListener(this.closeTab.getElementsByTagName('a')[0], 'click', this.onTabClickHandler, this.closeTab)
	
  //Iframe
  this.iframe = YAHOO.util.Dom.get("sa-iframe");
  this.iframe.style.visibility = "hidden";
  YAHOO.util.Event.addListener(this.iframe, 'load', this.resetTabs, this);
  
  //Default SearchTerm
  this.searchTerm = "";
  this.defaultSearchTerm = this.defaultInput.value;

  //Load QueryString Listener
  if (location.host.match("klm.com")) {
      this.loadFromQueryString(window.location.search.substring(1));
  }
}

/** getQSVar
* Get a variable value from the querystring
* @param varname
**/
SelfAssist.prototype.getQSVar = function(varname) {
  hu = window.location.search.substring(1);
  gy = hu.split("&");
  returnValue = null;
  for (i=0;i<gy.length;i++) {
    ft = gy[i].split("=");
    if (ft[0] == varname) {
      returnValue = ft[1];
    }
  }
  return returnValue;
}


SelfAssist.prototype.getCookie = function(c_name){
  if (document.cookie.length>0){
    c_start=document.cookie.indexOf(c_name + "=");
    if (c_start!=-1){
      c_start=c_start + c_name.length+1;
      c_end=document.cookie.indexOf(";",c_start);
      if (c_end==-1) c_end=document.cookie.length;
        return unescape(document.cookie.substring(c_start,c_end));
    }
  }
  return null;
}

/** loadFromQueryString
* Checks for variables used in the querystring that loads the SelfAssist Popup
* @param queryString
**/
SelfAssist.prototype.loadFromQueryString = function(queryString){
  if(this.getQSVar("sa_url") != null)  //By URL
    this.loadUri(Url.decode(this.getQSVar("sa_url")));
  else if(this.getQSVar('q') != null) //By Question
    this.ask(this.getQSVar('q'));
  else if(this.getQSVar('q_cat') != null) //By Category
    this.cat(this.getQSVar('q_cat'));
  else if(this.getQSVar('q_faq') != null){ //By FAQ Category (If category is '1', general top 10 will be opened)
    if(this.getQSVar('q_faq') != 1){
      this.faq(this.getQSVar('q_faq'));
    }else{
      this.faq();
    }
  }
}

/** addForm
* Add a form to listen to. When the button is clicked SelfAssist will handle the click event.
* @param oInput
* @param oButton
**/
SelfAssist.prototype.addForm = function(oInput, oButton){
  oInput.title = oInput.value;
  YAHOO.util.Event.purgeElement(oInput, true);
  YAHOO.util.Event.purgeElement(oButton, true);
  YAHOO.util.Event.addListener(oButton, "click", this.onSubmitHandler, oInput, true);
  YAHOO.util.Event.addListener(oInput, "keyup", this.onSubmitHandler, oInput, true);
  YAHOO.util.Event.addListener(oInput, "focus", this.inputFocus, oInput, true);
  YAHOO.util.Event.addListener(oInput, "blur", this.inputBlur, oInput, true);
}

/** ask
* Loads a searchresult for selfassist.
* @param query
**/
SelfAssist.prototype.ask = function(query){
  if(query != this.defaultSearchTerm){
    this.searchTerm = query;
  }
  if(query != this.defaultSearchTerm && query != ''){
    this.loadUri('ask.htm', '&query=' + query);
  }else
    this.loadUri('start.htm');
  this.defaultInput.value = '';
  this.defaultButton.focus();
  this.inputBlur(null, this.defaultInput);
}

/** cat
* Loads a categoryoverview by default. 
* When a category id is supplied the top 10 for that category is loaded.
* @param category_id (optional)
**/
SelfAssist.prototype.cat = function(){
  if (arguments.length > 0){
    this.loadUri('categoryQuestions.htm', '&cid=' + arguments[0]);
  }else{
    this.loadUri('categories.htm');
  }
}

/** faq
* Loads a faq10 for general category by default. 
* When a category id is supplied the top 10 for that category is loaded.
* @param category_id (optional)
**/
SelfAssist.prototype.faq = function(){
  if (arguments.length > 0){
    this.loadUri('categoryQuestions.htm', '&cid=' + arguments[0]);
  }else{
    this.loadUri('topx.htm');
  }
}

/** loadUri
* Loads an url into the iframe.
* @param url
**/
SelfAssist.prototype.loadUri = function(url){
  var params = '';
  var uri = "";
  if(url.indexOf('?') < 0){
    params = '?locale=' + this.country + '_' + this.language + '&popup=' + this.popup;
    if(arguments.length > 1){
      params = params + arguments[1];
    }
  }

  //Only relative urls are allowed.
  if (url.indexOf(':') >= 0 && url.indexOf(':') <= 10) {
    var idx = url.lastIndexOf('/');
    url = idx < 15 ? '404.htm' : url.substr(idx + 1);
  }

  uri = this.base_url + '/' + url + params;

  //if layover is hidden, open it.
  if(this.container.className != "open"){
    this.layOver.show();
    this.open(uri);
  }else{
    this.iframe.src = uri;
  }

}

/** resetTabs
* Selects the current tab and deselects the others.
* @param oTab
**/
SelfAssist.prototype.resetTabs = function(e, obj){
  var oActiveTab = null;
  var uri = obj.iframe.contentWindow.document.location.href;
  if(uri.match("categories.htm") || uri.match("allCategoryQuestions.htm") || uri.match("categoryQuestions.htm")){
    oActiveTab = obj.catTab;
  } else if(uri.match("topx.htm")){
    oActiveTab = obj.faqTab;
  }else{
    oActiveTab = obj.searchTab;
  }
  //reset css classes
  YAHOO.util.Dom.removeClass(obj.searchTab.id, 'actief');
  YAHOO.util.Dom.removeClass(obj.catTab.id, 'actief');
  YAHOO.util.Dom.removeClass(obj.faqTab.id, 'actief');
  YAHOO.util.Dom.removeClass(obj.closeTab.id, 'actief');

  YAHOO.util.Dom.addClass(oActiveTab, 'actief');
}

/** finishOpen 
* Callback function for open event. Shows the iframe.
**/
SelfAssist.prototype.finishOpen = function(type, args, uri) {
  this.sa.iframe.src = uri;
  this.sa.iframe.style.visibility = "visible";

}

/** finishClose
* Callback function for close event. Hides the iframe.
**/
SelfAssist.prototype.finishClose = function() {
  this.sa.container.className = "closed";
  this.sa.inputBlur();
}

/** open 
* Opens the layover in an animation.
**/
SelfAssist.prototype.open = function(uri) {
    var attributes = {
      width: { to: 907 }, 
      height: { to: 460 }
    }
    anim = new YAHOO.util.Anim(this.container, attributes, .9, YAHOO.util.Easing.easeOut);
    anim.sa = this;
    anim.onComplete.subscribe(function(){window.sa.iframe.src = uri; window.sa.iframe.style.visibility = "visible";});
    if(document.all){
      setTimeout("anim.animate();", 10);
    }else{
      anim.animate();
    }
    this.container.className = "open";
}

/*EVENTHANDLERS*/


/** close
* Closes the layover in an animation.
**/
SelfAssist.prototype.close = function(e, args) {
  //Measure variables
  var oMetron = new Metron();
  if(this.iframe._metron){
    // oMetron.measureVariable('ti', this.iframe._metron.webtrends.WT['ti']);
    oMetron.measureVariable('z_qgo_language', this.iframe._metron.webtrends.WT['z_go_language']);
  }else{
    // oMetron.measureVariable('ti', document.title);
    oMetron.measureVariable('z_qgo_language', 'en');
  }
  oMetron.measureVariable('ti', 'Close Window - Clicked');
  oMetron.measureVariable('z_application', 'Q-Go');
  oMetron.measureVariable('z_country', this.country);
  oMetron.measureVariable('z_language', this.language);
  oMetron.measureVariable('z_qgo_eventplace', 'Close Window - Clicked');
  oMetron.measureVariable('z_qgo_eventtype', 'Close Button');
  oMetron.measureVariable('z_qgo_event', 'Clicked');

  oMetron.measuresCommit();
  oMetron = null;
  this.defaultInput.value = this.defaultInput.title;
  YAHOO.util.Dom.removeClass(document.getElementsByTagName('body')[0], 'show-layover')
  //Load url into iFrame
  this.loadUri(this.loading_url);
  this.layOver.hide();
  this.iframe.style.visibility = "hidden";
  var attributes = {
    width: { to: 268 },
    height: { to: 45 }
  }
  anim = new YAHOO.util.Motion(this.container, attributes, .9, YAHOO.util.Easing.easeOut);
  anim.sa = this;
  anim.onComplete.subscribe(this.finishClose);
  anim.animate();
}

/** onSubmitHandler 
* Handles the submitentries of the Selfassist forms.
**/
SelfAssist.prototype.onSubmitHandler = function(e, obj){
  YAHOO.util.Event.preventDefault(e);
  if((e.type == 'keyup' && e.keyCode == 13) || (e.type == 'click')){
    window.sa.defaultSearchTerm = obj.title;
    window.sa.ask(obj.value);
  }
}

/** onTabClickHandler
* Handles tab clicks.
**/
SelfAssist.prototype.onTabClickHandler = function(e, obj){
  switch(obj.id){
    case window.sa.searchTab.id:
      window.sa.ask(window.sa.defaultInput.value);
      break;
    case window.sa.catTab.id:
      window.sa.cat();
      break;
    case window.sa.faqTab.id:
      window.sa.faq();
      break;
    case window.sa.closeTab.id:
      window.sa.close();
      break;
    default:
      break;
  }
}

/** inputFocus
* When a form input element is focussed, this function will be called.
* Sets style and value for the input field.
**/
SelfAssist.prototype.inputFocus = function(e , oInput) {
  if (oInput.title == "" || oInput.title == oInput.value) {
    oInput.title = oInput.value;
    oInput.value = "";
  }
  oInput.style.color = "#003145";
}

/** inputBlur
* When a form input element is blurred, this function will be called.
* Resets style and value for the input field.
**/
SelfAssist.prototype.inputBlur = function(e, oInput) {
  if (oInput.value == "" || oInput.title == oInput.value) {
    oInput.value = oInput.title;
    oInput.style.color = "";
  }
}


/*URL UTF-8 Encoder/Decoder Class*/

var Url = {

    // public method for url encoding
    encode : function (string) {
        return escape(this._utf8_encode(string));
    },

    // public method for url decoding
    decode : function (string) {
        return this._utf8_decode(unescape(string));
    },

    // private method for UTF-8 encoding
    _utf8_encode : function (string) {
        string = string.replace(/\r\n/g,"\n");
        var utftext = "";

        for (var n = 0; n < string.length; n++) {

            var c = string.charCodeAt(n);

            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }

        }

        return utftext;
    },

    // private method for UTF-8 decoding
    _utf8_decode : function (utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;

        while ( i < utftext.length ) {

            c = utftext.charCodeAt(i);

            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else if((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i+1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i+1);
                c3 = utftext.charCodeAt(i+2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }

        }

        return string;
    }

};
// Content: js overlay
function Overlay(container, properties){
  if(container){
    if(typeof(container) == 'object')
      this.container = container;
    else if(typeof(container) == 'string')
      this.container = YAHOO.util.Dom.get(container);
    else
      this.container = document.getElementsByTagName('body')[0];
  }else{
    this.container = document.getElementsByTagName('body')[0];
  }
  
  this.properties = properties;

  this.properties['id'] = (this.properties['id'] ? this.properties['id'] : 'overlay');
  this.properties['iframe-id'] = (this.properties['iframe-id'] ? this.properties['iframe-id'] : this.properties['id'] + '-iframe');
  this.properties['className'] = (this.properties['className'] ? this.properties['className'] : 'overlay');
  
  if(this.properties['animate']){
    this.properties['opacity'] = this.properties['opacity'] ? this.properties['opacity'] : .5
    this.properties['speed'] = this.properties['speed'] ? this.properties['speed'] : .5
  }
  
  this.children = new Array();
}

Overlay.prototype.addOnClickHandler = function(child, sOnClickFunction){
  if(sOnClickFunction == null || sOnClickFunction == "")
    sOnClickFunction = "close";
  this.children.push({"child" : child, "func" : sOnClickFunction});
}

Overlay.prototype.show = function(){
  var self = this;
  var overlayExists = true;
  var overlayIFrameExists = true;
  var overlay = YAHOO.util.Dom.get(this.properties['id']);
  if(!overlay){
    overlay = document.createElement('div');
    overlay.id = this.properties['id'];
    overlayExists = false;
  }else{
      this.overlayAlreadyThere = true;
  }
  
  if(this.children.length > 0){
    overlay.onclick = function(){
      for(i = 0; i < self.children.length; i++){
        var child = self.children[i].child;
        var sFunction = self.children[i].func;
        eval("child." + sFunction + "();");
      }
    }
  }
  
  YAHOO.util.Dom.addClass(this.container, 'overlay-container');

  if(this.properties['className'] != null)
    overlay.className = this.properties['className'];

  if(document.all){ //IE6
    var iframe = YAHOO.util.Dom.get(this.properties['iframe-id']);
    if(!iframe){
      iframe = document.createElement('iframe');
      iframe.id = this.properties['iframe-id'];
      overlayIFrameExists = false;
    }else{
        this.iframeAlreadyThere = true;
    }
    iframe.frameBorder = 0;
    iframe.scrolling = 'no';
    iframe.src = "/travel/de_de/static/empty.html";
    iframe.style.height = YAHOO.util.Dom.getDocumentHeight() + "px";
    if(!overlayIFrameExists)
      this.container.appendChild(iframe);
    iframe = null;
    overlay.style.height = YAHOO.util.Dom.getDocumentHeight() + "px";
  }

  if(!overlayExists)
    this.container.appendChild(overlay);

  overlay.style.display = 'block';

  var attributes = {
    opacity : { to: this.properties['opacity'] }
  }

  if(this.properties['animate']){
    anim = new YAHOO.util.Motion(overlay, attributes, this.properties['speed'], YAHOO.util.Easing.easeOut);
    //anim.onComplete.subscribe(this.onShowComplete);
    anim.animate();
  }

  overlay = null;
}

Overlay.prototype.onShowComplete = function(){

}

Overlay.prototype.hide = function(){
  var overlay = YAHOO.util.Dom.get(this.properties['id']);
  if(this.properties['animate']){
    var attributes = {
      opacity : { to: 0 }
    }
    anim = new YAHOO.util.Motion(overlay, attributes, this.properties['speed'], YAHOO.util.Easing.easeOut);
    anim.controller = this;
    anim.onComplete.subscribe(this.onHideComplete);
    anim.animate();
  }else{
    YAHOO.util.Dom.removeClass(this.container, 'overlay-container');
    this.container.removeChild(overlay);
    var iframe = YAHOO.util.Dom.get(this.properties['iframe-id']);
    if(iframe)
      this.container.removeChild(iframe);
  }
  
}

Overlay.prototype.onHideComplete = function(){
  var overlay = YAHOO.util.Dom.get(this.controller.properties['id']);
  var iframe = YAHOO.util.Dom.get(this.controller.properties['iframe-id']);

  if(!this.controller.overlayAlreadyThere)
    this.controller.container.removeChild(overlay);

  if(iframe && !this.controller.iframeAlreadyThere)
    this.controller.container.removeChild(iframe);

  YAHOO.util.Dom.removeClass(this.controller.container, 'overlay-container');
}
// Content: js navigation
Navigation.prototype.HEIGHT_CLOSED = 25;
Navigation.prototype.BOTTOM_MARGIN = 20;
Navigation.prototype.WIN_IE50 = (navigator.userAgent.toLowerCase().indexOf("msie 5.0") > 0); 
Navigation.prototype.WIN_IE5PLUS = ((navigator.userAgent.toLowerCase().indexOf("msie") > 0) && (navigator.userAgent.toLowerCase().indexOf("msie 5.0") < 0)); 
Navigation.prototype.WIN_IE60 = (navigator.userAgent.toLowerCase().indexOf("msie 6.0") > 0);

function Navigation (container, bottomImage, HTML, extFrame) {
	this.navigation = document.getElementById(container);
	this.navigation.innerHTML = HTML;
	this.closing = -1;
	this.opening = -1;
	this.openImage = document.getElementById(bottomImage);
	this.logoImage = document.getElementById('navlogo');
	this.allItems = this.navigation.getElementsByTagName("li");
	this.initAllItems();
	this.subLists = this.navigation.getElementsByTagName('ul')[0].getElementsByTagName('ul');
	//this.targetHeight = this.getHeight() + this.HEIGHT_CLOSED + this.BOTTOM_MARGIN;
	this.targetHeight = 275 + this.HEIGHT_CLOSED + this.BOTTOM_MARGIN;
	this.isOpen = false;
	if (!document.all || this.WIN_IE50) this.initExtFrame();	
	/* iframe behind navigation for IE 5.5+ to hide selectboxes */
	if (document.all && !this.WIN_IE50) {
		this.selectHider = this.createHider();
	}
	if (this.WIN_IE50) {
		this.selectBoxes = document.getElementsByTagName('select');
	}
	this.navigation.onmouseover = createContextFunction(this, "open");
	this.navigation.onmouseout = createContextFunction(this, "close");
	/* IE initialization for navigation entries */
	if (document.all) {
		this.initIE();
	}
	this.placeItems();
	if (document.getElementById('sitemap')) {
//		generateSitemap();
		if (this.WIN_IE50) window.resizeBy(0, 1);
	}
	this.setFullHeight();
	if (getCookie('jffp')) {if (getCookie('jffp').length > 10) this.clearLoginEntries()};
}
Navigation.prototype.initIE = function () {
	for (var i=0; i < this.allItems.length; i++) {
		var node = this.allItems[i];
		node.onmouseover = function () {
			this.className += "over";
		}
		node.onmouseout = function () {
			this.className = this.className.replace("over", "");
		}
	}
}
Navigation.prototype.initExtFrame = function () {
	this.extFrame = document.getElementById('extFrame');
	if (this.extFrame) this.extFrame.style.position = 'relative'; /* ppkpatch: give iframe position: relative so top can be used instead of marginTop */
	if (this.extFrame) this.extFrame.startPos = calculateTop(this.extFrame);
}
Navigation.prototype.initAllItems = function () {
	for (var i = 0; i < this.allItems.length; i++) {
		if (this.allItems[i].className.indexOf('submenu') != -1) {
			this.allItems[i].submenu = this.allItems[i].getElementsByTagName('ul')[0];
			this.allItems[i].subItem = this.allItems[i].submenu.getElementsByTagName('li')[0];
		} else {
			this.allItems[i].submenu = null;
			this.allItems[i].subItem = null;
		}
	}
}
Navigation.prototype.open = function (e) {
	if (!isSafari()) {
		if (e) if (e.originalTarget.innerHTML == "Home") return;
		if (e) if (e.originalTarget.id == "navigation") return;
	}
	if (e) var dest = e.relatedTarget; else var dest = window.event.toElement;
	if (dest) if (dest.parentNode.id == 'home' || dest.parentNode.id == 'top' || dest.parentNode.id == 'ls_top' || dest.parentNode.id == 'maincontainer') return;
	//alert(dest.parentNode.id);
	//this.allItems[0].getElementsByTagName('a')[0].focus();
	//this.allItems[0].getElementsByTagName('a')[0].blur();
	if (this.WIN_IE50) {
		this.slideOpen()
	} else {
		if (this.closing > 0) {
			clearTimeout(this.closing);
			this.closing = -1;
		}
		if (this.opening < 0 && !this.isOpen) {
			this.opening = setTimeout(createContextFunction(this, "slideOpen"), 300);
		}
	}
}
Navigation.prototype.slideOpen = function () {
	this.openImage.style.display = 'block';
	this.logoImage.style.display = 'block';
	this.navigation.style.height = this.targetHeight + "px";
	if (this.selectHider) this.selectHider.style.display = 'block';
	if (this.selectBoxes) updateSelectBoxes(this.selectBoxes, 'hidden');
	if (this.extFrame && !this.isOpen) {
		this.extFrame.overLap = (this.HEIGHT_CLOSED + this.targetHeight - this.extFrame.startPos);
		this.extFrame.style.top = this.extFrame.overLap + "px"; /* ppkpatch: marginTop -> top */
	}
	if (!this.WIN_IE50) clearTimeout(this.opening);
	this.opening = -1;
	this.isOpen = true;
}
Navigation.prototype.close = function (e) {
	if (e) var dest = e.relatedTarget; else var dest = window.event.toElement;
	if (!isChild(this.navigation, dest)) {
		if (this.WIN_IE50) {
			this.slideClose();
		} else {		
			if (this.opening > 0) {
				clearTimeout(this.opening);
				this.opening = -1;
			}
			if (this.closing < 0 && this.isOpen) {
				this.closing = setTimeout(createContextFunction(this, "slideClose"), 300);
			}
		}
	}
	if (e) e.cancelBubble = true; else window.event.cancelBubble = true;
}
Navigation.prototype.slideClose = function () {
	this.openImage.style.display = 'none';
	this.logoImage.style.display = 'none';
	this.navigation.style.height = this.HEIGHT_CLOSED + "px";
	if (this.selectHider) this.selectHider.style.display = 'none';
	if (this.selectBoxes) updateSelectBoxes(this.selectBoxes, 'visible');
	if (this.extFrame) {
		this.extFrame.style.top = "0"; /* ppkpatch: marginTop -> top */
	}
	if (!this.WIN_IE50) clearTimeout(this.closing);
	this.closing = -1;
	this.isOpen = false;
}
Navigation.prototype.getHeight = function () {
	var targetHeight = 0;
	var height3rdLevel = 0;
	this.show();
	for (var i = 0; i < this.subLists.length; i++) {
		if (this.subLists[i].offsetHeight > targetHeight) targetHeight = this.subLists[i].offsetHeight;
		height3rdLevel = get3rdLevelHeight(this.subLists[i]);
		if (height3rdLevel > targetHeight) targetHeight = height3rdLevel;
	}
	this.hide();
	return targetHeight;
}
Navigation.prototype.show = function () {
	for (var i = 0; i < this.allItems.length; i++) {
		this.allItems[i].persistentClassName = this.allItems[i].className;
		this.allItems[i].className +="over";
		this.allItems[i].className +=" show";
	}
}
Navigation.prototype.hide = function () {
	for (var i = 0; i < this.allItems.length; i++) {
		this.allItems[i].className = this.allItems[i].persistentClassName;
	}
}
Navigation.prototype.setFullHeight = function () {
	for (var i = 0; i < this.subLists.length; i++) {
		this.subLists[i].style.height = "700px";
	}
}
Navigation.prototype.createHider = function () {
	var iframe = document.createElement('iframe');
	iframe.src = '/travel/de_de/static/empty.html';
	iframe.style.height = this.targetHeight + "px";
	iframe.style.width = this.navigation.offsetWidth + "px";
	iframe.frameBorder = '0';
	this.navigation.appendChild(iframe);
	return (iframe);
}
Navigation.prototype.clearLoginEntries = function () {
	var a;
	for (var i = 0; i < this.allItems.length; i++) {
		a = this.allItems[i].getElementsByTagName('a')[0];
		if (a.className.indexOf('login') != -1) a.className = '';
	}
}

Navigation.prototype.placeItems = function () {
	var mainItems = new Array();
	
	for (var i = 0; i < this.allItems.length; i++) {
		if (this.allItems[i].parentNode.className == 'level1') mainItems[mainItems.length] = this.allItems[i];
	}
	if (document.body.offsetWidth < 988) {
		mainItems[mainItems.length - 1].className += 'left';
		mainItems[mainItems.length - 1].id = 'lastleft';
		mainItems[mainItems.length - 2].className += 'left';
	}
	// force width of right-side nav items to display properly in ie
	if ((this.WIN_IE50) || (this.WIN_IE5PLUS)) {
		for (var i = 0; i < this.allItems.length; i++) {
			if (this.allItems[i].className == 'submenuleft') { 
				this.menu_item = this.allItems[i];
				this.checkWidth(this.menu_item);
			}
		}
	}
}
Navigation.prototype.checkWidth = function(menu_item) {
	this.menu_item = menu_item;
	this.wid = this.menu_item.offsetWidth;
	this.oddOrEven(this.wid);
	if (!this.WIN_IE60) {
		this.newWid += 15; //add right padding back on for ie6.0
	}
	this.menu_item.style.width = this.newWid;
}
Navigation.prototype.oddOrEven = function(wid) {
	this.wid = wid - 15; //remove right padding
	this.oe = this.wid % 2;
	if ((this.oe == 1) && (this.menu_item.id != "lastleft")) { this.wid++; }
	else if ((this.oe != 1) && (this.menu_item.id == "lastleft")) { this.wid++; }
	this.newWid = this.wid;
}
function get3rdLevelHeight(ul) {
	var height = 0;
	var maxHeight = 0;
	var currentYPos = 0;
	var secondLevelCounter = 0;
	var entries = ul.getElementsByTagName('li');
	
	for (var i = 0; i < entries.length; i++) {
		if (entries[i].parentNode.className == 'level2') {
			if (entries[i].className == 'submenuover') {
				currentYPos = entries[i].offsetTop;
				height = currentYPos + entries[i].getElementsByTagName('ul')[0].offsetHeight;
			}
			if (height > maxHeight) maxHeight = height;
		}
	}
	return maxHeight;
}
function updateSelectBoxes(boxes, visibility) {
	for (var i = 0; i < boxes.length; i++) {
		boxes[i].style.visibility = visibility;
	}
}
// Content: js language selector
var lsFrame;

LanguageSelector.prototype.WIN_IE50 = (navigator.userAgent.toLowerCase().indexOf("msie 5.0") > 0); 

function LanguageSelector () {
	this.clData = null;
	this.curC = null;
	this.curL = null;
	this.countrySelector = document.getElementById('countries');
	this.languageList = document.getElementById('languageList');
	this.normal = document.getElementById('normal');
	this.external = document.getElementById('external');
	this.externalimg = document.getElementById('externalimg');
	this.externallinkimg = document.getElementById('externallinkimg');
	this.externallink = document.getElementById('externallink');
	this.ls = document.getElementById('ls_content');
	this.ls.obj = this;
	this.country = document.getElementById('lscountry');
	this.lang = document.getElementById('lslanguages');
	this.countryBut = document.getElementById('countryBut');
	if (this.countryBut) this.countryBut.onclick = createContextFunction(this, "openCountry");
	this.langBut = document.getElementById('langBut');
	this.langBut.onclick = createContextFunction(this, "openLang");
	this.closing = null;
	this.ls.onmouseout = createContextFunction(this, "close");
	this.ls.onmouseover = function () {if (this.obj.closing) clearTimeout(this.obj.closing)};
	this.canBeClosed = true;
	
	this.countrySelector.ls = this;
	this.countrySelector.onfocus = function () {this.ls.canBeClosed = false;}
	this.countrySelector.onblur = function () {this.ls.canBeClosed = true;}
	this.countrySelector.onchange = createContextFunction(this, "updateLanguages", "updateLanguages");
}
LanguageSelector.prototype.openCountry = function () {
	if (this.WIN_IE50) document.location.href = '/travel/klm_splash/splashpage.html';
	if (!this.clData) this.getData();
	this.country.style.visibility = 'visible';
	if (this.WIN_IE50) {
		this.country.style.display = 'block';
		this.lang.style.marginLeft = 'auto';
	}
	if (this.initialOption) {
		this.initialOption.selected = true;
		this.updateLanguages();
	}
	this.open();
}
LanguageSelector.prototype.openLang = function () {
	if (!this.clData) this.getData();
	this.country.style.visibility = 'hidden';
	if (this.WIN_IE50) {
		this.country.style.display = 'none';
		this.lang.style.marginLeft = '100px';
	}
	if (this.initialOption) {
		this.initialOption.selected = true;
		this.updateLanguages();
	}
	this.open();
}
LanguageSelector.prototype.open = function () {
	document.getElementById('ls_top').style.display = 'none';
	document.getElementById('ls_content').style.display = 'block';
	document.getElementById('ls_content').style.position = 'relative';
}
LanguageSelector.prototype.close = function (e) {
	if (e) var dest = e.relatedTarget; else var dest = window.event.toElement;
	if (!isChild(this, dest)) {
		if (this.canBeClosed) this.closing = setTimeout(createContextFunction(this, "closeIt"), 3000);
	}
	return true;
}
LanguageSelector.prototype.closeIt = function () {
	document.getElementById('ls_top').style.display = 'block';
	document.getElementById('ls_content').style.display = 'none';
	clearInterval(this.closing);
}
LanguageSelector.prototype.updateLanguages = function () {
	var c, l;
	var newLi;
	this.clearLanguages();
	c = this.countrySelector.options[this.countrySelector.selectedIndex].value;
	if (!c) return;
	var entries = this.clData.getHTMLById(c).getElementsByTagName('li');
	for (var i = 0; i < entries.length; i++) {
		newLi = document.createElement('li');
		if (entries[i].getAttribute('url'))
		{
			this.normal.style.display = 'none';
			if (entries[i].getAttribute('img') != "")
			{
				this.external.style.display = 'block';
				this.externalimg.src = entries[i].getAttribute('img');
				this.externallinkimg.href = entries[i].getAttribute('url');
				this.externallink.href = entries[i].getAttribute('url');
			}	
			else
			{
				this.external.style.display = 'none';
				this.normal.style.display = 'block';
				if (entries[i].id == 'selected')
					newLi.innerHTML = '<a href="javascript:changeLanguage(\'' + this.curC + '_' + this.curL + '\', \'' + entries[i].getAttribute('url') + '\');" class="current">' + entries[i].innerHTML + '</a>'
				else 
					newLi.innerHTML = '<a href="javascript:changeLanguage(\'' + this.curC + '_' + this.curL + '\', \'' + entries[i].getAttribute('url') + '\');">' + entries[i].innerHTML + '</a>';
				this.languageList.appendChild(newLi);
			}				
		} else {
			this.external.style.display = 'none';
			this.normal.style.display = 'block';
			if (entries[i].id == 'selected')
				newLi.innerHTML = '<a href="javascript:changeLanguage(\'' + this.curC + '_' + this.curL + '\', \'' + c + '_' + entries[i].className + '\');" class="current">' + entries[i].innerHTML + '</a>'
			else 
				newLi.innerHTML = '<a href="javascript:changeLanguage(\'' + this.curC + '_' + this.curL + '\', \'' + c + '_' + entries[i].className + '\');">' + entries[i].innerHTML + '</a>';
			this.languageList.appendChild(newLi);
		}
	}
	this.countrySelector.blur();
}
LanguageSelector.prototype.clearLanguages = function () {
	var list;
	list = this.languageList;
	while (list.hasChildNodes()) {
		list.removeChild(list.firstChild);
	}
}
LanguageSelector.prototype.fill = function () {
	this.clData = lsFrame;
	var entries = this.clData.getHTMLByTag('li')
	for (var i = 0; i < entries.length; i++) {
		if (entries[i].className == 'selected') this.curC = entries[i].id;
	}
	var l = this.clData.getHTMLById('selected');
	this.curL = l.className;
	this.fillSelectbox();
	this.updateLanguages();
}
LanguageSelector.prototype.fillSelectbox = function () {
	var current;
	var newOption;
	var txt, value;
	var entries = this.clData.getHTMLByTag('li');
	for (var i = 0; i < entries.length; i++) {
		if (entries[i].parentNode.parentNode.id == 'langdata') {
			txt = entries[i].innerHTML.substr(0, entries[i].innerHTML.toUpperCase().indexOf('<UL>'));
			value = entries[i].id;
			newOption = document.createElement('option');
			newOption.innerHTML = txt;
			newOption.value = value;
			this.countrySelector.appendChild(newOption);
			if (entries[i].className == 'selected') {
				newOption.selected = true;
				this.initialOption = newOption;
			}
		}
	}
}
LanguageSelector.prototype.getData = function () {
	lsFrame = new RPCFrame(window);
	lsFrame.setLocation('/travel/de_de/languages.html', createContextFunction(this, "fill"));
}

function changeLanguage (cur, fut) {
	if (fut.indexOf('http:') != -1)
			document.location.href = fut;
	else
	{
		if (document.frmLs.remember.checked == true) {
			setCookie('countryLanguage', fut, 365);
		}
		var params = fut.split("_");
		var curr_params = cur.split("_");

		// if the country has changed, then do not pass a forward URL
		if (curr_params[0] != params[0])
		{
			document.location.href = "/travel/klm_splash/index.html?country=" + params[0] + "&language=" + params[1] + "&remember=" + document.frmLs.remember.checked;
		}
		else
		{
			var newURL = document.location.href.replace('/' + cur + '/', '/' + fut + '/');
			var newHREF = "/travel/klm_splash/index.html?country=" + params[0] + "&language=" + params[1] + "&remember=" + document.frmLs.remember.checked + "&forwardURL=" + newURL;
			document.location.href = newHREF;		
		}
	}	
}
// Content: js cookies
// Content: js cookies
function setCookie(inName, inValue, inNumberOfDays)
{
	var expDate = new Date ();
	var cookieString;
	
	expDate.setTime (expDate.getTime() + (86400000 * inNumberOfDays));
	var gmtExpDate = expDate.toGMTString();
	
	cookieString = inName + "=" + inValue;
	if (inNumberOfDays != 0)
		cookieString += ";expires=" + gmtExpDate;	
	
	cookieString += ";path=/";	
	document.cookie = cookieString;
}

//this function gets the value of a cookie given it's name
function getCookie (inName)	{
	var dCookie = document.cookie; 
	var cName = inName + "=";
	var cLen = dCookie.length;
	var cBegin = 0;
	while (cBegin < cLen) 	{
		var vBegin = cBegin + cName.length;
		if (dCookie.substring(cBegin, vBegin) == cName) { 
			var vEnd = dCookie.indexOf (";", vBegin);
		    if (vEnd == -1) 
				vEnd = cLen;
			return unescape(dCookie.substring(vBegin, vEnd));
		}
		cBegin = dCookie.indexOf(" ", cBegin) + 1;
		if (cBegin == 0)
			 break;
	}
	return null;
}

//this function will delete a cookie by setting the expiration date in the past
function deleteCookie(inName)	{
	document.cookie = inName + "=; expires=Thu, 01-Jan-70 00:00:01 GMT";
}
// Content: js global
var navFrame, fbFrame;
var arDestinations = new Array();

function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && document.all)? document.all : 
    oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];      
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }   
    }
    return (arrReturnElements)
}

function initHome() {
	checkBrowser();
	top.mainContainer = document.getElementById('maincontainer');
	updateSize();
	if (document.getElementById('language_selector')) ls = new LanguageSelector();
	FBfill(true);
	setTriggersHome();
	setOtherKLMSites();
	webSensor();
	loadNav();
}
function initLocalHome() {
	setTriggersHome();
	setOtherKLMSites();
	webSensor();
	loadNav();
}
function init() {
	checkBrowser();
	top.mainContainer = document.getElementById('maincontainer');
	if (document.getElementById('language_selector')) ls = new LanguageSelector();
	FBfill();
	BBfill(false);
	updateSize();
	setTriggers();
	setOtherKLMSites();
	webSensor();
	loadNav();
	preloadImages();
	var divbuttonleft = document.getElementById("appleft");
	if (divbuttonleft) {
		divbuttonleft.style.width = 1 +"px";
	}
	var divbuttonright = document.getElementById("appright");
	if (divbuttonright) {
		divbuttonright.style.width = 1 +"px";
	}
	addSaveThisPageLink();
}
function addSaveThisPageLink()
{
	if ( (document.getElementById("backtotop") != null) && (document.getElementById("savethisdoclink") != null) )
	{
		var element = document.getElementById("printthispg")
		if (element != null)
		{
			if (element.parentNode.getAttribute("id") == "backtotop")
			{
				var newElement = document.createElement('div');
				newElement.className = 'savethispage';
				newElement.innerHTML = document.getElementById("savethis2").innerHTML;
				element.parentNode.appendChild(newElement);
			}
		}
		
	}
}
function webSensor() {
	var cook=document.cookie;
	var i=cook.indexOf('KLMCOM_SESSIONCOOKIE');
	var strResolutie=window.screen.width+"x"+window.screen.height;
	if(i<0)
	{
		var id1=parseInt(Math.random()*2147418112);		
		document.cookie='KLMCOM_SESSIONCOOKIE='+id1+new Date().getTime()+'--'+strResolutie+';path=/;domain=.klm.com'
	}	
	
	
	strCDom=document.location.host.substring(document.location.host.lastIndexOf('.',document.location.host.lastIndexOf('.') - 1));
	keepdays=180;
	
	cook=document.cookie;
	i=cook.indexOf('MfTrack_js');
	if(i<0){
	        // the cookie was not yet present, create a new cookie
	        id1=parseInt(Math.random()*2147418112);
	        strCVal=id1+'.'+new Date().getTime()+'--'+strResolutie;
	        document.cookie='MfTrack_js='+strCVal+'; path=/; domain='+strCDom;
	}
	strPVal='';
	i=cook.indexOf('MfPers_js=');
	if(i<0){
	        // the cookie was not yet present, create a new cookie
	        id1=parseInt(Math.random()*2147418112);
	        strPVal=id1+'.'+new Date().getTime()+'--'+strResolutie;
	}
 	else {
	        // change expire date of persistent cookie, with same value
	        j=cook.indexOf(";",i+10);
	        if (j<0)
	                strPVal=cook.substring(i+10);
	        else
	                strPVal=cook.substring(i+10, j);
	       // Temperaly check if cookie is oke, keep test till 1-1-2009
	       re = /^\d+\.\d+(\-){2}\d+x\d+$/
	       // cookie not oke, create new value
	       if (!re.test(strPVal))
	       {
	                id1=parseInt(Math.random()*2147418112);
	                 strPVal=id1+'.'+new Date().getTime()+'--'+strResolutie;
	       }  
	}
	expires=new Date();
	expires.setTime(expires.getTime()+(keepdays*24*60*60*1000));
	document.cookie='MfPers_js='+strPVal+'; path=/; domain='+strCDom+'; expires='+expires.toGMTString();
	
	var qs = window.location.search
	var adcamp = getParameter(qs, "adcamp")
	if (adcamp)
	{
		expires=new Date();
		expires.setTime(expires.getTime()+(30*24*60*60*1000));
		var content = "&adcamp=" + adcamp + "&adchan=" + getParameter(qs, "adchan") + "&adtype=" +
			getParameter(qs, "adtype") + "&adctry=" + getParameter(qs, "adctry") + "&adlang=" +
			getParameter(qs, "adlang") + "&http_referrer=" + document.referrer;
		document.cookie="SADCAMP=" + content + "; path=/; domain=" + strCDom;
		document.cookie="PADCAMP=" + content + "; path=/; domain=" + strCDom + "; expires="+expires.toGMTString();
	}
}
function FBfill (home) {
	if (document.getElementById('jffp_login')) {
		fbFrame = new RPCFrame(window);
		if (home)
			fbFrame.setLocation('/travel/de_de/jffp.htm?loadProfile=true&date=' + new Date(), FBfillItHome, 'GET')
		else
			fbFrame.setLocation('/travel/de_de/jffp.htm?loadProfile=true&date=' + new Date(), FBfillIt, 'GET')
	}
}

function FBfillIt () {
  if (!fbFrame.getHTMLById('content')){
               var seealsoblocknewtop= document.getElementById('seealsoblocknewtop');
               var contentblock = document.getElementById('contentblock');
               var seealsobot= document.getElementById('seealsobot');
               if (!seealsoblocknewtop) {
                   if(contentblock && seealsobot) {
                      contentblock.style.background='white';
                      seealsobot.style.background='white';
                   }
               }
		return;
  }
	document.getElementById('jffp_login').innerHTML = fbFrame.getHTMLById('content').innerHTML;
	initFbbox();
	toggleMilesPlus();
	try {
		checkBB();
	} catch (e) {}
	var fbNumber = getCookie('fbNumber');
	if (fbNumber)
	{
		var elems = document.getElementsByName('miles');
		for (var i = 0; i < elems.length; i++)
		{
			elems[i].value = fbNumber;
		}
	}
}

function FBfillItHome () {
	document.getElementById('jffp_login').innerHTML = fbFrame.getHTMLById('content').innerHTML;
	initFbbox(true);
	var fbNumber = getCookie('fbNumber');
	if (fbNumber)
	{
		var elems = document.getElementsByName('miles');
		for (var i = 0; i < elems.length; i++)
		{
			elems[i].value = fbNumber;
		}
	}
}

function initFbbox(home)
{
	var dashboarddiv = document.getElementById('dashboard')
	var fbbox = getElementsByClassName(document,'div','fbbox');
	if(fbbox.length == 1)
	{
		var fbboxesBig = getElementsByClassName(fbbox[0],'div','fbboxbig');
		var fbboxesVisual = getElementsByClassName(fbbox[0],'img','fbbox-visual');
		var fbboxesInloggenLabel = getElementsByClassName(fbbox[0],'a','fbbox-inloggen-label');
		var fbboxesInloggen = getElementsByClassName(fbbox[0],'a','fbbox-inloggen');
		var fbboxesContentBg = getElementsByClassName(fbbox[0],'div','fbbox-content-bg');
		var fbboxesContent = getElementsByClassName(fbbox[0],'div','fbbox-content');
		var fbboxesOpacitylayer = getElementsByClassName(fbbox[0],'div','fbbox-opacitylayer');
		var fbboxesLoginlayer = getElementsByClassName(fbbox[0],'div','fbbox-loginlayer');
		var fbboxesLoginlayerMessage = getElementsByClassName(fbbox[0],'p','fbbox-loginlayer-message');
		var fbboxesSluit = getElementsByClassName(fbbox[0],'a','fbbox-sluit');
		var fbboxesPushin = getElementsByClassName(fbbox[0],'div','fbbox-pushin');
		var fbboxPromotion = document.getElementById('fbbox-promotion');
		var pagecontent = document.getElementById('content');
		var seealsoblock = document.getElementById('seealso');
		var seealsoblockspacetop= document.getElementById('seealsoblockspacetop');
		var seealsoblockpush= document.getElementById('seealsoblockpush');
		var seealsoDivBot = document.getElementById('seealsobot')

		if (!(seealsoDivBot)){
			var seealsoDivBot = getElementsByClassName(document,'div','largeseealsobot')
		}
				
		if (seealsoblockpush){
			var strSeeAlsoHeight=(seealsoblockpush.offsetHeight);
		}
		if (pagecontent){
			var strPagecontent=(pagecontent.offsetHeight);
		}else{
			var pagecontent = document.getElementById('contentblock4col');
			if (pagecontent){
				var strPagecontent=(pagecontent.offsetHeight);
				var bExtraIframe = true
			}
		}
		
		
		if (!(seealsoblock)){
			seealsoblock = document.getElementById('recent');
		}
		if ((seealsoblock) && (bExtraIframe)){
			var contentcontainer = document.getElementById('contentcontainer');
			contentcontainer.style.background=("transparent url(/travel/de_de/images/content_y_tcm96-120640.gif) repeat-y scroll 0% 50%");
		}
		var fbboxesHeight = fbboxesContent[0].offsetHeight - 35;
		if (fbboxesBig.length == 0) {
			fbboxesHeight += 45;
		}
		if(fbboxesInloggen.length == 1 && fbboxesOpacitylayer.length == 1 && fbboxesLoginlayer.length == 1 && fbboxesSluit.length == 1) {
			addEventHandler(fbboxesInloggen[0],'click', function(e) {
				if (fbboxesLoginlayerMessage.length == 2 && fbboxPromotion) {
				if (!navigator.cookieEnabled) {
					fbboxesLoginlayerMessage[0].style.display = 'none';
					fbboxesLoginlayerMessage[1].style.display = 'block';
					fbboxPromotion.className = 'fbbox-warning';
				} else {
					fbboxesLoginlayerMessage[0].style.display = 'block';
					fbboxesLoginlayerMessage[1].style.display = 'none';
					fbboxPromotion.className = '';
				}
				}
				fbboxesOpacitylayer[0].style.display = 'block';
				fbboxesLoginlayer[0].style.display = 'block';
				fbboxesSluit[0].style.display = 'block';
				fbboxesInloggen[0].style.display = 'none';
			});
			addEventHandler(fbboxesSluit[0],'click', function(e) {
				fbboxesOpacitylayer[0].style.display = 'none';
				fbboxesLoginlayer[0].style.display = 'none';
				fbboxesSluit[0].style.display = 'none';
				fbboxesInloggen[0].style.display = 'block';										 
			});			
		}
		if(fbboxesInloggenLabel.length == 1 && fbboxesPushin.length == 1 && fbboxesContentBg.length == 1 && fbboxesContent.length == 1) {
			addEventHandler(fbboxesInloggenLabel[0],'click', function(e) {
				fbboxesPushin[0].className = 'fbbox-pushin';
				fbboxesContent[0].style.display = 'block';
				fbboxesContentBg[0].style.display = 'block';
				if(fbboxesVisual.length == 1){fbboxesVisual[0].style.display = 'block';}
				if(fbboxesInloggenLabel.length == 1){fbboxesInloggenLabel[0].style.display = 'none';}
				if(fbboxesInloggen.length == 1){fbboxesInloggen[0].style.display = 'none';}
				if(fbboxesOpacitylayer.length == 1){fbboxesOpacitylayer[0].style.display = 'block';}
				if(fbboxesLoginlayer.length == 1){fbboxesLoginlayer[0].style.display = 'block';}
				if(fbboxesSluit.length == 1){fbboxesSluit[0].style.display = 'block';}									 
			});
		}
		if(fbboxesPushin.length == 1 && fbboxesContentBg.length == 1 && fbboxesContent.length == 1) {
		    	addEventHandler(fbboxesPushin[0],'click', function(e) {
				if(fbboxesPushin[0].className == 'fbbox-pushin') {
					fbboxesPushin[0].className = 'fbbox-pushout';
					fbboxesContentBg[0].style.display = 'none';
					fbboxesContent[0].style.display = 'none';
					if(fbboxesVisual.length == 1){fbboxesVisual[0].style.display = 'none';}
					if(fbboxesInloggenLabel.length == 1){fbboxesInloggenLabel[0].style.display = 'block';}
					if(fbboxesInloggen.length == 1){fbboxesInloggen[0].style.display = 'none';}
					if(fbboxesOpacitylayer.length == 1){fbboxesOpacitylayer[0].style.display = 'none';}
					if(fbboxesLoginlayer.length == 1){fbboxesLoginlayer[0].style.display = 'none';}
					if(fbboxesSluit.length == 1){fbboxesSluit[0].style.display = 'none';}
					setCookie("mpopen", "false", 0);
					if (seealsoblock) seealsoblock.style.paddingTop = 0;
					if ((seealsoblockspacetop) && (dashboarddiv)){
						seealsoblockspacetop.style.height= 0 + "px";
					}
					if ((seealsoblockspacetop) && (!(dashboarddiv))){
						seealsoblockspacetop.style.height= 41 + "px";
					}
					if((strSeeAlsoHeight > 0) && (strPagecontent > 0) && (bExtraIframe)){
						pagecontent.style.minHeight=setPageContentDivHeight(fbboxesHeight, strSeeAlsoHeight, strPagecontent, false) + 50 + "px";
						pagecontent.style.height=setPageContentDivHeight(fbboxesHeight, strSeeAlsoHeight, strPagecontent, false) + 50 + "px";
					}				
					if((strSeeAlsoHeight > 0) && (strPagecontent > 0) && (!(bExtraIframe))){
						pagecontent.style.minHeight=setPageContentDivHeight(fbboxesHeight, strSeeAlsoHeight, strPagecontent, false) + "px";
						pagecontent.style.height=setPageContentDivHeight(fbboxesHeight, strSeeAlsoHeight, strPagecontent, false) + "px";
				}
				} else {
					fbboxesPushin[0].className = 'fbbox-pushin';
					fbboxesContentBg[0].style.display = 'block';
					fbboxesContent[0].style.display = 'block';
					if(fbboxesInloggenLabel.length == 1){fbboxesInloggenLabel[0].style.display = 'none';}
					if(fbboxesVisual.length == 1){fbboxesVisual[0].style.display = 'block';}
					if(fbboxesInloggen.length == 1){fbboxesInloggen[0].style.display = 'block';}
					setCookie("mpopen", "true", 0);

					if (seealsoblock) {
						seealsoblock.style.paddingTop = (fbboxesHeight-17) + "px";
					}
					if ((seealsoblockspacetop) && (dashboarddiv)){
						seealsoblockspacetop.style.height= 33+ "px";
					}
					if ((seealsoblockspacetop) && (!(dashboarddiv))){
						seealsoblockspacetop.style.height= 74 + 'px';
					}
					if((strSeeAlsoHeight > 0) && (strPagecontent > 0) && (bExtraIframe)){
						pagecontent.style.minHeight=setPageContentDivHeight(fbboxesHeight, strSeeAlsoHeight, strPagecontent, true) + 50 + "px";
						pagecontent.style.height=setPageContentDivHeight(fbboxesHeight, strSeeAlsoHeight, strPagecontent, true) + 50 + "px";
						if (!(seealsoDivBot)){
							var seealsoDivBot = document.createElement('div');
							seealsoDivBot.setAttribute('id','');
							seealsoDivBot.setAttribute('class','largeseealsobot');
							pagecontent.appendChild(seealsoDivBot);
						}
					}
					if((strSeeAlsoHeight > 0) && (strPagecontent > 0) && (!(bExtraIframe))){
						pagecontent.style.minHeight=setPageContentDivHeight(fbboxesHeight, strSeeAlsoHeight, strPagecontent, true) + "px";
						pagecontent.style.height=setPageContentDivHeight(fbboxesHeight, strSeeAlsoHeight, strPagecontent, true) + "px";
					}
				}
		    	});
		}
		if (home && home == true) {
			fbbox[0].className = 'fbbox';
			if (fbboxesBig.length == 1) {
				fbboxesBig[0].className = 'fbboxbig';
			}
		
		} else {
			var mpopen = getCookie("mpopen");
			var b_open = mpopen == null ? top.FBopen : (mpopen == "true");
			if (!b_open) {
				fbboxesPushin[0].className = 'fbbox-pushout';
				fbboxesContentBg[0].style.display = 'none';
				fbboxesContent[0].style.display = 'none';
				if(fbboxesVisual.length == 1){fbboxesVisual[0].style.display = 'none';}
				if(fbboxesInloggenLabel.length == 1){fbboxesInloggenLabel[0].style.display = 'block';}
				if(fbboxesInloggen.length == 1){fbboxesInloggen[0].style.display = 'none';}
				if(fbboxesOpacitylayer.length == 1){fbboxesOpacitylayer[0].style.display = 'none';}
				if(fbboxesLoginlayer.length == 1){fbboxesLoginlayer[0].style.display = 'none';}
				if(fbboxesSluit.length == 1){fbboxesSluit[0].style.display = 'none';}
				
				if ((seealsoblockspacetop) && (!(dashboarddiv))){
					seealsoblockspacetop.style.height= 33 + "px";
				}				
				if((strSeeAlsoHeight > 0) && (strPagecontent > 0) && (bExtraIframe)){
					pagecontent.style.minHeight=setPageContentDivHeight(fbboxesHeight, strSeeAlsoHeight, strPagecontent, false) + 50 + "px";
					pagecontent.style.height=setPageContentDivHeight(fbboxesHeight, strSeeAlsoHeight, strPagecontent, false) + 50 + "px";
					if (seealsoDivBot.length == 0){
						var seealsoDivBot = document.createElement('div');
						seealsoDivBot.setAttribute('id','');
						seealsoDivBot.setAttribute('class','largeseealsobot');
						pagecontent.appendChild(seealsoDivBot);
					}
				}				
				if((strSeeAlsoHeight > 0) && (strPagecontent > 0) && (!(bExtraIframe))){
					pagecontent.style.minHeight=setPageContentDivHeight(fbboxesHeight, strSeeAlsoHeight, strPagecontent, false) + "px";
					pagecontent.style.height=setPageContentDivHeight(fbboxesHeight, strSeeAlsoHeight, strPagecontent, false) + "px";
				}
			} else {
				if (seealsoblock) seealsoblock.style.paddingTop = (fbboxesHeight-17) + "px";
				if ((seealsoblockspacetop) && (dashboarddiv)) 
				                seealsoblockspacetop.style.height=33+ "px";
				if ((seealsoblockspacetop) && (!(dashboarddiv))){
					seealsoblockspacetop.style.height= 74 + 'px';
				}				
				if((strSeeAlsoHeight > 0) && (strPagecontent > 0) && (bExtraIframe)){
					pagecontent.style.minHeight=setPageContentDivHeight(fbboxesHeight, strSeeAlsoHeight, strPagecontent, true) + 50 + "px";
					pagecontent.style.height=setPageContentDivHeight(fbboxesHeight, strSeeAlsoHeight, strPagecontent, true) + 50 + "px";
					if (seealsoDivBot.length == 0){
						var seealsoDivBot = document.createElement('div');
						seealsoDivBot.setAttribute('id','');
						seealsoDivBot.setAttribute('class','largeseealsobot');
						pagecontent.appendChild(seealsoDivBot);
					}
				}
				if((strSeeAlsoHeight > 0) && (strPagecontent > 0) && (!(bExtraIframe))){
					pagecontent.style.minHeight=setPageContentDivHeight(fbboxesHeight, strSeeAlsoHeight, strPagecontent, true) + "px";
					pagecontent.style.height=setPageContentDivHeight(fbboxesHeight, strSeeAlsoHeight, strPagecontent, true) + "px";
				}
			}
		}
	}
	// FM - ID: 29498 - Tijdelijke link naar AF in het FB frame onder de login 
	var agt = navigator.userAgent.toLowerCase(); 
	if (agt.indexOf("safari") == -1)
	{
		var ele = document.getElementById("safari_fb_link");
		if (ele != null)
			ele.style.display = "none";
			
		ele = document.getElementById("safari_fb_link_img");
		if (ele != null)
			ele.style.display = "none";
			
		ele = document.getElementById("safari_fb_link_pro");
		if (ele != null)
			ele.style.display = "none";
			
		ele = document.getElementById("safari_fb_link_pro_img");
		if (ele != null)
			ele.style.display = "none";

	}
}

function setPageContentDivHeight(fbboxesHeight, strSeeAlsoHeight, strPagecontent, bLarge){
	if (bLarge){
		var strExtraOffsetHeight=(fbboxesHeight);
		var strExtraScaleHeight=(28);
	} else {
		var strExtraOffsetHeight=(0);
		var strExtraScaleHeight=(0);
	}
	var strSeeAlsoHeight=(strSeeAlsoHeight + strExtraOffsetHeight);
	var strPagecontent=(strPagecontent);
	var strScaleUp=(strSeeAlsoHeight - strPagecontent);
	if (strScaleUp > 0){
		var pageHeight=(strPagecontent + strScaleUp + strExtraScaleHeight);
		return pageHeight;
	} else {
		if (strPagecontent <= 640){
			var pageHeight=(640);
			return pageHeight;
		} else{
			return (strPagecontent);
		}
		
	}
}

function BBfill (home) {
	if (document.getElementById('bb_login')) {
		fbFrame = new RPCFrame(window);
		if (home) { fbFrame.setLocation('/travel/de_de/business/bluebiz_/bluebiz.htm?redirect=no&pageID=' + window.pageID + '', BBfillItHome); }
		else { fbFrame.setLocation('/travel/de_de/business/bluebiz_/bluebiz.htm?redirect=no&pageID=' + window.pageID + '', BBfillIt); }
                                initBlueBizAppFrame();
	}
}
function BBfillIt () {
	var sUserName = readCookie("bbloginname");
	var sChecked = readCookie("rememberbblogin");
	document.getElementById('bb_login').innerHTML = fbFrame.getHTMLById('content').innerHTML;
	BBLoggedfill();
	var oForm = document.getElementById("bbloginbox");
	if (oForm != null) {
		if ((sUserName != null) && (sUserName != '')) { 
			oForm.elements["username"].value = sUserName;
		}
		if ((sChecked != null) && (sChecked == 'false')) {
			oForm.elements["rememberbblogin"].checked = false;
		}
	}
	toggleMilesPlus();
	try {
		if (bluebiz != undefined) checkBB();
	} catch (e) {}
}
function BBfillItHome () {
	document.getElementById('bb_login').innerHTML = fbFrame.getHTMLById('content').innerHTML;
	document.getElementById('bottom').innerHTML = '';
	BBLoggedfill();
}
function BBLoggedfillIt() {
	document.getElementById('login-status').innerHTML = fbFrame.getDocument().innerHTML;
}
function BBLoggedfill () {
	if (document.getElementById('login-status')) {
		fbFrame = new RPCFrame(window);
		try{
		fbFrame.setLocation("/le2/passage/noseb2b/company/CompanyProfile/MemberInfo", BBLoggedfillIt);
		} catch (e) { }
	}
}
function loadNav() {
	if (document.getElementById('navlogo')) {
		new Navigation('navigation', 'navopen', document.getElementById('navigation').innerHTML);
	}
	else {
		/* Prevent double loading, since older jsps, still load the navigation with a setTimeout */
		if (!navFrame && document.getElementById('navigation')) {
			navFrame = new RPCFrame(window);
			navFrame.setLocation('/travel/de_de/navigation.html', initNavigation);
			try {
				clearInterval(n);
				} catch (e) {
			}
		}	
		else {
			return false;
		}
	}	
}
function initNavigation () {
	new Navigation('navigation', 'navopen', navFrame.getHTMLById('navcontent').innerHTML);
}
function isChild(ancestor, candidate) {
	if (!ancestor || !ancestor.parentNode || !candidate) return false;
	while (candidate && candidate != ancestor.parentNode) {
		if (candidate == ancestor) return true;
		try {
			candidate = candidate.parentNode;
		} catch (c) {return false}
	}
}
function createContextFunction(context, method, method2) {
	return (function(x){
		method = (method == "post") ? method2 : method;
		eval("context."+method+"(x)");
		return false;
	});
}
function initSpecials() {
	var entries = document.getElementsByTagName('div');
	for (var i = 0; i < entries.length; i++) {
		if (entries[i].className == 'specials') {
			var specials = entries[i].getElementsByTagName('li');
			for (var j = 0; j < specials.length; j++) {
				if (specials[j].getElementsByTagName('a').length > 0)
				{
					specials[j].link = specials[j].getElementsByTagName('a')[0].href;
					specials[j].getElementsByTagName('a')[0].removeAttribute("href");
					if (specials[j].getElementsByTagName('a')[0].target=='_blank')
						specials[j].onclick = function () {window.open(this.link)};
					else
						specials[j].onclick = function () {document.location.href = this.link};
				}
				specials[j].onmouseover = function () {this.className = "over"}
				specials[j].onmouseout = function () {this.className = ""};
			}
		}
	}
}
function initSpecials_mp() {
	var entries = document.getElementsByTagName('div');
	for (var i = 0; i < entries.length; i++) {
		if (entries[i].className == 'specials_jffp') {
			var specials = entries[i].getElementsByTagName('li');
			for (var j = 0; j < specials.length; j++) {
				specials[j].link = specials[j].getElementsByTagName('a')[0].href;
				specials[j].getElementsByTagName('a')[0].removeAttribute("href");
				specials[j].onclick = function () {document.location.href = this.link};
				specials[j].onmouseover = function () {this.className = "over"}
				specials[j].onmouseout = function () {this.className = ""};
			}
		}
	}
}
function setTriggers() {
	var entries = document.getElementsByTagName('div');
	for (var i = 0; i < entries.length; i++) {
		if (entries[i].className.indexOf('TRIG') != -1) {
			entries[i].outline = entries[i].getElementsByTagName('div')[0];
			// create an exception for specials trigger
			if(entries[i].outline.className.indexOf('specials') == -1) {
				entries[i].link = entries[i].getElementsByTagName('a')[0];
				entries[i].onmouseover = function (e) {
					this.outline.oldClassName = this.outline.className;
					this.outline.className += "over";
                                                                                if (this.className.indexOf('widetrigger_pic') != -1 ) return;
					this.className += "  TRIGOVER";
				}
				entries[i].onmouseout = function (e) {
					this.outline.className = this.outline.oldClassName;
                                                                                if (this.className.indexOf('widetrigger_pic') != -1 ) return; 
					this.className = this.className.replace(" TRIGOVER","")
				}
				entries[i].onclick = function () {
					if (this.className.indexOf('newWin') != -1) {
						if (this.className.indexOf('KANA') !=-1) {
							window.open(this.link,'kana','width=400,height=300');
						}
						else if (this.className.indexOf('LSW') !=-1) { //local shop window
							window.open(this.link,'lsw','width=815,height=600,toolbar=yes,menubar=yes,location=yes,scrollbars=yes,resizable=yes,status=yes');
						}
						else {
							window.open(this.link);
						}	
					}
					else {
						document.location.href = this.link;
					}
				}
			}
		}
	}
}
function setTriggersHome() {
	var entries = document.getElementsByTagName('div');
	for (var i = 0; i < entries.length; i++) {
		if (entries[i].className.indexOf('TRIG') != -1) {
			entries[i].link = entries[i].getElementsByTagName('a')[0];
			entries[i].onmouseover = function (e) {
				if (this.className.indexOf('widetrigger_pic') != -1 ) return;
				this.className += " TRIGOVER";
			}
			entries[i].onmouseout = function (e) {
				if (this.className.indexOf('widetrigger_pic') != -1 ) return;
				this.className = this.className.replace(" TRIGOVER","");
			}
			entries[i].onclick = function () {
				if (this.className.indexOf('newWin') != -1) {
					if (this.className.indexOf('KANA') !=-1) {
						window.open(this.link,'kana','width=400,height=300');
					}
					else if (this.className.indexOf('LSW') !=-1) { //local shop window
						window.open(this.link,'lsw','width=815,height=600,toolbar=yes,menubar=yes,location=yes,scrollbars=yes,resizable=yes,status=yes');
					}
					else {
						window.open(this.link);
					}
					this.link.disabled = true;
				}
				else {
					document.location.href = this.link;
				}
			}
		}
	}
}
function setPromos() {
	var entries = document.getElementsByTagName('div');
	for (var i = 0; i < entries.length; i++) {
		if (entries[i].className.indexOf('nonair') != -1) {
			entries[i].outline = entries[i].getElementsByTagName('span')[0];
			entries[i].link = entries[i].getElementsByTagName('a')[0];
			entries[i].onclick = function () {document.location.href = this.link};
			entries[i].onmouseover = function (e) {
				this.outline.oldClassName = this.outline.className;
				this.outline.className += "over";
                                                                if (this.className.indexOf('widetrigger_pic') != -1 ) return;
                       			this.className += "  TRIGOVER";
			}
			entries[i].onmouseout = function (e) {
				this.outline.className = this.outline.oldClassName;
                                                                if (this.className.indexOf('widetrigger_pic') != -1 ) return; 
				this.className = this.className.replace(" TRIGOVER","")
			}
		}
	}
}

function toggleMilesPlus() {
	var miles = document.getElementById('mpopen');
	var milesplusblock = document.getElementById('jffpcontentcontainer');
	var seealsoblock = document.getElementById('seealso');
                var contentblock = document.getElementById('contentblock');
                var recent= document.getElementById('recent');
                var seealsobot= document.getElementById('seealsobot');
                var seealsoblockspacetop= document.getElementById('seealsoblockspacetop');
                var seealsoblocknewtop= document.getElementById('seealsoblocknewtop');
// mf 03/07 - in case no seealsoblock is present, then set seealsoblock to recent. this feature enables 
// mf 03/07 - the overview newsblock to also shift along with the FBlogging box 
// mdijk 05/05 - ALWAYS CHECK IF AN OBJECT EXISTS BEFORE ADDRESSING IT!!!!!!! In this case check if contentblock exists 
                if (!(seealsoblock) && (contentblock)){
                     contentblock.style.width=745+'px';}
                if (!seealsoblocknewtop) {
                    if(contentblock && seealsobot) {
                       contentblock.style.background='white';
                       seealsobot.style.background='white';
                    }
                }

                if (!(seealsoblock))
                {
                    seealsoblock = document.getElementById('recent');

                   }        
	if (milesplusblock != null) {
		milesplusblock.style.display = "none";
		var milesclose = document.getElementById('bottom');
		miles.onclick = function() {
			setCookie("mpopen", "true", 0);
			if (milesplusblock.style.display == 'none') {
				milesplusblock.style.display = 'block';
                                                                if (seealsoblock) seealsoblock.style.paddingTop = (milesplusblock.offsetHeight- 35) + "px";
if (seealsoblockspacetop) { seealsoblockspacetop.style.height= 17 + "px";}

			} else {
				milesplusblock.style.display = 'none';
				if (seealsoblock) seealsoblock.style.paddingTop = "0";
if (seealsoblockspacetop) { seealsoblockspacetop.style.height= "0";}


			}
		}
		milesclose.onclick = function() {
			setCookie("mpopen", "false", 0);
			if (milesplusblock.style.display == 'none') {
				milesplusblock.style.display = 'block';
				if (seealsoblock) seealsoblock.style.paddingTop = (milesplusblock.offsetHeight - 35) + "px";
if (seealsoblockspacetop) {seealsoblockspacetop.style.height= 17 + "px";}



			} else {
				milesplusblock.style.display = 'none';
				if (seealsoblock) seealsoblock.style.paddingTop = "0";
if (seealsoblockspacetop) { seealsoblockspacetop.style.height= "0";}


			}
		}
		var mpopen = getCookie("mpopen");
		var b_open = mpopen == null ? top.FBopen : (mpopen == "true");
		if (b_open) {
			milesplusblock.style.display = 'block';
			if (seealsoblock) seealsoblock.style.paddingTop = (milesplusblock.offsetHeight - 35) + "px";
if (seealsoblockspacetop) { seealsoblockspacetop.style.height= 17 + "px";}
		}
	}
}
function addEventHandler(element, type, handler) {
	try {
		element.addEventListener(type, handler, false);
	} catch(inferiorBrowserException) {
		if(element.attachEvent) 
			element.attachEvent('on'+type, handler);
		else 
			element['on'+type] = handler;
	}
	return [element, type, handler];
}
function isSafari() {
	return (/safari/i).test(navigator.userAgent);
}

function removeEventHandler(o, eventName, handler) {
	if (o.removeEventListener) {
		o.removeEventListener(eventName, handler, true);
	} else {
		o.detachEvent("on"+eventName, handler);
	}
}
function cancelEvent(e) {
	try {
		e.preventDefault();
		e.stopPropagation();
	} catch (someException) {
		e.cancelBubble = true;
		e.returnValue = false;
	}
	if (isSafari()) {
		var target = e.target;
		while (target.nodeType > 1) target = target.parentNode;
	 	if (/^a$/i.test(target.nodeName)) {
	 		target.onclick = function() {
				return false;
			};
		}
	}
	return false;
}

function calculateTop(object) {if (object) return object.offsetTop + calculateTop(object.offsetParent); else return 0;}
function calculateLeft(object) {if (object) return object.offsetLeft + calculateLeft(object.offsetParent); else return 0;}

function scaleFrame() {
	var f = document.getElementById('extFrame');
	var top;
	top = calculateTop(f);
	f.style.height = getWindowHeight() - top + "px";
	document.body.style.overflow = "hidden"; // for firefox and mozilla
	document.body.parentNode.style.overflow = "hidden"; // for ie
}
function getWindowHeight() {
var windowHeight=0;
	if (typeof(window.innerHeight)=='number') {
		windowHeight=window.innerHeight;
	} else {
		if (document.documentElement&&document.documentElement.clientHeight) {
			windowHeight=document.documentElement.clientHeight;
		} else if (document.body&&document.body.clientHeight) windowHeight=document.body.clientHeight;
	}
	return parseInt(windowHeight);
}
function setOtherKLMSites() {
	var s = document.getElementById('otherKLMsites');
	if (s) {
		s.onchange = function () {
			var strArr = this.options[this.selectedIndex].value.split("|");
			if (strArr[0] != "#") {
				if (strArr[1] == "New window" || strArr[1] == "Popup") {
					window.open(strArr[0],"_blank");
				} else {
					document.location.href = strArr[0];
				}
			}
		}
	}
}

function logOutJFFP () {
	deleteCookie('jffp');
	var location = '/travel/logon/de_de?logOut=true';
	if (typeof(currentDashboard) != "undefined")
		if (currentDashboard != null)
			location += "&db=" + currentDashboard.selectedTab;
	document.location.href = location
}
function checkBB () {
	if (getCookie('klmcomcaas') == 'b2b') {
		document.getElementById('loginbar').style.display = 'none';
		document.getElementById('loggedinbar').style.display = 'block';
	} else {
		document.getElementById('loginbar').style.display = 'block';
		document.getElementById('loggedinbar').style.display = 'none';
	}
}
function checkLoggedin () {
	if (getCookie('jffp')) {
		if (getCookie('jffp').length > 10) {
			return true;
		}
	}
	return false;
}

function checkLogin () {
	if (getCookie('jffp')) {
		if (getCookie('jffp').length > 10) {
			document.getElementById('IN').style.display = 'block';
		} else {
			document.getElementById('OUT').style.display = 'block';
		}
	} else {
		document.getElementById('OUT').style.display = 'block'
	}
}

function initConditions() {
	var entries = document.getElementsByTagName('a');
	for (var i = 0; i < entries.length; i++) {
		if (entries[i].className == 'CONDITIONS') {
			entries[i].layer = entries[i].parentNode.getElementsByTagName('div')[0];
			entries[i].container = entries[i].parentNode.parentNode.parentNode.parentNode.parentNode;
			entries[i].layer.closer = entries[i].layer.getElementsByTagName('div')[0];
			entries[i].layer.closer.container = entries[i].container;
			entries[i].layer.closer.onclick = function () {
				this.parentNode.style.display = 'none';
				//this.container.style.position = 'static';
			}
			entries[i].onclick = function () {
				closeOthers();
				//this.container.style.position = 'relative';
				this.layer.style.display = 'block';
				var high = this.layer.offsetHeight;
				var newY = 0 - high + 'px';
				this.layer.style.marginTop=newY;
			}
		}
	}
}
function closeOthers () {
	var entries = document.getElementById('content').getElementsByTagName('div');
	for (var i = 0; i < entries.length; i++) {
		if (entries[i].className == 'conditionslayer')
			entries[i].style.display = 'none';
		if (entries[i].className == 'webawards')
			entries[i].style.position = 'static';
	}
}
function initWABanner () {
    var wa = document.getElementById('webawards');
    if (wa) {
        var anchors = wa.getElementsByTagName('a');
        if (anchors.length) {
            wa.link = anchors[0].href;
            wa.anchorfound = true;
            anchors[0].onclick = function() {wa.anchorfound = false;}
            wa.onclick = function () { 
                        if (wa.anchorfound) {
                                     document.location.href = this.link;
                        }else{
                                     wa.anchorfound = true;
                        } 
            }
        }
    }
}
function milesPlusLogon(){
	var strLocation;
	strLocation = "https://" + document.location.hostname + "/travel/logon/de_de?forwardurl=/de_de";
	if (typeof(currentDashboard) != "undefined") {
		if (currentDashboard != null) {
			strLocation += "?db=" + currentDashboard.selectedTab;
		}
	}
	document.forms.frmJFFP.action=strLocation;
	document.forms.frmJFFP.submit();
}

function checkBrowser() {
	if (getCookie('disableUnsupportedBrowserRedirect')){
                                return;
                }
	var browser = 'unknown';
	browser = getBrowser();
	if ((browser == 'TUX_FF') || (browser == 'TUX_MOZ') || (browser == 'TUX_OP') || (browser == 'MAC_OP') || (browser == 'WIN_OP') || (browser == 'WIN_IE8') ||  (browser == 'WIN_IE7') || (browser == 'WIN_IE6') || (browser == 'WIN_IE55') || (browser == 'WIN_IE50') || (browser == 'WIN_MOZ')|| (browser == 'WIN_FF') || (browser == 'MAC_SAF') || (browser == 'MAC_FF') || (browser == 'MAC_MOZ') || (browser = 'WIN_CHR') || (browser = 'MAC_CHR')|| (browser = 'TUX_CHR')) {
		//browser ok, so to 'normal' site
		return;
	}
	else {
		//wrong browser, so to 'browsersupport' page
		document.location.href = '/travel/klm_splash/browsersupport.html';
	}
}
function getParameter ( queryString, parameterName ) {
	var parameterName = parameterName + "=";
	if ( queryString.length > 0 ) {
		begin = queryString.indexOf ( parameterName );
		if ( begin != -1 ) {
			begin += parameterName.length;
			end = queryString.indexOf ( "&" , begin );
			if ( end == -1 ) {
				end = queryString.length
			}
			return unescape ( queryString.substring ( begin, end ) );
		}
	return null;
	}
}
function getBrowser () {
	var mvIndex;
	var mozVers;
	var os = navigator.platform.toLowerCase(); 
	var agt = navigator.userAgent.toLowerCase(); 
	var ver = navigator.appVersion.toLowerCase();
	
	if (os.indexOf('win') != -1) {
		if (agt.indexOf("opera")!=-1) return "WIN_OP";
		else if (agt.indexOf("msie 8.0")!=-1) return "WIN_IE8";
		else if (agt.indexOf("msie 7.0")!=-1) return "WIN_IE7";
		else if (agt.indexOf("msie 6.0")!=-1) return "WIN_IE6";
		else if (agt.indexOf("msie 5.5")!=-1) return "WIN_IE55";
		else if (agt.indexOf("msie 5.0")!=-1) return "WIN_IE50";
		else if (agt.indexOf("netscape")!=-1) return "Netscape";
		else if (agt.indexOf("firefox")!=-1) return "WIN_FF";
		else if (agt.indexOf("chrome")!=-1) return "WIN_CHR";
		else if (agt.indexOf("mozilla")!=-1) {
			var mvIndex = agt.indexOf('; rv:1.');
			var mozVers = agt.substr(mvIndex + 7, 1); 
			if (mozVers > 3) return "WIN_MOZ";
		}
	}
	else if (os.indexOf('mac') != -1) {
		if (agt.indexOf("opera")!=-1) return "MAC_OP";
		else if (agt.indexOf("safari")!=-1) {
			var safIndex = agt.indexOf('safari/');
			var safVers = agt.substr(safIndex + 7, 3);
			if (safVers >= 110) return "MAC_SAF";
		}
		else if (agt.indexOf("netscape")!=-1) return "Netscape";
		else if (agt.indexOf("firefox")!=-1) return "MAC_FF";
		else if (agt.indexOf("mozilla")!=-1) {
			var mvIndex = agt.indexOf('; rv:1.');
			var mozVers = agt.substr(mvIndex + 7, 1); 
			if (mozVers > 3) return "MAC_MOZ";
		}
		else if (agt.indexOf("chrome")!=-1) return "MAC_CHR";
	}
	else {
		if (agt.indexOf("opera")!=-1) return "TUX_OP";
		else if (agt.indexOf("netscape")!=-1) return "Netscape";
		else if (agt.indexOf("firefox")!=-1) return "TUX_FF";
		else if (agt.indexOf("chrome")!=-1) return "TUX_CHR";
		else if (agt.indexOf("mozilla")!=-1) {
			return "TUX_MOZ";
		}
	}	
}

function checkReturnKey(event, varForm, blnMilesPlusLogon)
{
	var key;
	if(window.event)
		key = window.event.keyCode;     //IE
	else
		key = event.which;     //firefox

	if (key == 13)
	{
		if (blnMilesPlusLogon)
			milesPlusLogon();
		else
		{
			if(varForm!=null)
				varForm.submit();
			return true; // handle submittingoutside after exiting this function if varForm==null
		}
	}
	return false;
}

function include_css(uri, media) {
    var head = document.getElementsByTagName('head').item(0);
    var link = document.createElement('link');
    link.setAttribute('type', 'text/css');
    link.setAttribute('rel', 'stylesheet');
    link.setAttribute('href', uri);
    if (media)
        link.setAttribute('media', media);
    head.appendChild(link);
    return false;
}

function include_jscript(uri) {
    var head = document.getElementsByTagName('head').item(0);
    var script = document.createElement('script');
    script.setAttribute('type', 'text/javascript');
    script.setAttribute('src', uri);
    head.appendChild(script);
    return false;
}

function preloadImages(){
	var strLocation = document.location;
	if (strLocation.toString().indexOf('ebt/ebt7') > -1){
		image1 = new Image();
		image1.src = "/travel/de_de/images/InformationMouseover_tcm96-125620.jpg";
		image2 = new Image();
		image2.src = "/travel/de_de/images/NeedhelpMouseover_tcm96-125623.jpg";
		image3 = new Image();
		image3.src = "/travel/de_de/images/BookingtoolMouseover_tcm96-125617.jpg";
		image4 = new Image();
		image4.src = "/travel/de_de/images/Start-buttonENMouseover_tcm96-125625.jpg";
	}
}
var first = true;
function formshowhideICIinputField(inputValue) {
	if ( first )
	{
		formshowhideICIvalue(inputValue);
		selectButton(inputValue);
	}
}

function checkRadio(buttons) {
	var radioEmpty = false;
		if (buttons[i].checked) {
		radioEmpty = true;
	}
}

function formshowhideICIradioBtn(radio) {
	formshowhideICIvalue(radio.value);
}

function selectButton(inputValue) {
	switch (inputValue) {
		case 'ET':
			document.getElementById("eticket_input").checked = true;
		break;
		case 'PNR':
			document.getElementById("booking_input").checked = true;
		break;
	}
}

function formshowhideICIvalue(radioValue) {
	if ( first )
	{
		first = false;
	}
	switch (radioValue) {
		case 'ET':
			var objTextBox = document.getElementById("eticketnumbDiv");
			objTextBox.className = "textbox1";
		break;
		case 'PNR':
			var objTextBox = document.getElementById("eticketnumbDiv");
			objTextBox.className = "textbox2";
		break;
		}
		var objInputField = document.getElementById("eticketnumb");
		var attrDisabled = objInputField.attributes["disabled"];
			if ( attrDisabled ) {
				objInputField.removeAttribute('disabled');
		}
		hideLayer();
		clearinputText(objInputField);
		objInputField.focus();
}

var el = window;
if (el.addEventListener)
{
	el.addEventListener('load', addFBJavascripts, false); 
}
else if (el.attachEvent)
{
	el.attachEvent('onload', addFBJavascripts);
}


function addFBJavascripts()
{
	var sPath = window.location.pathname;
	var sPageName = sPath.substring(sPath.lastIndexOf('/') + 1);
		
	if ((sPageName.substring(sPageName.length - 5, sPageName.length).toUpperCase() != ".HTML") &&  (document.getElementById("jffp_login")))
	{
		var aScriptURLs = [
			'/travel/widgetbroker/interface/Widget.js' ,
			'/travel/widgetbroker/engine.js',
			'/travel/widgetbroker/util.js'
			];
		YAHOO.util.Get.script(aScriptURLs, { onSuccess: successFBJS  });
	}
	
}


var successFBJS = function(oData) 
{
	
	var scripts = document.getElementsByTagName("script");
	for (var i = 0; i < scripts.length; i++)
		eval(scripts[i]);

	if (getCookie("jffp") && (!(document.getElementById("fbbox-username"))))
                	requestmmbwidget ();

}




function requestmmbwidget ()
{

                var sBVSessionId =  getURLParameters("FBSessionID");
	
	
	if (sBVSessionId == "")
	{
		if (getCookie("jffp"))
			sBVSessionId = getCookieURLParameters ("FBSessionID", "?" + getCookie("jffp"));
	}

	var sBVEngineId = getURLParameters("FBCloneID")
	if (sBVEngineId == "")
	{
		if (getCookie("jffp"))
			sBVEngineId = getCookieURLParameters ("FBCloneID", "?" + getCookie("jffp"));
	}

 	var SesEngId = { 
 			"BV_SessionID" : sBVSessionId, 
   			"BV_EngineID" : sBVEngineId  
		}
   
   	var WidgetRequest = {
   		country : "de",
   		lang : "de",
   		pos : "de",
   		type : "mmb",
   		attributes : SesEngId
   		}


	dwr.engine.setTimeout(15000);
 	dwr.engine.setErrorHandler(HandleMMBError);
	Widget.getWidget(WidgetRequest, HandleMMBDataResponse);
	
}


function getURLParameters(name)
{
	name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
	var regexS = "[\\?&]"+name+"=([^&#]*)";
	var regex = new RegExp( regexS );

	var results = regex.exec( window.location.href );

	if( results == null )    
		return "";
	else   
		return results[1];
}


function getCookieURLParameters(name, URL)
{
	name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
	var regexS = "[\\?&]"+name+"=([^&#]*)";
	var regex = new RegExp( regexS );

	var results = regex.exec(URL);

	if( results == null )    
		return "";
	else   
		return results[1];
}


function HandleMMBError()
{
	var diverrmsg = document.getElementById("fberrormsg");
	
	if (diverrmsg)
	{
		diverrmsg.style.display = "";

		var divimg = document.getElementById("fbwaiting");
		if (divimg)
			divimg.style.display = "none";
	}
	else
	{
		if (!(document.getElementById("fbbox-username")))
			setTimeout ("WaitForJFFPAndFill('', 1)", 1000);
	}
}



function HandleMMBDataResponse(strWidgetResponse)
{
	if ((strWidgetResponse == null) || (strWidgetResponse == ""))
	{
			var diverrmsg = document.getElementById("fberrormsg");
			if (diverrmsg)
			{
				diverrmsg.style.display = "";

				var divimg = document.getElementById("fbwaiting");
				if (divimg)
					divimg.style.display = "none";
			}
			else
			{
				if (!(document.getElementById("fbbox-username")))
					setTimeout ("WaitForJFFPAndFill('', 1)", 1000);
			}
			
	}
	else
	{
		var div = document.getElementById("fbmmbnextflight");
		if (div)
		{
			div.innerHTML = strWidgetResponse;
		}
		else
		{
			if (!(document.getElementById("fbbox-username")))
				setTimeout ("WaitForJFFPAndFill('" + strWidgetResponse + "', 1)", 1000);
		}	
                 }
}

function WaitForJFFPAndFill(strWidgetResponse, iNoofAttempts)
{

	if (strWidgetResponse == "")
	{
			var diverrmsg = document.getElementById("fberrormsg");
			if (diverrmsg)
			{
				diverrmsg.style.display = "";


				var divimg = document.getElementById("fbwaiting");
				if (divimg)
					divimg.style.display = "none";
			}
			else if(iNoofAttempts <= 120)
			{
				iNoofAttempts = iNoofAttempts +1 ;
				setTimeout ("WaitForJFFPAndFill('', " + iNoofAttempts + ")", 1000);
			}
	}

	else
	{
		var div = document.getElementById("fbmmbnextflight");
		if (div)
		{
			div.innerHTML = strWidgetResponse;
		}
		else if(iNoofAttempts <= 120)
		{
			iNoofAttempts = iNoofAttempts +1 ;
			setTimeout ("WaitForJFFPAndFill('" + strWidgetResponse + "', " + iNoofAttempts + ")", 1000);
		}
	}

}


function hideLayer() {
	document.getElementById("eticketnumbDummyDiv").style.visibility = "hidden";
}

function clearinputText(el) {
	el.value='';
}
// Content: js RPCFrame
var autoID = 1;
function OldRPCFrame(targetWindow) {
	this.ID = autoID++;
	this.parent = targetWindow;
	if ((window.navigator.appVersion.search("MSIE 5.0") != -1) && (navigator.platform.indexOf('Mac')==-1)) {
		this.IE50 = true;
		var newFrameHTML = "<iframe id='iframe"+this.ID+"' style='position:absolute;top:" + this.ID + "px;display:block;border:0px;width:1px;height:1px;'></iframe>";
		var d = document.createElement("div");
		d.innerHTML = newFrameHTML;
		document.body.appendChild(d);
		this.HTMLObject = targetWindow.document.getElementById('iframe'+this.ID);
	} else {
		this.IE50 = false;
		var newFrame = document.createElement("iframe");
		newFrame.setAttribute("id", "iframe"+this.ID);
		newFrame.style.position = "absolute";
		newFrame.style.border = "0px";
		newFrame.style.width = "0px";
		newFrame.style.height = "0px";
		this.HTMLObject = document.body.appendChild(newFrame);
	}
	return this;
}
OldRPCFrame.prototype.setLocation = function (newURL, callBack) {
	this.HTMLObject.src = newURL;
	addEventHandler(this.HTMLObject, "load", callBack);
	if (this.IE50) {
		if (callBack) top.callBack = callBack; else top.callBack = null;
		this.getDocument().onreadystatechange = this.returnToCaller;
	}
}
OldRPCFrame.prototype.returnToCaller = function () {
	if (this.readyState == "complete") {
		if (top.callBack) top.callBack();
	}
}

OldRPCFrame.prototype.getDocument = function () {
	if (this.HTMLObject.contentDocument) {
		return this.HTMLObject.contentDocument;
	} else if (this.HTMLObject.contentWindow) {
		return this.HTMLObject.contentWindow.document;
	} else if (this.HTMLObject.document) {
		if (navigator.platform.indexOf('Mac') != -1) {
			return this.parent.document.frames["iframe"+this.ID].document;
		} else {
			return this.parent.frames["iframe"+this.ID].document;
		}
	}
}
OldRPCFrame.prototype.destroy = function () {
	this.ID = null;
	this.HTMLObject.removeNode(true);
}
OldRPCFrame.prototype.getHTMLById = function (id) {
	return this.getDocument().getElementById(id);
}
OldRPCFrame.prototype.getHTMLByTag = function (tag) {
	return this.getDocument().getElementsByTagName(tag);
}

function getHTMLById(element, id) {
	var children = element.childNodes
	for (var i=0;i<children.length;i++) {
		if (children[i].id) {
			if (children[i].id == id) {
				return children[i];
			}
		}
		var child = getHTMLById(children[i], id);
		if (child != null) {
			return child;
		}
	}
	return null;	
}

var oldResponseText="";
function RPCFrame(targetWindow) {
	this.setLocation = function (newURL, callBack) {
		mycallback = callBack;
		xmlhttp.open("GET", newURL ,true);
		xmlhttp.onreadystatechange = this.myonreadystatchange;
		xmlhttp.send(null);
	}

	this.myonreadystatchange = function() {
		if (xmlhttp.readyState == 4 && oldResponseText!=xmlhttp.responseText) {
			var container = document.createElement("DIV");
			container.innerHTML = xmlhttp.responseText; 
                                                oldResponseText=xmlhttp.responseText;
			mycontent = container;
			mycallback();
		}
	}
	
	this.getDocument = function () {
		return mycontent;
	}

	this.destroy = function () {
		mycontent = null;;
	}

	this.getHTMLById = function (id) {
		return getHTMLById(mycontent, id);
	}

	this.getHTMLByTag = function (tag) {
		return mycontent.getElementsByTagName(tag);
	}


	var xmlhttp;
	var mycallback;
	var mycontext;
	var mycontent;
	try {
		xmlhttp=new ActiveXObject("Msxml2.XMLHTTP")
	} catch (e) {
		try {
			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
		} catch (E) {
			xmlhttp=false
		}
	}
	
	if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
		try {
			xmlhttp = new XMLHttpRequest();
		} catch (e) {
			xmlhttp=false;
		}
	}
	// In case xmlrpc is not supported we will fallback to the old method.
	if(!xmlhttp) {
		return new OldRPCFrame(targetWindow);
	}
	return this;
}
// Content: js dashboard
/* 20070604 - MD: Added support for external apps and in memory dashboards */
/* 20070812 - BvD: Added mechanism for MMB reload when it's tab is clicked */

var currentDashboard = null; // ppkpatch

function Dashboard (home, selected, app) {
	this.loadtext = null;
	this.container = document.getElementById('dashboard');
	home ? this.home = true : this.home = false;
	app ? this.app = true : this.app = false;
	this.tablist = document.getElementById('tabs');
	this.tabs = this.tablist.getElementsByTagName('li');
	this.toolContainer = document.getElementById('tool');
	this.initTabs();
	this.selectedTab = null;
	this.images = null; // ppkpatch
	this.sourceFrame = new RPCFrame(window);
	if (!this.home) {
		this.bottomImage = document.getElementById('db_bottom');
		this.toolContainer.style.display = 'none';
	} else {
		var tabId = 0;
		if (selected) {
			if (checkLoggedin() && selected == "db_ici")
				selected = "db_ici_jffp";
			else if (!checkLoggedin() && selected == "db_ici_jffp")
				selected = "db_ici";
			else if (selected == "db_tt" && this.tabs[selected] == null)
				selected = "db_tt2";
			tabId = selected;
		} else {
			tabId = this.tabs[0].id;
		}
		// Check if dashboard is inline or it needs to be loaded
		if (tabId == "db_ebt" && (document.getElementById("destinationcontainer") != null || document.getElementById("klm-ebt") != null))
		{
			this.selectTab(tabId);
			fill_ebt();
			this.toolContainer.style.display = 'block';
		} else
			this.openTab(tabId);
	}
}
Dashboard.prototype.initTabs = function () {
	for (var i = 0; i < this.tabs.length; i++) {
		this.initTab(i);
	}
}
Dashboard.prototype.initTab = function (i) {
	var li = this.tabs[i];
	li.a = li.getElementsByTagName('a')[0];
	if (this.app) li.a.href = '/travel/de_de/emptycontentdashboardpage.htm?db=' + li.id;
	//if user is logged in (jffp cookie) then set some tabs to jffp version
	if (checkLoggedin()) {
		if (li.id == "db_ici") {
			li.id = "db_ici_jffp";
		} else if (li.id == "db_mmb") {
			li.id = "db_mmb_jffp";
		}
	}
	if (i == 0) li.className = 'first';
	li.dashboard = this;
	li.onclick = function () {
		if (this.dashboard.app) {
			document.location.href = '/travel/de_de/emptycontentdashboardpage.html?db=' + this.id;
		} else {
			this.a.blur();
			this.dashboard.openTab(this.id);
		}
	}
}
/* MD: - Added function for correctly interpreting the loaded state of applications */
function dashboardApplicationLoaded() {
	//if (this.loadtext) {clearTimeout(this.loadtext);this.loadtext = null}
}

/* MD: - Added checking to see if the tab was already loaded, in that case we can just switch the content tabs 
 			 - Added support for an app loaded in an iframe */			 
Dashboard.prototype.openTab = function (id) {
	/* BVD 20070913: - We only want to start loading anything if the current tab is 
	   - different from the requested tab 
	   - the MMB tab
	*/
	if (id == this.selectedTab){
		if (!this.home) {
			this.close();
			return;
		}
		else {
			if (id.indexOf("mmb") == 0){
				return;
			}
		}
	}
	
	/* BVD 20070913: - Fixed problem where multiple dashboards share elements with same ID by clearing
	the content of the dashboard to be unselected, effectively undoing the performance gains
	from the implementation of in-memory dashboards */
	this.getTabContentElement().innerHTML = "";
	oldResponseText="";	//Needed to force RPC frame to execute callback function!

	this.selectTab(id);

	// Online timetable is an AJAX application which requires certain JavaScript and css files to be included JIT
	if (id == "db_tt" || id == "db_tt2")
	{
		var host = document.location.protocol+'//'+document.domain+(document.location.port ? ':'+document.location.port : '');
		var publication = 'de_de';
		include_css (host+'/travel/'+publication+'/static/css/timetable/dashboardpage.css', 'screen');
		include_jscript(host+'/commercial/ott/ott-dwr/engine.js');
		include_jscript(host+'/commercial/ott/ott-dwr/util.js');
		include_jscript(host+'/commercial/ott/ott-dwr/interface/OttAjaxService.js');
		include_jscript(host+'/commercial/ott/ott-dwr/interface/CountryRequest.js');
		include_jscript(host+'/commercial/ott/ott-dwr/interface/CountryStationRequest.js');
		include_jscript(host+'/commercial/ott/ott-dwr/interface/StationRequest.js');
		include_jscript(host+'/travel/'+publication+'/static/js/timetable/consolidated/consolidated.js');
		include_jscript(host+'/travel/'+publication+'/static/js/timetable/dashboardpage.js');
	}

	if (this.getTabContentElement().childNodes.length == 0 || id.indexOf("mmb") > 0) {
		if (id.indexOf("_app") > 0) {
			this.getTabContentElement().innerHTML = "<iframe name='dashboardFrame' scrolling='no' width='554' height='230' id='dashboardFrame' frameborder='0' src='/travel/de_de/dashboard/" + id + ".htm' onload='dashboardApplicationLoaded()'></iframe>";
			document.getElementById('dashboardFrame').src = "/travel/de_de/dashboard/" + id + ".htm";
			this.toolContainer.style.display = 'block';
			if (!this.home) this.createCloser();
		} else {
			if (this.loadtext = null) {
				this.loadtext = setTimeout(createContextFunction(this, "showLoadText"), 500);
			}
			this.tabId = id;	
			this.sourceFrame.setLocation("/travel/de_de/dashboard/" + id + ".html", createContextFunction(this, "loadContentInitialize")); // ppkpatch -> Initialize
		}
	} 
	if (!this.home) {
		this.bottomImage.style.display = 'none';
		this.toolContainer.style.display = 'block';
	}
}
/* MD: Changed the insert node to be one level below the tool container */
Dashboard.prototype.showLoadText = function () {
	this.getTabContentElement().innerHTML = "loading...";
}
/* Start ppkpatch */

/* Principle: the new page is only loaded into the Dashboard when all images have finished loading.
	loadContentInitialize() prepares this check. checkNumberOfImages() checks if all images have
	been loaded (readyState == 'complete'). If they haven't, set a timeout to try again in 100
	milliseconds.
	Drawback: there may be a slight waiting period between the clicking of the tab and the 
	appearance of the new content.
*/

Dashboard.prototype.loadContentInitialize = function () {
	currentDashboard = this;
	this.images = this.sourceFrame.getHTMLById('content').getElementsByTagName('img');
	if (!this.images.length) this.loadContent();
	this.checkNumberOfImages();
}

Dashboard.prototype.checkNumberOfImages = function()
{
	var numberOfImages = this.images.length;
	if (!this.images[0].readyState) // Mozilla
	{
		this.loadContent();
		return;
	}
	var imageCounter = 0;
	for (var i=0;i<numberOfImages;i++)
	{
		if (this.images[i].readyState == 'complete')
			imageCounter++;
	}
	if (imageCounter != numberOfImages)
		setTimeout('currentDashboard.checkNumberOfImages()',100)
	else
		this.loadContent();
	
}

/* Addition to dashboard to be able to switch between dashboards without reloading the content 
	 All elements that contain the content of a tab are given the id of the tab with the suffix
	 '_content'
   Addition by: M.P.Diepstra - Flexgem */
Dashboard.prototype.getTabContentElement = function() {
	var sTabID;
	var tabContent;
	if (this.selectedTab == null) {
		sTabID = this.tabId;
	} else {
		sTabID = this.tabs[this.selectedTab].id;
	}
	tabContent = document.getElementById(sTabID + "_content");
	if (!tabContent) {
		var tabContent = document.createElement('div');
		tabContent.className = "tabContent"
		tabContent.id = sTabID + "_content";	
		this.toolContainer.appendChild(tabContent);
	}
	return tabContent;
}
/* End ppkpatch */

/* MD: Changed the insert node to be one level below the tool container */
Dashboard.prototype.loadContent = function () {
	if (this.loadtext) {clearTimeout(this.loadtext);this.loadtext = null}
	var oInsert = this.getTabContentElement();
	oInsert.innerHTML = this.sourceFrame.getHTMLById('content').innerHTML;
	this.toolContainer.style.display = 'block';
	if (!this.home) this.createCloser();
	fill_db(this.tabId);	
}

/* MD: Changed the insert node to be one level below the tool container */
Dashboard.prototype.createCloser = function () {
	var c = document.createElement('div');
	c.id = 'db_close';
	c.onclick = createContextFunction(this, "close");
	this.getTabContentElement().appendChild(c);
}
Dashboard.prototype.getTabIndex = function (selected) {
	for (var i=0; i < this.tabs.length; i++) {
		if (this.tabs[i].id == selected) return i;
	}
	return 0;
}
/* MD: Added the hiding and showing of the tabContent of a deselected/selected tab */
Dashboard.prototype.selectTab = function (i) {
	if (this.selectedTab != null) {
		this.tabs[this.selectedTab].className = this.tabs[this.selectedTab].className.replace('selected', '');
		this.getTabContentElement().className = this.getTabContentElement().className.replace('selected', '');
	}
	this.tabs[i].className += 'selected';
	this.selectedTab = i;
	this.getTabContentElement().className += 'selected';
}
/* MD: Added deselecting the tabcontent element */
Dashboard.prototype.close = function () {
	if (this.selectedTab != null) {
		this.tabs[this.selectedTab].className = this.tabs[this.selectedTab].className.replace('selected', '');
		this.getTabContentElement().className = this.getTabContentElement().className.replace('selected', '');
	}
	this.selectedTab = null;
	this.toolContainer.style.display = 'none';
	if (!this.home) this.bottomImage.style.display = 'block';
}

function switchBox(action, element) {	
	
	if(action == 'show'){
		document.getElementById(element).style.display = 'block';
	}
	if(action == 'hide'){
		document.getElementById(element).style.display = 'none';
	}
	
}

function getAirportName(sAirport)
{
	var ret;
	
	ret = sAirport;
	
	// check for space bracket in the airport name
	var posBracket = sAirport.indexOf(" (");
	
	// if found, remove the end part to return only the city name 
	if (posBracket > 0)
	{
		ret = sAirport.substring(0, posBracket);
	}
	return ret;
}


function addURLParam(sURL, sParam, sValue)
{
	var strSep = "";
	
	strSep = "?";
	if (sValue != "")
	{
		if (sURL.indexOf("?") >= 0)
			strSep = "&";

		return (sURL + strSep + sParam + "=" + sValue);
	}
	else
		return (sURL);	

}

function doSubmitTP(appPageURL1, appPageURL2)
{
	var nrRooms, nrAdults, nrChildren, nrSeniors, pkgType;
	var i, n;
	var sBaseURL;
	
	// check to which URL we will submit
	nrRooms = document.frmTp.nrRooms.value;
	nrAdults = document.frmTp.nrAdults.value;
	nrSeniors = document.frmTp.nrSeniors.value;
	nrChildren = document.frmTp.nrChildren.value;

	// get the selected package type
	for (i=0, n=document.frmTp.arrangement.length; i<n; i++) 
	{
    		if (document.frmTp.arrangement[i].checked)
    		{
        		pkgType = document.frmTp.arrangement[i].value;
	        	break;
    		}
	}

	var origin = document.frmTp.origin.value;

	// the packages wizard needs a city name, so use this name without possible (airport name) in it
	var dest = getAirportName(document.frmTp.destination_free.value);
	var depDate = document.frmTp.departureDay.value + "/" + document.frmTp.departureMonthYear.value.substr(4) + "/" + document.frmTp.departureMonthYear.value.substring(0,4);
	var retDate = document.frmTp.returnDay.value + "/" + document.frmTp.returnMonthYear.value.substr(4) + "/" + document.frmTp.returnMonthYear.value.substring(0,4);

	if (dest == "Other")
	{
		sBaseURL = appPageURL2;
		sBaseURL = addURLParam(sBaseURL, "PackageType", pkgType);
		sBaseURL = addURLParam(sBaseURL, "FrAirport", origin);
		sBaseURL = addURLParam(sBaseURL, "DestID", dest);
		sBaseURL = addURLParam(sBaseURL, "FromDate", depDate);
		sBaseURL = addURLParam(sBaseURL, "ToDate", retDate);
		sBaseURL = addURLParam(sBaseURL, "NumAdult", nrAdults);
		sBaseURL = addURLParam(sBaseURL, "NumSenior", nrSeniors);
		sBaseURL = addURLParam(sBaseURL, "NumChild", nrChildren);
		sBaseURL = addURLParam(sBaseURL, "NumRoom", nrRooms);
	}
	else if (nrRooms >= 2 && nrAdults == 2 && nrChildren == 0 && nrSeniors == 0)
	{
		sBaseURL = appPageURL1;
		sBaseURL = addURLParam(sBaseURL, "PackageType", pkgType);
		sBaseURL = addURLParam(sBaseURL, "FrAirport", origin);
		sBaseURL = addURLParam(sBaseURL, "DestID", dest);
		sBaseURL = addURLParam(sBaseURL, "FromDate", depDate);
		sBaseURL = addURLParam(sBaseURL, "ToDate", retDate);
		sBaseURL = addURLParam(sBaseURL, "NumAdult", 2);
		sBaseURL = addURLParam(sBaseURL, "NumAdult1", 1);		
		sBaseURL = addURLParam(sBaseURL, "NumAdult2", 1);				
		sBaseURL = addURLParam(sBaseURL, "NumSenior", 0);
		sBaseURL = addURLParam(sBaseURL, "NumChild", 0);
		sBaseURL = addURLParam(sBaseURL, "NumRoom", 2);
	}
	else if (nrRooms <= 1 && nrAdults <= 3 && nrChildren == 0 && nrSeniors <= 3)
	{
		sBaseURL = appPageURL1;
		sBaseURL = addURLParam(sBaseURL, "PackageType", pkgType);
		sBaseURL = addURLParam(sBaseURL, "FrAirport", origin);
		sBaseURL = addURLParam(sBaseURL, "DestID", dest);
		sBaseURL = addURLParam(sBaseURL, "FromDate", depDate);
		sBaseURL = addURLParam(sBaseURL, "ToDate", retDate);
		sBaseURL = addURLParam(sBaseURL, "NumAdult", nrAdults);
		sBaseURL = addURLParam(sBaseURL, "NumSenior", nrSeniors);
		sBaseURL = addURLParam(sBaseURL, "NumChild", nrChildren);
		sBaseURL = addURLParam(sBaseURL, "NumRoom", nrRooms);
	}
	else
	{
		sBaseURL = appPageURL2;
		sBaseURL = addURLParam(sBaseURL, "PackageType", pkgType);
		sBaseURL = addURLParam(sBaseURL, "FrAirport", origin);
		sBaseURL = addURLParam(sBaseURL, "DestID", dest);
		sBaseURL = addURLParam(sBaseURL, "FromDate", depDate);
		sBaseURL = addURLParam(sBaseURL, "ToDate", retDate);
		sBaseURL = addURLParam(sBaseURL, "NumAdult", nrAdults);
		sBaseURL = addURLParam(sBaseURL, "NumSenior", nrSeniors);
		sBaseURL = addURLParam(sBaseURL, "NumChild", nrChildren);
		sBaseURL = addURLParam(sBaseURL, "NumRoom", nrRooms);
	}
	sBaseURL = addURLParam(sBaseURL, "rfrr", "-37510");

	document.frmTp.action = sBaseURL;
	document.frmTp.submit();
}

function doSubmitReservation(sUrl)
{
	document.res_book.action = sUrl;
	document.res_book.submit();
}

//
// DO NOT REMOVE THIS METHOD STUB PREVENTS IE6 CRASH AND FF EXCEPTION!!!
//
function init_tab() {}
// Content: js dashboard data
//20080122 HW: FM22978 hotels & cars dashboard changed
//20090218 SC:  FM 27269 Change ICI dashboard 

var months = [			
	['Jan','January'],
	['Feb','February'],
	['Mär','March'],
	['Apr','April'],
	['May','Mai'],
	['Jun','June'],
	['Jul','July'],
	['Aug','August'],
	['Sep','September'],
	['Okt','October'],
	['Nov','November'],
	['Dez','December']];

function fillDataSelector(id, fullMonthNames, addDays) {
	var now = new Date();
	var start = new Date(now.getTime() + addDays * 3600 * 24 * 1000);
	var year = now.getFullYear();
	var month = now.getMonth();
	var selector = document.getElementById(id);
	for (c = 0; c < 12; c++) {
		var value = String(year) + String(month<9 ? "0" : "") + String(month + 1);
		var name = months[month][fullMonthNames ? 1:0] + " " + year;
		selector[c] = new Option(name, value);
		if (++month >= 12) {
			month = 0;
			year++;
		}
	}
	selector.selectedIndex = start.getYear() > now.getYear() ? 1 : (start.getMonth() > now.getMonth() ? 1 : 0);
}

function fillDaySelector(idDay, addDays) {
	var daySelector = document.getElementById(idDay);
	var index = 0;
	for (var c = 1; c <= 31; c++)
	{
		var value = String(c<=9 ? "0" : "") + String(c);
		daySelector.options[index++] = new Option(c, value);
	}	
}

function setDay(idDay, addDays) {
	var start = new Date(new Date().getTime() + addDays * 3600 * 24 * 1000);
	document.getElementById(idDay).selectedIndex = start.getDate() - 1;
}

function checkDepDate(dep_date, dep_month, ret_date, ret_month) {
	var dds = document.getElementById(dep_date);
	var rds = document.getElementById(ret_date);
	var dms = document.getElementById(dep_month);
	var rms = document.getElementById(ret_month);
	if (dms.selectedIndex > rms.selectedIndex ||  (dms.selectedIndex == rms.selectedIndex && dds.selectedIndex > rds.selectedIndex))
	{
		rms.selectedIndex = dms.selectedIndex;
		rds.selectedIndex = dds.selectedIndex;
	}	
}

function fillFromXml(file, id, className, addEmpty) {
	var xmlhttp = getXmlHttp();
	xmlhttp.open("GET", file ,false);
	xmlhttp.send(null);
	var dataDocument = xmlhttp.responseXML;
	var entries = dataDocument.getElementsByTagName('li');
	var selector = document.getElementById(id);
                if(selector != null) {
	var index = 0;
	if (addEmpty) {
		var option = new Option("", "");
		selector.options[index++] = option;
	}
	for (var i = 0; i < entries.length; i++)
	{
		if (entries[i].parentNode.attributes.length > 0 && entries[i].parentNode.attributes[0].nodeValue != className)
			continue;
		
		var name = entries[i].firstChild.data;
		var value = entries[i].attributes.length > 0 ? entries[i].attributes[0].nodeValue : name;
		var isDefault = entries[i].getAttribute("default") != null;
		if (value == "KL")
			isDefault = true;
		var option = new Option(name, value);
		if (isDefault) {
			option.selected = true;
			selector.options[index] = option;
			selector.selectedIndex = index++;
		} else {
			selector.options[index++] = option;		
		}
                       }
	}
}

function getBookingDelay(country) {
	var isIe = /MSIE [56789]/.test(navigator.userAgent) && (navigator.platform == "Win32");	
	try{
		var intReturn;
		var xmlhttp = getXmlHttp();
		xmlhttp.open("GET", "failed to retrieve 'Application File URL - Collection' of application 'EBT'", false);
		xmlhttp.send(null);

		//As IE has different XPath parsing support then mozilla based browsers, branch off IE here
		if (isIe && !document.implementation.hasFeature("XPath", "3.0")) {
			intReturn = getIEXmlAttrib(xmlhttp.responseXML, "//pointofsale[@code='" + country.toUpperCase() + "']", "defaultdeparturedate");
		} else {
			intReturn = getOtherXmlAttrib(xmlhttp.responseXML, "//pointofsale[@code='" + country.toUpperCase() + "']", "defaultdeparturedate");
		}
	} catch(e) {
	}

	if (!intReturn) {
		intReturn = 7;
	}
	return intReturn;
}

function getIEXmlAttrib(xmldoc, strNode, strAttrib) {
	return parseInt(xmldoc.selectSingleNode(strNode).getAttribute(strAttrib), 10);
}

function getOtherXmlAttrib(xmldoc, strNode, strAttrib) {
	return xmldoc.evaluate(strNode + "/@" + strAttrib, xmldoc, null, XPathResult.NUMBER_TYPE, null).numberValue;
}

function fill_ebt() {
	if (document.getElementById("klm-ebt") != null)
	{
		// ebt7
		var ebtPage = new EBTPage('klm-ebt');
		// add this line to determine POS.
		ebtPage.pos = 'DE';
		var fs = new DBFlightSearch('klm-ebt', '/passage/ebtui/inputsearchcriteria.ajax?posCode=DE&languageCode=de', ebtPage, '/passage/ebtui/cabinclass.ajax?posCode=DE&languageCode=de');
	}
	else
	{
		// ebt6
		var intBookingDelay = getBookingDelay('de');
		fillDataSelector('dep_month', 0, intBookingDelay);
		fillDataSelector('ret_month', 0, intBookingDelay + 7);
		fillDataSelector('calendarmonth', 1, 0);

		fillDaySelector('dep_day', intBookingDelay);
		setDay('dep_day', intBookingDelay);
		fillDaySelector('ret_day', intBookingDelay + 7);
		setDay('ret_day', intBookingDelay + 7);

		new TravelAgent();

		var bbmember = getParameterTD("bb");
		if (bbmember) {
			document.book2.corporateSupport.checked = true;
		}	
	}
}

function fill_ici() {
	fillFromXml("/travel/xfd/ici/departures/de/departures.xml", "flightnumb", "carriers", false);
}

function fill_ici_jffp() {
	var dateSelection = document.getElementById("ffSearchDay");
	var today = new Date();
	var tomorrow = new Date(today.getTime() + 24 * 3600000);
	var date0 = today.getDate() + " " + months[today.getMonth()][1];
	var date1 = tomorrow.getDate() + " " + months[tomorrow.getMonth()][1];
	dateSelection.options[0] = new Option(date0, 0);
	dateSelection.options[1] = new Option(date1, 1);
}

function fill_hc() {
	fillDataSelector('dep_month_other', 0, 0);
	fillDataSelector('ret_month_other', 0, 1);
	fillDataSelector('calendarmonth_other', 1, 0);
	fillDaySelector('dep_day_other', 0);
	setDay('dep_day_other', 0);
	fillDaySelector('ret_day_other', 1);
	setDay('ret_day_other', 1);
}

function fill_tp() {
	fillDataSelector('dep_month_other', 0, 7);
	fillDataSelector('ret_month_other', 0, 14);
	fillDataSelector('calendarmonth_other', 1, 0);
	fillDaySelector('dep_day_other', 7);
	setDay('dep_day_other', 7);
	fillDaySelector('ret_day_other', 14);
	setDay('ret_day_other', 14);
	new TPAgent();
}

/* TPAgent */
TPAgent = function() {
	var aRE = /^a$/i
	var travelagent = this;
	var traveldata = new TravelData();
	var origins = new Origins(document.getElementById("from_other"));
	
	var fillAirport = function(airport) {
		var from = document.getElementById("from_other");
		var fromClass = origins.classes[from[from.selectedIndex].value];
		travelagent.destination.value = airport;
		var xmlelem = traveldata.getAirport(airport);
		travelagent.dest_airportcode.value = xmlelem.getAttribute("code");
		travelagent.dest_classcode.value = xmlelem.getAttribute("class");
		// set classes
		travelagent.setClasses(fromClass, travelagent.dest_classcode.value);
	}
}

function fill_db(db_id) {
	switch(db_id)
	{
		case 'db_ebt':  // ebt7 code!
		case 'db_ebr':
			fill_ebt();
			break;
		case 'db_tt':
		case 'db_tt2':
			var interval = null;
			function initPageObject() 
			{
				try
				{
					Page.Init();
					if (interval != null)
						clearInterval(interval);
				}
				catch (e)
				{			
					if (interval == null)
					{
						interval = setInterval(initPageObject, 100);
					}
				}
			}
			initPageObject();
			break;
		case 'db_ici':
			fill_ici();
			doPrefill();
			break;
		case 'db_ici_jffp':
			fill_ici_jffp();
			break;
		case 'db_tp':
			fill_tp();
			break;
		case 'db_hc':
			fill_hc();
			break;
		case 'db_anc':
			new AncillarySearch();
			break;
	}
}

function getXmlHttp() {
	var xmlhttp;
	if (window.ActiveXObject) {
		try {
			xmlhttp=new ActiveXObject("Msxml2.XMLHTTP")
		} catch (e) {
			try {
				xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
			} catch (E) {
				xmlhttp=false
			}
		}
	}
	
	if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
		try {
			xmlhttp = new XMLHttpRequest();
		} catch (e) {
			xmlhttp=false;
		}
	}
	// In case xmlrpc is not supported we will fallback to the old method.
	if(!xmlhttp) {
		alert("incompatible browser version");
	}
	return xmlhttp;
}

function Transformer(xmlDocument, xslPath) {
	if (window.ActiveXObject) {
		return IETransformer(xmlDocument, xslPath);
	} else {
		return FFTransformer(xmlDocument, xslPath);
	}
}

function FFTransformer(xmlDocument, xslPath) {
	var xmlhttp = getXmlHttp();
	xmlhttp.open("GET", xslPath ,false);
	xmlhttp.send(null);
	var xsltProc = new XSLTProcessor();
	xsltProc.importStylesheet(xmlhttp.responseXML);
	var resultDoc =	xsltProc.transformToDocument(xmlDocument);
	var xmlSerial = new	XMLSerializer();
	return xmlSerial.serializeToString(resultDoc);
}

function IETransformer(xmlDocument, xslPath) {
	var xmlhttp = getXmlHttp();
	xmlhttp.open("GET", xslPath ,false);
	xmlhttp.send(null);
	return xmlDocument.transformNode(xmlhttp.responseXML);
}

function doPrefill() {
	var queryStr = unescape(window.location.search);
	var args;
	var tabToSelect = null;
	if (queryStr != "") {
		queryStr = queryStr.substr(1, queryStr.length);
		var pairs = queryStr.split("&"); //Separate name value pairs
		for (var i = 0; i < pairs.length; i++) {
			args = pairs[i].split("=");

			//ICI param conversion
			if (args[0] == 'eticketAirlineCode') {args[0]="flightnumb";}
			if (args[0] == 'eticketFlightNumber') {args[0]="flightnumb2";}

			var element = document.getElementById(args[0]);
			if (element) {
				try {
					element.value = args[1];
				} catch (e) {}
			}
		}
	}
}
// Content: js kana
function getMfinfoPage() {
  	page = window.location.pathname;
  	index = page.indexOf('/de_de/');
  	if (index != -1) {
  		page = page.substr(index);	
  	}
  	return 'klmcom' + page;
}
function iqWindow(url) {
  var w=740;
  var h=527;
  var X=(screen.width-w)/2;
  var Y=(screen.height-h)/2;
  if(X<=0) {
    X=0;
    Y=0;
  }
  url = 'http://faq.klm.com/SRVS/CGI-BIN/WEBCGI.EXE?New,Kb=e-service_de,Company={D392491E-D19F-494D-AA01-0D1A08B839C6},VarSet=C:de,VarSet=L:de,' + url;
  newwindow=window.open(url,'sc','top='+Y+',left='+X+',width='+w+',height='+h);
  if (!newwindow.opener) newwindow.opener = self;
  var kana_websensor = document.getElementById('kana_websensor');
  if (kana_websensor) {
  	kana_websensor.src = '/generic/man/static_img/1x1.gif?mfinfo.page='+getMfinfoPage()+'&mfinfo.country=de&mfinfo.language=de&mfinfo.application=kana&mfinfo.kana_event=Click%20Ask%20a%20question&random='+Math.random();
  }
}

/* Qgo js */
Animator = function (startValue, endValue, f, t, r) {
	this.step  = 5;		//The step by which timer counts from 0 to 100
	this.rate  = 3;		//The rate in ms at which steps are taken
	this.power = 2;		//The steepness of the animation curve
	this.type  = this.EASEINOUT;	//The type of easing
	this.duration = 0;		//The total duration
	this.min = startValue;
	this.max = endValue;
	if (this.min >90)
			{	this.isReversing = true;
			}else{	
				this.isReversing = false;
	}
	this.animateFunction = f;
	this.terminateFunction = t;
	//this.reversalFunction = r;
	//this.precalc = new Array(100);
	//for (var i=0; i <= 100; i++) this.precalc[i] = this.calculate(i);
}
Animator.prototype.NONE      = 0;
Animator.prototype.EASEIN    = 1;
Animator.prototype.EASEOUT   = 2;
Animator.prototype.EASEINOUT = 3;
//Animator.prototype.setDuration = function (duration) {
//	this.duration = duration;
//}
//Animator.prototype.setStep = function (step) {
//	this.step = step;
//}
//Animator.prototype.setRate = function (rate) {
//	this.rate = rate;
//}
//Animator.prototype.setPower = function (power) {
//	this.power = power;
//	for (var i=0; i <= 100; i++) this.precalc[i] = this.calculate(i);
//}
//Animator.prototype.setType = function (type) {
//	this.type = type;
//	for (var i=0; i <= 100; i++) this.precalc[i] = this.calculate(i);
//}
Animator.prototype.setAnimateFunction = function (f) {
	this.animateFunction = f;
}
Animator.prototype.start = function () {
	if (this.interval) return;
	this.time = this.min;
	//this.startTime = new Date();
	//this.isReversing = false;
	document.getElementById('qgo').style.zIndex = 100;
	this.interval = setInterval(this.method(this.animate), this.rate);
}
Animator.prototype.reverse = function () {
	this.isReversing = (this.isReversing) ? false : true;
}
//Animator.prototype.stop = Animator.prototype.pause = function () {
//	if (this.interval) clearInterval(this.interval);
//	this.interval = null;
//}
//Animator.prototype.resume = function () {
//	this.interval = setInterval(this.method(this.animate), this.rate);
//}
//Animator.prototype.isAnimating = function () {
//	return Boolean(this.interval);
//}
Animator.prototype.animate = function () {
	var finished = false;
//	if (this.duration) {
//		var now = new Date() - this.startTime;
//		if (now < this.duration) {
//			this.animateFunction(this.calculate(now/this.duration));
//		} else finished = true;
//	} else {
		if (this.time >= 0 && this.time <= 100) {
			this.animateFunction(this.time);
			this.time = (this.isReversing) ? this.time - this.step : this.time + this.step;
		} else finished = true;
//	}
	if (finished) {
		this.animateFunction(this.max);
		document.getElementById('qgo').style.zIndex = this.max;
		clearInterval(this.interval);
		this.interval = null;
		this.terminateFunction();
		//if (!this.isReversing && this.terminateFunction) this.terminateFunction();
		//if (this.isReversing && this.reversalFunction) this.reversalFunction();
	}
}
Animator.prototype.calculate = function (t) {
	if (!this.duration) t = t/100;
	var factor;
	switch (this.type) {
		case this.NONE      : factor = this.easeNone(t);break;
		case this.EASEIN    : factor = this.easeIn(t);break;
		case this.EASEOUT   : factor = this.easeOut(t);break;
		case this.EASEINOUT : factor = this.easeInOut(t);break;
	}
	return parseInt(this.min + factor*(this.max-this.min));
}
Animator.prototype.easeNone = function (t) {
	return t;
}
Animator.prototype.easeIn = function (t) {
	return Math.pow(t,this.power);
}
Animator.prototype.easeOut = function (t) {
	return 1-this.easeIn(1-t);
}
Animator.prototype.easeInOut = function (t) {
	if (t < 0.5) return this.easeIn(t*2)/2;
	return 0.5+this.easeOut((t-0.5)*2)/2;
}
Animator.prototype.method = function (method) {
	var context = this;
	return function () {
		method.apply(context, arguments);
	}
}
var strQgoPopup="0"; 
var firsttime=true;
var catqgoname = "";
var catnameqgo = "";
var genTabName = "";
function initSupportCenterApp4Col() {
	strQgoPopup = "1";
	initSupportCenter();
}
function initSupportCenter() {
	hook = document.getElementById('qgo');
	if (hook) {
		window.supportC = new SupportCenter(hook, 382, 54, 870, 400);
		//document.getElementById('supportframe').src = "";
		updateSC();
		addEventHandler(window, "resize", updateSC);
		if ( window.location.search.indexOf("?") != -1){
			var questqgo = getParameterTD("qgo-question"); 
			if (questqgo != ""){	
					//deeplink qgo-question
					document.getElementById('mySearch').value = questqgo;
					window.supportC.searchTerm = questqgo;
					QGOSetcontent('zoektab')
			}else{
					catnameqgo = getParameterTD("qgo-catname");
					catnameqgo = unescape(catnameqgo.valueOf());
					catnameqgo = catnameqgo.replace(/ /gi, "+");	
					catnumqgo = getParameterTD("qgo-catnumber");
					if (catnumqgo != ""){
						if (catnameqgo != ""){
							QGOSetcontent('categorie2');
						}else{
							QGOSetcontent('categorie');
						}					
					}else{
						if (catnameqgo != ""){	      			
							QGOSetcontent('categorie');
						}					
					}
			}
		}
	}
}
function updateSC () {
	if (!window.supportC) return;
	if (document.body.offsetWidth < 988) {
		window.supportC.resizeWindow(187, 54, 673, 400);
	} else {
		window.supportC.resizeWindow(382, 54, 870, 400);
	}
}
 
function QGOSearch_onKeyup(e)
{

		if (!e) var e = window.event;
		var key = e.charCode ? e.charCode : e.keyCode;
		if (key == 13){
				var targ;
				if (e.target) targ = e.target;
				else if (e.srcElement) targ = e.srcElement;
				if (targ.nodeType == 3) // defeat Safari bug
						targ = targ.parentNode;

    		window.supportC.searchTerm = targ.value;
    		QGOSetcontent('zoektab');
    }
		return false;
}

function QGOSearch_onFocus(e)
{
	var targ;
	if (!e) var e = window.event;
	if (e.target) targ = e.target;
	else if (e.srcElement) targ = e.srcElement;
	if (targ.nodeType == 3) // defeat Safari bug
		targ = targ.parentNode;

	targ.value = '';
}

function QGOsearchLink_onClick(e){
	var targ;
	if (!e) var e = window.event;
	if (e.target) targ = e.target;
	else if (e.srcElement) targ = e.srcElement;
	if (targ.nodeType == 3) // defeat Safari bug
		targ = targ.parentNode;
	    	
	window.supportC.searchTerm = document.getElementById('mySearch').value;
	QGOSetcontent('zoektab');
}

function QGOSetcontent(tabName){
	if (window.supportC.opened) {
		if (window.supportC.searchTerm=='' || window.supportC.searchTerm=='Stellen Sie hier Ihre Frage (in mehreren Worten)') {
			if (document.getElementById('zoektab').className == 'actief'){
				window.supportC.searchTerm = '';
			}else{
				setTabActive('zoektab2');
			}
		}else{	
			setTabActive(tabName);
		}
		document.getElementById('qgo_websensor').src = '/generic/man/static_img/1x1.gif?mfinfo.page='+getMfinfoPage()+'&mfinfo.country=de&mfinfo.language=de&mfinfo.application=qgo&mfinfo.qgo_event=Click%20Search&mfinfo.qgo_searchstring='+escape(window.supportC.searchTerm);
		document.getElementById('mySearch').value = 'Stellen Sie hier Ihre Frage (in mehreren Worten)';
		document.getElementById('supportZoekLink').focus();
	}else{
		genTabName = tabName;
		window.supportC.opened = true;
		document.getElementById('supportframe').style.visibility = 'visible';
		document.getElementById('qgo').className = 'active';
		document.getElementById('qgocloseLink').style.display= 'block';
		document.getElementById('supportcenter').className = 'supportcenter-active supportcenter-open';
		document.getElementById('qgo_websensor').src = '/generic/man/static_img/1x1.gif?mfinfo.page='+getMfinfoPage()+'&mfinfo.country=de&mfinfo.language=de&mfinfo.application=qgo&mfinfo.qgo_event=Click%20Search&mfinfo.qgo_searchstring='+escape(window.supportC.searchTerm);
		window.supportC.opener.start();
	}	
}

function QGOanchor_onClick(e)
{
	var targ;
	if (!e) var e = window.event;
	if (e.target) targ = e.target;
	else if (e.srcElement) targ = e.srcElement;
	if (targ.nodeType == 3) // defeat Safari bug
		targ = targ.parentNode;

	document.getElementById('qgocloseLink').style.display= 'none';
	window.supportC.close();
	window.supportC.opened = false;
	document.getElementById('mySearch').value = 'Stellen Sie hier Ihre Frage (in mehreren Worten)';
}

function SupportCenter(hook, w, h, wo, ho) {

	this.hook = hook;
	this.searchTerm = '';
	this.qgo = document.getElementById('qgo');
	this.container = this.hook.appendChild(document.createElement('div'));
	this.container.id = 'supportcenter';

	// ----new start	
	//'<form method="get" action="#" target="supportframe" onsubmit="return false">\
	var qgoform = document.createElement("DIV");
	qgoform.id = "qgoform";

	//<fieldset>
	var qgofieldset = document.createElement("DIV");
	qgofieldset.className = "qgofieldset";

			//<a class="sc-close" href="#">&nbsp;</a>\
			var anchor = document.createElement("A");
			anchor.className = "sc-close";
			anchor.id = "qgocloseLink";
			anchor.href = "#";
			anchor.innerHTML = "&nbsp;";
			addEventHandler(anchor, "click", QGOanchor_onClick);


			//<div id="zoektab" class="actief" onclick="setTabActive(\'zoektab\');">\
			var zoektab = document.createElement("DIV");
			zoektab.className = "actief";
			zoektab.setAttribute("id","zoektab");
			
							//<input id="mySearch" type="text" class="text" value="Stellen Sie hier Ihre Frage (in mehreren Worten)" name="q" maxlength="128" />\
							var mySearch = document.createElement("INPUT");
							mySearch.setAttribute("type","text");
							mySearch.id ="mySearch";
							mySearch.className = "text";
							mySearch.value ="Stellen Sie hier Ihre Frage (in mehreren Worten)";
							mySearch.name = "q";
							mySearch.setAttribute("maxlength","128");
							addEventHandler(mySearch, "focus", QGOSearch_onFocus);
							addEventHandler(mySearch, "keyup", QGOSearch_onKeyup);
							
							//<a href="javascript:supportCenter.open(\'https://support.klm.com/\',\'zoektab\',\'\');void(0);" class="qgo-button" id="supportZoekLink">
							var supportZoekLink = document.createElement("A");
							supportZoekLink.className = "qgo-button";
							supportZoekLink.setAttribute("id", "supportZoekLink");
							//supportZoekLink.setAttribute("target","supportframe");
							supportZoekLink.setAttribute("href", "#");
							addEventHandler(supportZoekLink, "click", QGOsearchLink_onClick);
									//  <span>>Fragen</span>
									var questiontext = document.createElement("SPAN");
									questiontext.innerHTML = "Fragen";
									supportZoekLink.appendChild(questiontext);			
							// </a>

																			
							//<input type="hidden" name="popup" value="'+strQgoPopup+'" />\
							var qgoPopup = document.createElement("INPUT");
							qgoPopup.setAttribute("type","hidden");
							qgoPopup.setAttribute("name","popup");
							qgoPopup.setAttribute("value","'+strQgoPopup+'");
							//<input type="hidden" name="co" value="de" />
							var qgoCo = document.createElement("INPUT");
							qgoCo.setAttribute("type","hidden");
							qgoCo.setAttribute("name","co");
							qgoCo.setAttribute("value","de");
							//<input type="hidden" name="la" value="nl" />\
							var qgoLa = document.createElement("INPUT");
							qgoLa.setAttribute("type","hidden");
							qgoLa.setAttribute("name","la");
							qgoLa.setAttribute("value","nl");
							
							zoektab.appendChild(mySearch);
							zoektab.appendChild(supportZoekLink);
							zoektab.appendChild(qgoPopup);
							zoektab.appendChild(qgoCo);
							zoektab.appendChild(qgoLa);

			//</div>\	
			qgofieldset.appendChild(zoektab);					
			
			//<div id="tabcat">
			var qgotabcat = document.createElement("DIV");
			qgotabcat.setAttribute("id","tabcat");
					
					//<a href="https://support.klm.com/faq_cat.php?co=de&la=nl&popup='+strQgoPopup+'" target="supportframe" onclick="setTabActive(\'categorie\');bQgoQuestionSubmitted=false;">
					//Overview FAQ categories
					var qgoCategorie = document.createElement("A");
					qgoCategorie.setAttribute("href", "#");		
					qgoCategorie.innerHTML = "Übersicht in Kategorien der häufigsten Fragen";
					
					//</a>
					qgotabcat.appendChild(qgoCategorie);
			//</div>
			qgofieldset.appendChild(qgotabcat);
			
				
			//<div id="tabfaq">
			var qgotabfaq = document.createElement("DIV");
			qgotabfaq.id = "tabfaq";
					
					//<a href="https://support.klm.com/faq.php?co=de&la=nl&popup=+strQgoPopup+" target="supportframe" onclick="setTabActive(\'top10\');bQgoQuestionSubmitted=false;">
					//  Top 10 FAQ
					var qgoTop10 = document.createElement("A");
					qgoTop10.href ="#";			
					qgoTop10.innerHTML = "Die Top 10 der häufigsten Fragen";
					
					//</a>
					qgotabfaq.appendChild(qgoTop10);

			//</div>	
			qgofieldset.appendChild(qgotabfaq);
			
			//<div id="endtab"></div>\
			var qgotabend = document.createElement("DIV");
			qgotabend.setAttribute("id","endtab");
			qgofieldset.appendChild(qgotabend);
			qgofieldset.appendChild(anchor);
						
			//<img src="" id="qgo_websensor" alt="qgo_websensor" title="qgo_websensor" style="visibility:hidden;" />\
			var qgoWebSensor = document.createElement("IMG");
			qgoWebSensor.id = "qgo_websensor";
			qgoWebSensor.setAttribute("alt","qgo_websensor");
			qgoWebSensor.title = "qgo_websensor";
			qgoWebSensor.style.visibility ="hidden";
			qgoWebSensor.src = "/generic/man/static_img/1x1.gif";
			qgofieldset.appendChild(qgoWebSensor);									
		//</fieldset>\
		qgoform.appendChild(qgofieldset);			
		
		//</form>\
		this.container.appendChild(qgoform);
		
		//<iframe name="supportframe" id="supportframe" src="/travel/de_de/static/empty.html" frameborder="0"></iframe>';
		var qgoSupportframe = document.createElement("IFRAME");
		qgoSupportframe.id = "supportframe";
		qgoSupportframe.name = "supportframe";
		qgoSupportframe.src ="/travel/de_de/static/empty.html";
		qgoSupportframe.setAttribute("frameBorder","0");
		this.container.appendChild(qgoSupportframe);		
		
		addEventHandler(qgoTop10, "click" , function(e) { setTabActive('top10'); });		
		addEventHandler(qgoCategorie, "click" , function(e) { setTabActive('categorie'); });	
		
		
		this.iframe = document.getElementById("supportframe");
		//this.form = this.container.getElementsByTagName('form')[0];
		this.opened = false;
		this.closeLink = document.getElementById("qgocloseLink");

		//set the animator
		this.opener = new Animator(0, 100, this.scope(this.resize), this.scope(this.showStart));
		//this.opener.setDuration(700);
		this.closer = new Animator(100, 0, this.scope(this.resize), this.scope(this.showEnd));
		//this.closer.setDuration(700);
		
}

SupportCenter.prototype = {
	isIE6:/msie 6/i.test(navigator.userAgent),
	isSafari:/safari/i.test(navigator.userAgent),

	close:function() {
		if(this.opened) {
			document.getElementById('qgo_websensor').src = '/generic/man/static_img/1x1.gif?mfinfo.page='+getMfinfoPage()+'&mfinfo.country=de&mfinfo.language=de&mfinfo.application=qgo&mfinfo.qgo_event=Click%20Close';
			document.getElementById('qgocloseLink').style.display= 'none';
			document.getElementById('supportframe').src='/travel/de_de/static/empty.html';
			this.iframe.style.width =  '';
			this.iframe.style.height = '';
			firsttime = true;
			this.closer.start();
			this.opened = false;
		}
	},
	
	resizeWindow:function(rw, rh, rwo, rho) {		
		this.width = rw;
		this.height = rh;
		this.openWidth = rwo - rw;
		this.openHeight = rho - rh;
		this.qgo.style.width = '';
		this.container.style.width = '';
		this.iframe.style.width = '';
		this.iframe.style.height = '';
		this.close();
	},

	resize:function(i) {
		var resizewidth = Math.round(this.width + (i/100 * this.openWidth));
		var resizeheight = Math.round(this.height + (i/100 * this.openHeight));
		var resizecss = this.container.style;
		resizecss.width = resizewidth + 'px';
		resizecss.height = resizeheight + 'px';	
	},

	showStart:function() {
				var sc = document.getElementById('supportcenter');
				var maxWidth = parseInt(sc.style.width, 10) - 1;
				var maxHeight = parseInt(sc.style.height, 10) - 39;
				document.getElementById('supportframe').style.width = maxWidth + 'px';
				document.getElementById('supportframe').style.height = maxHeight + 'px';
				document.getElementById('supportframe').style.visibility = 'visible';
				document.getElementById('supportframe').style.visibility = 'visible';

				if (genTabName=='zoektab'){
					if (window.supportC.searchTerm=='' ||window.supportC.searchTerm=='Stellen Sie hier Ihre Frage (in mehreren Worten)'){
						if (firsttime){
								firsttime = false;
								setTabActive('zoektab2');
						}
					}else{
						setTabActive(genTabName);	
					}
				}else{	
					setTabActive(genTabName);
				}
				document.getElementById('mySearch').value = 'Stellen Sie hier Ihre Frage (in mehreren Worten)';
				document.getElementById('supportZoekLink').focus();
	},
	showEnd:function() {
			document.getElementById('supportframe').style.visibility = 'hidden';
			document.getElementById('supportcenter').className = '';
			document.getElementById('qgo').className = '';
			document.getElementById('supportcenter').zIndex = 0;
			this.container.className = '';	
			document.getElementById('supportframe').style.width = '';
			document.getElementById('supportframe').style.height = '';	
			document.getElementById('supportcenter').style.width = '';
			document.getElementById('supportcenter').style.height = '';	
	},	

	scope:function(method) {
		var scope = this;
		return function() {
			return method.apply(scope, arguments);
		}
	}
}

//set active tab for supportcenter
function setTabActive(activeTab){
		document.getElementById('zoektab').className = '';
		document.getElementById('tabcat').className = '';
		document.getElementById('tabfaq').className = '';
		if(activeTab=='zoektab') {
			document.getElementById('zoektab').className = 'actief';
			document.getElementById('supportframe').src='https://support.klm.com/retrieve.php?co=de&la=de&popup='+strQgoPopup+'&q='+ window.supportC.searchTerm;

		}
		else if(activeTab=='zoektab2') {
			document.getElementById('zoektab').className = 'actief';
			document.getElementById('supportframe').src='https://support.klm.com/start.php?q=empty&co=de&la=de';
		}
		else if(activeTab=='categorie') {
			document.getElementById('tabcat').className = 'actief';
			document.getElementById('supportframe').src = 'https://support.klm.com/faq_cat.php?co=de&la=de&popup='+strQgoPopup;
		}
		else if(activeTab=='categorie2') {
			document.getElementById('tabcat').className = 'actief';
			document.getElementById('supportframe').src = 'https://support.klm.com/faq_catnr.php?cat='+catnumqgo+'&name='+catnameqgo+'&popup='+strQgoPopup;
		}
		else if(activeTab=='top10') {
			document.getElementById('tabfaq').className = 'actief';
			document.getElementById('supportframe').src ='https://support.klm.com/faq.php?co=de&la=de&popup='+strQgoPopup;
		}
		else {
			document.getElementById('zoektab').className = 'actief';
		}
}

//functions setup for using supportcenter in a page
function focusvalue(dit) {
	if(dit.value == 'Stellen Sie hier Ihre Frage (in mehreren Worten)') {
		dit.value = '';
	}
}
function blurvalue(dit){
	if(dit.value == '') {
		dit.value = 'Stellen Sie hier Ihre Frage (in mehreren Worten)';}
}
function openSupportCenter(dit){
		window.supportC.searchTerm = '';
		QGOSetcontent(dit);
}

//functions setup for using supportcenter in a page
//send query to supportcenter
function sendToSupportcenter() {
	sourceInput = document.getElementById('sendtosupportcenter');
	targetInput = document.getElementById('mySearch');
	targetInput.value = sourceInput.value;
	window.supportC.searchTerm = targetInput.value;
	QGOSetcontent('zoektab');
	document.getElementById('sendtosupportcenter').value= 'Stellen Sie hier Ihre Frage (in mehreren Worten)';

}
// Content: js myKLM
// JavaScript Document
// Start myKLM
var frame = null;

function triggerLoader(tD, requestId) {
	
	this.sT = null;
	this.pT = null;
	this.requestId = requestId;
	
	this.init = function (tD) {
		if (tD.className.indexOf('MYKLM') == -1) return false;
		var cD = tD.getElementsByTagName('div');
		for (var i=0;i<cD.length;i++) {
			if (cD[i].className.indexOf("t_s") != -1) this.sT = cD[i];
			if (cD[i].className.indexOf("t_p") != -1) this.pT = cD[i];

		}
		return true;
	}
	
	this.isTargeted = function () {
		return (getCookie("fbNumber") != null);	
	}
	
	this.showS = function() {
		this.sT.className = this.sT.className.replace(/t_s/gi, "t_s_display");
	}
	
	this.loadPT = function () {
		this.pT.className = this.pT.className.replace(/t_p/gi, "t_p_display");
		frame = document.createElement("iframe");
		var newFrame = frame;
		newFrame.className = "myklmframe";
		var link = this.pT.getElementsByTagName("a")[0];
		link.href = link.href + "&fbNumber=" + getCookie("fbNumber");
		link.href = link.href + "&requestId=" + this.requestId;
		link.href = link.href.replace("http:", document.location.protocol);
		newFrame.scrolling = "no";
		newFrame.frameBorder=0;
		newFrame.src = link.href;
		this.pT.appendChild(newFrame);
		this.pT.removeChild(link);
	}
	
	if (this.init(tD)) {
		if (this.isTargeted()) {
			this.loadPT();
		} else {
			this.showS();	
		}
	}
}

function setPTs() {
	var requestId = Math.random();
	if (document.getElementById('last')) {
		try {
			clearInterval(tt);
		} catch (e) {
		}
		var entries = document.getElementsByTagName('div');
		for (var i = 0; i < entries.length; i++) {
			if (entries[i].className.indexOf('MYKLM') != -1) {
				var loader = new triggerLoader(entries[i], requestId);
			}
		}

	} else {
		return false;
	}
}

// As soon as the javascript load's we want to initialize the triggers.
var tt = setInterval('setPTs()', 50);

// End myKLM
// Content: js EBT dashboard
// 20080122 HW: FM22978 hotels & cars dashboard changed
// 20080325 AB: FM-23397- Add posibility for adding websensortag
// 20090729 Heiko, removed pixel_trigger_moniforce

function addEvent(elm, evt, fn) {
	if (elm.addEventListener) {
		elm.addEventListener(evt, fn, false);
		return true;
	}
	else if (elm.attachEvent) {
		var r = elm.attachEvent('on'+evt, fn);
		return r;
	}
	else {
		elm['on'+evt] = fn;
	}
}

function debug(msg) {
	if (!document.all) setTimeout(function() { throw new Error("[debug] " + msg); }, 0);
}

function getXmlHttp() {
	var xmlhttp;
	if (window.XMLHttpRequest) {
	  xmlhttp = new XMLHttpRequest();
	  if (xmlhttp.overrideMimeType) {xmlhttp.overrideMimeType('text/xml')};
	} else if (window.ActiveXObject) {
	  xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	} else {
	  alert('Perhaps your browser does not support xmlhttprequests?');
	}
	return xmlhttp;
}
	
/* TravelAgent */
TravelAgent = function() {

	var aRE = /^a$/i

	var travelagent = this;
	var traveldata = new TravelData();
	var origins = new Origins(document.getElementById("from"));
	
	var fillAirport = function(airport) {
		var from = document.getElementById("from");
		var fromClass = origins.classes[from[from.selectedIndex].value];
		travelagent.destination.value = airport;
		var xmlelem = traveldata.getAirport(airport);
		travelagent.dest_airportcode.value = xmlelem.getAttribute("code");
		travelagent.dest_classcode.value = xmlelem.getAttribute("class");
		// set classes
		travelagent.setClasses(fromClass, travelagent.dest_classcode.value);
	}
	
	var selectAirportFromAutoFill = function(evt) {
		evt = (evt) ? evt : ((window.event) ? event : null);
		if (evt) {
		   	var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
		   	if (elem && aRE.test(elem.nodeName)) {
				var airport = elem.innerHTML;
				fillAirport(airport);
				// close suggestions
				// 20070320 WvdH: added parentNode
				travelagent.dest_suggest.parentNode.style.display = "none";
				travelagent.dest_suggest.style.display = "none";
//start fm22162 
 	                                               var corporatecheck = document.getElementById('corporateSupport');
	                                               if (!corporatecheck) {
                                                                   document.getElementById('bluebiz').focus();
                                                               } 
                                                               else{
                                                                   document.getElementById('corporateSupport').focus();
                                                               }
//end  fm22162 
			}
		}
	}
	
	var selectAirportFromCountry = function(evt) {
		evt = (evt) ? evt : ((window.event) ? event : null);
		if (evt) {
		   	var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
		   	if (elem) {
				var airport = travelagent.dest_airport.options[travelagent.dest_airport.selectedIndex].innerHTML;
				fillAirport(airport);
			   	closeFindDestination();
		   	}
		}
	}
	
	var navigateInDestinationList = function (evt) {
		if (traveldata) {
			evt = (evt) ? evt : ((window.event) ? event : null);
			if (evt && (evt.keyCode == 40 || evt.keyCode == 38 || evt.keyCode == 13)) {
				var as = travelagent.dest_suggest.childNodes;
				for (var i=0;i < as.length; i++) {
					var a = as[i];
					if (a.className == 'selected') {
						if(evt.keyCode == 40 && a.nextSibling != null) {
							a.className = "";
							a.nextSibling.className = "selected";    
							travelagent.dest_suggest.scrollTop = a.nextSibling.offsetTop - 20;
						}
						else if(evt.keyCode == 38 && a.previousSibling != null) {
							a.className = "";
							a.previousSibling.className = "selected";    
							travelagent.dest_suggest.scrollTop = a.previousSibling.offsetTop - 20;
						} 
						else if(evt.keyCode == 13) {
							a.className = "";
							var airport = a.innerHTML;
							fillAirport(airport);
							// 20070320 Wvdh: added parentNode 
							travelagent.dest_suggest.parentNode.style.display = "none";
							travelagent.dest_suggest.style.display = "none";
						}
						evt.cancelBubble = true;
						return false;
					}
				}
				if (as.length > 0 && evt.keyCode == 40) {
					as[0].className = 'selected';
					travelagent.dest_suggest.scrollTop = 0;
					return false;
				}
			}
		}
	}	

	var fillDestinations = function(evt) {
		// open suggestions
		if (traveldata) {
			evt = (evt) ? evt : ((window.event) ? event : null);
			if (evt) {
				if (evt.keyCode == 40 || evt.keyCode == 38 || evt.keyCode == 13) {
					return navigateInDestinationList(evt);
				}
				// fill box
				travelagent.removeDestinations();
				var searchString = travelagent.destination.value;
				if (searchString == "") {
				// 20070320 WvdH: added parentNode
					travelagent.dest_suggest.parentNode.style.display = "none";
					travelagent.dest_suggest.style.display = "none";
					if (evt.type == "keyup")
						travelagent.setClasses("all", "all");
					return;
				}
				var elems = traveldata.selectAirportData(searchString);
				if (elems.length > 0) {
					for (var i=0;i < elems.length; i++) {
						var a = document.createElement("a");
						a.setAttribute("href", "#");
						a.setAttribute("onclick", "return false;");
// start fm22162 
                                                                                                a.setAttribute("tabindex", i+7, ";");
// end  fm22162 
						a.innerHTML = elems[i];
						travelagent.dest_suggest.appendChild(a);
					}
					travelagent.dest_suggest.scrollTop = 0;
					// 20070320 WvdH: added parentNode
					travelagent.dest_suggest.parentNode.style.display = "block";
					travelagent.dest_suggest.style.display = "block";
				}
				else {
				  // 20070320 WvdH: added parentNode
					travelagent.dest_suggest.parentNode.style.display = "none";
					travelagent.dest_suggest.style.display = "none";
					//travelagent.setClasses("all", "all");
					return;
				}
			}
		}
	}
	
	/* Destination Finder */
	var showFindDestination = function(evt) {
		// fill only the first time
		if (travelagent.dest_country.childNodes.length < 5) {
			var elems = traveldata.getCountryData();
			if (elems.length > 0) {
				for (var i=0;i < elems.length; i++) {
					var tag = document.createElement("option");
					tag.innerHTML = elems[i];
					travelagent.dest_country.appendChild(tag);
				}
			}
		}
		var containerd = document.getElementById('destinationcontainer');
		if (document.all) {
			var entries = document.getElementsByTagName('select');
			for (var i = 0; i < entries.length; i++) {
				if (entries[i].className == 'dest_hide') {
					entries[i].style.display = 'none';
				}
			}
		}
		containerd.style.display = 'block';
// start fm22162 
                                document.getElementById('dest_country').focus();
// endfm22162 
	}
	var closeFindDestination = function(evt) {
		var containerd = document.getElementById('destinationcontainer');
		if (document.all) {
			var entries = document.getElementsByTagName('select');
			for (var i = 0; i < entries.length; i++) {
				if (entries[i].className == 'dest_hide') {
					entries[i].style.display = 'block';
				}
			}
		}
		containerd.style.display = 'none';
// start fm22162 
 	                                               var corporatecheck = document.getElementById('corporateSupport');
	                                               if (!corporatecheck) {
                                                                   document.getElementById('bluebiz').focus();
                                                               } 
                                                               else{
                                                                   document.getElementById('corporateSupport').focus();
                                                               }
// end  fm22162 
	}
	var findAirports = function(evt) {
		evt = (evt) ? evt : ((window.event) ? event : null);
		if (evt) {
		   	var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
		   	if (elem) {
				var country = elem.options[elem.selectedIndex].innerHTML;
				var elems = traveldata.getAirportData(country);
				if (elems.length > 0) {
					travelagent.dest_airport.options.length = 0;
					for (var i=0;i < elems.length; i++) {
						var tag = document.createElement("option");
						tag.innerHTML = elems[i];
						travelagent.dest_airport.appendChild(tag);
					}
					// prefill first airport in form
					var default_airport = elems[0];
					fillAirport(default_airport);
				}
			}
		}
	}

	this.destination = document.getElementById("dest_fill");
	addEvent(this.destination, "focus", fillDestinations);
	addEvent(this.destination, "keyup", fillDestinations);
	
	this.dest_airportcode = document.getElementById("dest_code_fill");
	this.dest_classcode = document.getElementById("dest_class_fill");
	
	this.dest_country = document.getElementById("dest_country");
	addEvent(this.dest_country, "change", findAirports);
	
	this.dest_airport = document.getElementById("dest_airport");
	addEvent(this.dest_airport, "change", selectAirportFromCountry);
	
	this.sel = document.getElementById("sel");
	addEvent(this.sel, "click", selectAirportFromCountry);
	
	
	this.dest_suggest = document.getElementById("autofill");
	addEvent(this.dest_suggest, "click", selectAirportFromAutoFill);
	
	this.finddestination = document.getElementById("finddestination");
	addEvent(this.finddestination, "click", showFindDestination);
	
	this.closedestination = document.getElementById("closed");
	addEvent(this.closedestination, "click", closeFindDestination);
	
}

TravelAgent.prototype.removeDestinations = function() {
	var dest_suggest = document.getElementById("autofill");
	var elems = dest_suggest.childNodes;
	if (elems.length > 0) {
		for (var i=elems.length-1; i >= 0 ; i--) {
			//elems[i].innerHTML = "";
			elems[i].parentNode.removeChild(elems[i]);
		}
	}
}

TravelAgent.prototype.setClasses = function(classFrom, classTo) {


	var flyclass = document.getElementById("class");
	var index = Math.min(flyclass.selectedIndex, 1);
	flyclass.options.length = 1;
	var optionBF1 = new Option("Europe Select", "B", null, null);
	var optionBF2 = new Option("World Business Class", "B", null, null);
	if ((classFrom.toLowerCase() == "eur" && classTo.toLowerCase() == "eur") || classFrom.toLowerCase() == "all") flyclass.options[flyclass.options.length] = optionBF1;
	if (classFrom.toLowerCase() == "ica" || classTo.toLowerCase() == "ica" || classFrom.toLowerCase() == "all") flyclass.options[flyclass.options.length] = optionBF2;
	if (classFrom.toLowerCase() == "all")
		flyclass.selectedIndex = 0;
	else
		flyclass.selectedIndex = index;
}

/* origins selectbox */
Origins = function(selectBox) {
	
	var origins = this;
	
	//2006-09-26, BvD
	//var xmlurl = "/travel/xfd/ebt/origins/de_ge/origins.xml";
	var xmlurl = "failed to retrieve 'Application File URL - Collection' of application 'EBT'"

	var xmlhttp = null;
	var classes = new Array();
	
	this.selectBox = selectBox;
	this.classes = classes;
	
	var processRequest = function() {
		if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
			var selected = 0;
			var airports = xmlhttp.responseXML.getElementsByTagName("origin");
			for (var i=0; i < airports.length; i++) {
				var code = airports[i].getAttribute("code");
				origins.selectBox[i] = new Option(airports[i].firstChild.nodeValue, code, false, false);
				if (airports[i].getAttribute("default"))
					selected = i;
				classes[code]=airports[i].getAttribute("class");

			}
			origins.selectBox.selectedIndex = selected;
		}
	}

	xmlhttp = getXmlHttp();
	if (xmlhttp) {
		xmlhttp.onreadystatechange = processRequest;
		xmlhttp.open('GET', xmlurl, true);
		xmlhttp.send(null);
	}
}

/* TravelData */
TravelData = function(url) {
	
	var traveldata = this;

	//2006-09-26, BvD
	//var xmlurl = "/travel/xfd/ebt/destinations/de_ge/showdestinations.xml";
	var xmlurl = "failed to retrieve 'Application File URL - Collection' of application 'EBT'"

	var xmlhttp = null;
	
	this.airportdata = new Array();
	this.countrydata = new Array();
	this.xmldata = null;
	
	var processRequest = function() {
		if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
			traveldata.xmldata = xmlhttp.responseXML;
			traveldata.populateData();
		}
	}

	xmlhttp = getXmlHttp();
	if (xmlhttp) {
		xmlhttp.onreadystatechange = processRequest;
		xmlhttp.open('GET', xmlurl, true);
		xmlhttp.send(null);
	}
}

TravelData.prototype.populateData = function() {
	var elems;
	// put airport names is array for searching
	elems = this.xmldata.getElementsByTagName("airport");
	if (elems && this.airportdata && !this.airportdata.length > 0) {
		for (var i=0; i<elems.length; i++) {
			this.airportdata[i] = elems[i].firstChild.nodeValue;
		}
		this.airportdata.sort();
	}
	// put country names is array for searching
	elems = this.xmldata.getElementsByTagName("country");
	if (elems && this.countrydata && !this.countrydata.length > 0) {
		for (var i=0; i<elems.length; i++) {
			this.countrydata[i] = elems[i].getAttribute("name");
		}
		this.countrydata.sort();
	}
}

TravelData.prototype.selectAirportData = function(searchString) {
	// get subset of the airport array
	var selectedData = new Array();
	if (this.airportdata && this.airportdata.length > 0) {
		for (var i=0; i<this.airportdata.length; i++) {
			if (this.airportdata[i].toLowerCase().indexOf(searchString.toLowerCase()) == 0)
				selectedData.push(this.airportdata[i]);
			if (this.airportdata[i].substring(0,searchString.length).toLowerCase() > searchString.toLowerCase())
				return selectedData;
		}
	}
	return selectedData;
}

TravelData.prototype.getCountryData = function() {
	// get country array
	return this.countrydata;
}

TravelData.prototype.getAirportData = function(country) {
	// get country array
	var selectedData = new Array();
	var elem = this.getCountry(country);
	if (elem.childNodes.length > 0) {
		for (var i=0; i<elem.childNodes.length; i++) {
			if (elem.childNodes[i].tagName && elem.childNodes[i].tagName.toLowerCase() == "airport") 
				selectedData.push(elem.childNodes[i].firstChild.nodeValue);
		}
	}
	return selectedData;
}

TravelData.prototype.getAirport = function(airport) {
	var elems = this.xmldata.getElementsByTagName("airport");
	// get the xml node that belongs 2 value
	if (elems && this.airportdata.length > 0) {
		for (var i=0; i<elems.length; i++) {
			if (elems[i].firstChild.nodeValue.toLowerCase() == airport.toLowerCase())
				return elems[i];
		}
	}
	return null;
}

TravelData.prototype.getCountry = function(country) {
	var elems = this.xmldata.getElementsByTagName("country");
	// get the xml node that belongs 2 country
	if (elems) {
		for (var i=0; i<elems.length; i++) {
			if (elems[i].getAttribute("name").toLowerCase() == country.toLowerCase())
				return elems[i];
		}
	}
	return null;
}
//getElementsByClassName
function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && document.all)? document.all : 
    oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];      
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }   
    }
    return (arrReturnElements)
}

function fareSelect() {
	var priceBlock = getElementsByClassName(document.getElementById("fares"), "div", "priceblock");
	for (var i=0;i<priceBlock.length;i++) {
		if(priceBlock[i].className != 'priceblock hover') {
			priceBlock[i].onmouseover = function() {
				addClass(this,'hover');
				var btn = this.getElementsByTagName("div");
				
			}
			priceBlock[i].onmouseout = function() {
				removeClass(this,'hover');
			}
			// follow link in priceblock select-button
			priceBlock[i].onclick = function(e) {
				var source = (e) ? e.target : window.event.srcElement;
				// only follow href when click did not originate from info button or called-up dialog
				if(
					(source.className != "info" && source.className != "clickable" && source.className != "moreinfo")
					&& !isChild(source, document.getElementById("frmPopup"))
				) {
					document.location = getElementsByClassName(this, "div", "btn-select")[0].getElementsByTagName("a")[0].href;
					return false;
				}
			}
		}
	}
}
isChild = function (ancestor, candidate) {
	if (!ancestor || !ancestor.parentNode || !candidate) return false;
	while (candidate && candidate != ancestor.parentNode) {
		if (candidate == ancestor) return true;
		try {
			candidate = candidate.parentNode;
		} catch (c) {return false}
	}
}
function calendarSelect() {
	var calendars = document.getElementById("calendars");
	var as = calendars.getElementsByTagName("span");
	for (i=0;i<as.length;i++) {
		if (as[i].id !="recalc") {		
			as[i].onmouseover = function() {
				addClass(this,'hover');
			}
			as[i].onmouseout = function() {
				removeClass(this,'hover');
			}
		}
	}
}
addClass=function(obj,cName) { 
	removeClass(obj,cName); 
	return obj.className+=(obj.className.length>0?' ':'')+cName; 
}

removeClass=function(obj,cName) {
	return obj.className=obj.className.replace(new RegExp("^"+cName+"\\b\\s*|\\s*\\b"+cName+"\\b",'g'),''); 
}

// type radio toggle
function toggleTypeMethod(inputname) {
	var paymentReg = new RegExp("^" + inputname + "$");///^paymenttype$/i;
	var radioReg = /^radio$/i;
	var tbodyReg = /^tbody$/i;
	var radios = document.getElementsByTagName("input");
	var currentFoldout = null;

	function toggleFoldout() {
		if(currentFoldout)	
			removeClass((currentFoldout),"show");
		var foldout = this;
		while(foldout&&!tbodyReg.test(foldout.nodeName)) foldout = foldout.parentNode;
		if(foldout) {
			addClass((currentFoldout = foldout),"show");
			//alert("toggle on " + inputname + " " + foldout.nodeName + foldout.className);
		}
	}
	//Search for radio buttons that habe  a name that equals [inputname] to initialise payment type toggle.
	for(var radio,i=0; i<radios.length; i++) {
		radio = radios.item(i);
		if(paymentReg.test(radio.name) && radioReg.test(radio.type) && radio.id) {
			radio.onclick = toggleFoldout;
			if(radio.checked) radio.onclick();
		}
	}
}
// Payment radio toggle
function togglePaymentMethod() {
	var trclassRE = /\bpaymentContainer\b/
	var trs = document.getElementsByTagName("tr");
	//Search for all tr elements with classname 'paymentContainer' to initialise payment type toggle
	for (var i = 0; i < trs.length; i++) {
		if (trclassRE.test(trs[i].className)) {
			togglePaymentByType(trs[i]);
		}
	}
}
function togglePaymentByType(typeO) {
	var paymentReg = /\bpayment/i;
	var radioReg = /^radio$/i;
	var radios = typeO.getElementsByTagName("input");
	var currentFoldout = null;

	function toggleFoldout() {
		if(currentFoldout)	
			removeClass((currentFoldout),"show");
		var foldout = this.parentNode;
		while (foldout&&!paymentReg.test(foldout.className)) foldout = foldout.parentNode;
		if(foldout) {
			addClass((currentFoldout = foldout),"show");
		}
	}
	//Search all radio buttons with a name that starts with 'payment' to initialize payment toggle.
	for(var radio,i=0; i<radios.length; i++) {
		radio = radios.item(i);
		if(paymentReg.test(radio.name) && radioReg.test(radio.type)) {
			radio.onclick = toggleFoldout;
			if(radio.checked) radio.onclick();
		}
	}
}
// Payment radio value storage
function storePaymentMethod() {
	var classRE = /\bpayfinal\b/
	var inputs = document.getElementsByTagName("input");
	//Search for all input elements with classname 'payfinal' to initialise payment type storage
	for (var i = 0; i < inputs.length; i++) {
		if (classRE.test(inputs[i].className)) {
			paymentStore(inputs[i]);
		}
	}
}

function paymentStore(input) {
	var tbody = input.parentNode;
	var tbRE = /^tbody$/i;
	while (tbody.parentNode && !tbRE.test(tbody.nodeName)) tbody = tbody.parentNode;
	function storeValue(e) {
		var e = e||event;
		var target = e.target||e.srcElement;
		if (target&&target.type&&target.type=="radio") {
			input.value = target.value;
			//alert(input.value);
		}
	}
	if (tbody.parentNode) tbody.onclick = function (e) {
		storeValue(e);
	};
}

function openPopup() {
	var infos = getElementsByClassName(document.getElementById("fares"), "img", "info");
	for (i=0;i<infos.length;i++) {
		infos[i].onclick = function(e) {
			document.getElementById("faresPopup").style.display = "block";
			var inputs = getElementsByClassName(document.getElementById("choosedates"), "span", "bgradio");
			for(var i=0; i<inputs.length; i++){
				inputs[i].style.zIndex = "-1";
			}
			return false;
		}
	} return false;
}
function closePopup() {
	var closer = getElementsByClassName(document.getElementById("faresPopup"), "a", "closefarespopup");
	for (i=0;i<closer.length;i++) {
		closer[i].onclick = function(e) {
			document.getElementById("faresPopup").style.display = "none";
			var inputs = getElementsByClassName(document.getElementById("choosedates"), "span", "bgradio");
			for(var i=0; i<inputs.length; i++){
				inputs[i].style.zIndex = "1";
			}
			return false;
		}
	} return false;
}
function toggleBreakdown() {
	var breakdownlink = document.getElementById("breakdown_link");
	var breakdown = document.getElementById("breakdown");
	breakdownlink.onclick = function() {
		var currentValue = breakdown.style.display;
		var newValue = (currentValue == "block") ? "none" : "block";
		breakdown.style.display = newValue;
		return false;
	}
}
function toggleBreakdownup() {
	var breakdownlinkup = document.getElementById("breakdown_link_up");
	var breakdownup = document.getElementById("breakdown_up");
	breakdownlinkup.onclick = function() {
		var currentValue = breakdownup.style.display;
		var newValue = (currentValue == "block") ? "none" : "block";
		breakdownup.style.display = newValue;
		return false;
	}
}
function availableTime() {
	var trs = document.getElementById("choosedates").getElementsByTagName("tr");
	for (i=0;i<trs.length;i++) {
		trs[i].onmouseover = function() {
			if(this.className.indexOf(' double') > 0) {
				addClass(this,'sel');
				addClass(this.parentNode.rows[this.rowIndex+1],'sel');
			}
			if(this.className.indexOf(' continued') > 0) {
				addClass(this,'sel');
				addClass(this.parentNode.rows[this.rowIndex-1],'sel');
			}
			else {
				addClass(this,'sel');
			}
		}
		trs[i].onmouseout = function() {
			if(this.className.indexOf(' double') > 0) {
				removeClass(this,'sel');
				removeClass(this.parentNode.rows[this.rowIndex+1],'sel');
			}
			if(this.className.indexOf(' continued') > 0) {
				removeClass(this,'sel');
				removeClass(this.parentNode.rows[this.rowIndex-1],'sel');
			}
			else {
				removeClass(this,'sel');
			}
		}
	}
}

var allContainers = new Array;
function popupMenu(oLoc, title, body){
	var oFrm = document.getElementById("frmPopup");
	oFrm.getElementsByTagName("SPAN")[0].lastChild.nodeValue = title;
	oFrm.getElementsByTagName("DIV")[0].innerHTML = body;
	oLoc.parentNode.insertBefore(oFrm, oLoc);
	addClass(oFrm,"show");
	return false;
}

function frmAlertClose() {
	var frmAlert = document.getElementById("frmAlert");
	var frmAlertX = frmAlert.getElementsByTagName('a');
	for (i=0;i<frmAlertX.length;i++) {
		frmAlertX[i].onclick = function() {
			frmAlert.style.display = "none";
			return false;
		}
	}
}
function showBluebiz() {
	var bbcheck = document.getElementById('corporateSupport');
	if (!bbcheck.checked) {
		document.getElementById('bluebiznr').style.display = 'none';
	}
	else {
		document.getElementById('bluebiznr').style.display = 'block';
	}
	return false;
}
function emptyBluebiz() {
	var nr = document.getElementById('bluebiznr');
	if (nr == null)
		return false;
	if(nr.value == 'Ihre BlueBiz-Nummer') nr.value = '';
	return false;
}
function fillinBluebiz() {
	var nr = document.getElementById('bluebiznr');
	if(nr.value == '') nr.value = 'Ihre BlueBiz-Nummer';
	return false;
}
function syncDate(origin) {
	var depDay = document.getElementById('dep_day');
	var depMonth = document.getElementById('dep_month');
	var retDay = document.getElementById('ret_day');
	var retMonth = document.getElementById('ret_month');
	if((depMonth.options.selectedIndex == retMonth.options.selectedIndex && depDay.options.selectedIndex > retDay.options.selectedIndex) || depMonth.options.selectedIndex > retMonth.options.selectedIndex) {
		if(origin == depDay || origin == depMonth) {
			retDay.selectedIndex = depDay.selectedIndex;
			retMonth.selectedIndex = depMonth.selectedIndex;
		} else {
			depDay.options.selectedIndex = retDay.options.selectedIndex;
			depMonth.options.selectedIndex = retMonth.options.selectedIndex;			
		}
	}
}

function syncDate_other(origin) {
	var depDay = document.getElementById('dep_day_other');
	var depMonth = document.getElementById('dep_month_other');
	var retDay = document.getElementById('ret_day_other');
	var retMonth = document.getElementById('ret_month_other');	
	
	if( depMonth.options.selectedIndex > retMonth.options.selectedIndex){
		retMonth.options.selectedIndex = depMonth.options.selectedIndex;	
	}
	if( depMonth.options.selectedIndex == retMonth.options.selectedIndex){
		if (depDay.options.selectedIndex >= retDay.options.selectedIndex ){
			if (depDay.options.selectedIndex == 30){
				retDay.options.selectedIndex = 0;
				if ((depMonth.options.selectedIndex) == 11){
					retDay.options.selectedIndex = 30;
					retMonth.options.selectedIndex = 11 ;				
				}
				else{
					retMonth.options.selectedIndex = depMonth.options.selectedIndex + 1 ;
				}
			}
			else{
				retDay.options.selectedIndex = depDay.options.selectedIndex + 1;
				retMonth.options.selectedIndex = depMonth.options.selectedIndex;
			}
		}  
	}
}

function closePopupHandler(e) {
	var e = e||event;
	var target = e.target||e.srcElement;
	while (target.nodeType > 1) target = target.parentNode;
	
	if ((target.nodeName == "A" || target.nodeName == "a") && target.rel == "closePopup") {
		var popup = target	;
		var showRE = / ?\bshow\b/i
		while(!showRE.test(popup.className) && popup.parentNode) popup = popup.parentNode;
		removeClass(popup, "show");
		return cancelEvent(e);
	}
	else return true;
}

addEventHandler(document,"click", closePopupHandler);

function ChooseFlights(id) {
	this.calendar = document.getElementById(id);
	var self = this;
	addEventHandler(this.calendar, "click", function(e) {
		self.clickHandler(e);
	});
}

ChooseFlights.prototype = {
	aRE:/^a$/i,
	trRE:/^tr$/i,
	atRE:/^availabletime/,
	dblRE:/double/,
	dblCRE:/continued/,
	currentRE:/ ?\bcurrent\b/i,
	clickHandler:function(e) {
		var e = e||event;
		var target = e.target||e.srcElement;

		while (target.nodeType>1)target = target.parentNode; //Safari targets textnodes.

		if (this.aRE.test(target.nodeName)) {//It's a link, change fare's filter
			var aParent = target.parentNode;
			var as = aParent.getElementsByTagName("a");

			//Purge calendar of current filter
			for (var i=0; i < as.length; removeClass(this.calendar, as.item(i++).className));

			//Add filter to calendar
			addClass(this.calendar, target.className);

			//Cancel clickevent
			return cancelEvent(e);
		} else { //Somewhere else, look for a table-row
			while(!this.trRE.test(target.nodeName)&&target.parentNode) target = target.parentNode;
			if (this.atRE.test(target.className)) { //It's a time tabelrow
				//Check if it's second of doublerow, ifso get it's previousSibling.
				if (this.dblCRE.test(target.className)) target = target.parentNode.rows[target.rowIndex-1];

				//Get the second tablerow of a doublerow
				var target2 = null;
				if (this.dblRE.test(target.className)) target2 = target.parentNode.rows[target.rowIndex+1];

				//Get the radiobutton
				var radio = target.getElementsByTagName("input").item(0);

				//'de-select' current selected nodes.
				var tParent = target.parentNode;
				for (i=0; i<tParent.rows.length; i++) {
					var row = tParent.rows[i];
					if (this.currentRE.test(row.className)) row.className = row.className.replace(this.currentRE,"");
				}

				//Set selected state and select radio
				addClass(target," current");
				if (target2!=null) {
					//Remove lingering hover class
					removeClass(target2,"sel");
					//Add current class
					addClass(target2," current");
				}
				radio.checked = true;

				//Enable recalc button?
				var button = document.getElementById("recalcon");
				addClass(button, "enable");
				
				//Cancel original click
				//return cancelEvent(e);
			}
		}
		return true;
	}
}
BreakdownHandler  = {
	aRE:/^a$/i,
	bdRE:/\bbreakdown_link\b/,
	showRE:/ ?\bshow\b/,
	clickHandler:function(e){
		var e = e||event;
		var target=e.target||e.srcElement;
		while (target.nodeType > 1) target = target.parentNode; //Get element, Safari fires on text_nodes.
		
		if (this.aRE.test(target.nodeName)&&this.bdRE.test(target.className)) { //It's a breakdown_link.
			//Get relevant information and nodes
			var toggle = target.parentNode;
			var targetId = target.getAttribute("href");
			targetId = targetId.substring(targetId.indexOf("#") + 1);
			var targetBreakdown = document.getElementById(targetId);
			var altTextNode = toggle.getElementsByTagName("span").item(0);
			var text = target.firstChild;
			var altText = altTextNode.firstChild;
			
			//Toggle the status of relevant breakdown
			if (this.showRE.test(targetBreakdown.className)){
				targetBreakdown.className = targetBreakdown.className.replace(this.showRE,"");
				toggle.className = toggle.className.replace(this.showRE,"");
			} else {
				targetBreakdown.className+=" show";
				toggle.className+=" show";
			}
			
			//Switch the textnodes.
			target.appendChild(altText);
			altTextNode.appendChild(text);
			
			return cancelEvent(e);
		}
	}	
}

addEventHandler(document, "click", function(e) {
	BreakdownHandler.clickHandler(e);
});

function doSubmitEBT(sCmd, sUrl)
{
	emptyBluebiz();
	document.book2.commandToExecute.value = sCmd;
	document.book2.action = sUrl;
	if (document.book2.destination.value == "") {
		document.book2.destination.value = document.book2.destination_free.value;
	}
	document.book2.productTypeCabin.value = document.book2.productType.value.substring(0,1);
	document.book2.productTypeCondition.value = document.book2.productType.value.substring(1);
	document.book2.submit();
}

function doSubmitHC(sUrl,imageparams)
{
	document.bookhotel.For.value = "City," + document.bookhotel.destination.value;
	document.bookhotel.DateRange.value = document.bookhotel.FromD.value + "-" + document.bookhotel.FromYM.value.substr(4,2) +"-"+ document.bookhotel.FromYM.value.substr(0,4) + "," + document.bookhotel.ReturnD.value  + "-" +   document.bookhotel.ReturnYM.value.substr(4,2) + "-" + document.bookhotel.ReturnYM.value.substr(0,4) ;

	document.bookhotel.submit();		
}
// Content: js calendar
/* calendar functions */
var type = '';
var days = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];

function showCalendar(depret, txt) {
	top.type = depret;
	var container = document.getElementById('calendarcontainer');
	var header = document.getElementById('calendartop');
	header.innerHTML = txt; 
	if (document.all) {
		var entries = document.getElementsByTagName('select');
		for (var i = 0; i < entries.length; i++) {
			if (entries[i].className == 'cal_hide') {
				entries[i].style.display = 'none';
			}
		}
	}
	var today = new Date();
	var index = document.getElementById(depret + '_month').options.selectedIndex;
	document.getElementById('calendarmonth').options.selectedIndex = index;
	updateMonth(today.getFullYear() + "" + (today.getMonth()+1+index), index);
	container.style.display = 'block';
                document.getElementById('calendarmonth').focus();
}

function showCalendar_other(depret, txt) {
	top.type = depret;
	var container = document.getElementById('calendarcontainer_other');
	var header = document.getElementById('calendartop_other');
	header.innerHTML = txt;
	if (document.all) {
		var entries = document.getElementsByTagName('select');
		for (var i = 0; i < entries.length; i++) {
			if (entries[i].className == 'cal_hide') {
				entries[i].style.display = 'none';
			}
		}
	}
	var today = new Date();
	var index = document.getElementById(depret + '_month_other').options.selectedIndex;
	document.getElementById('calendarmonth_other').options.selectedIndex = index;
	updateMonth_other(today.getFullYear() + "" + (today.getMonth()+1+index), index);
	container.style.display = 'block';
  document.getElementById('calendarmonth_other').focus();
}

function fill(type, day, month) {
	closeCalendar();
	document.getElementById(type + '_day').options.selectedIndex = day;
	document.getElementById(type + '_month').options.selectedIndex = month;
	syncDate(document.getElementById(type + '_month'));
	if (type=='dep'){document.getElementById('ret_day').focus();}
	if (type=='ret') {document.getElementById('on').focus();}
}

function fillother(type, day, month) {
	closeCalendar_other();
	document.getElementById(type + '_day_other').options.selectedIndex = day;
	document.getElementById(type + '_month_other').options.selectedIndex = month;
	syncDate_other(document.getElementById(type + '_month_other'));
	if (type=='dep'){document.getElementById('ret_day_other').focus();}
	if (type=='ret') {document.getElementById('default').focus();}	
}

function closeCalendar () {
	var container = document.getElementById('calendarcontainer');
	if (document.all) {
		var entries = document.getElementsByTagName('select');
		for (var i = 0; i < entries.length; i++) {
			if (entries[i].className == 'cal_hide') {
				entries[i].style.display = 'block';
			}
		}
	}
	container.style.display = 'none';
}

function closeCalendar_other () {
	var container = document.getElementById('calendarcontainer_other');
		
	if (document.all) {
		var entries = document.getElementsByTagName('select');
		for (var i = 0; i < entries.length; i++) {
			if (entries[i].className == 'cal_hide') {
				entries[i].style.display = 'block';
			}
		}
	}
	container.style.display = 'none';
}

function updateMonth(monthyear, selection) {
	var month = monthyear.substr(4,2);
	var year = monthyear.substr(0,4);
	var noOfDays = getNumberOfDays(month, year);
	var firstDay = getFirstDay(month, year);
	fillMonth(month, firstDay, noOfDays, selection);
}

function updateMonth_other(monthyear, selection) {
	var month = monthyear.substr(4,2);
	var year = monthyear.substr(0,4);
	var noOfDays = getNumberOfDays(month, year);
	var firstDay = getFirstDay(month, year);
	fillMonth_other(month, firstDay, noOfDays, selection);
}
function getNumberOfDays(m, y) {
	var days = 31;
	switch (parseInt(m, 10)) {
		case 4: case 6: case 9: case 11:
			days = 30;
			break;
		case 2:
		  if ((y % 4 == 0) ^ (y % 100 == 0) ^ (y % 400 == 0))
			days = 29;
		  else
			days = 28;
		  break;
	}
	return days;
}
function getFirstDay(m, y) {
	d = new Date(y, m-1, 1);
	d.setHours(12);
	return (d.getDay() - 1 >= 0 ? d.getDay() - 1 : d.getDay() + 6);
}
function fillMonth(month, firstDay, noOfDays, monthIndex) {
	var firstSet = false;
	var dayCounter = 1;
	var today = new Date();
	dateToday = today.getDate();
	monthToday = today.getMonth() + 1;
	var sHTML = '<table cellspacing="0"><tr class="head">'
	for (var i = 0; i < days.length; i ++) {
		sHTML += '<td>' + days[i] + '</td>\n';
	}
	sHTML += '</tr>';
	while (dayCounter <= noOfDays) {
		sHTML += '<tr>';
		for (i = 0; i < 7; i++) {
			if (!firstSet && i < firstDay) {
				sHTML += '<td>&nbsp;</td>\n';
			} else {
				firstSet = true;
				if (dayCounter <= noOfDays) {
					if ((monthToday == month) && (dayCounter < dateToday)) {
						sHTML += '<td>' + dayCounter + '</td>\n';
					} else {
						sHTML += '<td><a href="javascript:fill(top.type, ' + (dayCounter - 1) + ' , ' + monthIndex + ');">' + dayCounter + '</a></td>\n';
					}

				} else {
					sHTML += '<td>&nbsp;</td>\n';
				}
				dayCounter++;
			}
		}
		sHTML += '</tr>'
	}
	sHTML += '</table>';
	document.getElementById('monthtable').innerHTML = sHTML;
}

function fillMonth_other(month, firstDay, noOfDays, monthIndex) {
	var firstSet = false;
	var dayCounter = 1;
	var today = new Date();
	dateToday = today.getDate();
	monthToday = today.getMonth() + 1;
	var sHTML = '<table cellspacing="0"><tr class="head">'
	for (var i = 0; i < days.length; i ++) {
		sHTML += '<td>' + days[i] + '</td>\n';
	}
	sHTML += '</tr>';
	while (dayCounter <= noOfDays) {
		sHTML += '<tr>';
		for (i = 0; i < 7; i++) {
			if (!firstSet && i < firstDay) {
				sHTML += '<td>&nbsp;</td>\n';
			} else {
				firstSet = true;
				if (dayCounter <= noOfDays) {
					if ((monthToday == month) && (dayCounter < dateToday)) {
						sHTML += '<td>' + dayCounter + '</td>\n';
					} else {
						sHTML += '<td><a href="javascript:fillother(top.type, ' + (dayCounter - 1) + ' , ' + monthIndex + ');" tabindex=301>' + dayCounter + '</a></td>\n';
					}

				} else {
					sHTML += '<td>&nbsp;</td>\n';
				}
				dayCounter++;
			}
		}
		sHTML += '</tr>'
	}
	sHTML += '</table>';
	document.getElementById('monthtable_other').innerHTML = sHTML;
}

function RecalcCalendar(id,days) { //,matchdates) {
	this.calendar = document.getElementById(id);
	this.days = days||new Array("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday");
	/*this.minMatch = false;
	this.maxMatch = false;
	if (matchdates!=null) {
		if (matchdates.minMatch!=null) {
			this.minMatch = true;
			this.matchCalendar = document.getElementById(matchdates.minMatch);
		} else if(matchdates.maxMatch!=null) {
			this.maxMatch = true;
			this.matchCalendar = document.getElementById(matchdates.maxMatch);
		}
	}*/
	var self = this;
	addEventHandler(this.calendar, "click", function(e) {
		return self.clickHandler(e);
	});
}

RecalcCalendar.prototype = {
	aRE:/a/i,
	relRE:/date/i,
	divRE:/div/i,
	dateRE:/\b[0-9]{1,2}\b/,
	dayRE:/^[^ ]*/,
	clickHandler:function(e) {
		var e = e||event;
		var target = e.target||e.srcElement;
		var eventResult = true;

		while (target.nodeType>1)target = target.parentNode; //Safari targets textnodes.

		if (this.aRE.test(target.nodeName) && this.relRE.test(target.getAttribute("rel"))) {//It's a date link
			//de-select current date
			var selSpans = getElementsByClassName(this.calendar, "span", "sel");
			removeClass(selSpans[0], "sel");

			//select current date
			var span = target.parentNode;
			addClass(span, "sel");

			//change date-string
			var div = target;
			while (div.parentNode && !this.divRE.test(div.nodeName)) div = div.parentNode;
			if (this.divRE.test(div.nodeName)) {
				var strong = div.getElementsByTagName("strong").item(0);
				var sDate = strong.firstChild.nodeValue;
				sDate = sDate.replace(this.dateRE, target.firstChild.nodeValue);

				//count how many-eth day this is
				var td = target.parentNode.parentNode;
				var day = this.days[td.cellIndex];
				sDate = sDate.replace(this.dayRE, day);
				strong.replaceChild(document.createTextNode(sDate),strong.firstChild);
			} else alert("Could not find a div");

			//set variable on button-action
			var button = document.getElementById("recalcon"), buttonlink = button.getElementsByTagName("a").item(0), buttonhref = buttonlink.getAttribute("href"), href="";
			var re = new RegExp("([\\?&]" + this.calendar.id + "=)[^&]*");
			if (re.test(buttonhref)) {
				href = buttonhref.replace(re, "$1" + target.firstChild.nodeValue);
			} else {
				href = buttonhref + (buttonhref.indexOf("?")>0?"&":"?") + this.calendar.id + "=" + target.firstChild.nodeValue;
			}
			buttonlink.setAttribute("href",href);

			//enable recalcButton
			addClass(button, "enable");
			//cancel original event
			eventResult = cancelEvent(e);
		}
		return eventResult;
	}
}
// Content: js tradedoubler
function initTradedoubler(strOrgID, strEventID, strReportInfo)
{

	var strLeadNumber = getParameterTD("email");
	var refImage = new Image();
	//var srcImage = "http://tracker.tradedoubler.com/report?organization=" + strOrgID + "&event=" + strEventID + "&leadNumber=" + escape(strLeadNumber) + "&reportInfo=" + escape(strReportInfo);
	var srcImage = "http://www.klm.com/travel/de_de/report?organization=" + strOrgID + "&event=" + strEventID + "&leadNumber=" + escape(strLeadNumber) + "&reportInfo=" + escape(strReportInfo);
	refImage.src = srcImage;
}

function getParameterTD(strName) 
{
	var query = window.location.search.substring(1);
	var parms = query.split('&');
	var blnFound = false;
	var i, retValue;
	
	retValue = "";
	i = 0;	
	while (i != parms.length && !blnFound)
	{
		var pos = parms[i].indexOf('=');
		if (pos > 0) 
		{
			var key = parms[i].substring(0,pos);
			var val = parms[i].substring(pos+1);
			blnFound = (strName == key);
			if (blnFound)
				retValue = val;
		}
		i++;
	}
	return retValue;
}
// Content: js forms
// this function removes all blanks from an input field.
function removeblanks()
{
  var arrReturnElements = getElementsByClassName(document.getElementById('tdsForm'),'input','removeblanks');
  
	for(var i=0; i<arrReturnElements.length; i++)
	{
		var y = arrReturnElements [i].value;
		y = y.replace(/\s/g,"");                             // replace all blanks in a string
		arrReturnElements[i].value = y;
	}    
}

function AddFormNamesForWebtrends()
{

	formContent=document.getElementById("tdsForm");
	var elements=formContent.getElementsByTagName("select");
	for (var i=0; i<elements.length;i++) {
		_metron.measureVariable("si_n", elements[i].getAttribute("name")); 
		_metron.measureVariable("si_x", elements[i].value);
	}

	formContent=document.getElementById("tdsForm");
	var elements=formContent.getElementsByTagName("input");
	for (var i=0; i<elements.length;i++) {
		if (elements[i].getAttribute("type") == "radio") {
			if (elements[i].checked ) {
				_metron.measureVariable("si_n", elements[i].getAttribute("name")); 
				_metron.measureVariable("si_x", elements[i].getAttribute("value"));
			}
		}
		else {
			_metron.measureVariable("si_n", elements[i].getAttribute("name")); 
			_metron.measureVariable("si_x", elements[i].getAttribute("value"));
		}
	}
}
