Actions

MediaWiki

Difference between revisions of "Retrobrown.js"

From Sonic Retro

(Created page with "var retro_menu_objs = []; jQuery(window).unbind('resize').resize(function(){ for (var i = 0; i < retro_menu_objs.length; i++) if (typeof(retro_menu_objs[i]) == "objec...")
 
(Blanked the page)
Line 1: Line 1:
var retro_menu_objs = [];
 
jQuery(window).unbind('resize').resize(function(){
 
for (var i = 0; i < retro_menu_objs.length; i++)
 
if (typeof(retro_menu_objs[i]) == "object")
 
if (typeof(retro_menu_objs[i].resize) == "function")
 
retro_menu_objs[i].resize();
 
});
 
  
var retro_menu_obj = function(e, limit, outerlimit) {
 
var that = this;
 
this.e = e;
 
this.original_width = e.children('div').outerWidth();
 
this.limit = limit;
 
this.outerlimit = outerlimit;
 
this.resize = function() {
 
if (this.original_width == 0) return;
 
if (jQuery(window).width() >= this.original_width + this.limit) {
 
this.e.children('div').children('a').each(function(){
 
jQuery(this).show();
 
});
 
this.e.children('div').children('div').children('a').hide();
 
this.e.children('div').children('div').children('ul').children('li').each(function(){
 
jQuery(this).hide();
 
});
 
} else {
 
var els = [];
 
this.e.children('div').children('a').each(function(){
 
els.push(jQuery(this));
 
jQuery(this).show();
 
});
 
this.e.children('div').children('div').children('a').show();
 
var num = 0, current;
 
while (els.length > 0) {
 
current = els.pop();
 
current.hide();
 
num++;
 
if (jQuery(window).width() >= this.e.children('div').outerWidth() + this.outerlimit) els = [];
 
}
 
if (num > 0) {
 
this.e.children('div').children('div').children('ul').children('li').each(function(){
 
els.push(jQuery(this));
 
});
 
while (els.length > 0) {
 
current = els.pop();
 
if (num > 0) current.show(); else current.hide();
 
num--;
 
}
 
}
 
}
 
};
 
this.dropdown_out = -1;
 
this.dropdown_interval = null;
 
this.dropdown_interval_func = function(){
 
if (that.dropdown_out < 0) return;
 
else if (that.dropdown_out == 0) {
 
that.e.children('div').children('div').children('ul').hide();
 
that.e.children('div').children('div').children('a').removeAttr('style');
 
}
 
that.dropdown_out--;
 
};
 
if (this.e.children('div').children('div').length > 0) this.e.children('div').children('div').remove();
 
var link_html = this.e.children('div').html().split('</a>'); link_html.pop();
 
for (var i = 0; i < link_html.length; i++) {
 
link_html[i] = "<li>" + link_html[i] + "</a></li>";
 
if (link_html[i].indexOf('class="current"') != -1) {
 
link_html[i] = link_html[i].replace('class="current"','').replace('<li>','<li class="current">');
 
}
 
}
 
this.e.children('div').append('<div><a href="#">&#9660;</a><ul style="display:none">' + link_html.join("") + '</ul></div>');
 
this.e.children('div').children('div').children('a').unbind('click').click(function(e){
 
e.preventDefault();
 
jQuery(this).next().toggle();
 
if (jQuery(this).next().is(':visible')) {
 
jQuery(this).attr('style','color:rgba(255,255,255,1)');
 
} else {
 
jQuery(this).removeAttr('style');
 
}
 
this.dropdown_out = -1;
 
clearInterval(that.dropdown_interval);
 
that.dropdown_interval = null;
 
});
 
this.e.children('div').children('div').children('ul').unbind('mouseenter').unbind('mouseleave').hover(function(){
 
that.dropdown_out = -1;
 
clearInterval(that.dropdown_interval);
 
that.dropdown_interval = null;
 
},function(){
 
that.dropdown_out = 10;
 
clearInterval(that.dropdown_interval);
 
that.dropdown_interval = setInterval(function(){ that.dropdown_interval_func(); },100);
 
});
 
this.resize();
 
};
 

Revision as of 23:35, 25 June 2015