Skip to content

Instantly share code, notes, and snippets.

@tjstyle
Forked from Shelob9/jquery.sidr.min.js
Created September 19, 2013 11:14
Show Gist options
  • Save tjstyle/6621993 to your computer and use it in GitHub Desktop.
Save tjstyle/6621993 to your computer and use it in GitHub Desktop.
/*
* Sidr
* https://github.com/artberri/sidr
*
* Copyright (c) 2013 Alberto Varela
* Licensed under the MIT license.
*
* Using fixed version (curtesy of MaddinXx) compatible with jQuery 1.8+ found at: https://raw.github.com/MaddinXx/sidr/master/src/jquery.sidr.js
* tested with jQuery 1.10.2
*/
(function(e){var t=false,n=false;var r={isUrl:function(e){var t=new RegExp("^(https?:\\/\\/)?"+"((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|"+"((\\d{1,3}\\.){3}\\d{1,3}))"+"(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*"+"(\\?[;&a-z\\d%_.~+=-]*)?"+"(\\#[-a-z\\d_]*)?$","i");if(!t.test(e)){return false}else{return true}},loadContent:function(e,t){e.html(t)},addPrefix:function(e){var t=e.attr("id"),n=e.attr("class");if(typeof t==="string"&&""!==t){e.attr("id",t.replace(/([A-Za-z0-9_.\-]+)/g,"sidr-id-$1"))}if(typeof n==="string"&&""!==n&&"sidr-inner"!==n){e.attr("class",n.replace(/([A-Za-z0-9_.\-]+)/g,"sidr-class-$1"))}e.removeAttr("style")},execute:function(r,s,o){if(typeof s==="function"){o=s;s="sidr"}else if(!s){s="sidr"}var u=e("#"+s),a=e(u.data("body")),f=e("html"),l=u.outerWidth(true),c=u.data("speed"),h=u.data("side"),p,d,v;if("open"===r||"toogle"===r&&!u.is(":visible")){if(u.is(":visible")||t){return}if(n!==false){i.close(n,function(){i.open(s)});return}t=true;if(h==="left"){p={left:l+"px"};d={left:"0px"}}else{p={right:l+"px"};d={right:"0px"}}v=f.scrollTop();f.css("overflow-x","hidden").scrollTop(v);a.css({width:a.width(),position:"absolute"}).animate(p,c);u.css("display","block").animate(d,c,function(){t=false;n=s;if(typeof o==="function"){o(s)}})}else{if(!u.is(":visible")||t){return}t=true;if(h==="left"){p={left:0};d={left:"-"+l+"px"}}else{p={right:0};d={right:"-"+l+"px"}}v=f.scrollTop();f.removeAttr("style").scrollTop(v);a.animate(p,c);u.animate(d,c,function(){u.removeAttr("style").hide();a.removeAttr("style");e("html").removeAttr("style");t=false;n=false;if(typeof o==="function"){o(s)}})}}};var i={open:function(e,t){r.execute("open",e,t)},close:function(e,t){r.execute("close",e,t)},toogle:function(e,t){r.execute("toogle",e,t)}};e.sidr=function(t){if(i[t]){return i[t].apply(this,Array.prototype.slice.call(arguments,1))}else if(typeof t==="function"||typeof t==="string"||!t){return i.toogle.apply(this,arguments)}else{e.error("Method "+t+" does not exist on jQuery.sidr")}};e.fn.sidr=function(t){var n=e.extend({name:"sidr",speed:200,side:"left",source:null,renaming:true,body:"body"},t);var s=n.name,o=e("#"+s);if(o.length===0){o=e("<div />").attr("id",s).appendTo(e("body"))}o.addClass("sidr").addClass(n.side).data({speed:n.speed,side:n.side,body:n.body});if(typeof n.source==="function"){var u=n.source(s);r.loadContent(o,u)}else if(typeof n.source==="string"&&r.isUrl(n.source)){e.get(n.source,function(e){r.loadContent(o,e)})}else if(typeof n.source==="string"){var a="",f=n.source.split(",");e.each(f,function(t,n){a+='<div class="sidr-inner">'+e(n).html()+"</div>"});if(n.renaming){var l=e("<div />").html(a);l.find("*").each(function(t,n){var i=e(n);r.addPrefix(i)});a=l.html()}r.loadContent(o,a)}else if(n.source!==null){e.error("Invalid Sidr Source")}return this.each(function(){var t=e(this),n=t.data("sidr");if(!n){t.data("sidr",s);t.click(function(e){e.preventDefault();i.toogle(s)})}})}})(jQuery)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment