$(function(){
	
	var css3  = $.browser.webkit
		||  $.browser.safari
		|| ($.browser.mozilla && $.browser.version >= 3.4)
		|| ($.browser.opera && $.browser.version >= 2.3);
	
	// Header menu animation
	var allTabsOpen = [];
	$('#header > ul > li').each( function () {
		var $this = $(this),
			l = $('>a', $this),
			m = $('>dl', $this).add( $('>a span.hover',$this) ),
			hideTimer = false,
			open = false,
			
			openTab = function() {
				hideTimer && clearTimeout(hideTimer);
				if (!open) {
					open = true;
					var i;
					while(i = allTabsOpen.pop()) {
						if (m != i) 
							css3
								? i.removeClass('topmenu-visible topmenu-fade')
								: i.css('display','none');
					}
					allTabsOpen.push(m);
				}
				if (css3)
				{
					m.addClass('topmenu-fade topmenu-visible');
					setTimeout( function(){ m.removeClass('topmenu-fade'); }, 0 );
				}
				else
						m.stop().css({'display':'block','opacity':1});
			},
			closeTab = function() {
				open = hideTimer = false;
				if (css3) {
					m.addClass('topmenu-fade');
					setTimeout( function(){ 
						if (!open) m.removeClass('topmenu-fade topmenu-visible');
					}, 400);
				} else
					m.fadeTo(400, 0, function(){ 
						if (!open) m.css('display','none');
					});
			};
		
		l			.mouseenter(openTab);
		$this	.mouseenter(openTab)
					.mouseleave(function() {
			open = false;
			hideTimer && clearTimeout(hideTimer);
			hideTimer = setTimeout(closeTab, 500);
		});
	});
	
	// Header login box
	$('#header_login_box_toggle').each( function() {
		var open = false,
			$box = $('#header_login_box'),
			closeFunc = function(ev)
			{
				$box.slideUp(200);
				open = false;
				$(document).unbind('click', closeCheck);
				
				if (ev) {
					ev.preventDefault();
					return false;
				}
			},
			closeCheck = function (ev)
			{
				// check that click didn't happen inside the box
				$e = $(ev.target);
				if ($e.is('#header_login_box'))
					return true;
				
				var parents = $e.parents().get();
				for (var j=0; j<parents.length; j++) {
					if ( $(parents[j]).is('#header_login_box') )
						return true;
				}
				
				closeFunc();
			};
		
		$('.close', $box).click(closeFunc);
		
		$(this)
			.click(function(ev){ 
				if (open) {
					closeFunc();
				} else {
					$box.slideDown(400, function(){ 
						$box.find('input:first').focus();
					});
					open = true;
					$(document).bind('click', closeCheck);
				}
				return false; })
			.dblclick(function(e){ window.location.href = this.href; return false; });
	});
	
	// label fading
	$('.label-holder').each( function () {
		var $this = $(this),
			label = $('label', $this),
			form  = $('#'+label.attr('for'), $this),
			input = form.get(0);
		
		// don't operate on a null label
		if (!input)
			form = $('textarea[name="'+label.attr('for')+'"]', $this);
		if (!form) 
			return;
		else
			input = form.get(0); 
		
		form
			.bind('focus', function() {
				if (input.value == '')
					label.addClass('label-holder-fade').removeClass('label-holder-hide');
				else
					label.addClass('label-holder-hide');
			})
			.bind('blur', function() {
				if (input.value == '')
					label.removeClass('label-holder-fade label-holder-hide');
				else
					label.addClass('label-holder-hide');
			})
			.bind('keydown', function(e) {
				if ( (e.keyCode == 8 || e.keyCode == 46) && input.value.length <= 1)
					label.addClass('label-holder-fade').removeClass('label-holder-hide');
				else 
					label.addClass('label-holder-hide');
			});
		label
			.bind('click', function() {
				if (input) input.focus();
			});

		if (input && input.value != '') {
			label.hide();
		}
	});
	
	
	// Set remove fall-back CSS class
	$(document.body).removeClass('nojs');
	
	if ($.browser.msie) $(document.body).addClass('ie');
	
	// Set anchors with href attrs && rel==external to open in new window
	if (document.getElementsByTagName) {
		var anchors = document.getElementsByTagName("a");
		for (var i=0; i<anchors.length; i++) {
	   var anchor = anchors[i];
	   if (anchor.getAttribute("href") &&
	       anchor.getAttribute("rel") == "external")
	     anchor.target = "_blank";
	 }
	}
});
