/**
 * @desc Dummy Funktion für den PageLoad
 */
if ((typeof(init) != 'function') && (typeof(init) != 'object')) init = new Function();
activelayer = '';

/** ************************************************************************
* INIT MAIN NAVIGATION TAB
************************************************************************ **/
function init (active) {
  activelayer = active; // global var for reactivation
  all_layers_off();
  activate("menue_" + active);
}


/** ************************************************************************
* HANDLING OF MAIN NAVIGATION TAB
************************************************************************ **/

/** ADD CLASS TO ACTIVATE NAVIGATION TAB **/
function activate(menue_item){
  var e;
	try{document.getElementById(menue_item).className = "active";}
	catch(e){;}
}

/** ADD CLASS TO ACTIVATE DENAVIGATION TAB **/
function deactivate(menue_item){
  var e;
	try{document.getElementById(menue_item).className = "";}
	catch(e){;}
}

var layers = new Array("offers", "organizers", "start");
var prev_active_menue = '';

/** HIDE ALL LAYERS **/
function all_layers_off () {
	hide("darken");
	for (var i = 0; i < layers.length; ++i) {
		if (document.getElementById("layer_" + layers[i])) {
		 hide("layer_" + layers[i]);
		}
		deactivate("menue_" + layers[i]);
	}
	activate("menue_" + activelayer); // reactivate original layer
}

/** HIDE ONE LAYER **/
function layer_off (layer) {
	hide("layer_" + layer);
	hide("darken");
	deactivate("menue_" + layer);
	activate("menue_" + activelayer); // reactivate original layer
}

/** DISPLAY ONE LAYER **/
function layer_on (layer) {
	// Hides all layers
	all_layers_off();
	deactivate("menue_" + activelayer);
	
	// if there is a frameset
	if (top.frames.TopFrame) {
	  // open poup window
    var source = top.TopFrame.document.getElementById("layer_" + layer).getElementsByTagName("iframe")[0].src;
    var popup = source.replace(/layer_/g, "popup_");
    openWindow(popup,780,380,'no'); // document.getElementById("layer_" + layer).getElementsByTagName("iframe")[0].src
  }
  else {
    // Shows the layer before a darkened background
    show("layer_" + layer);
    show("darken");
  }
	// Activates the corresponding menue
	activate("menue_" + layer);
}

/** ************************************************************************
* HELPER FUNCTIONS DISPLAY
************************************************************************ **/
function show(item){
  var e;
	try{document.getElementById(item).style.display = "block";}
	catch(e){;}
}

function hide(item){
  var e;
	try{document.getElementById(item).style.display = "none";}
	catch(e){;}
}

/** SHOW INFO IN RESULT LIST OF FLIGHT OFFERS **/
function show_info (id) {
	show("info_" + id);
	hide(id);
  }




// Function for orange box navigation in right column
var categories = new Array("bestprice", "all_incl", "lastminute", "car_rental", "hotel");

function element_on (category) {
	for (var i = 0; i < categories.length; ++i) {
		if (categories[i] == category) {
			show(category);
		} else {
			hide(categories[i]);
		}
	}
}


function open_window_and_activate(url, height) {
	var subWindow = window.open(url,'popup','width=750,height=' + height + ',resizable=yes,scrollbars=yes');
}


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


var FormatErrorMsg = 'Bitte geben Sie das Datum im Format \'TT.MM.JJJJ\' ein !';

function TiefpreisGarantie() {
  var titel = "Die Preise fliegen bei elumbus-reisen.de tief -  garantiert!";
  var msg =
    "<p>Wenn Sie bei uns, elumbus-reisen.de, Ihre Reise buchen und am Buchungstag " +
    "die gleiche Leistung vom selben Veranstalter ?ber ein anderes Reiseb?ro " +
    "oder Internetreiseb?ro buchen k?nnen, erstatten wir Ihnen den Differenzbetrag.</p>\n" +
    "<p>Bitte kontaktieren Sie hierf?r unser Serviceteam unter 01805/155 855 (0,14?/Min.) oder senden Sie " +
    "eine email an <a href=\"mailto:pauschal@elumbus-reisen.de\" title=\"Nehmen Sie mit uns Kontakt auf\">pauschal@elumbus-reisen.de</a>.</p>\n" +
    "<p>Diese Garantie gilt f?r die Kategorien:</p>\n" +
    "<ul><li>Charterfl?ge</li><li>Last-Minute-Reisen</li><li>Pauschal-Katalog-Reisen</li></ul>";
  TextPopper(titel,msg,450,280);
  }

// DON'T CHANGE POPUP-NAME (s. menu_links.js)
function openFixedWindow(url) {
  window.open(url,'popup','width=800,height=550,resizable,scrollbars=yes');
  }

// DON'T CHANGE POPUP-NAME (s. menu_links.js)
function openWindow(url, width, height, scrollbars) {
  Popup = window.open(url,'popup','width=' + width + ',height=' + height +',resizable,scrollbars='+scrollbars+',dependent=yes');
  Popup.moveTo ((screen.width-width)/2, (screen.height-height)/2); // center positio
}

function date() {
  document.write(new Date().getDate()+"."+(new Date().getMonth()+1)+"."+new Date().getFullYear())
}

function TextPopper(Header,Message,Width,Height) {
  var ScreenX = (screen.width / 2) - 160;
  var ScreenY = (screen.height / 2) - 150;
  if (Width) {var width = Width;}
  else {width = 320;}
  if (Height) {var height = Height;}
  else {height = 300;}
  win = window.open("","PopText","dependent=yes,width=" + width + "px,height=" + height + "px,location=no,toolbar=no,resizable=yes,scrollbars=no,status=no,top="+ ScreenY +"px,left=" + ScreenX +"px");
  win.document.open();
  win.document.write("<html>\n<head>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"/library/style/textpopper.css\">\n<title>" + Header + "</title>\n</head>\n");
  win.document.write("<body>\n<table class=\"popup\">\n");
  win.document.write("<tr>\n<td class=\"headline\">&nbsp;&nbsp;&nbsp;" + Header + "</td>\n</tr>\n");
  win.document.write("<tr>\n<td class=\"textpopp\">\n");
  win.document.write(Message + "\n");
  win.document.write("</td>\n");
  win.document.write("<tr>\n<td class=\"bottomline\">\n<a href=\"javascript:window.close();\" class=\"closewin\">Fenster schliessen</a>\n</td>\n</tr>\n");
  win.document.write("</table>\n</body>\n</html>");
  win.document.close();
  }

/**
 * @desc verhindert das Laden von Frame Dateien als Top Instanz. Erwartet im globalen
 *       Scope eine Variable Namens Frameset, die den Url zur Fallback Datei enth?lt.
 */
function framedoc() {
  var Parent;
  if (typeof(Frameset) != 'string') {
    return;
    }
  try {
    Parent = window.parent;
    }
  catch (e) {
    Parent = null;
    }
  if (Parent != null) {
    try {if (document.location.href == Parent.location.href) top.location.href = Frameset;}
    catch(e){return;}
    }
  else {
    Parent.location.href = Frameset;
    }
  }

/**
 * @desc Funktion abstrahiert die Suche nach einem DOM Element, weil
 *       sich bei der Flugsuche bestimmte Bereiche ausgelagert in einem
 *       Javascript Objekt befinden.
 */
function getHtObject(Id) {
  var RetVal;
  if (is_object(Id)) {
    RetVal = Id;
    }
  else {
    RetVal = getHtmlObject(Id);
    }

  return RetVal;
  }

/**
 * @desc Gibt Objekt zur?ck, wobei der ?bergebene Parameter entweder das Objekt selber,
 *       oder aber das ID desselben sein kann, mittels dessen das Objekt selber dann
 *       aus dem document ermitteln l?sst.
 * @param Mixed Variable
 * @return Mixed - Objekt oder false
 */
function getHtmlObject(Variable) {
  var RetVal = false;
  if (!is_object(Variable)) {
    if (is_string(Variable)) {
      RetVal = document.getElementById(Variable);
      if (RetVal == null) {
        RetVal = false;
        }
      }
    }
  return RetVal;
  }

/**
 * @desc Ermittelt, ob es sich bei der ?bergebenen Variable um ein HTML Input Element handelt
 * @param Mixed Variable - Pr?fvariable
 * @return Boolean
 */
function is_input_hidden(Variable) {
  var RetVal = false;
  if (is_HTMLObject(Variable,'input')) {
    try {
      RetVal = is_string(Variable.type) && (Variable.type.toLowerCase() == 'hidden');
      }
    catch (e) {
      RetVal = false;
      }
    }
  return RetVal;
  }
/**
 * @desc Ermittelt, ob es sich bei der ?bergebenen Variable um ein HTML Input Element handelt
 * @param Mixed Variable - Pr?fvariable
 * @return Boolean
 */
function is_select(Variable) {
  return is_HTMLObject(Variable,'select');
  }
/**
 * @desc Ermittelt, ob es sich bei der ?bergebenen Variable um ein HTML Input Element handelt
 * @param Mixed Variable - Pr?fvariable
 * @return Boolean
 */
function is_input(Variable) {
  return is_HTMLObject(Variable,'input');
  }

/**
 * @desc Meta Funktion f?r Objektpr?fung HTML Objekte
 * @param Mixed Variable - Pr?fvariable
 * @param String Tag - HTML Tag, auf welches Variable gepr?ft wird
 * @return Boolean
 */
function is_HTMLObject(Variable,Tag) {
  var RetVal = is_htmltagobject(Variable);
  if (is_string(RetVal) && is_string(Tag)) {
    if (Tag == RetVal) {
      try {
        RetVal = is_string(Variable.tagName) && (Variable.tagName.toLowerCase() == Tag);
        }
      catch(e) {
        RetVal = false;
        }
      }
    }
  return RetVal;
  }

/**
 * @desc Ermittelt, ob es sich bei der ?bergebenen Variable um ein HTML Object handelt.
 * @param Mixed Variable - Pr?fvariable
 * @return Boolean
 */
function is_htmltagobject(Variable) {
  var RetVal = false;
  if (is_object(Variable)) {
    if (is_string(Variable.tagName)) {
      RetVal = Variable.tagName;
      }
    }
  return RetVal;
  }

/**
 * @desc Ermittelt, ob es sich bei der ?bergebenen Variable um ein Objekt Type Datum handelt
 * @param Mixed Variable - Pr?fvariable
 * @return Boolean
 */
function is_date(Variable) {
  var RetVal = false;
  try {
    RetVal = is_object(Variable) && is_function(Variable.setTime) && is_function(Variable.getTime);
    }
  catch (e) {
    RetVal = false;
    }
  return RetVal;
  }

/**
 * @desc Ermittelt, ob es sich bei der ?bergebenen Variable um eine Boolean Variable handelt
 * @param Mixed Variable - Pr?fvariable
 * @return Boolean
 */
function is_bool(Variable) {
  return is_Variable(Variable,'boolean');
  }
/**
 * @desc Ermittelt, ob es sich bei der ?bergebenen Variable um ein Objekt Inhalt null handelt
 * @param Mixed Variable - Pr?fvariable
 * @return Boolean
 */
function is_null(Variable) {
  return Variable == null;
  }
/**
 * @desc Ermittelt, ob es sich bei der ?bergebenen Variable um ein Objekt handelt
 * @param Mixed Variable - Pr?fvariable
 * @return Boolean
 */
function is_object(Variable) {
  var RetVal = false;
  if (is_Variable(Variable,'object') && !is_null(Variable)) {
    RetVal = true;
    }
  return RetVal;
  }
/**
 * @desc Ermittelt, ob es sich bei der ?bergebenen Variable um ein Objekt handelt
 * @param Mixed Variable - Pr?fvariable
 * @return Boolean
 */
function is_function(Variable) {
  return is_Variable(Variable,'function');
  }
/**
 * @desc Ermittelt, ob es sich bei der ?bergebenen Variable um eine Nummer
 * @param Mixed Variable - Pr?fvariable
 * @return Boolean
 */
function is_number(Variable) {
  return is_Variable(Variable,'number');
  }
/**
 * @desc Ermittelt, ob es sich bei der ?bergebenen Variable um einen String handelt
 * @param Mixed Variable - Pr?fvariable
 * @return Boolean
 */
function is_string(Variable) {
  return is_Variable(Variable,'string');
  }
/**
 * @desc Meta Funktion f?r Variablen Typ Abfrage
 * @param Mixed Variable - Pr?fvariable
 * @param String TypeName - Typ, auf den gepr?ft wird.
 * @return Boolean
 */
function is_Variable(Variable,TypeName) {
  var RetVal = false;
  if (typeof(Variable) == TypeName) {
    RetVal = true;
    }
  return RetVal;
  }

/**
 * @desc Funktion pr?ft, ob eine Variable gesetzt ist
 * @param Mixed Variable - Pr?fvariable
 * @param String TypeName - Typ, auf den gepr?ft wird.
 * @return Boolean
 */
function is_set(Variable) {
  return typeof(Variable) == 'undefined';
  }
/**
 * Funktion wird benutzt, um Global die Anzeige von etwaigen Fehlermeldungen setuern zu k?nnen
 */
function eMsg(Message) {
  alert(Message);
  }


/**
 * Function to add Load events
 */
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload == 'undefined') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
};


/**
 * function determines the topmost window of the window stack to which script has access
 **/
function getTopWindow(){
  var r=window,p=r.parent,a=true,b;
  try{
    while((r!==p)&&(a=p.location.href)){
      r = p;
      p = r.parent;
      }
    }
  catch(err){}
  return r;
  };

/**
 * Function to support transparent Pop Up/In opening for onclick handlers (i.e. asnm adds)
 */
 function addPop(Url)
 {
    openWindow(Url,750,800,true);
    return false;
 }

