var fbDockClass = {
	check: function() {
		new Ajax.Request(
			'xmlhttp.php', {
			method: 'get',
			parameters: {action: 'fbDock_get_update', postkey: my_post_key},
			onSuccess: function(data) {
				var response = data.responseText.evalJSON();
				if (response.success)
				{
					$('fbdock_block_online').update(response.block);
					$('fbdock_online_count').update(response.count);
					$('fbdock_notify_count').update(response.notify_count);
					$('fbdock_block_notifications').update(response.notification);
					if (response.notify_count == 0) 
					{
						$('FBDock_notification').setStyle({backgroundPosition: '0 0'});
					}
					else
					{
						$('FBDock_notification').setStyle({backgroundPosition: '0 -27px'});
					}
					
					if (!response.cancelRefresh)
					{
						fbDockClass.setCheckTime();
					}
				} 				
			}
		});
	},
	
	setCheckTime: function() {
		var refresh_rate = 30000;
		if (parseInt(fbDock_refresh_rate) > 0) {
			refresh_rate = fbDock_refresh_rate * 1000;
		}
		setTimeout("fbDockClass.check();", refresh_rate);
	},
	
	displayFriends: function() {
		$('FbDock_notifications_pop').hide();
		var style = $('online_pop').getStyle('display') == 'none' ? '' : 'none';
		
		var cookie_date=new Date();
		cookie_date.setDate(cookie_date.getDate()+7);
		
		document.cookie = 'fbDock_friend_block=' + (style == 'none' ? 0 : 1) +';expires='+ cookie_date + ';';
		document.cookie = 'fbDock_notification_block=0' +';expires='+ new Date() + ';';

		$('online_pop').setStyle({
			display: style
		});
	},
	
	displayNotifications: function() {
		$('online_pop').hide();
		
		var style = $('FbDock_notifications_pop').getStyle('display') == 'none' ? '' : 'none';
		
		var cookie_date=new Date();
		cookie_date.setDate(cookie_date.getDate()+7);
		
		document.cookie = 'fbDock_notification_block=' + (style == 'none' ? 0 : 1) +';expires='+ cookie_date + ';';
		document.cookie = 'fbDock_friend_block=0' +';expires='+ new Date() + ';';

		$('FbDock_notifications_pop').setStyle({
			display: style
		});
	}
};

var fbDockFriendProfileAction = {
	action: function(action, fuid, muid) {
		var response = friendsClass.action(action, fuid, muid, 'fbDockFriendProfileAction.complete');
		return;
	},
	
	complete: function(response) {
		if (response.success) 
		{			
			var muid = response.muid;
			var fuid = response.fuid;
			var new_action = (response.action == 'add_friend' ? 'remove_friend' : 'add_friend');
			var link = '<a onclick="fbDockFriendProfileAction.action(\''+new_action+'\', '+fuid+', '+muid+'); return false;" ';
			link += 'href="member.php?action=profile&friend_action=';
			link += new_action+'&uid='+fuid+'">'+response.link+'</a>';
			$('fbDock_friend').update(link);
		}
		else 
		{
			fbPopUp.buildPopUp(response.message);
		}
	}
};

var friendsClass = {
	action: function(action, fuid, muid, callback) {
		if (action.strip() == '' || fuid <= 0 || muid <= 0)
		{
			message = 'An error has occured. ';
			message += 'Please refresh the page and try again. '
			message += 'If the problem persists, please contact the administrator.';
			fbPopUp.buildPopUp(message);
			return;
		}
		new Ajax.Request(
			'xmlhttp.php', {
			method: 'get',
			parameters: {action: action, fuid: fuid, muid: muid},
			onSuccess: function(data) {
				var response = data.responseText.evalJSON();
				eval(callback+'(response)'); 
			}
		});
	}
};

var fbDockTooltip = {
	run: function(element, text, extra) {
		fbDockTooltip.element = element;		
		fbDockTooltip.text = text;
		this.cssClass =  extra.addclass ? 'class="' + extra.addclass + '""' : '';
		if (!$('fbDockTooltip')) {
			$$('body')[0].insert({'bottom' : '<div id="fbDockTooltip" ' + this.cssClass + ' style="display: none;"></div>'});
		}
		$('fbDockTooltip').update(text);
		$(element).observe('mousemove', this.move);
		$(element).observe('mouseout', this.out);
  	},
  	
	move: function(event) {
		if (!event){ 
			event = window.event
		}
		var scrollOffset = document.viewport.getScrollOffsets();
		//alert(scrollOffset.top+' '+Event.pointerY(event));
		var top = ($('fbDockTooltip').getHeight() + scrollOffset.top) > Event.pointerY(event) 
			? (Event.pointerY(event) + ($('fbDockTooltip').getHeight())/2) 
					: Event.pointerY(event) - $('fbDockTooltip').getHeight();
		top +=  'px';
		
		var left = 'auto';
		var right = 'auto';
		if (($('fbDockTooltip').getWidth() + 15) > Event.pointerX(event)) {
			left = Event.pointerX(event) + 15 + 'px';
		} else {
			right = (document.viewport.getWidth() - Event.pointerX(event)) + 20 + 'px'; 
		}
						
		$('fbDockTooltip').setStyle({
			display: '',
			top: top,
			left: left,
			right: right
		});
	},
	
	out: function() {
		$('fbDockTooltip').setStyle({
  			display: 'none'
		});
		
		$('fbDockTooltip').update('');
	}
};

var fbPopUp = {
	buildPopUp: function(message, disable_page, fade) {
		disable_page = typeof(disable_page) != 'undefined' ? disable_page : true;
		fade = typeof(fade) != 'undefined' ? fade : false;
		width = document.viewport.getWidth();
		
		if (disable_page) 
		{
			height_array = $$('body');
			height = height_array[0].getHeight() + this.getFloat(height_array[0].getStyle('marginTop')) + this.getFloat(height_array[0].getStyle('marginBottom'));
			
			div = new Element('div', {'id':'friendsPop'});
			div.setStyle({
				width: '100%',
				minHeight: height + 'px',
				height: height + 'px'
			});
			
			$('container').insert({'before' : div});
		}
		
		message += '<br /><br /><center><button type="button" ';
		div2 = new Element('div', {'id':'friends_error'});
		if (disable_page) 
		{
			$('friendsPop').insert({'after' : div2});
			message += 'onclick="$(\'friends_error\').remove(); $(\'friendsPop\').remove(); return false;">';
		} 
		else
		{
			$('container').insert({'before' : div2});
			message += 'onclick="$(\'friends_error\').remove(); return false;">';
		}
		
		message += 'Close</button></center>';
		if (fade) 
		{
			message += '<script type="text/javascript">setTimeout("fbPopUp.fade()",2000);</script>';
		}
		div2.update(message);
		
		css_top = 0;
		css_top += this.getFloat($('friends_error').getStyle('marginTop')) + this.getFloat($('friends_error').getStyle('marginBottom'));
		css_top += $('friends_error').getHeight();
		css_top = (document.viewport.getHeight()/2) - (css_top/2);
		
		css_left = 0;
		css_left += this.getFloat($('friends_error').getStyle('marginLeft')) + this.getFloat($('friends_error').getStyle('marginRight'));
		css_left += $('friends_error').getWidth();
		css_left = (width/2) - (css_left/2);
		div2.setStyle({
			top: css_top + 'px',
			left: css_left + 'px'
		});
	},
	
	fade: function() {
		if (!$('friends_error'))
		{
			return;
		}
		var opacity = $('friends_error').getStyle('opacity');
		var speed = Math.round((opacity/5) * 1000);
		if (speed < 3)
		{
			opacity = 0;
		}
		else 
		{
		speed = speed/1000
		opacity = opacity - speed;
		}
		if (opacity > 0)
		{
			if ($('friends_error'))
			{
				$('friends_error').setOpacity(opacity);
				setTimeout("fbPopUp.fade()",100);
			}
		} 
		else 
		{
			if ($('friends_error'))
			{
				$('friends_error').remove();
			}
			
			if ($('friendsPop'))
			{
				$('friendsPop').remove();
			}
		}
	},

	getFloat: function(number) {
		float_number = parseFloat(number);
		return isNaN(float_number) ? 0 : float_number;
	}
};