/*!
 * alle Javascripts
 */



 $.fn.gallery_carousel = function () {

     function repeat(str, num) {
         return new Array( num + 1 ).join( str );
     }

     return this.each(function () {
         var $wrapper = $('> div', this).css('overflow', 'hidden'),
             $slider = $wrapper.find('> ul'),
             $items = $slider.find('> li'),
             $single = $items.filter(':first'),

             singleWidth = $single.outerWidth(), 
             visible = Math.ceil($wrapper.innerWidth() / singleWidth), // note: doesn't include padding or border
             currentPage = 1,
             pages = Math.ceil($items.length / visible);            


         // 1. Pad so that 'visible' number will always be seen, otherwise create empty items
         if (($items.length % visible) != 0) {
             $slider.append(repeat('<li class="empty" />', visible - ($items.length % visible)));
             $items = $slider.find('> li');
         }

         // 2. Top and tail the list with 'visible' number of items, top has the last section, and tail has the first
         $items.filter(':first').before($items.slice(- visible).clone().addClass('cloned'));
         $items.filter(':last').after($items.slice(0, visible).clone().addClass('cloned'));
         $items = $slider.find('> li'); // reselect

         // 3. Set the left position to the first 'real' item
         $wrapper.scrollLeft(singleWidth * visible);

         // 4. paging function
         function gotoPage(page) {
             var dir = page < currentPage ? -1 : 1,
                 n = Math.abs(currentPage - page),
                 left = singleWidth * dir * visible * n;

             $wrapper.filter(':not(:animated)').animate({
                 scrollLeft : '+=' + left
             }, 500, function () {
                 if (page == 0) {
                     $wrapper.scrollLeft(singleWidth * visible * pages);
                     page = pages;
                 } else if (page > pages) {
                     $wrapper.scrollLeft(singleWidth * visible);
                     // reset back to start position
                     page = 1;
                 } 

                 currentPage = page;
             });                

             return false;
         }

         $wrapper.after('<a class="arrow back">&lt;</a><a class="arrow forward">&gt;</a>');

         // 5. Bind to the forward and back buttons
         $('a.back', this).click(function () {
             return gotoPage(currentPage - 1);                
         });

         $('a.forward', this).click(function () {
             return gotoPage(currentPage + 1);
         });

         // create a public interface to move to a specific page
         $(this).bind('goto', function (event, page) {
             gotoPage(page);
         });
     });  
 };




 $.fn.teaser_carousel = function () {

     function repeat(str, num) {
         return new Array( num + 1 ).join( str );
     }

     return this.each(function () {
         var $wrapper = $('> div', this).css('overflow', 'hidden'),
             $slider = $wrapper.find('> ul'),
             $items = $slider.find('> li'),
             $single = $items.filter(':first'),

             singleWidth = $single.outerWidth(), 
             visible = Math.ceil($wrapper.innerWidth() / singleWidth), // note: doesn't include padding or border
             currentPage = 1,
             pages = Math.ceil($items.length / visible);            


         // 1. Pad so that 'visible' number will always be seen, otherwise create empty items
         if (($items.length % visible) != 0) {
             $slider.append(repeat('<li class="empty" />', visible - ($items.length % visible)));
             $items = $slider.find('> li');
         }

         // 2. Top and tail the list with 'visible' number of items, top has the last section, and tail has the first
         $items.filter(':first').before($items.slice(- visible).clone().addClass('cloned'));
         $items.filter(':last').after($items.slice(0, visible).clone().addClass('cloned'));
         $items = $slider.find('> li'); // reselect

         // 3. Set the left position to the first 'real' item
         $wrapper.scrollLeft(singleWidth * visible);

         // 4. paging function
         function gotoPage(page) {
             var dir = page < currentPage ? -1 : 1,
                 n = Math.abs(currentPage - page),
                 left = singleWidth * dir * visible * n;

             $wrapper.filter(':not(:animated)').animate({
                 scrollLeft : '+=' + left
             }, 500, function () {
                 if (page == 0) {
                     $wrapper.scrollLeft(singleWidth * visible * pages);
                     page = pages;
                 } else if (page > pages) {
                     $wrapper.scrollLeft(singleWidth * visible);
                     // reset back to start position
                     page = 1;
                 } 

                 currentPage = page;
             });                

             return false;
         }

         $wrapper.after('<a class="arrow back">&lt;</a><a class="arrow forward">&gt;</a>');

         // 5. Bind to the forward and back buttons
         $('a.back', this).click(function () {
             return gotoPage(currentPage - 1);                
         });

         $('a.forward', this).click(function () {
             return gotoPage(currentPage + 1);
         });

         // create a public interface to move to a specific page
         $(this).bind('goto', function (event, page) {
             gotoPage(page);
         });
     });  
 };



var iframeAutoHeight = {
	
	doIframe : function () { 
		o = document.getElementsByTagName('iframe');
		for(i=0;i<o.length;i++){
			if (/\bautoHeight\b/.test(o[i].className)){
				iframeAutoHeight.setHeight(o[i]);
				iframeAutoHeight.addEvent(o[i],'load', iframeAutoHeight.doIframe);
			}
		}
	},

	setHeight : function (e) {
		if(e.contentDocument){
			e.height = e.contentDocument.body.offsetHeight + 35;
		} else {
			e.height = e.contentWindow.document.body.scrollHeight;
		}
	},

	addEvent : function (obj, evType, fn) {
		if(obj.addEventListener)
		{
			obj.addEventListener(evType, fn,false);
			return true;
		} else if (obj.attachEvent){
			var r = obj.attachEvent("on"+evType, fn);
			return r;
		} else {
			return false;
		}
	}
}


var bookingFormUpdate = {
	
	setDate : function () {
	var currentTime = new Date();
	var month = currentTime.getMonth();
	var day = currentTime.getDate();
	var year = currentTime.getFullYear();
	//$('form_arr_day').val(currentTime.getDate());
	$('#form_arr_day').val(day);
	$('#form_arr_month').val(month);
	$('#form_arr_year').val(year);
	return true;
	//document.write(month + "/" + day + "/" + year)
	},
	
	changeNights : function (nights){
    	$('#form_nights').val(nights);
  	}
    
}

     $(document).ready(function() {
       $('input[type="text"]').addClass("idleField");
       $('input[type="text"]').focus(function() {
         $(this).removeClass("idleField").addClass("focusField");
         if (this.value == this.defaultValue){ 
           this.value = '';
     	 }
     	 if(this.value != this.defaultValue){
         this.select();
         }
        });
        $('input[type="text"]').blur(function() {
          $(this).removeClass("focusField").addClass("idleField");
          if ($.trim(this.value) == ''){
            this.value = (this.defaultValue ? this.defaultValue : '');
          }
         });
        $("a.fancygallery").fancybox({
          overlayOpacity    : 0.6,
          overlayColor    : '#333',
          'zoomOpacity'     : true,
          'hideOnContentClick': false
        });
        $('.gallery_carousel').gallery_carousel();
        $('.teaser_carousel').teaser_carousel();
		/*iframeAutoHeight.doIframe();	*/
		bookingFormUpdate.setDate();
		changeNights = function(nights) {
			bookingFormUpdate.changeNights(nights);
		}
     });

