Sulopa_Countdown - Version 1.0.0

Version Notes

Version 1.0.0

Download this release

Release Info

Developer Sulopa Sulotion
Extension Sulopa_Countdown
Version 1.0.0
Comparing to
See all releases


Version 1.0.0

app/code/community/Sulopa/Countdown/Block/Adminhtml/System/Config/Date.php ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Sulopa_Countdown_Block_Adminhtml_System_Config_Date extends Mage_Adminhtml_Block_System_Config_Form_Field{
3
+
4
+ protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element) {
5
+ $res = '';
6
+ $divId = $element->getId();
7
+ $res .= <<<EOD
8
+ <input name="{$element->getName()}" id="{$divId}_date" value="{$element->getValue()}" type="text" style="width:130px !important;" /> <img src="{$this->getSkinUrl('images/grid-cal.gif')}" alt="" id="{$divId}_date_trig" title="{$this->__('Select Date')}" style="" />
9
+ <script type="text/javascript">
10
+ //<![CDATA[
11
+ //this example uses dd.MM.yyyy hh:mm format.
12
+ Calendar.setup({
13
+ inputField: "{$divId}_date",
14
+ ifFormat: "%Y-%m-%d %H:%M:%S",
15
+ showsTime: true,
16
+ firstDay: 1,
17
+ timeFormat: "24",
18
+ button: "{$divId}_date_trig",
19
+ align: "Bl",
20
+ singleClick : true
21
+ });
22
+
23
+ //]]>
24
+ </script>
25
+ EOD;
26
+ return $res;
27
+ }
28
+ }
29
+ ?>
app/code/community/Sulopa/Countdown/Block/Countdown.php ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ <?php
2
+ class Sulopa_Countdown_Block_Countdown extends Mage_Catalog_Block_Product_View_Abstract {
3
+
4
+ }
app/code/community/Sulopa/Countdown/Controller/Router/Standard.php ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Sulopa_Countdown_Controller_Router_Standard extends Mage_Core_Controller_Varien_Router_Standard{
3
+
4
+ public function match(Zend_Controller_Request_Http $request){
5
+ $storeenabled = Mage::getStoreConfig('countdown/countdown/enabled', $request->getStoreCodeFromPath());
6
+ $clockenabled = Mage::getStoreConfig('countdown/countdown/settime', $request->getStoreCodeFromPath());
7
+ $now = new DateTime(date('Y-m-d H:i:s'));
8
+ $ref = new DateTime($clockenabled);
9
+ $diff = $now->diff($ref);
10
+ $days = ($diff->days)+(($diff->h+(($diff->i+($diff->s/60))/60))/24);
11
+ $remailday = Mage::getStoreConfig('countdown/countdown/timer',Mage::app()->getStore())-$days;
12
+ if ($storeenabled){
13
+ if($now >= $ref){
14
+ if($remailday > 0){
15
+
16
+ Mage::getSingleton('core/session', array('name' => 'adminhtml'));
17
+ if (!Mage::getSingleton('admin/session')->isLoggedIn())
18
+ {
19
+ Mage::getSingleton('core/session', array('name' => 'front'));
20
+
21
+ $front = $this->getFront();
22
+ $response = $front->getResponse();
23
+ $response->setHeader('HTTP/1.1','503 Service Temporarily Unavailable');
24
+ $response->setHeader('Status','503 Service Temporarily Unavailable');
25
+ $response->setHeader('Retry-After','5000');
26
+ $html = Mage::app()->getLayout()->createBlock('core/template')->setTemplate('Countdown/Countdown.phtml')->toHtml();
27
+ $response->setBody(html_entity_decode( $html, ENT_QUOTES, "utf-8" )); $response->sendHeaders();
28
+ $response->outputBody();
29
+
30
+ exit;
31
+ }
32
+ else
33
+ {
34
+ $showreminder = Mage::getStoreConfig('countdown/countdown/showreminder', $request->getStoreCodeFromPath());
35
+ if ($showreminder)
36
+ {
37
+ $front = $this->getFront();
38
+ $response = $front->getResponse()->appendBody('<div style="height:12px; background:red; color: white; position:relative; width:100%;padding:3px 0; z-index:100000;text-trasform:capitalize;">Offline</div>');
39
+ }
40
+ }
41
+ }
42
+ }
43
+ }
44
+ return parent::match($request);
45
+
46
+ }
47
+ }
app/code/community/Sulopa/Countdown/Helper/Data.php ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ <?php
2
+ class Sulopa_Countdown_Helper_Data extends Mage_Core_Helper_Abstract
3
+ {
4
+
5
+ }
app/code/community/Sulopa/Countdown/etc/config.xml ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" ?>
2
+ <config>
3
+ <modules>
4
+ <Sulopa_Countdown>
5
+ <version>0.1.0</version>
6
+ </Sulopa_Countdown>
7
+ </modules>
8
+ <stores>
9
+ <default>
10
+ <web>
11
+ <routers>
12
+ <standard><area>frontend</area><class>Sulopa_Countdown_Controller_Router_Standard</class></standard>
13
+ </routers>
14
+ </web>
15
+ </default>
16
+ </stores>
17
+ <default>
18
+ <web>
19
+ <routers>
20
+ <standard><area>frontend</area><class>Sulopa_Countdown_Controller_Router_Standard</class></standard>
21
+ </routers>
22
+ </web>
23
+ <countdown>
24
+ <countdown>
25
+ <timer><![CDATA[3]]></timer>
26
+ <settime><![CDATA[2015-07-12 12:00:00]]></settime>
27
+ <setmessage><![CDATA[This is my clock]]></setmessage>
28
+ <setemail><![CDATA[slaes@sulopastore.com]]></setemail>
29
+ <enabled>0</enabled>
30
+ <clockstatus>0</clockstatus>
31
+ </countdown>
32
+ </countdown>
33
+ </default>
34
+ <adminhtml>
35
+ <acl>
36
+ <resources>
37
+ <all>
38
+ <title>Allow Everything</title>
39
+ </all>
40
+ <admin>
41
+ <children>
42
+ <Sulopa_Countdown>
43
+ <title>Sulopa Clock</title>
44
+ <sort_order>10</sort_order>
45
+ </Sulopa_Countdown>
46
+ <system>
47
+ <children>
48
+ <config>
49
+ <children>
50
+ <countdown>
51
+ <title>Clock by sulopa</title>
52
+ <sort_order>50</sort_order>
53
+ </countdown>
54
+ </children>
55
+ </config>
56
+ </children>
57
+ </system>
58
+ </children>
59
+ </admin>
60
+ </resources>
61
+ </acl>
62
+ </adminhtml>
63
+ <global>
64
+ <helpers>
65
+ <countdown>
66
+ <class>Sulopa_Countdown_Helper</class>
67
+ </countdown>
68
+ </helpers>
69
+ <blocks>
70
+ <countdown>
71
+ <class>Sulopa_Countdown_Block</class>
72
+ </countdown>
73
+ </blocks>
74
+ </global>
75
+ </config>
app/code/community/Sulopa/Countdown/etc/system.xml ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <tabs>
4
+ <sulopabase>
5
+ <label>Sulopa Extensions</label>
6
+ <sort_order>400</sort_order>
7
+ </sulopabase>
8
+ </tabs>
9
+ <sections>
10
+ <countdown>
11
+ <label>Sulopa Clock</label>
12
+ <tab>sulopabase</tab>
13
+ <sort_order>130</sort_order>
14
+ <show_in_default>1</show_in_default>
15
+ <show_in_website>1</show_in_website>
16
+ <show_in_store>1</show_in_store>
17
+ <groups>
18
+ <countdown>
19
+ <label>Sulopa Clock parameters</label>
20
+ <frontend_type>text</frontend_type>
21
+ <sort_order>10</sort_order>
22
+ <show_in_default>1</show_in_default>
23
+ <show_in_website>1</show_in_website>
24
+ <show_in_store>1</show_in_store>
25
+ <fields>
26
+ <clockstatus>
27
+ <label>Show Clock Status</label>
28
+ <frontend_type>select</frontend_type>
29
+ <source_model>adminhtml/system_config_source_yesno</source_model>
30
+ <sort_order>1</sort_order>
31
+ <show_in_default>1</show_in_default>
32
+ <show_in_website>0</show_in_website>
33
+ <show_in_store>1</show_in_store>
34
+ </clockstatus>
35
+ <timer>
36
+ <label>Set Day</label>
37
+ <frontend_type>text</frontend_type>
38
+ <sort_order>1</sort_order>
39
+ <show_in_default>1</show_in_default>
40
+ <show_in_website>0</show_in_website>
41
+ <show_in_store>1</show_in_store>
42
+ <comment>e.g 3 day</comment>
43
+ </timer>
44
+ <settime>
45
+ <label>Set timer</label>
46
+ <frontend_type>text</frontend_type>
47
+ <frontend_model>sulopa_countdown_block_adminhtml_system_config_date</frontend_model>
48
+ <sort_order>1</sort_order>
49
+ <show_in_default>1</show_in_default>
50
+ <show_in_website>0</show_in_website>
51
+ <show_in_store>1</show_in_store>
52
+ <comment>e.g 06-05-2013 00:00:00</comment>
53
+ </settime>
54
+ <setmessage>
55
+ <label>Set Message</label>
56
+ <frontend_type>textarea</frontend_type>
57
+ <sort_order>1</sort_order>
58
+ <show_in_default>1</show_in_default>
59
+ <show_in_website>0</show_in_website>
60
+ <show_in_store>1</show_in_store>
61
+ </setmessage>
62
+ <enabled translate="label">
63
+ <label>Store Offline</label>
64
+ <frontend_type>select</frontend_type>
65
+ <source_model>adminhtml/system_config_source_yesno</source_model>
66
+ <sort_order>1</sort_order>
67
+ <show_in_default>1</show_in_default>
68
+ <show_in_website>0</show_in_website>
69
+ <show_in_store>1</show_in_store>
70
+ </enabled>
71
+ <setemail>
72
+ <label>Set Email</label>
73
+ <frontend_type>text</frontend_type>
74
+ <sort_order>1</sort_order>
75
+ <show_in_default>1</show_in_default>
76
+ <show_in_website>0</show_in_website>
77
+ <show_in_store>1</show_in_store>
78
+ </setemail>
79
+ <showreminder translate="label">
80
+ <label>Show Website Status </label>
81
+ <frontend_type>select</frontend_type>
82
+ <source_model>adminhtml/system_config_source_yesno</source_model>
83
+ <sort_order>1</sort_order>
84
+ <show_in_default>1</show_in_default>
85
+ <show_in_website>0</show_in_website>
86
+ <show_in_store>1</show_in_store>
87
+ </showreminder>
88
+ </fields>
89
+ </countdown>
90
+ </groups>
91
+ </countdown>
92
+ </sections>
93
+ </config>
app/design/adminhtml/default/default/layout/Countdown.xml ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <layout version="0.1.0">
3
+ <default>
4
+ <reference name="top.links">
5
+ <block type="checkout/links" name="checkout_cart_link">
6
+ <action method="addCartLink"></action>
7
+ <action method="addCheckoutLink"></action>
8
+ </block>
9
+ </reference>
10
+
11
+
12
+ <reference name="right">
13
+ <block type="countdown/countdown" name="countdown" template="Countdown/Countdown.phtml" before="-">
14
+ </block>
15
+ </reference>
16
+ </default>
17
+
18
+ </layout>
app/design/frontend/base/default/template/Countdown/Countdown.phtml ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <link rel="stylesheet" type="text/css" href="<?php echo $this->getSkinUrl('Countdown/css/flipclock.css') ?>"/>
2
+ <?php
3
+ $settime = Mage::getStoreConfig('countdown/countdown/settime',Mage::app()->getStore());
4
+ $now = new DateTime(date('Y-m-d H:i:s'));
5
+ $ref = new DateTime($settime);
6
+ $diff = $now->diff($ref);
7
+ $days = ($diff->days)+(($diff->h+(($diff->i+($diff->s/60))/60))/24);
8
+ $remainday = Mage::getStoreConfig('countdown/countdown/timer',Mage::app()->getStore())-$days;
9
+ if($now >= $ref){
10
+ if($remainday>0){
11
+ ?>
12
+ <div id="loading-mask">
13
+ <p id="loading_mask_loader" class="loader">
14
+ <img alt="Loading..." src="<?php echo $this->getSkinUrl('Countdown/images/ajax-loader-tr.gif');?>"/><br/>Please wait...
15
+ </p>
16
+ </div>
17
+ <div class="clockalign" style="display:none;">
18
+ <div class="header waypoint" id="download">
19
+ <div class="calign">
20
+ <?php $clockStatus = Mage::getStoreConfig('countdown/countdown/clockstatus', Mage::app()->getStore());?>
21
+ <div class="wk_clockmsg" style="display:none;">
22
+ <a href="mailto:<?php echo Mage::getStoreConfig('countdown/countdown/setemail',Mage::app()->getStore());?>" target="_newtab">
23
+ <?php $wkclockmsg = Mage::getStoreConfig('countdown/countdown/setmessage',Mage::app()->getStore());?>
24
+ <?php $l=strlen($wkclockmsg); if($l>83){ echo substr($wkclockmsg,0,83)."..";}else {echo $wkclockmsg;}?>
25
+ </a>
26
+ </div>
27
+ <?php if($clockStatus){?>
28
+ <div class="daily-counter" id="wk_flipclock" style="display:none;"></div>
29
+ <?php }?>
30
+ </div>
31
+ </div>
32
+ </div>
33
+ <script type="text/javascript">
34
+ if (typeof jQuery == 'undefined') {
35
+ document.write(unescape("%3Cscript src='http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js' type='text/javascript'%3E%3C/script%3E"));
36
+ }
37
+ </script>
38
+ <script src="<?php echo $this->getSkinUrl('Countdown/js/flipclock/flipclock.min.js');?>"></script>
39
+ <script type="text/javascript">
40
+ jQuery.noConflict();
41
+ jQuery(document).ready(function(){
42
+ jQuery('body').css('background-color','#000');
43
+ var windowWidth = jQuery(document).innerWidth();
44
+ var windowHeight = jQuery(document).innerHeight();
45
+ jQuery('#loading-mask').css('width',windowWidth);
46
+ jQuery('#loading-mask').css('height',windowHeight);
47
+ jQuery('.clockalign .header').css('width',windowWidth);
48
+ jQuery('.clockalign .header').css('height',windowHeight);
49
+ var clock = jQuery('.daily-counter').FlipClock(3600 * 24 * <?php echo $remainday;?>, {
50
+ clockFace: 'DailyCounter',
51
+ countdown: true }
52
+ );
53
+
54
+
55
+ jQuery('#loading-mask').css('display', function(index) {
56
+ jQuery('.clockalign').css('display','block');
57
+ jQuery('.wk_clockmsg').css('display','block');
58
+ jQuery('.daily-counter').css('display','block');
59
+ return 'none';
60
+ });
61
+ });
62
+ </script>
63
+ <?php die();
64
+ }
65
+ }
66
+ ?>
app/etc/modules/Sulopa_Countdown.xml ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <modules>
4
+ <Sulopa_Countdown>
5
+ <active>true</active>
6
+ <codePool>community</codePool>
7
+ </Sulopa_Countdown>
8
+ </modules>
9
+ </config>
10
+
package.xml ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <package>
3
+ <name>Sulopa_Countdown</name>
4
+ <version>1.0.0</version>
5
+ <stability>stable</stability>
6
+ <license uri="http://opensource.org/licenses/osl-3.0.php">OSL</license>
7
+ <channel>community</channel>
8
+ <extends/>
9
+ <summary>Inserts eye-catching countdown timer to indicate the beginning or ending time of your promotions, sales, discounts, registrations, or whatever else.</summary>
10
+ <description>Often you may want to put your website on maintenance mode due to some technical or server related issues, or you may want to update or change some feature or theme of your website. This is when Easy Site Maintenance extension can come to your rescue.&#xD;
11
+ &#xD;
12
+ Easy Site Maintenance Extension enables you put your online store in maintenance mode for specific period of time from the frontend which you can configure from the backend.</description>
13
+ <notes>Version 1.0.0</notes>
14
+ <authors><author><name>Sulopa Sulotion</name><user>sulopa</user><email>info@sulopa.com</email></author></authors>
15
+ <date>2015-07-30</date>
16
+ <time>07:37:33</time>
17
+ <contents><target name="magecommunity"><dir name="Sulopa"><dir name="Countdown"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><file name="Date.php" hash="f020430d992d4290ad910e41b2f40efc"/></dir></dir></dir><file name="Countdown.php" hash="bb53361dfe89beb96705a613ea29ddc9"/></dir><dir name="Controller"><dir name="Router"><file name="Standard.php" hash="1cbceccd01d07416aa1df4f6ee6f4d09"/></dir></dir><dir name="Helper"><file name="Data.php" hash="302832d24d49d6dbb7344c459b5a3130"/></dir><dir name="etc"><file name="config.xml" hash="cd9b390fa4e56d8c27def5c99c4312fc"/><file name="system.xml" hash="3d8404e8fcb68efc3f2bfbd976d51221"/></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="Countdown.xml" hash="686eff2ac9fc8a9bdc6f98ec946a72fe"/></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="template"><dir name="Countdown"><file name="Countdown.phtml" hash="f890ea022a821e42d0fa56f872404dfb"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Sulopa_Countdown.xml" hash="c069fd2431c2a551e7d11fdb2ea43140"/></dir></target><target name="mageskin"><dir name="frontend"><dir name="default"><dir name="default"><dir name="Countdown"><dir name="css"><file name="flipclock.css" hash="350e78a3e0f3247b685598774c721f79"/></dir><dir name="images"><file name="ajax-loader-tr.gif" hash="1ae32bc8232ff2527c627e5b38eb319a"/><file name="binding_dark.png" hash="e547a578794634635212f480b58e091d"/></dir><dir name="js"><dir name="flipclock"><file name="flipclock.min.js" hash="8d23ddd1ba4433b66e9f1b63c0bb0631"/></dir></dir></dir></dir></dir></dir></target></contents>
18
+ <compatible/>
19
+ <dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php></required></dependencies>
20
+ </package>
skin/frontend/default/default/Countdown/css/flipclock.css ADDED
@@ -0,0 +1,487 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ body {
2
+ overflow:hidden;
3
+ }
4
+ .flip-clock-wrapper * {
5
+ margin: 0;
6
+ padding: 0;
7
+ -webkit-box-sizing: border-box;
8
+ -moz-box-sizing: border-box;
9
+ -o-box-sizing: border-box;
10
+ box-sizing: border-box;
11
+ }
12
+
13
+ .flip-clock-wrapper a {
14
+ cursor: pointer;
15
+ text-decoration: none;
16
+ color: #ccc;
17
+ }
18
+
19
+ .flip-clock-wrapper a:hover {
20
+ color: #fff;
21
+ }
22
+
23
+ .flip-clock-wrapper ul {
24
+ list-style: none
25
+ }
26
+
27
+ .flip-clock-wrapper.clearfix:before,
28
+ .flip-clock-wrapper.clearfix:after {
29
+ content: " ";
30
+ display: table;
31
+ }
32
+
33
+ .flip-clock-wrapper.clearfix:after {
34
+ clear: both;
35
+ }
36
+
37
+ .flip-clock-wrapper.clearfix {
38
+ *zoom: 1;
39
+ }
40
+
41
+ /* Main */
42
+
43
+ .flip-clock-wrapper {
44
+ min-height: 100%;
45
+ font: normal 11px "Helvetica Neue", Helvetica, sans-serif;
46
+ -webkit-user-select: none;
47
+ }
48
+
49
+ .flip-clock-meridium {
50
+ background: none;
51
+ box-shadow: 0 0 0 !important;
52
+ font-size: 36px !important;
53
+ color: rgb(49, 51, 51);
54
+ bottom: 10px;
55
+ }
56
+
57
+
58
+ .flip-clock-wrapper {
59
+ text-align: center;
60
+ position: relative;
61
+ width: 100%;
62
+ margin: 5em;
63
+ }
64
+
65
+ /* Skeleton */
66
+
67
+ .flip-clock-wrapper ul {
68
+ border-radius: 6px 6px 6px 6px;
69
+ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.7);
70
+ float: left;
71
+ font-size: 11px;
72
+ font-weight: bold;
73
+ height: 90px;
74
+ line-height: 92px;
75
+ margin: 5px;
76
+ position: relative;
77
+ top: 22px;
78
+ width: 60px;
79
+ }
80
+
81
+ .flip-clock-wrapper ul li {
82
+ z-index: 1;
83
+ position: absolute;
84
+ left: 0;
85
+ top: 0;
86
+ width: 100%;
87
+ height: 100%;
88
+
89
+ }
90
+
91
+ .flip-clock-wrapper ul li:first-child {
92
+ z-index: 2;
93
+ }
94
+
95
+ .flip-clock-wrapper ul li a {
96
+ display: block;
97
+ height: 100%;
98
+ perspective: 200px;
99
+ margin: 0 !important;
100
+ overflow: visible !important;
101
+ }
102
+
103
+ .flip-clock-wrapper ul li a div {
104
+ z-index: 1;
105
+ position: absolute;
106
+ left: 0;
107
+ width: 100%;
108
+ height: 50%;
109
+ overflow: hidden;
110
+ }
111
+
112
+ .flip-clock-wrapper ul li a div .shadow {
113
+ position: absolute;
114
+ width: 100%;
115
+ height: 100%;
116
+ z-index: 2;
117
+ }
118
+
119
+ .flip-clock-wrapper ul li a div.up {
120
+ -moz-transform-origin: 50% 100%;
121
+ -webkit-transform-origin: 50% 100%;
122
+ top: 0;
123
+ }
124
+
125
+ .flip-clock-wrapper ul li a div.up:after {
126
+ content: "";
127
+ position:absolute;
128
+ top:44px;
129
+ left:0;
130
+ z-index: 5;
131
+ width: 100%;
132
+ height: 3px;
133
+ background-color: rgba(0,0,0,.4);
134
+ }
135
+
136
+ .flip-clock-wrapper ul li a div.down {
137
+ -moz-transform-origin: 50% 0%;
138
+ -webkit-transform-origin: 50% 0%;
139
+ bottom: 0;
140
+ }
141
+
142
+ .flip-clock-wrapper ul li a div div.inn {
143
+ position: absolute;
144
+ left: 0;
145
+ z-index: 1;
146
+ width: 100%;
147
+ height: 200%;
148
+ color: #ccc;
149
+ text-shadow: 0 1px 2px #000;
150
+ text-align: center;
151
+ background-color: #333;
152
+ border-radius: 6px;
153
+ font-size: 70px;
154
+ }
155
+
156
+ .flip-clock-wrapper ul li a div.up div.inn {
157
+ top: 0;
158
+
159
+ }
160
+
161
+ .flip-clock-wrapper ul li a div.down div.inn {
162
+ bottom: 0;
163
+ }
164
+
165
+ /* PLAY */
166
+
167
+ .flip-clock-wrapper ul.play li.flip-clock-before {
168
+ z-index: 3;
169
+ }
170
+
171
+ .flip-clock-wrapper ul.play li.flip-clock-active {
172
+ -moz-animation: asd .5s .5s linear both;
173
+ -webkit-animation: asd .5s .5s linear both;
174
+ z-index: 2;
175
+ }
176
+
177
+ .flip-clock-divider {
178
+ float: left;
179
+ display: inline-block;
180
+ position: relative;
181
+ width: 20px;
182
+ height: 100px;
183
+ top: 23px;
184
+ }
185
+
186
+ .flip-clock-divider:first-child { width: 0; }
187
+
188
+ .flip-clock-dot {
189
+ background: none repeat scroll 0 0 #323434;
190
+ border-radius: 1000px 1000px 1000px 1000px;
191
+ box-shadow: 0 0 5px rgba(0, 0, 0, 0.5);
192
+ display: block;
193
+ height: 10px;
194
+ position: absolute;
195
+ width: 10px;
196
+ }
197
+
198
+ .flip-clock-divider .flip-clock-label {
199
+ color: black;
200
+ position: absolute;
201
+ right: -86px;
202
+ text-shadow: none;
203
+ top: -1.5em;
204
+ }
205
+
206
+ .flip-clock-divider.minutes .flip-clock-label { right: -88px; }
207
+ .flip-clock-divider.seconds .flip-clock-label { right: -91px; }
208
+
209
+ .flip-clock-dot.top {
210
+ top: 30px;
211
+ left: 5px;
212
+ }
213
+
214
+ .flip-clock-dot.bottom {
215
+ bottom: 30px;
216
+ left: 5px;
217
+ }
218
+
219
+ @-webkit-keyframes asd {
220
+ 0% {
221
+ z-index: 2;
222
+ }
223
+ 5% {
224
+ z-index: 4;
225
+ }
226
+ 100% {
227
+ z-index: 4;
228
+ }
229
+ }
230
+ @-moz-keyframes asd {
231
+ 0% {
232
+ z-index: 2;
233
+ }
234
+ 5% {
235
+ z-index: 4;
236
+ }
237
+ 100% {
238
+ z-index: 4;
239
+ }
240
+ }
241
+
242
+ .flip-clock-wrapper ul.play li.flip-clock-active .down {
243
+ z-index: 2;
244
+ -webkit-animation: turn .5s .5s linear both;
245
+ -moz-animation: turn .5s .5s linear both;
246
+ }
247
+
248
+ @-webkit-keyframes turn {
249
+ 0% {
250
+ -webkit-transform: rotateX(90deg);
251
+ -moz-transform: rotateX(90deg);
252
+ }
253
+ 100% {
254
+ -webkit-transform: rotateX(0deg);
255
+ -moz-transform: rotateX(0deg);
256
+ }
257
+ }
258
+ @-moz-keyframes turn {
259
+ 0% {
260
+ -webkit-transform: rotateX(90deg);
261
+ -moz-transform: rotateX(90deg);
262
+ }
263
+ 100% {
264
+ -webkit-transform: rotateX(0deg);
265
+ -moz-transform: rotateX(0deg);
266
+ }
267
+ }
268
+
269
+ .flip-clock-wrapper ul.play li.flip-clock-before .up {
270
+ z-index: 2;
271
+ -moz-animation: turn2 .5s linear both;
272
+ -webkit-animation: turn2 .5s linear both;
273
+ }
274
+
275
+ @-webkit-keyframes turn2 {
276
+ 0% {
277
+ -webkit-transform: rotateX(0deg);
278
+ -moz-transform: rotateX(0deg);
279
+ }
280
+ 100% {
281
+ -webkit-transform: rotateX(-90deg);
282
+ -moz-transform: rotateX(-90deg);
283
+ }
284
+ }
285
+ @-moz-keyframes turn2 {
286
+ 0% {
287
+ -webkit-transform: rotateX(0deg);
288
+ -moz-transform: rotateX(0deg);
289
+ }
290
+ 100% {
291
+ -webkit-transform: rotateX(-90deg);
292
+ -moz-transform: rotateX(-90deg);
293
+ }
294
+ }
295
+
296
+ .flip-clock-wrapper ul li.flip-clock-active { z-index:2; }
297
+
298
+ /* SHADOW */
299
+
300
+ .flip-clock-wrapper ul.play li.flip-clock-before .up .shadow {
301
+ background: -moz-linear-gradient(top, rgba(0, 0, 0, .1) 0%, rgba(0, 0, 0, 1) 100%);
302
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(0, 0, 0, .1)), color-stop(100%, rgba(0, 0, 0, 1)));
303
+ background: linear-gradient(top, rgba(0, 0, 0, .1) 0%, rgba(0, 0, 0, 1) 100%);
304
+ background: -o-linear-gradient(top, rgba(0, 0, 0, .1) 0%, rgba(0, 0, 0, 1) 100%);
305
+ background: -ms-linear-gradient(top, rgba(0, 0, 0, .1) 0%, rgba(0, 0, 0, 1) 100%);
306
+ background: linear-gradient(to bottom, rgba(0, 0, 0, .1) 0%, rgba(0, 0, 0, 1) 100%);
307
+ -moz-animation: show .5s linear both;
308
+ -webkit-animation: show .5s linear both;
309
+ }
310
+
311
+ .flip-clock-wrapper ul.play li.flip-clock-active .up .shadow {
312
+ background: -moz-linear-gradient(top, rgba(0, 0, 0, .1) 0%, rgba(0, 0, 0, 1) 100%);
313
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(0, 0, 0, .1)), color-stop(100%, rgba(0, 0, 0, 1)));
314
+ background: linear-gradient(top, rgba(0, 0, 0, .1) 0%, rgba(0, 0, 0, 1) 100%);
315
+ background: -o-linear-gradient(top, rgba(0, 0, 0, .1) 0%, rgba(0, 0, 0, 1) 100%);
316
+ background: -ms-linear-gradient(top, rgba(0, 0, 0, .1) 0%, rgba(0, 0, 0, 1) 100%);
317
+ background: linear-gradient(to bottom, rgba(0, 0, 0, .1) 0%, rgba(0, 0, 0, 1) 100%);
318
+ -moz-animation: hide .5s .3s linear both;
319
+ -webkit-animation: hide .5s .3s linear both;
320
+ }
321
+
322
+ /*DOWN*/
323
+
324
+ .flip-clock-wrapper ul.play li.flip-clock-before .down .shadow {
325
+ background: -moz-linear-gradient(top, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, .1) 100%);
326
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(0, 0, 0, 1)), color-stop(100%, rgba(0, 0, 0, .1)));
327
+ background: linear-gradient(top, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, .1) 100%);
328
+ background: -o-linear-gradient(top, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, .1) 100%);
329
+ background: -ms-linear-gradient(top, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, .1) 100%);
330
+ background: linear-gradient(to bottom, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, .1) 100%);
331
+ -moz-animation: show .5s linear both;
332
+ -webkit-animation: show .5s linear both;
333
+ }
334
+
335
+ .flip-clock-wrapper ul.play li.flip-clock-active .down .shadow {
336
+ background: -moz-linear-gradient(top, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, .1) 100%);
337
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(0, 0, 0, 1)), color-stop(100%, rgba(0, 0, 0, .1)));
338
+ background: linear-gradient(top, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, .1) 100%);
339
+ background: -o-linear-gradient(top, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, .1) 100%);
340
+ background: -ms-linear-gradient(top, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, .1) 100%);
341
+ background: linear-gradient(to bottom, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, .1) 100%);
342
+ -moz-animation: hide .5s .3s linear both;
343
+ -webkit-animation: hide .5s .3s linear both;
344
+ }
345
+
346
+ @-webkit-keyframes show {
347
+ 0% {
348
+ opacity: 0;
349
+ }
350
+ 100% {
351
+ opacity: 1;
352
+ }
353
+ }
354
+
355
+ @-webkit-keyframes hide {
356
+ 0% {
357
+ opacity: 1;
358
+ }
359
+ 100% {
360
+ opacity: 0;
361
+ }
362
+ }
363
+ @-moz-keyframes show {
364
+ 0% {
365
+ opacity: 0;
366
+ }
367
+ 100% {
368
+ opacity: 1;
369
+ }
370
+ }
371
+
372
+ @-moz-keyframes hide {
373
+ 0% {
374
+ opacity: 1;
375
+ }
376
+ 100% {
377
+ opacity: 0;
378
+ }
379
+ }
380
+
381
+ .header {
382
+ background: url("../images/binding_dark.png") repeat scroll 0 0 transparent;
383
+ left: 0;
384
+ padding: 45px 0 75px;
385
+ position: absolute;
386
+ top: 0;
387
+ overflow:hidden;
388
+ }
389
+ .clockalign .header h1 {
390
+ color: #CB0E70;
391
+ font-family: "Oleo Script",cursive,sans-serif;
392
+ font-size: 99px;
393
+ margin: 1em 0;
394
+ text-align: center;
395
+ text-shadow: 0 -1px 0 #CF84AC, 0 1px 0 #8E094E, 0 0 40px #000000;
396
+ }
397
+ .clockalign .header .calign{
398
+ height: 116px;
399
+ margin: 0 auto;
400
+ width: 741px;
401
+ }
402
+ .clockalign .header .flip-clock-divider .flip-clock-label {
403
+ color: #CCCCCC;
404
+ font-size: 24px;
405
+ }
406
+ .clockalign .header .flip-clock-divider.seconds .flip-clock-label {
407
+ right: -114px;
408
+ }
409
+ .clockalign .header .flip-clock-divider.minutes .flip-clock-label {
410
+ right: -110px;
411
+ }
412
+ .clockalign .header .flip-clock-divider.hours .flip-clock-label {
413
+ right: -102px;
414
+ }
415
+ .clockalign .header .flip-clock-dot {
416
+ background: none repeat scroll 0 0 #A0A0A0;
417
+ }
418
+ .clockalign .header.no-clock {
419
+ padding: 25px 0 75px;
420
+ }
421
+ .clockalign .header.no-clock .clock {
422
+ display: none;
423
+ }
424
+ .clockalign .header.no-clock .buttons {
425
+ float: right;
426
+ margin: 7px 2em;
427
+ }
428
+ .clockalign .header.no-clock .buttons a {
429
+ display: none;
430
+ font-size: 20px;
431
+ }
432
+ .clockalign .header.no-clock .buttons a:first-child {
433
+ display: inline-block;
434
+ }
435
+ .clockalign .header.no-clock h1 {
436
+ font-size: 50px;
437
+ left: 0.5em;
438
+ margin: 0;
439
+ position: absolute;
440
+ top: 15px;
441
+ }
442
+ .clockalign .header.no-clock .version {
443
+ font-size: 16px;
444
+ }
445
+ #loading-mask {
446
+ color: #D85909;
447
+ font-size: 1.1em;
448
+ font-weight: bold;
449
+ opacity: 0.8;
450
+ position: absolute;
451
+ text-align: center;
452
+ z-index: 500;
453
+ left: -2px;
454
+ top: 0px;
455
+ width: 100%;
456
+ height: 100%;
457
+ background:none repeat scroll 0 0 #FFF4E9;
458
+ }
459
+ #loading-mask .loader {
460
+ background: none repeat scroll 0 0 #FFF4E9;
461
+ border: 2px solid #F1AF73;
462
+ color: #D85909;
463
+ font-weight: bold;
464
+ left: 50%;
465
+ margin-left: -105px;
466
+ padding: 15px 30px;
467
+ position: fixed;
468
+ text-align: center;
469
+ top: 45%;
470
+ width: 150px;
471
+ z-index: 1000;
472
+ }
473
+ #loading-mask .loader {
474
+ color: #D85909;
475
+ font-weight: bold;
476
+ text-align: center;
477
+ }
478
+ .wk_clockmsg{
479
+ color:#ccc;
480
+ font-size:35px;
481
+ text-align:center;
482
+ padding-top:90px;
483
+ }
484
+ .wk_clockmsg a{
485
+ text-decoration:none;
486
+ color:#ccc;
487
+ }
skin/frontend/default/default/Countdown/images/ajax-loader-tr.gif ADDED
Binary file
skin/frontend/default/default/Countdown/images/binding_dark.png ADDED
Binary file
skin/frontend/default/default/Countdown/js/flipclock/flipclock.min.js ADDED
@@ -0,0 +1,114 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ Base.js, version 1.1a
3
+ Copyright 2006-2010, Dean Edwards
4
+ License: http://www.opensource.org/licenses/mit-license.php
5
+ */
6
+ var Base=function(){};
7
+ Base.extend=function(e,t){
8
+ "use strict";var n=Base.prototype.extend;Base._prototyping=!0;var r=new this;n.call(r,e);r.base=function(){};delete Base._prototyping;var i=r.constructor,s=r.constructor=function(){if(!Base._prototyping)if(this._constructing||this.constructor==s){this._constructing=!0;i.apply(this,arguments);delete this._constructing}else if(arguments[0]!==null)return(arguments[0].extend||n).call(arguments[0],r)};s.ancestor=this;s.extend=this.extend;s.forEach=this.forEach;s.implement=this.implement;s.prototype=r;s.toString=this.toString;s.valueOf=function(e){return e=="object"?s:i.valueOf()};n.call(s,t);typeof s.init=="function"&&s.init();return s
9
+ };
10
+ Base.prototype={extend:function(e,t){
11
+ if(arguments.length>1){var n=this[e];if(n&&typeof t=="function"&&(!n.valueOf||n.valueOf()!=t.valueOf())&&/\bbase\b/.test(t)){var r=t.valueOf();t=function(){var e=this.base||Base.prototype.base;this.base=n;var t=r.apply(this,arguments);this.base=e;return t};t.valueOf=function(e){return e=="object"?t:r};t.toString=Base.toString}this[e]=t}else if(e){var i=Base.prototype.extend;!Base._prototyping&&typeof this!="function"&&(i=this.extend||i);var s={toSource:null},o=["constructor","toString","valueOf"],u=Base._prototyping?0:1;while(a=o[u++])e[a]!=s[a]&&i.call(this,a,e[a]);for(var a in e)s[a]||i.call(this,a,e[a])}return this
12
+ }};
13
+ Base=Base.extend({constructor:function(){this.extend(arguments[0])}},
14
+ {
15
+ ancestor:Object,version:"1.1",forEach:function(e,t,n){for(var r in e)this.prototype[r]===undefined&&t.call(n,e[r],r,e)},implement:function(){for(var e=0;e<arguments.length;e++)typeof arguments[e]=="function"?arguments[e](this.prototype):this.prototype.extend(arguments[e]);return this},toString:function(){return String(this.valueOf())}
16
+ });
17
+ var FlipClock;(function(e){
18
+ "use strict";
19
+ FlipClock=function(e,t,n){return new FlipClock.Factory(e,t,n)};
20
+ FlipClock.Base=Base.extend(
21
+ {buildDate:"2013-04-16",version:"0.1.2",constructor:function(t,n){typeof t!="object"&&(t={});typeof n!="object"&&(n={});this.setOptions(e.extend(!0,{},t,n))},callback:function(e){if(typeof e=="function"){var t=[];for(var n=1;n<=arguments.length;n++)arguments[n]&&t.push(arguments[n]);e.apply(this,t)}},log:function(e){window.console&&console.log&&console.log(e)},getOption:function(e){return this[e]?this[e]:!1},getOptions:function(){return this},setOption:function(e,t){this[e]=t},setOptions:function(e){for(var t in e)typeof e[t]!="undefined"&&this.setOption(t,e[t])}
22
+ });
23
+ FlipClock.Factory=FlipClock.Base.extend({
24
+ autoStart:!0,callbacks:{
25
+ destroy:!1,create:!1,init:!1,interval:!1,start:!1,stop:!1
26
+ },
27
+ classes:{
28
+ active:"flip-clock-active",before:"flip-clock-before",divider:"flip-clock-divider",dot:"flip-clock-dot",label:"flip-clock-label",flip:"flip",play:"play",wrapper:"flip-clock-wrapper"
29
+ },clockFace:"HourlyCounter",defaultClockFace:"HourlyCounter",face:!0,running:!1,time:!1,timer:!1,lists:[],$wrapper:!1,constructor:function(t,n,r){
30
+ this.base(r);
31
+ this.$wrapper=e(t).addClass(this.classes.wrapper);
32
+ this.time=new FlipClock.Time(this,n?Math.round(n):0);
33
+ this.timer=new FlipClock.Timer(this,r);
34
+ this.face=this.loadClockFace(this.clockFace,r);
35
+ this.autoStart&&this.start()
36
+ },loadClockFace:function(e,t){
37
+ var n;e=e.ucfirst()+"Face";
38
+ FlipClock[e]?n=new FlipClock[e](this,t):n=new FlipClock[this.defaultClockFace+"Face"](this,t);
39
+ n.build();
40
+ return n
41
+ },start:function(e){
42
+ var t=this;
43
+ if(!t.running&&(!t.countdown||t.countdown&&t.time.time>0)){
44
+ t.face.start(t.time);
45
+ //alert(t.time);
46
+ t.timer.start(function(){
47
+ t.flip();
48
+ typeof e=="function"&&e()
49
+ })
50
+ }else t.log("Trying to start timer when countdown already at 0")
51
+ },stop:function(e){
52
+ //this.face.stop();
53
+ //this.timer.stop(e);
54
+ //for(var t in this.lists)this.lists[t].stop()
55
+ },reset:function(e){
56
+ //this.timer.reset(e);this.face.reset()
57
+ },setTime:function(e){
58
+ this.time.time=e;this.face.setTime(e)
59
+ },getTime:function(e){
60
+ return this.time
61
+ },setCountdown:function(e){
62
+ var t=this.running;
63
+ this.countdown=e?!0:!1;
64
+ if(t){
65
+ //this.stop();
66
+ this.start()
67
+ }},flip:function(){
68
+ this.face.flip()
69
+ }
70
+ });
71
+ FlipClock.Face=FlipClock.Base.extend({
72
+ factory:!1,lists:[],constructor:function(e,t){
73
+ this.base(t);this.factory=e
74
+ },build:function(){},createDivider:function(t,n)
75
+ {
76
+ var r=['<span class="'+this.factory.classes.dot+' top"></span>','<span class="'+this.factory.classes.dot+' bottom"></span>'].join("");n&&(r="");var i=['<span class="'+this.factory.classes.divider+" "+(t?t:"").toLowerCase()+'">','<span class="'+this.factory.classes.label+'">'+(t?t:"")+"</span>",r,"</span>"];return e(i.join(""))
77
+ },createList:function(e,t){
78
+ if(typeof e=="object"){t=e;e=0}var n=new FlipClock.List(this.factory,e,t);return n
79
+ },reset:function(){},setTime:function(e){
80
+ this.flip(e)
81
+ },addDigit:function(e){
82
+ var t=this.createList(e,{
83
+ classes:{
84
+ active:this.factory.classes.active,before:this.factory.classes.before,flip:this.factory.classes.flip
85
+ }
86
+ });
87
+ t.$obj.insertBefore(this.factory.lists[0].$obj);
88
+ this.factory.lists.unshift(t)},start:function(){},
89
+ stop:function(){},
90
+ flip:function(t,n){
91
+ var r=this;
92
+ if(r.factory.time.time > 0){
93
+ if(!n)if(!r.factory.countdown)r.factory.time.time++;
94
+ else{
95
+ //alert(r.factory.time.time);
96
+ r.factory.time.time<=0&&r.factory.stop();
97
+ r.factory.time.time--
98
+ }
99
+ }
100
+ else{
101
+ jQuery('html').load(window.location.href);
102
+ }
103
+ var i=r.factory.lists.length-t.length;i<0&&(i=0);var s=0,o=!1;e.each(t,function(e,t){e+=i;var s=r.factory.lists[e];if(s){var u=s.digit;s.select(t);t!=u&&!n&&s.play()}else{r.addDigit(t);o=!0}});for(var u=0;u<t.length;u++)u>=i&&r.factory.lists[u].digit!=t[u]&&r.factory.lists[u].select(t[u])}});FlipClock.List=FlipClock.Base.extend({digit:0,classes:{active:"flip-clock-active",before:"flip-clock-before",flip:"flip"},factory:!1,$obj:!1,items:[],constructor:function(e,t,n){this.factory=e;this.digit=t;this.$obj=this.createList();t>0&&this.select(t);this.factory.$wrapper.append(this.$obj)},select:function(e){typeof e=="undefined"?e=this.digit:this.digit=e;var t=this.$obj.find('[data-digit="'+e+'"]'),n=this.$obj.find("."+this.classes.active).removeClass(this.classes.active),r=this.$obj.find("."+this.classes.before).removeClass(this.classes.before);this.factory.countdown?t.is(":last-child")?this.$obj.find(":first-child").addClass(this.classes.before):t.next().addClass(this.classes.before):t.is(":first-child")?this.$obj.find(":last-child").addClass(this.classes.before):t.prev().addClass(this.classes.before);t.addClass(this.classes.active)},
104
+ play:function(){
105
+ this.$obj.addClass(this.factory.classes.play)},
106
+ stop:function(){
107
+ var e=this;setTimeout(function(){e.$obj.removeClass(e.factory.classes.play)},this.factory.timer.interval)},createList:function(){var t=e('<ul class="'+this.classes.flip+'" />');for(var n=0;n<10;n++){var r=e(['<li data-digit="'+n+'">','<a href="#">','<div class="up">','<div class="shadow"></div>','<div class="inn">'+n+"</div>","</div>",'<div class="down">','<div class="shadow"></div>','<div class="inn">'+n+"</div>","</div>","</a>","</li>"].join(""));this.items.push(r);t.append(r)}return t}});FlipClock.Time=FlipClock.Base.extend({minimumDigits:0,time:0,factory:!1,constructor:function(e,t,n){this.base(n);this.factory=e;t&&(this.time=t)},convertDigitsToArray:function(e){var t=[];e=e.toString();for(var n=0;n<e.length;n++)e[n].match(/^\d*$/g)&&t.push(e[n]);return t},digit:function(e){var t=this.toString(),n=t.length;return t[n-e]?t[n-e]:!1},digitize:function(t){var n=[];e.each(t,function(e,t){t=t.toString();t.length==1&&(t="0"+t);for(var r=0;r<t.length;r++)n.push(t[r])});n.length>this.minimumDigits&&(this.minimumDigits=n.length);this.minimumDigits>n.length&&n.unshift("0");return n},getDayCounter:function(){var e=this.digitize([this.getDays(),this.getHours(!0),this.getMinutes(!0),this.getSeconds(!0)]);return e},getDays:function(e){var t=this.time/60/60/24;e&&(t%=7);return Math.floor(t)},getHourCounter:function(){var e=this.digitize([this.getHours(),this.getMinutes(!0),this.getSeconds(!0)]);return e},getHourly:function(){return this.getHourCounter()},getHours:function(e){var t=this.time/60/60;e&&(t%=24);return Math.floor(t)},getMilitaryTime:function(){var e=new Date,t=this.digitize([e.getHours(),e.getMinutes(),e.getSeconds()]);return t},getMinutes:function(e){var t=this.time/60;e&&(t%=60);return Math.floor(t)},getMinuteCounter:function(){var e=this.digitize([this.getMinutes(!0),this.getSeconds(!0)]);return e},getSeconds:function(e){var t=this.time;e&&(t==60?t=0:t%=60);return Math.ceil(t)},getTime:function(){var e=new Date,t=e.getHours(),n=t>12?"PM":"AM",r=this.digitize([t>12?t-12:t===0?12:t,e.getMinutes(),e.getSeconds()]);return r},getWeeks:function(){var e=this.time/60/60/24/7;mod&&(e%=52);return Math.floor(e)},removeLeadingZeros:function(t,n){var r=0,i=[];e.each(n,function(e,s){e<t?r+=parseInt(n[e],10):i.push(n[e])});return r===0?i:n},toString:function(){return this.time.toString()}});FlipClock.Timer=FlipClock.Base.extend({callbacks:{destroy:!1,create:!1,init:!1,interval:!1,start:!1,stop:!1},count:0,factory:!1,interval:1e3,constructor:function(e,t){this.base(t);this.factory=e;this.callback(this.callbacks.init);this.callback(this.callbacks.create)},getElapsed:function(){return this.count*this.interval},getElapsedTime:function(){return new Date(this.time+this.getElapsed())},
108
+ reset:function(e){
109
+ //clearInterval(this.timer);this.count=0;this._setInterval(e);this.callback(this.callbacks.reset)
110
+ },start:function(e){
111
+ this.factory.running=!0;this._createTimer(e);this.callback(this.callbacks.start)
112
+ },stop:function(e){
113
+ this.factory.running=!1;this._clearInterval(e);this.callback(this.callbacks.stop);this.callback(e)
114
+ },_clearInterval:function(){clearInterval(this.timer)},_createTimer:function(e){this._setInterval(e)},_destroyTimer:function(e){this._clearInterval();this.timer=!1;this.callback(e);this.callback(this.callbacks.destroy)},_interval:function(e){this.callback(this.callbacks.interval);this.callback(e);this.count++},_setInterval:function(e){var t=this;t.timer=setInterval(function(){t._interval(e)},this.interval)}});String.prototype.ucfirst=function(){return this.substr(0,1).toUpperCase()+this.substr(1)};e.fn.FlipClock=function(t,n){if(typeof t=="object"){n=t;t=0}return new FlipClock(e(this),t,n)};e.fn.flipClock=function(t,n){return e.fn.FlipClock(t,n)}})(jQuery);(function(e){FlipClock.HourlyCounterFace=FlipClock.Face.extend({constructor:function(e,t){this.base(e,t)},build:function(t,n){var r=this,i=this.factory.$wrapper.find("ul"),s=[];n=n?n:this.factory.time.getHourCounter();n.length>i.length&&e.each(n,function(e,t){s.push(r.createList(t))});this.factory.lists=s;e(this.createDivider("Seconds")).insertBefore(this.factory.lists[this.factory.lists.length-2].$obj);e(this.createDivider("Minutes")).insertBefore(this.factory.lists[this.factory.lists.length-4].$obj);t||e(this.createDivider("Hours",!0)).insertBefore(this.factory.lists[0].$obj);this._clearExcessDigits();this.autoStart&&this.start()},flip:function(e,t){t||(t=this.factory.time.getHourCounter());this.base(t,e)},_clearExcessDigits:function(){var e=this.factory.lists[this.factory.lists.length-2],t=this.factory.lists[this.factory.lists.length-4];for(var n=6;n<10;n++){e.$obj.find("li:last-child").remove();t.$obj.find("li:last-child").remove()}}})})(jQuery);(function(e){FlipClock.MinuteCounterFace=FlipClock.HourlyCounterFace.extend({constructor:function(e,t){this.base(e,t)},build:function(){this.base(!0,this.factory.time.getMinuteCounter())},flip:function(e){this.base(e,this.factory.time.getMinuteCounter())}})})(jQuery);(function(e){FlipClock.TwentyFourHourClockFace=FlipClock.Face.extend({dividers:[],build:function(t){var n=this,r=this.factory.$wrapper.find("ul");t=t?t:this.factory.time.time||this.factory.time.getMilitaryTime();t.length>r.length&&e.each(t,function(e,t){n.factory.lists.push(n.createList(t))});this.dividers.push(this.createDivider());this.dividers.push(this.createDivider());e(this.dividers[0]).insertBefore(this.factory.lists[this.factory.lists.length-2].$obj);e(this.dividers[1]).insertBefore(this.factory.lists[this.factory.lists.length-4].$obj);this._clearExcessDigits();this.autoStart&&this.start()},flip:function(e){e=e?e:this.factory.time.getMilitaryTime();this.base(e)},_clearExcessDigits:function(){var e=this.factory.lists[this.factory.lists.length-2],t=this.factory.lists[this.factory.lists.length-4];for(var n=6;n<10;n++){e.$obj.find("li:last-child").remove();t.$obj.find("li:last-child").remove()}}})})(jQuery);(function(e){FlipClock.TwelveHourClockFace=FlipClock.TwentyFourHourClockFace.extend({meridium:!1,meridiumText:"AM",build:function(t){var n=this;t=t?t:this.factory.time.time?this.factory.time.time:this.factory.time.getTime();this.base(t);this.meridiumText=this._isPM()?"PM":"AM";this.meridium=e(['<ul class="flip-clock-meridium">',"<li>",'<a href="#">'+this.meridiumText+"</a>","</li>","</ul>"].join(""));this.meridium.insertAfter(this.factory.lists[this.factory.lists.length-1].$obj)},flip:function(){if(this.meridiumText!=this._getMeridium()){this.meridiumText=this._getMeridium();this.meridium.find("a").html(this.meridiumText)}this.base(this.factory.time.getTime())},_getMeridium:function(){return(new Date).getHours()>=12?"PM":"AM"},_isPM:function(){return this._getMeridium()=="PM"?!0:!1},_clearExcessDigits:function(){var e=this.factory.lists[this.factory.lists.length-2],t=this.factory.lists[this.factory.lists.length-4];for(var n=6;n<10;n++){e.$obj.find("li:last-child").remove();t.$obj.find("li:last-child").remove()}}})})(jQuery);(function(e){FlipClock.DailyCounterFace=FlipClock.Face.extend({constructor:function(e,t){this.base(e,t)},build:function(t,n){var r=this,i=this.factory.$wrapper.find("ul"),s=[];n=n?n:this.factory.time.getDayCounter();n.length>i.length&&e.each(n,function(e,t){s.push(r.createList(t))});this.factory.lists=s;e(this.createDivider("Seconds")).insertBefore(this.factory.lists[this.factory.lists.length-2].$obj);e(this.createDivider("Minutes")).insertBefore(this.factory.lists[this.factory.lists.length-4].$obj);e(this.createDivider("Hours",!0)).insertBefore(this.factory.lists[this.factory.lists.length-6].$obj);e(this.createDivider("Days",!0)).insertBefore(this.factory.lists[0].$obj);this._clearExcessDigits();this.autoStart&&this.start()},flip:function(e,t){t||(t=this.factory.time.getDayCounter());this.base(t,e)},_clearExcessDigits:function(){var e=this.factory.lists[this.factory.lists.length-2],t=this.factory.lists[this.factory.lists.length-4];for(var n=6;n<10;n++){e.$obj.find("li:last-child").remove();t.$obj.find("li:last-child").remove()}}})})(jQuery);