1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
<?php
/**
* Elgg profile image Javascript
*
* @package ElggProfile
* @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
* @author Pete Harris <pete@elgg.com>
* @copyright Curverider Ltd 2008
* @link http://elgg.com/
*
* @uses $vars['entity'] The user entity
*/
header("Content-type: text/javascript");
header("Pragma: public");
header("Cache-Control: public");
?>
function setup_avatar_menu() {
// avatar image menu link
$("div.usericon img").mouseover(function() {
// find nested avatar_menu_button and show
$(this.parentNode.parentNode).children("[class=avatar_menu_button]").show();
})
.mouseout(function() {
if($(this).parent().parent().find("div.sub_menu").css('display')!="block"){
$(this.parentNode.parentNode).children("[class=avatar_menu_button]").hide();
}
else {
$(this.parentNode.parentNode).children("[class=avatar_menu_button]").show();
}
});
// avatar contextual menu
$(".avatar_menu_button img.arrow").click(function(e) {
var submenu = $(this).parent().parent().find("div.sub_menu");
// close submenu if arrow is clicked & menu already open
if(submenu.css('display') == "block") {
submenu.hide();
$(this).attr('src','<?php echo $vars['url']; ?>_graphics/avatar_menu_arrow_hover.gif');
}
else {
// get avatar dimensions
var avatar = $(this).parent().parent().parent().find("div.usericon");
//alert( "avatarWidth: " + avatar.width() + ", avatarHeight: " + avatar.height() );
// move submenu position so it aligns with arrow graphic
if (e.pageX < 840) { // popup menu to left of arrow if we're at edge of page
submenu.css("top",(avatar.height()) + "px")
.css("left",(avatar.width()-15) + "px")
.fadeIn('normal');
}
else {
submenu.css("top",(avatar.height()) + "px")
.css("left",(avatar.width()-166) + "px")
.fadeIn('normal');
}
// fix for z-index / jquery bug
//$(this).css("z-index", parseInt( new Date().getTime()/100000000 ));
//avatar.css("z-index", parseInt( new Date().getTime()/100000000 ));
//submenu.css("z-index", parseInt( new Date().getTime()/100000000 ));
//alert("submenu z-index = " +submenu.css("z-index"));
// change arrow to 'on' state
$(this).attr('src','<?php echo $vars['url']; ?>_graphics/avatar_menu_arrow_open.gif');
}
// hide any other open submenus and reset arrows
$("div.sub_menu:visible").not(submenu).hide();
$(".usericon img.arrow").not(this).attr('src','<?php echo $vars['url']; ?>_graphics/avatar_menu_arrow.gif');
$(".avatar_menu_button").not(this).hide();
})
// hover arrow each time mouseover enters arrow graphic (eg. when menu is already shown)
.mouseover(function() { $(this).attr('src','<?php echo $vars['url']; ?>_graphics/avatar_menu_arrow_hover.gif'); })
// if menu not shown revert arrow, else show 'menu open' arrow
.mouseout(function() {
if($(this).parent().parent().find("div.sub_menu").css('display')!="block"){
$(this).attr('src','<?php echo $vars['url']; ?>_graphics/avatar_menu_arrow.gif');
}
else {
$(this).attr('src','<?php echo $vars['url']; ?>_graphics/avatar_menu_arrow_open.gif');
}
});
// hide avatar menu if click occurs outside of menu
// and hide arrow button
$(document).click(function(event) {
var target = $(event.target);
if (target.parents(".usericon").length == 0) {
$(".usericon div.sub_menu").fadeOut();
$(".usericon img.arrow").attr('src','<?php echo $vars['url']; ?>_graphics/avatar_menu_arrow.gif');
$(".avatar_menu_button").hide();
}
});
}
$(document).ready(function() {
setup_avatar_menu();
});
|