ck24 = {
	vars : [],
	delays : [],
	isIE6 : $.browser.msie && /6.0/.test(navigator.userAgent),
	isFF2 : $.browser.mozilla && (parseFloat($.browser.version) < 1.9), 

	
	set : function(name, value) {
		this.vars[name] = value;
	},
	
	get : function(name) {
		return this.vars[name];
	},	
		
	delaySet : function(id, ms, func) {
		this.delayClear(id);
		this.delays[id] = setTimeout(func +'()' , ms);
	},
	
	delayClear : function(id) {
		if (this.delays[id]) {
			clearTimeout(this.delays[id]);
			this.delays[id] = false;
		}
	},	
	
	include : function(src, id) {
		var script = document.createElement('script');
		script.src = src;
		script.type = 'text/javascript';
		script.defer = true;
		if (id) script.id = id;

		var head = document.getElementsByTagName('head').item(0);
		head.appendChild(script);
	},
	
	popup : function() {
		var w = arguments[0] ? arguments[0] : '580';
		var h = arguments[1] ? arguments[1] : '360';
		var popup = window.open('', 'popup', 'width='+w+',height='+h+',scrollbars=yes, toolbar=no,status=no,resizable=yes,menubar=no,location=no,directories=no,top=10,left=10');
		popup.focus();
	}
};

ck24_faqtip = {
		active : false,
		
		//register fagtips
		register : function() {
			
			$('.ck24-faqtip').each(function () {
				var faqtip = $(this);
				var faqtip_content = faqtip.find('.ck24-faqtip-content');
				
				faqtip_content.html(
					'<div class="ck24-faqtip-inner">' +
						faqtip_content.html() +					
						'<div class="ck24-faqtip-corner">&nbsp;</div>' +
						'<div class="ck24-faqtip-close">&nbsp;</div>' +
					'</div>'
				);
				faqtip_content.bgiframe();
				
				faqtip.click(function(e) {
					if(ck24.isIE6){
						faqtip_content.show();
						if(ck24_faqtip.active!=faqtip_content){
							if (ck24_faqtip.active) {
								ck24_faqtip.active.hide();
							}
							ck24_faqtip.active = faqtip_content;
							e.stopPropagation();
						}
					}
					else{
						faqtip_content.fadeIn('fast', function() {
							ck24_faqtip.active = faqtip_content;
						});
					}
				});
				
				faqtip.find('.ck24-faqtip-title').hover(
					function() {
						$(this).addClass('ck24-faqtip-hover');
					},
					function() {
						$(this).removeClass('ck24-faqtip-hover');
					}
				);
			});
			
			$(document).click(function() {
				if (ck24_faqtip.active) {
					if(ck24.isIE6){
						ck24_faqtip.active.hide();
					}
					else{
						ck24_faqtip.active.fadeOut('fast');
					}
					ck24_faqtip.active=false;
				}
			});
		}
	};



ck24_navi = {
	init : function() {
	
		if (ck24.get('menu')) {
			$('.navi-arrow').show().mouseover(function() {
				ck24_navi.open();
			});
			
			$('#navi_clickable').click(function() {
				ck24_navi.toggle();
			});	
			
			$('#navi_content').mouseout(function(event) {
				var node = $(event.relatedTarget);
				var id = node.attr('id');
				
				if (id != 'navi') {	
					if (id == '') {
						var mt =  new Date().getTime();
						id =  'bubble' + mt;
						node.attr('id', 'bubble' + mt);
					}
					
					if ($('#navi').find('#'+ id).length == 0) {
						ck24.delaySet('navi', 300, 'ck24_navi.close');
					}
				}
			});
			
			$('#navi_content').mouseover(function(event) {
				ck24.delayClear('navi');
			});
		} else {
			this.open(true);
			$('#navi_clickable').css('cursor', 'default');
		}
		
		//register sub menus
		$('.navi-sub').mouseover(function() {
			ck24.delayClear('navi_sub');
			ck24_navi.closeSub();
			$(this).find('.navi-sub-list').show();
		});
		
		$('.navi-sub').mouseout(function() {
			ck24.delaySet('navi_sub', 300, 'ck24_navi.closeSub');
		});		
	},
	
	open : function(instant) {
		var navi = $('#navi_content');
		
		if (navi.attr('open') != '1') {
			navi.attr('open', 1);
			navi.show(instant ? null : 'blind');
		}		
	},
	
	close : function() {
		var navi = $('#navi_content');
		
		if (navi.attr('open') == '1') {
			navi.attr('open', 0);
			navi.hide('blind');
		}		
	},
	
	closeSub : function () {
		$('.navi-sub-list').hide();
	},
	
	toggle : function() {
		var navi = $('#navi_content');
		
		if (navi.attr('open') == '1') {
			navi.attr('open', 0);
			navi.hide('blind');
		} else {
			navi.attr('open', 1);
			navi.show('blind');		
		}		
	}
}

function c24_iframe_resizer(){
	// Set specific variable to represent all iframe tags.
	var iFrames = $('.ck24-resize-iframe');

	// Resize heights.
	function iResize()
	{
		// Iterate through all iframes in the page.
		for (var i = 0, j = iFrames.length; i < j; i++)
		{
			// Set inline style to equal the body height of the iframed content.
			iFrames[i][0].style.height = iFrames[i][0].contentWindow.document.body.offsetHeight + 'px';
		}
	}

	// Check if browser is Safari or Opera.
	if ($.browser.safari || $.browser.opera)
	{
		// Start timer when loaded.
		$('.ck24-resize-iframe').load(function()
			{
				setTimeout(iResize, 0);
			}
		);

		// Safari and Opera need a kick-start.
		for (var i = 0, j = iFrames.length; i < j; i++)
		{
			var iSource = iFrames[i][0].src;
			iFrames[i][0].src = '';
			iFrames[i][0].src = iSource;
		}
	}
	else
	{
		// For other good browsers.
		$('.ck24-resize-iframe').load(function()
			{
					innerDoc = (this.contentDocument) ? this.contentDocument : this.contentWindow.document;
					objToResize = (this.style) ? this.style : this;
					objToResize.height = innerDoc.body.scrollHeight + 10;
			}
		);
	}

}





$(function() {
	ck24_navi.init();
	ck24_faqtip.register();
	
	c24_iframe_resizer();

	
	$('.home').hover(
		function() {
			$('#home_hover').show();
			$('#home_standard').hide();
		},
		function() {
			$('#home_standard').show();
			$('#home_hover').hide();
		}
	);
});



/************** PLUGINS **************/

/* Copyright (c) 2006 Brandon Aaron (http://brandonaaron.net)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) 
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 *
 * $LastChangedDate: 2007-07-21 18:44:59 -0500 (Sat, 21 Jul 2007) $
 * $Rev: 2446 $
 *
 * Version 2.1.1
 */

(function($){

/**
 * The bgiframe is chainable and applies the iframe hack to get 
 * around zIndex issues in IE6. It will only apply itself in IE6 
 * and adds a class to the iframe called 'bgiframe'. The iframe
 * is appeneded as the first child of the matched element(s) 
 * with a tabIndex and zIndex of -1.
 * 
 * By default the plugin will take borders, sized with pixel units,
 * into account. If a different unit is used for the border's width,
 * then you will need to use the top and left settings as explained below.
 *
 * NOTICE: This plugin has been reported to cause perfromance problems
 * when used on elements that change properties (like width, height and
 * opacity) a lot in IE6. Most of these problems have been caused by 
 * the expressions used to calculate the elements width, height and 
 * borders. Some have reported it is due to the opacity filter. All 
 * these settings can be changed if needed as explained below.
 *
 * @example $('div').bgiframe();
 * @before <div><p>Paragraph</p></div>
 * @result <div><iframe class="bgiframe".../><p>Paragraph</p></div>
 *
 * @param Map settings Optional settings to configure the iframe.
 * @option String|Number top The iframe must be offset to the top
 * 		by the width of the top border. This should be a negative 
 *      number representing the border-top-width. If a number is 
 * 		is used here, pixels will be assumed. Otherwise, be sure
 *		to specify a unit. An expression could also be used. 
 * 		By default the value is "auto" which will use an expression 
 * 		to get the border-top-width if it is in pixels.
 * @option String|Number left The iframe must be offset to the left
 * 		by the width of the left border. This should be a negative 
 *      number representing the border-left-width. If a number is 
 * 		is used here, pixels will be assumed. Otherwise, be sure
 *		to specify a unit. An expression could also be used. 
 * 		By default the value is "auto" which will use an expression 
 * 		to get the border-left-width if it is in pixels.
 * @option String|Number width This is the width of the iframe. If
 *		a number is used here, pixels will be assume. Otherwise, be sure
 * 		to specify a unit. An experssion could also be used.
 *		By default the value is "auto" which will use an experssion
 * 		to get the offsetWidth.
 * @option String|Number height This is the height of the iframe. If
 *		a number is used here, pixels will be assume. Otherwise, be sure
 * 		to specify a unit. An experssion could also be used.
 *		By default the value is "auto" which will use an experssion
 * 		to get the offsetHeight.
 * @option Boolean opacity This is a boolean representing whether or not
 * 		to use opacity. If set to true, the opacity of 0 is applied. If
 *		set to false, the opacity filter is not applied. Default: true.
 * @option String src This setting is provided so that one could change 
 *		the src of the iframe to whatever they need.
 *		Default: "javascript:false;"
 *
 * @name bgiframe
 * @type jQuery
 * @cat Plugins/bgiframe
 * @author Brandon Aaron (brandon.aaron@gmail.com || http://brandonaaron.net)
 */
$.fn.bgIframe = $.fn.bgiframe = function(s) {
	// This is only for IE6
	if ( $.browser.msie && /6.0/.test(navigator.userAgent) ) {
		s = $.extend({
			top     : 'auto', // auto == .currentStyle.borderTopWidth
			left    : 'auto', // auto == .currentStyle.borderLeftWidth
			width   : 'auto', // auto == offsetWidth
			height  : 'auto', // auto == offsetHeight
			opacity : true,
			src     : 'javascript:false;'
		}, s || {});
		var prop = function(n){return n&&n.constructor==Number?n+'px':n;},
		    html = '<iframe class="bgiframe"frameborder="0"tabindex="-1"src="'+s.src+'"'+
		               'style="display:block;position:absolute;z-index:-1;'+
			               (s.opacity !== false?'filter:Alpha(Opacity=\'0\');':'')+
					       'top:'+(s.top=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+\'px\')':prop(s.top))+';'+
					       'left:'+(s.left=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+\'px\')':prop(s.left))+';'+
					       'width:'+(s.width=='auto'?'expression(this.parentNode.offsetWidth+\'px\')':prop(s.width))+';'+
					       'height:'+(s.height=='auto'?'expression(this.parentNode.offsetHeight+\'px\')':prop(s.height))+';'+
					'"/>';
		return this.each(function() {
			if ( $('> iframe.bgiframe', this).length == 0 )
				this.insertBefore( document.createElement(html), this.firstChild );
		});
	}
	return this;
};

})(jQuery);


