(function($){var escapeable=/["\\\x00-\x1f\x7f-\x9f]/g,meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'};$.toJSON=typeof JSON==='object'&&JSON.stringify?JSON.stringify:function(o){if(o===null){return'null';}
var type=typeof o;if(type==='undefined'){return undefined;}
if(type==='number'||type==='boolean'){return''+o;}
if(type==='string'){return $.quoteString(o);}
if(type==='object'){if(typeof o.toJSON==='function'){return $.toJSON(o.toJSON());}
if(o.constructor===Date){var month=o.getUTCMonth()+1,day=o.getUTCDate(),year=o.getUTCFullYear(),hours=o.getUTCHours(),minutes=o.getUTCMinutes(),seconds=o.getUTCSeconds(),milli=o.getUTCMilliseconds();if(month<10){month='0'+month;}
if(day<10){day='0'+day;}
if(hours<10){hours='0'+hours;}
if(minutes<10){minutes='0'+minutes;}
if(seconds<10){seconds='0'+seconds;}
if(milli<100){milli='0'+milli;}
if(milli<10){milli='0'+milli;}
return'"'+year+'-'+month+'-'+day+'T'+
hours+':'+minutes+':'+seconds+'.'+milli+'Z"';}
if(o.constructor===Array){var ret=[];for(var i=0;i<o.length;i++){ret.push($.toJSON(o[i])||'null');}
return'['+ret.join(',')+']';}
var name,val,pairs=[];for(var k in o){type=typeof k;if(type==='number'){name='"'+k+'"';}else if(type==='string'){name=$.quoteString(k);}else{continue;}
type=typeof o[k];if(type==='function'||type==='undefined'){continue;}
val=$.toJSON(o[k]);pairs.push(name+':'+val);}
return'{'+pairs.join(',')+'}';}};$.evalJSON=typeof JSON==='object'&&JSON.parse?JSON.parse:function(src){return eval('('+src+')');};$.secureEvalJSON=typeof JSON==='object'&&JSON.parse?JSON.parse:function(src){var filtered=src.replace(/\\["\\\/bfnrtu]/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,'');if(/^[\],:{}\s]*$/.test(filtered)){return eval('('+src+')');}else{throw new SyntaxError('Error parsing JSON, source is not valid.');}};$.quoteString=function(string){if(string.match(escapeable)){return'"'+string.replace(escapeable,function(a){var c=meta[a];if(typeof c==='string'){return c;}
c=a.charCodeAt();return'\\u00'+Math.floor(c/16).toString(16)+(c%16).toString(16);})+'"';}
return'"'+string+'"';};})(jQuery);

/**
* jQuery Cookie plugin
*
* Copyright (c) 2010 Klaus Hartl (stilbuero.de)
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
*/
jQuery.cookie = function (key, value, options) {

	// key and at least value given, set cookie...
	if (arguments.length > 1 && String(value) !== "[object Object]") {
		options = jQuery.extend({}, options);

		if (value === null || value === undefined) {
			options.expires = -1;
		}

		if (typeof options.expires === 'number') {
			var days = options.expires, t = options.expires = new Date();
			t.setDate(t.getDate() + days);
		}

		value = String(value);

		return (document.cookie = [
		encodeURIComponent(key), '=',
		options.raw ? value : cookie_encode(value),
		options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
		options.path ? '; path=' + options.path : '',
		options.domain ? '; domain=' + options.domain : '',
		options.secure ? '; secure' : ''
		].join(''));
	}

	// key and possibly options given, get cookie...
	options = value || {};
	var result, decode = options.raw ? function (s) { return s; } : decodeURIComponent;
	return (result = new RegExp('(?:^|; )' + encodeURIComponent(key) + '=([^;]*)').exec(document.cookie)) ? decode(result[1]) : null;
};

function cookie_encode(string){
	//full uri decode not only to encode ",; =" but to save uicode charaters
	var decoded = encodeURIComponent(string);
	//encod back common and allowed charaters {}:"#[] to save space and make the cookies more human readable
	var ns = decoded.replace(/(%7B|%7D|%3A|%22|%23|%5B|%5D)/g,function(charater){return decodeURIComponent(charater);});
	return ns;
}

// Main Javascript Grand Tirolia


var bookinginfos 	= {};
var cookieName 		= "bookingBarSettings2";
var doTriggerSave	= false;


function isNull(array,att)
{
	try{
		if (''+(typeof bookinginfos[att]) == 'undefined') return true;
	} catch (e)
	{
		return true;
	}
	return false;
}

function chackStoredBookingSettings()
{
	if (bookinginfos === null) 					bookinginfos = {};
	if (isNull(bookinginfos,'modus')) 			bookinginfos.modus = 1;
	if (isNull(bookinginfos,'DateInPicker')) 	bookinginfos.DateInPicker = '';
	if (isNull(bookinginfos,'DateOutPicker')) 	bookinginfos.DateOutPicker = '';
	if (isNull(bookinginfos,'parents')) 		bookinginfos.parents = 2;
	if (isNull(bookinginfos,'children')) 		bookinginfos.children = 0;
}

function setButtonLinks()
{
	var stdurl = $('#bbButton').attr('href');
	var newurl = buildBookingLink(stdurl);

	$.each($('.bookNowButton'),function(i,obj){
		var href = $(obj).attr('href');
		if (href.indexOf('booking.ihotelier.com') == -1) return;

		$(obj).attr('href', newurl);
		$(obj).click(function() {
			setAdConv();
			_gaq.push(['_trackPageview', '/de/ihotelier/link']);
			_gaq.push(['_link', newurl]);
			return false;
		});
	});


	$('#bbButton').attr('href', newurl);
	$('#bbButton').click(function() {
		setAdConv();
		_gaq.push(['_trackPageview', '/de/ihotelier/link']);
		_gaq.push(['_link', newurl]);
		return false;
	});
}

function triggerBookingChange(k,v)
{
	if (!doTriggerSave) return;

	switch(k)
	{
		case 'DateInPicker':
		case 'DateOutPicker':

		var rd = getRealDate(v);
		var v2 = (rd.getMonth()+1)+"/"+rd.getDate() +"/"+rd.getFullYear();

		v = v2;

		break;
		default: break;
	}

	bookinginfos[k] = v;

	$.cookie(cookieName,  $.toJSON( bookinginfos ),{path:'/',expires:100});
	setButtonLinks();
}

function getRealDate(dateStr,plusDays)
{
	if (typeof dateStr == "undefined") dateStr = "";
	var din_ = "";

	if (dateStr.indexOf('/')==-1)
	{
		var din = dateStr.split('.');
		din_	= new Date(din[2],din[1]-1,din[0]);
	} else
	{
		var din = dateStr.split('/');
		din_	= new Date(din[2],din[0]-1,din[1]);
	}

	return din_;
}

function updateBookingBarAfterLoad()
{
	try {

		bookinginfos = jQuery.parseJSON($.cookie(cookieName));
		chackStoredBookingSettings();

		// ************************************** DEFAULTS **************************************

		switchBooking(bookinginfos.modus);

		var now = new Date();
		var d1 = new Date(now.getFullYear(),now.getMonth(),now.getDate());
		var d2 = new Date(now.getFullYear(),now.getMonth(),now.getDate()+3);

		if (bookinginfos.DateInPicker != '') {
			//	bookinginfos.DateInPicker = "11/10/2011";
			var _d1 = getRealDate(bookinginfos.DateInPicker);
			//	console.info(_d1,d1);
			if (_d1 >= d1)
			{
				d1 = _d1;
			} else
			{
				//	console.info('reset');
			}
		}

		if (bookinginfos.DateOutPicker != '') 	{
			var _d2 = getRealDate(bookinginfos.DateOutPicker);
			if (_d2 >= d1) // ja d1
			{
				d2 = _d2;
			} else
			{
				//	console.info('reset2');
			}
		}

		$( "#DateInPicker").datepicker('setDate',d1);
		$( "#DateOutPicker").datepicker('setDate',d2);

		$('#Adults').val(bookinginfos.parents);
		$('#Children').val(bookinginfos.children);

		$('#Adults').change(function(){
			triggerBookingChange('parents',$('#Adults').val());
		});

		$('#Children').change(function(){
			triggerBookingChange('children',$('#Children').val());
		});

		setButtonLinks();

		doTriggerSave = true;
	} catch(e) {
		try{
			console.info('XXX',e.message,e);
		} catch (e) {}
	}
}

/// Switch Action Booking Box on Startpage
function switchBooking(modus,action) {
	triggerBookingChange('modus',modus);
	if(modus == '2') {
		//	document.onlineBooking.action = action;
		document.getElementById('bbSelector').className = "";
		document.getElementById('baSelector').className = "radioSelected";
		document.getElementById('bbButton').style.display = "none";
		document.getElementById('baButton').style.display = "block";
	}else{
		//	document.onlineBooking.action = action;
		document.getElementById('bbSelector').className = "radioSelected";
		document.getElementById('baSelector').className = "";
		document.getElementById('bbButton').style.display = "block";
		document.getElementById('baButton').style.display = "none";
	}
}

// Create Link for iHotelier

function buildBookingLink(stdurl)
{

	var type = ($('#DateInPicker').val().indexOf('.') == -1) ? 'en' : 'de';

	switch (type)
	{
		case 'de':
		var din 	= $('#DateInPicker').val().split('.');
		var dout 	= $('#DateOutPicker').val().split('.');
		var din_	= din[1]+'/'+din[0]+'/'+din[2];
		var dout_	= dout[1]+'/'+dout[0]+'/'+dout[2];
		break;
		default:
		var din 	= $('#DateInPicker').val();
		var dout 	= $('#DateOutPicker').val();
		var din_	= din;
		var dout_	= dout;
		break;
	}

	// add Params
	var adults = $('#Adults').val();
	var children = $('#Children').val();
	var newurl = stdurl+'&datein='+din_+'&dateout='+dout_+'&adults='+adults+'&children='+children;
	return newurl;
}

function createBookingLink(stdurl) {
	var newurl = buildBookingLink(stdurl);
	// set new Url
	var stdurl = document.getElementById("bbButton").href=newurl;
}

/// if Method = 2 (iHotelier) return and call SEO Function onSubmit
function submSEO() {
	if(document.onlineBooking.action == 'https://booking.ihotelier.com/istay/istay.jsp') {
		_gaq.push(['_linkByPost', this]);
	}
}


var loaded_css = false;
function injectCalenderCss()
{
	if (loaded_css) return;
	loaded_css = true;

	if($.browser.msie && $.browser.version=="6.0") return;

	$("head").append("<link>");
	css = $("head").children(":last");
	css.attr({
		rel:  "stylesheet",
		type: "text/css",
		href: "/xstorage/template/styles/themes/calender/calender.css"
	});
}

$(document).ready(function(){

	/* jQuery Main Menu Settings */
	$("ul#nav li a").mouseover(function() {
		$(this).parent().find("div.subMenu").stop(true,true);
		$(this).parent().find("div.subMenu").show();
		$(this).addClass("mainMenuHover");
		$(this).parent().hover(function() {
		}, function(){
			$(this).parent().find("div.subMenu").fadeOut(250);
			$(this).parent().find("a").removeClass("mainMenuHover");
			stop();
		});
	});

	/* jQuery Lang Select Settings */
	$("a#activeLang").mouseover(function() {
		$(this).parent().find("div.langSelect").stop(true,true);
		$(this).parent().find("div.langSelect").show();
		$(this).addClass("hoverLang");
		$(this).parent().hover(function() {
		}, function(){
			$(this).parent().find("div.langSelect").fadeOut(250);
			$(this).parent().find("a").removeClass("hoverLang");
			stop();
		});
	});



	// Mouse Over Carousel Images
	/*
	$(".carouselImageHover").mouseover(function() {
	$(this).animate().stop(true,true);
	$(this).animate({
	opacity: "0.0"
	}, 200);
	});
	$(".carouselImageHover").mouseout(function() {
	$(this).animate({
	opacity: "0.9"
	}, 200);
	});
	*/

	// Standard Carousel
	$(function() {
		//	Scrolled by user interaction
		$('#carousel').carouFredSel({
			width   : 992,
			items: {
				visible: 4
			},
			height : null,
			infinite: true,
			circular: false,
			auto: true,
			scroll: {
				duration: 800,
				pauseDuration   : 15000,
				fx: 'slide',
				pauseOnHover : true
			},
			prev: {
				key : "left"
			},
			next: {
				key : "right"
			},
			pagination: "#carousel_paging"
		});
	});


	$.datepicker.regional['de'] = {
		closeText: 'schlie&szlig;en',
		prevText: '&#x3c;zur&uuml;ck',
		nextText: 'Vor&#x3e;',
		currentText: 'heute',
		monthNames: ['J&auml;nner','Februar','M&auml;rz','April','Mai','Juni',
		'Juli','August','September','Oktober','November','Dezember'],
		monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun',
		'Jul','Aug','Sep','Okt','Nov','Dez'],
		dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
		dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],
		dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
		weekHeader: 'Wo',
		dateFormat: 'dd.mm.yy',
		firstDay: 1,
		isRTL: false,
		showMonthAfterYear: false,
		yearSuffix: ''
	};

	$.datepicker.regional['ru'] = {
		closeText: 'schlie&szlig;en',
		prevText: '&#x3c;zur&uuml;ck',
		nextText: 'Vor&#x3e;',
		currentText: 'heute',
		monthNames: ['J&auml;nner','Februar','M&auml;rz','April','Mai','Juni',
		'Juli','August','September','Oktober','November','Dezember'],
		monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun',
		'Jul','Aug','Sep','Okt','Nov','Dez'],
		dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
		dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],
		dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
		weekHeader: 'Wo',
		dateFormat: 'dd.mm.yy',
		firstDay: 1,
		isRTL: false,
		showMonthAfterYear: false,
		yearSuffix: ''
	};

	$.datepicker.regional['it'] = {
		closeText: 'schlie&szlig;en',
		prevText: '&#x3c;zur&uuml;ck',
		nextText: 'Vor&#x3e;',
		currentText: 'heute',
		monthNames: ['J&auml;nner','Februar','M&auml;rz','April','Mai','Juni',
		'Juli','August','September','Oktober','November','Dezember'],
		monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun',
		'Jul','Aug','Sep','Okt','Nov','Dez'],
		dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
		dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],
		dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
		weekHeader: 'Wo',
		dateFormat: 'dd.mm.yy',
		firstDay: 1,
		isRTL: false,
		showMonthAfterYear: false,
		yearSuffix: ''
	};

	switch (top.P_LANG)
	{
		case 'de':
		$.datepicker.setDefaults($.datepicker.regional['de']);
		break;
		case 'ru':
		$.datepicker.setDefaults($.datepicker.regional['ru']);
		break;
		case 'it':
		$.datepicker.setDefaults($.datepicker.regional['it']);
		case 'en':
		default:
		//$.datepicker.setDefaults($.datepicker.regional['en']);
	}

	var dates = $( "#DateInPicker, #DateOutPicker" ).datepicker({
		minDate : 0,
		maxDate : "+1Y",
		defaultDate: "+1",
		changeMonth: false,
		numberOfMonths: 1,
		onSelect: function( selectedDate , myCfg) {
			var option = this.id == "DateInPicker" ? "minDate" : "maxDate",
			instance = $( this ).data( "datepicker" ),
			date = $.datepicker.parseDate(
			instance.settings.dateFormat ||
			$.datepicker._defaults.dateFormat,
			selectedDate, instance.settings );
			dates.not( this ).datepicker( "option", option, date );

			triggerBookingChange(myCfg.id,selectedDate);
		}
	});


	var now = new Date();
	var d1 = new Date(now.getYear(),now.getMonth(),now.getDate()).getDate();
	var d2 = new Date(now.getYear(),now.getMonth(),now.getDate()+1).getDate();



	$( "#DateInPicker" ).datepicker('setDate',d1);
	$( "#DateOutPicker" ).datepicker('setDate',d2);







	/// Nachladen Kalender CSS
	//$.get("/xstorage/template/styles/themes/calender/calender.css", function(css) {
	//    $("head").append("<style>"+css+"</style>");
	//  });
	/// Nachladen Kalender CSS


	// Fancybox Settings
	// Normale Bilder
	//	$("a[rel=fancybox]").fancybox({
	$("a[rel^=fancybox]").fancybox({
	'padding': 20,
	'transitionIn': 'fade',
	'transitionOut': 'fade',
	'speedIn': 600,
	'speedOut': 200,
	'titlePosition' : 'outside',
	'overlayColor' : '#000000',
	'overlayShow': true
	});

	// Fancybox startpage
	$("#various2").fancybox({
	'padding': 20,
	'titlePosition'	: 'inside',
	'transitionIn'	: 'none',
	'transitionOut'	: 'none',
	'overlayColor' : '#000000',
	'overlayOpacity' : '0.7',
	'overlayShow': true,
	'modal' : false
	});
	
	
	// Fancybox Events
	$("a[rel=eventdetail]").fancybox({
	'padding': 20,
	'titlePosition'	: 'inside',
	'titleShow' : false,
	'showNavArrows' : false,
	'transitionIn'	: 'none',
	'transitionOut'	: 'none',
	'overlayColor' : '#000000',
	'overlayOpacity' : '0.7',
	'overlayShow': true,
	'modal' : false
	});
	
	

	// You Tube Videos
	$("a[rel=extvideo]").click(function() {
		$.fancybox({
		'padding': 20,
		'autoScale' : false,
		'transitionIn' : 'fade',
		'transitionOut' : 'fade',
		'speedIn': 600,
		'speedOut': 200,
		'overlayColor' : '#000000',
		'title' : this.title,
		'titlePosition' : 'outside',
		//		'width' : 680,
		//		'height' : 495,
		'href' : this.href.replace(new RegExp("watch\\?v=", "i"), 'v/'),
		'type' : 'swf',
		'swf': {'allowfullscreen':'true', 'wmode':'transparent'}
		});
		return false;
	});

	// Eigene FLV Videos
	$("a[rel=flvvideo]").click(function() {
		$.fancybox({
		'padding': 20,
		'autoScale' : false,
		'transitionIn' : 'fade',
		'transitionOut' : 'fade',
		'speedIn': 600,
		'speedOut': 200,
		'overlayColor' : '#000000',
		'title' : this.title,
		'titlePosition' : 'outside',
		'width' : 560,
		'height' : 320,
		'href' : this.href.replace(new RegExp("watch\\?v=", "i"), 'v/'),
		'type' : 'swf',
		'swf': {'allowfullscreen':'true', 'wmode':'transparent'}
		});
		return false;
	});

	$('#onlineBooking').submit(function(){

		var din 	= $('#DateInPicker').val().split('.');
		var dout 	= $('#DateOutPicker').val().split('.');

		switch(top.P_LANG)
		{
			case 'en':
			var din_	= din;
			var dout_	= dout;
			break;
			default:
			var din_	= din[1]+'/'+din[0]+'/'+din[2];
			var dout_	= dout[1]+'/'+dout[0]+'/'+dout[2];
			break;
		}
		$('#datein').val(din_);
		$('#dateout').val(dout_);
		return true;
	});

	var timeOutGap = 300;
	var tog = false;

	function doSearch()
	{
		var q = $('#siteSearchMe').val();
		$.post("/core/ajax/site/search", {
			q: q,
			l: top.P_LANG
		},
		function(data) {
			$('#siteSearchResult').html(data.resultHtml);
		});

	}

	$('#siteSearchMe').bind('keyup', function() {
		if (tog) clearInterval(tog);
		tog = setTimeout(function(){
			doSearch();
		},timeOutGap);
	});


	$('#siteSearch').submit(function(){
		doSearch();
		return false;
	});

	function checkVal(id,val)
	{
		var div_error = $('#'+id+"_error");
		if (val.split(' ').join('') == "")
		{
			div_error.show();
			return true;
		} else {
			div_error.hide();
			return false;
		}
	}

	function checkCheck(id,val)
	{
		var div_error = $('#'+id+"_error");
		if (val != "checked")
		{
			div_error.show();
			return true;
		} else {
			div_error.hide();
			return false;
		}
	}

	function checkEMail(id,val)
	{
		var div_error = $('#'+id+"_error");
		if (!isValidEmailAddress(val))
		{
			div_error.show();
			return true;
		} else {
			div_error.hide();
			return false;
		}
	}

	$('#gt_wz_form').submit(function(){

		var error = false;

		$('#gt_wz_form [rel|=required]').each(function(){

			var id 	= this.id;
			var val = $(this).val();
			if (checkVal(id,val))
			{
				error = true;
			}
		});

		$('#gt_wz_form [rel|=required_check]').each(function(){

			var id 	= this.id;
			var val = $(this).attr('checked');
			if (checkCheck(id,val))
			{
				error = true;
			}
		});

		$('#gt_wz_form [rel|=required_email]').each(function(){
			var id 	= this.id;
			var val = $(this).val();
			if (checkEMail(id,val))
			{
				error = true;
			}
		});

		//return false;

		return !error;
	});

	$('#gt_wz_form [rel|=required_check]').click(function(){
		var id 	= this.id;
		var val = $(this).attr('checked');
		checkCheck(id,val);
	});

	$('#gt_wz_form [rel|=required]').blur(function(){
		var id 	= this.id;
		var val = $(this).val();
		checkVal(id,val);
	});

	$('#gt_wz_form [rel|=required_email]').blur(function(){
		var id 	= this.id;
		var val = $(this).val();
		checkEMail(id,val);
	});

	/*
	$.getScript('http://apis.google.com/js/plusone.js', function() {
	$('#g_plus_one').html('<g:plusone count="false"></g:plusone><div class="clear"></div>');
	});
	*/

	try{
		if ($('#wzActionInvisibleCaptcha'))
		{
			$('#wzActionInvisibleCaptcha').attr('name','wzActionInvisibleCaptchaNOW');
		}
	} catch(e){}


	updateBookingBarAfterLoad();

	// Dosument Ready End
});

function isValidEmailAddress(emailAddress) {
	var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
	return pattern.test(emailAddress);
};



