/**
* basic helper to restyle elements if js is active
*/

jQuery(document).ready(function() {
	jQuery("#twitter").getTwitter({
        userName: "GrandElysee",
        numTweets: 20,
        loaderText: "Loading tweets...",
        slideIn: false,
        showHeading: false,
        headingText: "Latest Tweets",
        showProfileLink: false
    });
	
	jQuery('body').addClass('js');
	if(jQuery.browser.msie && jQuery.browser.version=="6.0") {
		jQuery('body').addClass('ie6');
	}

	makeTabs();
	makeIconTooltips();
	
  jQuery('#formhandler_contact_form input[type=checkbox]').checkbox({
    cls:'jquery-styled-checkbox',
    empty: '/clear.gif'
  });
  jQuery('#formhandler_contact_form input[type=radio]').checkbox({
    cls:'jquery-styled-radio',
    empty: '/clear.gif'
  });

	var keyvisWrap = jQuery('#keyvis-wrap');
	if(keyvisWrap.children('.keyvis-small').length == 0){
		keyvisWrap.wrapInner('<div class="keyvis-small"></div>');
	}

	//slideout box over key visual
	var box = jQuery('#keyvis-infobox').addClass('closed');
	jQuery('#keyvis-infobox-toggle, #keyvis-infobox-closelink').click(function(){
		if(box.hasClass('closed')) {
			box.removeClass('closed').animate({left: 0}, 100, 'linear', function(){jQuery(this).addClass('open')});
		}
		else if(box.hasClass('open')) {
			box.removeClass('open').animate({left: -248}, 100, 'linear', function(){jQuery(this).addClass('closed')});
		}
		return false;
	});
});

function makeIconTooltips() {
	var btOptions = {
			width : 80,
			fill : '#FFFFFF',
			strokeWidth : 1,
			strokeStyle : '#A18949',
			cornerRadius : 0,
			padding : 10,
			spikeLength : 10,
			spikeGirth : 10,
			shadow: true,
			shadowBlur: 8,
			shadowOffsetX: 0,
			shadowOffsetY: 0,
			positions: [ 'top', 'right', 'bottom', 'left' ],
			fadeSpeed : 100
		};
		
		jQuery('.room-icon1').bt(jQuery('.room-icon1 > .icon-description:eq(0)').text(),btOptions);
		jQuery('.room-icon2').bt(jQuery('.room-icon2 > .icon-description:eq(0)').text(),btOptions);
		jQuery('.room-icon3').bt(jQuery('.room-icon3 > .icon-description:eq(0)').text(),btOptions);
		jQuery('.room-icon4').bt(jQuery('.room-icon4 > .icon-description:eq(0)').text(),btOptions);
		jQuery('.room-icon5').bt(jQuery('.room-icon5 > .icon-description:eq(0)').text(),btOptions);
		jQuery('.room-icon6').bt(jQuery('.room-icon6 > .icon-description:eq(0)').text(),btOptions);
};

function makeTabs(){

	var container = jQuery('.tab-boxes');
	var menu = jQuery(container).find('ul.tab-boxes-menu li');
	var contents = jQuery(container).children('.tab-boxes-content');
	var urlHash = document.location.hash.substring(1);
	var found = false;
	if(urlHash.length > 0) {
		jQuery(contents).each(function(i){
			if(jQuery(this).attr('id') == urlHash && found == false) {
				found = true;
				jQuery(contents).hide();
				jQuery(this).show();
				jQuery(menu.get(i)).addClass('act');
			}
		});
	}

	if(found == false || urlHash.length == 0) {
		jQuery(contents).slice(1).hide();
		jQuery(menu.get(0)).addClass('act');
	}

	//add click events to tab headers
	jQuery(menu).each(function(i){
		jQuery(this).click(function(){
			jQuery(menu).removeClass('act');
			jQuery(this).addClass('act');
			jQuery(contents).hide();
			jQuery(contents.get(i)).show();
			return false;
		});
	});

}



jQuery.fn.keyvisChange = function(userOptions){
	// set up default options
	var defaults = {
		keyvisId: '#keyvis-wrap',
		textContainerClass: '.apartment-slider-jscontent',
		thumbContainerClass: '.apartment-thumb',
		thumbTextClass: '.apartment-jscontent',
		thumbKeyvis: '.apartment-images .apartment-keyvis',
		thumbToggler: '.apartment-images .apartment-thumb',
		sliderContainer: '.apartment-slider-thumbs',
		mouseleaveSelector: '',
		mouseleaveRestore: '',
		maxThumbs: 6
	};
	// Overwrite default options
	// with user provided ones
	// and merge them into "options".
	var options = $.extend({}, defaults, userOptions);
	var keyvisContainer = jQuery(options.keyvisId);
	var restoreMode = false;
	//check if the keyvisual exists
	if(keyvisContainer.length != 1) {
		return;
	}
	backup(keyvisContainer);

	var toRestore = new Array();
	if(options.mouseleaveSelector != '' && options.mouseleaveRestore != '') {
		toRestore = jQuery(options.mouseleaveRestore);
		if(toRestore.length > 0) {
			restoreMode = true;
		}
	}
	if(restoreMode == true) {
		backup(toRestore);
	}

  if(this.length > 0) {
  	jQuery(options.mouseleaveSelector).mouseleave(function(){
  		jQuery(keyvisContainer).swapKeyvisual({'imageTag': jQuery(keyvisContainer).data('orig')});
  		if(restoreMode == true) {
  			restore(toRestore);
  		}
  	});
  }

	return this.each(function(){

		var textContainer = jQuery(this).children(options.textContainerSelector);
		//save the original
		textContainer.each(function(){

			backup(this);
			//for 4.2
			//var thumbs = jQuery(this).next().children(options.thumbContainerClass);
			var thumbs = jQuery(this).next().children().children(options.thumbContainerClass);
			jQuery(options.sliderContainer).children(':last-child').addClass('last');

			if(thumbs.length == 0) {
        var thumbs = jQuery(this).next().children(options.thumbContainerClass);
        jQuery(options.sliderContainer).children(':last-child').addClass('last');
      }



			jQuery(thumbs).each(function(){
				var thumb = this;
				var jsContent = jQuery(this).children(options.thumbTextClass).html();
				var jsImage = jQuery(this).find(options.thumbKeyvis).html();
				var hoverable = jQuery(this).find(options.thumbToggler);
				hoverable.hover(
					function(){
						textContainer.html(jsContent);
						jQuery(keyvisContainer).swapKeyvisual({'imageUrl': jsImage});
						makeIconTooltips();
					}
				);
			});

			if(thumbs.length > options.maxThumbs) {
				jQuery(this).next().children('a').remove();
				jQuery(this).parent().addClass('showScrollControls');
				jQuery(options.sliderContainer).children().addClass('item');
				//jQuery(thumbs).addClass('item');
				//var slideItems = jQuery('.apartment-slider-thumbs > .apartment-thumb').addClass('item');
				jQuery(options.sliderContainer).wrapInner('<div class="items"></div>');


				jQuery(options.sliderContainer).scrollable({
					nextPage: '.slide-right',
					prevPage: '.slide-left',
					size: options.maxThumbs,
					clickable: false
				});

			}
		});

	});

	/**
	* private functions
	*/
	function backup(domRef, name) {
		if(undefined == name){
			name = 'orig';
		}
		jQuery(domRef).each(function(){
			if(jQuery(this).html()) {
				jQuery(this).data(name, jQuery(this).html());
			}
		});
	}
	function restore(domRef, name) {
		if(undefined == name) {
			name = 'orig';
		}
		jQuery(domRef).each(function(){
			jQuery(this).html(jQuery(this).data(name));
		});
	}

};

jQuery.fn.keyvisChangeDetail = function(userOptions){
	// set up default options
	var defaults = {
		keyvisId: '#keyvis-small-wrap',
		keyvisWrapClass: 'keyvis-small',
		thumbContainerClass: '.keyvis-gallery-thumb',
		thumbContainerChildAction: '',
		thumbContainerLastClass: 'keyvis-gallery-thumb-last',
		thumbActClass: 'act',
		getDescription: '.desc-on .act .description',
		setDescription: '.keyvis-gallery-description',
		createNavButtons: false
	};
	// Overwrite default options
	// with user provided ones
	// and merge them into "options".
	var options = $.extend({}, defaults, userOptions);
	var keyvisContainer = jQuery(options.keyvisId);

	return this.each(function(){
		var thumbs = jQuery(this).find(options.thumbContainerClass);
		//last child must be aligned to the right
		if(thumbs.length % 2 == 1) {
			thumbs.slice(-1).addClass(options.thumbContainerLastClass);
		}
		if(thumbs.length > 1) {
			var navBox = '';
			if(options.createNavButtons == true) {
				navBox = $.create('div', {'class': 'nav-box'}).appendTo(keyvisContainer);
			}
			jQuery(thumbs).each(function(i){
				var imageUrl = jQuery(this).find(options.thumbContainerChildAction).attr('href');
				jQuery(this).data('imageUrl', imageUrl);
				this.navEntry = '';
				if(options.createNavButtons == true) {
					this.navEntry = $.create('a', {'class': 'nav-box-item', 'href': imageUrl}).appendTo(navBox);
					jQuery(this.navEntry).data('imageUrl', imageUrl);
				}
			});
			jQuery(thumbs).each(function(){
				if(options.createNavButtons == true) {
					changeImage(
						new Array(
							  jQuery(this.navEntry),
							  this
							  ),
						new Array(
							  jQuery(thumbs),
							  jQuery(navBox.children('.nav-box-item'))
							 )
						);
				}
				else {
					changeImage(new Array(this), new Array(jQuery(thumbs)));
				}
			});
			jQuery(thumbs.get(0)).trigger('mouseover');
		}
	});

	function setActiveThumbs(activeRef, resetRef, activeClass) {
		jQuery(resetRef).each(function(){
			jQuery(this).removeClass(activeClass);
		});
		jQuery(activeRef).each(function(){

			jQuery(this).addClass(activeClass);
		});
		setDescription();
	}

	function changeImage (domRef, resetRef) {
		jQuery(domRef).each(function(){
			jQuery(this).mouseover(function(){
				var imageUrl = jQuery(this).data('imageUrl');
				setActiveThumbs(domRef, resetRef, options.thumbActClass);
				jQuery(keyvisContainer).swapKeyvisual({'imageUrl': imageUrl});
			});
			jQuery(this).click(function(){
				return false;
			});
		});
	}
	// Anpassung fuer optionale Description aus DAM
	function setDescription() {
		var desc = jQuery(options.getDescription).text();
		jQuery(options.setDescription).text(desc);
	}
};

jQuery.fn.swapKeyvisual = function(userOptions){
	// set up default options
	var defaults = {
		keyvisWrapClass: 'keyvis-small',
		imageUrl: '',
		imageTag: '',
		loadClass: 'loading'
	};
	// Overwrite default options
	// with user provided ones
	// and merge them into "options".
	var options = jQuery.extend({}, defaults, userOptions);
	return this.each(function(){
		//check if we need to do something
		var currentImage = jQuery(this).children('.'+options.keyvisWrapClass+':first-child').find('img').attr('src');
		if(currentImage != options.imageUrl) {
			var keyvis = this;
			jQuery(this).addClass(options.loadClass);
			var toFadeout = jQuery(this).children('.'+options.keyvisWrapClass);
			toFadeout.fadeOut('fast', function(){jQuery(this).remove();});
			var container = jQuery.create('div', {'class': options.keyvisWrapClass}).prependTo(this);

      //if image tag is not set, create new image from js
			if(options.imageTag == '') {
				//load the new image
				var img = new Image();
				jQuery(img)
				.load(function(){
  				jQuery(keyvis).removeClass(options.loadClass);
					jQuery(container).append(this).hide().fadeIn('fast');
				})
				.error(function(){})
				.attr('src', options.imageUrl);
			}
			//use the provided image from imageTag
			else {
				jQuery(container).append(options.imageTag).hide().fadeIn('fast', function(){jQuery(keyvis).removeClass(options.loadClass)});
			}
		}
	});
};



$(document).ready(function(){
	jQuery('.apartment-slider').keyvisChange({
		keyvisId: '#keyvis-wrap',
		textContainerSelector: '.apartment-slider-jscontent',
		thumbContainerClass: '.apartment-thumb',
		thumbTextClass: '.apartment-jscontent',
		thumbKeyvis: '.apartment-images .apartment-keyvis',
		thumbToggler: '.apartment-images .apartment-thumb',
		sliderContainer: '.apartment-slider-thumbs',
		mouseleaveSelector: '#content-small',
		mouseleaveRestore: '#content-small .apartment-slider > .apartment-slider-jscontent'
	});
	jQuery('.room-slider').keyvisChange({
		keyvisId: '#keyvis-wrap',
		textContainerSelector: '.room-slider-jscontent',
		thumbContainerClass: '.room-thumb',
		thumbTextClass: '.room-jscontent',
		thumbKeyvis: '.room-images .room-keyvis',
		thumbToggler: '.room-images .room-thumb',
		sliderContainer: '.room-slider-thumbs',
		mouseleaveSelector: '#content-small',
		mouseleaveRestore: '#content-small .room-slider > .room-slider-jscontent',
		maxThumbs: 8
	});
	jQuery('.gallery-slider').keyvisChange({
		keyvisId: '#keyvis-small-wrap',
		textContainerSelector: '.gallery-slider-jscontent',
		thumbContainerClass: '.gallery-thumb',
		thumbTextClass: '.gallery-jscontent',
		thumbKeyvis: '.gallery-images .gallery-keyvis',
		thumbToggler: '.gallery-images .gallery-thumb',
		sliderContainer: '.gallery-slider-thumbs',
		mouseleaveSelector: '#content-small',
		mouseleaveRestore: '#content-small .gallery-slider > .gallery-slider-jscontent',
		maxThumbs: 8
	});
	jQuery('.restaurants-overview').keyvisChange({
		keyvisId: '#keyvis-wrap',
		textContainerSelector: '.restaurants-jsinfo',
		thumbContainerClass: '.restaurant',
		thumbTextClass: '.restaurants-jscontent',
		thumbKeyvis: '.restaurants-images .restaurants-keyvis',
		thumbToggler: '.restaurants-images .restaurant-link',
		mouseleaveSelector: '#content-wide',
		mouseleaveRestore: '#content-wide .restaurants-overview > .restaurants-jsinfo'
	});
	jQuery('.keyvis-gallery-thumbs').keyvisChangeDetail({
		thumbContainerClass: '.keyvis-gallery-thumb',
		thumbContainerChildAction: 'a',
		thumbContainerLastClass: 'keyvis-gallery-thumb-last',
		keyvisWrapClass: 'keyvis-small',
		thumbActClass: 'act',
		getDescription: '.desc-on .act .description',
		setDescription: '.keyvis-gallery-description',
		createNavButtons: true
	});
	jQuery('.room-gallery').keyvisChangeDetail({
		thumbContainerClass: '.room-gallery-thumbs',
		thumbContainerChildAction: 'a',
		thumbContainerLastClass: 'room-gallery-thumbs',
		keyvisWrapClass: 'keyvis-small',
		thumbActClass: 'act',
		createNavButtons: false
	});



  $.nyroModalSettings({
    hideContent : function(elts,settings,callback){
        $('#nyroModalTitle').hide();
        $('#imagecaption').hide();
        $('#nyroModalWrapper').fadeOut(400, function(){
          callback();
        });
    }
  });
	jQuery('#content-small .damgallery-preview-link a.lightbox').nyroModal();
	jQuery('#content-small .damgallery-item .damgallery-thumb').click(function(){
    jQuery(this).next().children('a').trigger('click');
    return false;
  })

});


//home page
jQuery('document').ready(function(){
  if(jQuery('#page-1').length == 0) {
    return;
  }
  var buttons = jQuery('#page-1 .button-right');
  var keyvisContainer = jQuery('#page-1 #keyvis-start-image');
  var slideBox = jQuery('#page-1 #keyvis-start-box .keyvis-start-box-inner');
  var startImage = keyvisContainer.find('img').get(0).src;

  //set the initial image as background image for the whole keyvisual so it gets displayed as fallback
  if(startImage) {
    jQuery('#keyvis').css({
      'backgroundImage': 'url('+startImage+')',
      'backgroundRepeat': 'no-repeat',
      'backgroundPosition': 'top left'
    })
  }

  slideBox.css('top', '235px');
  jQuery('#page-1 #button-left').bind('mouseenter',
    function(){
	  openStartBox();  
    }
   );
  
  jQuery('#page-1 #button-left').bind('mouseleave',
    function(){
	  closeLayer = 1;
	  setTimeout(
	    function() {
	      if(closeLayer == 1) {
			  closeStartBox();
		  };
		},
		200
	  );
    }
  );
  
  jQuery('#page-1 .keyvis-start-box-inner').bind('mouseenter',
	function(){
	  closeLayer = 0;
	}
  );
  jQuery('#page-1 .keyvis-start-box-inner').bind('mouseleave',
    function(){
	  closeStartBox()
    }
  );
  
  jQuery('#page-1 .keyvis-startbox-link').click(function(){
	  var href = $('#button-left a').attr('href');
	  document.location.href = href;
  });

  function openStartBox() {
		slideBox.animate(
		   {'top': '0px'},
		     'fast'
	       );
		setTimeout(
			function() {
		         alwaysPlay();
		      },
		         500
		      );
	}
	function closeStartBox() {
		slideBox.animate(
		      {'top': '235px'},
		        'fast'
		      );
		stopVideo();
	}
  
  keyvisContainer.wrapInner('<div class="keyvis-wrap"></div>');
  buttons.each(function(){
    var jsImage = jQuery(this).next().html();
    jQuery(this).mouseover(function(){
      jQuery(keyvisContainer).swapKeyvisual({
        'imageUrl': jsImage,
        'keyvisWrapClass': 'keyvis-wrap'
      });
    });
  });
  jQuery('#keyvis').mouseleave(function(){
    keyvisContainer.empty();
  });
});

// Funktionen zur Steuerung des Startseiten Flash-Films
function stopVideo() {
	thisMovie( "gemovie" ).stopMovie();
}

function resumeVideo() {
	thisMovie( "gemovie" ).playMovie();
}
function alwaysPlay() {
	thisMovie( "gemovie" ).alwaysPlay();
}

function thisMovie(movieName) {
	if (navigator.appName.indexOf("Microsoft") != -1) {
		return window[movieName]
	}
	else {
		return document[movieName]
	}
}