Skip to content

Instantly share code, notes, and snippets.

@robertocarroll
Created March 21, 2014 10:21
Show Gist options
  • Save robertocarroll/9683291 to your computer and use it in GitHub Desktop.
Save robertocarroll/9683291 to your computer and use it in GitHub Desktop.
main.js ICC Alpha
// scroll spy elements
var scrollspy = [];
jQuery(document).ready(function($){
// run on page load
$(document).ready(function(){
// top nav
$('.top-nav').spNav();
// language
$('#icc-language-toggle').on('click', function(e){
e.preventDefault();
$(this).next('ul').toggle();
});
$(document).click(function(e){
if(!$(e.target).is('#icc-language-toggle,#icc-language,#icc-language *')){
$('#icc-language').hide();
}
});
// tabs
$('.wp-tabify-this-zone').wpTabs({ accordion: 960 });
// slideshow
$('.slide-item').slides({
navigation: true,
speed: 350,
delay: 12000
});
// carousel
$('.carousel-item').carousel({
width: 250,
paging: true,
navigation: false
});
// responsive behavior
$(window).resize(function(){
screenRespond();
});
screenRespond();
// fixed sidebars
$('.col-sidebar').each(function(){
$(this).data('mintop', $(this).position().top);
});
// table of contents
$('ul.case-toc a').each(function(i){
// get position of section
var selector = $(this).attr('href');
var t = $(selector).position().top;
$(selector).data('pagey', t);
scrollspy.push(selector);
// click
$(this).click(function(e){
e.preventDefault();
var meTop = $($(this).attr('href')).position().top;
$('#s4-workspace').animate({
scrollTop: '+=' + (meTop - ($('#s4-workspace').height() / 5))
}, 500);
});
});
// fixed elements
$('#s4-workspace').on('scroll', function(){
// header
/* var t = $(this).scrollTop();
var h = $('.header-container:eq(0)').outerHeight();
var f = $('body').hasClass('fixed');
if(t >= h && !f){
$('body').addClass('fixed');
$('#s4-workspace').before($('.utility-container:eq(0)'));
}
else if(t < h && f){
$('body').removeClass('fixed');
$('.header-container:eq(0)').after($('.utility-container:eq(0)'));
}*/
// fixed sidebars
$('.col-sidebar').each(function(){
var mt = $(this).data('mintop');
if(t + h + 40 > mt){
var newtop = t + h + 40 - mt;
var doch = $('#s4-bodyContainer').outerHeight();
var footerh = $('.footer-container').outerHeight();
var toch = $('.col-sidebar').outerHeight();
if(newtop > doch - footerh - toch - 250){
newtop = doch - footerh - toch - 250;
}
$(this).css('top', newtop + 'px');
}
else{
$(this).css('top', 'auto');
}
});
// scroll spy
var scrolledTo = 0;
var offset = $('#s4-workspace').height() / 2;
$.each(scrollspy, function(i, selector){
if(t + offset >= $(selector).data('pagey')){
scrolledTo = i;
}
else{
return false;
}
});
$('ul.case-toc li').removeClass('active');
$('ul.case-toc li:eq(' + scrolledTo + ')').addClass('active');
});
});
// responsive behavior
function screenRespond(){
// small screen
if($(window).width() < 960){
}
// desktop
else{
// fixed elements
$('#s4-workspace').on('scroll', function(){
// header
var t = $(this).scrollTop();
var h = $('.header-container:eq(0)').outerHeight();
var f = $('body').hasClass('fixed');
if(t >= h && !f){
$('body').addClass('fixed');
$('#s4-workspace').before($('.utility-container:eq(0)'));
}
else if(t < h && f){
$('body').removeClass('fixed');
$('.header-container:eq(0)').after($('.utility-container:eq(0)'));
}
});
}
}
});
// google analytics
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-47540678-1', 'sharepoint13vm.cloudapp.net');
ga('send', 'pageview');
// navigation
(function($){
$.fn.spNav = function(options){
// settings
var settings = {
style: 'drawer',
label: 'Menu',
speed: 250,
animate: function(button){
$(button).next('.ui-spnav').fadeIn(settings.speed);
}
};
var options = $.extend(settings, options);
return this.each(function(i){
// menu element
var menu = $(this);
// create menu
if(!$(this).hasClass('ui-spnav')){
// add class
$(menu).addClass('ui-spnav');
// don't add button on static menus
if(settings.style != 'static'){
// button element
var button = $('<a class="ui-menu-button" href="#"><span class="ui-icon-menu"><span class="line1" /><span class="line2" /><span class="line3" /></span><span class="ui-menu-label">' + settings.label + '</span><span class="ui-icon" /></a>');
$(button).click(function(e){
e.preventDefault();
settings.animate($(this));
$(this).children('.ui-icon').toggleClass('ui-icon-open');
});
// hide menu, add button
$(menu).hide().before(button);
}
// overlay
if(settings.overlay){
$(menu).addClass('ui-overlay');
}
// unclick
$(document).click(function(e){
if(!$(e.target).is('.ui-spnav,.ui-spnav *,.ui-menu-button,.ui-menu-button *')){
$('.ui-spnav:visible').fadeOut(settings.speed);
}
});
}
});
};
})(jQuery);
/* jQuery.wpTabs v2.1, by Kyle Schaeffer */
(function(a){a.fn.wpTabs=function(b){var c={accordion:false};var b=a.extend(c,b);if(a("#MSOLayout_InDesignMode").val()==0){return this.each(function(e){var d=a(this).closest(".ms-webpart-zone");a(d).addClass("wptabs");var f=a('<ul class="wptabs-nav" />');a(this).closest(".ms-webpart-zone").children(".ms-webpartzone-cell").each(function(){if(!a(this).children().eq(0).hasClass("ms-hide")){a(f).append('<li><a href="#'+a(this).attr("id")+'">'+a(this).find(".ms-webpart-titleText").text()+"</a></li>")}});a(d).prepend(f);a(d).find(".ms-webpart-cell-vertical").css("display","block");if(window.jQuery.ui){a(d).tabs()}if(c.accordion){var g=function(){if(a(window).width()<=c.accordion){if(!a(d).hasClass("wptabs-accordion")){a(d).addClass("wptabs-accordion");a(d).children(".wptabs-nav").hide();a(d).find(".wptabs-nav li a").each(function(){var h=a(this);var i=a('<h3 class="wptabs-accordion-header"><a href="'+a(h).attr("href")+'">'+a(h).text()+'<span class="ui-icon"></span></a></h3>');if(a(h).parent("li").hasClass("ui-state-active")){a(i).addClass("ui-state-active")}a(i).children("a").click(function(k){k.preventDefault();var j=a(this);a(d).find(".wptabs-accordion-header").removeClass("ui-state-active");a(i).addClass("ui-state-active");a(".ui-tabs-panel").stop(true,true);a(".ui-tabs-panel:visible:not("+a(j).attr("href")+")").slideUp(250);a(a(j).attr("href")).slideDown(250,function(){a(h).click()})});a(a(h).attr("href")).before(i)})}}else{a(d).children(".wptabs-nav").show();a(d).find(".wptabs-accordion-header").remove();a(d).removeClass("wptabs-accordion")}};a(window).resize(function(){g()});g()}})}}})(jQuery);
/* jQuery.slides v1.2, by Kyle Schaeffer */
(function(a){a.fn.slides=function(c){var e=false;var f={effect:"pan",delay:8000,speed:250,navigation:false,paging:false};var c=a.extend(f,c);var b=function(k,m,i,j){d(k);a(k).find(".ui-slideshow-nav li").removeClass("ui-active");a(k).find(".ui-slideshow-nav li:eq("+a(i).prevAll("li").size()+")").addClass("ui-active");var g=a(m).width();var l=a(m).height();var n="-=";var o=g;if(j=="left"){n="+=";o=g*-1}a(k).css("width",g+"px").css("height",l+"px");if(f.effect=="fade"){a(m).css("z-index","1").animate({opacity:"0.75"},f.speed,function(){a(this).hide()});a(i).css("position","absolute").css("z-index","2").css("opacity","0").css("top","0px").css("left","0px").width(g).height(l).show().animate({opacity:"1"},f.speed,function(){a(this).css("position","static").css("width","auto").css("height","auto");a(k).css("width","auto").css("height","auto");var p=a(this);var h=a(p).next("li");if(a(h).size()==0){h=a(p).siblings("li").first()}e=setTimeout(function(){d(k);b(k,p,h,"right")},f.delay)})}else{a(m).css("position","absolute").css("left","0px").width(g).height(l).animate({left:n+g},f.speed,function(){a(this).hide().css("position","static").css("width","auto").css("height","auto")});a(i).css("position","absolute").css("left",o+"px").width(g).height(l).show().animate({left:n+g},f.speed,function(){a(this).css("position","static").css("width","auto").css("height","auto");a(k).css("width","auto").css("height","auto");var p=a(this);var h=a(p).next("li");if(a(h).size()==0){h=a(p).siblings("li").first()}e=setTimeout(function(){d(k);b(k,p,h,"right")},f.delay)})}};var d=function(g){clearTimeout(e);a(g).find("li").stop(true,true)};if(this.length>1&&(a("#MSOLayout_InDesignMode").val()==0||a("#MSOLayout_InDesignMode").val()=="")){return this.each(function(j){var h=a(this).parent().closest("div");if(!a(h).hasClass("ui-slideshow")){a(h).addClass("ui-slideshow");if(f.navigation){a(h).append('<ul class="ui-slideshow-nav" />')}if(f.paging){a(h).append('<ul class="ui-slideshow-paging"><li class="ui-slide-prev"><a href="#prev">Previous</a></li><li class="ui-slide-next"><a href="#next">Next</a></li></ul>');a(h).children(".ui-slideshow-paging").find(".ui-slide-prev a").click(function(m){m.preventDefault();d(h);var n=a(h).find("li:visible:eq(0)");var i=a(n).prev("li");if(a(i).size()==0){i=a(n).siblings("li").last()}b(h,n,i,"left")});a(h).children(".ui-slideshow-paging").find(".ui-slide-next a").click(function(m){m.preventDefault();d(h);var n=a(h).find("li:visible:eq(0)");var i=a(n).next("li");if(a(i).size()==0){i=a(n).siblings("li").first()}b(h,n,i,"right")})}var l=a(h).find("li:eq(0)");var k=a(h).find("li:eq(1)");e=setTimeout(function(){b(h,l,k,"right")},f.delay)}else{a(this).closest("li").hide()}if(f.navigation){var g=a('<li><a href="#'+(j+1)+'">'+(j+1)+"</a></li>");if(j==0){a(g).addClass("ui-active")}a(g).find("a").click(function(m){m.preventDefault();var n=a(h).find("li:visible:eq(0)");var i=a(h).find("li:eq("+a(this).parent().prevAll("li").size()+")");if(!a(i).is(":visible")){d(h);b(h,n,i,"right")}});a(h).children(".ui-slideshow-nav").append(g)}})}}})(jQuery);
/* jQuery.carousel v1.0, by Kyle Schaeffer */
(function(a){a.fn.carousel=function(c){var e=false;var d=0;var g=a(this).size();var f={speed:250,width:142,navigation:false,paging:false};var c=a.extend(f,c);var b=function(i,h){a(i).stop(true,true);a(i).animate({left:(h*f.width*-1)+"px"},f.speed);a(i).siblings(".ui-carousel-nav").children("li").removeClass("ui-active");a(i).siblings(".ui-carousel-nav").children("li").eq(h+1).addClass("ui-active")};return this.each(function(l){var p=a(this).parent().closest("div");var k=a(this).closest("ul");if(!a(p).hasClass("ui-carousel")){a(p).addClass("ui-carousel");a(k).addClass("ui-carousel-wheel");a(k).css("width",a(k).children("li").size()*f.width+"px").css("left","0px");var q=a('<ul class="ui-carousel-nav" />');a(p).after(q);var o=a('<li class="ui-carousel-nav-prev"><a href="#previous"><span class="icon icon-arrow-left-thick"></span></a></li>');a(o).find("a").click(function(i){i.preventDefault();l--;if(l<0){l=g-1}b(k,l)});a(q).append(o);for(var h=0;h<g;h++){var n=a('<li class="ui-carousel-nav-page"><a href="#'+h+'">'+(h+1)+"</a></li>");a(n).find("a").click(function(i){i.preventDefault();l=parseInt(a(this).attr("href").replace("#",""));b(k,l)});if(h==0){a(n).addClass("ui-active")}a(q).append(n)}var m=a('<li class="ui-carousel-nav-next"><a href="#next"><span class="icon icon-arrow-right-thick"></span></a></li>');a(m).find("a").click(function(i){i.preventDefault();l++;if(l>=g){l=0}b(k,l)});a(q).append(m);a(p).append(q)}})}})(jQuery);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment