///* geaendert seit Hochladen 091020:
//	100803: ie8-Fehlermeldung in Zeile 247/248 wird jetzt abgefangen
 //* 091222: der errorLogger wird je nach url auf true oder false gesetzt
 //  - noch nicht hochgeladen */

function mailwarnung(input, def) {
	if (!mailvalid(input) || input == def) {
		return false;
	} else {
	 	return true;
	}
}

function telefonwarnung(input) {
	if (!istZahl(input)) {
		alert ('In Ihre Telefonnummer hat sich ein Tippfehler eingeschlichen.\nBitte geben Sie sie noch einmal ein!');
		return false;
	} else {
	 	return true;
	}
}


function kalkorr (hintermin, ruecktermin) {
	if (ruecktermin < hintermin) {
		alert ('Das Hinreisedatum muss vor dem R&uuml;ckreisedatum liegen.');
		ruecktermin.value ="";
	}
}

function int_einsetzen(feld, eingabe, text) {
   if (!eingabe || eingabe=="undefined") // so ein feld soll ja auch leer sein dürfen. ina 29.08.2008 09:39
   	   return true;
   if (eingabe/parseFloat(eingabe) != 1) {
       feld.value = feld.defaultValue; 
       fehlertext(feld, text) // fehlertext() befindet sich in den einzelnen JS-Dateien, z.B. buchung.js
	return false;
   } else {
       feld.value = parseFloat(eingabe);
       return true;
   }
}

function getKonkreterTermin() { // wird gebraucht von rundreise_infos.tpl und von buchung.tpl, ps 080729
    var konkreterTermin;
    termine.each(function(termin) {
	if (termin.id == $('terminsformular').firstDescendant().id.substr(1)) {
	    konkreter_termin = termin;
	}
    }); // termin.each
    return konkreter_termin;
}

function _updateKastenhoehe(kastenhoehe) {
	if ($('kr1') && $('kr2') && $('kr3')) {
		if (kastenhoehe == undefined ) var kastenhoehe = _getKaestenrechts();
		entferneId('sandabstand');
		var sandabstand = document.createElement("div");
		sandabstand.id = "sandabstand";
		var vornehoehe = $('vorne').offsetHeight;
		if (vornehoehe > kastenhoehe) {
			sandabstand.style.height = vornehoehe - kastenhoehe+"px"; // schick waers, wenn sandabstand in inhalt hineingehaengt wuerde, dann gaebs auch runde ecken, ps 080805
			//($('kr3')!=undefined) ? ($('kr3').insertBefore(sandabstand, $('kr3').select('.unten')[0])) : ($('kr2').insertBefore(sandabstand, $('kr2').select('.unten')[0]));
			($('kr3')!=undefined) ? ($('kr3').select('.unten')[0].appendChild(sandabstand)) : ($('kr2').select('.unten')[0].appendChild(sandabstand));
		} else if (kastenhoehe > vornehoehe) {
			if (layouttyp == "buchung" ||layouttyp == "buchung2" ||layouttyp == "buchung3" ||layouttyp == "buchung4") {
				$('buchung').style.height = kastenhoehe+"px";
			}
		}
	}
}

function _getKaestenrechts() {
	var kastenrechts = 0;
    if ($('kr1')!=undefined)
	    kastenrechts += $('kr1').offsetHeight;
    
    if ($('kr2')!=undefined)       
	    kastenrechts += $('kr2').offsetHeight + 9;
    if ($('kr3')!=undefined)       
	    kastenrechts += $('kr3').offsetHeight + 9;
    return kastenrechts;
}


function faqtextzeigen(elm,id) {
	
	// $("faqantwort_"+id).className='einblenden';
	//$("faqantwort_"+id).show();
	//$("faqantwort_"+id).style.display = "block";
	// alert (id);
	
	var text = $("faqantwort_"+id).innerHTML;
	var title= $("faqfrage_"+id).innerHTML;
	// $$(".ausblenden").each(function(element){element.hide()});
	// $$(".tabli").each(function(element){element.src="image/rahmen/tabli.gif";} )	
	
	
	if ($('faqtext')) {
		var faqtext = $('faqtext'); // falls schon ein FAQ-Fenster offen ist, wird es erst mal hier geschlossen 
		try {
			if (!text) {
				Effect.Fade('faqtext', {duration: 0.5}); // falls kein neues geoeffnet wird, mit Effect, 
			} else {
				faqtext.parentNode.removeChild(faqtext); 				// sonst ohne Effect
			}
			aktivieren(elm, false);
		}
		catch (e) {};
	}
	if (text) {
		faqtextwrap = document.createElement("div");
		faqtextwrap.id = "faqtext";
		faqtextwrap.style.width = "670px";
		faqtextwrap.style.top = "80px";
		faqtextwrap.style.right = "50px";
		faqtextwrap.style.position = "absolute";
		faqtextwrap.style.fontSize = "1em";
		//faqtextwrap.style.width = "200px";
		faqtextwrap.style.fontWeight = "normal";
		faqtitle = document.createElement("div");
		faqtitle.id = "faqtitle";
		faqtitle.innerHTML = title;
		faqtextwrap.appendChild(faqtitle);
		if (text) {
			faqtext = document.createElement("div");
			faqtext.innerHTML = text;
			faqtextwrap.appendChild(faqtext);
		}
		faqschliessen = document.createElement("p");
		faqschliessen.style.float = "right";
		faqschliessen.style.marginTop = "10px";
		faqschliessen.style.background = "#fff";
		faqschliessen.innerHTML = "<a>schlie&szlig;en</a> <img src=\"image/symbole/schliessen.gif\" />";
		faqtextwrap.appendChild(faqschliessen);
		faqgeklickt = true;
		$('containerinhalt').appendChild(faqtextwrap);
		Effect.Appear('faqtext');
	}
}

function toggleBildnachweis(plural) {
	if ($('einzelneBWs').style.display != "block") {			
		$('einzelneBWs').style.display = "block";
		$('einzelneBWs').scrollTo(); // scriptaculuous' Effect.ScrollTo sieht zwar huebscher aus, funktioniert aber nicht so zuverlaessig, ps 090219 16:04
		$('bildnachweislink').innerHTML = "weitere"+(plural ? "" : "n")+" Bildnachweis"+(plural ? "e" : "")+" ausblenden";
	} else {	
		Effect.BlindUp('einzelneBWs');
		$('bildnachweislink').innerHTML = "weitere"+(plural ? "" : "n")+" Bildnachweis"+(plural ? "e" : "")+" anzeigen";
	}
}

function konkrete_reise_einfuegen(gewaehlteClass) {  // wird aufgerufen, wenn in der Tabelle mit den verschiedenen Reiseterminen und -preisen eine konkrete Zeile angeklickt wurde
	if (gewaehlteClass.substr(1,1) == "_") 
			var id = gewaehlteClass.substr(2);
	else 	var id = gewaehlteClass;

	// Links zur Buchung werden veraendert (und ggf. andere, die die Klasse .terminOrtWechselt haben)
	$$('.terminOrtWechselt').each(function(link) {
		linkZiel = link.href;
		linkTeile = linkZiel.split("&");
		linkZiel = linkTeile[0];
		for (var i=1; i<linkTeile.length; i++) {
			if (linkTeile[i].substr(0,6) != "termin")
				linkZiel += '&'+linkTeile[i];
		}
		link.href = linkZiel;
		if (id != 0)
			link.href += '&termin='+id;
	});
	if (id != 0) {	
		termine.each(function(termin) {
			if (termin.id == id) { // wenn richtiger Termin
					if (termin.dauer && $("fakten")) { // wenn der untere blaue Kasten da ist, wird dort die neue Reisedauer eingetragen
						$$('span.personpreis').each(function(personpreis) {
							// fuer jede Unterkunft wird der Preis pro Person eingetragen
							termin.unterkuenfte.each(function(unterkunft) {
								personpreis.innerHTML = 'nicht verf&uuml;gbar';
								if ('personpreis'+unterkunft.id == personpreis.id) {
									personpreis.innerHTML = "ab " + geld(unterkunft.preis) +" &euro;";
									throw $break;
								}
							}) // unterkunft.each
						}) // personpreis.each
					} 
					if (buchbar==1) {
						//$("rechtzeitig_buchen").innerHTML = "bis zum "+"11.11.2099"; // vorlaeufig gibt es diese Daten noch nicht,
						 // deshalb werden sie nicht angezeigt, ps 080812 */
						if ($('nachform'))
							$("nachform").select('span')[0].innerHTML = termin.dauer+" Tag"+(termin.dauer==1?"":"e");
						if ($('preis_terminskasten'))
							$("preis_terminskasten").innerHTML = geld(termin.billigste);
					}//if (typeof layouttyp != "undefined" && layouttyp == "infos") {spalten(0,0)}; //unabdingbar!!!
				preisabstandp = 0;
			} //if
		}) // termin.each
	} else {
		if ($('nachform'))
			$("nachform").select('span')[0].innerHTML = textanztermine;
	}
	
	// select-felder sollen sich gegenseitig umbelegen
	if (typeof(layouttyp) != "undefined" && layouttyp == "infos" && termine.length > 0) {
		if (gewaehlteClass.substr(0,1) == "u") {
			$$('.o_'+id)[0].selected = true;
		}
		if (gewaehlteClass.substr(0,1) == "o") {
			$$('.u_'+id)[0].selected =true;
		}
	}
	if (typeof(layouttyp) != "undefined" && layouttyp == "buchung") summeBilden();
	if (typeof(startorte) != "undefined")
		changeOrtsSelect(id);
}

function konkreten_ort_einfuegen(gewaehlteClass) {
	var id = gewaehlteClass;
	if (gewaehlteClass.substr(1,1) == "_")
		id = id.split("_")[1];
	$$('.terminOrtWechselt').each(function(link) {
		linkZiel = link.href;
		linkTeile = linkZiel.split("&");
		linkZiel = linkTeile[0];
		for (var i=1; i<linkTeile.length; i++) {
			if (linkTeile[i].substr(0,7) != "station")
				linkZiel += '&'+linkTeile[i];
		}
		link.href = linkZiel+'&station='+id;
	});
	changeTerminsSelect(id);
}

function changeTerminsSelect(ortId) {
// aendern der select-Moeglichkeiten bei Termin und deaktivieren von "bitte waehlen" in #startorte
	terminsfelder = Array();
	if ($('terminid'))
		terminsfelder[0] = $('terminid');
	if ($('reisetermine'))
		terminsfelder[1] = $('reisetermine');

	if (terminsfelder.length > 0 && typeof(terminabfahrten) != "undefined" && terminabfahrten != 0) {
		terminsfelder.each(function(terminsfeld, index) {
			if (ortId <= 0) {
				terminsfeld.select('option').each(function(opt) {
					aktiviere(opt);
				});
			} else {
				if (terminsfeld) {
					terminsfeld.select('option').each(function(opt, index) {
						if (index > 0) {
							if (opt.className.search(/_/) > 0)
									var terminsId = opt.className.split('_')[1];
							else 	var terminsId = opt.className;
							if (terminabfahrten && terminabfahrten[terminsId] && terminabfahrten[terminsId][ortId]) {
								if (terminabfahrten[terminsId][ortId] && opt.disabled) 
									aktiviere(opt);
							} else if (index > 0) { 
								deaktiviere(opt);
							}
						}
					});
				}
			}
		});
		// "Bitte waehlen" wird disabled, ohne dass Klammern gesetzt werden
		if ($('startorte'))
			$('startorte').select('option')[0].disabled = "disabled";
	}
}

function changeOrtsSelect(id) {
// aendern der Auswahlmoeglichkeiten in #startorte und deaktivieren von "Bitte waehlen" in #terminid
	if (typeof(terminabfahrten) != "undefined" && terminabfahrten != 0) { // alternativ: if (window.terminabfahrten)
		if (id <= 0) {
			$('startorte').select('option').each(function(opt) {
				aktiviere(opt);
			})
		} else if ($('startorte') && $('startorte') != null && typeof(startorte) != "undefined") {
			$('startorte').select('option').each(function(opt, zaehler) {
				var index = zaehler -1;
				if (index != startorte.length) {
					if (opt.className.search(/_/) > 0)
							var ortsid = opt.className.split('_')[1];
					else	var ortsid = opt.className;
					if (index >= 0 && terminabfahrten && terminabfahrten[id] && terminabfahrten[id][ortsid] && terminabfahrten[id][ortsid].vorhanden == "1") {
						if (terminabfahrten[id][ortsid].zuschlag != "undefined" && terminabfahrten[id][ortsid].zuschlag != null) {
							if (opt.disabled) 
								aktiviere(opt);
							opt.innerHTML = opt.innerHTML.split(/\+[0-9]+/)[0];
							opt.innerHTML = opt.innerHTML.split(/\-[0-9]+/)[0];
							if (terminabfahrten[id][ortsid].zuschlag >= 0) 
									opt.innerHTML = opt.innerHTML+' +'+geld(terminabfahrten[id][ortsid].zuschlag)+' &euro;';
							else 	opt.innerHTML = opt.innerHTML+' '+geld(terminabfahrten[id][ortsid].zuschlag)+' &euro;';
						} 
					} else if (index >= 0)  // wenn keine Abfahrt moeglich
						deaktiviere(opt);
				}
			})
		}
		// "Bitte waehlen" wird disabled, ohne dass Klammern gesetzt werden
		if ($('terminid'))
			$('terminid').select('option')[0].disabled = "disabled";
		if ($('reisetermine'))
			$('reisetermine').select('option')[0].disabled = "disabled";
	}
}

function aktiviere(opt) {
	opt.removeAttribute("disabled");
	var text = opt.innerHTML;
	var laenge = text.length
	if (text.substr(0,1) == "(" && text.substr(laenge-1, laenge) == ")")
		opt.innerHTML = text.substr(1, laenge-2);
}

function deaktiviere(opt) {
	if (opt.innerHTML.search(/\&euro;/) > -1) {
		opt.innerHTML = opt.innerHTML.split(/\+[0-9]+/)[0];
		opt.innerHTML = opt.innerHTML.split(/\-[0-9]+/)[0];
	}
	if (opt.innerHTML.substr(0,1) != "(")
		opt.innerHTML = "("+opt.innerHTML+")";
	opt.disabled = "disabled";
	if ($('termin_ort_hinweis')) {
		$('termin_ort_hinweis').style.textDecoration = "underline";
		$('termin_ort_hinweis').style.fontWeight = "bold";
	}
}


// vorbelegte Eingabefelder werden geleert, wenn ihr Inhalt noch nie geaendert wurde
// aufzurufen bei onclick
// ps 080624
function leeren (elm) {
	if (elm.value==elm.defaultValue) 
	{
		elm.value='';
	};

}

// validiert E-Mail-Adresse grob vor, returned boolean
function mailvalid(input) {
	if (input.indexOf("@") > "1" && input.indexOf(".") < (input.length-2)) 
	{
		return true;
	} else 
	{
		return false;
	};
}

function istZahl(input){
	if (input.match(/^[0-9]+$/)) {
		return true ;
	} else {
		return false;
	}
}



//schaltet einen hovereffekt ein bei aufruf hover(this,true)
//und wieder aus bei hover(this, false)
//und bietet die moeglichkeit, einen Link zu aktivieren (zuvor aktivierter Link wird dann deaktiviert)
//bei aktivieren(this)
//dazu gehoeren die classes element, elementhover und elementaktiv
//ps 080715
//
function hover(elm, hover) {
	if (elm.id == aktiv || elm.className.substr(elm.className.length-5, elm.className.length) == "aktiv") { // nur wenn elm nicht aktiv ist, soll weiter unten das hovern ablaufen
		if (elm.className.substr(elm.className.length-5, elm.className.length) != "aktiv") { // zusaetzliche Korrektur
			elm.className = elm.className+"aktiv";
		}
	} else {  //normales hovern fuer nicht-aktive Elemente
		if (hover) 
		{
			if (elm.className.substr(elm.className.length-5, elm.className.length) != "hover") {
				elm.className += "hover";
			}
		} else if (!hover) {
			if (elm.className.substr(elm.className.length-5, elm.className.length) == "hover") {
				elm.className = elm.className.substr(0, elm.className.length-5);
			}
		}
	}
}

function aktivieren(elm, einaus) { // Aufruf z.B. bei onclick; wird ausserdem nach spaltenleeren() aufgerufen (spalten.js)
	if (elm && (einaus == undefined || einaus == true)) {
    	var pn = $(elm.id).ancestors()[0];
    	var kinderdeselternelements = $(pn.id).childElements();
    	if (kinderdeselternelements.length) {
		    kinderdeselternelements.each(function(aktiviert) {
					if (aktiviert.className.substr(aktiviert.className.length-5, aktiviert.className.length) == "aktiv") { // altes deaktivieren
						aktiviert.className = aktiviert.className.substr(0, aktiviert.className.length-5);
					}
				});
			}
	    var aktiv=elm.id; // neues elm auf aktiv setzen
	    if (elm.className.substr(elm.className.length-5, elm.className.length) == "hover" || elm.className.substr(elm.className.length-5, elm.className.length) == "aktiv") { // rein vorsorglich
		    elm.className = elm.className.substr(0, elm.className.length-5);
	    }
			elm.className = elm.className + "aktiv"; // neues aktives bekommt neue css-class
	} else { // einaus == false
		    if (elm && (elm.className.substr(elm.className.length-5, elm.className.length) == "aktiv") ) { // altes deaktivieren
			    elm.className = elm.className.substr(0, elm.className.length-5);
		    }
	}
}


function toggleCheckbox(elm) {
	(elm.checked == "checked") ? elm.checked == "unchecked" : elm.checked == "checked";
	
}


function entferneId(id) {
	if ($(id)) $(id).parentNode.removeChild($(id));
}


function entferneClass(klassenname) {
	$$('.'+klassenname).each(function(klasse) 
	{
		klasse.parentNode.removeChild(klasse);
	});
}

///***************************************************
 //* Java-Error-Logger nach http://www.codeproject.com/KB/trace/LogJavaScriptErrors.aspx
 //***************************************************/
var loc = document.location.toString();
var online = (loc.startsWith("http://www.viaronda.de") || loc.startsWith("https://www.viaronda.de")
							|| loc.startsWith("http://viaronda.de") || loc.startsWith("https://viaronda.de"));
var isDebugging = (online ? false : true);
var logJsErrors = true;
function ErrorSetting(msg, file_loc, line_no) {
    var e_msg=msg;
    var e_file=file_loc;
    var e_line=line_no;
    var   error_d = "Error in file: " + file_loc +"\nline number:" 
            + line_no +
                        "\nMessage:" + msg;
	var file_loc_0 = file_loc.split('?')[0];
	var file_loc_1 = file_loc.split('?')[1];

    if(logJsErrors) {
			theData = "file="+file_loc_0+(file_loc_1 != "undefined"?"&reise="+file_loc_1:"")+"&line="+line_no+"&err="+msg+"&java="+navigator.javaEnabled();
			url = "include/ajaxerrorLogger.php";
			var myAjax = new Ajax.Request(  url, {method: 'post', parameters: theData} );
    }

    if(isDebugging)
        alert("Selbst generierte Javascript-Fehlermeldung: !!!\n--------------\n"+theData);
	 if ($('spinner'))
		 $('spinner').hide();

     return true;
}
window.onerror = ErrorSetting;     



