webshims-rails 0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +4 -0
- data/Gemfile +4 -0
- data/MIT_LICENSE.txt +20 -0
- data/Rakefile +1 -0
- data/lib/webshims-rails.rb +13 -0
- data/lib/webshims-rails/version.rb +6 -0
- data/readme.textile +26 -0
- data/vendor/assets/javascripts/webshims/minified/extras/custom-validity.js +9 -0
- data/vendor/assets/javascripts/webshims/minified/extras/modernizr-custom.js +19 -0
- data/vendor/assets/javascripts/webshims/minified/extras/mousepress.js +2 -0
- data/vendor/assets/javascripts/webshims/minified/polyfiller.js +27 -0
- data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvas/README +62 -0
- data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvas/canvas2png.js +42 -0
- data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvas/flashcanvas.js +28 -0
- data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvas/flashcanvas.swf +0 -0
- data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvas/proxy.php +73 -0
- data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvas/save.php +49 -0
- data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvasPro/README +82 -0
- data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvasPro/canvas2png.js +42 -0
- data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvasPro/flash10canvas.swf +0 -0
- data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvasPro/flash9canvas.swf +0 -0
- data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvasPro/flashcanvas.js +31 -0
- data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvasPro/proxy.php +73 -0
- data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvasPro/save.php +49 -0
- data/vendor/assets/javascripts/webshims/minified/shims/combos/1.js +33 -0
- data/vendor/assets/javascripts/webshims/minified/shims/combos/10.js +75 -0
- data/vendor/assets/javascripts/webshims/minified/shims/combos/11.js +39 -0
- data/vendor/assets/javascripts/webshims/minified/shims/combos/12.js +38 -0
- data/vendor/assets/javascripts/webshims/minified/shims/combos/13.js +25 -0
- data/vendor/assets/javascripts/webshims/minified/shims/combos/14.js +19 -0
- data/vendor/assets/javascripts/webshims/minified/shims/combos/15.js +10 -0
- data/vendor/assets/javascripts/webshims/minified/shims/combos/16.js +53 -0
- data/vendor/assets/javascripts/webshims/minified/shims/combos/17.js +62 -0
- data/vendor/assets/javascripts/webshims/minified/shims/combos/18.js +64 -0
- data/vendor/assets/javascripts/webshims/minified/shims/combos/19.js +60 -0
- data/vendor/assets/javascripts/webshims/minified/shims/combos/2.js +61 -0
- data/vendor/assets/javascripts/webshims/minified/shims/combos/20.js +42 -0
- data/vendor/assets/javascripts/webshims/minified/shims/combos/21.js +40 -0
- data/vendor/assets/javascripts/webshims/minified/shims/combos/22.js +56 -0
- data/vendor/assets/javascripts/webshims/minified/shims/combos/23.js +53 -0
- data/vendor/assets/javascripts/webshims/minified/shims/combos/24.js +73 -0
- data/vendor/assets/javascripts/webshims/minified/shims/combos/3.js +80 -0
- data/vendor/assets/javascripts/webshims/minified/shims/combos/4.js +30 -0
- data/vendor/assets/javascripts/webshims/minified/shims/combos/5.js +37 -0
- data/vendor/assets/javascripts/webshims/minified/shims/combos/59.js +56 -0
- data/vendor/assets/javascripts/webshims/minified/shims/combos/6.js +38 -0
- data/vendor/assets/javascripts/webshims/minified/shims/combos/7.js +45 -0
- data/vendor/assets/javascripts/webshims/minified/shims/combos/8.js +33 -0
- data/vendor/assets/javascripts/webshims/minified/shims/combos/9.js +62 -0
- data/vendor/assets/javascripts/webshims/minified/shims/details.js +5 -0
- data/vendor/assets/javascripts/webshims/minified/shims/dom-extend.js +20 -0
- data/vendor/assets/javascripts/webshims/minified/shims/es5.js +14 -0
- data/vendor/assets/javascripts/webshims/minified/shims/excanvas.js +35 -0
- data/vendor/assets/javascripts/webshims/minified/shims/form-core.js +21 -0
- data/vendor/assets/javascripts/webshims/minified/shims/form-datalist.js +19 -0
- data/vendor/assets/javascripts/webshims/minified/shims/form-message.js +9 -0
- data/vendor/assets/javascripts/webshims/minified/shims/form-native-extend.js +7 -0
- data/vendor/assets/javascripts/webshims/minified/shims/form-native-fix.js +9 -0
- data/vendor/assets/javascripts/webshims/minified/shims/form-number-date-api.js +12 -0
- data/vendor/assets/javascripts/webshims/minified/shims/form-number-date-ui.js +26 -0
- data/vendor/assets/javascripts/webshims/minified/shims/form-output.js +5 -0
- data/vendor/assets/javascripts/webshims/minified/shims/form-shim-extend.js +26 -0
- data/vendor/assets/javascripts/webshims/minified/shims/geolocation.js +5 -0
- data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-ar.js +7 -0
- data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-ch-ZN.js +3 -0
- data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-de.txt +33 -0
- data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-el.js +7 -0
- data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-en.txt +34 -0
- data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-es.js +3 -0
- data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-fr.js +3 -0
- data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-he.js +6 -0
- data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-hi.js +6 -0
- data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-hu.js +3 -0
- data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-it.js +3 -0
- data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-ja.js +4 -0
- data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-nl.js +3 -0
- data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-pt-PT.js +3 -0
- data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-ru.js +8 -0
- data/vendor/assets/javascripts/webshims/minified/shims/json-storage.js +14 -0
- data/vendor/assets/javascripts/webshims/minified/shims/jwplayer/license.txt +1 -0
- data/vendor/assets/javascripts/webshims/minified/shims/jwplayer/player.swf +0 -0
- data/vendor/assets/javascripts/webshims/minified/shims/jwplayer/readme.html +87 -0
- data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-core.js +13 -0
- data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-native-fix.js +3 -0
- data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-swf.js +29 -0
- data/vendor/assets/javascripts/webshims/minified/shims/styles/details-arrows.png +0 -0
- data/vendor/assets/javascripts/webshims/minified/shims/styles/forms.png +0 -0
- data/vendor/assets/javascripts/webshims/minified/shims/styles/polyfill-loader.gif +0 -0
- data/vendor/assets/javascripts/webshims/minified/shims/styles/shim.css +610 -0
- data/vendor/assets/javascripts/webshims/minified/shims/swf/jwwebshims.swf +0 -0
- data/vendor/assets/javascripts/webshims/minified/shims/swf/localStorage.swf +0 -0
- data/webshims-rails.gemspec +26 -0
- metadata +149 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/MIT_LICENSE.txt
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Webshims library, copyright (c) 2010 Alexander Farkas, http://protofunc.com/
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
4
|
+
a copy of this software and associated documentation files (the
|
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
9
|
+
the following conditions:
|
|
10
|
+
|
|
11
|
+
The above copyright notice and this permission notice shall be
|
|
12
|
+
included in all copies or substantial portions of the Software.
|
|
13
|
+
|
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Rakefile
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require "bundler/gem_tasks"
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
require "webshims-rails/version"
|
|
2
|
+
|
|
3
|
+
module Webshims
|
|
4
|
+
module Rails
|
|
5
|
+
class Engine < ::Rails::Engine
|
|
6
|
+
# Everything in the webshims directory should be precompiled, since
|
|
7
|
+
# it all needs to be accessed dynamically depending on the browser
|
|
8
|
+
initializer :append_webshims_assets_path, :group => :all do |app|
|
|
9
|
+
app.config.assets.precompile << /webshims\/minified/
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
data/readme.textile
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
h1. Webshims-rails
|
|
2
|
+
|
|
3
|
+
Easily include the "webshims library":http://aFarkas.github.com/webshim/demos/index.html (by Alexander Farkas) in your Rails 3.1+ project with the asset pipeline.
|
|
4
|
+
|
|
5
|
+
h2. Usage
|
|
6
|
+
|
|
7
|
+
1. Add webshims-rails to your Gemfile for bundler: @gem 'webshims-rails'@
|
|
8
|
+
2. Require modernizr and the webshims polyfiller, eg, in your application.js:
|
|
9
|
+
|
|
10
|
+
<pre>
|
|
11
|
+
//= require webshims/minified/extras/modernizr-custom
|
|
12
|
+
//= require webshims/minified/polyfiller
|
|
13
|
+
</pre>
|
|
14
|
+
|
|
15
|
+
3. In your javascript, after the polyfiller has been required, set the basePath for webshims as shown below, and then call $.webshims.polyfill(); see webshims docs for more options.
|
|
16
|
+
(Note that this should be run directly, not in a dom-ready block.)
|
|
17
|
+
|
|
18
|
+
<pre>
|
|
19
|
+
$.webshims.setOptions('basePath', '/assets/webshims/minified/shims/')
|
|
20
|
+
$.webshims.polyfill()
|
|
21
|
+
</pre>
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
h2. License
|
|
25
|
+
|
|
26
|
+
MIT licensed, like the Webshims library.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
(function(b,h,i){if(!b.webshims){var j=navigator.browserLanguage||navigator.language||b("html").attr("lang")||"";b.webshims={addReady:function(a){b(function(){a(i,b([]))})},ready:function(a,b){b()},activeLang:function(){return j}}}var g=b.webshims,k={},c=!1,d,a,e=function(a){g.refreshCustomValidityRules(a.target)};g.customErrorMessages={};g.addCustomValidityRule=function(a,d,e){k[a]=d;g.customErrorMessages[a]||(g.customErrorMessages[a]=[],g.customErrorMessages[a][""]=e||a);b.isReady&&c&&b("input, select, textarea").each(function(){f(this)})};
|
|
2
|
+
g.refreshCustomValidityRules=function(c){if(c.form&&(a||b.prop(c,"willValidate"))){d=!0;var e=b.data(c,"customMismatchedRule"),i=b.prop(c,"validity")||{},f="";if(e||!i.customError){var h=b(c).val();b.each(k,function(a,b){f=b(c,h)||"";e=a;if(f)return"string"!=typeof f&&(f=c.getAttribute("x-moz-errormessage")||c.getAttribute("data-errormessage")||g.customErrorMessages[a][g.activeLang()]||g.customErrorMessages[a][""]),!1});f&&b.data(c,"customMismatchedRule",e);b(c).setCustomValidity(f)}d=!1}};var f=
|
|
3
|
+
g.refreshCustomValidityRules;g.ready("forms",function(){c=!0;var h=b.fn.setCustomValidity||function(a){return this.each(function(){this.setCustomValidity&&this.setCustomValidity(a)})};b.fn.setCustomValidity=function(a){d||this.data("customMismatchedRule","");return h.apply(this,arguments)};i.addEventListener&&i.createElement("form").checkValidity&&i.addEventListener("change",e,!0);g.addReady(function(c,d){a=!0;b("input, select, textarea",c).add(d.filter("input, select, textarea")).each(function(){f(this)});
|
|
4
|
+
a=!1});b(i).bind("refreshCustomValidityRules",e)})})(jQuery,window,document);
|
|
5
|
+
(function(b,h,i){h=b.webshims.addCustomValidityRule;h("partialPattern",function(c,d){if(d&&c.getAttribute("data-partial-pattern")){var a=b(c).data("partial-pattern");return!a?void 0:!RegExp("("+a+")","i").test(d)}},"This format is not allowed here.");h("tooShort",function(c,d){return!d||!c.getAttribute("data-minlength")?void 0:b(c).data("minlength")>d.length},"Entered value is too short.");var j={};h("group-required",function(c){var d=c.name;if(d&&"checkbox"===c.type&&b(c).hasClass("group-required")){var a=
|
|
6
|
+
b(c.form&&c.form[d]||i.getElementsByName(d)),c=a.filter(":checked");j[d]&&clearTimeout(j[d]);j[d]=setTimeout(function(){a.unbind("click.groupRequired").bind("click.groupRequired",function(){a.filter(".group-required").each(function(){b.webshims.refreshCustomValidityRules(this)})})},9);return!c[0]}},"Please check one of these checkboxes.");var g=/[^0-9-]+/;h("creditcard",function(c,d){if(d&&b(c).hasClass("creditcard-input")){if(!g.test(d))return!0;var a=0,e=0,f=!1,d=d.replace(/\D/g,"");for(n=d.length-
|
|
7
|
+
1;0<=n;n--){e=d.charAt(n);e=parseInt(e,10);if(f&&9<(e*=2))e-=9;a+=e;f=!f}return 0!==a%10}},"Please enter a valid credit card number");var k={prop:"value","from-prop":"value",toggle:!1};h("dependent",function(c,d){if(c.getAttribute("data-dependent-validation")){var a=b(c).data("dependentValidation"),e;if(a){var f=function(){var d=b.prop(a.masterElement,a["from-prop"]);e&&(d=-1!==b.inArray(d,e));a.toggle&&(d=!d);b.prop(c,a.prop,d)};if(!a._init||!a.masterElement){"string"==typeof a&&(a={from:a});a.masterElement=
|
|
8
|
+
i.getElementById(a.from)||i.getElementsByName(a.from||[])[0];if(!a.masterElement||!a.masterElement.form)return;if(/radio|checkbox/i.test(a.masterElement.type)){if(a["from-prop"]||(a["from-prop"]="checked"),!a.prop&&"checked"==a["from-prop"])a.prop="disabled"}else a["from-prop"]||(a["from-prop"]="value");0===a["from-prop"].indexOf("value:")&&(e=a["from-prop"].replace("value:","").split("||"),a["from-prop"]="value");a=b.data(c,"dependentValidation",b.extend({_init:!0},k,a));"value"!==a.prop||e?b(a.masterElement).bind("change",
|
|
9
|
+
f):b(a.masterElement).bind("change",function(){b.webshims.refreshCustomValidityRules(c)})}if("value"==a.prop&&!e)return b.prop(a.masterElement,"value")!=d;f();return""}}},"The value of this field does not repeat the value of the other field")})(jQuery,window,document);
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
window.Modernizr=function(p,c,y){function u(b,a){for(var d in b)if(H[b[d]]!==y)return"pfx"==a?b[d]:!0;return!1}function s(b,a,d){var c=b.charAt(0).toUpperCase()+b.substr(1),e=(b+" "+t.join(c+" ")+c).split(" ");if("string"===typeof a||"undefined"===typeof a)a=u(e,a);else{e=(b+" "+q.join(c+" ")+c).split(" ");a:{var b=e,f;for(f in b)if(c=a[b[f]],c!==y){a=!1===d?b[f]:"function"===typeof c?c.bind(d||a):c;break a}a=!1}}return a}function A(){e.input=function(b){for(var a=0,d=b.length;a<d;a++)r[b[a]]=b[a]in
|
|
2
|
+
i;return r.list&&(r.list=!!c.createElement("datalist")&&!!p.HTMLDataListElement),r}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" "));e.inputtypes=function(b){for(var a=0,d,e,z,f=b.length;a<f;a++)i.setAttribute("type",e=b[a]),d="text"!==i.type,d&&(i.value=m,i.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(e)&&i.style.WebkitAppearance!==y?(n.appendChild(i),z=c.defaultView,d=z.getComputedStyle&&"textfield"!==z.getComputedStyle(i,null).WebkitAppearance&&
|
|
3
|
+
0!==i.offsetHeight,n.removeChild(i)):/^(search|tel)$/.test(e)||(/^(url|email)$/.test(e)?d=i.checkValidity&&!1===i.checkValidity():/^color$/.test(e)?(n.appendChild(i),d=i.value!=m,n.removeChild(i)):d=i.value!=m)),B[b[a]]=!!d;return B}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var e={},n=c.documentElement,k=c.createElement("modernizr"),H=k.style,i=c.createElement("input"),m=":)",t="Webkit Moz O ms".split(" "),q="webkit moz o ms".split(" "),k=
|
|
4
|
+
{},B={},r={},v=[],C=v.slice,w,D={}.hasOwnProperty,x;"undefined"!==typeof D&&"undefined"!==typeof D.call?x=function(b,a){return D.call(b,a)}:x=function(b,a){return a in b&&"undefined"===typeof b.constructor.prototype[a]};Function.prototype.bind||(Function.prototype.bind=function(b){var a=this;if("function"!=typeof a)throw new TypeError;var d=C.call(arguments,1),c=function(){if(this instanceof c){var e=function(){};e.prototype=a.prototype;var e=new e,f=a.apply(e,d.concat(C.call(arguments)));return Object(f)===
|
|
5
|
+
f?f:e}return a.apply(b,d.concat(C.call(arguments)))};return c});k.canvas=function(){var b=c.createElement("canvas");return!!b.getContext&&!!b.getContext("2d")};k.geolocation=function(){return!!navigator.geolocation};k.video=function(){var b=c.createElement("video"),a=!1;try{if(a=!!b.canPlayType)a=new Boolean(a),a.ogg=b.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),a.h264=b.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),a.webm=b.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,
|
|
6
|
+
"")}catch(d){}return a};k.audio=function(){var b=c.createElement("audio"),a=!1;try{if(a=!!b.canPlayType)a=new Boolean(a),a.ogg=b.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),a.mp3=b.canPlayType("audio/mpeg;").replace(/^no$/,""),a.wav=b.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),a.m4a=(b.canPlayType("audio/x-m4a;")||b.canPlayType("audio/aac;")).replace(/^no$/,"")}catch(d){}return a};k.localstorage=function(){try{return localStorage.setItem("modernizr","modernizr"),localStorage.removeItem("modernizr"),
|
|
7
|
+
!0}catch(b){return!1}};k.sessionstorage=function(){try{return sessionStorage.setItem("modernizr","modernizr"),sessionStorage.removeItem("modernizr"),!0}catch(b){return!1}};for(var E in k)x(k,E)&&(w=E.toLowerCase(),e[w]=k[E](),v.push((e[w]?"":"no-")+w));e.input||A();e.addTest=function(b,a){if("object"==typeof b)for(var d in b)x(b,d)&&e.addTest(d,b[d]);else{b=b.toLowerCase();if(e[b]!==y)return e;a="function"==typeof a?a():a;n.className+=" "+(a?"":"no-")+b;e[b]=a}return e};H.cssText="";return k=i=null,
|
|
8
|
+
function(b,a){function d(){var a=j.elements;return"string"==typeof a?a.split(" "):a}function e(a){var b={},c=a.createElement,I=a.createDocumentFragment,l=I();a.createElement=function(a){var d=(b[a]||(b[a]=c(a))).cloneNode();return j.shivMethods&&d.canHaveChildren&&!G.test(a)?l.appendChild(d):d};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/\w+/g,function(a){return b[a]=c(a),l.createElement(a),'c("'+a+'")'})+");return n}")(j,
|
|
9
|
+
l)}function c(a){var b;if(!a.documentShived){if(j.shivCSS&&!I){b=a.createElement("p");var G=a.getElementsByTagName("head")[0]||a.documentElement;b=!!(b.innerHTML="x<style>article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio{display:none}canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden]{display:none}audio[controls]{display:inline-block;*display:inline;*zoom:1}mark{background:#FF0;color:#000}</style>",G.insertBefore(b.lastChild,G.firstChild))}a=
|
|
10
|
+
(i||(b=!e(a)),b&&(a.documentShived=b),a)}return a}var f=b.html5||{},G=/^<|^(?:button|form|map|select|textarea)$/i,I,i;(function(){var b=a.createElement("a");b.innerHTML="<xyz></xyz>";I="hidden"in b;if(!(b=1==b.childNodes.length))a:{try{a.createElement("a")}catch(G){b=!0;break a}b=a.createDocumentFragment();b="undefined"==typeof b.cloneNode||"undefined"==typeof b.createDocumentFragment||"undefined"==typeof b.createElement}i=b})();var j={elements:f.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",
|
|
11
|
+
shivCSS:!1!==f.shivCSS,shivMethods:!1!==f.shivMethods,type:"default",shivDocument:c};b.html5=j;c(a)}(this,c),e._version="2.5.3",e._domPrefixes=q,e._cssomPrefixes=t,e.testProp=function(b){return u([b])},e.testAllProps=s,e.prefixed=function(b,a,d){return a?s(b,a,d):s(b,"pfx")},e}(this,this.document);
|
|
12
|
+
(function(p,c,y){function u(a){return"[object Function]"==B.call(a)}function s(a){return"string"==typeof a}function A(){}function e(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function n(){var a=r.shift();v=1;a?a.t?t(function(){("c"==a.t?f.injectCss:f.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),n()):v=0}function k(a,b,i,j,k,o,g){function F(c){if(!L&&e(l.readyState)&&(M.r=L=1,!v&&n(),l.onload=l.onreadystatechange=null,c)){"img"!=a&&t(function(){D.removeChild(l)},50);for(var F in d[b])d[b].hasOwnProperty(F)&&
|
|
13
|
+
d[b][F].onload()}}var g=g||f.errorTimeout,l={},L=0,J=0,M={t:i,s:b,e:k,a:o,x:g};1===d[b]&&(J=1,d[b]=[],l=c.createElement(a));"object"==a?l.data=b:(l.src=b,l.type=a);l.width=l.height="0";l.onerror=l.onload=l.onreadystatechange=function(){F.call(this,J)};r.splice(j,0,M);"img"!=a&&(J||2===d[b]?(D.insertBefore(l,w?null:q),t(F,g)):d[b].push(l))}function H(a,b,c,d,e){return v=0,b=b||"j",s(a)?k("c"==b?E:x,a,b,this.i++,c,d,e):(r.splice(this.i++,0,a),1==r.length&&n()),this}function i(){var a=f;return a.loader=
|
|
14
|
+
{load:H,i:0},a}var m=c.documentElement,t=p.setTimeout,q=c.getElementsByTagName("script")[0],B={}.toString,r=[],v=0,C="MozAppearance"in m.style,w=C&&!!c.createRange().compareNode,D=w?m:q.parentNode,m=p.opera&&"[object Opera]"==B.call(p.opera),m=!!c.attachEvent&&!m,x=C?"object":m?"script":"img",E=m?"script":x,b=Array.isArray||function(a){return"[object Array]"==B.call(a)},a=[],d={},K={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},z,f;f=function(c){function e(b){var b=b.split("!"),c=a.length,
|
|
15
|
+
d=b.pop(),i=b.length,d={url:d,origUrl:d,prefixes:b},f,h,g;for(h=0;h<i;h++)g=b[h].split("="),(f=K[g.shift()])&&(d=f(d,g));for(h=0;h<c;h++)d=a[h](d);return d}function k(a,b,c,f,g){var h=e(a),j=h.autoCallback;h.url.split(".").pop().split("?").shift();h.bypass||(b&&(b=u(b)?b:b[a]||b[f]||b[a.split("/").pop().split("?")[0]]||n),h.instead?h.instead(a,b,c,f,g):(d[h.url]?h.noexec=!0:d[h.url]=1,c.load(h.url,h.forceCSS||!h.forceJS&&"css"==h.url.split(".").pop().split("?").shift()?"c":y,h.noexec,h.attrs,h.timeout),
|
|
16
|
+
(u(b)||u(j))&&c.load(function(){i();b&&b(h.origUrl,g,f);j&&j(h.origUrl,g,f);d[h.url]=2})))}function j(a,b){function c(a,e){if(a)if(s(a))e||(h=function(){var a=[].slice.call(arguments);f.apply(this,a);g()}),k(a,h,b,0,d);else{if(Object(a)===a)for(j in i=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(j)&&(!e&&!--i&&(u(h)?h=function(){var a=[].slice.call(arguments);f.apply(this,a);g()}:h[j]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,
|
|
17
|
+
b);g()}}(f[j])),k(a[j],h,b,j,d))}else!e&&g()}var d=!!a.test,e=a.load||a.both,h=a.callback||A,f=h,g=a.complete||A,i,j;c(d?a.yep:a.nope,!!e);e&&c(e)}var m,o,g=this.yepnope.loader;if(s(c))k(c,0,g,0);else if(b(c))for(m=0;m<c.length;m++)o=c[m],s(o)?k(o,0,g,0):b(o)?f(o):Object(o)===o&&j(o,g);else Object(c)===c&&j(c,g)};f.addPrefix=function(a,b){K[a]=b};f.addFilter=function(b){a.push(b)};f.errorTimeout=1E4;null==c.readyState&&c.addEventListener&&(c.readyState="loading",c.addEventListener("DOMContentLoaded",
|
|
18
|
+
z=function(){c.removeEventListener("DOMContentLoaded",z,0);c.readyState="complete"},0));p.yepnope=i();p.yepnope.executeStack=n;p.yepnope.injectJs=function(a,b,d,j,i,k){var g=c.createElement("script"),m,l,j=j||f.errorTimeout;g.src=a;for(l in d)g.setAttribute(l,d[l]);b=k?n:b||A;g.onreadystatechange=g.onload=function(){!m&&e(g.readyState)&&(m=1,b(),g.onload=g.onreadystatechange=null)};t(function(){m||(m=1,b(1))},j);i?g.onload():q.parentNode.insertBefore(g,q)};p.yepnope.injectCss=function(a,b,d,e,f,i){var e=
|
|
19
|
+
c.createElement("link"),g,b=i?n:b||A;e.href=a;e.rel="stylesheet";e.type="text/css";for(g in d)e.setAttribute(g,d[g]);f||(q.parentNode.insertBefore(e,q),t(b,0))}})(this,document);Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
(function(b){var e=function(c,a){var b=c.data("mousepresstimer");b&&clearTimeout(b);a&&c.unbind("mouseup.mousepressext mouseleave.mousepressext")};b.event.special.mousepress={setup:function(){b(this).bind("mousedown.mousepressext",function(c){var a=b(this),g=function(f){var d=0;e(a);a.data("mousepresstimer",setInterval(function(){b.event.special.mousepress.handler(a[0],c);d++;3<d&&45<f&&g(f-40)},f))},d=b(c.target).trigger("mousepressstart",[c]);e(a);a.data("mousepresstimer",setTimeout(function(){g(180)},
|
|
2
|
+
200));a.bind("mouseup.mousepressext mouseleave.mousepressext",function(b){e(a,!0);d.trigger("mousepressend",[b]);d=a=null})})},teardown:function(){e(b(this).unbind(".mousepressext"),!0)},handler:function(c,a){return b.event.handle.call(c,{type:"mousepress",target:a.target,pageX:a.pageX,pageY:a.pageY})}}})(jQuery);
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
(function(c){if(window.jQuery)c(jQuery),c=jQuery.noop;"function"===typeof define&&define.amd&&define.amd.jQuery&&define("polyfiller",["jquery"],c)})(function(c){var z=c(document.scripts||"script"),o=c.event.special,A=c([]),g=window.Modernizr,r=window.asyncWebshims,B=g.addTest,w=parseFloat(c.browser.version,10),p=window.Object;g.genericDOM=!!c("<video><div></div></video>")[0].innerHTML;g.advancedObjectProperties=g.objectAccessor=g.ES5=!!("create"in p&&"seal"in p);var d={version:"1.8.9",cfg:{useImportantStyles:!0,
|
|
2
|
+
waitReady:!0,extendNative:!0,loadStyles:!0,basePath:function(){var a=z.filter('[src*="polyfiller.js"]'),a=a[0]||a.end()[a.end().length-1],a=(c.support.hrefNormalized?a.src:a.getAttribute("src",4)).split("?")[0];return a=a.slice(0,a.lastIndexOf("/")+1)+"shims/"}()},bugs:{},browserVersion:w,modules:{},features:{},featureList:[],setOptions:function(a,b){"string"==typeof a&&void 0!==b?n[a]=!c.isPlainObject(b)?b:c.extend(!0,n[a]||{},b):"object"==typeof a&&c.extend(!0,n,a)},addPolyfill:function(a,b){var b=
|
|
3
|
+
b||{},e=b.f||a;if(!k[e])k[e]=[],k[e].delayReady=0,d.featureList.push(e),n[e]={};k[e].push(a);b.options=c.extend(n[e],b.options);x(a,b);b.methodNames&&c.each(b.methodNames,function(a,b){d.addMethodName(b)})},polyfill:function(){var a=function(b){var f=[],h,i=function(){c("html").removeClass("loading-polyfills long-loading-polyfills");c(window).unbind(".lP");clearTimeout(h)};f.push("loading-polyfills");c(window).bind("load.lP error.lP",i);h=setTimeout(function(){c("html").addClass("long-loading-polyfills")},
|
|
4
|
+
600);n.waitReady&&c.isReady&&d.warn("Call webshims.polyfill before DOM-Ready or set waitReady to false.");q(b,i);n.useImportantStyles&&f.push("polyfill-important");f[0]&&c("html").addClass(f.join(" "));n.loadStyles&&s.loadCSS("styles/shim.css");a=c.noop},b;return function(e){var f=[],e=e||d.featureList;"string"==typeof e&&(e=e.split(" "));b||(b=-1!==c.inArray("forms",e),!b&&-1!==c.inArray("forms-ext",e)&&(e.push("forms"),b=!0));n.waitReady&&(c.readyWait++,q(e,function(){c.ready(!0)}));c.each(e,function(a,
|
|
5
|
+
b){k[b]?(b!==k[b][0]&&q(k[b],function(){l(b,!0)}),f=f.concat(k[b])):(d.warn("could not find webshims-feature (aborted): "+b),l(b,!0))});a(e);t(f)}}(),reTest:function(){var a,b,e=function(e,h){var i=m[h],d=h+"Ready",g;if(i&&!i.loaded&&!(i.test&&c.isFunction(i.test)?i.test([]):i.test)){o[d]&&delete o[d];if((g=k[i.f])&&!b)g.delayReady++,q(h,function(){g.delayReady--;l(i.f,g.callReady)});a.push(h)}};return function(d,h){b=h;"string"==typeof d&&(d=d.split(" "));a=[];c.each(d,e);t(a)}}(),isReady:function(a,
|
|
6
|
+
b){if(k[a]&&0<k[a].delayReady){if(b)k[a].callReady=!0;return!1}a+="Ready";if(b){if(o[a]&&o[a].add)return!0;o[a]=c.extend(o[a]||{},{add:function(b){b.handler.call(this,a)}});c.event.trigger(a)}return!(!o[a]||!o[a].add)||!1},ready:function(a,b,e){"string"==typeof a&&(a=a.split(" "));e||(a=c.map(c.grep(a,function(a){return!l(a)}),function(a){return a+"Ready"}));a.length?(e=a.shift(),c(document).one(e,function(){q(a,b,!0)})):b(c,d,window,document)},fixHTML5:function(a){return a},capturingEvents:function(a,
|
|
7
|
+
b){document.addEventListener&&("string"==typeof a&&(a=[a]),c.each(a,function(a,f){var h=function(a){a=c.event.fix(a);b&&d.capturingEventPrevented&&d.capturingEventPrevented(a);return c.event.handle.call(this,a)};o[f]=o[f]||{};!o[f].setup&&!o[f].teardown&&c.extend(o[f],{setup:function(){this.addEventListener(f,h,!0)},teardown:function(){this.removeEventListener(f,h,!0)}})}))},register:function(a,b){var e=m[a];if(e){if(e.noAutoCallback){var f=function(){b(c,d,window,document,void 0,e.options);l(a,!0)};
|
|
8
|
+
e.d?q(e.d,f):f()}}else d.warn("can't find module: "+a)},c:{},loader:{addModule:function(a,b){m[a]=b;b.name=b.name||a;if(!b.c)b.c=[];c.each(b.c,function(b,c){d.c[c]||(d.c[c]=[]);d.c[c].push(a)})},loadList:function(){var a=[],b=function(b,e){"string"==typeof e&&(e=[e]);c.merge(a,e);s.loadScript(b,!1,e)},e=function(b,e){if(l(b)||-1!=c.inArray(b,a))return!0;var d=m[b];if(d)if(d=d.test&&c.isFunction(d.test)?d.test(e):d.test)l(b,!0);else return!1;return!0},f=function(a,b){if(a.d&&a.d.length){var d=function(a,
|
|
9
|
+
d){!e(d,b)&&-1==c.inArray(d,b)&&b.push(d)};c.each(a.d,function(a,b){m[b]?d(a,b):k[b]&&(c.each(k[b],d),q(k[b],function(){l(b,!0)}))});if(!a.noAutoCallback)a.noAutoCallback=!0}};return function(h){var i,g=[],j,k,l=function(e,h){k=h;c.each(d.c[h],function(b,d){if(-1==c.inArray(d,g)||-1!=c.inArray(d,a))return k=!1});if(k)return b("combos/"+k,d.c[k]),!1};for(j=0;j<h.length;j++)i=m[h[j]],!i||e(i.name,h)?i||d.warn("could not find: "+h[j]):(i.css&&s.loadCSS(i.css),i.loadInit&&i.loadInit(),i.loaded=!0,f(i,
|
|
10
|
+
h),g.push(i.name));for(j=0,h=g.length;j<h;j++)k=!1,i=g[j],-1==c.inArray(i,a)&&("noCombo"!=d.debug&&c.each(m[i].c,l),k||b(m[i].src||i,i))}}(),makePath:function(a){if(-1!=a.indexOf("//")||0===a.indexOf("/"))return a;-1==a.indexOf(".")&&(a+=".js");n.addCacheBuster&&(a+=n.addCacheBuster);return n.basePath+a},loadCSS:function(){var a,b=[];return function(d){d=this.makePath(d);-1==c.inArray(d,b)&&(a=a||c("link, style")[0]||c("script")[0],b.push(d),c('<link rel="stylesheet" />').insertBefore(a).attr({href:d}))}}(),
|
|
11
|
+
loadScript:function(){var a=[];return function(b,d,f){b=s.makePath(b);if(-1==c.inArray(b,a)){var h=function(){h=null;d&&d();f&&("string"==typeof f&&(f=f.split(" ")),c.each(f,function(a,b){m[b]&&(m[b].afterLoad&&m[b].afterLoad(),l(!m[b].noAutoCallback?b:b+"FileLoaded",!0))}))};a.push(b);window.require?require([b],h):window.sssl?sssl(b,h):window.yepnope?yepnope.injectJs(b,h):window.steal&&steal(b).then(h)}}}()}};c.webshims=d;var w=("https:"==location.protocol?"https://":"http://")+"ajax.googleapis.com/ajax/libs/",
|
|
12
|
+
C=w+"jqueryui/1.8.17/",n=d.cfg,k=d.features,l=d.isReady,q=d.ready,j=d.addPolyfill,m=d.modules,s=d.loader,t=s.loadList,x=s.addModule,u=[],D={warn:1,error:1};d.addMethodName=function(a){var a=a.split(":"),b=a[1];1==a.length&&(b=a[0]);a=a[0];c.fn[a]=function(){return this.callProp(b,arguments)}};c.fn.callProp=function(a,b){var e;b||(b=[]);this.each(function(){var f=c.prop(this,a);if(f&&f.apply){if(e=f.apply(this,b),void 0!==e)return!1}else d.warn(a+" is not a method of "+this)});return void 0!==e?e:
|
|
13
|
+
this};d.activeLang=function(){var a=navigator.browserLanguage||navigator.language||"";q("webshimLocalization",function(){d.activeLang(a)});return function(b){if(b)if("string"==typeof b)a=b;else if("object"==typeof b){var c=arguments,f=this;q("webshimLocalization",function(){d.activeLang.apply(f,c)})}return a}}();c.each(["log","error","warn","info"],function(a,b){d[b]=function(a){if((D[b]&&!1!==d.debug||d.debug)&&window.console&&console.log)return console[console[b]?b:"log"](a)}});(function(){c.isDOMReady=
|
|
14
|
+
c.isReady;if(c.isDOMReady)l("DOM",!0);else{var a=c.ready;c.ready=function(b){if(!0!==b&&!c.isDOMReady)document.body?(c.isDOMReady=!0,l("DOM",!0),c.ready=a):setTimeout(function(){c.ready(b)},13);return a.apply(this,arguments)}}c(function(){c.isDOMReady=!0;l("DOM",!0);setTimeout(function(){l("WINDOWLOAD",!0)},9999)});c(window).load(function(){l("WINDOWLOAD",!0)})})();(function(){var a=[];c.extend(d,{addReady:function(b){var c=function(a,c){d.ready("DOM",function(){b(a,c)})};a.push(c);c(document,A)},
|
|
15
|
+
triggerDomUpdate:function(b){if(!b||!b.nodeType)b&&b.jquery&&b.each(function(){d.triggerDomUpdate(this)});else{var e=b.nodeType;if(!(1!=e&&9!=e)){var f=b!==document?c(b):A;c.each(a,function(a,c){c(b,f)})}}}});c.fn.htmlPolyfill=function(a){a=c.fn.html.call(this,a?d.fixHTML5(a):a);a===this&&c.isDOMReady&&this.each(function(){1==this.nodeType&&d.triggerDomUpdate(this)});return a};c.each(["after","before","append","prepend","replaceWith"],function(a,e){c.fn[e+"Polyfill"]=function(a){a=c(d.fixHTML5(a));
|
|
16
|
+
c.fn[e].call(this,a);c.isDOMReady&&a.each(function(){1==this.nodeType&&d.triggerDomUpdate(this)});return this}});c.each(["insertAfter","insertBefore","appendTo","prependTo","replaceAll"],function(a,e){c.fn[e.replace(/[A-Z]/,function(a){return"Polyfill"+a})]=function(){c.fn[e].apply(this,arguments);d.triggerDomUpdate(this);return this}});c.fn.updatePolyfill=function(){d.triggerDomUpdate(this);return this};c.each(["getNativeElement","getShadowElement","getShadowFocusElement"],function(a,d){c.fn[d]=
|
|
17
|
+
function(){return this}})})();(function(){var a=p.prototype.hasOwnProperty,b=["configurable","enumerable","writable"],e=function(a){for(var c=0;3>c;c++)if(void 0===a[b[c]]&&("writable"!==b[c]||void 0!==a.value))a[b[c]]=!0},f=function(b){if(b)for(var c in b)a.call(b,c)&&e(b[c])};if(p.create)d.objectCreate=function(a,b,d){f(b);a=p.create(a,b);if(d)a.options=c.extend(!0,{},a.options||{},d),d=a.options;a._create&&c.isFunction(a._create)&&a._create(d);return a};p.defineProperty&&(d.defineProperty=function(a,
|
|
18
|
+
b,c){e(c);return p.defineProperty(a,b,c)});if(p.defineProperties)d.defineProperties=function(a,b){f(b);return p.defineProperties(a,b)};d.getOwnPropertyDescriptor=p.getOwnPropertyDescriptor;d.getPrototypeOf=p.getPrototypeOf})();x("jquery-ui",{src:C+"jquery-ui.min.js",test:function(){return!(!c.widget||!c.Widget)}});x("input-widgets",{src:"",test:function(){return!this.src||!(c.widget&&(!c.fn.datepicker||!c.fn.slider))}});x("swfobject",{src:w+"swfobject/2.2/swfobject.js",test:function(){return"swfobject"in
|
|
19
|
+
window}});j("es5",{test:!(!g.ES5||!Function.prototype.bind),c:[10,1,22]});j("dom-extend",{f:"dom-support",noAutoCallback:!0,d:["es5"],c:[10,9,12,17,16,8,1,24,19,11,13]});"localstorage"in g&&j("json-storage",{test:g.localstorage&&"sessionStorage"in window&&"JSON"in window,loadInit:function(){t(["swfobject"])},noAutoCallback:!0,c:[14]});"geolocation"in g&&j("geolocation",{test:g.geolocation,options:{destroyWrite:!0},d:["json-storage"],c:[14,15]});(function(){if("canvas"in g){var a;j("canvas",{src:"excanvas",
|
|
20
|
+
test:g.canvas,options:{type:"excanvas"},noAutoCallback:!0,loadInit:function(){var b=this.options.type;if(b&&-1!==b.indexOf("flash")&&(!window.swfobject||swfobject.hasFlashPlayerVersion("9.0.0")))window.FlashCanvasOptions=window.FlashCanvasOptions||{},a=FlashCanvasOptions,"flash"==b?(c.extend(a,{swfPath:n.basePath+"FlashCanvas/"}),this.src="FlashCanvas/flashcanvas"):(c.extend(a,{swfPath:n.basePath+"FlashCanvasPro/"}),this.src="FlashCanvasPro/flashcanvas")},afterLoad:function(){d.addReady(function(a,
|
|
21
|
+
d){c("canvas",a).add(d.filter("canvas")).each(function(){!this.getContext&&window.G_vmlCanvasManager&&G_vmlCanvasManager.initElement(this)});a==document&&l("canvas",!0)})},methodNames:["getContext"],d:["dom-support"]})}})();var y=g.input,v=g.inputtypes;if(y&&v)B("formvalidation",function(){return!(!y.required||!y.pattern)}),d.validationMessages=d.validityMessages=[],d.inputTypes={},j("form-core",{f:"forms",d:["es5"],test:function(){if(this.options.lightweightDatalist&&!this.datalistLoaded)this.datalistLoaded=
|
|
22
|
+
!0,m["form-datalist"].f="forms",d.reTest(["form-datalist"]);return!1},options:{placeholderType:"value",langSrc:"i18n/errormessages-",availabeLangs:"ar,ch-ZN,el,es,fr,he,hi,hu,it,ja,nl,pt-PT,ru".split(",")},methodNames:["setCustomValidity","checkValidity"],c:[3,2,59,17,16,5,4,24,19]}),g.formvalidation?(j("form-extend",{f:"forms",src:"form-native-extend",test:function(a){return(m["form-number-date-api"].test()||-1==c.inArray("form-number-date-api",a||[]))&&!this.options.overrideMessages},d:["form-core",
|
|
23
|
+
"dom-support","form-message"],c:[18,7,59,5]}),u=u.concat([2,3,23,21])):(u=u.concat([18,7,4,59,5]),j("form-extend",{f:"forms",src:"form-shim-extend",d:["form-core","dom-support"],c:[3,2,23,21]})),j("form-message",{f:"forms",test:function(a){return!(this.options.customMessages||!g.formvalidation||!m["form-extend"].test(a)||d.bugs.validationMessage)},d:["dom-support"],c:[3,2,23,21,59,17,5,4]}),d.addPolyfill("form-output",{f:"forms",test:"value"in document.createElement("output"),d:["dom-support"],c:[3,
|
|
24
|
+
2,23,21]}),j("form-number-date-api",{f:"forms-ext",uiTest:function(){return v.range&&v.date&&v.time&&v.number},test:function(){return this.uiTest()&&!d.bugs.valueAsNumberSet},d:["forms","dom-support"],c:[18,7,6]}),j("form-number-date-ui",{f:"forms-ext",test:function(){return m["form-number-date-api"].test()&&!this.options.replaceUI},d:["forms","dom-support","form-number-date-api"],loadInit:function(){t(["jquery-ui"]);m["input-widgets"].src&&t(["input-widgets"])},options:{stepArrows:{number:1,time:1},
|
|
25
|
+
calculateWidth:!0,slider:{},datepicker:{},langSrc:C+"i18n/jquery.ui.datepicker-",recalcWidth:!0},c:[18,7,6]}),j("form-datalist",{f:"forms-ext",test:y.list,d:["form-core","dom-support"],c:[3,59,18,24,19,11]});"details"in g||B("details",function(){return"open"in document.createElement("details")});j("details",{test:g.details,d:["dom-support"],options:{text:"Details"},c:[12,13,15]});if("audio"in g&&"video"in g)d.mediaelement={},j("mediaelement-core",{f:"mediaelement",noAutoCallback:!0,d:["swfobject",
|
|
26
|
+
"dom-support"],c:[10,9,12,17,16,8,22,23,24,20]}),j("mediaelement-swf",{f:"mediaelement",options:{hasToPlay:"any",preferFlash:!1,jwVars:{},jwParams:{},jwAttrs:{},changeJW:c.noop},methodNames:["play","pause","canPlayType","mediaLoad:load"],d:["swfobject","dom-support"],test:function(){if(!g.audio||!g.video)return!1;var a=this.options,b=a.hasToPlay;return!((!window.swfobject||window.swfobject.hasFlashPlayerVersion("9.0.115"))&&(a.preferFlash||"any"!=b&&!g.video[b]&&!g.audio[b]))},c:[10,9,22,20]});j("feature-dummy",
|
|
27
|
+
{test:!0,loaded:!0,c:u});z.filter("[data-polyfill-cfg]").each(function(){try{d.setOptions(c(this).data("polyfillCfg"))}catch(a){d.warn("error parsing polyfill cfg: "+a)}}).end().filter("[data-polyfill]").each(function(){d.polyfill(c.trim(c(this).data("polyfill")||""))});r&&(r.cfg&&d.setOptions(r.cfg),r.lang&&d.activeLang(r.lang),"polyfill"in r&&d.polyfill(r.polyfill))});
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
FlashCanvas
|
|
2
|
+
===========
|
|
3
|
+
|
|
4
|
+
An implementation of the HTML5 Canvas API for Internet Explorer.
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
Description
|
|
8
|
+
-----------
|
|
9
|
+
|
|
10
|
+
FlashCanvas is a JavaScript library which adds the HTML5 Canvas support
|
|
11
|
+
to Internet Explorer. It renders shapes and images via Flash drawing
|
|
12
|
+
API, and in many cases, runs faster than other similar libraries which
|
|
13
|
+
use VML or Silverlight.
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
Requirements
|
|
17
|
+
------------
|
|
18
|
+
|
|
19
|
+
* Microsoft Internet Explorer
|
|
20
|
+
* Adobe Flash Player 9 or later
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
Usage
|
|
24
|
+
-----
|
|
25
|
+
|
|
26
|
+
FlashCanvas consists of JavaScript, Flash and PHP files:
|
|
27
|
+
|
|
28
|
+
* flashcanvas.js
|
|
29
|
+
* flashcanvas.swf
|
|
30
|
+
* canvas2png.js (helps you to save a canvas image)
|
|
31
|
+
* proxy.php (used to load a file from other domain)
|
|
32
|
+
* save.php (used to save a canvas image)
|
|
33
|
+
|
|
34
|
+
These files can be found in the bin directory in this distribution
|
|
35
|
+
package. To install FlashCanvas, copy these files into some directory on
|
|
36
|
+
a Web server, and then add the following HTML code between <head> and
|
|
37
|
+
</head> tags on your web page.
|
|
38
|
+
|
|
39
|
+
<!--[if lt IE 9]>
|
|
40
|
+
<script type="text/javascript" src="path/to/flashcanvas.js"></script>
|
|
41
|
+
<![endif]-->
|
|
42
|
+
|
|
43
|
+
That's all you have to do in most cases. For more details, please read
|
|
44
|
+
the online manual at the project page.
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
License
|
|
48
|
+
-------
|
|
49
|
+
|
|
50
|
+
FlashCanvas is developed by FlashCanvas Project and released under the
|
|
51
|
+
MIT License.
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
Contact
|
|
55
|
+
-------
|
|
56
|
+
|
|
57
|
+
If you have a question about FlashCanvas, please utilize the discussion
|
|
58
|
+
group and issue tracker found at the project page. If you need to
|
|
59
|
+
contact us directly, you can reach us at the e-mail address.
|
|
60
|
+
|
|
61
|
+
Project page: http://code.google.com/p/flashcanvas/
|
|
62
|
+
E-mail: flashcanvas@gmail.com
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* canvas2png.js
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2010-2011 Shinya Muramatsu
|
|
5
|
+
* Released under the MIT License
|
|
6
|
+
* http://flashcanvas.net/
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
(function(doc) {
|
|
10
|
+
|
|
11
|
+
var scripts = doc.getElementsByTagName("script");
|
|
12
|
+
var script = scripts[scripts.length - 1];
|
|
13
|
+
var url = script.getAttribute("src").replace(/[^\/]+$/, "save.php");
|
|
14
|
+
|
|
15
|
+
window.canvas2png = function(canvas) {
|
|
16
|
+
var tagName = canvas.tagName.toLowerCase();
|
|
17
|
+
if (tagName !== "canvas") {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if (typeof FlashCanvas !== "undefined") {
|
|
22
|
+
FlashCanvas.saveImage(canvas);
|
|
23
|
+
} else {
|
|
24
|
+
var form = doc.createElement("form");
|
|
25
|
+
var input = doc.createElement("input");
|
|
26
|
+
|
|
27
|
+
form.setAttribute("action", url);
|
|
28
|
+
form.setAttribute("method", "post");
|
|
29
|
+
|
|
30
|
+
input.setAttribute("type", "hidden");
|
|
31
|
+
input.setAttribute("name", "dataurl");
|
|
32
|
+
input.setAttribute("value", canvas.toDataURL());
|
|
33
|
+
|
|
34
|
+
doc.body.appendChild(form);
|
|
35
|
+
form.appendChild(input);
|
|
36
|
+
form.submit();
|
|
37
|
+
form.removeChild(input);
|
|
38
|
+
doc.body.removeChild(form);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
})(document);
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* FlashCanvas
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2009 Tim Cameron Ryan
|
|
5
|
+
* Copyright (c) 2009-2011 FlashCanvas Project
|
|
6
|
+
* Released under the MIT/X License
|
|
7
|
+
*/
|
|
8
|
+
window.ActiveXObject&&!window.CanvasRenderingContext2D&&function(h,j){function D(a){this.code=a;this.message=T[a]}function U(a){this.width=a}function E(a){this.id=a.C++}function t(a){this.G=a;this.id=a.C++}function u(a,b){this.canvas=a;this.B=b;this.d=a.uniqueID;this.D();this.C=0;this.t="";var c=this;setInterval(function(){n[c.d]===0&&c.e()},30)}function A(){if(j.readyState==="complete"){j.detachEvent(F,A);for(var a=j.getElementsByTagName(r),b=0,c=a.length;b<c;++b)B.initElement(a[b])}}function G(){var a=
|
|
9
|
+
event.srcElement,b=a.parentNode;a.blur();b.focus()}function H(){var a=event.propertyName;if(a==="width"||a==="height"){var b=event.srcElement,c=b[a],d=parseInt(c,10);if(isNaN(d)||d<0)d=a==="width"?300:150;if(c===d){b.style[a]=d+"px";b.getContext("2d").I(b.width,b.height)}else b[a]=d}}function I(){h.detachEvent(J,I);for(var a in s){var b=s[a],c=b.firstChild,d;for(d in c)if(typeof c[d]==="function")c[d]=k;for(d in b)if(typeof b[d]==="function")b[d]=k;c.detachEvent(K,G);b.detachEvent(L,H)}h[M]=k;h[N]=
|
|
10
|
+
k;h[O]=k;h[C]=k;h[P]=k}function V(){var a=j.getElementsByTagName("script");a=a[a.length-1];return j.documentMode>=8?a.src:a.getAttribute("src",4)}function v(a){return(""+a).replace(/&/g,"&").replace(/</g,"<")}function W(a){return a.toLowerCase()}function i(a){throw new D(a);}function Q(a){var b=parseInt(a.width,10),c=parseInt(a.height,10);if(isNaN(b)||b<0)b=300;if(isNaN(c)||c<0)c=150;a.width=b;a.height=c}var k=null,r="canvas",M="CanvasRenderingContext2D",N="CanvasGradient",O="CanvasPattern",
|
|
11
|
+
C="FlashCanvas",P="G_vmlCanvasManager",K="onfocus",L="onpropertychange",F="onreadystatechange",J="onunload",w=((h[C+"Options"]||{}).swfPath||V().replace(/[^\/]+$/,""))+"flashcanvas.swf",e=new function(a){for(var b=0,c=a.length;b<c;b++)this[a[b]]=b}(["toDataURL","save","restore","scale","rotate","translate","transform","setTransform","globalAlpha","globalCompositeOperation","strokeStyle","fillStyle","createLinearGradient","createRadialGradient","createPattern","lineWidth","lineCap","lineJoin","miterLimit",
|
|
12
|
+
"shadowOffsetX","shadowOffsetY","shadowBlur","shadowColor","clearRect","fillRect","strokeRect","beginPath","closePath","moveTo","lineTo","quadraticCurveTo","bezierCurveTo","arcTo","rect","arc","fill","stroke","clip","isPointInPath","font","textAlign","textBaseline","fillText","strokeText","measureText","drawImage","createImageData","getImageData","putImageData","addColorStop","direction","resize"]),x={},n={},s={},y={};u.prototype={save:function(){this.b();this.c();this.m();this.l();this.z();this.w();
|
|
13
|
+
this.F.push([this.f,this.g,this.A,this.u,this.j,this.h,this.i,this.k,this.p,this.q,this.n,this.o,this.v,this.r,this.s]);this.a.push(e.save)},restore:function(){var a=this.F;if(a.length){a=a.pop();this.globalAlpha=a[0];this.globalCompositeOperation=a[1];this.strokeStyle=a[2];this.fillStyle=a[3];this.lineWidth=a[4];this.lineCap=a[5];this.lineJoin=a[6];this.miterLimit=a[7];this.shadowOffsetX=a[8];this.shadowOffsetY=a[9];this.shadowBlur=a[10];this.shadowColor=a[11];this.font=a[12];this.textAlign=a[13];
|
|
14
|
+
this.textBaseline=a[14]}this.a.push(e.restore)},scale:function(a,b){this.a.push(e.scale,a,b)},rotate:function(a){this.a.push(e.rotate,a)},translate:function(a,b){this.a.push(e.translate,a,b)},transform:function(a,b,c,d,f,g){this.a.push(e.transform,a,b,c,d,f,g)},setTransform:function(a,b,c,d,f,g){this.a.push(e.setTransform,a,b,c,d,f,g)},b:function(){var a=this.a;if(this.f!==this.globalAlpha){this.f=this.globalAlpha;a.push(e.globalAlpha,this.f)}if(this.g!==this.globalCompositeOperation){this.g=this.globalCompositeOperation;
|
|
15
|
+
a.push(e.globalCompositeOperation,this.g)}},m:function(){if(this.A!==this.strokeStyle){var a=this.A=this.strokeStyle;this.a.push(e.strokeStyle,typeof a==="object"?a.id:a)}},l:function(){if(this.u!==this.fillStyle){var a=this.u=this.fillStyle;this.a.push(e.fillStyle,typeof a==="object"?a.id:a)}},createLinearGradient:function(a,b,c,d){isFinite(a)&&isFinite(b)&&isFinite(c)&&isFinite(d)||i(9);this.a.push(e.createLinearGradient,a,b,c,d);return new t(this)},createRadialGradient:function(a,b,c,d,f,g){isFinite(a)&&
|
|
16
|
+
isFinite(b)&&isFinite(c)&&isFinite(d)&&isFinite(f)&&isFinite(g)||i(9);if(c<0||g<0)i(1);this.a.push(e.createRadialGradient,a,b,c,d,f,g);return new t(this)},createPattern:function(a,b){a||i(17);var c=a.tagName,d,f=this.d;if(c){c=c.toLowerCase();if(c==="img")d=a.getAttribute("src",2);else if(c===r||c==="video")return;else i(17)}else if(a.src)d=a.src;else i(17);b==="repeat"||b==="no-repeat"||b==="repeat-x"||b==="repeat-y"||b===""||b===k||i(12);this.a.push(e.createPattern,v(d),b);if(x[f]){this.e();++n[f]}return new E(this)},
|
|
17
|
+
z:function(){var a=this.a;if(this.j!==this.lineWidth){this.j=this.lineWidth;a.push(e.lineWidth,this.j)}if(this.h!==this.lineCap){this.h=this.lineCap;a.push(e.lineCap,this.h)}if(this.i!==this.lineJoin){this.i=this.lineJoin;a.push(e.lineJoin,this.i)}if(this.k!==this.miterLimit){this.k=this.miterLimit;a.push(e.miterLimit,this.k)}},c:function(){var a=this.a;if(this.p!==this.shadowOffsetX){this.p=this.shadowOffsetX;a.push(e.shadowOffsetX,this.p)}if(this.q!==this.shadowOffsetY){this.q=this.shadowOffsetY;
|
|
18
|
+
a.push(e.shadowOffsetY,this.q)}if(this.n!==this.shadowBlur){this.n=this.shadowBlur;a.push(e.shadowBlur,this.n)}if(this.o!==this.shadowColor){this.o=this.shadowColor;a.push(e.shadowColor,this.o)}},clearRect:function(a,b,c,d){this.a.push(e.clearRect,a,b,c,d)},fillRect:function(a,b,c,d){this.b();this.c();this.l();this.a.push(e.fillRect,a,b,c,d)},strokeRect:function(a,b,c,d){this.b();this.c();this.m();this.z();this.a.push(e.strokeRect,a,b,c,d)},beginPath:function(){this.a.push(e.beginPath)},closePath:function(){this.a.push(e.closePath)},
|
|
19
|
+
moveTo:function(a,b){this.a.push(e.moveTo,a,b)},lineTo:function(a,b){this.a.push(e.lineTo,a,b)},quadraticCurveTo:function(a,b,c,d){this.a.push(e.quadraticCurveTo,a,b,c,d)},bezierCurveTo:function(a,b,c,d,f,g){this.a.push(e.bezierCurveTo,a,b,c,d,f,g)},arcTo:function(a,b,c,d,f){f<0&&isFinite(f)&&i(1);this.a.push(e.arcTo,a,b,c,d,f)},rect:function(a,b,c,d){this.a.push(e.rect,a,b,c,d)},arc:function(a,b,c,d,f,g){c<0&&isFinite(c)&&i(1);this.a.push(e.arc,a,b,c,d,f,g?1:0)},fill:function(){this.b();this.c();
|
|
20
|
+
this.l();this.a.push(e.fill)},stroke:function(){this.b();this.c();this.m();this.z();this.a.push(e.stroke)},clip:function(){this.a.push(e.clip)},w:function(){var a=this.a;if(this.v!==this.font)try{var b=y[this.d];b.style.font=this.v=this.font;var c=b.currentStyle;a.push(e.font,[c.fontStyle,c.fontWeight,b.offsetHeight,c.fontFamily].join(" "))}catch(d){}if(this.r!==this.textAlign){this.r=this.textAlign;a.push(e.textAlign,this.r)}if(this.s!==this.textBaseline){this.s=this.textBaseline;a.push(e.textBaseline,
|
|
21
|
+
this.s)}if(this.t!==this.canvas.currentStyle.direction){this.t=this.canvas.currentStyle.direction;a.push(e.direction,this.t)}},fillText:function(a,b,c,d){this.b();this.l();this.c();this.w();this.a.push(e.fillText,v(a),b,c,d===void 0?Infinity:d)},strokeText:function(a,b,c,d){this.b();this.m();this.c();this.w();this.a.push(e.strokeText,v(a),b,c,d===void 0?Infinity:d)},measureText:function(a){var b=y[this.d];try{b.style.font=this.font}catch(c){}b.innerText=a.replace(/[ \n\f\r]/g,"\t");return new U(b.offsetWidth)},
|
|
22
|
+
drawImage:function(a,b,c,d,f,g,o,l,z){a||i(17);var p=a.tagName,m,q=arguments.length,R=this.d;if(p){p=p.toLowerCase();if(p==="img")m=a.getAttribute("src",2);else if(p===r||p==="video")return;else i(17)}else if(a.src)m=a.src;else i(17);this.b();this.c();m=v(m);if(q===3)this.a.push(e.drawImage,q,m,b,c);else if(q===5)this.a.push(e.drawImage,q,m,b,c,d,f);else if(q===9){if(d===0||f===0)i(1);this.a.push(e.drawImage,q,m,b,c,d,f,g,o,l,z)}else return;if(x[R]){this.e();++n[R]}},D:function(){this.globalAlpha=
|
|
23
|
+
this.f=1;this.globalCompositeOperation=this.g="source-over";this.fillStyle=this.u=this.strokeStyle=this.A="#000000";this.lineWidth=this.j=1;this.lineCap=this.h="butt";this.lineJoin=this.i="miter";this.miterLimit=this.k=10;this.shadowBlur=this.n=this.shadowOffsetY=this.q=this.shadowOffsetX=this.p=0;this.shadowColor=this.o="rgba(0, 0, 0, 0.0)";this.font=this.v="10px sans-serif";this.textAlign=this.r="start";this.textBaseline=this.s="alphabetic";this.a=[];this.F=[]},H:function(){var a=this.a;this.a=
|
|
24
|
+
[];return a},e:function(){var a=this.H();if(a.length>0)return eval(this.B.CallFunction('<invoke name="executeCommand" returntype="javascript"><arguments><string>'+a.join("�")+"</string></arguments></invoke>"))},I:function(a,b){this.e();this.D();if(a>0)this.B.width=a;if(b>0)this.B.height=b;this.a.push(e.resize,a,b)}};t.prototype={addColorStop:function(a,b){if(isNaN(a)||a<0||a>1)i(1);this.G.a.push(e.addColorStop,this.id,a,b)}};D.prototype=Error();var T={1:"INDEX_SIZE_ERR",9:"NOT_SUPPORTED_ERR",11:"INVALID_STATE_ERR",
|
|
25
|
+
12:"SYNTAX_ERR",17:"TYPE_MISMATCH_ERR",18:"SECURITY_ERR"},B={initElement:function(a){if(a.getContext)return a;var b=a.uniqueID,c="external"+b;x[b]=false;n[b]=1;Q(a);a.innerHTML='<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="'+location.protocol+'//fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="100%" height="100%" id="'+c+'"><param name="allowScriptAccess" value="always"><param name="flashvars" value="id='+c+'"><param name="wmode" value="transparent"></object><span style="margin:0;padding:0;border:0;display:inline-block;position:static;height:1em;overflow:visible;white-space:nowrap"></span>';
|
|
26
|
+
s[b]=a;var d=a.firstChild;y[b]=a.lastChild;var f=j.body.contains;if(f(a))d.movie=w;else var g=setInterval(function(){if(f(a)){clearInterval(g);d.movie=w}},0);if(j.compatMode==="BackCompat"||!h.XMLHttpRequest)y[b].style.overflow="hidden";var o=new u(a,d);a.getContext=function(l){return l==="2d"?o:k};a.toDataURL=function(l,z){(""+l).replace(/[A-Z]+/g,W)==="image/jpeg"?o.a.push(e.toDataURL,l,typeof z==="number"?z:""):o.a.push(e.toDataURL,l);return o.e()};d.attachEvent(K,G);return a},saveImage:function(a){a.firstChild.saveImage()},
|
|
27
|
+
setOptions:function(){},trigger:function(a,b){s[a].fireEvent("on"+b)},unlock:function(a,b){n[a]&&--n[a];if(b){var c=s[a],d=c.firstChild,f,g;Q(c);f=c.width;g=c.height;c.style.width=f+"px";c.style.height=g+"px";if(f>0)d.width=f;if(g>0)d.height=g;d.resize(f,g);c.attachEvent(L,H);x[a]=true}}};j.createElement(r);j.createStyleSheet().cssText=r+"{display:inline-block;overflow:hidden;width:300px;height:150px}";j.readyState==="complete"?A():j.attachEvent(F,A);h.attachEvent(J,I);if(w.indexOf(location.protocol+
|
|
28
|
+
"//"+location.host+"/")===0){var S=new ActiveXObject("Microsoft.XMLHTTP");S.open("GET",w,false);S.send(k)}h[M]=u;h[N]=t;h[O]=E;h[C]=B;h[P]={init:function(){},init_:function(){},initElement:B.initElement};keep=u.measureText}(window,document);
|
|
Binary file
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Proxy script to load a file from other domain
|
|
5
|
+
*
|
|
6
|
+
* PHP versions 4 and 5
|
|
7
|
+
*
|
|
8
|
+
* Copyright (c) 2010-2011 Shinya Muramatsu
|
|
9
|
+
*
|
|
10
|
+
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
11
|
+
* copy of this software and associated documentation files (the "Software"),
|
|
12
|
+
* to deal in the Software without restriction, including without limitation
|
|
13
|
+
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
14
|
+
* and/or sell copies of the Software, and to permit persons to whom the
|
|
15
|
+
* Software is furnished to do so, subject to the following conditions:
|
|
16
|
+
*
|
|
17
|
+
* The above copyright notice and this permission notice shall be included in
|
|
18
|
+
* all copies or substantial portions of the Software.
|
|
19
|
+
*
|
|
20
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
21
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
22
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
23
|
+
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
24
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
25
|
+
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
26
|
+
* DEALINGS IN THE SOFTWARE.
|
|
27
|
+
*
|
|
28
|
+
* @author Shinya Muramatsu <revulon@gmail.com>
|
|
29
|
+
* @copyright 2010-2011 Shinya Muramatsu
|
|
30
|
+
* @license http://www.opensource.org/licenses/mit-license.php MIT License
|
|
31
|
+
* @link http://flashcanvas.net/
|
|
32
|
+
* @link http://code.google.com/p/flashcanvas/
|
|
33
|
+
*/
|
|
34
|
+
|
|
35
|
+
// Whether we check referrer or not
|
|
36
|
+
define('CHECK_REFERRER', true);
|
|
37
|
+
|
|
38
|
+
// Check that the request is from FlashCanvas
|
|
39
|
+
if (CHECK_REFERRER) {
|
|
40
|
+
if (empty($_SERVER['HTTP_REFERER'])) {
|
|
41
|
+
exit;
|
|
42
|
+
}
|
|
43
|
+
if (!preg_match('#/flash\d*canvas\.swf$#', $_SERVER['HTTP_REFERER'])) {
|
|
44
|
+
exit;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Check that the request has a valid URL parameter
|
|
49
|
+
if (empty($_GET['url'])) {
|
|
50
|
+
exit;
|
|
51
|
+
}
|
|
52
|
+
if (!preg_match('#^https?://#', $_GET['url'])) {
|
|
53
|
+
exit;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// Percent-encode special characters in the URL
|
|
57
|
+
$search = array( '%', '#', ' ');
|
|
58
|
+
$replace = array('%25', '%23', '%20');
|
|
59
|
+
$url = str_replace($search, $replace, $_GET['url']);
|
|
60
|
+
|
|
61
|
+
// Disable compression
|
|
62
|
+
header('Content-Encoding: none');
|
|
63
|
+
|
|
64
|
+
// Load and output the file
|
|
65
|
+
if (extension_loaded('curl')) {
|
|
66
|
+
// Use cURL extension
|
|
67
|
+
$ch = curl_init($url);
|
|
68
|
+
curl_exec($ch);
|
|
69
|
+
curl_close($ch);
|
|
70
|
+
} else {
|
|
71
|
+
// Use the http:// wrapper
|
|
72
|
+
readfile($url);
|
|
73
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Save the input as a PNG file
|
|
5
|
+
*
|
|
6
|
+
* PHP versions 4 and 5
|
|
7
|
+
*
|
|
8
|
+
* Copyright (c) 2010-2011 Shinya Muramatsu
|
|
9
|
+
*
|
|
10
|
+
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
11
|
+
* copy of this software and associated documentation files (the "Software"),
|
|
12
|
+
* to deal in the Software without restriction, including without limitation
|
|
13
|
+
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
14
|
+
* and/or sell copies of the Software, and to permit persons to whom the
|
|
15
|
+
* Software is furnished to do so, subject to the following conditions:
|
|
16
|
+
*
|
|
17
|
+
* The above copyright notice and this permission notice shall be included in
|
|
18
|
+
* all copies or substantial portions of the Software.
|
|
19
|
+
*
|
|
20
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
21
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
22
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
23
|
+
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
24
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
25
|
+
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
26
|
+
* DEALINGS IN THE SOFTWARE.
|
|
27
|
+
*
|
|
28
|
+
* @author Shinya Muramatsu <revulon@gmail.com>
|
|
29
|
+
* @copyright 2010-2011 Shinya Muramatsu
|
|
30
|
+
* @license http://www.opensource.org/licenses/mit-license.php MIT License
|
|
31
|
+
* @link http://flashcanvas.net/
|
|
32
|
+
* @link http://code.google.com/p/flashcanvas/
|
|
33
|
+
*/
|
|
34
|
+
|
|
35
|
+
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|
36
|
+
// Force download
|
|
37
|
+
header('Content-Type: application/octet-stream');
|
|
38
|
+
header('Content-Disposition: attachment; filename="canvas.png"');
|
|
39
|
+
|
|
40
|
+
if (isset($_POST['dataurl'])) {
|
|
41
|
+
// Decode the base64-encoded data
|
|
42
|
+
$data = $_POST['dataurl'];
|
|
43
|
+
$data = substr($data, strpos($data, ',') + 1);
|
|
44
|
+
echo base64_decode($data);
|
|
45
|
+
} else {
|
|
46
|
+
// Output the raw data
|
|
47
|
+
readfile('php://input');
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
FlashCanvas Pro
|
|
2
|
+
===============
|
|
3
|
+
|
|
4
|
+
An implementation of the HTML5 Canvas API for Internet Explorer.
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
Description
|
|
8
|
+
-----------
|
|
9
|
+
|
|
10
|
+
FlashCanvas is a JavaScript library which adds the HTML5 Canvas support
|
|
11
|
+
to Internet Explorer. It renders shapes and images via Flash drawing
|
|
12
|
+
API, and in many cases, runs faster than other similar libraries which
|
|
13
|
+
use VML or Silverlight.
|
|
14
|
+
|
|
15
|
+
FlashCanvas Pro is a professional edition of FlashCanvas. It supports
|
|
16
|
+
almost all Canvas APIs including text, shadow and pixel manipulation.
|
|
17
|
+
Moreover, it utilizes Flash Player 10 features if available, that
|
|
18
|
+
provides better performance and compatibility.
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
Requirements
|
|
22
|
+
------------
|
|
23
|
+
|
|
24
|
+
* Microsoft Internet Explorer
|
|
25
|
+
* Adobe Flash Player 9 or later
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
Usage
|
|
29
|
+
-----
|
|
30
|
+
|
|
31
|
+
FlashCanvas Pro consists of JavaScript, Flash and PHP files:
|
|
32
|
+
|
|
33
|
+
* flashcanvas.js
|
|
34
|
+
* flash9canvas.swf
|
|
35
|
+
* flash10canvas.swf
|
|
36
|
+
* canvas2png.js (helps you to save a canvas image)
|
|
37
|
+
* proxy.php (used to load a file from other domain)
|
|
38
|
+
* save.php (used to save a canvas image)
|
|
39
|
+
|
|
40
|
+
These files can be found in the bin directory in this distribution
|
|
41
|
+
package. To install FlashCanvas Pro, copy these files into some
|
|
42
|
+
directory on a Web server, and then add the following HTML code between
|
|
43
|
+
<head> and </head> tags on your web page.
|
|
44
|
+
|
|
45
|
+
<!--[if lt IE 9]>
|
|
46
|
+
<script type="text/javascript" src="path/to/flashcanvas.js"></script>
|
|
47
|
+
<![endif]-->
|
|
48
|
+
|
|
49
|
+
That's all you have to do in most cases. For more details, please read
|
|
50
|
+
the online manual at the project page.
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
License
|
|
54
|
+
-------
|
|
55
|
+
|
|
56
|
+
FlashCanvas Pro is released under the FlashCanvas Pro License. This
|
|
57
|
+
license is based on the MIT License, but includes the following
|
|
58
|
+
modifications:
|
|
59
|
+
|
|
60
|
+
* Remove the rights to "sublicense, and/or sell copies of the Software".
|
|
61
|
+
* Permit to use "free of charge" only for non-profit use.
|
|
62
|
+
* Add conditions for commercial use.
|
|
63
|
+
|
|
64
|
+
As a result, FlashCanvas Pro is available free of charge for non-profit
|
|
65
|
+
use. If you use FlashCanvas Pro for commercial purposes, however, you
|
|
66
|
+
are required to purchase a commercial license. This commercial license
|
|
67
|
+
includes the following rights:
|
|
68
|
+
|
|
69
|
+
* The licensee can use FlashCanvas Pro as many times as needed.
|
|
70
|
+
* The licensee can download the latest version of FlashCanvas Pro as
|
|
71
|
+
many times as needed.
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
Contact
|
|
75
|
+
-------
|
|
76
|
+
|
|
77
|
+
If you have a question about FlashCanvas Pro, please utilize the
|
|
78
|
+
discussion group and issue tracker found at the project page. If you
|
|
79
|
+
need to contact us directly, you can reach us at the e-mail address.
|
|
80
|
+
|
|
81
|
+
Project page: http://flashcanvas.net/
|
|
82
|
+
E-mail: info@flashcanvas.net
|