// page init
$(function(){
	initDatePickers();
	initPopups();
	initNav();
});

//Navigation is hidden until page has loaded - to avoid occasional load flicker in IE 
$(document).ready(function() {
    $('#divNavHolder').css('visibility', 'visible');
});


// navigation
function initNav(){
	var _navEl = $('#nav li');
	var _durationSlide = 300;
	var _activeEl = {};
	
	_navEl.each(function(i, _el){
		_el = $(_el);
		var _ul = $('> div > ul', _el);
		var _parent = _ul.parent();
		_el.h = _ul.outerHeight();

		if (_parent.is('div')) {
			_parent.css({
				'height':0,
				'overflow':'hidden'
			});
			_ul.css({
				'marginTop':-_el.h,
				'overflow':'hidden'
			});
			_el.hoverEl = false;
			
			var _link = $('> a', _el);
			
			if (_el.hasClass('active')) _el.addClass('active-main');
			
			_link.click(function(){
				if (!_el.hoverEl) {
					if (_activeEl.el && _activeEl.el != _el) {
						_activeEl.el.hoverEl = false;
						_activeEl.parent.animate({height:0},{queue:false,duration:_durationSlide});
						var _a = _activeEl.el;
						_activeEl.ul.animate({marginTop:-_activeEl.el.h},{queue:false,duration:_durationSlide, complete:function(){
							$(_a).removeClass('active');	
						}});
					}
					_el.hoverEl = true;
					$(_el).addClass('active');
					_parent.animate({height:_el.h},{queue:false,duration:_durationSlide});
					_ul.animate({marginTop:0},{queue:false,duration:_durationSlide});
					
					if (_activeEl.el != _el) {
						_activeEl.el = _el;
						_activeEl.parent = _parent;
						_activeEl.ul = _ul;
					}
				} else {
					_el.hoverEl = false;
					_parent.animate({height:0},{queue:false,duration:_durationSlide});
					_ul.animate({marginTop:-_el.h},{queue:false,duration:_durationSlide, complete:function(){
						if (!_el.hoverEl)
							$(_el).removeClass('active');
					}});
				}
				return false;
			});
		}
	});
}

// datepickers init
function initDatePickers() {
	//var _headerText = 'M&aring;nad';
	$('div.datepicker-holder').each(function(){
		var _holder = $(this);
		var _picker = _holder.find('input[type="text"]');

		function updatePicker() {
			setTimeout(function(){
	//			_globalPicker.find('div.ui-datepicker-header').prepend('<strong>'+_headerText+'</strong>')
			},20);
		}

		_picker.datepicker({
			monthNames: ['Januari', 'Februari', 'Mars', 'April', 'Maj', 'Juni', 'Juli', 'Augusti', 'September', 'Oktober', 'November', 'December'],
			dayNamesMin: ['M', 'T', 'O', 'T', 'F', 'L', 'S'],
			beforeShow: function() {
				updatePicker();
			},
			onChangeMonthYear: function() {
				updatePicker();
			},
			buttonImageOnly: false,
			changeMonth: false,
			changeYear: false,
			dateFormat: 'yy-mm-dd',
			prevText: ' &lt; ',
			nextText: ' &gt; ',
			showOn: 'both'
		});
	});

	var _globalPicker = $('#ui-datepicker-div');
}

// popups function
function initPopups() {
	var _zIndex = 1000;
	var _fadeSpeed = 350;
	var _faderOpacity = 0.35;
	var _faderBackground = '#000';
	var _faderId = 'lightbox-overlay';
	var _closeLink = 'a.close, a.cancel';
	var _fader;
	var _lightbox = null;
	var _openers = $('a.open-popup, a.open-light-box');
	var _page = $('body > div:eq(0)');
	var _minWidth = _page.outerWidth();

	// init popup fader
	_fader = $('#'+_faderId);
	if(!_fader.length) {
		_fader = $('<div />');
		_fader.attr('id',_faderId);
		$('body').append(_fader);
	}
	_fader.css({
		opacity:_faderOpacity,
		backgroundColor:_faderBackground,
		position:'absolute',
		overflow:'hidden',
		display:'none',
		top:0,
		left:0,
		zIndex:_zIndex
	});

	// IE6 iframe fix
	if(jQuery.browser.msie && jQuery.browser.version < 7) {
		if(!_fader.children().length) {
		    var _frame = jQuery('<iframe src="about:blank" frameborder="0" scrolling="no" />');
			_frame.css({
				opacity:0,
				width:'100%',
				height:'100%'
			})
			_fader.empty().append(_frame);
		}
	}

	// lightbox positioning function
	function positionLightbox() {
		if(_lightbox) {
			var _windowHeight = $(window).height();
			var _windowWidth = $(window).width();
			var _lightboxWidth = _lightbox.outerWidth();
			var _lightboxHeight = _lightbox.outerHeight();
			var _pageHeight = $(document).height();  //_page.outerHeight(true);

			if (_windowWidth < _minWidth) _fader.css('width',_minWidth);
				else _fader.css('width','100%');
			if (_windowHeight < _pageHeight) _fader.css('height',_pageHeight);
				else _fader.css('height',_windowHeight);
				
			_lightbox.css({
				position:'absolute',
				zIndex:(_zIndex+1),
				top: 0,
				left:0
			});

			// vertical position
			if (_windowHeight > _lightboxHeight) {
				if ($.browser.msie && $.browser.version < 7) {
					_lightbox.css({
						position:'absolute',
						top: document.documentElement.scrollTop + (_windowHeight - _lightboxHeight) / 2
					});
				} else {
					_lightbox.css({
						position:'fixed',
						top: (_windowHeight - _lightboxHeight) / 2
					});
				}
			} else {
				_lightbox.css({
					position:'absolute',
					top: 0
				});
				if(_fader.height() < _lightboxHeight) _fader.css('height',_lightboxHeight);
			}

			// horizontal position
			if (_fader.width() > _lightbox.outerWidth()) _lightbox.css({left:(_fader.width() - _lightbox.outerWidth()) / 2});
			else _lightbox.css({left: 0});
		}
	}

	// show/hide lightbox
	function toggleState(_state) {
		if(!_lightbox) return;
		if(_state) {
			_fader.fadeIn(_fadeSpeed,function(){
				_lightbox.fadeIn(_fadeSpeed);
			});
			positionLightbox();
		} else {
			_lightbox.fadeOut(_fadeSpeed,function(){
				_fader.fadeOut(_fadeSpeed);
			});
		}
	}

	// popup actions
	function initPopupActions(_obj) {
		if(!_obj.get(0).jsInit) {
			_obj.get(0).jsInit = true;
			// close link
			_obj.find(_closeLink).click(function(){
				_lightbox = _obj;
				toggleState(false);
				return false;
			});
		}
	}

	// lightbox openers
	_openers.each(function(){
		var _opener = $(this);
		var _target = _opener.attr('href');

		if($(_target).length) {
			// init actions for popup
			var _popup = $(_target);
			initPopupActions(_popup);

			// open popup
			_opener.click(function(){
				if(_lightbox) {
					_lightbox.fadeOut(_fadeSpeed,function(){
						_lightbox = _popup.hide();
						toggleState(true);
					})
				} else {
					_lightbox = _popup.hide();
					toggleState(true);
				}
				return false;
			});
		}
	});

	// event handlers
	$(window).resize(function(){
		positionLightbox();
	})
	$(window).scroll(function(){
		positionLightbox();
	})
	$(document).keydown(function (e) {
		if (!e) evt = window.event;
		if (e.keyCode == 27) {
			toggleState(false);
		}
	})
//	_fader.click(function(){
//		toggleState(false);
//		return false;
//	})
}

