Animate It! - Version 2.0.1

Version Description

Download this release

Release Info

Developer eleopard
Plugin Icon 128x128 Animate It!
Version 2.0.1
Comparing to
See all releases

Code changes from version 1.4.4 to 2.0.1

assets/css/animate-animo.css ADDED
@@ -0,0 +1,4467 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @charset "UTF-8";
2
+ /*
3
+ Animate.css - http://daneden.me/animate
4
+ Licensed under the MIT license
5
+
6
+ Copyright (c) 2013 Daniel Eden
7
+
8
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
11
+
12
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
13
+ */
14
+
15
+ .eds-animate {
16
+ overflow: hidden;
17
+ }
18
+
19
+ .eds-scroll-hidden, .edsanimate-sis-hidden {
20
+ opacity:0;
21
+ }
22
+
23
+ .eds-scroll-visible {
24
+ opacity:1;
25
+ }
26
+
27
+
28
+ /*Delay classes*/
29
+ .delay1 {
30
+ -webkit-animation-delay: .5s;
31
+ -moz-animation-delay: .5s;
32
+ -ms-animation-delay: .5s;
33
+ -o-animation-delay: .5s;
34
+ }
35
+
36
+ .delay2 {
37
+ -webkit-animation-delay: 1s;
38
+ -moz-animation-delay: 1s;
39
+ -ms-animation-delay: 1s;
40
+ -o-animation-delay: 1s;
41
+ }
42
+
43
+ .delay3 {
44
+ -webkit-animation-delay: 1.5s;
45
+ -moz-animation-delay: 1.5s;
46
+ -ms-animation-delay: 1.5s;
47
+ -o-animation-delay: 1.5s;
48
+ }
49
+
50
+ .delay4 {
51
+ -webkit-animation-delay: 2s;
52
+ -moz-animation-delay: 2s;
53
+ -ms-animation-delay: 2s;
54
+ -o-animation-delay: 2s;
55
+ }
56
+
57
+ .delay5 {
58
+ -webkit-animation-delay: 2.5s;
59
+ -moz-animation-delay: 2.5s;
60
+ -ms-animation-delay: 2.5s;
61
+ -o-animation-delay: 2.5s;
62
+ }
63
+
64
+ .delay6 {
65
+ -webkit-animation-delay: 3s;
66
+ -moz-animation-delay: 3s;
67
+ -ms-animation-delay: 3s;
68
+ -o-animation-delay: 3s;
69
+ }
70
+
71
+ .delay7 {
72
+ -webkit-animation-delay: 3.5s;
73
+ -moz-animation-delay: 3.5s;
74
+ -ms-animation-delay: 3.5s;
75
+ -o-animation-delay: 3.5s;
76
+ }
77
+
78
+ .delay8 {
79
+ -webkit-animation-delay: 4s;
80
+ -moz-animation-delay: 4s;
81
+ -ms-animation-delay: 4s;
82
+ -o-animation-delay: 4s;
83
+ }
84
+
85
+ .delay9 {
86
+ -webkit-animation-delay: 4.5s;
87
+ -moz-animation-delay: 4.5s;
88
+ -ms-animation-delay: 4.5s;
89
+ -o-animation-delay: 4.5s;
90
+ }
91
+
92
+ .delay10 {
93
+ -webkit-animation-delay: 5s;
94
+ -moz-animation-delay: 5s;
95
+ -ms-animation-delay: 5s;
96
+ -o-animation-delay: 5s;
97
+ }
98
+
99
+ .delay11 {
100
+ -webkit-animation-delay: 5.5s;
101
+ -moz-animation-delay: 5.5s;
102
+ -ms-animation-delay: 5.5s;
103
+ -o-animation-delay: 5.5s;
104
+ }
105
+
106
+ .delay12 {
107
+ -webkit-animation-delay: 6s;
108
+ -moz-animation-delay: 6s;
109
+ -ms-animation-delay: 6s;
110
+ -o-animation-delay: 6s;
111
+ }
112
+
113
+ /*Duration Classes*/
114
+ .duration1 {
115
+ -webkit-animation-duration: .5s !important;
116
+ -moz-animation-duration: .5s !important;
117
+ -ms-animation-duration: .5s !important;
118
+ -o-animation-duration: .5s !important;
119
+ }
120
+
121
+ .duration2 {
122
+ -webkit-animation-duration: 1s !important;
123
+ -moz-animation-duration: 1s !important;
124
+ -ms-animation-duration: 1s !important;
125
+ -o-animation-duration: 1s !important;
126
+ }
127
+
128
+ .duration3 {
129
+ -webkit-animation-duration: 1.5s !important;
130
+ -moz-animation-duration: 1.5s !important;
131
+ -ms-animation-duration: 1.5s !important;
132
+ -o-animation-duration: 1.5s !important;
133
+ }
134
+
135
+ .duration4 {
136
+ -webkit-animation-duration: 2s !important;
137
+ -moz-animation-duration: 2s !important;
138
+ -ms-animation-duration: 2s !important;
139
+ -o-animation-duration: 2s !important;
140
+ }
141
+
142
+ .duration5 {
143
+ -webkit-animation-duration: 2.5s !important;
144
+ -moz-animation-duration: 2.5s !important;
145
+ -ms-animation-duration: 2.5s !important;
146
+ -o-animation-duration: 2.5s !important;
147
+ }
148
+
149
+ .duration6 {
150
+ -webkit-animation-duration: 3s !important;
151
+ -moz-animation-duration: 3s !important;
152
+ -ms-animation-duration: 3s !important;
153
+ -o-animation-duration: 3s !important;
154
+ }
155
+
156
+ .duration7 {
157
+ -webkit-animation-duration: 3.5s !important;
158
+ -moz-animation-duration: 3.5s !important;
159
+ -ms-animation-duration: 3.5s !important;
160
+ -o-animation-duration: 3.5s !important;
161
+ }
162
+
163
+ .duration8 {
164
+ -webkit-animation-duration: 4s !important;
165
+ -moz-animation-duration: 4s !important;
166
+ -ms-animation-duration: 4s !important;
167
+ -o-animation-duration: 4s !important;
168
+ }
169
+
170
+ .duration9 {
171
+ -webkit-animation-duration: 4.5s !important;
172
+ -moz-animation-duration: 4.5s !important;
173
+ -ms-animation-duration: 4.5s !important;
174
+ -o-animation-duration: 4.5s !important;
175
+ }
176
+
177
+ .duration10 {
178
+ -webkit-animation-duration: 5s !important;
179
+ -moz-animation-duration: 5s !important;
180
+ -ms-animation-duration: 5s !important;
181
+ -o-animation-duration: 5s !important;
182
+ }
183
+
184
+ .duration11 {
185
+ -webkit-animation-duration: 5.5s !important;
186
+ -moz-animation-duration: 5.5s !important;
187
+ -ms-animation-duration: 5.5s !important;
188
+ -o-animation-duration: 5.5s !important;
189
+ }
190
+
191
+ .duration12 {
192
+ -webkit-animation-duration: 6s !important;
193
+ -moz-animation-duration: 6s !important;
194
+ -ms-animation-duration: 6s !important;
195
+ -o-animation-duration: 6s !important;
196
+ }
197
+
198
+ .duration13 {
199
+ -webkit-animation-duration: 6.5s !important;
200
+ -moz-animation-duration: 6.5s !important;
201
+ -ms-animation-duration: 6.5s !important;
202
+ -o-animation-duration: 6.5s !important;
203
+ }
204
+
205
+ .duration14 {
206
+ -webkit-animation-duration: 7s !important;
207
+ -moz-animation-duration: 7s !important;
208
+ -ms-animation-duration: 7s !important;
209
+ -o-animation-duration: 7s !important;
210
+ }
211
+
212
+ .duration15 {
213
+ -webkit-animation-duration: 7.5s !important;
214
+ -moz-animation-duration: 7.5s !important;
215
+ -ms-animation-duration: 7.5s !important;
216
+ -o-animation-duration: 7.5s !important;
217
+ }
218
+
219
+ .duration16 {
220
+ -webkit-animation-duration: 8s !important;
221
+ -moz-animation-duration: 8s !important;
222
+ -ms-animation-duration: 8s !important;
223
+ -o-animation-duration: 8s !important;
224
+ }
225
+
226
+ .duration17 {
227
+ -webkit-animation-duration: 8.5s !important;
228
+ -moz-animation-duration: 8.5s !important;
229
+ -ms-animation-duration: 8.5s !important;
230
+ -o-animation-duration: 8.5s !important;
231
+ }
232
+
233
+ .duration18 {
234
+ -webkit-animation-duration: 9s !important;
235
+ -moz-animation-duration: 9s !important;
236
+ -ms-animation-duration: 9s !important;
237
+ -o-animation-duration: 9s !important;
238
+ }
239
+
240
+ .duration19 {
241
+ -webkit-animation-duration: 9.5s !important;
242
+ -moz-animation-duration: 9.5s !important;
243
+ -ms-animation-duration: 9.5s !important;
244
+ -o-animation-duration: 9.5s !important;
245
+ }
246
+
247
+ .duration20 {
248
+ -webkit-animation-duration: 10s !important;
249
+ -moz-animation-duration: 10s !important;
250
+ -ms-animation-duration: 10s !important;
251
+ -o-animation-duration: 10s !important;
252
+ }
253
+
254
+ .animated {
255
+ /* Addresses a small issue in webkit: http://bit.ly/NEdoDq */
256
+ backface-visibility: hidden;
257
+ -o-backface-visibility: hidden;
258
+ -moz-backface-visibility: hidden;
259
+ -webkit-backface-visibility: hidden;
260
+
261
+ animation-fill-mode: both;
262
+ transform: translate3d(0, 0, 0);
263
+ perspective: 1000;
264
+
265
+ -o-animation-fill-mode: both;
266
+ -o-transform: translate3d(0, 0, 0);
267
+ -o-perspective: 1000;
268
+
269
+ -moz-animation-fill-mode: both;
270
+ -moz-transform: translate3d(0, 0, 0);
271
+ -moz-perspective: 1000;
272
+
273
+ -webkit-animation-fill-mode: both;
274
+ -webkit-transform: translate3d(0, 0, 0);
275
+ -webkit-perspective: 1000;
276
+ }
277
+
278
+ @-webkit-keyframes flash {
279
+ 0%, 50%, 100% {opacity: 1;}
280
+ 25%, 75% {opacity: 0;}
281
+ }
282
+
283
+ @-moz-keyframes flash {
284
+ 0%, 50%, 100% {opacity: 1;}
285
+ 25%, 75% {opacity: 0;}
286
+ }
287
+
288
+ @-o-keyframes flash {
289
+ 0%, 50%, 100% {opacity: 1;}
290
+ 25%, 75% {opacity: 0;}
291
+ }
292
+
293
+ @keyframes flash {
294
+ 0%, 50%, 100% {opacity: 1;}
295
+ 25%, 75% {opacity: 0;}
296
+ }
297
+
298
+ .animated.flash {
299
+ -webkit-animation-name: flash;
300
+ -moz-animation-name: flash;
301
+ -o-animation-name: flash;
302
+ animation-name: flash;
303
+ }
304
+ @-webkit-keyframes shake {
305
+ 0%, 100% {-webkit-transform: translateX(0);}
306
+ 10%, 30%, 50%, 70%, 90% {-webkit-transform: translateX(-10px);}
307
+ 20%, 40%, 60%, 80% {-webkit-transform: translateX(10px);}
308
+ }
309
+
310
+ @-moz-keyframes shake {
311
+ 0%, 100% {-moz-transform: translateX(0);}
312
+ 10%, 30%, 50%, 70%, 90% {-moz-transform: translateX(-10px);}
313
+ 20%, 40%, 60%, 80% {-moz-transform: translateX(10px);}
314
+ }
315
+
316
+ @-o-keyframes shake {
317
+ 0%, 100% {-o-transform: translateX(0);}
318
+ 10%, 30%, 50%, 70%, 90% {-o-transform: translateX(-10px);}
319
+ 20%, 40%, 60%, 80% {-o-transform: translateX(10px);}
320
+ }
321
+
322
+ @keyframes shake {
323
+ 0%, 100% {transform: translateX(0);}
324
+ 10%, 30%, 50%, 70%, 90% {transform: translateX(-10px);}
325
+ 20%, 40%, 60%, 80% {transform: translateX(10px);}
326
+ }
327
+
328
+ .animated.shake {
329
+ -webkit-animation-name: shake;
330
+ -moz-animation-name: shake;
331
+ -o-animation-name: shake;
332
+ animation-name: shake;
333
+ }
334
+ @-webkit-keyframes bounce {
335
+ 0%, 20%, 50%, 80%, 100% {-webkit-transform: translateY(0);}
336
+ 40% {-webkit-transform: translateY(-30px);}
337
+ 60% {-webkit-transform: translateY(-15px);}
338
+ }
339
+
340
+ @-moz-keyframes bounce {
341
+ 0%, 20%, 50%, 80%, 100% {-moz-transform: translateY(0);}
342
+ 40% {-moz-transform: translateY(-30px);}
343
+ 60% {-moz-transform: translateY(-15px);}
344
+ }
345
+
346
+ @-o-keyframes bounce {
347
+ 0%, 20%, 50%, 80%, 100% {-o-transform: translateY(0);}
348
+ 40% {-o-transform: translateY(-30px);}
349
+ 60% {-o-transform: translateY(-15px);}
350
+ }
351
+ @keyframes bounce {
352
+ 0%, 20%, 50%, 80%, 100% {transform: translateY(0);}
353
+ 40% {transform: translateY(-30px);}
354
+ 60% {transform: translateY(-15px);}
355
+ }
356
+
357
+ .animated.bounce {
358
+ -webkit-animation-name: bounce;
359
+ -moz-animation-name: bounce;
360
+ -o-animation-name: bounce;
361
+ animation-name: bounce;
362
+ }
363
+ @-webkit-keyframes tada {
364
+ 0% {-webkit-transform: scale(1);}
365
+ 10%, 20% {-webkit-transform: scale(0.9) rotate(-3deg);}
366
+ 30%, 50%, 70%, 90% {-webkit-transform: scale(1.1) rotate(3deg);}
367
+ 40%, 60%, 80% {-webkit-transform: scale(1.1) rotate(-3deg);}
368
+ 100% {-webkit-transform: scale(1) rotate(0);}
369
+ }
370
+
371
+ @-moz-keyframes tada {
372
+ 0% {-moz-transform: scale(1);}
373
+ 10%, 20% {-moz-transform: scale(0.9) rotate(-3deg);}
374
+ 30%, 50%, 70%, 90% {-moz-transform: scale(1.1) rotate(3deg);}
375
+ 40%, 60%, 80% {-moz-transform: scale(1.1) rotate(-3deg);}
376
+ 100% {-moz-transform: scale(1) rotate(0);}
377
+ }
378
+
379
+ @-o-keyframes tada {
380
+ 0% {-o-transform: scale(1);}
381
+ 10%, 20% {-o-transform: scale(0.9) rotate(-3deg);}
382
+ 30%, 50%, 70%, 90% {-o-transform: scale(1.1) rotate(3deg);}
383
+ 40%, 60%, 80% {-o-transform: scale(1.1) rotate(-3deg);}
384
+ 100% {-o-transform: scale(1) rotate(0);}
385
+ }
386
+
387
+ @keyframes tada {
388
+ 0% {transform: scale(1);}
389
+ 10%, 20% {transform: scale(0.9) rotate(-3deg);}
390
+ 30%, 50%, 70%, 90% {transform: scale(1.1) rotate(3deg);}
391
+ 40%, 60%, 80% {transform: scale(1.1) rotate(-3deg);}
392
+ 100% {transform: scale(1) rotate(0);}
393
+ }
394
+
395
+ .animated.tada {
396
+ -webkit-animation-name: tada;
397
+ -moz-animation-name: tada;
398
+ -o-animation-name: tada;
399
+ animation-name: tada;
400
+ }
401
+ @-webkit-keyframes swing {
402
+ 20%, 40%, 60%, 80%, 100% { -webkit-transform-origin: top center; }
403
+ 20% { -webkit-transform: rotate(15deg); }
404
+ 40% { -webkit-transform: rotate(-10deg); }
405
+ 60% { -webkit-transform: rotate(5deg); }
406
+ 80% { -webkit-transform: rotate(-5deg); }
407
+ 100% { -webkit-transform: rotate(0deg); }
408
+ }
409
+
410
+ @-moz-keyframes swing {
411
+ 20% { -moz-transform: rotate(15deg); }
412
+ 40% { -moz-transform: rotate(-10deg); }
413
+ 60% { -moz-transform: rotate(5deg); }
414
+ 80% { -moz-transform: rotate(-5deg); }
415
+ 100% { -moz-transform: rotate(0deg); }
416
+ }
417
+
418
+ @-o-keyframes swing {
419
+ 20% { -o-transform: rotate(15deg); }
420
+ 40% { -o-transform: rotate(-10deg); }
421
+ 60% { -o-transform: rotate(5deg); }
422
+ 80% { -o-transform: rotate(-5deg); }
423
+ 100% { -o-transform: rotate(0deg); }
424
+ }
425
+
426
+ @keyframes swing {
427
+ 20% { transform: rotate(15deg); }
428
+ 40% { transform: rotate(-10deg); }
429
+ 60% { transform: rotate(5deg); }
430
+ 80% { transform: rotate(-5deg); }
431
+ 100% { transform: rotate(0deg); }
432
+ }
433
+
434
+ .animated.swing {
435
+ -webkit-transform-origin: top center;
436
+ -moz-transform-origin: top center;
437
+ -o-transform-origin: top center;
438
+ transform-origin: top center;
439
+ -webkit-animation-name: swing;
440
+ -moz-animation-name: swing;
441
+ -o-animation-name: swing;
442
+ animation-name: swing;
443
+ }
444
+
445
+ @-webkit-keyframes rubberBand {
446
+ 0% {
447
+ -webkit-transform: scale3d(1, 1, 1);
448
+ transform: scale3d(1, 1, 1);
449
+ }
450
+
451
+ 30% {
452
+ -webkit-transform: scale3d(1.25, 0.75, 1);
453
+ transform: scale3d(1.25, 0.75, 1);
454
+ }
455
+
456
+ 40% {
457
+ -webkit-transform: scale3d(0.75, 1.25, 1);
458
+ transform: scale3d(0.75, 1.25, 1);
459
+ }
460
+
461
+ 50% {
462
+ -webkit-transform: scale3d(1.15, 0.85, 1);
463
+ transform: scale3d(1.15, 0.85, 1);
464
+ }
465
+
466
+ 65% {
467
+ -webkit-transform: scale3d(.95, 1.05, 1);
468
+ transform: scale3d(.95, 1.05, 1);
469
+ }
470
+
471
+ 75% {
472
+ -webkit-transform: scale3d(1.05, .95, 1);
473
+ transform: scale3d(1.05, .95, 1);
474
+ }
475
+
476
+ 100% {
477
+ -webkit-transform: scale3d(1, 1, 1);
478
+ transform: scale3d(1, 1, 1);
479
+ }
480
+ }
481
+
482
+ @keyframes rubberBand {
483
+ 0% {
484
+ -webkit-transform: scale3d(1, 1, 1);
485
+ transform: scale3d(1, 1, 1);
486
+ }
487
+
488
+ 30% {
489
+ -webkit-transform: scale3d(1.25, 0.75, 1);
490
+ transform: scale3d(1.25, 0.75, 1);
491
+ }
492
+
493
+ 40% {
494
+ -webkit-transform: scale3d(0.75, 1.25, 1);
495
+ transform: scale3d(0.75, 1.25, 1);
496
+ }
497
+
498
+ 50% {
499
+ -webkit-transform: scale3d(1.15, 0.85, 1);
500
+ transform: scale3d(1.15, 0.85, 1);
501
+ }
502
+
503
+ 65% {
504
+ -webkit-transform: scale3d(.95, 1.05, 1);
505
+ transform: scale3d(.95, 1.05, 1);
506
+ }
507
+
508
+ 75% {
509
+ -webkit-transform: scale3d(1.05, .95, 1);
510
+ transform: scale3d(1.05, .95, 1);
511
+ }
512
+
513
+ 100% {
514
+ -webkit-transform: scale3d(1, 1, 1);
515
+ transform: scale3d(1, 1, 1);
516
+ }
517
+ }
518
+
519
+ .animated.rubberBand {
520
+ -webkit-animation-name: rubberBand;
521
+ animation-name: rubberBand;
522
+ }
523
+ /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
524
+
525
+ @-webkit-keyframes wobble {
526
+ 0% { -webkit-transform: translateX(0%); }
527
+ 15% { -webkit-transform: translateX(-25%) rotate(-5deg); }
528
+ 30% { -webkit-transform: translateX(20%) rotate(3deg); }
529
+ 45% { -webkit-transform: translateX(-15%) rotate(-3deg); }
530
+ 60% { -webkit-transform: translateX(10%) rotate(2deg); }
531
+ 75% { -webkit-transform: translateX(-5%) rotate(-1deg); }
532
+ 100% { -webkit-transform: translateX(0%); }
533
+ }
534
+
535
+ @-moz-keyframes wobble {
536
+ 0% { -moz-transform: translateX(0%); }
537
+ 15% { -moz-transform: translateX(-25%) rotate(-5deg); }
538
+ 30% { -moz-transform: translateX(20%) rotate(3deg); }
539
+ 45% { -moz-transform: translateX(-15%) rotate(-3deg); }
540
+ 60% { -moz-transform: translateX(10%) rotate(2deg); }
541
+ 75% { -moz-transform: translateX(-5%) rotate(-1deg); }
542
+ 100% { -moz-transform: translateX(0%); }
543
+ }
544
+
545
+ @-o-keyframes wobble {
546
+ 0% { -o-transform: translateX(0%); }
547
+ 15% { -o-transform: translateX(-25%) rotate(-5deg); }
548
+ 30% { -o-transform: translateX(20%) rotate(3deg); }
549
+ 45% { -o-transform: translateX(-15%) rotate(-3deg); }
550
+ 60% { -o-transform: translateX(10%) rotate(2deg); }
551
+ 75% { -o-transform: translateX(-5%) rotate(-1deg); }
552
+ 100% { -o-transform: translateX(0%); }
553
+ }
554
+
555
+ @keyframes wobble {
556
+ 0% { transform: translateX(0%); }
557
+ 15% { transform: translateX(-25%) rotate(-5deg); }
558
+ 30% { transform: translateX(20%) rotate(3deg); }
559
+ 45% { transform: translateX(-15%) rotate(-3deg); }
560
+ 60% { transform: translateX(10%) rotate(2deg); }
561
+ 75% { transform: translateX(-5%) rotate(-1deg); }
562
+ 100% { transform: translateX(0%); }
563
+ }
564
+
565
+ .animated.wobble {
566
+ -webkit-animation-name: wobble;
567
+ -moz-animation-name: wobble;
568
+ -o-animation-name: wobble;
569
+ animation-name: wobble;
570
+ }
571
+
572
+ @-webkit-keyframes jello {
573
+ 0%, 11.1%, 100% {
574
+ -webkit-transform: none;
575
+ transform: none;
576
+ }
577
+
578
+ 22.2% {
579
+ -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);
580
+ transform: skewX(-12.5deg) skewY(-12.5deg);
581
+ }
582
+
583
+ 33.3% {
584
+ -webkit-transform: skewX(6.25deg) skewY(6.25deg);
585
+ transform: skewX(6.25deg) skewY(6.25deg);
586
+ }
587
+
588
+ 44.4% {
589
+ -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);
590
+ transform: skewX(-3.125deg) skewY(-3.125deg);
591
+ }
592
+
593
+ 55.5% {
594
+ -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);
595
+ transform: skewX(1.5625deg) skewY(1.5625deg);
596
+ }
597
+
598
+ 66.6% {
599
+ -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);
600
+ transform: skewX(-0.78125deg) skewY(-0.78125deg);
601
+ }
602
+
603
+ 77.7% {
604
+ -webkit-transform: skewX(0.390625deg) skewY(0.390625deg);
605
+ transform: skewX(0.390625deg) skewY(0.390625deg);
606
+ }
607
+
608
+ 88.8% {
609
+ -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg);
610
+ transform: skewX(-0.1953125deg) skewY(-0.1953125deg);
611
+ }
612
+ }
613
+
614
+ @keyframes jello {
615
+ 0%, 11.1%, 100% {
616
+ -webkit-transform: none;
617
+ transform: none;
618
+ }
619
+
620
+ 22.2% {
621
+ -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);
622
+ transform: skewX(-12.5deg) skewY(-12.5deg);
623
+ }
624
+
625
+ 33.3% {
626
+ -webkit-transform: skewX(6.25deg) skewY(6.25deg);
627
+ transform: skewX(6.25deg) skewY(6.25deg);
628
+ }
629
+
630
+ 44.4% {
631
+ -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);
632
+ transform: skewX(-3.125deg) skewY(-3.125deg);
633
+ }
634
+
635
+ 55.5% {
636
+ -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);
637
+ transform: skewX(1.5625deg) skewY(1.5625deg);
638
+ }
639
+
640
+ 66.6% {
641
+ -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);
642
+ transform: skewX(-0.78125deg) skewY(-0.78125deg);
643
+ }
644
+
645
+ 77.7% {
646
+ -webkit-transform: skewX(0.390625deg) skewY(0.390625deg);
647
+ transform: skewX(0.390625deg) skewY(0.390625deg);
648
+ }
649
+
650
+ 88.8% {
651
+ -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg);
652
+ transform: skewX(-0.1953125deg) skewY(-0.1953125deg);
653
+ }
654
+ }
655
+
656
+ .animated.jello {
657
+ -webkit-animation-name: jello;
658
+ animation-name: jello;
659
+ -webkit-transform-origin: center;
660
+ transform-origin: center;
661
+ }
662
+
663
+ /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
664
+
665
+ @-webkit-keyframes pulse {
666
+ 0% { -webkit-transform: scale(1); }
667
+ 50% { -webkit-transform: scale(1.1); }
668
+ 100% { -webkit-transform: scale(1); }
669
+ }
670
+ @-moz-keyframes pulse {
671
+ 0% { -moz-transform: scale(1); }
672
+ 50% { -moz-transform: scale(1.1); }
673
+ 100% { -moz-transform: scale(1); }
674
+ }
675
+ @-o-keyframes pulse {
676
+ 0% { -o-transform: scale(1); }
677
+ 50% { -o-transform: scale(1.1); }
678
+ 100% { -o-transform: scale(1); }
679
+ }
680
+ @keyframes pulse {
681
+ 0% { transform: scale(1); }
682
+ 50% { transform: scale(1.1); }
683
+ 100% { transform: scale(1); }
684
+ }
685
+
686
+ .animated.pulse {
687
+ -webkit-animation-name: pulse;
688
+ -moz-animation-name: pulse;
689
+ -o-animation-name: pulse;
690
+ animation-name: pulse;
691
+ }
692
+ @-webkit-keyframes flip {
693
+ 0% {
694
+ -webkit-transform: perspective(400px) rotateY(0);
695
+ -webkit-animation-timing-function: ease-out;
696
+ }
697
+ 40% {
698
+ -webkit-transform: perspective(400px) translateZ(150px) rotateY(170deg);
699
+ -webkit-animation-timing-function: ease-out;
700
+ }
701
+ 50% {
702
+ -webkit-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
703
+ -webkit-animation-timing-function: ease-in;
704
+ }
705
+ 80% {
706
+ -webkit-transform: perspective(400px) rotateY(360deg) scale(.95);
707
+ -webkit-animation-timing-function: ease-in;
708
+ }
709
+ 100% {
710
+ -webkit-transform: perspective(400px) scale(1);
711
+ -webkit-animation-timing-function: ease-in;
712
+ }
713
+ }
714
+ @-moz-keyframes flip {
715
+ 0% {
716
+ -moz-transform: perspective(400px) rotateY(0);
717
+ -moz-animation-timing-function: ease-out;
718
+ }
719
+ 40% {
720
+ -moz-transform: perspective(400px) translateZ(150px) rotateY(170deg);
721
+ -moz-animation-timing-function: ease-out;
722
+ }
723
+ 50% {
724
+ -moz-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
725
+ -moz-animation-timing-function: ease-in;
726
+ }
727
+ 80% {
728
+ -moz-transform: perspective(400px) rotateY(360deg) scale(.95);
729
+ -moz-animation-timing-function: ease-in;
730
+ }
731
+ 100% {
732
+ -moz-transform: perspective(400px) scale(1);
733
+ -moz-animation-timing-function: ease-in;
734
+ }
735
+ }
736
+ @-o-keyframes flip {
737
+ 0% {
738
+ -o-transform: perspective(400px) rotateY(0);
739
+ -o-animation-timing-function: ease-out;
740
+ }
741
+ 40% {
742
+ -o-transform: perspective(400px) translateZ(150px) rotateY(170deg);
743
+ -o-animation-timing-function: ease-out;
744
+ }
745
+ 50% {
746
+ -o-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
747
+ -o-animation-timing-function: ease-in;
748
+ }
749
+ 80% {
750
+ -o-transform: perspective(400px) rotateY(360deg) scale(.95);
751
+ -o-animation-timing-function: ease-in;
752
+ }
753
+ 100% {
754
+ -o-transform: perspective(400px) scale(1);
755
+ -o-animation-timing-function: ease-in;
756
+ }
757
+ }
758
+ @keyframes flip {
759
+ 0% {
760
+ transform: perspective(400px) rotateY(0);
761
+ animation-timing-function: ease-out;
762
+ }
763
+ 40% {
764
+ transform: perspective(400px) translateZ(150px) rotateY(170deg);
765
+ animation-timing-function: ease-out;
766
+ }
767
+ 50% {
768
+ transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
769
+ animation-timing-function: ease-in;
770
+ }
771
+ 80% {
772
+ transform: perspective(400px) rotateY(360deg) scale(.95);
773
+ animation-timing-function: ease-in;
774
+ }
775
+ 100% {
776
+ transform: perspective(400px) scale(1);
777
+ animation-timing-function: ease-in;
778
+ }
779
+ }
780
+
781
+ .animated.flip {
782
+ -webkit-backface-visibility: visible !important;
783
+ -webkit-animation-name: flip;
784
+ -moz-backface-visibility: visible !important;
785
+ -moz-animation-name: flip;
786
+ -o-backface-visibility: visible !important;
787
+ -o-animation-name: flip;
788
+ backface-visibility: visible !important;
789
+ animation-name: flip;
790
+ }
791
+ @-webkit-keyframes flipInX {
792
+ 0% {
793
+ -webkit-transform: perspective(400px) rotateX(90deg);
794
+ opacity: 0;
795
+ }
796
+
797
+ 40% {
798
+ -webkit-transform: perspective(400px) rotateX(-10deg);
799
+ }
800
+
801
+ 70% {
802
+ -webkit-transform: perspective(400px) rotateX(10deg);
803
+ }
804
+
805
+ 100% {
806
+ -webkit-transform: perspective(400px) rotateX(0deg);
807
+ opacity: 1;
808
+ }
809
+ }
810
+ @-moz-keyframes flipInX {
811
+ 0% {
812
+ -moz-transform: perspective(400px) rotateX(90deg);
813
+ opacity: 0;
814
+ }
815
+
816
+ 40% {
817
+ -moz-transform: perspective(400px) rotateX(-10deg);
818
+ }
819
+
820
+ 70% {
821
+ -moz-transform: perspective(400px) rotateX(10deg);
822
+ }
823
+
824
+ 100% {
825
+ -moz-transform: perspective(400px) rotateX(0deg);
826
+ opacity: 1;
827
+ }
828
+ }
829
+ @-o-keyframes flipInX {
830
+ 0% {
831
+ -o-transform: perspective(400px) rotateX(90deg);
832
+ opacity: 0;
833
+ }
834
+
835
+ 40% {
836
+ -o-transform: perspective(400px) rotateX(-10deg);
837
+ }
838
+
839
+ 70% {
840
+ -o-transform: perspective(400px) rotateX(10deg);
841
+ }
842
+
843
+ 100% {
844
+ -o-transform: perspective(400px) rotateX(0deg);
845
+ opacity: 1;
846
+ }
847
+ }
848
+ @keyframes flipInX {
849
+ 0% {
850
+ transform: perspective(400px) rotateX(90deg);
851
+ opacity: 0;
852
+ }
853
+
854
+ 40% {
855
+ transform: perspective(400px) rotateX(-10deg);
856
+ }
857
+
858
+ 70% {
859
+ transform: perspective(400px) rotateX(10deg);
860
+ }
861
+
862
+ 100% {
863
+ transform: perspective(400px) rotateX(0deg);
864
+ opacity: 1;
865
+ }
866
+ }
867
+
868
+ .animated.flipInX {
869
+ -webkit-backface-visibility: visible !important;
870
+ -webkit-animation-name: flipInX;
871
+ -moz-backface-visibility: visible !important;
872
+ -moz-animation-name: flipInX;
873
+ -o-backface-visibility: visible !important;
874
+ -o-animation-name: flipInX;
875
+ backface-visibility: visible !important;
876
+ animation-name: flipInX;
877
+ }
878
+ @-webkit-keyframes flipOutX {
879
+ 0% {
880
+ -webkit-transform: perspective(400px) rotateX(0deg);
881
+ opacity: 1;
882
+ }
883
+ 100% {
884
+ -webkit-transform: perspective(400px) rotateX(90deg);
885
+ opacity: 0;
886
+ }
887
+ }
888
+
889
+ @-moz-keyframes flipOutX {
890
+ 0% {
891
+ -moz-transform: perspective(400px) rotateX(0deg);
892
+ opacity: 1;
893
+ }
894
+ 100% {
895
+ -moz-transform: perspective(400px) rotateX(90deg);
896
+ opacity: 0;
897
+ }
898
+ }
899
+
900
+ @-o-keyframes flipOutX {
901
+ 0% {
902
+ -o-transform: perspective(400px) rotateX(0deg);
903
+ opacity: 1;
904
+ }
905
+ 100% {
906
+ -o-transform: perspective(400px) rotateX(90deg);
907
+ opacity: 0;
908
+ }
909
+ }
910
+
911
+ @keyframes flipOutX {
912
+ 0% {
913
+ transform: perspective(400px) rotateX(0deg);
914
+ opacity: 1;
915
+ }
916
+ 100% {
917
+ transform: perspective(400px) rotateX(90deg);
918
+ opacity: 0;
919
+ }
920
+ }
921
+
922
+ .animated.flipOutX {
923
+ -webkit-animation-name: flipOutX;
924
+ -webkit-backface-visibility: visible !important;
925
+ -moz-animation-name: flipOutX;
926
+ -moz-backface-visibility: visible !important;
927
+ -o-animation-name: flipOutX;
928
+ -o-backface-visibility: visible !important;
929
+ animation-name: flipOutX;
930
+ backface-visibility: visible !important;
931
+ }
932
+ @-webkit-keyframes flipInY {
933
+ 0% {
934
+ -webkit-transform: perspective(400px) rotateY(90deg);
935
+ opacity: 0;
936
+ }
937
+
938
+ 40% {
939
+ -webkit-transform: perspective(400px) rotateY(-10deg);
940
+ }
941
+
942
+ 70% {
943
+ -webkit-transform: perspective(400px) rotateY(10deg);
944
+ }
945
+
946
+ 100% {
947
+ -webkit-transform: perspective(400px) rotateY(0deg);
948
+ opacity: 1;
949
+ }
950
+ }
951
+ @-moz-keyframes flipInY {
952
+ 0% {
953
+ -moz-transform: perspective(400px) rotateY(90deg);
954
+ opacity: 0;
955
+ }
956
+
957
+ 40% {
958
+ -moz-transform: perspective(400px) rotateY(-10deg);
959
+ }
960
+
961
+ 70% {
962
+ -moz-transform: perspective(400px) rotateY(10deg);
963
+ }
964
+
965
+ 100% {
966
+ -moz-transform: perspective(400px) rotateY(0deg);
967
+ opacity: 1;
968
+ }
969
+ }
970
+ @-o-keyframes flipInY {
971
+ 0% {
972
+ -o-transform: perspective(400px) rotateY(90deg);
973
+ opacity: 0;
974
+ }
975
+
976
+ 40% {
977
+ -o-transform: perspective(400px) rotateY(-10deg);
978
+ }
979
+
980
+ 70% {
981
+ -o-transform: perspective(400px) rotateY(10deg);
982
+ }
983
+
984
+ 100% {
985
+ -o-transform: perspective(400px) rotateY(0deg);
986
+ opacity: 1;
987
+ }
988
+ }
989
+ @keyframes flipInY {
990
+ 0% {
991
+ transform: perspective(400px) rotateY(90deg);
992
+ opacity: 0;
993
+ }
994
+
995
+ 40% {
996
+ transform: perspective(400px) rotateY(-10deg);
997
+ }
998
+
999
+ 70% {
1000
+ transform: perspective(400px) rotateY(10deg);
1001
+ }
1002
+
1003
+ 100% {
1004
+ transform: perspective(400px) rotateY(0deg);
1005
+ opacity: 1;
1006
+ }
1007
+ }
1008
+
1009
+ .animated.flipInY {
1010
+ -webkit-backface-visibility: visible !important;
1011
+ -webkit-animation-name: flipInY;
1012
+ -moz-backface-visibility: visible !important;
1013
+ -moz-animation-name: flipInY;
1014
+ -o-backface-visibility: visible !important;
1015
+ -o-animation-name: flipInY;
1016
+ backface-visibility: visible !important;
1017
+ animation-name: flipInY;
1018
+ }
1019
+ @-webkit-keyframes flipOutY {
1020
+ 0% {
1021
+ -webkit-transform: perspective(400px) rotateY(0deg);
1022
+ opacity: 1;
1023
+ }
1024
+ 100% {
1025
+ -webkit-transform: perspective(400px) rotateY(90deg);
1026
+ opacity: 0;
1027
+ }
1028
+ }
1029
+ @-moz-keyframes flipOutY {
1030
+ 0% {
1031
+ -moz-transform: perspective(400px) rotateY(0deg);
1032
+ opacity: 1;
1033
+ }
1034
+ 100% {
1035
+ -moz-transform: perspective(400px) rotateY(90deg);
1036
+ opacity: 0;
1037
+ }
1038
+ }
1039
+ @-o-keyframes flipOutY {
1040
+ 0% {
1041
+ -o-transform: perspective(400px) rotateY(0deg);
1042
+ opacity: 1;
1043
+ }
1044
+ 100% {
1045
+ -o-transform: perspective(400px) rotateY(90deg);
1046
+ opacity: 0;
1047
+ }
1048
+ }
1049
+ @keyframes flipOutY {
1050
+ 0% {
1051
+ transform: perspective(400px) rotateY(0deg);
1052
+ opacity: 1;
1053
+ }
1054
+ 100% {
1055
+ transform: perspective(400px) rotateY(90deg);
1056
+ opacity: 0;
1057
+ }
1058
+ }
1059
+
1060
+ .animated.flipOutY {
1061
+ -webkit-backface-visibility: visible !important;
1062
+ -webkit-animation-name: flipOutY;
1063
+ -moz-backface-visibility: visible !important;
1064
+ -moz-animation-name: flipOutY;
1065
+ -o-backface-visibility: visible !important;
1066
+ -o-animation-name: flipOutY;
1067
+ backface-visibility: visible !important;
1068
+ animation-name: flipOutY;
1069
+ }
1070
+ @-webkit-keyframes fadeIn {
1071
+ 0% {opacity: 0;}
1072
+ 100% {opacity: 1;}
1073
+ }
1074
+
1075
+ @-moz-keyframes fadeIn {
1076
+ 0% {opacity: 0;}
1077
+ 100% {opacity: 1;}
1078
+ }
1079
+
1080
+ @-o-keyframes fadeIn {
1081
+ 0% {opacity: 0;}
1082
+ 100% {opacity: 1;}
1083
+ }
1084
+
1085
+ @keyframes fadeIn {
1086
+ 0% {opacity: 0;}
1087
+ 100% {opacity: 1;}
1088
+ }
1089
+
1090
+ .animated.fadeIn {
1091
+ -webkit-animation-name: fadeIn;
1092
+ -moz-animation-name: fadeIn;
1093
+ -o-animation-name: fadeIn;
1094
+ animation-name: fadeIn;
1095
+ }
1096
+ @-webkit-keyframes fadeInUp {
1097
+ 0% {
1098
+ opacity: 0;
1099
+ -webkit-transform: translateY(20px);
1100
+ }
1101
+
1102
+ 100% {
1103
+ opacity: 1;
1104
+ -webkit-transform: translateY(0);
1105
+ }
1106
+ }
1107
+
1108
+ @-moz-keyframes fadeInUp {
1109
+ 0% {
1110
+ opacity: 0;
1111
+ -moz-transform: translateY(20px);
1112
+ }
1113
+
1114
+ 100% {
1115
+ opacity: 1;
1116
+ -moz-transform: translateY(0);
1117
+ }
1118
+ }
1119
+
1120
+ @-o-keyframes fadeInUp {
1121
+ 0% {
1122
+ opacity: 0;
1123
+ -o-transform: translateY(20px);
1124
+ }
1125
+
1126
+ 100% {
1127
+ opacity: 1;
1128
+ -o-transform: translateY(0);
1129
+ }
1130
+ }
1131
+
1132
+ @keyframes fadeInUp {
1133
+ 0% {
1134
+ opacity: 0;
1135
+ transform: translateY(20px);
1136
+ }
1137
+
1138
+ 100% {
1139
+ opacity: 1;
1140
+ transform: translateY(0);
1141
+ }
1142
+ }
1143
+
1144
+ .animated.fadeInUp {
1145
+ -webkit-animation-name: fadeInUp;
1146
+ -moz-animation-name: fadeInUp;
1147
+ -o-animation-name: fadeInUp;
1148
+ animation-name: fadeInUp;
1149
+ }
1150
+ @-webkit-keyframes fadeInDown {
1151
+ 0% {
1152
+ opacity: 0;
1153
+ -webkit-transform: translateY(-20px);
1154
+ }
1155
+
1156
+ 100% {
1157
+ opacity: 1;
1158
+ -webkit-transform: translateY(0);
1159
+ }
1160
+ }
1161
+
1162
+ @-moz-keyframes fadeInDown {
1163
+ 0% {
1164
+ opacity: 0;
1165
+ -moz-transform: translateY(-20px);
1166
+ }
1167
+
1168
+ 100% {
1169
+ opacity: 1;
1170
+ -moz-transform: translateY(0);
1171
+ }
1172
+ }
1173
+
1174
+ @-o-keyframes fadeInDown {
1175
+ 0% {
1176
+ opacity: 0;
1177
+ -o-transform: translateY(-20px);
1178
+ }
1179
+
1180
+ 100% {
1181
+ opacity: 1;
1182
+ -o-transform: translateY(0);
1183
+ }
1184
+ }
1185
+
1186
+ @keyframes fadeInDown {
1187
+ 0% {
1188
+ opacity: 0;
1189
+ transform: translateY(-20px);
1190
+ }
1191
+
1192
+ 100% {
1193
+ opacity: 1;
1194
+ transform: translateY(0);
1195
+ }
1196
+ }
1197
+
1198
+ .animated.fadeInDown {
1199
+ -webkit-animation-name: fadeInDown;
1200
+ -moz-animation-name: fadeInDown;
1201
+ -o-animation-name: fadeInDown;
1202
+ animation-name: fadeInDown;
1203
+ }
1204
+ @-webkit-keyframes fadeInLeft {
1205
+ 0% {
1206
+ opacity: 0;
1207
+ -webkit-transform: translateX(-20px);
1208
+ }
1209
+
1210
+ 100% {
1211
+ opacity: 1;
1212
+ -webkit-transform: translateX(0);
1213
+ }
1214
+ }
1215
+
1216
+ @-moz-keyframes fadeInLeft {
1217
+ 0% {
1218
+ opacity: 0;
1219
+ -moz-transform: translateX(-20px);
1220
+ }
1221
+
1222
+ 100% {
1223
+ opacity: 1;
1224
+ -moz-transform: translateX(0);
1225
+ }
1226
+ }
1227
+
1228
+ @-o-keyframes fadeInLeft {
1229
+ 0% {
1230
+ opacity: 0;
1231
+ -o-transform: translateX(-20px);
1232
+ }
1233
+
1234
+ 100% {
1235
+ opacity: 1;
1236
+ -o-transform: translateX(0);
1237
+ }
1238
+ }
1239
+
1240
+ @keyframes fadeInLeft {
1241
+ 0% {
1242
+ opacity: 0;
1243
+ transform: translateX(-20px);
1244
+ }
1245
+
1246
+ 100% {
1247
+ opacity: 1;
1248
+ transform: translateX(0);
1249
+ }
1250
+ }
1251
+
1252
+ .animated.fadeInLeft {
1253
+ -webkit-animation-name: fadeInLeft;
1254
+ -moz-animation-name: fadeInLeft;
1255
+ -o-animation-name: fadeInLeft;
1256
+ animation-name: fadeInLeft;
1257
+ }
1258
+ @-webkit-keyframes fadeInRight {
1259
+ 0% {
1260
+ opacity: 0;
1261
+ -webkit-transform: translateX(20px);
1262
+ }
1263
+
1264
+ 100% {
1265
+ opacity: 1;
1266
+ -webkit-transform: translateX(0);
1267
+ }
1268
+ }
1269
+
1270
+ @-moz-keyframes fadeInRight {
1271
+ 0% {
1272
+ opacity: 0;
1273
+ -moz-transform: translateX(20px);
1274
+ }
1275
+
1276
+ 100% {
1277
+ opacity: 1;
1278
+ -moz-transform: translateX(0);
1279
+ }
1280
+ }
1281
+
1282
+ @-o-keyframes fadeInRight {
1283
+ 0% {
1284
+ opacity: 0;
1285
+ -o-transform: translateX(20px);
1286
+ }
1287
+
1288
+ 100% {
1289
+ opacity: 1;
1290
+ -o-transform: translateX(0);
1291
+ }
1292
+ }
1293
+
1294
+ @keyframes fadeInRight {
1295
+ 0% {
1296
+ opacity: 0;
1297
+ transform: translateX(20px);
1298
+ }
1299
+
1300
+ 100% {
1301
+ opacity: 1;
1302
+ transform: translateX(0);
1303
+ }
1304
+ }
1305
+
1306
+ .animated.fadeInRight {
1307
+ -webkit-animation-name: fadeInRight;
1308
+ -moz-animation-name: fadeInRight;
1309
+ -o-animation-name: fadeInRight;
1310
+ animation-name: fadeInRight;
1311
+ }
1312
+ @-webkit-keyframes fadeInUpBig {
1313
+ 0% {
1314
+ opacity: 0;
1315
+ -webkit-transform: translateY(1080px);
1316
+ }
1317
+
1318
+ 100% {
1319
+ opacity: 1;
1320
+ -webkit-transform: translateY(0);
1321
+ }
1322
+ }
1323
+
1324
+ @-moz-keyframes fadeInUpBig {
1325
+ 0% {
1326
+ opacity: 0;
1327
+ -moz-transform: translateY(1080px);
1328
+ }
1329
+
1330
+ 100% {
1331
+ opacity: 1;
1332
+ -moz-transform: translateY(0);
1333
+ }
1334
+ }
1335
+
1336
+ @-o-keyframes fadeInUpBig {
1337
+ 0% {
1338
+ opacity: 0;
1339
+ -o-transform: translateY(1080px);
1340
+ }
1341
+
1342
+ 100% {
1343
+ opacity: 1;
1344
+ -o-transform: translateY(0);
1345
+ }
1346
+ }
1347
+
1348
+ @keyframes fadeInUpBig {
1349
+ 0% {
1350
+ opacity: 0;
1351
+ transform: translateY(1080px);
1352
+ }
1353
+
1354
+ 100% {
1355
+ opacity: 1;
1356
+ transform: translateY(0);
1357
+ }
1358
+ }
1359
+
1360
+ .animated.fadeInUpBig {
1361
+ -webkit-animation-name: fadeInUpBig;
1362
+ -moz-animation-name: fadeInUpBig;
1363
+ -o-animation-name: fadeInUpBig;
1364
+ animation-name: fadeInUpBig;
1365
+ }
1366
+ @-webkit-keyframes fadeInDownBig {
1367
+ 0% {
1368
+ opacity: 0;
1369
+ -webkit-transform: translateY(-1080px);
1370
+ }
1371
+
1372
+ 100% {
1373
+ opacity: 1;
1374
+ -webkit-transform: translateY(0);
1375
+ }
1376
+ }
1377
+
1378
+ @-moz-keyframes fadeInDownBig {
1379
+ 0% {
1380
+ opacity: 0;
1381
+ -moz-transform: translateY(-1080px);
1382
+ }
1383
+
1384
+ 100% {
1385
+ opacity: 1;
1386
+ -moz-transform: translateY(0);
1387
+ }
1388
+ }
1389
+
1390
+ @-o-keyframes fadeInDownBig {
1391
+ 0% {
1392
+ opacity: 0;
1393
+ -o-transform: translateY(-1080px);
1394
+ }
1395
+
1396
+ 100% {
1397
+ opacity: 1;
1398
+ -o-transform: translateY(0);
1399
+ }
1400
+ }
1401
+
1402
+ @keyframes fadeInDownBig {
1403
+ 0% {
1404
+ opacity: 0;
1405
+ transform: translateY(-1080px);
1406
+ }
1407
+
1408
+ 100% {
1409
+ opacity: 1;
1410
+ transform: translateY(0);
1411
+ }
1412
+ }
1413
+
1414
+ .animated.fadeInDownBig {
1415
+ -webkit-animation-name: fadeInDownBig;
1416
+ -moz-animation-name: fadeInDownBig;
1417
+ -o-animation-name: fadeInDownBig;
1418
+ animation-name: fadeInDownBig;
1419
+ }
1420
+ @-webkit-keyframes fadeInLeftBig {
1421
+ 0% {
1422
+ opacity: 0;
1423
+ -webkit-transform: translateX(-2000px);
1424
+ }
1425
+
1426
+ 100% {
1427
+ opacity: 1;
1428
+ -webkit-transform: translateX(0);
1429
+ }
1430
+ }
1431
+ @-moz-keyframes fadeInLeftBig {
1432
+ 0% {
1433
+ opacity: 0;
1434
+ -moz-transform: translateX(-2000px);
1435
+ }
1436
+
1437
+ 100% {
1438
+ opacity: 1;
1439
+ -moz-transform: translateX(0);
1440
+ }
1441
+ }
1442
+ @-o-keyframes fadeInLeftBig {
1443
+ 0% {
1444
+ opacity: 0;
1445
+ -o-transform: translateX(-2000px);
1446
+ }
1447
+
1448
+ 100% {
1449
+ opacity: 1;
1450
+ -o-transform: translateX(0);
1451
+ }
1452
+ }
1453
+ @keyframes fadeInLeftBig {
1454
+ 0% {
1455
+ opacity: 0;
1456
+ transform: translateX(-2000px);
1457
+ }
1458
+
1459
+ 100% {
1460
+ opacity: 1;
1461
+ transform: translateX(0);
1462
+ }
1463
+ }
1464
+
1465
+ .animated.fadeInLeftBig {
1466
+ -webkit-animation-name: fadeInLeftBig;
1467
+ -moz-animation-name: fadeInLeftBig;
1468
+ -o-animation-name: fadeInLeftBig;
1469
+ animation-name: fadeInLeftBig;
1470
+ }
1471
+ @-webkit-keyframes fadeInRightBig {
1472
+ 0% {
1473
+ opacity: 0;
1474
+ -webkit-transform: translateX(2000px);
1475
+ }
1476
+
1477
+ 100% {
1478
+ opacity: 1;
1479
+ -webkit-transform: translateX(0);
1480
+ }
1481
+ }
1482
+
1483
+ @-moz-keyframes fadeInRightBig {
1484
+ 0% {
1485
+ opacity: 0;
1486
+ -moz-transform: translateX(2000px);
1487
+ }
1488
+
1489
+ 100% {
1490
+ opacity: 1;
1491
+ -moz-transform: translateX(0);
1492
+ }
1493
+ }
1494
+
1495
+ @-o-keyframes fadeInRightBig {
1496
+ 0% {
1497
+ opacity: 0;
1498
+ -o-transform: translateX(2000px);
1499
+ }
1500
+
1501
+ 100% {
1502
+ opacity: 1;
1503
+ -o-transform: translateX(0);
1504
+ }
1505
+ }
1506
+
1507
+ @keyframes fadeInRightBig {
1508
+ 0% {
1509
+ opacity: 0;
1510
+ transform: translateX(2000px);
1511
+ }
1512
+
1513
+ 100% {
1514
+ opacity: 1;
1515
+ transform: translateX(0);
1516
+ }
1517
+ }
1518
+
1519
+ .animated.fadeInRightBig {
1520
+ -webkit-animation-name: fadeInRightBig;
1521
+ -moz-animation-name: fadeInRightBig;
1522
+ -o-animation-name: fadeInRightBig;
1523
+ animation-name: fadeInRightBig;
1524
+ }
1525
+ @-webkit-keyframes fadeOut {
1526
+ 0% {opacity: 1;}
1527
+ 100% {opacity: 0;}
1528
+ }
1529
+
1530
+ @-moz-keyframes fadeOut {
1531
+ 0% {opacity: 1;}
1532
+ 100% {opacity: 0;}
1533
+ }
1534
+
1535
+ @-o-keyframes fadeOut {
1536
+ 0% {opacity: 1;}
1537
+ 100% {opacity: 0;}
1538
+ }
1539
+
1540
+ @keyframes fadeOut {
1541
+ 0% {opacity: 1;}
1542
+ 100% {opacity: 0;}
1543
+ }
1544
+
1545
+ .animated.fadeOut {
1546
+ -webkit-animation-name: fadeOut;
1547
+ -moz-animation-name: fadeOut;
1548
+ -o-animation-name: fadeOut;
1549
+ animation-name: fadeOut;
1550
+ }
1551
+ @-webkit-keyframes fadeOutUp {
1552
+ 0% {
1553
+ opacity: 1;
1554
+ -webkit-transform: translateY(0);
1555
+ }
1556
+
1557
+ 100% {
1558
+ opacity: 0;
1559
+ -webkit-transform: translateY(-20px);
1560
+ }
1561
+ }
1562
+ @-moz-keyframes fadeOutUp {
1563
+ 0% {
1564
+ opacity: 1;
1565
+ -moz-transform: translateY(0);
1566
+ }
1567
+
1568
+ 100% {
1569
+ opacity: 0;
1570
+ -moz-transform: translateY(-20px);
1571
+ }
1572
+ }
1573
+ @-o-keyframes fadeOutUp {
1574
+ 0% {
1575
+ opacity: 1;
1576
+ -o-transform: translateY(0);
1577
+ }
1578
+
1579
+ 100% {
1580
+ opacity: 0;
1581
+ -o-transform: translateY(-20px);
1582
+ }
1583
+ }
1584
+ @keyframes fadeOutUp {
1585
+ 0% {
1586
+ opacity: 1;
1587
+ transform: translateY(0);
1588
+ }
1589
+
1590
+ 100% {
1591
+ opacity: 0;
1592
+ transform: translateY(-20px);
1593
+ }
1594
+ }
1595
+
1596
+ .animated.fadeOutUp {
1597
+ -webkit-animation-name: fadeOutUp;
1598
+ -moz-animation-name: fadeOutUp;
1599
+ -o-animation-name: fadeOutUp;
1600
+ animation-name: fadeOutUp;
1601
+ }
1602
+ @-webkit-keyframes fadeOutDown {
1603
+ 0% {
1604
+ opacity: 1;
1605
+ -webkit-transform: translateY(0);
1606
+ }
1607
+
1608
+ 100% {
1609
+ opacity: 0;
1610
+ -webkit-transform: translateY(20px);
1611
+ }
1612
+ }
1613
+
1614
+ @-moz-keyframes fadeOutDown {
1615
+ 0% {
1616
+ opacity: 1;
1617
+ -moz-transform: translateY(0);
1618
+ }
1619
+
1620
+ 100% {
1621
+ opacity: 0;
1622
+ -moz-transform: translateY(20px);
1623
+ }
1624
+ }
1625
+
1626
+ @-o-keyframes fadeOutDown {
1627
+ 0% {
1628
+ opacity: 1;
1629
+ -o-transform: translateY(0);
1630
+ }
1631
+
1632
+ 100% {
1633
+ opacity: 0;
1634
+ -o-transform: translateY(20px);
1635
+ }
1636
+ }
1637
+
1638
+ @keyframes fadeOutDown {
1639
+ 0% {
1640
+ opacity: 1;
1641
+ transform: translateY(0);
1642
+ }
1643
+
1644
+ 100% {
1645
+ opacity: 0;
1646
+ transform: translateY(20px);
1647
+ }
1648
+ }
1649
+
1650
+ .animated.fadeOutDown {
1651
+ -webkit-animation-name: fadeOutDown;
1652
+ -moz-animation-name: fadeOutDown;
1653
+ -o-animation-name: fadeOutDown;
1654
+ animation-name: fadeOutDown;
1655
+ }
1656
+ @-webkit-keyframes fadeOutLeft {
1657
+ 0% {
1658
+ opacity: 1;
1659
+ -webkit-transform: translateX(0);
1660
+ }
1661
+
1662
+ 100% {
1663
+ opacity: 0;
1664
+ -webkit-transform: translateX(-20px);
1665
+ }
1666
+ }
1667
+
1668
+ @-moz-keyframes fadeOutLeft {
1669
+ 0% {
1670
+ opacity: 1;
1671
+ -moz-transform: translateX(0);
1672
+ }
1673
+
1674
+ 100% {
1675
+ opacity: 0;
1676
+ -moz-transform: translateX(-20px);
1677
+ }
1678
+ }
1679
+
1680
+ @-o-keyframes fadeOutLeft {
1681
+ 0% {
1682
+ opacity: 1;
1683
+ -o-transform: translateX(0);
1684
+ }
1685
+
1686
+ 100% {
1687
+ opacity: 0;
1688
+ -o-transform: translateX(-20px);
1689
+ }
1690
+ }
1691
+
1692
+ @keyframes fadeOutLeft {
1693
+ 0% {
1694
+ opacity: 1;
1695
+ transform: translateX(0);
1696
+ }
1697
+
1698
+ 100% {
1699
+ opacity: 0;
1700
+ transform: translateX(-20px);
1701
+ }
1702
+ }
1703
+
1704
+ .animated.fadeOutLeft {
1705
+ -webkit-animation-name: fadeOutLeft;
1706
+ -moz-animation-name: fadeOutLeft;
1707
+ -o-animation-name: fadeOutLeft;
1708
+ animation-name: fadeOutLeft;
1709
+ }
1710
+ @-webkit-keyframes fadeOutRight {
1711
+ 0% {
1712
+ opacity: 1;
1713
+ -webkit-transform: translateX(0);
1714
+ }
1715
+
1716
+ 100% {
1717
+ opacity: 0;
1718
+ -webkit-transform: translateX(20px);
1719
+ }
1720
+ }
1721
+
1722
+ @-moz-keyframes fadeOutRight {
1723
+ 0% {
1724
+ opacity: 1;
1725
+ -moz-transform: translateX(0);
1726
+ }
1727
+
1728
+ 100% {
1729
+ opacity: 0;
1730
+ -moz-transform: translateX(20px);
1731
+ }
1732
+ }
1733
+
1734
+ @-o-keyframes fadeOutRight {
1735
+ 0% {
1736
+ opacity: 1;
1737
+ -o-transform: translateX(0);
1738
+ }
1739
+
1740
+ 100% {
1741
+ opacity: 0;
1742
+ -o-transform: translateX(20px);
1743
+ }
1744
+ }
1745
+
1746
+ @keyframes fadeOutRight {
1747
+ 0% {
1748
+ opacity: 1;
1749
+ transform: translateX(0);
1750
+ }
1751
+
1752
+ 100% {
1753
+ opacity: 0;
1754
+ transform: translateX(20px);
1755
+ }
1756
+ }
1757
+
1758
+ .animated.fadeOutRight {
1759
+ -webkit-animation-name: fadeOutRight;
1760
+ -moz-animation-name: fadeOutRight;
1761
+ -o-animation-name: fadeOutRight;
1762
+ animation-name: fadeOutRight;
1763
+ }
1764
+ @-webkit-keyframes fadeOutUpBig {
1765
+ 0% {
1766
+ opacity: 1;
1767
+ -webkit-transform: translateY(0);
1768
+ }
1769
+
1770
+ 100% {
1771
+ opacity: 0;
1772
+ -webkit-transform: translateY(-1080px);
1773
+ }
1774
+ }
1775
+
1776
+ @-moz-keyframes fadeOutUpBig {
1777
+ 0% {
1778
+ opacity: 1;
1779
+ -moz-transform: translateY(0);
1780
+ }
1781
+
1782
+ 100% {
1783
+ opacity: 0;
1784
+ -moz-transform: translateY(-1080px);
1785
+ }
1786
+ }
1787
+
1788
+ @-o-keyframes fadeOutUpBig {
1789
+ 0% {
1790
+ opacity: 1;
1791
+ -o-transform: translateY(0);
1792
+ }
1793
+
1794
+ 100% {
1795
+ opacity: 0;
1796
+ -o-transform: translateY(-1080px);
1797
+ }
1798
+ }
1799
+
1800
+ @keyframes fadeOutUpBig {
1801
+ 0% {
1802
+ opacity: 1;
1803
+ transform: translateY(0);
1804
+ }
1805
+
1806
+ 100% {
1807
+ opacity: 0;
1808
+ transform: translateY(-1080px);
1809
+ }
1810
+ }
1811
+
1812
+ .animated.fadeOutUpBig {
1813
+ -webkit-animation-name: fadeOutUpBig;
1814
+ -moz-animation-name: fadeOutUpBig;
1815
+ -o-animation-name: fadeOutUpBig;
1816
+ animation-name: fadeOutUpBig;
1817
+ }
1818
+ @-webkit-keyframes fadeOutDownBig {
1819
+ 0% {
1820
+ opacity: 1;
1821
+ -webkit-transform: translateY(0);
1822
+ }
1823
+
1824
+ 100% {
1825
+ opacity: 0;
1826
+ -webkit-transform: translateY(1080px);
1827
+ }
1828
+ }
1829
+
1830
+ @-moz-keyframes fadeOutDownBig {
1831
+ 0% {
1832
+ opacity: 1;
1833
+ -moz-transform: translateY(0);
1834
+ }
1835
+
1836
+ 100% {
1837
+ opacity: 0;
1838
+ -moz-transform: translateY(1080px);
1839
+ }
1840
+ }
1841
+
1842
+ @-o-keyframes fadeOutDownBig {
1843
+ 0% {
1844
+ opacity: 1;
1845
+ -o-transform: translateY(0);
1846
+ }
1847
+
1848
+ 100% {
1849
+ opacity: 0;
1850
+ -o-transform: translateY(1080px);
1851
+ }
1852
+ }
1853
+
1854
+ @keyframes fadeOutDownBig {
1855
+ 0% {
1856
+ opacity: 1;
1857
+ transform: translateY(0);
1858
+ }
1859
+
1860
+ 100% {
1861
+ opacity: 0;
1862
+ transform: translateY(1080px);
1863
+ }
1864
+ }
1865
+
1866
+ .animated.fadeOutDownBig {
1867
+ -webkit-animation-name: fadeOutDownBig;
1868
+ -moz-animation-name: fadeOutDownBig;
1869
+ -o-animation-name: fadeOutDownBig;
1870
+ animation-name: fadeOutDownBig;
1871
+ }
1872
+ @-webkit-keyframes fadeOutLeftBig {
1873
+ 0% {
1874
+ opacity: 1;
1875
+ -webkit-transform: translateX(0);
1876
+ }
1877
+
1878
+ 100% {
1879
+ opacity: 0;
1880
+ -webkit-transform: translateX(-2000px);
1881
+ }
1882
+ }
1883
+
1884
+ @-moz-keyframes fadeOutLeftBig {
1885
+ 0% {
1886
+ opacity: 1;
1887
+ -moz-transform: translateX(0);
1888
+ }
1889
+
1890
+ 100% {
1891
+ opacity: 0;
1892
+ -moz-transform: translateX(-2000px);
1893
+ }
1894
+ }
1895
+
1896
+ @-o-keyframes fadeOutLeftBig {
1897
+ 0% {
1898
+ opacity: 1;
1899
+ -o-transform: translateX(0);
1900
+ }
1901
+
1902
+ 100% {
1903
+ opacity: 0;
1904
+ -o-transform: translateX(-2000px);
1905
+ }
1906
+ }
1907
+
1908
+ @keyframes fadeOutLeftBig {
1909
+ 0% {
1910
+ opacity: 1;
1911
+ transform: translateX(0);
1912
+ }
1913
+
1914
+ 100% {
1915
+ opacity: 0;
1916
+ transform: translateX(-2000px);
1917
+ }
1918
+ }
1919
+
1920
+ .animated.fadeOutLeftBig {
1921
+ -webkit-animation-name: fadeOutLeftBig;
1922
+ -moz-animation-name: fadeOutLeftBig;
1923
+ -o-animation-name: fadeOutLeftBig;
1924
+ animation-name: fadeOutLeftBig;
1925
+ }
1926
+ @-webkit-keyframes fadeOutRightBig {
1927
+ 0% {
1928
+ opacity: 1;
1929
+ -webkit-transform: translateX(0);
1930
+ }
1931
+
1932
+ 100% {
1933
+ opacity: 0;
1934
+ -webkit-transform: translateX(2000px);
1935
+ }
1936
+ }
1937
+ @-moz-keyframes fadeOutRightBig {
1938
+ 0% {
1939
+ opacity: 1;
1940
+ -moz-transform: translateX(0);
1941
+ }
1942
+
1943
+ 100% {
1944
+ opacity: 0;
1945
+ -moz-transform: translateX(2000px);
1946
+ }
1947
+ }
1948
+ @-o-keyframes fadeOutRightBig {
1949
+ 0% {
1950
+ opacity: 1;
1951
+ -o-transform: translateX(0);
1952
+ }
1953
+
1954
+ 100% {
1955
+ opacity: 0;
1956
+ -o-transform: translateX(2000px);
1957
+ }
1958
+ }
1959
+ @keyframes fadeOutRightBig {
1960
+ 0% {
1961
+ opacity: 1;
1962
+ transform: translateX(0);
1963
+ }
1964
+
1965
+ 100% {
1966
+ opacity: 0;
1967
+ transform: translateX(2000px);
1968
+ }
1969
+ }
1970
+
1971
+ .animated.fadeOutRightBig {
1972
+ -webkit-animation-name: fadeOutRightBig;
1973
+ -moz-animation-name: fadeOutRightBig;
1974
+ -o-animation-name: fadeOutRightBig;
1975
+ animation-name: fadeOutRightBig;
1976
+ }
1977
+ @-webkit-keyframes bounceIn {
1978
+ 0% {
1979
+ opacity: 0;
1980
+ -webkit-transform: scale(.3);
1981
+ }
1982
+
1983
+ 50% {
1984
+ opacity: 1;
1985
+ -webkit-transform: scale(1.05);
1986
+ }
1987
+
1988
+ 70% {
1989
+ -webkit-transform: scale(.9);
1990
+ }
1991
+
1992
+ 100% {
1993
+ -webkit-transform: scale(1);
1994
+ }
1995
+ }
1996
+
1997
+ @-moz-keyframes bounceIn {
1998
+ 0% {
1999
+ opacity: 0;
2000
+ -moz-transform: scale(.3);
2001
+ }
2002
+
2003
+ 50% {
2004
+ opacity: 1;
2005
+ -moz-transform: scale(1.05);
2006
+ }
2007
+
2008
+ 70% {
2009
+ -moz-transform: scale(.9);
2010
+ }
2011
+
2012
+ 100% {
2013
+ -moz-transform: scale(1);
2014
+ }
2015
+ }
2016
+
2017
+ @-o-keyframes bounceIn {
2018
+ 0% {
2019
+ opacity: 0;
2020
+ -o-transform: scale(.3);
2021
+ }
2022
+
2023
+ 50% {
2024
+ opacity: 1;
2025
+ -o-transform: scale(1.05);
2026
+ }
2027
+
2028
+ 70% {
2029
+ -o-transform: scale(.9);
2030
+ }
2031
+
2032
+ 100% {
2033
+ -o-transform: scale(1);
2034
+ }
2035
+ }
2036
+
2037
+ @keyframes bounceIn {
2038
+ 0% {
2039
+ opacity: 0;
2040
+ transform: scale(.3);
2041
+ }
2042
+
2043
+ 50% {
2044
+ opacity: 1;
2045
+ transform: scale(1.05);
2046
+ }
2047
+
2048
+ 70% {
2049
+ transform: scale(.9);
2050
+ }
2051
+
2052
+ 100% {
2053
+ transform: scale(1);
2054
+ }
2055
+ }
2056
+
2057
+ .animated.bounceIn {
2058
+ -webkit-animation-name: bounceIn;
2059
+ -moz-animation-name: bounceIn;
2060
+ -o-animation-name: bounceIn;
2061
+ animation-name: bounceIn;
2062
+ }
2063
+ @-webkit-keyframes bounceInUp {
2064
+ 0% {
2065
+ opacity: 0;
2066
+ -webkit-transform: translateY(1080px);
2067
+ }
2068
+
2069
+ 60% {
2070
+ opacity: 1;
2071
+ -webkit-transform: translateY(-30px);
2072
+ }
2073
+
2074
+ 80% {
2075
+ -webkit-transform: translateY(10px);
2076
+ }
2077
+
2078
+ 100% {
2079
+ -webkit-transform: translateY(0);
2080
+ }
2081
+ }
2082
+ @-moz-keyframes bounceInUp {
2083
+ 0% {
2084
+ opacity: 0;
2085
+ -moz-transform: translateY(1080px);
2086
+ }
2087
+
2088
+ 60% {
2089
+ opacity: 1;
2090
+ -moz-transform: translateY(-30px);
2091
+ }
2092
+
2093
+ 80% {
2094
+ -moz-transform: translateY(10px);
2095
+ }
2096
+
2097
+ 100% {
2098
+ -moz-transform: translateY(0);
2099
+ }
2100
+ }
2101
+
2102
+ @-o-keyframes bounceInUp {
2103
+ 0% {
2104
+ opacity: 0;
2105
+ -o-transform: translateY(1080px);
2106
+ }
2107
+
2108
+ 60% {
2109
+ opacity: 1;
2110
+ -o-transform: translateY(-30px);
2111
+ }
2112
+
2113
+ 80% {
2114
+ -o-transform: translateY(10px);
2115
+ }
2116
+
2117
+ 100% {
2118
+ -o-transform: translateY(0);
2119
+ }
2120
+ }
2121
+
2122
+ @keyframes bounceInUp {
2123
+ 0% {
2124
+ opacity: 0;
2125
+ transform: translateY(1080px);
2126
+ }
2127
+
2128
+ 60% {
2129
+ opacity: 1;
2130
+ transform: translateY(-30px);
2131
+ }
2132
+
2133
+ 80% {
2134
+ transform: translateY(10px);
2135
+ }
2136
+
2137
+ 100% {
2138
+ transform: translateY(0);
2139
+ }
2140
+ }
2141
+
2142
+ .animated.bounceInUp {
2143
+ -webkit-animation-name: bounceInUp;
2144
+ -moz-animation-name: bounceInUp;
2145
+ -o-animation-name: bounceInUp;
2146
+ animation-name: bounceInUp;
2147
+ }
2148
+ @-webkit-keyframes bounceInDown {
2149
+ 0% {
2150
+ opacity: 0;
2151
+ -webkit-transform: translateY(-1080px);
2152
+ }
2153
+
2154
+ 60% {
2155
+ opacity: 1;
2156
+ -webkit-transform: translateY(30px);
2157
+ }
2158
+
2159
+ 80% {
2160
+ -webkit-transform: translateY(-10px);
2161
+ }
2162
+
2163
+ 100% {
2164
+ -webkit-transform: translateY(0);
2165
+ }
2166
+ }
2167
+
2168
+ @-moz-keyframes bounceInDown {
2169
+ 0% {
2170
+ opacity: 0;
2171
+ -moz-transform: translateY(-1080px);
2172
+ }
2173
+
2174
+ 60% {
2175
+ opacity: 1;
2176
+ -moz-transform: translateY(30px);
2177
+ }
2178
+
2179
+ 80% {
2180
+ -moz-transform: translateY(-10px);
2181
+ }
2182
+
2183
+ 100% {
2184
+ -moz-transform: translateY(0);
2185
+ }
2186
+ }
2187
+
2188
+ @-o-keyframes bounceInDown {
2189
+ 0% {
2190
+ opacity: 0;
2191
+ -o-transform: translateY(-1080px);
2192
+ }
2193
+
2194
+ 60% {
2195
+ opacity: 1;
2196
+ -o-transform: translateY(30px);
2197
+ }
2198
+
2199
+ 80% {
2200
+ -o-transform: translateY(-10px);
2201
+ }
2202
+
2203
+ 100% {
2204
+ -o-transform: translateY(0);
2205
+ }
2206
+ }
2207
+
2208
+ @keyframes bounceInDown {
2209
+ 0% {
2210
+ opacity: 0;
2211
+ transform: translateY(-1080px);
2212
+ }
2213
+
2214
+ 60% {
2215
+ opacity: 1;
2216
+ transform: translateY(30px);
2217
+ }
2218
+
2219
+ 80% {
2220
+ transform: translateY(-10px);
2221
+ }
2222
+
2223
+ 100% {
2224
+ transform: translateY(0);
2225
+ }
2226
+ }
2227
+
2228
+ .animated.bounceInDown {
2229
+ -webkit-animation-name: bounceInDown;
2230
+ -moz-animation-name: bounceInDown;
2231
+ -o-animation-name: bounceInDown;
2232
+ animation-name: bounceInDown;
2233
+ }
2234
+ @-webkit-keyframes bounceInLeft {
2235
+ 0% {
2236
+ opacity: 0;
2237
+ -webkit-transform: translateX(-2000px);
2238
+ }
2239
+
2240
+ 60% {
2241
+ opacity: 1;
2242
+ -webkit-transform: translateX(30px);
2243
+ }
2244
+
2245
+ 80% {
2246
+ -webkit-transform: translateX(-10px);
2247
+ }
2248
+
2249
+ 100% {
2250
+ -webkit-transform: translateX(0);
2251
+ }
2252
+ }
2253
+
2254
+ @-moz-keyframes bounceInLeft {
2255
+ 0% {
2256
+ opacity: 0;
2257
+ -moz-transform: translateX(-2000px);
2258
+ }
2259
+
2260
+ 60% {
2261
+ opacity: 1;
2262
+ -moz-transform: translateX(30px);
2263
+ }
2264
+
2265
+ 80% {
2266
+ -moz-transform: translateX(-10px);
2267
+ }
2268
+
2269
+ 100% {
2270
+ -moz-transform: translateX(0);
2271
+ }
2272
+ }
2273
+
2274
+ @-o-keyframes bounceInLeft {
2275
+ 0% {
2276
+ opacity: 0;
2277
+ -o-transform: translateX(-2000px);
2278
+ }
2279
+
2280
+ 60% {
2281
+ opacity: 1;
2282
+ -o-transform: translateX(30px);
2283
+ }
2284
+
2285
+ 80% {
2286
+ -o-transform: translateX(-10px);
2287
+ }
2288
+
2289
+ 100% {
2290
+ -o-transform: translateX(0);
2291
+ }
2292
+ }
2293
+
2294
+ @keyframes bounceInLeft {
2295
+ 0% {
2296
+ opacity: 0;
2297
+ transform: translateX(-2000px);
2298
+ }
2299
+
2300
+ 60% {
2301
+ opacity: 1;
2302
+ transform: translateX(30px);
2303
+ }
2304
+
2305
+ 80% {
2306
+ transform: translateX(-10px);
2307
+ }
2308
+
2309
+ 100% {
2310
+ transform: translateX(0);
2311
+ }
2312
+ }
2313
+
2314
+ .animated.bounceInLeft {
2315
+ -webkit-animation-name: bounceInLeft;
2316
+ -moz-animation-name: bounceInLeft;
2317
+ -o-animation-name: bounceInLeft;
2318
+ animation-name: bounceInLeft;
2319
+ }
2320
+ @-webkit-keyframes bounceInRight {
2321
+ 0% {
2322
+ opacity: 0;
2323
+ -webkit-transform: translateX(2000px);
2324
+ }
2325
+
2326
+ 60% {
2327
+ opacity: 1;
2328
+ -webkit-transform: translateX(-30px);
2329
+ }
2330
+
2331
+ 80% {
2332
+ -webkit-transform: translateX(10px);
2333
+ }
2334
+
2335
+ 100% {
2336
+ -webkit-transform: translateX(0);
2337
+ }
2338
+ }
2339
+
2340
+ @-moz-keyframes bounceInRight {
2341
+ 0% {
2342
+ opacity: 0;
2343
+ -moz-transform: translateX(2000px);
2344
+ }
2345
+
2346
+ 60% {
2347
+ opacity: 1;
2348
+ -moz-transform: translateX(-30px);
2349
+ }
2350
+
2351
+ 80% {
2352
+ -moz-transform: translateX(10px);
2353
+ }
2354
+
2355
+ 100% {
2356
+ -moz-transform: translateX(0);
2357
+ }
2358
+ }
2359
+
2360
+ @-o-keyframes bounceInRight {
2361
+ 0% {
2362
+ opacity: 0;
2363
+ -o-transform: translateX(2000px);
2364
+ }
2365
+
2366
+ 60% {
2367
+ opacity: 1;
2368
+ -o-transform: translateX(-30px);
2369
+ }
2370
+
2371
+ 80% {
2372
+ -o-transform: translateX(10px);
2373
+ }
2374
+
2375
+ 100% {
2376
+ -o-transform: translateX(0);
2377
+ }
2378
+ }
2379
+
2380
+ @keyframes bounceInRight {
2381
+ 0% {
2382
+ opacity: 0;
2383
+ transform: translateX(2000px);
2384
+ }
2385
+
2386
+ 60% {
2387
+ opacity: 1;
2388
+ transform: translateX(-30px);
2389
+ }
2390
+
2391
+ 80% {
2392
+ transform: translateX(10px);
2393
+ }
2394
+
2395
+ 100% {
2396
+ transform: translateX(0);
2397
+ }
2398
+ }
2399
+
2400
+ .animated.bounceInRight {
2401
+ -webkit-animation-name: bounceInRight;
2402
+ -moz-animation-name: bounceInRight;
2403
+ -o-animation-name: bounceInRight;
2404
+ animation-name: bounceInRight;
2405
+ }
2406
+ @-webkit-keyframes bounceOut {
2407
+ 0% {
2408
+ -webkit-transform: scale(1);
2409
+ }
2410
+
2411
+ 25% {
2412
+ -webkit-transform: scale(.95);
2413
+ }
2414
+
2415
+ 50% {
2416
+ opacity: 1;
2417
+ -webkit-transform: scale(1.1);
2418
+ }
2419
+
2420
+ 100% {
2421
+ opacity: 0;
2422
+ -webkit-transform: scale(.3);
2423
+ }
2424
+ }
2425
+
2426
+ @-moz-keyframes bounceOut {
2427
+ 0% {
2428
+ -moz-transform: scale(1);
2429
+ }
2430
+
2431
+ 25% {
2432
+ -moz-transform: scale(.95);
2433
+ }
2434
+
2435
+ 50% {
2436
+ opacity: 1;
2437
+ -moz-transform: scale(1.1);
2438
+ }
2439
+
2440
+ 100% {
2441
+ opacity: 0;
2442
+ -moz-transform: scale(.3);
2443
+ }
2444
+ }
2445
+
2446
+ @-o-keyframes bounceOut {
2447
+ 0% {
2448
+ -o-transform: scale(1);
2449
+ }
2450
+
2451
+ 25% {
2452
+ -o-transform: scale(.95);
2453
+ }
2454
+
2455
+ 50% {
2456
+ opacity: 1;
2457
+ -o-transform: scale(1.1);
2458
+ }
2459
+
2460
+ 100% {
2461
+ opacity: 0;
2462
+ -o-transform: scale(.3);
2463
+ }
2464
+ }
2465
+
2466
+ @keyframes bounceOut {
2467
+ 0% {
2468
+ transform: scale(1);
2469
+ }
2470
+
2471
+ 25% {
2472
+ transform: scale(.95);
2473
+ }
2474
+
2475
+ 50% {
2476
+ opacity: 1;
2477
+ transform: scale(1.1);
2478
+ }
2479
+
2480
+ 100% {
2481
+ opacity: 0;
2482
+ transform: scale(.3);
2483
+ }
2484
+ }
2485
+
2486
+ .animated.bounceOut {
2487
+ -webkit-animation-name: bounceOut;
2488
+ -moz-animation-name: bounceOut;
2489
+ -o-animation-name: bounceOut;
2490
+ animation-name: bounceOut;
2491
+ }
2492
+ @-webkit-keyframes bounceOutUp {
2493
+ 0% {
2494
+ -webkit-transform: translateY(0);
2495
+ }
2496
+
2497
+ 20% {
2498
+ opacity: 1;
2499
+ -webkit-transform: translateY(20px);
2500
+ }
2501
+
2502
+ 100% {
2503
+ opacity: 0;
2504
+ -webkit-transform: translateY(-1080px);
2505
+ }
2506
+ }
2507
+
2508
+ @-moz-keyframes bounceOutUp {
2509
+ 0% {
2510
+ -moz-transform: translateY(0);
2511
+ }
2512
+
2513
+ 20% {
2514
+ opacity: 1;
2515
+ -moz-transform: translateY(20px);
2516
+ }
2517
+
2518
+ 100% {
2519
+ opacity: 0;
2520
+ -moz-transform: translateY(-1080px);
2521
+ }
2522
+ }
2523
+
2524
+ @-o-keyframes bounceOutUp {
2525
+ 0% {
2526
+ -o-transform: translateY(0);
2527
+ }
2528
+
2529
+ 20% {
2530
+ opacity: 1;
2531
+ -o-transform: translateY(20px);
2532
+ }
2533
+
2534
+ 100% {
2535
+ opacity: 0;
2536
+ -o-transform: translateY(-1080px);
2537
+ }
2538
+ }
2539
+
2540
+ @keyframes bounceOutUp {
2541
+ 0% {
2542
+ transform: translateY(0);
2543
+ }
2544
+
2545
+ 20% {
2546
+ opacity: 1;
2547
+ transform: translateY(20px);
2548
+ }
2549
+
2550
+ 100% {
2551
+ opacity: 0;
2552
+ transform: translateY(-1080px);
2553
+ }
2554
+ }
2555
+
2556
+ .animated.bounceOutUp {
2557
+ -webkit-animation-name: bounceOutUp;
2558
+ -moz-animation-name: bounceOutUp;
2559
+ -o-animation-name: bounceOutUp;
2560
+ animation-name: bounceOutUp;
2561
+ }
2562
+ @-webkit-keyframes bounceOutDown {
2563
+ 0% {
2564
+ -webkit-transform: translateY(0);
2565
+ }
2566
+
2567
+ 20% {
2568
+ opacity: 1;
2569
+ -webkit-transform: translateY(-20px);
2570
+ }
2571
+
2572
+ 100% {
2573
+ opacity: 0;
2574
+ -webkit-transform: translateY(1080px);
2575
+ }
2576
+ }
2577
+
2578
+ @-moz-keyframes bounceOutDown {
2579
+ 0% {
2580
+ -moz-transform: translateY(0);
2581
+ }
2582
+
2583
+ 20% {
2584
+ opacity: 1;
2585
+ -moz-transform: translateY(-20px);
2586
+ }
2587
+
2588
+ 100% {
2589
+ opacity: 0;
2590
+ -moz-transform: translateY(1080px);
2591
+ }
2592
+ }
2593
+
2594
+ @-o-keyframes bounceOutDown {
2595
+ 0% {
2596
+ -o-transform: translateY(0);
2597
+ }
2598
+
2599
+ 20% {
2600
+ opacity: 1;
2601
+ -o-transform: translateY(-20px);
2602
+ }
2603
+
2604
+ 100% {
2605
+ opacity: 0;
2606
+ -o-transform: translateY(1080px);
2607
+ }
2608
+ }
2609
+
2610
+ @keyframes bounceOutDown {
2611
+ 0% {
2612
+ transform: translateY(0);
2613
+ }
2614
+
2615
+ 20% {
2616
+ opacity: 1;
2617
+ transform: translateY(-20px);
2618
+ }
2619
+
2620
+ 100% {
2621
+ opacity: 0;
2622
+ transform: translateY(1080px);
2623
+ }
2624
+ }
2625
+
2626
+ .animated.bounceOutDown {
2627
+ -webkit-animation-name: bounceOutDown;
2628
+ -moz-animation-name: bounceOutDown;
2629
+ -o-animation-name: bounceOutDown;
2630
+ animation-name: bounceOutDown;
2631
+ }
2632
+ @-webkit-keyframes bounceOutLeft {
2633
+ 0% {
2634
+ -webkit-transform: translateX(0);
2635
+ }
2636
+
2637
+ 20% {
2638
+ opacity: 1;
2639
+ -webkit-transform: translateX(20px);
2640
+ }
2641
+
2642
+ 100% {
2643
+ opacity: 0;
2644
+ -webkit-transform: translateX(-2000px);
2645
+ }
2646
+ }
2647
+
2648
+ @-moz-keyframes bounceOutLeft {
2649
+ 0% {
2650
+ -moz-transform: translateX(0);
2651
+ }
2652
+
2653
+ 20% {
2654
+ opacity: 1;
2655
+ -moz-transform: translateX(20px);
2656
+ }
2657
+
2658
+ 100% {
2659
+ opacity: 0;
2660
+ -moz-transform: translateX(-2000px);
2661
+ }
2662
+ }
2663
+
2664
+ @-o-keyframes bounceOutLeft {
2665
+ 0% {
2666
+ -o-transform: translateX(0);
2667
+ }
2668
+
2669
+ 20% {
2670
+ opacity: 1;
2671
+ -o-transform: translateX(20px);
2672
+ }
2673
+
2674
+ 100% {
2675
+ opacity: 0;
2676
+ -o-transform: translateX(-2000px);
2677
+ }
2678
+ }
2679
+
2680
+ @keyframes bounceOutLeft {
2681
+ 0% {
2682
+ transform: translateX(0);
2683
+ }
2684
+
2685
+ 20% {
2686
+ opacity: 1;
2687
+ transform: translateX(20px);
2688
+ }
2689
+
2690
+ 100% {
2691
+ opacity: 0;
2692
+ transform: translateX(-2000px);
2693
+ }
2694
+ }
2695
+
2696
+ .animated.bounceOutLeft {
2697
+ -webkit-animation-name: bounceOutLeft;
2698
+ -moz-animation-name: bounceOutLeft;
2699
+ -o-animation-name: bounceOutLeft;
2700
+ animation-name: bounceOutLeft;
2701
+ }
2702
+ @-webkit-keyframes bounceOutRight {
2703
+ 0% {
2704
+ -webkit-transform: translateX(0);
2705
+ }
2706
+
2707
+ 20% {
2708
+ opacity: 1;
2709
+ -webkit-transform: translateX(-20px);
2710
+ }
2711
+
2712
+ 100% {
2713
+ opacity: 0;
2714
+ -webkit-transform: translateX(2000px);
2715
+ }
2716
+ }
2717
+
2718
+ @-moz-keyframes bounceOutRight {
2719
+ 0% {
2720
+ -moz-transform: translateX(0);
2721
+ }
2722
+
2723
+ 20% {
2724
+ opacity: 1;
2725
+ -moz-transform: translateX(-20px);
2726
+ }
2727
+
2728
+ 100% {
2729
+ opacity: 0;
2730
+ -moz-transform: translateX(2000px);
2731
+ }
2732
+ }
2733
+
2734
+ @-o-keyframes bounceOutRight {
2735
+ 0% {
2736
+ -o-transform: translateX(0);
2737
+ }
2738
+
2739
+ 20% {
2740
+ opacity: 1;
2741
+ -o-transform: translateX(-20px);
2742
+ }
2743
+
2744
+ 100% {
2745
+ opacity: 0;
2746
+ -o-transform: translateX(2000px);
2747
+ }
2748
+ }
2749
+
2750
+ @keyframes bounceOutRight {
2751
+ 0% {
2752
+ transform: translateX(0);
2753
+ }
2754
+
2755
+ 20% {
2756
+ opacity: 1;
2757
+ transform: translateX(-20px);
2758
+ }
2759
+
2760
+ 100% {
2761
+ opacity: 0;
2762
+ transform: translateX(2000px);
2763
+ }
2764
+ }
2765
+
2766
+ .animated.bounceOutRight {
2767
+ -webkit-animation-name: bounceOutRight;
2768
+ -moz-animation-name: bounceOutRight;
2769
+ -o-animation-name: bounceOutRight;
2770
+ animation-name: bounceOutRight;
2771
+ }
2772
+ @-webkit-keyframes rotateIn {
2773
+ 0% {
2774
+ -webkit-transform-origin: center center;
2775
+ -webkit-transform: rotate(-200deg);
2776
+ opacity: 0;
2777
+ }
2778
+
2779
+ 100% {
2780
+ -webkit-transform-origin: center center;
2781
+ -webkit-transform: rotate(0);
2782
+ opacity: 1;
2783
+ }
2784
+ }
2785
+ @-moz-keyframes rotateIn {
2786
+ 0% {
2787
+ -moz-transform-origin: center center;
2788
+ -moz-transform: rotate(-200deg);
2789
+ opacity: 0;
2790
+ }
2791
+
2792
+ 100% {
2793
+ -moz-transform-origin: center center;
2794
+ -moz-transform: rotate(0);
2795
+ opacity: 1;
2796
+ }
2797
+ }
2798
+ @-o-keyframes rotateIn {
2799
+ 0% {
2800
+ -o-transform-origin: center center;
2801
+ -o-transform: rotate(-200deg);
2802
+ opacity: 0;
2803
+ }
2804
+
2805
+ 100% {
2806
+ -o-transform-origin: center center;
2807
+ -o-transform: rotate(0);
2808
+ opacity: 1;
2809
+ }
2810
+ }
2811
+ @keyframes rotateIn {
2812
+ 0% {
2813
+ transform-origin: center center;
2814
+ transform: rotate(-200deg);
2815
+ opacity: 0;
2816
+ }
2817
+
2818
+ 100% {
2819
+ transform-origin: center center;
2820
+ transform: rotate(0);
2821
+ opacity: 1;
2822
+ }
2823
+ }
2824
+
2825
+ .animated.rotateIn {
2826
+ -webkit-animation-name: rotateIn;
2827
+ -moz-animation-name: rotateIn;
2828
+ -o-animation-name: rotateIn;
2829
+ animation-name: rotateIn;
2830
+ }
2831
+ @-webkit-keyframes rotateInUpLeft {
2832
+ 0% {
2833
+ -webkit-transform-origin: left bottom;
2834
+ -webkit-transform: rotate(90deg);
2835
+ opacity: 0;
2836
+ }
2837
+
2838
+ 100% {
2839
+ -webkit-transform-origin: left bottom;
2840
+ -webkit-transform: rotate(0);
2841
+ opacity: 1;
2842
+ }
2843
+ }
2844
+
2845
+ @-moz-keyframes rotateInUpLeft {
2846
+ 0% {
2847
+ -moz-transform-origin: left bottom;
2848
+ -moz-transform: rotate(90deg);
2849
+ opacity: 0;
2850
+ }
2851
+
2852
+ 100% {
2853
+ -moz-transform-origin: left bottom;
2854
+ -moz-transform: rotate(0);
2855
+ opacity: 1;
2856
+ }
2857
+ }
2858
+
2859
+ @-o-keyframes rotateInUpLeft {
2860
+ 0% {
2861
+ -o-transform-origin: left bottom;
2862
+ -o-transform: rotate(90deg);
2863
+ opacity: 0;
2864
+ }
2865
+
2866
+ 100% {
2867
+ -o-transform-origin: left bottom;
2868
+ -o-transform: rotate(0);
2869
+ opacity: 1;
2870
+ }
2871
+ }
2872
+
2873
+ @keyframes rotateInUpLeft {
2874
+ 0% {
2875
+ transform-origin: left bottom;
2876
+ transform: rotate(90deg);
2877
+ opacity: 0;
2878
+ }
2879
+
2880
+ 100% {
2881
+ transform-origin: left bottom;
2882
+ transform: rotate(0);
2883
+ opacity: 1;
2884
+ }
2885
+ }
2886
+
2887
+ .animated.rotateInUpLeft {
2888
+ -webkit-animation-name: rotateInUpLeft;
2889
+ -moz-animation-name: rotateInUpLeft;
2890
+ -o-animation-name: rotateInUpLeft;
2891
+ animation-name: rotateInUpLeft;
2892
+ }
2893
+ @-webkit-keyframes rotateInDownLeft {
2894
+ 0% {
2895
+ -webkit-transform-origin: left bottom;
2896
+ -webkit-transform: rotate(-90deg);
2897
+ opacity: 0;
2898
+ }
2899
+
2900
+ 100% {
2901
+ -webkit-transform-origin: left bottom;
2902
+ -webkit-transform: rotate(0);
2903
+ opacity: 1;
2904
+ }
2905
+ }
2906
+
2907
+ @-moz-keyframes rotateInDownLeft {
2908
+ 0% {
2909
+ -moz-transform-origin: left bottom;
2910
+ -moz-transform: rotate(-90deg);
2911
+ opacity: 0;
2912
+ }
2913
+
2914
+ 100% {
2915
+ -moz-transform-origin: left bottom;
2916
+ -moz-transform: rotate(0);
2917
+ opacity: 1;
2918
+ }
2919
+ }
2920
+
2921
+ @-o-keyframes rotateInDownLeft {
2922
+ 0% {
2923
+ -o-transform-origin: left bottom;
2924
+ -o-transform: rotate(-90deg);
2925
+ opacity: 0;
2926
+ }
2927
+
2928
+ 100% {
2929
+ -o-transform-origin: left bottom;
2930
+ -o-transform: rotate(0);
2931
+ opacity: 1;
2932
+ }
2933
+ }
2934
+
2935
+ @keyframes rotateInDownLeft {
2936
+ 0% {
2937
+ transform-origin: left bottom;
2938
+ transform: rotate(-90deg);
2939
+ opacity: 0;
2940
+ }
2941
+
2942
+ 100% {
2943
+ transform-origin: left bottom;
2944
+ transform: rotate(0);
2945
+ opacity: 1;
2946
+ }
2947
+ }
2948
+
2949
+ .animated.rotateInDownLeft {
2950
+ -webkit-animation-name: rotateInDownLeft;
2951
+ -moz-animation-name: rotateInDownLeft;
2952
+ -o-animation-name: rotateInDownLeft;
2953
+ animation-name: rotateInDownLeft;
2954
+ }
2955
+ @-webkit-keyframes rotateInUpRight {
2956
+ 0% {
2957
+ -webkit-transform-origin: right bottom;
2958
+ -webkit-transform: rotate(-90deg);
2959
+ opacity: 0;
2960
+ }
2961
+
2962
+ 100% {
2963
+ -webkit-transform-origin: right bottom;
2964
+ -webkit-transform: rotate(0);
2965
+ opacity: 1;
2966
+ }
2967
+ }
2968
+
2969
+ @-moz-keyframes rotateInUpRight {
2970
+ 0% {
2971
+ -moz-transform-origin: right bottom;
2972
+ -moz-transform: rotate(-90deg);
2973
+ opacity: 0;
2974
+ }
2975
+
2976
+ 100% {
2977
+ -moz-transform-origin: right bottom;
2978
+ -moz-transform: rotate(0);
2979
+ opacity: 1;
2980
+ }
2981
+ }
2982
+
2983
+ @-o-keyframes rotateInUpRight {
2984
+ 0% {
2985
+ -o-transform-origin: right bottom;
2986
+ -o-transform: rotate(-90deg);
2987
+ opacity: 0;
2988
+ }
2989
+
2990
+ 100% {
2991
+ -o-transform-origin: right bottom;
2992
+ -o-transform: rotate(0);
2993
+ opacity: 1;
2994
+ }
2995
+ }
2996
+
2997
+ @keyframes rotateInUpRight {
2998
+ 0% {
2999
+ transform-origin: right bottom;
3000
+ transform: rotate(-90deg);
3001
+ opacity: 0;
3002
+ }
3003
+
3004
+ 100% {
3005
+ transform-origin: right bottom;
3006
+ transform: rotate(0);
3007
+ opacity: 1;
3008
+ }
3009
+ }
3010
+
3011
+ .animated.rotateInUpRight {
3012
+ -webkit-animation-name: rotateInUpRight;
3013
+ -moz-animation-name: rotateInUpRight;
3014
+ -o-animation-name: rotateInUpRight;
3015
+ animation-name: rotateInUpRight;
3016
+ }
3017
+ @-webkit-keyframes rotateInDownRight {
3018
+ 0% {
3019
+ -webkit-transform-origin: right bottom;
3020
+ -webkit-transform: rotate(90deg);
3021
+ opacity: 0;
3022
+ }
3023
+
3024
+ 100% {
3025
+ -webkit-transform-origin: right bottom;
3026
+ -webkit-transform: rotate(0);
3027
+ opacity: 1;
3028
+ }
3029
+ }
3030
+
3031
+ @-moz-keyframes rotateInDownRight {
3032
+ 0% {
3033
+ -moz-transform-origin: right bottom;
3034
+ -moz-transform: rotate(90deg);
3035
+ opacity: 0;
3036
+ }
3037
+
3038
+ 100% {
3039
+ -moz-transform-origin: right bottom;
3040
+ -moz-transform: rotate(0);
3041
+ opacity: 1;
3042
+ }
3043
+ }
3044
+
3045
+ @-o-keyframes rotateInDownRight {
3046
+ 0% {
3047
+ -o-transform-origin: right bottom;
3048
+ -o-transform: rotate(90deg);
3049
+ opacity: 0;
3050
+ }
3051
+
3052
+ 100% {
3053
+ -o-transform-origin: right bottom;
3054
+ -o-transform: rotate(0);
3055
+ opacity: 1;
3056
+ }
3057
+ }
3058
+
3059
+ @keyframes rotateInDownRight {
3060
+ 0% {
3061
+ transform-origin: right bottom;
3062
+ transform: rotate(90deg);
3063
+ opacity: 0;
3064
+ }
3065
+
3066
+ 100% {
3067
+ transform-origin: right bottom;
3068
+ transform: rotate(0);
3069
+ opacity: 1;
3070
+ }
3071
+ }
3072
+
3073
+ .animated.rotateInDownRight {
3074
+ -webkit-animation-name: rotateInDownRight;
3075
+ -moz-animation-name: rotateInDownRight;
3076
+ -o-animation-name: rotateInDownRight;
3077
+ animation-name: rotateInDownRight;
3078
+ }
3079
+ @-webkit-keyframes rotateOut {
3080
+ 0% {
3081
+ -webkit-transform-origin: center center;
3082
+ -webkit-transform: rotate(0);
3083
+ opacity: 1;
3084
+ }
3085
+
3086
+ 100% {
3087
+ -webkit-transform-origin: center center;
3088
+ -webkit-transform: rotate(200deg);
3089
+ opacity: 0;
3090
+ }
3091
+ }
3092
+
3093
+ @-moz-keyframes rotateOut {
3094
+ 0% {
3095
+ -moz-transform-origin: center center;
3096
+ -moz-transform: rotate(0);
3097
+ opacity: 1;
3098
+ }
3099
+
3100
+ 100% {
3101
+ -moz-transform-origin: center center;
3102
+ -moz-transform: rotate(200deg);
3103
+ opacity: 0;
3104
+ }
3105
+ }
3106
+
3107
+ @-o-keyframes rotateOut {
3108
+ 0% {
3109
+ -o-transform-origin: center center;
3110
+ -o-transform: rotate(0);
3111
+ opacity: 1;
3112
+ }
3113
+
3114
+ 100% {
3115
+ -o-transform-origin: center center;
3116
+ -o-transform: rotate(200deg);
3117
+ opacity: 0;
3118
+ }
3119
+ }
3120
+
3121
+ @keyframes rotateOut {
3122
+ 0% {
3123
+ transform-origin: center center;
3124
+ transform: rotate(0);
3125
+ opacity: 1;
3126
+ }
3127
+
3128
+ 100% {
3129
+ transform-origin: center center;
3130
+ transform: rotate(200deg);
3131
+ opacity: 0;
3132
+ }
3133
+ }
3134
+
3135
+ .animated.rotateOut {
3136
+ -webkit-animation-name: rotateOut;
3137
+ -moz-animation-name: rotateOut;
3138
+ -o-animation-name: rotateOut;
3139
+ animation-name: rotateOut;
3140
+ }
3141
+ @-webkit-keyframes rotateOutUpLeft {
3142
+ 0% {
3143
+ -webkit-transform-origin: left bottom;
3144
+ -webkit-transform: rotate(0);
3145
+ opacity: 1;
3146
+ }
3147
+
3148
+ 100% {
3149
+ -webkit-transform-origin: left bottom;
3150
+ -webkit-transform: rotate(-90deg);
3151
+ opacity: 0;
3152
+ }
3153
+ }
3154
+
3155
+ @-moz-keyframes rotateOutUpLeft {
3156
+ 0% {
3157
+ -moz-transform-origin: left bottom;
3158
+ -moz-transform: rotate(0);
3159
+ opacity: 1;
3160
+ }
3161
+
3162
+ 100% {
3163
+ -moz-transform-origin: left bottom;
3164
+ -moz-transform: rotate(-90deg);
3165
+ opacity: 0;
3166
+ }
3167
+ }
3168
+
3169
+ @-o-keyframes rotateOutUpLeft {
3170
+ 0% {
3171
+ -o-transform-origin: left bottom;
3172
+ -o-transform: rotate(0);
3173
+ opacity: 1;
3174
+ }
3175
+
3176
+ 100% {
3177
+ -o-transform-origin: left bottom;
3178
+ -o-transform: rotate(-90deg);
3179
+ opacity: 0;
3180
+ }
3181
+ }
3182
+
3183
+ @keyframes rotateOutUpLeft {
3184
+ 0% {
3185
+ transform-origin: left bottom;
3186
+ transform: rotate(0);
3187
+ opacity: 1;
3188
+ }
3189
+
3190
+ 100% {
3191
+ transform-origin: left bottom;
3192
+ transform: rotate(-90deg);
3193
+ opacity: 0;
3194
+ }
3195
+ }
3196
+
3197
+ .animated.rotateOutUpLeft {
3198
+ -webkit-animation-name: rotateOutUpLeft;
3199
+ -moz-animation-name: rotateOutUpLeft;
3200
+ -o-animation-name: rotateOutUpLeft;
3201
+ animation-name: rotateOutUpLeft;
3202
+ }
3203
+ @-webkit-keyframes rotateOutDownLeft {
3204
+ 0% {
3205
+ -webkit-transform-origin: left bottom;
3206
+ -webkit-transform: rotate(0);
3207
+ opacity: 1;
3208
+ }
3209
+
3210
+ 100% {
3211
+ -webkit-transform-origin: left bottom;
3212
+ -webkit-transform: rotate(90deg);
3213
+ opacity: 0;
3214
+ }
3215
+ }
3216
+
3217
+ @-moz-keyframes rotateOutDownLeft {
3218
+ 0% {
3219
+ -moz-transform-origin: left bottom;
3220
+ -moz-transform: rotate(0);
3221
+ opacity: 1;
3222
+ }
3223
+
3224
+ 100% {
3225
+ -moz-transform-origin: left bottom;
3226
+ -moz-transform: rotate(90deg);
3227
+ opacity: 0;
3228
+ }
3229
+ }
3230
+
3231
+ @-o-keyframes rotateOutDownLeft {
3232
+ 0% {
3233
+ -o-transform-origin: left bottom;
3234
+ -o-transform: rotate(0);
3235
+ opacity: 1;
3236
+ }
3237
+
3238
+ 100% {
3239
+ -o-transform-origin: left bottom;
3240
+ -o-transform: rotate(90deg);
3241
+ opacity: 0;
3242
+ }
3243
+ }
3244
+
3245
+ @keyframes rotateOutDownLeft {
3246
+ 0% {
3247
+ transform-origin: left bottom;
3248
+ transform: rotate(0);
3249
+ opacity: 1;
3250
+ }
3251
+
3252
+ 100% {
3253
+ transform-origin: left bottom;
3254
+ transform: rotate(90deg);
3255
+ opacity: 0;
3256
+ }
3257
+ }
3258
+
3259
+ .animated.rotateOutDownLeft {
3260
+ -webkit-animation-name: rotateOutDownLeft;
3261
+ -moz-animation-name: rotateOutDownLeft;
3262
+ -o-animation-name: rotateOutDownLeft;
3263
+ animation-name: rotateOutDownLeft;
3264
+ }
3265
+ @-webkit-keyframes rotateOutUpRight {
3266
+ 0% {
3267
+ -webkit-transform-origin: right bottom;
3268
+ -webkit-transform: rotate(0);
3269
+ opacity: 1;
3270
+ }
3271
+
3272
+ 100% {
3273
+ -webkit-transform-origin: right bottom;
3274
+ -webkit-transform: rotate(90deg);
3275
+ opacity: 0;
3276
+ }
3277
+ }
3278
+
3279
+ @-moz-keyframes rotateOutUpRight {
3280
+ 0% {
3281
+ -moz-transform-origin: right bottom;
3282
+ -moz-transform: rotate(0);
3283
+ opacity: 1;
3284
+ }
3285
+
3286
+ 100% {
3287
+ -moz-transform-origin: right bottom;
3288
+ -moz-transform: rotate(90deg);
3289
+ opacity: 0;
3290
+ }
3291
+ }
3292
+
3293
+ @-o-keyframes rotateOutUpRight {
3294
+ 0% {
3295
+ -o-transform-origin: right bottom;
3296
+ -o-transform: rotate(0);
3297
+ opacity: 1;
3298
+ }
3299
+
3300
+ 100% {
3301
+ -o-transform-origin: right bottom;
3302
+ -o-transform: rotate(90deg);
3303
+ opacity: 0;
3304
+ }
3305
+ }
3306
+
3307
+ @keyframes rotateOutUpRight {
3308
+ 0% {
3309
+ transform-origin: right bottom;
3310
+ transform: rotate(0);
3311
+ opacity: 1;
3312
+ }
3313
+
3314
+ 100% {
3315
+ transform-origin: right bottom;
3316
+ transform: rotate(90deg);
3317
+ opacity: 0;
3318
+ }
3319
+ }
3320
+
3321
+ .animated.rotateOutUpRight {
3322
+ -webkit-animation-name: rotateOutUpRight;
3323
+ -moz-animation-name: rotateOutUpRight;
3324
+ -o-animation-name: rotateOutUpRight;
3325
+ animation-name: rotateOutUpRight;
3326
+ }
3327
+ @-webkit-keyframes rotateOutDownRight {
3328
+ 0% {
3329
+ -webkit-transform-origin: right bottom;
3330
+ -webkit-transform: rotate(0);
3331
+ opacity: 1;
3332
+ }
3333
+
3334
+ 100% {
3335
+ -webkit-transform-origin: right bottom;
3336
+ -webkit-transform: rotate(-90deg);
3337
+ opacity: 0;
3338
+ }
3339
+ }
3340
+
3341
+ @-moz-keyframes rotateOutDownRight {
3342
+ 0% {
3343
+ -moz-transform-origin: right bottom;
3344
+ -moz-transform: rotate(0);
3345
+ opacity: 1;
3346
+ }
3347
+
3348
+ 100% {
3349
+ -moz-transform-origin: right bottom;
3350
+ -moz-transform: rotate(-90deg);
3351
+ opacity: 0;
3352
+ }
3353
+ }
3354
+
3355
+ @-o-keyframes rotateOutDownRight {
3356
+ 0% {
3357
+ -o-transform-origin: right bottom;
3358
+ -o-transform: rotate(0);
3359
+ opacity: 1;
3360
+ }
3361
+
3362
+ 100% {
3363
+ -o-transform-origin: right bottom;
3364
+ -o-transform: rotate(-90deg);
3365
+ opacity: 0;
3366
+ }
3367
+ }
3368
+
3369
+ @keyframes rotateOutDownRight {
3370
+ 0% {
3371
+ transform-origin: right bottom;
3372
+ transform: rotate(0);
3373
+ opacity: 1;
3374
+ }
3375
+
3376
+ 100% {
3377
+ transform-origin: right bottom;
3378
+ transform: rotate(-90deg);
3379
+ opacity: 0;
3380
+ }
3381
+ }
3382
+
3383
+ .animated.rotateOutDownRight {
3384
+ -webkit-animation-name: rotateOutDownRight;
3385
+ -moz-animation-name: rotateOutDownRight;
3386
+ -o-animation-name: rotateOutDownRight;
3387
+ animation-name: rotateOutDownRight;
3388
+ }
3389
+
3390
+ @-webkit-keyframes zoomIn {
3391
+ 0% {
3392
+ opacity: 0;
3393
+ -webkit-transform: scale3d(.3, .3, .3);
3394
+ transform: scale3d(.3, .3, .3);
3395
+ }
3396
+
3397
+ 50% {
3398
+ opacity: 1;
3399
+ }
3400
+ }
3401
+
3402
+ @keyframes zoomIn {
3403
+ 0% {
3404
+ opacity: 0;
3405
+ -webkit-transform: scale3d(.3, .3, .3);
3406
+ transform: scale3d(.3, .3, .3);
3407
+ }
3408
+
3409
+ 50% {
3410
+ opacity: 1;
3411
+ }
3412
+ }
3413
+
3414
+ .animated.zoomIn {
3415
+ -webkit-animation-name: zoomIn;
3416
+ animation-name: zoomIn;
3417
+ }
3418
+
3419
+ @-webkit-keyframes zoomInDown {
3420
+ 0% {
3421
+ opacity: 0;
3422
+ -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
3423
+ transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
3424
+ -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3425
+ animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3426
+ }
3427
+
3428
+ 60% {
3429
+ opacity: 1;
3430
+ -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
3431
+ transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
3432
+ -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3433
+ animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3434
+ }
3435
+ }
3436
+
3437
+ @keyframes zoomInDown {
3438
+ 0% {
3439
+ opacity: 0;
3440
+ -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
3441
+ transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
3442
+ -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3443
+ animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3444
+ }
3445
+
3446
+ 60% {
3447
+ opacity: 1;
3448
+ -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
3449
+ transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
3450
+ -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3451
+ animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3452
+ }
3453
+ }
3454
+
3455
+ .animated.zoomInDown {
3456
+ -webkit-animation-name: zoomInDown;
3457
+ animation-name: zoomInDown;
3458
+ }
3459
+
3460
+ @-webkit-keyframes zoomInLeft {
3461
+ 0% {
3462
+ opacity: 0;
3463
+ -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
3464
+ transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
3465
+ -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3466
+ animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3467
+ }
3468
+
3469
+ 60% {
3470
+ opacity: 1;
3471
+ -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
3472
+ transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
3473
+ -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3474
+ animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3475
+ }
3476
+ }
3477
+
3478
+ @keyframes zoomInLeft {
3479
+ 0% {
3480
+ opacity: 0;
3481
+ -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
3482
+ transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
3483
+ -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3484
+ animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3485
+ }
3486
+
3487
+ 60% {
3488
+ opacity: 1;
3489
+ -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
3490
+ transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
3491
+ -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3492
+ animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3493
+ }
3494
+ }
3495
+
3496
+ .animated.zoomInLeft {
3497
+ -webkit-animation-name: zoomInLeft;
3498
+ animation-name: zoomInLeft;
3499
+ }
3500
+
3501
+ @-webkit-keyframes zoomInRight {
3502
+ 0% {
3503
+ opacity: 0;
3504
+ -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
3505
+ transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
3506
+ -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3507
+ animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3508
+ }
3509
+
3510
+ 60% {
3511
+ opacity: 1;
3512
+ -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
3513
+ transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
3514
+ -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3515
+ animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3516
+ }
3517
+ }
3518
+
3519
+ @keyframes zoomInRight {
3520
+ 0% {
3521
+ opacity: 0;
3522
+ -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
3523
+ transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
3524
+ -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3525
+ animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3526
+ }
3527
+
3528
+ 60% {
3529
+ opacity: 1;
3530
+ -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
3531
+ transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
3532
+ -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3533
+ animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3534
+ }
3535
+ }
3536
+
3537
+ .animated.zoomInRight {
3538
+ -webkit-animation-name: zoomInRight;
3539
+ animation-name: zoomInRight;
3540
+ }
3541
+
3542
+ @-webkit-keyframes zoomInUp {
3543
+ 0% {
3544
+ opacity: 0;
3545
+ -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
3546
+ transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
3547
+ -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3548
+ animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3549
+ }
3550
+
3551
+ 60% {
3552
+ opacity: 1;
3553
+ -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
3554
+ transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
3555
+ -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3556
+ animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3557
+ }
3558
+ }
3559
+
3560
+ @keyframes zoomInUp {
3561
+ 0% {
3562
+ opacity: 0;
3563
+ -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
3564
+ transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
3565
+ -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3566
+ animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3567
+ }
3568
+
3569
+ 60% {
3570
+ opacity: 1;
3571
+ -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
3572
+ transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
3573
+ -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3574
+ animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3575
+ }
3576
+ }
3577
+
3578
+ .animated.zoomInUp {
3579
+ -webkit-animation-name: zoomInUp;
3580
+ animation-name: zoomInUp;
3581
+ }
3582
+
3583
+ @-webkit-keyframes zoomOut {
3584
+ 0% {
3585
+ opacity: 1;
3586
+ }
3587
+
3588
+ 50% {
3589
+ opacity: 0;
3590
+ -webkit-transform: scale3d(.3, .3, .3);
3591
+ transform: scale3d(.3, .3, .3);
3592
+ }
3593
+
3594
+ 100% {
3595
+ opacity: 0;
3596
+ }
3597
+ }
3598
+
3599
+ @keyframes zoomOut {
3600
+ 0% {
3601
+ opacity: 1;
3602
+ }
3603
+
3604
+ 50% {
3605
+ opacity: 0;
3606
+ -webkit-transform: scale3d(.3, .3, .3);
3607
+ transform: scale3d(.3, .3, .3);
3608
+ }
3609
+
3610
+ 100% {
3611
+ opacity: 0;
3612
+ }
3613
+ }
3614
+
3615
+ .animated.zoomOut {
3616
+ -webkit-animation-name: zoomOut;
3617
+ animation-name: zoomOut;
3618
+ }
3619
+
3620
+ @-webkit-keyframes zoomOutDown {
3621
+ 40% {
3622
+ opacity: 1;
3623
+ -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
3624
+ transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
3625
+ -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3626
+ animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3627
+ }
3628
+
3629
+ 100% {
3630
+ opacity: 0;
3631
+ -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1080px, 0);
3632
+ transform: scale3d(.1, .1, .1) translate3d(0, 1080px, 0);
3633
+ -webkit-transform-origin: center bottom;
3634
+ transform-origin: center bottom;
3635
+ -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3636
+ animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3637
+ }
3638
+ }
3639
+
3640
+ @keyframes zoomOutDown {
3641
+ 40% {
3642
+ opacity: 1;
3643
+ -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
3644
+ transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
3645
+ -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3646
+ animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3647
+ }
3648
+
3649
+ 100% {
3650
+ opacity: 0;
3651
+ -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1080px, 0);
3652
+ transform: scale3d(.1, .1, .1) translate3d(0, 1080px, 0);
3653
+ -webkit-transform-origin: center bottom;
3654
+ transform-origin: center bottom;
3655
+ -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3656
+ animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3657
+ }
3658
+ }
3659
+
3660
+ .animated.zoomOutDown {
3661
+ -webkit-animation-name: zoomOutDown;
3662
+ animation-name: zoomOutDown;
3663
+ }
3664
+
3665
+ @-webkit-keyframes zoomOutLeft {
3666
+ 40% {
3667
+ opacity: 1;
3668
+ -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
3669
+ transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
3670
+ }
3671
+
3672
+ 100% {
3673
+ opacity: 0;
3674
+ -webkit-transform: scale(.1) translate3d(-2000px, 0, 0);
3675
+ transform: scale(.1) translate3d(-2000px, 0, 0);
3676
+ -webkit-transform-origin: left center;
3677
+ transform-origin: left center;
3678
+ }
3679
+ }
3680
+
3681
+ @keyframes zoomOutLeft {
3682
+ 40% {
3683
+ opacity: 1;
3684
+ -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
3685
+ transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
3686
+ }
3687
+
3688
+ 100% {
3689
+ opacity: 0;
3690
+ -webkit-transform: scale(.1) translate3d(-2000px, 0, 0);
3691
+ transform: scale(.1) translate3d(-2000px, 0, 0);
3692
+ -webkit-transform-origin: left center;
3693
+ transform-origin: left center;
3694
+ }
3695
+ }
3696
+
3697
+ .animated.zoomOutLeft {
3698
+ -webkit-animation-name: zoomOutLeft;
3699
+ animation-name: zoomOutLeft;
3700
+ }
3701
+
3702
+ @-webkit-keyframes zoomOutRight {
3703
+ 40% {
3704
+ opacity: 1;
3705
+ -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
3706
+ transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
3707
+ }
3708
+
3709
+ 100% {
3710
+ opacity: 0;
3711
+ -webkit-transform: scale(.1) translate3d(2000px, 0, 0);
3712
+ transform: scale(.1) translate3d(2000px, 0, 0);
3713
+ -webkit-transform-origin: right center;
3714
+ transform-origin: right center;
3715
+ }
3716
+ }
3717
+
3718
+ @keyframes zoomOutRight {
3719
+ 40% {
3720
+ opacity: 1;
3721
+ -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
3722
+ transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
3723
+ }
3724
+
3725
+ 100% {
3726
+ opacity: 0;
3727
+ -webkit-transform: scale(.1) translate3d(2000px, 0, 0);
3728
+ transform: scale(.1) translate3d(2000px, 0, 0);
3729
+ -webkit-transform-origin: right center;
3730
+ transform-origin: right center;
3731
+ }
3732
+ }
3733
+
3734
+ .animated.zoomOutRight {
3735
+ -webkit-animation-name: zoomOutRight;
3736
+ animation-name: zoomOutRight;
3737
+ }
3738
+
3739
+ @-webkit-keyframes zoomOutUp {
3740
+ 40% {
3741
+ opacity: 1;
3742
+ -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
3743
+ transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
3744
+ -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3745
+ animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3746
+ }
3747
+
3748
+ 100% {
3749
+ opacity: 0;
3750
+ -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1080px, 0);
3751
+ transform: scale3d(.1, .1, .1) translate3d(0, -1080px, 0);
3752
+ -webkit-transform-origin: center bottom;
3753
+ transform-origin: center bottom;
3754
+ -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3755
+ animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3756
+ }
3757
+ }
3758
+
3759
+ @keyframes zoomOutUp {
3760
+ 40% {
3761
+ opacity: 1;
3762
+ -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
3763
+ transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
3764
+ -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3765
+ animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3766
+ }
3767
+
3768
+ 100% {
3769
+ opacity: 0;
3770
+ -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1080px, 0);
3771
+ transform: scale3d(.1, .1, .1) translate3d(0, -1080px, 0);
3772
+ -webkit-transform-origin: center bottom;
3773
+ transform-origin: center bottom;
3774
+ -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3775
+ animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3776
+ }
3777
+ }
3778
+
3779
+ .animated.zoomOutUp {
3780
+ -webkit-animation-name: zoomOutUp;
3781
+ animation-name: zoomOutUp;
3782
+ }
3783
+
3784
+ @-webkit-keyframes slideInDown {
3785
+ 0% {
3786
+ -webkit-transform: translate3d(0, -1080px, 0);
3787
+ transform: translate3d(0, -1080px, 0);
3788
+ opacity: 1;
3789
+ }
3790
+
3791
+ 100% {
3792
+ -webkit-transform: translate3d(0, 0, 0);
3793
+ transform: translate3d(0, 0, 0);
3794
+ }
3795
+ }
3796
+
3797
+ @keyframes slideInDown {
3798
+ 0% {
3799
+ -webkit-transform: translate3d(0, -1080px, 0);
3800
+ transform: translate3d(0, -1080px, 0);
3801
+ opacity: 1;
3802
+ }
3803
+
3804
+ 100% {
3805
+ -webkit-transform: translate3d(0, 0, 0);
3806
+ transform: translate3d(0, 0, 0);
3807
+ }
3808
+ }
3809
+
3810
+ .animated.slideInDown {
3811
+ -webkit-animation-name: slideInDown;
3812
+ animation-name: slideInDown;
3813
+ }
3814
+
3815
+ @-webkit-keyframes slideInLeft {
3816
+ 0% {
3817
+ -webkit-transform: translate3d(-3000px, 0, 0);
3818
+ transform: translate3d(-3000px, 0, 0);
3819
+ opacity: 1;
3820
+ }
3821
+
3822
+ 100% {
3823
+ -webkit-transform: translate3d(0, 0, 0);
3824
+ transform: translate3d(0, 0, 0);
3825
+ }
3826
+ }
3827
+
3828
+ @keyframes slideInLeft {
3829
+ 0% {
3830
+ -webkit-transform: translate3d(-3000px, 0, 0);
3831
+ transform: translate3d(-3000px, 0, 0);
3832
+ opacity: 1;
3833
+ }
3834
+
3835
+ 100% {
3836
+ -webkit-transform: translate3d(0, 0, 0);
3837
+ transform: translate3d(0, 0, 0);
3838
+ }
3839
+ }
3840
+
3841
+ .animated.slideInLeft {
3842
+ -webkit-animation-name: slideInLeft;
3843
+ animation-name: slideInLeft;
3844
+ }
3845
+
3846
+ @-webkit-keyframes slideInRight {
3847
+ 0% {
3848
+ -webkit-transform: translate3d(3000px, 0, 0);
3849
+ transform: translate3d(3000px, 0, 0);
3850
+ opacity: 1;
3851
+ }
3852
+
3853
+ 100% {
3854
+ -webkit-transform: translate3d(0, 0, 0);
3855
+ transform: translate3d(0, 0, 0);
3856
+ }
3857
+ }
3858
+
3859
+ @keyframes slideInRight {
3860
+ 0% {
3861
+ -webkit-transform: translate3d(3000px, 0, 0);
3862
+ transform: translate3d(3000px, 0, 0);
3863
+ opacity: 1;
3864
+ }
3865
+
3866
+ 100% {
3867
+ -webkit-transform: translate3d(0, 0, 0);
3868
+ transform: translate3d(0, 0, 0);
3869
+ }
3870
+ }
3871
+
3872
+ .animated.slideInRight {
3873
+ -webkit-animation-name: slideInRight;
3874
+ animation-name: slideInRight;
3875
+ }
3876
+
3877
+ @-webkit-keyframes slideInUp {
3878
+ 0% {
3879
+ -webkit-transform: translate3d(0, 1080px, 0);
3880
+ transform: translate3d(0, 1080px, 0);
3881
+ opacity: 1;
3882
+ }
3883
+
3884
+ 100% {
3885
+ -webkit-transform: translate3d(0, 0, 0);
3886
+ transform: translate3d(0, 0, 0);
3887
+ }
3888
+ }
3889
+
3890
+ @keyframes slideInUp {
3891
+ 0% {
3892
+ -webkit-transform: translate3d(0, 1080px, 0);
3893
+ transform: translate3d(0, 1080px, 0);
3894
+ opacity: 1;
3895
+ }
3896
+
3897
+ 100% {
3898
+ -webkit-transform: translate3d(0, 0, 0);
3899
+ transform: translate3d(0, 0, 0);
3900
+ }
3901
+ }
3902
+
3903
+ .animated.slideInUp {
3904
+ -webkit-animation-name: slideInUp;
3905
+ animation-name: slideInUp;
3906
+ }
3907
+
3908
+ @-webkit-keyframes slideOutDown {
3909
+ 0% {
3910
+ -webkit-transform: translate3d(0, 0, 0);
3911
+ transform: translate3d(0, 0, 0);
3912
+ }
3913
+
3914
+ 100% {
3915
+ opacity: 0;
3916
+ -webkit-transform: translate3d(0, 1080px, 0);
3917
+ transform: translate3d(0, 1080px, 0);
3918
+ }
3919
+ }
3920
+
3921
+ @keyframes slideOutDown {
3922
+ 0% {
3923
+ -webkit-transform: translate3d(0, 0, 0);
3924
+ transform: translate3d(0, 0, 0);
3925
+ }
3926
+
3927
+ 100% {
3928
+ opacity: 0;
3929
+ -webkit-transform: translate3d(0, 1080px, 0);
3930
+ transform: translate3d(0, 1080px, 0);
3931
+ }
3932
+ }
3933
+
3934
+ .animated.slideOutDown {
3935
+ -webkit-animation-name: slideOutDown;
3936
+ animation-name: slideOutDown;
3937
+ }
3938
+
3939
+ @-webkit-keyframes slideOutLeft {
3940
+ 0% {
3941
+ -webkit-transform: translate3d(0, 0, 0);
3942
+ transform: translate3d(0, 0, 0);
3943
+ }
3944
+
3945
+ 100% {
3946
+ opacity: 0;
3947
+ -webkit-transform: translate3d(-3000px, 0, 0);
3948
+ transform: translate3d(-3000px, 0, 0);
3949
+ }
3950
+ }
3951
+
3952
+ @keyframes slideOutLeft {
3953
+ 0% {
3954
+ -webkit-transform: translate3d(0, 0, 0);
3955
+ transform: translate3d(0, 0, 0);
3956
+ }
3957
+
3958
+ 100% {
3959
+ opacity: 0;
3960
+ -webkit-transform: translate3d(-3000px, 0, 0);
3961
+ transform: translate3d(-3000px, 0, 0);
3962
+ }
3963
+ }
3964
+
3965
+ .animated.slideOutLeft {
3966
+ -webkit-animation-name: slideOutLeft;
3967
+ animation-name: slideOutLeft;
3968
+ }
3969
+
3970
+ @-webkit-keyframes slideOutRight {
3971
+ 0% {
3972
+ -webkit-transform: translate3d(0, 0, 0);
3973
+ transform: translate3d(0, 0, 0);
3974
+ }
3975
+
3976
+ 100% {
3977
+ opacity: 0;
3978
+ -webkit-transform: translate3d(3000px, 0, 0);
3979
+ transform: translate3d(3000px, 0, 0);
3980
+ }
3981
+ }
3982
+
3983
+ @keyframes slideOutRight {
3984
+ 0% {
3985
+ -webkit-transform: translate3d(0, 0, 0);
3986
+ transform: translate3d(0, 0, 0);
3987
+ }
3988
+
3989
+ 100% {
3990
+ opacity: 0;
3991
+ -webkit-transform: translate3d(3000px, 0, 0);
3992
+ transform: translate3d(3000px, 0, 0);
3993
+ }
3994
+ }
3995
+
3996
+ .animated.slideOutRight {
3997
+ -webkit-animation-name: slideOutRight;
3998
+ animation-name: slideOutRight;
3999
+ }
4000
+
4001
+ @-webkit-keyframes slideOutUp {
4002
+ 0% {
4003
+ -webkit-transform: translate3d(0, 0, 0);
4004
+ transform: translate3d(0, 0, 0);
4005
+ }
4006
+
4007
+ 100% {
4008
+ opacity: 0;
4009
+ -webkit-transform: translate3d(0, -1080px, 0);
4010
+ transform: translate3d(0, -1080px, 0);
4011
+ }
4012
+ }
4013
+
4014
+ @keyframes slideOutUp {
4015
+ 0% {
4016
+ -webkit-transform: translate3d(0, 0, 0);
4017
+ transform: translate3d(0, 0, 0);
4018
+ }
4019
+
4020
+ 100% {
4021
+ opacity: 0;
4022
+ -webkit-transform: translate3d(0, -1080px, 0);
4023
+ transform: translate3d(0, -1080px, 0);
4024
+ }
4025
+ }
4026
+
4027
+ .animated.slideOutUp {
4028
+ -webkit-animation-name: slideOutUp;
4029
+ animation-name: slideOutUp;
4030
+ }
4031
+
4032
+ @-webkit-keyframes hinge {
4033
+ 0% { -webkit-transform: rotate(0); -webkit-transform-origin: top left; -webkit-animation-timing-function: ease-in-out; }
4034
+ 20%, 60% { -webkit-transform: rotate(80deg); -webkit-transform-origin: top left; -webkit-animation-timing-function: ease-in-out; }
4035
+ 40% { -webkit-transform: rotate(60deg); -webkit-transform-origin: top left; -webkit-animation-timing-function: ease-in-out; }
4036
+ 80% { -webkit-transform: rotate(60deg) translateY(0); opacity: 1; -webkit-transform-origin: top left; -webkit-animation-timing-function: ease-in-out; }
4037
+ 100% { -webkit-transform: translateY(700px); opacity: 0; }
4038
+ }
4039
+
4040
+ @-moz-keyframes hinge {
4041
+ 0% { -moz-transform: rotate(0); -moz-transform-origin: top left; -moz-animation-timing-function: ease-in-out; }
4042
+ 20%, 60% { -moz-transform: rotate(80deg); -moz-transform-origin: top left; -moz-animation-timing-function: ease-in-out; }
4043
+ 40% { -moz-transform: rotate(60deg); -moz-transform-origin: top left; -moz-animation-timing-function: ease-in-out; }
4044
+ 80% { -moz-transform: rotate(60deg) translateY(0); opacity: 1; -moz-transform-origin: top left; -moz-animation-timing-function: ease-in-out; }
4045
+ 100% { -moz-transform: translateY(700px); opacity: 0; }
4046
+ }
4047
+
4048
+ @-o-keyframes hinge {
4049
+ 0% { -o-transform: rotate(0); -o-transform-origin: top left; -o-animation-timing-function: ease-in-out; }
4050
+ 20%, 60% { -o-transform: rotate(80deg); -o-transform-origin: top left; -o-animation-timing-function: ease-in-out; }
4051
+ 40% { -o-transform: rotate(60deg); -o-transform-origin: top left; -o-animation-timing-function: ease-in-out; }
4052
+ 80% { -o-transform: rotate(60deg) translateY(0); opacity: 1; -o-transform-origin: top left; -o-animation-timing-function: ease-in-out; }
4053
+ 100% { -o-transform: translateY(700px); opacity: 0; }
4054
+ }
4055
+
4056
+ @keyframes hinge {
4057
+ 0% { transform: rotate(0); transform-origin: top left; animation-timing-function: ease-in-out; }
4058
+ 20%, 60% { transform: rotate(80deg); transform-origin: top left; animation-timing-function: ease-in-out; }
4059
+ 40% { transform: rotate(60deg); transform-origin: top left; animation-timing-function: ease-in-out; }
4060
+ 80% { transform: rotate(60deg) translateY(0); opacity: 1; transform-origin: top left; animation-timing-function: ease-in-out; }
4061
+ 100% { transform: translateY(700px); opacity: 0; }
4062
+ }
4063
+
4064
+ .animated.hinge {
4065
+ -webkit-animation-name: hinge;
4066
+ -moz-animation-name: hinge;
4067
+ -o-animation-name: hinge;
4068
+ animation-name: hinge;
4069
+ }
4070
+ /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
4071
+
4072
+ @-webkit-keyframes rollIn {
4073
+ 0% { opacity: 0; -webkit-transform: translateX(-3000px) rotate(-120deg); }
4074
+ 100% { opacity: 1; -webkit-transform: translateX(0px) rotate(0deg); }
4075
+ }
4076
+
4077
+ @-moz-keyframes rollIn {
4078
+ 0% { opacity: 0; -moz-transform: translateX(-3000px) rotate(-120deg); }
4079
+ 100% { opacity: 1; -moz-transform: translateX(0px) rotate(0deg); }
4080
+ }
4081
+
4082
+ @-o-keyframes rollIn {
4083
+ 0% { opacity: 0; -o-transform: translateX(-3000px) rotate(-120deg); }
4084
+ 100% { opacity: 1; -o-transform: translateX(0px) rotate(0deg); }
4085
+ }
4086
+
4087
+ @keyframes rollIn {
4088
+ 0% { opacity: 0; transform: translateX(-3000px) rotate(-120deg); }
4089
+ 100% { opacity: 1; transform: translateX(0px) rotate(0deg); }
4090
+ }
4091
+
4092
+ .animated.rollIn {
4093
+ -webkit-animation-name: rollIn;
4094
+ -moz-animation-name: rollIn;
4095
+ -o-animation-name: rollIn;
4096
+ animation-name: rollIn;
4097
+ }
4098
+ /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
4099
+
4100
+ @-webkit-keyframes rollOut {
4101
+ 0% {
4102
+ opacity: 1;
4103
+ -webkit-transform: translateX(0px) rotate(0deg);
4104
+ }
4105
+
4106
+ 100% {
4107
+ opacity: 0;
4108
+ -webkit-transform: translateX(3000px) rotate(120deg);
4109
+ }
4110
+ }
4111
+
4112
+ @-moz-keyframes rollOut {
4113
+ 0% {
4114
+ opacity: 1;
4115
+ -moz-transform: translateX(0px) rotate(0deg);
4116
+ }
4117
+
4118
+ 100% {
4119
+ opacity: 0;
4120
+ -moz-transform: translateX(3000px) rotate(120deg);
4121
+ }
4122
+ }
4123
+
4124
+ @-o-keyframes rollOut {
4125
+ 0% {
4126
+ opacity: 1;
4127
+ -o-transform: translateX(0px) rotate(0deg);
4128
+ }
4129
+
4130
+ 100% {
4131
+ opacity: 0;
4132
+ -o-transform: translateX(3000px) rotate(120deg);
4133
+ }
4134
+ }
4135
+
4136
+ @keyframes rollOut {
4137
+ 0% {
4138
+ opacity: 1;
4139
+ transform: translateX(0px) rotate(0deg);
4140
+ }
4141
+
4142
+ 100% {
4143
+ opacity: 0;
4144
+ transform: translateX(3000px) rotate(120deg);
4145
+ }
4146
+ }
4147
+
4148
+ .animated.rollOut {
4149
+ -webkit-animation-name: rollOut;
4150
+ -moz-animation-name: rollOut;
4151
+ -o-animation-name: rollOut;
4152
+ animation-name: rollOut;
4153
+ }
4154
+
4155
+ /* originally authored by Angelo Rohit - https://github.com/angelorohit */
4156
+
4157
+ @-webkit-keyframes lightSpeedIn {
4158
+ 0% { -webkit-transform: translateX(100%) skewX(-30deg); opacity: 0; }
4159
+ 60% { -webkit-transform: translateX(-20%) skewX(30deg); opacity: 1; }
4160
+ 80% { -webkit-transform: translateX(0%) skewX(-15deg); opacity: 1; }
4161
+ 100% { -webkit-transform: translateX(0%) skewX(0deg); opacity: 1; }
4162
+ }
4163
+
4164
+ @-moz-keyframes lightSpeedIn {
4165
+ 0% { -moz-transform: translateX(100%) skewX(-30deg); opacity: 0; }
4166
+ 60% { -moz-transform: translateX(-20%) skewX(30deg); opacity: 1; }
4167
+ 80% { -moz-transform: translateX(0%) skewX(-15deg); opacity: 1; }
4168
+ 100% { -moz-transform: translateX(0%) skewX(0deg); opacity: 1; }
4169
+ }
4170
+
4171
+ @-o-keyframes lightSpeedIn {
4172
+ 0% { -o-transform: translateX(100%) skewX(-30deg); opacity: 0; }
4173
+ 60% { -o-transform: translateX(-20%) skewX(30deg); opacity: 1; }
4174
+ 80% { -o-transform: translateX(0%) skewX(-15deg); opacity: 1; }
4175
+ 100% { -o-transform: translateX(0%) skewX(0deg); opacity: 1; }
4176
+ }
4177
+
4178
+ @keyframes lightSpeedIn {
4179
+ 0% { transform: translateX(100%) skewX(-30deg); opacity: 0; }
4180
+ 60% { transform: translateX(-20%) skewX(30deg); opacity: 1; }
4181
+ 80% { transform: translateX(0%) skewX(-15deg); opacity: 1; }
4182
+ 100% { transform: translateX(0%) skewX(0deg); opacity: 1; }
4183
+ }
4184
+
4185
+ .animated.lightSpeedIn {
4186
+ -webkit-animation-name: lightSpeedIn;
4187
+ -moz-animation-name: lightSpeedIn;
4188
+ -o-animation-name: lightSpeedIn;
4189
+ animation-name: lightSpeedIn;
4190
+
4191
+ -webkit-animation-timing-function: ease-out;
4192
+ -moz-animation-timing-function: ease-out;
4193
+ -o-animation-timing-function: ease-out;
4194
+ animation-timing-function: ease-out;
4195
+ }
4196
+
4197
+ .animated.lightSpeedIn {
4198
+ -webkit-animation-duration: 0.5s;
4199
+ -moz-animation-duration: 0.5s;
4200
+ -o-animation-duration: 0.5s;
4201
+ animation-duration: 0.5s;
4202
+ }
4203
+
4204
+ /* originally authored by Angelo Rohit - https://github.com/angelorohit */
4205
+
4206
+ @-webkit-keyframes lightSpeedOut {
4207
+ 0% { -webkit-transform: translateX(0%) skewX(0deg); opacity: 1; }
4208
+ 100% { -webkit-transform: translateX(100%) skewX(-30deg); opacity: 0; }
4209
+ }
4210
+
4211
+ @-moz-keyframes lightSpeedOut {
4212
+ 0% { -moz-transform: translateX(0%) skewX(0deg); opacity: 1; }
4213
+ 100% { -moz-transform: translateX(100%) skewX(-30deg); opacity: 0; }
4214
+ }
4215
+
4216
+ @-o-keyframes lightSpeedOut {
4217
+ 0% { -o-transform: translateX(0%) skewX(0deg); opacity: 1; }
4218
+ 100% { -o-transform: translateX(100%) skewX(-30deg); opacity: 0; }
4219
+ }
4220
+
4221
+ @keyframes lightSpeedOut {
4222
+ 0% { transform: translateX(0%) skewX(0deg); opacity: 1; }
4223
+ 100% { transform: translateX(100%) skewX(-30deg); opacity: 0; }
4224
+ }
4225
+
4226
+ .animated.lightSpeedOut {
4227
+ -webkit-animation-name: lightSpeedOut;
4228
+ -moz-animation-name: lightSpeedOut;
4229
+ -o-animation-name: lightSpeedOut;
4230
+ animation-name: lightSpeedOut;
4231
+
4232
+ -webkit-animation-timing-function: ease-in;
4233
+ -moz-animation-timing-function: ease-in;
4234
+ -o-animation-timing-function: ease-in;
4235
+ animation-timing-function: ease-in;
4236
+ }
4237
+
4238
+ .animated.lightSpeedOut {
4239
+ -webkit-animation-duration: 0.25s;
4240
+ -moz-animation-duration: 0.25s;
4241
+ -o-animation-duration: 0.25s;
4242
+ animation-duration: 0.25s;
4243
+ }
4244
+
4245
+ /* originally authored by Angelo Rohit - https://github.com/angelorohit */
4246
+
4247
+ @-webkit-keyframes wiggle {
4248
+ 0% { -webkit-transform: skewX(9deg); }
4249
+ 10% { -webkit-transform: skewX(-8deg); }
4250
+ 20% { -webkit-transform: skewX(7deg); }
4251
+ 30% { -webkit-transform: skewX(-6deg); }
4252
+ 40% { -webkit-transform: skewX(5deg); }
4253
+ 50% { -webkit-transform: skewX(-4deg); }
4254
+ 60% { -webkit-transform: skewX(3deg); }
4255
+ 70% { -webkit-transform: skewX(-2deg); }
4256
+ 80% { -webkit-transform: skewX(1deg); }
4257
+ 90% { -webkit-transform: skewX(0deg); }
4258
+ 100% { -webkit-transform: skewX(0deg); }
4259
+ }
4260
+
4261
+ @-moz-keyframes wiggle {
4262
+ 0% { -moz-transform: skewX(9deg); }
4263
+ 10% { -moz-transform: skewX(-8deg); }
4264
+ 20% { -moz-transform: skewX(7deg); }
4265
+ 30% { -moz-transform: skewX(-6deg); }
4266
+ 40% { -moz-transform: skewX(5deg); }
4267
+ 50% { -moz-transform: skewX(-4deg); }
4268
+ 60% { -moz-transform: skewX(3deg); }
4269
+ 70% { -moz-transform: skewX(-2deg); }
4270
+ 80% { -moz-transform: skewX(1deg); }
4271
+ 90% { -moz-transform: skewX(0deg); }
4272
+ 100% { -moz-transform: skewX(0deg); }
4273
+ }
4274
+
4275
+ @-o-keyframes wiggle {
4276
+ 0% { -o-transform: skewX(9deg); }
4277
+ 10% { -o-transform: skewX(-8deg); }
4278
+ 20% { -o-transform: skewX(7deg); }
4279
+ 30% { -o-transform: skewX(-6deg); }
4280
+ 40% { -o-transform: skewX(5deg); }
4281
+ 50% { -o-transform: skewX(-4deg); }
4282
+ 60% { -o-transform: skewX(3deg); }
4283
+ 70% { -o-transform: skewX(-2deg); }
4284
+ 80% { -o-transform: skewX(1deg); }
4285
+ 90% { -o-transform: skewX(0deg); }
4286
+ 100% { -o-transform: skewX(0deg); }
4287
+ }
4288
+
4289
+ @keyframes wiggle {
4290
+ 0% { transform: skewX(9deg); }
4291
+ 10% { transform: skewX(-8deg); }
4292
+ 20% { transform: skewX(7deg); }
4293
+ 30% { transform: skewX(-6deg); }
4294
+ 40% { transform: skewX(5deg); }
4295
+ 50% { transform: skewX(-4deg); }
4296
+ 60% { transform: skewX(3deg); }
4297
+ 70% { transform: skewX(-2deg); }
4298
+ 80% { transform: skewX(1deg); }
4299
+ 90% { transform: skewX(0deg); }
4300
+ 100% { transform: skewX(0deg); }
4301
+ }
4302
+
4303
+ .animated.wiggle {
4304
+ -webkit-animation-name: wiggle;
4305
+ -moz-animation-name: wiggle;
4306
+ -o-animation-name: wiggle;
4307
+ animation-name: wiggle;
4308
+
4309
+ -webkit-animation-timing-function: ease-in;
4310
+ -moz-animation-timing-function: ease-in;
4311
+ -o-animation-timing-function: ease-in;
4312
+ animation-timing-function: ease-in;
4313
+ }
4314
+
4315
+ .animated.wiggle {
4316
+ -webkit-animation-duration: 0.75s;
4317
+ -moz-animation-duration: 0.75s;
4318
+ -o-animation-duration: 0.75s;
4319
+ animation-duration: 0.75s;
4320
+ }
4321
+
4322
+
4323
+
4324
+ /*
4325
+
4326
+ A couple of additions for the animo.js library
4327
+
4328
+ Daniel Raftery <@ThirvingKings>
4329
+
4330
+ */
4331
+
4332
+ .animated.fade {
4333
+ -webkit-animation-name: fade;
4334
+ -moz-animation-name: fade;
4335
+ -o-animation-name: fade;
4336
+ animation-name: fade;
4337
+ }
4338
+
4339
+ @-webkit-keyframes fade {
4340
+ 0% { opacity: 1; }
4341
+ 100% { opacity: 0; }
4342
+ }
4343
+
4344
+ @-moz-keyframes fade {
4345
+ 0% { opacity: 1; }
4346
+ 100% { opacity: 0; }
4347
+ }
4348
+
4349
+ @-o-keyframes fade {
4350
+ 0% { opacity: 1; }
4351
+ 100% { opacity: 0; }
4352
+ }
4353
+
4354
+ @keyframes fade {
4355
+ 0% { opacity: 1; }
4356
+ 100% { opacity: 0; }
4357
+ }
4358
+
4359
+ .animated.appear {
4360
+ -webkit-animation-name: appear;
4361
+ -moz-animation-name: appear;
4362
+ -o-animation-name: appear;
4363
+ animation-name: appear;
4364
+ }
4365
+
4366
+ @-webkit-keyframes appear {
4367
+ 0% { opacity: 0; }
4368
+ 100% { opacity: 1; }
4369
+ }
4370
+
4371
+ @-moz-keyframes appear {
4372
+ 0% { opacity: 0; }
4373
+ 100% { opacity: 1; }
4374
+ }
4375
+
4376
+ @-o-keyframes appear {
4377
+ 0% { opacity: 0; }
4378
+ 100% { opacity: 1; }
4379
+ }
4380
+
4381
+ @keyframes appear {
4382
+ 0% { opacity: 0; }
4383
+ 100% { opacity: 1; }
4384
+ }
4385
+
4386
+ .animated.spinner {
4387
+ -webkit-animation-name: spinner;
4388
+ -moz-animation-name: spinner;
4389
+ -o-animation-name: spinner;
4390
+ animation-name: spinner;
4391
+ }
4392
+
4393
+ @-webkit-keyframes spinner {
4394
+ 0% { -webkit-transform: rotate(0deg); }
4395
+ 100% { -webkit-transform: rotate(360deg); }
4396
+ }
4397
+
4398
+ @-moz-keyframes spinner {
4399
+ 0% { -moz-transform: rotate(0deg); }
4400
+ 100% { -moz-transform: rotate(360deg); }
4401
+ }
4402
+
4403
+ @-o-keyframes spinner {
4404
+ 0% { -o-transform: rotate(0deg); }
4405
+ 100% { -o-transform: rotate(360deg); }
4406
+ }
4407
+
4408
+ @keyframes spinner {
4409
+ 0% { transform: rotate(0deg); }
4410
+ 100% { transform: rotate(360deg); }
4411
+ }
4412
+
4413
+ .animated.twirlIn {
4414
+ -webkit-animation-name: twirlIn;
4415
+ -moz-animation-name: twirlIn;
4416
+ -o-animation-name: twirlIn;
4417
+ animation-name: twirlIn;
4418
+ }
4419
+
4420
+ @-webkit-keyframes twirlIn {
4421
+ 0% { -webkit-transform: rotate3d( 80,-70,10,180deg ); }
4422
+ 100% { -webkit-transform: rotate3d( 0,0,0,0deg ); }
4423
+ }
4424
+
4425
+ @-moz-keyframes twirlIn {
4426
+ 0% { -moz-transform: rotate3d( 80,70,10,180deg ); }
4427
+ 100% { -moz-transform: rotate3d( 0,0,0,0deg ); }
4428
+ }
4429
+
4430
+ @-o-keyframes twirlIn {
4431
+ 0% { -o-transform: rotate3d( 80,70,10,180deg ); }
4432
+ 100% { -o-transform: rotate3d( 0,0,0,0deg ); }
4433
+ }
4434
+
4435
+ @keyframes twirlIn {
4436
+ 0% { transform: rotate3d( 0,0,0,0deg ); }
4437
+ 100% { transform: rotate3d( 80,70,10,180deg ); }
4438
+ }
4439
+
4440
+ .animated.twirlOut {
4441
+ -webkit-animation-name: twirlOut;
4442
+ -moz-animation-name: twirlOut;
4443
+ -o-animation-name: twirlOut;
4444
+ animation-name: twirlOut;
4445
+ }
4446
+
4447
+ @-webkit-keyframes twirlOut {
4448
+ 0% { -webkit-transform: rotate3d( 0,0,0,0deg ); }
4449
+ 100% { -webkit-transform: rotate3d( 80,-70,10,180deg ); }
4450
+ }
4451
+
4452
+ @-moz-keyframes twirlOut {
4453
+ 0% { -moz-transform: rotate3d( 0,0,0,0deg ); }
4454
+ 100% { -moz-transform: rotate3d( 80,70,10,180deg ); }
4455
+ }
4456
+
4457
+ @-o-keyframes twirlOut {
4458
+ 0% { -o-transform: rotate3d( 0,0,0,0deg ); }
4459
+ 100% { -o-transform: rotate3d( 80,70,10,180deg ); }
4460
+ }
4461
+
4462
+ @keyframes twirlOut {
4463
+ 0% { transform: rotate3d( 0,0,0,0deg ); }
4464
+ 100% { transform: rotate3d( 80,70,10,180deg ); }
4465
+ }
4466
+
4467
+
assets/css/animate.css DELETED
@@ -1,3360 +0,0 @@
1
- @charset "UTF-8";
2
-
3
- .eds-scroll-hidden{
4
- opacity:0;
5
- }
6
-
7
- .eds-scroll-visible{
8
- opacity:1;
9
- }
10
-
11
-
12
- /*Delay classes*/
13
- .delay1 {
14
- -webkit-animation-delay: .5s;
15
- -moz-animation-delay: .5s;
16
- -ms-animation-delay: .5s;
17
- -o-animation-delay: .5s;
18
- }
19
-
20
- .delay2 {
21
- -webkit-animation-delay: 1s;
22
- -moz-animation-delay: 1s;
23
- -ms-animation-delay: 1s;
24
- -o-animation-delay: 1s;
25
- }
26
-
27
- .delay3 {
28
- -webkit-animation-delay: 1.5s;
29
- -moz-animation-delay: 1.5s;
30
- -ms-animation-delay: 1.5s;
31
- -o-animation-delay: 1.5s;
32
- }
33
-
34
- .delay4 {
35
- -webkit-animation-delay: 2s;
36
- -moz-animation-delay: 2s;
37
- -ms-animation-delay: 2s;
38
- -o-animation-delay: 2s;
39
- }
40
-
41
- .delay5 {
42
- -webkit-animation-delay: 2.5s;
43
- -moz-animation-delay: 2.5s;
44
- -ms-animation-delay: 2.5s;
45
- -o-animation-delay: 2.5s;
46
- }
47
-
48
- .delay6 {
49
- -webkit-animation-delay: 3s;
50
- -moz-animation-delay: 3s;
51
- -ms-animation-delay: 3s;
52
- -o-animation-delay: 3s;
53
- }
54
-
55
- .delay7 {
56
- -webkit-animation-delay: 3.5s;
57
- -moz-animation-delay: 3.5s;
58
- -ms-animation-delay: 3.5s;
59
- -o-animation-delay: 3.5s;
60
- }
61
-
62
- .delay8 {
63
- -webkit-animation-delay: 4s;
64
- -moz-animation-delay: 4s;
65
- -ms-animation-delay: 4s;
66
- -o-animation-delay: 4s;
67
- }
68
-
69
- .delay9 {
70
- -webkit-animation-delay: 4.5s;
71
- -moz-animation-delay: 4.5s;
72
- -ms-animation-delay: 4.5s;
73
- -o-animation-delay: 4.5s;
74
- }
75
-
76
- .delay10 {
77
- -webkit-animation-delay: 5s;
78
- -moz-animation-delay: 5s;
79
- -ms-animation-delay: 5s;
80
- -o-animation-delay: 5s;
81
- }
82
-
83
- .delay11 {
84
- -webkit-animation-delay: 5.5s;
85
- -moz-animation-delay: 5.5s;
86
- -ms-animation-delay: 5.5s;
87
- -o-animation-delay: 5.5s;
88
- }
89
-
90
- .delay12 {
91
- -webkit-animation-delay: 6s;
92
- -moz-animation-delay: 6s;
93
- -ms-animation-delay: 6s;
94
- -o-animation-delay: 6s;
95
- }
96
-
97
- /*Duration Classes*/
98
- .duration1 {
99
- -webkit-animation-duration: .5s !important;
100
- -moz-animation-duration: .5s !important;
101
- -ms-animation-duration: .5s !important;
102
- -o-animation-duration: .5s !important;
103
- }
104
-
105
- .duration2 {
106
- -webkit-animation-duration: 1s !important;
107
- -moz-animation-duration: 1s !important;
108
- -ms-animation-duration: 1s !important;
109
- -o-animation-duration: 1s !important;
110
- }
111
-
112
- .duration3 {
113
- -webkit-animation-duration: 1.5s !important;
114
- -moz-animation-duration: 1.5s !important;
115
- -ms-animation-duration: 1.5s !important;
116
- -o-animation-duration: 1.5s !important;
117
- }
118
-
119
- .duration4 {
120
- -webkit-animation-duration: 2s !important;
121
- -moz-animation-duration: 2s !important;
122
- -ms-animation-duration: 2s !important;
123
- -o-animation-duration: 2s !important;
124
- }
125
-
126
- .duration5 {
127
- -webkit-animation-duration: 2.5s !important;
128
- -moz-animation-duration: 2.5s !important;
129
- -ms-animation-duration: 2.5s !important;
130
- -o-animation-duration: 2.5s !important;
131
- }
132
-
133
- .duration6 {
134
- -webkit-animation-duration: 3s !important;
135
- -moz-animation-duration: 3s !important;
136
- -ms-animation-duration: 3s !important;
137
- -o-animation-duration: 3s !important;
138
- }
139
-
140
- .duration7 {
141
- -webkit-animation-duration: 3.5s !important;
142
- -moz-animation-duration: 3.5s !important;
143
- -ms-animation-duration: 3.5s !important;
144
- -o-animation-duration: 3.5s !important;
145
- }
146
-
147
- .duration8 {
148
- -webkit-animation-duration: 4s !important;
149
- -moz-animation-duration: 4s !important;
150
- -ms-animation-duration: 4s !important;
151
- -o-animation-duration: 4s !important;
152
- }
153
-
154
- .duration9 {
155
- -webkit-animation-duration: 4.5s !important;
156
- -moz-animation-duration: 4.5s !important;
157
- -ms-animation-duration: 4.5s !important;
158
- -o-animation-duration: 4.5s !important;
159
- }
160
-
161
- .duration10 {
162
- -webkit-animation-duration: 5s !important;
163
- -moz-animation-duration: 5s !important;
164
- -ms-animation-duration: 5s !important;
165
- -o-animation-duration: 5s !important;
166
- }
167
-
168
- .duration11 {
169
- -webkit-animation-duration: 5.5s !important;
170
- -moz-animation-duration: 5.5s !important;
171
- -ms-animation-duration: 5.5s !important;
172
- -o-animation-duration: 5.5s !important;
173
- }
174
-
175
- .duration12 {
176
- -webkit-animation-duration: 6s !important;
177
- -moz-animation-duration: 6s !important;
178
- -ms-animation-duration: 6s !important;
179
- -o-animation-duration: 6s !important;
180
- }
181
-
182
- .duration13 {
183
- -webkit-animation-duration: 6.5s !important;
184
- -moz-animation-duration: 6.5s !important;
185
- -ms-animation-duration: 6.5s !important;
186
- -o-animation-duration: 6.5s !important;
187
- }
188
-
189
- .duration14 {
190
- -webkit-animation-duration: 7s !important;
191
- -moz-animation-duration: 7s !important;
192
- -ms-animation-duration: 7s !important;
193
- -o-animation-duration: 7s !important;
194
- }
195
-
196
- .duration15 {
197
- -webkit-animation-duration: 7.5s !important;
198
- -moz-animation-duration: 7.5s !important;
199
- -ms-animation-duration: 7.5s !important;
200
- -o-animation-duration: 7.5s !important;
201
- }
202
-
203
- .duration16 {
204
- -webkit-animation-duration: 8s !important;
205
- -moz-animation-duration: 8s !important;
206
- -ms-animation-duration: 8s !important;
207
- -o-animation-duration: 8s !important;
208
- }
209
-
210
- .duration17 {
211
- -webkit-animation-duration: 8.5s !important;
212
- -moz-animation-duration: 8.5s !important;
213
- -ms-animation-duration: 8.5s !important;
214
- -o-animation-duration: 8.5s !important;
215
- }
216
-
217
- .duration18 {
218
- -webkit-animation-duration: 9s !important;
219
- -moz-animation-duration: 9s !important;
220
- -ms-animation-duration: 9s !important;
221
- -o-animation-duration: 9s !important;
222
- }
223
-
224
- .duration19 {
225
- -webkit-animation-duration: 9.5s !important;
226
- -moz-animation-duration: 9.5s !important;
227
- -ms-animation-duration: 9.5s !important;
228
- -o-animation-duration: 9.5s !important;
229
- }
230
-
231
- .duration20 {
232
- -webkit-animation-duration: 10s !important;
233
- -moz-animation-duration: 10s !important;
234
- -ms-animation-duration: 10s !important;
235
- -o-animation-duration: 10s !important;
236
- }
237
-
238
- /*!
239
- Animate.css - http://daneden.me/animate
240
- Licensed under the MIT license - http://opensource.org/licenses/MIT
241
-
242
- Copyright (c) 2014 Daniel Eden
243
- */
244
-
245
- .animated {
246
- -webkit-animation-duration: 1s;
247
- animation-duration: 1s;
248
- -webkit-animation-fill-mode: both;
249
- animation-fill-mode: both;
250
- }
251
-
252
- .animated.infinite {
253
- -webkit-animation-iteration-count: infinite;
254
- animation-iteration-count: infinite;
255
- }
256
-
257
- .animated.hinge {
258
- -webkit-animation-duration: 2s;
259
- animation-duration: 2s;
260
- }
261
-
262
- @-webkit-keyframes bounce {
263
- 0%, 20%, 53%, 80%, 100% {
264
- -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
265
- transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
266
- -webkit-transform: translate3d(0,0,0);
267
- transform: translate3d(0,0,0);
268
- }
269
-
270
- 40%, 43% {
271
- -webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
272
- transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
273
- -webkit-transform: translate3d(0, -30px, 0);
274
- transform: translate3d(0, -30px, 0);
275
- }
276
-
277
- 70% {
278
- -webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
279
- transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
280
- -webkit-transform: translate3d(0, -15px, 0);
281
- transform: translate3d(0, -15px, 0);
282
- }
283
-
284
- 90% {
285
- -webkit-transform: translate3d(0,-4px,0);
286
- transform: translate3d(0,-4px,0);
287
- }
288
- }
289
-
290
- @keyframes bounce {
291
- 0%, 20%, 53%, 80%, 100% {
292
- -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
293
- transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
294
- -webkit-transform: translate3d(0,0,0);
295
- -ms-transform: translate3d(0,0,0);
296
- transform: translate3d(0,0,0);
297
- }
298
-
299
- 40%, 43% {
300
- -webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
301
- transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
302
- -webkit-transform: translate3d(0, -30px, 0);
303
- -ms-transform: translate3d(0, -30px, 0);
304
- transform: translate3d(0, -30px, 0);
305
- }
306
-
307
- 70% {
308
- -webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
309
- transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
310
- -webkit-transform: translate3d(0, -15px, 0);
311
- -ms-transform: translate3d(0, -15px, 0);
312
- transform: translate3d(0, -15px, 0);
313
- }
314
-
315
- 90% {
316
- -webkit-transform: translate3d(0,-4px,0);
317
- -ms-transform: translate3d(0,-4px,0);
318
- transform: translate3d(0,-4px,0);
319
- }
320
- }
321
-
322
- .bounce {
323
- -webkit-animation-name: bounce;
324
- animation-name: bounce;
325
- -webkit-transform-origin: center bottom;
326
- -ms-transform-origin: center bottom;
327
- transform-origin: center bottom;
328
- }
329
-
330
- @-webkit-keyframes flash {
331
- 0%, 50%, 100% {
332
- opacity: 1;
333
- }
334
-
335
- 25%, 75% {
336
- opacity: 0;
337
- }
338
- }
339
-
340
- @keyframes flash {
341
- 0%, 50%, 100% {
342
- opacity: 1;
343
- }
344
-
345
- 25%, 75% {
346
- opacity: 0;
347
- }
348
- }
349
-
350
- .flash {
351
- -webkit-animation-name: flash;
352
- animation-name: flash;
353
- }
354
-
355
- /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
356
-
357
- @-webkit-keyframes pulse {
358
- 0% {
359
- -webkit-transform: scale3d(1, 1, 1);
360
- transform: scale3d(1, 1, 1);
361
- }
362
-
363
- 50% {
364
- -webkit-transform: scale3d(1.05, 1.05, 1.05);
365
- transform: scale3d(1.05, 1.05, 1.05);
366
- }
367
-
368
- 100% {
369
- -webkit-transform: scale3d(1, 1, 1);
370
- transform: scale3d(1, 1, 1);
371
- }
372
- }
373
-
374
- @keyframes pulse {
375
- 0% {
376
- -webkit-transform: scale3d(1, 1, 1);
377
- -ms-transform: scale3d(1, 1, 1);
378
- transform: scale3d(1, 1, 1);
379
- }
380
-
381
- 50% {
382
- -webkit-transform: scale3d(1.05, 1.05, 1.05);
383
- -ms-transform: scale3d(1.05, 1.05, 1.05);
384
- transform: scale3d(1.05, 1.05, 1.05);
385
- }
386
-
387
- 100% {
388
- -webkit-transform: scale3d(1, 1, 1);
389
- -ms-transform: scale3d(1, 1, 1);
390
- transform: scale3d(1, 1, 1);
391
- }
392
- }
393
-
394
- .pulse {
395
- -webkit-animation-name: pulse;
396
- animation-name: pulse;
397
- }
398
-
399
- @-webkit-keyframes rubberBand {
400
- 0% {
401
- -webkit-transform: scale3d(1, 1, 1);
402
- transform: scale3d(1, 1, 1);
403
- }
404
-
405
- 30% {
406
- -webkit-transform: scale3d(1.25, 0.75, 1);
407
- transform: scale3d(1.25, 0.75, 1);
408
- }
409
-
410
- 40% {
411
- -webkit-transform: scale3d(0.75, 1.25, 1);
412
- transform: scale3d(0.75, 1.25, 1);
413
- }
414
-
415
- 50% {
416
- -webkit-transform: scale3d(1.15, 0.85, 1);
417
- transform: scale3d(1.15, 0.85, 1);
418
- }
419
-
420
- 65% {
421
- -webkit-transform: scale3d(.95, 1.05, 1);
422
- transform: scale3d(.95, 1.05, 1);
423
- }
424
-
425
- 75% {
426
- -webkit-transform: scale3d(1.05, .95, 1);
427
- transform: scale3d(1.05, .95, 1);
428
- }
429
-
430
- 100% {
431
- -webkit-transform: scale3d(1, 1, 1);
432
- transform: scale3d(1, 1, 1);
433
- }
434
- }
435
-
436
- @keyframes rubberBand {
437
- 0% {
438
- -webkit-transform: scale3d(1, 1, 1);
439
- -ms-transform: scale3d(1, 1, 1);
440
- transform: scale3d(1, 1, 1);
441
- }
442
-
443
- 30% {
444
- -webkit-transform: scale3d(1.25, 0.75, 1);
445
- -ms-transform: scale3d(1.25, 0.75, 1);
446
- transform: scale3d(1.25, 0.75, 1);
447
- }
448
-
449
- 40% {
450
- -webkit-transform: scale3d(0.75, 1.25, 1);
451
- -ms-transform: scale3d(0.75, 1.25, 1);
452
- transform: scale3d(0.75, 1.25, 1);
453
- }
454
-
455
- 50% {
456
- -webkit-transform: scale3d(1.15, 0.85, 1);
457
- -ms-transform: scale3d(1.15, 0.85, 1);
458
- transform: scale3d(1.15, 0.85, 1);
459
- }
460
-
461
- 65% {
462
- -webkit-transform: scale3d(.95, 1.05, 1);
463
- -ms-transform: scale3d(.95, 1.05, 1);
464
- transform: scale3d(.95, 1.05, 1);
465
- }
466
-
467
- 75% {
468
- -webkit-transform: scale3d(1.05, .95, 1);
469
- -ms-transform: scale3d(1.05, .95, 1);
470
- transform: scale3d(1.05, .95, 1);
471
- }
472
-
473
- 100% {
474
- -webkit-transform: scale3d(1, 1, 1);
475
- -ms-transform: scale3d(1, 1, 1);
476
- transform: scale3d(1, 1, 1);
477
- }
478
- }
479
-
480
- .rubberBand {
481
- -webkit-animation-name: rubberBand;
482
- animation-name: rubberBand;
483
- }
484
-
485
- @-webkit-keyframes shake {
486
- 0%, 100% {
487
- -webkit-transform: translate3d(0, 0, 0);
488
- transform: translate3d(0, 0, 0);
489
- }
490
-
491
- 10%, 30%, 50%, 70%, 90% {
492
- -webkit-transform: translate3d(-10px, 0, 0);
493
- transform: translate3d(-10px, 0, 0);
494
- }
495
-
496
- 20%, 40%, 60%, 80% {
497
- -webkit-transform: translate3d(10px, 0, 0);
498
- transform: translate3d(10px, 0, 0);
499
- }
500
- }
501
-
502
- @keyframes shake {
503
- 0%, 100% {
504
- -webkit-transform: translate3d(0, 0, 0);
505
- -ms-transform: translate3d(0, 0, 0);
506
- transform: translate3d(0, 0, 0);
507
- }
508
-
509
- 10%, 30%, 50%, 70%, 90% {
510
- -webkit-transform: translate3d(-10px, 0, 0);
511
- -ms-transform: translate3d(-10px, 0, 0);
512
- transform: translate3d(-10px, 0, 0);
513
- }
514
-
515
- 20%, 40%, 60%, 80% {
516
- -webkit-transform: translate3d(10px, 0, 0);
517
- -ms-transform: translate3d(10px, 0, 0);
518
- transform: translate3d(10px, 0, 0);
519
- }
520
- }
521
-
522
- .shake {
523
- -webkit-animation-name: shake;
524
- animation-name: shake;
525
- }
526
-
527
- @-webkit-keyframes swing {
528
- 20% {
529
- -webkit-transform: rotate3d(0, 0, 1, 15deg);
530
- transform: rotate3d(0, 0, 1, 15deg);
531
- }
532
-
533
- 40% {
534
- -webkit-transform: rotate3d(0, 0, 1, -10deg);
535
- transform: rotate3d(0, 0, 1, -10deg);
536
- }
537
-
538
- 60% {
539
- -webkit-transform: rotate3d(0, 0, 1, 5deg);
540
- transform: rotate3d(0, 0, 1, 5deg);
541
- }
542
-
543
- 80% {
544
- -webkit-transform: rotate3d(0, 0, 1, -5deg);
545
- transform: rotate3d(0, 0, 1, -5deg);
546
- }
547
-
548
- 100% {
549
- -webkit-transform: rotate3d(0, 0, 1, 0deg);
550
- transform: rotate3d(0, 0, 1, 0deg);
551
- }
552
- }
553
-
554
- @keyframes swing {
555
- 20% {
556
- -webkit-transform: rotate3d(0, 0, 1, 15deg);
557
- -ms-transform: rotate3d(0, 0, 1, 15deg);
558
- transform: rotate3d(0, 0, 1, 15deg);
559
- }
560
-
561
- 40% {
562
- -webkit-transform: rotate3d(0, 0, 1, -10deg);
563
- -ms-transform: rotate3d(0, 0, 1, -10deg);
564
- transform: rotate3d(0, 0, 1, -10deg);
565
- }
566
-
567
- 60% {
568
- -webkit-transform: rotate3d(0, 0, 1, 5deg);
569
- -ms-transform: rotate3d(0, 0, 1, 5deg);
570
- transform: rotate3d(0, 0, 1, 5deg);
571
- }
572
-
573
- 80% {
574
- -webkit-transform: rotate3d(0, 0, 1, -5deg);
575
- -ms-transform: rotate3d(0, 0, 1, -5deg);
576
- transform: rotate3d(0, 0, 1, -5deg);
577
- }
578
-
579
- 100% {
580
- -webkit-transform: rotate3d(0, 0, 1, 0deg);
581
- -ms-transform: rotate3d(0, 0, 1, 0deg);
582
- transform: rotate3d(0, 0, 1, 0deg);
583
- }
584
- }
585
-
586
- .swing {
587
- -webkit-transform-origin: top center;
588
- -ms-transform-origin: top center;
589
- transform-origin: top center;
590
- -webkit-animation-name: swing;
591
- animation-name: swing;
592
- }
593
-
594
- @-webkit-keyframes tada {
595
- 0% {
596
- -webkit-transform: scale3d(1, 1, 1);
597
- transform: scale3d(1, 1, 1);
598
- }
599
-
600
- 10%, 20% {
601
- -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);
602
- transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);
603
- }
604
-
605
- 30%, 50%, 70%, 90% {
606
- -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
607
- transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
608
- }
609
-
610
- 40%, 60%, 80% {
611
- -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
612
- transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
613
- }
614
-
615
- 100% {
616
- -webkit-transform: scale3d(1, 1, 1);
617
- transform: scale3d(1, 1, 1);
618
- }
619
- }
620
-
621
- @keyframes tada {
622
- 0% {
623
- -webkit-transform: scale3d(1, 1, 1);
624
- -ms-transform: scale3d(1, 1, 1);
625
- transform: scale3d(1, 1, 1);
626
- }
627
-
628
- 10%, 20% {
629
- -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);
630
- -ms-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);
631
- transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);
632
- }
633
-
634
- 30%, 50%, 70%, 90% {
635
- -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
636
- -ms-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
637
- transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
638
- }
639
-
640
- 40%, 60%, 80% {
641
- -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
642
- -ms-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
643
- transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
644
- }
645
-
646
- 100% {
647
- -webkit-transform: scale3d(1, 1, 1);
648
- -ms-transform: scale3d(1, 1, 1);
649
- transform: scale3d(1, 1, 1);
650
- }
651
- }
652
-
653
- .tada {
654
- -webkit-animation-name: tada;
655
- animation-name: tada;
656
- }
657
-
658
- /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
659
-
660
- @-webkit-keyframes wobble {
661
- 0% {
662
- -webkit-transform: none;
663
- transform: none;
664
- }
665
-
666
- 15% {
667
- -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
668
- transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
669
- }
670
-
671
- 30% {
672
- -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
673
- transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
674
- }
675
-
676
- 45% {
677
- -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
678
- transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
679
- }
680
-
681
- 60% {
682
- -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
683
- transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
684
- }
685
-
686
- 75% {
687
- -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
688
- transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
689
- }
690
-
691
- 100% {
692
- -webkit-transform: none;
693
- transform: none;
694
- }
695
- }
696
-
697
- @keyframes wobble {
698
- 0% {
699
- -webkit-transform: none;
700
- -ms-transform: none;
701
- transform: none;
702
- }
703
-
704
- 15% {
705
- -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
706
- -ms-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
707
- transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
708
- }
709
-
710
- 30% {
711
- -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
712
- -ms-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
713
- transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
714
- }
715
-
716
- 45% {
717
- -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
718
- -ms-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
719
- transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
720
- }
721
-
722
- 60% {
723
- -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
724
- -ms-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
725
- transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
726
- }
727
-
728
- 75% {
729
- -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
730
- -ms-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
731
- transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
732
- }
733
-
734
- 100% {
735
- -webkit-transform: none;
736
- -ms-transform: none;
737
- transform: none;
738
- }
739
- }
740
-
741
- .wobble {
742
- -webkit-animation-name: wobble;
743
- animation-name: wobble;
744
- }
745
-
746
- @-webkit-keyframes bounceIn {
747
- 0%, 20%, 40%, 60%, 80%, 100% {
748
- -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
749
- transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
750
- }
751
-
752
- 0% {
753
- opacity: 0;
754
- -webkit-transform: scale3d(.3, .3, .3);
755
- transform: scale3d(.3, .3, .3);
756
- }
757
-
758
- 20% {
759
- -webkit-transform: scale3d(1.1, 1.1, 1.1);
760
- transform: scale3d(1.1, 1.1, 1.1);
761
- }
762
-
763
- 40% {
764
- -webkit-transform: scale3d(.9, .9, .9);
765
- transform: scale3d(.9, .9, .9);
766
- }
767
-
768
- 60% {
769
- opacity: 1;
770
- -webkit-transform: scale3d(1.03, 1.03, 1.03);
771
- transform: scale3d(1.03, 1.03, 1.03);
772
- }
773
-
774
- 80% {
775
- -webkit-transform: scale3d(.97, .97, .97);
776
- transform: scale3d(.97, .97, .97);
777
- }
778
-
779
- 100% {
780
- opacity: 1;
781
- -webkit-transform: scale3d(1, 1, 1);
782
- transform: scale3d(1, 1, 1);
783
- }
784
- }
785
-
786
- @keyframes bounceIn {
787
- 0%, 20%, 40%, 60%, 80%, 100% {
788
- -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
789
- transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
790
- }
791
-
792
- 0% {
793
- opacity: 0;
794
- -webkit-transform: scale3d(.3, .3, .3);
795
- -ms-transform: scale3d(.3, .3, .3);
796
- transform: scale3d(.3, .3, .3);
797
- }
798
-
799
- 20% {
800
- -webkit-transform: scale3d(1.1, 1.1, 1.1);
801
- -ms-transform: scale3d(1.1, 1.1, 1.1);
802
- transform: scale3d(1.1, 1.1, 1.1);
803
- }
804
-
805
- 40% {
806
- -webkit-transform: scale3d(.9, .9, .9);
807
- -ms-transform: scale3d(.9, .9, .9);
808
- transform: scale3d(.9, .9, .9);
809
- }
810
-
811
- 60% {
812
- opacity: 1;
813
- -webkit-transform: scale3d(1.03, 1.03, 1.03);
814
- -ms-transform: scale3d(1.03, 1.03, 1.03);
815
- transform: scale3d(1.03, 1.03, 1.03);
816
- }
817
-
818
- 80% {
819
- -webkit-transform: scale3d(.97, .97, .97);
820
- -ms-transform: scale3d(.97, .97, .97);
821
- transform: scale3d(.97, .97, .97);
822
- }
823
-
824
- 100% {
825
- opacity: 1;
826
- -webkit-transform: scale3d(1, 1, 1);
827
- -ms-transform: scale3d(1, 1, 1);
828
- transform: scale3d(1, 1, 1);
829
- }
830
- }
831
-
832
- .bounceIn {
833
- -webkit-animation-name: bounceIn;
834
- animation-name: bounceIn;
835
- -webkit-animation-duration: .75s;
836
- animation-duration: .75s;
837
- }
838
-
839
- @-webkit-keyframes bounceInDown {
840
- 0%, 60%, 75%, 90%, 100% {
841
- -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
842
- transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
843
- }
844
-
845
- 0% {
846
- opacity: 0;
847
- -webkit-transform: translate3d(0, -3000px, 0);
848
- transform: translate3d(0, -3000px, 0);
849
- }
850
-
851
- 60% {
852
- opacity: 1;
853
- -webkit-transform: translate3d(0, 25px, 0);
854
- transform: translate3d(0, 25px, 0);
855
- }
856
-
857
- 75% {
858
- -webkit-transform: translate3d(0, -10px, 0);
859
- transform: translate3d(0, -10px, 0);
860
- }
861
-
862
- 90% {
863
- -webkit-transform: translate3d(0, 5px, 0);
864
- transform: translate3d(0, 5px, 0);
865
- }
866
-
867
- 100% {
868
- -webkit-transform: none;
869
- transform: none;
870
- }
871
- }
872
-
873
- @keyframes bounceInDown {
874
- 0%, 60%, 75%, 90%, 100% {
875
- -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
876
- transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
877
- }
878
-
879
- 0% {
880
- opacity: 0;
881
- -webkit-transform: translate3d(0, -3000px, 0);
882
- -ms-transform: translate3d(0, -3000px, 0);
883
- transform: translate3d(0, -3000px, 0);
884
- }
885
-
886
- 60% {
887
- opacity: 1;
888
- -webkit-transform: translate3d(0, 25px, 0);
889
- -ms-transform: translate3d(0, 25px, 0);
890
- transform: translate3d(0, 25px, 0);
891
- }
892
-
893
- 75% {
894
- -webkit-transform: translate3d(0, -10px, 0);
895
- -ms-transform: translate3d(0, -10px, 0);
896
- transform: translate3d(0, -10px, 0);
897
- }
898
-
899
- 90% {
900
- -webkit-transform: translate3d(0, 5px, 0);
901
- -ms-transform: translate3d(0, 5px, 0);
902
- transform: translate3d(0, 5px, 0);
903
- }
904
-
905
- 100% {
906
- -webkit-transform: none;
907
- -ms-transform: none;
908
- transform: none;
909
- }
910
- }
911
-
912
- .bounceInDown {
913
- -webkit-animation-name: bounceInDown;
914
- animation-name: bounceInDown;
915
- }
916
-
917
- @-webkit-keyframes bounceInLeft {
918
- 0%, 60%, 75%, 90%, 100% {
919
- -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
920
- transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
921
- }
922
-
923
- 0% {
924
- opacity: 0;
925
- -webkit-transform: translate3d(-3000px, 0, 0);
926
- transform: translate3d(-3000px, 0, 0);
927
- }
928
-
929
- 60% {
930
- opacity: 1;
931
- -webkit-transform: translate3d(25px, 0, 0);
932
- transform: translate3d(25px, 0, 0);
933
- }
934
-
935
- 75% {
936
- -webkit-transform: translate3d(-10px, 0, 0);
937
- transform: translate3d(-10px, 0, 0);
938
- }
939
-
940
- 90% {
941
- -webkit-transform: translate3d(5px, 0, 0);
942
- transform: translate3d(5px, 0, 0);
943
- }
944
-
945
- 100% {
946
- -webkit-transform: none;
947
- transform: none;
948
- }
949
- }
950
-
951
- @keyframes bounceInLeft {
952
- 0%, 60%, 75%, 90%, 100% {
953
- -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
954
- transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
955
- }
956
-
957
- 0% {
958
- opacity: 0;
959
- -webkit-transform: translate3d(-3000px, 0, 0);
960
- -ms-transform: translate3d(-3000px, 0, 0);
961
- transform: translate3d(-3000px, 0, 0);
962
- }
963
-
964
- 60% {
965
- opacity: 1;
966
- -webkit-transform: translate3d(25px, 0, 0);
967
- -ms-transform: translate3d(25px, 0, 0);
968
- transform: translate3d(25px, 0, 0);
969
- }
970
-
971
- 75% {
972
- -webkit-transform: translate3d(-10px, 0, 0);
973
- -ms-transform: translate3d(-10px, 0, 0);
974
- transform: translate3d(-10px, 0, 0);
975
- }
976
-
977
- 90% {
978
- -webkit-transform: translate3d(5px, 0, 0);
979
- -ms-transform: translate3d(5px, 0, 0);
980
- transform: translate3d(5px, 0, 0);
981
- }
982
-
983
- 100% {
984
- -webkit-transform: none;
985
- -ms-transform: none;
986
- transform: none;
987
- }
988
- }
989
-
990
- .bounceInLeft {
991
- -webkit-animation-name: bounceInLeft;
992
- animation-name: bounceInLeft;
993
- }
994
-
995
- @-webkit-keyframes bounceInRight {
996
- 0%, 60%, 75%, 90%, 100% {
997
- -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
998
- transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
999
- }
1000
-
1001
- 0% {
1002
- opacity: 0;
1003
- -webkit-transform: translate3d(3000px, 0, 0);
1004
- transform: translate3d(3000px, 0, 0);
1005
- }
1006
-
1007
- 60% {
1008
- opacity: 1;
1009
- -webkit-transform: translate3d(-25px, 0, 0);
1010
- transform: translate3d(-25px, 0, 0);
1011
- }
1012
-
1013
- 75% {
1014
- -webkit-transform: translate3d(10px, 0, 0);
1015
- transform: translate3d(10px, 0, 0);
1016
- }
1017
-
1018
- 90% {
1019
- -webkit-transform: translate3d(-5px, 0, 0);
1020
- transform: translate3d(-5px, 0, 0);
1021
- }
1022
-
1023
- 100% {
1024
- -webkit-transform: none;
1025
- transform: none;
1026
- }
1027
- }
1028
-
1029
- @keyframes bounceInRight {
1030
- 0%, 60%, 75%, 90%, 100% {
1031
- -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
1032
- transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
1033
- }
1034
-
1035
- 0% {
1036
- opacity: 0;
1037
- -webkit-transform: translate3d(3000px, 0, 0);
1038
- -ms-transform: translate3d(3000px, 0, 0);
1039
- transform: translate3d(3000px, 0, 0);
1040
- }
1041
-
1042
- 60% {
1043
- opacity: 1;
1044
- -webkit-transform: translate3d(-25px, 0, 0);
1045
- -ms-transform: translate3d(-25px, 0, 0);
1046
- transform: translate3d(-25px, 0, 0);
1047
- }
1048
-
1049
- 75% {
1050
- -webkit-transform: translate3d(10px, 0, 0);
1051
- -ms-transform: translate3d(10px, 0, 0);
1052
- transform: translate3d(10px, 0, 0);
1053
- }
1054
-
1055
- 90% {
1056
- -webkit-transform: translate3d(-5px, 0, 0);
1057
- -ms-transform: translate3d(-5px, 0, 0);
1058
- transform: translate3d(-5px, 0, 0);
1059
- }
1060
-
1061
- 100% {
1062
- -webkit-transform: none;
1063
- -ms-transform: none;
1064
- transform: none;
1065
- }
1066
- }
1067
-
1068
- .bounceInRight {
1069
- -webkit-animation-name: bounceInRight;
1070
- animation-name: bounceInRight;
1071
- }
1072
-
1073
- @-webkit-keyframes bounceInUp {
1074
- 0%, 60%, 75%, 90%, 100% {
1075
- -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
1076
- transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
1077
- }
1078
-
1079
- 0% {
1080
- opacity: 0;
1081
- -webkit-transform: translate3d(0, 3000px, 0);
1082
- transform: translate3d(0, 3000px, 0);
1083
- }
1084
-
1085
- 60% {
1086
- opacity: 1;
1087
- -webkit-transform: translate3d(0, -20px, 0);
1088
- transform: translate3d(0, -20px, 0);
1089
- }
1090
-
1091
- 75% {
1092
- -webkit-transform: translate3d(0, 10px, 0);
1093
- transform: translate3d(0, 10px, 0);
1094
- }
1095
-
1096
- 90% {
1097
- -webkit-transform: translate3d(0, -5px, 0);
1098
- transform: translate3d(0, -5px, 0);
1099
- }
1100
-
1101
- 100% {
1102
- -webkit-transform: translate3d(0, 0, 0);
1103
- transform: translate3d(0, 0, 0);
1104
- }
1105
- }
1106
-
1107
- @keyframes bounceInUp {
1108
- 0%, 60%, 75%, 90%, 100% {
1109
- -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
1110
- transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
1111
- }
1112
-
1113
- 0% {
1114
- opacity: 0;
1115
- -webkit-transform: translate3d(0, 3000px, 0);
1116
- -ms-transform: translate3d(0, 3000px, 0);
1117
- transform: translate3d(0, 3000px, 0);
1118
- }
1119
-
1120
- 60% {
1121
- opacity: 1;
1122
- -webkit-transform: translate3d(0, -20px, 0);
1123
- -ms-transform: translate3d(0, -20px, 0);
1124
- transform: translate3d(0, -20px, 0);
1125
- }
1126
-
1127
- 75% {
1128
- -webkit-transform: translate3d(0, 10px, 0);
1129
- -ms-transform: translate3d(0, 10px, 0);
1130
- transform: translate3d(0, 10px, 0);
1131
- }
1132
-
1133
- 90% {
1134
- -webkit-transform: translate3d(0, -5px, 0);
1135
- -ms-transform: translate3d(0, -5px, 0);
1136
- transform: translate3d(0, -5px, 0);
1137
- }
1138
-
1139
- 100% {
1140
- -webkit-transform: translate3d(0, 0, 0);
1141
- -ms-transform: translate3d(0, 0, 0);
1142
- transform: translate3d(0, 0, 0);
1143
- }
1144
- }
1145
-
1146
- .bounceInUp {
1147
- -webkit-animation-name: bounceInUp;
1148
- animation-name: bounceInUp;
1149
- }
1150
-
1151
- @-webkit-keyframes bounceOut {
1152
- 20% {
1153
- -webkit-transform: scale3d(.9, .9, .9);
1154
- transform: scale3d(.9, .9, .9);
1155
- }
1156
-
1157
- 50%, 55% {
1158
- opacity: 1;
1159
- -webkit-transform: scale3d(1.1, 1.1, 1.1);
1160
- transform: scale3d(1.1, 1.1, 1.1);
1161
- }
1162
-
1163
- 100% {
1164
- opacity: 0;
1165
- -webkit-transform: scale3d(.3, .3, .3);
1166
- transform: scale3d(.3, .3, .3);
1167
- }
1168
- }
1169
-
1170
- @keyframes bounceOut {
1171
- 20% {
1172
- -webkit-transform: scale3d(.9, .9, .9);
1173
- -ms-transform: scale3d(.9, .9, .9);
1174
- transform: scale3d(.9, .9, .9);
1175
- }
1176
-
1177
- 50%, 55% {
1178
- opacity: 1;
1179
- -webkit-transform: scale3d(1.1, 1.1, 1.1);
1180
- -ms-transform: scale3d(1.1, 1.1, 1.1);
1181
- transform: scale3d(1.1, 1.1, 1.1);
1182
- }
1183
-
1184
- 100% {
1185
- opacity: 0;
1186
- -webkit-transform: scale3d(.3, .3, .3);
1187
- -ms-transform: scale3d(.3, .3, .3);
1188
- transform: scale3d(.3, .3, .3);
1189
- }
1190
- }
1191
-
1192
- .bounceOut {
1193
- -webkit-animation-name: bounceOut;
1194
- animation-name: bounceOut;
1195
- -webkit-animation-duration: .75s;
1196
- animation-duration: .75s;
1197
- }
1198
-
1199
- @-webkit-keyframes bounceOutDown {
1200
- 20% {
1201
- -webkit-transform: translate3d(0, 10px, 0);
1202
- transform: translate3d(0, 10px, 0);
1203
- }
1204
-
1205
- 40%, 45% {
1206
- opacity: 1;
1207
- -webkit-transform: translate3d(0, -20px, 0);
1208
- transform: translate3d(0, -20px, 0);
1209
- }
1210
-
1211
- 100% {
1212
- opacity: 0;
1213
- -webkit-transform: translate3d(0, 2000px, 0);
1214
- transform: translate3d(0, 2000px, 0);
1215
- }
1216
- }
1217
-
1218
- @keyframes bounceOutDown {
1219
- 20% {
1220
- -webkit-transform: translate3d(0, 10px, 0);
1221
- -ms-transform: translate3d(0, 10px, 0);
1222
- transform: translate3d(0, 10px, 0);
1223
- }
1224
-
1225
- 40%, 45% {
1226
- opacity: 1;
1227
- -webkit-transform: translate3d(0, -20px, 0);
1228
- -ms-transform: translate3d(0, -20px, 0);
1229
- transform: translate3d(0, -20px, 0);
1230
- }
1231
-
1232
- 100% {
1233
- opacity: 0;
1234
- -webkit-transform: translate3d(0, 2000px, 0);
1235
- -ms-transform: translate3d(0, 2000px, 0);
1236
- transform: translate3d(0, 2000px, 0);
1237
- }
1238
- }
1239
-
1240
- .bounceOutDown {
1241
- -webkit-animation-name: bounceOutDown;
1242
- animation-name: bounceOutDown;
1243
- }
1244
-
1245
- @-webkit-keyframes bounceOutLeft {
1246
- 20% {
1247
- opacity: 1;
1248
- -webkit-transform: translate3d(20px, 0, 0);
1249
- transform: translate3d(20px, 0, 0);
1250
- }
1251
-
1252
- 100% {
1253
- opacity: 0;
1254
- -webkit-transform: translate3d(-2000px, 0, 0);
1255
- transform: translate3d(-2000px, 0, 0);
1256
- }
1257
- }
1258
-
1259
- @keyframes bounceOutLeft {
1260
- 20% {
1261
- opacity: 1;
1262
- -webkit-transform: translate3d(20px, 0, 0);
1263
- -ms-transform: translate3d(20px, 0, 0);
1264
- transform: translate3d(20px, 0, 0);
1265
- }
1266
-
1267
- 100% {
1268
- opacity: 0;
1269
- -webkit-transform: translate3d(-2000px, 0, 0);
1270
- -ms-transform: translate3d(-2000px, 0, 0);
1271
- transform: translate3d(-2000px, 0, 0);
1272
- }
1273
- }
1274
-
1275
- .bounceOutLeft {
1276
- -webkit-animation-name: bounceOutLeft;
1277
- animation-name: bounceOutLeft;
1278
- }
1279
-
1280
- @-webkit-keyframes bounceOutRight {
1281
- 20% {
1282
- opacity: 1;
1283
- -webkit-transform: translate3d(-20px, 0, 0);
1284
- transform: translate3d(-20px, 0, 0);
1285
- }
1286
-
1287
- 100% {
1288
- opacity: 0;
1289
- -webkit-transform: translate3d(2000px, 0, 0);
1290
- transform: translate3d(2000px, 0, 0);
1291
- }
1292
- }
1293
-
1294
- @keyframes bounceOutRight {
1295
- 20% {
1296
- opacity: 1;
1297
- -webkit-transform: translate3d(-20px, 0, 0);
1298
- -ms-transform: translate3d(-20px, 0, 0);
1299
- transform: translate3d(-20px, 0, 0);
1300
- }
1301
-
1302
- 100% {
1303
- opacity: 0;
1304
- -webkit-transform: translate3d(2000px, 0, 0);
1305
- -ms-transform: translate3d(2000px, 0, 0);
1306
- transform: translate3d(2000px, 0, 0);
1307
- }
1308
- }
1309
-
1310
- .bounceOutRight {
1311
- -webkit-animation-name: bounceOutRight;
1312
- animation-name: bounceOutRight;
1313
- }
1314
-
1315
- @-webkit-keyframes bounceOutUp {
1316
- 20% {
1317
- -webkit-transform: translate3d(0, -10px, 0);
1318
- transform: translate3d(0, -10px, 0);
1319
- }
1320
-
1321
- 40%, 45% {
1322
- opacity: 1;
1323
- -webkit-transform: translate3d(0, 20px, 0);
1324
- transform: translate3d(0, 20px, 0);
1325
- }
1326
-
1327
- 100% {
1328
- opacity: 0;
1329
- -webkit-transform: translate3d(0, -2000px, 0);
1330
- transform: translate3d(0, -2000px, 0);
1331
- }
1332
- }
1333
-
1334
- @keyframes bounceOutUp {
1335
- 20% {
1336
- -webkit-transform: translate3d(0, -10px, 0);
1337
- -ms-transform: translate3d(0, -10px, 0);
1338
- transform: translate3d(0, -10px, 0);
1339
- }
1340
-
1341
- 40%, 45% {
1342
- opacity: 1;
1343
- -webkit-transform: translate3d(0, 20px, 0);
1344
- -ms-transform: translate3d(0, 20px, 0);
1345
- transform: translate3d(0, 20px, 0);
1346
- }
1347
-
1348
- 100% {
1349
- opacity: 0;
1350
- -webkit-transform: translate3d(0, -2000px, 0);
1351
- -ms-transform: translate3d(0, -2000px, 0);
1352
- transform: translate3d(0, -2000px, 0);
1353
- }
1354
- }
1355
-
1356
- .bounceOutUp {
1357
- -webkit-animation-name: bounceOutUp;
1358
- animation-name: bounceOutUp;
1359
- }
1360
-
1361
- @-webkit-keyframes fadeIn {
1362
- 0% {
1363
- opacity: 0;
1364
- }
1365
-
1366
- 100% {
1367
- opacity: 1;
1368
- }
1369
- }
1370
-
1371
- @keyframes fadeIn {
1372
- 0% {
1373
- opacity: 0;
1374
- }
1375
-
1376
- 100% {
1377
- opacity: 1;
1378
- }
1379
- }
1380
-
1381
- .fadeIn {
1382
- -webkit-animation-name: fadeIn;
1383
- animation-name: fadeIn;
1384
- }
1385
-
1386
- @-webkit-keyframes fadeInDown {
1387
- 0% {
1388
- opacity: 0;
1389
- -webkit-transform: translate3d(0, -100%, 0);
1390
- transform: translate3d(0, -100%, 0);
1391
- }
1392
-
1393
- 100% {
1394
- opacity: 1;
1395
- -webkit-transform: none;
1396
- transform: none;
1397
- }
1398
- }
1399
-
1400
- @keyframes fadeInDown {
1401
- 0% {
1402
- opacity: 0;
1403
- -webkit-transform: translate3d(0, -100%, 0);
1404
- -ms-transform: translate3d(0, -100%, 0);
1405
- transform: translate3d(0, -100%, 0);
1406
- }
1407
-
1408
- 100% {
1409
- opacity: 1;
1410
- -webkit-transform: none;
1411
- -ms-transform: none;
1412
- transform: none;
1413
- }
1414
- }
1415
-
1416
- .fadeInDown {
1417
- -webkit-animation-name: fadeInDown;
1418
- animation-name: fadeInDown;
1419
- }
1420
-
1421
- @-webkit-keyframes fadeInDownBig {
1422
- 0% {
1423
- opacity: 0;
1424
- -webkit-transform: translate3d(0, -2000px, 0);
1425
- transform: translate3d(0, -2000px, 0);
1426
- }
1427
-
1428
- 100% {
1429
- opacity: 1;
1430
- -webkit-transform: none;
1431
- transform: none;
1432
- }
1433
- }
1434
-
1435
- @keyframes fadeInDownBig {
1436
- 0% {
1437
- opacity: 0;
1438
- -webkit-transform: translate3d(0, -2000px, 0);
1439
- -ms-transform: translate3d(0, -2000px, 0);
1440
- transform: translate3d(0, -2000px, 0);
1441
- }
1442
-
1443
- 100% {
1444
- opacity: 1;
1445
- -webkit-transform: none;
1446
- -ms-transform: none;
1447
- transform: none;
1448
- }
1449
- }
1450
-
1451
- .fadeInDownBig {
1452
- -webkit-animation-name: fadeInDownBig;
1453
- animation-name: fadeInDownBig;
1454
- }
1455
-
1456
- @-webkit-keyframes fadeInLeft {
1457
- 0% {
1458
- opacity: 0;
1459
- -webkit-transform: translate3d(-100%, 0, 0);
1460
- transform: translate3d(-100%, 0, 0);
1461
- }
1462
-
1463
- 100% {
1464
- opacity: 1;
1465
- -webkit-transform: none;
1466
- transform: none;
1467
- }
1468
- }
1469
-
1470
- @keyframes fadeInLeft {
1471
- 0% {
1472
- opacity: 0;
1473
- -webkit-transform: translate3d(-100%, 0, 0);
1474
- -ms-transform: translate3d(-100%, 0, 0);
1475
- transform: translate3d(-100%, 0, 0);
1476
- }
1477
-
1478
- 100% {
1479
- opacity: 1;
1480
- -webkit-transform: none;
1481
- -ms-transform: none;
1482
- transform: none;
1483
- }
1484
- }
1485
-
1486
- .fadeInLeft {
1487
- -webkit-animation-name: fadeInLeft;
1488
- animation-name: fadeInLeft;
1489
- }
1490
-
1491
- @-webkit-keyframes fadeInLeftBig {
1492
- 0% {
1493
- opacity: 0;
1494
- -webkit-transform: translate3d(-2000px, 0, 0);
1495
- transform: translate3d(-2000px, 0, 0);
1496
- }
1497
-
1498
- 100% {
1499
- opacity: 1;
1500
- -webkit-transform: none;
1501
- transform: none;
1502
- }
1503
- }
1504
-
1505
- @keyframes fadeInLeftBig {
1506
- 0% {
1507
- opacity: 0;
1508
- -webkit-transform: translate3d(-2000px, 0, 0);
1509
- -ms-transform: translate3d(-2000px, 0, 0);
1510
- transform: translate3d(-2000px, 0, 0);
1511
- }
1512
-
1513
- 100% {
1514
- opacity: 1;
1515
- -webkit-transform: none;
1516
- -ms-transform: none;
1517
- transform: none;
1518
- }
1519
- }
1520
-
1521
- .fadeInLeftBig {
1522
- -webkit-animation-name: fadeInLeftBig;
1523
- animation-name: fadeInLeftBig;
1524
- }
1525
-
1526
- @-webkit-keyframes fadeInRight {
1527
- 0% {
1528
- opacity: 0;
1529
- -webkit-transform: translate3d(100%, 0, 0);
1530
- transform: translate3d(100%, 0, 0);
1531
- }
1532
-
1533
- 100% {
1534
- opacity: 1;
1535
- -webkit-transform: none;
1536
- transform: none;
1537
- }
1538
- }
1539
-
1540
- @keyframes fadeInRight {
1541
- 0% {
1542
- opacity: 0;
1543
- -webkit-transform: translate3d(100%, 0, 0);
1544
- -ms-transform: translate3d(100%, 0, 0);
1545
- transform: translate3d(100%, 0, 0);
1546
- }
1547
-
1548
- 100% {
1549
- opacity: 1;
1550
- -webkit-transform: none;
1551
- -ms-transform: none;
1552
- transform: none;
1553
- }
1554
- }
1555
-
1556
- .fadeInRight {
1557
- -webkit-animation-name: fadeInRight;
1558
- animation-name: fadeInRight;
1559
- }
1560
-
1561
- @-webkit-keyframes fadeInRightBig {
1562
- 0% {
1563
- opacity: 0;
1564
- -webkit-transform: translate3d(2000px, 0, 0);
1565
- transform: translate3d(2000px, 0, 0);
1566
- }
1567
-
1568
- 100% {
1569
- opacity: 1;
1570
- -webkit-transform: none;
1571
- transform: none;
1572
- }
1573
- }
1574
-
1575
- @keyframes fadeInRightBig {
1576
- 0% {
1577
- opacity: 0;
1578
- -webkit-transform: translate3d(2000px, 0, 0);
1579
- -ms-transform: translate3d(2000px, 0, 0);
1580
- transform: translate3d(2000px, 0, 0);
1581
- }
1582
-
1583
- 100% {
1584
- opacity: 1;
1585
- -webkit-transform: none;
1586
- -ms-transform: none;
1587
- transform: none;
1588
- }
1589
- }
1590
-
1591
- .fadeInRightBig {
1592
- -webkit-animation-name: fadeInRightBig;
1593
- animation-name: fadeInRightBig;
1594
- }
1595
-
1596
- @-webkit-keyframes fadeInUp {
1597
- 0% {
1598
- opacity: 0;
1599
- -webkit-transform: translate3d(0, 100%, 0);
1600
- transform: translate3d(0, 100%, 0);
1601
- }
1602
-
1603
- 100% {
1604
- opacity: 1;
1605
- -webkit-transform: none;
1606
- transform: none;
1607
- }
1608
- }
1609
-
1610
- @keyframes fadeInUp {
1611
- 0% {
1612
- opacity: 0;
1613
- -webkit-transform: translate3d(0, 100%, 0);
1614
- -ms-transform: translate3d(0, 100%, 0);
1615
- transform: translate3d(0, 100%, 0);
1616
- }
1617
-
1618
- 100% {
1619
- opacity: 1;
1620
- -webkit-transform: none;
1621
- -ms-transform: none;
1622
- transform: none;
1623
- }
1624
- }
1625
-
1626
- .fadeInUp {
1627
- -webkit-animation-name: fadeInUp;
1628
- animation-name: fadeInUp;
1629
- }
1630
-
1631
- @-webkit-keyframes fadeInUpBig {
1632
- 0% {
1633
- opacity: 0;
1634
- -webkit-transform: translate3d(0, 2000px, 0);
1635
- transform: translate3d(0, 2000px, 0);
1636
- }
1637
-
1638
- 100% {
1639
- opacity: 1;
1640
- -webkit-transform: none;
1641
- transform: none;
1642
- }
1643
- }
1644
-
1645
- @keyframes fadeInUpBig {
1646
- 0% {
1647
- opacity: 0;
1648
- -webkit-transform: translate3d(0, 2000px, 0);
1649
- -ms-transform: translate3d(0, 2000px, 0);
1650
- transform: translate3d(0, 2000px, 0);
1651
- }
1652
-
1653
- 100% {
1654
- opacity: 1;
1655
- -webkit-transform: none;
1656
- -ms-transform: none;
1657
- transform: none;
1658
- }
1659
- }
1660
-
1661
- .fadeInUpBig {
1662
- -webkit-animation-name: fadeInUpBig;
1663
- animation-name: fadeInUpBig;
1664
- }
1665
-
1666
- @-webkit-keyframes fadeOut {
1667
- 0% {
1668
- opacity: 1;
1669
- }
1670
-
1671
- 100% {
1672
- opacity: 0;
1673
- }
1674
- }
1675
-
1676
- @keyframes fadeOut {
1677
- 0% {
1678
- opacity: 1;
1679
- }
1680
-
1681
- 100% {
1682
- opacity: 0;
1683
- }
1684
- }
1685
-
1686
- .fadeOut {
1687
- -webkit-animation-name: fadeOut;
1688
- animation-name: fadeOut;
1689
- }
1690
-
1691
- @-webkit-keyframes fadeOutDown {
1692
- 0% {
1693
- opacity: 1;
1694
- }
1695
-
1696
- 100% {
1697
- opacity: 0;
1698
- -webkit-transform: translate3d(0, 100%, 0);
1699
- transform: translate3d(0, 100%, 0);
1700
- }
1701
- }
1702
-
1703
- @keyframes fadeOutDown {
1704
- 0% {
1705
- opacity: 1;
1706
- }
1707
-
1708
- 100% {
1709
- opacity: 0;
1710
- -webkit-transform: translate3d(0, 100%, 0);
1711
- -ms-transform: translate3d(0, 100%, 0);
1712
- transform: translate3d(0, 100%, 0);
1713
- }
1714
- }
1715
-
1716
- .fadeOutDown {
1717
- -webkit-animation-name: fadeOutDown;
1718
- animation-name: fadeOutDown;
1719
- }
1720
-
1721
- @-webkit-keyframes fadeOutDownBig {
1722
- 0% {
1723
- opacity: 1;
1724
- }
1725
-
1726
- 100% {
1727
- opacity: 0;
1728
- -webkit-transform: translate3d(0, 2000px, 0);
1729
- transform: translate3d(0, 2000px, 0);
1730
- }
1731
- }
1732
-
1733
- @keyframes fadeOutDownBig {
1734
- 0% {
1735
- opacity: 1;
1736
- }
1737
-
1738
- 100% {
1739
- opacity: 0;
1740
- -webkit-transform: translate3d(0, 2000px, 0);
1741
- -ms-transform: translate3d(0, 2000px, 0);
1742
- transform: translate3d(0, 2000px, 0);
1743
- }
1744
- }
1745
-
1746
- .fadeOutDownBig {
1747
- -webkit-animation-name: fadeOutDownBig;
1748
- animation-name: fadeOutDownBig;
1749
- }
1750
-
1751
- @-webkit-keyframes fadeOutLeft {
1752
- 0% {
1753
- opacity: 1;
1754
- }
1755
-
1756
- 100% {
1757
- opacity: 0;
1758
- -webkit-transform: translate3d(-100%, 0, 0);
1759
- transform: translate3d(-100%, 0, 0);
1760
- }
1761
- }
1762
-
1763
- @keyframes fadeOutLeft {
1764
- 0% {
1765
- opacity: 1;
1766
- }
1767
-
1768
- 100% {
1769
- opacity: 0;
1770
- -webkit-transform: translate3d(-100%, 0, 0);
1771
- -ms-transform: translate3d(-100%, 0, 0);
1772
- transform: translate3d(-100%, 0, 0);
1773
- }
1774
- }
1775
-
1776
- .fadeOutLeft {
1777
- -webkit-animation-name: fadeOutLeft;
1778
- animation-name: fadeOutLeft;
1779
- }
1780
-
1781
- @-webkit-keyframes fadeOutLeftBig {
1782
- 0% {
1783
- opacity: 1;
1784
- }
1785
-
1786
- 100% {
1787
- opacity: 0;
1788
- -webkit-transform: translate3d(-2000px, 0, 0);
1789
- transform: translate3d(-2000px, 0, 0);
1790
- }
1791
- }
1792
-
1793
- @keyframes fadeOutLeftBig {
1794
- 0% {
1795
- opacity: 1;
1796
- }
1797
-
1798
- 100% {
1799
- opacity: 0;
1800
- -webkit-transform: translate3d(-2000px, 0, 0);
1801
- -ms-transform: translate3d(-2000px, 0, 0);
1802
- transform: translate3d(-2000px, 0, 0);
1803
- }
1804
- }
1805
-
1806
- .fadeOutLeftBig {
1807
- -webkit-animation-name: fadeOutLeftBig;
1808
- animation-name: fadeOutLeftBig;
1809
- }
1810
-
1811
- @-webkit-keyframes fadeOutRight {
1812
- 0% {
1813
- opacity: 1;
1814
- }
1815
-
1816
- 100% {
1817
- opacity: 0;
1818
- -webkit-transform: translate3d(100%, 0, 0);
1819
- transform: translate3d(100%, 0, 0);
1820
- }
1821
- }
1822
-
1823
- @keyframes fadeOutRight {
1824
- 0% {
1825
- opacity: 1;
1826
- }
1827
-
1828
- 100% {
1829
- opacity: 0;
1830
- -webkit-transform: translate3d(100%, 0, 0);
1831
- -ms-transform: translate3d(100%, 0, 0);
1832
- transform: translate3d(100%, 0, 0);
1833
- }
1834
- }
1835
-
1836
- .fadeOutRight {
1837
- -webkit-animation-name: fadeOutRight;
1838
- animation-name: fadeOutRight;
1839
- }
1840
-
1841
- @-webkit-keyframes fadeOutRightBig {
1842
- 0% {
1843
- opacity: 1;
1844
- }
1845
-
1846
- 100% {
1847
- opacity: 0;
1848
- -webkit-transform: translate3d(2000px, 0, 0);
1849
- transform: translate3d(2000px, 0, 0);
1850
- }
1851
- }
1852
-
1853
- @keyframes fadeOutRightBig {
1854
- 0% {
1855
- opacity: 1;
1856
- }
1857
-
1858
- 100% {
1859
- opacity: 0;
1860
- -webkit-transform: translate3d(2000px, 0, 0);
1861
- -ms-transform: translate3d(2000px, 0, 0);
1862
- transform: translate3d(2000px, 0, 0);
1863
- }
1864
- }
1865
-
1866
- .fadeOutRightBig {
1867
- -webkit-animation-name: fadeOutRightBig;
1868
- animation-name: fadeOutRightBig;
1869
- }
1870
-
1871
- @-webkit-keyframes fadeOutUp {
1872
- 0% {
1873
- opacity: 1;
1874
- }
1875
-
1876
- 100% {
1877
- opacity: 0;
1878
- -webkit-transform: translate3d(0, -100%, 0);
1879
- transform: translate3d(0, -100%, 0);
1880
- }
1881
- }
1882
-
1883
- @keyframes fadeOutUp {
1884
- 0% {
1885
- opacity: 1;
1886
- }
1887
-
1888
- 100% {
1889
- opacity: 0;
1890
- -webkit-transform: translate3d(0, -100%, 0);
1891
- -ms-transform: translate3d(0, -100%, 0);
1892
- transform: translate3d(0, -100%, 0);
1893
- }
1894
- }
1895
-
1896
- .fadeOutUp {
1897
- -webkit-animation-name: fadeOutUp;
1898
- animation-name: fadeOutUp;
1899
- }
1900
-
1901
- @-webkit-keyframes fadeOutUpBig {
1902
- 0% {
1903
- opacity: 1;
1904
- }
1905
-
1906
- 100% {
1907
- opacity: 0;
1908
- -webkit-transform: translate3d(0, -2000px, 0);
1909
- transform: translate3d(0, -2000px, 0);
1910
- }
1911
- }
1912
-
1913
- @keyframes fadeOutUpBig {
1914
- 0% {
1915
- opacity: 1;
1916
- }
1917
-
1918
- 100% {
1919
- opacity: 0;
1920
- -webkit-transform: translate3d(0, -2000px, 0);
1921
- -ms-transform: translate3d(0, -2000px, 0);
1922
- transform: translate3d(0, -2000px, 0);
1923
- }
1924
- }
1925
-
1926
- .fadeOutUpBig {
1927
- -webkit-animation-name: fadeOutUpBig;
1928
- animation-name: fadeOutUpBig;
1929
- }
1930
-
1931
- @-webkit-keyframes flip {
1932
- 0% {
1933
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
1934
- transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
1935
- -webkit-animation-timing-function: ease-out;
1936
- animation-timing-function: ease-out;
1937
- }
1938
-
1939
- 40% {
1940
- -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
1941
- transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
1942
- -webkit-animation-timing-function: ease-out;
1943
- animation-timing-function: ease-out;
1944
- }
1945
-
1946
- 50% {
1947
- -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
1948
- transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
1949
- -webkit-animation-timing-function: ease-in;
1950
- animation-timing-function: ease-in;
1951
- }
1952
-
1953
- 80% {
1954
- -webkit-transform: perspective(400px) scale3d(.95, .95, .95);
1955
- transform: perspective(400px) scale3d(.95, .95, .95);
1956
- -webkit-animation-timing-function: ease-in;
1957
- animation-timing-function: ease-in;
1958
- }
1959
-
1960
- 100% {
1961
- -webkit-transform: perspective(400px);
1962
- transform: perspective(400px);
1963
- -webkit-animation-timing-function: ease-in;
1964
- animation-timing-function: ease-in;
1965
- }
1966
- }
1967
-
1968
- @keyframes flip {
1969
- 0% {
1970
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
1971
- -ms-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
1972
- transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
1973
- -webkit-animation-timing-function: ease-out;
1974
- animation-timing-function: ease-out;
1975
- }
1976
-
1977
- 40% {
1978
- -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
1979
- -ms-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
1980
- transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
1981
- -webkit-animation-timing-function: ease-out;
1982
- animation-timing-function: ease-out;
1983
- }
1984
-
1985
- 50% {
1986
- -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
1987
- -ms-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
1988
- transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
1989
- -webkit-animation-timing-function: ease-in;
1990
- animation-timing-function: ease-in;
1991
- }
1992
-
1993
- 80% {
1994
- -webkit-transform: perspective(400px) scale3d(.95, .95, .95);
1995
- -ms-transform: perspective(400px) scale3d(.95, .95, .95);
1996
- transform: perspective(400px) scale3d(.95, .95, .95);
1997
- -webkit-animation-timing-function: ease-in;
1998
- animation-timing-function: ease-in;
1999
- }
2000
-
2001
- 100% {
2002
- -webkit-transform: perspective(400px);
2003
- -ms-transform: perspective(400px);
2004
- transform: perspective(400px);
2005
- -webkit-animation-timing-function: ease-in;
2006
- animation-timing-function: ease-in;
2007
- }
2008
- }
2009
-
2010
- .animated.flip {
2011
- -webkit-backface-visibility: visible;
2012
- -ms-backface-visibility: visible;
2013
- backface-visibility: visible;
2014
- -webkit-animation-name: flip;
2015
- animation-name: flip;
2016
- }
2017
-
2018
- @-webkit-keyframes flipInX {
2019
- 0% {
2020
- -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
2021
- transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
2022
- -webkit-transition-timing-function: ease-in;
2023
- transition-timing-function: ease-in;
2024
- opacity: 0;
2025
- }
2026
-
2027
- 40% {
2028
- -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
2029
- transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
2030
- -webkit-transition-timing-function: ease-in;
2031
- transition-timing-function: ease-in;
2032
- }
2033
-
2034
- 60% {
2035
- -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
2036
- transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
2037
- opacity: 1;
2038
- }
2039
-
2040
- 80% {
2041
- -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
2042
- transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
2043
- }
2044
-
2045
- 100% {
2046
- -webkit-transform: perspective(400px);
2047
- transform: perspective(400px);
2048
- }
2049
- }
2050
-
2051
- @keyframes flipInX {
2052
- 0% {
2053
- -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
2054
- -ms-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
2055
- transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
2056
- -webkit-transition-timing-function: ease-in;
2057
- transition-timing-function: ease-in;
2058
- opacity: 0;
2059
- }
2060
-
2061
- 40% {
2062
- -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
2063
- -ms-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
2064
- transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
2065
- -webkit-transition-timing-function: ease-in;
2066
- transition-timing-function: ease-in;
2067
- }
2068
-
2069
- 60% {
2070
- -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
2071
- -ms-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
2072
- transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
2073
- opacity: 1;
2074
- }
2075
-
2076
- 80% {
2077
- -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
2078
- -ms-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
2079
- transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
2080
- }
2081
-
2082
- 100% {
2083
- -webkit-transform: perspective(400px);
2084
- -ms-transform: perspective(400px);
2085
- transform: perspective(400px);
2086
- }
2087
- }
2088
-
2089
- .flipInX {
2090
- -webkit-backface-visibility: visible !important;
2091
- -ms-backface-visibility: visible !important;
2092
- backface-visibility: visible !important;
2093
- -webkit-animation-name: flipInX;
2094
- animation-name: flipInX;
2095
- }
2096
-
2097
- @-webkit-keyframes flipInY {
2098
- 0% {
2099
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
2100
- transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
2101
- -webkit-transition-timing-function: ease-in;
2102
- transition-timing-function: ease-in;
2103
- opacity: 0;
2104
- }
2105
-
2106
- 40% {
2107
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
2108
- transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
2109
- -webkit-transition-timing-function: ease-in;
2110
- transition-timing-function: ease-in;
2111
- }
2112
-
2113
- 60% {
2114
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
2115
- transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
2116
- opacity: 1;
2117
- }
2118
-
2119
- 80% {
2120
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
2121
- transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
2122
- }
2123
-
2124
- 100% {
2125
- -webkit-transform: perspective(400px);
2126
- transform: perspective(400px);
2127
- }
2128
- }
2129
-
2130
- @keyframes flipInY {
2131
- 0% {
2132
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
2133
- -ms-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
2134
- transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
2135
- -webkit-transition-timing-function: ease-in;
2136
- transition-timing-function: ease-in;
2137
- opacity: 0;
2138
- }
2139
-
2140
- 40% {
2141
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
2142
- -ms-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
2143
- transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
2144
- -webkit-transition-timing-function: ease-in;
2145
- transition-timing-function: ease-in;
2146
- }
2147
-
2148
- 60% {
2149
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
2150
- -ms-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
2151
- transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
2152
- opacity: 1;
2153
- }
2154
-
2155
- 80% {
2156
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
2157
- -ms-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
2158
- transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
2159
- }
2160
-
2161
- 100% {
2162
- -webkit-transform: perspective(400px);
2163
- -ms-transform: perspective(400px);
2164
- transform: perspective(400px);
2165
- }
2166
- }
2167
-
2168
- .flipInY {
2169
- -webkit-backface-visibility: visible !important;
2170
- -ms-backface-visibility: visible !important;
2171
- backface-visibility: visible !important;
2172
- -webkit-animation-name: flipInY;
2173
- animation-name: flipInY;
2174
- }
2175
-
2176
- @-webkit-keyframes flipOutX {
2177
- 0% {
2178
- -webkit-transform: perspective(400px);
2179
- transform: perspective(400px);
2180
- }
2181
-
2182
- 30% {
2183
- -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
2184
- transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
2185
- opacity: 1;
2186
- }
2187
-
2188
- 100% {
2189
- -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
2190
- transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
2191
- opacity: 0;
2192
- }
2193
- }
2194
-
2195
- @keyframes flipOutX {
2196
- 0% {
2197
- -webkit-transform: perspective(400px);
2198
- -ms-transform: perspective(400px);
2199
- transform: perspective(400px);
2200
- }
2201
-
2202
- 30% {
2203
- -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
2204
- -ms-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
2205
- transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
2206
- opacity: 1;
2207
- }
2208
-
2209
- 100% {
2210
- -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
2211
- -ms-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
2212
- transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
2213
- opacity: 0;
2214
- }
2215
- }
2216
-
2217
- .flipOutX {
2218
- -webkit-animation-name: flipOutX;
2219
- animation-name: flipOutX;
2220
- -webkit-animation-duration: .75s;
2221
- animation-duration: .75s;
2222
- -webkit-backface-visibility: visible !important;
2223
- -ms-backface-visibility: visible !important;
2224
- backface-visibility: visible !important;
2225
- }
2226
-
2227
- @-webkit-keyframes flipOutY {
2228
- 0% {
2229
- -webkit-transform: perspective(400px);
2230
- transform: perspective(400px);
2231
- }
2232
-
2233
- 30% {
2234
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
2235
- transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
2236
- opacity: 1;
2237
- }
2238
-
2239
- 100% {
2240
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
2241
- transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
2242
- opacity: 0;
2243
- }
2244
- }
2245
-
2246
- @keyframes flipOutY {
2247
- 0% {
2248
- -webkit-transform: perspective(400px);
2249
- -ms-transform: perspective(400px);
2250
- transform: perspective(400px);
2251
- }
2252
-
2253
- 30% {
2254
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
2255
- -ms-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
2256
- transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
2257
- opacity: 1;
2258
- }
2259
-
2260
- 100% {
2261
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
2262
- -ms-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
2263
- transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
2264
- opacity: 0;
2265
- }
2266
- }
2267
-
2268
- .flipOutY {
2269
- -webkit-backface-visibility: visible !important;
2270
- -ms-backface-visibility: visible !important;
2271
- backface-visibility: visible !important;
2272
- -webkit-animation-name: flipOutY;
2273
- animation-name: flipOutY;
2274
- -webkit-animation-duration: .75s;
2275
- animation-duration: .75s;
2276
- }
2277
-
2278
- @-webkit-keyframes lightSpeedIn {
2279
- 0% {
2280
- -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);
2281
- transform: translate3d(100%, 0, 0) skewX(-30deg);
2282
- opacity: 0;
2283
- }
2284
-
2285
- 60% {
2286
- -webkit-transform: skewX(20deg);
2287
- transform: skewX(20deg);
2288
- opacity: 1;
2289
- }
2290
-
2291
- 80% {
2292
- -webkit-transform: skewX(-5deg);
2293
- transform: skewX(-5deg);
2294
- opacity: 1;
2295
- }
2296
-
2297
- 100% {
2298
- -webkit-transform: none;
2299
- transform: none;
2300
- opacity: 1;
2301
- }
2302
- }
2303
-
2304
- @keyframes lightSpeedIn {
2305
- 0% {
2306
- -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);
2307
- -ms-transform: translate3d(100%, 0, 0) skewX(-30deg);
2308
- transform: translate3d(100%, 0, 0) skewX(-30deg);
2309
- opacity: 0;
2310
- }
2311
-
2312
- 60% {
2313
- -webkit-transform: skewX(20deg);
2314
- -ms-transform: skewX(20deg);
2315
- transform: skewX(20deg);
2316
- opacity: 1;
2317
- }
2318
-
2319
- 80% {
2320
- -webkit-transform: skewX(-5deg);
2321
- -ms-transform: skewX(-5deg);
2322
- transform: skewX(-5deg);
2323
- opacity: 1;
2324
- }
2325
-
2326
- 100% {
2327
- -webkit-transform: none;
2328
- -ms-transform: none;
2329
- transform: none;
2330
- opacity: 1;
2331
- }
2332
- }
2333
-
2334
- .lightSpeedIn {
2335
- -webkit-animation-name: lightSpeedIn;
2336
- animation-name: lightSpeedIn;
2337
- -webkit-animation-timing-function: ease-out;
2338
- animation-timing-function: ease-out;
2339
- }
2340
-
2341
- @-webkit-keyframes lightSpeedOut {
2342
- 0% {
2343
- opacity: 1;
2344
- }
2345
-
2346
- 100% {
2347
- -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);
2348
- transform: translate3d(100%, 0, 0) skewX(30deg);
2349
- opacity: 0;
2350
- }
2351
- }
2352
-
2353
- @keyframes lightSpeedOut {
2354
- 0% {
2355
- opacity: 1;
2356
- }
2357
-
2358
- 100% {
2359
- -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);
2360
- -ms-transform: translate3d(100%, 0, 0) skewX(30deg);
2361
- transform: translate3d(100%, 0, 0) skewX(30deg);
2362
- opacity: 0;
2363
- }
2364
- }
2365
-
2366
- .lightSpeedOut {
2367
- -webkit-animation-name: lightSpeedOut;
2368
- animation-name: lightSpeedOut;
2369
- -webkit-animation-timing-function: ease-in;
2370
- animation-timing-function: ease-in;
2371
- }
2372
-
2373
- @-webkit-keyframes rotateIn {
2374
- 0% {
2375
- -webkit-transform-origin: center;
2376
- transform-origin: center;
2377
- -webkit-transform: rotate3d(0, 0, 1, -200deg);
2378
- transform: rotate3d(0, 0, 1, -200deg);
2379
- opacity: 0;
2380
- }
2381
-
2382
- 100% {
2383
- -webkit-transform-origin: center;
2384
- transform-origin: center;
2385
- -webkit-transform: none;
2386
- transform: none;
2387
- opacity: 1;
2388
- }
2389
- }
2390
-
2391
- @keyframes rotateIn {
2392
- 0% {
2393
- -webkit-transform-origin: center;
2394
- -ms-transform-origin: center;
2395
- transform-origin: center;
2396
- -webkit-transform: rotate3d(0, 0, 1, -200deg);
2397
- -ms-transform: rotate3d(0, 0, 1, -200deg);
2398
- transform: rotate3d(0, 0, 1, -200deg);
2399
- opacity: 0;
2400
- }
2401
-
2402
- 100% {
2403
- -webkit-transform-origin: center;
2404
- -ms-transform-origin: center;
2405
- transform-origin: center;
2406
- -webkit-transform: none;
2407
- -ms-transform: none;
2408
- transform: none;
2409
- opacity: 1;
2410
- }
2411
- }
2412
-
2413
- .rotateIn {
2414
- -webkit-animation-name: rotateIn;
2415
- animation-name: rotateIn;
2416
- }
2417
-
2418
- @-webkit-keyframes rotateInDownLeft {
2419
- 0% {
2420
- -webkit-transform-origin: left bottom;
2421
- transform-origin: left bottom;
2422
- -webkit-transform: rotate3d(0, 0, 1, -45deg);
2423
- transform: rotate3d(0, 0, 1, -45deg);
2424
- opacity: 0;
2425
- }
2426
-
2427
- 100% {
2428
- -webkit-transform-origin: left bottom;
2429
- transform-origin: left bottom;
2430
- -webkit-transform: none;
2431
- transform: none;
2432
- opacity: 1;
2433
- }
2434
- }
2435
-
2436
- @keyframes rotateInDownLeft {
2437
- 0% {
2438
- -webkit-transform-origin: left bottom;
2439
- -ms-transform-origin: left bottom;
2440
- transform-origin: left bottom;
2441
- -webkit-transform: rotate3d(0, 0, 1, -45deg);
2442
- -ms-transform: rotate3d(0, 0, 1, -45deg);
2443
- transform: rotate3d(0, 0, 1, -45deg);
2444
- opacity: 0;
2445
- }
2446
-
2447
- 100% {
2448
- -webkit-transform-origin: left bottom;
2449
- -ms-transform-origin: left bottom;
2450
- transform-origin: left bottom;
2451
- -webkit-transform: none;
2452
- -ms-transform: none;
2453
- transform: none;
2454
- opacity: 1;
2455
- }
2456
- }
2457
-
2458
- .rotateInDownLeft {
2459
- -webkit-animation-name: rotateInDownLeft;
2460
- animation-name: rotateInDownLeft;
2461
- }
2462
-
2463
- @-webkit-keyframes rotateInDownRight {
2464
- 0% {
2465
- -webkit-transform-origin: right bottom;
2466
- transform-origin: right bottom;
2467
- -webkit-transform: rotate3d(0, 0, 1, 45deg);
2468
- transform: rotate3d(0, 0, 1, 45deg);
2469
- opacity: 0;
2470
- }
2471
-
2472
- 100% {
2473
- -webkit-transform-origin: right bottom;
2474
- transform-origin: right bottom;
2475
- -webkit-transform: none;
2476
- transform: none;
2477
- opacity: 1;
2478
- }
2479
- }
2480
-
2481
- @keyframes rotateInDownRight {
2482
- 0% {
2483
- -webkit-transform-origin: right bottom;
2484
- -ms-transform-origin: right bottom;
2485
- transform-origin: right bottom;
2486
- -webkit-transform: rotate3d(0, 0, 1, 45deg);
2487
- -ms-transform: rotate3d(0, 0, 1, 45deg);
2488
- transform: rotate3d(0, 0, 1, 45deg);
2489
- opacity: 0;
2490
- }
2491
-
2492
- 100% {
2493
- -webkit-transform-origin: right bottom;
2494
- -ms-transform-origin: right bottom;
2495
- transform-origin: right bottom;
2496
- -webkit-transform: none;
2497
- -ms-transform: none;
2498
- transform: none;
2499
- opacity: 1;
2500
- }
2501
- }
2502
-
2503
- .rotateInDownRight {
2504
- -webkit-animation-name: rotateInDownRight;
2505
- animation-name: rotateInDownRight;
2506
- }
2507
-
2508
- @-webkit-keyframes rotateInUpLeft {
2509
- 0% {
2510
- -webkit-transform-origin: left bottom;
2511
- transform-origin: left bottom;
2512
- -webkit-transform: rotate3d(0, 0, 1, 45deg);
2513
- transform: rotate3d(0, 0, 1, 45deg);
2514
- opacity: 0;
2515
- }
2516
-
2517
- 100% {
2518
- -webkit-transform-origin: left bottom;
2519
- transform-origin: left bottom;
2520
- -webkit-transform: none;
2521
- transform: none;
2522
- opacity: 1;
2523
- }
2524
- }
2525
-
2526
- @keyframes rotateInUpLeft {
2527
- 0% {
2528
- -webkit-transform-origin: left bottom;
2529
- -ms-transform-origin: left bottom;
2530
- transform-origin: left bottom;
2531
- -webkit-transform: rotate3d(0, 0, 1, 45deg);
2532
- -ms-transform: rotate3d(0, 0, 1, 45deg);
2533
- transform: rotate3d(0, 0, 1, 45deg);
2534
- opacity: 0;
2535
- }
2536
-
2537
- 100% {
2538
- -webkit-transform-origin: left bottom;
2539
- -ms-transform-origin: left bottom;
2540
- transform-origin: left bottom;
2541
- -webkit-transform: none;
2542
- -ms-transform: none;
2543
- transform: none;
2544
- opacity: 1;
2545
- }
2546
- }
2547
-
2548
- .rotateInUpLeft {
2549
- -webkit-animation-name: rotateInUpLeft;
2550
- animation-name: rotateInUpLeft;
2551
- }
2552
-
2553
- @-webkit-keyframes rotateInUpRight {
2554
- 0% {
2555
- -webkit-transform-origin: right bottom;
2556
- transform-origin: right bottom;
2557
- -webkit-transform: rotate3d(0, 0, 1, -90deg);
2558
- transform: rotate3d(0, 0, 1, -90deg);
2559
- opacity: 0;
2560
- }
2561
-
2562
- 100% {
2563
- -webkit-transform-origin: right bottom;
2564
- transform-origin: right bottom;
2565
- -webkit-transform: none;
2566
- transform: none;
2567
- opacity: 1;
2568
- }
2569
- }
2570
-
2571
- @keyframes rotateInUpRight {
2572
- 0% {
2573
- -webkit-transform-origin: right bottom;
2574
- -ms-transform-origin: right bottom;
2575
- transform-origin: right bottom;
2576
- -webkit-transform: rotate3d(0, 0, 1, -90deg);
2577
- -ms-transform: rotate3d(0, 0, 1, -90deg);
2578
- transform: rotate3d(0, 0, 1, -90deg);
2579
- opacity: 0;
2580
- }
2581
-
2582
- 100% {
2583
- -webkit-transform-origin: right bottom;
2584
- -ms-transform-origin: right bottom;
2585
- transform-origin: right bottom;
2586
- -webkit-transform: none;
2587
- -ms-transform: none;
2588
- transform: none;
2589
- opacity: 1;
2590
- }
2591
- }
2592
-
2593
- .rotateInUpRight {
2594
- -webkit-animation-name: rotateInUpRight;
2595
- animation-name: rotateInUpRight;
2596
- }
2597
-
2598
- @-webkit-keyframes rotateOut {
2599
- 0% {
2600
- -webkit-transform-origin: center;
2601
- transform-origin: center;
2602
- opacity: 1;
2603
- }
2604
-
2605
- 100% {
2606
- -webkit-transform-origin: center;
2607
- transform-origin: center;
2608
- -webkit-transform: rotate3d(0, 0, 1, 200deg);
2609
- transform: rotate3d(0, 0, 1, 200deg);
2610
- opacity: 0;
2611
- }
2612
- }
2613
-
2614
- @keyframes rotateOut {
2615
- 0% {
2616
- -webkit-transform-origin: center;
2617
- -ms-transform-origin: center;
2618
- transform-origin: center;
2619
- opacity: 1;
2620
- }
2621
-
2622
- 100% {
2623
- -webkit-transform-origin: center;
2624
- -ms-transform-origin: center;
2625
- transform-origin: center;
2626
- -webkit-transform: rotate3d(0, 0, 1, 200deg);
2627
- -ms-transform: rotate3d(0, 0, 1, 200deg);
2628
- transform: rotate3d(0, 0, 1, 200deg);
2629
- opacity: 0;
2630
- }
2631
- }
2632
-
2633
- .rotateOut {
2634
- -webkit-animation-name: rotateOut;
2635
- animation-name: rotateOut;
2636
- }
2637
-
2638
- @-webkit-keyframes rotateOutDownLeft {
2639
- 0% {
2640
- -webkit-transform-origin: left bottom;
2641
- transform-origin: left bottom;
2642
- opacity: 1;
2643
- }
2644
-
2645
- 100% {
2646
- -webkit-transform-origin: left bottom;
2647
- transform-origin: left bottom;
2648
- -webkit-transform: rotate(0, 0, 1, 45deg);
2649
- transform: rotate(0, 0, 1, 45deg);
2650
- opacity: 0;
2651
- }
2652
- }
2653
-
2654
- @keyframes rotateOutDownLeft {
2655
- 0% {
2656
- -webkit-transform-origin: left bottom;
2657
- -ms-transform-origin: left bottom;
2658
- transform-origin: left bottom;
2659
- opacity: 1;
2660
- }
2661
-
2662
- 100% {
2663
- -webkit-transform-origin: left bottom;
2664
- -ms-transform-origin: left bottom;
2665
- transform-origin: left bottom;
2666
- -webkit-transform: rotate(0, 0, 1, 45deg);
2667
- -ms-transform: rotate(0, 0, 1, 45deg);
2668
- transform: rotate(0, 0, 1, 45deg);
2669
- opacity: 0;
2670
- }
2671
- }
2672
-
2673
- .rotateOutDownLeft {
2674
- -webkit-animation-name: rotateOutDownLeft;
2675
- animation-name: rotateOutDownLeft;
2676
- }
2677
-
2678
- @-webkit-keyframes rotateOutDownRight {
2679
- 0% {
2680
- -webkit-transform-origin: right bottom;
2681
- transform-origin: right bottom;
2682
- opacity: 1;
2683
- }
2684
-
2685
- 100% {
2686
- -webkit-transform-origin: right bottom;
2687
- transform-origin: right bottom;
2688
- -webkit-transform: rotate3d(0, 0, 1, -45deg);
2689
- transform: rotate3d(0, 0, 1, -45deg);
2690
- opacity: 0;
2691
- }
2692
- }
2693
-
2694
- @keyframes rotateOutDownRight {
2695
- 0% {
2696
- -webkit-transform-origin: right bottom;
2697
- -ms-transform-origin: right bottom;
2698
- transform-origin: right bottom;
2699
- opacity: 1;
2700
- }
2701
-
2702
- 100% {
2703
- -webkit-transform-origin: right bottom;
2704
- -ms-transform-origin: right bottom;
2705
- transform-origin: right bottom;
2706
- -webkit-transform: rotate3d(0, 0, 1, -45deg);
2707
- -ms-transform: rotate3d(0, 0, 1, -45deg);
2708
- transform: rotate3d(0, 0, 1, -45deg);
2709
- opacity: 0;
2710
- }
2711
- }
2712
-
2713
- .rotateOutDownRight {
2714
- -webkit-animation-name: rotateOutDownRight;
2715
- animation-name: rotateOutDownRight;
2716
- }
2717
-
2718
- @-webkit-keyframes rotateOutUpLeft {
2719
- 0% {
2720
- -webkit-transform-origin: left bottom;
2721
- transform-origin: left bottom;
2722
- opacity: 1;
2723
- }
2724
-
2725
- 100% {
2726
- -webkit-transform-origin: left bottom;
2727
- transform-origin: left bottom;
2728
- -webkit-transform: rotate3d(0, 0, 1, -45deg);
2729
- transform: rotate3d(0, 0, 1, -45deg);
2730
- opacity: 0;
2731
- }
2732
- }
2733
-
2734
- @keyframes rotateOutUpLeft {
2735
- 0% {
2736
- -webkit-transform-origin: left bottom;
2737
- -ms-transform-origin: left bottom;
2738
- transform-origin: left bottom;
2739
- opacity: 1;
2740
- }
2741
-
2742
- 100% {
2743
- -webkit-transform-origin: left bottom;
2744
- -ms-transform-origin: left bottom;
2745
- transform-origin: left bottom;
2746
- -webkit-transform: rotate3d(0, 0, 1, -45deg);
2747
- -ms-transform: rotate3d(0, 0, 1, -45deg);
2748
- transform: rotate3d(0, 0, 1, -45deg);
2749
- opacity: 0;
2750
- }
2751
- }
2752
-
2753
- .rotateOutUpLeft {
2754
- -webkit-animation-name: rotateOutUpLeft;
2755
- animation-name: rotateOutUpLeft;
2756
- }
2757
-
2758
- @-webkit-keyframes rotateOutUpRight {
2759
- 0% {
2760
- -webkit-transform-origin: right bottom;
2761
- transform-origin: right bottom;
2762
- opacity: 1;
2763
- }
2764
-
2765
- 100% {
2766
- -webkit-transform-origin: right bottom;
2767
- transform-origin: right bottom;
2768
- -webkit-transform: rotate3d(0, 0, 1, 90deg);
2769
- transform: rotate3d(0, 0, 1, 90deg);
2770
- opacity: 0;
2771
- }
2772
- }
2773
-
2774
- @keyframes rotateOutUpRight {
2775
- 0% {
2776
- -webkit-transform-origin: right bottom;
2777
- -ms-transform-origin: right bottom;
2778
- transform-origin: right bottom;
2779
- opacity: 1;
2780
- }
2781
-
2782
- 100% {
2783
- -webkit-transform-origin: right bottom;
2784
- -ms-transform-origin: right bottom;
2785
- transform-origin: right bottom;
2786
- -webkit-transform: rotate3d(0, 0, 1, 90deg);
2787
- -ms-transform: rotate3d(0, 0, 1, 90deg);
2788
- transform: rotate3d(0, 0, 1, 90deg);
2789
- opacity: 0;
2790
- }
2791
- }
2792
-
2793
- .rotateOutUpRight {
2794
- -webkit-animation-name: rotateOutUpRight;
2795
- animation-name: rotateOutUpRight;
2796
- }
2797
-
2798
- @-webkit-keyframes hinge {
2799
- 0% {
2800
- -webkit-transform-origin: top left;
2801
- transform-origin: top left;
2802
- -webkit-animation-timing-function: ease-in-out;
2803
- animation-timing-function: ease-in-out;
2804
- }
2805
-
2806
- 20%, 60% {
2807
- -webkit-transform: rotate3d(0, 0, 1, 80deg);
2808
- transform: rotate3d(0, 0, 1, 80deg);
2809
- -webkit-transform-origin: top left;
2810
- transform-origin: top left;
2811
- -webkit-animation-timing-function: ease-in-out;
2812
- animation-timing-function: ease-in-out;
2813
- }
2814
-
2815
- 40%, 80% {
2816
- -webkit-transform: rotate3d(0, 0, 1, 60deg);
2817
- transform: rotate3d(0, 0, 1, 60deg);
2818
- -webkit-transform-origin: top left;
2819
- transform-origin: top left;
2820
- -webkit-animation-timing-function: ease-in-out;
2821
- animation-timing-function: ease-in-out;
2822
- opacity: 1;
2823
- }
2824
-
2825
- 100% {
2826
- -webkit-transform: translate3d(0, 700px, 0);
2827
- transform: translate3d(0, 700px, 0);
2828
- opacity: 0;
2829
- }
2830
- }
2831
-
2832
- @keyframes hinge {
2833
- 0% {
2834
- -webkit-transform-origin: top left;
2835
- -ms-transform-origin: top left;
2836
- transform-origin: top left;
2837
- -webkit-animation-timing-function: ease-in-out;
2838
- animation-timing-function: ease-in-out;
2839
- }
2840
-
2841
- 20%, 60% {
2842
- -webkit-transform: rotate3d(0, 0, 1, 80deg);
2843
- -ms-transform: rotate3d(0, 0, 1, 80deg);
2844
- transform: rotate3d(0, 0, 1, 80deg);
2845
- -webkit-transform-origin: top left;
2846
- -ms-transform-origin: top left;
2847
- transform-origin: top left;
2848
- -webkit-animation-timing-function: ease-in-out;
2849
- animation-timing-function: ease-in-out;
2850
- }
2851
-
2852
- 40%, 80% {
2853
- -webkit-transform: rotate3d(0, 0, 1, 60deg);
2854
- -ms-transform: rotate3d(0, 0, 1, 60deg);
2855
- transform: rotate3d(0, 0, 1, 60deg);
2856
- -webkit-transform-origin: top left;
2857
- -ms-transform-origin: top left;
2858
- transform-origin: top left;
2859
- -webkit-animation-timing-function: ease-in-out;
2860
- animation-timing-function: ease-in-out;
2861
- opacity: 1;
2862
- }
2863
-
2864
- 100% {
2865
- -webkit-transform: translate3d(0, 700px, 0);
2866
- -ms-transform: translate3d(0, 700px, 0);
2867
- transform: translate3d(0, 700px, 0);
2868
- opacity: 0;
2869
- }
2870
- }
2871
-
2872
- .hinge {
2873
- -webkit-animation-name: hinge;
2874
- animation-name: hinge;
2875
- }
2876
-
2877
- /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
2878
-
2879
- @-webkit-keyframes rollIn {
2880
- 0% {
2881
- opacity: 0;
2882
- -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
2883
- transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
2884
- }
2885
-
2886
- 100% {
2887
- opacity: 1;
2888
- -webkit-transform: none;
2889
- transform: none;
2890
- }
2891
- }
2892
-
2893
- @keyframes rollIn {
2894
- 0% {
2895
- opacity: 0;
2896
- -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
2897
- -ms-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
2898
- transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
2899
- }
2900
-
2901
- 100% {
2902
- opacity: 1;
2903
- -webkit-transform: none;
2904
- -ms-transform: none;
2905
- transform: none;
2906
- }
2907
- }
2908
-
2909
- .rollIn {
2910
- -webkit-animation-name: rollIn;
2911
- animation-name: rollIn;
2912
- }
2913
-
2914
- /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
2915
-
2916
- @-webkit-keyframes rollOut {
2917
- 0% {
2918
- opacity: 1;
2919
- }
2920
-
2921
- 100% {
2922
- opacity: 0;
2923
- -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
2924
- transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
2925
- }
2926
- }
2927
-
2928
- @keyframes rollOut {
2929
- 0% {
2930
- opacity: 1;
2931
- }
2932
-
2933
- 100% {
2934
- opacity: 0;
2935
- -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
2936
- -ms-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
2937
- transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
2938
- }
2939
- }
2940
-
2941
- .rollOut {
2942
- -webkit-animation-name: rollOut;
2943
- animation-name: rollOut;
2944
- }
2945
-
2946
- @-webkit-keyframes zoomIn {
2947
- 0% {
2948
- opacity: 0;
2949
- -webkit-transform: scale3d(.3, .3, .3);
2950
- transform: scale3d(.3, .3, .3);
2951
- }
2952
-
2953
- 50% {
2954
- opacity: 1;
2955
- }
2956
- }
2957
-
2958
- @keyframes zoomIn {
2959
- 0% {
2960
- opacity: 0;
2961
- -webkit-transform: scale3d(.3, .3, .3);
2962
- -ms-transform: scale3d(.3, .3, .3);
2963
- transform: scale3d(.3, .3, .3);
2964
- }
2965
-
2966
- 50% {
2967
- opacity: 1;
2968
- }
2969
- }
2970
-
2971
- .zoomIn {
2972
- -webkit-animation-name: zoomIn;
2973
- animation-name: zoomIn;
2974
- }
2975
-
2976
- @-webkit-keyframes zoomInDown {
2977
- 0% {
2978
- opacity: 0;
2979
- -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
2980
- transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
2981
- -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2982
- animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2983
- }
2984
-
2985
- 60% {
2986
- opacity: 1;
2987
- -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
2988
- transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
2989
- -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2990
- animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2991
- }
2992
- }
2993
-
2994
- @keyframes zoomInDown {
2995
- 0% {
2996
- opacity: 0;
2997
- -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
2998
- -ms-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
2999
- transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
3000
- -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3001
- animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3002
- }
3003
-
3004
- 60% {
3005
- opacity: 1;
3006
- -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
3007
- -ms-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
3008
- transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
3009
- -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3010
- animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3011
- }
3012
- }
3013
-
3014
- .zoomInDown {
3015
- -webkit-animation-name: zoomInDown;
3016
- animation-name: zoomInDown;
3017
- }
3018
-
3019
- @-webkit-keyframes zoomInLeft {
3020
- 0% {
3021
- opacity: 0;
3022
- -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
3023
- transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
3024
- -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3025
- animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3026
- }
3027
-
3028
- 60% {
3029
- opacity: 1;
3030
- -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
3031
- transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
3032
- -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3033
- animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3034
- }
3035
- }
3036
-
3037
- @keyframes zoomInLeft {
3038
- 0% {
3039
- opacity: 0;
3040
- -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
3041
- -ms-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
3042
- transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
3043
- -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3044
- animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3045
- }
3046
-
3047
- 60% {
3048
- opacity: 1;
3049
- -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
3050
- -ms-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
3051
- transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
3052
- -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3053
- animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3054
- }
3055
- }
3056
-
3057
- .zoomInLeft {
3058
- -webkit-animation-name: zoomInLeft;
3059
- animation-name: zoomInLeft;
3060
- }
3061
-
3062
- @-webkit-keyframes zoomInRight {
3063
- 0% {
3064
- opacity: 0;
3065
- -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
3066
- transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
3067
- -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3068
- animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3069
- }
3070
-
3071
- 60% {
3072
- opacity: 1;
3073
- -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
3074
- transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
3075
- -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3076
- animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3077
- }
3078
- }
3079
-
3080
- @keyframes zoomInRight {
3081
- 0% {
3082
- opacity: 0;
3083
- -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
3084
- -ms-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
3085
- transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
3086
- -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3087
- animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3088
- }
3089
-
3090
- 60% {
3091
- opacity: 1;
3092
- -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
3093
- -ms-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
3094
- transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
3095
- -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3096
- animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3097
- }
3098
- }
3099
-
3100
- .zoomInRight {
3101
- -webkit-animation-name: zoomInRight;
3102
- animation-name: zoomInRight;
3103
- }
3104
-
3105
- @-webkit-keyframes zoomInUp {
3106
- 0% {
3107
- opacity: 0;
3108
- -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
3109
- transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
3110
- -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3111
- animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3112
- }
3113
-
3114
- 60% {
3115
- opacity: 1;
3116
- -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
3117
- transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
3118
- -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3119
- animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3120
- }
3121
- }
3122
-
3123
- @keyframes zoomInUp {
3124
- 0% {
3125
- opacity: 0;
3126
- -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
3127
- -ms-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
3128
- transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
3129
- -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3130
- animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3131
- }
3132
-
3133
- 60% {
3134
- opacity: 1;
3135
- -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
3136
- -ms-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
3137
- transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
3138
- -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3139
- animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3140
- }
3141
- }
3142
-
3143
- .zoomInUp {
3144
- -webkit-animation-name: zoomInUp;
3145
- animation-name: zoomInUp;
3146
- }
3147
-
3148
- @-webkit-keyframes zoomOut {
3149
- 0% {
3150
- opacity: 1;
3151
- }
3152
-
3153
- 50% {
3154
- opacity: 0;
3155
- -webkit-transform: scale3d(.3, .3, .3);
3156
- transform: scale3d(.3, .3, .3);
3157
- }
3158
-
3159
- 100% {
3160
- opacity: 0;
3161
- }
3162
- }
3163
-
3164
- @keyframes zoomOut {
3165
- 0% {
3166
- opacity: 1;
3167
- }
3168
-
3169
- 50% {
3170
- opacity: 0;
3171
- -webkit-transform: scale3d(.3, .3, .3);
3172
- -ms-transform: scale3d(.3, .3, .3);
3173
- transform: scale3d(.3, .3, .3);
3174
- }
3175
-
3176
- 100% {
3177
- opacity: 0;
3178
- }
3179
- }
3180
-
3181
- .zoomOut {
3182
- -webkit-animation-name: zoomOut;
3183
- animation-name: zoomOut;
3184
- }
3185
-
3186
- @-webkit-keyframes zoomOutDown {
3187
- 40% {
3188
- opacity: 1;
3189
- -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
3190
- transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
3191
- -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3192
- animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3193
- }
3194
-
3195
- 100% {
3196
- opacity: 0;
3197
- -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);
3198
- transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);
3199
- -webkit-transform-origin: center bottom;
3200
- transform-origin: center bottom;
3201
- -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3202
- animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3203
- }
3204
- }
3205
-
3206
- @keyframes zoomOutDown {
3207
- 40% {
3208
- opacity: 1;
3209
- -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
3210
- -ms-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
3211
- transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
3212
- -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3213
- animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3214
- }
3215
-
3216
- 100% {
3217
- opacity: 0;
3218
- -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);
3219
- -ms-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);
3220
- transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);
3221
- -webkit-transform-origin: center bottom;
3222
- -ms-transform-origin: center bottom;
3223
- transform-origin: center bottom;
3224
- -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3225
- animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3226
- }
3227
- }
3228
-
3229
- .zoomOutDown {
3230
- -webkit-animation-name: zoomOutDown;
3231
- animation-name: zoomOutDown;
3232
- }
3233
-
3234
- @-webkit-keyframes zoomOutLeft {
3235
- 40% {
3236
- opacity: 1;
3237
- -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
3238
- transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
3239
- }
3240
-
3241
- 100% {
3242
- opacity: 0;
3243
- -webkit-transform: scale(.1) translate3d(-2000px, 0, 0);
3244
- transform: scale(.1) translate3d(-2000px, 0, 0);
3245
- -webkit-transform-origin: left center;
3246
- transform-origin: left center;
3247
- }
3248
- }
3249
-
3250
- @keyframes zoomOutLeft {
3251
- 40% {
3252
- opacity: 1;
3253
- -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
3254
- -ms-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
3255
- transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
3256
- }
3257
-
3258
- 100% {
3259
- opacity: 0;
3260
- -webkit-transform: scale(.1) translate3d(-2000px, 0, 0);
3261
- -ms-transform: scale(.1) translate3d(-2000px, 0, 0);
3262
- transform: scale(.1) translate3d(-2000px, 0, 0);
3263
- -webkit-transform-origin: left center;
3264
- -ms-transform-origin: left center;
3265
- transform-origin: left center;
3266
- }
3267
- }
3268
-
3269
- .zoomOutLeft {
3270
- -webkit-animation-name: zoomOutLeft;
3271
- animation-name: zoomOutLeft;
3272
- }
3273
-
3274
- @-webkit-keyframes zoomOutRight {
3275
- 40% {
3276
- opacity: 1;
3277
- -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
3278
- transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
3279
- }
3280
-
3281
- 100% {
3282
- opacity: 0;
3283
- -webkit-transform: scale(.1) translate3d(2000px, 0, 0);
3284
- transform: scale(.1) translate3d(2000px, 0, 0);
3285
- -webkit-transform-origin: right center;
3286
- transform-origin: right center;
3287
- }
3288
- }
3289
-
3290
- @keyframes zoomOutRight {
3291
- 40% {
3292
- opacity: 1;
3293
- -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
3294
- -ms-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
3295
- transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
3296
- }
3297
-
3298
- 100% {
3299
- opacity: 0;
3300
- -webkit-transform: scale(.1) translate3d(2000px, 0, 0);
3301
- -ms-transform: scale(.1) translate3d(2000px, 0, 0);
3302
- transform: scale(.1) translate3d(2000px, 0, 0);
3303
- -webkit-transform-origin: right center;
3304
- -ms-transform-origin: right center;
3305
- transform-origin: right center;
3306
- }
3307
- }
3308
-
3309
- .zoomOutRight {
3310
- -webkit-animation-name: zoomOutRight;
3311
- animation-name: zoomOutRight;
3312
- }
3313
-
3314
- @-webkit-keyframes zoomOutUp {
3315
- 40% {
3316
- opacity: 1;
3317
- -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
3318
- transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
3319
- -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3320
- animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3321
- }
3322
-
3323
- 100% {
3324
- opacity: 0;
3325
- -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);
3326
- transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);
3327
- -webkit-transform-origin: center bottom;
3328
- transform-origin: center bottom;
3329
- -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3330
- animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3331
- }
3332
- }
3333
-
3334
- @keyframes zoomOutUp {
3335
- 40% {
3336
- opacity: 1;
3337
- -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
3338
- -ms-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
3339
- transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
3340
- -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3341
- animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3342
- }
3343
-
3344
- 100% {
3345
- opacity: 0;
3346
- -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);
3347
- -ms-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);
3348
- transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);
3349
- -webkit-transform-origin: center bottom;
3350
- -ms-transform-origin: center bottom;
3351
- transform-origin: center bottom;
3352
- -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3353
- animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3354
- }
3355
- }
3356
-
3357
- .zoomOutUp {
3358
- -webkit-animation-name: zoomOutUp;
3359
- animation-name: zoomOutUp;
3360
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/css/style.css CHANGED
@@ -1,460 +1,361 @@
1
- /*-----------------------------------*\
2
- $RESET
3
- \*-----------------------------------*/
4
-
5
- *, :before, :after {
6
- margin: 0;
7
- padding: 0;
8
- position: relative;
9
- -webkit-box-sizing: border-box;
10
- -moz-box-sizing: border-box;
11
- box-sizing: border-box;
12
  }
13
 
14
- input, select, button, textarea {
15
- font: inherit;
16
- font-size: 16px !important;
17
- color: inherit;
 
18
  }
19
 
20
- /*-----------------------------------*\
21
- $OBJECTS
22
- \*-----------------------------------*/
23
 
24
- .butt, .input {
25
- padding: .75rem;
26
- margin: .375rem;
27
- background-color: transparent;
28
  }
29
 
30
- .butt:focus, .input:focus {
31
- outline: none;
32
- }
33
-
34
- .butt {
35
- border: 0;
36
- line-height: 1.375;
37
- padding-left: 1.5rem;
38
- padding-right: 1.5rem;
39
-
40
- font-weight: 700;
41
 
42
- color: #f35626;
 
 
 
 
 
43
 
44
- cursor: pointer;
45
- -webkit-animation: hue 60s infinite linear;
 
 
 
 
 
 
46
  }
47
 
48
- .button-animate-it-green{
49
- padding: 15px 20px;
50
- background: #48b500;
51
- border:0;
52
- box-shadow: none;
53
- color: #ffffff;
54
- -webkit-transition: all 0.3s ease-out;
55
- -moz-transition: all 0.3s ease-out;
56
- -o-transition: all 0.3s ease-out;
57
- transition: all 0.3s ease-out;
58
  }
59
 
60
- .button-animate-it-green:hover {
61
- background: none repeat scroll 0% 0% rgb(86, 215, 0);
 
 
 
 
 
 
62
  }
63
 
64
- .button-animate-it-cancel{
65
- padding: 15px 20px;
66
- background: #696969;
67
- border:0;
68
- box-shadow: none;
69
- color: #ffffff;
70
- -webkit-transition: all 0.3s ease-out;
71
- -moz-transition: all 0.3s ease-out;
72
- -o-transition: all 0.3s ease-out;
73
- transition: all 0.3s ease-out;
74
  }
75
 
76
- .button-animate-it-cancel:hover {
77
- background: #969696;
78
  }
79
 
80
- .butt--primary {
81
- background-color: #f35626;
82
- color: #fff;
83
- }
84
 
85
- .input {
86
- border: 1px solid #c0c8c9;
 
 
 
 
87
  }
88
 
89
- .input--dropdown {
90
- background-repeat: no-repeat;
91
- background-size: 1.5rem 1rem;
92
- background-position: right center;
93
- }
94
 
95
- /*-----------------------------------*\
96
- $TYPOGRAPHY
97
- \*-----------------------------------*/
 
 
 
 
 
 
 
98
 
99
- h1, .alpha {
100
- margin-bottom: 1.5rem;
 
 
 
101
 
102
- font-size: 3rem;
103
- font-weight: 100;
104
- line-height: 1;
105
- letter-spacing: -.05em;
106
  }
107
 
108
- h2, .beta {
109
- margin-bottom: .75rem;
 
 
 
 
 
 
110
 
111
- font-weight: 400;
112
- font-size: 1.5rem;
113
- line-height: 1;
114
  }
115
 
116
- @media (min-width: 650px) {
117
- .mega {
118
- font-size: 6rem;
119
- line-height: 1;
120
- }
121
  }
122
 
123
- .subhead, .meta {
124
- color: #7b8993;
125
  }
126
 
127
- .promo {
128
- text-align: center;
 
 
129
  }
130
 
131
- p, hr, form {
132
- margin-bottom: 1.5rem;
133
  }
134
 
135
- hr {
136
- border: none;
137
- margin-top: -1px;
138
- height: 1px;
139
- background-color: #c0c8c9;
140
- background-image: -webkit-linear-gradient(0deg, #fff, #c0c8c9, #fff);
141
  }
142
 
143
- a {
144
- color: inherit;
145
- text-decoration: underline;
146
- -webkit-animation: hue 60s infinite linear;
 
 
 
 
 
 
147
  }
148
 
149
- a:hover {
150
- color: #f35626;
151
- }
152
 
153
- /*-----------------------------------*\
154
- $LAYOUT
155
- \*-----------------------------------*/
 
 
 
 
156
 
157
- .wrap {
158
- max-width: 38rem;
159
- margin: 0 auto;
160
  }
161
 
162
- .island {
163
- padding: 1.5rem;
164
  }
165
 
166
- .isle {
167
- padding: .75rem;
168
  }
169
 
170
- .spit {
171
- padding: .375rem;
 
 
 
172
  }
173
 
174
- /*-----------------------------------*\
175
- $BASE
176
- \*-----------------------------------*/
 
 
177
 
178
- html {
179
- font: 100%/1.5 "Roboto", Verdana, sans-serif !important;
180
- color: #3d464d;
181
- background-color: #fff;
182
- -webkit-font-smoothing: antialiased;
183
- width: 100%;
 
 
 
 
184
 
185
- overflow: hidden-x;
 
 
186
 
187
- /* Centering in The Unknown */
188
- text-align: center;
189
  }
190
 
191
- @media (min-width: 650px) {
192
- html {
193
- height: 100%;
194
- }
195
 
196
- html:before {
197
- content: '';
198
- display: inline-block;
199
- height: 100%;
200
- vertical-align: middle;
201
- margin-right: -0.25em;
202
- }
203
 
204
- body {
205
- display: inline-block;
206
- vertical-align: middle;
207
- max-width: 38rem;
208
- }
209
  }
210
 
211
- /*-----------------------------------*\
212
- $HEADER
213
- \*-----------------------------------*/
214
 
215
- .site__header {
216
- -webkit-animation: bounceInUp 1s;
217
  }
218
 
219
- .site__title {
220
- color: #f35626;
221
- background-image: -webkit-linear-gradient(92deg,#f35626,#feab3a);
222
- -webkit-background-clip: text;
223
- -webkit-text-fill-color: transparent;
224
- -webkit-animation: hue 60s infinite linear;
225
- }
226
 
227
- .site__content {
228
- -webkit-animation: bounceInUp 1s;
229
- -webkit-animation-delay: .1s;
 
 
230
  }
231
 
232
- .site__content form {
233
- -webkit-animation: bounceInUp 1s;
234
- -webkit-animation-delay: .1s;
235
- }
236
 
237
- .button-animate-it{
238
- font-family: 'Glegoo','Helvetica',arial,serif !important;
239
- padding: 15px 20px;
240
- background: #ff2e01;
241
- border:0;
242
- box-shadow: none;
243
- color: #ffffff;
244
- -webkit-transition: all 0.3s ease-out;
245
- -moz-transition: all 0.3s ease-out;
246
- -o-transition: all 0.3s ease-out;
247
- transition: all 0.3s ease-out;
248
  }
249
 
250
- .button-animate-it:hover{
251
- background: #ff6341;
 
252
  }
253
 
254
- .animateit-icon{
255
- background: url("../images/badge.png") no-repeat scroll center center;
256
- max-width: 172px;
257
- height: 172px;
258
- display: block;
259
  margin-left: auto;
260
  margin-right: auto;
261
  }
262
-
263
- /*-----------------------------------*\
264
- $ANIMATIONS
265
- \*-----------------------------------*/
266
-
267
- @-webkit-keyframes hue {
268
- from {
269
- -webkit-filter: hue-rotate(0deg);
270
- }
271
-
272
- to {
273
- -webkit-filter: hue-rotate(-360deg);
274
- }
275
- }
276
-
277
- .bootstrap-switch {
278
- display: inline-block;
279
- cursor: pointer;
280
- border-radius: 4px;
281
- border: 1px solid;
282
- border-color: #cccccc;
283
- position: relative;
284
- text-align: left;
285
- overflow: hidden;
286
- line-height: 8px;
287
- -webkit-user-select: none;
288
- -moz-user-select: none;
289
- -ms-user-select: none;
290
- user-select: none;
291
- vertical-align: middle;
292
- min-width: 100px;
293
- -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
294
- transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
295
- margin-left: 5px;
296
- }
297
- .bootstrap-switch.bootstrap-switch-mini {
298
- min-width: 71px;
299
- }
300
-
301
- .bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-on,
302
- .bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-off,
303
- .bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-label {
304
- padding-bottom: 4px;
305
- padding-top: 4px;
306
- font-size: 10px;
307
- line-height: 9px;
308
- }
309
- .bootstrap-switch.bootstrap-switch-small {
310
- min-width: 79px;
311
- }
312
- .bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-on,
313
- .bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-off,
314
- .bootstrap-switch.bootstrap-switch-small .bootstrap-switch-label {
315
- padding-bottom: 3px;
316
- padding-top: 3px;
317
- font-size: 12px;
318
- line-height: 18px;
319
- }
320
- .bootstrap-switch.bootstrap-switch-large {
321
- min-width: 120px;
322
- }
323
- .bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-on,
324
- .bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-off,
325
- .bootstrap-switch.bootstrap-switch-large .bootstrap-switch-label {
326
- padding-bottom: 9px;
327
- padding-top: 9px;
328
- font-size: 16px;
329
- line-height: normal;
330
- }
331
- .bootstrap-switch.bootstrap-switch-animate .bootstrap-switch-container {
332
- -webkit-transition: margin-left 0.5s;
333
- transition: margin-left 0.5s;
334
- }
335
- .bootstrap-switch.bootstrap-switch-on .bootstrap-switch-container {
336
- margin-left: 0%;
337
- }
338
- .bootstrap-switch.bootstrap-switch-on .bootstrap-switch-label {
339
- border-bottom-right-radius: 3px;
340
- border-top-right-radius: 3px;
341
- }
342
- .bootstrap-switch.bootstrap-switch-off .bootstrap-switch-container {
343
- margin-left: -50%;
344
- }
345
- .bootstrap-switch.bootstrap-switch-off .bootstrap-switch-label {
346
- border-bottom-left-radius: 3px;
347
- border-top-left-radius: 3px;
348
- }
349
- .bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-container {
350
- margin-left: -25%;
351
- }
352
- .bootstrap-switch.bootstrap-switch-disabled,
353
- .bootstrap-switch.bootstrap-switch-readonly,
354
- .bootstrap-switch.bootstrap-switch-indeterminate {
355
- opacity: 0.5;
356
- filter: alpha(opacity=50);
357
- cursor: default !important;
358
- }
359
- .bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-on,
360
- .bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-on,
361
- .bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-on,
362
- .bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-off,
363
- .bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-off,
364
- .bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-off,
365
- .bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-label,
366
- .bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-label,
367
- .bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-label {
368
- cursor: default !important;
369
- }
370
- .bootstrap-switch.bootstrap-switch-focused {
371
-
372
- }
373
- .bootstrap-switch .bootstrap-switch-container {
374
- display: inline-block;
375
- width: 150%;
376
- top: 0;
377
- border-radius: 4px;
378
- -webkit-transform: translate3d(0, 0, 0);
379
- transform: translate3d(0, 0, 0);
380
- }
381
- .bootstrap-switch .bootstrap-switch-handle-on,
382
- .bootstrap-switch .bootstrap-switch-handle-off,
383
- .bootstrap-switch .bootstrap-switch-label {
384
- -webkit-box-sizing: border-box;
385
- -moz-box-sizing: border-box;
386
- box-sizing: border-box;
387
- cursor: pointer;
388
- display: inline-block !important;
389
- height: 100%;
390
- padding-bottom: 4px;
391
- padding-top: 4px;
392
- font-size: 14px;
393
- line-height: 20px;
394
- }
395
- .bootstrap-switch .bootstrap-switch-handle-on,
396
- .bootstrap-switch .bootstrap-switch-handle-off {
397
- text-align: center;
398
- z-index: 1;
399
- width: 33.333333333%;
400
- }
401
- .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary,
402
- .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary {
403
- color: #fff;
404
- background: #ff2e01;
405
- }
406
- .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info,
407
- .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info {
408
- color: #fff;
409
- background: #5bc0de;
410
- }
411
- .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success,
412
- .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success {
413
- color: #fff;
414
- background: #5cb85c;
415
- }
416
- .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning,
417
- .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning {
418
- background: #f0ad4e;
419
- color: #fff;
420
- }
421
- .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger,
422
- .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger {
423
- color: #fff;
424
- background: #d9534f;
425
- }
426
- .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default,
427
- .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default {
428
- color: #000;
429
- background: #eeeeee;
430
- }
431
- .bootstrap-switch .bootstrap-switch-handle-on {
432
- border-bottom-left-radius: 3px;
433
- border-top-left-radius: 3px;
434
- }
435
- .bootstrap-switch .bootstrap-switch-handle-off {
436
- border-bottom-right-radius: 3px;
437
- border-top-right-radius: 3px;
438
- }
439
- .bootstrap-switch .bootstrap-switch-label {
440
- text-align: center;
441
- margin-top: -1px;
442
- margin-bottom: -1px;
443
- z-index: 100;
444
- width: 33.333333333%;
445
- color: #333333;
446
- background: #ffffff;
447
- }
448
- .bootstrap-switch input[type='radio'],
449
- .bootstrap-switch input[type='checkbox'] {
450
- position: absolute !important;
451
- top: 0;
452
- left: 0;
453
- opacity: 0;
454
- filter: alpha(opacity=0);
455
- z-index: -1;
456
- }
457
- .bootstrap-switch input[type='radio'].form-control,
458
- .bootstrap-switch input[type='checkbox'].form-control {
459
- height: auto;
460
  }
1
+ /* Do no Use */
2
+ body{
3
+ background-color: #ffffff;
 
 
 
 
 
 
 
 
4
  }
5
 
6
+ .edsai-wrapper{
7
+ background: #ffffff;
8
+ width: 100%;
9
+ margin-left: auto;
10
+ margin-right: auto;
11
  }
12
 
13
+ /* Do no Use END */
 
 
14
 
15
+ .edsai-wrapper{
16
+ font-family: 'Open Sans', sans-serif;
17
+ position: relative;
18
+ overflow: hidden;
19
  }
20
 
21
+ .edaai-header{
22
+ background: #fcfcfc;
23
+ font-size: 18px;
24
+ color: #23282d;
25
+ font-weight: 600;
26
+ border-bottom: 1px solid #e7e6e7;
27
+ padding: 12px;
28
+ }
 
 
 
29
 
30
+ .edsai-footer-wrapper{
31
+ background: #fcfcfc;
32
+ color: #23282d;
33
+ border-top: 1px solid #e7e6e7;
34
+ padding: 14px 12px;
35
+ }
36
 
37
+ .animateit-icon {
38
+ background: transparent url("../images/badge.png") no-repeat scroll center center;
39
+ max-width: 150px;
40
+ height: 150px;
41
+ display: block;
42
+ margin-left: auto;
43
+ margin-right: auto;
44
+ padding: 0;
45
  }
46
 
47
+ .edsai-tabs{
48
+ background: #ececec;
 
 
 
 
 
 
 
 
49
  }
50
 
51
+ .edsai-tabs .edsai-tab{
52
+ width: 33.33%;
53
+ box-sizing: border-box;
54
+ text-align: center;
55
+ display: inline-block;
56
+ margin: 0;
57
+ padding: 0;
58
+ margin-left: -4px;
59
  }
60
 
61
+ .edsai-tabs .edsai-tab a{
62
+ padding: 15px;
63
+ display: block;
64
+ color: #9c9c9c;
65
+ font-size: 18px;
66
+ font-weight: 600;
67
+ text-decoration: none;
68
+ border-bottom: 3px solid transparent;
69
+ background: #ECECEC;
 
70
  }
71
 
72
+ .edsai-tabs .edsai-tab a:hover{
73
+ color: #FF2E01;
74
  }
75
 
76
+ .edsai-form-control-wrapper{
77
+ padding-top: 6px;
78
+ }
 
79
 
80
+ .edsai-form-control option[disabled]{
81
+ opacity: 0.5;
82
+ }
83
+ .edsai-tabs .edsai-tab.edsai-tab-active a{
84
+ color: #ff2e01;
85
+ border-color: #ff2e01;
86
  }
87
 
88
+ .edsai-tabs .edsai-tab.edsai-tab-active a:hover, .edsai-tabs .edsai-tab.edsai-tab-active a:active, .edsai-tabs .edsai-tab.edsai-tab-active a:focus{
89
+ outline: none;
90
+ }
 
 
91
 
92
+ .edsai-form-control-wrapper label{
93
+ width: 210px;
94
+ text-align: right;
95
+ font-weight: 600;
96
+ font-size: 14px;
97
+ color: #23282d;
98
+ display: inline-block;
99
+ padding: 4px 10px;
100
+ box-sizing: border-box;
101
+ }
102
 
103
+ .edsai-form-control-wrapper .edsai-form-control label{
104
+ width: 25%;
105
+ font-weight: 400;
106
+ text-align: center;
107
+ }
108
 
109
+ .edsai-form-control input[type=radio] {
110
+ display:none;
111
+ margin:10px;
 
112
  }
113
 
114
+ .edsai-form-control input[type=radio] + label {
115
+ display:inline-block;
116
+ margin:-3px;
117
+ padding: 12px;
118
+ background-color: #e7e7e7;
119
+ border-left: 1px solid #c8c8c8;
120
+ cursor: pointer;
121
+ }
122
 
123
+ .edsai-form-control input[type=radio]:first-child + label {
124
+ border-radius: 5px 0 0 5px;
125
+ border-left: 0;
126
  }
127
 
128
+ .edsai-form-control input[type=radio] + label:last-child {
129
+ border-radius: 0 5px 5px 0;
 
 
 
130
  }
131
 
132
+ .edsai-form-control input[type=radio] + label:hover{
133
+ background: #dddddd;
134
  }
135
 
136
+ .edsai-form-control input[type=radio]:checked + label {
137
+ background-image: none;
138
+ background-color: #27b21c;
139
+ color: #fff;
140
  }
141
 
142
+ .edsai-form-control #keep-no:checked + label {
143
+ background-color: #c71d1d;
144
  }
145
 
146
+ .edsai-form-control{
147
+ width: 435px;
148
+ display: inline-block;
149
+ padding: 4px 30px 4px 10px;
150
+ box-sizing: border-box;
 
151
  }
152
 
153
+ .edsai-form-control input,.edsai-form-control select{
154
+ border: 1px solid #DDD;
155
+ background-color: #FFF;
156
+ color: #32373C;
157
+ outline: 0px none;
158
+ transition: border-color 50ms ease-in-out 0s;
159
+ margin: 1px;
160
+ padding: 10px 10px;
161
+ font-size: 14px;
162
+ border-radius: 0px;
163
  }
164
 
165
+ .edsai-form-control input:hover, .edsai-form-control select:hover{
166
+ background: #f6f6f6;
167
+ }
168
 
169
+ .edsai-form-control input:focus, .edsai-form-control select:focus{
170
+ border-color: #5B9DD9;
171
+ background: #f6f6f6;
172
+ -moz-box-shadow: 0px 0px 2px rgba(30, 140, 190, 0.8);
173
+ -webkit-box-shadow: 0px 0px 2px rgba(30, 140, 190, 0.8);
174
+ box-shadow: 0px 0px 2px rgba(30, 140, 190, 0.8);
175
+ }
176
 
177
+ .edsai-form-control .full-size{
178
+ width: 100%;
 
179
  }
180
 
181
+ .edsai-form-control .half-size{
182
+ width: 180px;
183
  }
184
 
185
+ .edsai-footer-left, .edsai-footer-right{
186
+ display: inline-block;
187
  }
188
 
189
+ .edsai-footer-left{
190
+ font-size: 12px;
191
+ font-weight: 600;
192
+ line-height: 20px;
193
+ width: 355px;
194
  }
195
 
196
+ .edsai-footer-right{
197
+ text-align: right;
198
+ line-height: 20px;
199
+ width: 337px;
200
+ }
201
 
202
+ .edsai-footer-right button{
203
+ border: 0;
204
+ border-radius: 5px;
205
+ padding: 10px 15px;
206
+ margin-left: 16px;
207
+ font-size: 16px;
208
+ color: #ffffff;
209
+ cursor: pointer;
210
+ width: 150px;
211
+ }
212
 
213
+ .edsai-insert{
214
+ background: #27b21c;
215
+ }
216
 
217
+ .edsai-insert:hover, .edsai-insert:active, .edsai-insert:focus{
218
+ background: #1d9d13;
219
  }
220
 
221
+ .edsai-animate-it{
222
+ background: #ff2e01;
223
+ }
 
224
 
225
+ .edsai-animate-it:hover, .edsai-animate-it:active, .edsai-animate-it:focus{
226
+ background: #dd2700;
227
+ }
 
 
 
 
228
 
229
+ .edsai-animate-it[disabled="disabled"]{
230
+ pointer-events: none;
231
+ opacity: 0.3;
 
 
232
  }
233
 
234
+ .btn-stop-infinite-animation{
235
+ background: #fcbc00;
236
+ }
237
 
238
+ .btn-stop-infinite-animation:hover, .btn-stop-infinite-animation:active, .btn-stop-infinite-animation:focus{
239
+ background: #f2b810;
240
  }
241
 
242
+ .edsai-form-wrapper{
243
+ margin: 0px auto;
244
+ width: 100%;
245
+ max-width: 700px;
246
+ }
 
 
247
 
248
+ .edsai-footer-left a{
249
+ color: #ff2e01 !important;
250
+ text-decoration: none;
251
+ margin-left: 4px;
252
+ margin-right: 4px;
253
  }
254
 
255
+ .edsai-footer-left a:hover, .edsai-footer-left a:active, .edsai-footer-left a:focus{
256
+ color: #dd2700 !important;
257
+ text-decoration: underline;
258
+ }
259
 
260
+ .edsai-tab-content{
261
+ display: none;
262
+ width: 100%;
263
+ padding: 15px 0;
264
+ box-sizing: border-box;
 
 
 
 
 
 
265
  }
266
 
267
+ .preview-badge {
268
+ position: relative;
269
+ padding: 32px 0;
270
  }
271
 
272
+ .edsai-footer{
273
+ max-width: 700px;
 
 
 
274
  margin-left: auto;
275
  margin-right: auto;
276
  }
277
+
278
+ @media only screen and (min-width: 666px) and (max-width: 757px) {
279
+ .edsai-footer-wrapper{
280
+ padding: 14px 0;
281
+ }
282
+ .edsai-footer{
283
+ text-align: center;
284
+ position: relative;
285
+ height: 80px;
286
+ }
287
+ .edsai-footer-right, .edsai-footer-left{
288
+ position: absolute;
289
+ left: 0;
290
+ }
291
+ .edsai-footer-left{
292
+ bottom: 0;
293
+ width: 100%;
294
+ }
295
+ .edsai-footer-right{
296
+ top: 0;
297
+ width: 338px;
298
+ left: 50%;
299
+ margin-left: -169px;
300
+ }
301
+ .edsai-footer-right button{
302
+ margin-left: 8px;
303
+ margin-right: 8px;
304
+ }
305
+ }
306
+
307
+ @media only screen and (min-height: 666px){
308
+ .edsai-tab-content{
309
+ min-height: 304px;
310
+ }
311
+ }
312
+
313
+ @media only screen and (max-height: 708px){
314
+ .preview-badge{
315
+ padding: 10px 0px;
316
+ }
317
+ }
318
+
319
+ @media only screen and (max-width: 665px) {
320
+ .edsai-tabs .edsai-tab a{
321
+ padding: 15px 10px;
322
+ }
323
+ .edsai-form-control-wrapper label {
324
+ width: 100%;
325
+ text-align: center;
326
+ }
327
+ .edsai-form-control{
328
+ padding: 4px;
329
+ width: 100%;
330
+ text-align: center;
331
+ }
332
+ .edsai-form-control .half-size {
333
+ width: 100%;
334
+ margin-bottom: 10px;
335
+ box-sizing: border-box;
336
+ }
337
+ .edsai-footer-right button{
338
+ width: 100%;
339
+ margin: 5px 0;
340
+ }
341
+ .preview-badge{
342
+ padding: 0;
343
+ }
344
+ .edsai-footer{
345
+ text-align: center;
346
+ position: relative;
347
+ height: 160px;
348
+ }
349
+ .edsai-footer-right, .edsai-footer-left{
350
+ position: absolute;
351
+ left: 0;
352
+ }
353
+ .edsai-footer-left{
354
+ bottom: 0;
355
+ width: 100%;
356
+ }
357
+ .edsai-footer-right{
358
+ top: 0;
359
+ width: 100%;
360
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
361
  }
assets/helper/Mobile_Detect.php DELETED
@@ -1,1248 +0,0 @@
1
- <?php
2
- /**
3
- * Mobile Detect Library
4
- * =====================
5
- *
6
- * Motto: "Every business should have a mobile detection script to detect mobile readers"
7
- *
8
- * Mobile_Detect is a lightweight PHP class for detecting mobile devices (including tablets).
9
- * It uses the User-Agent string combined with specific HTTP headers to detect the mobile environment.
10
- *
11
- * @author Current authors: Serban Ghita <serbanghita@gmail.com>, Nick Ilyin <nick.ilyin@gmail.com>
12
- * Original author: Victor Stanciu <vic.stanciu@gmail.com>
13
- *
14
- * @license Code and contributions have 'MIT License'
15
- * More details: https://github.com/serbanghita/Mobile-Detect/blob/master/LICENSE.txt
16
- *
17
- * @link Homepage: http://mobiledetect.net
18
- * GitHub Repo: https://github.com/serbanghita/Mobile-Detect
19
- * Google Code: http://code.google.com/p/php-mobile-detect/
20
- * README: https://github.com/serbanghita/Mobile-Detect/blob/master/README.md
21
- * HOWTO: https://github.com/serbanghita/Mobile-Detect/wiki/Code-examples
22
- *
23
- * @version 2.8.3
24
- */
25
-
26
- class EDS_Mobile_Detect
27
- {
28
- /**
29
- * Mobile detection type.
30
- *
31
- * @deprecated since version 2.6.9
32
- */
33
- const DETECTION_TYPE_MOBILE = 'mobile';
34
-
35
- /**
36
- * Extended detection type.
37
- *
38
- * @deprecated since version 2.6.9
39
- */
40
- const DETECTION_TYPE_EXTENDED = 'extended';
41
-
42
- /**
43
- * A frequently used regular expression to extract version #s.
44
- *
45
- * @deprecated since version 2.6.9
46
- */
47
- const VER = '([\w._\+]+)';
48
-
49
- /**
50
- * Top-level device.
51
- */
52
- const MOBILE_GRADE_A = 'A';
53
-
54
- /**
55
- * Mid-level device.
56
- */
57
- const MOBILE_GRADE_B = 'B';
58
-
59
- /**
60
- * Low-level device.
61
- */
62
- const MOBILE_GRADE_C = 'C';
63
-
64
- /**
65
- * Stores the version number of the current release.
66
- */
67
- const VERSION = '2.8.3';
68
-
69
- /**
70
- * A type for the version() method indicating a string return value.
71
- */
72
- const VERSION_TYPE_STRING = 'text';
73
-
74
- /**
75
- * A type for the version() method indicating a float return value.
76
- */
77
- const VERSION_TYPE_FLOAT = 'float';
78
-
79
- /**
80
- * The User-Agent HTTP header is stored in here.
81
- * @var string
82
- */
83
- protected $userAgent = null;
84
-
85
- /**
86
- * HTTP headers in the PHP-flavor. So HTTP_USER_AGENT and SERVER_SOFTWARE.
87
- * @var array
88
- */
89
- protected $httpHeaders = array();
90
-
91
- /**
92
- * The detection type, using self::DETECTION_TYPE_MOBILE or self::DETECTION_TYPE_EXTENDED.
93
- *
94
- * @deprecated since version 2.6.9
95
- *
96
- * @var string
97
- */
98
- protected $detectionType = self::DETECTION_TYPE_MOBILE;
99
-
100
- /**
101
- * HTTP headers that trigger the 'isMobile' detection
102
- * to be true.
103
- *
104
- * @var array
105
- */
106
- protected static $mobileHeaders = array(
107
-
108
- 'HTTP_ACCEPT' => array('matches' => array(
109
- // Opera Mini; @reference: http://dev.opera.com/articles/view/opera-binary-markup-language/
110
- 'application/x-obml2d',
111
- // BlackBerry devices.
112
- 'application/vnd.rim.html',
113
- 'text/vnd.wap.wml',
114
- 'application/vnd.wap.xhtml+xml'
115
- )),
116
- 'HTTP_X_WAP_PROFILE' => null,
117
- 'HTTP_X_WAP_CLIENTID' => null,
118
- 'HTTP_WAP_CONNECTION' => null,
119
- 'HTTP_PROFILE' => null,
120
- // Reported by Opera on Nokia devices (eg. C3).
121
- 'HTTP_X_OPERAMINI_PHONE_UA' => null,
122
- 'HTTP_X_NOKIA_GATEWAY_ID' => null,
123
- 'HTTP_X_ORANGE_ID' => null,
124
- 'HTTP_X_VODAFONE_3GPDPCONTEXT' => null,
125
- 'HTTP_X_HUAWEI_USERID' => null,
126
- // Reported by Windows Smartphones.
127
- 'HTTP_UA_OS' => null,
128
- // Reported by Verizon, Vodafone proxy system.
129
- 'HTTP_X_MOBILE_GATEWAY' => null,
130
- // Seend this on HTC Sensation. @ref: SensationXE_Beats_Z715e.
131
- 'HTTP_X_ATT_DEVICEID' => null,
132
- // Seen this on a HTC.
133
- 'HTTP_UA_CPU' => array('matches' => array('ARM')),
134
- );
135
-
136
- /**
137
- * List of mobile devices (phones).
138
- *
139
- * @var array
140
- */
141
- protected static $phoneDevices = array(
142
- 'iPhone' => '\biPhone.*(Mobile|PhoneGap)|\biPod', // |\biTunes
143
- 'BlackBerry' => 'BlackBerry|\bBB10\b|rim[0-9]+',
144
- 'HTC' => 'HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\bEVO\b|T-Mobile G1|Z520m',
145
- 'Nexus' => 'Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile',
146
- // @todo: Is 'Dell Streak' a tablet or a phone? ;)
147
- 'Dell' => 'Dell.*Streak|Dell.*Aero|Dell.*Venue|DELL.*Venue Pro|Dell Flash|Dell Smoke|Dell Mini 3iX|XCD28|XCD35|\b001DL\b|\b101DL\b|\bGS01\b',
148
- 'Motorola' => 'Motorola|DROIDX|DROID BIONIC|\bDroid\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925',
149
- 'Samsung' => 'Samsung|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E',
150
- 'LG' => '\bLG\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802)',
151
- 'Sony' => 'SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i',
152
- 'Asus' => 'Asus.*Galaxy|PadFone.*Mobile',
153
- // @ref: http://www.micromaxinfo.com/mobiles/smartphones
154
- // Added because the codes might conflict with Acer Tablets.
155
- 'Micromax' => 'Micromax.*\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\b',
156
- 'Palm' => 'PalmSource|Palm', // avantgo|blazer|elaine|hiptop|plucker|xiino ; @todo - complete the regex.
157
- 'Vertu' => 'Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature', // Just for fun ;)
158
- // @ref: http://www.pantech.co.kr/en/prod/prodList.do?gbrand=VEGA (PANTECH)
159
- // Most of the VEGA devices are legacy. PANTECH seem to be newer devices based on Android.
160
- 'Pantech' => 'PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790',
161
- // @ref: http://www.fly-phone.com/devices/smartphones/ ; Included only smartphones.
162
- 'Fly' => 'IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250',
163
- 'iMobile' => 'i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)',
164
- // Added simvalley mobile just for fun. They have some interesting devices.
165
- // @ref: http://www.simvalley.fr/telephonie---gps-_22_telephonie-mobile_telephones_.html
166
- 'SimValley' => '\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\b',
167
- // @Tapatalk is a mobile app; @ref: http://support.tapatalk.com/threads/smf-2-0-2-os-and-browser-detection-plugin-and-tapatalk.15565/#post-79039
168
- 'GenericPhone' => 'Tapatalk|PDA;|SAGEM|\bmmp\b|pocket|\bpsp\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\bwap\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser'
169
- );
170
-
171
- /**
172
- * List of tablet devices.
173
- *
174
- * @var array
175
- */
176
- protected static $tabletDevices = array(
177
- 'iPad' => 'iPad|iPad.*Mobile', // @todo: check for mobile friendly emails topic.
178
- 'NexusTablet' => 'Android.*Nexus[\s]+(7|10)|^.*Android.*Nexus(?:(?!Mobile).)*$',
179
- 'SamsungTablet' => 'SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-I9205|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705C|SM-T535|SM-T331', // SCH-P709|SCH-P729|SM-T2558 - Samsung Mega - treat them like a regular phone.
180
- // @reference: http://www.labnol.org/software/kindle-user-agent-string/20378/
181
- 'Kindle' => 'Kindle|Silk.*Accelerated|Android.*\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE)\b',
182
- // Only the Surface tablets with Windows RT are considered mobile.
183
- // @ref: http://msdn.microsoft.com/en-us/library/ie/hh920767(v=vs.85).aspx
184
- 'SurfaceTablet' => 'Windows NT [0-9.]+; ARM;',
185
- // @ref: http://shopping1.hp.com/is-bin/INTERSHOP.enfinity/WFS/WW-USSMBPublicStore-Site/en_US/-/USD/ViewStandardCatalog-Browse?CatalogCategoryID=JfIQ7EN5lqMAAAEyDcJUDwMT
186
- 'HPTablet' => 'HP Slate 7|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8',
187
- // @note: watch out for PadFone, see #132
188
- 'AsusTablet' => '^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\bK00F\b|TX201LA',
189
- 'BlackBerryTablet' => 'PlayBook|RIM Tablet',
190
- 'HTCtablet' => 'HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200',
191
- 'MotorolaTablet' => 'xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617',
192
- 'NookTablet' => 'Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2',
193
- // @ref: http://www.acer.ro/ac/ro/RO/content/drivers
194
- // @ref: http://www.packardbell.co.uk/pb/en/GB/content/download (Packard Bell is part of Acer)
195
- // @ref: http://us.acer.com/ac/en/US/content/group/tablets
196
- // @note: Can conflict with Micromax and Motorola phones codes.
197
- 'AcerTablet' => 'Android.*; \b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-830)\b|W3-810|\bA3-A10\b',
198
- // @ref: http://eu.computers.toshiba-europe.com/innovation/family/Tablets/1098744/banner_id/tablet_footerlink/
199
- // @ref: http://us.toshiba.com/tablets/tablet-finder
200
- // @ref: http://www.toshiba.co.jp/regza/tablet/
201
- 'ToshibaTablet' => 'Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO',
202
- // @ref: http://www.nttdocomo.co.jp/english/service/developer/smart_phone/technical_info/spec/index.html
203
- // @ref: http://www.lg.com/us/tablets
204
- 'LGTablet' => '\bL-06C|LG-V900|LG-V500|LG-V909|LG-V500|LG-V510|LG-VK810\b',
205
- 'FujitsuTablet' => 'Android.*\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\b',
206
- // Prestigio Tablets http://www.prestigio.com/support
207
- 'PrestigioTablet' => 'PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD',
208
- // @ref: http://support.lenovo.com/en_GB/downloads/default.page?#
209
- 'LenovoTablet' => 'IdeaTab|ThinkPad([ ]+)?Tablet|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A1000|A2107|A2109|A1107|B6000|B8000|B8080-F)',
210
- // @ref: http://www.yarvik.com/en/matrix/tablets/
211
- 'YarvikTablet' => 'Android.*\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\b',
212
- 'MedionTablet' => 'Android.*\bOYO\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB',
213
- 'ArnovaTablet' => 'AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT',
214
- // http://www.intenso.de/kategorie_en.php?kategorie=33
215
- // @todo: http://www.nbhkdz.com/read/b8e64202f92a2df129126bff.html - investigate
216
- 'IntensoTablet' => 'INM8002KP|INM1010FP|INM805ND|Intenso Tab',
217
- // IRU.ru Tablets http://www.iru.ru/catalog/soho/planetable/
218
- 'IRUTablet' => 'M702pro',
219
- 'MegafonTablet' => 'MegaFon V9|\bZTE V9\b|Android.*\bMT7A\b',
220
- // @ref: http://www.e-boda.ro/tablete-pc.html
221
- 'EbodaTablet' => 'E-Boda (Supreme|Impresspeed|Izzycomm|Essential)',
222
- // @ref: http://www.allview.ro/produse/droseries/lista-tablete-pc/
223
- 'AllViewTablet' => 'Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)',
224
- // @reference: http://wiki.archosfans.com/index.php?title=Main_Page
225
- 'ArchosTablet' => '\b(101G9|80G9|A101IT)\b|Qilive 97R|ARCHOS 101G10|Archos 101 Neon',
226
- // @ref: http://www.ainol.com/plugin.php?identifier=ainol&module=product
227
- 'AinolTablet' => 'NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark',
228
- // @todo: inspect http://esupport.sony.com/US/p/select-system.pl?DIRECTOR=DRIVER
229
- // @ref: Readers http://www.atsuhiro-me.net/ebook/sony-reader/sony-reader-web-browser
230
- // @ref: http://www.sony.jp/support/tablet/
231
- 'SonyTablet' => 'Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551',
232
- // @ref: db + http://www.cube-tablet.com/buy-products.html
233
- 'CubeTablet' => 'Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT',
234
- // @ref: http://www.cobyusa.com/?p=pcat&pcat_id=3001
235
- 'CobyTablet' => 'MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010',
236
- // @ref: http://www.match.net.cn/products.asp
237
- 'MIDTablet' => 'M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733',
238
- // @ref: http://pdadb.net/index.php?m=pdalist&list=SMiT (NoName Chinese Tablets)
239
- // @ref: http://www.imp3.net/14/show.php?itemid=20454
240
- 'SMiTTablet' => 'Android.*(\bMID\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)',
241
- // @ref: http://www.rock-chips.com/index.php?do=prod&pid=2
242
- 'RockChipTablet' => 'Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A',
243
- // @ref: http://www.fly-phone.com/devices/tablets/ ; http://www.fly-phone.com/service/
244
- 'FlyTablet' => 'IQ310|Fly Vision',
245
- // @ref: http://www.bqreaders.com/gb/tablets-prices-sale.html
246
- 'bqTablet' => 'bq.*(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant)|Maxwell.*Lite|Maxwell.*Plus',
247
- // @ref: http://www.huaweidevice.com/worldwide/productFamily.do?method=index&directoryId=5011&treeId=3290
248
- // @ref: http://www.huaweidevice.com/worldwide/downloadCenter.do?method=index&directoryId=3372&treeId=0&tb=1&type=software (including legacy tablets)
249
- 'HuaweiTablet' => 'MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim',
250
- // Nec or Medias Tab
251
- 'NecTablet' => '\bN-06D|\bN-08D',
252
- // Pantech Tablets: http://www.pantechusa.com/phones/
253
- 'PantechTablet' => 'Pantech.*P4100',
254
- // Broncho Tablets: http://www.broncho.cn/ (hard to find)
255
- 'BronchoTablet' => 'Broncho.*(N701|N708|N802|a710)',
256
- // @ref: http://versusuk.com/support.html
257
- 'VersusTablet' => 'TOUCHPAD.*[78910]|\bTOUCHTAB\b',
258
- // @ref: http://www.zync.in/index.php/our-products/tablet-phablets
259
- 'ZyncTablet' => 'z1000|Z99 2G|z99|z930|z999|z990|z909|Z919|z900',
260
- // @ref: http://www.positivoinformatica.com.br/www/pessoal/tablet-ypy/
261
- 'PositivoTablet' => 'TB07STA|TB10STA|TB07FTA|TB10FTA',
262
- // @ref: https://www.nabitablet.com/
263
- 'NabiTablet' => 'Android.*\bNabi',
264
- 'KoboTablet' => 'Kobo Touch|\bK080\b|\bVox\b Build|\bArc\b Build',
265
- // French Danew Tablets http://www.danew.com/produits-tablette.php
266
- 'DanewTablet' => 'DSlide.*\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\b',
267
- // Texet Tablets and Readers http://www.texet.ru/tablet/
268
- 'TexetTablet' => 'NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE',
269
- // @note: Avoid detecting 'PLAYSTATION 3' as mobile.
270
- 'PlaystationTablet' => 'Playstation.*(Portable|Vita)',
271
- // @ref: http://www.trekstor.de/surftabs.html
272
- 'TrekstorTablet' => 'ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A',
273
- // @ref: http://www.pyleaudio.com/Products.aspx?%2fproducts%2fPersonal-Electronics%2fTablets
274
- 'PyleAudioTablet' => '\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\b',
275
- // @ref: http://www.advandigital.com/index.php?link=content-product&jns=JP001
276
- // @Note: because of the short codenames we have to include whitespaces to reduce the possible conflicts.
277
- 'AdvanTablet' => 'Android.* \b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\b ',
278
- // @ref: http://www.danytech.com/category/tablet-pc
279
- 'DanyTechTablet' => 'Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1',
280
- // @ref: http://www.galapad.net/product.html
281
- 'GalapadTablet' => 'Android.*\bG1\b',
282
- // @ref: http://www.micromaxinfo.com/tablet/funbook
283
- 'MicromaxTablet' => 'Funbook|Micromax.*\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\b',
284
- // http://www.karbonnmobiles.com/products_tablet.php
285
- 'KarbonnTablet' => 'Android.*\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\b',
286
- // @ref: http://www.myallfine.com/Products.asp
287
- 'AllFineTablet' => 'Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide',
288
- // @ref: http://www.proscanvideo.com/products-search.asp?itemClass=TABLET&itemnmbr=
289
- 'PROSCANTablet' => '\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\b',
290
- // @ref: http://www.yonesnav.com/products/products.php
291
- 'YONESTablet' => 'BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026',
292
- // @ref: http://www.cjshowroom.com/eproducts.aspx?classcode=004001001
293
- // China manufacturer makes tablets for different small brands (eg. http://www.zeepad.net/index.html)
294
- 'ChangJiaTablet' => 'TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503',
295
- // @ref: http://www.gloryunion.cn/products.asp
296
- // @ref: http://www.allwinnertech.com/en/apply/mobile.html
297
- // @ref: http://www.ptcl.com.pk/pd_content.php?pd_id=284 (EVOTAB)
298
- // @todo: Softwiner tablets?
299
- // aka. Cute or Cool tablets. Not sure yet, must research to avoid collisions.
300
- 'GUTablet' => 'TX-A1301|TX-M9002|Q702|kf026', // A12R|D75A|D77|D79|R83|A95|A106C|R15|A75|A76|D71|D72|R71|R73|R77|D82|R85|D92|A97|D92|R91|A10F|A77F|W71F|A78F|W78F|W81F|A97F|W91F|W97F|R16G|C72|C73E|K72|K73|R96G
301
- // @ref: http://www.pointofview-online.com/showroom.php?shop_mode=product_listing&category_id=118
302
- 'PointOfViewTablet' => 'TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10',
303
- // @ref: http://www.overmax.pl/pl/katalog-produktow,p8/tablety,c14/
304
- // @todo: add more tests.
305
- 'OvermaxTablet' => 'OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)',
306
- // @ref: http://hclmetablet.com/India/index.php
307
- 'HCLTablet' => 'HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync',
308
- // @ref: http://www.edigital.hu/Tablet_es_e-book_olvaso/Tablet-c18385.html
309
- 'DPSTablet' => 'DPS Dream 9|DPS Dual 7',
310
- // @ref: http://www.visture.com/index.asp
311
- 'VistureTablet' => 'V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10',
312
- // @ref: http://www.mijncresta.nl/tablet
313
- 'CrestaTablet' => 'CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989',
314
- // MediaTek - http://www.mediatek.com/_en/01_products/02_proSys.php?cata_sn=1&cata1_sn=1&cata2_sn=309
315
- 'MediatekTablet' => '\bMT8125|MT8389|MT8135|MT8377\b',
316
- // Concorde tab
317
- 'ConcordeTablet' => 'Concorde([ ]+)?Tab|ConCorde ReadMan',
318
- // GoClever Tablets - http://www.goclever.com/uk/products,c1/tablet,c5/
319
- 'GoCleverTablet' => 'GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042',
320
- // Modecom Tablets - http://www.modecom.eu/tablets/portal/
321
- 'ModecomTablet' => 'FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003',
322
- // Vonino Tablets - http://www.vonino.eu/tablets
323
- 'VoninoTablet' => '\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\bQ8\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\b',
324
- // ECS Tablets - http://www.ecs.com.tw/ECSWebSite/Product/Product_Tablet_List.aspx?CategoryID=14&MenuID=107&childid=M_107&LanID=0
325
- 'ECSTablet' => 'V07OT2|TM105A|S10OT1|TR10CS1',
326
- // Storex Tablets - http://storex.fr/espace_client/support.html
327
- // @note: no need to add all the tablet codes since they are guided by the first regex.
328
- 'StorexTablet' => 'eZee[_\']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab',
329
- // Generic Vodafone tablets.
330
- 'VodafoneTablet' => 'SmartTab([ ]+)?[0-9]+|SmartTabII10',
331
- // French tablets - Essentiel B http://www.boulanger.fr/tablette_tactile_e-book/tablette_tactile_essentiel_b/cl_68908.htm?multiChoiceToDelete=brand&mc_brand=essentielb
332
- // Aka: http://www.essentielb.fr/
333
- 'EssentielBTablet' => 'Smart[ \']?TAB[ ]+?[0-9]+|Family[ \']?TAB2',
334
- // Ross & Moor - http://ross-moor.ru/
335
- 'RossMoorTablet' => 'RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711',
336
- // i-mobile http://product.i-mobilephone.com/Mobile_Device
337
- 'iMobileTablet' => 'i-mobile i-note',
338
- // @ref: http://www.tolino.de/de/vergleichen/
339
- 'TolinoTablet' => 'tolino tab [0-9.]+|tolino shine',
340
- // AudioSonic - a Kmart brand
341
- // http://www.kmart.com.au/webapp/wcs/stores/servlet/Search?langId=-1&storeId=10701&catalogId=10001&categoryId=193001&pageSize=72&currentPage=1&searchCategory=193001%2b4294965664&sortBy=p_MaxPrice%7c1
342
- 'AudioSonicTablet' => '\bC-22Q|T7-QC|T-17B|T-17P\b',
343
- // AMPE Tablets - http://www.ampe.com.my/product-category/tablets/
344
- // @todo: add them gradually to avoid conflicts.
345
- 'AMPETablet' => 'Android.* A78 ',
346
- // Skk Mobile - http://skkmobile.com.ph/product_tablets.php
347
- 'SkkTablet' => 'Android.* (SKYPAD|PHOENIX|CYCLOPS)',
348
- // Tecno Mobile (only tablet) - http://www.tecno-mobile.com/index.php/product?filterby=smart&list_order=all&page=1
349
- 'TecnoTablet' => 'TECNO P9',
350
- // JXD (consoles & tablets) - http://jxd.hk/products.asp?selectclassid=009008&clsid=3
351
- 'JXDTablet' => 'Android.*\b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\b',
352
- // i-Joy tablets - http://www.i-joy.es/en/cat/products/tablets/
353
- 'iJoyTablet' => 'Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)',
354
- // http://www.intracon.eu/tablet
355
- 'FX2Tablet' => 'FX2 PAD7|FX2 PAD10',
356
- // http://www.xoro.de/produkte/
357
- // @note: Might be the same brand with 'Simply tablets'
358
- 'XoroTablet' => 'KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151',
359
- // http://www1.viewsonic.com/products/computing/tablets/
360
- 'ViewsonicTablet' => 'ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a',
361
- // http://www.odys.de/web/internet-tablet_en.html
362
- 'OdysTablet' => 'LOOX|XENO10|ODYS Space',
363
- // http://www.captiva-power.de/products.html#tablets-en
364
- 'CaptivaTablet' => 'CAPTIVA PAD',
365
- // IconBIT - http://www.iconbit.com/products/tablets/
366
- 'IconbitTablet' => 'NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S',
367
- // @ref: http://www.tesco.com/direct/hudl/
368
- 'Hudl' => 'Hudl HT7S3',
369
- // @ref: http://www.telstra.com.au/home-phone/thub-2/
370
- 'TelstraTablet' => 'T-Hub2',
371
- 'GenericTablet' => 'Android.*\b97D\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\bA7EB\b|CatNova8|A1_07|CT704|CT1002|\bM721\b|rk30sdk|\bEVOTAB\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4',
372
- );
373
-
374
- /**
375
- * List of mobile Operating Systems.
376
- *
377
- * @var array
378
- */
379
- protected static $operatingSystems = array(
380
- 'AndroidOS' => 'Android',
381
- 'BlackBerryOS' => 'blackberry|\bBB10\b|rim tablet os',
382
- 'PalmOS' => 'PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino',
383
- 'SymbianOS' => 'Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\bS60\b',
384
- // @reference: http://en.wikipedia.org/wiki/Windows_Mobile
385
- 'WindowsMobileOS' => 'Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Window Mobile|Windows Phone [0-9.]+|WCE;',
386
- // @reference: http://en.wikipedia.org/wiki/Windows_Phone
387
- // http://wifeng.cn/?r=blog&a=view&id=106
388
- // http://nicksnettravels.builttoroam.com/post/2011/01/10/Bogus-Windows-Phone-7-User-Agent-String.aspx
389
- 'WindowsPhoneOS' => 'Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7',
390
- 'iOS' => '\biPhone.*Mobile|\biPod|\biPad',
391
- // http://en.wikipedia.org/wiki/MeeGo
392
- // @todo: research MeeGo in UAs
393
- 'MeeGoOS' => 'MeeGo',
394
- // http://en.wikipedia.org/wiki/Maemo
395
- // @todo: research Maemo in UAs
396
- 'MaemoOS' => 'Maemo',
397
- 'JavaOS' => 'J2ME/|\bMIDP\b|\bCLDC\b', // '|Java/' produces bug #135
398
- 'webOS' => 'webOS|hpwOS',
399
- 'badaOS' => '\bBada\b',
400
- 'BREWOS' => 'BREW',
401
- );
402
-
403
- /**
404
- * List of mobile User Agents.
405
- *
406
- * @var array
407
- */
408
- protected static $browsers = array(
409
- // @reference: https://developers.google.com/chrome/mobile/docs/user-agent
410
- 'Chrome' => '\bCrMo\b|CriOS|Android.*Chrome/[.0-9]* (Mobile)?',
411
- 'Dolfin' => '\bDolfin\b',
412
- 'Opera' => 'Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR/[0-9.]+|Coast/[0-9.]+',
413
- 'Skyfire' => 'Skyfire',
414
- 'IE' => 'IEMobile|MSIEMobile', // |Trident/[.0-9]+
415
- 'Firefox' => 'fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile',
416
- 'Bolt' => 'bolt',
417
- 'TeaShark' => 'teashark',
418
- 'Blazer' => 'Blazer',
419
- // @reference: http://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariWebContent/OptimizingforSafarioniPhone/OptimizingforSafarioniPhone.html#//apple_ref/doc/uid/TP40006517-SW3
420
- 'Safari' => 'Version.*Mobile.*Safari|Safari.*Mobile',
421
- // @ref: http://en.wikipedia.org/wiki/Midori_(web_browser)
422
- //'Midori' => 'midori',
423
- 'Tizen' => 'Tizen',
424
- 'UCBrowser' => 'UC.*Browser|UCWEB',
425
- // @ref: https://github.com/serbanghita/Mobile-Detect/issues/7
426
- 'DiigoBrowser' => 'DiigoBrowser',
427
- // http://www.puffinbrowser.com/index.php
428
- 'Puffin' => 'Puffin',
429
- // @ref: http://mercury-browser.com/index.html
430
- 'Mercury' => '\bMercury\b',
431
- // @reference: http://en.wikipedia.org/wiki/Minimo
432
- // http://en.wikipedia.org/wiki/Vision_Mobile_Browser
433
- 'GenericBrowser' => 'NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger'
434
- );
435
-
436
- /**
437
- * Utilities.
438
- *
439
- * @var array
440
- */
441
- protected static $utilities = array(
442
- // Experimental. When a mobile device wants to switch to 'Desktop Mode'.
443
- // @ref: http://scottcate.com/technology/windows-phone-8-ie10-desktop-or-mobile/
444
- // @ref: https://github.com/serbanghita/Mobile-Detect/issues/57#issuecomment-15024011
445
- 'DesktopMode' => 'WPDesktop',
446
- 'TV' => 'SonyDTV|HbbTV', // experimental
447
- 'WebKit' => '(webkit)[ /]([\w.]+)',
448
- 'Bot' => 'Googlebot|DoCoMo|YandexBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|facebookexternalhit',
449
- 'MobileBot' => 'Googlebot-Mobile|DoCoMo|YahooSeeker/M1A1-R2D2',
450
- // @todo: Include JXD consoles.
451
- 'Console' => '\b(Nintendo|Nintendo WiiU|PLAYSTATION|Xbox)\b',
452
- 'Watch' => 'SM-V700',
453
- );
454
-
455
- /**
456
- * All possible HTTP headers that represent the
457
- * User-Agent string.
458
- *
459
- * @var array
460
- */
461
- protected static $uaHttpHeaders = array(
462
- // The default User-Agent string.
463
- 'HTTP_USER_AGENT',
464
- // Header can occur on devices using Opera Mini.
465
- 'HTTP_X_OPERAMINI_PHONE_UA',
466
- // Vodafone specific header: http://www.seoprinciple.com/mobile-web-community-still-angry-at-vodafone/24/
467
- 'HTTP_X_DEVICE_USER_AGENT',
468
- 'HTTP_X_ORIGINAL_USER_AGENT',
469
- 'HTTP_X_SKYFIRE_PHONE',
470
- 'HTTP_X_BOLT_PHONE_UA',
471
- 'HTTP_DEVICE_STOCK_UA',
472
- 'HTTP_X_UCBROWSER_DEVICE_UA'
473
- );
474
-
475
- /**
476
- * The individual segments that could exist in a User-Agent string. VER refers to the regular
477
- * expression defined in the constant self::VER.
478
- *
479
- * @var array
480
- */
481
- protected static $properties = array(
482
-
483
- // Build
484
- 'Mobile' => 'Mobile/[VER]',
485
- 'Build' => 'Build/[VER]',
486
- 'Version' => 'Version/[VER]',
487
- 'VendorID' => 'VendorID/[VER]',
488
-
489
- // Devices
490
- 'iPad' => 'iPad.*CPU[a-z ]+[VER]',
491
- 'iPhone' => 'iPhone.*CPU[a-z ]+[VER]',
492
- 'iPod' => 'iPod.*CPU[a-z ]+[VER]',
493
- //'BlackBerry' => array('BlackBerry[VER]', 'BlackBerry [VER];'),
494
- 'Kindle' => 'Kindle/[VER]',
495
-
496
- // Browser
497
- 'Chrome' => array('Chrome/[VER]', 'CriOS/[VER]', 'CrMo/[VER]'),
498
- 'Coast' => array('Coast/[VER]'),
499
- 'Dolfin' => 'Dolfin/[VER]',
500
- // @reference: https://developer.mozilla.org/en-US/docs/User_Agent_Strings_Reference
501
- 'Firefox' => 'Firefox/[VER]',
502
- 'Fennec' => 'Fennec/[VER]',
503
- // @reference: http://msdn.microsoft.com/en-us/library/ms537503(v=vs.85).aspx
504
- 'IE' => array('IEMobile/[VER];', 'IEMobile [VER]', 'MSIE [VER];'),
505
- // http://en.wikipedia.org/wiki/NetFront
506
- 'NetFront' => 'NetFront/[VER]',
507
- 'NokiaBrowser' => 'NokiaBrowser/[VER]',
508
- 'Opera' => array( ' OPR/[VER]', 'Opera Mini/[VER]', 'Version/[VER]' ),
509
- 'Opera Mini' => 'Opera Mini/[VER]',
510
- 'Opera Mobi' => 'Version/[VER]',
511
- 'UC Browser' => 'UC Browser[VER]',
512
- 'MQQBrowser' => 'MQQBrowser/[VER]',
513
- 'MicroMessenger' => 'MicroMessenger/[VER]',
514
- // @note: Safari 7534.48.3 is actually Version 5.1.
515
- // @note: On BlackBerry the Version is overwriten by the OS.
516
- 'Safari' => array( 'Version/[VER]', 'Safari/[VER]' ),
517
- 'Skyfire' => 'Skyfire/[VER]',
518
- 'Tizen' => 'Tizen/[VER]',
519
- 'Webkit' => 'webkit[ /][VER]',
520
-
521
- // Engine
522
- 'Gecko' => 'Gecko/[VER]',
523
- 'Trident' => 'Trident/[VER]',
524
- 'Presto' => 'Presto/[VER]',
525
-
526
- // OS
527
- 'iOS' => ' \bOS\b [VER] ',
528
- 'Android' => 'Android [VER]',
529
- 'BlackBerry' => array('BlackBerry[\w]+/[VER]', 'BlackBerry.*Version/[VER]', 'Version/[VER]'),
530
- 'BREW' => 'BREW [VER]',
531
- 'Java' => 'Java/[VER]',
532
- // @reference: http://windowsteamblog.com/windows_phone/b/wpdev/archive/2011/08/29/introducing-the-ie9-on-windows-phone-mango-user-agent-string.aspx
533
- // @reference: http://en.wikipedia.org/wiki/Windows_NT#Releases
534
- 'Windows Phone OS' => array( 'Windows Phone OS [VER]', 'Windows Phone [VER]'),
535
- 'Windows Phone' => 'Windows Phone [VER]',
536
- 'Windows CE' => 'Windows CE/[VER]',
537
- // http://social.msdn.microsoft.com/Forums/en-US/windowsdeveloperpreviewgeneral/thread/6be392da-4d2f-41b4-8354-8dcee20c85cd
538
- 'Windows NT' => 'Windows NT [VER]',
539
- 'Symbian' => array('SymbianOS/[VER]', 'Symbian/[VER]'),
540
- 'webOS' => array('webOS/[VER]', 'hpwOS/[VER];'),
541
- );
542
-
543
- /**
544
- * Construct an instance of this class.
545
- *
546
- * @param array $headers Specify the headers as injection. Should be PHP _SERVER flavored.
547
- * If left empty, will use the global _SERVER['HTTP_*'] vars instead.
548
- * @param string $userAgent Inject the User-Agent header. If null, will use HTTP_USER_AGENT
549
- * from the $headers array instead.
550
- */
551
- public function __construct(
552
- array $headers = null,
553
- $userAgent = null
554
- ){
555
- $this->setHttpHeaders($headers);
556
- $this->setUserAgent($userAgent);
557
- }
558
-
559
- /**
560
- * Get the current script version.
561
- * This is useful for the demo.php file,
562
- * so people can check on what version they are testing
563
- * for mobile devices.
564
- *
565
- * @return string The version number in semantic version format.
566
- */
567
- public static function getScriptVersion()
568
- {
569
- return self::VERSION;
570
- }
571
-
572
- /**
573
- * Set the HTTP Headers. Must be PHP-flavored. This method will reset existing headers.
574
- *
575
- * @param array $httpHeaders The headers to set. If null, then using PHP's _SERVER to extract
576
- * the headers. The default null is left for backwards compatibilty.
577
- */
578
- public function setHttpHeaders($httpHeaders = null)
579
- {
580
- //use global _SERVER if $httpHeaders aren't defined
581
- if (!is_array($httpHeaders) || !count($httpHeaders)) {
582
- $httpHeaders = $_SERVER;
583
- }
584
-
585
- //clear existing headers
586
- $this->httpHeaders = array();
587
-
588
- //Only save HTTP headers. In PHP land, that means only _SERVER vars that
589
- //start with HTTP_.
590
- foreach ($httpHeaders as $key => $value) {
591
- if (substr($key,0,5) == 'HTTP_') {
592
- $this->httpHeaders[$key] = $value;
593
- }
594
- }
595
- }
596
-
597
- /**
598
- * Retrieves the HTTP headers.
599
- *
600
- * @return array
601
- */
602
- public function getHttpHeaders()
603
- {
604
- return $this->httpHeaders;
605
- }
606
-
607
- /**
608
- * Retrieves a particular header. If it doesn't exist, no exception/error is caused.
609
- * Simply null is returned.
610
- *
611
- * @param string $header The name of the header to retrieve. Can be HTTP compliant such as
612
- * "User-Agent" or "X-Device-User-Agent" or can be php-esque with the
613
- * all-caps, HTTP_ prefixed, underscore seperated awesomeness.
614
- *
615
- * @return string|null The value of the header.
616
- */
617
- public function getHttpHeader($header)
618
- {
619
- //are we using PHP-flavored headers?
620
- if (strpos($header, '_') === false) {
621
- $header = str_replace('-', '_', $header);
622
- $header = strtoupper($header);
623
- }
624
-
625
- //test the alternate, too
626
- $altHeader = 'HTTP_' . $header;
627
-
628
- //Test both the regular and the HTTP_ prefix
629
- if (isset($this->httpHeaders[$header])) {
630
- return $this->httpHeaders[$header];
631
- } elseif (isset($this->httpHeaders[$altHeader])) {
632
- return $this->httpHeaders[$altHeader];
633
- }
634
-
635
- return null;
636
- }
637
-
638
- public function getMobileHeaders()
639
- {
640
- return self::$mobileHeaders;
641
- }
642
-
643
- /**
644
- * Get all possible HTTP headers that
645
- * can contain the User-Agent string.
646
- *
647
- * @return array List of HTTP headers.
648
- */
649
- public function getUaHttpHeaders()
650
- {
651
- return self::$uaHttpHeaders;
652
- }
653
-
654
- /**
655
- * Set the User-Agent to be used.
656
- *
657
- * @param string $userAgent The user agent string to set.
658
- *
659
- * @return string|null
660
- */
661
- public function setUserAgent($userAgent = null)
662
- {
663
- if (!empty($userAgent)) {
664
- return $this->userAgent = $userAgent;
665
- } else {
666
-
667
- $this->userAgent = null;
668
-
669
- foreach($this->getUaHttpHeaders() as $altHeader){
670
- if(!empty($this->httpHeaders[$altHeader])){ // @todo: should use getHttpHeader(), but it would be slow. (Serban)
671
- $this->userAgent .= $this->httpHeaders[$altHeader] . " ";
672
- }
673
- }
674
-
675
- return $this->userAgent = (!empty($this->userAgent) ? trim($this->userAgent) : null);
676
-
677
- }
678
- }
679
-
680
- /**
681
- * Retrieve the User-Agent.
682
- *
683
- * @return string|null The user agent if it's set.
684
- */
685
- public function getUserAgent()
686
- {
687
- return $this->userAgent;
688
- }
689
-
690
- /**
691
- * Set the detection type. Must be one of self::DETECTION_TYPE_MOBILE or
692
- * self::DETECTION_TYPE_EXTENDED. Otherwise, nothing is set.
693
- *
694
- * @deprecated since version 2.6.9
695
- *
696
- * @param string $type The type. Must be a self::DETECTION_TYPE_* constant. The default
697
- * parameter is null which will default to self::DETECTION_TYPE_MOBILE.
698
- */
699
- public function setDetectionType($type = null)
700
- {
701
- if ($type === null) {
702
- $type = self::DETECTION_TYPE_MOBILE;
703
- }
704
-
705
- if ($type != self::DETECTION_TYPE_MOBILE && $type != self::DETECTION_TYPE_EXTENDED) {
706
- return;
707
- }
708
-
709
- $this->detectionType = $type;
710
- }
711
-
712
- /**
713
- * Retrieve the list of known phone devices.
714
- *
715
- * @return array List of phone devices.
716
- */
717
- public static function getPhoneDevices()
718
- {
719
- return self::$phoneDevices;
720
- }
721
-
722
- /**
723
- * Retrieve the list of known tablet devices.
724
- *
725
- * @return array List of tablet devices.
726
- */
727
- public static function getTabletDevices()
728
- {
729
- return self::$tabletDevices;
730
- }
731
-
732
- /**
733
- * Alias for getBrowsers() method.
734
- *
735
- * @return array List of user agents.
736
- */
737
- public static function getUserAgents()
738
- {
739
- return self::getBrowsers();
740
- }
741
-
742
- /**
743
- * Retrieve the list of known browsers. Specifically, the user agents.
744
- *
745
- * @return array List of browsers / user agents.
746
- */
747
- public static function getBrowsers()
748
- {
749
- return self::$browsers;
750
- }
751
-
752
- /**
753
- * Retrieve the list of known utilities.
754
- *
755
- * @return array List of utilities.
756
- */
757
- public static function getUtilities()
758
- {
759
- return self::$utilities;
760
- }
761
-
762
- /**
763
- * Method gets the mobile detection rules. This method is used for the magic methods $detect->is*().
764
- *
765
- * @deprecated since version 2.6.9
766
- *
767
- * @return array All the rules (but not extended).
768
- */
769
- public static function getMobileDetectionRules()
770
- {
771
- static $rules;
772
-
773
- if (!$rules) {
774
- $rules = array_merge(
775
- self::$phoneDevices,
776
- self::$tabletDevices,
777
- self::$operatingSystems,
778
- self::$browsers
779
- );
780
- }
781
-
782
- return $rules;
783
-
784
- }
785
-
786
- /**
787
- * Method gets the mobile detection rules + utilities.
788
- * The reason this is separate is because utilities rules
789
- * don't necessary imply mobile. This method is used inside
790
- * the new $detect->is('stuff') method.
791
- *
792
- * @deprecated since version 2.6.9
793
- *
794
- * @return array All the rules + extended.
795
- */
796
- public function getMobileDetectionRulesExtended()
797
- {
798
- static $rules;
799
-
800
- if (!$rules) {
801
- // Merge all rules together.
802
- $rules = array_merge(
803
- self::$phoneDevices,
804
- self::$tabletDevices,
805
- self::$operatingSystems,
806
- self::$browsers,
807
- self::$utilities
808
- );
809
- }
810
-
811
- return $rules;
812
- }
813
-
814
- /**
815
- * Retrieve the current set of rules.
816
- *
817
- * @deprecated since version 2.6.9
818
- *
819
- * @return array
820
- */
821
- public function getRules()
822
- {
823
- if ($this->detectionType == self::DETECTION_TYPE_EXTENDED) {
824
- return self::getMobileDetectionRulesExtended();
825
- } else {
826
- return self::getMobileDetectionRules();
827
- }
828
- }
829
-
830
- /**
831
- * Retrieve the list of mobile operating systems.
832
- *
833
- * @return array The list of mobile operating systems.
834
- */
835
- public static function getOperatingSystems()
836
- {
837
- return self::$operatingSystems;
838
- }
839
-
840
- /**
841
- * Check the HTTP headers for signs of mobile.
842
- * This is the fastest mobile check possible; it's used
843
- * inside isMobile() method.
844
- *
845
- * @return bool
846
- */
847
- public function checkHttpHeadersForMobile()
848
- {
849
-
850
- foreach($this->getMobileHeaders() as $mobileHeader => $matchType){
851
- if( isset($this->httpHeaders[$mobileHeader]) ){
852
- if( is_array($matchType['matches']) ){
853
- foreach($matchType['matches'] as $_match){
854
- if( strpos($this->httpHeaders[$mobileHeader], $_match) !== false ){
855
- return true;
856
- }
857
- }
858
- return false;
859
- } else {
860
- return true;
861
- }
862
- }
863
- }
864
-
865
- return false;
866
-
867
- }
868
-
869
- /**
870
- * Magic overloading method.
871
- *
872
- * @method boolean is[...]()
873
- * @param string $name
874
- * @param array $arguments
875
- * @return mixed
876
- * @throws BadMethodCallException when the method doesn't exist and doesn't start with 'is'
877
- */
878
- public function __call($name, $arguments)
879
- {
880
- //make sure the name starts with 'is', otherwise
881
- if (substr($name, 0, 2) != 'is') {
882
- throw new BadMethodCallException("No such method exists: $name");
883
- }
884
-
885
- $this->setDetectionType(self::DETECTION_TYPE_MOBILE);
886
-
887
- $key = substr($name, 2);
888
-
889
- return $this->matchUAAgainstKey($key);
890
- }
891
-
892
- /**
893
- * Find a detection rule that matches the current User-agent.
894
- *
895
- * @param null $userAgent deprecated
896
- * @return boolean
897
- */
898
- protected function matchDetectionRulesAgainstUA($userAgent = null)
899
- {
900
- // Begin general search.
901
- foreach ($this->getRules() as $_regex) {
902
- if (empty($_regex)) {
903
- continue;
904
- }
905
- if ($this->match($_regex, $userAgent)) {
906
- return true;
907
- }
908
- }
909
-
910
- return false;
911
- }
912
-
913
- /**
914
- * Search for a certain key in the rules array.
915
- * If the key is found the try to match the corresponding
916
- * regex agains the User-Agent.
917
- *
918
- * @param string $key
919
- * @param null $userAgent deprecated
920
- * @return mixed
921
- */
922
- protected function matchUAAgainstKey($key, $userAgent = null)
923
- {
924
- // Make the keys lowercase so we can match: isIphone(), isiPhone(), isiphone(), etc.
925
- $key = strtolower($key);
926
-
927
- //change the keys to lower case
928
- $_rules = array_change_key_case($this->getRules());
929
-
930
- if (array_key_exists($key, $_rules)) {
931
- if (empty($_rules[$key])) {
932
- return null;
933
- }
934
-
935
- return $this->match($_rules[$key], $userAgent);
936
- }
937
-
938
- return false;
939
- }
940
-
941
- /**
942
- * Check if the device is mobile.
943
- * Returns true if any type of mobile device detected, including special ones
944
- * @param null $userAgent deprecated
945
- * @param null $httpHeaders deprecated
946
- * @return bool
947
- */
948
- public function isMobile($userAgent = null, $httpHeaders = null)
949
- {
950
-
951
- if ($httpHeaders) {
952
- $this->setHttpHeaders($httpHeaders);
953
- }
954
-
955
- if ($userAgent) {
956
- $this->setUserAgent($userAgent);
957
- }
958
-
959
- $this->setDetectionType(self::DETECTION_TYPE_MOBILE);
960
-
961
- if ($this->checkHttpHeadersForMobile()) {
962
- return true;
963
- } else {
964
- return $this->matchDetectionRulesAgainstUA();
965
- }
966
-
967
- }
968
-
969
- /**
970
- * Check if the device is a tablet.
971
- * Return true if any type of tablet device is detected.
972
- *
973
- * @param string $userAgent deprecated
974
- * @param array $httpHeaders deprecated
975
- * @return bool
976
- */
977
- public function isTablet($userAgent = null, $httpHeaders = null)
978
- {
979
- $this->setDetectionType(self::DETECTION_TYPE_MOBILE);
980
-
981
- foreach (self::$tabletDevices as $_regex) {
982
- if ($this->match($_regex, $userAgent)) {
983
- return true;
984
- }
985
- }
986
-
987
- return false;
988
- }
989
-
990
- /**
991
- * This method checks for a certain property in the
992
- * userAgent.
993
- * @todo: The httpHeaders part is not yet used.
994
- *
995
- * @param string $key
996
- * @param string $userAgent deprecated
997
- * @param string $httpHeaders deprecated
998
- * @return bool|int|null
999
- */
1000
- public function is($key, $userAgent = null, $httpHeaders = null)
1001
- {
1002
- // Set the UA and HTTP headers only if needed (eg. batch mode).
1003
- if ($httpHeaders) {
1004
- $this->setHttpHeaders($httpHeaders);
1005
- }
1006
-
1007
- if ($userAgent) {
1008
- $this->setUserAgent($userAgent);
1009
- }
1010
-
1011
- $this->setDetectionType(self::DETECTION_TYPE_EXTENDED);
1012
-
1013
- return $this->matchUAAgainstKey($key);
1014
- }
1015
-
1016
- /**
1017
- * Some detection rules are relative (not standard),
1018
- * because of the diversity of devices, vendors and
1019
- * their conventions in representing the User-Agent or
1020
- * the HTTP headers.
1021
- *
1022
- * This method will be used to check custom regexes against
1023
- * the User-Agent string.
1024
- *
1025
- * @param $regex
1026
- * @param string $userAgent
1027
- * @return bool
1028
- *
1029
- * @todo: search in the HTTP headers too.
1030
- */
1031
- public function match($regex, $userAgent = null)
1032
- {
1033
- // Escape the special character which is the delimiter.
1034
- $regex = str_replace('/', '\/', $regex);
1035
-
1036
- return (bool) preg_match('/'.$regex.'/is', (!empty($userAgent) ? $userAgent : $this->userAgent));
1037
- }
1038
-
1039
- /**
1040
- * Get the properties array.
1041
- *
1042
- * @return array
1043
- */
1044
- public static function getProperties()
1045
- {
1046
- return self::$properties;
1047
- }
1048
-
1049
- /**
1050
- * Prepare the version number.
1051
- *
1052
- * @todo Remove the error supression from str_replace() call.
1053
- *
1054
- * @param string $ver The string version, like "2.6.21.2152";
1055
- *
1056
- * @return float
1057
- */
1058
- public function prepareVersionNo($ver)
1059
- {
1060
- $ver = str_replace(array('_', ' ', '/'), '.', $ver);
1061
- $arrVer = explode('.', $ver, 2);
1062
-
1063
- if (isset($arrVer[1])) {
1064
- $arrVer[1] = @str_replace('.', '', $arrVer[1]); // @todo: treat strings versions.
1065
- }
1066
-
1067
- return (float) implode('.', $arrVer);
1068
- }
1069
-
1070
- /**
1071
- * Check the version of the given property in the User-Agent.
1072
- * Will return a float number. (eg. 2_0 will return 2.0, 4.3.1 will return 4.31)
1073
- *
1074
- * @param string $propertyName The name of the property. See self::getProperties() array
1075
- * keys for all possible properties.
1076
- * @param string $type Either self::VERSION_TYPE_STRING to get a string value or
1077
- * self::VERSION_TYPE_FLOAT indicating a float value. This parameter
1078
- * is optional and defaults to self::VERSION_TYPE_STRING. Passing an
1079
- * invalid parameter will default to the this type as well.
1080
- *
1081
- * @return string|float The version of the property we are trying to extract.
1082
- */
1083
- public function version($propertyName, $type = self::VERSION_TYPE_STRING)
1084
- {
1085
- if (empty($propertyName)) {
1086
- return false;
1087
- }
1088
-
1089
- //set the $type to the default if we don't recognize the type
1090
- if ($type != self::VERSION_TYPE_STRING && $type != self::VERSION_TYPE_FLOAT) {
1091
- $type = self::VERSION_TYPE_STRING;
1092
- }
1093
-
1094
- $properties = self::getProperties();
1095
-
1096
- // Check if the property exists in the properties array.
1097
- if (array_key_exists($propertyName, $properties)) {
1098
-
1099
- // Prepare the pattern to be matched.
1100
- // Make sure we always deal with an array (string is converted).
1101
- $properties[$propertyName] = (array) $properties[$propertyName];
1102
-
1103
- foreach ($properties[$propertyName] as $propertyMatchString) {
1104
-
1105
- $propertyPattern = str_replace('[VER]', self::VER, $propertyMatchString);
1106
-
1107
- // Escape the special character which is the delimiter.
1108
- $propertyPattern = str_replace('/', '\/', $propertyPattern);
1109
-
1110
- // Identify and extract the version.
1111
- preg_match('/'.$propertyPattern.'/is', $this->userAgent, $match);
1112
-
1113
- if (!empty($match[1])) {
1114
- $version = ( $type == self::VERSION_TYPE_FLOAT ? $this->prepareVersionNo($match[1]) : $match[1] );
1115
-
1116
- return $version;
1117
- }
1118
-
1119
- }
1120
-
1121
- }
1122
-
1123
- return false;
1124
- }
1125
-
1126
- /**
1127
- * Retrieve the mobile grading, using self::MOBILE_GRADE_* constants.
1128
- *
1129
- * @return string One of the self::MOBILE_GRADE_* constants.
1130
- */
1131
- public function mobileGrade()
1132
- {
1133
- $isMobile = $this->isMobile();
1134
-
1135
- if (
1136
- // Apple iOS 3.2-5.1 - Tested on the original iPad (4.3 / 5.0), iPad 2 (4.3), iPad 3 (5.1), original iPhone (3.1), iPhone 3 (3.2), 3GS (4.3), 4 (4.3 / 5.0), and 4S (5.1)
1137
- $this->isIOS() && $this->version('iPad', self::VERSION_TYPE_FLOAT)>=4.3 ||
1138
- $this->isIOS() && $this->version('iPhone', self::VERSION_TYPE_FLOAT)>=3.1 ||
1139
- $this->isIOS() && $this->version('iPod', self::VERSION_TYPE_FLOAT)>=3.1 ||
1140
-
1141
- // Android 2.1-2.3 - Tested on the HTC Incredible (2.2), original Droid (2.2), HTC Aria (2.1), Google Nexus S (2.3). Functional on 1.5 & 1.6 but performance may be sluggish, tested on Google G1 (1.5)
1142
- // Android 3.1 (Honeycomb) - Tested on the Samsung Galaxy Tab 10.1 and Motorola XOOM
1143
- // Android 4.0 (ICS) - Tested on a Galaxy Nexus. Note: transition performance can be poor on upgraded devices
1144
- // Android 4.1 (Jelly Bean) - Tested on a Galaxy Nexus and Galaxy 7
1145
- ( $this->version('Android', self::VERSION_TYPE_FLOAT)>2.1 && $this->is('Webkit') ) ||
1146
-
1147
- // Windows Phone 7-7.5 - Tested on the HTC Surround (7.0) HTC Trophy (7.5), LG-E900 (7.5), Nokia Lumia 800
1148
- $this->version('Windows Phone OS', self::VERSION_TYPE_FLOAT)>=7.0 ||
1149
-
1150
- // Blackberry 7 - Tested on BlackBerry Torch 9810
1151
- // Blackberry 6.0 - Tested on the Torch 9800 and Style 9670
1152
- $this->is('BlackBerry') && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT)>=6.0 ||
1153
- // Blackberry Playbook (1.0-2.0) - Tested on PlayBook
1154
- $this->match('Playbook.*Tablet') ||
1155
-
1156
- // Palm WebOS (1.4-2.0) - Tested on the Palm Pixi (1.4), Pre (1.4), Pre 2 (2.0)
1157
- ( $this->version('webOS', self::VERSION_TYPE_FLOAT)>=1.4 && $this->match('Palm|Pre|Pixi') ) ||
1158
- // Palm WebOS 3.0 - Tested on HP TouchPad
1159
- $this->match('hp.*TouchPad') ||
1160
-
1161
- // Firefox Mobile (12 Beta) - Tested on Android 2.3 device
1162
- ( $this->is('Firefox') && $this->version('Firefox', self::VERSION_TYPE_FLOAT)>=12 ) ||
1163
-
1164
- // Chrome for Android - Tested on Android 4.0, 4.1 device
1165
- ( $this->is('Chrome') && $this->is('AndroidOS') && $this->version('Android', self::VERSION_TYPE_FLOAT)>=4.0 ) ||
1166
-
1167
- // Skyfire 4.1 - Tested on Android 2.3 device
1168
- ( $this->is('Skyfire') && $this->version('Skyfire', self::VERSION_TYPE_FLOAT)>=4.1 && $this->is('AndroidOS') && $this->version('Android', self::VERSION_TYPE_FLOAT)>=2.3 ) ||
1169
-
1170
- // Opera Mobile 11.5-12: Tested on Android 2.3
1171
- ( $this->is('Opera') && $this->version('Opera Mobi', self::VERSION_TYPE_FLOAT)>11 && $this->is('AndroidOS') ) ||
1172
-
1173
- // Meego 1.2 - Tested on Nokia 950 and N9
1174
- $this->is('MeeGoOS') ||
1175
-
1176
- // Tizen (pre-release) - Tested on early hardware
1177
- $this->is('Tizen') ||
1178
-
1179
- // Samsung Bada 2.0 - Tested on a Samsung Wave 3, Dolphin browser
1180
- // @todo: more tests here!
1181
- $this->is('Dolfin') && $this->version('Bada', self::VERSION_TYPE_FLOAT)>=2.0 ||
1182
-
1183
- // UC Browser - Tested on Android 2.3 device
1184
- ( ($this->is('UC Browser') || $this->is('Dolfin')) && $this->version('Android', self::VERSION_TYPE_FLOAT)>=2.3 ) ||
1185
-
1186
- // Kindle 3 and Fire - Tested on the built-in WebKit browser for each
1187
- ( $this->match('Kindle Fire') ||
1188
- $this->is('Kindle') && $this->version('Kindle', self::VERSION_TYPE_FLOAT)>=3.0 ) ||
1189
-
1190
- // Nook Color 1.4.1 - Tested on original Nook Color, not Nook Tablet
1191
- $this->is('AndroidOS') && $this->is('NookTablet') ||
1192
-
1193
- // Chrome Desktop 11-21 - Tested on OS X 10.7 and Windows 7
1194
- $this->version('Chrome', self::VERSION_TYPE_FLOAT)>=11 && !$isMobile ||
1195
-
1196
- // Safari Desktop 4-5 - Tested on OS X 10.7 and Windows 7
1197
- $this->version('Safari', self::VERSION_TYPE_FLOAT)>=5.0 && !$isMobile ||
1198
-
1199
- // Firefox Desktop 4-13 - Tested on OS X 10.7 and Windows 7
1200
- $this->version('Firefox', self::VERSION_TYPE_FLOAT)>=4.0 && !$isMobile ||
1201
-
1202
- // Internet Explorer 7-9 - Tested on Windows XP, Vista and 7
1203
- $this->version('MSIE', self::VERSION_TYPE_FLOAT)>=7.0 && !$isMobile ||
1204
-
1205
- // Opera Desktop 10-12 - Tested on OS X 10.7 and Windows 7
1206
- // @reference: http://my.opera.com/community/openweb/idopera/
1207
- $this->version('Opera', self::VERSION_TYPE_FLOAT)>=10 && !$isMobile
1208
-
1209
- ){
1210
- return self::MOBILE_GRADE_A;
1211
- }
1212
-
1213
- if (
1214
- $this->isIOS() && $this->version('iPad', self::VERSION_TYPE_FLOAT)<4.3 ||
1215
- $this->isIOS() && $this->version('iPhone', self::VERSION_TYPE_FLOAT)<3.1 ||
1216
- $this->isIOS() && $this->version('iPod', self::VERSION_TYPE_FLOAT)<3.1 ||
1217
-
1218
- // Blackberry 5.0: Tested on the Storm 2 9550, Bold 9770
1219
- $this->is('Blackberry') && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT)>=5 && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT)<6 ||
1220
-
1221
- //Opera Mini (5.0-6.5) - Tested on iOS 3.2/4.3 and Android 2.3
1222
- ( $this->version('Opera Mini', self::VERSION_TYPE_FLOAT)>=5.0 && $this->version('Opera Mini', self::VERSION_TYPE_FLOAT)<=6.5 &&
1223
- ($this->version('Android', self::VERSION_TYPE_FLOAT)>=2.3 || $this->is('iOS')) ) ||
1224
-
1225
- // Nokia Symbian^3 - Tested on Nokia N8 (Symbian^3), C7 (Symbian^3), also works on N97 (Symbian^1)
1226
- $this->match('NokiaN8|NokiaC7|N97.*Series60|Symbian/3') ||
1227
-
1228
- // @todo: report this (tested on Nokia N71)
1229
- $this->version('Opera Mobi', self::VERSION_TYPE_FLOAT)>=11 && $this->is('SymbianOS')
1230
- ){
1231
- return self::MOBILE_GRADE_B;
1232
- }
1233
-
1234
- if (
1235
- // Blackberry 4.x - Tested on the Curve 8330
1236
- $this->version('BlackBerry', self::VERSION_TYPE_FLOAT)<5.0 ||
1237
- // Windows Mobile - Tested on the HTC Leo (WinMo 5.2)
1238
- $this->match('MSIEMobile|Windows CE.*Mobile') || $this->version('Windows Mobile', self::VERSION_TYPE_FLOAT)<=5.2
1239
-
1240
- ){
1241
- return self::MOBILE_GRADE_C;
1242
- }
1243
-
1244
- //All older smartphone platforms and featurephones - Any device that doesn't support media queries
1245
- //will receive the basic, C grade experience.
1246
- return self::MOBILE_GRADE_C;
1247
- }
1248
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/helper/class-eds-mobile-detect.php ADDED
@@ -0,0 +1,1250 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Mobile Detect Library
4
+ * =====================
5
+ *
6
+ * Motto: "Every business should have a mobile detection script to detect mobile readers"
7
+ *
8
+ * Mobile_Detect is a lightweight PHP class for detecting mobile devices (including tablets).
9
+ * It uses the User-Agent string combined with specific HTTP headers to detect the mobile environment.
10
+ *
11
+ * @author Current authors: Serban Ghita <serbanghita@gmail.com>, Nick Ilyin <nick.ilyin@gmail.com>
12
+ * Original author: Victor Stanciu <vic.stanciu@gmail.com>
13
+ *
14
+ * @license Code and contributions have 'MIT License'
15
+ * More details: https://github.com/serbanghita/Mobile-Detect/blob/master/LICENSE.txt
16
+ *
17
+ * @link Homepage: http://mobiledetect.net
18
+ * GitHub Repo: https://github.com/serbanghita/Mobile-Detect
19
+ * Google Code: http://code.google.com/p/php-mobile-detect/
20
+ * README: https://github.com/serbanghita/Mobile-Detect/blob/master/README.md
21
+ * HOWTO: https://github.com/serbanghita/Mobile-Detect/wiki/Code-examples
22
+ *
23
+ * @version 2.8.3
24
+ */
25
+ if ( !class_exists( 'EDS_Mobile_Detect' ) ):
26
+
27
+ class EDS_Mobile_Detect
28
+ {
29
+ /**
30
+ * Mobile detection type.
31
+ *
32
+ * @deprecated since version 2.6.9
33
+ */
34
+ const DETECTION_TYPE_MOBILE = 'mobile';
35
+
36
+ /**
37
+ * Extended detection type.
38
+ *
39
+ * @deprecated since version 2.6.9
40
+ */
41
+ const DETECTION_TYPE_EXTENDED = 'extended';
42
+
43
+ /**
44
+ * A frequently used regular expression to extract version #s.
45
+ *
46
+ * @deprecated since version 2.6.9
47
+ */
48
+ const VER = '([\w._\+]+)';
49
+
50
+ /**
51
+ * Top-level device.
52
+ */
53
+ const MOBILE_GRADE_A = 'A';
54
+
55
+ /**
56
+ * Mid-level device.
57
+ */
58
+ const MOBILE_GRADE_B = 'B';
59
+
60
+ /**
61
+ * Low-level device.
62
+ */
63
+ const MOBILE_GRADE_C = 'C';
64
+
65
+ /**
66
+ * Stores the version number of the current release.
67
+ */
68
+ const VERSION = '2.8.3';
69
+
70
+ /**
71
+ * A type for the version() method indicating a string return value.
72
+ */
73
+ const VERSION_TYPE_STRING = 'text';
74
+
75
+ /**
76
+ * A type for the version() method indicating a float return value.
77
+ */
78
+ const VERSION_TYPE_FLOAT = 'float';
79
+
80
+ /**
81
+ * The User-Agent HTTP header is stored in here.
82
+ * @var string
83
+ */
84
+ protected $userAgent = null;
85
+
86
+ /**
87
+ * HTTP headers in the PHP-flavor. So HTTP_USER_AGENT and SERVER_SOFTWARE.
88
+ * @var array
89
+ */
90
+ protected $httpHeaders = array();
91
+
92
+ /**
93
+ * The detection type, using self::DETECTION_TYPE_MOBILE or self::DETECTION_TYPE_EXTENDED.
94
+ *
95
+ * @deprecated since version 2.6.9
96
+ *
97
+ * @var string
98
+ */
99
+ protected $detectionType = self::DETECTION_TYPE_MOBILE;
100
+
101
+ /**
102
+ * HTTP headers that trigger the 'isMobile' detection
103
+ * to be true.
104
+ *
105
+ * @var array
106
+ */
107
+ protected static $mobileHeaders = array(
108
+
109
+ 'HTTP_ACCEPT' => array('matches' => array(
110
+ // Opera Mini; @reference: http://dev.opera.com/articles/view/opera-binary-markup-language/
111
+ 'application/x-obml2d',
112
+ // BlackBerry devices.
113
+ 'application/vnd.rim.html',
114
+ 'text/vnd.wap.wml',
115
+ 'application/vnd.wap.xhtml+xml'
116
+ )),
117
+ 'HTTP_X_WAP_PROFILE' => null,
118
+ 'HTTP_X_WAP_CLIENTID' => null,
119
+ 'HTTP_WAP_CONNECTION' => null,
120
+ 'HTTP_PROFILE' => null,
121
+ // Reported by Opera on Nokia devices (eg. C3).
122
+ 'HTTP_X_OPERAMINI_PHONE_UA' => null,
123
+ 'HTTP_X_NOKIA_GATEWAY_ID' => null,
124
+ 'HTTP_X_ORANGE_ID' => null,
125
+ 'HTTP_X_VODAFONE_3GPDPCONTEXT' => null,
126
+ 'HTTP_X_HUAWEI_USERID' => null,
127
+ // Reported by Windows Smartphones.
128
+ 'HTTP_UA_OS' => null,
129
+ // Reported by Verizon, Vodafone proxy system.
130
+ 'HTTP_X_MOBILE_GATEWAY' => null,
131
+ // Seend this on HTC Sensation. @ref: SensationXE_Beats_Z715e.
132
+ 'HTTP_X_ATT_DEVICEID' => null,
133
+ // Seen this on a HTC.
134
+ 'HTTP_UA_CPU' => array('matches' => array('ARM')),
135
+ );
136
+
137
+ /**
138
+ * List of mobile devices (phones).
139
+ *
140
+ * @var array
141
+ */
142
+ protected static $phoneDevices = array(
143
+ 'iPhone' => '\biPhone.*(Mobile|PhoneGap)|\biPod', // |\biTunes
144
+ 'BlackBerry' => 'BlackBerry|\bBB10\b|rim[0-9]+',
145
+ 'HTC' => 'HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\bEVO\b|T-Mobile G1|Z520m',
146
+ 'Nexus' => 'Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile',
147
+ // @todo: Is 'Dell Streak' a tablet or a phone? ;)
148
+ 'Dell' => 'Dell.*Streak|Dell.*Aero|Dell.*Venue|DELL.*Venue Pro|Dell Flash|Dell Smoke|Dell Mini 3iX|XCD28|XCD35|\b001DL\b|\b101DL\b|\bGS01\b',
149
+ 'Motorola' => 'Motorola|DROIDX|DROID BIONIC|\bDroid\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925',
150
+ 'Samsung' => 'Samsung|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E',
151
+ 'LG' => '\bLG\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802)',
152
+ 'Sony' => 'SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i',
153
+ 'Asus' => 'Asus.*Galaxy|PadFone.*Mobile',
154
+ // @ref: http://www.micromaxinfo.com/mobiles/smartphones
155
+ // Added because the codes might conflict with Acer Tablets.
156
+ 'Micromax' => 'Micromax.*\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\b',
157
+ 'Palm' => 'PalmSource|Palm', // avantgo|blazer|elaine|hiptop|plucker|xiino ; @todo - complete the regex.
158
+ 'Vertu' => 'Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature', // Just for fun ;)
159
+ // @ref: http://www.pantech.co.kr/en/prod/prodList.do?gbrand=VEGA (PANTECH)
160
+ // Most of the VEGA devices are legacy. PANTECH seem to be newer devices based on Android.
161
+ 'Pantech' => 'PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790',
162
+ // @ref: http://www.fly-phone.com/devices/smartphones/ ; Included only smartphones.
163
+ 'Fly' => 'IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250',
164
+ 'iMobile' => 'i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)',
165
+ // Added simvalley mobile just for fun. They have some interesting devices.
166
+ // @ref: http://www.simvalley.fr/telephonie---gps-_22_telephonie-mobile_telephones_.html
167
+ 'SimValley' => '\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\b',
168
+ // @Tapatalk is a mobile app; @ref: http://support.tapatalk.com/threads/smf-2-0-2-os-and-browser-detection-plugin-and-tapatalk.15565/#post-79039
169
+ 'GenericPhone' => 'Tapatalk|PDA;|SAGEM|\bmmp\b|pocket|\bpsp\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\bwap\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser'
170
+ );
171
+
172
+ /**
173
+ * List of tablet devices.
174
+ *
175
+ * @var array
176
+ */
177
+ protected static $tabletDevices = array(
178
+ 'iPad' => 'iPad|iPad.*Mobile', // @todo: check for mobile friendly emails topic.
179
+ 'NexusTablet' => 'Android.*Nexus[\s]+(7|10)|^.*Android.*Nexus(?:(?!Mobile).)*$',
180
+ 'SamsungTablet' => 'SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-I9205|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705C|SM-T535|SM-T331', // SCH-P709|SCH-P729|SM-T2558 - Samsung Mega - treat them like a regular phone.
181
+ // @reference: http://www.labnol.org/software/kindle-user-agent-string/20378/
182
+ 'Kindle' => 'Kindle|Silk.*Accelerated|Android.*\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE)\b',
183
+ // Only the Surface tablets with Windows RT are considered mobile.
184
+ // @ref: http://msdn.microsoft.com/en-us/library/ie/hh920767(v=vs.85).aspx
185
+ 'SurfaceTablet' => 'Windows NT [0-9.]+; ARM;',
186
+ // @ref: http://shopping1.hp.com/is-bin/INTERSHOP.enfinity/WFS/WW-USSMBPublicStore-Site/en_US/-/USD/ViewStandardCatalog-Browse?CatalogCategoryID=JfIQ7EN5lqMAAAEyDcJUDwMT
187
+ 'HPTablet' => 'HP Slate 7|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8',
188
+ // @note: watch out for PadFone, see #132
189
+ 'AsusTablet' => '^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\bK00F\b|TX201LA',
190
+ 'BlackBerryTablet' => 'PlayBook|RIM Tablet',
191
+ 'HTCtablet' => 'HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200',
192
+ 'MotorolaTablet' => 'xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617',
193
+ 'NookTablet' => 'Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2',
194
+ // @ref: http://www.acer.ro/ac/ro/RO/content/drivers
195
+ // @ref: http://www.packardbell.co.uk/pb/en/GB/content/download (Packard Bell is part of Acer)
196
+ // @ref: http://us.acer.com/ac/en/US/content/group/tablets
197
+ // @note: Can conflict with Micromax and Motorola phones codes.
198
+ 'AcerTablet' => 'Android.*; \b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-830)\b|W3-810|\bA3-A10\b',
199
+ // @ref: http://eu.computers.toshiba-europe.com/innovation/family/Tablets/1098744/banner_id/tablet_footerlink/
200
+ // @ref: http://us.toshiba.com/tablets/tablet-finder
201
+ // @ref: http://www.toshiba.co.jp/regza/tablet/
202
+ 'ToshibaTablet' => 'Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO',
203
+ // @ref: http://www.nttdocomo.co.jp/english/service/developer/smart_phone/technical_info/spec/index.html
204
+ // @ref: http://www.lg.com/us/tablets
205
+ 'LGTablet' => '\bL-06C|LG-V900|LG-V500|LG-V909|LG-V500|LG-V510|LG-VK810\b',
206
+ 'FujitsuTablet' => 'Android.*\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\b',
207
+ // Prestigio Tablets http://www.prestigio.com/support
208
+ 'PrestigioTablet' => 'PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD',
209
+ // @ref: http://support.lenovo.com/en_GB/downloads/default.page?#
210
+ 'LenovoTablet' => 'IdeaTab|ThinkPad([ ]+)?Tablet|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A1000|A2107|A2109|A1107|B6000|B8000|B8080-F)',
211
+ // @ref: http://www.yarvik.com/en/matrix/tablets/
212
+ 'YarvikTablet' => 'Android.*\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\b',
213
+ 'MedionTablet' => 'Android.*\bOYO\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB',
214
+ 'ArnovaTablet' => 'AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT',
215
+ // http://www.intenso.de/kategorie_en.php?kategorie=33
216
+ // @todo: http://www.nbhkdz.com/read/b8e64202f92a2df129126bff.html - investigate
217
+ 'IntensoTablet' => 'INM8002KP|INM1010FP|INM805ND|Intenso Tab',
218
+ // IRU.ru Tablets http://www.iru.ru/catalog/soho/planetable/
219
+ 'IRUTablet' => 'M702pro',
220
+ 'MegafonTablet' => 'MegaFon V9|\bZTE V9\b|Android.*\bMT7A\b',
221
+ // @ref: http://www.e-boda.ro/tablete-pc.html
222
+ 'EbodaTablet' => 'E-Boda (Supreme|Impresspeed|Izzycomm|Essential)',
223
+ // @ref: http://www.allview.ro/produse/droseries/lista-tablete-pc/
224
+ 'AllViewTablet' => 'Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)',
225
+ // @reference: http://wiki.archosfans.com/index.php?title=Main_Page
226
+ 'ArchosTablet' => '\b(101G9|80G9|A101IT)\b|Qilive 97R|ARCHOS 101G10|Archos 101 Neon',
227
+ // @ref: http://www.ainol.com/plugin.php?identifier=ainol&module=product
228
+ 'AinolTablet' => 'NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark',
229
+ // @todo: inspect http://esupport.sony.com/US/p/select-system.pl?DIRECTOR=DRIVER
230
+ // @ref: Readers http://www.atsuhiro-me.net/ebook/sony-reader/sony-reader-web-browser
231
+ // @ref: http://www.sony.jp/support/tablet/
232
+ 'SonyTablet' => 'Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551',
233
+ // @ref: db + http://www.cube-tablet.com/buy-products.html
234
+ 'CubeTablet' => 'Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT',
235
+ // @ref: http://www.cobyusa.com/?p=pcat&pcat_id=3001
236
+ 'CobyTablet' => 'MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010',
237
+ // @ref: http://www.match.net.cn/products.asp
238
+ 'MIDTablet' => 'M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733',
239
+ // @ref: http://pdadb.net/index.php?m=pdalist&list=SMiT (NoName Chinese Tablets)
240
+ // @ref: http://www.imp3.net/14/show.php?itemid=20454
241
+ 'SMiTTablet' => 'Android.*(\bMID\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)',
242
+ // @ref: http://www.rock-chips.com/index.php?do=prod&pid=2
243
+ 'RockChipTablet' => 'Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A',
244
+ // @ref: http://www.fly-phone.com/devices/tablets/ ; http://www.fly-phone.com/service/
245
+ 'FlyTablet' => 'IQ310|Fly Vision',
246
+ // @ref: http://www.bqreaders.com/gb/tablets-prices-sale.html
247
+ 'bqTablet' => 'bq.*(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant)|Maxwell.*Lite|Maxwell.*Plus',
248
+ // @ref: http://www.huaweidevice.com/worldwide/productFamily.do?method=index&directoryId=5011&treeId=3290
249
+ // @ref: http://www.huaweidevice.com/worldwide/downloadCenter.do?method=index&directoryId=3372&treeId=0&tb=1&type=software (including legacy tablets)
250
+ 'HuaweiTablet' => 'MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim',
251
+ // Nec or Medias Tab
252
+ 'NecTablet' => '\bN-06D|\bN-08D',
253
+ // Pantech Tablets: http://www.pantechusa.com/phones/
254
+ 'PantechTablet' => 'Pantech.*P4100',
255
+ // Broncho Tablets: http://www.broncho.cn/ (hard to find)
256
+ 'BronchoTablet' => 'Broncho.*(N701|N708|N802|a710)',
257
+ // @ref: http://versusuk.com/support.html
258
+ 'VersusTablet' => 'TOUCHPAD.*[78910]|\bTOUCHTAB\b',
259
+ // @ref: http://www.zync.in/index.php/our-products/tablet-phablets
260
+ 'ZyncTablet' => 'z1000|Z99 2G|z99|z930|z999|z990|z909|Z919|z900',
261
+ // @ref: http://www.positivoinformatica.com.br/www/pessoal/tablet-ypy/
262
+ 'PositivoTablet' => 'TB07STA|TB10STA|TB07FTA|TB10FTA',
263
+ // @ref: https://www.nabitablet.com/
264
+ 'NabiTablet' => 'Android.*\bNabi',
265
+ 'KoboTablet' => 'Kobo Touch|\bK080\b|\bVox\b Build|\bArc\b Build',
266
+ // French Danew Tablets http://www.danew.com/produits-tablette.php
267
+ 'DanewTablet' => 'DSlide.*\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\b',
268
+ // Texet Tablets and Readers http://www.texet.ru/tablet/
269
+ 'TexetTablet' => 'NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE',
270
+ // @note: Avoid detecting 'PLAYSTATION 3' as mobile.
271
+ 'PlaystationTablet' => 'Playstation.*(Portable|Vita)',
272
+ // @ref: http://www.trekstor.de/surftabs.html
273
+ 'TrekstorTablet' => 'ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A',
274
+ // @ref: http://www.pyleaudio.com/Products.aspx?%2fproducts%2fPersonal-Electronics%2fTablets
275
+ 'PyleAudioTablet' => '\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\b',
276
+ // @ref: http://www.advandigital.com/index.php?link=content-product&jns=JP001
277
+ // @Note: because of the short codenames we have to include whitespaces to reduce the possible conflicts.
278
+ 'AdvanTablet' => 'Android.* \b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\b ',
279
+ // @ref: http://www.danytech.com/category/tablet-pc
280
+ 'DanyTechTablet' => 'Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1',
281
+ // @ref: http://www.galapad.net/product.html
282
+ 'GalapadTablet' => 'Android.*\bG1\b',
283
+ // @ref: http://www.micromaxinfo.com/tablet/funbook
284
+ 'MicromaxTablet' => 'Funbook|Micromax.*\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\b',
285
+ // http://www.karbonnmobiles.com/products_tablet.php
286
+ 'KarbonnTablet' => 'Android.*\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\b',
287
+ // @ref: http://www.myallfine.com/Products.asp
288
+ 'AllFineTablet' => 'Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide',
289
+ // @ref: http://www.proscanvideo.com/products-search.asp?itemClass=TABLET&itemnmbr=
290
+ 'PROSCANTablet' => '\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\b',
291
+ // @ref: http://www.yonesnav.com/products/products.php
292
+ 'YONESTablet' => 'BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026',
293
+ // @ref: http://www.cjshowroom.com/eproducts.aspx?classcode=004001001
294
+ // China manufacturer makes tablets for different small brands (eg. http://www.zeepad.net/index.html)
295
+ 'ChangJiaTablet' => 'TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503',
296
+ // @ref: http://www.gloryunion.cn/products.asp
297
+ // @ref: http://www.allwinnertech.com/en/apply/mobile.html
298
+ // @ref: http://www.ptcl.com.pk/pd_content.php?pd_id=284 (EVOTAB)
299
+ // @todo: Softwiner tablets?
300
+ // aka. Cute or Cool tablets. Not sure yet, must research to avoid collisions.
301
+ 'GUTablet' => 'TX-A1301|TX-M9002|Q702|kf026', // A12R|D75A|D77|D79|R83|A95|A106C|R15|A75|A76|D71|D72|R71|R73|R77|D82|R85|D92|A97|D92|R91|A10F|A77F|W71F|A78F|W78F|W81F|A97F|W91F|W97F|R16G|C72|C73E|K72|K73|R96G
302
+ // @ref: http://www.pointofview-online.com/showroom.php?shop_mode=product_listing&category_id=118
303
+ 'PointOfViewTablet' => 'TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10',
304
+ // @ref: http://www.overmax.pl/pl/katalog-produktow,p8/tablety,c14/
305
+ // @todo: add more tests.
306
+ 'OvermaxTablet' => 'OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)',
307
+ // @ref: http://hclmetablet.com/India/index.php
308
+ 'HCLTablet' => 'HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync',
309
+ // @ref: http://www.edigital.hu/Tablet_es_e-book_olvaso/Tablet-c18385.html
310
+ 'DPSTablet' => 'DPS Dream 9|DPS Dual 7',
311
+ // @ref: http://www.visture.com/index.asp
312
+ 'VistureTablet' => 'V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10',
313
+ // @ref: http://www.mijncresta.nl/tablet
314
+ 'CrestaTablet' => 'CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989',
315
+ // MediaTek - http://www.mediatek.com/_en/01_products/02_proSys.php?cata_sn=1&cata1_sn=1&cata2_sn=309
316
+ 'MediatekTablet' => '\bMT8125|MT8389|MT8135|MT8377\b',
317
+ // Concorde tab
318
+ 'ConcordeTablet' => 'Concorde([ ]+)?Tab|ConCorde ReadMan',
319
+ // GoClever Tablets - http://www.goclever.com/uk/products,c1/tablet,c5/
320
+ 'GoCleverTablet' => 'GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042',
321
+ // Modecom Tablets - http://www.modecom.eu/tablets/portal/
322
+ 'ModecomTablet' => 'FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003',
323
+ // Vonino Tablets - http://www.vonino.eu/tablets
324
+ 'VoninoTablet' => '\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\bQ8\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\b',
325
+ // ECS Tablets - http://www.ecs.com.tw/ECSWebSite/Product/Product_Tablet_List.aspx?CategoryID=14&MenuID=107&childid=M_107&LanID=0
326
+ 'ECSTablet' => 'V07OT2|TM105A|S10OT1|TR10CS1',
327
+ // Storex Tablets - http://storex.fr/espace_client/support.html
328
+ // @note: no need to add all the tablet codes since they are guided by the first regex.
329
+ 'StorexTablet' => 'eZee[_\']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab',
330
+ // Generic Vodafone tablets.
331
+ 'VodafoneTablet' => 'SmartTab([ ]+)?[0-9]+|SmartTabII10',
332
+ // French tablets - Essentiel B http://www.boulanger.fr/tablette_tactile_e-book/tablette_tactile_essentiel_b/cl_68908.htm?multiChoiceToDelete=brand&mc_brand=essentielb
333
+ // Aka: http://www.essentielb.fr/
334
+ 'EssentielBTablet' => 'Smart[ \']?TAB[ ]+?[0-9]+|Family[ \']?TAB2',
335
+ // Ross & Moor - http://ross-moor.ru/
336
+ 'RossMoorTablet' => 'RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711',
337
+ // i-mobile http://product.i-mobilephone.com/Mobile_Device
338
+ 'iMobileTablet' => 'i-mobile i-note',
339
+ // @ref: http://www.tolino.de/de/vergleichen/
340
+ 'TolinoTablet' => 'tolino tab [0-9.]+|tolino shine',
341
+ // AudioSonic - a Kmart brand
342
+ // http://www.kmart.com.au/webapp/wcs/stores/servlet/Search?langId=-1&storeId=10701&catalogId=10001&categoryId=193001&pageSize=72&currentPage=1&searchCategory=193001%2b4294965664&sortBy=p_MaxPrice%7c1
343
+ 'AudioSonicTablet' => '\bC-22Q|T7-QC|T-17B|T-17P\b',
344
+ // AMPE Tablets - http://www.ampe.com.my/product-category/tablets/
345
+ // @todo: add them gradually to avoid conflicts.
346
+ 'AMPETablet' => 'Android.* A78 ',
347
+ // Skk Mobile - http://skkmobile.com.ph/product_tablets.php
348
+ 'SkkTablet' => 'Android.* (SKYPAD|PHOENIX|CYCLOPS)',
349
+ // Tecno Mobile (only tablet) - http://www.tecno-mobile.com/index.php/product?filterby=smart&list_order=all&page=1
350
+ 'TecnoTablet' => 'TECNO P9',
351
+ // JXD (consoles & tablets) - http://jxd.hk/products.asp?selectclassid=009008&clsid=3
352
+ 'JXDTablet' => 'Android.*\b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\b',
353
+ // i-Joy tablets - http://www.i-joy.es/en/cat/products/tablets/
354
+ 'iJoyTablet' => 'Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)',
355
+ // http://www.intracon.eu/tablet
356
+ 'FX2Tablet' => 'FX2 PAD7|FX2 PAD10',
357
+ // http://www.xoro.de/produkte/
358
+ // @note: Might be the same brand with 'Simply tablets'
359
+ 'XoroTablet' => 'KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151',
360
+ // http://www1.viewsonic.com/products/computing/tablets/
361
+ 'ViewsonicTablet' => 'ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a',
362
+ // http://www.odys.de/web/internet-tablet_en.html
363
+ 'OdysTablet' => 'LOOX|XENO10|ODYS Space',
364
+ // http://www.captiva-power.de/products.html#tablets-en
365
+ 'CaptivaTablet' => 'CAPTIVA PAD',
366
+ // IconBIT - http://www.iconbit.com/products/tablets/
367
+ 'IconbitTablet' => 'NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S',
368
+ // @ref: http://www.tesco.com/direct/hudl/
369
+ 'Hudl' => 'Hudl HT7S3',
370
+ // @ref: http://www.telstra.com.au/home-phone/thub-2/
371
+ 'TelstraTablet' => 'T-Hub2',
372
+ 'GenericTablet' => 'Android.*\b97D\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\bA7EB\b|CatNova8|A1_07|CT704|CT1002|\bM721\b|rk30sdk|\bEVOTAB\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4',
373
+ );
374
+
375
+ /**
376
+ * List of mobile Operating Systems.
377
+ *
378
+ * @var array
379
+ */
380
+ protected static $operatingSystems = array(
381
+ 'AndroidOS' => 'Android',
382
+ 'BlackBerryOS' => 'blackberry|\bBB10\b|rim tablet os',
383
+ 'PalmOS' => 'PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino',
384
+ 'SymbianOS' => 'Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\bS60\b',
385
+ // @reference: http://en.wikipedia.org/wiki/Windows_Mobile
386
+ 'WindowsMobileOS' => 'Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Window Mobile|Windows Phone [0-9.]+|WCE;',
387
+ // @reference: http://en.wikipedia.org/wiki/Windows_Phone
388
+ // http://wifeng.cn/?r=blog&a=view&id=106
389
+ // http://nicksnettravels.builttoroam.com/post/2011/01/10/Bogus-Windows-Phone-7-User-Agent-String.aspx
390
+ 'WindowsPhoneOS' => 'Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7',
391
+ 'iOS' => '\biPhone.*Mobile|\biPod|\biPad',
392
+ // http://en.wikipedia.org/wiki/MeeGo
393
+ // @todo: research MeeGo in UAs
394
+ 'MeeGoOS' => 'MeeGo',
395
+ // http://en.wikipedia.org/wiki/Maemo
396
+ // @todo: research Maemo in UAs
397
+ 'MaemoOS' => 'Maemo',
398
+ 'JavaOS' => 'J2ME/|\bMIDP\b|\bCLDC\b', // '|Java/' produces bug #135
399
+ 'webOS' => 'webOS|hpwOS',
400
+ 'badaOS' => '\bBada\b',
401
+ 'BREWOS' => 'BREW',
402
+ );
403
+
404
+ /**
405
+ * List of mobile User Agents.
406
+ *
407
+ * @var array
408
+ */
409
+ protected static $browsers = array(
410
+ // @reference: https://developers.google.com/chrome/mobile/docs/user-agent
411
+ 'Chrome' => '\bCrMo\b|CriOS|Android.*Chrome/[.0-9]* (Mobile)?',
412
+ 'Dolfin' => '\bDolfin\b',
413
+ 'Opera' => 'Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR/[0-9.]+|Coast/[0-9.]+',
414
+ 'Skyfire' => 'Skyfire',
415
+ 'IE' => 'IEMobile|MSIEMobile', // |Trident/[.0-9]+
416
+ 'Firefox' => 'fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile',
417
+ 'Bolt' => 'bolt',
418
+ 'TeaShark' => 'teashark',
419
+ 'Blazer' => 'Blazer',
420
+ // @reference: http://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariWebContent/OptimizingforSafarioniPhone/OptimizingforSafarioniPhone.html#//apple_ref/doc/uid/TP40006517-SW3
421
+ 'Safari' => 'Version.*Mobile.*Safari|Safari.*Mobile',
422
+ // @ref: http://en.wikipedia.org/wiki/Midori_(web_browser)
423
+ //'Midori' => 'midori',
424
+ 'Tizen' => 'Tizen',
425
+ 'UCBrowser' => 'UC.*Browser|UCWEB',
426
+ // @ref: https://github.com/serbanghita/Mobile-Detect/issues/7
427
+ 'DiigoBrowser' => 'DiigoBrowser',
428
+ // http://www.puffinbrowser.com/index.php
429
+ 'Puffin' => 'Puffin',
430
+ // @ref: http://mercury-browser.com/index.html
431
+ 'Mercury' => '\bMercury\b',
432
+ // @reference: http://en.wikipedia.org/wiki/Minimo
433
+ // http://en.wikipedia.org/wiki/Vision_Mobile_Browser
434
+ 'GenericBrowser' => 'NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger'
435
+ );
436
+
437
+ /**
438
+ * Utilities.
439
+ *
440
+ * @var array
441
+ */
442
+ protected static $utilities = array(
443
+ // Experimental. When a mobile device wants to switch to 'Desktop Mode'.
444
+ // @ref: http://scottcate.com/technology/windows-phone-8-ie10-desktop-or-mobile/
445
+ // @ref: https://github.com/serbanghita/Mobile-Detect/issues/57#issuecomment-15024011
446
+ 'DesktopMode' => 'WPDesktop',
447
+ 'TV' => 'SonyDTV|HbbTV', // experimental
448
+ 'WebKit' => '(webkit)[ /]([\w.]+)',
449
+ 'Bot' => 'Googlebot|DoCoMo|YandexBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|facebookexternalhit',
450
+ 'MobileBot' => 'Googlebot-Mobile|DoCoMo|YahooSeeker/M1A1-R2D2',
451
+ // @todo: Include JXD consoles.
452
+ 'Console' => '\b(Nintendo|Nintendo WiiU|PLAYSTATION|Xbox)\b',
453
+ 'Watch' => 'SM-V700',
454
+ );
455
+
456
+ /**
457
+ * All possible HTTP headers that represent the
458
+ * User-Agent string.
459
+ *
460
+ * @var array
461
+ */
462
+ protected static $uaHttpHeaders = array(
463
+ // The default User-Agent string.
464
+ 'HTTP_USER_AGENT',
465
+ // Header can occur on devices using Opera Mini.
466
+ 'HTTP_X_OPERAMINI_PHONE_UA',
467
+ // Vodafone specific header: http://www.seoprinciple.com/mobile-web-community-still-angry-at-vodafone/24/
468
+ 'HTTP_X_DEVICE_USER_AGENT',
469
+ 'HTTP_X_ORIGINAL_USER_AGENT',
470
+ 'HTTP_X_SKYFIRE_PHONE',
471
+ 'HTTP_X_BOLT_PHONE_UA',
472
+ 'HTTP_DEVICE_STOCK_UA',
473
+ 'HTTP_X_UCBROWSER_DEVICE_UA'
474
+ );
475
+
476
+ /**
477
+ * The individual segments that could exist in a User-Agent string. VER refers to the regular
478
+ * expression defined in the constant self::VER.
479
+ *
480
+ * @var array
481
+ */
482
+ protected static $properties = array(
483
+
484
+ // Build
485
+ 'Mobile' => 'Mobile/[VER]',
486
+ 'Build' => 'Build/[VER]',
487
+ 'Version' => 'Version/[VER]',
488
+ 'VendorID' => 'VendorID/[VER]',
489
+
490
+ // Devices
491
+ 'iPad' => 'iPad.*CPU[a-z ]+[VER]',
492
+ 'iPhone' => 'iPhone.*CPU[a-z ]+[VER]',
493
+ 'iPod' => 'iPod.*CPU[a-z ]+[VER]',
494
+ //'BlackBerry' => array('BlackBerry[VER]', 'BlackBerry [VER];'),
495
+ 'Kindle' => 'Kindle/[VER]',
496
+
497
+ // Browser
498
+ 'Chrome' => array('Chrome/[VER]', 'CriOS/[VER]', 'CrMo/[VER]'),
499
+ 'Coast' => array('Coast/[VER]'),
500
+ 'Dolfin' => 'Dolfin/[VER]',
501
+ // @reference: https://developer.mozilla.org/en-US/docs/User_Agent_Strings_Reference
502
+ 'Firefox' => 'Firefox/[VER]',
503
+ 'Fennec' => 'Fennec/[VER]',
504
+ // @reference: http://msdn.microsoft.com/en-us/library/ms537503(v=vs.85).aspx
505
+ 'IE' => array('IEMobile/[VER];', 'IEMobile [VER]', 'MSIE [VER];'),
506
+ // http://en.wikipedia.org/wiki/NetFront
507
+ 'NetFront' => 'NetFront/[VER]',
508
+ 'NokiaBrowser' => 'NokiaBrowser/[VER]',
509
+ 'Opera' => array( ' OPR/[VER]', 'Opera Mini/[VER]', 'Version/[VER]' ),
510
+ 'Opera Mini' => 'Opera Mini/[VER]',
511
+ 'Opera Mobi' => 'Version/[VER]',
512
+ 'UC Browser' => 'UC Browser[VER]',
513
+ 'MQQBrowser' => 'MQQBrowser/[VER]',
514
+ 'MicroMessenger' => 'MicroMessenger/[VER]',
515
+ // @note: Safari 7534.48.3 is actually Version 5.1.
516
+ // @note: On BlackBerry the Version is overwriten by the OS.
517
+ 'Safari' => array( 'Version/[VER]', 'Safari/[VER]' ),
518
+ 'Skyfire' => 'Skyfire/[VER]',
519
+ 'Tizen' => 'Tizen/[VER]',
520
+ 'Webkit' => 'webkit[ /][VER]',
521
+
522
+ // Engine
523
+ 'Gecko' => 'Gecko/[VER]',
524
+ 'Trident' => 'Trident/[VER]',
525
+ 'Presto' => 'Presto/[VER]',
526
+
527
+ // OS
528
+ 'iOS' => ' \bOS\b [VER] ',
529
+ 'Android' => 'Android [VER]',
530
+ 'BlackBerry' => array('BlackBerry[\w]+/[VER]', 'BlackBerry.*Version/[VER]', 'Version/[VER]'),
531
+ 'BREW' => 'BREW [VER]',
532
+ 'Java' => 'Java/[VER]',
533
+ // @reference: http://windowsteamblog.com/windows_phone/b/wpdev/archive/2011/08/29/introducing-the-ie9-on-windows-phone-mango-user-agent-string.aspx
534
+ // @reference: http://en.wikipedia.org/wiki/Windows_NT#Releases
535
+ 'Windows Phone OS' => array( 'Windows Phone OS [VER]', 'Windows Phone [VER]'),
536
+ 'Windows Phone' => 'Windows Phone [VER]',
537
+ 'Windows CE' => 'Windows CE/[VER]',
538
+ // http://social.msdn.microsoft.com/Forums/en-US/windowsdeveloperpreviewgeneral/thread/6be392da-4d2f-41b4-8354-8dcee20c85cd
539
+ 'Windows NT' => 'Windows NT [VER]',
540
+ 'Symbian' => array('SymbianOS/[VER]', 'Symbian/[VER]'),
541
+ 'webOS' => array('webOS/[VER]', 'hpwOS/[VER];'),
542
+ );
543
+
544
+ /**
545
+ * Construct an instance of this class.
546
+ *
547
+ * @param array $headers Specify the headers as injection. Should be PHP _SERVER flavored.
548
+ * If left empty, will use the global _SERVER['HTTP_*'] vars instead.
549
+ * @param string $userAgent Inject the User-Agent header. If null, will use HTTP_USER_AGENT
550
+ * from the $headers array instead.
551
+ */
552
+ public function __construct(
553
+ array $headers = null,
554
+ $userAgent = null
555
+ ){
556
+ $this->setHttpHeaders($headers);
557
+ $this->setUserAgent($userAgent);
558
+ }
559
+
560
+ /**
561
+ * Get the current script version.
562
+ * This is useful for the demo.php file,
563
+ * so people can check on what version they are testing
564
+ * for mobile devices.
565
+ *
566
+ * @return string The version number in semantic version format.
567
+ */
568
+ public static function getScriptVersion()
569
+ {
570
+ return self::VERSION;
571
+ }
572
+
573
+ /**
574
+ * Set the HTTP Headers. Must be PHP-flavored. This method will reset existing headers.
575
+ *
576
+ * @param array $httpHeaders The headers to set. If null, then using PHP's _SERVER to extract
577
+ * the headers. The default null is left for backwards compatibilty.
578
+ */
579
+ public function setHttpHeaders($httpHeaders = null)
580
+ {
581
+ //use global _SERVER if $httpHeaders aren't defined
582
+ if (!is_array($httpHeaders) || !count($httpHeaders)) {
583
+ $httpHeaders = $_SERVER;
584
+ }
585
+
586
+ //clear existing headers
587
+ $this->httpHeaders = array();
588
+
589
+ //Only save HTTP headers. In PHP land, that means only _SERVER vars that
590
+ //start with HTTP_.
591
+ foreach ($httpHeaders as $key => $value) {
592
+ if (substr($key,0,5) == 'HTTP_') {
593
+ $this->httpHeaders[$key] = $value;
594
+ }
595
+ }
596
+ }
597
+
598
+ /**
599
+ * Retrieves the HTTP headers.
600
+ *
601
+ * @return array
602
+ */
603
+ public function getHttpHeaders()
604
+ {
605
+ return $this->httpHeaders;
606
+ }
607
+
608
+ /**
609
+ * Retrieves a particular header. If it doesn't exist, no exception/error is caused.
610
+ * Simply null is returned.
611
+ *
612
+ * @param string $header The name of the header to retrieve. Can be HTTP compliant such as
613
+ * "User-Agent" or "X-Device-User-Agent" or can be php-esque with the
614
+ * all-caps, HTTP_ prefixed, underscore seperated awesomeness.
615
+ *
616
+ * @return string|null The value of the header.
617
+ */
618
+ public function getHttpHeader($header)
619
+ {
620
+ //are we using PHP-flavored headers?
621
+ if (strpos($header, '_') === false) {
622
+ $header = str_replace('-', '_', $header);
623
+ $header = strtoupper($header);
624
+ }
625
+
626
+ //test the alternate, too
627
+ $altHeader = 'HTTP_' . $header;
628
+
629
+ //Test both the regular and the HTTP_ prefix
630
+ if (isset($this->httpHeaders[$header])) {
631
+ return $this->httpHeaders[$header];
632
+ } elseif (isset($this->httpHeaders[$altHeader])) {
633
+ return $this->httpHeaders[$altHeader];
634
+ }
635
+
636
+ return null;
637
+ }
638
+
639
+ public function getMobileHeaders()
640
+ {
641
+ return self::$mobileHeaders;
642
+ }
643
+
644
+ /**
645
+ * Get all possible HTTP headers that
646
+ * can contain the User-Agent string.
647
+ *
648
+ * @return array List of HTTP headers.
649
+ */
650
+ public function getUaHttpHeaders()
651
+ {
652
+ return self::$uaHttpHeaders;
653
+ }
654
+
655
+ /**
656
+ * Set the User-Agent to be used.
657
+ *
658
+ * @param string $userAgent The user agent string to set.
659
+ *
660
+ * @return string|null
661
+ */
662
+ public function setUserAgent($userAgent = null)
663
+ {
664
+ if (!empty($userAgent)) {
665
+ return $this->userAgent = $userAgent;
666
+ } else {
667
+
668
+ $this->userAgent = null;
669
+
670
+ foreach($this->getUaHttpHeaders() as $altHeader){
671
+ if(!empty($this->httpHeaders[$altHeader])){ // @todo: should use getHttpHeader(), but it would be slow. (Serban)
672
+ $this->userAgent .= $this->httpHeaders[$altHeader] . " ";
673
+ }
674
+ }
675
+
676
+ return $this->userAgent = (!empty($this->userAgent) ? trim($this->userAgent) : null);
677
+
678
+ }
679
+ }
680
+
681
+ /**
682
+ * Retrieve the User-Agent.
683
+ *
684
+ * @return string|null The user agent if it's set.
685
+ */
686
+ public function getUserAgent()
687
+ {
688
+ return $this->userAgent;
689
+ }
690
+
691
+ /**
692
+ * Set the detection type. Must be one of self::DETECTION_TYPE_MOBILE or
693
+ * self::DETECTION_TYPE_EXTENDED. Otherwise, nothing is set.
694
+ *
695
+ * @deprecated since version 2.6.9
696
+ *
697
+ * @param string $type The type. Must be a self::DETECTION_TYPE_* constant. The default
698
+ * parameter is null which will default to self::DETECTION_TYPE_MOBILE.
699
+ */
700
+ public function setDetectionType($type = null)
701
+ {
702
+ if ($type === null) {
703
+ $type = self::DETECTION_TYPE_MOBILE;
704
+ }
705
+
706
+ if ($type != self::DETECTION_TYPE_MOBILE && $type != self::DETECTION_TYPE_EXTENDED) {
707
+ return;
708
+ }
709
+
710
+ $this->detectionType = $type;
711
+ }
712
+
713
+ /**
714
+ * Retrieve the list of known phone devices.
715
+ *
716
+ * @return array List of phone devices.
717
+ */
718
+ public static function getPhoneDevices()
719
+ {
720
+ return self::$phoneDevices;
721
+ }
722
+
723
+ /**
724
+ * Retrieve the list of known tablet devices.
725
+ *
726
+ * @return array List of tablet devices.
727
+ */
728
+ public static function getTabletDevices()
729
+ {
730
+ return self::$tabletDevices;
731
+ }
732
+
733
+ /**
734
+ * Alias for getBrowsers() method.
735
+ *
736
+ * @return array List of user agents.
737
+ */
738
+ public static function getUserAgents()
739
+ {
740
+ return self::getBrowsers();
741
+ }
742
+
743
+ /**
744
+ * Retrieve the list of known browsers. Specifically, the user agents.
745
+ *
746
+ * @return array List of browsers / user agents.
747
+ */
748
+ public static function getBrowsers()
749
+ {
750
+ return self::$browsers;
751
+ }
752
+
753
+ /**
754
+ * Retrieve the list of known utilities.
755
+ *
756
+ * @return array List of utilities.
757
+ */
758
+ public static function getUtilities()
759
+ {
760
+ return self::$utilities;
761
+ }
762
+
763
+ /**
764
+ * Method gets the mobile detection rules. This method is used for the magic methods $detect->is*().
765
+ *
766
+ * @deprecated since version 2.6.9
767
+ *
768
+ * @return array All the rules (but not extended).
769
+ */
770
+ public static function getMobileDetectionRules()
771
+ {
772
+ static $rules;
773
+
774
+ if (!$rules) {
775
+ $rules = array_merge(
776
+ self::$phoneDevices,
777
+ self::$tabletDevices,
778
+ self::$operatingSystems,
779
+ self::$browsers
780
+ );
781
+ }
782
+
783
+ return $rules;
784
+
785
+ }
786
+
787
+ /**
788
+ * Method gets the mobile detection rules + utilities.
789
+ * The reason this is separate is because utilities rules
790
+ * don't necessary imply mobile. This method is used inside
791
+ * the new $detect->is('stuff') method.
792
+ *
793
+ * @deprecated since version 2.6.9
794
+ *
795
+ * @return array All the rules + extended.
796
+ */
797
+ public function getMobileDetectionRulesExtended()
798
+ {
799
+ static $rules;
800
+
801
+ if (!$rules) {
802
+ // Merge all rules together.
803
+ $rules = array_merge(
804
+ self::$phoneDevices,
805
+ self::$tabletDevices,
806
+ self::$operatingSystems,
807
+ self::$browsers,
808
+ self::$utilities
809
+ );
810
+ }
811
+
812
+ return $rules;
813
+ }
814
+
815
+ /**
816
+ * Retrieve the current set of rules.
817
+ *
818
+ * @deprecated since version 2.6.9
819
+ *
820
+ * @return array
821
+ */
822
+ public function getRules()
823
+ {
824
+ if ($this->detectionType == self::DETECTION_TYPE_EXTENDED) {
825
+ return self::getMobileDetectionRulesExtended();
826
+ } else {
827
+ return self::getMobileDetectionRules();
828
+ }
829
+ }
830
+
831
+ /**
832
+ * Retrieve the list of mobile operating systems.
833
+ *
834
+ * @return array The list of mobile operating systems.
835
+ */
836
+ public static function getOperatingSystems()
837
+ {
838
+ return self::$operatingSystems;
839
+ }
840
+
841
+ /**
842
+ * Check the HTTP headers for signs of mobile.
843
+ * This is the fastest mobile check possible; it's used
844
+ * inside isMobile() method.
845
+ *
846
+ * @return bool
847
+ */
848
+ public function checkHttpHeadersForMobile()
849
+ {
850
+
851
+ foreach($this->getMobileHeaders() as $mobileHeader => $matchType){
852
+ if( isset($this->httpHeaders[$mobileHeader]) ){
853
+ if( is_array($matchType['matches']) ){
854
+ foreach($matchType['matches'] as $_match){
855
+ if( strpos($this->httpHeaders[$mobileHeader], $_match) !== false ){
856
+ return true;
857
+ }
858
+ }
859
+ return false;
860
+ } else {
861
+ return true;
862
+ }
863
+ }
864
+ }
865
+
866
+ return false;
867
+
868
+ }
869
+
870
+ /**
871
+ * Magic overloading method.
872
+ *
873
+ * @method boolean is[...]()
874
+ * @param string $name
875
+ * @param array $arguments
876
+ * @return mixed
877
+ * @throws BadMethodCallException when the method doesn't exist and doesn't start with 'is'
878
+ */
879
+ public function __call($name, $arguments)
880
+ {
881
+ //make sure the name starts with 'is', otherwise
882
+ if (substr($name, 0, 2) != 'is') {
883
+ throw new BadMethodCallException("No such method exists: $name");
884
+ }
885
+
886
+ $this->setDetectionType(self::DETECTION_TYPE_MOBILE);
887
+
888
+ $key = substr($name, 2);
889
+
890
+ return $this->matchUAAgainstKey($key);
891
+ }
892
+
893
+ /**
894
+ * Find a detection rule that matches the current User-agent.
895
+ *
896
+ * @param null $userAgent deprecated
897
+ * @return boolean
898
+ */
899
+ protected function matchDetectionRulesAgainstUA($userAgent = null)
900
+ {
901
+ // Begin general search.
902
+ foreach ($this->getRules() as $_regex) {
903
+ if (empty($_regex)) {
904
+ continue;
905
+ }
906
+ if ($this->match($_regex, $userAgent)) {
907
+ return true;
908
+ }
909
+ }
910
+
911
+ return false;
912
+ }
913
+
914
+ /**
915
+ * Search for a certain key in the rules array.
916
+ * If the key is found the try to match the corresponding
917
+ * regex agains the User-Agent.
918
+ *
919
+ * @param string $key
920
+ * @param null $userAgent deprecated
921
+ * @return mixed
922
+ */
923
+ protected function matchUAAgainstKey($key, $userAgent = null)
924
+ {
925
+ // Make the keys lowercase so we can match: isIphone(), isiPhone(), isiphone(), etc.
926
+ $key = strtolower($key);
927
+
928
+ //change the keys to lower case
929
+ $_rules = array_change_key_case($this->getRules());
930
+
931
+ if (array_key_exists($key, $_rules)) {
932
+ if (empty($_rules[$key])) {
933
+ return null;
934
+ }
935
+
936
+ return $this->match($_rules[$key], $userAgent);
937
+ }
938
+
939
+ return false;
940
+ }
941
+
942
+ /**
943
+ * Check if the device is mobile.
944
+ * Returns true if any type of mobile device detected, including special ones
945
+ * @param null $userAgent deprecated
946
+ * @param null $httpHeaders deprecated
947
+ * @return bool
948
+ */
949
+ public function isMobile($userAgent = null, $httpHeaders = null)
950
+ {
951
+
952
+ if ($httpHeaders) {
953
+ $this->setHttpHeaders($httpHeaders);
954
+ }
955
+
956
+ if ($userAgent) {
957
+ $this->setUserAgent($userAgent);
958
+ }
959
+
960
+ $this->setDetectionType(self::DETECTION_TYPE_MOBILE);
961
+
962
+ if ($this->checkHttpHeadersForMobile()) {
963
+ return true;
964
+ } else {
965
+ return $this->matchDetectionRulesAgainstUA();
966
+ }
967
+
968
+ }
969
+
970
+ /**
971
+ * Check if the device is a tablet.
972
+ * Return true if any type of tablet device is detected.
973
+ *
974
+ * @param string $userAgent deprecated
975
+ * @param array $httpHeaders deprecated
976
+ * @return bool
977
+ */
978
+ public function isTablet($userAgent = null, $httpHeaders = null)
979
+ {
980
+ $this->setDetectionType(self::DETECTION_TYPE_MOBILE);
981
+
982
+ foreach (self::$tabletDevices as $_regex) {
983
+ if ($this->match($_regex, $userAgent)) {
984
+ return true;
985
+ }
986
+ }
987
+
988
+ return false;
989
+ }
990
+
991
+ /**
992
+ * This method checks for a certain property in the
993
+ * userAgent.
994
+ * @todo: The httpHeaders part is not yet used.
995
+ *
996
+ * @param string $key
997
+ * @param string $userAgent deprecated
998
+ * @param string $httpHeaders deprecated
999
+ * @return bool|int|null
1000
+ */
1001
+ public function is($key, $userAgent = null, $httpHeaders = null)
1002
+ {
1003
+ // Set the UA and HTTP headers only if needed (eg. batch mode).
1004
+ if ($httpHeaders) {
1005
+ $this->setHttpHeaders($httpHeaders);
1006
+ }
1007
+
1008
+ if ($userAgent) {
1009
+ $this->setUserAgent($userAgent);
1010
+ }
1011
+
1012
+ $this->setDetectionType(self::DETECTION_TYPE_EXTENDED);
1013
+
1014
+ return $this->matchUAAgainstKey($key);
1015
+ }
1016
+
1017
+ /**
1018
+ * Some detection rules are relative (not standard),
1019
+ * because of the diversity of devices, vendors and
1020
+ * their conventions in representing the User-Agent or
1021
+ * the HTTP headers.
1022
+ *
1023
+ * This method will be used to check custom regexes against
1024
+ * the User-Agent string.
1025
+ *
1026
+ * @param $regex
1027
+ * @param string $userAgent
1028
+ * @return bool
1029
+ *
1030
+ * @todo: search in the HTTP headers too.
1031
+ */
1032
+ public function match($regex, $userAgent = null)
1033
+ {
1034
+ // Escape the special character which is the delimiter.
1035
+ $regex = str_replace('/', '\/', $regex);
1036
+
1037
+ return (bool) preg_match('/'.$regex.'/is', (!empty($userAgent) ? $userAgent : $this->userAgent));
1038
+ }
1039
+
1040
+ /**
1041
+ * Get the properties array.
1042
+ *
1043
+ * @return array
1044
+ */
1045
+ public static function getProperties()
1046
+ {
1047
+ return self::$properties;
1048
+ }
1049
+
1050
+ /**
1051
+ * Prepare the version number.
1052
+ *
1053
+ * @todo Remove the error supression from str_replace() call.
1054
+ *
1055
+ * @param string $ver The string version, like "2.6.21.2152";
1056
+ *
1057
+ * @return float
1058
+ */
1059
+ public function prepareVersionNo($ver)
1060
+ {
1061
+ $ver = str_replace(array('_', ' ', '/'), '.', $ver);
1062
+ $arrVer = explode('.', $ver, 2);
1063
+
1064
+ if (isset($arrVer[1])) {
1065
+ $arrVer[1] = @str_replace('.', '', $arrVer[1]); // @todo: treat strings versions.
1066
+ }
1067
+
1068
+ return (float) implode('.', $arrVer);
1069
+ }
1070
+
1071
+ /**
1072
+ * Check the version of the given property in the User-Agent.
1073
+ * Will return a float number. (eg. 2_0 will return 2.0, 4.3.1 will return 4.31)
1074
+ *
1075
+ * @param string $propertyName The name of the property. See self::getProperties() array
1076
+ * keys for all possible properties.
1077
+ * @param string $type Either self::VERSION_TYPE_STRING to get a string value or
1078
+ * self::VERSION_TYPE_FLOAT indicating a float value. This parameter
1079
+ * is optional and defaults to self::VERSION_TYPE_STRING. Passing an
1080
+ * invalid parameter will default to the this type as well.
1081
+ *
1082
+ * @return string|float The version of the property we are trying to extract.
1083
+ */
1084
+ public function version($propertyName, $type = self::VERSION_TYPE_STRING)
1085
+ {
1086
+ if (empty($propertyName)) {
1087
+ return false;
1088
+ }
1089
+
1090
+ //set the $type to the default if we don't recognize the type
1091
+ if ($type != self::VERSION_TYPE_STRING && $type != self::VERSION_TYPE_FLOAT) {
1092
+ $type = self::VERSION_TYPE_STRING;
1093
+ }
1094
+
1095
+ $properties = self::getProperties();
1096
+
1097
+ // Check if the property exists in the properties array.
1098
+ if (array_key_exists($propertyName, $properties)) {
1099
+
1100
+ // Prepare the pattern to be matched.
1101
+ // Make sure we always deal with an array (string is converted).
1102
+ $properties[$propertyName] = (array) $properties[$propertyName];
1103
+
1104
+ foreach ($properties[$propertyName] as $propertyMatchString) {
1105
+
1106
+ $propertyPattern = str_replace('[VER]', self::VER, $propertyMatchString);
1107
+
1108
+ // Escape the special character which is the delimiter.
1109
+ $propertyPattern = str_replace('/', '\/', $propertyPattern);
1110
+
1111
+ // Identify and extract the version.
1112
+ preg_match('/'.$propertyPattern.'/is', $this->userAgent, $match);
1113
+
1114
+ if (!empty($match[1])) {
1115
+ $version = ( $type == self::VERSION_TYPE_FLOAT ? $this->prepareVersionNo($match[1]) : $match[1] );
1116
+
1117
+ return $version;
1118
+ }
1119
+
1120
+ }
1121
+
1122
+ }
1123
+
1124
+ return false;
1125
+ }
1126
+
1127
+ /**
1128
+ * Retrieve the mobile grading, using self::MOBILE_GRADE_* constants.
1129
+ *
1130
+ * @return string One of the self::MOBILE_GRADE_* constants.
1131
+ */
1132
+ public function mobileGrade()
1133
+ {
1134
+ $isMobile = $this->isMobile();
1135
+
1136
+ if (
1137
+ // Apple iOS 3.2-5.1 - Tested on the original iPad (4.3 / 5.0), iPad 2 (4.3), iPad 3 (5.1), original iPhone (3.1), iPhone 3 (3.2), 3GS (4.3), 4 (4.3 / 5.0), and 4S (5.1)
1138
+ $this->isIOS() && $this->version('iPad', self::VERSION_TYPE_FLOAT)>=4.3 ||
1139
+ $this->isIOS() && $this->version('iPhone', self::VERSION_TYPE_FLOAT)>=3.1 ||
1140
+ $this->isIOS() && $this->version('iPod', self::VERSION_TYPE_FLOAT)>=3.1 ||
1141
+
1142
+ // Android 2.1-2.3 - Tested on the HTC Incredible (2.2), original Droid (2.2), HTC Aria (2.1), Google Nexus S (2.3). Functional on 1.5 & 1.6 but performance may be sluggish, tested on Google G1 (1.5)
1143
+ // Android 3.1 (Honeycomb) - Tested on the Samsung Galaxy Tab 10.1 and Motorola XOOM
1144
+ // Android 4.0 (ICS) - Tested on a Galaxy Nexus. Note: transition performance can be poor on upgraded devices
1145
+ // Android 4.1 (Jelly Bean) - Tested on a Galaxy Nexus and Galaxy 7
1146
+ ( $this->version('Android', self::VERSION_TYPE_FLOAT)>2.1 && $this->is('Webkit') ) ||
1147
+
1148
+ // Windows Phone 7-7.5 - Tested on the HTC Surround (7.0) HTC Trophy (7.5), LG-E900 (7.5), Nokia Lumia 800
1149
+ $this->version('Windows Phone OS', self::VERSION_TYPE_FLOAT)>=7.0 ||
1150
+
1151
+ // Blackberry 7 - Tested on BlackBerry Torch 9810
1152
+ // Blackberry 6.0 - Tested on the Torch 9800 and Style 9670
1153
+ $this->is('BlackBerry') && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT)>=6.0 ||
1154
+ // Blackberry Playbook (1.0-2.0) - Tested on PlayBook
1155
+ $this->match('Playbook.*Tablet') ||
1156
+
1157
+ // Palm WebOS (1.4-2.0) - Tested on the Palm Pixi (1.4), Pre (1.4), Pre 2 (2.0)
1158
+ ( $this->version('webOS', self::VERSION_TYPE_FLOAT)>=1.4 && $this->match('Palm|Pre|Pixi') ) ||
1159
+ // Palm WebOS 3.0 - Tested on HP TouchPad
1160
+ $this->match('hp.*TouchPad') ||
1161
+
1162
+ // Firefox Mobile (12 Beta) - Tested on Android 2.3 device
1163
+ ( $this->is('Firefox') && $this->version('Firefox', self::VERSION_TYPE_FLOAT)>=12 ) ||
1164
+
1165
+ // Chrome for Android - Tested on Android 4.0, 4.1 device
1166
+ ( $this->is('Chrome') && $this->is('AndroidOS') && $this->version('Android', self::VERSION_TYPE_FLOAT)>=4.0 ) ||
1167
+
1168
+ // Skyfire 4.1 - Tested on Android 2.3 device
1169
+ ( $this->is('Skyfire') && $this->version('Skyfire', self::VERSION_TYPE_FLOAT)>=4.1 && $this->is('AndroidOS') && $this->version('Android', self::VERSION_TYPE_FLOAT)>=2.3 ) ||
1170
+
1171
+ // Opera Mobile 11.5-12: Tested on Android 2.3
1172
+ ( $this->is('Opera') && $this->version('Opera Mobi', self::VERSION_TYPE_FLOAT)>11 && $this->is('AndroidOS') ) ||
1173
+
1174
+ // Meego 1.2 - Tested on Nokia 950 and N9
1175
+ $this->is('MeeGoOS') ||
1176
+
1177
+ // Tizen (pre-release) - Tested on early hardware
1178
+ $this->is('Tizen') ||
1179
+
1180
+ // Samsung Bada 2.0 - Tested on a Samsung Wave 3, Dolphin browser
1181
+ // @todo: more tests here!
1182
+ $this->is('Dolfin') && $this->version('Bada', self::VERSION_TYPE_FLOAT)>=2.0 ||
1183
+
1184
+ // UC Browser - Tested on Android 2.3 device
1185
+ ( ($this->is('UC Browser') || $this->is('Dolfin')) && $this->version('Android', self::VERSION_TYPE_FLOAT)>=2.3 ) ||
1186
+
1187
+ // Kindle 3 and Fire - Tested on the built-in WebKit browser for each
1188
+ ( $this->match('Kindle Fire') ||
1189
+ $this->is('Kindle') && $this->version('Kindle', self::VERSION_TYPE_FLOAT)>=3.0 ) ||
1190
+
1191
+ // Nook Color 1.4.1 - Tested on original Nook Color, not Nook Tablet
1192
+ $this->is('AndroidOS') && $this->is('NookTablet') ||
1193
+
1194
+ // Chrome Desktop 11-21 - Tested on OS X 10.7 and Windows 7
1195
+ $this->version('Chrome', self::VERSION_TYPE_FLOAT)>=11 && !$isMobile ||
1196
+
1197
+ // Safari Desktop 4-5 - Tested on OS X 10.7 and Windows 7
1198
+ $this->version('Safari', self::VERSION_TYPE_FLOAT)>=5.0 && !$isMobile ||
1199
+
1200
+ // Firefox Desktop 4-13 - Tested on OS X 10.7 and Windows 7
1201
+ $this->version('Firefox', self::VERSION_TYPE_FLOAT)>=4.0 && !$isMobile ||
1202
+
1203
+ // Internet Explorer 7-9 - Tested on Windows XP, Vista and 7
1204
+ $this->version('MSIE', self::VERSION_TYPE_FLOAT)>=7.0 && !$isMobile ||
1205
+
1206
+ // Opera Desktop 10-12 - Tested on OS X 10.7 and Windows 7
1207
+ // @reference: http://my.opera.com/community/openweb/idopera/
1208
+ $this->version('Opera', self::VERSION_TYPE_FLOAT)>=10 && !$isMobile
1209
+
1210
+ ){
1211
+ return self::MOBILE_GRADE_A;
1212
+ }
1213
+
1214
+ if (
1215
+ $this->isIOS() && $this->version('iPad', self::VERSION_TYPE_FLOAT)<4.3 ||
1216
+ $this->isIOS() && $this->version('iPhone', self::VERSION_TYPE_FLOAT)<3.1 ||
1217
+ $this->isIOS() && $this->version('iPod', self::VERSION_TYPE_FLOAT)<3.1 ||
1218
+
1219
+ // Blackberry 5.0: Tested on the Storm 2 9550, Bold 9770
1220
+ $this->is('Blackberry') && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT)>=5 && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT)<6 ||
1221
+
1222
+ //Opera Mini (5.0-6.5) - Tested on iOS 3.2/4.3 and Android 2.3
1223
+ ( $this->version('Opera Mini', self::VERSION_TYPE_FLOAT)>=5.0 && $this->version('Opera Mini', self::VERSION_TYPE_FLOAT)<=6.5 &&
1224
+ ($this->version('Android', self::VERSION_TYPE_FLOAT)>=2.3 || $this->is('iOS')) ) ||
1225
+
1226
+ // Nokia Symbian^3 - Tested on Nokia N8 (Symbian^3), C7 (Symbian^3), also works on N97 (Symbian^1)
1227
+ $this->match('NokiaN8|NokiaC7|N97.*Series60|Symbian/3') ||
1228
+
1229
+ // @todo: report this (tested on Nokia N71)
1230
+ $this->version('Opera Mobi', self::VERSION_TYPE_FLOAT)>=11 && $this->is('SymbianOS')
1231
+ ){
1232
+ return self::MOBILE_GRADE_B;
1233
+ }
1234
+
1235
+ if (
1236
+ // Blackberry 4.x - Tested on the Curve 8330
1237
+ $this->version('BlackBerry', self::VERSION_TYPE_FLOAT)<5.0 ||
1238
+ // Windows Mobile - Tested on the HTC Leo (WinMo 5.2)
1239
+ $this->match('MSIEMobile|Windows CE.*Mobile') || $this->version('Windows Mobile', self::VERSION_TYPE_FLOAT)<=5.2
1240
+
1241
+ ){
1242
+ return self::MOBILE_GRADE_C;
1243
+ }
1244
+
1245
+ //All older smartphone platforms and featurephones - Any device that doesn't support media queries
1246
+ //will receive the basic, C grade experience.
1247
+ return self::MOBILE_GRADE_C;
1248
+ }
1249
+ }
1250
+ endif;
assets/helper/class-eds-tinymce.php ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @description: Class to handle TinyMCE related actions
4
+ */
5
+
6
+ if ( !class_exists( 'EDS_TinyMCE' ) ):
7
+
8
+ class EDS_TinyMCE {
9
+
10
+ function add_tinymce_plugin( $plugin_array ){
11
+
12
+ $plugin_array['edsanimate'] = plugins_url( '/assets/js/edsanimate.tinymce.js', EDS_Animate::$abs_file );
13
+ return $plugin_array;
14
+
15
+ }
16
+
17
+ function register_edsanimate_button( $buttons ){
18
+
19
+ array_push( $buttons, "|", "edsanimate" );
20
+ return $buttons;
21
+
22
+ }
23
+
24
+ function refresh_mce( $ver ) {
25
+
26
+ $ver += 3;
27
+ return $ver;
28
+ }
29
+
30
+ function add_edsanimate_button() {
31
+ if ( !current_user_can('edit_posts') && !current_user_can('edit_pages') )
32
+ return;
33
+
34
+ if ( get_user_option('rich_editing') == 'true') {
35
+ add_filter('mce_external_plugins', array( $this, 'add_tinymce_plugin' ) );
36
+ add_filter('mce_buttons', array( $this, 'register_edsanimate_button' ) );
37
+ }
38
+ }
39
+
40
+ function get_popup(){
41
+
42
+ include_once dirname( EDS_Animate::$abs_file ).'/assets/helper/edsanimate-tinymce-popup.php';
43
+
44
+ wp_die();
45
+ }
46
+
47
+ }
48
+
49
+
50
+ endif;
assets/helper/eds_tinymce_popup.php DELETED
@@ -1,327 +0,0 @@
1
- <html>
2
- <head>
3
- <link href='//fonts.googleapis.com/css?family=Roboto:400,100,400italic,700italic,700' rel='stylesheet' type='text/css'>
4
- <link rel="stylesheet" href="../css/animate.css" />
5
- <link rel="stylesheet" href="../css/style.css" />
6
- <script src="../js/jquery-1.11.1.min.js"></script>
7
- <script src="../js/bootstrap-switch.js"></script>
8
- <script language="javascript" type="text/javascript" src="../../../../../wp-includes/js/tinymce/tiny_mce_popup.js"></script>
9
- </head>
10
- <body onload= "tinyMCEPopup.executeOnLoad('init();');" >
11
- <header class="site__header island">
12
- <div class="wrap">
13
- <span id="animationSandbox" style="display: block;"><h1 class="site__title mega animateit-icon"> </h1></span>
14
- <span class="beta subhead">Select your animation style:</span>
15
- </div>
16
- </header>
17
- <main class="site__content island" role="content">
18
- <div class="wrap">
19
- <form name = "edsanimate_form" id = "edsanimate_form">
20
- <table width="600" cellspacing="15" cellpadding="15">
21
- <tr>
22
- <td>Animation Style: </td>
23
- <td>
24
- <select id="eds_style" name= "eds_style" class="input input--dropdown js--animations">
25
- <optgroup label="Attention Seekers">
26
- <option value="bounce">bounce</option>
27
- <option value="flash">flash</option>
28
- <option value="pulse">pulse</option>
29
- <option value="rubberBand">rubberBand</option>
30
- <option value="shake">shake</option>
31
- <option value="swing">swing</option>
32
- <option value="tada">tada</option>
33
- <option value="wobble">wobble</option>
34
- </optgroup>
35
-
36
- <optgroup label="Bouncing Entrances">
37
- <option value="bounceIn">bounceIn</option>
38
- <option value="bounceInDown">bounceInDown</option>
39
- <option value="bounceInLeft">bounceInLeft</option>
40
- <option value="bounceInRight">bounceInRight</option>
41
- <option value="bounceInUp">bounceInUp</option>
42
- </optgroup>
43
-
44
- <optgroup label="Bouncing Exits">
45
- <option value="bounceOut">bounceOut</option>
46
- <option value="bounceOutDown">bounceOutDown</option>
47
- <option value="bounceOutLeft">bounceOutLeft</option>
48
- <option value="bounceOutRight">bounceOutRight</option>
49
- <option value="bounceOutUp">bounceOutUp</option>
50
- </optgroup>
51
-
52
- <optgroup label="Fading Entrances">
53
- <option value="fadeIn">fadeIn</option>
54
- <option value="fadeInDown">fadeInDown</option>
55
- <option value="fadeInDownBig">fadeInDownBig</option>
56
- <option value="fadeInLeft">fadeInLeft</option>
57
- <option value="fadeInLeftBig">fadeInLeftBig</option>
58
- <option value="fadeInRight">fadeInRight</option>
59
- <option value="fadeInRightBig">fadeInRightBig</option>
60
- <option value="fadeInUp">fadeInUp</option>
61
- <option value="fadeInUpBig">fadeInUpBig</option>
62
- </optgroup>
63
-
64
- <optgroup label="Fading Exits">
65
- <option value="fadeOut">fadeOut</option>
66
- <option value="fadeOutDown">fadeOutDown</option>
67
- <option value="fadeOutDownBig">fadeOutDownBig</option>
68
- <option value="fadeOutLeft">fadeOutLeft</option>
69
- <option value="fadeOutLeftBig">fadeOutLeftBig</option>
70
- <option value="fadeOutRight">fadeOutRight</option>
71
- <option value="fadeOutRightBig">fadeOutRightBig</option>
72
- <option value="fadeOutUp">fadeOutUp</option>
73
- <option value="fadeOutUpBig">fadeOutUpBig</option>
74
- </optgroup>
75
-
76
- <optgroup label="Flippers">
77
- <option value="flip">flip</option>
78
- <option value="flipInX">flipInX</option>
79
- <option value="flipInY">flipInY</option>
80
- <option value="flipOutX">flipOutX</option>
81
- <option value="flipOutY">flipOutY</option>
82
- </optgroup>
83
-
84
- <optgroup label="Lightspeed">
85
- <option value="lightSpeedIn">lightSpeedIn</option>
86
- <option value="lightSpeedOut">lightSpeedOut</option>
87
- </optgroup>
88
-
89
- <optgroup label="Rotating Entrances">
90
- <option value="rotateIn">rotateIn</option>
91
- <option value="rotateInDownLeft">rotateInDownLeft</option>
92
- <option value="rotateInDownRight">rotateInDownRight</option>
93
- <option value="rotateInUpLeft">rotateInUpLeft</option>
94
- <option value="rotateInUpRight">rotateInUpRight</option>
95
- </optgroup>
96
-
97
- <optgroup label="Rotating Exits">
98
- <option value="rotateOut">rotateOut</option>
99
- <option value="rotateOutDownLeft">rotateOutDownLeft</option>
100
- <option value="rotateOutDownRight">rotateOutDownRight</option>
101
- <option value="rotateOutUpLeft">rotateOutUpLeft</option>
102
- <option value="rotateOutUpRight">rotateOutUpRight</option>
103
- </optgroup>
104
-
105
- <optgroup label="Specials">
106
- <option value="hinge">hinge</option>
107
- <option value="rollIn">rollIn</option>
108
- <option value="rollOut">rollOut</option>
109
- </optgroup>
110
-
111
- <optgroup label="Zoom Entrances">
112
- <option value="zoomIn">zoomIn</option>
113
- <option value="zoomInDown">zoomInDown</option>
114
- <option value="zoomInLeft">zoomInLeft</option>
115
- <option value="zoomInRight">zoomInRight</option>
116
- <option value="zoomInUp">zoomInUp</option>
117
- </optgroup>
118
-
119
- <optgroup label="Zoom Exits">
120
- <option value="zoomOut">zoomOut</option>
121
- <option value="zoomOutDown">zoomOutDown</option>
122
- <option value="zoomOutLeft">zoomOutLeft</option>
123
- <option value="zoomOutRight">zoomOutRight</option>
124
- <option value="zoomOutUp">zoomOutUp</option>
125
- </optgroup>
126
- </select>
127
-
128
- </td>
129
- <td width="150">
130
- <button class="butt js--triggerAnimation button-animate-it">Animate it</button>
131
- </td>
132
- </tr>
133
- <tr>
134
- <td>Delay (in seconds): </td>
135
- <td colspan="2">
136
- <select id="eds_delay" name="eds_delay" class = "input input--dropdown">
137
- <option value="">None</option>
138
- <option value="1">0.5 </option>
139
- <option value="2">1.0 </option>
140
- <option value="3">1.5 </option>
141
- <option value="4">2.0 </option>
142
- <option value="5">2.5 </option>
143
- <option value="6">3.0 </option>
144
- <option value="7">3.5 </option>
145
- <option value="8">4.0 </option>
146
- <option value="9">4.5 </option>
147
- <option value="10">5.0 </option>
148
- <option value="11">5.5 </option>
149
- <option value="12">6.0 </option>
150
- </select>
151
- </td>
152
- </tr>
153
- <tr>
154
- <td>Duration (in seconds): </td>
155
- <td colspan="2">
156
- <select id="eds_duration" name="eds_duration" class = "input input--dropdown">
157
- <option value="">None</option>
158
- <option value="1">0.5 </option>
159
- <option value="2">1.0 </option>
160
- <option value="3">1.5 </option>
161
- <option value="4">2.0 </option>
162
- <option value="5">2.5 </option>
163
- <option value="6">3.0 </option>
164
- <option value="7">3.5 </option>
165
- <option value="8">4.0 </option>
166
- <option value="9">4.5 </option>
167
- <option value="10">5.0 </option>
168
- <option value="11">5.5 </option>
169
- <option value="12">6.0 </option>
170
- <option value="13">6.5 </option>
171
- <option value="14">7.0 </option>
172
- <option value="15">7.5 </option>
173
- <option value="16">8.0 </option>
174
- <option value="17">8.5 </option>
175
- <option value="18">9.0 </option>
176
- <option value="19">9.5 </option>
177
- <option value="20">10.0 </option>
178
- </select>
179
- </td>
180
- </tr>
181
- <tr>
182
- <td>Animate Infinitely: </td>
183
- <td colspan="2">
184
- <input type="checkbox" data-size="large" name="eds_infinite" data-on-text="Yes" data-off-text="No" />
185
- </td>
186
- </tr>
187
- <tr>
188
- <td style="text-align:left;">
189
- <br/>
190
- <b>Animate On:</b>
191
- </td>
192
- <td colspan="2">
193
- <br/>
194
- <i>(Please select any one option)</i>
195
- </td>
196
- </tr>
197
- <tr>
198
- <td>Click: </td>
199
- <td colspan="2">
200
- <input type="radio" data-size="large" name="eds_animate_on" value="click" data-on-text="Yes" data-off-text="No" data-radio-all-off="true" />
201
- </td>
202
- </tr>
203
- <tr>
204
- <td>Hover: </td>
205
- <td colspan="2">
206
- <input type="radio" data-size="large" name="eds_animate_on" value="hover" data-on-text="Yes" data-off-text="No" data-radio-all-off="true" />
207
- </td>
208
- </tr>
209
- <tr>
210
- <td>Scroll: </td>
211
- <td colspan="2">
212
- <input type="radio" data-size="large" name="eds_animate_on" value="scroll" data-on-text="Yes" data-off-text="No" data-radio-all-off="true" />
213
- </td>
214
- </tr>
215
-
216
- <tr class="scroll_offset_wrapper">
217
- <td>Scroll Offset (in %): </td>
218
- <td colspan="2">
219
- <input class="input" type="text" name="scroll_offset" id="scroll_offset" value="" />
220
- </td>
221
- </tr>
222
-
223
-
224
- <tr>
225
- <td colspan="3" style="text-align: center;">
226
- <button type="button" class="butt button-animate-it-green" onClick="insertEDSAnimate()">Insert</button>
227
- <button type="button" class="butt button-animate-it-cancel" onclick="tinyMCEPopup.close();">Cancel</button>
228
- </td>
229
- </tr>
230
- <tr>
231
- <td colspan="3" style="text-align: center;">
232
- Powered by <a href="http://www.eleopard.in/" target="_blank">eLEOPARD</a> and <a href="http://daneden.github.io/animate.css/" target="_blank">Animate.css</a>
233
- </td>
234
- </tr>
235
- </table>
236
- </form>
237
- </div>
238
- </main>
239
-
240
-
241
- <script>
242
- function testAnim(x) {
243
- $('#animationSandbox').removeClass().addClass(x + ' animated').one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function(){
244
- $(this).removeClass();
245
- });
246
- };
247
-
248
- $(document).ready(function(){
249
- $(".scroll_offset_wrapper").hide();
250
- $("input[name=eds_infinite]").bootstrapSwitch();
251
- $("input[name=eds_animate_on]").bootstrapSwitch();
252
-
253
- $('input[name="eds_animate_on"]').on('switchChange.bootstrapSwitch', function(event, state) {
254
- if($('input[name=eds_animate_on]:radio:checked').val()!= null &&
255
- $('input[name=eds_animate_on]:radio:checked').val() == 'scroll')
256
- $(".scroll_offset_wrapper").show(500);
257
- else
258
- $(".scroll_offset_wrapper").hide(500);
259
-
260
- });
261
-
262
-
263
- $('.js--triggerAnimation').click(function(e){
264
- e.preventDefault();
265
- var anim = $('.js--animations').val();
266
- testAnim(anim);
267
- });
268
-
269
- $('.js--animations').change(function(){
270
- var anim = $(this).val();
271
- testAnim(anim);
272
- });
273
- });
274
-
275
- </script>
276
-
277
- <script type= "text/javascript">
278
- function insertEDSAnimate()
279
- {
280
- var shortCode = "[edsanimate animation=\"";
281
- var hForm = document.edsanimate_form;
282
- var animate_on = "";
283
-
284
-
285
- var scroll_offset = hForm.scroll_offset.value;
286
-
287
- if($('input[name=eds_animate_on]:radio:checked').val() == 'scroll' &&
288
- scroll_offset != '' && isNaN(scroll_offset)){
289
- alert("Scroll Offset should be a number");
290
- return false;
291
- }
292
-
293
- shortCode += hForm.eds_style.value + "\" " ;
294
- if( hForm.eds_delay.value!="")
295
- shortCode += " delay=\"" + hForm.eds_delay.value + "\" ";
296
-
297
- if( hForm.eds_duration.value!="")
298
- shortCode += " duration=\"" + hForm.eds_duration.value + "\" ";
299
-
300
- shortCode += ((hForm.eds_infinite.checked)?' infinite_animation="yes" ':' infinite_animation="no" ');
301
-
302
- animate_on = $('input[name=eds_animate_on]:radio:checked').val();
303
-
304
-
305
- if(animate_on != null)
306
- shortCode += ' animate_on="'+animate_on+'" ';
307
- else
308
- shortCode += ' animate_on="" ';
309
-
310
-
311
- if(animate_on=='scroll' && scroll_offset!= '')
312
- shortCode += ' scroll_offset="'+scroll_offset+'" ';
313
-
314
-
315
- shortCode += ']';
316
-
317
- shortCode += "<h3>Lorem Ipsum is simply dummy text of the printing and typesetting industry.</h3><p>Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type</p>";
318
-
319
- shortCode += "[/edsanimate]";
320
-
321
- tinyMCEPopup.editor.execCommand('mceInsertContent', false, shortCode);
322
- tinyMCEPopup.close();
323
-
324
- }
325
- </script>
326
- </body>
327
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/helper/edsanimate-tinymce-popup.php ADDED
@@ -0,0 +1,749 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $scroll_offset = get_option ( 'eds_scroll_offset', '75' );
3
+ ?>
4
+ <!doctype html>
5
+ <html lang="en">
6
+ <head>
7
+ <meta charset="utf-8">
8
+ <title>Select your Animation Style:</title>
9
+ <meta name="viewport"
10
+ content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
11
+ <link rel="stylesheet"
12
+ href="<?php echo plugin_dir_url(__FILE__).'../css/animate-animo.css'; ?>" />
13
+ <link rel="stylesheet"
14
+ href="<?php echo plugin_dir_url(__FILE__).'../css/style.css'; ?>" />
15
+ </head>
16
+ <body
17
+ onload="document.body.style.display='';"
18
+ dir="ltr">
19
+ <div class="modal edsai-wrapper">
20
+ <div class="edaai-body">
21
+ <div class="preview-badge">
22
+ <span id="animationSandbox">
23
+ <h1 class="site__title mega animateit-icon"></h1>
24
+ </span>
25
+ </div>
26
+ <form name="edsanimate_form" id="edsanimate_form">
27
+ <div class="edsai-form-wrapper">
28
+ <div class="edsai-tabs">
29
+ <div class="edsai-tab edsai-tab-active">
30
+ <a class="edsai-tab-handler" href="#tab-entry">Entry</a>
31
+ </div>
32
+ <div class="edsai-tab">
33
+ <a class="edsai-tab-handler" href="#tab-exit">Exit</a>
34
+ </div>
35
+ <div class="edsai-tab">
36
+ <a class="edsai-tab-handler" href="#tab-options">Options</a>
37
+ </div>
38
+ </div>
39
+ <div id="tab-entry" class="edsai-tab-content edsai-entry"
40
+ style="display: block;">
41
+ <div class="edsai-form-control-wrapper">
42
+ <label for="entry-animation-type">Animation:</label>
43
+ <div class="edsai-form-control">
44
+ <select id="entry-animation-type" name="entry-animation-type"
45
+ class="full-size">
46
+ <option value="none">None</option>
47
+ <optgroup label="Bouncing Entrances">
48
+ <option value="bounceIn">bounceIn</option>
49
+ <option value="bounceInDown">bounceInDown</option>
50
+ <option value="bounceInLeft">bounceInLeft</option>
51
+ <option value="bounceInRight">bounceInRight</option>
52
+ <option value="bounceInUp">bounceInUp</option>
53
+ </optgroup>
54
+ <optgroup label="Fading Entrances">
55
+ <option value="fadeIn" selected>fadeIn</option>
56
+ <option value="fadeInDown">fadeInDown</option>
57
+ <option value="fadeInDownBig">fadeInDownBig</option>
58
+ <option value="fadeInLeft">fadeInLeft</option>
59
+ <option value="fadeInLeftBig">fadeInLeftBig</option>
60
+ <option value="fadeInRight">fadeInRight</option>
61
+ <option value="fadeInRightBig">fadeInRightBig</option>
62
+ <option value="fadeInUp">fadeInUp</option>
63
+ <option value="fadeInUpBig">fadeInUpBig</option>
64
+ </optgroup>
65
+ <optgroup label="Rotating Entrances">
66
+ <option value="rotateIn">rotateIn</option>
67
+ <option value="rotateInDownLeft">rotateInDownLeft</option>
68
+ <option value="rotateInDownRight">rotateInDownRight</option>
69
+ <option value="rotateInUpLeft">rotateInUpLeft</option>
70
+ <option value="rotateInUpRight">rotateInUpRight</option>
71
+ </optgroup>
72
+ <optgroup label="Sliding Entrances">
73
+ <option value="slideInUp">slideInUp</option>
74
+ <option value="slideInDown">slideInDown</option>
75
+ <option value="slideInLeft">slideInLeft</option>
76
+ <option value="slideInRight">slideInRight</option>
77
+ </optgroup>
78
+ <optgroup label="Zoom Entrances">
79
+ <option value="zoomIn">zoomIn</option>
80
+ <option value="zoomInDown">zoomInDown</option>
81
+ <option value="zoomInLeft">zoomInLeft</option>
82
+ <option value="zoomInRight">zoomInRight</option>
83
+ <option value="zoomInUp">zoomInUp</option>
84
+ </optgroup>
85
+ <optgroup label="Attention Seekers">
86
+ <option value="spinner">Spin</option>
87
+ <option value="bounce">bounce</option>
88
+ <option value="flash">flash</option>
89
+ <option value="pulse">pulse</option>
90
+ <option value="rubberBand">rubberBand</option>
91
+ <option value="shake">shake</option>
92
+ <option value="swing">swing</option>
93
+ <option value="tada">tada</option>
94
+ <option value="wobble">wobble</option>
95
+ <option value="jello">jello</option>
96
+ </optgroup>
97
+ <optgroup label="Flippers">
98
+ <option value="flip">flip</option>
99
+ <option value="flipInX">flipInX</option>
100
+ <option value="flipInY">flipInY</option>
101
+ </optgroup>
102
+ <optgroup label="Lightspeed">
103
+ <option value="lightSpeedIn">lightSpeedIn</option>
104
+ </optgroup>
105
+ <optgroup label="Specials">
106
+ <option value="hinge">hinge</option>
107
+ <option value="rollIn">rollIn</option>
108
+ </optgroup>
109
+ </select>
110
+ </div>
111
+ </div>
112
+ <div class="edsai-form-control-wrapper">
113
+ <label for="entry-delay">Delay (in seconds):</label>
114
+ <div class="edsai-form-control">
115
+ <select id="entry-delay" name="entry-delay"
116
+ class="half-size has-custom">
117
+ <option value="0">None</option>
118
+ <option value="0.5">0.5</option>
119
+ <option value="1">1.0</option>
120
+ <option value="1.5">1.5</option>
121
+ <option value="2">2.0</option>
122
+ <option value="2.5">2.5</option>
123
+ <option value="3">3.0</option>
124
+ <option value="3.5">3.5</option>
125
+ <option value="4">4.0</option>
126
+ <option value="4.5">4.5</option>
127
+ <option value="5">5.0</option>
128
+ <option value="5.5">5.5</option>
129
+ <option value="6">6.0</option>
130
+ <option value="custom">Custom</option>
131
+ </select> <input id="entry-delay-custom"
132
+ name="entry-delay-custom" class="half-size custom-field"
133
+ placeholder="Custom Delay e.g. 2.7" />
134
+ </div>
135
+ </div>
136
+ <div class="edsai-form-control-wrapper">
137
+ <label for="entry-duration">Duration (in seconds):</label>
138
+ <div class="edsai-form-control">
139
+ <select id="entry-duration" name="entry-duration"
140
+ class="half-size has-custom">
141
+ <option value="0.5">0.5</option>
142
+ <option value="1">1.0</option>
143
+ <option value="1.5">1.5</option>
144
+ <option value="2">2.0</option>
145
+ <option value="2.5">2.5</option>
146
+ <option value="3">3.0</option>
147
+ <option value="3.5">3.5</option>
148
+ <option value="4">4.0</option>
149
+ <option value="4.5">4.5</option>
150
+ <option value="5">5.0</option>
151
+ <option value="5.5">5.5</option>
152
+ <option value="6">6.0</option>
153
+ <option value="custom">Custom</option>
154
+ </select> <input id="entry-duration-custom"
155
+ name="entry-duration-custom" class="half-size custom-field"
156
+ placeholder="Custom Duration e.g. 3.2" />
157
+ </div>
158
+ </div>
159
+ <div class="edsai-form-control-wrapper">
160
+ <label for="entry-timing">Timing:</label>
161
+ <div class="edsai-form-control">
162
+ <select id="entry-timing" name="entry-timing"
163
+ class="half-size">
164
+ <option value="linear">linear</option>
165
+ <option value="ease">ease</option>
166
+ <option value="ease-in">easeIn</option>
167
+ <option value="ease-out">easeOut</option>
168
+ <option value="ease-in-out">easeInOut</option>
169
+ <option value="cubic-bezier(0.47, 0, 0.745, 0.715)">easeInSine</option>
170
+ <option value="cubic-bezier(0.39, 0.575, 0.565, 1)">easeOutSine</option>
171
+ <option value="cubic-bezier(0.445, 0.05, 0.55, 0.95)">easeInOutSine</option>
172
+ <option value="cubic-bezier(0.55, 0.085, 0.68, 0.53)">easeInQuad</option>
173
+ <option value="cubic-bezier(0.25, 0.46, 0.45, 0.94)">easeOutQuad</option>
174
+ <option value="cubic-bezier(0.455, 0.03, 0.515, 0.955)">easeInOutQuad</option>
175
+ <option value="cubic-bezier(0.55, 0.055, 0.675, 0.19)">easeInCubic</option>
176
+ <option value="cubic-bezier(0.215, 0.61, 0.355, 1)">easeOutCubic</option>
177
+ <option value="cubic-bezier(0.645, 0.045, 0.355, 1)">easeInOutCubic</option>
178
+ <option value="cubic-bezier(0.895, 0.03, 0.685, 0.22)">easeInQuart</option>
179
+ <option value="cubic-bezier(0.165, 0.84, 0.44, 1)">easeOutQuart</option>
180
+ <option value="cubic-bezier(0.77, 0, 0.175, 1)">easeInOutQuart</option>
181
+ <option value="cubic-bezier(0.755, 0.05, 0.855, 0.06)">easeInQuint</option>
182
+ <option value="cubic-bezier(0.23, 1, 0.32, 1)">easeOutQuint</option>
183
+ <option value="cubic-bezier(0.86, 0, 0.07, 1)">easeInOutQuint</option>
184
+ <option value="cubic-bezier(0.95, 0.05, 0.795, 0.035)">easeInExpo</option>
185
+ <option value="cubic-bezier(0.19, 1, 0.22, 1)">easeOutExpo</option>
186
+ <option value="cubic-bezier(1, 0, 0, 1)">easeInOutExpo</option>
187
+ <option value="cubic-bezier(0.6, 0.04, 0.98, 0.335)">easeInCirc</option>
188
+ <option value="cubic-bezier(0.075, 0.82, 0.165, 1)">easeOutCirc</option>
189
+ <option value="cubic-bezier(0.785, 0.135, 0.15, 0.86)">easeInOutCirc</option>
190
+ <option value="cubic-bezier(0.6, -0.28, 0.735, 0.045)">easeInBack</option>
191
+ <option value="cubic-bezier(0.175, 0.885, 0.32, 1.275)">easeOutBack</option>
192
+ <option value="cubic-bezier(0.68, -0.55, 0.265, 1.55)">easeInOutBack</option>
193
+ </select>
194
+ </div>
195
+ </div>
196
+ </div>
197
+ <div id="tab-exit" class="edsai-tab-content edsai-exit">
198
+ <div class="edsai-form-control-wrapper">
199
+ <label for="exit-animation-type">Animation:</label>
200
+ <div class="edsai-form-control">
201
+ <select id="exit-animation-type" name="exit-animation-type"
202
+ class="full-size">
203
+ <option value="none">None</option>
204
+ <optgroup label="Bouncing Exits">
205
+ <option value="bounceOut">bounceOut</option>
206
+ <option value="bounceOutDown">bounceOutDown</option>
207
+ <option value="bounceOutLeft">bounceOutLeft</option>
208
+ <option value="bounceOutRight">bounceOutRight</option>
209
+ <option value="bounceOutUp">bounceOutUp</option>
210
+ </optgroup>
211
+ <optgroup label="Fading Exits">
212
+ <option value="fadeOut">fadeOut</option>
213
+ <option value="fadeOutDown">fadeOutDown</option>
214
+ <option value="fadeOutDownBig">fadeOutDownBig</option>
215
+ <option value="fadeOutLeft">fadeOutLeft</option>
216
+ <option value="fadeOutLeftBig">fadeOutLeftBig</option>
217
+ <option value="fadeOutRight">fadeOutRight</option>
218
+ <option value="fadeOutRightBig">fadeOutRightBig</option>
219
+ <option value="fadeOutUp">fadeOutUp</option>
220
+ <option value="fadeOutUpBig">fadeOutUpBig</option>
221
+ </optgroup>
222
+ <optgroup label="Rotating Exits">
223
+ <option value="rotateOut">rotateOut</option>
224
+ <option value="rotateOutDownLeft">rotateOutDownLeft</option>
225
+ <option value="rotateOutDownRight">rotateOutDownRight</option>
226
+ <option value="rotateOutUpLeft">rotateOutUpLeft</option>
227
+ <option value="rotateOutUpRight">rotateOutUpRight</option>
228
+ </optgroup>
229
+ <optgroup label="Sliding Exits">
230
+ <option value="slideOutUp">slideOutUp</option>
231
+ <option value="slideOutDown">slideOutDown</option>
232
+ <option value="slideOutLeft">slideOutLeft</option>
233
+ <option value="slideOutRight">slideOutRight</option>
234
+ </optgroup>
235
+ <optgroup label="Zoom Exits">
236
+ <option value="zoomOut">zoomOut</option>
237
+ <option value="zoomOutDown">zoomOutDown</option>
238
+ <option value="zoomOutLeft">zoomOutLeft</option>
239
+ <option value="zoomOutRight">zoomOutRight</option>
240
+ <option value="zoomOutUp">zoomOutUp</option>
241
+ </optgroup>
242
+ <optgroup label="Attention Seekers">
243
+ <option value="spinner">Spin</option>
244
+ <option value="bounce">bounce</option>
245
+ <option value="flash">flash</option>
246
+ <option value="pulse">pulse</option>
247
+ <option value="rubberBand">rubberBand</option>
248
+ <option value="shake">shake</option>
249
+ <option value="swing">swing</option>
250
+ <option value="tada">tada</option>
251
+ <option value="wobble">wobble</option>
252
+ <option value="jello">jello</option>
253
+ </optgroup>
254
+ <optgroup label="Flippers">
255
+ <option value="flip">flip</option>
256
+ <option value="flipOutX">flipOutX</option>
257
+ <option value="flipOutY">flipOutY</option>
258
+ </optgroup>
259
+ <optgroup label="Lightspeed">
260
+ <option value="lightSpeedOut">lightSpeedOut</option>
261
+ </optgroup>
262
+ <optgroup label="Specials">
263
+ <option value="hinge">hinge</option>
264
+ <option value="rollOut">rollOut</option>
265
+ </optgroup>
266
+ </select>
267
+ </div>
268
+ </div>
269
+ <div class="edsai-form-control-wrapper">
270
+ <label for="exit-delay">Delay (in seconds):</label>
271
+ <div class="edsai-form-control">
272
+ <select id="exit-delay" name="exit-delay"
273
+ class="half-size has-custom">
274
+ <option value="0">None</option>
275
+ <option value="0.5">0.5</option>
276
+ <option value="1">1.0</option>
277
+ <option value="1.5">1.5</option>
278
+ <option value="2">2.0</option>
279
+ <option value="2.5">2.5</option>
280
+ <option value="3">3.0</option>
281
+ <option value="3.5">3.5</option>
282
+ <option value="4">4.0</option>
283
+ <option value="4.5">4.5</option>
284
+ <option value="5">5.0</option>
285
+ <option value="5.5">5.5</option>
286
+ <option value="6">6.0</option>
287
+ <option value="custom">Custom</option>
288
+ </select> <input id="exit-delay-custom" name="exit-delay-custom"
289
+ class="half-size custom-field"
290
+ placeholder="Custom Delay e.g. 2.7" />
291
+ </div>
292
+ </div>
293
+ <div class="edsai-form-control-wrapper">
294
+ <label for="exit-duration">Duration (in seconds):</label>
295
+ <div class="edsai-form-control">
296
+ <select id="exit-duration" name="exit-duration"
297
+ class="half-size has-custom">
298
+ <option value="0.5">0.5</option>
299
+ <option value="1">1.0</option>
300
+ <option value="1.5">1.5</option>
301
+ <option value="2">2.0</option>
302
+ <option value="2.5">2.5</option>
303
+ <option value="3">3.0</option>
304
+ <option value="3.5">3.5</option>
305
+ <option value="4">4.0</option>
306
+ <option value="4.5">4.5</option>
307
+ <option value="5">5.0</option>
308
+ <option value="5.5">5.5</option>
309
+ <option value="6">6.0</option>
310
+ <option value="custom">Custom</option>
311
+ </select> <input id="exit-duration-custom"
312
+ name="exit-duration-custom" class="half-size custom-field"
313
+ placeholder="Custom Duration e.g. 3.2" />
314
+ </div>
315
+ </div>
316
+ <div class="edsai-form-control-wrapper">
317
+ <label for="exit-timing">Timing:</label>
318
+ <div class="edsai-form-control">
319
+ <select id="exit-timing" name="exit-timing"
320
+ class="half-size">
321
+ <option value="linear">linear</option>
322
+ <option value="ease">ease</option>
323
+ <option value="ease-in">easeIn</option>
324
+ <option value="ease-out">easeOut</option>
325
+ <option value="ease-in-out">easeInOut</option>
326
+ <option value="cubic-bezier(0.47, 0, 0.745, 0.715)">easeInSine</option>
327
+ <option value="cubic-bezier(0.39, 0.575, 0.565, 1)">easeOutSine</option>
328
+ <option value="cubic-bezier(0.445, 0.05, 0.55, 0.95)">easeInOutSine</option>
329
+ <option value="cubic-bezier(0.55, 0.085, 0.68, 0.53)">easeInQuad</option>
330
+ <option value="cubic-bezier(0.25, 0.46, 0.45, 0.94)">easeOutQuad</option>
331
+ <option value="cubic-bezier(0.455, 0.03, 0.515, 0.955)">easeInOutQuad</option>
332
+ <option value="cubic-bezier(0.55, 0.055, 0.675, 0.19)">easeInCubic</option>
333
+ <option value="cubic-bezier(0.215, 0.61, 0.355, 1)">easeOutCubic</option>
334
+ <option value="cubic-bezier(0.645, 0.045, 0.355, 1)">easeInOutCubic</option>
335
+ <option value="cubic-bezier(0.895, 0.03, 0.685, 0.22)">easeInQuart</option>
336
+ <option value="cubic-bezier(0.165, 0.84, 0.44, 1)">easeOutQuart</option>
337
+ <option value="cubic-bezier(0.77, 0, 0.175, 1)">easeInOutQuart</option>
338
+ <option value="cubic-bezier(0.755, 0.05, 0.855, 0.06)">easeInQuint</option>
339
+ <option value="cubic-bezier(0.23, 1, 0.32, 1)">easeOutQuint</option>
340
+ <option value="cubic-bezier(0.86, 0, 0.07, 1)">easeInOutQuint</option>
341
+ <option value="cubic-bezier(0.95, 0.05, 0.795, 0.035)">easeInExpo</option>
342
+ <option value="cubic-bezier(0.19, 1, 0.22, 1)">easeOutExpo</option>
343
+ <option value="cubic-bezier(1, 0, 0, 1)">easeInOutExpo</option>
344
+ <option value="cubic-bezier(0.6, 0.04, 0.98, 0.335)">easeInCirc</option>
345
+ <option value="cubic-bezier(0.075, 0.82, 0.165, 1)">easeOutCirc</option>
346
+ <option value="cubic-bezier(0.785, 0.135, 0.15, 0.86)">easeInOutCirc</option>
347
+ <option value="cubic-bezier(0.6, -0.28, 0.735, 0.045)">easeInBack</option>
348
+ <option value="cubic-bezier(0.175, 0.885, 0.32, 1.275)">easeOutBack</option>
349
+ <option value="cubic-bezier(0.68, -0.55, 0.265, 1.55)">easeInOutBack</option>
350
+ </select>
351
+ </div>
352
+ </div>
353
+ </div>
354
+ <div id="tab-options" class="edsai-tab-content edsai-options">
355
+ <div class="edsai-form-control-wrapper">
356
+ <label for="options-animation-repeat">Animation Repeat:</label>
357
+ <div class="edsai-form-control">
358
+ <select id="options-animation-repeat"
359
+ name="options-animation-repeat" class="half-size has-custom">
360
+ <option value="1">Once</option>
361
+ <option value="2">Twice</option>
362
+ <option value="3">Thrice</option>
363
+ <option value="infinite">Infinite</option>
364
+ <option value="custom">Custom</option>
365
+ </select> <input id="options-animation-repeat-custom"
366
+ name="options-animation-repeat-custom"
367
+ class="half-size custom-field" placeholder="e.g. 4" />
368
+ </div>
369
+ </div>
370
+ <div class="edsai-form-control-wrapper">
371
+ <label for="options-keep">Keep Element Final State:</label>
372
+ <div class="edsai-form-control">
373
+ <input id="keep-yes" type="radio" name="options-keep"
374
+ value="yes" checked> <label for="keep-yes">Yes</label> <input
375
+ id="keep-no" type="radio" name="options-keep" value="no"> <label
376
+ for="keep-no">No</label>
377
+ </div>
378
+ </div>
379
+ <div class="edsai-form-control-wrapper">
380
+ <label for="options-custom-css-class">Custom CSS Class:</label>
381
+ <div class="edsai-form-control">
382
+ <input id="options-custom-css-class"
383
+ name="options-custom-css-class" class="half-size"
384
+ placeholder="" value="" />
385
+ </div>
386
+ </div>
387
+ <div class="edsai-form-control-wrapper">
388
+ <label for="options-animate-on">Animate On:</label>
389
+ <div class="edsai-form-control">
390
+ <input type="radio" id="on-load" name="options-animate-on"
391
+ value="load" checked> <label for="on-load">Load</label> <input
392
+ type="radio" id="on-click" name="options-animate-on"
393
+ value="click"> <label for="on-click">Click</label> <input
394
+ type="radio" id="on-hover" name="options-animate-on"
395
+ value="hover"> <label for="on-hover">Hover</label> <input
396
+ type="radio" id="on-scroll" name="options-animate-on"
397
+ value="scroll"> <label for="on-scroll">Scroll</label>
398
+ </div>
399
+ </div>
400
+ <div
401
+ class="edsai-form-control-wrapper options-scroll-settings-wrapper">
402
+ <label for="options-scroll-offset">Scroll Offset (in %):</label>
403
+ <div class="edsai-form-control">
404
+ <input id="options-scroll-offset" name="options-scroll-offset"
405
+ class="half-size" placeholder="Custom Offset % e.g. 20.7"
406
+ value="<?php echo $scroll_offset; ?>" />
407
+ </div>
408
+ </div>
409
+ </div>
410
+ </div>
411
+ <div class="edsai-footer-wrapper">
412
+ <div class="edsai-footer">
413
+ <div class="edsai-footer-left">
414
+ Powered by <a href="http://www.eleopard.in" target="_blank">eLEOPARD</a>
415
+ | <a
416
+ href="https://wordpress.org/support/view/plugin-reviews/animate-it"
417
+ target="_blank">Review Plugin</a>
418
+ | <a
419
+ href="http://www.downloads.eleopard.in/animate-it-documentation-wordpress"
420
+ target="_blank">Documentation</a>
421
+ </div>
422
+ <div class="edsai-footer-right">
423
+ <button type="button" class="btn-stop-infinite-animation"
424
+ style="display: none;">Stop Animation</button>
425
+ <button type="button" class="edsai-animate-it btn-animate-it">Animate
426
+ It!</button>
427
+ <button type="button" class="edsai-insert btn-insert">Insert</button>
428
+ </div>
429
+ </div>
430
+ </div>
431
+ </form>
432
+ </div>
433
+ </div>
434
+ <script type="text/javascript">
435
+ var args = top.tinymce.activeEditor.windowManager.getParams();
436
+ var parentEditor = args['editor'];
437
+ var url = args['plugin_url'];
438
+ var jQuery = args['jquery'];
439
+ </script>
440
+ <script type="text/javascript"
441
+ src="<?php echo plugin_dir_url(__FILE__).'../js/animo.min.js'; ?>"></script>
442
+ <script type="text/javascript">
443
+ ( function( $ ) {
444
+
445
+ $.ready( function() {
446
+
447
+ var animate_infinite = false;
448
+ var total_repeat_count = 1;
449
+ var element_animating = false;
450
+
451
+ $.find('.custom-field').hide();
452
+ $.find('.options-scroll-settings-wrapper').hide();
453
+
454
+ $.find('.edsai-tab-handler').on( 'click', function( event ) {
455
+
456
+ event.preventDefault();
457
+
458
+ var btn = $.find( this );
459
+
460
+ $.find('.edsai-tab-content').css('display','none');
461
+ $.find('.edsai-tab').removeClass('edsai-tab-active');
462
+
463
+ btn.parent().addClass('edsai-tab-active');
464
+ $.find( btn.attr('href') ).css('display','block');
465
+
466
+ } );
467
+
468
+ $.find('.has-custom').on( 'change', function( event ) {
469
+
470
+ var select = $.find(this);
471
+
472
+ if( 'custom' == select.val() ) {
473
+ select.siblings('.custom-field').show();
474
+ } else {
475
+ select.siblings('.custom-field').hide();
476
+ }
477
+
478
+ } );
479
+
480
+ $.find('input[name="options-animate-on"]').on( 'change', function( event ) {
481
+
482
+ var value = $.find('input[name="options-animate-on"]:checked').val();
483
+
484
+ if( 'scroll' == value ) {
485
+ $.find('.options-scroll-settings-wrapper').show();
486
+ } else {
487
+ $.find('.options-scroll-settings-wrapper').hide()
488
+ $.find('input[name="options-scroll-offset"]').val('<?php echo $scroll_offset; ?>');
489
+ }
490
+
491
+ } );
492
+
493
+ $.find('#entry-animation-type').on( 'change', function( event ) {
494
+ var opt = $.find(this).val();
495
+ $.find('#exit-animation-type option').attr("disabled", false);
496
+ $.find('#exit-animation-type option[value="'+opt+'"]').attr("disabled", true);
497
+
498
+ } );
499
+
500
+ $.find('#exit-animation-type').on( 'change', function( event ) {
501
+ var opt = $.find(this).val();
502
+ $.find('#entry-animation-type option').attr("disabled", false);
503
+ $.find('#entry-animation-type option[value="'+opt+'"]').attr("disabled", true);
504
+
505
+ } );
506
+
507
+
508
+ function get_settings() {
509
+
510
+ var settings = {
511
+ 'entry_animation_type': '',
512
+ 'entry_delay': '',
513
+ 'entry_duration': '',
514
+ 'entry_timing': '',
515
+ 'exit_animation_type': '',
516
+ 'exit_delay': '',
517
+ 'exit_duration': '',
518
+ 'exit_timing': '',
519
+ 'animation_repeat': '',
520
+ 'keep':'',
521
+ 'animate_on': '',
522
+ 'scroll_offset': '',
523
+ 'custom_css_class': ''
524
+ };
525
+
526
+ //reading entry animation settings
527
+ var entry_animation_type = $.find('#entry-animation-type').val();
528
+ if( 'none' != entry_animation_type ){
529
+ settings.entry_animation_type = entry_animation_type;
530
+
531
+ var entry_delay = $.find('#entry-delay').val();
532
+ if( 'custom' == entry_delay ) {
533
+ var entry_delay = $.find('#entry-delay-custom').val();
534
+ if( ! jQuery.isNumeric( entry_delay ) ) {
535
+ entry_delay = 0;
536
+ }
537
+ }
538
+ settings.entry_delay = entry_delay;
539
+
540
+ var entry_duration = $.find('#entry-duration').val();
541
+ if( 'custom' == entry_duration ) {
542
+ var entry_duration = $.find('#entry-duration-custom').val();
543
+ if( ! jQuery.isNumeric( entry_duration ) ) {
544
+ entry_duration = 0.5;
545
+ }
546
+ }
547
+ settings.entry_duration = entry_duration;
548
+ settings.entry_timing = $.find('#entry-timing').val();
549
+ }
550
+
551
+ //reading exit animation settings
552
+ var exit_animation_type = $.find('#exit-animation-type').val();
553
+ if( 'none' != exit_animation_type ){
554
+
555
+ settings.exit_animation_type = exit_animation_type;
556
+
557
+ var exit_delay = $.find('#exit-delay').val();
558
+ if( 'custom' == exit_delay ) {
559
+ var exit_delay = $.find('#exit-delay-custom').val();
560
+ if( ! jQuery.isNumeric( exit_delay ) ) {
561
+ exit_delay = 0;
562
+ }
563
+ }
564
+ settings.exit_delay = exit_delay;
565
+
566
+ var exit_duration = $.find('#exit-duration').val();
567
+ if( 'custom' == exit_duration ) {
568
+ var exit_duration = $.find('#exit-duration-custom').val();
569
+
570
+ if( ! jQuery.isNumeric( exit_duration ) ) {
571
+ exit_duration = 0.5;
572
+ }
573
+ }
574
+ settings.exit_duration = exit_duration;
575
+ settings.exit_timing = $.find('#exit-timing').val();
576
+ }
577
+
578
+ //reading other options
579
+ var animation_repeat = $.find('#options-animation-repeat').val();
580
+ if( 'custom' == animation_repeat ) {
581
+ var animation_repeat = $.find('#options-animation-repeat-custom').val();
582
+ if( ! jQuery.isNumeric( animation_repeat ) ) {
583
+ animation_repeat = 1;
584
+ }
585
+ }
586
+ settings.animation_repeat = animation_repeat;
587
+
588
+ var animate_on = $.find('input[name="options-animate-on"]:checked').val();
589
+ settings.animate_on = animate_on;
590
+
591
+ var scroll_offset = '';
592
+ if( 'scroll' == animate_on ) {
593
+ scroll_offset = $.find('#options-scroll-offset').val();
594
+ if( ! jQuery.isNumeric( scroll_offset ) ) {
595
+ scroll_offset = '<?php echo $scroll_offset; ?>';
596
+ }
597
+ }
598
+ settings.scroll_offset = scroll_offset;
599
+ settings.custom_css_class = $.find('#options-custom-css-class').val();
600
+
601
+ var keep_final_state = $.find('input[name="options-keep"]:checked').val();
602
+ if( "yes" == keep_final_state ) {
603
+ settings.keep = "yes";
604
+ } else {
605
+ settings.keep = "no";
606
+ }
607
+
608
+ return settings;
609
+
610
+ }
611
+
612
+ function reset_animation(){
613
+ element_animating = false;
614
+ animate_infinite = false;
615
+ total_repeat_count = 1;
616
+ $.find('.animateit-icon').animo("cleanse");
617
+ $.find('.btn-animate-it').show();
618
+ $.find('.btn-stop-infinite-animation').hide();
619
+ }
620
+
621
+
622
+ function eds_animate( animations, counter, iteration ) {
623
+
624
+ $.find('.animateit-icon').animo( animations[ counter ].animoSettings, function() {
625
+ counter++
626
+ if( counter < animations.length ) {
627
+ setTimeout( function(){ eds_animate( animations, counter, iteration ) }, Number(animations[counter].delay) * 1000);
628
+ } else {
629
+ iteration++;
630
+ if( true == animate_infinite || iteration < total_repeat_count) {
631
+ if(animations.length == 1) {
632
+ $.find('.animateit-icon').animo("cleanse");
633
+ }
634
+ setTimeout( function(){ eds_animate( animations, 0, iteration ) }, Number( animations[0].delay) * 1000);
635
+ } else {
636
+ reset_animation();
637
+ }
638
+ }
639
+
640
+ });
641
+
642
+ }
643
+
644
+ $.find('.btn-insert').on( 'click', function( event ) {
645
+
646
+ var settings = get_settings();
647
+
648
+ if( '' == settings.entry_animation_type
649
+ && '' == settings.exit_animation_type ) {
650
+ alert("Please select animation first.");
651
+ return '';
652
+ }
653
+
654
+
655
+ var editorContent = parentEditor.selection.getContent();
656
+
657
+ if( null == editorContent || "" == editorContent ) {
658
+ editorContent = ' <p>Please add your content in this area.</p> ';
659
+ }
660
+
661
+ var short_code = [ '[edsanimate_start',
662
+ ' entry_animation_type= "', settings.entry_animation_type, '"',
663
+ ' entry_delay= "', settings.entry_delay, '"',
664
+ ' entry_duration= "', settings.entry_duration, '"',
665
+ ' entry_timing= "', settings.entry_timing, '"',
666
+ ' exit_animation_type= "', settings.exit_animation_type, '"',
667
+ ' exit_delay= "', settings.exit_delay, '"',
668
+ ' exit_duration= "', settings.exit_duration, '"',
669
+ ' exit_timing= "', settings.exit_timing, '"',
670
+ ' animation_repeat= "', settings.animation_repeat, '"',
671
+ ' keep= "', settings.keep, '"',
672
+ ' animate_on= "', settings.animate_on, '"',
673
+ ' scroll_offset= "', settings.scroll_offset, '"',
674
+ ' custom_css_class= "', settings.custom_css_class, '"', ']',
675
+ editorContent,
676
+ '[edsanimate_end]' ]. join('');
677
+
678
+ parentEditor.execCommand('mceInsertContent', false, short_code);
679
+
680
+ parentEditor.windowManager.close();
681
+
682
+ } );
683
+
684
+ $.find('.btn-animate-it').on( 'click', function( event ) {
685
+
686
+ var animations = [];
687
+
688
+ var settings = get_settings();
689
+
690
+ var keep_value = false;
691
+
692
+ if("yes" == settings.keep ) {
693
+ keep_value = true;
694
+ }
695
+
696
+ if( '' != settings.entry_animation_type ) {
697
+
698
+ animations.push({
699
+ animoSettings: {
700
+ animation: settings.entry_animation_type,
701
+ duration: settings.entry_duration,
702
+ iterate: 1,
703
+ timing: settings.entry_timing,
704
+ keep: keep_value
705
+ },
706
+ delay: settings.entry_delay,
707
+ });
708
+
709
+ }
710
+
711
+ if( '' != settings.exit_animation_type ) {
712
+ animations.push({
713
+ animoSettings: {
714
+ animation: settings.exit_animation_type,
715
+ duration: settings.exit_duration,
716
+ iterate: 1,
717
+ timing: settings.exit_timing,
718
+ keep: keep_value
719
+ },
720
+ delay: settings.exit_delay
721
+ });
722
+ }
723
+
724
+ if( "infinite" == settings.animation_repeat ) {
725
+ animate_infinite = true;
726
+ } else {
727
+ animate_infinite = false;
728
+ total_repeat_count = settings.animation_repeat;
729
+ }
730
+
731
+ if( animations.length >= 1 ) {
732
+ $.find('.btn-animate-it').hide();
733
+ $.find('.btn-stop-infinite-animation').show();
734
+ setTimeout( function(){ eds_animate( animations, 0, 0 )}, Number( animations[0].delay ) * 1000);
735
+ }
736
+
737
+ } );
738
+
739
+ $.find('.btn-stop-infinite-animation').on( 'click', function( event ) {
740
+ reset_animation();
741
+ } );
742
+
743
+ } );
744
+
745
+ } )( jQuery( document ) );
746
+
747
+ </script>
748
+ </body>
749
+ </html>
assets/images/badge.png CHANGED
Binary file
assets/images/banner.jpg ADDED
Binary file
assets/images/edsanimate.png CHANGED
Binary file
assets/js/animo.min.js ADDED
@@ -0,0 +1 @@
 
1
+ (function($,window,document,undefined){function animo(element,options,callback,other_cb){var defaults={duration:1,animation:null,iterate:1,delay:0,timing:"linear",keep:false};this.prefixes=["","-moz-","-o-animation-","-webkit-"];this.element=$(element);this.bare=element;this.queue=[];this.listening=false;var cb=(typeof callback=="function"?callback:other_cb);switch(options){case"blur":defaults={amount:3,duration:0.5,focusAfter:null};this.options=$.extend(defaults,callback);this._blur(cb);break;case"focus":this._focus();break;case"rotate":defaults={degrees:15,duration:0.5};this.options=$.extend(defaults,callback);this._rotate(cb);break;case"cleanse":this.cleanse();break;default:this.options=$.extend(defaults,options);this.init(cb);break}}animo.prototype={init:function(callback){var $me=this;if(Object.prototype.toString.call($me.options.animation)==="[object Array]"){$.merge($me.queue,$me.options.animation)}else{$me.queue.push($me.options.animation)}$me.cleanse();$me.animate(callback)},animate:function(callback){this.element.addClass("animated");this.element.addClass(this.queue[0]);this.element.data("animo",this.queue[0]);var ai=this.prefixes.length;while(ai--){this.element.css(this.prefixes[ai]+"animation-duration",this.options.duration+"s");this.element.css(this.prefixes[ai]+"animation-delay",this.options.delay+"s");this.element.css(this.prefixes[ai]+"animation-iteration-count",this.options.iterate);this.element.css(this.prefixes[ai]+"animation-timing-function",this.options.timing)}var $me=this,_cb=callback;if($me.queue.length>1){_cb=null}this._end("AnimationEnd",function(){if($me.element.hasClass($me.queue[0])){if(!$me.options.keep){$me.cleanse()}$me.queue.shift();if($me.queue.length){$me.animate(callback)}}},_cb)},cleanse:function(){this.element.removeClass("animated");this.element.removeClass(this.queue[0]);this.element.removeClass(this.element.data("animo"));var ai=this.prefixes.length;while(ai--){this.element.css(this.prefixes[ai]+"animation-duration","");this.element.css(this.prefixes[ai]+"animation-delay","");this.element.css(this.prefixes[ai]+"animation-iteration-count","");this.element.css(this.prefixes[ai]+"animation-timing-function","");this.element.css(this.prefixes[ai]+"transition","");this.element.css(this.prefixes[ai]+"transform","");this.element.css(this.prefixes[ai]+"filter","")}},_blur:function(callback){if(this.element.is("img")){var svg_id="svg_"+(((1+Math.random())*16777216)|0).toString(16).substring(1);var filter_id="filter_"+(((1+Math.random())*16777216)|0).toString(16).substring(1);$("body").append('<svg version="1.1" xmlns="http://www.w3.org/2000/svg" id="'+svg_id+'" style="height:0;position:absolute;top:-1000px;"><filter id="'+filter_id+'"><feGaussianBlur stdDeviation="'+this.options.amount+'" /></filter></svg>');var ai=this.prefixes.length;while(ai--){this.element.css(this.prefixes[ai]+"filter","blur("+this.options.amount+"px)");this.element.css(this.prefixes[ai]+"transition",this.options.duration+"s all linear")}this.element.css("filter","url(#"+filter_id+")");this.element.data("svgid",svg_id)}else{var color=this.element.css("color");var ai=this.prefixes.length;while(ai--){this.element.css(this.prefixes[ai]+"transition","all "+this.options.duration+"s linear")}this.element.css("text-shadow","0 0 "+this.options.amount+"px "+color);this.element.css("color","transparent")}this._end("TransitionEnd",null,callback);var $me=this;if(this.options.focusAfter){var focus_wait=window.setTimeout(function(){$me._focus();focus_wait=window.clearTimeout(focus_wait)},(this.options.focusAfter*1000))}},_focus:function(){var ai=this.prefixes.length;if(this.element.is("img")){while(ai--){this.element.css(this.prefixes[ai]+"filter","");this.element.css(this.prefixes[ai]+"transition","")}var $svg=$("#"+this.element.data("svgid"));$svg.remove()}else{while(ai--){this.element.css(this.prefixes[ai]+"transition","")}this.element.css("text-shadow","");this.element.css("color","")}},_rotate:function(callback){var ai=this.prefixes.length;while(ai--){this.element.css(this.prefixes[ai]+"transition","all "+this.options.duration+"s linear");this.element.css(this.prefixes[ai]+"transform","rotate("+this.options.degrees+"deg)")}this._end("TransitionEnd",null,callback)},_end:function(type,todo,callback){var $me=this;var binding=type.toLowerCase()+" webkit"+type+" o"+type+" MS"+type;this.element.bind(binding,function(){$me.element.unbind(binding);if(typeof todo=="function"){todo()}if(typeof callback=="function"){callback($me)}})}};$.fn.animo=function(options,callback,other_cb){return this.each(function(){new animo(this,options,callback,other_cb)})}})(jQuery,window,document);
assets/js/bootstrap-switch.js DELETED
@@ -1,532 +0,0 @@
1
- /* ========================================================================
2
- * bootstrap-switch - v3.0.2
3
- * http://www.bootstrap-switch.org
4
- * ========================================================================
5
- * Copyright 2012-2013 Mattia Larentis
6
- *
7
- * ========================================================================
8
- * Licensed under the Apache License, Version 2.0 (the "License");
9
- * you may not use this file except in compliance with the License.
10
- * You may obtain a copy of the License at
11
- *
12
- * http://www.apache.org/licenses/LICENSE-2.0
13
- *
14
- * Unless required by applicable law or agreed to in writing, software
15
- * distributed under the License is distributed on an "AS IS" BASIS,
16
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
- * See the License for the specific language governing permissions and
18
- * limitations under the License.
19
- * ========================================================================
20
- */
21
-
22
- (function() {
23
- var __slice = [].slice;
24
-
25
- (function($, window) {
26
- "use strict";
27
- var BootstrapSwitch;
28
- BootstrapSwitch = (function() {
29
- function BootstrapSwitch(element, options) {
30
- if (options == null) {
31
- options = {};
32
- }
33
- this.$element = $(element);
34
- this.options = $.extend({}, $.fn.bootstrapSwitch.defaults, {
35
- state: this.$element.is(":checked"),
36
- size: this.$element.data("size"),
37
- animate: this.$element.data("animate"),
38
- disabled: this.$element.is(":disabled"),
39
- readonly: this.$element.is("[readonly]"),
40
- indeterminate: this.$element.data("indeterminate"),
41
- onColor: this.$element.data("on-color"),
42
- offColor: this.$element.data("off-color"),
43
- onText: this.$element.data("on-text"),
44
- offText: this.$element.data("off-text"),
45
- labelText: this.$element.data("label-text"),
46
- baseClass: this.$element.data("base-class"),
47
- wrapperClass: this.$element.data("wrapper-class"),
48
- radioAllOff: this.$element.data("radio-all-off")
49
- }, options);
50
- this.$wrapper = $("<div>", {
51
- "class": (function(_this) {
52
- return function() {
53
- var classes;
54
- classes = ["" + _this.options.baseClass].concat(_this._getClasses(_this.options.wrapperClass));
55
- classes.push(_this.options.state ? "" + _this.options.baseClass + "-on" : "" + _this.options.baseClass + "-off");
56
- if (_this.options.size != null) {
57
- classes.push("" + _this.options.baseClass + "-" + _this.options.size);
58
- }
59
- if (_this.options.animate) {
60
- classes.push("" + _this.options.baseClass + "-animate");
61
- }
62
- if (_this.options.disabled) {
63
- classes.push("" + _this.options.baseClass + "-disabled");
64
- }
65
- if (_this.options.readonly) {
66
- classes.push("" + _this.options.baseClass + "-readonly");
67
- }
68
- if (_this.options.indeterminate) {
69
- classes.push("" + _this.options.baseClass + "-indeterminate");
70
- }
71
- if (_this.$element.attr("id")) {
72
- classes.push("" + _this.options.baseClass + "-id-" + (_this.$element.attr("id")));
73
- }
74
- return classes.join(" ");
75
- };
76
- })(this)()
77
- });
78
- this.$container = $("<div>", {
79
- "class": "" + this.options.baseClass + "-container"
80
- });
81
- this.$on = $("<span>", {
82
- html: this.options.onText,
83
- "class": "" + this.options.baseClass + "-handle-on " + this.options.baseClass + "-" + this.options.onColor
84
- });
85
- this.$off = $("<span>", {
86
- html: this.options.offText,
87
- "class": "" + this.options.baseClass + "-handle-off " + this.options.baseClass + "-" + this.options.offColor
88
- });
89
- this.$label = $("<label>", {
90
- html: this.options.labelText,
91
- "class": "" + this.options.baseClass + "-label"
92
- });
93
- if (this.options.indeterminate) {
94
- this.$element.prop("indeterminate", true);
95
- }
96
- this.$element.on("init.bootstrapSwitch", (function(_this) {
97
- return function() {
98
- return _this.options.onInit.apply(element, arguments);
99
- };
100
- })(this));
101
- this.$element.on("switchChange.bootstrapSwitch", (function(_this) {
102
- return function() {
103
- return _this.options.onSwitchChange.apply(element, arguments);
104
- };
105
- })(this));
106
- this.$container = this.$element.wrap(this.$container).parent();
107
- this.$wrapper = this.$container.wrap(this.$wrapper).parent();
108
- this.$element.before(this.$on).before(this.$label).before(this.$off).trigger("init.bootstrapSwitch");
109
- this._elementHandlers();
110
- this._handleHandlers();
111
- this._labelHandlers();
112
- this._formHandler();
113
- }
114
-
115
- BootstrapSwitch.prototype._constructor = BootstrapSwitch;
116
-
117
- BootstrapSwitch.prototype.state = function(value, skip) {
118
- if (typeof value === "undefined") {
119
- return this.options.state;
120
- }
121
- if (this.options.disabled || this.options.readonly || this.options.indeterminate) {
122
- return this.$element;
123
- }
124
- if (this.options.state && !this.options.radioAllOff && this.$element.is(':radio')) {
125
- return this.$element;
126
- }
127
- value = !!value;
128
- this.$element.prop("checked", value).trigger("change.bootstrapSwitch", skip);
129
- return this.$element;
130
- };
131
-
132
- BootstrapSwitch.prototype.toggleState = function(skip) {
133
- if (this.options.disabled || this.options.readonly || this.options.indeterminate) {
134
- return this.$element;
135
- }
136
- return this.$element.prop("checked", !this.options.state).trigger("change.bootstrapSwitch", skip);
137
- };
138
-
139
- BootstrapSwitch.prototype.size = function(value) {
140
- if (typeof value === "undefined") {
141
- return this.options.size;
142
- }
143
- if (this.options.size != null) {
144
- this.$wrapper.removeClass("" + this.options.baseClass + "-" + this.options.size);
145
- }
146
- if (value) {
147
- this.$wrapper.addClass("" + this.options.baseClass + "-" + value);
148
- }
149
- this.options.size = value;
150
- return this.$element;
151
- };
152
-
153
- BootstrapSwitch.prototype.animate = function(value) {
154
- if (typeof value === "undefined") {
155
- return this.options.animate;
156
- }
157
- value = !!value;
158
- this.$wrapper[value ? "addClass" : "removeClass"]("" + this.options.baseClass + "-animate");
159
- this.options.animate = value;
160
- return this.$element;
161
- };
162
-
163
- BootstrapSwitch.prototype.disabled = function(value) {
164
- if (typeof value === "undefined") {
165
- return this.options.disabled;
166
- }
167
- value = !!value;
168
- this.$wrapper[value ? "addClass" : "removeClass"]("" + this.options.baseClass + "-disabled");
169
- this.$element.prop("disabled", value);
170
- this.options.disabled = value;
171
- return this.$element;
172
- };
173
-
174
- BootstrapSwitch.prototype.toggleDisabled = function() {
175
- this.$element.prop("disabled", !this.options.disabled);
176
- this.$wrapper.toggleClass("" + this.options.baseClass + "-disabled");
177
- this.options.disabled = !this.options.disabled;
178
- return this.$element;
179
- };
180
-
181
- BootstrapSwitch.prototype.readonly = function(value) {
182
- if (typeof value === "undefined") {
183
- return this.options.readonly;
184
- }
185
- value = !!value;
186
- this.$wrapper[value ? "addClass" : "removeClass"]("" + this.options.baseClass + "-readonly");
187
- this.$element.prop("readonly", value);
188
- this.options.readonly = value;
189
- return this.$element;
190
- };
191
-
192
- BootstrapSwitch.prototype.toggleReadonly = function() {
193
- this.$element.prop("readonly", !this.options.readonly);
194
- this.$wrapper.toggleClass("" + this.options.baseClass + "-readonly");
195
- this.options.readonly = !this.options.readonly;
196
- return this.$element;
197
- };
198
-
199
- BootstrapSwitch.prototype.indeterminate = function(value) {
200
- if (typeof value === "undefined") {
201
- return this.options.indeterminate;
202
- }
203
- value = !!value;
204
- this.$wrapper[value ? "addClass" : "removeClass"]("" + this.options.baseClass + "-indeterminate");
205
- this.$element.prop("indeterminate", value);
206
- this.options.indeterminate = value;
207
- return this.$element;
208
- };
209
-
210
- BootstrapSwitch.prototype.toggleIndeterminate = function() {
211
- this.$element.prop("indeterminate", !this.options.indeterminate);
212
- this.$wrapper.toggleClass("" + this.options.baseClass + "-indeterminate");
213
- this.options.indeterminate = !this.options.indeterminate;
214
- return this.$element;
215
- };
216
-
217
- BootstrapSwitch.prototype.onColor = function(value) {
218
- var color;
219
- color = this.options.onColor;
220
- if (typeof value === "undefined") {
221
- return color;
222
- }
223
- if (color != null) {
224
- this.$on.removeClass("" + this.options.baseClass + "-" + color);
225
- }
226
- this.$on.addClass("" + this.options.baseClass + "-" + value);
227
- this.options.onColor = value;
228
- return this.$element;
229
- };
230
-
231
- BootstrapSwitch.prototype.offColor = function(value) {
232
- var color;
233
- color = this.options.offColor;
234
- if (typeof value === "undefined") {
235
- return color;
236
- }
237
- if (color != null) {
238
- this.$off.removeClass("" + this.options.baseClass + "-" + color);
239
- }
240
- this.$off.addClass("" + this.options.baseClass + "-" + value);
241
- this.options.offColor = value;
242
- return this.$element;
243
- };
244
-
245
- BootstrapSwitch.prototype.onText = function(value) {
246
- if (typeof value === "undefined") {
247
- return this.options.onText;
248
- }
249
- this.$on.html(value);
250
- this.options.onText = value;
251
- return this.$element;
252
- };
253
-
254
- BootstrapSwitch.prototype.offText = function(value) {
255
- if (typeof value === "undefined") {
256
- return this.options.offText;
257
- }
258
- this.$off.html(value);
259
- this.options.offText = value;
260
- return this.$element;
261
- };
262
-
263
- BootstrapSwitch.prototype.labelText = function(value) {
264
- if (typeof value === "undefined") {
265
- return this.options.labelText;
266
- }
267
- this.$label.html(value);
268
- this.options.labelText = value;
269
- return this.$element;
270
- };
271
-
272
- BootstrapSwitch.prototype.baseClass = function(value) {
273
- return this.options.baseClass;
274
- };
275
-
276
- BootstrapSwitch.prototype.wrapperClass = function(value) {
277
- if (typeof value === "undefined") {
278
- return this.options.wrapperClass;
279
- }
280
- if (!value) {
281
- value = $.fn.bootstrapSwitch.defaults.wrapperClass;
282
- }
283
- this.$wrapper.removeClass(this._getClasses(this.options.wrapperClass).join(" "));
284
- this.$wrapper.addClass(this._getClasses(value).join(" "));
285
- this.options.wrapperClass = value;
286
- return this.$element;
287
- };
288
-
289
- BootstrapSwitch.prototype.radioAllOff = function(value) {
290
- if (typeof value === "undefined") {
291
- return this.options.radioAllOff;
292
- }
293
- this.options.radioAllOff = value;
294
- return this.$element;
295
- };
296
-
297
- BootstrapSwitch.prototype.onInit = function(value) {
298
- if (typeof value === "undefined") {
299
- return this.options.onInit;
300
- }
301
- if (!value) {
302
- value = $.fn.bootstrapSwitch.defaults.onInit;
303
- }
304
- this.options.onInit = value;
305
- return this.$element;
306
- };
307
-
308
- BootstrapSwitch.prototype.onSwitchChange = function(value) {
309
- if (typeof value === "undefined") {
310
- return this.options.onSwitchChange;
311
- }
312
- if (!value) {
313
- value = $.fn.bootstrapSwitch.defaults.onSwitchChange;
314
- }
315
- this.options.onSwitchChange = value;
316
- return this.$element;
317
- };
318
-
319
- BootstrapSwitch.prototype.destroy = function() {
320
- var $form;
321
- $form = this.$element.closest("form");
322
- if ($form.length) {
323
- $form.off("reset.bootstrapSwitch").removeData("bootstrap-switch");
324
- }
325
- this.$container.children().not(this.$element).remove();
326
- this.$element.unwrap().unwrap().off(".bootstrapSwitch").removeData("bootstrap-switch");
327
- return this.$element;
328
- };
329
-
330
- BootstrapSwitch.prototype._elementHandlers = function() {
331
- return this.$element.on({
332
- "change.bootstrapSwitch": (function(_this) {
333
- return function(e, skip) {
334
- var checked;
335
- e.preventDefault();
336
- e.stopImmediatePropagation();
337
- checked = _this.$element.is(":checked");
338
- if (checked === _this.options.state) {
339
- return;
340
- }
341
- _this.options.state = checked;
342
- _this.$wrapper.removeClass(checked ? "" + _this.options.baseClass + "-off" : "" + _this.options.baseClass + "-on").addClass(checked ? "" + _this.options.baseClass + "-on" : "" + _this.options.baseClass + "-off");
343
- if (!skip) {
344
- if (_this.$element.is(":radio")) {
345
- $("[name='" + (_this.$element.attr('name')) + "']").not(_this.$element).prop("checked", false).trigger("change.bootstrapSwitch", true);
346
- }
347
- return _this.$element.trigger("switchChange.bootstrapSwitch", [checked]);
348
- }
349
- };
350
- })(this),
351
- "focus.bootstrapSwitch": (function(_this) {
352
- return function(e) {
353
- e.preventDefault();
354
- return _this.$wrapper.addClass("" + _this.options.baseClass + "-focused");
355
- };
356
- })(this),
357
- "blur.bootstrapSwitch": (function(_this) {
358
- return function(e) {
359
- e.preventDefault();
360
- return _this.$wrapper.removeClass("" + _this.options.baseClass + "-focused");
361
- };
362
- })(this),
363
- "keydown.bootstrapSwitch": (function(_this) {
364
- return function(e) {
365
- if (!e.which || _this.options.disabled || _this.options.readonly || _this.options.indeterminate) {
366
- return;
367
- }
368
- switch (e.which) {
369
- case 37:
370
- e.preventDefault();
371
- e.stopImmediatePropagation();
372
- return _this.state(false);
373
- case 39:
374
- e.preventDefault();
375
- e.stopImmediatePropagation();
376
- return _this.state(true);
377
- }
378
- };
379
- })(this)
380
- });
381
- };
382
-
383
- BootstrapSwitch.prototype._handleHandlers = function() {
384
- this.$on.on("click.bootstrapSwitch", (function(_this) {
385
- return function(e) {
386
- _this.state(false);
387
- return _this.$element.trigger("focus.bootstrapSwitch");
388
- };
389
- })(this));
390
- return this.$off.on("click.bootstrapSwitch", (function(_this) {
391
- return function(e) {
392
- _this.state(true);
393
- return _this.$element.trigger("focus.bootstrapSwitch");
394
- };
395
- })(this));
396
- };
397
-
398
- BootstrapSwitch.prototype._labelHandlers = function() {
399
- return this.$label.on({
400
- "mousemove.bootstrapSwitch touchmove.bootstrapSwitch": (function(_this) {
401
- return function(e) {
402
- var left, pageX, percent, right;
403
- if (!_this.isLabelDragging) {
404
- return;
405
- }
406
- e.preventDefault();
407
- _this.isLabelDragged = true;
408
- pageX = e.pageX || e.originalEvent.touches[0].pageX;
409
- percent = ((pageX - _this.$wrapper.offset().left) / _this.$wrapper.width()) * 100;
410
- left = 25;
411
- right = 75;
412
- if (_this.options.animate) {
413
- _this.$wrapper.removeClass("" + _this.options.baseClass + "-animate");
414
- }
415
- if (percent < left) {
416
- percent = left;
417
- } else if (percent > right) {
418
- percent = right;
419
- }
420
- _this.$container.css("margin-left", "" + (percent - right) + "%");
421
- return _this.$element.trigger("focus.bootstrapSwitch");
422
- };
423
- })(this),
424
- "mousedown.bootstrapSwitch touchstart.bootstrapSwitch": (function(_this) {
425
- return function(e) {
426
- if (_this.isLabelDragging || _this.options.disabled || _this.options.readonly || _this.options.indeterminate) {
427
- return;
428
- }
429
- e.preventDefault();
430
- _this.isLabelDragging = true;
431
- return _this.$element.trigger("focus.bootstrapSwitch");
432
- };
433
- })(this),
434
- "mouseup.bootstrapSwitch touchend.bootstrapSwitch": (function(_this) {
435
- return function(e) {
436
- if (!_this.isLabelDragging) {
437
- return;
438
- }
439
- e.preventDefault();
440
- if (_this.isLabelDragged) {
441
- _this.isLabelDragged = false;
442
- _this.state(parseInt(_this.$container.css("margin-left"), 10) > -(_this.$container.width() / 6));
443
- if (_this.options.animate) {
444
- _this.$wrapper.addClass("" + _this.options.baseClass + "-animate");
445
- }
446
- _this.$container.css("margin-left", "");
447
- } else {
448
- _this.state(!_this.options.state);
449
- }
450
- return _this.isLabelDragging = false;
451
- };
452
- })(this),
453
- "mouseleave.bootstrapSwitch": (function(_this) {
454
- return function(e) {
455
- return _this.$label.trigger("mouseup.bootstrapSwitch");
456
- };
457
- })(this)
458
- });
459
- };
460
-
461
- BootstrapSwitch.prototype._formHandler = function() {
462
- var $form;
463
- $form = this.$element.closest("form");
464
- if ($form.data("bootstrap-switch")) {
465
- return;
466
- }
467
- return $form.on("reset.bootstrapSwitch", function() {
468
- return window.setTimeout(function() {
469
- return $form.find("input").filter(function() {
470
- return $(this).data("bootstrap-switch");
471
- }).each(function() {
472
- return $(this).bootstrapSwitch("state", this.checked);
473
- });
474
- }, 1);
475
- }).data("bootstrap-switch", true);
476
- };
477
-
478
- BootstrapSwitch.prototype._getClasses = function(classes) {
479
- var c, cls, _i, _len;
480
- if (!$.isArray(classes)) {
481
- return ["" + this.options.baseClass + "-" + classes];
482
- }
483
- cls = [];
484
- for (_i = 0, _len = classes.length; _i < _len; _i++) {
485
- c = classes[_i];
486
- cls.push("" + this.options.baseClass + "-" + c);
487
- }
488
- return cls;
489
- };
490
-
491
- return BootstrapSwitch;
492
-
493
- })();
494
- $.fn.bootstrapSwitch = function() {
495
- var args, option, ret;
496
- option = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
497
- ret = this;
498
- this.each(function() {
499
- var $this, data;
500
- $this = $(this);
501
- data = $this.data("bootstrap-switch");
502
- if (!data) {
503
- $this.data("bootstrap-switch", data = new BootstrapSwitch(this, option));
504
- }
505
- if (typeof option === "string") {
506
- return ret = data[option].apply(data, args);
507
- }
508
- });
509
- return ret;
510
- };
511
- $.fn.bootstrapSwitch.Constructor = BootstrapSwitch;
512
- return $.fn.bootstrapSwitch.defaults = {
513
- state: true,
514
- size: null,
515
- animate: true,
516
- disabled: false,
517
- readonly: false,
518
- indeterminate: false,
519
- onColor: "primary",
520
- offColor: "default",
521
- onText: "ON",
522
- offText: "OFF",
523
- labelText: "&nbsp;",
524
- baseClass: "bootstrap-switch",
525
- wrapperClass: "wrapper",
526
- radioAllOff: false,
527
- onInit: function() {},
528
- onSwitchChange: function() {}
529
- };
530
- })(window.jQuery, window);
531
-
532
- }).call(this);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/js/edsanimate.js CHANGED
@@ -1,36 +1,9 @@
1
- /*
2
- * Plugin Name: Animate It!
3
- * Plugin URI: http://www.eleopard.in
4
- * Description: It will allow user to add CSS Animations
5
- * Version: 1.0
6
- * Author: eLEOPARD Design Studios Pvt Ltd.
7
- * Author URI: http://www.eleopard.in
8
- * License: GNU General Public License version 2 or later; see LICENSE.txt
9
- * http://www.gnu.org/copyleft/gpl.html GNU/GPL
10
- (C) 2014 eLEOPARD Design Studios Pvt Ltd. All rights reserved
11
-
12
- This program is free software; you can redistribute it and/or modify
13
- it under the terms of the GNU General Public License, version 2, as
14
- published by the Free Software Foundation.
15
-
16
- This program is distributed in the hope that it will be useful,
17
- but WITHOUT ANY WARRANTY; without even the implied warranty of
18
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
- GNU General Public License for more details.
20
-
21
- You should have received a copy of the GNU General Public License
22
- along with this program; if not, write to the Free Software
23
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
24
-
25
- or see <http://www.gnu.org/licenses/>.
26
- * For any other query please contact us at contact[at]eleopard[dot]in
27
- */
28
  (function($) {
29
  $(document).ready(function(){
30
  var animationStyleClasses = ["animated","infinite", "bounce", "flash", "pulse", "rubberBand", "shake", "swing", "tada", "wobble", "bounceIn", "bounceInDown", "bounceInLeft", "bounceInRight", "bounceInUp", "bounceOut", "bounceOutDown", "bounceOutLeft", "bounceOutRight", "bounceOutUp", "fadeIn", "fadeInDown", "fadeInDownBig", "fadeInLeft", "fadeInLeftBig", "fadeInRight", "fadeInRightBig", "fadeInUp", "fadeInUpBig", "fadeOut", "fadeOutDown", "fadeOutDownBig", "fadeOutLeft", "fadeOutLeftBig", "fadeOutRight", "fadeOutRightBig", "fadeOutUp", "fadeOutUpBig", "flip", "flipInX", "flipInY", "flipOutX", "flipOutY", "lightSpeedIn", "lightSpeedOut", "rotateIn", "rotateInDownLeft", "rotateInDownRight", "rotateInUpLeft", "rotateInUpRight", "rotateOut", "rotateOutDownLeft", "rotateOutDownRight", "rotateOutUpLeft", "rotateOutUpRight", "hinge", "rollIn", "rollOut", "zoomIn", "zoomInDown", "zoomInLeft", "zoomInRight", "zoomInUp", "zoomOut", "zoomOutDown", "zoomOutLeft", "zoomOutRight", "zoomOutUp"];
31
  var delayClasses = ["delay1", "delay2", "delay3", "delay4", "delay5", "delay6", "delay7", "delay8", "delay9", "delay10", "delay11", "delay12"];
32
  var durationClasses = ["duration1", "duration2", "duration3", "duration4", "duration5", "duration6", "duration7", "duration8", "duration9", "duration10", "duration11", "duration12", "duration13", "duration14", "duration15", "duration16", "duration17", "duration18", "duration19", "duration20"];
33
- var scrollOffset = scroll_offset.offset;
34
 
35
  $('.eds-on-scroll').each(function(){
36
  var $module = $(this);
@@ -53,7 +26,7 @@
53
 
54
  $module.addClass("eds-scroll-hidden");
55
 
56
- $module.viewportChecker({
57
  classToAdd: classesToAdd,
58
  offset: scrollOffset
59
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  (function($) {
2
  $(document).ready(function(){
3
  var animationStyleClasses = ["animated","infinite", "bounce", "flash", "pulse", "rubberBand", "shake", "swing", "tada", "wobble", "bounceIn", "bounceInDown", "bounceInLeft", "bounceInRight", "bounceInUp", "bounceOut", "bounceOutDown", "bounceOutLeft", "bounceOutRight", "bounceOutUp", "fadeIn", "fadeInDown", "fadeInDownBig", "fadeInLeft", "fadeInLeftBig", "fadeInRight", "fadeInRightBig", "fadeInUp", "fadeInUpBig", "fadeOut", "fadeOutDown", "fadeOutDownBig", "fadeOutLeft", "fadeOutLeftBig", "fadeOutRight", "fadeOutRightBig", "fadeOutUp", "fadeOutUpBig", "flip", "flipInX", "flipInY", "flipOutX", "flipOutY", "lightSpeedIn", "lightSpeedOut", "rotateIn", "rotateInDownLeft", "rotateInDownRight", "rotateInUpLeft", "rotateInUpRight", "rotateOut", "rotateOutDownLeft", "rotateOutDownRight", "rotateOutUpLeft", "rotateOutUpRight", "hinge", "rollIn", "rollOut", "zoomIn", "zoomInDown", "zoomInLeft", "zoomInRight", "zoomInUp", "zoomOut", "zoomOutDown", "zoomOutLeft", "zoomOutRight", "zoomOutUp"];
4
  var delayClasses = ["delay1", "delay2", "delay3", "delay4", "delay5", "delay6", "delay7", "delay8", "delay9", "delay10", "delay11", "delay12"];
5
  var durationClasses = ["duration1", "duration2", "duration3", "duration4", "duration5", "duration6", "duration7", "duration8", "duration9", "duration10", "duration11", "duration12", "duration13", "duration14", "duration15", "duration16", "duration17", "duration18", "duration19", "duration20"];
6
+ var scrollOffset = edsanimate_options.offset;
7
 
8
  $('.eds-on-scroll').each(function(){
9
  var $module = $(this);
26
 
27
  $module.addClass("eds-scroll-hidden");
28
 
29
+ $module.edsViewportChecker({
30
  classToAdd: classesToAdd,
31
  offset: scrollOffset
32
  });
assets/js/edsanimate.site.js ADDED
@@ -0,0 +1,149 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ( function( $, document, window){
2
+
3
+ var edsWObj = $(window);
4
+ $.fn.initEDSAnimateBlock = function() {
5
+
6
+ var obj = this.length > 1 ? this.eq(0) : this;
7
+
8
+ this.edsTotalRepeatCount = 1;
9
+ this.edsAnimateInfinite = false;
10
+ this.edsAnimations = [];
11
+ this.edsKeepValue = false;
12
+ this.edsScrollOffset = 0;
13
+ this.edsElemAnimating = false;
14
+
15
+ this.checkPosition = function() {
16
+
17
+ windowHeight = edsWObj.height();
18
+ var scrollElem = ((navigator.userAgent.toLowerCase().indexOf('webkit') != -1) ? 'body' : 'html'),
19
+ viewportTop = $(scrollElem).scrollTop(),
20
+ viewportBottom = (viewportTop + windowHeight),
21
+ elemTop = '';
22
+
23
+ if( obj.edsScrollOffset != null && obj.edsScrollOffset != ''){
24
+ elemTop = Math.round( obj.offset().top ) + Math.round(Number(obj.edsScrollOffset) * obj.height() * 0.01),
25
+ elemBottom = elemTop + (obj.height());
26
+ }else{
27
+ elemTop = Math.round( obj.offset().top ) + Math.round(options.offset * obj.height() * 0.01),
28
+ elemBottom = elemTop + (obj.height());
29
+ }
30
+
31
+ // Add class if in viewport
32
+ if ((elemTop < viewportBottom) && (elemBottom > viewportTop)){
33
+ obj.edsInit();
34
+ }
35
+ }
36
+
37
+ this.edsAnimate = function(counter, iteration) {
38
+ obj.removeClass('edsanimate-sis-hidden' );
39
+ obj.animo( obj.edsAnimations[ counter ].animoSettings, function() {
40
+ counter++
41
+ if( counter < obj.edsAnimations.length ) {
42
+ setTimeout( function(){obj.edsAnimate( counter, iteration )}, Number(obj.edsAnimations[counter].delay) * 1000);
43
+ } else {
44
+ iteration++;
45
+ if( true == obj.edsAnimateInfinite || iteration < obj.edsTotalRepeatCount) {
46
+ if(obj.edsAnimations.length == 1) {
47
+ obj.animo("cleanse");
48
+ }
49
+ setTimeout( function(){obj.edsAnimate( 0, iteration )}, Number(obj.edsAnimations[0].delay) * 1000);
50
+ }else{
51
+ obj.edsElemAnimating = false;
52
+ }
53
+ }
54
+
55
+ });
56
+ };
57
+
58
+ this.edsInit = function() {
59
+ if( obj.edsAnimations.length >= 1 ) {
60
+ setTimeout( function(){obj.edsAnimate( 0, 0 )}, Number( obj.edsAnimations[0].delay ) * 1000);
61
+ }
62
+ }
63
+
64
+ if("yes" == this.data('edsKeep') ) {
65
+ this.edsKeepValue = true;
66
+ }
67
+
68
+ if( '' != this.data('edsEntryAnimation') ) {
69
+
70
+ this.edsAnimations.push({
71
+ animoSettings: {
72
+ animation: this.data('edsEntryAnimation'),
73
+ duration: this.data('edsEntryDuration'),
74
+ iterate: 1,
75
+ timing: this.data('edsEntryTiming'),
76
+ keep: this.edsKeepValue
77
+ },
78
+ delay: this.data('edsEntryDelay')
79
+
80
+ });
81
+
82
+ }
83
+
84
+ if( '' != this.data('edsExitAnimation') ) {
85
+
86
+ this.edsAnimations.push({
87
+ animoSettings: {
88
+ animation: this.data('edsExitAnimation'),
89
+ duration: this.data('edsExitDuration'),
90
+ iterate: 1,
91
+ timing: this.data('edsExitTiming'),
92
+ keep: this.edsKeepValue
93
+ },
94
+ delay: this.data('edsExitDelay'),
95
+
96
+ });
97
+
98
+ }
99
+
100
+ if( "infinite" == this.data('edsRepeatCount') ) {
101
+ this.edsAnimateInfinite = true;
102
+ } else {
103
+ this.edsAnimateInfinite = false;
104
+ this.edsTotalRepeatCount = this.data('edsRepeatCount');
105
+ }
106
+
107
+ if( "load" == this.data('edsAnimateOn') ) {
108
+ this.edsInit();
109
+ } else if( "scroll" == this.data('edsAnimateOn') ) {
110
+ this.edsScrollOffset = this.data('edsScrollOffset');
111
+ edsWObj.on("scroll", $.throttle( 250, this.checkPosition ) );
112
+ this.checkPosition();
113
+
114
+ } else if( "hover" == this.data('edsAnimateOn') ) {
115
+ this.on("hover", function (){
116
+ if( !obj.edsElemAnimating ){
117
+ obj.animo("cleanse");
118
+ obj.edsElemAnimating = true;
119
+ obj.edsInit();
120
+ }
121
+ } );
122
+
123
+ } else if( "click" == this.data('edsAnimateOn') ) {
124
+ this.on("click", function () {
125
+ if( !obj.edsElemAnimating ){
126
+ obj.animo("cleanse");
127
+ obj.edsElemAnimating = true;
128
+ obj.edsInit();
129
+ }
130
+ } );
131
+ }
132
+
133
+ };
134
+
135
+ $(document).ready( function() {
136
+
137
+ if( typeof edsanimate_options !== 'undefined' ) {
138
+ if( $('.eds-animate').length >= 1 ){
139
+ ( '1' == edsanimate_options.hide_hz_scrollbar ) ? $('body').css('overflow-x', 'hidden'): '';
140
+ ( '1' == edsanimate_options.hide_vl_scrollbar ) ? $('body').css('overflow-y', 'hidden'): '';
141
+ }
142
+ }
143
+ $('.eds-animate').each( function(){
144
+ $(this).initEDSAnimateBlock();
145
+ });
146
+
147
+ } );
148
+
149
+ } )(jQuery, document, window );
assets/js/{eds_tinymce.js → edsanimate.tinymce.js} RENAMED
@@ -1,34 +1,40 @@
1
- (function() {
2
- tinymce.create('tinymce.plugins.EDSAnimate', {
3
- init : function(editor, url) {
4
- editor.addButton('edsanimate', {
5
- title : 'Animate It!',
6
- icon : true,
7
- image : url+'/../images/edsanimate.png',
8
- onclick : function() {
9
- editor.windowManager.open({
10
- file : url + '/../helper/eds_tinymce_popup.php',
11
- width : window.innerWidth-100,
12
- height : window.innerHeight-100,
13
- inline : 1
14
- }, {
15
- plugin_url : url // Plugin absolute URL
16
- });
17
- }
18
- });
19
- },
20
- createControl : function(n, cm) {
21
- return null;
22
- },
23
- getInfo : function() {
24
- return {
25
- longname : "Animate It! ShortCode",
26
- author : 'Eleopard Design Studios Pvt. Ltd.',
27
- authorurl : 'http://eleopard.in/',
28
- infourl : 'http://downloads.eleopard.in/',
29
- version : "1.0"
30
- };
31
- }
32
- });
33
- tinymce.PluginManager.add('edsanimate', tinymce.plugins.EDSAnimate);
34
- })();
 
 
 
 
 
 
1
+ (function($, ajaxurl) {
2
+
3
+ tinymce.create('tinymce.plugins.EDSAnimate', {
4
+ init : function(ed, url) {
5
+ ed.addButton('edsanimate', {
6
+ title : 'Animate It!',
7
+ icon : true,
8
+ image : url+'/../images/edsanimate.png',
9
+ onclick : function() {
10
+ ed.windowManager.open({
11
+ file : ajaxurl + '?action=edsanimate_get_popup',
12
+ title: 'Select your Animation Style:',
13
+ width : window.innerWidth-100,
14
+ height : window.innerHeight-100,
15
+ inline : 1
16
+ }, {
17
+ editor: ed,
18
+ plugin_url : url, // Plugin absolute URL
19
+ jquery: $ //jQuery Object
20
+ });
21
+ }
22
+ });
23
+ },
24
+ createControl : function(n, cm) {
25
+ return null;
26
+ },
27
+ getInfo : function() {
28
+ return {
29
+ longname : "Animate It! ShortCode",
30
+ author : 'Eleopard Design Studios Pvt. Ltd.',
31
+ authorurl : 'http://eleopard.in/',
32
+ infourl : 'http://downloads.eleopard.in/',
33
+ version : "1.0"
34
+ };
35
+ }
36
+ });
37
+
38
+ tinymce.PluginManager.add('edsanimate', tinymce.plugins.EDSAnimate);
39
+
40
+ })(jQuery, ajaxurl);
assets/js/jquery-1.11.1.min.js DELETED
@@ -1,4 +0,0 @@
1
- /*! jQuery v1.11.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
2
- !function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.1",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="<select msallowclip=''><option selected=''></option></select>",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=lb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=mb(b);function pb(){}pb.prototype=d.filters=d.pseudos,d.setFilters=new pb,g=fb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fb.error(a):z(a,i).slice(0)};function qb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;
3
- if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?m.queue(this[0],a):void 0===b?this:this.each(function(){var c=m.queue(this,a,b);m._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&m.dequeue(this,a)})},dequeue:function(a){return this.each(function(){m.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=m.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=m._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=["Top","Right","Bottom","Left"],U=function(a,b){return a=b||a,"none"===m.css(a,"display")||!m.contains(a.ownerDocument,a)},V=m.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===m.type(c)){e=!0;for(h in c)m.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,m.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(m(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav></:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[m.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=Z.test(e)?this.mouseHooks:Y.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new m.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||y),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||y,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==cb()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===cb()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return m.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return m.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=m.extend(new m.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?m.event.trigger(e,null,b):m.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},m.removeEvent=y.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===K&&(a[d]=null),a.detachEvent(d,c))},m.Event=function(a,b){return this instanceof m.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ab:bb):this.type=a,b&&m.extend(this,b),this.timeStamp=a&&a.timeStamp||m.now(),void(this[m.expando]=!0)):new m.Event(a,b)},m.Event.prototype={isDefaultPrevented:bb,isPropagationStopped:bb,isImmediatePropagationStopped:bb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ab,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ab,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ab,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},m.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){m.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!m.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.submitBubbles||(m.event.special.submit={setup:function(){return m.nodeName(this,"form")?!1:void m.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=m.nodeName(b,"input")||m.nodeName(b,"button")?b.form:void 0;c&&!m._data(c,"submitBubbles")&&(m.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),m._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&m.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return m.nodeName(this,"form")?!1:void m.event.remove(this,"._submit")}}),k.changeBubbles||(m.event.special.change={setup:function(){return X.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(m.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),m.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),m.event.simulate("change",this,a,!0)})),!1):void m.event.add(this,"beforeactivate._change",function(a){var b=a.target;X.test(b.nodeName)&&!m._data(b,"changeBubbles")&&(m.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||m.event.simulate("change",this.parentNode,a,!0)}),m._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return m.event.remove(this,"._change"),!X.test(this.nodeName)}}),k.focusinBubbles||m.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){m.event.simulate(b,a.target,m.event.fix(a),!0)};m.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=m._data(d,b);e||d.addEventListener(a,c,!0),m._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=m._data(d,b)-1;e?m._data(d,b,e):(d.removeEventListener(a,c,!0),m._removeData(d,b))}}}),m.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=bb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return m().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=m.guid++)),this.each(function(){m.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,m(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=bb),this.each(function(){m.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){m.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?m.event.trigger(a,b,c,!0):void 0}});function db(a){var b=eb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var eb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",fb=/ jQuery\d+="(?:null|\d+)"/g,gb=new RegExp("<(?:"+eb+")[\\s/>]","i"),hb=/^\s+/,ib=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jb=/<([\w:]+)/,kb=/<tbody/i,lb=/<|&#?\w+;/,mb=/<(?:script|style|link)/i,nb=/checked\s*(?:[^=]|=\s*.checked.)/i,ob=/^$|\/(?:java|ecma)script/i,pb=/^true\/(.*)/,qb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,rb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:k.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},sb=db(y),tb=sb.appendChild(y.createElement("div"));rb.optgroup=rb.option,rb.tbody=rb.tfoot=rb.colgroup=rb.caption=rb.thead,rb.th=rb.td;function ub(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ub(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function vb(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wb(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xb(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function yb(a){var b=pb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function zb(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Ab(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Bb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xb(b).text=a.text,yb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!gb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(tb.innerHTML=a.outerHTML,tb.removeChild(f=tb.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ub(f),h=ub(a),g=0;null!=(e=h[g]);++g)d[g]&&Bb(e,d[g]);if(b)if(c)for(h=h||ub(a),d=d||ub(f),g=0;null!=(e=h[g]);g++)Ab(e,d[g]);else Ab(a,f);return d=ub(f,"script"),d.length>0&&zb(d,!i&&ub(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=db(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(lb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(jb.exec(f)||["",""])[1].toLowerCase(),l=rb[i]||rb._default,h.innerHTML=l[1]+f.replace(ib,"<$1></$2>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&hb.test(f)&&p.push(b.createTextNode(hb.exec(f)[0])),!k.tbody){f="table"!==i||kb.test(f)?"<table>"!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Cb[0].contentWindow||Cb[0].contentDocument).document,b.write(),b.close(),c=Eb(a,b),Cb.detach()),Db[a]=c),c}!function(){var a;k.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,d;return c=y.getElementsByTagName("body")[0],c&&c.style?(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(y.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(d),a):void 0}}();var Gb=/^margin/,Hb=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ib,Jb,Kb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ib=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||m.contains(a.ownerDocument,a)||(g=m.style(a,b)),Hb.test(g)&&Gb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):y.documentElement.currentStyle&&(Ib=function(a){return a.currentStyle},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Hb.test(g)&&!Kb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Lb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h;if(b=y.createElement("div"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=d&&d.style){c.cssText="float:left;opacity:.5",k.opacity="0.5"===c.opacity,k.cssFloat=!!c.cssFloat,b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===b.style.backgroundClip,k.boxSizing=""===c.boxSizing||""===c.MozBoxSizing||""===c.WebkitBoxSizing,m.extend(k,{reliableHiddenOffsets:function(){return null==g&&i(),g},boxSizingReliable:function(){return null==f&&i(),f},pixelPosition:function(){return null==e&&i(),e},reliableMarginRight:function(){return null==h&&i(),h}});function i(){var b,c,d,i;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),b.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",e=f=!1,h=!0,a.getComputedStyle&&(e="1%"!==(a.getComputedStyle(b,null)||{}).top,f="4px"===(a.getComputedStyle(b,null)||{width:"4px"}).width,i=b.appendChild(y.createElement("div")),i.style.cssText=b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",b.style.width="1px",h=!parseFloat((a.getComputedStyle(i,null)||{}).marginRight)),b.innerHTML="<table><tr><td></td><td>t</td></tr></table>",i=b.getElementsByTagName("td"),i[0].style.cssText="margin:0;border:0;padding:0;display:none",g=0===i[0].offsetHeight,g&&(i[0].style.display="",i[1].style.display="none",g=0===i[0].offsetHeight),c.removeChild(d))}}}(),m.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Mb=/alpha\([^)]*\)/i,Nb=/opacity\s*=\s*([^)]*)/,Ob=/^(none|table(?!-c[ea]).+)/,Pb=new RegExp("^("+S+")(.*)$","i"),Qb=new RegExp("^([+-])=("+S+")","i"),Rb={position:"absolute",visibility:"hidden",display:"block"},Sb={letterSpacing:"0",fontWeight:"400"},Tb=["Webkit","O","Moz","ms"];function Ub(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Tb.length;while(e--)if(b=Tb[e]+c,b in a)return b;return d}function Vb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=m._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&U(d)&&(f[g]=m._data(d,"olddisplay",Fb(d.nodeName)))):(e=U(d),(c&&"none"!==c||!e)&&m._data(d,"olddisplay",e?c:m.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Wb(a,b,c){var d=Pb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Xb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=m.css(a,c+T[f],!0,e)),d?("content"===c&&(g-=m.css(a,"padding"+T[f],!0,e)),"margin"!==c&&(g-=m.css(a,"border"+T[f]+"Width",!0,e))):(g+=m.css(a,"padding"+T[f],!0,e),"padding"!==c&&(g+=m.css(a,"border"+T[f]+"Width",!0,e)));return g}function Yb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ib(a),g=k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Jb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Hb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Xb(a,b,c||(g?"border":"content"),d,f)+"px"}m.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Jb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":k.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=m.camelCase(b),i=a.style;if(b=m.cssProps[h]||(m.cssProps[h]=Ub(i,h)),g=m.cssHooks[b]||m.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Qb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(m.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||m.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=m.camelCase(b);return b=m.cssProps[h]||(m.cssProps[h]=Ub(a.style,h)),g=m.cssHooks[b]||m.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Jb(a,b,d)),"normal"===f&&b in Sb&&(f=Sb[b]),""===c||c?(e=parseFloat(f),c===!0||m.isNumeric(e)?e||0:f):f}}),m.each(["height","width"],function(a,b){m.cssHooks[b]={get:function(a,c,d){return c?Ob.test(m.css(a,"display"))&&0===a.offsetWidth?m.swap(a,Rb,function(){return Yb(a,b,d)}):Yb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ib(a);return Wb(a,c,d?Xb(a,b,d,k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,e),e):0)}}}),k.opacity||(m.cssHooks.opacity={get:function(a,b){return Nb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=m.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===m.trim(f.replace(Mb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Mb.test(f)?f.replace(Mb,e):f+" "+e)}}),m.cssHooks.marginRight=Lb(k.reliableMarginRight,function(a,b){return b?m.swap(a,{display:"inline-block"},Jb,[a,"marginRight"]):void 0}),m.each({margin:"",padding:"",border:"Width"},function(a,b){m.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+T[d]+b]=f[d]||f[d-2]||f[0];return e}},Gb.test(a)||(m.cssHooks[a+b].set=Wb)}),m.fn.extend({css:function(a,b){return V(this,function(a,b,c){var d,e,f={},g=0;if(m.isArray(b)){for(d=Ib(a),e=b.length;e>g;g++)f[b[g]]=m.css(a,b[g],!1,d);return f}return void 0!==c?m.style(a,b,c):m.css(a,b)},a,b,arguments.length>1)},show:function(){return Vb(this,!0)},hide:function(){return Vb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){U(this)?m(this).show():m(this).hide()})}});function Zb(a,b,c,d,e){return new Zb.prototype.init(a,b,c,d,e)}m.Tween=Zb,Zb.prototype={constructor:Zb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(m.cssNumber[c]?"":"px")
4
- },cur:function(){var a=Zb.propHooks[this.prop];return a&&a.get?a.get(this):Zb.propHooks._default.get(this)},run:function(a){var b,c=Zb.propHooks[this.prop];return this.pos=b=this.options.duration?m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Zb.propHooks._default.set(this),this}},Zb.prototype.init.prototype=Zb.prototype,Zb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Zb.propHooks.scrollTop=Zb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Zb.prototype.init,m.fx.step={};var $b,_b,ac=/^(?:toggle|show|hide)$/,bc=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cc=/queueHooks$/,dc=[ic],ec={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bc.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bc.exec(m.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fc(){return setTimeout(function(){$b=void 0}),$b=m.now()}function gc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hc(a,b,c){for(var d,e=(ec[b]||[]).concat(ec["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ic(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fb(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fb(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ac.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fb(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hc(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jc(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kc(a,b,c){var d,e,f=0,g=dc.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$b||fc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:m.extend({},b),opts:m.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$b||fc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=m.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jc(k,j.opts.specialEasing);g>f;f++)if(d=dc[f].call(j,a,k,j.opts))return d;return m.map(k,hc,j),m.isFunction(j.opts.start)&&j.opts.start.call(a,j),m.fx.timer(m.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}m.Animation=m.extend(kc,{tweener:function(a,b){m.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],ec[c]=ec[c]||[],ec[c].unshift(b)},prefilter:function(a,b){b?dc.unshift(a):dc.push(a)}}),m.speed=function(a,b,c){var d=a&&"object"==typeof a?m.extend({},a):{complete:c||!c&&b||m.isFunction(a)&&a,duration:a,easing:c&&b||b&&!m.isFunction(b)&&b};return d.duration=m.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in m.fx.speeds?m.fx.speeds[d.duration]:m.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){m.isFunction(d.old)&&d.old.call(this),d.queue&&m.dequeue(this,d.queue)},d},m.fn.extend({fadeTo:function(a,b,c,d){return this.filter(U).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=m.isEmptyObject(a),f=m.speed(b,c,d),g=function(){var b=kc(this,m.extend({},a),f);(e||m._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=m.timers,g=m._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&cc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&m.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=m._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=m.timers,g=d?d.length:0;for(c.finish=!0,m.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),m.each(["toggle","show","hide"],function(a,b){var c=m.fn[b];m.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gc(b,!0),a,d,e)}}),m.each({slideDown:gc("show"),slideUp:gc("hide"),slideToggle:gc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){m.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),m.timers=[],m.fx.tick=function(){var a,b=m.timers,c=0;for($b=m.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||m.fx.stop(),$b=void 0},m.fx.timer=function(a){m.timers.push(a),a()?m.fx.start():m.timers.pop()},m.fx.interval=13,m.fx.start=function(){_b||(_b=setInterval(m.fx.tick,m.fx.interval))},m.fx.stop=function(){clearInterval(_b),_b=null},m.fx.speeds={slow:600,fast:200,_default:400},m.fn.delay=function(a,b){return a=m.fx?m.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e;b=y.createElement("div"),b.setAttribute("className","t"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=y.createElement("select"),e=c.appendChild(y.createElement("option")),a=b.getElementsByTagName("input")[0],d.style.cssText="top:1px",k.getSetAttribute="t"!==b.className,k.style=/top/.test(d.getAttribute("style")),k.hrefNormalized="/a"===d.getAttribute("href"),k.checkOn=!!a.value,k.optSelected=e.selected,k.enctype=!!y.createElement("form").enctype,c.disabled=!0,k.optDisabled=!e.disabled,a=y.createElement("input"),a.setAttribute("value",""),k.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),k.radioValue="t"===a.value}();var lc=/\r/g;m.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=m.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,m(this).val()):a,null==e?e="":"number"==typeof e?e+="":m.isArray(e)&&(e=m.map(e,function(a){return null==a?"":a+""})),b=m.valHooks[this.type]||m.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=m.valHooks[e.type]||m.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(lc,""):null==c?"":c)}}}),m.extend({valHooks:{option:{get:function(a){var b=m.find.attr(a,"value");return null!=b?b:m.trim(m.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&m.nodeName(c.parentNode,"optgroup"))){if(b=m(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=m.makeArray(b),g=e.length;while(g--)if(d=e[g],m.inArray(m.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),m.each(["radio","checkbox"],function(){m.valHooks[this]={set:function(a,b){return m.isArray(b)?a.checked=m.inArray(m(a).val(),b)>=0:void 0}},k.checkOn||(m.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var mc,nc,oc=m.expr.attrHandle,pc=/^(?:checked|selected)$/i,qc=k.getSetAttribute,rc=k.input;m.fn.extend({attr:function(a,b){return V(this,m.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){m.removeAttr(this,a)})}}),m.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===K?m.prop(a,b,c):(1===f&&m.isXMLDoc(a)||(b=b.toLowerCase(),d=m.attrHooks[b]||(m.expr.match.bool.test(b)?nc:mc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=m.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void m.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=m.propFix[c]||c,m.expr.match.bool.test(c)?rc&&qc||!pc.test(c)?a[d]=!1:a[m.camelCase("default-"+c)]=a[d]=!1:m.attr(a,c,""),a.removeAttribute(qc?c:d)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&m.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),nc={set:function(a,b,c){return b===!1?m.removeAttr(a,c):rc&&qc||!pc.test(c)?a.setAttribute(!qc&&m.propFix[c]||c,c):a[m.camelCase("default-"+c)]=a[c]=!0,c}},m.each(m.expr.match.bool.source.match(/\w+/g),function(a,b){var c=oc[b]||m.find.attr;oc[b]=rc&&qc||!pc.test(b)?function(a,b,d){var e,f;return d||(f=oc[b],oc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,oc[b]=f),e}:function(a,b,c){return c?void 0:a[m.camelCase("default-"+b)]?b.toLowerCase():null}}),rc&&qc||(m.attrHooks.value={set:function(a,b,c){return m.nodeName(a,"input")?void(a.defaultValue=b):mc&&mc.set(a,b,c)}}),qc||(mc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},oc.id=oc.name=oc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},m.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:mc.set},m.attrHooks.contenteditable={set:function(a,b,c){mc.set(a,""===b?!1:b,c)}},m.each(["width","height"],function(a,b){m.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),k.style||(m.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var sc=/^(?:input|select|textarea|button|object)$/i,tc=/^(?:a|area)$/i;m.fn.extend({prop:function(a,b){return V(this,m.prop,a,b,arguments.length>1)},removeProp:function(a){return a=m.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),m.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!m.isXMLDoc(a),f&&(b=m.propFix[b]||b,e=m.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=m.find.attr(a,"tabindex");return b?parseInt(b,10):sc.test(a.nodeName)||tc.test(a.nodeName)&&a.href?0:-1}}}}),k.hrefNormalized||m.each(["href","src"],function(a,b){m.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),k.optSelected||(m.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),m.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){m.propFix[this.toLowerCase()]=this}),k.enctype||(m.propFix.enctype="encoding");var uc=/[\t\r\n\f]/g;m.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=m.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?m.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(m.isFunction(a)?function(c){m(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=m(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===K||"boolean"===c)&&(this.className&&m._data(this,"__className__",this.className),this.className=this.className||a===!1?"":m._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(uc," ").indexOf(b)>=0)return!0;return!1}}),m.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){m.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),m.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var vc=m.now(),wc=/\?/,xc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;m.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=m.trim(b+"");return e&&!m.trim(e.replace(xc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():m.error("Invalid JSON: "+b)},m.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||m.error("Invalid XML: "+b),c};var yc,zc,Ac=/#.*$/,Bc=/([?&])_=[^&]*/,Cc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Dc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ec=/^(?:GET|HEAD)$/,Fc=/^\/\//,Gc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hc={},Ic={},Jc="*/".concat("*");try{zc=location.href}catch(Kc){zc=y.createElement("a"),zc.href="",zc=zc.href}yc=Gc.exec(zc.toLowerCase())||[];function Lc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(m.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Mc(a,b,c,d){var e={},f=a===Ic;function g(h){var i;return e[h]=!0,m.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Nc(a,b){var c,d,e=m.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&m.extend(!0,a,c),a}function Oc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Pc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}m.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:zc,type:"GET",isLocal:Dc.test(yc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Jc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":m.parseJSON,"text xml":m.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Nc(Nc(a,m.ajaxSettings),b):Nc(m.ajaxSettings,a)},ajaxPrefilter:Lc(Hc),ajaxTransport:Lc(Ic),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=m.ajaxSetup({},b),l=k.context||k,n=k.context&&(l.nodeType||l.jquery)?m(l):m.event,o=m.Deferred(),p=m.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Cc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||zc)+"").replace(Ac,"").replace(Fc,yc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=m.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(c=Gc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===yc[1]&&c[2]===yc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(yc[3]||("http:"===yc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=m.param(k.data,k.traditional)),Mc(Hc,k,b,v),2===t)return v;h=k.global,h&&0===m.active++&&m.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Ec.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(wc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Bc.test(e)?e.replace(Bc,"$1_="+vc++):e+(wc.test(e)?"&":"?")+"_="+vc++)),k.ifModified&&(m.lastModified[e]&&v.setRequestHeader("If-Modified-Since",m.lastModified[e]),m.etag[e]&&v.setRequestHeader("If-None-Match",m.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Jc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Mc(Ic,k,b,v)){v.readyState=1,h&&n.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Oc(k,v,c)),u=Pc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(m.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(m.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&n.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(n.trigger("ajaxComplete",[v,k]),--m.active||m.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return m.get(a,b,c,"json")},getScript:function(a,b){return m.get(a,void 0,b,"script")}}),m.each(["get","post"],function(a,b){m[b]=function(a,c,d,e){return m.isFunction(c)&&(e=e||d,d=c,c=void 0),m.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m._evalUrl=function(a){return m.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},m.fn.extend({wrapAll:function(a){if(m.isFunction(a))return this.each(function(b){m(this).wrapAll(a.call(this,b))});if(this[0]){var b=m(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(m.isFunction(a)?function(b){m(this).wrapInner(a.call(this,b))}:function(){var b=m(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=m.isFunction(a);return this.each(function(c){m(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){m.nodeName(this,"body")||m(this).replaceWith(this.childNodes)}).end()}}),m.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!k.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||m.css(a,"display"))},m.expr.filters.visible=function(a){return!m.expr.filters.hidden(a)};var Qc=/%20/g,Rc=/\[\]$/,Sc=/\r?\n/g,Tc=/^(?:submit|button|image|reset|file)$/i,Uc=/^(?:input|select|textarea|keygen)/i;function Vc(a,b,c,d){var e;if(m.isArray(b))m.each(b,function(b,e){c||Rc.test(a)?d(a,e):Vc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==m.type(b))d(a,b);else for(e in b)Vc(a+"["+e+"]",b[e],c,d)}m.param=function(a,b){var c,d=[],e=function(a,b){b=m.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=m.ajaxSettings&&m.ajaxSettings.traditional),m.isArray(a)||a.jquery&&!m.isPlainObject(a))m.each(a,function(){e(this.name,this.value)});else for(c in a)Vc(c,a[c],b,e);return d.join("&").replace(Qc,"+")},m.fn.extend({serialize:function(){return m.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=m.prop(this,"elements");return a?m.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!m(this).is(":disabled")&&Uc.test(this.nodeName)&&!Tc.test(a)&&(this.checked||!W.test(a))}).map(function(a,b){var c=m(this).val();return null==c?null:m.isArray(c)?m.map(c,function(a){return{name:b.name,value:a.replace(Sc,"\r\n")}}):{name:b.name,value:c.replace(Sc,"\r\n")}}).get()}}),m.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&Zc()||$c()}:Zc;var Wc=0,Xc={},Yc=m.ajaxSettings.xhr();a.ActiveXObject&&m(a).on("unload",function(){for(var a in Xc)Xc[a](void 0,!0)}),k.cors=!!Yc&&"withCredentials"in Yc,Yc=k.ajax=!!Yc,Yc&&m.ajaxTransport(function(a){if(!a.crossDomain||k.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Wc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Xc[g],b=void 0,f.onreadystatechange=m.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Xc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function Zc(){try{return new a.XMLHttpRequest}catch(b){}}function $c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}m.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return m.globalEval(a),a}}}),m.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),m.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=y.head||m("head")[0]||y.documentElement;return{send:function(d,e){b=y.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var _c=[],ad=/(=)\?(?=&|$)|\?\?/;m.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=_c.pop()||m.expando+"_"+vc++;return this[a]=!0,a}}),m.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(ad.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&ad.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=m.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(ad,"$1"+e):b.jsonp!==!1&&(b.url+=(wc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||m.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,_c.push(e)),g&&m.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),m.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||y;var d=u.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=m.buildFragment([a],b,e),e&&e.length&&m(e).remove(),m.merge([],d.childNodes))};var bd=m.fn.load;m.fn.load=function(a,b,c){if("string"!=typeof a&&bd)return bd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=m.trim(a.slice(h,a.length)),a=a.slice(0,h)),m.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&m.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?m("<div>").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cd=a.document.documentElement;function dd(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dd(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cd;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cd})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dd(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=Lb(k.pixelPosition,function(a,c){return c?(c=Jb(a,b),Hb.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ed=a.jQuery,fd=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fd),b&&a.jQuery===m&&(a.jQuery=ed),m},typeof b===K&&(a.jQuery=a.$=m),m});
 
 
 
 
assets/js/jquery.ba-throttle-debounce.min.js ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * jQuery throttle / debounce - v1.1 - 3/7/2010
3
+ * http://benalman.com/projects/jquery-throttle-debounce-plugin/
4
+ *
5
+ * Copyright (c) 2010 "Cowboy" Ben Alman
6
+ * Dual licensed under the MIT and GPL licenses.
7
+ * http://benalman.com/about/license/
8
+ */
9
+ (function(b,c){var $=b.jQuery||b.Cowboy||(b.Cowboy={}),a;$.throttle=a=function(e,f,j,i){var h,d=0;if(typeof f!=="boolean"){i=j;j=f;f=c}function g(){var o=this,m=+new Date()-d,n=arguments;function l(){d=+new Date();j.apply(o,n)}function k(){h=c}if(i&&!h){l()}h&&clearTimeout(h);if(i===c&&m>e){l()}else{if(f!==true){h=setTimeout(i?k:l,i===c?e-m:e)}}}if($.guid){g.guid=j.guid=j.guid||$.guid++}return g};$.debounce=function(d,e,f){return f===c?a(d,e,false):a(d,f,e!==false)}})(this);
assets/js/viewportchecker.js CHANGED
@@ -1,5 +1,5 @@
1
  (function($){
2
- $.fn.viewportChecker = function(useroptions){
3
 
4
  var options = {
5
  classToAdd: 'eds-scroll-visible',
@@ -7,14 +7,13 @@
7
  callbackFunction: function(elem){}
8
  };
9
  $.extend(options, useroptions);
10
-
11
 
12
- var $elem = this,
13
- windowHeight = $(window).height();
14
 
15
  this.checkElements = function(){
16
 
17
  var scrollElem = ((navigator.userAgent.toLowerCase().indexOf('webkit') != -1) ? 'body' : 'html'),
 
18
  viewportTop = $(scrollElem).scrollTop(),
19
  viewportBottom = (viewportTop + windowHeight);
20
 
@@ -37,20 +36,15 @@
37
 
38
  // Add class if in viewport
39
  if ((elemTop < viewportBottom) && (elemBottom > viewportTop)){
40
- $obj.addClass(options.classToAdd);
41
-
42
-
43
  options.callbackFunction($obj);
44
  }
45
  });
46
  };
47
 
48
- $(window).scroll(this.checkElements);
 
49
  this.checkElements();
50
-
51
 
52
- $(window).resize(function(e){
53
- windowHeight = e.currentTarget.innerHeight;
54
- });
55
  };
56
  })(jQuery);
1
  (function($){
2
+ $.fn.edsViewportChecker = function(useroptions){
3
 
4
  var options = {
5
  classToAdd: 'eds-scroll-visible',
7
  callbackFunction: function(elem){}
8
  };
9
  $.extend(options, useroptions);
 
10
 
11
+ var $elem = this;
 
12
 
13
  this.checkElements = function(){
14
 
15
  var scrollElem = ((navigator.userAgent.toLowerCase().indexOf('webkit') != -1) ? 'body' : 'html'),
16
+ windowHeight = $(window).height(),
17
  viewportTop = $(scrollElem).scrollTop(),
18
  viewportBottom = (viewportTop + windowHeight);
19
 
36
 
37
  // Add class if in viewport
38
  if ((elemTop < viewportBottom) && (elemBottom > viewportTop)){
39
+ $obj.addClass(options.classToAdd);
 
 
40
  options.callbackFunction($obj);
41
  }
42
  });
43
  };
44
 
45
+ $( window ).on( "scroll", $.throttle( 250, this.checkElements ) );
46
+ //For applying the onscroll part only after the user scroll atleast ones event after the item is in view port, just comment this out
47
  this.checkElements();
 
48
 
 
 
 
49
  };
50
  })(jQuery);
eds_tinymce.php DELETED
@@ -1,36 +0,0 @@
1
- <?php
2
- function add_edsanimate_tinymce_plugin($plugin_array){
3
-
4
- $plugin_array['edsanimate'] = plugins_url('/assets/js/eds_tinymce.js',__file__);
5
- return $plugin_array;
6
-
7
- }
8
-
9
- function register_edsanimate_button($buttons){
10
-
11
- array_push($buttons, "|", "edsanimate");
12
- return $buttons;
13
-
14
- }
15
-
16
- function eds_refresh_mce($ver) {
17
- $ver += 3;
18
- return $ver;
19
- }
20
-
21
- function add_edsanimate_button() {
22
- if ( ! current_user_can('edit_posts') && ! current_user_can('edit_pages') )
23
- return;
24
- if ( get_user_option('rich_editing') == 'true') {
25
- add_filter('mce_external_plugins', 'add_edsanimate_tinymce_plugin');
26
- add_filter('mce_buttons', 'register_edsanimate_button');
27
- }
28
- }
29
-
30
-
31
- add_action('init', 'add_edsanimate_button');
32
-
33
- add_filter( 'tiny_mce_version', 'eds_refresh_mce');
34
-
35
-
36
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
edsanimate.php CHANGED
@@ -1,328 +1,510 @@
1
- <?php
2
- /**
3
- * Plugin Name: Animate It!
4
- * Plugin URI: http://www.eleopard.in
5
- * Description: It will allow user to add CSS Animations
6
- * Version: 1.4.4
7
- * Author: eLEOPARD Design Studios
8
- * Author URI: http://www.eleopard.in
9
- * License: GNU General Public License version 2 or later; see LICENSE.txt
10
- * http://www.gnu.org/copyleft/gpl.html GNU/GPL
11
- (C) 2014 eLEOPARD Design Studios Pvt Ltd. All rights reserved
12
-
13
- This program is free software; you can redistribute it and/or modify
14
- it under the terms of the GNU General Public License, version 2, as
15
- published by the Free Software Foundation.
16
-
17
- This program is distributed in the hope that it will be useful,
18
- but WITHOUT ANY WARRANTY; without even the implied warranty of
19
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20
- GNU General Public License for more details.
21
-
22
- You should have received a copy of the GNU General Public License
23
- along with this program; if not, write to the Free Software
24
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25
-
26
- or see <http://www.gnu.org/licenses/>.
27
- * For any other query please contact us at contact[at]eleopard[dot]in
28
- */
29
-
30
- if (!class_exists('EDS_Mobile_Detect')):
31
- include_once 'assets/helper/Mobile_Detect.php';
32
- endif;
33
-
34
- include_once 'eds_tinymce.php';
35
-
36
-
37
- function detectDevice()
38
- {
39
- static $deviceType = null;
40
- if(!$deviceType)
41
- {
42
- $detect = new EDS_Mobile_Detect();
43
- $deviceType = ($detect->isMobile() ? ($detect->isTablet() ? 'tablet' : 'phone') : 'computer');
44
- }
45
- return $deviceType;
46
-
47
- }
48
-
49
- function set_edsanimate_options(){
50
- add_option('scroll_offset'
51
- ,'75'
52
- ,'Percentage height of the element '.
53
- 'after which animation should get applied' );
54
-
55
- add_option('enable_on_phone'
56
- ,'0'
57
- ,'Animation should work on smartphones or not.');
58
-
59
- add_option('enable_on_tab'
60
- ,'1'
61
- ,'Animation should work on tablets or not.');
62
-
63
- add_option('custom_css'
64
- ,''
65
- ,'Custom CSS classes for additional functionality.');
66
- }
67
-
68
- function unset_edsanimate_options(){
69
- delete_option('scroll_offset');
70
- delete_option('enable_on_phone');
71
- delete_option('enable_on_tab');
72
- delete_option('custom_css');
73
- }
74
-
75
- function admin_edsanimate_options(){
76
- ?>
77
- <div class="wrap"><h2>Animate It! Options</h2></div>
78
- <?php
79
- if(isset($_REQUEST['submit'])){
80
- update_edsanimate_options();
81
- }
82
-
83
- print_edsanimate_form();
84
- ?></div><?php
85
- }
86
-
87
- function update_edsanimate_options(){
88
- $ok= false;
89
- if(isset($_REQUEST['scroll_offset'])
90
- && isset($_REQUEST['enable_on_phone'])
91
- && isset($_REQUEST['enable_on_tab'])){
92
- update_option('scroll_offset', $_REQUEST['scroll_offset']);
93
- update_option('enable_on_phone', $_REQUEST['enable_on_phone']);
94
- update_option('enable_on_tab', $_REQUEST['enable_on_tab']);
95
- $ok=true;
96
- }
97
- update_option('custom_css', esc_textarea(isset($_REQUEST['custom_css'])?$_REQUEST['custom_css']:''));
98
-
99
-
100
- if($ok){?>
101
- <div id="message" class="updated fade">
102
- <p>Options saved.</p>
103
- </div>
104
- <?php
105
-
106
- }else{?>
107
- <div id="message" class="error fade">
108
- <p>Failed to save options.</p>
109
- </div>
110
- <?php
111
- }
112
- }
113
-
114
- function print_edsanimate_form(){
115
- $default_scroll_offset = get_option('scroll_offset');
116
- ?>
117
- <form method="post">
118
- <table cellspacing="10" cellpadding="10">
119
- <tr>
120
- <td style="vertical-align: top;">
121
- <label for="scroll_offset">Scroll Offset (in percentage):</label>
122
- </td>
123
- <td colspan="2">
124
- <input type="text" name="scroll_offset" value="<?php echo $default_scroll_offset; ?>" />
125
- </td>
126
-
127
- </tr>
128
- <tr>
129
- <td style="vertical-align: top;">
130
- <label for="enable_on_phone">Enable on Smartphones:</label>
131
- </td>
132
- <td>
133
- <select name="enable_on_phone">
134
- <option value="0" <?php echo (get_option('enable_on_phone')=='0')?'selected="selected"':'';?>>No</option>
135
- <option value="1" <?php echo (get_option('enable_on_phone')=='1')?'selected="selected"':'';?>>Yes</option>
136
- </select>
137
- </td>
138
- <td style="vertical-align: top;">
139
- <p style="font-size:11px;"><i>(Animation should work on Smartphones or not)</i>
140
- </td>
141
- </tr>
142
- <tr>
143
- <td style="vertical-align: top;">
144
- <label for="enable_on_tab">Enable on Tablets:</label>
145
- </td>
146
- <td>
147
- <select name="enable_on_tab">
148
- <option value="0" <?php echo (get_option('enable_on_tab')=='0')?'selected="selected"':'';?>>No</option>
149
- <option value="1" <?php echo (get_option('enable_on_tab')=='1')?'selected="selected"':'';?>>Yes</option>
150
- </select>
151
- </td>
152
- <td style="vertical-align: top;">
153
- <p style="font-size:11px;"><i>(Animation should work on Tablets or not)</i>
154
- </td>
155
- </tr>
156
- <tr>
157
- <td style="vertical-align: top;">
158
- <label for="custom_css">Custom CSS:</label>
159
- </td>
160
- <td>
161
- <textarea name="custom_css" id="custom_css" cols="25" rows="10"><?php echo get_option('custom_css');?></textarea>
162
- </td>
163
- <td style="vertical-align: top;">
164
- <p style="font-size:11px;"><i>(Add custom CSS classes)</i>
165
- </td>
166
- </tr>
167
- <tr>
168
- <td colspan="3">
169
- <input type="submit" name="submit" value="Submit" />
170
- </td>
171
- </tr>
172
- </table>
173
- </form>
174
- <?php
175
- }
176
-
177
- function modify_menu(){
178
- add_options_page('Animate It! Options'
179
- , 'Animate It!'
180
- , 'manage_options'
181
- , __FILE__
182
- , 'admin_edsanimate_options');
183
- }
184
-
185
-
186
- function add_eds_script_and_css()
187
- {
188
- $deviceType = detectDevice();
189
-
190
- $enableSmartPhone = get_option('enable_on_phone');
191
- $enableTablet = get_option('enable_on_tab');
192
-
193
-
194
- $enable= ($deviceType=='phone' && intval($enableSmartPhone))
195
- || ($deviceType =='tablet' && intval($enableTablet))
196
- || ($deviceType =='computer');
197
-
198
- if($enable):
199
- wp_register_style( 'animate-css',plugins_url( '/assets/css/animate.css', __FILE__ ));
200
-
201
- //Custom CSS//
202
- $custom_css = get_option('custom_css');
203
-
204
- wp_register_script( 'viewpointcheck-script',plugins_url( '/assets/js/viewportchecker.js', __FILE__ ),array('jquery'));
205
- wp_register_script( 'edsanimate-script', plugins_url( '/assets/js/edsanimate.js', __FILE__ ),array('viewpointcheck-script') );
206
- $offset = array( 'offset' => get_option('scroll_offset'));
207
- wp_localize_script( 'edsanimate-script', 'scroll_offset', $offset);
208
-
209
- //Enqueuing style sheets
210
- wp_enqueue_style( 'animate-css' );
211
- wp_add_inline_style( 'animate-css', $custom_css );
212
-
213
- //Enqueuing javascripts
214
- wp_enqueue_script( 'viewpointcheck-script');
215
- wp_enqueue_script( 'edsanimate-script');
216
- endif;
217
- }
218
-
219
-
220
-
221
-
222
- function edsanimate_handler( $attributes, $content = null ) {
223
-
224
- $deviceType = detectDevice();
225
-
226
- $enableSmartPhone = get_option('enable_on_phone');
227
- $enableTablet = get_option('enable_on_tab');
228
-
229
-
230
- $enable= ($deviceType=='phone' && intval($enableSmartPhone))
231
- || ($deviceType =='tablet' && intval($enableTablet))
232
- || ($deviceType =='computer');
233
-
234
- if($enable):
235
- extract( shortcode_atts( array(
236
- 'animation' => '',
237
- 'delay' => '',
238
- 'duration' => '',
239
- 'infinite_animation' =>'',
240
- 'animate_on' => '',
241
- 'scroll_offset' => ''
242
- ), $attributes ) );
243
-
244
-
245
- $classString = "animated";
246
-
247
- if($animation == '')
248
- {
249
- return do_shortcode($content);
250
- }
251
-
252
- $classString .= " " . $animation;
253
-
254
- if(strcasecmp($infinite_animation, 'yes')==0)
255
- $classString .= " infinite";
256
-
257
- if($delay!= '' && is_int((int)$delay) && $delay>=0)
258
- $classString .= " delay" . $delay;
259
-
260
- if($duration!= '' && is_int((int)$duration) && $duration>=0)
261
- $classString .= " duration" . $duration;
262
-
263
- if(strcasecmp($animate_on, 'scroll')==0)
264
- $classString .= " eds-on-scroll";
265
- else if(strcasecmp($animate_on, 'click')==0)
266
- $classString .= " eds-on-click";
267
- else if(strcasecmp($animate_on, 'hover')==0)
268
- $classString .= " eds-on-hover";
269
-
270
- if(isset($scroll_offset) && $scroll_offset!=''){
271
- return '<div class="'.$classString.'" eds_scroll_offset="'.$scroll_offset.'">'.do_shortcode($content).'</div>';
272
- }else
273
- return '<div class="'.$classString.'">'.do_shortcode($content).'</div>';
274
-
275
- else:
276
- return do_shortcode($content);
277
- endif;
278
-
279
- }
280
-
281
-
282
- function eds_add_custom_class_field($t,$return,$instance){
283
- $instance = wp_parse_args( (array) $instance, array( 'eds_animation_class' => '') );
284
- if ( !isset($instance['eds_animation_class']) )
285
- $instance['eds_animation_class'] = null;
286
- ?>
287
- <p>
288
- <label for="<?php echo $t->get_field_id('eds_animation_class'); ?>">Animate It Classes</label>
289
- <input type="text" name="<?php echo $t->get_field_name('eds_animation_class'); ?>" id="<?php echo $t->get_field_id('eds_animation_class'); ?>" value="<?php echo $instance['eds_animation_class'];?>" />
290
- </p>
291
- <?php
292
- $retrun = null;
293
- return array($t,$return,$instance);
294
-
295
- }
296
-
297
-
298
- function eds_update_widget_animation_class($instance, $new_instance, $old_instance){
299
- $instance['eds_animation_class'] = $new_instance['eds_animation_class'];
300
- return $instance;
301
- }
302
-
303
- function eds_add_widget_animation_class($params){
304
- global $wp_registered_widgets;
305
- $widget_id = $params[0]['widget_id'];
306
- $widget_obj = $wp_registered_widgets[$widget_id];
307
- $widget_opt = get_option($widget_obj['callback'][0]->option_name);
308
- $widget_num = $widget_obj['params'][0]['number'];
309
- if (isset($widget_opt[$widget_num]['eds_animation_class'])){
310
- $eds_animation_class = $widget_opt[$widget_num]['eds_animation_class'];
311
- $params[0]['before_widget'] = preg_replace('/class="/', 'class=" '.$eds_animation_class.' ', $params[0]['before_widget'], 1);
312
- }
313
- return $params;
314
- }
315
-
316
- //Admin Menu Options Filters
317
-
318
- add_filter('widget_text', 'do_shortcode');
319
- register_activation_hook(__FILE__, 'set_edsanimate_options');
320
- register_deactivation_hook(__FILE__, 'unset_edsanimate_options');
321
-
322
- add_action('in_widget_form', 'eds_add_custom_class_field',5,3);
323
- add_filter('widget_update_callback', 'eds_update_widget_animation_class',5,3);
324
- add_filter('dynamic_sidebar_params', 'eds_add_widget_animation_class');
325
-
326
- add_action('admin_menu', 'modify_menu');
327
- add_shortcode('edsanimate', 'edsanimate_handler');
328
- add_action('wp_enqueue_scripts', 'add_eds_script_and_css');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Plugin Name: Animate It!
4
+ * Plugin URI: http://www.eleopard.in
5
+ * Description: It will allow user to add CSS Animations
6
+ * Version: 2.0.1
7
+ * Author: eLEOPARD Design Studios
8
+ * Author URI: http://www.eleopard.in
9
+ * License: GNU General Public License version 2 or later; see LICENSE.txt
10
+ * http://www.gnu.org/copyleft/gpl.html GNU/GPL
11
+ (C) 2014 eLEOPARD Design Studios Pvt Ltd. All rights reserved
12
+
13
+ This program is free software; you can redistribute it and/or modify
14
+ it under the terms of the GNU General Public License, version 2, as
15
+ published by the Free Software Foundation.
16
+
17
+ This program is distributed in the hope that it will be useful,
18
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
19
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20
+ GNU General Public License for more details.
21
+
22
+ You should have received a copy of the GNU General Public License
23
+ along with this program; if not, write to the Free Software
24
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25
+
26
+ or see <http://www.gnu.org/licenses/>.
27
+ * For any other query please contact us at contact[at]eleopard[dot]in
28
+ */
29
+
30
+ include_once dirname( __FILE__ ) .'/assets/helper/class-eds-mobile-detect.php';
31
+ include_once dirname( __FILE__ ) .'/assets/helper/class-eds-tinymce.php';
32
+
33
+ class EDS_Animate {
34
+
35
+ public static $abs_file = null;
36
+
37
+ var $in_animations = array("bounceIn","bounceInDown","bounceInLeft","bounceInRight",
38
+ "bounceInUp","fadeIn","fadeInDown","fadeInDownBig","fadeInLeft",
39
+ "fadeInLeftBig","fadeInRight","fadeInRightBig","fadeInUp","fadeInUpBig",
40
+ "rotateIn","rotateInDownLeft","rotateInDownRight","rotateInUpLeft",
41
+ "rotateInUpRight","slideInUp","slideInDown","slideInLeft","slideInRight",
42
+ "zoomIn","zoomInDown","zoomInLeft","zoomInRight","zoomInUp","flipInX",
43
+ "flipInY","lightSpeedIn","rollIn");
44
+
45
+ public function __construct( $file_loc ) {
46
+
47
+ self::$abs_file = $file_loc;
48
+
49
+ add_filter('widget_text', 'do_shortcode');
50
+
51
+ register_activation_hook( self::$abs_file, array( $this, 'set_edsanimate_options' ) );
52
+
53
+ /*checking for version updates*/
54
+ add_action( 'plugins_loaded', array( $this, 'update_plugin' ) );
55
+
56
+ /* Adding Settings Menu */
57
+ add_action('admin_menu', array( $this, 'modify_menu' ) );
58
+
59
+ /* Enqueuing Scrips and CSS */
60
+ add_action('wp_enqueue_scripts', array( $this, 'add_eds_script_and_css' ) );
61
+
62
+ /* adding shortcodes */
63
+ add_shortcode('edsanimate_start', array( $this, 'edsanimate_start_handler' ) );
64
+ add_shortcode('edsanimate_end', array( $this, 'edsanimate_end_handler' ) );
65
+ add_shortcode('edsanimate', array( $this, 'edsanimate_handler' ) );
66
+
67
+ /*widget related actions*/
68
+ add_filter('widget_text', 'do_shortcode' );
69
+ add_action('in_widget_form', array( $this, 'eds_add_custom_class_field' ), 5, 3 );
70
+ add_filter('widget_update_callback', array( $this, 'eds_update_widget_animation_class' ), 5, 3 );
71
+ add_filter('dynamic_sidebar_params', array( $this, 'eds_add_widget_animation_class' ) );
72
+
73
+
74
+ /* TinyMCE Related Handlers */
75
+ $tinymce_handler = new EDS_TinyMCE();
76
+
77
+ add_action('init', array( $tinymce_handler, 'add_edsanimate_button') );
78
+
79
+ add_filter( 'tiny_mce_version', array( $tinymce_handler, 'refresh_mce' ) );
80
+
81
+ //Registering Ajax action to get the popup on click of animate it buton in editor
82
+ add_action( 'wp_ajax_edsanimate_get_popup', array( $tinymce_handler, 'get_popup' ) );
83
+
84
+
85
+ }
86
+
87
+ function modify_menu(){
88
+
89
+ add_options_page('Animate It! Options'
90
+ , 'Animate It!'
91
+ , 'manage_options'
92
+ , self::$abs_file
93
+ , array( $this, 'admin_edsanimate_options' ) );
94
+ }
95
+
96
+
97
+ function set_edsanimate_options(){
98
+
99
+ add_option( 'eds_scroll_offset', '75' );
100
+ add_option( 'eds_enable_on_phone', '0' );
101
+ add_option( 'eds_enable_on_tab', '1' );
102
+ add_option( 'eds_hide_overflow_x', '1' );
103
+ add_option( 'eds_hide_overflow_y', '0' );
104
+ add_option( 'eds_custom_css', '' );
105
+
106
+ }
107
+
108
+ function update_plugin() {
109
+
110
+ global $eds_animate_it_version;
111
+
112
+ $installed_version = get_option( 'eds_animate_it_version' );
113
+
114
+ if( $installed_version == FALSE ) {
115
+
116
+ add_option( 'eds_animate_it_version', '1.4.4' );
117
+
118
+ if( $eds_animate_it_version != '1.4.4') {
119
+
120
+ $scroll_offset = get_option( 'scroll_offset', '75' );
121
+ $enable_on_phone = get_option( 'enable_on_phone', '0' );
122
+ $enable_on_tab = get_option( 'enable_on_tab', '1' );
123
+ $hide_overflow_x = get_option( 'hide_overflow_x', '1' );
124
+ $hide_overflow_y = get_option( 'hide_overflow_y', '0' );
125
+ $custom_css = get_option( 'custom_css', '' );
126
+
127
+ delete_option('scroll_offset');
128
+ delete_option('enable_on_phone');
129
+ delete_option('enable_on_tab');
130
+ delete_option('hide_overflow_x');
131
+ delete_option('hide_overflow_y');
132
+ delete_option('custom_css');
133
+
134
+ add_option( 'eds_scroll_offset', $scroll_offset );
135
+ add_option( 'eds_enable_on_phone', $enable_on_phone );
136
+ add_option( 'eds_enable_on_tab', $enable_on_tab );
137
+ add_option( 'eds_hide_overflow_x', $hide_overflow_x );
138
+ add_option( 'eds_hide_overflow_y', $hide_overflow_y );
139
+ add_option( 'eds_custom_css', $custom_css );
140
+
141
+ update_option( 'eds_animate_it_version', $eds_animate_it_version );
142
+
143
+ }
144
+
145
+ } else {
146
+
147
+ if( $installed_version != $eds_animate_it_version ) {
148
+ /* Code Block to be used for next plugin upgrade */
149
+ }
150
+ }
151
+
152
+ }
153
+
154
+ function admin_edsanimate_options(){
155
+ ?>
156
+ <div class="wrap"><h2>Animate It! Options</h2></div>
157
+ <?php
158
+ if(isset($_REQUEST['submit'])){
159
+ $this->update_edsanimate_options();
160
+ }
161
+
162
+ $this->print_edsanimate_form();
163
+ ?></div><?php
164
+ }
165
+
166
+ function update_edsanimate_options(){
167
+ $ok= false;
168
+ if(isset($_REQUEST['eds_scroll_offset'])
169
+ && isset($_REQUEST['eds_enable_on_phone'])
170
+ && isset($_REQUEST['eds_enable_on_tab'])){
171
+ update_option('eds_scroll_offset', $_REQUEST['eds_scroll_offset']);
172
+ update_option('eds_enable_on_phone', $_REQUEST['eds_enable_on_phone']);
173
+ update_option('eds_hide_overflow_x', $_REQUEST['eds_hide_overflow_x']);
174
+ update_option('eds_hide_overflow_y', $_REQUEST['eds_hide_overflow_y']);
175
+ update_option('eds_enable_on_tab', $_REQUEST['eds_enable_on_tab']);
176
+ $ok=true;
177
+ }
178
+ update_option('eds_custom_css', esc_textarea(isset($_REQUEST['eds_custom_css'])?$_REQUEST['eds_custom_css']:''));
179
+
180
+
181
+ if($ok){?>
182
+ <div id="message" class="updated fade">
183
+ <p>Options saved.</p>
184
+ </div>
185
+ <?php
186
+
187
+ }else{?>
188
+ <div id="message" class="error fade">
189
+ <p>Failed to save options.</p>
190
+ </div>
191
+ <?php
192
+ }
193
+ }
194
+
195
+ function print_edsanimate_form(){
196
+ ?>
197
+ <a href="https://wordpress.org/support/view/plugin-reviews/animate-it" target="_blank"
198
+ style="display: inline-block; margin-top: 10px; padding-top: 4px;">
199
+ <img src="<?php echo plugins_url( '/assets/images/banner.jpg', self::$abs_file )?>" />
200
+ </a>
201
+ <form method="post">
202
+ <table cellspacing="10" cellpadding="10">
203
+ <tr>
204
+ <td style="vertical-align: top;">
205
+ <label for="eds_scroll_offset">Scroll Offset (in percentage):</label>
206
+ </td>
207
+ <td colspan="2">
208
+ <input type="text" name="eds_scroll_offset" value="<?php echo get_option('eds_scroll_offset', '75'); ?>" />
209
+ </td>
210
+
211
+ </tr>
212
+ <tr>
213
+ <td style="vertical-align: top;">
214
+ <label for="eds_enable_on_phone">Enable on Smartphones:</label>
215
+ </td>
216
+ <td>
217
+ <select name="eds_enable_on_phone">
218
+ <option value="1" <?php echo (get_option('eds_enable_on_phone')=='1')?'selected="selected"':'';?>>Yes</option>
219
+ <option value="0" <?php echo (get_option('eds_enable_on_phone')=='0')?'selected="selected"':'';?>>No</option>
220
+ </select>
221
+ </td>
222
+ </tr>
223
+ <tr>
224
+ <td style="vertical-align: top;">
225
+ <label for="eds_enable_on_tab">Enable on Tablets:</label>
226
+ </td>
227
+ <td>
228
+ <select name="eds_enable_on_tab">
229
+ <option value="1" <?php echo (get_option('eds_enable_on_tab')=='1')?'selected="selected"':'';?>>Yes</option>
230
+ <option value="0" <?php echo (get_option('eds_enable_on_tab')=='0')?'selected="selected"':'';?>>No</option>
231
+ </select>
232
+ </td>
233
+ </tr>
234
+ <tr>
235
+ <td style="vertical-align: top;">
236
+ <label for="eds_hide_overflow_x">Hide Horizontal Scrollbar:</label>
237
+ </td>
238
+ <td>
239
+ <select name="eds_hide_overflow_x">
240
+ <option value="1" <?php echo (get_option('eds_hide_overflow_x')=='1')?'selected="selected"':'';?>>Yes</option>
241
+ <option value="0" <?php echo (get_option('eds_hide_overflow_x')=='0')?'selected="selected"':'';?>>No</option>
242
+ </select>
243
+ </td>
244
+ </tr>
245
+ <tr>
246
+ <td style="vertical-align: top;">
247
+ <label for="eds_hide_overflow_y">Hide Vertical Scrollbar:</label>
248
+ </td>
249
+ <td>
250
+ <select name="eds_hide_overflow_y">
251
+ <option value="1" <?php echo (get_option('eds_hide_overflow_y')=='1')?'selected="selected"':'';?>>Yes</option>
252
+ <option value="0" <?php echo (get_option('eds_hide_overflow_y')=='0')?'selected="selected"':'';?>>No</option>
253
+ </select>
254
+ </td>
255
+ </tr>
256
+ <tr>
257
+ <td style="vertical-align: top;">
258
+ <label for="eds_custom_css">Custom CSS:</label>
259
+ </td>
260
+ <td>
261
+ <textarea name="eds_custom_css" id="eds_custom_css" cols="25" rows="10"><?php echo get_option('eds_custom_css');?></textarea>
262
+ </td>
263
+ </tr>
264
+ <tr>
265
+ <td colspan="2">
266
+ <input class="button button-primary" type="submit" name="submit" value="Submit" />
267
+ </td>
268
+ </tr>
269
+ </table>
270
+ </form>
271
+ <?php
272
+ }
273
+
274
+ function detect_device()
275
+ {
276
+ static $device_type = null;
277
+
278
+ if(!$device_type)
279
+ {
280
+ $detect = new EDS_Mobile_Detect();
281
+ $device_type = ($detect->isMobile() ? ($detect->isTablet() ? 'tablet' : 'phone') : 'computer');
282
+ }
283
+ return $device_type;
284
+
285
+ }
286
+
287
+ function add_eds_script_and_css() {
288
+
289
+ $device_type = $this->detect_device();
290
+
291
+ $enable_smart_phone = get_option('eds_enable_on_phone');
292
+ $enable_tablet = get_option('eds_enable_on_tab');
293
+
294
+
295
+ $enable= ($device_type=='phone' && intval($enable_smart_phone))
296
+ || ($device_type =='tablet' && intval($enable_tablet))
297
+ || ($device_type =='computer');
298
+
299
+ if($enable):
300
+
301
+ wp_register_style( 'edsanimate-animo-css',plugins_url( '/assets/css/animate-animo.css', self::$abs_file ));
302
+
303
+ //Custom CSS//
304
+ $custom_css = get_option('eds_custom_css');
305
+
306
+ wp_register_script( 'edsanimate-animo-script',plugins_url( '/assets/js/animo.min.js', self::$abs_file ), array('jquery'), '1.0.3', true);
307
+
308
+ wp_register_script( 'edsanimate-throttle-debounce-script',plugins_url( '/assets/js/jquery.ba-throttle-debounce.min.js', self::$abs_file ), array('jquery'), '1.1', true);
309
+
310
+ //START: Scripts to Support Older Version
311
+ wp_register_script( 'viewportcheck-script',plugins_url( '/assets/js/viewportchecker.js', self::$abs_file), array('jquery', 'edsanimate-throttle-debounce-script' ), '1.4.4', true);
312
+
313
+ wp_register_script( 'edsanimate-script', plugins_url( '/assets/js/edsanimate.js', self::$abs_file ), array('viewportcheck-script'), '1.4.4', true );
314
+ //END: : Scripts to Support Older Version
315
+
316
+ wp_register_script( 'edsanimate-site-script', plugins_url( '/assets/js/edsanimate.site.js', self::$abs_file ), array('edsanimate-animo-script', 'edsanimate-throttle-debounce-script' ), '1.4.5', true );
317
+
318
+ $edsanimate_options = array( 'offset' => get_option('eds_scroll_offset', '75'),
319
+ 'hide_hz_scrollbar' => get_option('eds_hide_overflow_x', '1'),
320
+ 'hide_vl_scrollbar' => get_option('eds_hide_overflow_y', '0'));
321
+
322
+ wp_localize_script( 'edsanimate-site-script', 'edsanimate_options', $edsanimate_options);
323
+
324
+ //Enqueuing style sheets
325
+ wp_enqueue_style( 'edsanimate-animo-css' );
326
+ wp_add_inline_style( 'edsanimate-animo-css', $custom_css );
327
+
328
+ //Enqueuing javascripts
329
+ wp_enqueue_script( 'edsanimate-animo-script');
330
+ wp_enqueue_script( 'edsanimate-throttle-debounce-script' );
331
+ wp_enqueue_script( 'viewportcheck-script');
332
+ wp_enqueue_script( 'edsanimate-script');
333
+ wp_enqueue_script( 'edsanimate-site-script');
334
+
335
+ endif;
336
+ }
337
+
338
+ function edsanimate_handler( $attributes, $content = null ) {
339
+
340
+ $device_type = $this->detect_device();
341
+
342
+ $enable_smart_phone = get_option('eds_enable_on_phone');
343
+ $enable_tablet = get_option('eds_enable_on_tab');
344
+
345
+
346
+ $enable= ($device_type=='phone' && intval($enable_smart_phone))
347
+ || ($device_type =='tablet' && intval($enable_tablet))
348
+ || ($device_type =='computer');
349
+
350
+ if($enable):
351
+
352
+ extract( shortcode_atts( array(
353
+ 'animation' => '',
354
+ 'delay' => '',
355
+ 'duration' => '',
356
+ 'infinite_animation' =>'',
357
+ 'animate_on' => '',
358
+ 'scroll_offset' => ''
359
+ ), $attributes ) );
360
+
361
+
362
+ $classString = "animated";
363
+
364
+ if($animation == '')
365
+ {
366
+ return do_shortcode($content);
367
+ }
368
+
369
+ $classString .= " " . $animation;
370
+
371
+ if(strcasecmp($infinite_animation, 'yes')==0) {
372
+ $classString .= " infinite";
373
+ }
374
+
375
+ if($delay!= '' && is_int((int)$delay) && $delay>=0) {
376
+ $classString .= " delay" . $delay;
377
+ }
378
+
379
+ if($duration!= '' && is_int((int)$duration) && $duration>=0) {
380
+ $classString .= " duration" . $duration;
381
+ }
382
+
383
+ if(strcasecmp($animate_on, 'scroll')==0) {
384
+ $classString .= " eds-on-scroll";
385
+ } else if(strcasecmp($animate_on, 'click')==0) {
386
+ $classString .= " eds-on-click";
387
+ } else if(strcasecmp($animate_on, 'hover')==0) {
388
+ $classString .= " eds-on-hover";
389
+ }
390
+
391
+
392
+ if(isset($scroll_offset) && $scroll_offset!=''){
393
+ return '<div class="'.$classString.'" eds_scroll_offset="'.$scroll_offset.'">'.do_shortcode($content).'</div>';
394
+ }else {
395
+ return '<div class="'.$classString.'">'.do_shortcode($content).'</div>';
396
+ }
397
+
398
+ else:
399
+ return do_shortcode($content);
400
+ endif;
401
+
402
+ }
403
+
404
+
405
+
406
+ function edsanimate_start_handler( $attributes, $content = null ) {
407
+
408
+ $device_type = $this->detect_device();
409
+
410
+ $enable_smart_phone = get_option('eds_enable_on_phone');
411
+ $enable_tablet = get_option('eds_enable_on_tab');
412
+
413
+
414
+ $enable= ($device_type=='phone' && intval($enable_smart_phone))
415
+ || ($device_type =='tablet' && intval($enable_tablet))
416
+ || ($device_type =='computer');
417
+
418
+ if( !$enable ) {
419
+ return '';
420
+ }
421
+
422
+ $hide_on_load_css_class = '';
423
+ $entry_animation = isset( $attributes['entry_animation_type'] ) ? $attributes['entry_animation_type']: '';
424
+
425
+ if( 'scroll' == $attributes['animate_on'] || 'load' == $attributes['animate_on'] ) {
426
+ $hide_on_load_css_class = ( in_array( $entry_animation, $this->in_animations ) ) ? 'edsanimate-sis-hidden' : '';
427
+ }
428
+ $content = array(
429
+ '<div class="eds-animate ', $hide_on_load_css_class, ' ', isset( $attributes['custom_css_class'] ) ? $attributes['custom_css_class'] : '', '"',
430
+ ' data-eds-entry-animation="', $entry_animation, '"',
431
+ ' data-eds-entry-delay="', isset( $attributes['entry_delay'] ) ? $attributes['entry_delay'] : '', '"',
432
+ ' data-eds-entry-duration="', isset( $attributes['entry_duration'] ) ? $attributes['entry_duration'] : '', '"',
433
+ ' data-eds-entry-timing="', isset( $attributes['entry_timing'] ) ? $attributes['entry_timing'] : '', '"',
434
+ ' data-eds-exit-animation="', isset( $attributes['exit_animation_type'] ) ? $attributes['exit_animation_type'] : '', '"',
435
+ ' data-eds-exit-delay="', isset( $attributes['exit_delay'] ) ? $attributes['exit_delay'] : '', '"',
436
+ ' data-eds-exit-duration="', isset( $attributes['exit_duration'] ) ? $attributes['exit_duration'] : '', '"',
437
+ ' data-eds-exit-timing="', isset( $attributes['exit_timing'] ) ? $attributes['exit_timing'] : '', '"',
438
+ ' data-eds-repeat-count="', isset( $attributes['animation_repeat'] ) ? $attributes['animation_repeat'] : '', '"',
439
+ ' data-eds-keep="', isset( $attributes['keep'] ) ? $attributes['keep'] : '', '"',
440
+ ' data-eds-animate-on="', isset( $attributes['animate_on'] ) ? $attributes['animate_on'] : '', '"',
441
+ ' data-eds-scroll-offset="', isset( $attributes['scroll_offset'] ) ? $attributes['scroll_offset'] :'', '">' );
442
+
443
+ return implode( "", $content );
444
+ }
445
+
446
+ function edsanimate_end_handler( $attributes, $content = null ) {
447
+
448
+ $device_type = $this->detect_device();
449
+
450
+ $enable_smart_phone = get_option('eds_enable_on_phone');
451
+ $enable_tablet = get_option('eds_enable_on_tab');
452
+
453
+
454
+ $enable= ($device_type=='phone' && intval($enable_smart_phone))
455
+ || ($device_type =='tablet' && intval($enable_tablet))
456
+ || ($device_type =='computer');
457
+
458
+ if( !$enable ) {
459
+ return '';
460
+ }
461
+
462
+ return '</div>';
463
+
464
+ }
465
+
466
+ //Widget settings related functions
467
+ function eds_add_custom_class_field( $t, $return, $instance ){
468
+ $instance = wp_parse_args( (array) $instance, array( 'eds_animation_class' => '') );
469
+ if ( !isset( $instance['eds_animation_class'] ) )
470
+ $instance['eds_animation_class'] = null;
471
+ ?>
472
+ <p>
473
+ <label for="<?php echo $t->get_field_id('eds_animation_class'); ?>">Animate It Classes</label>
474
+ <input type="text" name="<?php echo $t->get_field_name('eds_animation_class'); ?>" id="<?php echo $t->get_field_id('eds_animation_class'); ?>" value="<?php echo $instance['eds_animation_class'];?>" />
475
+ </p>
476
+ <?php
477
+ $retrun = null;
478
+ return array( $t, $return, $instance );
479
+
480
+ }
481
+
482
+
483
+ function eds_update_widget_animation_class( $instance, $new_instance, $old_instance ){
484
+ $instance['eds_animation_class'] = $new_instance['eds_animation_class'];
485
+ return $instance;
486
+ }
487
+
488
+ function eds_add_widget_animation_class( $params ){
489
+ global $wp_registered_widgets;
490
+ $widget_id = $params[0]['widget_id'];
491
+ $widget_obj = $wp_registered_widgets[$widget_id];
492
+ $widget_opt = get_option($widget_obj['callback'][0]->option_name);
493
+ $widget_num = $widget_obj['params'][0]['number'];
494
+ if( isset($widget_opt[$widget_num]['eds_animation_class'] ) ){
495
+ $eds_animation_class = $widget_opt[$widget_num]['eds_animation_class'];
496
+ $params[0]['before_widget'] = preg_replace('/class="/', 'class=" '.$eds_animation_class.' ', $params[0]['before_widget'], 1);
497
+ }
498
+ return $params;
499
+ }
500
+ }
501
+
502
+ if( !defined( 'WPINC' ) ) {
503
+ die;
504
+ }
505
+
506
+ global $eds_animate_it_version;
507
+
508
+ $eds_animate_it_version = '2.0.0';
509
+
510
+ new EDS_Animate( __FILE__ );
legal.txt CHANGED
@@ -1,10 +1,12 @@
1
- This free (GPL) Scripts and CSS get used in easyReservations.
2
  Thanks to the developers.
3
 
4
  Scripts
5
  http://www.bootstrap-switch.org/
6
  https://github.com/dirkgroenen/jQuery-viewport-checker
7
  http://mobiledetect.net/
 
 
8
 
9
  CSS
10
  http://daneden.github.io/animate.css/
1
+ This free (GPL) Scripts and CSS.
2
  Thanks to the developers.
3
 
4
  Scripts
5
  http://www.bootstrap-switch.org/
6
  https://github.com/dirkgroenen/jQuery-viewport-checker
7
  http://mobiledetect.net/
8
+ http://labs.bigroomstudios.com/libraries/animo-js
9
+ http://benalman.com/code/projects/jquery-throttle-debounce/docs/files/jquery-ba-throttle-debounce-js.html
10
 
11
  CSS
12
  http://daneden.github.io/animate.css/
readme.txt CHANGED
@@ -1,41 +1,39 @@
1
  === Animate It! ===
2
  Contributors: eleopard
3
- Tags: css3 animation, animate.css, jquery, on scroll animation, delay animation
4
- Requires at least: 3.3
5
- Tested up to: 4.1.1
6
- Stable tag: 1.4.4
7
  License: GNU General Public License version 2 or later
8
  License URI: http://www.gnu.org/copyleft/gpl.html
9
 
10
- Animate It! is a WordPress Plugin designed and developed to provide an efficient and user friendly solution to apply beautiful CSS3 animations.
11
 
12
  == Description ==
13
- Animate It! is a WordPress Plugin designed and developed to provide an efficient and user friendly solution to apply beautiful CSS3 animations on WordPress Posts and Widgets.
 
 
14
 
15
-
16
-
17
  [youtube https://www.youtube.com/watch?v=Np_t43pfrh4]
18
 
19
  Some of the Key features Include:
20
 
21
- * Allowing user to apply CSS3 animations on WordPress Posts and Text Widgets
22
- * 50+ Entry, Exit and Attention Seeker Animations
23
- * Capability to apply animation on Scroll
24
- * Capability to add different scroll offset on individual animation blocks
25
- * Capability to apply animation on Hover
26
- * Capability to apply animation on Click
27
- * Provide special CSS delay classes to create a nice animation sequence on pages and posts
28
- * Allow user to add animation duration
29
- * Allow user to apply animation infinitely
30
- * Options to enable or disable animations on Smartphones and Tablets.
31
- * Feature to add custom CSS class for additional delay, duration etc.
32
- * Allow users to apply animation on WordPress Widgets. Use <a href="http://downloads.eleopard.in/class-generator-wordpress/" target="_blank">Class Generator</a> to generate the required animation classes.
33
-
34
- All the CSS3 animations are from [Animate.css](http://daneden.github.io/animate.css/ "Animate.css")
35
-
36
- [Demo](http://downloads.eleopard.in/animate-it-demo-wordpress/ "Demo") | [Documentation](http://downloads.eleopard.in/animate-it-documentation-wordpress/ "Documentation") | [Class Generator](http://downloads.eleopard.in/class-generator-wordpress/ "Class Generator")
37
-
38
-
39
  == Installation ==
40
  1. Upload edsanimate to the /wp-content/plugins/ directory.
41
  2. Activate the plugin through the Plugins menu in WordPress.
@@ -53,19 +51,42 @@ Alternatively:
53
  = Setting the scroll offset for on scroll functionality? =
54
  Percentage scroll offset can be set from Settings-> Animate It! menu in the admin area.
55
 
 
 
 
 
 
 
 
 
 
 
 
56
  == Screenshots ==
57
 
58
  1. **Animate Button** - Add animation blocks in WordPress Post and Pages using the Animate It! button.
59
  2. **Select Animation** - After clicking Animate It! button you will get a screen to choose animation.
60
- 3. **Animation Block** - Update the content of the block as per your requirement. You can copy and paste the same in Text Widget also.
61
- 4. **Settings** - Options for Animate It! under Settings-> Animate It! menu in the admin area.
62
- 5. **Class Generator** - Class Generator to generate required Animation Classes for Widgets.
63
- 6. **Copy Generated Classes** - Copy the generated classes.
64
- 7. **Apply on Widgets** - Apply the copied classes by pasting it in the 'Animate It! Classes' text box under the widget settings.
 
 
65
 
66
 
67
  == Changelog ==
68
 
 
 
 
 
 
 
 
 
 
 
69
  = Version 1.4.4 =
70
  * Bug fix related to the addition of animation classes on widgets
71
 
@@ -88,10 +109,8 @@ Percentage scroll offset can be set from Settings-> Animate It! menu in the admi
88
  = Version 1.3.2 =
89
  * Resolved issue related to infinite animation and on hover combination.
90
 
91
-
92
  = Version 1.3.1 =
93
- * Resolved issue related to widget content update and save.
94
-
95
 
96
  = Version 1.3 =
97
  * Capability to apply animation on Hover.
@@ -113,4 +132,4 @@ Percentage scroll offset can be set from Settings-> Animate It! menu in the admi
113
  == Upgrade Notice ==
114
 
115
  = Version 1.0 =
116
- * Initial public release.
1
  === Animate It! ===
2
  Contributors: eleopard
3
+ Tags: css3 animation, animate.css, jquery, on scroll animation, delay, infinite, entry exit, iteration
4
+ Requires at least: 3.9
5
+ Tested up to: 4.4.2
6
+ Stable tag: 2.0.1
7
  License: GNU General Public License version 2 or later
8
  License URI: http://www.gnu.org/copyleft/gpl.html
9
 
10
+ Add cool CSS3 animations to your content.
11
 
12
  == Description ==
13
+ Add cool CSS3 animations to your content.
14
+
15
+ [Demo](http://downloads.eleopard.in/animate-it-demo-wordpress/ "Demo") | [Documentation](http://downloads.eleopard.in/animate-it-documentation-wordpress/ "Documentation") | [Class Generator](http://downloads.eleopard.in/class-generator-wordpress/ "Class Generator")
16
 
 
 
17
  [youtube https://www.youtube.com/watch?v=Np_t43pfrh4]
18
 
19
  Some of the Key features Include:
20
 
21
+ * Allowing user to apply CSS3 animations on Post, Widget and Pages.
22
+ * 50+ Entry, Exit and Attention Seeker Animations.
23
+ * Capability to apply animation on Scroll.
24
+ * Capability to add different scroll offset on individual animation blocks.
25
+ * Capability to apply animation on Click.
26
+ * Capability to apply animation on Hover.
27
+ * Providing delay feature in animation to create a nice animation sequence.
28
+ * Providing feature to control the duration for a more precise animation.
29
+ * Providing a button in the editor to easily add an animation block in the article or post.
30
+ * Allow user to add animation on WordPress widgets. Use <a href="http://downloads.eleopard.in/class-generator-wordpress/" target="_blank">Class Generator</a> to generate the required animation classes.
31
+ * Allow user to apply animation infinitely or any fixed number of times.
32
+ * Option to add custom CSS classes to individual animation block.
33
+ * Options to enable or disable animations on Smartphones and Tablets.
34
+
35
+ All the CSS3 animations are from [Animate.css](http://daneden.github.io/animate.css/ "Animate.css") and [Animo.js](http://labs.bigroomstudios.com/libraries/animo-js "Animo.js")
36
+
 
 
37
  == Installation ==
38
  1. Upload edsanimate to the /wp-content/plugins/ directory.
39
  2. Activate the plugin through the Plugins menu in WordPress.
51
  = Setting the scroll offset for on scroll functionality? =
52
  Percentage scroll offset can be set from Settings-> Animate It! menu in the admin area.
53
 
54
+ = Hiding horizontal and vertical scroll bar? =
55
+ Settings to show or hide vertical or horizontal scroll bar are available at Settings-> Animate It! menu in the admin area.
56
+
57
+ = Animation applied using older plugin and class generator won't work? =
58
+ If animation applied using class generator or older plugin wont work, Please do the following:
59
+ If using shortcode:
60
+ Add duration="1" (you can add 1 to 12) as one of the attribute of the shortcode.
61
+
62
+ If using class generator:
63
+ Add duration class ( duration1 to duration12 ) along with the other classes. or use the class generator one more time to generate same animation classes.
64
+
65
  == Screenshots ==
66
 
67
  1. **Animate Button** - Add animation blocks in WordPress Post and Pages using the Animate It! button.
68
  2. **Select Animation** - After clicking Animate It! button you will get a screen to choose animation.
69
+ 3. **Entry Exit Animation** - Select and configure the entry and exit animations.
70
+ 4. **Other Options** - Select other options like iteration count etc.
71
+ 5. **Update Dummy Content** - Update the content of the block as per your requirement. You can copy and paste the same in Text Widget also.
72
+ 6. **Settings** - Options for Animate It! under Settings-> Animate It! menu in the admin area.
73
+ 7. **Class Generator** - Class Generator to generate required Animation Classes for Widgets.
74
+ 8. **Copy Generated Classes** - Copy the generated classes.
75
+ 9. **Apply on Widgets** - Apply the copied classes by pasting it in the 'Animate It! Classes' text box under the widget settings.
76
 
77
 
78
  == Changelog ==
79
 
80
+ = Version 2.0.1 =
81
+ * Minor changes to handle higher load time
82
+
83
+ = Version 2.0.0 =
84
+ * New Feature to create Entry Exit Animation sequence
85
+ * New Feature to provide custom delay and durations while generating shortcode
86
+ * New Feature to apply timing functions
87
+ * New Feature to iterate the animation n number of times
88
+ * Code optimization for tinymce popup
89
+
90
  = Version 1.4.4 =
91
  * Bug fix related to the addition of animation classes on widgets
92
 
109
  = Version 1.3.2 =
110
  * Resolved issue related to infinite animation and on hover combination.
111
 
 
112
  = Version 1.3.1 =
113
+ * Resolved issue related to widget content update and save.
 
114
 
115
  = Version 1.3 =
116
  * Capability to apply animation on Hover.
132
  == Upgrade Notice ==
133
 
134
  = Version 1.0 =
135
+ * Initial public release.
uninstall.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if( !defined( 'WP_UNINSTALL_PLUGIN' ) )
4
+ exit;
5
+
6
+ delete_option('eds_scroll_offset');
7
+ delete_option('eds_enable_on_phone');
8
+ delete_option('eds_enable_on_tab');
9
+ delete_option('eds_hide_overflow_x');
10
+ delete_option('eds_hide_overflow_y');
11
+ delete_option('eds_custom_css');
12
+ delete_option('eds_animate_it_version');