	
	// header animation
	var ha = new Object();
	ha.hide_speed = 2000;
	ha.delay = 6000;
	
	ha.state = ha.current = ha.next = ha.max = 0;
	ha.next_obj=false;
	ha.current_obj=false;
	ha.stack = false;

	ha.set_next = function() {
		ha.next_obj.empty();
		ha.next_obj.append(ha.stack[ha.next]);
	}
	ha.set_current = function() {
		ha.current_obj.empty();
		ha.current_obj.css('opacity', 1);
		ha.current_obj.append(ha.stack[ha.current]);
	}
	
	ha.process = function () {
		switch (ha.state) {
			case 0: // init
				ha.stack = $("#head_animation .item img");
				ha.max = ha.stack.length-1;
				ha.next_obj = $("#head_animation .next");
				ha.current_obj = $("#head_animation .current");
				ha.current = ha.max;
				ha.set_next();
				ha.set_current();
				$("#head_animation .item").css("display", "none");
				ha.state++;
				setTimeout(ha.process, ha.delay );
				break;
			case 1: // hide current
				ha.current_obj.animate({opacity: 0}, ha.hide_speed, ha.process);
				ha.state++;
				break;
			case 2: // change
				ha.current = (ha.current>=ha.max) ? 0 : ha.current+1;
				ha.next = (ha.next>=ha.max) ? 0 : ha.next+1;
				
				ha.set_current();
				ha.set_next();
				ha.state=1;
				setTimeout(ha.process, ha.delay );
				break;
		}
	}
	
	// menu 
	var menu = new Object();
	menu.links = menu.items = menu.display = false;
	menu.init = function() {
		menu.links = $("#menu a.sub");
		menu.items = $("#menu .submenu");
		menu.display = $.browser.msie? "block":"table";
		for(var i=0 ; i<menu.items.length ; i++){
			menu.items[i].obj=$(menu.items[i]);
			menu.items[i].i=i;
			menu.links[i].i=i;
			$(menu.links[i]).parent().append(menu.items[i]);
		}
	
		$("#menu a.sub, #menu .submenu").mouseover(function() {
			menu.items[this.i].obj.css('display', menu.display);
			clearTimeout(menu.items[this.i].time);
		});
		$("#menu a.sub, #menu .submenu").mouseout(function() {
			var i=this.i;
			menu.items[this.i].time = setTimeout(function(){menu.items[i].obj.css('display', "none")}, 100);
		});
	}
	// slider
	var sl=new Object();
	sl.init = function () {
		sl.config=new Object();
		sl.config.auto=1;
		sl.config.auto_direction=1;
		sl.config.auto_delay=1000;
		sl.config.auto_click_stop=1;
		sl.config.speed=500;
		var conf=$("#slider .config div");
		for(var i=0;i<conf.length;i++) sl.config[conf[i].className]=parseInt(conf[i].innerHTML);
		
		sl.time=false;
		sl.car = $("#slider .car");
		sl.items = $("#slider .item");
		sl.hider = $("#slider .hider");
		sl.item_width = sl.items.width();
		sl.car.css("width", sl.items.length * sl.item_width);
		
		$("#slider .btn_right").click(function(){
			clearTimeout(sl.time);
			if(sl.config.auto_click_stop) sl.config.auto=0;
			sl.right();
			return false;
		});
		$("#slider .btn_left").click(function(){
			clearTimeout(sl.time);
			if(sl.config.auto_click_stop) sl.config.auto=0;
			sl.left();
			return false;
		});
		sl.setTimer();
	}
	sl.setTimer=function (reset){
		if (sl.config.auto) sl.time = setTimeout((sl.config.auto_direction>0?sl.left:sl.right), sl.config.auto_delay);
	}
	sl.right = function(){
		sl.car.animate({left: (-1*sl.item_width)}, sl.config.speed, function(){
			sl.car.append($("#slider .item:first"));
			sl.car.css("left",'0');
			sl.setTimer();
		});
	}
	sl.left = function(){
		sl.car.prepend($("#slider .item:last"));
		sl.car.css("left", (-1*sl.item_width));
		sl.car.animate({left: 0}, sl.config.speed, sl.setTimer);
		
	}
	
	
	// fix ie bugs
	var fix=new Object();
	fix.init = function(){
		if (jQuery.browser.msie && parseInt(jQuery.browser.version)==6){
			var pngs = $(".fixpng img");
			for (var i=0 ; i<pngs.length ; i++){
				var obj=pngs[i];
				var div=$(obj).parent();
				div.css({width:obj.width, height:obj.height, filter:'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+obj.src+'", sizingMethod="crop")'});
				div.empty();
			}
		}
	}
	
	// gallery
	function gal(obj) {
		var self = this;
		self.dir=1;
		self.gal=$(obj);
		self.delay=6000;
		self.time=0;
		self.state=0;
		self.proc(self);
	}
	gal.prototype.set_next=function(self) {
		if(!self) var self=this;
		self.next_obj.empty();
		self.next_obj.append(self.items[self.next]);
	}
	gal.prototype.set_curr=function(self) {
		if(!self) var self=this;
		self.curr_obj.empty();
		self.curr_obj.css("opacity", 1);
		self.curr_obj.append(self.items[self.curr]);
	}
	gal.prototype.proc = function (self, obj) {
		switch (self.state) {
			case 0: // init
				self.items = self.gal.find(".item");
				self.max = self.items.length-1;
				self.curr=self.max;
				self.next=0;
				self.next_obj = self.gal.find(".next");
				self.curr_obj = self.gal.find(".curr");
				self.control = self.gal.find(".control div");
				self.control.click(function(){self.state=3;self.proc(self, this); return false;});
				//self.items.css("display","none");
				self.set_next();
				self.set_curr();
				self.state++;
				self.time = setTimeout(function(){self.proc(self)}, self.delay);
				break;
			case 1: // hide current
				self.curr_obj.animate({opacity: 0}, 'fast', function(){self.proc(self)});
				self.state++;
				break;
			case 2: // change
				if (self.dir>0){
					self.curr = (self.curr>=self.max) ? 0 : self.curr+1;
					self.next = (self.next>=self.max) ? 0 : self.next+1;
				}else{
					self.curr = (self.curr<=0) ? self.max : self.curr-1;
					self.next = (self.next<=0) ? self.max : self.next-1;	
				}
				
				self.set_curr();
				self.set_next();
				self.state=1;
				clearTimeout(self.time);
				self.time = setTimeout(function(){self.proc(self)}, self.delay );
				break;
			case 3: //interrupt
				clearTimeout(self.time);
				self.control.removeClass("selected");
				var type=obj.className;
				$(obj).addClass("selected");
				
				if (type=="left")	self.dir=-1;
				else if(type=="right") self.dir=1;
				else return 1;
				if (self.dir>0){
					self.next = self.curr+1;
					if (self.next>self.max) self.next=0;
				}else{
					self.next = self.curr-1;
					if(self.next<0) self.next=self.max;	
				}
				self.set_next();
				self.state=1;
				self.proc(self);
				break;
		}
	}
	//functions
	function rot13(s) {
		var ret='';
		for (var i=0;i<s.length;i++) {
			var char = s.charCodeAt(i);
			ret+=String.fromCharCode((char>=97&&char<=122)?((char-97)+13)%26+97:(char>=65 && char<=90)?((char-65)+13)%26+65:char);
		}
		return ret;
	}
	function email(obj) {
		var mail = rot13(obj.href.match(/^mailto:(.*)/)[1])
		obj.innerHTML = mail;
		obj.href = 'mailto:'+mail;
	}
	function c_submit (){
		var form = $(this);
		var aDate = form.find("input[name=date]").val();
		var oDate = aDate.match(/(\d+)\/(\d+)\/(\d+)/);
		oDate = new Date(oDate[3], oDate[1]-1, oDate[2]);
		var nights = parseInt(form.find("select[name=nights]").val())||0;
		if (nights>0) oDate.setDate(oDate.getDate()+nights);
		
		var dDate = (oDate.getMonth()+1+'/'+oDate.getDate()+'/'+oDate.getFullYear());
		//dbg(dDate);
		form.find("select, input").removeAttr("name");
		document.location = form.attr("action") + '&aDate='+aDate+'&dDate='+dDate;
		return false;
	}
	// onload
	$(function(){
		$(".date_selector input[name=date]").datepicker();
		$("input.date").datepicker();
		ha.process();
		menu.init();
		setTimeout(sl.init, 1000);
		fix.init();
		var gals = $(".gal");
		for(var i=0 ; i<gals.length ; i++) new gal(gals[i]);
		if(!admin){
			var mails = $(".cryptmail");
			for(var i=0 ; i<mails.length ; i++) email(mails[i]);
		}
		$("#t_form").submit(c_submit);
	});
	