
function sh(id,a){
	if (document.getElementById(id)){
		document.getElementById(id).style.display=a;
	}
}
function switchsh(id){
	if (document.getElementById(id)){
		if (document.getElementById(id).style.display=="block"){
			document.getElementById(id).style.display="none";
		} else {
			document.getElementById(id).style.display="block";
		}
	}
}
function switchtabs(url,wrapper,bt_id){
	getsrc(url,wrapper);
	if (document.getElementById("switch_hotels")){
		document.getElementById("switch_hotels").className="";
	}
	if (document.getElementById("switch_packages")){
		document.getElementById("switch_packages").className="";
	}
	if (document.getElementById(bt_id)){
		document.getElementById(bt_id).className="active";
	}
	

}

function mktimestamp(y,m,d){ // convert from y-m-d to unix-timestamp
	var fd = new Date(Date.UTC(y, m-1, d));
	return (fd.getTime()/1000.0);
}
function mkhumandate(timestamp){ // convert from unix-timestamp to y-m-d
    var d = new Date(timestamp * 1000);
    s = d.toGMTString();
    arr = s.split(" ");
	return arr[3] + "-" + getMonthNum(arr[2]) + "-" + arr[1];
}

/******************* AJAX - FUCTIONS */
//object detection to return the correct object depending upon broswer type. Used by the getAXHA(); function.
function getNewHttpObject() {
    var objType = false;
    try {
        objType = new ActiveXObject('Msxml2.XMLHTTP');
    } catch(e) {
        try {
            objType = new ActiveXObject('Microsoft.XMLHTTP');
        } catch(e) {
            objType = new XMLHttpRequest();
        }
    }
    return objType;
}

//Function used to update page content with new xhtml fragments by using a javascript object, the dom, and http.
function getsrc(url,elementContainer){

		//document.getElementById(elementContainer).innerHTML = '<blink class="redtxt">Loading...<\/blink>';
		var theHttpRequest = getNewHttpObject();
		
		
		theHttpRequest.onreadystatechange = function() {processAXAH(elementContainer);};
		theHttpRequest.open("GET", url);
		theHttpRequest.send(false);
	
		function processAXAH(elementContainer){
			if (theHttpRequest.readyState == 4) {
                        if (theHttpRequest.status == 200) {
                           document.getElementById(elementContainer).innerHTML = theHttpRequest.responseText;
                        } else {
                              document.getElementById(elementContainer).innerHTML="<p><span class='redtxt'>Error!<\/span> HTTP request return the following status message:&nbsp;" + theHttpRequest.statusText +"<\/p>";
                        }
			}
		}

			
}

//Function used to update page content with new xhtml fragments by using a javascript object, the dom, and http.
function add_row(url,elementContainer){

		today = new Date();
		microtime = today.getMilliseconds() + today.getSeconds()*1000 + today.getMinutes()*60*1000 + today.getHours()*60*60*1000;

		var url = url + "&" + microtime;
		var theHttpRequest = getNewHttpObject();
		
		
		theHttpRequest.onreadystatechange = function() {processAXAH(elementContainer);};
		theHttpRequest.open("GET", url);
		theHttpRequest.send(false);
	
		function processAXAH(elementContainer){
			if (theHttpRequest.readyState == 4) {
                        if (theHttpRequest.status == 200) {
							var wrapper = document.getElementById(elementContainer);
							var newrow = document.createElement("div");
							wrapper.appendChild(newrow);
							newrow.innerHTML = theHttpRequest.responseText;							
                        } 
			}
		}

			
}


function expandcontent(cid){
	if (document.getElementById){
		for(i=1; i<=10; i++){
			if (i<=cid){
				document.getElementById("childage"+i).style.display="block";
			} else {
				document.getElementById("childage"+i).style.display="none";
				document.getElementById("age"+i).value="0";
			}
		}
	}
}
function externalLinks() {
 if (!document.getElementsByTagName) return;
 var anchors = document.getElementsByTagName("a");
 for (var i=0; i<anchors.length; i++) {
   var anchor = anchors[i];
   if (anchor.getAttribute("href") &&
       anchor.getAttribute("rel") == "external")
     anchor.target = "_blank";
 }
}
window.onload = externalLinks;




//////////////////// GetElementByClassName

function getElementsByClassName(oElm, strTagName, oClassNames){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    var arrRegExpClassNames = new Array();
    if(typeof oClassNames == "object"){
        for(var i=0; i<oClassNames.length; i++){
            arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames[i].replace(/\-/g, "\\-") + "(\\s|$)"));
        }
    }
    else{
        arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames.replace(/\-/g, "\\-") + "(\\s|$)"));
    }
    var oElement;
    var bMatchesAll;
    for(var j=0; j<arrElements.length; j++){
        oElement = arrElements[j];
        bMatchesAll = true;
        for(var k=0; k<arrRegExpClassNames.length; k++){
            if(!arrRegExpClassNames[k].test(oElement.className)){
                bMatchesAll = false;
                break;                      
            }
        }
        if(bMatchesAll){
            arrReturnElements.push(oElement);
        }
    }
    return (arrReturnElements)
}

//////////////////// IE - HOVER

function iehover(id,classname){
	if (document.getElementById(id)){
		if (getElementsByClassName(document.getElementById(id),"div",classname)){
			var classes = getElementsByClassName(document.getElementById(id),"div",classname);
			for (var i=0; i<classes.length; i++) {
				classes[i].onmouseover = function(){
					this.style.background = "#f3f3f3";
				}
				classes[i].onmouseout = function(){
					this.style.background = "";
				}
			}
		}
	}
	
}
///////////////////  Tooltipps

tooltipaktive = false;
function getMousePos(e) {
	if (document.all) { // IF is IE
		mousex=event.x + document.documentElement.scrollLeft; 
		mousey=event.y + document.documentElement.scrollTop;
	}
	else {mousex=e.pageX; mousey=e.pageY;}
	if(tooltipaktive == true){
		document.getElementById("tooltip_div").style.left = (mousex+10) + "px";
		document.getElementById("tooltip_div").style.top = (mousey+5) + "px";
	}
	//ret = new Array(mousex, mousey);
	//return ret;
}
document.onmousemove = getMousePos;
function tooltip_init(cname){
	
	var classes = getElementsByClassName(document.body,"a",cname);
	for(i=0; i<classes.length; i++){
		classes[i].onmouseover = function(){
			showTooltip(this);
			
		}
		classes[i].onmouseout = function(){
			hideTooltip();
		}
		classes[i].href="javascript:void(0);";

	}
	/* for(i=0; i<document.images.length; i++){
		if(document.images[i].className == cname){
			document.images[i].onmouseover = function(){
				showTooltip(this);
			}
			document.images[i].onmouseout = function(){
				hideTooltip();
			}
			document.images[i].alt_h = document.images[i].alt;
			document.images[i].alt = "";
		}
	}*/
	
}
function showTooltip(obj){
	var mydiv = document.createElement("div");
	mydiv.id = "tooltip_div";
	mydiv.style.position = "absolute";
	mydiv.style.left = (mousex+10) + "px";
	mydiv.style.top = (mousey+5) + "px";
	//alert(obj.id);
	
	var myText = document.createTextNode(document.getElementById("tooltip_"+obj.id).innerHTML);
	
	mydiv.innerHTML = document.getElementById("tooltip_"+obj.id).innerHTML;
	document.body.appendChild(mydiv);
	tooltipaktive = true;
}
function hideTooltip(obj){
	knoten = document.body.childNodes[document.body.childNodes.length-1];
	if(knoten.id == "tooltip_div"){
		document.body.removeChild(knoten);
	}
	tooltipaktive = false;
}


function getCurrentStyle(obj, prop){  // Gibt den Wert des abgefragten CSS-Wertes zurück
	if(obj.currentStyle){
		if(obj.currentStyle.getAttribute(prop.replace(/\-/g, ""))){
			return obj.currentStyle.getAttribute(prop.replace(/\-/g, ""));
		}
		return "";
	}
	else if(document.defaultView && document.defaultView.getComputedStyle){
		if(document.defaultView.getComputedStyle(obj,"").getPropertyValue(prop)){
			return document.defaultView.getComputedStyle(obj,"").getPropertyValue(prop);
		}
		return "";
	}
	else if(window.getComputedStyle){
		if(window.getComputedStyle(obj,"").getPropertyValue(prop)){
			return window.getComputedStyle(obj,"").getPropertyValue(prop);
		}
		return "";
	}
	else{
		if(obj.style.getAttribute(prop.replace(/\-/g, ""))){
			return obj.style.getAttribute(prop.replace(/\-/g, ""));
		}
		return "";
	}
}


function setTab(obref, id){
	for(i=0; i<obref.parentNode.parentNode.getElementsByTagName("a").length; i++){
		obref.parentNode.parentNode.getElementsByTagName("a")[i].className = "";
	}
	for(i=0; i<obref.parentNode.parentNode.parentNode.getElementsByTagName("div").length; i++){
		if(obref.parentNode.parentNode.parentNode.getElementsByTagName("div")[i].id.indexOf("tc_")!=-1){
			obref.parentNode.parentNode.parentNode.getElementsByTagName("div")[i].style.display = "none";
		}
	}
	document.getElementById("tc_" + id).style.display = "block";
	obref.className = "active";
	obref.blur();
	return false;
}


/*/////////////////////////////////////////////////////////////////////////////////
                                    JS Kalender
	Beispiel:
		kalender = new Calender(document.getElementById('jscalender'), 'de');
		kalender.callBackFunction = function(tag,monat,jahr){
			document.forms[0].vdd.value = tag;
			document.forms[0].vmm.value = monat;
			document.forms[0].vyy.value = jahr;
			kalender.hide();
		}
	callBackFunction wird aufgerufen wenn auf ein Datum geklickt wird
/////////////////////////////////////////////////////////////////////////////////*/
function Calender(obref, lang){
	var self = this;
	this.obref = obref;
	this.day_names_l = new Array();
	this.month_names_l = new Array();
	this.day_names_l['de'] = new Array('Mo','Di','Mi','Do','Fr','Sa','So');
	this.month_names_l['de'] = new Array('Jänner','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember');
	this.day_names_l['en'] = new Array('Mo','Tu','We','Th','Fr','Sa','Su');
	this.month_names_l['en'] = new Array('January','February','March','April','May','June','July','August','September','October','November','December');
	this.day_names_l['fr'] = new Array('Lu','Ma','Me','Je','Ve','Sa','Di');
	this.month_names_l['fr'] = new Array('Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre');
	this.day_names_l['it'] = new Array('Lun','Mar','Mer','Gio','Ven','Sab','Dom');
	this.month_names_l['it'] = new Array('gennaio','febbraio','marzo','aprile','maggio','giugno','luglio','agosto','settembre','ottobre','novembre','dicembre');
	this.day_names = this.day_names_l[lang];
	this.month_names = this.month_names_l[lang];
	this.days = new Array();
	this.init = function(){
		html_output = '<div class="jsc_head"><a class="jsc_back" href="javascript:void(0);">&laquo;</a><h2></h2><a class="jsc_next" href="javascript:void(0);">&raquo;</a></div>\n';
		html_output += '<div class="jsc_body">\n';
		for(i=0;i<7;i++){
			html_output += '<span>' + self.day_names[i] + '</span>\n';
		}
		zw=0;
		for(i=0;i<41;i++){
			zw++;
			if(zw==6 || zw==7){
				html_output += '<a href="javascript:void(0);" class="jsc_special"></a>\n';
			}
			else{
				html_output += '<a href="javascript:void(0);"></a>\n';
			}
			if(zw==7){
				zw=0;
			}
		}
		html_output += '<a class="jsc_close" href="javascript:void(0);">x</a>\n';
		html_output += '</div>';
		self.obref.innerHTML = html_output;
		self.obref.getElementsByTagName('a')[self.obref.getElementsByTagName('a').length-1].onclick = function(){
			self.hide();
		}
		self.obref.getElementsByTagName('a')[0].onclick = function(){
			if(self.akt_month>1){
				self.setDate(self.akt_month-1, self.akt_year);
			}
			else{
				self.setDate(12, self.akt_year-1);
			}
		}
		self.obref.getElementsByTagName('a')[1].onclick = function(){
			if(self.akt_month<12){
				self.setDate(self.akt_month+1, self.akt_year);
			}
			else{
				self.setDate(1, self.akt_year+1);
			}
		}
		for(i=2;i<43;i++){
			self.obref.getElementsByTagName('a')[i].onclick = function(){
				self.itemOnClick(this);
			}
		}
		zw = new Date();
	}
	this.show = function(){
		self.obref.style.display = 'block';
	}
	this.hide = function(){
		self.obref.style.display = 'none';	
	}
	this.setDate = function(month, year){
		self.akt_month = month;
		self.akt_year = year;
		blankdays = new Date(year,month-1,1).getDay();
		blankdays += -1;
		if(blankdays<0){
			blankdays=6;
		}
		for(i=27;month-1==new Date(year,month-1,i).getMonth();i++){
			maxdays = i;
		}
		for(i=0;i<blankdays+1;i++){
			self.days[i] = '';
		}
		for(i=i-1;i<maxdays+blankdays;i++){
			self.days[i] = i-blankdays+1;
		}
		for(;i<41;i++){
			self.days[i] = '';
		}
		self.aktualHTML();
	}
	this.aktualHTML = function(){
		self.obref.getElementsByTagName('h2')[0].innerHTML = self.month_names[self.akt_month-1] + ' ' + self.akt_year;
		for(i=0;i<self.days.length;i++){
			self.obref.getElementsByTagName('a')[i+2].innerHTML = self.days[i];
			self.obref.getElementsByTagName('a')[i+2].className = self.obref.getElementsByTagName('a')[i+2].className.replace(/jsc_blank/gi, '');
			if(self.days[i]==""){
				self.obref.getElementsByTagName('a')[i+2].className += " jsc_blank";
			}
		}
	}
	this.itemOnClick = function(obj){
		if(obj.innerHTML!=''){
			self.callBackFunction(obj.innerHTML*1,self.akt_month,self.akt_year);
		}
	}
	this.hide();
	this.init();
	self.setDate(zw.getMonth()+1,zw.getFullYear());
}



function setDate(id, month, date, year, lang, inputid)	{
	if (lang=="en") {
		date = date+"/"+month+"/"+year;
	} else {
		date = date+"."+month+"."+year;
	}
	document.getElementById(inputid).value=date;
	cal_close(id);
}
function setValue(id,value,closeid){
	document.getElementById(id).value=value;
	if (closeid){
		sh(closeid,'none');
	}
}
function checktraveltype(){
	if (document.getElementById("outbound_dates") && document.getElementById("typ_einfach")){
		if (document.getElementById("typ_einfach").checked){
			sh('outbound_dates','none');
		}
	}
}
function setactiverow(id,rownum,classname) {
	if (document.getElementById(id+rownum)){
		var classes = getElementsByClassName(document.body,"div",classname);
		for (var i=0; i<classes.length; i++) {
			classes[i].className = classname;
		}
		
		document.getElementById(id+rownum).className = document.getElementById(id+rownum).className + " active" ;
	}

}

/*/////////////////   Search   //////////////////////*/
function searchinit(lang,input,result){
	if(!searchresult){
		var searchresult = new Array();
	}
	var searchinput=document.getElementById(input);
	searchresult[input]=document.getElementById(result);
	
	var en_searchinputvalue = "";
	var en_searchresultvalue = "Enter search criterium";

	var de_searchinputvalue = "";
	var de_searchresultvalue = "Geben sie einen Suchbegriff ein.";	
	
	if (!lang) {
		lang = "de";
	}
	//alert(eval(lang+"_searchinputvalue"));
	searchinput.onblur = function() {
		if (searchinput.value==""){searchinput.value=eval(lang+"_searchinputvalue");}
		window.setTimeout('sh("'+result+'","none");', 500);
	}
	searchresult[input].onfocus = function() {
		sh(result,"block");
	}
	searchinput.onkeydown = function() {
		if (searchinput.value==eval(lang+"_searchinputvalue")){searchinput.value="";}		
		document.getElementById(result).innerHTML = '<p>'+eval(lang+"_searchresultvalue")+'</p>';
		sh(result,"block");
	}
	searchinput.onkeyup = function(evt){
		if (searchinput.value==""){
			sh(result,"none")
		} else {
			sh(result,"block")
		}

		var terms="";
		var terms=this.value;
		var searchurl = "/step1.php?action=search&terms="+terms+"&lang="+lang+"&input="+input;
		if (evt) { 
			key = evt.keyCode;
		} else {
		    key = event.keyCode;
		}
		if (key!=37 && key!=38 && key!=39 && key!=40){ // search if no arrow-keys!
			document.activeid=-1;
			getsrc(searchurl,result);		
		}		
	}

	searchinput.onkeydown = function(evt){		
	
		activeid=document.activeid;
		if(searchresult[input].getElementsByTagName("UL").length >0){
			for (i=0;i<searchresult[input].getElementsByTagName("UL")[0].getElementsByTagName("LI").length;i++){
				searchresult[input].getElementsByTagName("UL")[0].getElementsByTagName("LI")[i].getElementsByTagName("A")[0].id="searchlist"+input+i;
				document.getElementById("searchlist"+input+i).className="";
			}
			var maxnum = i;
		}
		else{
			var maxnum = 0;
		}
		if (evt) { 
			key = evt.keyCode;
		} else {
			key = event.keyCode;
		}		
		if (key=="38"){ // up -> scroll up
			if (activeid<=0){activeid=0;}else{activeid = activeid-1;}
			document.getElementById("searchlist"+input+(activeid)).className="active";	

			searchinput.value=document.getElementById("searchlist"+input+(activeid)).innerHTML.replace("<strong>","").replace("</strong>","");	
			searchinput.value=searchinput.value.replace("<STRONG>","").replace("</STRONG>","");	
			
			
		} else if (key=="40"){ // down -> scroll down
			if(activeid>=maxnum-1){activeid=maxnum-1}else{activeid=activeid+1}
			document.getElementById("searchlist"+input+(activeid)).className="active";

			searchinput.value=document.getElementById("searchlist"+input+(activeid)).innerHTML.replace("<strong>","").replace("</strong>","");	
			searchinput.value=searchinput.value.replace("<STRONG>","").replace("</STRONG>","");	
			
			
		} else if (key=="13") {
			searchinput.blur();
			return false;
		}
		document.activeid = activeid;
	}
}
function setvalue(field,value){
	if (document.getElementById(field)){
		document.getElementById(field).value = value;
	}
}

/********* FORMCHECK */

function checkform(id,type,excludedvars,errormsg){ // excludedvars == text der nich drinnen stehn soll....
	element = document.getElementById(id);
	if (type=="email"){
		if (!checkemail(element.value)) { 
			//alert(errormsg);
			element.className+=" error";
			element.focus();
			return false;			
		}	else {
			element.className=element.className.replace(" error","");
		}
	} else if (type=="checkbox"){
		if (element.checked==false) { 
			//alert(errormsg);
			element.className+=" error";
			element.focus();
			return false;			
		}	else {
			element.className=element.className.replace(" error","");
		}
	} else if (type=="text") {
		if (excludedvars){
			if (element.value == excludedvars){
				//alert(errormsg);
				element.className+=" error";
				element.focus();
				return false;				
			} else {
				element.className=element.className.replace(" error","");
			}	
		} else {
			if (element.value == ""){
				//alert(errormsg);
				element.className+=" error";
				element.focus();
				return false;				
			} else {
				element.className=element.className.replace(" error","");
			}
		}
	}	
	return true;
}
function checkemail(emailStr){
	if (!emailStr.match(/^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$/)){
		return false;
	} else {
		return true;
	}
}