$(document).ready(function () {
// COLLAPSABLE WIDGETS (on Dashboard & Profile pages)
// toggle widget box contents
$('a.toggle_box_contents').bind('click', toggleContent);
// toggle widget box edit panel
$('a.toggle_box_edit_panel').click(function () {
$(this.parentNode.parentNode).children("[class=collapsable_box_editpanel]").slideToggle("fast");
return false;
});
// toggle customise edit panel
$('a.toggle_customise_edit_panel').click(function () {
$('div#customise_editpanel').slideToggle("fast");
return false;
});
// toggle plugin's settings nad more info on admin tools admin
$('a.pluginsettings_link').click(function () {
$(this.parentNode.parentNode).children("[class=pluginsettings]").slideToggle("fast");
return false;
});
$('a.manifest_details').click(function () {
$(this.parentNode.parentNode).children("[class=manifest_file]").slideToggle("fast");
return false;
});
// reusable generic hidden panel
$('a.collapsibleboxlink').click(function () {
$(this.parentNode.parentNode).children("[class=collapsible_box]").slideToggle("fast");
return false;
});
// WIDGET GALLERY EDIT PANEL
// Sortable widgets
var els = ['#leftcolumn_widgets', '#middlecolumn_widgets', '#rightcolumn_widgets', '#widget_picker_gallery' ];
var $els = $(els.toString());
$els.sortable({
items: '.draggable_widget',
handle: '.drag_handle',
cursor: 'move',
revert: true,
opacity: 1.0,
appendTo: 'body',
placeholder: 'placeholder',
connectWith: els,
start:function(e,ui) {
},
stop: function(e,ui) {
// refresh list before updating hidden fields with new widget order
$(this).sortable( "refresh" );
var widgetNamesLeft = outputWidgetList('#leftcolumn_widgets');
var widgetNamesMiddle = outputWidgetList('#middlecolumn_widgets');
var widgetNamesRight = outputWidgetList('#rightcolumn_widgets');
document.getElementById('debugField1').value = widgetNamesLeft;
document.getElementById('debugField2').value = widgetNamesMiddle;
document.getElementById('debugField3').value = widgetNamesRight;
}
});
// bind more info buttons - called when new widgets are created
widget_moreinfo();
// set-up hover class for dragged widgets
$("#rightcolumn_widgets").droppable({
accept: ".draggable_widget",
hoverClass: 'droppable-hover'
});
$("#middlecolumn_widgets").droppable({
accept: ".draggable_widget",
hoverClass: 'droppable-hover'
});
$("#leftcolumn_widgets").droppable({
accept: ".draggable_widget",
hoverClass: 'droppable-hover'
});
});
// List active widgets for each page column
function outputWidgetList(forElement) {
return( $("input[@name='handler'], input[@name='guid']", forElement ).makeDelimitedList("value") );
}
// Make delimited list
jQuery.fn.makeDelimitedList = function(elementAttribute) {
var delimitedListArray = new Array();
var listDelimiter = "::";
// Loop over each element in the stack and add the elementAttribute to the array
this.each(function(e) {
var listElement = $(this);
// Add the attribute value to our values array
delimitedListArray[delimitedListArray.length] = listElement.attr(elementAttribute);
}
);
// Return value list by joining the array
return(delimitedListArray.join(listDelimiter));
}
// Read each widgets collapsed/expanded state from cookie and apply
function widget_state(forWidget) {
var thisWidgetState = $.cookie(forWidget);
if (thisWidgetState == 'collapsed') {
forWidget = "#" + forWidget;
$(forWidget).find("div.collapsable_box_content").hide();
$(forWidget).find("a.toggle_box_contents").html('+');
$(forWidget).find("a.toggle_box_edit_panel").fadeOut('medium');
};
}
// Toggle widgets contents and save to a cookie
var toggleContent = function(e) {
var targetContent = $('div.collapsable_box_content', this.parentNode.parentNode);
if (targetContent.css('display') == 'none') {
targetContent.slideDown(400);
$(this).html('-');
$(this.parentNode).children("[class=toggle_box_edit_panel]").fadeIn('medium');
// set cookie for widget panel open-state
var thisWidgetName = $(this.parentNode.parentNode.parentNode).attr('id');
$.cookie(thisWidgetName, 'expanded', { expires: 365 });
} else {
targetContent.slideUp(400);
$(this).html('+');
$(this.parentNode).children("[class=toggle_box_edit_panel]").fadeOut('medium');
// make sure edit pane is closed
$(this.parentNode.parentNode).children("[class=collapsable_box_editpanel]").hide();
// set cookie for widget panel closed-state
var thisWidgetName = $(this.parentNode.parentNode.parentNode).attr('id');
$.cookie(thisWidgetName, 'collapsed', { expires: 365 });
}
return false;
};
// More info tooltip in widget gallery edit panel
function widget_moreinfo() {
$("img.more_info").hover(function(e) {
var widgetdescription = $("input[@name='description']", this.parentNode.parentNode.parentNode ).attr('value');
$("body").append(""+ widgetdescription +"
");
if (e.pageX < 900) {
$("#widget_moreinfo")
.css("top",(e.pageY + 10) + "px")
.css("left",(e.pageX + 10) + "px")
.fadeIn("medium");
}
else {
$("#widget_moreinfo")
.css("top",(e.pageY + 10) + "px")
.css("left",(e.pageX - 210) + "px")
.fadeIn("medium");
}
},
function() {
$("#widget_moreinfo").remove();
});
$("img.more_info").mousemove(function(e) {
// action on mousemove
});
};
// COOKIES
jQuery.cookie = function(name, value, options) {
if (typeof value != 'undefined') { // name and value given, set cookie
options = options || {};
if (value === null) {
value = '';
options.expires = -1;
}
var expires = '';
if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
var date;
if (typeof options.expires == 'number') {
date = new Date();
date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
} else {
date = options.expires;
}
expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
}
// CAUTION: Needed to parenthesize options.path and options.domain
// in the following expressions, otherwise they evaluate to undefined
// in the packed version for some reason.
var path = options.path ? '; path=' + (options.path) : '';
var domain = options.domain ? '; domain=' + (options.domain) : '';
var secure = options.secure ? '; secure' : '';
document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
} else { // only name given, get cookie
var cookieValue = null;
if (document.cookie && document.cookie != '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = jQuery.trim(cookies[i]);
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) == (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
};
// ELGG TOOLBAR MENU
$.fn.elgg_topbardropdownmenu = function(options) {
options = $.extend({speed: 350}, options || {});
this.each(function() {
var root = this, zIndex = 5000;
function getSubnav(ele) {
if (ele.nodeName.toLowerCase() == 'li') {
var subnav = $('> ul', ele);
return subnav.length ? subnav[0] : null;
} else {
return ele;
}
}
function getActuator(ele) {
if (ele.nodeName.toLowerCase() == 'ul') {
return $(ele).parents('li')[0];
} else {
return ele;
}
}
function hide() {
var subnav = getSubnav(this);
if (!subnav) return;
$.data(subnav, 'cancelHide', false);
setTimeout(function() {
if (!$.data(subnav, 'cancelHide')) {
$(subnav).slideUp(100);
}
}, 250);
}
function show() {
var subnav = getSubnav(this);
if (!subnav) return;
$.data(subnav, 'cancelHide', true);
$(subnav).css({zIndex: zIndex++}).slideDown(options.speed);
if (this.nodeName.toLowerCase() == 'ul') {
var li = getActuator(this);
$(li).addClass('hover');
$('> a', li).addClass('hover');
}
}
$('ul, li', this).hover(show, hide);
$('li', this).hover(
function() { $(this).addClass('hover'); $('> a', this).addClass('hover'); },
function() { $(this).removeClass('hover'); $('> a', this).removeClass('hover'); }
);
});
};
var submenuLayer = 1000;
function setup_avatar_menu(parent) {
if (!parent) {
parent = document;
}
// avatar image menu link
$(parent).find("div.usericon img").mouseover(function() {
// find nested avatar_menu_button and show
$(this.parentNode.parentNode).children(".avatar_menu_button").show();
$(this.parentNode.parentNode).children("div.avatar_menu_button").addClass("avatar_menu_arrow");
//$(this.parentNode.parentNode).css("z-index", submenuLayer);
})
.mouseout(function() {
if($(this).parent().parent().find("div.sub_menu").css('display')!="block") {
$(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow");
$(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow_on");
$(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow_hover");
$(this.parentNode.parentNode).children(".avatar_menu_button").hide();
}
else {
$(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow");
$(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow_on");
$(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow_hover");
$(this.parentNode.parentNode).children(".avatar_menu_button").show();
$(this.parentNode.parentNode).children("div.avatar_menu_button").addClass("avatar_menu_arrow");
}
});
// avatar contextual menu
$(".avatar_menu_button img").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();
}
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');
}
// force z-index - workaround for IE z-index bug
avatar.css("z-index", submenuLayer);
avatar.find("a.icon img").css("z-index", submenuLayer);
submenu.css("z-index", submenuLayer+1);
submenuLayer++;
// change arrow to 'on' state
$(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow");
$(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow_hover");
$(this.parentNode.parentNode).children("div.avatar_menu_button").addClass("avatar_menu_arrow_on");
}
// hide any other open submenus and reset arrows
$("div.sub_menu:visible").not(submenu).hide();
$(".avatar_menu_button").removeClass("avatar_menu_arrow");
$(".avatar_menu_button").removeClass("avatar_menu_arrow_on");
$(".avatar_menu_button").removeClass("avatar_menu_arrow_hover");
$(".avatar_menu_button").hide();
$(this.parentNode.parentNode).children("div.avatar_menu_button").addClass("avatar_menu_arrow_on");
$(this.parentNode.parentNode).children("div.avatar_menu_button").show();
//alert("submenuLayer = " +submenu.css("z-index"));
})
// hover arrow each time mouseover enters arrow graphic (eg. when menu is already shown)
.mouseover(function() {
$(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow_on");
$(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow");
$(this.parentNode.parentNode).children("div.avatar_menu_button").addClass("avatar_menu_arrow_hover");
})
// 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.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow_hover");
$(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow");
$(this.parentNode.parentNode).children("div.avatar_menu_button").addClass("avatar_menu_arrow");
}
else {
$(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow_hover");
$(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow");
$(this.parentNode.parentNode).children("div.avatar_menu_button").addClass("avatar_menu_arrow_on");
}
});
// 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();
$(".avatar_menu_button").removeClass("avatar_menu_arrow");
$(".avatar_menu_button").removeClass("avatar_menu_arrow_on");
$(".avatar_menu_button").removeClass("avatar_menu_arrow_hover");
$(".avatar_menu_button").hide();
}
});
}
$(document).ready(function() {
setup_avatar_menu();
});
function elggUpdateContent(content, entityname) {
content = ' ' + content + ' ';
if(window.tinyMCE)
window.tinyMCE.execCommand("mceInsertContent",true,content);
$.facebox.close();
}
(function($) {
$.facebox = function(data, klass) {
$.facebox.loading()
if (data.ajax) fillFaceboxFromAjax(data.ajax)
else if (data.image) fillFaceboxFromImage(data.image)
else if (data.div) fillFaceboxFromHref(data.div)
else if ($.isFunction(data)) data.call($)
else $.facebox.reveal(data, klass)
}
$.extend($.facebox, {
settings: {
opacity : 0.7,
overlay : true,
loadingImage : 'https://web.archive.org/web/20110203074014/http://freevermontradio.org/mod/embed/images/loading.gif',
closeImage : 'https://web.archive.org/web/20110203074014/http://freevermontradio.org/mod/embed/images/button_spacer.gif',
imageTypes : [ 'png', 'jpg', 'jpeg', 'gif' ],
faceboxHtml : '\
\
\
'
},
loading: function() {
init()
if ($('#facebox .loading').length == 1) return true
showOverlay()
$('#facebox .content').empty()
$('#facebox .body').children().hide().end().
append('')
$('#facebox').css({
top: getPageScroll()[1] + (getPageHeight() / 10),
// Curverider addition (pagewidth/2 - modalwidth/2)
left: ((getPageWidth() / 2) - ($('#facebox').width() / 2))
}).show()
$(document).bind('keydown.facebox', function(e) {
if (e.keyCode == 27) $.facebox.close()
return true
})
$(document).trigger('loading.facebox')
},
reveal: function(data, klass) {
$(document).trigger('beforeReveal.facebox')
if (klass) $('#facebox .content').addClass(klass)
$('#facebox .content').append(data)
setTimeout(function() {
$('#facebox .loading').remove();
$('#facebox .body').children().fadeIn('slow');
$('#facebox').css('left', $(window).width() / 2 - ($('#facebox').width() / 2));
$(document).trigger('reveal.facebox').trigger('afterReveal.facebox');
}, 1000);
//$('#facebox .loading').remove()
//$('#facebox .body').children().fadeIn('slow')
//$('#facebox').css('left', $(window).width() / 2 - ($('#facebox').width() / 2))
//$(document).trigger('reveal.facebox').trigger('afterReveal.facebox')
},
close: function() {
$(document).trigger('close.facebox')
return false
}
})
// Curverider addition
$.fn.facebox = function(settings) {
init(settings)
function clickHandler() {
$.facebox.loading(true)
// support for rel="facebox.inline_popup" syntax, to add a class
// also supports deprecated "facebox[.inline_popup]" syntax
var klass = this.rel.match(/facebox\[?\.(\w+)\]?/)
if (klass) klass = klass[1]
fillFaceboxFromHref(this.href, klass)
return false
}
return this.click(clickHandler)
}
// called one time to setup facebox on this page
function init(settings) {
if ($.facebox.settings.inited) return true
else $.facebox.settings.inited = true
$(document).trigger('init.facebox')
var imageTypes = $.facebox.settings.imageTypes.join('|')
$.facebox.settings.imageTypesRegexp = new RegExp('\.' + imageTypes + '$', 'i')
if (settings) $.extend($.facebox.settings, settings)
$('body').append($.facebox.settings.faceboxHtml)
var preload = [ new Image(), new Image() ]
preload[0].src = $.facebox.settings.closeImage
preload[1].src = $.facebox.settings.loadingImage
preload.push(new Image())
$('#facebox .close').click($.facebox.close)
$('#facebox .close_image').attr('src', $.facebox.settings.closeImage)
}
// getPageScroll() by quirksmode.com
function getPageScroll() {
var xScroll, yScroll;
if (self.pageYOffset) {
yScroll = self.pageYOffset;
xScroll = self.pageXOffset;
} else if (document.documentElement && document.documentElement.scrollTop) { // Explorer 6 Strict
yScroll = document.documentElement.scrollTop;
xScroll = document.documentElement.scrollLeft;
} else if (document.body) {// all other Explorers
yScroll = document.body.scrollTop;
xScroll = document.body.scrollLeft;
}
return new Array(xScroll,yScroll)
}
// Adapted from getPageSize() by quirksmode.com
function getPageHeight() {
var windowHeight
if (self.innerHeight) { // all except Explorer
windowHeight = self.innerHeight;
} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
windowHeight = document.documentElement.clientHeight;
} else if (document.body) { // other Explorers
windowHeight = document.body.clientHeight;
}
return windowHeight
}
// Curverider addition
function getPageWidth() {
var windowWidth;
if( typeof( window.innerWidth ) == 'number' ) {
windowWidth = window.innerWidth; //Non-IE
} else if( document.documentElement && ( document.documentElement.clientWidth ) ) {
windowWidth = document.documentElement.clientWidth; //IE 6+ in 'standards compliant mode'
} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
windowWidth = document.body.clientWidth; //IE 4 compatible
}
return windowWidth
}
// Backwards compatibility
// Figures out what you want to display and displays it
// formats are:
// div: #id
// image: blah.extension
// ajax: anything else
function fillFaceboxFromHref(href, klass) {
// div
if (href.match(/#/)) {
var url = window.location.href.split('#')[0]
var target = href.replace(url,'')
$.facebox.reveal($(target).clone().show(), klass)
// image
} else if (href.match($.facebox.settings.imageTypesRegexp)) {
fillFaceboxFromImage(href, klass)
// ajax
} else {
fillFaceboxFromAjax(href, klass)
}
}
function fillFaceboxFromImage(href, klass) {
var image = new Image()
image.onload = function() {
$.facebox.reveal('', klass)
}
image.src = href
}
function fillFaceboxFromAjax(href, klass) {
$.get(href, function(data) { $.facebox.reveal(data, klass) })
}
function skipOverlay() {
return $.facebox.settings.overlay == false || $.facebox.settings.opacity === null
}
function showOverlay() {
if (skipOverlay()) return
if ($('facebox_overlay').length == 0)
$("body").append('')
$('#facebox_overlay').hide().addClass("facebox_overlayBG")
.css('opacity', $.facebox.settings.opacity)
.fadeIn(400)
return false
}
function hideOverlay() {
if (skipOverlay()) return
$('#facebox_overlay').fadeOut(400, function(){
$("#facebox_overlay").removeClass("facebox_overlayBG")
$("#facebox_overlay").addClass("facebox_hide")
$("#facebox_overlay").remove()
})
return false
}
$(document).bind('close.facebox', function() {
$(document).unbind('keydown.facebox')
$('#facebox').fadeOut(function() {
$('#facebox .content').removeClass().addClass('content')
hideOverlay()
$('#facebox .loading').remove()
})
})
// Curverider addition
$(window).resize(function(){
//alert("resized");
$('#facebox').css({
top: getPageScroll()[1] + (getPageHeight() / 10),
left: ((getPageWidth() / 2) - 365)
})
});
})(jQuery);