jquery_mb_extruder 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +22 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +61 -0
  6. data/Rakefile +2 -0
  7. data/jquery_mb_extruder.gemspec +24 -0
  8. data/lib/jquery_mb_extruder.rb +7 -0
  9. data/lib/jquery_mb_extruder/version.rb +3 -0
  10. data/vendor/assets/images/black_op_30.png +0 -0
  11. data/vendor/assets/images/blue_op_75.png +0 -0
  12. data/vendor/assets/images/browser.png +0 -0
  13. data/vendor/assets/images/extruder_bgnd.png +0 -0
  14. data/vendor/assets/images/extruder_blank.png +0 -0
  15. data/vendor/assets/images/extruder_bottom.png +0 -0
  16. data/vendor/assets/images/extruder_flap.png +0 -0
  17. data/vendor/assets/images/extruder_header_bgnd.png +0 -0
  18. data/vendor/assets/images/extruder_left.png +0 -0
  19. data/vendor/assets/images/extruder_left_flap.png +0 -0
  20. data/vendor/assets/images/extruder_voice.png +0 -0
  21. data/vendor/assets/images/extruder_voiceHover.png +0 -0
  22. data/vendor/assets/images/fuzz.gif +0 -0
  23. data/vendor/assets/images/optionsPanel.png +0 -0
  24. data/vendor/assets/images/orange_op_75.png +0 -0
  25. data/vendor/assets/images/red_op_50.png +0 -0
  26. data/vendor/assets/images/settingsBtn.png +0 -0
  27. data/vendor/assets/javascripts/jquery.hoverIntent.min.js +21 -0
  28. data/vendor/assets/javascripts/jquery.mb.YTPlayer.js +1022 -0
  29. data/vendor/assets/javascripts/jquery.mb.extruder.jquery.json +42 -0
  30. data/vendor/assets/javascripts/jquery.mb.flipText.js +120 -0
  31. data/vendor/assets/javascripts/mbExtruder.js +521 -0
  32. data/vendor/assets/stylesheets/YTPlayer.css +240 -0
  33. data/vendor/assets/stylesheets/mbExtruder.css +21 -0
  34. data/vendor/assets/stylesheets/mbExtruder.less +311 -0
  35. metadata +120 -0
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "jquery.mb.extruder",
3
+ "title": "jQuery mb.extruder",
4
+ "description": "This plugin lets you easily build a sliding panel for any kind of content; it has all the functionalities built-in for menu and sub-menu panels with an accordion effect, and you can get the content via ajax.",
5
+ "keywords": [
6
+ "menu",
7
+ "ajax",
8
+ "sliding",
9
+ "panel"
10
+ ],
11
+ "version": "2.5.5",
12
+ "author": {
13
+ "name": "Pupunzi (Matteo Bicocchi)",
14
+ "email": "matteo@open-lab.com",
15
+ "url": "http://pupunzi.com"
16
+ },
17
+ "maintainers": [
18
+ {
19
+ "name": "Pupunzi (Matteo Bicocchi)",
20
+ "email": "matteo@open-lab.com",
21
+ "url": "http://pupunzi.open-lab.com"
22
+ }
23
+ ],
24
+ "licenses": [
25
+ {
26
+ "type": "MIT",
27
+ "url": "https://github.com/pupunzi/jquery.mb.extruder/blob/master/licenses/MIT-LICENSE.txt"
28
+ },
29
+ {
30
+ "type": "GPL",
31
+ "url": "https://github.com/pupunzi/jquery.mb.extruder/blob/master/licenses/GPL-LICENSE.txt"
32
+ }
33
+ ],
34
+ "bugs": "https://github.com/pupunzi/jquery.mb.extruder/issues",
35
+ "homepage": "http://pupunzi.open-lab.com/mb-jquery-components/jquery-mb-extruder/",
36
+ "demo": "http://pupunzi.com/#mb.components/mb.extruder/extruder.html",
37
+ "docs": "https://github.com/pupunzi/jquery.mb.extruder/wiki",
38
+ "download": "http://pupunzi.open-lab.com/mb-jquery-components/jquery-mb-extruder/",
39
+ "dependencies": {
40
+ "jquery": ">=1.8"
41
+ }
42
+ }
@@ -0,0 +1,120 @@
1
+ /*
2
+ * ******************************************************************************
3
+ * jquery.mb.components
4
+ * file: jquery.mb.flipText.js
5
+ *
6
+ * Copyright (c) 2001-2014. Matteo Bicocchi (Pupunzi);
7
+ * Open lab srl, Firenze - Italy
8
+ * email: matteo@open-lab.com
9
+ * site: http://pupunzi.com
10
+ * blog: http://pupunzi.open-lab.com
11
+ * http://open-lab.com
12
+ *
13
+ * Licences: MIT, GPL
14
+ * http://www.opensource.org/licenses/mit-license.php
15
+ * http://www.gnu.org/licenses/gpl.html
16
+ *
17
+ * last modified: 28/01/14 22.05
18
+ * *****************************************************************************
19
+ */
20
+
21
+
22
+ /*Browser detection patch*/
23
+ if (!jQuery.browser) {
24
+ jQuery.browser = {}, jQuery.browser.mozilla = !1, jQuery.browser.webkit = !1, jQuery.browser.opera = !1, jQuery.browser.safari = !1, jQuery.browser.chrome = !1, jQuery.browser.msie = !1;
25
+ var nAgt = navigator.userAgent;
26
+ jQuery.browser.ua = nAgt, jQuery.browser.name = navigator.appName, jQuery.browser.fullVersion = "" + parseFloat(navigator.appVersion), jQuery.browser.majorVersion = parseInt(navigator.appVersion, 10);
27
+ var nameOffset, verOffset, ix;
28
+ if (-1 != (verOffset = nAgt.indexOf("Opera")))jQuery.browser.opera = !0, jQuery.browser.name = "Opera", jQuery.browser.fullVersion = nAgt.substring(verOffset + 6), -1 != (verOffset = nAgt.indexOf("Version")) && (jQuery.browser.fullVersion = nAgt.substring(verOffset + 8)); else if (-1 != (verOffset = nAgt.indexOf("MSIE")))jQuery.browser.msie = !0, jQuery.browser.name = "Microsoft Internet Explorer", jQuery.browser.fullVersion = nAgt.substring(verOffset + 5); else if (-1 != nAgt.indexOf("Trident")) {
29
+ jQuery.browser.msie = !0, jQuery.browser.name = "Microsoft Internet Explorer";
30
+ var start = nAgt.indexOf("rv:") + 3, end = start + 4;
31
+ jQuery.browser.fullVersion = nAgt.substring(start, end)
32
+ } else-1 != (verOffset = nAgt.indexOf("Chrome")) ? (jQuery.browser.webkit = !0, jQuery.browser.chrome = !0, jQuery.browser.name = "Chrome", jQuery.browser.fullVersion = nAgt.substring(verOffset + 7)) : -1 != (verOffset = nAgt.indexOf("Safari")) ? (jQuery.browser.webkit = !0, jQuery.browser.safari = !0, jQuery.browser.name = "Safari", jQuery.browser.fullVersion = nAgt.substring(verOffset + 7), -1 != (verOffset = nAgt.indexOf("Version")) && (jQuery.browser.fullVersion = nAgt.substring(verOffset + 8))) : -1 != (verOffset = nAgt.indexOf("AppleWebkit")) ? (jQuery.browser.webkit = !0, jQuery.browser.name = "Safari", jQuery.browser.fullVersion = nAgt.substring(verOffset + 7), -1 != (verOffset = nAgt.indexOf("Version")) && (jQuery.browser.fullVersion = nAgt.substring(verOffset + 8))) : -1 != (verOffset = nAgt.indexOf("Firefox")) ? (jQuery.browser.mozilla = !0, jQuery.browser.name = "Firefox", jQuery.browser.fullVersion = nAgt.substring(verOffset + 8)) : (nameOffset = nAgt.lastIndexOf(" ") + 1) < (verOffset = nAgt.lastIndexOf("/")) && (jQuery.browser.name = nAgt.substring(nameOffset, verOffset), jQuery.browser.fullVersion = nAgt.substring(verOffset + 1), jQuery.browser.name.toLowerCase() == jQuery.browser.name.toUpperCase() && (jQuery.browser.name = navigator.appName));
33
+ -1 != (ix = jQuery.browser.fullVersion.indexOf(";")) && (jQuery.browser.fullVersion = jQuery.browser.fullVersion.substring(0, ix)), -1 != (ix = jQuery.browser.fullVersion.indexOf(" ")) && (jQuery.browser.fullVersion = jQuery.browser.fullVersion.substring(0, ix)), jQuery.browser.majorVersion = parseInt("" + jQuery.browser.fullVersion, 10), isNaN(jQuery.browser.majorVersion) && (jQuery.browser.fullVersion = "" + parseFloat(navigator.appVersion), jQuery.browser.majorVersion = parseInt(navigator.appVersion, 10)), jQuery.browser.version = jQuery.browser.majorVersion
34
+ }
35
+
36
+ (function($) {
37
+ var isIE=$.browser.msie;
38
+ jQuery.fn.encHTML = function() {
39
+ return this.each(function(){
40
+ var me = $(this);
41
+ var html = me.text();
42
+ me.text(html.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/'/g, escape("'")).replace(/"/g,escape('"')));
43
+ // me.text(html.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/'/g, "’").replace(/"/g,"“"));
44
+ });
45
+ };
46
+ $.mbflipText= {
47
+ author:"Matteo Bicocchi",
48
+ version:"1.1",
49
+ flipText:function(tb){
50
+ var UTF8encoded=$("meta[http-equiv=Content-Type]").attr("content") && $("meta[http-equiv=Content-Type]").attr("content").indexOf("utf-8")>-1;
51
+ return this.each(function(){
52
+ var el= $(this);
53
+ var h="";
54
+ var w="";
55
+
56
+ var label="";
57
+ var bgcol=(el.css("background-color") && el.css("background-color") != "rgba(0, 0, 0, 0)") ? el.css("background-color"):"#fff";
58
+ var fontsize= parseInt(el.css('font-size'))>0?parseInt(el.css('font-size')):14;
59
+ var fontfamily=el.css('font-family')?el.css('font-family').replace(/\'/g, '').replace(/"/g,''):"Arial";
60
+ var fontcolor=el.css('color')? el.css('color'):"#000";
61
+
62
+ if ($.browser.msie){
63
+ if(!tb) el.css({'writing-mode': 'tb-rl', height:h, filter: 'fliph() flipv("") ', whiteSpace:"nowrap", lineHeight:fontsize+2+"px"}).css('font-weight', 'normal');
64
+ label=$("<span style='writing-mode: tb-rl; whiteSpace:nowrap; height:"+h+"; width:"+w+"; line-height:"+(fontsize+2)+"px'>"+el.html()+"</span>");
65
+ }else{
66
+
67
+ var dim=el.getFlipTextDim(false);
68
+
69
+ h=dim[1];
70
+ w=dim[0];
71
+ if(!isIE ) el.encHTML();
72
+ var txt= el.text();
73
+
74
+ var rot="-90";
75
+ var ta="end";
76
+ var xFix=0;
77
+ var yFix=$.browser.opera ? parseInt(w)-(parseInt(w)/4): $.browser.webkit?5:0;
78
+
79
+ if (tb){
80
+ yFix=$.browser.opera?20:0;
81
+ xFix= $.browser.webkit?(fontsize/4):0;
82
+ rot="90, "+((parseInt(w)/2)-xFix)+", "+parseInt(w)/2;
83
+ ta="start";
84
+ }
85
+ var onClick= el.attr("onclick") || el.attr("href");
86
+ var clickScript= onClick?"<div class='pointer' style='position:absolute;top:0;left:0;width:100%;height:100%;background:transparent'/>":"";
87
+
88
+ label=$("<object class='flip_label' style='height:"+h+"px; width:"+w+"px;' type='image/svg+xml' data='data:image/svg+xml; charset=utf-8 ," +
89
+ "<svg xmlns=\"http://www.w3.org/2000/svg\">" +
90
+ "<rect x=\"0\" y=\"0\" width=\""+w+"px\" height=\""+h+"px\" fill=\""+bgcol+"\" stroke=\"none\"/>"+
91
+ "<text x=\"-"+xFix+"\" y=\""+yFix+"\" font-family=\""+fontfamily+"\" fill=\""+fontcolor+"\" font-size=\""+fontsize+"\" style=\"text-anchor: "+ta+"; " +
92
+ "dominant-baseline: hanging\" transform=\"rotate("+rot+")\" text-rendering=\"optimizeSpeed\">"+txt+"</text></svg>'></object>" +
93
+ clickScript +
94
+ "");
95
+ }
96
+ var wrapper= onClick ? $("<div/>").css("position","relative"): $("");
97
+ var cssPos= el.wrap(wrapper).css("position")!="absolute" || el.css("position")!="fixed" ?"relative" : el.css("position");
98
+ el.html(label).css({position:cssPos, width:w});
99
+ });
100
+ },
101
+ getFlipTextDim:function(enc){
102
+ var el= $(this);
103
+ // if(!enc && !isIE) el.encHTML();
104
+ var txt= el.html();
105
+ var fontsize= parseInt(el.css('font-size'));
106
+ var fontfamily=el.css('font-family').replace(/'/g, '').replace(/"/g,'');
107
+ if (fontfamily==undefined) fontfamily="Arial";
108
+ var placeHolder=$("<span/>").css({position:"absolute",top:-100, whiteSpace:"noWrap", fontSize:fontsize, fontFamily: fontfamily});
109
+ placeHolder.text(txt);
110
+ $("body").append(placeHolder);
111
+ var h = (placeHolder.outerWidth()!=0?placeHolder.outerWidth():(16+txt.length*fontsize*.60));
112
+ var w = (placeHolder.outerHeight()!=0?placeHolder.outerHeight()+5:50);
113
+ placeHolder.remove();
114
+ return [w,h];
115
+ }
116
+ };
117
+ $.fn.mbFlipText=$.mbflipText.flipText;
118
+ $.fn.getFlipTextDim=$.mbflipText.getFlipTextDim;
119
+
120
+ })(jQuery);
@@ -0,0 +1,521 @@
1
+ /*
2
+ * ******************************************************************************
3
+ * jquery.mb.components
4
+ * file: mbExtruder.js
5
+ *
6
+ * Copyright (c) 2001-2014. Matteo Bicocchi (Pupunzi);
7
+ * Open lab srl, Firenze - Italy
8
+ * email: matteo@open-lab.com
9
+ * site: http://pupunzi.com
10
+ * blog: http://pupunzi.open-lab.com
11
+ * http://open-lab.com
12
+ *
13
+ * Licences: MIT, GPL
14
+ * http://www.opensource.org/licenses/mit-license.php
15
+ * http://www.gnu.org/licenses/gpl.html
16
+ *
17
+ * last modified: 08/05/14 20.00
18
+ * *****************************************************************************
19
+ */
20
+
21
+ /*Browser detection patch*/
22
+ var nAgt = navigator.userAgent;
23
+ if (!jQuery.browser) {
24
+ jQuery.browser = {};
25
+ jQuery.browser.mozilla = !1;
26
+ jQuery.browser.webkit = !1;
27
+ jQuery.browser.opera = !1;
28
+ jQuery.browser.safari = !1;
29
+ jQuery.browser.chrome = !1;
30
+ jQuery.browser.msie = !1;
31
+ jQuery.browser.ua = nAgt;
32
+ jQuery.browser.name = navigator.appName;
33
+ jQuery.browser.fullVersion = "" + parseFloat(navigator.appVersion);
34
+ jQuery.browser.majorVersion = parseInt(navigator.appVersion, 10);
35
+ var nameOffset, verOffset, ix;
36
+ if (-1 != (verOffset = nAgt.indexOf("Opera")))jQuery.browser.opera = !0, jQuery.browser.name = "Opera", jQuery.browser.fullVersion = nAgt.substring(verOffset + 6), -1 != (verOffset = nAgt.indexOf("Version")) && (jQuery.browser.fullVersion = nAgt.substring(verOffset + 8)); else if (-1 != (verOffset = nAgt.indexOf("OPR")))jQuery.browser.opera = !0, jQuery.browser.name = "Opera", jQuery.browser.fullVersion = nAgt.substring(verOffset + 4); else if (-1 != (verOffset = nAgt.indexOf("MSIE")))jQuery.browser.msie = !0, jQuery.browser.name = "Microsoft Internet Explorer", jQuery.browser.fullVersion = nAgt.substring(verOffset + 5); else if (-1 != nAgt.indexOf("Trident")) {
37
+ jQuery.browser.msie = !0;
38
+ jQuery.browser.name = "Microsoft Internet Explorer";
39
+ var start = nAgt.indexOf("rv:") + 3, end = start + 4;
40
+ jQuery.browser.fullVersion = nAgt.substring(start, end)
41
+ } else-1 != (verOffset = nAgt.indexOf("Chrome")) ? (jQuery.browser.webkit = !0, jQuery.browser.chrome = !0, jQuery.browser.name = "Chrome", jQuery.browser.fullVersion = nAgt.substring(verOffset + 7)) : -1 != (verOffset = nAgt.indexOf("Safari")) ? (jQuery.browser.webkit = !0, jQuery.browser.safari = !0, jQuery.browser.name = "Safari", jQuery.browser.fullVersion = nAgt.substring(verOffset + 7), -1 != (verOffset = nAgt.indexOf("Version")) && (jQuery.browser.fullVersion = nAgt.substring(verOffset + 8))) : -1 != (verOffset = nAgt.indexOf("AppleWebkit")) ? (jQuery.browser.webkit = !0, jQuery.browser.name = "Safari", jQuery.browser.fullVersion = nAgt.substring(verOffset + 7), -1 != (verOffset = nAgt.indexOf("Version")) && (jQuery.browser.fullVersion = nAgt.substring(verOffset + 8))) : -1 != (verOffset = nAgt.indexOf("Firefox")) ? (jQuery.browser.mozilla = !0, jQuery.browser.name = "Firefox", jQuery.browser.fullVersion = nAgt.substring(verOffset + 8)) : (nameOffset = nAgt.lastIndexOf(" ") + 1) < (verOffset = nAgt.lastIndexOf("/")) && (jQuery.browser.name = nAgt.substring(nameOffset, verOffset), jQuery.browser.fullVersion = nAgt.substring(verOffset + 1), jQuery.browser.name.toLowerCase() == jQuery.browser.name.toUpperCase() && (jQuery.browser.name = navigator.appName));
42
+ -1 != (ix = jQuery.browser.fullVersion.indexOf(";")) && (jQuery.browser.fullVersion = jQuery.browser.fullVersion.substring(0, ix));
43
+ -1 != (ix = jQuery.browser.fullVersion.indexOf(" ")) && (jQuery.browser.fullVersion = jQuery.browser.fullVersion.substring(0, ix));
44
+ jQuery.browser.majorVersion = parseInt("" + jQuery.browser.fullVersion, 10);
45
+ isNaN(jQuery.browser.majorVersion) && (jQuery.browser.fullVersion = "" + parseFloat(navigator.appVersion), jQuery.browser.majorVersion = parseInt(navigator.appVersion, 10));
46
+ jQuery.browser.version = jQuery.browser.majorVersion
47
+ }
48
+ jQuery.browser.android = /Android/i.test(nAgt);
49
+ jQuery.browser.blackberry = /BlackBerry/i.test(nAgt);
50
+ jQuery.browser.ios = /iPhone|iPad|iPod/i.test(nAgt);
51
+ jQuery.browser.operaMobile = /Opera Mini/i.test(nAgt);
52
+ jQuery.browser.windowsMobile = /IEMobile/i.test(nAgt);
53
+ jQuery.browser.mobile = jQuery.browser.android || jQuery.browser.blackberry || jQuery.browser.ios || jQuery.browser.windowsMobile || jQuery.browser.operaMobile;
54
+
55
+ /*
56
+ * Metadata - jQuery plugin for parsing metadata from elements
57
+ * Copyright (c) 2006 John Resig, Yehuda Katz, Jörn Zaefferer, Paul McLanahan
58
+ * Dual licensed under the MIT and GPL licenses:
59
+ * http://www.opensource.org/licenses/mit-license.php
60
+ * http://www.gnu.org/licenses/gpl.html
61
+ */
62
+
63
+ (function(c){c.extend({metadata:{defaults:{type:"class",name:"metadata",cre:/({.*})/,single:"metadata"},setType:function(b,c){this.defaults.type=b;this.defaults.name=c},get:function(b,f){var d=c.extend({},this.defaults,f);d.single.length||(d.single="metadata");var a=c.data(b,d.single);if(a)return a;a="{}";if("class"==d.type){var e=d.cre.exec(b.className);e&&(a=e[1])}else if("elem"==d.type){if(!b.getElementsByTagName)return;e=b.getElementsByTagName(d.name);e.length&&(a=c.trim(e[0].innerHTML))}else void 0!= b.getAttribute&&(e=b.getAttribute(d.name))&&(a=e);0>a.indexOf("{")&&(a="{"+a+"}");a=eval("("+a+")");c.data(b,d.single,a);return a}}});c.fn.metadata=function(b){return c.metadata.get(this[0],b)}})(jQuery);
64
+
65
+ /***************************************************************************************/
66
+
67
+
68
+ (function($) {
69
+ document.extruder=new Object();
70
+ document.extruder.left = 0;
71
+ document.extruder.top = 0;
72
+ document.extruder.bottom = 0;
73
+ document.extruder.right = 0;
74
+ document.extruder.idx=0;
75
+ var isIE=$.browser.msie;
76
+
77
+ $.mbExtruder= {
78
+ author:"Matteo Bicocchi",
79
+ version:"2.5.5",
80
+ defaults:{
81
+ width:350,
82
+ positionFixed:true,
83
+ sensibility:800,
84
+ position:"top",
85
+ accordionPanels:true,
86
+ top:"auto",
87
+ extruderOpacity:1,
88
+ flapMargin:35,
89
+ textOrientation:"bt", // or "tb" (top-bottom or bottom-top)
90
+ onExtOpen:function(){},
91
+ onExtContentLoad:function(){},
92
+ onExtClose:function(){},
93
+ hidePanelsOnClose:true,
94
+ closeOnClick:true,
95
+ closeOnExternalClick:true,
96
+ autoCloseTime:0,
97
+ autoOpenTime:0,
98
+ slideTimer:300
99
+ },
100
+
101
+ buildMbExtruder: function(options){
102
+ return this.each (function (){
103
+ this.options = {};
104
+ $.extend (this.options, $.mbExtruder.defaults);
105
+ $.extend (this.options, options);
106
+
107
+ this.idx=document.extruder.idx;
108
+ document.extruder.idx++;
109
+ var extruder,extruderContent,wrapper,extruderStyle,wrapperStyle,txt,closeTimer,openTimer;
110
+ extruder= $(this);
111
+ extruderContent=extruder.html();
112
+
113
+ extruder.css("zIndex",100);
114
+ var isVertical = this.options.position=="left" || this.options.position=="right";
115
+ var extW= isVertical?1: this.options.width;
116
+ var c= $("<div/>").addClass("extruder-content").css({overflow:"hidden", width:extW});
117
+ c.append(extruderContent);
118
+ extruder.html(c);
119
+
120
+ var position=this.options.positionFixed?"fixed":"absolute";
121
+ extruder.addClass("extruder");
122
+ extruder.addClass(this.options.position);
123
+ var isHorizontal = this.options.position=="top" || this.options.position=="bottom";
124
+ extruderStyle =
125
+ this.options.position=="top" ?
126
+ {position:position,top:0,left:"50%",marginLeft:-this.options.width/2,width:this.options.width}:
127
+ this.options.position=="bottom" ?
128
+ {position:position,bottom:0,left:"50%",marginLeft:-this.options.width/2,width:this.options.width}:
129
+ this.options.position=="left" ?
130
+ {position:position,top:0,left:0,width:1}:
131
+ {position:position,top:0,right:0,width:1};
132
+ extruder.css(extruderStyle);
133
+ if(!isIE) extruder.css({opacity:this.options.extruderOpacity});
134
+ extruder.wrapInner("<div class='ext_wrapper'></div>");
135
+ wrapper= extruder.find(".ext_wrapper");
136
+
137
+ wrapperStyle={position:"absolute", width:isVertical?1:this.options.width};
138
+ wrapper.css(wrapperStyle);
139
+
140
+
141
+ if (isHorizontal){
142
+ this.options.position=="top"? document.extruder.top++ : document.extruder.bottom++;
143
+ if (document.extruder.top >1 || document.extruder.bottom>1){
144
+ alert("more than 1 mb.extruder on top or bottom is not supported jet... hope soon!");
145
+ return;
146
+ }
147
+ }
148
+
149
+ if ($.metadata){
150
+ $.metadata.setType("class");
151
+ if (extruder.metadata().title) extruder.attr("extTitle",extruder.metadata().title);
152
+ if (extruder.metadata().url) extruder.attr("extUrl",extruder.metadata().url);
153
+ if (extruder.metadata().data) extruder.attr("extData",extruder.metadata().data);
154
+ }
155
+
156
+ var flapFooter=$("<div class='footer'/>");
157
+ var flap=$("<div class='flap'><span class='flapLabel'/></div>");
158
+ if (document.extruder.bottom){
159
+ wrapper.prepend(flapFooter);
160
+ wrapper.prepend(flap);
161
+ }else{
162
+ wrapper.append(flapFooter);
163
+ wrapper.append(flap);
164
+ }
165
+
166
+ txt=extruder.attr("extTitle")?extruder.attr("extTitle"): "";
167
+ var flapLabel = extruder.find(".flapLabel");
168
+ flapLabel.text(txt);
169
+ if(isVertical){
170
+ flapLabel.html(txt).css({whiteSpace:"noWrap"});
171
+ var orientation= this.options.textOrientation == "tb";
172
+ var labelH=extruder.find('.flapLabel').getFlipTextDim()[1];
173
+ extruder.find('.flapLabel').mbFlipText(orientation);
174
+ }else{
175
+ flapLabel.html(txt).css({whiteSpace:"noWrap"});
176
+ }
177
+
178
+ if (extruder.attr("extUrl")){
179
+ extruder.setMbExtruderContent({
180
+ url:extruder.attr("extUrl"),
181
+ data:extruder.attr("extData"),
182
+ callback: function(){
183
+ if (extruder.get(0).options.onExtContentLoad) extruder.get(0).options.onExtContentLoad();
184
+ }
185
+ })
186
+ }else{
187
+ var container=$("<div>").addClass("text").css({width:extruder.get(0).options.width-20, overflowY:"auto"});
188
+ c.wrapInner(container);
189
+ extruder.setExtruderVoicesAction();
190
+ }
191
+
192
+ flap.on("click",function(){
193
+ if (!extruder.attr("isOpened")){
194
+ extruder.openMbExtruder();
195
+ }else{
196
+ extruder.closeMbExtruder();
197
+ extruder.removeAttr("isOpened");
198
+ }
199
+ }).on("mouseenter",function(){
200
+ if(extruder.get(0).options.autoOpenTime>0){
201
+ openTimer=setTimeout(function(){
202
+ extruder.openMbExtruder();
203
+ $(document).one("click.extruder"+extruder.get(0).idx,function(){extruder.closeMbExtruder();});
204
+ },extruder.get(0).options.autoOpenTime);
205
+ }
206
+ }).on("mouseleave",function(){
207
+ clearTimeout(openTimer);
208
+ });
209
+
210
+ c.on("mouseleave", function(e){
211
+ if(extruder.get(0).options.closeOnExternalClick){
212
+
213
+ //Chrome bug: FORMELEMENT fire mouseleave event.
214
+ if(!$(e.target).parents().is(".text"))
215
+ $(document).one("click.extruder"+extruder.get(0).idx,function(){extruder.closeMbExtruder();});
216
+ }
217
+ closeTimer=setTimeout(function(){
218
+
219
+ if(extruder.get(0).options.autoCloseTime > 0){
220
+ extruder.closeMbExtruder();
221
+ }
222
+ },extruder.get(0).options.autoCloseTime);
223
+ }).on("mouseenter", function(){
224
+ clearTimeout(closeTimer);
225
+ $(document).off("click.extruder"+extruder.get(0).idx);
226
+ });
227
+
228
+ if (isVertical){
229
+ c.css({ height:"100%"});
230
+ if(this.options.top=="auto") {
231
+ flap.css({top:100+(this.options.position=="left"?document.extruder.left:document.extruder.right)});
232
+ this.options.position=="left"?document.extruder.left+=labelH+this.options.flapMargin:document.extruder.right+= labelH+this.options.flapMargin;
233
+ }else{
234
+ flap.css({top:this.options.top});
235
+ }
236
+ var clicDiv=$("<div/>").css({position:"absolute",top:0,left:0,width:"100%",height:"100%",background:"transparent"});
237
+ flap.append(clicDiv);
238
+ }
239
+
240
+ this.originalWidth = this.options.width;
241
+
242
+ $(window).on("resize",function(){
243
+ extruder.adjustSize();
244
+ })
245
+ });
246
+ },
247
+
248
+ adjustSize:function(){
249
+
250
+ var $extruder = this;
251
+ var extruder = $extruder.get(0);
252
+
253
+ var isHorizontal = extruder.options.position=="top" || extruder.options.position=="bottom";
254
+
255
+ if(isHorizontal){
256
+
257
+ if( $(window).width() < extruder.options.width){
258
+ $extruder.css({width:$(window).width(), marginLeft:0, left:0});
259
+ $extruder.find(".ext_wrapper, .extruder-content, .extruder-container").css({width:"100%"});
260
+ }else{
261
+ $extruder.css({width:extruder.options.width, left:"50%",marginLeft:-extruder.options.width/2});
262
+ $extruder.find(".ext_wrapper, .extruder-content, .extruder-container").css({width:"100%"});
263
+ }
264
+
265
+ } else{
266
+
267
+ if( ($(window).width()-80) < extruder.originalWidth){
268
+ extruder.options.width = $(window).width()-80;
269
+ }else{
270
+ extruder.options.width = extruder.originalWidth;
271
+ }
272
+
273
+ if($extruder.attr("isOpened")){
274
+ $extruder.find('.extruder-content').css({width: extruder.options.width});
275
+ $extruder.find(".ext_wrapper, .extruder-content, .extruder-container").css({width:extruder.options.width});
276
+ }
277
+ }
278
+
279
+ },
280
+
281
+ setMbExtruderContent: function(options){
282
+ this.options = {
283
+ url:false,
284
+ data:"",
285
+ callback:function(){}
286
+ };
287
+ $.extend (this.options, options);
288
+ if (!this.options.url || this.options.url.length==0){
289
+ alert("internal error: no URL to call");
290
+ return;
291
+ }
292
+ var url=this.options.url;
293
+ var data=this.options.data;
294
+ var where=$(this), voice;
295
+ var cb= this.options.callback;
296
+ var container=$("<div>").addClass("extruder-container");
297
+ if (!($.browser.msie && $.browser.version<=7))
298
+ container.css({width:$(this).get(0).options.width});
299
+ where.find(".extruder-content").wrapInner(container);
300
+ $.ajax({
301
+ type: "GET",
302
+ url: url,
303
+ data: data,
304
+ async:true,
305
+ dataType:"html",
306
+ success: function(html){
307
+ where.find(".extruder-container").append(html);
308
+ voice=where.find(".voice");
309
+ voice.hover(function(){$(this).addClass("hover");},function(){$(this).removeClass("hover");});
310
+ where.setExtruderVoicesAction();
311
+ if (cb) {
312
+ setTimeout(function(){cb();},100);
313
+ }
314
+ }
315
+ });
316
+ },
317
+
318
+ openMbExtruder:function(c){
319
+ var extruder= $(this);
320
+ extruder.adjustSize();
321
+
322
+ extruder.attr("isOpened",true);
323
+ $(document).off("click.extruder"+extruder.get(0).idx);
324
+ var opt= extruder.get(0).options;
325
+ extruder.addClass("isOpened");
326
+ if(!isIE) extruder.css("opacity",1);
327
+ var position = opt.position;
328
+ extruder.mb_bringToFront();
329
+ if (position=="top" || position=="bottom"){
330
+ extruder.find('.extruder-content').slideDown( opt.slideTimer);
331
+ if(opt.onExtOpen) opt.onExtOpen();
332
+ }else{
333
+ if(!isIE) $(this).css("opacity",1);
334
+ extruder.find('.ext_wrapper').css({width:""});
335
+ extruder.find('.extruder-content').css({overflowX:"hidden", display:"block"});
336
+ extruder.find('.extruder-content').animate({ width: opt.width}, opt.slideTimer,function(){
337
+ extruder.find(".extruder-container").css({width: opt.width});
338
+ });
339
+ if(opt.onExtOpen) opt.onExtOpen();
340
+ }
341
+
342
+ if (c) {
343
+ setTimeout(function(){
344
+ $(document).one("click.extruder"+extruder.get(0).idx,function(){extruder.closeMbExtruder();});
345
+ },100);
346
+ }
347
+
348
+ },
349
+
350
+ closeMbExtruder:function(){
351
+ var extruder= $(this);
352
+ extruder.removeAttr("isOpened");
353
+ var opt= extruder.get(0).options;
354
+ extruder.removeClass("isOpened");
355
+ $(document).off("click.extruder"+extruder.get(0).idx);
356
+ if(!isIE) extruder.css("opacity",opt.extruderOpacity);
357
+ if(opt.hidePanelsOnClose) extruder.hidePanelsOnClose();
358
+ if (opt.position=="top" || opt.position=="bottom"){
359
+ extruder.find('.extruder-content').slideUp(opt.slideTimer);
360
+ if(opt.onExtClose) opt.onExtClose();
361
+ }else if (opt.position=="left" || opt.position=="right"){
362
+ extruder.find('.extruder-content').css({overflow:"hidden"});
363
+ extruder.find('.extruder-content').animate({ width: 1 }, opt.slideTimer,function(){
364
+ extruder.find('.ext_wrapper').css({width:1});
365
+ extruder.find('.extruder-content').css({overflow:"hidden",display:"none"});
366
+ if(opt.onExtClose) opt.onExtClose();
367
+ });
368
+ }
369
+ }
370
+ };
371
+
372
+ jQuery.fn.mb_bringToFront= function(){
373
+ var zi=10;
374
+ $('*').each(function() {
375
+ if($(this).css("position")=="absolute" ||$(this).css("position")=="fixed"){
376
+ var cur = parseInt($(this).css('zIndex'));
377
+ zi = cur > zi ? parseInt($(this).css('zIndex')) : zi;
378
+ }
379
+ });
380
+ $(this).css('zIndex',zi+=1);
381
+ return zi;
382
+ };
383
+
384
+ /*
385
+ * EXTRUDER CONTENT
386
+ */
387
+
388
+ $.fn.setExtruderVoicesAction=function(){
389
+ var extruder=$(this);
390
+ var opt=extruder.get(0).options;
391
+ var voices= $(this).find(".voice");
392
+ voices.each(function(){
393
+ var voice=$(this);
394
+ if ($.metadata){
395
+ $.metadata.setType("class");
396
+ if (voice.metadata().panel) voice.attr("panel",voice.metadata().panel);
397
+ if (voice.metadata().data) voice.attr("data",voice.metadata().data);
398
+ if (voice.metadata().disabled) voice.attr("setDisabled", voice.metadata().disabled);
399
+ }
400
+
401
+ if (voice.attr("setDisabled"))
402
+ voice.disableExtruderVoice();
403
+
404
+ if (voice.attr("panel") && voice.attr("panel")!="false"){
405
+ voice.append("<span class='settingsBtn'/>");
406
+ voice.find(".settingsBtn").css({opacity:.5});
407
+ voice.find(".settingsBtn").hover(
408
+ function(){
409
+ $(this).css({opacity:1});
410
+ },
411
+ function(){
412
+ $(this).not(".sel").css({opacity:.5});
413
+ }).click(function(){
414
+ if ($(this).parents().hasClass("sel")){
415
+ if(opt.accordionPanels)
416
+ extruder.hidePanelsOnClose();
417
+ else
418
+ $(this).closePanel();
419
+ return;
420
+ }
421
+
422
+ if(opt.accordionPanels){
423
+ extruder.find(".optionsPanel").slideUp(400,function(){$(this).remove();});
424
+ voices.removeClass("sel");
425
+ voices.find(".settingsBtn").removeClass("sel").css({opacity:.5});
426
+ }
427
+ var content=$("<div class='optionsPanel'></div>");
428
+ voice.after(content);
429
+ $.ajax({
430
+ type: "GET",
431
+ url: voice.attr("panel"),
432
+ data: voice.attr("data"),
433
+ async:true,
434
+ dataType:"html",
435
+ success: function(html){
436
+ var c= $(html);
437
+ content.html(c);
438
+ content.children().not(".text")
439
+ .addClass("panelVoice")
440
+ .click(function(){
441
+ if(opt.closeOnClick)
442
+ extruder.closeMbExtruder();
443
+ });
444
+ content.slideDown(400);
445
+ }
446
+ });
447
+ voice.addClass("sel");
448
+ voice.find(".settingsBtn").addClass("sel").css({opacity:1});
449
+ });
450
+ }
451
+
452
+ if (voice.find("a").length==0 && voice.attr("panel")){
453
+ voice.find(".label").not(".disabled").css("cursor","pointer").click(function(){
454
+ voice.find(".settingsBtn").click();
455
+ });
456
+ }
457
+
458
+ if ((!voice.attr("panel") || voice.attr("panel")=="false" ) && (!voice.attr("setDisabled") || voice.attr("setDisabled")!="true")){
459
+ voice.find(".label").click(function(){
460
+ extruder.hidePanelsOnClose();
461
+ if(opt.closeOnClick)
462
+ extruder.closeMbExtruder();
463
+ });
464
+ }
465
+ });
466
+ };
467
+
468
+ $.fn.disableExtruderVoice=function(){
469
+ var voice=$(this);
470
+ var label = voice.find(".label");
471
+ voice.removeClass("sel");
472
+ voice.next(".optionsPanel").slideUp(400,function(){$(this).remove();});
473
+ voice.attr("setDisabled",true);
474
+ label.css("opacity",.4);
475
+ voice.hover(function(){$(this).removeClass("hover");},function(){$(this).removeClass("hover");});
476
+ label.addClass("disabled").css("cursor","default");
477
+ voice.find(".settingsBtn").hide();
478
+ voice.on("click",function(event){
479
+ event.stopPropagation();
480
+ return false;
481
+ });
482
+ };
483
+
484
+ $.fn.enableExtruderVoice=function(){
485
+ var voice=$(this);
486
+ voice.attr("setDisabled",false);
487
+ voice.find(".label").css("opacity",1);
488
+ voice.find(".label").removeClass("disabled").css("cursor","pointer");
489
+ voice.off("click");
490
+ voice.find(".settingsBtn").show();
491
+ };
492
+
493
+ $.fn.hidePanelsOnClose=function(){
494
+ var voices= $(this).find(".voice");
495
+ $(this).find(".optionsPanel").slideUp(400,function(){$(this).remove();});
496
+ voices.removeClass("sel");
497
+ voices.find(".settingsBtn").removeClass("sel").css("opacity",.5);
498
+ };
499
+
500
+ $.fn.openPanel=function(){
501
+ var voice=$(this).hasClass("voice") ? $(this) : $(this).find(".voice");
502
+ voice.each(function(){
503
+ if($(this).hasClass("sel")) return;
504
+ $(this).find(".settingsBtn").click();
505
+ })
506
+ };
507
+
508
+ $.fn.closePanel=function(){
509
+ var voice=$(this).hasClass("voice") ? $(this) : $(this).parent(".voice");
510
+ voice.next(".optionsPanel").slideUp(400,function(){$(this).remove();});
511
+ voice.removeClass("sel");
512
+ $(this).removeClass("sel").css("opacity",.5);
513
+ };
514
+
515
+ $.fn.buildMbExtruder=$.mbExtruder.buildMbExtruder;
516
+ $.fn.setMbExtruderContent=$.mbExtruder.setMbExtruderContent;
517
+ $.fn.closeMbExtruder=$.mbExtruder.closeMbExtruder;
518
+ $.fn.openMbExtruder=$.mbExtruder.openMbExtruder;
519
+ $.fn.adjustSize=$.mbExtruder.adjustSize;
520
+
521
+ })(jQuery);