// Assign jQuery to the $j variable instead of $, to avoid conflicts with Prototype.
var $j = jQuery.noConflict();


//(function() {
	
	var iFrameHandler = {
		
		iframeId: null,
		iframeExtraHeight: 35,
		
		init: function(iframeId) {
			
			this.iframeId = iframeId;
			
			$j('iframe#' + iframeId).load(function() {
				iFrameHandler.iframeIsLoaded(this);
			});
			
		},
		
		iframeIsLoaded: function(iFrame) {
			
			// Find height of iframe-content:
			var iFrameHeight = $j("#" + this.iframeId).contents().find("html").height() + this.iframeExtraHeight;
			
			// Set height of iframe-container:
			$j("#" + this.iframeId).attr("height", iFrameHeight);

		}
    
    };
    
    iFrameHandler.init("formIframe");

//})();


(function() {
	
	var formHandler = {
		
		init: function() {
						
			if ($j("table#attendees").length == 0) { return; }
			
			$j("#attendeesPlacesSelection").change(function() {
				$j("form#attendeesPlaces").submit();
			});
			
		},
		
	};
	
	formHandler.init();
	


	var kvTitle = {	
		
		titlePopupTimeoutId: null,
		titlePopupTimeoutDuration: 4000, // 4000
		titlePopupTimeoutStartDuration: 600,
		
		init: function() {
					
			// Set up event handlers for elements with class=kvTitle and title-attribute:
			$j(".kvTitle[title]").hover(
				function () {
					kvTitle.toggleTitlePopupsForElement(true, this);
				}, 
				function () {
					kvTitle.toggleTitlePopupsForElement(false, this);
				}
			);
			
			$j(".kvTitle[title]").mousedown(function() {
				kvTitle.toggleTitlePopupsForElement(false, this);
				return true;
			});
			
		},
	
	
		// Display or hide title-element.
		toggleTitlePopupsForElement: function(display, element) {
			window.clearTimeout(kvTitle.titlePopupTimeoutId);
			
			if (display) {
				
				// If title-attribute is empty, return:
				if ($j(element).attr("title") == "") {
					//console.log("return ...");
					return;
				}
				
				// Empty title-element to prevent default display of it and store in jQuery.data:
				$j.data(element, "title", $j(element).attr("title"));
				$j(element).attr({"title": ""});
				
				kvTitle.titlePopupTimeoutId = window.setTimeout(function() { 
	
					var bottom = ($j(window).height() - $j(element).offset().top) + 10;
					var left = $j(element).offset().left;
					var elementWidth = $j(element).width();
					
					// Determin if element should display left or right of trigger element.
					var displayLeft = (($j(document).width() / 2) > left ? false : true) ;
									
					// Read string-value from jQuery.data for this element:
					var el = kvTitle.generateTitleElement($j.data(element, "title"), displayLeft);
					
					$j("body").append(el);
					var elWidth = el.width();
					var elPadding = parseInt(el.css("padding-left").replace("px", "")) * 2;
					
					if (displayLeft) {
						left = (left - (elWidth + elPadding) + elementWidth) + 5;
						var spanEl = el.find("span");
						var spanElRight = (elementWidth / 2)- 2;
						if (spanElRight <= 2) {
							spanElRight = 2;
						}
						spanEl.css({"right": spanElRight + "px"});
					}
					
					el.css({"left": left + "px", "bottom": bottom + "px"});
					el.fadeIn(200);
					
					kvTitle.titlePopupTimeoutId = window.setTimeout(function() { 
						kvTitle.toggleTitlePopupsForElement(false, el);
					}, kvTitle.titlePopupTimeoutDuration);
				
				}, kvTitle.titlePopupTimeoutStartDuration);
	
				
			} else {
				
				// Re-insert title attribute from data:
				$j(element).attr({"title": $j.data(element, "title")});
				
				$j(".kvTitleElement").fadeOut(100, function() {
					$j(this).remove();
				});
			}
		},
		
		generateTitleElement: function(txt, displayLeft) {
			
			var el = $j("<div/>").addClass("kvTitleElement").html("<span> </span>" + txt);
			if (!displayLeft) {
				el.addClass("displayLeft");
			}
			return el;
	
		}
	
	};
	
	kvTitle.init();




})();
