var url = "http://www.oberoesterreich-motorradurlaub.at/";

$(document).ready(function() {
	$(".showTooltip").tooltip({
		position: 'bottom center',
		offset: [10, 0],
   		effect: 'slide'					 
	});

});

function EMail(s) {
	var a = false;
	var res = false;
	if(typeof(RegExp) == 'function') {
		var b = new RegExp('abc');
		if(b.test('abc') == true) {
			a = true;
		} // if
	} // if
	if(a == true) {
		reg = new RegExp('^([a-zA-Z0-9\\-\\.\\_]+)'+'(\\@)([a-zA-Z0-9\\-\\.]+)'+'(\\.)([a-zA-Z]{2,4})$');
		res = (reg.test(s));
	} else {
		res = (s.search('@') >= 1 &&
		s.lastendexOf('.') > s.search('@') &&
		s.lastendexOf('.') >= s.length-5)
	} // if-lese
	return(res);
} // function

function setErrorMessages(lang) {
    
    if (lang == "de") {
	    var errorMessage = unescape("Bitte ausf%FCllen");
	    var errorMessageEmail = unescape("Keine g%FCltige e-Mail Adresse");
    } 
    if (lang == "en") {
        var errorMessage = unescape("Please fill in");
        var errorMessageEmail = unescape("No valid e-Mail Address");
    }
    if (lang == "fr") {
        var errorMessage = unescape("Complétez la case");
        var errorMessageEmail = unescape("L'e-Mail adresse n'est pas correct");
    }
    
    var errorMessages = new Array(errorMessage, errorMessageEmail);
    return errorMessages;
    
} // function

function setSpecialErrorMessages(lang) {
	
	if (lang == "de") {
		var errorMessage1 = unescape("Bitte ca. 25 W%F6rter eingeben");
		var errorMessage2 = unescape("Bitte ca. 200 W%F6rter eingeben");
	} // if
	
	var errorMessages = new Array(errorMessage1, errorMessage2);
    return errorMessages;
	
} // function

function setNumberErrorMessages(lang) {
	
	if (lang == "de") {
	    var errorMessage = unescape("Bitte eine nat%FCrliche Zahl eingeben");
    } 
    if (lang == "en") {
        var errorMessage = unescape("Please fill in a number");
    }
	return errorMessage;
	
} // function

function validateTextArea(lang, fields, error) {
	
	if (!error) {
		var error = false;
	} // if
	if (fields.length > 0) {
        for(i=0; i<=fields.length-1; i++) {
            var val = jQuery.trim($("#"+fields[i]).val());	
            if (val == "" ||  val == -1 || val == $("#"+fields[i]+"_errorMessage").val()) {
                error = true;
                $("#"+fields[i]).addClass('input_error').val($("#"+fields[i]+"_errorMessage").val());
            } else {
                $("#"+fields[i]).removeClass('input_error');
            } // if-else
        } // for
    } // if
    return error;
	
} // function

function validateFields(lang, fields, error) {

	if (!error) {
		var error = false;
	} // if
    var errorMessages = setErrorMessages(lang);
	var specialErrorMessages = setSpecialErrorMessages(lang);
    if (fields.length > 0) {
        for(i=0; i<=fields.length-1; i++) {
            var val = jQuery.trim($("#"+fields[i]).val());
            if (val == "" ||  val == -1 || val == errorMessages[0] || val == specialErrorMessages[0] || val == specialErrorMessages[1]) {
                error = true;
				// check ob es eine personalisierte errorMessage gibt
				if ($("#"+fields[i]+"_errorMessage").length > 0) {
					$("#"+fields[i]).addClass('input_error').val($("#"+fields[i]+"_errorMessage").val());
				} else {
					$("#"+fields[i]).addClass('input_error').val(errorMessages[0]);	
				}
            } else {
				if ($("#"+fields[i]+"_errorMessage").length > 0 && val == $("#"+fields[i]+"_errorMessage").val()) {
					error = true;
					$("#"+fields[i]).addClass('input_error').val($("#"+fields[i]+"_errorMessage").val());
				} else {
	                $("#"+fields[i]).removeClass('input_error');
				} // if-else
            } // if-else
        } // for
    } // if
    
	return error;

} // function

function validateNumberFields(lang, numberFields, error) {
    
	if (!error) {
		var error = false;
	} // if
    var numberErrorMessage = setNumberErrorMessages(lang);
    if (numberFields.length > 0) {
        for(i=0; i<=numberFields.length-1; i++) {
            var val = jQuery.trim($("#"+numberFields[i]).val());
            if (isNaN(val) == true || val == "") {
                error = true;
				// check ob es eine personalisierte errorMessage gibt
				if ($("#"+numberFields[i]+"_errorMessage").length > 0) {
					$("#"+numberFields[i]).addClass('input_error').val($("#"+numberFields[i]+"_errorMessage").val());
				} else {
	                $("#"+numberFields[i]).addClass('input_error').val(numberErrorMessage);
				} // if-else
            } else {
                $("#"+numberFields[i]).removeClass('input_error');
            } // if-else
			
        } // for
    } // if
   return error;
    
} // function

function validateLength(lang, fields, error) {
	
	if (!error) {
		var error = false;
	} // if
	if (fields.length > 0) {
		for(i=0; i<=fields.length-1; i++) {
			var val = jQuery.trim($("#"+fields[i]).val());
			if (val == $("#"+fields[i]+"_preFilledValue").val()) {
				error = true;
				if ($("#"+fields[i]+"_errorMessage").length > 0) {
					$("#"+fields[i]).addClass('input_error').val($("#"+fields[i]+"_errorMessage").val());
				} else {
					$("#"+fields[i]).addClass('input_error').val(numberErrorMessage);
				} // if-else
			} // if
			else if (val.length <= 6 || val == "") {
				error = true;
				if ($("#"+fields[i]+"_errorMessage").length > 0) {
					$("#"+fields[i]).addClass('input_error').val($("#"+fields[i]+"_errorMessage").val());
				} else {
					$("#"+fields[i]).addClass('input_error').val('Fehler');
				} // if-else
			} else {
				if ($("#"+fields[i]+"_errorMessage").length > 0) {
					if ($("#"+fields[i]).val() == $("#"+fields[i]+"_errorMessage").val()) {
						error = true;
						$("#"+fields[i]).addClass('input_error').val($("#"+fields[i]+"_errorMessage").val());
					} else {
						$("#"+fields[i]).removeClass('input_error');	
					} // if-else
				} else {
					$("#"+fields[i]).removeClass('input_error');
				} // if-else				
			} // if-else
		} // for
	} // if
	return error;
	
} // function

function validateTelefonFields(lang, fields, error) {
	
	if (!error) {
		var error = false;
	} // if
	var numberErrorMessage = setNumberErrorMessages(lang);
	var regTel = /^[+][0-9]{2}[(][0][)][0-9]{1,4}[/][0-9]{4,8}$/;
	if (fields.length > 0) {
		for(i=0; i<=fields.length-1; i++) {
			var val = jQuery.trim($("#"+fields[i]).val());
			if (val == $("#"+fields[i]+"_preFilledValue").val()) {
				error = true;
				if ($("#"+fields[i]+"_errorMessage").length > 0) {
					$("#"+fields[i]).addClass('input_error').val($("#"+fields[i]+"_errorMessage").val());
				} else {
					$("#"+fields[i]).addClass('input_error').val(numberErrorMessage);
				} // if-else
			} // if
			else if (!regTel.test(val)) {
				error = true;
				// check ob es eine personalisierte errorMessage gibt
				if ($("#"+fields[i]+"_errorMessage").length > 0) {
					$("#"+fields[i]).addClass('input_error').val($("#"+fields[i]+"_errorMessage").val());
				} else {
					$("#"+fields[i]).addClass('input_error').val(numberErrorMessage);
				} // if-else
			} else {
				$("#"+fields[i]).removeClass('input_error');
			} // if-else			
		} // for
	} // if
	return error;
	
} // function

function validatePriceFields(lang, priceFields, error) {
	
	if (!error) {
		var error = false;
	} // if
	var _regNumber = /^\d*[0-9](\,[0-9]{0,2})?$/;
	if (priceFields.length > 0) {
		for(i=0; i<=priceFields.length-1; i++) {
			var val = jQuery.trim($("#"+priceFields[i]).val());
			if (!_regNumber.test(val)) {
				error = true;
				// check ob es eine personalisierte errorMessage gibt
				if ($("#"+priceFields[i]+"_errorMessage").length > 0) {
					$("#"+priceFields[i]).addClass('input_error').val($("#"+priceFields[i]+"_errorMessage").val());
				} else {
					$("#"+priceFields[i]).addClass('input_error').val(numberErrorMessage);
				} // if-else
			} else {
				$("#"+priceFields[i]).removeClass('input_error');
			} // if-else			
		} // for
	} // if
	return error;
	
} // function

function validateDateFields(lang, dateFields, error) {
	
	if (!error) {
		var error = false;
	} // if
	var regDay = /^(([0]{1}[1-9]{1})|([1-9]{1})|([1-2]{1}[0-9]{1})|([3]{1}[0-1]{1}))$/;
    var regMonth = /^(([0]{1}[1-9]{1})|([1-9]{1})|([1]{1}[0-2]{1}))$/;
    var regYear = /^[20]{2}[0-9]{2}$/;
	if (dateFields.length > 0) {
		for(i=0; i<=dateFields.length-1; i++) {
			var valDay = jQuery.trim($("#"+dateFields[i]+"Day").val());
			if (!regDay.test(valDay)) {
				error = true;
				$("#"+dateFields[i]+"Day").addClass('input_error');
			} else {
				$("#"+dateFields[i]+"Day").removeClass('input_error');
			} // if
			var valMonth = jQuery.trim($("#"+dateFields[i]+"Month").val());
			if (!regMonth.test(valMonth)) {
				error = true;	
				$("#"+dateFields[i]+"Month").addClass('input_error');
			} else {
				$("#"+dateFields[i]+"Month").removeClass('input_error');
			} // if
			var valYear = jQuery.trim($("#"+dateFields[i]+"Year").val());
			if (!regYear.test(valYear)) {
				error = true;	
				$("#"+dateFields[i]+"Year").addClass('input_error');
			} else {
				$("#"+dateFields[i]+"Year").removeClass('input_error');
			} // if
			if (error) {
				$("#"+dateFields[i]+"_errorMessage").addClass('input_error').html('Bitte ein gültiges Datum eingeben');
			} else {
				var errorNew = false;
				$("#"+dateFields[i]+"_errorMessage").removeClass('input_error').html('');
				// jetzt muss noch gecheckt werden, ob das datum ueberhaupt valide ist
				valMonth = valMonth-1;
				var checkDate = new Date(valYear, valMonth, valDay);
				if (valYear != checkDate.getFullYear()) {
					errorNew = true;
				}
				if (valMonth != checkDate.getMonth()) {
					errorNew = true;
				}
				if (valDay != checkDate.getDate()) {
					errorNew = true;
				}
				if (errorNew) {
					error = true;
					$("#"+dateFields[i]+"_errorMessage").addClass('input_error').html('Bitte ein gültiges Datum eingeben');
				} else {
					$("#"+dateFields[i]+"_errorMessage").removeClass('input_error').html('');
				} // if-else
			} // if-else
		} // for
	} // if
	return error;
	
} // function

function validateEmail(lang, emailFields, error) {
    
	if (!error) {
		var error = false;
	} // if
    var errorMessages = setErrorMessages(lang);
    for(i=0; i<=emailFields.length-1; i++) {
        var val = jQuery.trim($("#"+emailFields[i]).val());
        if(val == "" || val == errorMessages[1] || EMail(val) == false) {
            error = true;
            $("#"+emailFields[i]).addClass('input_error').val(errorMessages[1]);
        } else {
            $("#"+emailFields[i]).removeClass('input_error');   
        } // if-else    
    } // for
    return error;
    
} // function

function validateUrlFields(lang, urlFields, error) {
	
	if (!error) {
		var error = false;
	} // if
	var errorMessages = setErrorMessages(lang);
	var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
    for(i=0; i<=urlFields.length-1; i++) {
		var val = jQuery.trim($("#"+urlFields[i]).val());
		if (val != "") {
			if (!regexp.test(val)) {
				error = true;
				// check ob es eine personalisierte errorMessage gibt
				if ($("#"+urlFields[i]+"_errorMessage").length > 0) {
					$("#"+urlFields[i]).addClass('input_error').val($("#"+urlFields[i]+"_errorMessage").val());
				} else {
					$("#"+urlFields[i]).addClass('input_error').val(urlFields);
				} // if-else
			} else {
				$("#"+urlFields[i]).removeClass('input_error');
			} // if-else
		} // if
	} // for
	return error;

} // function

function validateFiles(lang, fileFields, error) {
	
	if (!error) {
		var error = false;
	} // if
	// unbedingt neben dem dursuchen feld ein <span> mit der selben id+"_errorMessage" zur Ausgabe des Fehlers
	for(i=0; i<=fileFields.length-1; i++) {
		var fileName = $("#"+fileFields[i]).val();
		if (fileName == "") {
			error = true;
			$("#"+fileFields[i]+"_errorMessage").addClass('input_error').html('Bitte wählen Sie ein Bild aus (jpg)');  
		} // if
		var ext = fileName.substring(fileName.lastIndexOf('.') + 1);
        if (ext == "JPEG" || ext == "jpeg" || ext == "jpg" || ext == "JPG") {
            $("#"+fileFields[i]+"_errorMessage").removeClass('input_error').html(''); 
        } else {
            error = true;
            $("#"+fileFields[i]+"_errorMessage").addClass('input_error').html('Bitte wählen Sie ein Bild aus (jpg)');
        } // if-else    
    } // for
	return error;
} // function

function validateCheckBoxes(lang, checkFields, error) {

	if (!error) {
		var error = false;
	} // if
	var fileFields = new Array();
	for(i=0; i<=checkFields.length-1; i++) {
		if ($("#"+checkFields[i]).attr('checked') == true) {
			fileFields.push(checkFields[i]+"_bildupload");
		} // if		
	} // for
	error = validateFiles(lang, fileFields, error);
	return error;

} // function

function validateForm(form, email, lang, ajax) {
	
	var emailError = false;
	var error = false;
    var errorMessages = setErrorMessages(lang);

	if (form == "newBikeHotelForm") {
		var fields = new Array("title_"+lang, "strasse", "ort", "tel");
		error = validateFields(lang, fields, error);
		// for validating textArea fields make sure an input text field with the designated error message exists 
		// for example teaser_de -> <input type="hidden" id="teaser_de_errorMessage" />
		var textAreaFields = new Array("teaser_"+lang, "text_"+lang);
		error = validateTextArea(lang, textAreaFields, error);
		
		var numFields = new Array("plz");
		error = validateNumberFields(lang, numFields, error);
			
		var urlFields = new Array ("web");
		error = validateUrlFields(lang, urlFields, error);
		
		var fileFields = new Array("foto_520x260");
		error = validateFiles(lang, fileFields, error);
	
		var telFields = new Array("tel");
		error = validateLength(lang, telFields, error);
		
		var checkFields = new Array("unterstellplatz", "waschplatz", "trockenraum", "trockner");
		error = validateCheckBoxes(lang, checkFields, error);
		
	} // if
	
	if (form == "newWerkstaetteForm") {
		var actNr = $("#actNumber").val();
		var fields = new Array("title", "typ");
		if ($("#kontakt"+actNr).length > 0) {
			fields.push("strasse", "plz", "ort");
		} // if
		error = validateFields(lang, fields, error);
		var ajaxUrl = lang+"/neue_werkstaette";
	} // if
	
	if (form == "angeboteForm") {
		var fields = new Array("title_"+lang);
		error = validateFields(lang, fields, error);
		
		var priceFields = new Array("preis_ab");
		error = validatePriceFields(lang, priceFields, error);
		// for validating textArea fields make sure an input text field with the designated error message exists 
		// for example teaser_de -> <input type="hidden" id="teaser_de_errorMessage" />
		var textAreaFields = new Array("teaser_"+lang, "text_"+lang, "leistungen_"+lang);
		error = validateTextArea(lang, textAreaFields, error);
		
		var fileFields = new Array("angebot_image");
		error = validateFiles(lang, fileFields, error);
		
		$("#title").val($("#title_"+lang).val());
	} // if
	
	if (form == "newEventForm") {
		var fields = new Array("title", "teaser", "plz");
		error = validateFields(lang, fields, error);
		
		var dateFields = new Array("von", "bis");
		error = validateDateFields(lang, dateFields, error);
		
		var ajaxUrl = lang+"/neue_veranstaltung";
	} // if
	

	
	if (email) {
		var emailFields = new Array("email");
        emailError = validateEmail(lang, emailFields, emailError);
		if (emailError) {
			error = true;	
		}
	} // if
	
	if (error) {
		return false;	
	} else {
		if (ajax) {
			$.ajax({
				type: "POST",
				url: url+ajaxUrl,
				data: $("#"+form).serialize(),
				beforeSend: function(e) {
					//$("#ajaxLoader").show();
				},
				success: function(e) {
					if (form == "newEventForm") {
						resetForm(form);	
					} // if
					$("#successMessage").html(e);
					// reset the inputs
					if (form == "newWerkstaetteForm") {
						$("#title").val('');
						$("#typ").val('-1');
						$("#strasse").val('');
						$("#ort").val('');
						$("#plz").val('');
						$("#email").val('');
						$("#web").val('');
					} // if
				} // success
			});
			return false;
		} else {
			return true;		
		}
	} // if-else
			
} // function

function doUppercase(fieldid) {
	lowerText = document.getElementById(fieldid).value.toLowerCase();
	laenge = document.getElementById(fieldid).value.length;
	firstLetter = lowerText.substr(0,1).toUpperCase();
	newText = firstLetter + lowerText.substr(1,laenge-1);
	document.getElementById(fieldid).value = newText;
}

function showSubMenu(id) {
    if ($("#sub"+id).hasClass("notVisible")) {
        $("#sub"+id).removeClass("notVisible").addClass("visible");
		$("#link"+id).addClass("activeLink");
    } else {
        $("#sub"+id).removeClass("visible").addClass("notVisible");
		$("#link"+id).removeClass("activeLink").addClass("notActiveLink");
    }
}

function toggleBildUpload(id) {
	if ($("#"+id+"BildUpload").hasClass("notVisible")) {
        $("#"+id+"BildUpload").removeClass("notVisible").addClass("visible");
	} else {
		$("#"+id+"BildUpload").removeClass("visible").addClass("notVisible");
	} // if-else
	
} // function

/**
* clearInput
* just clears the input field
**/
function clearInput(id, lang) {
    
	var errorMessages = setErrorMessages(lang);	
	if ($("#"+id+"_errorMessage").length > 0) {
		if ($("#"+id).val() == $("#"+id+"_errorMessage").val()) {
			if ($("#"+id+"_clearValue").length > 0) {
				$("#"+id).val($("#"+id+"_clearValue").val());
			} else {
				$("#"+id).val('');
			} // if-else
			$("#"+id).removeClass('input_error');
		} // if
		if ($("#"+id+"_preFilledValue").length > 0) {
			if ($("#"+id).val() == $("#"+id+"_preFilledValue").val()) {
				if ($("#"+id+"_clearValue").length > 0) {
					$("#"+id).val($("#"+id+"_clearValue").val());
				} else {
					$("#"+id).val('');
				} // if-else
				$("#"+id).removeClass('input_error');
			} // if
		} // if
	} else {
		if ($("#"+id).val() == errorMessages[0] || $("#"+id).val() == errorMessages[1]) {
			$("#"+id).val('');
			$("#"+id).removeClass('input_error');
		} // if
	} // if-else

} // function

function showAdressBlock(id, val, lang) {
	if (val != -1 && $("#kontakt"+id).length < 1) {
		var htmlAfter = "<tr id='kontakt"+id+"'>\
							<td align='right'>\
								<label for='strasse'>Straße, Nr.:*</label>\
							</td>\
							<td>\
								<input type='text' class='inputText' id='strasse' onfocus='clearInput(this.id, \""+lang+"\")' name='strasse' />\
								<input type='hidden' id='strasse_errorMessage' value='Bitte geben Sie die Straße und Hausnummer bekannt!' />\
							</td>\
						</tr>\
						<tr>\
							<td align='right'>\
								<label for='plz'>PLZ:*</label>\
							</td>\
							<td>\
								<input type='text' class='inputText' id='plz' onfocus='clearInput(this.id, \""+lang+"\")' name='plz'>\
								<input type='hidden' id='plz"+id+"_errorMessage' value='Bitte geben Sie die PLZ ein' />\
							</td>\
						</tr>\
						<tr>\
							<td align='right'><label for='ort"+id+"'>Ort:*</label></td>\
							<td>\
								<input type='text' class='inputText' onfocus='clearInput(this.id, \""+lang+"\")' id='ort' name='ort'>\
								<input type='hidden' id='ort"+id+"_errorMessage' value='Bitte geben Sie den Ort ein' />\
							</td>\
							</tr>\
						<tr>\
							<td align='right'><label for='email"+id+"'>E-Mail:</label></td>\
							<td>\
								<input type='text' class='inputText' onfocus='clearInput(this.id, \""+lang+"\")' id='email' name='email'>\</td>\
						</tr>\
						<tr>\
							<td align='right'><label for='web'>Web:</label></td>\
							<td>\
								<input type='text' class='inputText' id='web' name='web'>\</td>\
						</tr>";
		$("#trader"+id).after(htmlAfter);
	} // if
} // function

function relateBetriebToHotel(hotelId, betriebId) {
	$.ajax({
		type: "POST",
		url: url+"de/relate_hotel_betrieb",
		data: "hotelId="+hotelId+"&betriebId="+betriebId,
		success: function(e) {
			$("#relationSuccess").html(e);
			// reset the inputs
		} // success
	});
	
} // function

function resetForm(id) {
	$('#'+id).each(function(){
		this.reset();
	});
}



