var i18n = {
	"fillin" : "Bitte ausfüllen: ",
	"wrongEmail" : " ist keine gültige Email-Adresse.",
	"close" : "Schließen",
	"mapInNewWindow" : "Diese Karte in einem eigenen Fenster öffen ...",
	"linkInComment" : "Bitte keine Links im Kommentarfeld"
};
if (document.location.href.indexOf("/en/") != -1) {
	i18n = {
		"fillin" : "Please fill in: ",
		"wrongEmail" : " is no valid Email address.",
		"close" : "Close",
		"mapInNewWindow" : "Open map in new window ...",
		"linkInComment" : "Please do not add any links to the comment-field"
	};
}
$(document).ready(function() {
	$(document).pngFix(); 
	$('#map').makeMap();
    $('div.main form').submit(function() {
		return ajaxForm(this);
	});
	$('div.gallery').slideShow();
	$('.introgallery').revealImages();
	$('.mood').revealMood();
	$('span.venusberghotel').replaceWith('<img src="/_binary/venusberghotel_inline.png" alt="VENUSBERGHOTEL" />');
	$('a[rel="ajax"]').makeModal();
	$('a[href^="http://"]').makeExternal();
});

(function($) {
	
	$.fn.makeMap = function() {
		return this.each(function() {
			if (GBrowserIsCompatible()) {
		    	var map = new GMap2(this);
				var point = new GLatLng(50.693577,7.088062);
				var displayString = "<h2 class='tight'>Venusberghotel</h2><p>Haager Weg 83,<br/>53127 Bonn,<br/>Deutschland<br/><a href='http://maps.google.com/maps?q=Haager+Weg+83,+53127+Bonn%20(Venusberghotel)' target='_blank'>" + i18n.mapInNewWindow + "</a></p>";
				map.setCenter(point, 16);
				map.addControl(new GLargeMapControl());
				marker = new GMarker(point);
		    	map.addOverlay(marker);
		    	marker.openInfoWindowHtml(displayString);
				GEvent.addListener(marker, "click", function() {
			    	marker.openInfoWindowHtml(displayString);
			    });
			}
		});
	};
	
	$.fn.makeExternal = function() {
		return this.each(function() {
			$(this).attr('target','_blank');
		});
	};
	
	$.fn.makeModal = function() {
		return this.each(function() {
			$(this).click(function() {
				var modalwrapper = $('.modalwrapper');
				if (modalwrapper.length==0) {
					modalwrapper = $('<div class="modalwrapper"></div>');
					$('body').append(modalwrapper);
				} else {
					modalwrapper.html('');
				}
				modalwrapper.hide();
				modalwrapper.load($(this).attr('href')+" .modal",function() {
					$('form', modalwrapper).submit(function() {
						return ajaxForm(this);
					});
					
					$('input.date',modalwrapper).datepicker({ 
							beforeShow: customRange
					  });
					modalwrapper.prepend('<div class="modaldistance"></div>');
					modalwrapper.find('.modal').append('<div class="close"><a href="javascript:closeModal();">'+ i18n.close +'</a></div>');
					if(jQuery.browser.msie) {
						modalwrapper.find('.modal').css('margin-top','4em');
					}
					modalwrapper.fadeIn();
				});
				return false;
			});
		});
	};

	$.fn.revealMood = function() {
		return this.each(function() {
			var mood = $(this);
			var moods = mood.text().split(',');
			mood.html('');
			if (moods.length>1) {
				for (var i=0;i<moods.length; i++) {
					var t = moods[i];
					if (t.indexOf('|')!=-1) {
						t = t.substring(0,t.indexOf('|')) + '<span>' + t.substring(t.indexOf('|')+1) + '</span>';
					}
					mood.append('<span class="mood_' + i + '">' + t + '</span>');
				}
				mood.show();
				for (var i=0;i<moods.length; i++) {
					setTimeout(function() {
						mood.find('span:hidden:first').customFadeIn(1000);
					},(i+1)*1500);
				}
			}
		});
	};
	
	$.fn.revealImages = function() {
		return this.each(function() {
			var gal = $(this);
			gal.pointer = 0;
			var images = gal.find('img');
			if (images.length>1) {
				setTimeout(function() {gal.reveal();},500);
				gal.reveal = function() {
					$(images[gal.pointer]).fadeIn(2000);
					if (gal.pointer < images.length-1) {
						gal.pointer++;
						setTimeout(function() {gal.reveal();},1000);
					}
				}
			}
		});
	};
	
	$.fn.slideShow = function() {
		return this.each(function() {
			var gal = $(this);
			gal.pointer = 0;
			var images = gal.find('img');
			if (images.length>1 && gal.find('#map').length==0) {
				gal.interval = window.setInterval(function() {gal.rotate();},6000);
				gal.rotate = function() {
					$(images[gal.pointer]).fadeOut(2000);
					gal.pointer = (gal.pointer < images.length-1 ? gal.pointer+1 : 0);
					$(images[gal.pointer]).fadeIn(2000);
				}
			}
		});
	};
	
	$.fn.customFadeIn = function(speed, callback) {
		$(this).fadeIn(speed, function() {
			if(jQuery.browser.msie)
				$(this).get(0).style.removeAttribute('filter');
			if(callback != undefined)
				callback();
		});
	};
	$.fn.customFadeOut = function(speed, callback) {
		$(this).fadeOut(speed, function() {
			if(jQuery.browser.msie)
				$(this).get(0).style.removeAttribute('filter');
			if(callback != undefined)
				callback();
		});
	};
	
	
    $.escape = function(myid) {
        return myid.replace(/:/g,"\\:").replace(/\./g,"\\.");
    };

})(jQuery);

function ajaxForm(myForm) {
	if (validateForm(myForm)) {
		var form = $(myForm);
		var url = form.attr('action');
		var data = form.serialize();
		$.ajax({ 
		   	type: "GET", 
		   	url: url, 
		   	data: data,
			dataType: 'html',
		   	success: function(html){
				$('.reload:first').replaceWith($('.reload:last',html));
		   	} 
		 });		
		return false;
	} else return false;
}

function customRange(input) {
  return {
    minDate: (input.id == 'departure' ? new Date($('#arrival').datepicker('getDate')) : new Date())};
}

function closeModal() {
	$('.modalwrapper').fadeOut();
}

function validateForm(form) {
	var myForm = $(form);
	var result = true;
	var fs = myForm.find('fieldset:last');
	myForm.find('p.error').remove();
	myForm.find('.mandatory').each(function() {
		var lab = $(this);
		if (!$('#' + lab.attr('for')).val()) {
			result = false;
			lab.addClass('error');
			fs.append('<p class="error">' + i18n.fillin + '"' + lab.text() + '"</p>');
		} else {
			if (lab.hasClass('email') && !validEmail($('#' + lab.attr('for')).val())) {
				result = false;
				lab.addClass('error');
				fs.append('<p class="error">"' + $('#' + lab.attr('for')).val() + '"' + i18n.wrongEmail + '</p>');
			} else {
				lab.removeClass('error');
			}
		}
	});
	myForm.find('.comment').each(function() {
		var lab = $(this);
		if ($('#' + lab.attr('for')).val().indexOf('http://')!=-1) {
			result = false;
			lab.addClass('error');
			fs.append('<p class="error">' + i18n.linkInComment + '</p>');
		} else {
			lab.removeClass('error');
		}	
	});
	return result;
}

function validEmail(email) {
	// contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/
	return /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/.test(email);
}

