Sendinblue - Version 1.1.0

Version Notes

Synchronize your Magento contacts with SendinBlue platform, send your marketing and transactional emails and SMS

Download this release

Release Info

Developer Sendinblue
Extension Sendinblue
Version 1.1.0
Comparing to
See all releases


Version 1.1.0

Files changed (51) hide show
  1. app/code/local/Sendinblue/Sendinblue/Block/Sendinblue.php +90 -0
  2. app/code/local/Sendinblue/Sendinblue/Helper/Data.php +54 -0
  3. app/code/local/Sendinblue/Sendinblue/Model/Email.php +36 -0
  4. app/code/local/Sendinblue/Sendinblue/Model/Email/Template.php +104 -0
  5. app/code/local/Sendinblue/Sendinblue/Model/Mysql4/Sendinblue.php +17 -0
  6. app/code/local/Sendinblue/Sendinblue/Model/Mysql4/Sendinblue/Collection.php +17 -0
  7. app/code/local/Sendinblue/Sendinblue/Model/Observer.php +260 -0
  8. app/code/local/Sendinblue/Sendinblue/Model/Sendinblue.php +1072 -0
  9. app/code/local/Sendinblue/Sendinblue/Model/Status.php +23 -0
  10. app/code/local/Sendinblue/Sendinblue/controllers/Adminhtml/MyformController.php +520 -0
  11. app/code/local/Sendinblue/Sendinblue/controllers/Adminhtml/NotifyController.php +21 -0
  12. app/code/local/Sendinblue/Sendinblue/controllers/Adminhtml/SyncController.php +21 -0
  13. app/code/local/Sendinblue/Sendinblue/controllers/AjaxController.php +473 -0
  14. app/code/local/Sendinblue/Sendinblue/controllers/IndexController.php +18 -0
  15. app/code/local/Sendinblue/Sendinblue/etc/adminhtml.xml +22 -0
  16. app/code/local/Sendinblue/Sendinblue/etc/config.xml +325 -0
  17. app/code/local/Sendinblue/Sendinblue/sql/sendinblue_setup/install-0.1.0.php +276 -0
  18. app/code/local/Sendinblue/Sendinblue/sql/sendinblue_setup/mysql4-upgrade-0.1.0-0.2.0.php +22 -0
  19. app/design/adminhtml/default/default/layout/sendinblue.xml +16 -0
  20. app/design/adminhtml/default/default/template/sendinblue/myform.phtml +617 -0
  21. app/design/frontend/base/default/layout/sendinblue.xml +38 -0
  22. app/design/frontend/base/default/template/sendinblue/account/edit.phtml +26 -0
  23. app/etc/modules/Sendinblue_Sendinblue.xml +9 -0
  24. app/locale/en_US/template/email/sendin_notification.html +182 -0
  25. app/locale/en_US/template/email/sendinsmtp_conf.html +169 -0
  26. app/locale/fr_FR/Sendinblue.csv +130 -0
  27. app/locale/fr_FR/template/email/sendin_notification.html +172 -0
  28. app/locale/fr_FR/template/email/sendinsmtp_conf.html +174 -0
  29. package.xml +28 -0
  30. skin/adminhtml/default/default/sendinblue/css/jquery-ui.css +1175 -0
  31. skin/adminhtml/default/default/sendinblue/css/jquery.multiselect.css +23 -0
  32. skin/adminhtml/default/default/sendinblue/css/styles.css +332 -0
  33. skin/adminhtml/default/default/sendinblue/images/close.png +0 -0
  34. skin/adminhtml/default/default/sendinblue/images/disabled.gif +0 -0
  35. skin/adminhtml/default/default/sendinblue/images/enabled.gif +0 -0
  36. skin/adminhtml/default/default/sendinblue/images/help.gif +0 -0
  37. skin/adminhtml/default/default/sendinblue/images/index.php +8 -0
  38. skin/adminhtml/default/default/sendinblue/images/loader.gif +0 -0
  39. skin/adminhtml/default/default/sendinblue/images/loading_anim.gif +0 -0
  40. skin/adminhtml/default/default/sendinblue/images/logo.gif +0 -0
  41. skin/adminhtml/default/default/sendinblue/images/logo.png +0 -0
  42. skin/adminhtml/default/default/sendinblue/images/sendinblue.png +0 -0
  43. skin/adminhtml/default/default/sendinblue/images/ui-icons_ef8c08_256x240.png +0 -0
  44. skin/adminhtml/default/default/sendinblue/images/ui-icons_ef8c08_256x240.png.png +0 -0
  45. skin/adminhtml/default/default/sendinblue/js/index.php +19 -0
  46. skin/adminhtml/default/default/sendinblue/js/jquery-1.9.1.min.js +5 -0
  47. skin/adminhtml/default/default/sendinblue/js/jquery-ui.min.js +12 -0
  48. skin/adminhtml/default/default/sendinblue/js/jquery.multiselect.js +705 -0
  49. skin/adminhtml/default/default/sendinblue/js/jquery.multiselect.min.js +1 -0
  50. skin/adminhtml/default/default/sendinblue/js/sendinblue.js +870 -0
  51. skin/adminhtml/default/default/sendinblue/js/sendinblue.min.js +10 -0
app/code/local/Sendinblue/Sendinblue/Block/Sendinblue.php ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @author Sendinblue plateform <contact@sendinblue.com>
4
+ * @copyright 2013-2014 Sendinblue
5
+ * URL: https:www.sendinblue.com
6
+ * Do not edit or add to this file if you wish to upgrade Sendinblue Magento plugin to newer
7
+ * versions in the future. If you wish to customize Sendinblue magento plugin for your
8
+ * needs then we can't provide a technical support.
9
+ **/
10
+
11
+ class Sendinblue_Sendinblue_Block_Sendinblue extends Mage_Core_Block_Template
12
+ {
13
+ public function _prepareLayout()
14
+ {
15
+ return parent::_prepareLayout();
16
+ }
17
+ public function getPagerHtml()
18
+ {
19
+ return $this->getChildHtml('pager');
20
+ }
21
+
22
+ protected function _toHtml()
23
+ {
24
+
25
+ $get_Enable_Status = Mage::getModel('sendinblue/sendinblue')->getEnableStatus();
26
+
27
+ $get_Tracking_Status = Mage::getModel('sendinblue/sendinblue')->getTrackingStatus();
28
+
29
+ $get_order_status = Mage::getModel('sendinblue/sendinblue')->getOrderSmsStatus();
30
+
31
+ $get_User_lists = Mage::getModel('sendinblue/sendinblue')->getUserlists();
32
+
33
+
34
+ $value = Mage::getModel('sendinblue/sendinblue')->TrackingSmtp();
35
+
36
+ $orders = Mage::getModel('sales/order')->getCollection();
37
+
38
+ $order = $orders->getLastItem();
39
+ $order_Data = $order->getPayment()->getData();
40
+ $customer = Mage::getSingleton('customer/session')->getCustomer();
41
+ $orderaddress = Mage::getModel('sales/order')->loadByIncrementId($order->increment_id);
42
+
43
+ $mobile = $customer->getPrimaryBillingAddress()->getTelephone();
44
+ $email = $customer->getEmail();// for email address
45
+ $firstname = $customer->getFirstname();// For first name
46
+ $lastname= $customer->getLastname();// For last name
47
+ $costomer_data = Mage::getModel('newsletter/subscriber')->loadByEmail($email);
48
+ $nlStatus = $costomer_data->getStatus();
49
+ if ($get_Enable_Status == 1 && $get_Tracking_Status == 1 && $nlStatus == 1)
50
+ {
51
+
52
+ $value_config = Mage::getModel('sendinblue/sendinblue')->getApiConfigValue();
53
+ if ($value_config->date_format == 'dd-mm-yyyy')
54
+ $date = date('d-m-Y', strtotime($order->created_at));
55
+ else
56
+ $date = date('m-d-Y', strtotime($order->created_at));
57
+
58
+ $html = '';
59
+
60
+ $html .= '<script type="text/javascript">
61
+ /**Code for NB tracking*/
62
+ function loadScript(url,callback){var script=document.createElement("script");script.type="text/javascript";if(script.readyState){script.onreadystatechange=function(){
63
+ if(script.readyState=="loaded"||script.readyState=="complete"){script.onreadystatechange=null;callback(url)}}}else{
64
+ script.onload=function(){callback(url)}}script.src=url;if(document.body){document.body.appendChild(script)}else{
65
+ document.head.appendChild(script)}}
66
+ var nbJsURL = (("https:" == document.location.protocol) ? "https://my-tracking-orders.googlecode.com/files" : "http://my-tracking-orders.googlecode.com/files");
67
+ var nbBaseURL = "http://tracking.mailin.fr/";
68
+ loadScript(nbJsURL+"/nbv2.js",
69
+ function(){
70
+ /*You can put your custom variables here as shown in example.*/
71
+ try {
72
+ var nbTracker = nb.getTracker(nbBaseURL , "'.$value->result->tracking_data->site_id.'");
73
+ var list = ["'.$get_User_lists.'"];
74
+ var attributes = ["EMAIL","PRENOM","NOM","ORDER_ID","ORDER_DATE","ORDER_PRICE"];
75
+ var values = ["'.$email.'","'.$firstname.'","'.$lastname.'","'.$order->increment_id.'","'.$date.'","'.$order_Data[amount_ordered].'"];
76
+ nbTracker.setListData(list);
77
+ nbTracker.setTrackingData(attributes,values);
78
+ nbTracker.trackPageView();
79
+ } catch( err ) {}
80
+ });
81
+
82
+ </script>';
83
+
84
+ echo $html;
85
+ }
86
+
87
+ }
88
+
89
+
90
+ }
app/code/local/Sendinblue/Sendinblue/Helper/Data.php ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @author Sendinblue plateform <contact@sendinblue.com>
4
+ * @copyright 2013-2014 Sendinblue
5
+ * URL: https:www.sendinblue.com
6
+ * Do not edit or add to this file if you wish to upgrade Sendinblue Magento plugin to newer
7
+ * versions in the future. If you wish to customize Sendinblue magento plugin for your
8
+ * needs then we can't provide a technical support.
9
+ **/
10
+
11
+ class Sendinblue_Sendinblue_Helper_Data extends Mage_Core_Helper_Abstract
12
+ {
13
+ public function getSMTP()
14
+ {
15
+ return Mage::getStoreConfig('sendinblue/smtp/option') == 'smtp';
16
+ }
17
+ public function getTransport()
18
+ {
19
+ if ($this->getSMTP())
20
+ {
21
+ $username = Mage::getStoreConfig('sendinblue/smtp/username');
22
+ $password = Mage::getStoreConfig('sendinblue/smtp/password');
23
+ $host = Mage::getStoreConfig('sendinblue/smtp/host');
24
+ $port = Mage::getStoreConfig('sendinblue/smtp/port');
25
+ $ssl = Mage::getStoreConfig('sendinblue/smtp/ssl');
26
+ $auth = Mage::getStoreConfig('sendinblue/smtp/authentication');
27
+ $config = array();
28
+ $config['username'] = $username;
29
+ $config['password'] = $password;
30
+ $config['port'] = $port;
31
+ $config['ssl'] = null;
32
+ $config['auth'] = $auth;
33
+ //echo "<pre>";
34
+ //print_r($config);
35
+ //die;
36
+ $transport = new Zend_Mail_Transport_Smtp($host, $config);
37
+ }
38
+ else
39
+ {
40
+ Mage::log('Disabled, or no matching transport');
41
+ return null;
42
+ }
43
+ Mage::log('Returning transport');
44
+ return $transport;
45
+ }
46
+ public function ModuleisEnabled()
47
+ {
48
+ return Mage::getStoreConfig('sendinblue/enabled');
49
+ }
50
+ public function isEnabled()
51
+ {
52
+ return Mage::getStoreConfig('sendinblue/smtp/status');
53
+ }
54
+ }
app/code/local/Sendinblue/Sendinblue/Model/Email.php ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @author Sendinblue plateform <contact@sendinblue.com>
4
+ * @copyright 2013-2014 Sendinblue
5
+ * URL: https:www.sendinblue.com
6
+ * Do not edit or add to this file if you wish to upgrade Sendinblue Magento plugin to newer
7
+ * versions in the future. If you wish to customize Sendinblue magento plugin for your
8
+ * needs then we can't provide a technical support.
9
+ **/
10
+
11
+ class Sendinblue_Sendinblue_Model_Email extends Mage_Core_Model_Email {
12
+ /**
13
+ * override send function
14
+ */
15
+ public function send()
16
+ {
17
+ // If it's not enabled, just return the parent result.
18
+ if (Mage::helper('sendinblue')->isEnabled() == 0 || Mage::helper('sendinblue')->ModuleisEnabled() == 0)
19
+ return parent::send($email, $name, $variables);
20
+ Mage::log('SendinblueSMTP is enabled, sending email in Sendinblue_Sendinblue_Model_Sendinblue');
21
+ $mail = new Zend_Mail();
22
+ if (strtolower($this->getType()) == 'html')
23
+ $mail->setBodyHtml($this->getBody());
24
+ else
25
+ $mail->setBodyText($this->getBody());
26
+ $transport = Mage::helper('sendinblue')->getTransport();
27
+ $email = Mage::getStoreConfig('contacts/email/recipient_email');
28
+ $mail->setFrom($this->getFromEmail(), $this->getFromName())
29
+ ->addTo($email, $this->getToName())
30
+ ->setSubject($this->getSubject());
31
+ Mage::log('About to send email');
32
+ $mail->send($transport);
33
+ Mage::log('Finished sending email');
34
+ return $this;
35
+ }
36
+ }
app/code/local/Sendinblue/Sendinblue/Model/Email/Template.php ADDED
@@ -0,0 +1,104 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @author Sendinblue plateform <contact@sendinblue.com>
4
+ * @copyright 2013-2014 Sendinblue
5
+ * URL: https:www.sendinblue.com
6
+ * Do not edit or add to this file if you wish to upgrade Sendinblue Magento plugin to newer
7
+ * versions in the future. If you wish to customize Sendinblue magento plugin for your
8
+ * needs then we can't provide a technical support.
9
+ **/
10
+
11
+ class Sendinblue_Sendinblue_Model_Email_Template extends Mage_Core_Model_Email_Template {
12
+
13
+ public function send($email, $name=null, array $variables = array()) {
14
+
15
+ // If it's not enabled, just return the parent result.
16
+
17
+ // If it's not enabled, just return the parent result.
18
+ if (Mage::helper('sendinblue')->isEnabled()==0 || Mage::helper('sendinblue')->ModuleisEnabled()==0) {
19
+ return parent::send($email, $name, $variables);
20
+ }
21
+
22
+
23
+
24
+ if(!$this->isValidForSend()) {
25
+ Mage::log('SMTP: Email not valid for sending - check template, and smtp enabled/disabled setting');
26
+ Mage::logException(new Exception('This letter cannot be sent.')); // translation is intentionally omitted
27
+ return false;
28
+ }
29
+
30
+ $emails = array_values((array)$email);
31
+ $names = is_array($name) ? $name : (array)$name;
32
+ $names = array_values($names);
33
+ foreach ($emails as $key => $email) {
34
+ if (!isset($names[$key])) {
35
+ $names[$key] = substr($email, 0, strpos($email, '@'));
36
+ }
37
+ }
38
+
39
+ $variables['email'] = reset($emails);
40
+ $variables['name'] = reset($names);
41
+
42
+ $mail = $this->getMail();
43
+
44
+
45
+
46
+ if (true) {
47
+
48
+ $email = Mage::getStoreConfig('contacts/email/recipient_email', $this->getDesignConfig()->getStore());
49
+ Mage::log("Development mode set to send all emails to contact form recipient: " . $email);
50
+
51
+ }
52
+
53
+ // In Magento core they set the Return-Path here, for the sendmail command.
54
+
55
+
56
+ foreach ($emails as $key => $email) {
57
+ $mail->addTo($email, '=?utf-8?B?' . base64_encode($names[$key]) . '?=');
58
+ }
59
+
60
+
61
+ $this->setUseAbsoluteLinks(true);
62
+ $text = $this->getProcessedTemplate($variables, true);
63
+
64
+ if($this->isPlain()) {
65
+ $mail->setBodyText($text);
66
+ } else {
67
+ $mail->setBodyHTML($text);
68
+ }
69
+
70
+ $mail->setSubject('=?utf-8?B?'.base64_encode($this->getProcessedTemplateSubject($variables)).'?=');
71
+ $mail->setFrom($this->getSenderEmail(), $this->getSenderName());
72
+
73
+
74
+ $transport = Mage::helper('sendinblue')->getTransport();
75
+
76
+ try {
77
+
78
+ // adding new Event dispatch in case anyone wants to interrogate an email before being sent
79
+ // throwing an Exception in the Event Observer will prevent the mail being sent,
80
+ // and will return false to the calling function
81
+ Mage::dispatchEvent('sendin_email_after_send', array(
82
+ 'mail' => $mail,
83
+ 'template' => $this->getTemplateId(),
84
+ 'subject' => $this->getProcessedTemplateSubject($variables),
85
+ ));
86
+
87
+ Mage::log('About to send email');
88
+ $mail->send($transport); // Zend_Mail warning..
89
+
90
+ Mage::log('Finished sending email');
91
+
92
+
93
+ $this->_mail = null;
94
+ } catch (Exception $e) {
95
+
96
+ Mage::logException($e);
97
+ $responceArr = array('result'=>false, 'error'=>$e->getMessage());
98
+ return json_encode($responceArr);
99
+ }
100
+ $responceArr = array('result'=>true);
101
+ return json_encode($responceArr);
102
+
103
+ }
104
+ }
app/code/local/Sendinblue/Sendinblue/Model/Mysql4/Sendinblue.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @author Sendinblue plateform <contact@sendinblue.com>
4
+ * @copyright 2013-2014 Sendinblue
5
+ * URL: https:www.sendinblue.com
6
+ * Do not edit or add to this file if you wish to upgrade Sendinblue Magento plugin to newer
7
+ * versions in the future. If you wish to customize Sendinblue magento plugin for your
8
+ * needs then we can't provide a technical support.
9
+ **/
10
+
11
+ class Sendinblue_Sendinblue_Model_Mysql4_Sendinblue extends Mage_Core_Model_Mysql4_Abstract
12
+ {
13
+ public function _construct()
14
+ {
15
+ $this->_init('sendinblue/sendinblue', 'sendinblue_country_code_id');
16
+ }
17
+ }
app/code/local/Sendinblue/Sendinblue/Model/Mysql4/Sendinblue/Collection.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @author Sendinblue plateform <contact@sendinblue.com>
4
+ * @copyright 2013-2014 Sendinblue
5
+ * URL: https:www.sendinblue.com
6
+ * Do not edit or add to this file if you wish to upgrade Sendinblue Magento plugin to newer
7
+ * versions in the future. If you wish to customize Sendinblue magento plugin for your
8
+ * needs then we can't provide a technical support.
9
+ **/
10
+
11
+ class Sendinblue_Sendinblue_Model_Mysql4_Sendinblue_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
12
+ {
13
+ public function _construct()
14
+ {
15
+ $this->_init('sendinblue/sendinblue');
16
+ }
17
+ }
app/code/local/Sendinblue/Sendinblue/Model/Observer.php ADDED
@@ -0,0 +1,260 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @author Sendinblue plateform <contact@sendinblue.com>
4
+ * @copyright 2013-2014 Sendinblue
5
+ * URL: https:www.sendinblue.com
6
+ * Do not edit or add to this file if you wish to upgrade Sendinblue Magento plugin to newer
7
+ * versions in the future. If you wish to customize Sendinblue magento plugin for your
8
+ * needs then we can't provide a technical support.
9
+ **/
10
+ class Sendinblue_Sendinblue_Model_Observer
11
+ {
12
+ protected static $fields = array ();
13
+ public function adminSubcriberDelete($observer)
14
+ {
15
+ $params = (Mage::app()->getRequest()->getParams())? Mage::app()->getRequest()->getParams() : array();
16
+ if (isset($params['subscriber']) && count($params['subscriber'] > 0))
17
+ {
18
+ $customer_email = array();
19
+ foreach ($params['subscriber'] as $costomer_id)
20
+ {
21
+ $costomer_data = Mage::getModel('newsletter/subscriber')->load($costomer_id)->toArray();
22
+ $customer_email[] = $costomer_data['subscriber_email'];
23
+ }
24
+ $customer_emails = implode('|', $customer_email);
25
+ $responce = Mage::getModel('sendinblue/sendinblue')->emailDelete($customer_emails);
26
+ }
27
+ if ($responce->result)
28
+ Mage::getSingleton('core/session')->addSuccess('Total of '.$responce->result->unsubEmailsCounts.' record(s) were Unsubscribed');
29
+ return $this;
30
+ }
31
+ public function adminCustomerDelete($observer)
32
+ {
33
+ $params = (Mage::app()->getRequest()->getParams())? Mage::app()->getRequest()->getParams() : array();
34
+ if (isset($params['customer']) && count($params['customer'] > 0))
35
+ {
36
+ $customer_email = array();
37
+ foreach ($params['customer'] as $costomer_id)
38
+ {
39
+ $costomer_data = Mage::getModel('customer/customer')->load($costomer_id)->toArray();
40
+ $customer_email[] = $costomer_data['email'];
41
+ }
42
+ $customer_emails = implode('|', $customer_email);
43
+ $responce = Mage::getModel('sendinblue/sendinblue')->emailDelete($customer_emails);
44
+ }
45
+ if ($responce->result)
46
+ Mage::getSingleton('core/session')->addSuccess('Total of '.$responce->result->unsubEmailsCounts.' record(s) were Unsubscribed');
47
+ return $this;
48
+ }
49
+ public function adminCustomerSubscribe($observer)
50
+ {
51
+ $params = (Mage::app()->getRequest()->getParams())? Mage::app()->getRequest()->getParams() : array();
52
+ if (isset($params['customer']) && count($params['customer'] > 0))
53
+ {
54
+ $customer_email = array();
55
+ foreach ($params['customer'] as $costomer_id)
56
+ {
57
+ $costomer_data = Mage::getModel('customer/customer')->load($costomer_id)->toArray();
58
+ $customer_email[] = $costomer_data['email'];
59
+ }
60
+ $customer_emails = implode('|', $customer_email);
61
+ $responce = Mage::getModel('sendinblue/sendinblue')->addEmailList($customer_emails);
62
+ }
63
+ if ($responce->result)
64
+ Mage::getSingleton('core/session')->addSuccess('Total of '.$responce->result->infoUpdatedCount.' record(s) were subscribed');
65
+ return $this;
66
+ }
67
+ public function subscribeObserver($observer)
68
+ {
69
+ $params = (Mage::app()->getRequest()->getParams())? Mage::app()->getRequest()->getParams() : array();
70
+ $client = 0;
71
+ $extra = ''.'|'.''.'|'.$client.'|'.'';
72
+ $responce = Mage::getModel('sendinblue/sendinblue')->emailAdd($params['email'], $extra);
73
+ return $this;
74
+ }
75
+ public function updateNewObserver($observer)
76
+ {
77
+ $extra = null;
78
+ $params = (Mage::app()->getRequest()->getParams())? Mage::app()->getRequest()->getParams() : array();
79
+
80
+ $cus_session = Mage::getSingleton('customer/session')->getCustomer();
81
+ $customer = ($cus_session->getEmail())? $cus_session : $observer->getCustomer();
82
+ $cus_data = $cus_session->getData();
83
+ $email = (isset($params['email']))? $params['email'] : $customer->getEmail();
84
+ $cid = $customer->getEntityid();
85
+ $fname = $customer->getFirstname();
86
+ $fname = empty($fname)?'':$fname;
87
+ $lname = $customer->getLastname();
88
+ $lname = empty($lname)?'':$lname;
89
+
90
+ $collectionAddress = Mage::getModel('customer/address')->getCollection()->addAttributeToSelect('telephone')->addAttributeToSelect('firstname')->addAttributeToSelect('lastname')->addAttributeToFilter('parent_id',$cid);
91
+ $telephone = '';
92
+ foreach ($collectionAddress as $customerPhno) {
93
+ $telephone = $customerPhno->getData('telephone');
94
+ $firstname = $customerPhno->getData('firstname');
95
+ $lastname = $customerPhno->getData('lastname');
96
+
97
+ }
98
+ $telephone = empty($telephone)?'':$telephone;
99
+ $firstname = empty($firstname)?'':$firstname;
100
+ $lastname = empty($lastname)?'':$lastname;
101
+
102
+ if ($fname != '' || $lname != '')
103
+ $client = 1;
104
+ else
105
+ $client = 0;
106
+
107
+ $is_subscribed = (isset($params['is_subscribed']))? $params['is_subscribed'] : '';
108
+
109
+ $is_subscribedupdate = (isset($params['is_subscribed']))? 1 : 0;
110
+ if ( isset($params['is_subscribed']) == '' ) {
111
+ $costomer_data = Mage::getModel('newsletter/subscriber')->loadByEmail($email);
112
+ $nlStatus = $costomer_data->getStatus();
113
+ $is_subscribedupdate = 1;
114
+ if ($nlStatus == '') {
115
+ $is_subscribedupdate = 0;
116
+ }
117
+ }
118
+ if ($fname != '' || $lname != '' || $telephone != '' || $email != '')
119
+ {
120
+ $extra = $fname.'|'.$lname.'|'.$client.'|'.$telephone;
121
+ if (isset($is_subscribed) && $is_subscribed == 1)
122
+ $responce = Mage::getModel('sendinblue/sendinblue')->emailAdd($email, $extra);
123
+
124
+ if (isset($is_subscribedupdate) && $is_subscribedupdate == 1) {
125
+ $responce = Mage::getModel('sendinblue/sendinblue')->emailAdd($email, $extra);
126
+ }
127
+ }
128
+
129
+ if (isset($is_subscribed) && $is_subscribed != '' && $is_subscribed === 0) {
130
+ Mage::getSingleton('core/session')->addSuccess($is_subscribed);
131
+ $responce = Mage::getModel('sendinblue/sendinblue')->emailDelete($email);
132
+ }
133
+ return $this;
134
+ }
135
+ public function syncData()
136
+ {
137
+ $responce = Mage::getModel('sendinblue/sendinblue')->syncData();
138
+ return $this;
139
+ }
140
+ public function updateStatus($observer)
141
+ {
142
+ $order = $observer->getEvent()->getOrder();
143
+
144
+ if ($order->getState() == Mage_Sales_Model_Order::STATE_PROCESSING)
145
+ {
146
+ $history = $order->getShipmentsCollection();
147
+ $history_array=$history->toarray();
148
+ $order_id = $history_array['items']['0']['order_id'];
149
+ $shippingaddrid = $history_array['items']['0']['shipping_address_id'];
150
+ $_order = Mage::getModel('sales/order')->load($order_id);
151
+ $_shippingAddress = $_order->getShippingAddress();
152
+ $locale = Mage::app()->getLocale()->getLocaleCode();
153
+ $mobile = $_shippingAddress->getTelephone();
154
+ $countryid = $_shippingAddress->getCountryId();
155
+ $sql = 'SELECT * FROM sendinblue_country_codes WHERE iso_code = "'.$countryid.'" ';
156
+ $connection = Mage::getSingleton('core/resource')->getConnection('core_read');
157
+ $data = $connection->fetchRow($sql);
158
+
159
+ $mobile = Mage::getModel('sendinblue/sendinblue')->checkMobileNumber($mobile,$data['country_prefix']);
160
+ $firstname = $_shippingAddress->getFirstname();
161
+ $lastname = $_shippingAddress->getLastname();
162
+ $ref_num = $_order->getIncrementId();
163
+ $orderprice = $_order->getGrandTotal();
164
+ $courrencycode = $_order->getBaseCurrencyCode();
165
+ $orderdate = $_order->getCreatedAt();
166
+ if ($locale == 'fr_FR')
167
+ $ord_date = date('d/m/Y', strtotime($orderdate));
168
+ else
169
+ $ord_date = date('m/d/Y', strtotime($orderdate));
170
+ $total_pay = $orderprice.' '.$courrencycode;
171
+ $msgbody = Mage::getModel('sendinblue/sendinblue')->getSendSmsShipingMessage();
172
+ $fname = str_replace('{first_name}', $firstname, $msgbody);
173
+ $lname = str_replace('{last_name}', $lastname."\r\n", $fname);
174
+ $procuct_price = str_replace('{order_price}', $total_pay, $lname);
175
+ $order_date = str_replace('{order_date}', $ord_date."\r\n", $procuct_price);
176
+ $msgbody = str_replace('{order_reference}', $ref_num, $order_date);
177
+
178
+ $arr = array();
179
+ $arr['to'] = $mobile;
180
+ $arr['from'] = Mage::getModel('sendinblue/sendinblue')->getSendSmsShipingSubject();
181
+ $arr['text'] = $msgbody;
182
+ Mage::getModel('sendinblue/sendinblue')->sendSmsApi($arr);
183
+
184
+ }
185
+ }
186
+ public function ordersucess($observer)
187
+ {
188
+ $get_Enable_Status = Mage::getModel('sendinblue/sendinblue')->getEnableStatus();
189
+ $get_order_status = Mage::getModel('sendinblue/sendinblue')->getOrderSmsStatus();
190
+ $get_User_lists = Mage::getModel('sendinblue/sendinblue')->getUserlists();
191
+ $get_Tracking_Status = Mage::getModel('sendinblue/sendinblue')->getTrackingStatus();
192
+ $value = Mage::getModel('sendinblue/sendinblue')->TrackingSmtp();
193
+
194
+ $orders = Mage::getModel('sales/order')->getCollection();
195
+ $order = $orders->getLastItem();
196
+
197
+ $order_Data = $order->getPayment()->getData();
198
+
199
+ $customer = Mage::getSingleton('customer/session')->getCustomer();
200
+ $orderaddress = Mage::getModel('sales/order')->loadByIncrementId($order->increment_id);
201
+
202
+ //for order sms send
203
+ if($get_Enable_Status && $get_order_status)
204
+ {
205
+ $locale = Mage::app()->getLocale()->getLocaleCode();
206
+ $mobile = $orderaddress->getBillingAddress()->getTelephone();
207
+ $countryid = $orderaddress->getBillingAddress()->getCountryId();
208
+ $sql = 'SELECT * FROM sendinblue_country_codes WHERE iso_code = "'.$countryid.'" ';
209
+ $connection = Mage::getSingleton('core/resource')->getConnection('core_read');
210
+ $data = $connection->fetchRow($sql);
211
+
212
+ $mobile = Mage::getModel('sendinblue/sendinblue')->checkMobileNumber($mobile,$data['country_prefix']);
213
+ $email = $orderaddress->getBillingAddress()->getEmail();
214
+ $firstname = $orderaddress->getBillingAddress()->getFirstname();
215
+ $lastname = $orderaddress->getBillingAddress()->getLastname();
216
+ $ref_num = $order->getIncrementId();
217
+ $orderprice = $order->getGrandTotal();
218
+ $currencycode = $order->getBaseCurrencyCode();
219
+ $orderdate = $order->getCreatedAt();
220
+ if ($locale == 'fr_FR')
221
+ $ord_date = date('d/m/Y', strtotime($orderdate));
222
+ else
223
+ $ord_date = date('m/d/Y', strtotime($orderdate));
224
+ $total_pay = $orderprice.' '.$currencycode;
225
+ $msgbody = Mage::getModel('sendinblue/sendinblue')->getSendSmsmOrderMessage();
226
+ $fname = str_replace('{first_name}', $firstname, $msgbody);
227
+ $lname = str_replace('{last_name}', $lastname."\r\n", $fname);
228
+ $procuct_price = str_replace('{order_price}', $total_pay, $lname);
229
+ $order_date = str_replace('{order_date}', $ord_date."\r\n", $procuct_price);
230
+ $msgbody = str_replace('{order_reference}', $ref_num, $order_date);
231
+
232
+ $arr = array();
233
+ $arr['to'] = $mobile;
234
+ $arr['from'] = Mage::getModel('sendinblue/sendinblue')->getSendSmsOrderSubject();
235
+ $arr['text'] = $msgbody;
236
+ $responce = Mage::getModel('sendinblue/sendinblue')->sendSmsApi($arr);
237
+ }
238
+
239
+ }
240
+ public function subscribedToNewsletter($observer)
241
+ {
242
+ $data = $observer->subscriber;
243
+ if($data->subscriber_status == 3)
244
+ Mage::getModel('sendinblue/sendinblue')->emailDelete($data->subscriber_email);
245
+ else if ($data->subscriber_status == 1)
246
+ Mage::getModel('sendinblue/sendinblue')->emailSubscribe($data->subscriber_email);
247
+
248
+ }
249
+ public function disableCache(Varien_Event_Observer $observer)
250
+ {
251
+ $action = $observer->getEvent()->getControllerAction();
252
+
253
+ if ($action instanceof Sendinblue_Sendinblue_Adminhtml_MyformController) { // eg. Mage_Catalog_ProductController
254
+ $request = $action->getRequest();
255
+ $cache = Mage::app()->getCacheInstance();
256
+ Mage::getSingleton('core/session')->addSuccess('Done successfully');
257
+ $cache->banUse('full_page'); // Tell Magento to 'ban' the use of FPC for this request
258
+ }
259
+ }
260
+ }
app/code/local/Sendinblue/Sendinblue/Model/Sendinblue.php ADDED
@@ -0,0 +1,1072 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @author Sendinblue plateform <contact@sendinblue.com>
4
+ * @copyright 2013-2014 Sendinblue
5
+ * URL: https:www.sendinblue.com
6
+ * Do not edit or add to this file if you wish to upgrade Sendinblue Magento plugin to newer
7
+ * versions in the future. If you wish to customize Sendinblue magento plugin for your
8
+ * needs then we can't provide a technical support.
9
+ **/
10
+ class Sendinblue_Sendinblue_Model_Sendinblue extends Mage_Core_Model_Abstract
11
+ {
12
+ var $api_url;
13
+ var $api_key;
14
+ var $smtp_status;
15
+ var $error_message;
16
+ var $error_code;
17
+ var $lists_ids;
18
+ var $module_enable;
19
+ var $st;
20
+ public function _construct()
21
+ {
22
+ parent::_construct();
23
+ $this->_init('sendinblue/sendinblue');
24
+ $this->MIAPI();
25
+ }
26
+ /**
27
+ * functions used for set module config
28
+ */
29
+ public function MIAPI()
30
+ {
31
+ $scope = ($this->getScope()) ? $this->getScope() : Mage::app()->getStore()->getStoreId();
32
+ $this->module_enable = $this->getEnableStatus($scope);
33
+ $this->api_url = 'http://ws.mailin.fr/';
34
+ $this->api_url2 = 'https://www.sendinblue.com/ws/getamd/';
35
+ $this->api_key = $this->getApiKey();
36
+ if (!$this->lists_ids)
37
+ $this->lists_ids = str_replace(',', '|', $this->getUserlists($scope));
38
+ $this->CreateFolderCaseTwo();
39
+ }
40
+
41
+ public function checkMobileNumber($number, $call_prefix)
42
+ {
43
+ $number = preg_replace('/\s+/', '', $number);
44
+ $charone = substr($number, 0, 1);
45
+ $chartwo = substr($number, 0, 2);
46
+ if ($charone == '0' && $chartwo != '00')
47
+ return '00'.$call_prefix.substr($number, 1);
48
+ else if ($chartwo == '00')
49
+ return $number;
50
+ else if ($charone == '+')
51
+ return '00'.substr($number, 1);
52
+ else if ($charone != '0')
53
+ return '00'.$call_prefix.$number;
54
+ }
55
+ /**
56
+ * functions used for getting module status
57
+ */
58
+ public function getEnableStatus()
59
+ {
60
+ $status = $this->getGeneralConfig('enabled', Mage::app()->getStore()->getStoreId());
61
+ if (!$status)
62
+ return false;
63
+ return $status;
64
+ }
65
+ /**
66
+ * functions used for send order sms module status
67
+ */
68
+ public function getOrderSmsStatus()
69
+ {
70
+ $status = $this->getGeneralConfig('sms/order', Mage::app()->getStore()->getStoreId());
71
+ if (!$status)
72
+ return false;
73
+ return $status;
74
+ }
75
+ /**
76
+ * functions used for getting notify sms status
77
+ */
78
+ public function getNotifySmsStatus()
79
+ {
80
+ $status = $this->getGeneralConfig('sms/credit', Mage::app()->getStore()->getStoreId());
81
+ if (!$status)
82
+ return false;
83
+ return $status;
84
+ }
85
+ /**
86
+ * functions used for getting Notify value limit
87
+ */
88
+ public function getNotifyValueStatus()
89
+ {
90
+ $status = $this->getGeneralConfig('Sendin_Notify_Value', Mage::app()->getStore()->getStoreId());
91
+ if (!$status)
92
+ return false;
93
+ return $status;
94
+ }
95
+ /**
96
+ * functions used for getting Notify email limit
97
+ */
98
+ public function getNotifyEmailStatus()
99
+ {
100
+ $status = $this->getGeneralConfig('Sendin_Notify_Email', Mage::app()->getStore()->getStoreId());
101
+ if (!$status)
102
+ return false;
103
+ return $status;
104
+ }
105
+ /**
106
+ * functions used for getting Notify email limit
107
+ */
108
+ public function getNotifyCronStatus()
109
+ {
110
+ $status = $this->getGeneralConfig('Sendin_Notify_Cron_Executed', Mage::app()->getStore()->getStoreId());
111
+ if (!$status)
112
+ return false;
113
+ return $status;
114
+ }
115
+ /**
116
+ * functions used for getting shiping sms status
117
+ */
118
+ public function getShipingSmsStatus()
119
+ {
120
+ $status = $this->getGeneralConfig('sms/shiping', Mage::app()->getStore()->getStoreId());
121
+ if (!$status)
122
+ return false;
123
+ return $status;
124
+ }
125
+ /**
126
+ * functions used for getting campaign sms status
127
+ */
128
+ public function getCampaignStatus()
129
+ {
130
+ $status = $this->getGeneralConfig('sms/campaign', Mage::app()->getStore()->getStoreId());
131
+ if (!$status)
132
+ return false;
133
+ return $status;
134
+ }
135
+ /**
136
+ * functions used for getting send sms order subject
137
+ */
138
+ public function getSendSmsOrderSubject()
139
+ {
140
+ $status = $this->getGeneralConfig('Sendin_Sender_Order', Mage::app()->getStore()->getStoreId());
141
+ if (!$status)
142
+ return false;
143
+ return $status;
144
+ }
145
+ /**
146
+ * functions used for getting order sms message
147
+ */
148
+ public function getSendSmsmOrderMessage()
149
+ {
150
+ $status = $this->getGeneralConfig('Sendin_Sender_Order_Message', Mage::app()->getStore()->getStoreId());
151
+ if (!$status)
152
+ return false;
153
+ return $status;
154
+ }
155
+ /**
156
+ *functions used for getting send sms shiping subject
157
+ */
158
+ public function getSendSmsShipingSubject()
159
+ {
160
+ $status = $this->getGeneralConfig('Sendin_Sender_Shipment', Mage::app()->getStore()->getStoreId());
161
+ if (!$status)
162
+ return false;
163
+ return $status;
164
+ }
165
+ /**
166
+ *functions used for getting shiping sms message
167
+ */
168
+ public function getSendSmsShipingMessage()
169
+ {
170
+ $status = $this->getGeneralConfig('Sendin_Sender_Shipment_Message', Mage::app()->getStore()->getStoreId());
171
+ if (!$status)
172
+ return false;
173
+ return $status;
174
+ }
175
+ /**
176
+ * functions used for get api key
177
+ */
178
+ public function getApiKey()
179
+ {
180
+ $apikey = $this->getGeneralConfig('api', Mage::app()->getStore()->getStoreId());
181
+ if (!$apikey)
182
+ return false;
183
+ return $apikey;
184
+ }
185
+ /**
186
+ * functions used for getting smtp status
187
+ */
188
+ public function getSmtpStatus()
189
+ {
190
+ $status = $this->getSendinSmtpStatus('status', Mage::app()->getStore()->getStoreId());
191
+ if (!$status)
192
+ return false;
193
+ return $status;
194
+ }
195
+ /**
196
+ * functions used for getting tracking status
197
+ */
198
+ public function getTrackingStatus()
199
+ {
200
+ $status = $this->getSendinTrackingCodeStatus('code', Mage::app()->getStore()->getStoreId());
201
+ if (!$status) {
202
+ return false;
203
+ }
204
+ return $status;
205
+ }
206
+ /**
207
+ * functions used for getting userlists
208
+ */
209
+ public function getUserlists()
210
+ {
211
+ $userlist = $this->getGeneralConfig('list', Mage::app()->getStore()->getStoreId());
212
+ if (!$userlist)
213
+ return false;
214
+ return $userlist;
215
+ }
216
+ /**
217
+ * functions used for getting general config
218
+ */
219
+ public function getGeneralConfig($field, $store = null)
220
+ {
221
+ return Mage::getStoreConfig('sendinblue/'.$field, $store);
222
+ }
223
+ /**
224
+ * functions used for get sendinsmtp status
225
+ */
226
+ public function getSendinSmtpStatus($field, $store = null)
227
+ {
228
+ return Mage::getStoreConfig('sendinblue/smtp/'.$field, $store);
229
+ }
230
+ public function getSyncronizeStatus()
231
+ {
232
+ return $this->getGeneralConfig('syncronize', Mage::app()->getStore()->getStoreId());
233
+ }
234
+ /**
235
+ * functions used for get sendin tracking status
236
+ */
237
+ public function getSendinTrackingCodeStatus($field, $store = null)
238
+ {
239
+ return Mage::getStoreConfig('sendinblue/tracking/'.$field, $store);
240
+ }
241
+ /**
242
+ * functions used for module functionality
243
+ */
244
+ public function getLists()
245
+ {
246
+ return $this->lists();
247
+ }
248
+ /**
249
+ * functions used for email adds
250
+ */
251
+ public function emailAdd($email, $extra)
252
+ {
253
+ if ($this->module_enable == 1 && $this->getSyncronizeStatus())
254
+ {
255
+ $apikey = $this->api_key;
256
+ if (!$apikey)
257
+ return false;
258
+ $params = array();
259
+ $params['email'] = $email;
260
+ $params['id'] = '';
261
+ $params['blacklisted'] = '';
262
+ if ($extra != null)
263
+ {
264
+ $params['attributes_name'] = 'PRENOM|NOM|CLIENT|SMS';
265
+ $params['attributes_value'] = $extra;
266
+ } else
267
+ {
268
+ $params['attributes_value'] = $email;
269
+
270
+ }
271
+ $params['listid'] = $this->lists_ids;
272
+ return $this->callServer('USERCREADITM', $params);
273
+ } else
274
+ return false;
275
+ }
276
+ /**
277
+ * functions subscribeuser
278
+ */
279
+ public function emailSubscribe($email)
280
+ {
281
+ if ($this->module_enable == 1 && $this->getSyncronizeStatus())
282
+ {
283
+ $apikey = $this->api_key;
284
+ $timezone = Mage::app()->getStore()->getConfig('general/locale/timezone');
285
+ $timez = str_replace('Calcutta', 'Kolkata', $timezone);
286
+ $tm = date("Y-m-d H:i:s", Mage::getModel('core/date')->timestamp(time()));
287
+
288
+ if (!$apikey)
289
+ return false;
290
+ $data = array();
291
+ $data['key'] = $apikey;
292
+ $data['webaction']='UPDATE-USER-SUBSCRIPTION-STATUS';
293
+ $data['timezone'] = $timez;
294
+ $data['user_status'] = $email.', '.'1'.', '.$tm;
295
+ return $this->curlRequest($data);
296
+ } else
297
+ return false;
298
+ }
299
+
300
+ /**
301
+ * functions used for sync data
302
+ */
303
+ public function syncData()
304
+ {
305
+ if ($this->module_enable == 1 && $this->getSyncronizeStatus())
306
+ {
307
+ $apikey = $this->api_key;
308
+ if (!$apikey)
309
+ return false;
310
+ $params = array();
311
+ $params['listids'] = str_replace(',', '|', $this->lists_ids);
312
+ $response = $this->callServer('DISPLAYLISTDATABLACK', $params);
313
+ $result_arr = $response->result;
314
+ $collection = Mage::getResourceModel('newsletter/subscriber_collection')->showStoreInfo()->showCustomerInfo()->toArray();
315
+ $subscriber_data = $collection['items'];
316
+ if (count($result_arr) > 0)
317
+ {
318
+ $emails = array();
319
+ foreach ($result_arr as $key => $value)
320
+ {
321
+ foreach ($value as $user_data)
322
+ {
323
+ foreach ($subscriber_data as $data)
324
+ {
325
+ $temp_sub_status = ($data['subscriber_status'] == 3) ? 1 : 0;
326
+ if (($data['subscriber_email'] == $user_data->email) && ($temp_sub_status != $user_data->blacklisted))
327
+ {
328
+ $emails[] = $data['subscriber_email'];
329
+ $subscribe_data['subscriber_id'] = $data['subscriber_id'];
330
+ $subscribe_data['subscriber_status'] = ($user_data->blacklisted == 1)?3:1;
331
+ $costomer_data = Mage::getModel('newsletter/subscriber')->loadByEmail($data['subscriber_email']);
332
+ $costomer_data->setStatus($subscribe_data['subscriber_status']);
333
+ $costomer_data->setIsStatusChanged(true);
334
+ $costomer_data->save();
335
+ }
336
+ }
337
+ }
338
+ }
339
+ }
340
+ if (count($emails) > 0)
341
+ Mage::getSingleton('core/session')->addSuccess(count($emails).Mage::helper('sendinblue')->__(' Total of record(s) have been updated'));
342
+ else
343
+ Mage::getSingleton('core/session')->addSuccess(count($emails).Mage::helper('sendinblue')->__(' Total of record(s) have been updated'));
344
+ return true;
345
+ }
346
+ else
347
+ return false;
348
+ }
349
+ /**
350
+ * This method is used for add email list
351
+ */
352
+ public function addEmailList($email)
353
+ {
354
+ if ($this->module_enable == 1 && $this->getSyncronizeStatus())
355
+ {
356
+ $apikey = $this->api_key;
357
+ if (!$apikey)
358
+ return false;
359
+ $params = array();
360
+ $params['email'] = $email;
361
+ $params['id'] = '';
362
+ $params['blacklisted'] = '';
363
+ $params['attributes_name'] = '';
364
+ $params['attributes_value'] = '';
365
+ $params['listid'] = $this->lists_ids;
366
+ return $this->callServer('USERCREADITM', $params);
367
+ } else
368
+ return false;
369
+ }
370
+ /**
371
+ * This method is used used for email unsubscribe
372
+ */
373
+ public function emailDelete($email)
374
+ {
375
+ if ($this->module_enable == 1 && $this->getSyncronizeStatus())
376
+ {
377
+ $apikey = $this->api_key;
378
+ if (!$apikey)
379
+ return false;
380
+ $params = array();
381
+ $params['email'] = $email;
382
+ $params['listid'] = $this->lists_ids;
383
+ return $this->callServer('UNSUBAPI', $params);
384
+ } else
385
+ return false;
386
+ }
387
+ /**
388
+ * This method is used used for check api status
389
+ */
390
+ public function checkApikey($api_key)
391
+ {
392
+ $params['key'] = $api_key;
393
+ $response = $this->callServer('DISPLAYLISTDATA', $params);
394
+ if (isset($response->errorMsg) && !empty($response->errorMsg))
395
+ return $lists['error'] = $response->errorMsg;
396
+ }
397
+ /**
398
+ * functions used for smtp details and order tracking
399
+ */
400
+ public function SmtpDetailsWithTracking()
401
+ {
402
+ $params['key'] = $this->api_key;
403
+ $response = $this->callServer('TRACKINGDATA', $params);
404
+ if (isset($response->errorMsg) && !empty($response->errorMsg))
405
+ {
406
+ $tracking['error'] = $response->errorMsg;
407
+ return $tracking;
408
+ }
409
+ return $response;
410
+ }
411
+ /**
412
+ * Fetches all the list of the user from the Sendinblue platform.
413
+ */
414
+ public function lists($filters = array())
415
+ {
416
+ $params = array();
417
+ $response = $this->callServer('DISPLAYLISTDATA', $params);
418
+ if (isset($response->errorMsg) && !empty($response->errorMsg))
419
+ {
420
+ $this->error_message = $response->errorMsg;
421
+ $lists['error'] = $response->errorMsg;
422
+ } else
423
+ {
424
+ $i = 0;
425
+ $lists = array();
426
+ foreach ($response->result as $list_data)
427
+ {
428
+ $lists[$i]['id'] = $list_data->id;
429
+ $lists[$i]['name'] = $list_data->name;
430
+ $i++;
431
+ }
432
+ }
433
+ return $lists;
434
+ }
435
+ /**
436
+ * Fetches the list status of the user from the Sendinblue platform.
437
+ */
438
+ public function getUserListStats()
439
+ {
440
+ if ($this->module_enable == 1)
441
+ {
442
+ $params = array();
443
+ $params['list'] = 'ALL';
444
+ return $this->callServer('DISPLAYLISTDATA', $params);
445
+ } else
446
+ return Mage::getSingleton('core/session')->addError('Sendinblue not enabled');
447
+ }
448
+ /**
449
+ * Fetches all folders and all list within each folder of the user's Sendinblue
450
+ * account and displays them to the user.
451
+ */
452
+ public function checkFolderList()
453
+ {
454
+ $params = array();
455
+ $array = array();
456
+ $list_response = $this->callServer('DISPLAY-FOLDERS-LISTS', $params);
457
+ $list_response = json_encode($list_response);
458
+ $res = json_decode($list_response, true);
459
+ if (isset($res) && !empty($res))
460
+ {
461
+ foreach ($res as $key => $value)
462
+ {
463
+ if (strtolower($value['name']) == 'magento')
464
+ {
465
+ $array[] = $key;
466
+ $array[] = $value['name'];
467
+ }
468
+ if (!empty($value['lists']))
469
+ {
470
+ foreach ($value['lists'] as $val)
471
+ {
472
+ if (strtolower($val['name']) == 'magento')
473
+ $array[] = $val['name'];
474
+ }
475
+ }
476
+ }
477
+ }
478
+ return $array;
479
+ }
480
+ /**
481
+ * folder create in Sendinblue after removing from Sendinblue
482
+ */
483
+ public function createFolderCaseTwo()
484
+ {
485
+ $apikey = $this->api_key;
486
+ if($apikey == '')
487
+ return false;
488
+ $response = $this->checkApikey($apikey); // check api key is valid or not
489
+ if ($this->module_enable != 1 && $apikey == '' && $response['error'] != '' && $this->getSyncronizeStatus())
490
+ return false;
491
+ $result = $this->checkFolderList();
492
+ $list_name = 'magento';
493
+ $param = array();
494
+ $data = array();
495
+ $folder_id = $result[0];
496
+ $exist_list = $result[2];
497
+ if (empty($result[1]))
498
+ {
499
+ $params = array();
500
+ $params['foldername'] = 'magento';
501
+ $response = $this->callServer('ADDFOLDER', $params);
502
+ $folder_id = $response->folder_id;
503
+ $params = array();
504
+ $params['listname'] = $list_name;
505
+ $params['list_parent'] = $folder_id; //folder id
506
+ $list_response = $this->callServer('NEWLIST', $params);
507
+ $this->sendAllMailIDToSendin($list_response);
508
+ } elseif (empty($exist_list))
509
+ {
510
+ $params = array();
511
+ $params['listname'] = $list_name;
512
+ $params['list_parent'] = $folder_id; //folder id
513
+ $list_response = $this->callServer('NEWLIST', $params);
514
+ $this->sendAllMailIDToSendin($list_response);
515
+ }
516
+ }
517
+ /**
518
+ * Method is used getambassador Services.
519
+ */
520
+ public function amdRequest($api)
521
+ {
522
+ $data['key'] = $api;
523
+ $data['campaign_id'] = '2147';
524
+ $data['campaign_short_code'] = 'zHzc';
525
+
526
+ return $list_response = $this->curlRequest($data);
527
+
528
+ }
529
+
530
+ /**
531
+ * folder create in Sendinblue after installing
532
+ */
533
+ public function createFolderName($api_key)
534
+ {
535
+ $this->api_key = $api_key;
536
+ $this->createAttributesName();
537
+ $result = $this->checkFolderList();
538
+ if (empty($result[1]))
539
+ {
540
+ $params = array();
541
+ $params['foldername'] = 'magento';
542
+ $response = $this->callServer('ADDFOLDER', $params);
543
+ $folder_id = $response->folder_id;
544
+ $exist_list = '';
545
+ } else
546
+ {
547
+ $folder_id = $result[0];
548
+ $exist_list = $result[2];
549
+ }
550
+ $this->createNewList($folder_id, $exist_list);
551
+ $this->partnerMagento();
552
+ }
553
+ /**
554
+ * Method is used to add the partner's name in Sendinblue.
555
+ * In this case its "MAGENTO".
556
+ */
557
+ public function partnerMagento()
558
+ {
559
+ $params = array();
560
+ $params['partner'] = 'MAGENTO';
561
+ $this->callServer('MAILIN-PARTNER', $params);
562
+ }
563
+ /**
564
+ * Creates a list by the name "magento" on user's Sendinblue account.
565
+ */
566
+ public function createNewList($response, $exist_list)
567
+ {
568
+ if ($exist_list != '')
569
+ {
570
+ $date = date('dmY');
571
+ $list_name = 'magento_'.$date;
572
+ }
573
+ else
574
+ $list_name = 'magento';
575
+ $params = array();
576
+ $params['listname'] = $list_name;
577
+ $params['list_parent'] = $response;
578
+ $list_response = $this->callServer('NEWLIST', $params);
579
+ $this->sendAllMailIDToSendin($list_response);
580
+ $this->createAttributesName();
581
+ }
582
+ /**
583
+ * Create Normal, Transactional, Calculated and Global attributes and their values
584
+ * on Sendinblue platform. This is necessary for the Prestashop to add subscriber's details.
585
+ */
586
+ public function createAttributesName()
587
+ {
588
+ $params = array();
589
+ $params['normal_attributes'] = 'PRENOM,text|NOM,text|SMS,text|CLIENT,number';
590
+ $params['transactional_attributes'] = 'ORDER_ID,id|ORDER_DATE,date|ORDER_PRICE,number';
591
+ $this->callServer('ATTRIBUTES_CREATION', $params);
592
+ }
593
+ /**
594
+ * Method is used to send all the subscribers from magento to
595
+ * Sendinblue for adding / updating purpose.
596
+ */
597
+ public function sendAllMailIDToSendin($list)
598
+ {
599
+ $allemail = $this->getcustomers();
600
+ $params = array();
601
+ $params['webaction'] = 'MULTI-USERCREADIT';
602
+ $params['key'] = $this->api_key;
603
+ $params['attributes'] = $allemail;
604
+ $params['listid'] = $list->result;
605
+ $response = $this->callServer('MULTI-USERCREADIT', $params);
606
+ $sendin_switch = new Mage_Core_Model_Config();
607
+ $sendin_switch->saveConfig('sendinblue/list', $list->result, 'default', 0);
608
+ }
609
+ /**
610
+ * Send SMS from Sendin.
611
+ */
612
+ public function sendSmsApi($array)
613
+ {
614
+ $params = array();
615
+ $params['key'] = $this->api_key;
616
+ $params['to'] = $array['to'];
617
+ $params['from'] = $array['from'];
618
+ $params['text'] = $array['text'];
619
+ return $this->callServer('SENDSMS', $params);
620
+ }
621
+
622
+ public function sendOrder($mobile)
623
+ {
624
+ $sendin_switch = new Mage_Core_Model_Config();
625
+
626
+ if (isset($mobile))
627
+ {
628
+ $arr = array();
629
+ $arr['to'] = $mobile;
630
+ $arr['from'] = Mage::getModel('sendinblue/sendinblue')->getSendSmsOrderSubject();
631
+ $arr['text'] = Mage::getModel('sendinblue/sendinblue')->getSendSmsmOrderMessage();
632
+
633
+ return $result = Mage::getModel('sendinblue/sendinblue')->sendSmsApi($arr);
634
+ }
635
+
636
+ }
637
+ public function notifySmsEmail()
638
+ {
639
+ $sendin_switch = new Mage_Core_Model_Config();
640
+ if($this->getSmsCredit() < $this->getNotifyValueStatus() && $this->module_enable == 1 && $this->getNotifySmsStatus() == 1)
641
+ {
642
+ if($this->getNotifyCronStatus() == 0)
643
+ {
644
+ $sendin_switch->saveConfig('Sendin_Notify_Cron_Executed', 1, 'default', 0);
645
+ $locale = Mage::app()->getLocale()->getLocaleCode();
646
+ $email_template_variables = array();
647
+ if ($locale == 'fr_FR')
648
+ {
649
+ $email_template_variables['text0'] = ' [SendinBlue] Alerte: Vos crédits SMS seront bientôt épuisés';
650
+ $sender_name = 'SendinBlue';
651
+ $sender_email = 'contact@sendinblue.com';
652
+ }
653
+ else
654
+ {
655
+ $email_template_variables['text0'] = '[SendinBlue] Alert: You do not have enough credits SMS';
656
+ $sender_name = 'SendinBlue';
657
+ $sender_email = 'contact@sendinblue.com';
658
+ }
659
+ $email = $this->getNotifyEmailStatus();
660
+
661
+ $email_template = Mage::getModel('core/email_template')->loadDefault('notification_template');
662
+ $temp=$email_template->template_text;
663
+ $web_site = Mage::app()->getWebsite()->getName();
664
+ $credit = $this->getSmsCredit();
665
+ preg_match_all('#{(.*)}#', $temp, $match);
666
+
667
+ $temp_params = array(
668
+ '{site_name}'=>$web_site,
669
+ '{present_credit}'=>$credit
670
+
671
+ );
672
+ foreach($match[0] as $var=>$value){
673
+ $temp = preg_replace('#'.$value.'#',$temp_params[$value],$temp);
674
+ }
675
+ $email_template->template_text = $temp;
676
+ $email_template->getProcessedTemplate($email_template_variables);
677
+ $email_template->setSenderName($sender_name);
678
+ $email_template->setSenderEmail($sender_email);
679
+ $email_template->setTemplateSubject($email_template_variables['text0']);
680
+ return $email_template->send($email, '', $email_template_variables);
681
+
682
+ }
683
+
684
+
685
+ }
686
+ else
687
+ {
688
+ $sendin_switch->saveConfig('Sendin_Notify_Cron_Executed', 0, 'default', 0);
689
+ }
690
+
691
+ Mage::getSingleton('core/session')->addSuccess(Mage::helper('sendinblue')->__('Notification mail has been sent'));
692
+ }
693
+ /**
694
+ * show SMS credit from Sendinblue.
695
+ */
696
+ public function getSmsCredit()
697
+ {
698
+ $params = array();
699
+ $params['key'] = $this->api_key;
700
+ $result = $this->callServer('USER-CURRENT-PLAN', $params);
701
+ if ($result['1']->plan_type == 'SMS')
702
+ return $result['1']->credits;
703
+ }
704
+ /**
705
+ * Method is used to send test email to the user.
706
+ */
707
+ public function sendTestMail($email)
708
+ {
709
+ $locale = Mage::app()->getLocale()->getLocaleCode();
710
+ $email_template_variables = array();
711
+ if ($locale == 'fr_FR')
712
+ {
713
+ $email_template_variables['text0'] = '[SendinBlue SMTP] e-mail de test';
714
+ $sender_name = 'SendinBlue';
715
+ $sender_email = 'contact@sendinblue.com';
716
+ }
717
+ else
718
+ {
719
+ $email_template_variables['text0'] = '[SendinBlue SMTP] test email';
720
+ $sender_name = 'SendinBlue';
721
+ $sender_email = 'contact@sendinblue.com';
722
+ }
723
+ try {
724
+ $email_template = Mage::getModel('core/email_template')->loadDefault('custom_template');
725
+ $email_template->getProcessedTemplate($email_template_variables);
726
+ $email_template->setSenderName($sender_name);
727
+ $email_template->setSenderEmail($sender_email);
728
+ $email_template->setTemplateSubject($email_template_variables['text0']);
729
+ return $email_template->send($email, '', $email_template_variables);
730
+ }
731
+ catch(Exception $e) {
732
+
733
+ }
734
+ }
735
+
736
+ /**
737
+ * This method is used to fetch all users from the default customer table to list
738
+ * them in the Sendinblue magento module.
739
+ */
740
+ public function getcustomers()
741
+ {
742
+ $data = array();
743
+ $collection = Mage::getModel('customer/customer')->getCollection()->addAttributeToSelect('email')->addAttributeToSelect('firstname')->addAttributeToSelect('lastname');
744
+ foreach ($collection as $customer)
745
+ {
746
+
747
+ $email = $customer->getData('email');
748
+ $firstname = $customer->getData('firstname');
749
+ $lastname = $customer->getData('lastname');
750
+ $cid = $customer->getData('entity_id');
751
+
752
+ $collectionAddress = Mage::getModel('customer/address')->getCollection()->addAttributeToSelect('telephone')->addAttributeToSelect('country_id')->addAttributeToFilter('parent_id',(int)$cid);
753
+ $telephone = '';
754
+ foreach ($collectionAddress as $customerPhno) {
755
+ $telephone = $customerPhno->getData('telephone');
756
+ $country_id = $customerPhno->getData('country_id');
757
+ }
758
+
759
+ $customer_select[$email] = array(
760
+ 'email' => $email,
761
+ 'PRENOM' => $firstname,
762
+ 'NOM' => $lastname,
763
+ 'SMS' => $telephone,
764
+ 'country_id' => $country_id,
765
+ 'CLIENT' => $cid>0?1:0
766
+ );
767
+ }
768
+
769
+ $newsletterArr = array();
770
+ $newsletter = Mage::getResourceModel('newsletter/subscriber_collection')->addFieldToFilter('subscriber_status', array('eq' => 1))->load();
771
+ $cnt = 0;
772
+ foreach ( $newsletter->getItems() as $subscriber )
773
+ {
774
+ $customer_id = $subscriber->getCustomerId();;
775
+ $subscriber_email = $subscriber->getSubscriberEmail();
776
+ $subscriber_status = $subscriber->getSubscriberStatus();
777
+
778
+ if ( !empty($customer_select[$subscriber_email]) ) {
779
+ $newsletterArr[$cnt] = $customer_select[$subscriber_email];
780
+ $newsletterArr[$cnt]['subscriber_status'] = $subscriber_status;
781
+ unset($customer_select[$subscriber_email]);
782
+ }
783
+ else {
784
+ $newsletterArr[$cnt] = array(
785
+ 'email' => $subscriber_email,
786
+ 'PRENOM' => '',
787
+ 'NOM' => '',
788
+ 'SMS' => '',
789
+ 'country_id' => ''
790
+ );
791
+ $newsletterArr[$cnt]['CLIENT'] = $customer_id>0?1:0;
792
+ $newsletterArr[$cnt]['subscriber_status'] = $subscriber_status;
793
+ }
794
+ $cnt++;
795
+ }
796
+
797
+ return json_encode($newsletterArr);
798
+ }
799
+ /**
800
+ * This method is used to fetch all users from the default newsletter table to list
801
+ * them in the Sendinblue magento module.
802
+ */
803
+ public function getNewsletterSubscribe($start, $per_page)
804
+ {
805
+ $collection = Mage::getModel('customer/customer')->getCollection()->addAttributeToSelect('email')->addAttributeToSelect('firstname')->addAttributeToSelect('lastname');
806
+ foreach ($collection as $customer)
807
+ {
808
+
809
+ $email = $customer->getData('email');
810
+ $firstname = $customer->getData('firstname');
811
+ $lastname = $customer->getData('lastname');
812
+ $cid = $customer->getData('entity_id');
813
+
814
+ $collectionAddress = Mage::getModel('customer/address')->getCollection()->addAttributeToSelect('telephone')->addAttributeToSelect('country_id')->addAttributeToFilter('parent_id',(int)$cid);
815
+ $telephone = '';
816
+ foreach ($collectionAddress as $customerPhno) {
817
+ $telephone = $customerPhno->getData('telephone');
818
+ $country_id = $customerPhno->getData('country_id');
819
+ }
820
+
821
+ $customer_select[$email] = array(
822
+ 'email' => $email,
823
+ 'firstname' => $firstname,
824
+ 'lastname' => $lastname,
825
+ 'telephone' => $telephone,
826
+ 'country_id' => $country_id,
827
+ 'customer_id' => $cid
828
+ );
829
+ }
830
+
831
+ $newsletterArr = array();
832
+ $newsletter = Mage::getResourceModel('newsletter/subscriber_collection')->load();
833
+
834
+ $cnt = 0;
835
+ foreach ( $newsletter->getItems() as $subscriber )
836
+ {
837
+ $customer_id = $subscriber->getCustomerId();;
838
+ $subscriber_email = $subscriber->getSubscriberEmail();
839
+ $subscriber_status = $subscriber->getSubscriberStatus();
840
+
841
+ if ( !empty($customer_select[$subscriber_email]) ) {
842
+ $newsletterArr[$cnt] = $customer_select[$subscriber_email];
843
+ $newsletterArr[$cnt]['subscriber_status'] = $subscriber_status;
844
+ unset($customer_select[$subscriber_email]);
845
+ }
846
+ else {
847
+ $newsletterArr[$cnt] = array(
848
+ 'email' => $subscriber_email,
849
+ 'firstname' => '',
850
+ 'lastname' => '',
851
+ 'telephone' => '',
852
+ 'country_id' => ''
853
+ );
854
+ $newsletterArr[$cnt]['customer_id'] = $customer_id;
855
+ $newsletterArr[$cnt]['subscriber_status'] = $subscriber_status;
856
+ }
857
+ $cnt++;
858
+ }
859
+
860
+ if ( count($customer_select) > 0 ) {
861
+ foreach ( $customer_select as $cData ) {
862
+ $newsletterArr[$cnt] = $cData;
863
+ $newsletterArr[$cnt]['subscriber_status'] = 3;
864
+ $cnt++;
865
+ }
866
+ }
867
+
868
+ return array_slice($newsletterArr, $start, $per_page, true);
869
+ }
870
+ /**
871
+ * This method is used to fetch total count users from the default newsletter table to list
872
+ * them in the Sendinblue magento module.
873
+ */
874
+ public function getTotalCount()
875
+ {
876
+ $collection = Mage::getModel('customer/customer')->getCollection()->addAttributeToSelect('email')->addAttributeToSelect('firstname')->addAttributeToSelect('lastname');
877
+ foreach ($collection as $customer)
878
+ {
879
+
880
+ $email = $customer->getData('email');
881
+ $firstname = $customer->getData('firstname');
882
+ $lastname = $customer->getData('lastname');
883
+ $cid = $customer->getData('entity_id');
884
+
885
+ $collectionAddress = Mage::getModel('customer/address')->getCollection()->addAttributeToSelect('telephone')->addAttributeToSelect('country_id')->addAttributeToFilter('parent_id',(int)$cid);
886
+ $telephone = '';
887
+ foreach ($collectionAddress as $customerPhno) {
888
+ $telephone = $customerPhno->getData('telephone');
889
+ $country_id = $customerPhno->getData('country_id');
890
+ }
891
+
892
+ $customer_select[$email] = array(
893
+ 'email' => $email,
894
+ 'firstname' => $firstname,
895
+ 'lastname' => $lastname,
896
+ 'telephone' => $telephone,
897
+ 'country_id' => $country_id,
898
+ 'customer_id' => $cid
899
+ );
900
+ }
901
+
902
+ $newsletterArr = array();
903
+ $newsletter = Mage::getResourceModel('newsletter/subscriber_collection')->load();
904
+
905
+ $cnt = 0;
906
+ foreach ( $newsletter->getItems() as $subscriber )
907
+ {
908
+ $customer_id = $subscriber->getCustomerId();;
909
+ $subscriber_email = $subscriber->getSubscriberEmail();
910
+ $subscriber_status = $subscriber->getSubscriberStatus();
911
+
912
+ if ( !empty($customer_select[$subscriber_email]) ) {
913
+ $newsletterArr[$cnt] = $customer_select[$subscriber_email];
914
+ $newsletterArr[$cnt]['subscriber_status'] = $subscriber_status;
915
+ unset($customer_select[$subscriber_email]);
916
+ }
917
+ else {
918
+ $newsletterArr[$cnt] = array(
919
+ 'email' => $subscriber_email,
920
+ 'firstname' => '',
921
+ 'lastname' => '',
922
+ 'telephone' => '',
923
+ 'country_id' => ''
924
+ );
925
+ $newsletterArr[$cnt]['customer_id'] = $customer_id;
926
+ $newsletterArr[$cnt]['subscriber_status'] = $subscriber_status;
927
+ }
928
+ $cnt++;
929
+ }
930
+
931
+ if ( count($customer_select) > 0 ) {
932
+ foreach ( $customer_select as $cData ) {
933
+ $newsletterArr[$cnt] = $cData;
934
+ $newsletterArr[$cnt]['subscriber_status'] = 3;
935
+ $cnt++;
936
+ }
937
+ }
938
+
939
+ return count($newsletterArr);
940
+ }
941
+ /**
942
+ * This method is used to fetch total count unsubscribe users from the default newsletter table to list
943
+ * them in the Sendinblue magento module.
944
+ */
945
+ public function getNewsletterUnSubscribeCount()
946
+ {
947
+ $sql = 'SELECT count(*) as totalcoutn FROM customer_entity CE
948
+ LEFT JOIN newsletter_subscriber
949
+ ON CE.entity_id=newsletter_subscriber.customer_id WHERE subscriber_status != 1 or subscriber_status is null';
950
+ $unsubs_count1 = Mage::getSingleton('core/resource') ->getConnection('core_read')->fetchRow($sql);
951
+
952
+ $sql = 'SELECT count(*) as totalcoutn FROM newsletter_subscriber WHERE customer_id = 0 AND subscriber_status = 3';
953
+ $unsubs_count2 = Mage::getSingleton('core/resource') ->getConnection('core_read')->fetchRow($sql);
954
+ return ($unsubs_count1['totalcoutn'] + $unsubs_count2['totalcoutn']);
955
+
956
+ }
957
+ /**
958
+ * This method is used to fetch total count subscribe users from the default newsletter table to list
959
+ * them in the Sendinblue magento module.
960
+ */
961
+ public function getNewsletterSubscribeCount()
962
+ {
963
+ $sql = 'SELECT count(*) as totalvalue from newsletter_subscriber where subscriber_status = 1';
964
+ $data = Mage::getSingleton('core/resource') ->getConnection('core_read')->fetchRow($sql);
965
+ return $data['totalvalue'];
966
+ }
967
+ /**
968
+ * This method is used to check the subscriber's newsletter subscription status in Sendinblue
969
+ */
970
+ public function checkUserSendinStatus($result)
971
+ {
972
+ $userstatus = array();
973
+ foreach ($result as $subscriber)
974
+ $userstatus[] = $subscriber['email'];
975
+ $email = implode(',', $userstatus);
976
+ $params = array();
977
+ $params['key'] = $this->api_key;
978
+ $params['email'] = $email;
979
+ $response = $this->callServer('USERS-STATUS', $params);
980
+ $response = json_encode($response);
981
+ return json_decode($response, true);
982
+ }
983
+ /**
984
+ * Fetches the SMTP and order tracking details
985
+ */
986
+ public function TrackingSmtp()
987
+ {
988
+ $params = array();
989
+ $params['key'] = $this->api_key;
990
+ return $this->callServer('TRACKINGDATA', $params);
991
+ }
992
+ /**
993
+ * CURL function to send request to the Sendinblue API server
994
+ */
995
+ public function callServer($method, $params)
996
+ {
997
+ $host = $this->api_url;
998
+ $params['key'] = (isset($params['key']) && !empty($params['key'])) ? $params['key'] : $this->api_key;
999
+ $params['webaction'] = $method;
1000
+ $this->error_message = '';
1001
+ $this->error_code = '';
1002
+ $response = $this->curlRequest($params);
1003
+ return json_decode($response);
1004
+ }
1005
+ /**
1006
+ * CURL function to send request to the Sendinblue API server
1007
+ */
1008
+ public function curlRequest($data)
1009
+ {
1010
+ $url1 = $this->api_url;
1011
+ $url2 = $this->api_url2;
1012
+ if (array_key_exists('campaign_short_code', $data))
1013
+ $url = $url2; // WS URL
1014
+ else
1015
+ $url = $url1; // WS URL
1016
+ $ch = curl_init();
1017
+ $ndata = '';
1018
+ if (is_array($data))
1019
+ {
1020
+ foreach ($data as $key => $value)
1021
+ $ndata .= $key.'='.urlencode($value).'&';
1022
+ } else
1023
+ $ndata = $data;
1024
+ curl_setopt($ch, CURLOPT_HTTPHEADER, array(
1025
+ 'Expect:'
1026
+ ));
1027
+
1028
+ $ndata = trim($ndata,'&');
1029
+ curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
1030
+ curl_setopt($ch, CURLOPT_POST, 1);
1031
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $ndata);
1032
+ curl_setopt($ch, CURLOPT_HEADER, 0);
1033
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
1034
+ curl_setopt($ch, CURLOPT_URL, $url);
1035
+ $data2 = curl_exec($ch);
1036
+ curl_close($ch);
1037
+ return $data2;
1038
+ }
1039
+
1040
+ public function removeOldEntry()
1041
+ {
1042
+ $sendin_switch = new Mage_Core_Model_Config();
1043
+ $sendin_switch->saveConfig('sendinblue/smtp/status', '');
1044
+ $sendin_switch->saveConfig('sendinblue/smtp/authentication', '');
1045
+ $sendin_switch->saveConfig('sendinblue/smtp/username', '');
1046
+ $sendin_switch->saveConfig('sendinblue/smtp/password', '');
1047
+ $sendin_switch->saveConfig('sendinblue/smtp/host', '');
1048
+ $sendin_switch->saveConfig('sendinblue/smtp/port', '');
1049
+ $sendin_switch->saveConfig('sendinblue/smtp/ssl', '');
1050
+ $sendin_switch->saveConfig('sendinblue/smtp/option', '');
1051
+ $sendin_switch->saveConfig('sendinblue/tracking/code', '');
1052
+ }
1053
+ protected function _uninstallResourceDb($version)
1054
+ {
1055
+ Mage::dispatchEvent('module_uninstall', array('resource' => $this->_resourceName));
1056
+
1057
+ $this->_modifyResourceDb(self::TYPE_DB_UNINSTALL, $version, '');
1058
+ return $this;
1059
+ }
1060
+ /**
1061
+ * API config value from SendinBlue.
1062
+ */
1063
+ public function getApiConfigValue()
1064
+ {
1065
+ $data = array();
1066
+ $data['key'] = $this->api_key;
1067
+ $data['webaction'] = 'PLUGIN-CONFIG';
1068
+ $value_config = $this->curlRequest($data);
1069
+ $result = json_decode($value_config);
1070
+ return $result;
1071
+ }
1072
+ }
app/code/local/Sendinblue/Sendinblue/Model/Status.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @author Sendinblue plateform <contact@sendinblue.com>
4
+ * @copyright 2013-2014 Sendinblue
5
+ * URL: https:www.sendinblue.com
6
+ * Do not edit or add to this file if you wish to upgrade Sendinblue Magento plugin to newer
7
+ * versions in the future. If you wish to customize Sendinblue magento plugin for your
8
+ * needs then we can't provide a technical support.
9
+ **/
10
+
11
+ class Sendinblue_Sendinblue_Model_Status extends Varien_Object
12
+ {
13
+ const STATUS_ENABLED = 1;
14
+ const STATUS_DISABLED = 2;
15
+
16
+ static public function getOptionArray()
17
+ {
18
+ return array(
19
+ self::STATUS_ENABLED => Mage::helper('sendinblue')->__('Enabled'),
20
+ self::STATUS_DISABLED => Mage::helper('sendinblue')->__('Disabled')
21
+ );
22
+ }
23
+ }
app/code/local/Sendinblue/Sendinblue/controllers/Adminhtml/MyformController.php ADDED
@@ -0,0 +1,520 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @author Sendinblue plateform <contact@sendinblue.com>
4
+ * @copyright 2013-2014 Sendinblue
5
+ * URL: https:www.sendinblue.com
6
+ * Do not edit or add to this file if you wish to upgrade Sendinblue Magento plugin to newer
7
+ * versions in the future. If you wish to customize Sendinblue magento plugin for your
8
+ * needs then we can't provide a technical support.
9
+ **/
10
+
11
+ class Sendinblue_Sendinblue_Adminhtml_MyformController extends Mage_Adminhtml_Controller_Action
12
+ {
13
+ public function indexAction()
14
+ {
15
+ Mage::getModel('sendinblue/sendinblue')->createFolderCaseTwo();
16
+ $this->loadLayout();
17
+ $this->renderLayout();
18
+
19
+ }
20
+ public function syncronizepostAction()
21
+ {
22
+ $post = $this->getRequest()->getPost();
23
+ try {
24
+ if (empty($post))
25
+ Mage::throwException($this->__('Invalid form data.'));
26
+ $sendin_switch = new Mage_Core_Model_Config();
27
+ if (isset($post['syncronizeSubmit']))
28
+ {
29
+ $sendin_switch->saveConfig('sendinblue/syncronize', $post['syncronize']);
30
+ if (!empty($post['sendin_list']))
31
+ {
32
+ $list = implode('|', $post['sendin_list']);
33
+ $sendin_switch->saveConfig('sendinblue/list', $list);
34
+ $message = $this->__('Your setting has been successfully saved');
35
+ Mage::getSingleton('adminhtml/session')->addSuccess($message);
36
+ } else
37
+ {
38
+ $message = $this->__('Please select a list');
39
+ Mage::getSingleton('adminhtml/session')->addError($message);
40
+ }
41
+ }
42
+ }
43
+ catch (Exception $e)
44
+ {
45
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
46
+ }
47
+ $this->_redirect('*/*');
48
+ }
49
+ public function apikeypostAction()
50
+ {
51
+ $post = $this->getRequest()->getPost();
52
+ try {
53
+ if (empty($post))
54
+ Mage::throwException($this->__('Invalid form data.'));
55
+ elseif (isset($post['sendin_apikey']) && !empty($post['sendin_apikey']))
56
+ {
57
+ $sendin_switch = new Mage_Core_Model_Config();
58
+ $result = Mage::getModel('sendinblue/sendinblue')->checkApikey(trim($post['sendin_apikey']));
59
+ if (empty($result['error']))
60
+ {
61
+ Mage::getModel('sendinblue/sendinblue')->amdRequest(trim($post['sendin_apikey']));
62
+ $get_key = Mage::getModel('sendinblue/sendinblue')->getApiKey();
63
+ if ($get_key == '')
64
+ Mage::getModel('sendinblue/sendinblue')->createFolderName($post['sendin_apikey']);
65
+ elseif ($get_key != $post['sendin_apikey'])
66
+ Mage::getModel('sendinblue/sendinblue')->createFolderName($post['sendin_apikey']);
67
+
68
+ $sendin_switch->saveConfig('sendinblue/api', trim($post['sendin_apikey']));
69
+ $sendin_switch->saveConfig('sendinblue/enabled', $post['sendin_api_status']);
70
+ $sendin_switch->saveConfig('sendinblue/syncronize', 1);
71
+ Mage::getModel('sendinblue/sendinblue')->removeOldEntry();
72
+ $message = $this->__('Your setting has been successfully saved');
73
+ Mage::getSingleton('adminhtml/session')->addSuccess($message);
74
+ } else if (isset($result['error']))
75
+ {
76
+ $message = $this->__('You have entered wrong api key');
77
+ Mage::getSingleton('core/session')->addError($message);
78
+ }
79
+ }
80
+ }
81
+ catch (Exception $e)
82
+ {
83
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
84
+ }
85
+ $this->_redirect('*/*');
86
+ }
87
+ public function sendmailAction()
88
+ {
89
+ $post = $this->getRequest()->getPost();
90
+
91
+ try {
92
+ if (empty($post))
93
+ Mage::throwException($this->__('Invalid form data.'));
94
+ elseif (isset($post['SmtpSubmit']) && !empty($post['SmtpSubmit']))
95
+ {
96
+ $sendin_switch = new Mage_Core_Model_Config();
97
+ $get_key = Mage::getModel('sendinblue/sendinblue')->getApiKey();
98
+ $result = Mage::getModel('sendinblue/sendinblue')->checkApikey($get_key);
99
+ if (empty($result['error']))
100
+ {
101
+ $smtp_response = Mage::getModel('sendinblue/sendinblue')->TrackingSmtp(); // get tracking code
102
+
103
+ if ($smtp_response->result->relay_data->status == 'enabled')
104
+ {
105
+ $sendin_switch->saveConfig('sendinblue/smtp/authentication', 'crammd5', 'default', 0);
106
+ $sendin_switch->saveConfig('sendinblue/smtp/username', $smtp_response->result->relay_data->data->username, 'default', 0);
107
+ $sendin_switch->saveConfig('sendinblue/smtp/password', $smtp_response->result->relay_data->data->password, 'default', 0);
108
+ $sendin_switch->saveConfig('sendinblue/smtp/host', $smtp_response->result->relay_data->data->relay, 'default', 0);
109
+ $sendin_switch->saveConfig('sendinblue/smtp/port', $smtp_response->result->relay_data->data->port, 'default', 0);
110
+ $sendin_switch->saveConfig('sendinblue/smtp/ssl', 'null', 'default', 0);
111
+ $sendin_switch->saveConfig('sendinblue/smtp/option', 'smtp', 'default', 0);
112
+ if ($post['email'])
113
+ {
114
+ $data11 = Mage::getModel('sendinblue/sendinblue')->sendTestMail($post['email']);
115
+ $resArr = json_decode($data11, true);
116
+ if ($resArr['result'] != true) {
117
+ $message = $this->__('Mail not sent').' '.$this->__(trim($resArr['error']));
118
+ Mage::getSingleton('adminhtml/session')->addError($message);
119
+ }
120
+ else {
121
+ $message = $this->__('Mail sent!');
122
+ Mage::getSingleton('core/session')->addSuccess($message);
123
+
124
+ }
125
+
126
+ } else
127
+ {
128
+ $message = $this->__('Mail not sent');
129
+ Mage::getSingleton('adminhtml/session')->addError($message);
130
+ }
131
+ }
132
+ else
133
+ {
134
+ $sendin_switch->saveConfig('sendinblue/smtp/status', 0);
135
+ $message = $this->__('Your SMTP account is not activated and therefore you can not use SendinBlue SMTP. For more informations, Please contact our support to: contact@sendinblue.com');
136
+ Mage::getSingleton('adminhtml/session')->addError($message);
137
+
138
+ }
139
+ } elseif (isset($responce['error']))
140
+ {
141
+ $message = $this->__('You have entered wrong api key');
142
+ Mage::getSingleton('core/session')->addError($message);
143
+ }
144
+ }
145
+ }
146
+ catch (Exception $e)
147
+ {
148
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
149
+ }
150
+ $this->_redirect('*/*');
151
+ }
152
+ public function sendorderAction()
153
+ {
154
+ $post = $this->getRequest()->getPost();
155
+ try
156
+ {
157
+ if (empty($post))
158
+ Mage::throwException($this->__('Invalid form data.'));
159
+ $sendin_switch = new Mage_Core_Model_Config();
160
+ if (isset($post['sender_order_save']))
161
+ {
162
+ $sender_order = $post['sender_order'];
163
+ $sender_order_message = $post['sender_order_message'];
164
+
165
+ if (isset($sender_order) && $sender_order == '')
166
+ {
167
+ $message = $this->__('Please fill the message field');
168
+ Mage::getSingleton('adminhtml/session')->addError($message);
169
+ }
170
+ else if ($sender_order_message == '')
171
+ {
172
+ $message = $this->__('Please fill the message field');
173
+ Mage::getSingleton('adminhtml/session')->addError($message);
174
+ }
175
+ else
176
+ {
177
+ $sendin_switch->saveConfig('sendinblue/Sendin_Sender_Order', $sender_order);
178
+ $sendin_switch->saveConfig('sendinblue/Sendin_Sender_Order_Message', $sender_order_message);
179
+ $message = $this->__('Your setting has been successfully saved');
180
+ Mage::getSingleton('adminhtml/session')->addSuccess($message);
181
+ }
182
+
183
+ }
184
+ }
185
+ catch (Exception $e)
186
+ {
187
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
188
+ }
189
+ $this->_redirect('*/*');
190
+ }
191
+ public function sendshipmentAction()
192
+ {
193
+ $post = $this->getRequest()->getPost();
194
+ try {
195
+ if (empty($post))
196
+ Mage::throwException($this->__('Invalid form data.'));
197
+
198
+ $sendin_switch = new Mage_Core_Model_Config();
199
+ if (isset($post['sender_shipment_save']))
200
+ {
201
+ $sender_shipment = $post['sender_shipment'];
202
+ $sender_shipment_message = $post['sender_shipment_message'];
203
+
204
+ if (isset($sender_shipment) && $sender_shipment == '')
205
+ {
206
+ $message = $this->__('Please fill the message field');
207
+ Mage::getSingleton('adminhtml/session')->addError($message);
208
+ }
209
+ else if ($sender_shipment_message == '')
210
+ {
211
+ $message = $this->__('Please fill the message field');
212
+ Mage::getSingleton('adminhtml/session')->addError($message);
213
+ }
214
+ else
215
+ {
216
+ $sendin_switch->saveConfig('sendinblue/Sendin_Sender_Shipment', $sender_shipment);
217
+ $sendin_switch->saveConfig('sendinblue/Sendin_Sender_Shipment_Message', $sender_shipment_message);
218
+ $message = $this->__('Your setting has been successfully saved');
219
+ Mage::getSingleton('adminhtml/session')->addSuccess($message);
220
+ }
221
+
222
+ }
223
+ }
224
+ catch (Exception $e)
225
+ {
226
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
227
+ }
228
+ $this->_redirect('*/*');
229
+ }
230
+
231
+ /**
232
+ * This method is called when the user test Shipment Sms and hits the submit button.
233
+ */
234
+
235
+ public function sendordertestAction()
236
+ {
237
+ $post = $this->getRequest()->getPost();
238
+ try {
239
+ if (empty($post))
240
+ Mage::throwException($this->__('Invalid form data.'));
241
+
242
+ $sendin_switch = new Mage_Core_Model_Config();
243
+
244
+ if (isset($post['sender_order_submit']))
245
+ {
246
+ $arr = array();
247
+ $arr['to'] = $post['sender_order_number'];
248
+ $arr['from'] = Mage::getModel('sendinblue/sendinblue')->getSendSmsOrderSubject();
249
+ $arr['text'] = Mage::getModel('sendinblue/sendinblue')->getSendSmsmOrderMessage();
250
+
251
+ $result = Mage::getModel('sendinblue/sendinblue')->sendSmsApi($arr);
252
+
253
+ if (isset($result->status) && $result->status == 'OK')
254
+ {
255
+ $message = $this->__('Message has been sent successfully');
256
+ Mage::getSingleton('adminhtml/session')->addSuccess($message);
257
+ }
258
+ else
259
+ {
260
+ $message = $this->__('Message has not been sent successfully');
261
+ Mage::getSingleton('adminhtml/session')->addError($message);
262
+ }
263
+
264
+ }
265
+ }
266
+ catch (Exception $e)
267
+ {
268
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
269
+ }
270
+ $this->_redirect('*/*');
271
+ }
272
+
273
+
274
+ /**
275
+ * This method is called when the user test Shipment Sms and hits the submit button.
276
+ */
277
+
278
+ public function sendshipmenttestAction()
279
+ {
280
+ $post = $this->getRequest()->getPost();
281
+ try {
282
+ if (empty($post))
283
+ Mage::throwException($this->__('Invalid form data.'));
284
+
285
+ $sendin_switch = new Mage_Core_Model_Config();
286
+
287
+ if (isset($post['sender_shipment_submit']))
288
+ {
289
+ $arr = array();
290
+ $arr['to'] = $post['sender_shipment_number'];
291
+ $arr['from'] = Mage::getModel('sendinblue/sendinblue')->getSendSmsShipingSubject();
292
+ $arr['text'] = Mage::getModel('sendinblue/sendinblue')->getSendSmsShipingMessage();
293
+
294
+ $result = Mage::getModel('sendinblue/sendinblue')->sendSmsApi($arr);
295
+
296
+ if (isset($result->status) && $result->status == 'OK')
297
+ {
298
+ $message = $this->__('Message has been sent successfully');
299
+ Mage::getSingleton('adminhtml/session')->addSuccess($message);
300
+ }
301
+ else
302
+ {
303
+ $message = $this->__('Message has not been sent successfully');
304
+ Mage::getSingleton('adminhtml/session')->addError($message);
305
+ }
306
+
307
+ }
308
+ }
309
+ catch (Exception $e)
310
+ {
311
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
312
+ }
313
+ $this->_redirect('*/*');
314
+ }
315
+
316
+ public function sendnotifysmsAction()
317
+ {
318
+ $post = $this->getRequest()->getPost();
319
+ try {
320
+ if (empty($post))
321
+ Mage::throwException($this->__('Invalid form data.'));
322
+
323
+ $sendin_switch = new Mage_Core_Model_Config();
324
+
325
+ if (isset($post['notify_sms_mail']))
326
+ {
327
+ $sendin_switch->saveConfig('sendinblue/Sendin_Notify_Value', $post['sendin_notify_value']);
328
+ $sendin_switch->saveConfig('sendinblue/Sendin_Notify_Email', $post['sendin_notify_email']);
329
+ $message = $this->__('Your setting has been successfully saved');
330
+ Mage::getSingleton('adminhtml/session')->addSuccess($message);
331
+ }
332
+ }
333
+ catch (Exception $e)
334
+ {
335
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
336
+ }
337
+ $this->_redirect('*/*');
338
+
339
+ }
340
+
341
+
342
+ public function sendcampaignAction()
343
+ {
344
+ $post = $this->getRequest()->getPost();
345
+ try {
346
+ if (empty($post))
347
+ Mage::throwException($this->__('Invalid form data.'));
348
+
349
+ $sendin_switch = new Mage_Core_Model_Config();
350
+
351
+ if (isset($post['sender_campaign_save']) && $post['Sendin_Sms_Choice'] == 1)
352
+ {
353
+ $arr = array();
354
+ $arr['to'] = $post['singlechoice'];
355
+ $arr['from'] = $post['sender_campaign'];
356
+ $arr['text'] = $post['sender_campaign_message'];
357
+
358
+ $result = Mage::getModel('sendinblue/sendinblue')->sendSmsApi($arr);
359
+ if (isset($result->status) && $result->status == 'OK')
360
+ {
361
+ $message = $this->__('Message has been sent successfully');
362
+ Mage::getSingleton('adminhtml/session')->addSuccess($message);
363
+ }
364
+ else
365
+ {
366
+ $message = $this->__('Message has not been sent successfully');
367
+ Mage::getSingleton('adminhtml/session')->addError($message);
368
+ }
369
+
370
+
371
+ }else if(isset($post['sender_campaign_save']) && $post['Sendin_Sms_Choice'] == 0)
372
+ {
373
+ $smscredit = Mage::getModel('sendinblue/sendinblue')->getSmsCredit();
374
+ $collection = Mage::getModel('customer/customer')
375
+ ->getCollection()
376
+ ->addAttributeToSelect('*')
377
+ ->joinAttribute('shipping_telephone', 'customer_address/telephone', 'default_shipping', null, 'left')
378
+ ->joinAttribute('shipping_country_code', 'customer_address/country_id', 'default_shipping', null, 'left');
379
+
380
+ $results = array();
381
+ foreach ($collection as $customer) {
382
+ $results[] = $customer->toArray();
383
+ }
384
+
385
+ //$count = count($result);
386
+ foreach ($results as $i => $result)
387
+ {
388
+
389
+ if(!empty($result['shipping_telephone']))
390
+ {
391
+ $sql = 'SELECT * FROM sendinblue_country_codes WHERE iso_code = "'.$result['shipping_country_code'].'" ';
392
+ $connection = Mage::getSingleton('core/resource')->getConnection('core_read');
393
+ $data = $connection->fetchRow($sql);
394
+ $number = Mage::getModel('sendinblue/sendinblue')->checkMobileNumber($result['shipping_telephone'],$data['country_prefix']);
395
+ $firstname = $result['firstname'];
396
+ $lastname = $result['lastname'];
397
+ $msgbody = $post['sender_campaign_message'];
398
+ $fname = str_replace('{first_name}', $firstname, $msgbody);
399
+ $msgbody = str_replace('{last_name}', $lastname."\r\n", $fname);
400
+ $arr = array();
401
+ $arr['to'] = $number;
402
+ $arr['from'] = $post['sender_campaign'];
403
+ $arr['text'] = $msgbody;
404
+ Mage::getModel('sendinblue/sendinblue')->sendSmsApi($arr);
405
+ }
406
+ }
407
+ if ($smscredit >= 1)
408
+ {
409
+ $message = $this->__('Message has been sent successfully');
410
+ Mage::getSingleton('adminhtml/session')->addSuccess($message);
411
+ }
412
+ else
413
+ {
414
+ $message = $this->__('Message has not been sent successfully');
415
+ Mage::getSingleton('adminhtml/session')->addError($message);
416
+ }
417
+
418
+ }
419
+ else if(isset($post['sender_campaign_save']) && $post['Sendin_Sms_Choice'] == 2)
420
+ {
421
+ $smscredit = Mage::getModel('sendinblue/sendinblue')->getSmsCredit();
422
+ $collection = Mage::getModel('customer/customer')->getCollection()->addAttributeToSelect('email')->addAttributeToSelect('firstname')->addAttributeToSelect('lastname');
423
+ foreach ($collection as $customer)
424
+ {
425
+
426
+ $email = $customer->getData('email');
427
+ $firstname = $customer->getData('firstname');
428
+ $lastname = $customer->getData('lastname');
429
+ $cid = $customer->getData('entity_id');
430
+
431
+ $collectionAddress = Mage::getModel('customer/address')->getCollection()->addAttributeToSelect('telephone')->addAttributeToSelect('country_id')->addAttributeToFilter('parent_id',(int)$cid);
432
+ $telephone = '';
433
+ foreach ($collectionAddress as $customerPhno) {
434
+ $telephone = $customerPhno->getData('telephone');
435
+ $country_id = $customerPhno->getData('country_id');
436
+ }
437
+
438
+ $customer_select[$email] = array(
439
+ 'email' => $email,
440
+ 'firstname' => $firstname,
441
+ 'lastname' => $lastname,
442
+ 'telephone' => $telephone,
443
+ 'country_id' => $country_id,
444
+ 'customer_id' => $cid
445
+ );
446
+ }
447
+
448
+ $newsletterArr = array();
449
+ $newsletter = Mage::getResourceModel('newsletter/subscriber_collection')->load();
450
+ $cnt = 0;
451
+ foreach ( $newsletter->getItems() as $subscriber )
452
+ {
453
+ $customer_id = $subscriber->getCustomerId();;
454
+ $subscriber_email = $subscriber->getSubscriberEmail();
455
+ $subscriber_status = $subscriber->getSubscriberStatus();
456
+
457
+ if ( !empty($customer_select[$subscriber_email]) ) {
458
+ $newsletterArr[$cnt] = $customer_select[$subscriber_email];
459
+ $newsletterArr[$cnt]['subscriber_status'] = $subscriber_status;
460
+ unset($customer_select[$subscriber_email]);
461
+ }
462
+ else {
463
+ $newsletterArr[$cnt] = array(
464
+ 'email' => $subscriber_email,
465
+ 'firstname' => '',
466
+ 'lastname' => '',
467
+ 'telephone' => '',
468
+ 'country_id' => ''
469
+ );
470
+ $newsletterArr[$cnt]['customer_id'] = $customer_id;
471
+ $newsletterArr[$cnt]['subscriber_status'] = $subscriber_status;
472
+ }
473
+ $cnt++;
474
+ }
475
+ foreach($newsletterArr as $result)
476
+ {
477
+
478
+
479
+ if(!empty($result['telephone']))
480
+ {
481
+
482
+ $sql = 'SELECT * FROM sendinblue_country_codes WHERE iso_code = "'.$result['country_id'].'" ';
483
+ $connection = Mage::getSingleton('core/resource')->getConnection('core_read');
484
+ $data = $connection->fetchRow($sql);
485
+ $number = Mage::getModel('sendinblue/sendinblue')->checkMobileNumber($result['telephone'],$data['country_prefix']);
486
+ $msgbody = $post['sender_campaign_message'];
487
+ $firstname = $result['firstname'];
488
+ $lastname = $result['lastname'];
489
+ $fname = str_replace('{first_name}', $firstname, $msgbody);
490
+ $msgbody = str_replace('{last_name}', $lastname."\r\n", $fname);
491
+ $arr = array();
492
+ $arr['to'] = $number;
493
+ $arr['from'] = $post['sender_campaign'];
494
+ $arr['text'] = $msgbody;
495
+ Mage::getModel('sendinblue/sendinblue')->sendSmsApi($arr);
496
+
497
+
498
+ }
499
+ }
500
+ if ($smscredit >= 1)
501
+ {
502
+ $message = $this->__('Message has been sent successfully');
503
+ Mage::getSingleton('adminhtml/session')->addSuccess($message);
504
+ }
505
+ else
506
+ {
507
+ $message = $this->__('Message has not been sent successfully');
508
+ Mage::getSingleton('adminhtml/session')->addError($message);
509
+ }
510
+ }
511
+
512
+ }
513
+ catch (Exception $e)
514
+ {
515
+ Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
516
+ }
517
+ $this->_redirect('*/*');
518
+ }
519
+
520
+ }
app/code/local/Sendinblue/Sendinblue/controllers/Adminhtml/NotifyController.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @author Sendinblue plateform <contact@sendinblue.com>
4
+ * @copyright 2013-2014 Sendinblue
5
+ * URL: https:www.sendinblue.com
6
+ * Do not edit or add to this file if you wish to upgrade Sendinblue Magento plugin to newer
7
+ * versions in the future. If you wish to customize Sendinblue magento plugin for your
8
+ * needs then we can't provide a technical support.
9
+ **/
10
+
11
+ class Sendinblue_Sendinblue_Adminhtml_NotifyController extends Mage_Adminhtml_Controller_Action
12
+ {
13
+ public function indexAction()
14
+ {
15
+ $responce = Mage::getModel('sendinblue/sendinblue')->notifySmsEmail();
16
+ $this->loadLayout()->_setActiveMenu('system')->_addContent()->renderLayout();
17
+ $msg_disp = $this->__('The CRON has been well executed.');
18
+ Mage::getSingleton('adminhtml/session')->addSuccess($msg_disp);
19
+ $this->_redirect("sendinblue/adminhtml_myform/");
20
+ }
21
+ }
app/code/local/Sendinblue/Sendinblue/controllers/Adminhtml/SyncController.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @author Sendinblue plateform <contact@sendinblue.com>
4
+ * @copyright 2013-2014 Sendinblue
5
+ * URL: https:www.sendinblue.com
6
+ * Do not edit or add to this file if you wish to upgrade Sendinblue Magento plugin to newer
7
+ * versions in the future. If you wish to customize Sendinblue magento plugin for your
8
+ * needs then we can't provide a technical support.
9
+ **/
10
+
11
+ class Sendinblue_Sendinblue_Adminhtml_SyncController extends Mage_Adminhtml_Controller_Action
12
+ {
13
+ public function indexAction()
14
+ {
15
+ $responce = Mage::getModel('sendinblue/sendinblue')->syncData();
16
+ $this->loadLayout()->_setActiveMenu('system')->_addContent()->renderLayout();
17
+ $msg_disp = $this->__('The CRON has been well executed.');
18
+ Mage::getSingleton('adminhtml/session')->addSuccess($msg_disp);
19
+ $this->_redirect("sendinblue/adminhtml_myform/");
20
+ }
21
+ }
app/code/local/Sendinblue/Sendinblue/controllers/AjaxController.php ADDED
@@ -0,0 +1,473 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @author Sendinblue plateform <contact@sendinblue.com>
4
+ * @copyright 2013-2014 Sendinblue
5
+ * URL: https:www.sendinblue.com
6
+ * Do not edit or add to this file if you wish to upgrade Sendinblue Magento plugin to newer
7
+ * versions in the future. If you wish to customize Sendinblue magento plugin for your
8
+ * needs then we can't provide a technical support.
9
+ **/
10
+
11
+ class Sendinblue_Sendinblue_AjaxController extends Mage_Core_Controller_Front_Action
12
+ {
13
+ public function indexAction()
14
+ {
15
+ $this->loadLayout();
16
+ $this->renderLayout();
17
+ Mage::getModel('sendinblue/sendinblue')->createFolderCaseTwo();
18
+ }
19
+
20
+ public function campaignAction()
21
+ {
22
+ $post = $this->getRequest()->getPost();
23
+ try {
24
+ if (empty($post))
25
+ echo Mage::throwException($this->__('Invalid form data.'));
26
+ $sendin_switch = new Mage_Core_Model_Config();
27
+ $sendin_switch->saveConfig('sendinblue/sms/campaign', $post['campaignSetting']);
28
+ echo $this->__('Your setting has been successfully saved');
29
+ }
30
+ catch (Exception $e)
31
+ {
32
+ echo $this->__($e->getMessage());
33
+ }
34
+ }
35
+ public function orderAction()
36
+ {
37
+ $post = $this->getRequest()->getPost();
38
+ try {
39
+ if (empty($post))
40
+ Mage::throwException($this->__('Invalid form data.'));
41
+ $sendin_switch = new Mage_Core_Model_Config();
42
+ $sendin_switch->saveConfig('sendinblue/sms/order', $post['orderSetting']);
43
+ echo $this->__('Your setting has been successfully saved');
44
+ }
45
+ catch (Exception $e)
46
+ {
47
+ echo $this->__($e->getMessage());
48
+ }
49
+ }
50
+ public function creditAction()
51
+ {
52
+ $post = $this->getRequest()->getPost();
53
+ try {
54
+ if (empty($post))
55
+ Mage::throwException($this->__('Invalid form data.'));
56
+ $sendin_switch = new Mage_Core_Model_Config();
57
+ $sendin_switch->saveConfig('sendinblue/sms/credit', $post['sms_credit']);
58
+ echo $this->__('Your setting has been successfully saved');
59
+ }
60
+ catch (Exception $e)
61
+ {
62
+ echo $this->__($e->getMessage());
63
+ }
64
+ }
65
+ public function shipingAction()
66
+ {
67
+ $post = $this->getRequest()->getPost();
68
+ try {
69
+ if (empty($post))
70
+ Mage::throwException($this->__('Invalid form data.'));
71
+ $sendin_switch = new Mage_Core_Model_Config();
72
+ $sendin_switch->saveConfig('sendinblue/sms/shiping', $post['shipingSetting']);
73
+ echo $this->__('Your setting has been successfully saved');
74
+ }
75
+ catch (Exception $e)
76
+ {
77
+ echo $this->__($e->getMessage());
78
+ }
79
+ }
80
+ public function codepostAction()
81
+ {
82
+ $post = $this->getRequest()->getPost();
83
+ try {
84
+ if (empty($post))
85
+ Mage::throwException($this->__('Invalid form data.'));
86
+ $sendin_switch = new Mage_Core_Model_Config();
87
+ $sendin_switch->saveConfig('sendinblue/tracking/code', $post['script']);
88
+ echo $this->__('Your setting has been successfully saved');
89
+ }
90
+ catch (Exception $e)
91
+ {
92
+ echo $this->__($e->getMessage());
93
+ }
94
+ }
95
+ public function smtppostAction()
96
+ {
97
+ $post = $this->getRequest()->getPost();
98
+ try {
99
+ if (empty($post))
100
+ Mage::throwException($this->__('Invalid form data.'));
101
+ else
102
+ {
103
+ $sendin_switch = new Mage_Core_Model_Config();
104
+ $get_key = Mage::getModel('sendinblue/sendinblue')->getApiKey();
105
+ $result = Mage::getModel('sendinblue/sendinblue')->checkApikey($get_key);
106
+ if (empty($result['error']))
107
+ {
108
+ $sendin_switch->saveConfig('sendinblue/smtp/status', $post['smtptest']);
109
+ $smtp_response = Mage::getModel('sendinblue/sendinblue')->TrackingSmtp(); // get tracking code
110
+ if ($smtp_response->result->relay_data->status == 'enabled')
111
+ {
112
+ $sendin_switch->saveConfig('sendinblue/smtp/authentication', 'crammd5', 'default', 0);
113
+ $sendin_switch->saveConfig('sendinblue/smtp/username', $smtp_response->result->relay_data->data->username, 'default', 0);
114
+ $sendin_switch->saveConfig('sendinblue/smtp/password', $smtp_response->result->relay_data->data->password, 'default', 0);
115
+ $sendin_switch->saveConfig('sendinblue/smtp/host', $smtp_response->result->relay_data->data->relay, 'default', 0);
116
+ $sendin_switch->saveConfig('sendinblue/smtp/port', $smtp_response->result->relay_data->data->port, 'default', 0);
117
+ $sendin_switch->saveConfig('sendinblue/smtp/ssl', 'null', 'default', 0);
118
+ $sendin_switch->saveConfig('sendinblue/smtp/option', 'smtp', 'default', 0);
119
+ echo $this->__('Your setting has been successfully saved');
120
+ }else
121
+ {
122
+ $sendin_switch->saveConfig('sendinblue/smtp/status', 0);
123
+ echo $this->__('Your SMTP account is not activated and therefore you can\'t use SendinBlue SMTP. For more informations, please contact our support to: contact@sendinblue.com');
124
+ }
125
+ }elseif (isset($responce['error']))
126
+ echo $this->__('You have entered wrong api key');
127
+ }
128
+ }
129
+ catch (Exception $e)
130
+ {
131
+ echo $this->__($e->getMessage());
132
+ }
133
+ }
134
+ public function ajaxcontentAction()
135
+ {
136
+ $post = $this->getRequest()->getPost();
137
+ try {
138
+ if (empty($post))
139
+ Mage::throwException($this->__('Invalid form data.'));
140
+ else
141
+ {
142
+ $locale = Mage::app()->getLocale()->getLocaleCode();
143
+ if ($locale == 'fr_FR')
144
+ {
145
+ $title1 = 'Inscrire le contact';
146
+ $title2 = 'Désinscrire le contact';
147
+ $first = 'Première page';
148
+ $last = 'Dernière page';
149
+ $previous = 'Précédente';
150
+ $next = 'Suivante';
151
+ $yes = 'oui';
152
+ $no = 'non';
153
+ } else
154
+ {
155
+ $title1 = 'Unsubscribe the contact';
156
+ $title2 = 'Subscribe the contact';
157
+ $first = 'First';
158
+ $last = 'Last';
159
+ $previous = 'Previous';
160
+ $next = 'Next';
161
+ $yes = 'yes';
162
+ $no = 'no';
163
+ }
164
+ $page = (int)$post['page'];
165
+ $cur_page = $page;
166
+ $page -= 1;
167
+ $per_page = 20;
168
+ $previous_btn = true;
169
+ $next_btn = true;
170
+ $first_btn = true;
171
+ $last_btn = true;
172
+ $start = $page * $per_page;
173
+ $count = Mage::getModel('sendinblue/sendinblue')->getTotalCount();
174
+ $no_of_paginations = ceil($count / $per_page);
175
+ if ($cur_page >= 7)
176
+ {
177
+ $start_loop = $cur_page - 3;
178
+ if ($no_of_paginations > $cur_page + 3)
179
+ $end_loop = $cur_page + 3;
180
+ else if ($cur_page <= $no_of_paginations && $cur_page > $no_of_paginations - 6)
181
+ {
182
+ $start_loop = $no_of_paginations - 6;
183
+ $end_loop = $no_of_paginations;
184
+ } else
185
+ $end_loop = $no_of_paginations;
186
+ } else
187
+ {
188
+ $start_loop = 1;
189
+ if ($no_of_paginations > 7)
190
+ $end_loop = 7;
191
+ else
192
+ $end_loop = $no_of_paginations;
193
+ }
194
+ $collection = Mage::getModel('sendinblue/sendinblue')->getNewsletterSubscribe($start, $per_page);
195
+ $sendin_status = Mage::getModel('sendinblue/sendinblue')->checkUserSendinStatus($collection);
196
+ $sendin_result = $sendin_status['result'];
197
+ if (count($collection) != 0)
198
+ {
199
+ $i = 1;
200
+ $msg = '';
201
+ foreach ($collection as $subscriber)
202
+ {
203
+ $email = $subscriber['email'];
204
+ $phone = !empty($subscriber['telephone'])?$subscriber['telephone'] : '';
205
+ $country_id = !empty($subscriber['country_id'])?$subscriber['country_id'] : '';
206
+ if($phone != '')
207
+ {
208
+ $sql = 'SELECT * FROM sendinblue_country_codes WHERE iso_code = "'.$country_id.'" ';
209
+ $connection = Mage::getSingleton('core/resource')->getConnection('core_read');
210
+ $data = $connection->fetchRow($sql);
211
+ $phone = Mage::getModel('sendinblue/sendinblue')->checkMobileNumber($phone,$data['country_prefix']);
212
+ }
213
+ if ($subscriber['customer_id'] != 0)
214
+ $client = $yes;
215
+ else
216
+ $client = $no;
217
+ if ($sendin_result[$email] === 1 || $sendin_result[$email] === null)
218
+ $show_status = 0;
219
+ if ($sendin_result[$email] === 0)
220
+ $show_status = 1;
221
+ if ($subscriber['subscriber_status'] != 3)
222
+ $img_magento = '<img src="'.Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN).'adminhtml/default/default/sendinblue/images/enabled.gif" >';
223
+ else
224
+ $img_magento = '<img src="'.Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN).'adminhtml/default/default/sendinblue/images/disabled.gif" >';
225
+ if ($show_status)
226
+ $img_sendin = '<img src="'.Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN).'adminhtml/default/default/sendinblue/images/enabled.gif"
227
+ id="ajax_contact_status_'.$i.'" title="'.$title1.'" >';
228
+ else
229
+ $img_sendin = '<img src="'.Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN).'adminhtml/default/default/sendinblue/images/disabled.gif"
230
+ id="ajax_contact_status_'.$i.'" title="'.$title2.'" >';
231
+ $msg .= '<tr class="even pointer"><td class="a-left">'.$email.'</td><td class="a-left">'.$client.'</td><td class="a-left">'.$phone.'</td><td class="a-left">'.$img_magento.'</td>
232
+ <td class="a-left last"><a status="'.$show_status.'" email="'.$email.'" class="ajax_contacts_href" href="javascript:void(0)">
233
+ '.$img_sendin.'</a></td></tr>';
234
+ $i++;
235
+ }
236
+ }
237
+ $msg_paging = '';
238
+ $msg_paging .= '<tr><td colspan="7"><div class="pagination"><ul class="pull-left">';
239
+ if ($first_btn && $cur_page > 1)
240
+ $msg_paging .= '<li p="1" class="active">'.$first.'</li>';
241
+ else if ($first_btn)
242
+ $msg_paging .= '<li p="1" class="inactive">'.$first.'</li>';
243
+ if ($previous_btn && $cur_page > 1)
244
+ {
245
+ $pre = $cur_page - 1;
246
+ $msg_paging .= '<li p="'.$pre.'" class="active">'.$previous.'</li>';
247
+ } else if ($previous_btn)
248
+ $msg_paging .= '<li class="inactive">'.$previous.'</li>';
249
+ for ($i = $start_loop; $i <= $end_loop; $i++)
250
+ {
251
+ if ($cur_page == $i)
252
+ $msg_paging .= '<li p="'.$i.'" style="color:#fff;background-color:#000000;" class="active">'.$i.'</li>';
253
+ else
254
+ $msg_paging .= '<li p="'.$i.'" class="active">'.$i.'</li>';
255
+ }
256
+ if ($next_btn && $cur_page < $no_of_paginations)
257
+ {
258
+ $nex = $cur_page + 1;
259
+ $msg_paging .= '<li p="'.$nex.'" class="active">'.$next.'</li>';
260
+ } else if ($next_btn)
261
+ $msg_paging .= '<li class="inactive">'.$next.'</li>';
262
+ if ($last_btn && $cur_page < $no_of_paginations)
263
+ $msg_paging .= '<li p="'.$no_of_paginations.'" class="active">'.$last.'</li>';
264
+ else if ($last_btn)
265
+ $msg_paging .= '<li p="'.$no_of_paginations.'" class="inactive">'.$last.'</li>';
266
+ if ($count != 0)
267
+ echo $msg.$msg_paging.'</td></tr>';
268
+ }
269
+ }catch (Exception $e)
270
+ {
271
+ echo $this->__($e->getMessage());
272
+ }
273
+ }
274
+ public function ajaxupdateAction()
275
+ {
276
+ $post = $this->getRequest()->getPost();
277
+ try {
278
+ if (empty($post))
279
+ Mage::throwException($this->__('Invalid form data.'));
280
+ $temp_sub_status = ($post['newsletter'] == 0) ? 1 : 3;
281
+ if (!empty($post['email']) && $post['newsletter'] == 0)
282
+ {
283
+ $responce = Mage::getModel('sendinblue/sendinblue')->emailSubscribe($post['email']);
284
+ $responce_data = json_decode($responce);
285
+ $sql = 'SELECT * from customer_entity where email = "'.$post['email'].'" ';
286
+ $connection = Mage::getSingleton('core/resource')->getConnection('core_read');
287
+ $custdata = $connection->fetchRow($sql);
288
+
289
+ if ($responce_data->errorMsg == 'User not exists')
290
+ {
291
+ if ($custdata['entity_id'] != '')
292
+ {
293
+ $collectionAddress = Mage::getModel('customer/address')->getCollection()->addAttributeToSelect('telephone')->addAttributeToSelect('country_id')->addAttributeToFilter('parent_id',(int)$custdata['entity_id']);
294
+ $telephone = '';
295
+ foreach ($collectionAddress as $customerPhno) {
296
+ $telephone = $customerPhno->getData('telephone');
297
+ $country_id = $customerPhno->getData('country_id');
298
+
299
+ }
300
+
301
+ $customer = Mage::getModel("customer/customer");
302
+ $customer->setWebsiteId(Mage::app()->getWebsite()->getId());
303
+ $customer->loadByEmail($post['email']); //load customer by email id
304
+ $customer_name = $customer->getData();
305
+
306
+ if (!empty($telephone))
307
+ {
308
+ $sql = 'SELECT * FROM sendinblue_country_codes WHERE iso_code = "'.$country_id.'" ';
309
+ $connection = Mage::getSingleton('core/resource')->getConnection('core_read');
310
+ $data = $connection->fetchRow($sql);
311
+ $number = Mage::getModel('sendinblue/sendinblue')->checkMobileNumber($telephone,$data['country_prefix']);
312
+ }
313
+ $client = 1;
314
+ $telephone = (isset($number))? $number : '';
315
+ $firstname = (isset($customer_name['firstname']))?$customer_name['firstname'] : '';
316
+ $lasttname = (isset($customer_name['lastname']))?$customer_name['lastname'] : '';
317
+
318
+ $extra = $firstname.'|'.$lasttname.'|'.$client.'|'.$telephone;
319
+
320
+ $responce = Mage::getModel('sendinblue/sendinblue')->emailAdd($post['email'], $extra);
321
+
322
+ }
323
+ else
324
+ {
325
+ $client = 0;
326
+ $extra = ''.'|'.''.'|'.$client.'|'.'';
327
+ $responce = Mage::getModel('sendinblue/sendinblue')->emailAdd($post['email'], $extra);
328
+ }
329
+ }
330
+ $sql = 'SELECT * from newsletter_subscriber where subscriber_email = "'.$post['email'].'" ';
331
+ $custdatanews = $connection->fetchRow($sql);
332
+ if ($custdata['entity_id'] !='' && $custdatanews['subscriber_email'] == '' )
333
+ {
334
+
335
+ $connection->query("insert into newsletter_subscriber(store_id, customer_id, subscriber_email, subscriber_status)
336
+ values('".$custdata['store_id']."','".$custdata['entity_id']."','".$custdata['email']."','1')");
337
+
338
+ }
339
+ else
340
+ {
341
+ $costomer_data = Mage::getModel('newsletter/subscriber')->loadByEmail($post['email']);
342
+ $costomer_data->setStatus($temp_sub_status);
343
+ $costomer_data->setIsStatusChanged(true);
344
+ $costomer_data->save();
345
+ }
346
+
347
+ }
348
+ else{
349
+ $responce = Mage::getModel('sendinblue/sendinblue')->emailDelete($post['email']);
350
+ $costomer_data = Mage::getModel('newsletter/subscriber')->loadByEmail($post['email']);
351
+ $sql = 'SELECT * from customer_entity where email = "'.$post['email'].'" ';
352
+ $connection = Mage::getSingleton('core/resource')->getConnection('core_read');
353
+ $custdata = $connection->fetchRow($sql);
354
+
355
+ if (!$costomer_data->getStoreId())
356
+ {
357
+ $costomer_data->setSubscriberEmail($custdata['email']);
358
+ $costomer_data->setCustomerId($custdata['entity_id']);
359
+ $costomer_data->setStoreId($custdata['store_id']);
360
+ }
361
+ $costomer_data->setStatus($temp_sub_status);
362
+ $costomer_data->setIsStatusChanged(true);
363
+ $costomer_data->save();
364
+ }
365
+ }
366
+ catch (Exception $e)
367
+ {
368
+ echo $this->__($e->getMessage());
369
+ }
370
+ }
371
+
372
+ public function ajaxordersmsAction($sender, $message, $number)
373
+ {
374
+ $post = $this->getRequest()->getPost();
375
+ try {
376
+ if (empty($post))
377
+ Mage::throwException($this->__('Invalid form data.'));
378
+ $number = $post['number'];
379
+ $charone = substr($number, 0, 1);
380
+ $chartwo = substr($number, 0, 2);
381
+ if ($charone == '0' && $chartwo == '00')
382
+ $number = $number;
383
+
384
+ if (isset($number))
385
+ {
386
+ $arr = array();
387
+ $arr['to'] = $number;
388
+ $arr['from'] = $post['sender'];
389
+ $arr['text'] = $post['message'];
390
+
391
+ $result = Mage::getModel('sendinblue/sendinblue')->sendSmsApi($arr);
392
+ if (isset($result->status) && $result->status == 'OK')
393
+ echo 'OK';
394
+ else
395
+ echo 'KO';
396
+ }
397
+
398
+ }
399
+ catch (Exception $e)
400
+ {
401
+ echo $this->__($e->getMessage());
402
+ }
403
+ }
404
+
405
+ public function ajaxordershippedAction($sender,$message,$number)
406
+ {
407
+ $post = $this->getRequest()->getPost();
408
+ try {
409
+ if (empty($post))
410
+ Mage::throwException($this->__('Invalid form data.'));
411
+ $number = $post['number'];
412
+ $charone = substr($number, 0, 1);
413
+ $chartwo = substr($number, 0, 2);
414
+
415
+ if ($charone == '0' && $chartwo == '00')
416
+ $number = $number;
417
+
418
+
419
+ if (isset($number))
420
+ {
421
+ $arr = array();
422
+ $arr['to'] = $number;
423
+ $arr['from'] = $post['sender'];
424
+ $arr['text'] = $post['message'];
425
+
426
+ $result = Mage::getModel('sendinblue/sendinblue')->sendSmsApi($arr);
427
+ if (isset($result->status) && $result->status == 'OK')
428
+ echo 'OK';
429
+ else
430
+ echo 'KO';exit;
431
+ }
432
+
433
+ }
434
+ catch (Exception $e)
435
+ {
436
+ echo $this->__($e->getMessage());
437
+ }
438
+ }
439
+
440
+ public function ajaxsmscampaignAction($sender,$message,$number)
441
+ {
442
+ $post = $this->getRequest()->getPost();
443
+ try {
444
+ if (empty($post))
445
+ Mage::throwException($this->__('Invalid form data.'));
446
+ $number = $post['number'];
447
+ $charone = substr($number, 0, 1);
448
+ $chartwo = substr($number, 0, 2);
449
+ if ($charone == '0' && $chartwo == '00')
450
+ $number = $number;
451
+
452
+ if (isset($number))
453
+ {
454
+ $arr = array();
455
+ $arr['to'] = $number;
456
+ $arr['from'] = $post['sender'];
457
+ $arr['text'] = $post['message'];
458
+ $result = Mage::getModel('sendinblue/sendinblue')->sendSmsApi($arr);
459
+ $locale = Mage::app()->getLocale()->getLocaleCode();
460
+ if (isset($result->status) && $result->status == 'OK')
461
+ echo 'OK';
462
+ else
463
+ echo 'KO';
464
+ }
465
+
466
+ }
467
+ catch (Exception $e)
468
+ {
469
+ echo $this->__($e->getMessage());
470
+ }
471
+ }
472
+
473
+ }
app/code/local/Sendinblue/Sendinblue/controllers/IndexController.php ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @author Sendinblue plateform <contact@sendinblue.com>
4
+ * @copyright 2013-2014 Sendinblue
5
+ * URL: https:www.sendinblue.com
6
+ * Do not edit or add to this file if you wish to upgrade Sendinblue Magento plugin to newer
7
+ * versions in the future. If you wish to customize Sendinblue magento plugin for your
8
+ * needs then we can't provide a technical support.
9
+ **/
10
+
11
+ class Sendinblue_Sendinblue_IndexController extends Mage_Core_Controller_Front_Action
12
+ {
13
+ public function indexAction()
14
+ {
15
+ $this->loadLayout();
16
+ $this->renderLayout();
17
+ }
18
+ }
app/code/local/Sendinblue/Sendinblue/etc/adminhtml.xml ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <acl>
4
+ <resources>
5
+ <admin>
6
+ <children>
7
+ <system>
8
+ <children>
9
+ <config>
10
+ <children>
11
+ <sendinblue translate="title" module="sendinblue">
12
+ <title>SendinBlue Settings</title>
13
+ </sendinblue>
14
+ </children>
15
+ </config>
16
+ </children>
17
+ </system>
18
+ </children>
19
+ </admin>
20
+ </resources>
21
+ </acl>
22
+ </config>
app/code/local/Sendinblue/Sendinblue/etc/config.xml ADDED
@@ -0,0 +1,325 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <modules>
4
+ <Sendinblue_Sendinblue>
5
+ <version>1.1.0</version>
6
+ <platform>ce</platform>
7
+ </Sendinblue_Sendinblue>
8
+ </modules>
9
+ <adminhtml>
10
+ <menu>
11
+ <system>
12
+ <children>
13
+ <mails translate="title" module="sendinblue">
14
+ <title>SendinBlue Settings</title>
15
+ <action>sendinblue/adminhtml_myform</action>
16
+ <sort_order>0</sort_order>
17
+
18
+ </mails>
19
+ </children>
20
+ </system>
21
+ </menu>
22
+ <translate></translate>
23
+ <events>
24
+
25
+ <!--use for delete customer (post) -->
26
+ <controller_action_postdispatch_adminhtml_customer_massDelete>
27
+ <observers>
28
+ <sendinblue_admin_customer_massDelete>
29
+ <type>singleton</type>
30
+ <class>Sendinblue_Sendinblue_Model_Observer</class>
31
+ <method>adminCustomerDelete</method>
32
+ </sendinblue_admin_customer_massDelete>
33
+ </observers>
34
+ </controller_action_postdispatch_adminhtml_customer_massDelete>
35
+
36
+ <!--use for delete newsletter subcriber (post) -->
37
+ <controller_action_postdispatch_adminhtml_newsletter_subscriber_massDelete>
38
+ <observers>
39
+ <sendinblue_admin_newsletter_massDelete>
40
+ <type>singleton</type>
41
+ <class>Sendinblue_Sendinblue_Model_Observer</class>
42
+ <method>adminSubcriberDelete</method>
43
+ </sendinblue_admin_newsletter_massDelete>
44
+ </observers>
45
+ </controller_action_postdispatch_adminhtml_newsletter_subscriber_massDelete>
46
+
47
+ <!--use for subscribe customer (subscribe customer for newsletter from admin) (post) -->
48
+ <controller_action_postdispatch_adminhtml_customer_massSubscribe>
49
+ <observers>
50
+ <sendinblue_admin_customer_massSubscribe>
51
+ <type>singleton</type>
52
+ <class>Sendinblue_Sendinblue_Model_Observer</class>
53
+ <method>adminCustomerSubscribe</method>
54
+ </sendinblue_admin_customer_massSubscribe>
55
+ </observers>
56
+ </controller_action_postdispatch_adminhtml_customer_massSubscribe>
57
+
58
+ <!--use for unsubscribe customer (post) -->
59
+ <controller_action_postdispatch_adminhtml_customer_massUnsubscribe>
60
+ <observers>
61
+ <sendinblue_admin_customer_massUnsubscribe>
62
+ <type>singleton</type>
63
+ <class>Sendinblue_Sendinblue_Model_Observer</class>
64
+ <method>adminCustomerDelete</method>
65
+ </sendinblue_admin_customer_massUnsubscribe>
66
+ </observers>
67
+ </controller_action_postdispatch_adminhtml_customer_massUnsubscribe>
68
+
69
+ <!--use for unsubscribe newsletter subscriber (post) -->
70
+ <controller_action_predispatch_adminhtml_newsletter_subscriber_massUnsubscribe>
71
+ <observers>
72
+ <sendinblue_admin_newsletter_massUnsubscribe>
73
+ <type>singleton</type>
74
+ <class>Sendinblue_Sendinblue_Model_Observer</class>
75
+ <method>adminSubcriberDelete</method>
76
+ </sendinblue_admin_newsletter_massUnsubscribe>
77
+ </observers>
78
+ </controller_action_predispatch_adminhtml_newsletter_subscriber_massUnsubscribe>
79
+
80
+
81
+ <sales_order_save_after>
82
+ <observers>
83
+ <sendinblue_update_data>
84
+ <type>singleton</type>
85
+ <class>Sendinblue_Sendinblue_Model_Observer</class>
86
+ <method>updateStatus</method>
87
+ </sendinblue_update_data>
88
+ </observers>
89
+ </sales_order_save_after>
90
+
91
+ </events>
92
+ <acl>
93
+ <resources>
94
+ <all>
95
+ <title>Allow Everything</title>
96
+ </all>
97
+ <admin>
98
+ <children>
99
+ <mails>
100
+ <children>
101
+ <mails>
102
+ <title>Sendinblue</title>
103
+ </mails>
104
+ </children>
105
+ </mails>
106
+ <system>
107
+ <children>
108
+ <config>
109
+ <children>
110
+ <sendinblue>
111
+ <title>Sendinblue</title>
112
+ </sendinblue>
113
+ </children>
114
+ </config>
115
+ </children>
116
+ </system>
117
+ </children>
118
+ <children>
119
+ <system>
120
+ <children>
121
+ <mails translate="title" module="sendinblue">
122
+ <title>Sendinblue Settings</title>
123
+ <sort_order>0</sort_order>
124
+ <action></action>
125
+ </mails>
126
+ </children>
127
+ </system>
128
+ </children>
129
+ </admin>
130
+ </resources>
131
+ </acl>
132
+ <translate>
133
+ <modules>
134
+ <Sendinblue_Sendinblue>
135
+ <files>
136
+ <default>Sendinblue.csv</default>
137
+ </files>
138
+ </Sendinblue_Sendinblue>
139
+ </modules>
140
+ </translate>
141
+
142
+
143
+ <layout>
144
+ <updates>
145
+ <sendinblue_sendinblue>
146
+ <file>sendinblue.xml</file>
147
+ </sendinblue_sendinblue>
148
+ </updates>
149
+ </layout>
150
+
151
+ </adminhtml>
152
+ <admin>
153
+ <routers>
154
+ <sendinblue_admin>
155
+ <use>admin</use>
156
+ <args>
157
+ <module>Sendinblue_Sendinblue</module>
158
+ <frontName>sendinblue</frontName>
159
+ </args>
160
+ </sendinblue_admin>
161
+ </routers>
162
+ <children>
163
+ <system>
164
+ <children>
165
+ <mails translate="label" module="sendinblue">
166
+ <title>Sendinblue Settings</title>
167
+ <sort_order>40</sort_order>
168
+ <action>adminhtml/system_config/edit/section/sendinblue</action>
169
+ </mails>
170
+ </children>
171
+ </system>
172
+ </children>
173
+ </admin>
174
+ <global>
175
+ <events>
176
+ <newsletter_subscriber_save_commit_after>
177
+ <observers>
178
+ <sendinblue_sendinblue_model_observer>
179
+ <class>Sendinblue_Sendinblue_Model_Observer</class>
180
+ <method>subscribedToNewsletter</method>
181
+ </sendinblue_sendinblue_model_observer>
182
+ </observers>
183
+ </newsletter_subscriber_save_commit_after>
184
+ <customer_save_after>
185
+ <observers>
186
+ <sendinblue_update_data>
187
+ <type>singleton</type>
188
+ <class>Sendinblue_Sendinblue_Model_Observer</class>
189
+ <method>updateNewObserver</method>
190
+ </sendinblue_update_data>
191
+ </observers>
192
+ </customer_save_after>
193
+ </events>
194
+
195
+ <template>
196
+ <email>
197
+ <custom_template>
198
+ <label>Sendinblue custom email module</label>
199
+ <file>sendinsmtp_conf.html</file>
200
+ <type>html</type>
201
+ </custom_template>
202
+ <notification_template>
203
+ <label>Sendinblue notification email module</label>
204
+ <file>sendin_notification.html</file>
205
+ <type>html</type>
206
+ </notification_template>
207
+ </email>
208
+ </template>
209
+
210
+ <models>
211
+ <core>
212
+ <rewrite>
213
+ <email>Sendinblue_Sendinblue_Model_Email</email>
214
+ <email_template>Sendinblue_Sendinblue_Model_Email_Template</email_template>
215
+ </rewrite>
216
+ </core>
217
+ <sendinblue>
218
+ <class>Sendinblue_Sendinblue_Model</class>
219
+ <resourceModel>sendinblue_mysql4</resourceModel>
220
+ </sendinblue>
221
+ <sendinblue_mysql4>
222
+ <class>Sendinblue_Sendinblue_Model_Mysql4</class>
223
+ <entities>
224
+ <sendinblue>
225
+ <table>sendinblue_country_codes</table>
226
+ </sendinblue>
227
+ </entities>
228
+ </sendinblue_mysql4>
229
+ </models>
230
+ <resources>
231
+ <sendinblue_setup>
232
+ <setup>
233
+ <module>Sendinblue_Sendinblue</module>
234
+ </setup>
235
+ <connection>
236
+ <use>core_setup</use>
237
+ </connection>
238
+ </sendinblue_setup>
239
+ <sendinblue_write>
240
+ <connection>
241
+ <use>core_write</use>
242
+ </connection>
243
+ </sendinblue_write>
244
+ <sendinblue_read>
245
+ <connection>
246
+ <use>core_read</use>
247
+ </connection>
248
+ </sendinblue_read>
249
+ </resources>
250
+
251
+ <helpers>
252
+ <sendinblue>
253
+ <class>Sendinblue_Sendinblue_Helper</class>
254
+ </sendinblue>
255
+ </helpers>
256
+ <blocks>
257
+ <sendinblue>
258
+ <class>Sendinblue_Sendinblue_Block</class>
259
+ </sendinblue>
260
+ </blocks>
261
+
262
+ </global>
263
+ <crontab>
264
+ <jobs>
265
+ <sendinblue_sendinblue>
266
+ <schedule>
267
+ <cron_expr>*/5 * * * *</cron_expr>
268
+ </schedule>
269
+ <run>
270
+ <model>sendinblue/observer::syncData</model>
271
+ </run>
272
+ </sendinblue_sendinblue>
273
+ </jobs>
274
+ </crontab>
275
+ <default>
276
+ <sendinblue>
277
+ <general>
278
+ <enabled>0</enabled>
279
+ <test>0</test>
280
+ <test_address />
281
+ </general>
282
+ <smtp>
283
+ <host>sendinblue.fr</host>
284
+ <port />
285
+ <login />
286
+ <password />
287
+ <ssl />
288
+ </smtp>
289
+ </sendinblue>
290
+ </default>
291
+ <frontend>
292
+ <events>
293
+ <!--use when new subcriber add for newsletter-->
294
+ <controller_action_postdispatch_newsletter_subscriber_new>
295
+ <observers>
296
+ <sendinblue_subscribe_new_observer>
297
+ <type>singleton</type>
298
+ <class>Sendinblue_Sendinblue_Model_Observer</class>
299
+ <method>subscribeObserver</method>
300
+ </sendinblue_subscribe_new_observer>
301
+ </observers>
302
+ </controller_action_postdispatch_newsletter_subscriber_new>
303
+
304
+ <!--use when new user register check (is_subscribed = 1)-->
305
+ <checkout_submit_all_after>
306
+ <observers>
307
+ <sendinblue_sendinblue_model_observer>
308
+ <class>Sendinblue_Sendinblue_Model_Observer</class>
309
+ <method>ordersucess</method>
310
+ </sendinblue_sendinblue_model_observer>
311
+ </observers>
312
+ </checkout_submit_all_after>
313
+
314
+ </events>
315
+
316
+ <layout>
317
+ <updates>
318
+ <sendinblue_sendinblue>
319
+ <file>sendinblue.xml</file>
320
+ </sendinblue_sendinblue>
321
+ </updates>
322
+ </layout>
323
+
324
+ </frontend>
325
+ </config>
app/code/local/Sendinblue/Sendinblue/sql/sendinblue_setup/install-0.1.0.php ADDED
@@ -0,0 +1,276 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @author Sendinblue plateform <contact@sendinblue.com>
4
+ * @copyright 2013-2014 Sendinblue
5
+ * URL: https:www.sendinblue.com
6
+ * Do not edit or add to this file if you wish to upgrade Sendinblue Magento plugin to newer
7
+ * versions in the future. If you wish to customize Sendinblue magento plugin for your
8
+ * needs then we can't provide a technical support.
9
+ **/
10
+
11
+ $installer = $this;
12
+ /* @var $installer Mage_Core_Model_Resource_Setup */
13
+
14
+ $installer->startSetup();
15
+
16
+ /**
17
+ * Create table 'newsletter/subscriber'
18
+ */
19
+ $installer->run("
20
+ -- DROP TABLE IF EXISTS {$this->getTable('sendinblue_country_codes')};
21
+ CREATE TABLE {$this->getTable('sendinblue_country_codes')} (
22
+ `sendinblue_country_code_id` int(11) unsigned NOT NULL auto_increment,
23
+ `iso_code` varchar(255) NOT NULL default '',
24
+ `country_prefix` text NOT NULL default '',
25
+ `status` smallint(6) NOT NULL default '1',
26
+ `created_time` datetime NULL,
27
+ `update_time` datetime NULL,
28
+ PRIMARY KEY (`sendinblue_country_code_id`)
29
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
30
+
31
+ INSERT INTO {$this->getTable('sendinblue_country_codes')}
32
+ (`iso_code`, `country_prefix`, `status`, `created_time`, `update_time`)
33
+ VALUES
34
+ ('AD', '376', 1, now(), now()),
35
+ ('AE', '971', 1, now(), now()),
36
+ ('AF', '93', 1, now(), now()),
37
+ ('AG', '1268', 1, now(), now()),
38
+ ('AI', '1264', 1, now(), now()),
39
+ ('AL', '355', 1, now(), now()),
40
+ ('AM', '374', 1, now(), now()),
41
+ ('AN', '599', 1, now(), now()),
42
+ ('AO', '244', 1, now(), now()),
43
+ ('AQ', '672', 1, now(), now()),
44
+ ('AR', '54', 1, now(), now()),
45
+ ('AS', '1684', 1, now(), now()),
46
+ ('AT', '43', 1, now(), now()),
47
+ ('AU', '61', 1, now(), now()),
48
+ ('AW', '297', 1, now(), now()),
49
+ ('AZ', '994', 1, now(), now()),
50
+ ('BA', '387', 1, now(), now()),
51
+ ('BB', '1246', 1, now(), now()),
52
+ ('BD', '880', 1, now(), now()),
53
+ ('BE', '32', 1, now(), now()),
54
+ ('BF', '226', 1, now(), now()),
55
+ ('BG', '359', 1, now(), now()),
56
+ ('BH', '973', 1, now(), now()),
57
+ ('BI', '257', 1, now(), now()),
58
+ ('BJ', '229', 1, now(), now()),
59
+ ('BL', '590', 1, now(), now()),
60
+ ('BM', '1441', 1, now(), now()),
61
+ ('BN', '673', 1, now(), now()),
62
+ ('BO', '591', 1, now(), now()),
63
+ ('BR', '55', 1, now(), now()),
64
+ ('BS', '1242', 1, now(), now()),
65
+ ('BT', '975', 1, now(), now()),
66
+ ('BW', '267', 1, now(), now()),
67
+ ('BY', '375', 1, now(), now()),
68
+ ('BZ', '501', 1, now(), now()),
69
+ ('CA', '1', 1, now(), now()),
70
+ ('CC', '61', 1, now(), now()),
71
+ ('CD', '242', 1, now(), now()),
72
+ ('CF', '236', 1, now(), now()),
73
+ ('CG', '242', 1, now(), now()),
74
+ ('CH', '41', 1, now(), now()),
75
+ ('CI', '225', 1, now(), now()),
76
+ ('CK', '682', 1, now(), now()),
77
+ ('CL', '56', 1, now(), now()),
78
+ ('CM', '237', 1, now(), now()),
79
+ ('CN', '86', 1, now(), now()),
80
+ ('CO', '57', 1, now(), now()),
81
+ ('CR', '506', 1, now(), now()),
82
+ ('CU', '53', 1, now(), now()),
83
+ ('CV', '238', 1, now(), now()),
84
+ ('CX', '61', 1, now(), now()),
85
+ ('CY', '357', 1, now(), now()),
86
+ ('CZ', '420', 1, now(), now()),
87
+ ('DE', '49', 1, now(), now()),
88
+ ('DJ', '253', 1, now(), now()),
89
+ ('DK', '45', 1, now(), now()),
90
+ ('DM', '1767', 1, now(), now()),
91
+ ('DO', '1809', 1, now(), now()),
92
+ ('DZ', '213', 1, now(), now()),
93
+ ('EC', '593', 1, now(), now()),
94
+ ('EE', '372', 1, now(), now()),
95
+ ('EG', '20', 1, now(), now()),
96
+ ('EH', '212', 1, now(), now()),
97
+ ('ER', '291', 1, now(), now()),
98
+ ('ES', '34', 1, now(), now()),
99
+ ('ET', '251', 1, now(), now()),
100
+ ('FI', '358', 1, now(), now()),
101
+ ('FJ', '679', 1, now(), now()),
102
+ ('FK', '500', 1, now(), now()),
103
+ ('FM', '691', 1, now(), now()),
104
+ ('FO', '298', 1, now(), now()),
105
+ ('FR', '33', 1, now(), now()),
106
+ ('GA', '241', 1, now(), now()),
107
+ ('GB', '44', 1, now(), now()),
108
+ ('GD', '1473', 1, now(), now()),
109
+ ('GE', '995', 1, now(), now()),
110
+ ('GF', '594', 1, now(), now()),
111
+ ('GH', '233', 1, now(), now()),
112
+ ('GI', '350', 1, now(), now()),
113
+ ('GL', '299', 1, now(), now()),
114
+ ('GM', '220', 1, now(), now()),
115
+ ('GN', '224', 1, now(), now()),
116
+ ('GP', '590', 1, now(), now()),
117
+ ('GQ', '240', 1, now(), now()),
118
+ ('GR', '30', 1, now(), now()),
119
+ ('GT', '502', 1, now(), now()),
120
+ ('GU', '1671', 1, now(), now()),
121
+ ('GW', '245', 1, now(), now()),
122
+ ('GY', '592', 1, now(), now()),
123
+ ('HK', '852', 1, now(), now()),
124
+ ('HN', '504', 1, now(), now()),
125
+ ('HR', '385', 1, now(), now()),
126
+ ('HT', '509', 1, now(), now()),
127
+ ('HU', '36', 1, now(), now()),
128
+ ('ID', '62', 1, now(), now()),
129
+ ('IE', '353', 1, now(), now()),
130
+ ('IL', '972', 1, now(), now()),
131
+ ('IM', '44', 1, now(), now()),
132
+ ('IN', '91', 1, now(), now()),
133
+ ('IO', '246', 1, now(), now()),
134
+ ('IQ', '964', 1, now(), now()),
135
+ ('IR', '98', 1, now(), now()),
136
+ ('IS', '354', 1, now(), now()),
137
+ ('IT', '39', 1, now(), now()),
138
+ ('JE', '44', 1, now(), now()),
139
+ ('JM', '1876', 1, now(), now()),
140
+ ('JO', '962', 1, now(), now()),
141
+ ('JP', '81', 1, now(), now()),
142
+ ('KE', '254', 1, now(), now()),
143
+ ('KG', '996', 1, now(), now()),
144
+ ('KH', '855', 1, now(), now()),
145
+ ('KI', '686', 1, now(), now()),
146
+ ('KM', '269', 1, now(), now()),
147
+ ('KN', '1869', 1, now(), now()),
148
+ ('KP', '850', 1, now(), now()),
149
+ ('KR', '82', 1, now(), now()),
150
+ ('KW', '965', 1, now(), now()),
151
+ ('KY', '1345', 1, now(), now()),
152
+ ('KZ', '7', 1, now(), now()),
153
+ ('LA', '856', 1, now(), now()),
154
+ ('LB', '961', 1, now(), now()),
155
+ ('LC', '1758', 1, now(), now()),
156
+ ('LI', '423', 1, now(), now()),
157
+ ('LK', '94', 1, now(), now()),
158
+ ('LR', '231', 1, now(), now()),
159
+ ('LS', '266', 1, now(), now()),
160
+ ('LT', '370', 1, now(), now()),
161
+ ('LU', '352', 1, now(), now()),
162
+ ('LV', '371', 1, now(), now()),
163
+ ('LY', '218', 1, now(), now()),
164
+ ('MA', '212', 1, now(), now()),
165
+ ('MC', '377', 1, now(), now()),
166
+ ('MD', '373', 1, now(), now()),
167
+ ('ME', '382', 1, now(), now()),
168
+ ('MF', '1599', 1, now(), now()),
169
+ ('MG', '261', 1, now(), now()),
170
+ ('MH', '692', 1, now(), now()),
171
+ ('MK', '389', 1, now(), now()),
172
+ ('ML', '223', 1, now(), now()),
173
+ ('MN', '976', 1, now(), now()),
174
+ ('MO', '853', 1, now(), now()),
175
+ ('MP', '1670', 1, now(), now()),
176
+ ('MQ', '596', 1, now(), now()),
177
+ ('MR', '222', 1, now(), now()),
178
+ ('MS', '1664', 1, now(), now()),
179
+ ('MT', '356', 1, now(), now()),
180
+ ('MU', '230', 1, now(), now()),
181
+ ('MV', '960', 1, now(), now()),
182
+ ('MW', '265', 1, now(), now()),
183
+ ('MX', '52', 1, now(), now()),
184
+ ('MY', '60', 1, now(), now()),
185
+ ('MZ', '258', 1, now(), now()),
186
+ ('NA', '264', 1, now(), now()),
187
+ ('NC', '687', 1, now(), now()),
188
+ ('NE', '227', 1, now(), now()),
189
+ ('NF', '672', 1, now(), now()),
190
+ ('NG', '234', 1, now(), now()),
191
+ ('NI', '505', 1, now(), now()),
192
+ ('NL', '31', 1, now(), now()),
193
+ ('NO', '47', 1, now(), now()),
194
+ ('NP', '977', 1, now(), now()),
195
+ ('NR', '674', 1, now(), now()),
196
+ ('NU', '683', 1, now(), now()),
197
+ ('NZ', '64', 1, now(), now()),
198
+ ('OM', '968', 1, now(), now()),
199
+ ('PA', '507', 1, now(), now()),
200
+ ('PE', '51', 1, now(), now()),
201
+ ('PF', '689', 1, now(), now()),
202
+ ('PG', '675', 1, now(), now()),
203
+ ('PH', '63', 1, now(), now()),
204
+ ('PK', '92', 1, now(), now()),
205
+ ('PL', '48', 1, now(), now()),
206
+ ('PM', '508', 1, now(), now()),
207
+ ('PN', '870', 1, now(), now()),
208
+ ('PR', '1', 1, now(), now()),
209
+ ('PS', '970', 1, now(), now()),
210
+ ('PT', '351', 1, now(), now()),
211
+ ('PW', '680', 1, now(), now()),
212
+ ('PY', '595', 1, now(), now()),
213
+ ('QA', '974', 1, now(), now()),
214
+ ('RE', '262', 1, now(), now()),
215
+ ('RO', '40', 1, now(), now()),
216
+ ('RS', '381', 1, now(), now()),
217
+ ('RU', '7', 1, now(), now()),
218
+ ('RW', '250', 1, now(), now()),
219
+ ('SA', '966', 1, now(), now()),
220
+ ('SB', '677', 1, now(), now()),
221
+ ('SC', '248', 1, now(), now()),
222
+ ('SD', '249', 1, now(), now()),
223
+ ('SE', '46', 1, now(), now()),
224
+ ('SG', '65', 1, now(), now()),
225
+ ('SH', '290', 1, now(), now()),
226
+ ('SI', '386', 1, now(), now()),
227
+ ('SJ', '47', 1, now(), now()),
228
+ ('SK', '421', 1, now(), now()),
229
+ ('SL', '232', 1, now(), now()),
230
+ ('SM', '378', 1, now(), now()),
231
+ ('SN', '221', 1, now(), now()),
232
+ ('SO', '252', 1, now(), now()),
233
+ ('SR', '597', 1, now(), now()),
234
+ ('ST', '239', 1, now(), now()),
235
+ ('SV', '503', 1, now(), now()),
236
+ ('SY', '963', 1, now(), now()),
237
+ ('SZ', '268', 1, now(), now()),
238
+ ('TC', '1649', 1, now(), now()),
239
+ ('TD', '235', 1, now(), now()),
240
+ ('TF', '262', 1, now(), now()),
241
+ ('TG', '228', 1, now(), now()),
242
+ ('TH', '66', 1, now(), now()),
243
+ ('TJ', '992', 1, now(), now()),
244
+ ('TK', '690', 1, now(), now()),
245
+ ('TL', '670', 1, now(), now()),
246
+ ('TM', '993', 1, now(), now()),
247
+ ('TN', '216', 1, now(), now()),
248
+ ('TO', '676', 1, now(), now()),
249
+ ('TR', '90', 1, now(), now()),
250
+ ('TT', '1868', 1, now(), now()),
251
+ ('TV', '688', 1, now(), now()),
252
+ ('TW', '886', 1, now(), now()),
253
+ ('TZ', '255', 1, now(), now()),
254
+ ('UA', '380', 1, now(), now()),
255
+ ('UG', '256', 1, now(), now()),
256
+ ('UM', '1', 1, now(), now()),
257
+ ('US', '1', 1, now(), now()),
258
+ ('UY', '598', 1, now(), now()),
259
+ ('UZ', '998', 1, now(), now()),
260
+ ('VA', '39', 1, now(), now()),
261
+ ('VC', '1784', 1, now(), now()),
262
+ ('VE', '58', 1, now(), now()),
263
+ ('VG', '1284', 1, now(), now()),
264
+ ('VI', '1340', 1, now(), now()),
265
+ ('VN', '84', 1, now(), now()),
266
+ ('VU', '678', 1, now(), now()),
267
+ ('WF', '681', 1, now(), now()),
268
+ ('WS', '685', 1, now(), now()),
269
+ ('YE', '967', 1, now(), now()),
270
+ ('YT', '262', 1, now(), now()),
271
+ ('ZA', '27', 1, now(), now()),
272
+ ('ZM', '260', 1, now(), now()),
273
+ ('ZW', '263', 1, now(), now());
274
+ ");
275
+
276
+ $installer->endSetup();
app/code/local/Sendinblue/Sendinblue/sql/sendinblue_setup/mysql4-upgrade-0.1.0-0.2.0.php ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @author Sendinblue plateform <contact@sendinblue.com>
4
+ * @copyright 2013-2014 Sendinblue
5
+ * URL: https:www.sendinblue.com
6
+ * Do not edit or add to this file if you wish to upgrade Sendinblue Magento plugin to newer
7
+ * versions in the future. If you wish to customize Sendinblue magento plugin for your
8
+ * needs then we can't provide a technical support.
9
+ **/
10
+
11
+ //echo 'Testing our upgrade script (upgrade-0.1.0-0.2.0.php) and halting execution to avoid updating the system version number <br />';
12
+
13
+ $resource = Mage::getSingleton('core/resource');
14
+ $writeConnection = $resource->getConnection('core_write');
15
+ $sql = "SELECT * FROM `core_config_data` WHERE `path` LIKE 'sendinblue/%'";
16
+ echo $datanum = count($writeConnection->fetchAll($sql));
17
+ if ($datanum > 0 )
18
+ {
19
+ $query = "DELETE FROM `core_config_data` WHERE `path` LIKE 'sendinblue/%'";
20
+ $writeConnection->query($query);
21
+ }
22
+ ?>
app/design/adminhtml/default/default/layout/sendinblue.xml ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <layout>
3
+ <sendinblue_admin_adminhtml_myform_index>
4
+ <reference name="content">
5
+ <block type="adminhtml/template" name="sendinblue" template="sendinblue/myform.phtml"/>
6
+ </reference>
7
+ </sendinblue_admin_adminhtml_myform_index>
8
+ <!-- Code to add for js and css -->
9
+ <default>
10
+ <reference name="head">
11
+ <action method="addItem"><type>skin_css</type><name>sendinblue/css/styles.css</name><params/></action>
12
+ <action method="addItem"><type>skin_css</type><name>sendinblue/css/jquery.multiselect.css</name><params/></action>
13
+ </reference>
14
+ </default>
15
+ <!-- [end] -->
16
+ </layout>
app/design/adminhtml/default/default/template/sendinblue/myform.phtml ADDED
@@ -0,0 +1,617 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @author Sendinblue plateform <contact@sendinblue.com>
4
+ * @copyright 2013-2014 Sendinblue
5
+ * URL: https:www.sendinblue.com
6
+ * Do not edit or add to this file if you wish to upgrade Sendinblue Magento plugin to newer
7
+ * versions in the future. If you wish to customize Sendinblue magento plugin for your
8
+ * needs then we can't provide a technical support.
9
+ **/
10
+ ?>
11
+ <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/ui-lightness/jquery-ui.css" />
12
+ <script>
13
+ var selectoption = "<?php echo $this->__('Select option'); ?>";
14
+ var selected = "<?php echo $this->__('Selected'); ?>";
15
+ </script>
16
+ <script type="text/javascript" src="<?php echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN);?>adminhtml/default/default/sendinblue/js/jquery-1.9.1.min.js"></script>
17
+ <script type="text/javascript" src="<?php echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN);?>adminhtml/default/default/sendinblue/js/jquery-ui.min.js"></script>
18
+ <script type="text/javascript" src="<?php echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN);?>adminhtml/default/default/sendinblue/js/jquery.multiselect.min.js"></script>
19
+ <script type="text/javascript" src="<?php echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN);?>adminhtml/default/default/sendinblue/js/sendinblue.js"></script>
20
+ <div class="entry-edit">
21
+ <div class="">
22
+ <img class="sendin-logo" src="<?php echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN);?>adminhtml/default/default/sendinblue/images/<?php echo $this->__('sendinblue.png'); ?>">
23
+ <div class="slogan">
24
+ <?php echo $this->__('SendinBlue : THE all-in-one plugin for your marketing and transactional emails.'); ?></div><div class="clear"></div>
25
+ </div>
26
+ <div class="sendin_row">
27
+ <fieldset class="fields">
28
+ <legend class="lgend"><img src="<?php echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN);?>adminhtml/default/default/sendinblue/images/logo.gif">
29
+ <?php echo $this->__('SendinBlue'); ?></legend>
30
+ <div class="contact-details">
31
+ <h2 style="color:#268CCD;"> <?php echo $this->__('Contact SendinBlue team'); ?></h2>
32
+ <div style="clear: both;"></div>
33
+ <p> <?php echo $this->__('Contact us:'); ?>
34
+ <br><br>Email:<a href="mailto:<?php echo $this->__('contact@sendinblue.com'); ?>" style="color:#268CCD; text-decoration: none;">
35
+ <?php echo $this->__('contact@sendinblue.com'); ?></a>
36
+ <br><?php echo $this->__('Phone : 0899 25 30 61'); ?></p>
37
+ <p style="padding-top:20px;"><b><?php echo $this->__('For further informations, please visit our website:'); ?></b>
38
+ <br><a href="<?php echo $this->__('https://www.sendinblue.com'); ?>" target="_blank" style="color:#268CCD; text-decoration: none;">
39
+ <?php echo $this->__('https://www.sendinblue.com'); ?></a></p>
40
+ </div>
41
+ <div><p><?php echo $this->__('With the SendinBlue plugin, you can find everything you need to easily and efficiently send your email & SMS campaigns to your prospects and customers.'); ?></p>
42
+ <ul class="listt">
43
+ <li>&nbsp;<?php echo $this->__('Synchronize your subscribers with SendinBlue (subscribed and unsubscribed contacts)'); ?></li>
44
+ <li>&nbsp;<?php echo $this->__('Easily create good looking emailings'); ?></li>
45
+ <li>&nbsp;<?php echo $this->__('Schedule your campaigns'); ?></li>
46
+ <li>&nbsp;<?php echo $this->__('Track your results and optimize'); ?></li>
47
+ <li>&nbsp;<?php echo $this->__('Monitor your transactional emails (purchase confirmation, password reset …) with a better deliverability and real-time analytics'); ?></li>
48
+ </ul>
49
+ <b><?php echo $this->__('Why should you use SendinBlue ?'); ?></b>
50
+ <ul class="listt">
51
+ <li>&nbsp;<?php echo $this->__('Optimized deliverability'); ?></li>
52
+ <li>&nbsp;<?php echo $this->__('Unbeatable pricing &ndash; best value in the industry'); ?></li>
53
+ <li>&nbsp;<?php echo $this->__('Technical support, by phone or by email'); ?></li>
54
+ </ul>
55
+ </div><div style="clear:both;">&nbsp;</div>
56
+ </fieldset>
57
+ </div>
58
+ <?php
59
+ $module_status = Mage::getModel('sendinblue/sendinblue')->getEnableStatus()?1:0;
60
+ if ($module_status)
61
+ $style = '';
62
+ else
63
+ $style = 'style="display:none;"';
64
+ $api_key = Mage::getModel('sendinblue/sendinblue')->getApiKey();
65
+ $get_syncronize = Mage::getModel('sendinblue/sendinblue')->getSyncronizeStatus();
66
+
67
+ ?>
68
+
69
+ <div class="sendin_row">
70
+ <fieldset class="fields">
71
+ <legend class="lgend"><img src="<?php echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN);?>adminhtml/default/default/sendinblue/images/logo.gif">
72
+ <?php echo $this->__('Prerequisites'); ?></legend>
73
+ <span><?php echo $this->__('- You should have a SendinBlue account. You can create a free account here:'); ?>
74
+ <a href="<?php echo $this->__('https://www.sendinblue.com'); ?>" target="_blank" style="text-decoration: none; color: #268CCD;">
75
+ &nbsp;<?php echo $this->__('https://www.sendinblue.com'); ?></a><br></span></fieldset>
76
+ </div>
77
+
78
+ <div class="sendin_row" >
79
+ <form id="edit_formapik" name="edit_form" method="post" action="<?php echo $this->getUrl('*/*/apikeypost'); ?>">
80
+ <input name="form_key" type="hidden" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" />
81
+ <input name="skin_url" id ='skin_url' type="hidden" value="<?php echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN);?>" />
82
+ <div class="section-config active">
83
+ <fieldset class="fields">
84
+ <legend class="lgend"><img src="<?php echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN);?>adminhtml/default/default/sendinblue/images/logo.gif"> <?php echo $this->__('Settings'); ?></legend>
85
+ <table cellspacing="0" class="form-list3">
86
+ <tr>
87
+ <td class="fix_width2"><label><?php echo $this->__('Activate the SendinBlue module:'); ?></label></td>
88
+ <td class="input-ele">
89
+ <input type="radio" <?php if(Mage::getModel('sendinblue/sendinblue')->getEnableStatus()==1) { echo 'checked'; } ?> name="sendin_api_status" class="sendin_api_status radio_nospaceing" value="1" /> <?php echo $this->__('Yes'); ?>
90
+ <input type="radio" name="sendin_api_status" <?php if(Mage::getModel('sendinblue/sendinblue')->getEnableStatus()==0) { echo 'checked'; } ?> class="sendin_api_status radio_spaceing2" value="0" /> <?php echo $this->__('No'); ?>
91
+ <input type="hidden" name="apistatuskey" id="apistatuskey" value="<?php echo $module_status;?>">
92
+ </td>
93
+ </tr>
94
+
95
+ <tr <?php echo $style; ?> id="sendin_apikey">
96
+ <td><label><?php echo $this->__('API Key:'); ?></label></td>
97
+ <td class="input-ele">
98
+ <input type="text" name="sendin_apikey" id="sendin_apikey_val" class="input-text" value="<?php echo Mage::getModel('sendinblue/sendinblue')->getApiKey(); ?>" />
99
+ <span class="toolTip" title="<?php echo stripslashes($this->__('Please enter your API key from your SendinBlue account and if you don\'t have it yet, please go to www.sendinblue.com and subscribe. You can then get the API key from https://my.sendinblue.com/advanced/apikey')); ?>">&nbsp;</span>
100
+ </td>
101
+ </tr>
102
+
103
+ <tr>
104
+ <td>&nbsp;</td>
105
+ <td class="a-left">
106
+ <div class="btnmrgn-right">
107
+ <input type="submit" class="btn" name="SmtpSubmit" onclick="return apikvalidate('<?php echo $this->__('Please enter your API key') ;?>');" value ="<?php echo $this->__('Update'); ?>" /></div>
108
+ </td>
109
+ </tr>
110
+
111
+ </table>
112
+ </fieldset>
113
+ </div>
114
+ </form>
115
+ </div>
116
+ <?php if ($api_key != '') { ?>
117
+ <div class="sendin_row alldiv" <?php echo $style; ?> >
118
+ <form id="edit_form" name="edit_form" method="post" action="<?php echo $this->getUrl('*/*/syncronizepost'); ?>">
119
+ <div class="section-config active">
120
+ <input name="form_key" type="hidden" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" />
121
+ <fieldset id="my-fieldset" class="fields">
122
+ <legend class="lgend"><img src="<?php echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN);?>adminhtml/default/default/sendinblue/images/logo.gif"> <?php echo $this->__('Activate SendinBlue to manage subscribers'); ?></legend>
123
+ <table cellspacing="0" class="form-list">
124
+ <tr>
125
+ <td class="fix_width"><label><?php echo $this->__('Activate SendinBlue to manage subscribers'); ?></label>
126
+ </td>
127
+ <td class="input-ele">
128
+ <input type="radio" <?php if(Mage::getModel('sendinblue/sendinblue')->getSyncronizeStatus()==1) { echo "checked"; } ?> name="syncronize" value="1" class="radio_nospaceing hdtab"/> <?php echo $this->__('Yes'); ?>
129
+ <input type="radio" <?php if(Mage::getModel('sendinblue/sendinblue')->getSyncronizeStatus()==0) { echo "checked"; } ?> name="syncronize" value="0" class="radio_spaceing2 hdtab" /> <?php echo $this->__('No'); ?> <span title="<?php echo $this->__('If you activate this feature, your new contacts will be automatically added to SendinBlue or unsubscribed from SendinBlue. To synchronize the other way (SendinBlue to Magento), you should run the url (mentioned below) each day.'); ?>" class="toolTip">&nbsp;</span>
130
+ </td>
131
+ </tr>
132
+ <tr>
133
+ <td colspan="2">
134
+ <div id="hidetabselect" <?php if(!Mage::getModel('sendinblue/sendinblue')->getSyncronizeStatus()) {?>style="display:none;"<?php } ?>>
135
+ <table>
136
+ <tr>
137
+ <td><label><?php echo $this->__('Your Lists'); ?></label></td>
138
+ <td class="input-ele"><?php
139
+ $list = Mage::getModel('sendinblue/sendinblue')->lists();
140
+
141
+ $selectedlist = Mage::getModel('sendinblue/sendinblue')->getUserlists();
142
+ if($selectedlist!=NULL){
143
+ $list_array = explode('|',$selectedlist);
144
+ }else{
145
+ $list_array = array();
146
+ }
147
+
148
+ ?>
149
+ <select multiple="multiple" name="sendin_list[]" id="select">
150
+ <?php foreach($list as $value ){ ?>
151
+ <option value="<?php echo $value['id']; ?>" <?php if(in_array($value['id'],$list_array)) echo 'selected = "selected"' ?> ><?php echo $value['name']; ?></option>
152
+ <?php } ?>
153
+ </select>
154
+ <span title="<?php echo $this->__('Select the contact list where you want to save the contacts of your site Magento. By default, we have created a list Magento in your SendinBlue account and we have selected it'); ?>" class="toolTip">&nbsp;</span>
155
+ </td>
156
+ </tr>
157
+
158
+ <tr>
159
+ <td>&nbsp;</td>
160
+ <td class="a-left">
161
+ <div class="btnmrgn-right">
162
+ <input type="submit" class="btn" name="syncronizeSubmit" value ="<?php echo $this->__('Update'); ?>" /></div>
163
+ </td>
164
+ </tr>
165
+ <tr><td colspan="2">
166
+ <?php echo $this->__('To synchronize the emails of your customers from SendinBlue platform to your e-commerce website, you should run '); ?><a href="<?php echo Mage::helper("adminhtml")->getUrl("sendinblue/adminhtml_sync/index/",array()); ?>" style="color: #000000; outline: 0 none; text-decoration: none;"><?php echo $this->__('this link'); ?> </a><?php echo $this->__('each day'); ?><span class="toolTip" title="<?php echo $this->__('Note that if you change the name of your Shop (currently ');?><?php echo ucfirst(Mage::app()->getFrontController()->getRequest()->getModuleName());?><?php echo $this->__(') the token value changes.'); ?>">&nbsp;</span>
167
+ </td></tr>
168
+ </table>
169
+ </div>
170
+ </td>
171
+ </tr>
172
+
173
+ </table>
174
+ </fieldset>
175
+ </div>
176
+ </form>
177
+ </div>
178
+ <?php
179
+ }
180
+ $module_status = Mage::getModel('sendinblue/sendinblue')->getSmtpStatus();
181
+ if ($module_status == 0)
182
+ $style_smtp = 'style="display:none;"';
183
+ else
184
+ $style_smtp = '';
185
+
186
+ ?>
187
+ <?php if ($api_key != '') { ?>
188
+ <div class="sendin_row alldiv" <?php echo $style; ?> >
189
+ <form id="edit_formsmtp" name="edit_form" method="post" action="<?php echo $this->getUrl('*/*/sendmail'); ?>">
190
+ <input name="form_key" type="hidden" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" />
191
+ <input name="smtpUrl" type="hidden" id="smtpUrl" value="<?php echo $this->getUrl('sendinblue/ajax/smtppost'); ?>" />
192
+ <div class="section-config active">
193
+ <fieldset class="fields">
194
+ <legend class="lgend"><img src="<?php echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN);?>adminhtml/default/default/sendinblue/images/logo.gif"> <?php echo $this->__('Activate SendinBlue SMTP for your transactional emails'); ?></legend>
195
+ <table cellspacing="0" class="form-list">
196
+
197
+ <tr>
198
+ <td class="fix_width"><label><?php echo $this->__('Activate SendinBlue SMTP for your transactional emails'); ?></label></td>
199
+ <td class="input-ele">
200
+ <input type="radio" class = 'smtpStatus radio_nospaceing' <?php if(Mage::getModel('sendinblue/sendinblue')->getSmtpStatus()==1) { echo 'checked'; } ?> name="smtp" value="1" /> <?php echo $this->__('Yes'); ?>
201
+ <input <?php if(Mage::getModel('sendinblue/sendinblue')->getSmtpStatus()==0) { echo 'checked'; } ?> type="radio" class = 'smtpStatus radio_spaceing2' name="smtp" value="0" /> <?php echo $this->__('No'); ?><span title="<?php echo $this->__('Transactional email is an expected email because it is triggered automatically after a transaction or a specific event. Common examples of transactional email are : account opening and welcome message, order shipment confirmation, shipment tracking and purchase order status, registration via a contact form, account termination, payment confirmation, invoice etc.'); ?>" class="toolTip">&nbsp;</span>
202
+ </td>
203
+ <td>&nbsp;</td>
204
+ </tr>
205
+
206
+ <tr <?php echo $style_smtp; ?> class='smtptest'>
207
+ <td class="fix_width"><label><?php echo $this->__('Send email test From / To :'); ?></label></td>
208
+ <td class="input-ele"><input class="input-text" name="email" id="email" value="" size="40"/>
209
+ <input type="submit" class="btn" style="margin-left:3px;" name="SmtpSubmit" onclick="return smtpvalidate('<?php echo $this->__('Please provide valid Email!') ;?>');" value ="<?php echo $this->__('Send'); ?>" />
210
+ </td>
211
+ </tr>
212
+
213
+ </table>
214
+ </fieldset>
215
+ </div>
216
+ </form>
217
+
218
+ </div>
219
+
220
+ <div class="sendin_row alldiv" <?php echo $style; ?> >
221
+ <div class="section-config active">
222
+ <input name="trackingUrl" type="hidden" id="trackingUrl" value="<?php echo $this->getUrl('sendinblue/ajax/codepost'); ?>" />
223
+ <fieldset id="my-fieldset" class="fields">
224
+ <legend class="lgend"><img src="<?php echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN);?>adminhtml/default/default/sendinblue/images/logo.gif"> <?php echo $this->__('Code tracking'); ?> </legend>
225
+ <table cellspacing="0" class="form-list">
226
+ <tr>
227
+ <td class="fix_width"><label><?php echo $this->__('Do you want to install a tracking code when validating an order'); ?></label>
228
+ </td>
229
+ <td class="input-ele">
230
+ <input type="radio" <?php if(Mage::getModel('sendinblue/sendinblue')->getTrackingStatus()==1) { echo 'checked'; } ?> name="Tracking" class='Tracking radio_nospaceing' value="1" /> <?php echo $this->__('Yes'); ?>
231
+ <input type="radio" <?php if(Mage::getModel('sendinblue/sendinblue')->getTrackingStatus()==0) { echo 'checked'; } ?> name="Tracking" class='Tracking radio_spaceing2' value="0" /> <?php echo $this->__('No'); ?>
232
+ <span title="<?php echo $this->__('This feature will allow you to transfer all your customers orders from Magento into SendinBlue to implement your email marketing strategy.'); ?>" class="toolTip">&nbsp;</span>
233
+ </td>
234
+ </tr>
235
+ </table>
236
+ </fieldset>
237
+ </div>
238
+ </div>
239
+
240
+ <div class="sendin_row hidetableblock" <?php echo $style; ?> >
241
+ <fieldset class="fields">
242
+ <legend class="lgend"><img src="<?php echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN);?>adminhtml/default/default/sendinblue/images/logo.gif">
243
+ <?php echo $this->__('Manage SMS'); ?></legend>
244
+ <table width="100%" cellspacing="0" cellpadding="0" class="table hidetableblock form-list">
245
+
246
+ <tbody>
247
+ <tr>
248
+ <td class="row1" colspan="2" style="border:none; padding-top:10px;">
249
+ <span style="margin-bottom:10px; color:#333333;">
250
+ <?php echo $this->__('Currently you have '); ?>
251
+ <?php $credit = Mage::getModel('sendinblue/sendinblue')->getSmsCredit(); ?>
252
+ <?php if ($credit >= 10){ ?> <strong style="color:#000000;"><?php echo $credit; ?></strong><?php } else {?><strong style="color:#F03D25;"><?php echo $credit; ?></strong><?php } ?>
253
+
254
+ <?php echo $this->__(' credits sms. To buy more credits, please click'); ?>
255
+ <a target="_blank" href ="<?php echo $this->__('https://www.sendinblue.com/pricing'); ?>" style="color: #000000; outline: 0 none; text-decoration: none;">
256
+ <?php echo $this->__('here'); ?></a></span></td></tr>
257
+ <tr>
258
+ <td>
259
+ <label>
260
+ <?php echo $this->__('You want to be notified by e-mail when you do not have enough credits?'); ?></label>
261
+ <input name="sms_credit" <?php if(Mage::getModel('sendinblue/sendinblue')->getNotifySmsStatus()==1) { echo 'checked'; } ?> type="radio" value="1" class="sms_credit radio_nospaceing" style="margin-right:10px;" />
262
+ <?php echo $this->__('Yes'); ?>
263
+ <input name="sms_credit" <?php if(Mage::getModel('sendinblue/sendinblue')->getNotifySmsStatus()==0) { echo 'checked'; } ?> type="radio" value="0" class="sms_credit radio_spaceing2" style="margin-left:20px;margin-right:10px;" />
264
+ <?php echo $this->__('No'); ?>
265
+ <input name="credit" type="hidden" id="credits" value="<?php echo $this->getUrl('sendinblue/ajax/credit'); ?>" />
266
+ <div class="hideCredit" id="div_email_test" style="padding-top:20px;">
267
+ <form action="<?php echo $this->getUrl('*/*/sendnotifysms'); ?>" method="POST" name="notify_sms_mail_form">
268
+ <input name="form_key" type="hidden" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" />
269
+ <p class="form-data"><label><?php echo $this->__('Email'); ?></label>
270
+ <input name="sendin_notify_email" id="sendin_notify_email" type="text" class="input-text" value="<?php echo Mage::getModel('sendinblue/sendinblue')->getNotifyEmailStatus(); ?>" size="40" />
271
+ </p>
272
+ <p class="form-data"> <label><?php echo $this->__('Limit'); ?></label>
273
+ <input name="sendin_notify_value" id="sendin_notify_value" type="text" class="input-text" value="<?php echo Mage::getModel('sendinblue/sendinblue')->getNotifyValueStatus(); ?>" size="40" /><span class="toolTip" title="<?php echo $this->__('Alert threshold for remaining credits'); ?>">&nbsp;</span>
274
+ </p>
275
+ <p class="form-data" style="width:705px"><input name="notify_sms_mail" type="submit" value="<?php echo $this->__('Save'); ?>" onclick="return validate('<?php echo $this->__('Please provide valid Email!') ;?>','<?php echo $this->__('Please provide a limit in integer format') ; ?>');" class="button btn" style=" float:right;"/></p>
276
+ <p class="mrgin-left" style="float:left;"><?php echo $this->__('To get the email notification, you should run '); ?> <a href="<?php echo Mage::helper("adminhtml")->getUrl("sendinblue/adminhtml_notify/index/",array()); ?>" style="color: #000000; outline: 0 none; text-decoration: none;"><?php echo $this->__('this link'); ?> </a> <?php echo $this->__(' atleast one time per day. '); ?>
277
+ <span class="toolTip" title="<?php echo $this->__('Note that if you change the name of your Shop (currently ');?><?php echo ucfirst(Mage::app()->getFrontController()->getRequest()->getModuleName());?><?php echo $this->__(') the token value changes.'); ?>">&nbsp;</span>
278
+ </p>
279
+ </form>
280
+ </div>
281
+ </td>
282
+ </tr>
283
+ <tr>
284
+ <td>
285
+ <div id="tabs_wrapper">
286
+ <div id="tabs_container">
287
+ <ul id="tabs">
288
+ <li class="active"><a href="#tab1"><?php echo $this->__('Send SMS after order confirmation'); ?></a></li>
289
+ <li><a class="icon_accept" href="#tab2">
290
+ <?php echo $this->__('Send a SMS confirmation for the shipment of the order'); ?></a></li>
291
+ <li><a href="#tab3">
292
+ <?php echo $this->__('Send a campaign SMS'); ?>
293
+ </a></li>
294
+ </ul>
295
+ </div>
296
+ <div id="tabs_content_container">
297
+ <div id="tab1" class="tab_content" style="display: block;">
298
+ <div class="wrapper" style="margin-top:15px;">
299
+ <table width="100%" border="0" cellspacing="0" cellpadding="0" class="form-list3 ">
300
+ <input name="order" type="hidden" id="order" value="<?php echo $this->getUrl('sendinblue/ajax/order'); ?>" />
301
+ <tr>
302
+ <td class="row1 fix_width2" >
303
+ <label class="r_label">
304
+ <?php echo $this->__('Send SMS after order confirmation'); ?></label>
305
+ <div class="radio_bx">
306
+ <input name="sms_order_setting" <?php if(Mage::getModel('sendinblue/sendinblue')->getOrderSmsStatus()==1) { echo 'checked'; } ?> class="sms_order_setting radio_nospaceing" type="radio" value="1" />
307
+ <?php echo $this->__('Yes'); ?>
308
+ <input name="sms_order_setting" <?php if(Mage::getModel('sendinblue/sendinblue')->getOrderSmsStatus()==0) { echo 'checked'; } ?> class="sms_order_setting radio_spaceing2" type="radio" value="0" />
309
+ <?php echo $this->__('No'); ?>
310
+ </div>
311
+ <div style="clear:both;"></div>
312
+ <div class="hideOrder">
313
+ <h4><?php echo $this->__('SMS settings'); ?></h4>
314
+ <div class="form_table ">
315
+ <table width="100%" border="0" cellspacing="0" cellpadding="0" class="form-list3 ">
316
+ <tr>
317
+ <td>
318
+ <form method="POST" action="<?php echo $this->getUrl('*/*/sendorder'); ?>" name="sender_order_form">
319
+ <input name="form_key" type="hidden" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" />
320
+ <table width="100%" border="0" cellspacing="0" cellpadding="0" class="form-list3 no-padding">
321
+ <tr>
322
+ <td class="fix_width2" valign="top">
323
+ <label>
324
+ <?php echo $this->__('Sender'); ?></label>
325
+ </td>
326
+ <td>
327
+ <input name="sender_order" id="sender_order" type="text" value="<?php echo Mage::getModel('sendinblue/sendinblue')->getSendSmsOrderSubject(); ?>" class="input_bx" autocomplete="off" />
328
+ <span class="toolTip" title="<?php echo $this->__('This field allows you to personalize the SMS sender. Attention, there is a limited number of characters.If you enter a name, it is limited to 11 characters, and special characters (é, à ...) are not accepted. If you enter a phone number, it is limited to 17 characters; the number should be preceded by 00 and the country code (for instance, for France mobile 06 12 34 56 78 use 0033612345678 with 0033 is France prefix ).'); ?>">&nbsp;</span>
329
+ <div class="hintmsg"><em><?php echo $this->__('Number of characters left: '); ?><span id="sender_order_text">17</span></em>
330
+ </div>
331
+
332
+ </td>
333
+ </tr>
334
+ <tr>
335
+ <td valign="top"><label><?php echo $this->__('Message'); ?></label></td>
336
+ <td>
337
+ <textarea name="sender_order_message" id="sender_order_message" cols="45" rows="5" class="textarea_bx"><?php echo Mage::getModel('sendinblue/sendinblue')->getSendSmsmOrderMessage(); ?></textarea>
338
+ <span class="toolTip" style="float:left; margin-top: 85px;" title="<?php echo $this->__(' Create the content of your SMS with the limit of 160-character.Beyond 160 characters, it will be counted as a second SMS. Thus, if you write SMS of 240 characters, it will be recorded using two SMS.'); ?>">&nbsp;</span>
339
+ <span style="float:left; line-height:16px; margin-bottom:15px; width:490px; clear:both;"><?php echo $this->__('Number of SMS used: '); ?><span id="sender_order_message_text_count">0</span>
340
+ <div class="hintmsg"><em><?php echo $this->__('Number of characters left: '); ?></em><span id="sender_order_message_text">160</span></div>
341
+ <div class="hintmsg"><em><?php echo $this->__('Attention line break is counted as a single character.'); ?></em>
342
+ </div><br>
343
+ <div class="hintmsg"><em><?php echo $this->__('If you want to personalize the SMS, you can use the variables below:'); ?></em></div>
344
+ <div class="hintmsg"><em><?php echo $this->__('- For first name use {first_name}'); ?></em></div>
345
+ <div class="hintmsg"><em><?php echo $this->__('- For last name use {last_name}'); ?></em></div>
346
+ <div class="hintmsg"><em><?php echo $this->__('- For order reference id use {order_reference}'); ?></em></div>
347
+ <div class="hintmsg"><em><?php echo $this->__('- For order price use {order_price}'); ?></em></div>
348
+ <div class="hintmsg"><em><?php echo $this->__('- For order date use {order_date}'); ?></em></div>
349
+ <input name="sender_order_save" type="submit" value="<?php echo $this->__('Save'); ?>" onclick="return senderOrderSaveValid('<?php echo $this->__('Please fill the Sender field'); ?>','<?php echo $this->__('Please fill the Message field'); ?>');" class="button mrgn-right btn" style="margin-right:197px;" />
350
+ </td>
351
+ </tr>
352
+ </table>
353
+ </form>
354
+ </td>
355
+ </tr>
356
+ <tr>
357
+ <td colspan="2" valign="top" border="0">
358
+ <form method="POST" action="<?php echo $this->getUrl('*/*/sendordertest'); ?>" name="sender_order_testForm">
359
+ <input name="form_key" type="hidden" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" />
360
+ <table width="100%" border="0" cellspacing="0" cellpadding="0" class="form-data">
361
+ <tr>
362
+ <td>
363
+ <div class="hintmsg"><em><?php echo $this->__('Sending a test SMS will be deducted from your SMS credits.'); ?></em></div>
364
+ <label><?php echo $this->__('Send a test SMS'); ?></label>
365
+ <input name="sender_order_number" id="sender_order_number" maxlength="17" type="text" value="" class="input_bx input-texts" />
366
+ <span class="toolTip" title="<?php echo $this->__('The phone number should be in this form: 0033663309741 for this France mobile 06 63 30 97 41 (0033 is France prefix)'); ?>">&nbsp;</span>
367
+ <input name="sender_order_submit" type="button" value="<?php echo $this->__('Send'); ?>" onclick="return testsmssend('<?php echo $this->__('Please fill the Sender field'); ?>','<?php echo $this->__('Please fill the Message field'); ?>','<?php echo $this->__('Please enter the valid Mobile Number'); ?>');" class="button btn" />
368
+ </td>
369
+ </tr>
370
+ </table>
371
+ </form>
372
+ </td>
373
+ </tr>
374
+ </table>
375
+ </div>
376
+ </td>
377
+ </tr>
378
+ </table>
379
+ </div>
380
+ </div>
381
+ </div>
382
+ <div id="tab2" class="tab_content">
383
+ <div class="wrapper" style="margin-top:15px;">
384
+ <table width="100%" border="0" cellspacing="0" cellpadding="0" class="form-list3">
385
+ <input name="shiping" type="hidden" id="shiping" value="<?php echo $this->getUrl('sendinblue/ajax/shiping'); ?>" />
386
+ <tr>
387
+ <td class="row1 fix-width2">
388
+ <label class="r_label">
389
+ <?php echo $this->__('Send a SMS confirmation for the shipment of the order'); ?></label>
390
+ <div class="radio_bx">
391
+ <input name="sms_shiping_setting" <?php if(Mage::getModel('sendinblue/sendinblue')->getShipingSmsStatus()==1) { echo 'checked'; } ?> class="sms_shiping_setting radio_nospaceing" type="radio" value="1" />
392
+ <?php echo $this->__('Yes'); ?>
393
+ <input name="sms_shiping_setting" type="radio" value="0" class="sms_shiping_setting radio_spaceing2" <?php if(Mage::getModel('sendinblue/sendinblue')->getShipingSmsStatus()==0) { echo 'checked'; } ?>/>
394
+ <?php echo $this->__('No'); ?>
395
+ </div>
396
+ <div style="clear:both;"></div>
397
+ <div class="hideShiping">
398
+ <h4><?php echo $this->__('SMS settings'); ?></h4>
399
+ <div class="form_table ">
400
+ <table width="100%" border="0" cellspacing="0" cellpadding="0" class="form-list3 no-padding">
401
+ <tr>
402
+ <td>
403
+ <div class="" style="width:500px;">
404
+ <form method="post" action="<?php echo $this->getUrl('*/*/sendshipment'); ?>" name="sender_shipment_form">
405
+ <input name="form_key" type="hidden" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" />
406
+ <table width="100%" border="0" cellspacing="0" cellpadding="0">
407
+ <tr>
408
+ <td class="fix_width2" valign="top"><label><?php echo $this->__('Sender'); ?></label></td>
409
+ <td>
410
+ <input name="sender_shipment" maxlength="17" id="sender_shipment" type="text" value="<?php echo Mage::getModel('sendinblue/sendinblue')->getSendSmsShipingSubject(); ?>" class="input_bx" autocomplete="off" />
411
+ <span class="toolTip" title="<?php echo $this->__('This field allows you to personalize the SMS sender. Attention, there is a limited number of characters.If you enter a name, it is limited to 11 characters, and special characters (é, à ...) are not accepted. If you enter a phone number, it is limited to 17 characters; the number should be preceded by 00 and the country code (for instance, for France mobile 06 12 34 56 78 use 0033612345678 with 0033 is France prefix ).'); ?>">&nbsp;</span>
412
+ <div class="hintmsg"><em><?php echo $this->__('Number of characters left: '); ?><span id="sender_shipment_text">17</span></em>
413
+ </div>
414
+
415
+ </td>
416
+ </tr>
417
+ <tr>
418
+ <td valign="top"><label><?php echo $this->__('Message'); ?></label></td>
419
+ <td>
420
+ <textarea name="sender_shipment_message" id="sender_shipment_message" cols="45" rows="5" class="textarea_bx"><?php echo Mage::getModel('sendinblue/sendinblue')->getSendSmsShipingMessage(); ?></textarea>
421
+ <span class="toolTip" style="float:left; margin-top: 85px;" title="<?php echo $this->__(' Create the content of your SMS with the limit of 160-character.Beyond 160 characters, it will be counted as a second SMS. Thus, if you write SMS of 240 characters, it will be recorded using two SMS.'); ?>">&nbsp;</span>
422
+ <span style="float:left; line-height:16px; margin-bottom:15px; width:470px; clear:both;"><?php echo $this->__('Number of SMS used: '); ?><span id="sender_shipment_message_text_count">0</span>
423
+ <div class="hintmsg"><em><?php echo $this->__('Number of characters left: '); ?></em><span id="sender_shipment_message_text">160</span></div>
424
+ <div class="hintmsg"><em><?php echo $this->__('Attention line break is counted as a single character.'); ?></em>
425
+ </div><br>
426
+ <div class="hintmsg"><em><?php echo $this->__('If you want to personalize the SMS, you can use the variables below:'); ?></em></div>
427
+ <div class="hintmsg"><em><?php echo $this->__('- For first name use {first_name}'); ?></em></div>
428
+ <div class="hintmsg"><em><?php echo $this->__('- For last name use {last_name}'); ?></em></div>
429
+ <div class="hintmsg"><em><?php echo $this->__('- For order reference id use {order_reference}'); ?></em></div>
430
+ <div class="hintmsg"><em><?php echo $this->__('- For order price use {order_price}'); ?></em></div>
431
+ <div class="hintmsg"><em><?php echo $this->__('- For order date use {order_date}'); ?></em></div>
432
+ <input name="sender_shipment_save" type="submit" value="<?php echo $this->__('Save'); ?>" onclick="return senderShipmentSaveValid('<?php echo $this->__('Please fill the Sender field'); ?>','<?php echo $this->__('Please fill the Message field'); ?>');" class="button mrgn-right btn" />
433
+ </td>
434
+ </tr>
435
+ </table>
436
+ </form>
437
+ </div>
438
+ </td>
439
+ </tr>
440
+ <tr>
441
+ <td colspan="2" valign="top" border="0">
442
+ <form method="post" action="<?php echo $this->getUrl('*/*/sendshipmenttest'); ?>" name="sender_order_testForm">
443
+ <input name="form_key" type="hidden" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" />
444
+ <table width="100%" border="0" cellspacing="0" cellpadding="0">
445
+ <tr>
446
+ <td valign="top" colspan="2">
447
+ <div class="hintmsg"><em><?php echo $this->__('Sending a test SMS will be deducted from your SMS credits.'); ?></em></div>
448
+ <label><?php echo $this->__('Send a test SMS'); ?></label>
449
+ <input name="sender_shipment_number" id="sender_shipment_number" maxlength="17" type="text" value="" class="input_bx" />
450
+ <span class="toolTip" title="<?php echo $this->__('The phone number should be in this form: 0033663309741 for this France mobile 06 63 30 97 41 (0033 is France prefix)'); ?>">&nbsp;</span>
451
+ <input name="sender_shipment_submit" type="button" value="<?php echo $this->__('Send'); ?>" onclick="return testShippedSmsSend('<?php echo $this->__('Please fill the Sender field'); ?>','<?php echo $this->__('Please fill the Message field'); ?>','<?php echo $this->__('Please enter the valid Mobile Number'); ?>');" class="button btn" />
452
+ </td>
453
+ </tr>
454
+ </table>
455
+ </form>
456
+ </td>
457
+ </tr>
458
+ </table>
459
+ </div>
460
+ </td>
461
+ </tr>
462
+ </table>
463
+ </div>
464
+ </div>
465
+ </div>
466
+ <div id="tab3" class="tab_content">
467
+ <div class="wrapper" style="margin-top:15px;">
468
+ <table width="100%" border="0" cellspacing="0" cellpadding="0" class="form-list3">
469
+ <input name="campaign" type="hidden" id="campaign" value="<?php echo $this->getUrl('sendinblue/ajax/campaign'); ?>" />
470
+ <tr>
471
+ <td class="row1 fix_width2">
472
+ <label class="r_label"><?php echo $this->__('Send a campaign SMS'); ?></label>
473
+ <div class="radio_bx">
474
+ <input name="sms_campaign_setting" <?php if(Mage::getModel('sendinblue/sendinblue')->getCampaignStatus()==1) { echo 'checked'; } ?> class="sms_campaign_setting radio_nospaceing" type="radio" value="1" />
475
+ <?php echo $this->__('Yes'); ?>
476
+ <input name="sms_campaign_setting" <?php if(Mage::getModel('sendinblue/sendinblue')->getCampaignStatus()==0) { echo 'checked'; } ?> class="sms_campaign_setting radio_spaceing2" type="radio" value="0" />
477
+ <?php echo $this->__('No'); ?>
478
+ </div>
479
+ <div class="hideCampaign">
480
+ <div class="form_table ">
481
+
482
+ <table width="100%" border="0" cellspacing="0" cellpadding="0" >
483
+ <tr>
484
+ <td>
485
+ <form method="post" action="<?php echo $this->getUrl('*/*/sendcampaign'); ?>" name="sender_campaign_form">
486
+ <input name="form_key" type="hidden" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" />
487
+ <table width="100%" border="0" cellspacing="0" cellpadding="0" class="form-list3 no-padding" >
488
+ <tr>
489
+ <td class="fix_width2" valign="top"> <label><?php echo $this->__('To'); ?></label></td>
490
+ <td>
491
+ <input name="Sendin_Sms_Choice" id="r1_Sendin_Sms_Choice" class="Sendin_Sms_Choice radio_nospaceing" type="radio" value="1" <?php if(Mage::getModel('sendinblue/sendinblue')->getShipingSmsStatus()==1) { echo 'checked'; } ?> />
492
+ <?php echo $this->__('A single contact'); ?>
493
+
494
+ <input name="Sendin_Sms_Choice" id="r2_Sendin_Sms_Choice" class="Sendin_Sms_Choice radio_spaceing2" type="radio" value="0" <?php if(Mage::getModel('sendinblue/sendinblue')->getShipingSmsStatus()==0) { echo 'checked'; } ?> />
495
+ <?php echo $this->__('All my Magento customers'); ?>
496
+
497
+ <input name="Sendin_Sms_Choice" id="r3_Sendin_Sms_Choice" class="Sendin_Sms_Choice radio_spaceing2" type="radio" value="2" <?php if(Mage::getModel('sendinblue/sendinblue')->getShipingSmsStatus()==0) { echo 'checked'; } ?> />
498
+ <?php echo $this->__('Only subscribed customers'); ?>
499
+ </td>
500
+ </tr>
501
+ <script>
502
+ jQuery('#r1_Sendin_Sms_Choice').attr('checked', true);
503
+ </script>
504
+ <tr>
505
+ <td><h4 style="margin-top:0;"><?php echo $this->__('SMS settings'); ?></h4></td>
506
+ <td>&nbsp;</td>
507
+ </tr>
508
+
509
+
510
+ <tr class="singlechoice">
511
+ <td valign="top"><label><?php echo $this->__('Phone number of the contact'); ?>
512
+ </label></td>
513
+ <td>
514
+ <input name="singlechoice" id="singlechoice" maxlength="17" type="text" value="" class="input_bx" /><span class="toolTip" title="<?php echo $this->__('The phone number should be in this form: 0033663309741 for this France mobile 06 63 30 97 41 (0033 is France prefix)'); ?>">&nbsp;</span>
515
+ </td>
516
+ </tr>
517
+
518
+ <tr>
519
+ <td valign="top"><label><?php echo $this->__('Sender'); ?></label></td>
520
+ <td>
521
+ <input name="sender_campaign" maxlength="17" id="sender_campaign" type="text" value="" class="input_bx" autocomplete="off" />
522
+ <span class="toolTip" title="<?php echo $this->__('This field allows you to personalize the SMS sender. Attention, there is a limited number of characters.If you enter a name, it is limited to 11 characters, and special characters (é, à ...) are not accepted. If you enter a phone number, it is limited to 17 characters; the number should be preceded by 00 and the country code (for instance, for France mobile 06 12 34 56 78 use 0033612345678 with 0033 is France prefix ).'); ?>">&nbsp;</span>
523
+ <div class="hintmsg"><em><?php echo $this->__('Number of characters left: '); ?><span id="sender_campaign_text">17</span></em>
524
+ </div>
525
+
526
+ </td>
527
+ </tr>
528
+ <tr>
529
+ <td valign="top"><label><?php echo $this->__('Message'); ?></label></td>
530
+ <td>
531
+ <textarea name="sender_campaign_message" id="sender_campaign_message" cols="45" rows="5" class="textarea_bx"></textarea>
532
+ <span class="toolTip" style="float:left; margin-top: 85px;" title="<?php echo $this->__(' Create the content of your SMS with the limit of 160-character.Beyond 160 characters, it will be counted as a second SMS. Thus, if you write SMS of 240 characters, it will be recorded using two SMS.'); ?>">&nbsp;</span>
533
+ <span style="float:left; line-height:16px; margin-bottom:15px; width:470px; clear:both;"><?php echo $this->__('Number of SMS used: '); ?><span id="sender_campaign_message_text_count">0</span>
534
+ <div class="hintmsg"><em><?php echo $this->__('Number of characters left: '); ?></em><span id="sender_campaign_message_text">160</span></div>
535
+ <div class="hintmsg"><em><?php echo $this->__('Attention line break is counted as a single character.'); ?></em>
536
+ </div><br>
537
+ <div class="hintmsg"><em><?php echo $this->__('If you want to personalize the SMS, you can use the variables below:'); ?></em></div>
538
+ <div class="hintmsg"><em><?php echo $this->__('- For first name use {first_name}'); ?></em></div>
539
+ <div class="hintmsg"><em><?php echo $this->__('- For last name use {last_name}'); ?></em></div>
540
+ <input type="submit" class="button mrgn-right btn" value="<?php echo $this->__('Send the campaign'); ?>" name="sender_campaign_save" onclick="return senderCampaignSaveValid('<?php echo $this->__('Please fill the Sender field'); ?>','<?php echo $this->__('Please fill the Message field'); ?>','<?php echo $this->__('Please enter the valid Mobile Number'); ?>');"">
541
+ </td>
542
+ </tr>
543
+ </table>
544
+ </form>
545
+ <table width="100%" border="0" cellspacing="0" cellpadding="0" class="form-data">
546
+ <tr>
547
+ <td>
548
+ <div class="hintmsg"><em><?php echo $this->__('Sending a test SMS will be deducted from your SMS credits.'); ?></em></div>
549
+ <label><?php echo $this->__('Send a test SMS'); ?></label>
550
+ <input name="sender_campaigntest_number" id="sender_campaigntest_number" maxlength="17" type="text" value="" class="input_bx" />
551
+ <span class="toolTip" title="<?php echo $this->__('The phone number should be in this form: 0033663309741 for this France mobile 06 63 30 97 41 (0033 is France prefix)'); ?>">&nbsp;</span>
552
+ <input name="sender_campaignsms_submit" type="button" value="<?php echo $this->__('Send'); ?>" onclick="return testCampaignSmsSend('<?php echo $this->__('Please fill the Sender field'); ?>','<?php echo $this->__('Please fill the Message field'); ?>','<?php echo $this->__('Please fill the Mobile Phone field'); ?>');" class="button btn" />
553
+ <input type="hidden" name="smsCampError" id="smsCampError" style="display:none;" value="<?php echo $this->__('Message has not been sent successfully'); ?>"><input type="hidden" id="smsCampSuccess" name="smsCampSuccess" value="<?php echo $this->__('Message has been sent successfully'); ?>">
554
+ </td>
555
+ </tr>
556
+ </table>
557
+ </td>
558
+ </tr>
559
+ </table>
560
+
561
+ </div></span>
562
+ </td>
563
+ </tr>
564
+ </table>
565
+ </div>
566
+ </div>
567
+ </div>
568
+ </div>
569
+ </div>
570
+ </td>
571
+ </tr>
572
+ </tbody>
573
+ </table>
574
+ </fieldset>
575
+ </div>
576
+ <?php if($get_syncronize == 1) { ?>
577
+ <div class="sendin_row alldiv" <?php echo $style; ?> >
578
+ <fieldset id="my-fieldset" class="fields">
579
+ <legend class="lgend"><img src="<?php echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN);?>adminhtml/default/default/sendinblue/images/logo.gif"> <?php echo $this->__('Contacts list'); ?> </legend>
580
+
581
+ <input name="ajaxcontentUrl" type="hidden" id="ajaxcontentUrl" value="<?php echo $this->getUrl('sendinblue/ajax/ajaxcontent'); ?>" />
582
+ <input name="ajaxUrl" type="hidden" id="ajaxUrl" value="<?php echo $this->getUrl('sendinblue/ajax/ajaxupdate'); ?>" />
583
+ <input name="ajaxOrderSmsUrl" type="hidden" id="ajaxOrderSmsUrl" value="<?php echo $this->getUrl('sendinblue/ajax/ajaxordersms'); ?>" />
584
+ <input name="ajaxOrderShippedUrl" type="hidden" id="ajaxOrderShippedUrl" value="<?php echo $this->getUrl('sendinblue/ajax/ajaxordershipped'); ?>" />
585
+ <input name="ajaxSmsCampaignUrl" type="hidden" id="ajaxSmsCampaignUrl" value="<?php echo $this->getUrl('sendinblue/ajax/ajaxsmscampaign'); ?>" />
586
+ <input type="hidden" name="pagenumber" id="pagenumber" value="1" />
587
+ <div id="userGrid">
588
+ <div class="grid">
589
+ <div class="hor-scroll">
590
+ <?php echo $this->__('You have '); ?> <?php echo Mage::getModel('sendinblue/sendinblue')->getNewsletterSubscribeCount(); ?>
591
+ <?php echo $this->__(' contacts subscribed and '); ?>
592
+ <?php echo Mage::getModel('sendinblue/sendinblue')->getNewsletterUnSubscribeCount(); ?>
593
+ <?php echo $this->__(' contacts unsubscribed from Magento.'); ?><span id="Spantextmore" >
594
+ <?php echo $this->__(' For more details,'); ?></span><span id="Spantextless" style="display: none;" >
595
+ <?php echo $this->__(' For less details,'); ?></span><b>
596
+ <a href="javascript:void(0);" id="showUserlist" style="color: #000000; outline: 0 none; text-decoration: none;"><?php echo $this->__('click here'); ?></a></b>
597
+ <br><br>
598
+
599
+ <table cellspacing="0" id="userGrid_table " class="data userDetails" style='display:none;'>
600
+ <thead>
601
+ <tr class="headings">
602
+ <th class="no-link"><span class="nobr"><?php echo $this->__('Email'); ?></span></th>
603
+ <th class="no-link"><span class="nobr"><?php echo $this->__('clients'); ?></span></th>
604
+ <th class="no-link"><span class="nobr"><?php echo $this->__('SMS'); ?></span></th>
605
+ <th class="no-link"><span class="nobr"><?php echo $this->__('Newsletter Magento Status'); ?></span></th>
606
+ <th class="no-link last"><span class="nobr"><?php echo $this->__('Newsletter SendinBlue Status'); ?><span title="<?php echo $this->__('Click on the icon to subscribe / unsubscribe the contact from SendinBlue and Magento.'); ?>" class="toolTip">&nbsp;</span></span></th>
607
+ </tr>
608
+ </thead>
609
+ <tbody class='midleft'>
610
+
611
+ </tbody>
612
+ </table>
613
+ </div></div></div>
614
+ </fieldset>
615
+ </div>
616
+ <?php }} ?>
617
+
app/design/frontend/base/default/layout/sendinblue.xml ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <layout version="1.1.0">
3
+ <checkout_onepage_success>
4
+ <reference name="before_body_end">
5
+ <block ifconfig="sendinblue/tracking/code" type="sendinblue/sendinblue" name="sendinblue.sendinblue" />
6
+ </reference>
7
+ </checkout_onepage_success>
8
+ <checkout_multishipping_success>
9
+ <reference name="before_body_end">
10
+ <block ifconfig="sendinblue/tracking/code" type="sendinblue/sendinblue" name="sendinblue.sendinblue" />
11
+ </reference>
12
+ </checkout_multishipping_success>
13
+
14
+ <customer_address_form translate="label">
15
+ <reference name="my.account.wrapper">
16
+ <block type="customer/address_edit" name="sendinblue_account_edit" template="sendinblue/account/edit.phtml"/>
17
+ </reference>
18
+ </customer_address_form>
19
+
20
+ <checkout_multishipping_address_editshipping translate="label">
21
+ <reference name="content">
22
+ <block type="customer/address_edit" name="sendinblue_account_edit" template="sendinblue/account/edit.phtml"/>
23
+ </reference>
24
+ </checkout_multishipping_address_editshipping>
25
+
26
+ <checkout_multishipping_address_editaddress>
27
+ <reference name="content">
28
+ <block type="customer/address_edit" name="sendinblue_account_edit" template="sendinblue/account/edit.phtml"/>
29
+ </reference>
30
+ </checkout_multishipping_address_editaddress>
31
+
32
+ <checkout_multishipping_address_newbilling translate="label">
33
+ <reference name="content">
34
+ <block type="customer/address_edit" name="sendinblue_account_edit" template="sendinblue/account/edit.phtml"/>
35
+ </reference>
36
+ </checkout_multishipping_address_newbilling>
37
+
38
+ </layout>
app/design/frontend/base/default/template/sendinblue/account/edit.phtml ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @author Sendinblue plateform <contact@sendinblue.com>
4
+ * @copyright 2013-2014 Sendinblue
5
+ * URL: https:www.sendinblue.com
6
+ * Do not edit or add to this file if you wish to upgrade Sendinblue Magento plugin to newer
7
+ * versions in the future. If you wish to customize Sendinblue magento plugin for your
8
+ * needs then we can't provide a technical support.
9
+ **/
10
+ ?>
11
+
12
+ <div class="fieldset">
13
+
14
+ <h2 class="legend"><?php echo $this->__('SMS notifications'); ?></h2>
15
+
16
+
17
+ <ul class="form-list">
18
+ <li class="fields">
19
+ <label>
20
+ <?php echo $this->__('In order to receive update about your incoming orders, please fill the mobile phone input like this 0017185481985 (with country code) for the US number (718) 548-1985'); ?>
21
+ </label>
22
+ </li>
23
+
24
+ </ul>
25
+
26
+ </div>
app/etc/modules/Sendinblue_Sendinblue.xml ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <modules>
4
+ <Sendinblue_Sendinblue>
5
+ <active>true</active>
6
+ <codePool>local</codePool>
7
+ </Sendinblue_Sendinblue>
8
+ </modules>
9
+ </config>
app/locale/en_US/template/email/sendin_notification.html ADDED
@@ -0,0 +1,182 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+
3
+ <html xmlns="http://www.w3.org/1999/xhtml">
4
+
5
+ <head>
6
+
7
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
8
+
9
+ <title>[SendinBlue] Alert: You do not have enough credits SMS</title>
10
+
11
+ </head>
12
+
13
+
14
+
15
+ <body style="font-family: Arial, Helvetica, sans-serif;font-size: 12px;color: #222;">
16
+
17
+ <div class="moz-forward-container"><br>
18
+ <table style="background-color:#ffffff" width="100%" border="0"
19
+ cellpadding="0" cellspacing="0">
20
+ <tbody>
21
+ <tr style="border-collapse:collapse;">
22
+ <td style="border-collapse:collapse;" align="center">
23
+ <table width="570" border="0" cellpadding="0"
24
+ cellspacing="0">
25
+ <tbody>
26
+ <tr>
27
+ <td style="line-height:0; font-size:0;" height="20">&nbsp;</td>
28
+ </tr>
29
+ </tbody>
30
+ </table>
31
+ <table width="570" border="0" cellpadding="0"
32
+ cellspacing="0">
33
+ <tbody>
34
+ <tr>
35
+ <td valign="middle" align="left">
36
+ <h1 style="margin:0;color:#2f8bee;font-family:arial,sans-serif">
37
+ <img src="http://img.sendinblue.com/14406/images/529f2339c6ece.png" alt="SendinBlue">
38
+ </h1>
39
+ </td>
40
+ </tr>
41
+ </tbody>
42
+ </table>
43
+ <table width="570" border="0" cellpadding="0"
44
+ cellspacing="0">
45
+ <tbody>
46
+ <tr>
47
+ <td style="line-height:0; font-size:0;" height="20">&nbsp;</td>
48
+ </tr>
49
+ </tbody>
50
+ </table>
51
+ <table width="540" border="0" cellpadding="0"
52
+ cellspacing="0">
53
+ <tbody>
54
+ <tr>
55
+ <td align="left">
56
+ <div style="font-family:arial,sans-serif;
57
+ color:#2f8bee; font-size:18px; font-weight:bold;
58
+ margin:0 0 10px 0;">Hello,<br /><br />
59
+
60
+ This email is sent to inform you that you don't have enough credits to send SMS from your Magento website {site_name}.<br /><br />
61
+
62
+ Actually, you have {present_credit} credits sms.<br /><br />
63
+
64
+ Regards,<br />
65
+
66
+ SendinBlue team<br />
67
+ </div>
68
+ </td>
69
+ </tr>
70
+ </tbody>
71
+ </table>
72
+ <table width="570" border="0" cellpadding="0"
73
+ cellspacing="0">
74
+ <tbody>
75
+ <tr>
76
+ <td style="line-height:0; font-size:0;" height="20">&nbsp;</td>
77
+ </tr>
78
+ <tr>
79
+ <td style="line-height:0; font-size:0;" height="20">&nbsp;</td>
80
+ </tr>
81
+ </tbody>
82
+ </table>
83
+ <table width="540" border="0" cellpadding="0"
84
+ cellspacing="0">
85
+
86
+ </table>
87
+ <table width="570" border="0" cellpadding="0"
88
+ cellspacing="0">
89
+ <tbody>
90
+ <tr>
91
+ <td style="line-height:0; font-size:0;" height="20">&nbsp;</td>
92
+ </tr>
93
+ </tbody>
94
+ </table>
95
+
96
+ <table width="570" border="0" cellpadding="0"
97
+ cellspacing="0">
98
+ <tbody>
99
+ <tr>
100
+ <td style="line-height:0; font-size:0;" height="10">&nbsp;</td>
101
+ </tr>
102
+ </tbody>
103
+ </table>
104
+ <table width="570" border="0" cellpadding="0"
105
+ cellspacing="0">
106
+
107
+ </table>
108
+ <table width="540" border="0" cellpadding="0"
109
+ cellspacing="0">
110
+ <tbody>
111
+ <tr>
112
+ <td style="line-height:0; font-size:0;" height="10">&nbsp;</td>
113
+ </tr>
114
+ <tr>
115
+ <td align="left" valign="top" width="200">
116
+ <div
117
+ style="font-family:arial,sans-serif;
118
+ font-size:12px; margin:0;
119
+ line-height:16px; color:#7e7e7e;"> <strong
120
+ style="color:#2f8bee;">SendinBlue</strong>
121
+ </div>
122
+ <div
123
+ style="font-family:arial,sans-serif;
124
+ font-size:12px; margin:0;
125
+ line-height:16px; color:#7e7e7e;">
126
+ 118, rue de Tocqueville</div>
127
+ <div
128
+ style="font-family:arial,sans-serif;
129
+ font-size:12px; margin:0;
130
+ line-height:16px; color:#7e7e7e;">
131
+ 75017 Paris - France</div>
132
+ <div
133
+ style="font-family:arial,sans-serif;
134
+ font-size:12px; margin:0;
135
+ line-height:16px; color:#7e7e7e;"> Tél
136
+ : 0899 25 30 61</div>
137
+ <div
138
+ style="font-family:arial,sans-serif;
139
+ font-size:12px; margin:0;
140
+ line-height:16px; color:#7e7e7e;"> <a
141
+ moz-do-not-send="true"
142
+ href="http://www.sendinblue.com"
143
+ style="color:#2f8bee;"
144
+ target="_blank">www.sendinblue.com</a>
145
+ </div>
146
+ </td>
147
+ <td align="right" valign="top">
148
+ <div style="font-family:arial,sans-serif; font-size:12px; margin:0; line-height:20px; color:#7e7e7e;">
149
+ <a href="http://www.facebook.com/SendinBlue" style="color:#2f8bee; text-decoration:none;" target="_blank"> <img alt="Facebook" src="https://my.sendinblue.com/public/upload/14406/images/523693143fe88.gif" style="border:none;"> </a> <a href="https://twitter.com/SendinBlue" style="color:#2f8bee; text-decoration:none;" target="_blank"> <img alt="Twitter" src="https://my.sendinblue.com/public/upload/14406/images/5236931746c01.gif" style="border:none;"> </a> <a href="http://www.linkedin.com/company/mailin" style="color:#2f8bee; text-decoration:none;" target="_blank"> <img alt="Linkedin" src="https://my.sendinblue.com/public/upload/14406/images/5236931ad253b.gif" style="border:none;"> </a> <a href="http://sendinblue.tumblr.com/" style="color:#2f8bee; text-decoration:none;" target="_blank">Blog</a></div>
150
+ <div style="font-family:arial,sans-serif; font-size:10px; margin:0; line-height:14px; color:#7e7e7e;">
151
+ © 2013-2014 SendinBlue, all rights reserved.</div>
152
+ <div style="font-family:arial,sans-serif; font-size:10px; margin:0; line-height:14px; color:#7e7e7e;">
153
+ This is an automatic message generated by SendinBlue.</div>
154
+ <div style="font-family:arial,sans-serif; font-size:10px; margin:0; line-height:14px; color:#7e7e7e;">
155
+ Do not respond, you wouldn't receive any answer.</div>
156
+ <div style="font-family:arial,sans-serif; font-size:10px; margin:0; line-height:14px; color:#7e7e7e;"><a href="https://www.sendinblue.com/legal/antispampolicy" style="color:#7e7e7e;" target="_blank">Anti-spam & emailing policy</a> | <a href="https://www.sendinblue.com/legal/generalterms" style="color:#7e7e7e;" target="_blank">General Terms and Conditions</a></div>
157
+ </td>
158
+ </tr>
159
+ </tbody>
160
+ </table>
161
+ <table width="570" border="0" cellpadding="0"
162
+ cellspacing="0">
163
+ <tbody>
164
+ <tr>
165
+ <td style="line-height:0; font-size:0;" height="20">&nbsp;</td>
166
+ </tr>
167
+ <tr>
168
+ <td style="line-height:0; font-size:0;" height="20">&nbsp;</td>
169
+ </tr>
170
+ </tbody>
171
+ </table>
172
+ </td>
173
+ </tr>
174
+ </tbody>
175
+ </table>
176
+ <br>
177
+ </div>
178
+
179
+ </body>
180
+
181
+ </html>
182
+
app/locale/en_US/template/email/sendinsmtp_conf.html ADDED
@@ -0,0 +1,169 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+
3
+ <html xmlns="http://www.w3.org/1999/xhtml">
4
+
5
+ <head>
6
+
7
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
8
+
9
+ <title>[SendinBlue SMTP] test email</title>
10
+
11
+ </head>
12
+
13
+
14
+
15
+ <body style="font-family: Arial, Helvetica, sans-serif;font-size: 12px;color: #222;">
16
+
17
+ <div class="moz-forward-container"><br>
18
+ <table style="background-color:#ffffff" width="100%" border="0"
19
+ cellpadding="0" cellspacing="0">
20
+ <tbody>
21
+ <tr style="border-collapse:collapse;">
22
+ <td style="border-collapse:collapse;" align="center">
23
+ <table width="570" border="0" cellpadding="0"
24
+ cellspacing="0">
25
+ <tbody>
26
+ <tr>
27
+ <td style="line-height:0; font-size:0;" height="20">&nbsp;</td>
28
+ </tr>
29
+ </tbody>
30
+ </table>
31
+ <table width="570" border="0" cellpadding="0"
32
+ cellspacing="0">
33
+ <tbody>
34
+ <tr>
35
+ <td valign="middle" align="left">
36
+ <h1 style="margin:0;color:#2f8bee;font-family:arial,sans-serif">
37
+ <img src="http://img.sendinblue.com/14406/images/529f2339c6ece.png" alt="SendinBlue">
38
+ </h1>
39
+ </td>
40
+ </tr>
41
+ </tbody>
42
+ </table>
43
+ <table width="570" border="0" cellpadding="0"
44
+ cellspacing="0">
45
+ <tbody>
46
+ <tr>
47
+ <td style="line-height:0; font-size:0;" height="20">&nbsp;</td>
48
+ </tr>
49
+ </tbody>
50
+ </table>
51
+ <table width="540" border="0" cellpadding="0"
52
+ cellspacing="0">
53
+ <tbody>
54
+ <tr>
55
+ <td align="left">
56
+ <div style="font-family:arial,sans-serif;
57
+ color:#2f8bee; font-size:18px; font-weight:bold;
58
+ margin:0 0 10px 0;">This email has been sent using SendinBlue SMTP. <br />
59
+ Congratulations, your SendinBlue SMTP module has been set up well.
60
+ </div>
61
+ </td>
62
+ </tr>
63
+ </tbody>
64
+ </table>
65
+ <table width="570" border="0" cellpadding="0"
66
+ cellspacing="0">
67
+ <tbody>
68
+ <tr>
69
+ <td style="line-height:0; font-size:0;" height="20">&nbsp;</td>
70
+ </tr>
71
+ <tr>
72
+ <td style="line-height:0; font-size:0;" height="20">&nbsp;</td>
73
+ </tr>
74
+ </tbody>
75
+ </table>
76
+ <table width="540" border="0" cellpadding="0"
77
+ cellspacing="0">
78
+ <tbody>
79
+ <tr>
80
+ <td align="right">
81
+ <div style="font-family:arial,sans-serif;
82
+ font-size:14px; color:#2f8bee; margin:0;
83
+ font-weight:bold; line-height:18px;">SendinBlue Team</div>
84
+ </td>
85
+ </tr>
86
+ </tbody>
87
+ </table>
88
+ <table width="570" border="0" cellpadding="0"
89
+ cellspacing="0">
90
+ <tbody>
91
+ <tr>
92
+ <td style="line-height:0; font-size:0;" height="20">&nbsp;</td>
93
+ </tr>
94
+ </tbody>
95
+ </table>
96
+ <table width="570" border="0" cellpadding="0"
97
+ cellspacing="0">
98
+
99
+ </table>
100
+ <table width="570" border="0" cellpadding="0"
101
+ cellspacing="0">
102
+ <tbody>
103
+ <tr>
104
+ <td style="line-height:0; font-size:0;" height="10">&nbsp;</td>
105
+ </tr>
106
+
107
+ </tbody>
108
+ </table>
109
+ <table width="540" border="0" cellpadding="0"
110
+ cellspacing="0">
111
+ <tbody>
112
+ <tr>
113
+ <td style="line-height:0; font-size:0;" height="10">&nbsp;</td>
114
+ </tr>
115
+ <tr>
116
+ <td valign="top" width="200" align="left">
117
+ <div style="font-family:arial,sans-serif;
118
+ font-size:12px; margin:0; line-height:16px;
119
+ color:#7e7e7e;"> <strong style="color:#2f8bee;">SendinBlue</strong></div>
120
+ <div style="font-family:arial,sans-serif;
121
+ font-size:12px; margin:0; line-height:16px;
122
+ color:#7e7e7e;"> 118, rue de Tocqueville</div>
123
+ <div style="font-family:arial,sans-serif;
124
+ font-size:12px; margin:0; line-height:16px;
125
+ color:#7e7e7e;"> 75017 Paris - France</div>
126
+ <div style="font-family:arial,sans-serif;
127
+ font-size:12px; margin:0; line-height:16px;
128
+ color:#7e7e7e;"> T&eacute;l : 0899 25 30 61</div>
129
+ <div style="font-family:arial,sans-serif;
130
+ font-size:12px; margin:0; line-height:16px;
131
+ color:#7e7e7e;"> <a moz-do-not-send="true"
132
+ href="http://www.sendinblue.com"
133
+ style="color:#2f8bee;" target="_blank">www.sendinblue.com</a></div>
134
+ </td>
135
+ <td align="right" valign="top">
136
+ <div style="font-family:arial,sans-serif; font-size:12px; margin:0; line-height:20px; color:#7e7e7e;">
137
+ <a href="http://www.facebook.com/SendinBlue" style="color:#2f8bee; text-decoration:none;" target="_blank"> <img alt="Facebook" src="https://my.sendinblue.com/public/upload/14406/images/523693143fe88.gif" style="border:none;"> </a> <a href="https://twitter.com/SendinBlue" style="color:#2f8bee; text-decoration:none;" target="_blank"> <img alt="Twitter" src="https://my.sendinblue.com/public/upload/14406/images/5236931746c01.gif" style="border:none;"> </a> <a href="http://www.linkedin.com/company/mailin" style="color:#2f8bee; text-decoration:none;" target="_blank"> <img alt="Linkedin" src="https://my.sendinblue.com/public/upload/14406/images/5236931ad253b.gif" style="border:none;"> </a> <a href="http://sendinblue.tumblr.com/" style="color:#2f8bee; text-decoration:none;" target="_blank">Blog</a></div>
138
+ <div style="font-family:arial,sans-serif; font-size:10px; margin:0; line-height:14px; color:#7e7e7e;">
139
+ © 2013-2014 SendinBlue, all rights reserved.</div>
140
+ <div style="font-family:arial,sans-serif; font-size:10px; margin:0; line-height:14px; color:#7e7e7e;">
141
+ This is an automatic message generated by SendinBlue.</div>
142
+ <div style="font-family:arial,sans-serif; font-size:10px; margin:0; line-height:14px; color:#7e7e7e;">
143
+ Do not respond, you wouldn't receive any answer.</div>
144
+ <div style="font-family:arial,sans-serif; font-size:10px; margin:0; line-height:14px; color:#7e7e7e;"><a href="https://www.sendinblue.com/legal/antispampolicy" style="color:#7e7e7e;" target="_blank">Anti-spam & emailing policy</a> | <a href="https://www.sendinblue.com/legal/generalterms" style="color:#7e7e7e;" target="_blank">General Terms and Conditions</a></div>
145
+ </td>
146
+ </tr>
147
+ </tbody>
148
+ </table>
149
+ <table width="570" border="0" cellpadding="0"
150
+ cellspacing="0">
151
+ <tbody>
152
+ <tr>
153
+ <td style="line-height:0; font-size:0;" height="20">&nbsp;</td>
154
+ </tr>
155
+ <tr>
156
+ <td style="line-height:0; font-size:0;" height="20">&nbsp;</td>
157
+ </tr>
158
+ </tbody>
159
+ </table>
160
+ </td>
161
+ </tr>
162
+ </tbody>
163
+ </table>
164
+ <br>
165
+ </div>
166
+
167
+ </body>
168
+
169
+ </html>
app/locale/fr_FR/Sendinblue.csv ADDED
@@ -0,0 +1,130 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "SendinBlue : THE all-in-one plugin for your marketing and transactional emails.", "SendinBlue : LE plugin tout-en-un pour vos emails marketing et transactionnels."
2
+ "SendinBlue", "SendinBlue"
3
+ "Contact SendinBlue team", "Contactez l'équipe SendinBlue"
4
+ "Contact us:", "Contactez-nous :"
5
+ "contact@sendinblue.com", "contact@sendinblue.com"
6
+ "https://www.sendinblue.com", "https://www.sendinblue.com"
7
+ "For further informations, please visit our website:", "Pour plus d'informations, merci de visiter notre site internet:"
8
+ "Synchronize your subscribers with SendinBlue (subscribed and unsubscribed contacts)", "Synchronisation automatique de vos contacts avec SendinBlue (inscrits et désinscrits)"
9
+ "Easily create good looking emailings", "Outils d'aide à la création d'emailings"
10
+ "Schedule your campaigns", "Programmation des campagnes"
11
+ "Track your results and optimize", "Suivi des résultats"
12
+ "Monitor your transactional emails (purchase confirmation, password reset …) with a better deliverability and real-time analytics", "Pilotage simple et efficace de vos emails transactionnels (emails de confirmation de commande, de récupération de mot de passe …) avec une meilleure délivrabilité et le détail des ouvertures et des clics en temps réel"
13
+ "Why should you use SendinBlue ?", "Pourquoi utiliser SendinBlue ?"
14
+ "Optimized deliverability", "Une délivrabilité optimisée"
15
+ "Unbeatable pricing &ndash; best value in the industry", "Les meilleurs prix du marché, sans engagement"
16
+ "Technical support, by phone or by email", "Un support technique joignable par téléphone ou par email"
17
+ "Settings", "Paramètres"
18
+ "Activate the SendinBlue module:", "Activer le module SendinBlue:"
19
+ "Yes", "Oui"
20
+ "No", "Non"
21
+ "API Key:", "Clé API:"
22
+ "Validate &amp; Save", "Valider et enregistrer"
23
+ "Please enter your API key from your SendinBlue account and if you don't have it yet, please go to www.sendinblue.com and subscribe. You can then get the API key from https://my.sendinblue.com/advanced/apikey", "Veuillez renseigner votre clé API qui est liée à votre compte SendinBlue. Elle est disponible sur cette page: https://my.sendinblue.com/advanced/apikey. Si vous ne possédez pas de compte SendinBlue, vous devez créer un compte sur le site https://www.sendinblue.com"
24
+ "Your lists", "Vos listes"
25
+ "Activate SendinBlue to manage subscribers", "Activer SendinBlue pour gérer vos contacts"
26
+ "Your Lists", "Vos listes"
27
+ "Select the contact list where you want to save the contacts of your site Magento. By default, we have created a list Magento in your SendinBlue account and we have selected it", "Choisissez les listes de contacts où vous souhaitez enregistrer les contacts de votre site Magento. Nous avons créé automatiquement une liste Magento sur votre compte SendinBlue, elle est sélectionnée par défaut."
28
+ "To synchronize the emails of your customers from SendinBlue platform to your e-commerce website, you should run ", "Pour synchroniser les emails de vos clients de la plateforme SendinBlue vers votre site e-commerce website, il faudra exécuter "
29
+ "this link", "ce lien"
30
+ "each day", "chaque jour."
31
+ "Activate SendinBlue SMTP for your transactional emails", "Activer SendinBlue SMTP pour vos emails transactionnels"
32
+ "SendinBlue SMTP ", "SendinBlue SMTP "
33
+ "is a product of SendinBlue and it allows you to manage your transactional emails", "est un produit de SendinBlue et vous permet de gérer vos emails transactionnels."
34
+ "Transactional email is an expected email because it is triggered automatically after a transaction or a specific event. Common examples of transactional email are : account opening and welcome message, order shipment confirmation, shipment tracking and purchase order status, registration via a contact form, account termination, payment confirmation, invoice etc.", "SendinBlue SMTP permet d'envoyer des emails transactionnels (un email transactionnel est envoyé pour attester d'une transaction ou d'un évènement. Exemple : email d'inscription, de confirmation de commande, une facture …). En activant cette fonctionnalité, vous êtes sûr que vos emails transactionnels parviennent bien à vos destinataires et vous pouvez consulter l'historique de vos emails (ouvertures, clics …)."
35
+ "Activate SendinBlue SMTP for your transactional emails", "Activer SendinBlue SMTP pour vos emails transactionnels"
36
+ "Send email test From / To :", "Envoyer un email de test à"
37
+ "Send", "Envoyer"
38
+ "Code tracking", "Code de tracking"
39
+ "Do you want to install a tracking code when validating an order", "Voulez vous installer un code de tracking lors de la validation d'une commande"
40
+ "This feature will allow you to transfer all your customers orders from Magento into SendinBlue to implement your email marketing strategy.", "Cette fonctionnalité vous permettra de remonter vos commandes réalisées depuis votre site Magento vers SendinBlue afin de mettre en place des strategies marketing lors de l'envoi de vos campagnes."
41
+ "You have ", "Vous avez "
42
+ " contacts subscribed and ", " contacts inscrits et "
43
+ " contacts unsubscribed from Magento.", " contacts désinscrits de Magento."
44
+ "Contacts list", "Liste des contacts "
45
+ " For more details,", " Pour plus de détails cliquez"
46
+ " For less details,", " Pour moins de détails, cliquez"
47
+ "click here", "ici"
48
+ "SendinBlue Setting", "Les Paramètres du module SendinBlue"
49
+ "Prerequisites", "Pré-requis"
50
+ "Clients", "Clients"
51
+ "Newsletter Magento Status", "Inscrit sur Magento"
52
+ "Newsletter SendinBlue Status", "Inscrit sur SendinBlue"
53
+ "- You should have a SendinBlue account. You can create a free account here:", "- Pour installer ce module, il est nécessaire d'avoir un compte SendinBlue. Vous pouvez en créer un gratuitement sur le site:"
54
+ "Click on the icon to subscribe / unsubscribe the contact from SendinBlue and Magento.", "Cliquez sur l'icône pour inscrire / désinscrire un contact de SendinBlue et Magento."
55
+ "Manage SMS", "Gestion des SMS"
56
+ "Currently you have ", "Actuellement, vous avez"
57
+ " credits sms. To buy more credits, please click", "crédits SMS. Pour acheter plus de crédits, cliquez "
58
+ "https://www.sendinblue.com/pricing", "https://fr.sendinblue.com/pricing"
59
+ "here", "ici"
60
+ "You want to be notified by e-mail when you do not have enough credits?", "Voulez vous être prévenu par e-mail lorsqu'il vous reste peu de crédits ?"
61
+ "Yes", "Oui"
62
+ "No", "Non"
63
+ "Limit", "Limite"
64
+ "Save", "Enregistrer"
65
+ "To get the email notification, you should run ", "Pour recevoir l'e-mail de notification, il faudra exécuter "
66
+ " atleast one time per day. ", "au moins une fois par jour."
67
+ "Note that if you change the name of your Shop (currently ", "Si vous changez le nom de votre boutique (actuellement "
68
+ ") the token value changes.", ") la valeur du token changera. "
69
+ "Send SMS after order confirmation", "Envoyer un SMS après la confirmation de commande"
70
+ "Send a SMS confirmation for the shipment of the order", "Envoyer un SMS après l'expédition de commande"
71
+ "Send a campaign SMS", "Envoyer une campagne SMS"
72
+ "SMS settings", "Paramètres du SMS"
73
+ "Sender", "Expéditeur"
74
+ "This field allows you to personalize the SMS sender. Attention, there is a limited number of characters.If you enter a name, it is limited to 11 characters, and special characters (é, à ...) are not accepted. If you enter a phone number, it is limited to 17 characters; the number should be preceded by 00 and the country code (for instance, for France mobile 06 12 34 56 78 use 0033612345678 with 0033 is France prefix ).", "Ce champ vous permet de personnaliser l'expéditeur du SMS. Attention, il y 'a un nombre limité de caractères. Si vous entrez un nom, il sera limité à 11 caractères (les caractères spéciaux (é, à ...) ne sont pas acceptés) et si vous entrez un numéro de téléphone, il sera limité à 17 caractères. Le numéro devrait être précédé par 00 et le code du pays (par exemple, pour un numéro de téléphone mobile français 06 12 34 56 78 il faudra utiliser 0033612345678 (0033 est l'indicatif de la France)"
75
+ "Number of characters left: ", "Nombre de caractères restants: "
76
+ "Attention line break is counted as a single character.", "Attention, un saut de ligne est compté comme un seul caractère. "
77
+ " Create the content of your SMS with the limit of 160-character.Beyond 160 characters, it will be counted as a second SMS. Thus, if you write SMS of 240 characters, it will be recorded using two SMS.", "Créer le contenu de vos SMS avec une limite de 160 caractères. Au-delà de 160 caractères, il sera compté comme un second SMS. Ainsi, si vous écrivez un SMS de 240 caractères, il sera compté comme deux SMS."
78
+ "Number of SMS used: ", "Nombre de SMS utilisé(s):"
79
+ "Sending a test SMS will be deducted from your SMS credits.", "L'envoi d'un SMS test sera décompté de vos crédits SMS. "
80
+ "Send a test SMS", "Envoyer un SMS de test"
81
+ "The phone number should be in this form: 33663309741 for 06 63 30 97 41", "Le téléphone mobile doit être sous cette forme: 33663309741 pour 06 63 30 97 41"
82
+ "Send", "Envoyer"
83
+ "To", "à"
84
+ "A single contact", "Un seul contact"
85
+ "If you want to personalize the SMS, you can use the variables below:", "Si vous souhaitez personnaliser les SMS, vous pouvez utiliser les variables ci-dessous:"
86
+ "- For first name use {first_name}", "- Pour afficher le prénom, utiliser {first_name}"
87
+ "- For last name use {last_name}", "- Pour afficher le nom, utiliser {last_name}"
88
+ "- For order reference id use {order_reference}", "- Pour afficher l'id de la commande, utiliser {order_reference}"
89
+ "- For order price use {order_price}", "- Pour afficher le prix de la commande, utiliser {order_price}"
90
+ "- For order date use {order_date}", "- Pour afficher la date de la commande, utiliser {order_date}"
91
+ "All my Magento customers", "Tous mes contacts Magento"
92
+ "Phone number of the contact", "Numéro de téléphone du contact"
93
+ "Send the campaign", "Envoyer la campagne"
94
+ "Message has been sent successfully", "Le SMS a bien été envoyé"
95
+ "Message has not been sent successfully", "Le SMS n'a pas été envoyé"
96
+ "Please fill the Sender field", "Veuillez renseigner un expéditeur"
97
+ "Please fill the Mobile Phone field", "Veuillez renseigner votre Téléphone Mobile"
98
+ "Please enter the valid Mobile Number", "Veuillez renseigner votre Téléphone Mobile"
99
+ "Please fill the Message field", "Veuillez remplir le champ message"
100
+ "Please fill the message field", "Veuillez remplir le champ message"
101
+ "Please select a list", "Veuillez sélectionner une liste"
102
+ "Mail not sent", "Email non envoyé"
103
+ "Please fill message field", "Veuillez remplir le champ message"
104
+ "Your setting has been successfully saved", "Votre paramétrage a été enregistré avec succès"
105
+ "Please provide valid Email!", "Veuillez renseigner un email valide"
106
+ "Please provide a limit in integer format", "Le champ limite doit être un nombre entier"
107
+ "You have entered wrong api key", "Votre clé API n'est pas correcte"
108
+ "Your SMTP account is not activated and therefore you can not use SendinBlue SMTP. For more informations, Please contact our support to: contact@sendinblue.com", "Votre compte SMTP n'est pas activé et donc vous ne pouvez pas utiliser SendinBlue SMTP. Pour plus d'informations, vous pouvez contacter notre support à : contact@sendinblue.com"
109
+ "Your setting has been sucessfully saved", "Votre configuration a bien été enregistrée"
110
+ "Only subscribed customers", "Seuls les contacts abonnés"
111
+ "Successfully updated.", "Mise à jour effectuée avec succès"
112
+ "Mail sent!", "Email envoyé!"
113
+ "The CRON has been well executed.", "Le CRON a bien été exécuté."
114
+ "Activate SendinBlue to manage subscribers", "Activer SendinBlue pour gérer vos contacts"
115
+ "Please enter your API key", "Veuillez renseigner votre clé API"
116
+ "Alert threshold for remaining credits", "Seuil d'alerte de crédits restants"
117
+ "SMS notifications", "Notifications par SMS"
118
+ "In order to receive update about your incoming orders, please fill the mobile phone input like this 0017185481985 (with country code) for the US number (718) 548-1985", "Pour recevoir les informations de vos prochaines commandes, veuillez renseigner votre numéro de téléphone de la manière suivante: 0033663309748 (avec le code du pays) pour le numéro français 06 63 30 97 48"
119
+ "SendinBlue Settings", "Les Paramètres du module SendinBlue"
120
+ "Invalid form data.", "Invalides données de formulaire."
121
+ "Mail not sent,Hourly Quota Exceeded", "Email non envoyé parce que votre quota horaire a été dépassé"
122
+ "Selected", "liste(s) sélectionnée(s)"
123
+ "Hourly Quota Exceeded", "Quota horaire dépassé"
124
+ "The phone number should be in this form: 0033663309741 for this France mobile 06 63 30 97 41 (0033 is France prefix)", "Le numéro de téléphone mobile devrait être sous cette forme: 0033663309741 pour le numéro français 06 63 30 97 41 (0033 est l'indicatif de la France)"
125
+ "Update", "Mettre à jour"
126
+ "If you activate this feature, your new contacts will be automatically added to SendinBlue or unsubscribed from SendinBlue. To synchronize the other way (SendinBlue to Magento), you should run the url (mentioned below) each day.", " En activant cette fonctionnalité, vos nouveaux contacts seront automatiquement ajoutés / désinscrits de SendinBlue. Pour une synchronisation inverse (SendinBlue vers Magento), il faudra exécuter quotidiennement l'url du CRON (cf remarque plus bas)"
127
+ "The phone number should be in this form: 0033663309741 for this France mobile 06 63 30 97 41 (0033 is France prefix)", "Le numéro de téléphone mobile devrait être sous cette forme: 0033663309741 pour le numéro français 06 63 30 97 41 (0033 est l'indicatif de la France)"
128
+ "Select option", "Sélectionnez"
129
+ "Synchronize your Magento contacts with SendinBlue platform, easily send your marketing and transactional emails and SMS.", "Synchronisez les contacts de votre site Magento avec SendinBlue & envoyez facilement tous vos emails & SMS marketing et transactionnels."
130
+ "With the SendinBlue plugin, you can find everything you need to easily and efficiently send your email & SMS campaigns to your prospects and customers.", "Avec le module SendinBlue, retrouvez tout ce dont vous avez besoin pour envoyer simplement et efficacement vos campagnes emailing & SMS à vos prospects et clients :"
app/locale/fr_FR/template/email/sendin_notification.html ADDED
@@ -0,0 +1,172 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+
3
+ <html xmlns="http://www.w3.org/1999/xhtml">
4
+
5
+ <head>
6
+
7
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
8
+
9
+ <title> [SendinBlue] Alerte: Vos crédits SMS seront bientôt épuisés</title>
10
+
11
+ </head>
12
+
13
+
14
+
15
+ <body style="font-family: Arial, Helvetica, sans-serif;font-size: 12px;color: #222;">
16
+
17
+ <div class="moz-forward-container"><br>
18
+ <table style="background-color:#ffffff" width="100%" border="0"
19
+ cellpadding="0" cellspacing="0">
20
+ <tbody>
21
+ <tr style="border-collapse:collapse;">
22
+ <td style="border-collapse:collapse;" align="center">
23
+ <table width="570" border="0" cellpadding="0"
24
+ cellspacing="0">
25
+ <tbody>
26
+ <tr>
27
+ <td style="line-height:0; font-size:0;" height="20">&nbsp;</td>
28
+ </tr>
29
+ </tbody>
30
+ </table>
31
+ <table width="570" border="0" cellpadding="0"
32
+ cellspacing="0">
33
+ <tbody>
34
+ <tr>
35
+ <td valign="middle" align="left">
36
+ <h1 style="margin:0;color:#2f8bee;font-family:arial,sans-serif">
37
+ <img src="http://img.sendinblue.com/14406/images/529f2339c6ece.png" alt="SendinBlue">
38
+ </h1>
39
+ </td>
40
+ </tr>
41
+ </tbody>
42
+ </table>
43
+ <table width="570" border="0" cellpadding="0"
44
+ cellspacing="0">
45
+ <tbody>
46
+ <tr>
47
+ <td style="line-height:0; font-size:0;" height="20">&nbsp;</td>
48
+ </tr>
49
+ </tbody>
50
+ </table>
51
+ <table width="540" border="0" cellpadding="0"
52
+ cellspacing="0">
53
+ <tbody>
54
+ <tr>
55
+ <td align="left">
56
+ <div style="font-family:arial,sans-serif;
57
+ color:#2f8bee; font-size:18px; font-weight:bold;
58
+ margin:0 0 10px 0;">Bonjour,<br /><br />
59
+
60
+ Cet email est envoyé pour vous informer que vous n'avez plus assez de crédits pour envoyer des SMS à partir de votre site Magento {site_name}.<br /><br />
61
+
62
+ Actuellement, vous avez {present_credit} crédits SMS.<br /><br />
63
+
64
+ Cordialement,<br />
65
+
66
+ L'équipe de SendinBlue<br />
67
+ </div>
68
+ </td>
69
+ </tr>
70
+ </tbody>
71
+ </table>
72
+ <table width="570" border="0" cellpadding="0"
73
+ cellspacing="0">
74
+ <tbody>
75
+ <tr>
76
+ <td style="line-height:0; font-size:0;" height="20">&nbsp;</td>
77
+ </tr>
78
+ <tr>
79
+ <td style="line-height:0; font-size:0;" height="20">&nbsp;</td>
80
+ </tr>
81
+ </tbody>
82
+ </table>
83
+ <table width="540" border="0" cellpadding="0"
84
+ cellspacing="0">
85
+
86
+ </table>
87
+ <table width="570" border="0" cellpadding="0"
88
+ cellspacing="0">
89
+ <tbody>
90
+ <tr>
91
+ <td style="line-height:0; font-size:0;" height="20">&nbsp;</td>
92
+ </tr>
93
+ </tbody>
94
+ </table>
95
+ <table width="570" border="0" cellpadding="0"
96
+ cellspacing="0">
97
+
98
+ </table>
99
+ <table width="570" border="0" cellpadding="0"
100
+ cellspacing="0">
101
+ <tbody>
102
+ <tr>
103
+ <td style="line-height:0; font-size:0;" height="10">&nbsp;</td>
104
+ </tr>
105
+ </tbody>
106
+ </table>
107
+ <table width="540" border="0" cellpadding="0"
108
+ cellspacing="0">
109
+ <tbody>
110
+ <tr>
111
+ <td style="line-height:0; font-size:0;" height="10">&nbsp;</td>
112
+ </tr>
113
+ <tr>
114
+ <td valign="top" width="200" align="left">
115
+ <div style="font-family:arial,sans-serif;
116
+ font-size:12px; margin:0; line-height:16px;
117
+ color:#7e7e7e;"> <strong style="color:#2f8bee;">SendinBlue</strong></div>
118
+ <div style="font-family:arial,sans-serif;
119
+ font-size:12px; margin:0; line-height:16px;
120
+ color:#7e7e7e;"> 118, rue de Tocqueville</div>
121
+ <div style="font-family:arial,sans-serif;
122
+ font-size:12px; margin:0; line-height:16px;
123
+ color:#7e7e7e;"> 75017 Paris - France</div>
124
+ <div style="font-family:arial,sans-serif;
125
+ font-size:12px; margin:0; line-height:16px;
126
+ color:#7e7e7e;"> T&eacute;l : 0899 25 30 61</div>
127
+ <div style="font-family:arial,sans-serif;
128
+ font-size:12px; margin:0; line-height:16px;
129
+ color:#7e7e7e;"> <a moz-do-not-send="true"
130
+ href="http://www.sendinblue.com"
131
+ style="color:#2f8bee;" target="_blank">www.sendinblue.com</a></div>
132
+ </td>
133
+ <td align="right" valign="top">
134
+ <div style="font-family:arial,sans-serif; font-size:12px; margin:0; line-height:20px; color:#7e7e7e;">
135
+ <a href="http://www.facebook.com/SendinBlue" style="color:#2f8bee; text-decoration:none;" target="_blank"> <img alt="Facebook" src="https://my.sendinblue.com/public/upload/14406/images/523693143fe88.gif" style="border:none;"> </a> <a href="https://twitter.com/SendinBlue" style="color:#2f8bee; text-decoration:none;" target="_blank"> <img alt="Twitter" src="https://my.sendinblue.com/public/upload/14406/images/5236931746c01.gif" style="border:none;"> </a> <a href="http://www.linkedin.com/company/mailin" style="color:#2f8bee; text-decoration:none;" target="_blank"> <img alt="Linkedin" src="https://my.sendinblue.com/public/upload/14406/images/5236931ad253b.gif" style="border:none;"> </a> <a href="http://sendinblue.tumblr.com/" style="color:#2f8bee; text-decoration:none;" target="_blank">Blog</a></div>
136
+ <div style="font-family:arial,sans-serif; font-size:10px; margin:0; line-height:14px; color:#7e7e7e;"> &copy; 2013-2014 SendinBlue, tous droits
137
+ r&eacute;serv&eacute;s.
138
+ </div>
139
+ <div style="font-family:arial,sans-serif; font-size:10px; margin:0; line-height:14px; color:#7e7e7e;"> Ceci est un message automatique
140
+ g&eacute;n&eacute;r&eacute; par SendinBlue.
141
+ </div>
142
+ <div style="font-family:arial,sans-serif; font-size:10px; margin:0; line-height:14px; color:#7e7e7e;"> Ne pas y r&eacute;pondre, vous ne
143
+ recevriez aucune r&eacute;ponse.
144
+ </div>
145
+ <div style="font-family:arial,sans-serif; font-size:10px; margin:0; line-height:14px; color:#7e7e7e;"><a href="https://www.sendinblue.com/legal/antispampolicy" style="color:#7e7e7e;" target="_blank">Politique
146
+ anti-spam &amp; emailing</a> | <a href="https://www.sendinblue.com/legal/generalterms" style="color:#7e7e7e;" target="_blank">Conditions
147
+ g&eacute;n&eacute;rales de ventes</a></div>
148
+ </td>
149
+ </tr>
150
+ </tbody>
151
+ </table>
152
+ <table width="570" border="0" cellpadding="0"
153
+ cellspacing="0">
154
+ <tbody>
155
+ <tr>
156
+ <td style="line-height:0; font-size:0;" height="20">&nbsp;</td>
157
+ </tr>
158
+ <tr>
159
+ <td style="line-height:0; font-size:0;" height="20">&nbsp;</td>
160
+ </tr>
161
+ </tbody>
162
+ </table>
163
+ </td>
164
+ </tr>
165
+ </tbody>
166
+ </table>
167
+ <br>
168
+ </div>
169
+
170
+ </body>
171
+
172
+ </html>
app/locale/fr_FR/template/email/sendinsmtp_conf.html ADDED
@@ -0,0 +1,174 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+
3
+ <html xmlns="http://www.w3.org/1999/xhtml">
4
+
5
+ <head>
6
+
7
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
8
+
9
+ <title>[SendinBlue SMTP] e-mail de test</title>
10
+
11
+ </head>
12
+
13
+
14
+
15
+ <body style="font-family: Arial, Helvetica, sans-serif;font-size: 12px;color: #222;">
16
+
17
+ <div class="moz-forward-container"><br>
18
+ <table style="background-color:#ffffff" width="100%" border="0"
19
+ cellpadding="0" cellspacing="0">
20
+ <tbody>
21
+ <tr style="border-collapse:collapse;">
22
+ <td style="border-collapse:collapse;" align="center">
23
+ <table width="570" border="0" cellpadding="0"
24
+ cellspacing="0">
25
+ <tbody>
26
+ <tr>
27
+ <td style="line-height:0; font-size:0;" height="20">&nbsp;</td>
28
+ </tr>
29
+ </tbody>
30
+ </table>
31
+ <table width="570" border="0" cellpadding="0"
32
+ cellspacing="0">
33
+ <tbody>
34
+ <tr>
35
+ <td valign="middle" align="left">
36
+ <h1 style="margin:0;color:#2f8bee;font-family:arial,sans-serif">
37
+ <img src="http://img.sendinblue.com/14406/images/529f2339c6ece.png" alt="SendinBlue">
38
+ </h1>
39
+ </td>
40
+ </tr>
41
+ </tbody>
42
+ </table>
43
+ <table width="570" border="0" cellpadding="0"
44
+ cellspacing="0">
45
+ <tbody>
46
+ <tr>
47
+ <td style="line-height:0; font-size:0;" height="20">&nbsp;</td>
48
+ </tr>
49
+ </tbody>
50
+ </table>
51
+ <table width="540" border="0" cellpadding="0"
52
+ cellspacing="0">
53
+ <tbody>
54
+ <tr>
55
+ <td align="left">
56
+ <div style="font-family:arial,sans-serif;
57
+ color:#2f8bee; font-size:18px; font-weight:bold;
58
+ margin:0 0 10px 0;">Cet e-mail a été envoyé via SendinBlue SMTP. <br />
59
+ Félicitations, la fonctionnalité SendinBlue SMTP est bien configurée.
60
+ </div>
61
+ </td>
62
+ </tr>
63
+ </tbody>
64
+ </table>
65
+ <table width="570" border="0" cellpadding="0"
66
+ cellspacing="0">
67
+ <tbody>
68
+ <tr>
69
+ <td style="line-height:0; font-size:0;" height="20">&nbsp;</td>
70
+ </tr>
71
+ <tr>
72
+ <td style="line-height:0; font-size:0;" height="20">&nbsp;</td>
73
+ </tr>
74
+ </tbody>
75
+ </table>
76
+ <table width="540" border="0" cellpadding="0"
77
+ cellspacing="0">
78
+ <tbody>
79
+ <tr>
80
+ <td align="right">
81
+ <div style="font-family:arial,sans-serif;
82
+ font-size:14px; color:#2f8bee; margin:0;
83
+ font-weight:bold; line-height:18px;"> L'&eacute;quipe
84
+ de SendinBlue</div>
85
+ </td>
86
+ </tr>
87
+ </tbody>
88
+ </table>
89
+ <table width="570" border="0" cellpadding="0"
90
+ cellspacing="0">
91
+ <tbody>
92
+ <tr>
93
+ <td style="line-height:0; font-size:0;" height="20">&nbsp;</td>
94
+ </tr>
95
+ </tbody>
96
+ </table>
97
+ <table width="570" border="0" cellpadding="0"
98
+ cellspacing="0">
99
+
100
+ </table>
101
+ <table width="570" border="0" cellpadding="0"
102
+ cellspacing="0">
103
+ <tbody>
104
+ <tr>
105
+ <td style="line-height:0; font-size:0;" height="10">&nbsp;</td>
106
+ </tr>
107
+ </tbody>
108
+ </table>
109
+ <table width="540" border="0" cellpadding="0"
110
+ cellspacing="0">
111
+ <tbody>
112
+ <tr>
113
+ <td style="line-height:0; font-size:0;" height="10">&nbsp;</td>
114
+ </tr>
115
+ <tr>
116
+ <td valign="top" width="200" align="left">
117
+ <div style="font-family:arial,sans-serif;
118
+ font-size:12px; margin:0; line-height:16px;
119
+ color:#7e7e7e;"> <strong style="color:#2f8bee;">SendinBlue</strong></div>
120
+ <div style="font-family:arial,sans-serif;
121
+ font-size:12px; margin:0; line-height:16px;
122
+ color:#7e7e7e;"> 118, rue de Tocqueville</div>
123
+ <div style="font-family:arial,sans-serif;
124
+ font-size:12px; margin:0; line-height:16px;
125
+ color:#7e7e7e;"> 75017 Paris - France</div>
126
+ <div style="font-family:arial,sans-serif;
127
+ font-size:12px; margin:0; line-height:16px;
128
+ color:#7e7e7e;"> T&eacute;l : 0899 25 30 61</div>
129
+ <div style="font-family:arial,sans-serif;
130
+ font-size:12px; margin:0; line-height:16px;
131
+ color:#7e7e7e;"> <a moz-do-not-send="true"
132
+ href="http://www.sendinblue.com"
133
+ style="color:#2f8bee;" target="_blank">www.sendinblue.com</a></div>
134
+ </td>
135
+ <td align="right" valign="top">
136
+ <div style="font-family:arial,sans-serif; font-size:12px; margin:0; line-height:20px; color:#7e7e7e;">
137
+ <a href="http://www.facebook.com/SendinBlue" style="color:#2f8bee; text-decoration:none;" target="_blank"> <img alt="Facebook" src="https://my.sendinblue.com/public/upload/14406/images/523693143fe88.gif" style="border:none;"> </a> <a href="https://twitter.com/SendinBlue" style="color:#2f8bee; text-decoration:none;" target="_blank"> <img alt="Twitter" src="https://my.sendinblue.com/public/upload/14406/images/5236931746c01.gif" style="border:none;"> </a> <a href="http://www.linkedin.com/company/mailin" style="color:#2f8bee; text-decoration:none;" target="_blank"> <img alt="Linkedin" src="https://my.sendinblue.com/public/upload/14406/images/5236931ad253b.gif" style="border:none;"> </a> <a href="http://sendinblue.tumblr.com/" style="color:#2f8bee; text-decoration:none;" target="_blank">Blog</a></div>
138
+ <div style="font-family:arial,sans-serif; font-size:10px; margin:0; line-height:14px; color:#7e7e7e;"> &copy; 2013-2014 SendinBlue, tous droits
139
+ r&eacute;serv&eacute;s.
140
+ </div>
141
+ <div style="font-family:arial,sans-serif; font-size:10px; margin:0; line-height:14px; color:#7e7e7e;"> Ceci est un message automatique
142
+ g&eacute;n&eacute;r&eacute; par SendinBlue.
143
+ </div>
144
+ <div style="font-family:arial,sans-serif; font-size:10px; margin:0; line-height:14px; color:#7e7e7e;"> Ne pas y r&eacute;pondre, vous ne
145
+ recevriez aucune r&eacute;ponse.
146
+ </div>
147
+ <div style="font-family:arial,sans-serif; font-size:10px; margin:0; line-height:14px; color:#7e7e7e;"><a href="https://www.sendinblue.com/legal/antispampolicy" style="color:#7e7e7e;" target="_blank">Politique
148
+ anti-spam &amp; emailing</a> | <a href="https://www.sendinblue.com/legal/generalterms" style="color:#7e7e7e;" target="_blank">Conditions
149
+ g&eacute;n&eacute;rales de ventes</a></div>
150
+ </td>
151
+ </tr>
152
+ </tbody>
153
+ </table>
154
+ <table width="570" border="0" cellpadding="0"
155
+ cellspacing="0">
156
+ <tbody>
157
+ <tr>
158
+ <td style="line-height:0; font-size:0;" height="20">&nbsp;</td>
159
+ </tr>
160
+ <tr>
161
+ <td style="line-height:0; font-size:0;" height="20">&nbsp;</td>
162
+ </tr>
163
+ </tbody>
164
+ </table>
165
+ </td>
166
+ </tr>
167
+ </tbody>
168
+ </table>
169
+ <br>
170
+ </div>
171
+
172
+ </body>
173
+
174
+ </html>
package.xml ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <package>
3
+ <name>Sendinblue</name>
4
+ <version>1.1.0</version>
5
+ <stability>stable</stability>
6
+ <license uri="http://opensource.org/licenses/osl-3.0.php">OSL V1.0</license>
7
+ <channel>community</channel>
8
+ <extends/>
9
+ <summary>Synchronize your Magento contacts with SendinBlue platform, easily send your marketing and transactional emails and SMS.</summary>
10
+ <description>With the SendinBlue plugin, you can find everything you need to easily and efficiently send your email and SMS campaigns to your prospects and customers.
11
+ Synchronize your subscribers with SendinBlue (subscribed and unsubscribed contacts)
12
+ Easily create good looking emailings
13
+ Schedule your campaigns
14
+ Track your results and optimize
15
+ Monitor your transactional emails (purchase confirmation, password reset, etc) with a better deliverability and real-time analytics
16
+ Why should you use SendinBlue
17
+ Optimized deliverability
18
+ Unbeatable pricing–best value in the industry
19
+ Technical support, by phone or by email</description>
20
+ <notes>Synchronize your Magento contacts with SendinBlue platform, send your marketing and transactional emails and SMS</notes>
21
+ <authors><author><name>SendinBlue</name><user>Sendinblue_Team</user><email>contact@sendinblue.com</email></author></authors>
22
+ <date>2014-02-28</date>
23
+ <time>10:05:32</time>
24
+ <contents><target name="magelocal"><dir name="Sendinblue"><dir name="Sendinblue"><dir name="Block"><file name="Sendinblue.php" hash="4b5adae031b714e188d576e306bfd5a1"/></dir><dir name="Helper"><file name="Data.php" hash="0532b48f611c1cc623589d5792e0dbf2"/></dir><dir name="Model"><dir name="Email"><file name="Template.php" hash="6d2d6eac00b7bd6da3ff53d2abe40dd4"/></dir><file name="Email.php" hash="fe07aa2dba951ee117bda2cefebfb875"/><dir name="Mysql4"><dir name="Sendinblue"><file name="Collection.php" hash="d6aff03eda9a6b2ee1c42b8dd50df402"/></dir><file name="Sendinblue.php" hash="c000c1f6a277f7c9a91ad628b02eb001"/></dir><file name="Observer.php" hash="250cc069aa5194652f6503e2cc0f8194"/><file name="Sendinblue.php" hash="963c473c2f3ca66f23d00de0c4c9292f"/><file name="Status.php" hash="444fe4d099bd23a9d87cdf7e2b2e6cbb"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="MyformController.php" hash="67dd963b1f003d2b2f25c8b4643d4715"/><file name="NotifyController.php" hash="e3b43db59f8c5b7c8cd54a58a7bc2d1b"/><file name="SyncController.php" hash="352fd0d804701d0228bad7e7b92afb58"/></dir><file name="AjaxController.php" hash="b4914ddac9d4e836ecf53869055a6a82"/><file name="IndexController.php" hash="2cf5287ba31d6960eb28c2cbc03a60ed"/></dir><dir name="etc"><file name="adminhtml.xml" hash="640ba5382a16c749fc56a2a8283682ee"/><file name="config.xml" hash="ba48680b7267a4b2d27f4645792b2393"/></dir><dir name="sql"><dir name="sendinblue_setup"><file name="install-0.1.0.php" hash="58bb365dcb29115c66f2fa3f17dcb697"/><file name="mysql4-upgrade-0.1.0-0.2.0.php" hash="b50e876441a247cd5feb2614ff649fd3"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="sendinblue.xml" hash="e23253764fbbf0e3a2f1cb5ff65eb318"/></dir><dir name="template"><dir name="sendinblue"><file name="myform.phtml" hash="2a4748e2e456d2b95d9828bf2da90bd8"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="sendinblue.xml" hash="61346d8b2b321b10c09a77fef39ec112"/></dir><dir name="template"><dir name="sendinblue"><dir name="account"><file name="edit.phtml" hash="c2b17e90e59e1d13791feded28982330"/></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Sendinblue_Sendinblue.xml" hash="1a245999d412c36ea9666b56bfc63e2d"/></dir></target><target name="magelocale"><dir name="fr_FR"><file name="Sendinblue.csv" hash="72507895f18a8c4a80611065790aba56"/></dir></target><target name="mage"><dir name="app"><dir name="locale"><dir name="fr_FR"><dir name="template"><dir name="email"><file name="sendin_notification.html" hash="557ddb7212800b4a99937b2d8956270c"/><file name="sendinsmtp_conf.html" hash="b1c790c78605b2beb4cd38152cd8f0ca"/>
25
+ </dir></dir></dir><dir name="en_US"><dir name="template"><dir name="email"><file name="sendin_notification.html" hash="de646d23657f68387d32683d14ea215a"/><file name="sendinsmtp_conf.html" hash="a35979191ec11cd5cbebc0efece1c472"/></dir></dir></dir></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="sendinblue"><dir name="css"><file name="jquery-ui.css" hash="3f3d39116de928eb9c3cc33004efae77"/><file name="jquery.multiselect.css" hash="b2ecda55b895b485e49baa5759cc61fe"/><file name="styles.css" hash="61f4da300d2b59cc4d22af19d6abc742"/></dir><dir name="images"><file name="close.png" hash="223ea7c82841be9da96aec80bd68b7f5"/><file name="disabled.gif" hash="21ff0e6ba24381e63789116139180cf0"/><file name="enabled.gif" hash="0db2c4f24c0f0c3f7958a05181af897a"/><file name="help.gif" hash="19002f53dd724465717c27f0399c0a90"/><file name="index.php" hash="507d846db3efc2563672c8f60ac080f4"/><file name="loader.gif" hash="394bafc3cc4dfb3a0ee48c1f54669539"/><file name="loading_anim.gif" hash="b494fceca79586281a29c9462b09c85a"/><file name="logo.gif" hash="b13ce89934c4aa2aeb76d75896efe40f"/><file name="logo.png" hash="76ecf5757c096639a3b27ed5fc470d48"/><file name="sendinblue.png" hash="4bb823a9290b79546cc99d57de304db9"/><file name="ui-icons_ef8c08_256x240.png" hash="47fc08e06aba0b7ac0a6d3b9f92894cb"/><file name="ui-icons_ef8c08_256x240.png.png" hash="47fc08e06aba0b7ac0a6d3b9f92894cb"/></dir><dir name="js"><file name="index.php" hash="36aa6e5d248b48fd910a4dfa1987ca56"/><file name="jquery-1.9.1.min.js" hash="397754ba49e9e0cf4e7c190da78dda05"/><file name="jquery-ui.min.js" hash="3e6acb1e6426ef90d2e786a006a4ea28"/><file name="jquery.multiselect.js" hash="9851bb7a2509099e28ee789fc864570e"/><file name="jquery.multiselect.min.js" hash="efb34f759712b9da1172c3a2efe8ef6b"/><file name="sendinblue.js" hash="e5d8ac61766af444255eb9226a0cb344"/><file name="sendinblue.min.js" hash="60a1241bec9edc538c360ac459890927"/></dir></dir></dir></dir></dir></target></contents>
26
+ <compatible/>
27
+ <dependencies><required><php><min>5.0.0</min><max>6.0.0</max></php></required></dependencies>
28
+ </package>
skin/adminhtml/default/default/sendinblue/css/jquery-ui.css ADDED
@@ -0,0 +1,1175 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*! jQuery UI - v1.10.2 - 2013-03-14
2
+ * http://jqueryui.com
3
+ * Includes: jquery.ui.core.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css
4
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=gloss_wave&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=highlight_soft&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=glass&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=glass&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=diagonals_thick&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=diagonals_thick&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=flat&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px
5
+ * Copyright 2013 jQuery Foundation and other contributors Licensed MIT */
6
+
7
+ /* Layout helpers
8
+ ----------------------------------*/
9
+ .ui-helper-hidden {
10
+ display: none;
11
+ }
12
+ .ui-helper-hidden-accessible {
13
+ border: 0;
14
+ clip: rect(0 0 0 0);
15
+ height: 1px;
16
+ margin: -1px;
17
+ overflow: hidden;
18
+ padding: 0;
19
+ position: absolute;
20
+ width: 1px;
21
+ }
22
+ .ui-helper-reset {
23
+ margin: 0;
24
+ padding: 0;
25
+ border: 0;
26
+ outline: 0;
27
+ line-height: 1.3;
28
+ text-decoration: none;
29
+ font-size: 100%;
30
+ list-style: none;
31
+ }
32
+ .ui-helper-clearfix:before,
33
+ .ui-helper-clearfix:after {
34
+ content: "";
35
+ display: table;
36
+ border-collapse: collapse;
37
+ }
38
+ .ui-helper-clearfix:after {
39
+ clear: both;
40
+ }
41
+ .ui-helper-clearfix {
42
+ min-height: 0; /* support: IE7 */
43
+ }
44
+ .ui-helper-zfix {
45
+ width: 100%;
46
+ height: 100%;
47
+ top: 0;
48
+ left: 0;
49
+ position: absolute;
50
+ opacity: 0;
51
+ filter:Alpha(Opacity=0);
52
+ }
53
+
54
+ .ui-front {
55
+ z-index: 100;
56
+ }
57
+
58
+
59
+ /* Interaction Cues
60
+ ----------------------------------*/
61
+ .ui-state-disabled {
62
+ cursor: default !important;
63
+ }
64
+
65
+
66
+ /* Icons
67
+ ----------------------------------*/
68
+
69
+ /* states and images */
70
+ .ui-icon {
71
+ display: block;
72
+ text-indent: -99999px;
73
+ overflow: hidden;
74
+ background-repeat: no-repeat;
75
+ }
76
+
77
+
78
+ /* Misc visuals
79
+ ----------------------------------*/
80
+
81
+ /* Overlays */
82
+ .ui-widget-overlay {
83
+ position: fixed;
84
+ top: 0;
85
+ left: 0;
86
+ width: 100%;
87
+ height: 100%;
88
+ }
89
+ .ui-accordion .ui-accordion-header {
90
+ display: block;
91
+ cursor: pointer;
92
+ position: relative;
93
+ margin-top: 2px;
94
+ padding: .5em .5em .5em .7em;
95
+ min-height: 0; /* support: IE7 */
96
+ }
97
+ .ui-accordion .ui-accordion-icons {
98
+ padding-left: 2.2em;
99
+ }
100
+ .ui-accordion .ui-accordion-noicons {
101
+ padding-left: .7em;
102
+ }
103
+ .ui-accordion .ui-accordion-icons .ui-accordion-icons {
104
+ padding-left: 2.2em;
105
+ }
106
+ .ui-accordion .ui-accordion-header .ui-accordion-header-icon {
107
+ position: absolute;
108
+ left: .5em;
109
+ top: 50%;
110
+ margin-top: -8px;
111
+ }
112
+ .ui-accordion .ui-accordion-content {
113
+ padding: 1em 2.2em;
114
+ border-top: 0;
115
+ overflow: auto;
116
+ }
117
+ .ui-autocomplete {
118
+ position: absolute;
119
+ top: 0;
120
+ left: 0;
121
+ cursor: default;
122
+ }
123
+ .ui-button {
124
+ display: inline-block;
125
+ position: relative;
126
+ padding: 0;
127
+ line-height: normal;
128
+ margin-right: .1em;
129
+ cursor: pointer;
130
+ vertical-align: middle;
131
+ text-align: center;
132
+ overflow: visible; /* removes extra width in IE */
133
+ }
134
+ .ui-button,
135
+ .ui-button:link,
136
+ .ui-button:visited,
137
+ .ui-button:hover,
138
+ .ui-button:active {
139
+ text-decoration: none;
140
+ }
141
+ /* to make room for the icon, a width needs to be set here */
142
+ .ui-button-icon-only {
143
+ width: 2.2em;
144
+ }
145
+ /* button elements seem to need a little more width */
146
+ button.ui-button-icon-only {
147
+ width: 2.4em;
148
+ }
149
+ .ui-button-icons-only {
150
+ width: 3.4em;
151
+ }
152
+ button.ui-button-icons-only {
153
+ width: 3.7em;
154
+ }
155
+
156
+ /* button text element */
157
+ .ui-button .ui-button-text {
158
+ display: block;
159
+ line-height: normal;
160
+ }
161
+ .ui-button-text-only .ui-button-text {
162
+ padding: .4em 1em;
163
+ }
164
+ .ui-button-icon-only .ui-button-text,
165
+ .ui-button-icons-only .ui-button-text {
166
+ padding: .4em;
167
+ text-indent: -9999999px;
168
+ }
169
+ .ui-button-text-icon-primary .ui-button-text,
170
+ .ui-button-text-icons .ui-button-text {
171
+ padding: .4em 1em .4em 2.1em;
172
+ }
173
+ .ui-button-text-icon-secondary .ui-button-text,
174
+ .ui-button-text-icons .ui-button-text {
175
+ padding: .4em 2.1em .4em 1em;
176
+ }
177
+ .ui-button-text-icons .ui-button-text {
178
+ padding-left: 2.1em;
179
+ padding-right: 2.1em;
180
+ }
181
+ /* no icon support for input elements, provide padding by default */
182
+ input.ui-button {
183
+ padding: .4em 1em;
184
+ }
185
+
186
+ /* button icon element(s) */
187
+ .ui-button-icon-only .ui-icon,
188
+ .ui-button-text-icon-primary .ui-icon,
189
+ .ui-button-text-icon-secondary .ui-icon,
190
+ .ui-button-text-icons .ui-icon,
191
+ .ui-button-icons-only .ui-icon {
192
+ position: absolute;
193
+ top: 50%;
194
+ margin-top: -8px;
195
+ }
196
+ .ui-button-icon-only .ui-icon {
197
+ left: 50%;
198
+ margin-left: -8px;
199
+ }
200
+ .ui-button-text-icon-primary .ui-button-icon-primary,
201
+ .ui-button-text-icons .ui-button-icon-primary,
202
+ .ui-button-icons-only .ui-button-icon-primary {
203
+ left: .5em;
204
+ }
205
+ .ui-button-text-icon-secondary .ui-button-icon-secondary,
206
+ .ui-button-text-icons .ui-button-icon-secondary,
207
+ .ui-button-icons-only .ui-button-icon-secondary {
208
+ right: .5em;
209
+ }
210
+
211
+ /* button sets */
212
+ .ui-buttonset {
213
+ margin-right: 7px;
214
+ }
215
+ .ui-buttonset .ui-button {
216
+ margin-left: 0;
217
+ margin-right: -.3em;
218
+ }
219
+
220
+ /* workarounds */
221
+ /* reset extra padding in Firefox, see h5bp.com/l */
222
+ input.ui-button::-moz-focus-inner,
223
+ button.ui-button::-moz-focus-inner {
224
+ border: 0;
225
+ padding: 0;
226
+ }
227
+ .ui-datepicker {
228
+ width: 17em;
229
+ padding: .2em .2em 0;
230
+ display: none;
231
+ }
232
+ .ui-datepicker .ui-datepicker-header {
233
+ position: relative;
234
+ padding: .2em 0;
235
+ }
236
+ .ui-datepicker .ui-datepicker-prev,
237
+ .ui-datepicker .ui-datepicker-next {
238
+ position: absolute;
239
+ top: 2px;
240
+ width: 1.8em;
241
+ height: 1.8em;
242
+ }
243
+ .ui-datepicker .ui-datepicker-prev-hover,
244
+ .ui-datepicker .ui-datepicker-next-hover {
245
+ top: 1px;
246
+ }
247
+ .ui-datepicker .ui-datepicker-prev {
248
+ left: 2px;
249
+ }
250
+ .ui-datepicker .ui-datepicker-next {
251
+ right: 2px;
252
+ }
253
+ .ui-datepicker .ui-datepicker-prev-hover {
254
+ left: 1px;
255
+ }
256
+ .ui-datepicker .ui-datepicker-next-hover {
257
+ right: 1px;
258
+ }
259
+ .ui-datepicker .ui-datepicker-prev span,
260
+ .ui-datepicker .ui-datepicker-next span {
261
+ display: block;
262
+ position: absolute;
263
+ left: 50%;
264
+ margin-left: -8px;
265
+ top: 50%;
266
+ margin-top: -8px;
267
+ }
268
+ .ui-datepicker .ui-datepicker-title {
269
+ margin: 0 2.3em;
270
+ line-height: 1.8em;
271
+ text-align: center;
272
+ }
273
+ .ui-datepicker .ui-datepicker-title select {
274
+ font-size: 1em;
275
+ margin: 1px 0;
276
+ }
277
+ .ui-datepicker select.ui-datepicker-month-year {
278
+ width: 100%;
279
+ }
280
+ .ui-datepicker select.ui-datepicker-month,
281
+ .ui-datepicker select.ui-datepicker-year {
282
+ width: 49%;
283
+ }
284
+ .ui-datepicker table {
285
+ width: 100%;
286
+ font-size: .9em;
287
+ border-collapse: collapse;
288
+ margin: 0 0 .4em;
289
+ }
290
+ .ui-datepicker th {
291
+ padding: .7em .3em;
292
+ text-align: center;
293
+ font-weight: bold;
294
+ border: 0;
295
+ }
296
+ .ui-datepicker td {
297
+ border: 0;
298
+ padding: 1px;
299
+ }
300
+ .ui-datepicker td span,
301
+ .ui-datepicker td a {
302
+ display: block;
303
+ padding: .2em;
304
+ text-align: right;
305
+ text-decoration: none;
306
+ }
307
+ .ui-datepicker .ui-datepicker-buttonpane {
308
+ background-image: none;
309
+ margin: .7em 0 0 0;
310
+ padding: 0 .2em;
311
+ border-left: 0;
312
+ border-right: 0;
313
+ border-bottom: 0;
314
+ }
315
+ .ui-datepicker .ui-datepicker-buttonpane button {
316
+ float: right;
317
+ margin: .5em .2em .4em;
318
+ cursor: pointer;
319
+ padding: .2em .6em .3em .6em;
320
+ width: auto;
321
+ overflow: visible;
322
+ }
323
+ .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
324
+ float: left;
325
+ }
326
+
327
+ /* with multiple calendars */
328
+ .ui-datepicker.ui-datepicker-multi {
329
+ width: auto;
330
+ }
331
+ .ui-datepicker-multi .ui-datepicker-group {
332
+ float: left;
333
+ }
334
+ .ui-datepicker-multi .ui-datepicker-group table {
335
+ width: 95%;
336
+ margin: 0 auto .4em;
337
+ }
338
+ .ui-datepicker-multi-2 .ui-datepicker-group {
339
+ width: 50%;
340
+ }
341
+ .ui-datepicker-multi-3 .ui-datepicker-group {
342
+ width: 33.3%;
343
+ }
344
+ .ui-datepicker-multi-4 .ui-datepicker-group {
345
+ width: 25%;
346
+ }
347
+ .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
348
+ .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
349
+ border-left-width: 0;
350
+ }
351
+ .ui-datepicker-multi .ui-datepicker-buttonpane {
352
+ clear: left;
353
+ }
354
+ .ui-datepicker-row-break {
355
+ clear: both;
356
+ width: 100%;
357
+ font-size: 0;
358
+ }
359
+
360
+ /* RTL support */
361
+ .ui-datepicker-rtl {
362
+ direction: rtl;
363
+ }
364
+ .ui-datepicker-rtl .ui-datepicker-prev {
365
+ right: 2px;
366
+ left: auto;
367
+ }
368
+ .ui-datepicker-rtl .ui-datepicker-next {
369
+ left: 2px;
370
+ right: auto;
371
+ }
372
+ .ui-datepicker-rtl .ui-datepicker-prev:hover {
373
+ right: 1px;
374
+ left: auto;
375
+ }
376
+ .ui-datepicker-rtl .ui-datepicker-next:hover {
377
+ left: 1px;
378
+ right: auto;
379
+ }
380
+ .ui-datepicker-rtl .ui-datepicker-buttonpane {
381
+ clear: right;
382
+ }
383
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button {
384
+ float: left;
385
+ }
386
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
387
+ .ui-datepicker-rtl .ui-datepicker-group {
388
+ float: right;
389
+ }
390
+ .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
391
+ .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
392
+ border-right-width: 0;
393
+ border-left-width: 1px;
394
+ }
395
+ .ui-dialog {
396
+ position: absolute;
397
+ top: 0;
398
+ left: 0;
399
+ padding: .2em;
400
+ outline: 0;
401
+ }
402
+ .ui-dialog .ui-dialog-titlebar {
403
+ padding: .4em 1em;
404
+ position: relative;
405
+ }
406
+ .ui-dialog .ui-dialog-title {
407
+ float: left;
408
+ margin: .1em 0;
409
+ white-space: nowrap;
410
+ width: 90%;
411
+ overflow: hidden;
412
+ text-overflow: ellipsis;
413
+ }
414
+ .ui-dialog .ui-dialog-titlebar-close {
415
+ position: absolute;
416
+ right: .3em;
417
+ top: 50%;
418
+ width: 21px;
419
+ margin: -10px 0 0 0;
420
+ padding: 1px;
421
+ height: 20px;
422
+ }
423
+ .ui-dialog .ui-dialog-content {
424
+ position: relative;
425
+ border: 0;
426
+ padding: .5em 1em;
427
+ background: none;
428
+ overflow: auto;
429
+ }
430
+ .ui-dialog .ui-dialog-buttonpane {
431
+ text-align: left;
432
+ border-width: 1px 0 0 0;
433
+ background-image: none;
434
+ margin-top: .5em;
435
+ padding: .3em 1em .5em .4em;
436
+ }
437
+ .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
438
+ float: right;
439
+ }
440
+ .ui-dialog .ui-dialog-buttonpane button {
441
+ margin: .5em .4em .5em 0;
442
+ cursor: pointer;
443
+ }
444
+ .ui-dialog .ui-resizable-se {
445
+ width: 12px;
446
+ height: 12px;
447
+ right: -5px;
448
+ bottom: -5px;
449
+ background-position: 16px 16px;
450
+ }
451
+ .ui-draggable .ui-dialog-titlebar {
452
+ cursor: move;
453
+ }
454
+ .ui-menu {
455
+ list-style: none;
456
+ padding: 2px;
457
+ margin: 0;
458
+ display: block;
459
+ outline: none;
460
+ }
461
+ .ui-menu .ui-menu {
462
+ margin-top: -3px;
463
+ position: absolute;
464
+ }
465
+ .ui-menu .ui-menu-item {
466
+ margin: 0;
467
+ padding: 0;
468
+ width: 100%;
469
+ }
470
+ .ui-menu .ui-menu-divider {
471
+ margin: 5px -2px 5px -2px;
472
+ height: 0;
473
+ font-size: 0;
474
+ line-height: 0;
475
+ border-width: 1px 0 0 0;
476
+ }
477
+ .ui-menu .ui-menu-item a {
478
+ text-decoration: none;
479
+ display: block;
480
+ padding: 2px .4em;
481
+ line-height: 1.5;
482
+ min-height: 0; /* support: IE7 */
483
+ font-weight: normal;
484
+ }
485
+ .ui-menu .ui-menu-item a.ui-state-focus,
486
+ .ui-menu .ui-menu-item a.ui-state-active {
487
+ font-weight: normal;
488
+ margin: -1px;
489
+ }
490
+
491
+ .ui-menu .ui-state-disabled {
492
+ font-weight: normal;
493
+ margin: .4em 0 .2em;
494
+ line-height: 1.5;
495
+ }
496
+ .ui-menu .ui-state-disabled a {
497
+ cursor: default;
498
+ }
499
+
500
+ /* icon support */
501
+ .ui-menu-icons {
502
+ position: relative;
503
+ }
504
+ .ui-menu-icons .ui-menu-item a {
505
+ position: relative;
506
+ padding-left: 2em;
507
+ }
508
+
509
+ /* left-aligned */
510
+ .ui-menu .ui-icon {
511
+ position: absolute;
512
+ top: .2em;
513
+ left: .2em;
514
+ }
515
+
516
+ /* right-aligned */
517
+ .ui-menu .ui-menu-icon {
518
+ position: static;
519
+ float: right;
520
+ }
521
+ .ui-progressbar {
522
+ height: 2em;
523
+ text-align: left;
524
+ overflow: hidden;
525
+ }
526
+ .ui-progressbar .ui-progressbar-value {
527
+ margin: -1px;
528
+ height: 100%;
529
+ }
530
+ .ui-progressbar .ui-progressbar-overlay {
531
+ background: url("images/animated-overlay.gif");
532
+ height: 100%;
533
+ filter: alpha(opacity=25);
534
+ opacity: 0.25;
535
+ }
536
+ .ui-progressbar-indeterminate .ui-progressbar-value {
537
+ background-image: none;
538
+ }
539
+ .ui-resizable {
540
+ position: relative;
541
+ }
542
+ .ui-resizable-handle {
543
+ position: absolute;
544
+ font-size: 0.1px;
545
+ display: block;
546
+ }
547
+ .ui-resizable-disabled .ui-resizable-handle,
548
+ .ui-resizable-autohide .ui-resizable-handle {
549
+ display: none;
550
+ }
551
+ .ui-resizable-n {
552
+ cursor: n-resize;
553
+ height: 7px;
554
+ width: 100%;
555
+ top: -5px;
556
+ left: 0;
557
+ }
558
+ .ui-resizable-s {
559
+ cursor: s-resize;
560
+ height: 7px;
561
+ width: 100%;
562
+ bottom: -5px;
563
+ left: 0;
564
+ }
565
+ .ui-resizable-e {
566
+ cursor: e-resize;
567
+ width: 7px;
568
+ right: -5px;
569
+ top: 0;
570
+ height: 100%;
571
+ }
572
+ .ui-resizable-w {
573
+ cursor: w-resize;
574
+ width: 7px;
575
+ left: -5px;
576
+ top: 0;
577
+ height: 100%;
578
+ }
579
+ .ui-resizable-se {
580
+ cursor: se-resize;
581
+ width: 12px;
582
+ height: 12px;
583
+ right: 1px;
584
+ bottom: 1px;
585
+ }
586
+ .ui-resizable-sw {
587
+ cursor: sw-resize;
588
+ width: 9px;
589
+ height: 9px;
590
+ left: -5px;
591
+ bottom: -5px;
592
+ }
593
+ .ui-resizable-nw {
594
+ cursor: nw-resize;
595
+ width: 9px;
596
+ height: 9px;
597
+ left: -5px;
598
+ top: -5px;
599
+ }
600
+ .ui-resizable-ne {
601
+ cursor: ne-resize;
602
+ width: 9px;
603
+ height: 9px;
604
+ right: -5px;
605
+ top: -5px;
606
+ }
607
+ .ui-selectable-helper {
608
+ position: absolute;
609
+ z-index: 100;
610
+ border: 1px dotted black;
611
+ }
612
+ .ui-slider {
613
+ position: relative;
614
+ text-align: left;
615
+ }
616
+ .ui-slider .ui-slider-handle {
617
+ position: absolute;
618
+ z-index: 2;
619
+ width: 1.2em;
620
+ height: 1.2em;
621
+ cursor: default;
622
+ }
623
+ .ui-slider .ui-slider-range {
624
+ position: absolute;
625
+ z-index: 1;
626
+ font-size: .7em;
627
+ display: block;
628
+ border: 0;
629
+ background-position: 0 0;
630
+ }
631
+
632
+ /* For IE8 - See #6727 */
633
+ .ui-slider.ui-state-disabled .ui-slider-handle,
634
+ .ui-slider.ui-state-disabled .ui-slider-range {
635
+ filter: inherit;
636
+ }
637
+
638
+ .ui-slider-horizontal {
639
+ height: .8em;
640
+ }
641
+ .ui-slider-horizontal .ui-slider-handle {
642
+ top: -.3em;
643
+ margin-left: -.6em;
644
+ }
645
+ .ui-slider-horizontal .ui-slider-range {
646
+ top: 0;
647
+ height: 100%;
648
+ }
649
+ .ui-slider-horizontal .ui-slider-range-min {
650
+ left: 0;
651
+ }
652
+ .ui-slider-horizontal .ui-slider-range-max {
653
+ right: 0;
654
+ }
655
+
656
+ .ui-slider-vertical {
657
+ width: .8em;
658
+ height: 100px;
659
+ }
660
+ .ui-slider-vertical .ui-slider-handle {
661
+ left: -.3em;
662
+ margin-left: 0;
663
+ margin-bottom: -.6em;
664
+ }
665
+ .ui-slider-vertical .ui-slider-range {
666
+ left: 0;
667
+ width: 100%;
668
+ }
669
+ .ui-slider-vertical .ui-slider-range-min {
670
+ bottom: 0;
671
+ }
672
+ .ui-slider-vertical .ui-slider-range-max {
673
+ top: 0;
674
+ }
675
+ .ui-spinner {
676
+ position: relative;
677
+ display: inline-block;
678
+ overflow: hidden;
679
+ padding: 0;
680
+ vertical-align: middle;
681
+ }
682
+ .ui-spinner-input {
683
+ border: none;
684
+ background: none;
685
+ color: inherit;
686
+ padding: 0;
687
+ margin: .2em 0;
688
+ vertical-align: middle;
689
+ margin-left: .4em;
690
+ margin-right: 22px;
691
+ }
692
+ .ui-spinner-button {
693
+ width: 16px;
694
+ height: 50%;
695
+ font-size: .5em;
696
+ padding: 0;
697
+ margin: 0;
698
+ text-align: center;
699
+ position: absolute;
700
+ cursor: default;
701
+ display: block;
702
+ overflow: hidden;
703
+ right: 0;
704
+ }
705
+ /* more specificity required here to overide default borders */
706
+ .ui-spinner a.ui-spinner-button {
707
+ border-top: none;
708
+ border-bottom: none;
709
+ border-right: none;
710
+ }
711
+ /* vertical centre icon */
712
+ .ui-spinner .ui-icon {
713
+ position: absolute;
714
+ margin-top: -8px;
715
+ top: 50%;
716
+ left: 0;
717
+ }
718
+ .ui-spinner-up {
719
+ top: 0;
720
+ }
721
+ .ui-spinner-down {
722
+ bottom: 0;
723
+ }
724
+
725
+ /* TR overrides */
726
+ .ui-spinner .ui-icon-triangle-1-s {
727
+ /* need to fix icons sprite */
728
+ background-position: -65px -16px;
729
+ }
730
+ .ui-tabs {
731
+ position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
732
+ padding: .2em;
733
+ }
734
+ .ui-tabs .ui-tabs-nav {
735
+ margin: 0;
736
+ padding: .2em .2em 0;
737
+ }
738
+ .ui-tabs .ui-tabs-nav li {
739
+ list-style: none;
740
+ float: left;
741
+ position: relative;
742
+ top: 0;
743
+ margin: 1px .2em 0 0;
744
+ border-bottom-width: 0;
745
+ padding: 0;
746
+ white-space: nowrap;
747
+ }
748
+ .ui-tabs .ui-tabs-nav li a {
749
+ float: left;
750
+ padding: .5em 1em;
751
+ text-decoration: none;
752
+ }
753
+ .ui-tabs .ui-tabs-nav li.ui-tabs-active {
754
+ margin-bottom: -1px;
755
+ padding-bottom: 1px;
756
+ }
757
+ .ui-tabs .ui-tabs-nav li.ui-tabs-active a,
758
+ .ui-tabs .ui-tabs-nav li.ui-state-disabled a,
759
+ .ui-tabs .ui-tabs-nav li.ui-tabs-loading a {
760
+ cursor: text;
761
+ }
762
+ .ui-tabs .ui-tabs-nav li a, /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
763
+ .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a {
764
+ cursor: pointer;
765
+ }
766
+ .ui-tabs .ui-tabs-panel {
767
+ display: block;
768
+ border-width: 0;
769
+ padding: 1em 1.4em;
770
+ background: none;
771
+ }
772
+ .ui-tooltip {
773
+ padding: 8px;
774
+ position: absolute;
775
+ z-index: 9999;
776
+ max-width: 300px;
777
+ -webkit-box-shadow: 0 0 5px #aaa;
778
+ box-shadow: 0 0 5px #aaa;
779
+ }
780
+ body .ui-tooltip {
781
+ border-width: 2px;
782
+ }
783
+
784
+ /* Component containers
785
+ ----------------------------------*/
786
+ .ui-widget {
787
+ font-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;
788
+ font-size: 1.1em;
789
+ }
790
+ .ui-widget .ui-widget {
791
+ font-size: 1em;
792
+ }
793
+ .ui-widget input,
794
+ .ui-widget select,
795
+ .ui-widget textarea,
796
+ .ui-widget button {
797
+ font-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;
798
+ font-size: 1em;
799
+ }
800
+ .ui-widget-content {
801
+ border: 1px solid #dddddd;
802
+ background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x;
803
+ color: #333333;
804
+ }
805
+ .ui-widget-content a {
806
+ color: #333333;
807
+ }
808
+ .ui-widget-header {
809
+ border: 1px solid #e78f08;
810
+ background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x;
811
+ color: #ffffff;
812
+ font-weight: bold;
813
+ }
814
+ .ui-widget-header a {
815
+ color: #ffffff;
816
+ }
817
+
818
+ /* Interaction states
819
+ ----------------------------------*/
820
+ .ui-state-default,
821
+ .ui-widget-content .ui-state-default,
822
+ .ui-widget-header .ui-state-default {
823
+ border: 1px solid #cccccc;
824
+ background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x;
825
+ font-weight: bold;
826
+ color: #1c94c4;
827
+ }
828
+ .ui-state-default a,
829
+ .ui-state-default a:link,
830
+ .ui-state-default a:visited {
831
+ color: #1c94c4;
832
+ text-decoration: none;
833
+ }
834
+ .ui-state-hover,
835
+ .ui-widget-content .ui-state-hover,
836
+ .ui-widget-header .ui-state-hover,
837
+ .ui-state-focus,
838
+ .ui-widget-content .ui-state-focus,
839
+ .ui-widget-header .ui-state-focus {
840
+ border: 1px solid #fbcb09;
841
+ background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x;
842
+ font-weight: bold;
843
+ color: #c77405;
844
+ }
845
+ .ui-state-hover a,
846
+ .ui-state-hover a:hover,
847
+ .ui-state-hover a:link,
848
+ .ui-state-hover a:visited {
849
+ color: #c77405;
850
+ text-decoration: none;
851
+ }
852
+ .ui-state-active,
853
+ .ui-widget-content .ui-state-active,
854
+ .ui-widget-header .ui-state-active {
855
+ border: 1px solid #fbd850;
856
+ background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;
857
+ font-weight: bold;
858
+ color: #eb8f00;
859
+ }
860
+ .ui-state-active a,
861
+ .ui-state-active a:link,
862
+ .ui-state-active a:visited {
863
+ color: #eb8f00;
864
+ text-decoration: none;
865
+ }
866
+
867
+ /* Interaction Cues
868
+ ----------------------------------*/
869
+ .ui-state-highlight,
870
+ .ui-widget-content .ui-state-highlight,
871
+ .ui-widget-header .ui-state-highlight {
872
+ border: 1px solid #fed22f;
873
+ background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x;
874
+ color: #363636;
875
+ }
876
+ .ui-state-highlight a,
877
+ .ui-widget-content .ui-state-highlight a,
878
+ .ui-widget-header .ui-state-highlight a {
879
+ color: #363636;
880
+ }
881
+ .ui-state-error,
882
+ .ui-widget-content .ui-state-error,
883
+ .ui-widget-header .ui-state-error {
884
+ border: 1px solid #cd0a0a;
885
+ background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat;
886
+ color: #ffffff;
887
+ }
888
+ .ui-state-error a,
889
+ .ui-widget-content .ui-state-error a,
890
+ .ui-widget-header .ui-state-error a {
891
+ color: #ffffff;
892
+ }
893
+ .ui-state-error-text,
894
+ .ui-widget-content .ui-state-error-text,
895
+ .ui-widget-header .ui-state-error-text {
896
+ color: #ffffff;
897
+ }
898
+ .ui-priority-primary,
899
+ .ui-widget-content .ui-priority-primary,
900
+ .ui-widget-header .ui-priority-primary {
901
+ font-weight: bold;
902
+ }
903
+ .ui-priority-secondary,
904
+ .ui-widget-content .ui-priority-secondary,
905
+ .ui-widget-header .ui-priority-secondary {
906
+ opacity: .7;
907
+ filter:Alpha(Opacity=70);
908
+ font-weight: normal;
909
+ }
910
+ .ui-state-disabled,
911
+ .ui-widget-content .ui-state-disabled,
912
+ .ui-widget-header .ui-state-disabled {
913
+ opacity: .35;
914
+ filter:Alpha(Opacity=35);
915
+ background-image: none;
916
+ }
917
+ .ui-state-disabled .ui-icon {
918
+ filter:Alpha(Opacity=35); /* For IE8 - See #6059 */
919
+ }
920
+
921
+ /* Icons
922
+ ----------------------------------*/
923
+
924
+ /* states and images */
925
+ .ui-icon {
926
+ width: 16px;
927
+ height: 16px;
928
+ }
929
+ .ui-icon,
930
+ .ui-widget-content .ui-icon {
931
+ background-image: url(images/ui-icons_222222_256x240.png);
932
+ }
933
+ .ui-widget-header .ui-icon {
934
+ background-image: url(images/ui-icons_ffffff_256x240.png);
935
+ }
936
+ .ui-state-default .ui-icon {
937
+ background-image: url(../img/ui-icons_ef8c08_256x240.png);
938
+ }
939
+ .ui-state-hover .ui-icon,
940
+ .ui-state-focus .ui-icon {
941
+ background-image: url(../img/ui-icons_ef8c08_256x240.png);
942
+ }
943
+ .ui-state-active .ui-icon {
944
+ background-image: url(../img/ui-icons_ef8c08_256x240.png);
945
+ }
946
+ .ui-state-highlight .ui-icon {
947
+ background-image: url(images/ui-icons_228ef1_256x240.png);
948
+ }
949
+ .ui-state-error .ui-icon,
950
+ .ui-state-error-text .ui-icon {
951
+ background-image: url(images/ui-icons_ffd27a_256x240.png);
952
+ }
953
+
954
+ /* positioning */
955
+ .ui-icon-blank { background-position: 16px 16px; }
956
+ .ui-icon-carat-1-n { background-position: 0 0; }
957
+ .ui-icon-carat-1-ne { background-position: -16px 0; }
958
+ .ui-icon-carat-1-e { background-position: -32px 0; }
959
+ .ui-icon-carat-1-se { background-position: -48px 0; }
960
+ .ui-icon-carat-1-s { background-position: -64px 0; }
961
+ .ui-icon-carat-1-sw { background-position: -80px 0; }
962
+ .ui-icon-carat-1-w { background-position: -96px 0; }
963
+ .ui-icon-carat-1-nw { background-position: -112px 0; }
964
+ .ui-icon-carat-2-n-s { background-position: -128px 0; }
965
+ .ui-icon-carat-2-e-w { background-position: -144px 0; }
966
+ .ui-icon-triangle-1-n { background-position: 0 -16px; }
967
+ .ui-icon-triangle-1-ne { background-position: -16px -16px; }
968
+ .ui-icon-triangle-1-e { background-position: -32px -16px; }
969
+ .ui-icon-triangle-1-se { background-position: -48px -16px; }
970
+ .ui-icon-triangle-1-s { background-position: -64px -16px; }
971
+ .ui-icon-triangle-1-sw { background-position: -80px -16px; }
972
+ .ui-icon-triangle-1-w { background-position: -96px -16px; }
973
+ .ui-icon-triangle-1-nw { background-position: -112px -16px; }
974
+ .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
975
+ .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
976
+ .ui-icon-arrow-1-n { background-position: 0 -32px; }
977
+ .ui-icon-arrow-1-ne { background-position: -16px -32px; }
978
+ .ui-icon-arrow-1-e { background-position: -32px -32px; }
979
+ .ui-icon-arrow-1-se { background-position: -48px -32px; }
980
+ .ui-icon-arrow-1-s { background-position: -64px -32px; }
981
+ .ui-icon-arrow-1-sw { background-position: -80px -32px; }
982
+ .ui-icon-arrow-1-w { background-position: -96px -32px; }
983
+ .ui-icon-arrow-1-nw { background-position: -112px -32px; }
984
+ .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
985
+ .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
986
+ .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
987
+ .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
988
+ .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
989
+ .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
990
+ .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
991
+ .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
992
+ .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
993
+ .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
994
+ .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
995
+ .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
996
+ .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
997
+ .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
998
+ .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
999
+ .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
1000
+ .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
1001
+ .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
1002
+ .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
1003
+ .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
1004
+ .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
1005
+ .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
1006
+ .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
1007
+ .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
1008
+ .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
1009
+ .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
1010
+ .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
1011
+ .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
1012
+ .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
1013
+ .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
1014
+ .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
1015
+ .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
1016
+ .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
1017
+ .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
1018
+ .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
1019
+ .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
1020
+ .ui-icon-arrow-4 { background-position: 0 -80px; }
1021
+ .ui-icon-arrow-4-diag { background-position: -16px -80px; }
1022
+ .ui-icon-extlink { background-position: -32px -80px; }
1023
+ .ui-icon-newwin { background-position: -48px -80px; }
1024
+ .ui-icon-refresh { background-position: -64px -80px; }
1025
+ .ui-icon-shuffle { background-position: -80px -80px; }
1026
+ .ui-icon-transfer-e-w { background-position: -96px -80px; }
1027
+ .ui-icon-transferthick-e-w { background-position: -112px -80px; }
1028
+ .ui-icon-folder-collapsed { background-position: 0 -96px; }
1029
+ .ui-icon-folder-open { background-position: -16px -96px; }
1030
+ .ui-icon-document { background-position: -32px -96px; }
1031
+ .ui-icon-document-b { background-position: -48px -96px; }
1032
+ .ui-icon-note { background-position: -64px -96px; }
1033
+ .ui-icon-mail-closed { background-position: -80px -96px; }
1034
+ .ui-icon-mail-open { background-position: -96px -96px; }
1035
+ .ui-icon-suitcase { background-position: -112px -96px; }
1036
+ .ui-icon-comment { background-position: -128px -96px; }
1037
+ .ui-icon-person { background-position: -144px -96px; }
1038
+ .ui-icon-print { background-position: -160px -96px; }
1039
+ .ui-icon-trash { background-position: -176px -96px; }
1040
+ .ui-icon-locked { background-position: -192px -96px; }
1041
+ .ui-icon-unlocked { background-position: -208px -96px; }
1042
+ .ui-icon-bookmark { background-position: -224px -96px; }
1043
+ .ui-icon-tag { background-position: -240px -96px; }
1044
+ .ui-icon-home { background-position: 0 -112px; }
1045
+ .ui-icon-flag { background-position: -16px -112px; }
1046
+ .ui-icon-calendar { background-position: -32px -112px; }
1047
+ .ui-icon-cart { background-position: -48px -112px; }
1048
+ .ui-icon-pencil { background-position: -64px -112px; }
1049
+ .ui-icon-clock { background-position: -80px -112px; }
1050
+ .ui-icon-disk { background-position: -96px -112px; }
1051
+ .ui-icon-calculator { background-position: -112px -112px; }
1052
+ .ui-icon-zoomin { background-position: -128px -112px; }
1053
+ .ui-icon-zoomout { background-position: -144px -112px; }
1054
+ .ui-icon-search { background-position: -160px -112px; }
1055
+ .ui-icon-wrench { background-position: -176px -112px; }
1056
+ .ui-icon-gear { background-position: -192px -112px; }
1057
+ .ui-icon-heart { background-position: -208px -112px; }
1058
+ .ui-icon-star { background-position: -224px -112px; }
1059
+ .ui-icon-link { background-position: -240px -112px; }
1060
+ .ui-icon-cancel { background-position: 0 -128px; }
1061
+ .ui-icon-plus { background-position: -16px -128px; }
1062
+ .ui-icon-plusthick { background-position: -32px -128px; }
1063
+ .ui-icon-minus { background-position: -48px -128px; }
1064
+ .ui-icon-minusthick { background-position: -64px -128px; }
1065
+ .ui-icon-close { background-position: -80px -128px; }
1066
+ .ui-icon-closethick { background-position: -96px -128px; }
1067
+ .ui-icon-key { background-position: -112px -128px; }
1068
+ .ui-icon-lightbulb { background-position: -128px -128px; }
1069
+ .ui-icon-scissors { background-position: -144px -128px; }
1070
+ .ui-icon-clipboard { background-position: -160px -128px; }
1071
+ .ui-icon-copy { background-position: -176px -128px; }
1072
+ .ui-icon-contact { background-position: -192px -128px; }
1073
+ .ui-icon-image { background-position: -208px -128px; }
1074
+ .ui-icon-video { background-position: -224px -128px; }
1075
+ .ui-icon-script { background-position: -240px -128px; }
1076
+ .ui-icon-alert { background-position: 0 -144px; }
1077
+ .ui-icon-info { background-position: -16px -144px; }
1078
+ .ui-icon-notice { background-position: -32px -144px; }
1079
+ .ui-icon-help { background-position: -48px -144px; }
1080
+ .ui-icon-check { background-position: -64px -144px; }
1081
+ .ui-icon-bullet { background-position: -80px -144px; }
1082
+ .ui-icon-radio-on { background-position: -96px -144px; }
1083
+ .ui-icon-radio-off { background-position: -112px -144px; }
1084
+ .ui-icon-pin-w { background-position: -128px -144px; }
1085
+ .ui-icon-pin-s { background-position: -144px -144px; }
1086
+ .ui-icon-play { background-position: 0 -160px; }
1087
+ .ui-icon-pause { background-position: -16px -160px; }
1088
+ .ui-icon-seek-next { background-position: -32px -160px; }
1089
+ .ui-icon-seek-prev { background-position: -48px -160px; }
1090
+ .ui-icon-seek-end { background-position: -64px -160px; }
1091
+ .ui-icon-seek-start { background-position: -80px -160px; }
1092
+ /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
1093
+ .ui-icon-seek-first { background-position: -80px -160px; }
1094
+ .ui-icon-stop { background-position: -96px -160px; }
1095
+ .ui-icon-eject { background-position: -112px -160px; }
1096
+ .ui-icon-volume-off { background-position: -128px -160px; }
1097
+ .ui-icon-volume-on { background-position: -144px -160px; }
1098
+ .ui-icon-power { background-position: 0 -176px; }
1099
+ .ui-icon-signal-diag { background-position: -16px -176px; }
1100
+ .ui-icon-signal { background-position: -32px -176px; }
1101
+ .ui-icon-battery-0 { background-position: -48px -176px; }
1102
+ .ui-icon-battery-1 { background-position: -64px -176px; }
1103
+ .ui-icon-battery-2 { background-position: -80px -176px; }
1104
+ .ui-icon-battery-3 { background-position: -96px -176px; }
1105
+ .ui-icon-circle-plus { background-position: 0 -192px; }
1106
+ .ui-icon-circle-minus { background-position: -16px -192px; }
1107
+ .ui-icon-circle-close { background-position: -32px -192px; }
1108
+ .ui-icon-circle-triangle-e { background-position: -48px -192px; }
1109
+ .ui-icon-circle-triangle-s { background-position: -64px -192px; }
1110
+ .ui-icon-circle-triangle-w { background-position: -80px -192px; }
1111
+ .ui-icon-circle-triangle-n { background-position: -96px -192px; }
1112
+ .ui-icon-circle-arrow-e { background-position: -112px -192px; }
1113
+ .ui-icon-circle-arrow-s { background-position: -128px -192px; }
1114
+ .ui-icon-circle-arrow-w { background-position: -144px -192px; }
1115
+ .ui-icon-circle-arrow-n { background-position: -160px -192px; }
1116
+ .ui-icon-circle-zoomin { background-position: -176px -192px; }
1117
+ .ui-icon-circle-zoomout { background-position: -192px -192px; }
1118
+ .ui-icon-circle-check { background-position: -208px -192px; }
1119
+ .ui-icon-circlesmall-plus { background-position: 0 -208px; }
1120
+ .ui-icon-circlesmall-minus { background-position: -16px -208px; }
1121
+ .ui-icon-circlesmall-close { background-position: -32px -208px; }
1122
+ .ui-icon-squaresmall-plus { background-position: -48px -208px; }
1123
+ .ui-icon-squaresmall-minus { background-position: -64px -208px; }
1124
+ .ui-icon-squaresmall-close { background-position: -80px -208px; }
1125
+ .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
1126
+ .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
1127
+ .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
1128
+ .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
1129
+ .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
1130
+ .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
1131
+
1132
+
1133
+ /* Misc visuals
1134
+ ----------------------------------*/
1135
+
1136
+ /* Corner radius */
1137
+ .ui-corner-all,
1138
+ .ui-corner-top,
1139
+ .ui-corner-left,
1140
+ .ui-corner-tl {
1141
+ border-top-left-radius: 4px;
1142
+ }
1143
+ .ui-corner-all,
1144
+ .ui-corner-top,
1145
+ .ui-corner-right,
1146
+ .ui-corner-tr {
1147
+ border-top-right-radius: 4px;
1148
+ }
1149
+ .ui-corner-all,
1150
+ .ui-corner-bottom,
1151
+ .ui-corner-left,
1152
+ .ui-corner-bl {
1153
+ border-bottom-left-radius: 4px;
1154
+ }
1155
+ .ui-corner-all,
1156
+ .ui-corner-bottom,
1157
+ .ui-corner-right,
1158
+ .ui-corner-br {
1159
+ border-bottom-right-radius: 4px;
1160
+ }
1161
+
1162
+ /* Overlays */
1163
+ .ui-widget-overlay {
1164
+ background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat;
1165
+ opacity: .5;
1166
+ filter: Alpha(Opacity=50);
1167
+ }
1168
+ .ui-widget-shadow {
1169
+ margin: -5px 0 0 -5px;
1170
+ padding: 5px;
1171
+ background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x;
1172
+ opacity: .2;
1173
+ filter: Alpha(Opacity=20);
1174
+ border-radius: 5px;
1175
+ }
skin/adminhtml/default/default/sendinblue/css/jquery.multiselect.css ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .ui-multiselect { padding:2px 0 2px 4px; text-align:left }
2
+ .ui-multiselect span.ui-icon { float:right }
3
+ .ui-multiselect-single .ui-multiselect-checkboxes input { position:absolute !important; top: auto !important; left:-9999px; }
4
+ .ui-multiselect-single .ui-multiselect-checkboxes label { padding:5px !important }
5
+
6
+ .ui-multiselect-header { margin-bottom:3px; padding:3px 0 3px 4px }
7
+ .ui-multiselect-header ul { font-size:0.9em }
8
+ .ui-multiselect-header ul li { float:left; padding:0 10px 0 0 }
9
+ .ui-multiselect-header a { text-decoration:none }
10
+ .ui-multiselect-header a:hover { text-decoration:underline }
11
+ .ui-multiselect-header span.ui-icon { float:left }
12
+ .ui-multiselect-header li.ui-multiselect-close { float:right; text-align:right; padding-right:0 }
13
+
14
+ .ui-multiselect-menu { display:none; padding:3px; position:absolute; z-index:10000; text-align: left }
15
+ .ui-multiselect-checkboxes { position:relative /* fixes bug in IE6/7 */; overflow-y:auto }
16
+ .ui-multiselect-checkboxes label { cursor:default; display:block; border:1px solid transparent; padding:3px 1px }
17
+ .ui-multiselect-checkboxes label input { position:relative; top:1px }
18
+ .ui-multiselect-checkboxes li { clear:both; font-size:0.9em; padding-right:3px }
19
+ .ui-multiselect-checkboxes li.ui-multiselect-optgroup-label { text-align:center; font-weight:bold; border-bottom:1px solid }
20
+ .ui-multiselect-checkboxes li.ui-multiselect-optgroup-label a { display:block; padding:3px; margin:1px 0; text-decoration:none }
21
+
22
+ /* remove label borders in IE6 because IE6 does not support transparency */
23
+ * html .ui-multiselect-checkboxes label { border:none }
skin/adminhtml/default/default/sendinblue/css/styles.css ADDED
@@ -0,0 +1,332 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * @author Sendinblue plateform <contact@sendinblue.com>
3
+ * @copyright 2013-2014 Sendinblue
4
+ * URL: https:www.sendinblue.com
5
+ * Do not edit or add to this file if you wish to upgrade Sendinblue Magento plugin to newer
6
+ * versions in the future. If you wish to customize Sendinblue magento plugin for your
7
+ * needs then we can't provide a technical support.
8
+ */
9
+
10
+ .pagination{width:620px; height:25px; margin:0 auto;}
11
+ .pagination ul li{list-style:none; float:left; border:1px solid #000; padding:2px 6px 2px 6px; margin:0 3px 0 3px; font-family:arial; font-size:12px; color:#000; font-weight:bold; background-color:#f2f2f2;}
12
+ .pagination ul li:hover{color:#fff; background-color:#000; cursor:pointer;}
13
+ .pagination ul li.inactive, .pagination ul li.inactive:hover {background-color:#ededed; color:#bababa; border:1px solid #bababa; cursor:default;}
14
+
15
+ #mySelectBox{width:260px; height:150px;}
16
+
17
+ .sendin-logo {float:left; margin:0px 20px 0px 10px; }
18
+ .slogan {float:left; font-weight:bold; padding:25px 0px 0px 0px; color:#268CCD;}
19
+
20
+ .sendin_row {clear:both; margin-top:40px; width:100%;}
21
+ .contact-details {border:1px dashed #666666; float:right; height:205px; margin-left:12px; margin-right:12px; margin-top:10px; padding:8px; width:350px; position: absolute; right: 0;}
22
+ fieldset.fields {background-color:#EBEDF4; border:1px solid; margin-bottom:10px; padding:20px 0 10px 10px; position:relative;}
23
+ fieldset legend {background-color:#EBEDF4; border:1px solid #DFD5C3; display:inline; visibility:visible; float:left; font:bold 13px/13px Arial; margin:0; padding:4px 10px; position:absolute; top:-15px; width:inherit !important; height:auto;}
24
+ ul.listt {text-align:justify; margin:8px 0px 8px 0px;list-style:none; padding:0px; width:800px;}
25
+ ul.listt li:before{ content:"-"; position:relative; left:-2px;}
26
+ ul.listt li{ text-indent:-5px; padding:5px 0px 5px 10px;}
27
+ .toolTip{background:url(../images/help.gif) no-repeat scroll right top transparent;color:#36F;cursor:help;padding-right:20px;padding-bottom:5px;position:relative}
28
+ .sendin{background:url(../images/logo.gif) no-repeat}
29
+ #tipkk{position:absolute;z-index:999;opacity:0.9;background:#ccc;border:1px solid #000;max-width:500px;color:#000;padding:10px}
30
+
31
+
32
+ .form-list td.label {
33
+ padding-right: 12px;
34
+ text-align: right;
35
+ width: 491px;
36
+ }
37
+
38
+
39
+
40
+
41
+ .btn {
42
+ display: inline-block;
43
+ *display: inline;
44
+ padding: 2px 12px;
45
+ margin-bottom: 0;
46
+ *margin-left: .3em;
47
+ font-size: 14px;
48
+ line-height: 20px;
49
+ *line-height: 20px;
50
+ color: #333333;
51
+ text-align: center;
52
+ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
53
+ vertical-align: middle;
54
+ cursor: pointer;
55
+ background-color: #f5f5f5;
56
+ *background-color: #e6e6e6;
57
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
58
+ background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
59
+ background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
60
+ background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
61
+ background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
62
+ background-repeat: repeat-x;
63
+ border: 1px solid #bbbbbb;
64
+ *border: 0;
65
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
66
+ border-color: #e6e6e6 #e6e6e6 #bfbfbf;
67
+ border-bottom-color: #a2a2a2;
68
+ -webkit-border-radius: 4px;
69
+ -moz-border-radius: 4px;
70
+ border-radius: 4px;
71
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
72
+ filter: progid:dximagetransform.microsoft.gradient(enabled=false);
73
+ *zoom: 1;
74
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
75
+ -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
76
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
77
+ }
78
+
79
+ .btn {
80
+ border-color: #c5c5c5;
81
+ border-color: rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25);
82
+ }
83
+
84
+ .btn-primary {
85
+ color: #ffffff;
86
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
87
+ background-color: #006dcc;
88
+ *background-color: #0044cc;
89
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
90
+ background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
91
+ background-image: -o-linear-gradient(top, #0088cc, #0044cc);
92
+ background-image: linear-gradient(to bottom, #0088cc, #0044cc);
93
+ background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
94
+ background-repeat: repeat-x;
95
+ border-color: #0044cc #0044cc #002a80;
96
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
97
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
98
+ filter: progid:dximagetransform.microsoft.gradient(enabled=false);
99
+ }
100
+
101
+ #tabs_container {
102
+ border-bottom: 1px solid #ccc;
103
+ }
104
+ #tabs {
105
+ list-style: none;
106
+ padding: 5px 0 4px 0;
107
+ margin: 33px 0 0 10px;
108
+ font: 0.75em arial;
109
+ }
110
+ #tabs li {
111
+ display: inline-block;
112
+ margin:0px;
113
+ }
114
+ #tabs li a {
115
+ border: 1px solid #ccc;
116
+ padding: 4px 6px;
117
+ text-decoration: none;
118
+ background-color: #eeeeee!important;
119
+ border-bottom: none;
120
+ outline: none;
121
+ font-size:12px;
122
+ font-weight:normal;
123
+ border-radius: 5px 5px 0 0;
124
+ -moz-border-radius: 5px 5px 0 0;
125
+ -webkit-border-top-left-radius: 5px;
126
+ -webkit-border-top-right-radius: 5px;
127
+ }
128
+ #tabs li a:hover {
129
+ background-color: #dddddd!important;
130
+ padding: 4px 6px;
131
+ color: #000000;
132
+ }
133
+ #tabs li.active a {
134
+ border-bottom: 1px solid #fff;
135
+ background-color: #fff!important;
136
+ padding: 4px 6px 5px 6px;
137
+ border-bottom: none;
138
+ }
139
+ #tabs li.active a:hover {
140
+ background-color: #eeeeee!important;
141
+ padding: 4px 6px 5px 6px;
142
+ border-bottom: none;
143
+ }
144
+
145
+ #tabs li a.icon_accept {
146
+
147
+ background-position: 5px;
148
+ background-repeat: no-repeat;
149
+ /* padding-left: 24px;*/
150
+ }
151
+ #tabs li a.icon_accept:hover {
152
+ /* padding-left: 24px;*/
153
+ }
154
+
155
+ #tabs_content_container {
156
+ border-top: none;
157
+ padding: 10px 10px 5px;
158
+ }
159
+ .tab_content {
160
+ display: none;
161
+ }
162
+ /*.wrapper {
163
+ width:820px;
164
+ margin:0px auto;
165
+ }*/
166
+ .wrapper .row1 {
167
+ padding:/*10px 12px*/0px;
168
+ border:none;
169
+ }
170
+ .wrapper h4 {
171
+ line-height:24px;
172
+ margin-top:23px;
173
+ clear:both;
174
+ }
175
+ .wrapper p {
176
+ margin-bottom:12px;
177
+ }
178
+ .r_label {
179
+ float:left;
180
+ width: auto;
181
+ font-weight: normal;
182
+ white-space:nowrap;
183
+ }
184
+ .radio_bx span {
185
+ margin:0px 15px 0px 0px;
186
+ float:left;
187
+ }
188
+ .email_field {
189
+ margin:15px auto;
190
+ width:350px;
191
+ clear:both;
192
+ }
193
+ .email_field label {
194
+ margin-right:25px;
195
+ margin-top: 6px;
196
+ width: auto;
197
+ }
198
+ .input_bx {
199
+ border:1px solid #c8c8c8;
200
+ margin:5px 0px;
201
+ padding:3px;
202
+ }
203
+ .form_table {
204
+ width:100%;/*550px;*/
205
+ /*margin:0px auto;*/
206
+ clear: both;
207
+ }
208
+ .form_table table tr td{
209
+ border-bottom:none;
210
+ }
211
+ .form_table label {
212
+ width:160px;
213
+ float:left;
214
+ line-height:20px;
215
+ font-weight: bold;
216
+ }
217
+ .hintmsg {
218
+ /*font-size:11px;*/
219
+ color:#666666;
220
+ clear:both;
221
+ }
222
+ .textarea_bx {
223
+ float:left;
224
+ margin:5px 0px;
225
+ width:288px!important;
226
+ }
227
+ .btn_bx {
228
+ padding:2px;
229
+ cursor:pointer;
230
+ margin-left:15px;
231
+ background:#ffffff;
232
+ border:1px solid #000000;
233
+ }
234
+ .table-bottom td{padding:15px!important;}
235
+ .manage-label{margin-left:50px;}
236
+
237
+ .hidetableblock tr td td {
238
+ font-size: 11px;
239
+ height: 23px;
240
+ /* padding: 0 4px 0 6px;*/
241
+ }
242
+
243
+ /*Form*/
244
+ /*.table tr td {
245
+ color: #996633;
246
+ font-size:12px;
247
+ }
248
+ .sendin_row .form-list label{ width:670px; float:left; padding-right:20px; padding-top:0px; text-align:right;}
249
+ .sendin_row .form-list2 label{ width:385px; padding-right:20px; padding-top:0px;}
250
+ .sendin_row .form-list3 label{ width:295px; padding-right:20px; padding-top:0px;text-align:left!important;}
251
+
252
+
253
+
254
+ .label-small{ width:30px!important; text-align:left!important;}
255
+ .no-padding td{ padding:0px!important;}
256
+ .clear{ clear:both;}
257
+ .module_error.error{ padding-top: 8px!important;}
258
+ .module_error.error p{ display:inline-block;}
259
+ #content .alert{ width:auto!important;}
260
+ .tablepadding td{padding:5px 0px;}
261
+ .btnmrgn-right{
262
+ margin-top:12px;
263
+ margin-right:26px;
264
+ float:right;}*/
265
+ .radio_nospaceing{
266
+ margin:0px 10px 0px 0px;}
267
+ .radio_spaceing {
268
+ margin:0 10px!important;
269
+ vertical-align:top;
270
+ }
271
+ .radio_spaceing2 {
272
+ margin-left: 20px;
273
+ margin-right: 10px;
274
+ }
275
+
276
+ .mrgn-right{
277
+ margin-top:12px;
278
+ margin-right:175px;
279
+ float:right;}
280
+
281
+ .mrgin-left{ margin-left:466px;}
282
+ /*Design matched style*/
283
+
284
+ p {
285
+ color: #585A69;
286
+ margin: 0.5em 0;
287
+ }
288
+
289
+ .fix_width{width:450px}
290
+ .fix_width2{width:350px}
291
+
292
+ .form-list label {
293
+ padding-right: 20px;
294
+ padding-top: 0;
295
+ font-weight: bold;
296
+ text-align:right;
297
+ width: 450px;
298
+ float:left;
299
+ color:#585A69;
300
+ }
301
+ .form-list {
302
+ border: 0 none !important;
303
+ width: 100%;
304
+ }
305
+
306
+ .form-list td, .form-list3 td
307
+ {
308
+ padding:4px 0px;
309
+ color:#585A69;
310
+ }
311
+ .form-list td a, .form-list3 td a{
312
+ font-weight:bold;
313
+ }
314
+ .form-list3 label {
315
+ padding-right: 20px;
316
+ padding-top: 0;
317
+ font-weight: bold;
318
+ text-align:right;
319
+ width: 350px;
320
+ float:left;
321
+ font-size:12px;
322
+ line-height:24px;
323
+ color:#585A69;
324
+ }
325
+
326
+ input.input-text, textarea, select { border:1px solid #c8c8c8;}
327
+ input.input-text{padding:3px 5px;}
328
+ a {
329
+ color: #000000;
330
+ outline: 0 none;
331
+ text-decoration: none;
332
+ }
skin/adminhtml/default/default/sendinblue/images/close.png ADDED
Binary file
skin/adminhtml/default/default/sendinblue/images/disabled.gif ADDED
Binary file
skin/adminhtml/default/default/sendinblue/images/enabled.gif ADDED
Binary file
skin/adminhtml/default/default/sendinblue/images/help.gif ADDED
Binary file
skin/adminhtml/default/default/sendinblue/images/index.php ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ <?php
2
+ header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
3
+ header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
4
+ header('Cache-Control: no-store, no-cache, must-revalidate');
5
+ header('Cache-Control: post-check=0, pre-check=0', false);
6
+ header('Pragma: no-cache');
7
+ header('Location: ../');
8
+ exit;
skin/adminhtml/default/default/sendinblue/images/loader.gif ADDED
Binary file
skin/adminhtml/default/default/sendinblue/images/loading_anim.gif ADDED
Binary file
skin/adminhtml/default/default/sendinblue/images/logo.gif ADDED
Binary file
skin/adminhtml/default/default/sendinblue/images/logo.png ADDED
Binary file
skin/adminhtml/default/default/sendinblue/images/sendinblue.png ADDED
Binary file
skin/adminhtml/default/default/sendinblue/images/ui-icons_ef8c08_256x240.png ADDED
Binary file
skin/adminhtml/default/default/sendinblue/images/ui-icons_ef8c08_256x240.png.png ADDED
Binary file
skin/adminhtml/default/default/sendinblue/js/index.php ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * @author Sendinblue plateform <contact@sendinblue.com>
4
+ * @copyright 2013-2014 Sendinblue
5
+ * URL: https:www.sendinblue.com
6
+ * Do not edit or add to this file if you wish to upgrade Sendinblue Magento plugin to newer
7
+ * versions in the future. If you wish to customize Sendinblue magento plugin for your
8
+ * needs then we can't provide a technical support.
9
+ */
10
+
11
+ header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
12
+ header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
13
+
14
+ header("Cache-Control: no-store, no-cache, must-revalidate");
15
+ header("Cache-Control: post-check=0, pre-check=0", false);
16
+ header("Pragma: no-cache");
17
+
18
+ header("Location: ../");
19
+ exit;
skin/adminhtml/default/default/sendinblue/js/jquery-1.9.1.min.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ /*! jQuery v1.9.1 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license
2
+ //@ sourceMappingURL=jquery.min.map
3
+ */(function(e,t){var n,r,i=typeof t,o=e.document,a=e.location,s=e.jQuery,u=e.$,l={},c=[],p="1.9.1",f=c.concat,d=c.push,h=c.slice,g=c.indexOf,m=l.toString,y=l.hasOwnProperty,v=p.trim,b=function(e,t){return new b.fn.init(e,t,r)},x=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,w=/\S+/g,T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^[\],:{}\s]*$/,E=/(?:^|:|,)(?:\s*\[)+/g,S=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,A=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,j=/^-ms-/,D=/-([\da-z])/gi,L=function(e,t){return t.toUpperCase()},H=function(e){(o.addEventListener||"load"===e.type||"complete"===o.readyState)&&(q(),b.ready())},q=function(){o.addEventListener?(o.removeEventListener("DOMContentLoaded",H,!1),e.removeEventListener("load",H,!1)):(o.detachEvent("onreadystatechange",H),e.detachEvent("onload",H))};b.fn=b.prototype={jquery:p,constructor:b,init:function(e,n,r){var i,a;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof b?n[0]:n,b.merge(this,b.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:o,!0)),C.test(i[1])&&b.isPlainObject(n))for(i in n)b.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(a=o.getElementById(i[2]),a&&a.parentNode){if(a.id!==i[2])return r.find(e);this.length=1,this[0]=a}return this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):b.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),b.makeArray(e,this))},selector:"",length:0,size:function(){return this.length},toArray:function(){return h.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=b.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return b.each(this,e,t)},ready:function(e){return b.ready.promise().done(e),this},slice:function(){return this.pushStack(h.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(b.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:d,sort:[].sort,splice:[].splice},b.fn.init.prototype=b.fn,b.extend=b.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},u=1,l=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},u=2),"object"==typeof s||b.isFunction(s)||(s={}),l===u&&(s=this,--u);l>u;u++)if(null!=(o=arguments[u]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(b.isPlainObject(r)||(n=b.isArray(r)))?(n?(n=!1,a=e&&b.isArray(e)?e:[]):a=e&&b.isPlainObject(e)?e:{},s[i]=b.extend(c,a,r)):r!==t&&(s[i]=r));return s},b.extend({noConflict:function(t){return e.$===b&&(e.$=u),t&&e.jQuery===b&&(e.jQuery=s),b},isReady:!1,readyWait:1,holdReady:function(e){e?b.readyWait++:b.ready(!0)},ready:function(e){if(e===!0?!--b.readyWait:!b.isReady){if(!o.body)return setTimeout(b.ready);b.isReady=!0,e!==!0&&--b.readyWait>0||(n.resolveWith(o,[b]),b.fn.trigger&&b(o).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===b.type(e)},isArray:Array.isArray||function(e){return"array"===b.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[m.call(e)]||"object":typeof e},isPlainObject:function(e){if(!e||"object"!==b.type(e)||e.nodeType||b.isWindow(e))return!1;try{if(e.constructor&&!y.call(e,"constructor")&&!y.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||y.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=b.buildFragment([e],t,i),i&&b(i).remove(),b.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=b.trim(n),n&&k.test(n.replace(S,"@").replace(A,"]").replace(E,"")))?Function("return "+n)():(b.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||b.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&b.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(j,"ms-").replace(D,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:v&&!v.call("\ufeff\u00a0")?function(e){return null==e?"":v.call(e)}:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?b.merge(n,"string"==typeof e?[e]:e):d.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(g)return g.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return f.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),b.isFunction(e)?(r=h.call(arguments,2),i=function(){return e.apply(n||this,r.concat(h.call(arguments)))},i.guid=e.guid=e.guid||b.guid++,i):t},access:function(e,n,r,i,o,a,s){var u=0,l=e.length,c=null==r;if("object"===b.type(r)){o=!0;for(u in r)b.access(e,n,u,r[u],!0,a,s)}else if(i!==t&&(o=!0,b.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(b(e),n)})),n))for(;l>u;u++)n(e[u],r,s?i:i.call(e[u],u,n(e[u],r)));return o?e:c?n.call(e):l?n(e[0],r):a},now:function(){return(new Date).getTime()}}),b.ready.promise=function(t){if(!n)if(n=b.Deferred(),"complete"===o.readyState)setTimeout(b.ready);else if(o.addEventListener)o.addEventListener("DOMContentLoaded",H,!1),e.addEventListener("load",H,!1);else{o.attachEvent("onreadystatechange",H),e.attachEvent("onload",H);var r=!1;try{r=null==e.frameElement&&o.documentElement}catch(i){}r&&r.doScroll&&function a(){if(!b.isReady){try{r.doScroll("left")}catch(e){return setTimeout(a,50)}q(),b.ready()}}()}return n.promise(t)},b.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=b.type(e);return b.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=b(o);var _={};function F(e){var t=_[e]={};return b.each(e.match(w)||[],function(e,n){t[n]=!0}),t}b.Callbacks=function(e){e="string"==typeof e?_[e]||F(e):b.extend({},e);var n,r,i,o,a,s,u=[],l=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=u.length,n=!0;u&&o>a;a++)if(u[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,u&&(l?l.length&&c(l.shift()):r?u=[]:p.disable())},p={add:function(){if(u){var t=u.length;(function i(t){b.each(t,function(t,n){var r=b.type(n);"function"===r?e.unique&&p.has(n)||u.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=u.length:r&&(s=t,c(r))}return this},remove:function(){return u&&b.each(arguments,function(e,t){var r;while((r=b.inArray(t,u,r))>-1)u.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?b.inArray(e,u)>-1:!(!u||!u.length)},empty:function(){return u=[],this},disable:function(){return u=l=r=t,this},disabled:function(){return!u},lock:function(){return l=t,r||p.disable(),this},locked:function(){return!l},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!u||i&&!l||(n?l.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},b.extend({Deferred:function(e){var t=[["resolve","done",b.Callbacks("once memory"),"resolved"],["reject","fail",b.Callbacks("once memory"),"rejected"],["notify","progress",b.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return b.Deferred(function(n){b.each(t,function(t,o){var a=o[0],s=b.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&b.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?b.extend(e,r):r}},i={};return r.pipe=r.then,b.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=h.call(arguments),r=n.length,i=1!==r||e&&b.isFunction(e.promise)?r:0,o=1===i?e:b.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?h.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,u,l;if(r>1)for(s=Array(r),u=Array(r),l=Array(r);r>t;t++)n[t]&&b.isFunction(n[t].promise)?n[t].promise().done(a(t,l,n)).fail(o.reject).progress(a(t,u,s)):--i;return i||o.resolveWith(l,n),o.promise()}}),b.support=function(){var t,n,r,a,s,u,l,c,p,f,d=o.createElement("div");if(d.setAttribute("className","t"),d.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*"),r=d.getElementsByTagName("a")[0],!n||!r||!n.length)return{};s=o.createElement("select"),l=s.appendChild(o.createElement("option")),a=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={getSetAttribute:"t"!==d.className,leadingWhitespace:3===d.firstChild.nodeType,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:"/a"===r.getAttribute("href"),opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:!!a.value,optSelected:l.selected,enctype:!!o.createElement("form").enctype,html5Clone:"<:nav></:nav>"!==o.createElement("nav").cloneNode(!0).outerHTML,boxModel:"CSS1Compat"===o.compatMode,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},a.checked=!0,t.noCloneChecked=a.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!l.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}a=o.createElement("input"),a.setAttribute("value",""),t.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),t.radioValue="t"===a.value,a.setAttribute("checked","t"),a.setAttribute("name","t"),u=o.createDocumentFragment(),u.appendChild(a),t.appendChecked=a.checked,t.checkClone=u.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;return d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip,b(function(){var n,r,a,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",u=o.getElementsByTagName("body")[0];u&&(n=o.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",u.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",a=d.getElementsByTagName("td"),a[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===a[0].offsetHeight,a[0].style.display="",a[1].style.display="none",t.reliableHiddenOffsets=p&&0===a[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=4===d.offsetWidth,t.doesNotIncludeMarginInBodyOffset=1!==u.offsetTop,e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(o.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(u.style.zoom=1)),u.removeChild(n),n=d=a=r=null)}),n=s=u=l=r=a=null,t}();var O=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,B=/([A-Z])/g;function P(e,n,r,i){if(b.acceptData(e)){var o,a,s=b.expando,u="string"==typeof n,l=e.nodeType,p=l?b.cache:e,f=l?e[s]:e[s]&&s;if(f&&p[f]&&(i||p[f].data)||!u||r!==t)return f||(l?e[s]=f=c.pop()||b.guid++:f=s),p[f]||(p[f]={},l||(p[f].toJSON=b.noop)),("object"==typeof n||"function"==typeof n)&&(i?p[f]=b.extend(p[f],n):p[f].data=b.extend(p[f].data,n)),o=p[f],i||(o.data||(o.data={}),o=o.data),r!==t&&(o[b.camelCase(n)]=r),u?(a=o[n],null==a&&(a=o[b.camelCase(n)])):a=o,a}}function R(e,t,n){if(b.acceptData(e)){var r,i,o,a=e.nodeType,s=a?b.cache:e,u=a?e[b.expando]:b.expando;if(s[u]){if(t&&(o=n?s[u]:s[u].data)){b.isArray(t)?t=t.concat(b.map(t,b.camelCase)):t in o?t=[t]:(t=b.camelCase(t),t=t in o?[t]:t.split(" "));for(r=0,i=t.length;i>r;r++)delete o[t[r]];if(!(n?$:b.isEmptyObject)(o))return}(n||(delete s[u].data,$(s[u])))&&(a?b.cleanData([e],!0):b.support.deleteExpando||s!=s.window?delete s[u]:s[u]=null)}}}b.extend({cache:{},expando:"jQuery"+(p+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?b.cache[e[b.expando]]:e[b.expando],!!e&&!$(e)},data:function(e,t,n){return P(e,t,n)},removeData:function(e,t){return R(e,t)},_data:function(e,t,n){return P(e,t,n,!0)},_removeData:function(e,t){return R(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&b.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),b.fn.extend({data:function(e,n){var r,i,o=this[0],a=0,s=null;if(e===t){if(this.length&&(s=b.data(o),1===o.nodeType&&!b._data(o,"parsedAttrs"))){for(r=o.attributes;r.length>a;a++)i=r[a].name,i.indexOf("data-")||(i=b.camelCase(i.slice(5)),W(o,i,s[i]));b._data(o,"parsedAttrs",!0)}return s}return"object"==typeof e?this.each(function(){b.data(this,e)}):b.access(this,function(n){return n===t?o?W(o,e,b.data(o,e)):null:(this.each(function(){b.data(this,e,n)}),t)},null,n,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function W(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(B,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:O.test(r)?b.parseJSON(r):r}catch(o){}b.data(e,n,r)}else r=t}return r}function $(e){var t;for(t in e)if(("data"!==t||!b.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}b.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=b._data(e,n),r&&(!i||b.isArray(r)?i=b._data(e,n,b.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=b.queue(e,t),r=n.length,i=n.shift(),o=b._queueHooks(e,t),a=function(){b.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),o.cur=i,i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return b._data(e,n)||b._data(e,n,{empty:b.Callbacks("once memory").add(function(){b._removeData(e,t+"queue"),b._removeData(e,n)})})}}),b.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?b.queue(this[0],e):n===t?this:this.each(function(){var t=b.queue(this,e,n);b._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&b.dequeue(this,e)})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(e,t){return e=b.fx?b.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=b.Deferred(),a=this,s=this.length,u=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=b._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(u));return u(),o.promise(n)}});var I,z,X=/[\t\r\n]/g,U=/\r/g,V=/^(?:input|select|textarea|button|object)$/i,Y=/^(?:a|area)$/i,J=/^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,G=/^(?:checked|selected)$/i,Q=b.support.getSetAttribute,K=b.support.input;b.fn.extend({attr:function(e,t){return b.access(this,b.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,t){return b.access(this,b.prop,e,t,arguments.length>1)},removeProp:function(e){return e=b.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,u="string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=b.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,u=0===arguments.length||"string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?b.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,r="boolean"==typeof t;return b.isFunction(e)?this.each(function(n){b(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var o,a=0,s=b(this),u=t,l=e.match(w)||[];while(o=l[a++])u=r?u:!s.hasClass(o),s[u?"addClass":"removeClass"](o)}else(n===i||"boolean"===n)&&(this.className&&b._data(this,"__className__",this.className),this.className=this.className||e===!1?"":b._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(X," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=b.isFunction(e),this.each(function(n){var o,a=b(this);1===this.nodeType&&(o=i?e.call(this,n,a.val()):e,null==o?o="":"number"==typeof o?o+="":b.isArray(o)&&(o=b.map(o,function(e){return null==e?"":e+""})),r=b.valHooks[this.type]||b.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=b.valHooks[o.type]||b.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(U,""):null==n?"":n)}}}),b.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,u=0>i?s:o?i:0;for(;s>u;u++)if(n=r[u],!(!n.selected&&u!==i||(b.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&b.nodeName(n.parentNode,"optgroup"))){if(t=b(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n=b.makeArray(t);return b(e).find("option").each(function(){this.selected=b.inArray(b(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attr:function(e,n,r){var o,a,s,u=e.nodeType;if(e&&3!==u&&8!==u&&2!==u)return typeof e.getAttribute===i?b.prop(e,n,r):(a=1!==u||!b.isXMLDoc(e),a&&(n=n.toLowerCase(),o=b.attrHooks[n]||(J.test(n)?z:I)),r===t?o&&a&&"get"in o&&null!==(s=o.get(e,n))?s:(typeof e.getAttribute!==i&&(s=e.getAttribute(n)),null==s?t:s):null!==r?o&&a&&"set"in o&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r):(b.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(w);if(o&&1===e.nodeType)while(n=o[i++])r=b.propFix[n]||n,J.test(n)?!Q&&G.test(n)?e[b.camelCase("default-"+n)]=e[r]=!1:e[r]=!1:b.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!b.support.radioValue&&"radio"===t&&b.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!b.isXMLDoc(e),a&&(n=b.propFix[n]||n,o=b.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):V.test(e.nodeName)||Y.test(e.nodeName)&&e.href?0:t}}}}),z={get:function(e,n){var r=b.prop(e,n),i="boolean"==typeof r&&e.getAttribute(n),o="boolean"==typeof r?K&&Q?null!=i:G.test(n)?e[b.camelCase("default-"+n)]:!!i:e.getAttributeNode(n);return o&&o.value!==!1?n.toLowerCase():t},set:function(e,t,n){return t===!1?b.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&b.propFix[n]||n,n):e[b.camelCase("default-"+n)]=e[n]=!0,n}},K&&Q||(b.attrHooks.value={get:function(e,n){var r=e.getAttributeNode(n);return b.nodeName(e,"input")?e.defaultValue:r&&r.specified?r.value:t},set:function(e,n,r){return b.nodeName(e,"input")?(e.defaultValue=n,t):I&&I.set(e,n,r)}}),Q||(I=b.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&("id"===n||"name"===n||"coords"===n?""!==r.value:r.specified)?r.value:t},set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},b.attrHooks.contenteditable={get:I.get,set:function(e,t,n){I.set(e,""===t?!1:t,n)}},b.each(["width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}})})),b.support.hrefNormalized||(b.each(["href","src","width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return null==r?t:r}})}),b.each(["href","src"],function(e,t){b.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}})),b.support.style||(b.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),b.support.optSelected||(b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),b.support.enctype||(b.propFix.enctype="encoding"),b.support.checkOn||b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return null===e.getAttribute("value")?"on":e.value}}}),b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,n){return b.isArray(n)?e.checked=b.inArray(b(e).val(),n)>=0:t}})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}b.event={global:{},add:function(e,n,r,o,a){var s,u,l,c,p,f,d,h,g,m,y,v=b._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=b.guid++),(u=v.events)||(u=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof b===i||e&&b.event.triggered===e.type?t:b.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(w)||[""],l=n.length;while(l--)s=rt.exec(n[l])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),p=b.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=b.event.special[g]||{},d=b.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&b.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=u[g])||(h=u[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),b.event.global[g]=!0;e=null}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,p,f,d,h,g,m=b.hasData(e)&&b._data(e);if(m&&(c=m.events)){t=(t||"").match(w)||[""],l=t.length;while(l--)if(s=rt.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=b.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),u=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));u&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||b.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)b.event.remove(e,d+t[l],n,r,!0);b.isEmptyObject(c)&&(delete m.handle,b._removeData(e,"events"))}},trigger:function(n,r,i,a){var s,u,l,c,p,f,d,h=[i||o],g=y.call(n,"type")?n.type:n,m=y.call(n,"namespace")?n.namespace.split("."):[];if(l=f=i=i||o,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+b.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),u=0>g.indexOf(":")&&"on"+g,n=n[b.expando]?n:new b.Event(g,"object"==typeof n&&n),n.isTrigger=!0,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:b.makeArray(r,[n]),p=b.event.special[g]||{},a||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!a&&!p.noBubble&&!b.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(l=l.parentNode);l;l=l.parentNode)h.push(l),f=l;f===(i.ownerDocument||o)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((l=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(b._data(l,"events")||{})[n.type]&&b._data(l,"handle"),s&&s.apply(l,r),s=u&&l[u],s&&b.acceptData(l)&&s.apply&&s.apply(l,r)===!1&&n.preventDefault();if(n.type=g,!(a||n.isDefaultPrevented()||p._default&&p._default.apply(i.ownerDocument,r)!==!1||"click"===g&&b.nodeName(i,"a")||!b.acceptData(i)||!u||!i[g]||b.isWindow(i))){f=i[u],f&&(i[u]=null),b.event.triggered=g;try{i[g]()}catch(v){}b.event.triggered=t,f&&(i[u]=f)}return n.result}},dispatch:function(e){e=b.event.fix(e);var n,r,i,o,a,s=[],u=h.call(arguments),l=(b._data(this,"events")||{})[e.type]||[],c=b.event.special[e.type]||{};if(u[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=b.event.handlers.call(this,e,l),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((b.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,u),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],u=n.delegateCount,l=e.target;if(u&&l.nodeType&&(!e.button||"click"!==e.type))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(l.disabled!==!0||"click"!==e.type)){for(o=[],a=0;u>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?b(r,this).index(l)>=0:b.find(r,this,null,[l]).length),o[r]&&o.push(i);o.length&&s.push({elem:l,handlers:o})}return n.length>u&&s.push({elem:this,handlers:n.slice(u)}),s},fix:function(e){if(e[b.expando])return e;var t,n,r,i=e.type,a=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new b.Event(a),t=r.length;while(t--)n=r[t],e[n]=a[n];return e.target||(e.target=a.srcElement||o),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,a):e},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(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,a,s=n.button,u=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||o,a=i.documentElement,r=i.body,e.pageX=n.clientX+(a&&a.scrollLeft||r&&r.scrollLeft||0)-(a&&a.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(a&&a.scrollTop||r&&r.scrollTop||0)-(a&&a.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&u&&(e.relatedTarget=u===e.target?n.toElement:u),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},click:{trigger:function(){return b.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t}},focus:{trigger:function(){if(this!==o.activeElement&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===o.activeElement&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=b.extend(new b.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?b.event.trigger(i,null,t):b.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},b.removeEvent=o.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},b.Event=function(e,n){return this instanceof b.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&b.extend(this,n),this.timeStamp=e&&e.timeStamp||b.now(),this[b.expando]=!0,t):new b.Event(e,n)},b.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){b.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;
4
+ return(!i||i!==r&&!b.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),b.support.submitBubbles||(b.event.special.submit={setup:function(){return b.nodeName(this,"form")?!1:(b.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=b.nodeName(n,"input")||b.nodeName(n,"button")?n.form:t;r&&!b._data(r,"submitBubbles")&&(b.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),b._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&b.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return b.nodeName(this,"form")?!1:(b.event.remove(this,"._submit"),t)}}),b.support.changeBubbles||(b.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(b.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),b.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),b.event.simulate("change",this,e,!0)})),!1):(b.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!b._data(t,"changeBubbles")&&(b.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||b.event.simulate("change",this.parentNode,e,!0)}),b._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return b.event.remove(this,"._change"),!Z.test(this.nodeName)}}),b.support.focusinBubbles||b.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){b.event.simulate(t,e.target,b.event.fix(e),!0)};b.event.special[t]={setup:function(){0===n++&&o.addEventListener(e,r,!0)},teardown:function(){0===--n&&o.removeEventListener(e,r,!0)}}}),b.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return b().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=b.guid++)),this.each(function(){b.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,b(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){b.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){b.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?b.event.trigger(e,n,r,!0):t}}),function(e,t){var n,r,i,o,a,s,u,l,c,p,f,d,h,g,m,y,v,x="sizzle"+-new Date,w=e.document,T={},N=0,C=0,k=it(),E=it(),S=it(),A=typeof t,j=1<<31,D=[],L=D.pop,H=D.push,q=D.slice,M=D.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},_="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=F.replace("w","w#"),B="([*^$|!~]?=)",P="\\["+_+"*("+F+")"+_+"*(?:"+B+_+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+O+")|)|)"+_+"*\\]",R=":("+F+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+P.replace(3,8)+")*)|.*)\\)|)",W=RegExp("^"+_+"+|((?:^|[^\\\\])(?:\\\\.)*)"+_+"+$","g"),$=RegExp("^"+_+"*,"+_+"*"),I=RegExp("^"+_+"*([\\x20\\t\\r\\n\\f>+~])"+_+"*"),z=RegExp(R),X=RegExp("^"+O+"$"),U={ID:RegExp("^#("+F+")"),CLASS:RegExp("^\\.("+F+")"),NAME:RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:RegExp("^("+F.replace("w","w*")+")"),ATTR:RegExp("^"+P),PSEUDO:RegExp("^"+R),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+_+"*(even|odd|(([+-]|)(\\d*)n|)"+_+"*(?:([+-]|)"+_+"*(\\d+)|))"+_+"*\\)|)","i"),needsContext:RegExp("^"+_+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+_+"*((?:-\\d)?\\d*)"+_+"*\\)|)(?=[^-]|$)","i")},V=/[\x20\t\r\n\f]*[+~]/,Y=/^[^{]+\{\s*\[native code/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,G=/^(?:input|select|textarea|button)$/i,Q=/^h\d$/i,K=/'|\\/g,Z=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,et=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,tt=function(e,t){var n="0x"+t-65536;return n!==n?t:0>n?String.fromCharCode(n+65536):String.fromCharCode(55296|n>>10,56320|1023&n)};try{q.call(w.documentElement.childNodes,0)[0].nodeType}catch(nt){q=function(e){var t,n=[];while(t=this[e++])n.push(t);return n}}function rt(e){return Y.test(e+"")}function it(){var e,t=[];return e=function(n,r){return t.push(n+=" ")>i.cacheLength&&delete e[t.shift()],e[n]=r}}function ot(e){return e[x]=!0,e}function at(e){var t=p.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}}function st(e,t,n,r){var i,o,a,s,u,l,f,g,m,v;if((t?t.ownerDocument||t:w)!==p&&c(t),t=t||p,n=n||[],!e||"string"!=typeof e)return n;if(1!==(s=t.nodeType)&&9!==s)return[];if(!d&&!r){if(i=J.exec(e))if(a=i[1]){if(9===s){if(o=t.getElementById(a),!o||!o.parentNode)return n;if(o.id===a)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(a))&&y(t,o)&&o.id===a)return n.push(o),n}else{if(i[2])return H.apply(n,q.call(t.getElementsByTagName(e),0)),n;if((a=i[3])&&T.getByClassName&&t.getElementsByClassName)return H.apply(n,q.call(t.getElementsByClassName(a),0)),n}if(T.qsa&&!h.test(e)){if(f=!0,g=x,m=t,v=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){l=ft(e),(f=t.getAttribute("id"))?g=f.replace(K,"\\$&"):t.setAttribute("id",g),g="[id='"+g+"'] ",u=l.length;while(u--)l[u]=g+dt(l[u]);m=V.test(e)&&t.parentNode||t,v=l.join(",")}if(v)try{return H.apply(n,q.call(m.querySelectorAll(v),0)),n}catch(b){}finally{f||t.removeAttribute("id")}}}return wt(e.replace(W,"$1"),t,n,r)}a=st.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},c=st.setDocument=function(e){var n=e?e.ownerDocument||e:w;return n!==p&&9===n.nodeType&&n.documentElement?(p=n,f=n.documentElement,d=a(n),T.tagNameNoComments=at(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),T.attributes=at(function(e){e.innerHTML="<select></select>";var t=typeof e.lastChild.getAttribute("multiple");return"boolean"!==t&&"string"!==t}),T.getByClassName=at(function(e){return e.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",e.getElementsByClassName&&e.getElementsByClassName("e").length?(e.lastChild.className="e",2===e.getElementsByClassName("e").length):!1}),T.getByName=at(function(e){e.id=x+0,e.innerHTML="<a name='"+x+"'></a><div name='"+x+"'></div>",f.insertBefore(e,f.firstChild);var t=n.getElementsByName&&n.getElementsByName(x).length===2+n.getElementsByName(x+0).length;return T.getIdNotName=!n.getElementById(x),f.removeChild(e),t}),i.attrHandle=at(function(e){return e.innerHTML="<a href='#'></a>",e.firstChild&&typeof e.firstChild.getAttribute!==A&&"#"===e.firstChild.getAttribute("href")})?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},T.getIdNotName?(i.find.ID=function(e,t){if(typeof t.getElementById!==A&&!d){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){return e.getAttribute("id")===t}}):(i.find.ID=function(e,n){if(typeof n.getElementById!==A&&!d){var r=n.getElementById(e);return r?r.id===e||typeof r.getAttributeNode!==A&&r.getAttributeNode("id").value===e?[r]:t:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){var n=typeof e.getAttributeNode!==A&&e.getAttributeNode("id");return n&&n.value===t}}),i.find.TAG=T.tagNameNoComments?function(e,n){return typeof n.getElementsByTagName!==A?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},i.find.NAME=T.getByName&&function(e,n){return typeof n.getElementsByName!==A?n.getElementsByName(name):t},i.find.CLASS=T.getByClassName&&function(e,n){return typeof n.getElementsByClassName===A||d?t:n.getElementsByClassName(e)},g=[],h=[":focus"],(T.qsa=rt(n.querySelectorAll))&&(at(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||h.push("\\["+_+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||h.push(":checked")}),at(function(e){e.innerHTML="<input type='hidden' i=''/>",e.querySelectorAll("[i^='']").length&&h.push("[*^$]="+_+"*(?:\"\"|'')"),e.querySelectorAll(":enabled").length||h.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),h.push(",.*:")})),(T.matchesSelector=rt(m=f.matchesSelector||f.mozMatchesSelector||f.webkitMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&at(function(e){T.disconnectedMatch=m.call(e,"div"),m.call(e,"[s!='']:x"),g.push("!=",R)}),h=RegExp(h.join("|")),g=RegExp(g.join("|")),y=rt(f.contains)||f.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},v=f.compareDocumentPosition?function(e,t){var r;return e===t?(u=!0,0):(r=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t))?1&r||e.parentNode&&11===e.parentNode.nodeType?e===n||y(w,e)?-1:t===n||y(w,t)?1:0:4&r?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return u=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:0;if(o===a)return ut(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?ut(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},u=!1,[0,0].sort(v),T.detectDuplicates=u,p):p},st.matches=function(e,t){return st(e,null,null,t)},st.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&c(e),t=t.replace(Z,"='$1']"),!(!T.matchesSelector||d||g&&g.test(t)||h.test(t)))try{var n=m.call(e,t);if(n||T.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(r){}return st(t,p,null,[e]).length>0},st.contains=function(e,t){return(e.ownerDocument||e)!==p&&c(e),y(e,t)},st.attr=function(e,t){var n;return(e.ownerDocument||e)!==p&&c(e),d||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):d||T.attributes?e.getAttribute(t):((n=e.getAttributeNode(t))||e.getAttribute(t))&&e[t]===!0?t:n&&n.specified?n.value:null},st.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},st.uniqueSort=function(e){var t,n=[],r=1,i=0;if(u=!T.detectDuplicates,e.sort(v),u){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e};function ut(e,t){var n=t&&e,r=n&&(~t.sourceIndex||j)-(~e.sourceIndex||j);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function lt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function ct(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function pt(e){return ot(function(t){return t=+t,ot(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}o=st.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=o(t);return n},i=st.selectors={cacheLength:50,createPseudo:ot,match:U,find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(et,tt),e[3]=(e[4]||e[5]||"").replace(et,tt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||st.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&st.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return U.CHILD.test(e[0])?null:(e[4]?e[2]=e[4]:n&&z.test(n)&&(t=ft(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){return"*"===e?function(){return!0}:(e=e.replace(et,tt).toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[e+" "];return t||(t=RegExp("(^|"+_+")"+e+"("+_+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==A&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=st.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[x]||(m[x]={}),l=c[e]||[],d=l[0]===N&&l[1],f=l[0]===N&&l[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[N,d,f];break}}else if(v&&(l=(t[x]||(t[x]={}))[e])&&l[0]===N)f=l[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[x]||(p[x]={}))[e]=[N,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||st.error("unsupported pseudo: "+e);return r[x]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?ot(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=M.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ot(function(e){var t=[],n=[],r=s(e.replace(W,"$1"));return r[x]?ot(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:ot(function(e){return function(t){return st(e,t).length>0}}),contains:ot(function(e){return function(t){return(t.textContent||t.innerText||o(t)).indexOf(e)>-1}}),lang:ot(function(e){return X.test(e||"")||st.error("unsupported lang: "+e),e=e.replace(et,tt).toLowerCase(),function(t){var n;do if(n=d?t.getAttribute("xml:lang")||t.getAttribute("lang"):t.lang)return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return Q.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:pt(function(){return[0]}),last:pt(function(e,t){return[t-1]}),eq:pt(function(e,t,n){return[0>n?n+t:n]}),even:pt(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:pt(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:pt(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:pt(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}};for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[n]=lt(n);for(n in{submit:!0,reset:!0})i.pseudos[n]=ct(n);function ft(e,t){var n,r,o,a,s,u,l,c=E[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=i.preFilter;while(s){(!n||(r=$.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),u.push(o=[])),n=!1,(r=I.exec(s))&&(n=r.shift(),o.push({value:n,type:r[0].replace(W," ")}),s=s.slice(n.length));for(a in i.filter)!(r=U[a].exec(s))||l[a]&&!(r=l[a](r))||(n=r.shift(),o.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?st.error(e):E(e,u).slice(0)}function dt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function ht(e,t,n){var i=t.dir,o=n&&"parentNode"===i,a=C++;return t.first?function(t,n,r){while(t=t[i])if(1===t.nodeType||o)return e(t,n,r)}:function(t,n,s){var u,l,c,p=N+" "+a;if(s){while(t=t[i])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[i])if(1===t.nodeType||o)if(c=t[x]||(t[x]={}),(l=c[i])&&l[0]===p){if((u=l[1])===!0||u===r)return u===!0}else if(l=c[i]=[p],l[1]=e(t,n,s)||r,l[1]===!0)return!0}}function gt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function mt(e,t,n,r,i){var o,a=[],s=0,u=e.length,l=null!=t;for(;u>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),l&&t.push(s));return a}function yt(e,t,n,r,i,o){return r&&!r[x]&&(r=yt(r)),i&&!i[x]&&(i=yt(i,o)),ot(function(o,a,s,u){var l,c,p,f=[],d=[],h=a.length,g=o||xt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:mt(g,f,e,s,u),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,u),r){l=mt(y,d),r(l,[],s,u),c=l.length;while(c--)(p=l[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){l=[],c=y.length;while(c--)(p=y[c])&&l.push(m[c]=p);i(null,y=[],l,u)}c=y.length;while(c--)(p=y[c])&&(l=i?M.call(o,p):f[c])>-1&&(o[l]=!(a[l]=p))}}else y=mt(y===a?y.splice(h,y.length):y),i?i(null,a,y,u):H.apply(a,y)})}function vt(e){var t,n,r,o=e.length,a=i.relative[e[0].type],s=a||i.relative[" "],u=a?1:0,c=ht(function(e){return e===t},s,!0),p=ht(function(e){return M.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;o>u;u++)if(n=i.relative[e[u].type])f=[ht(gt(f),n)];else{if(n=i.filter[e[u].type].apply(null,e[u].matches),n[x]){for(r=++u;o>r;r++)if(i.relative[e[r].type])break;return yt(u>1&&gt(f),u>1&&dt(e.slice(0,u-1)).replace(W,"$1"),n,r>u&&vt(e.slice(u,r)),o>r&&vt(e=e.slice(r)),o>r&&dt(e))}f.push(n)}return gt(f)}function bt(e,t){var n=0,o=t.length>0,a=e.length>0,s=function(s,u,c,f,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,T=l,C=s||a&&i.find.TAG("*",d&&u.parentNode||u),k=N+=null==T?1:Math.random()||.1;for(w&&(l=u!==p&&u,r=n);null!=(h=C[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,u,c)){f.push(h);break}w&&(N=k,r=++n)}o&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,o&&b!==v){g=0;while(m=t[g++])m(x,y,u,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=L.call(f));y=mt(y)}H.apply(f,y),w&&!s&&y.length>0&&v+t.length>1&&st.uniqueSort(f)}return w&&(N=k,l=T),x};return o?ot(s):s}s=st.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=ft(e)),n=t.length;while(n--)o=vt(t[n]),o[x]?r.push(o):i.push(o);o=S(e,bt(i,r))}return o};function xt(e,t,n){var r=0,i=t.length;for(;i>r;r++)st(e,t[r],n);return n}function wt(e,t,n,r){var o,a,u,l,c,p=ft(e);if(!r&&1===p.length){if(a=p[0]=p[0].slice(0),a.length>2&&"ID"===(u=a[0]).type&&9===t.nodeType&&!d&&i.relative[a[1].type]){if(t=i.find.ID(u.matches[0].replace(et,tt),t)[0],!t)return n;e=e.slice(a.shift().value.length)}o=U.needsContext.test(e)?0:a.length;while(o--){if(u=a[o],i.relative[l=u.type])break;if((c=i.find[l])&&(r=c(u.matches[0].replace(et,tt),V.test(a[0].type)&&t.parentNode||t))){if(a.splice(o,1),e=r.length&&dt(a),!e)return H.apply(n,q.call(r,0)),n;break}}}return s(e,p)(r,t,d,n,V.test(e)),n}i.pseudos.nth=i.pseudos.eq;function Tt(){}i.filters=Tt.prototype=i.pseudos,i.setFilters=new Tt,c(),st.attr=b.attr,b.find=st,b.expr=st.selectors,b.expr[":"]=b.expr.pseudos,b.unique=st.uniqueSort,b.text=st.getText,b.isXMLDoc=st.isXML,b.contains=st.contains}(e);var at=/Until$/,st=/^(?:parents|prev(?:Until|All))/,ut=/^.[^:#\[\.,]*$/,lt=b.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};b.fn.extend({find:function(e){var t,n,r,i=this.length;if("string"!=typeof e)return r=this,this.pushStack(b(e).filter(function(){for(t=0;i>t;t++)if(b.contains(r[t],this))return!0}));for(n=[],t=0;i>t;t++)b.find(e,this[t],n);return n=this.pushStack(i>1?b.unique(n):n),n.selector=(this.selector?this.selector+" ":"")+e,n},has:function(e){var t,n=b(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(b.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1))},filter:function(e){return this.pushStack(ft(this,e,!0))},is:function(e){return!!e&&("string"==typeof e?lt.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,o=[],a=lt.test(e)||"string"!=typeof e?b(e,t||this.context):0;for(;i>r;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&11!==n.nodeType){if(a?a.index(n)>-1:b.find.matchesSelector(n,e)){o.push(n);break}n=n.parentNode}}return this.pushStack(o.length>1?b.unique(o):o)},index:function(e){return e?"string"==typeof e?b.inArray(this[0],b(e)):b.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?b(e,t):b.makeArray(e&&e.nodeType?[e]:e),r=b.merge(this.get(),n);return this.pushStack(b.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),b.fn.andSelf=b.fn.addBack;function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}b.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(e,t,n){return b.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(e,t,n){return b.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return b.dir(e,"previousSibling",n)},siblings:function(e){return b.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.merge([],e.childNodes)}},function(e,t){b.fn[e]=function(n,r){var i=b.map(this,t,n);return at.test(e)||(r=n),r&&"string"==typeof r&&(i=b.filter(r,i)),i=this.length>1&&!ct[e]?b.unique(i):i,this.length>1&&st.test(e)&&(i=i.reverse()),this.pushStack(i)}}),b.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),1===t.length?b.find.matchesSelector(t[0],e)?[t[0]]:[]:b.find.matches(e,t)},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!b(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(t=t||0,b.isFunction(t))return b.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return b.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=b.grep(e,function(e){return 1===e.nodeType});if(ut.test(t))return b.filter(t,r,!n);t=b.filter(t,r)}return b.grep(e,function(e){return b.inArray(e,t)>=0===n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Nt=/^(?:checkbox|radio)$/i,Ct=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={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:b.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(o),Dt=jt.appendChild(o.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,b.fn.extend({text:function(e){return b.access(this,function(e){return e===t?b.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(b.isFunction(e))return this.each(function(t){b(this).wrapAll(e.call(this,t))});if(this[0]){var t=b(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return b.isFunction(e)?this.each(function(t){b(this).wrapInner(e.call(this,t))}):this.each(function(){var t=b(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=b.isFunction(e);return this.each(function(n){b(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){b.nodeName(this,"body")||b(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.insertBefore(e,this.firstChild)})},before:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=0;for(;null!=(n=this[r]);r++)(!e||b.filter(e,[n]).length>0)&&(t||1!==n.nodeType||b.cleanData(Ot(n)),n.parentNode&&(t&&b.contains(n.ownerDocument,n)&&Mt(Ot(n,"script")),n.parentNode.removeChild(n)));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&b.cleanData(Ot(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&b.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return b.clone(this,e,t)})},html:function(e){return b.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!b.support.htmlSerialize&&mt.test(e)||!b.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(b.cleanData(Ot(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){var t=b.isFunction(e);return t||"string"==typeof e||(e=b(e).not(this).detach()),this.domManip([e],!0,function(e){var t=this.nextSibling,n=this.parentNode;n&&(b(this).remove(),n.insertBefore(e,t))})},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=f.apply([],e);var i,o,a,s,u,l,c=0,p=this.length,d=this,h=p-1,g=e[0],m=b.isFunction(g);if(m||!(1>=p||"string"!=typeof g||b.support.checkClone)&&Ct.test(g))return this.each(function(i){var o=d.eq(i);m&&(e[0]=g.call(this,i,n?o.html():t)),o.domManip(e,n,r)});if(p&&(l=b.buildFragment(e,this[0].ownerDocument,!1,this),i=l.firstChild,1===l.childNodes.length&&(l=i),i)){for(n=n&&b.nodeName(i,"tr"),s=b.map(Ot(l,"script"),Ht),a=s.length;p>c;c++)o=l,c!==h&&(o=b.clone(o,!0,!0),a&&b.merge(s,Ot(o,"script"))),r.call(n&&b.nodeName(this[c],"table")?Lt(this[c],"tbody"):this[c],o,c);if(a)for(u=s[s.length-1].ownerDocument,b.map(s,qt),c=0;a>c;c++)o=s[c],kt.test(o.type||"")&&!b._data(o,"globalEval")&&b.contains(u,o)&&(o.src?b.ajax({url:o.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):b.globalEval((o.text||o.textContent||o.innerHTML||"").replace(St,"")));l=i=null}return this}});function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function Ht(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Mt(e,t){var n,r=0;for(;null!=(n=e[r]);r++)b._data(n,"globalEval",!t||b._data(t[r],"globalEval"))}function _t(e,t){if(1===t.nodeType&&b.hasData(e)){var n,r,i,o=b._data(e),a=b._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)b.event.add(t,n,s[n][r])}a.data&&(a.data=b.extend({},a.data))}}function Ft(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!b.support.noCloneEvent&&t[b.expando]){i=b._data(t);for(r in i.events)b.removeEvent(t,r,i.handle);t.removeAttribute(b.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),b.support.html5Clone&&e.innerHTML&&!b.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Nt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){b.fn[e]=function(e){var n,r=0,i=[],o=b(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),b(o[r])[t](n),d.apply(i,n.get());return this.pushStack(i)}});function Ot(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||b.nodeName(o,n)?s.push(o):b.merge(s,Ot(o,n));return n===t||n&&b.nodeName(e,n)?b.merge([e],s):s}function Bt(e){Nt.test(e.type)&&(e.defaultChecked=e.checked)}b.extend({clone:function(e,t,n){var r,i,o,a,s,u=b.contains(e.ownerDocument,e);if(b.support.html5Clone||b.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(b.support.noCloneEvent&&b.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||b.isXMLDoc(e)))for(r=Ot(o),s=Ot(e),a=0;null!=(i=s[a]);++a)r[a]&&Ft(i,r[a]);if(t)if(n)for(s=s||Ot(e),r=r||Ot(o),a=0;null!=(i=s[a]);a++)_t(i,r[a]);else _t(e,o);return r=Ot(o,"script"),r.length>0&&Mt(r,!u&&Ot(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,u,l,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===b.type(o))b.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),u=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[u]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!b.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!b.support.tbody){o="table"!==u||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)b.nodeName(l=o.childNodes[i],"tbody")&&!l.childNodes.length&&o.removeChild(l)
5
+ }b.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),b.support.appendChecked||b.grep(Ot(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===b.inArray(o,r))&&(a=b.contains(o.ownerDocument,o),s=Ot(f.appendChild(o),"script"),a&&Mt(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,u=b.expando,l=b.cache,p=b.support.deleteExpando,f=b.event.special;for(;null!=(n=e[s]);s++)if((t||b.acceptData(n))&&(o=n[u],a=o&&l[o])){if(a.events)for(r in a.events)f[r]?b.event.remove(n,r):b.removeEvent(n,r,a.handle);l[o]&&(delete l[o],p?delete n[u]:typeof n.removeAttribute!==i?n.removeAttribute(u):n[u]=null,c.push(o))}}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+x+")(.*)$","i"),Yt=RegExp("^("+x+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+x+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===b.css(e,"display")||!b.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=b._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=b._data(r,"olddisplay",un(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&b._data(r,"olddisplay",i?n:b.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}b.fn.extend({css:function(e,n){return b.access(this,function(e,n,r){var i,o,a={},s=0;if(b.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=b.css(e,n[s],!1,o);return a}return r!==t?b.style(e,n,r):b.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:nn(this))?b(this).show():b(this).hide()})}}),b.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,u=b.camelCase(n),l=e.style;if(n=b.cssProps[u]||(b.cssProps[u]=tn(l,u)),s=b.cssHooks[n]||b.cssHooks[u],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:l[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(b.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||b.cssNumber[u]||(r+="px"),b.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(l[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{l[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,u=b.camelCase(n);return n=b.cssProps[u]||(b.cssProps[u]=tn(e.style,u)),s=b.cssHooks[n]||b.cssHooks[u],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||b.isNumeric(o)?o||0:a):a},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s.getPropertyValue(n)||s[n]:t,l=e.style;return s&&(""!==u||b.contains(e.ownerDocument,e)||(u=b.style(e,n)),Yt.test(u)&&Ut.test(n)&&(i=l.width,o=l.minWidth,a=l.maxWidth,l.minWidth=l.maxWidth=l.width=u,u=s.width,l.width=i,l.minWidth=o,l.maxWidth=a)),u}):o.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s[n]:t,l=e.style;return null==u&&l&&l[n]&&(u=l[n]),Yt.test(u)&&!zt.test(n)&&(i=l.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),l.left="fontSize"===n?"1em":u,u=l.pixelLeft+"px",l.left=i,a&&(o.left=a)),""===u?"auto":u});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=b.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=b.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=b.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=b.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=b.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(b.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function un(e){var t=o,n=Gt[e];return n||(n=ln(e,t),"none"!==n&&n||(Pt=(Pt||b("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=ln(e,t),Pt.detach()),Gt[e]=n),n}function ln(e,t){var n=b(t.createElement(e)).appendTo(t.body),r=b.css(n[0],"display");return n.remove(),r}b.each(["height","width"],function(e,n){b.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(b.css(e,"display"))?b.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,i),i):0)}}}),b.support.opacity||(b.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=b.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===b.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),b(function(){b.support.reliableMarginRight||(b.cssHooks.marginRight={get:function(e,n){return n?b.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!b.support.pixelPosition&&b.fn.position&&b.each(["top","left"],function(e,n){b.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?b(e).position()[n]+"px":r):t}}})}),b.expr&&b.expr.filters&&(b.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!b.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||b.css(e,"display"))},b.expr.filters.visible=function(e){return!b.expr.filters.hidden(e)}),b.each({margin:"",padding:"",border:"Width"},function(e,t){b.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(b.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;b.fn.extend({serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=b.prop(this,"elements");return e?b.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!b(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Nt.test(e))}).map(function(e,t){var n=b(this).val();return null==n?null:b.isArray(n)?b.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),b.param=function(e,n){var r,i=[],o=function(e,t){t=b.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=b.ajaxSettings&&b.ajaxSettings.traditional),b.isArray(e)||e.jquery&&!b.isPlainObject(e))b.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(b.isArray(t))b.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==b.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}b.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(e,t){b.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),b.fn.hover=function(e,t){return this.mouseenter(e).mouseleave(t||e)};var mn,yn,vn=b.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Nn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Cn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=b.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=a.href}catch(Ln){yn=o.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(w)||[];if(b.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(u){var l;return o[u]=!0,b.each(e[u]||[],function(e,u){var c=u(n,r,i);return"string"!=typeof c||a||o[c]?a?!(l=c):t:(n.dataTypes.unshift(c),s(c),!1)}),l}return s(n.dataTypes[0])||!o["*"]&&s("*")}function Mn(e,n){var r,i,o=b.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&b.extend(!0,e,r),e}b.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,u=e.indexOf(" ");return u>=0&&(i=e.slice(u,e.length),e=e.slice(0,u)),b.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&b.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?b("<div>").append(b.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},b.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){b.fn[t]=function(e){return this.on(t,e)}}),b.each(["get","post"],function(e,n){b[n]=function(e,r,i,o){return b.isFunction(r)&&(o=o||i,i=r,r=t),b.ajax({url:e,type:n,dataType:o,data:r,success:i})}}),b.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Nn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,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"},converters:{"* text":e.String,"text html":!0,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Mn(Mn(e,b.ajaxSettings),t):Mn(b.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,u,l,c,p=b.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?b(f):b.event,h=b.Deferred(),g=b.Callbacks("once memory"),m=p.statusCode||{},y={},v={},x=0,T="canceled",N={readyState:0,getResponseHeader:function(e){var t;if(2===x){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===x?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return x||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return x||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>x)for(t in e)m[t]=[m[t],e[t]];else N.always(e[N.status]);return this},abort:function(e){var t=e||T;return l&&l.abort(t),k(0,t),this}};if(h.promise(N).complete=g.add,N.success=N.done,N.error=N.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=b.trim(p.dataType||"*").toLowerCase().match(w)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?80:443))==(mn[3]||("http:"===mn[1]?80:443)))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=b.param(p.data,p.traditional)),qn(An,p,n,N),2===x)return N;u=p.global,u&&0===b.active++&&b.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Cn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(b.lastModified[o]&&N.setRequestHeader("If-Modified-Since",b.lastModified[o]),b.etag[o]&&N.setRequestHeader("If-None-Match",b.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&N.setRequestHeader("Content-Type",p.contentType),N.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)N.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,N,p)===!1||2===x))return N.abort();T="abort";for(i in{success:1,error:1,complete:1})N[i](p[i]);if(l=qn(jn,p,n,N)){N.readyState=1,u&&d.trigger("ajaxSend",[N,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){N.abort("timeout")},p.timeout));try{x=1,l.send(y,k)}catch(C){if(!(2>x))throw C;k(-1,C)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,C=n;2!==x&&(x=2,s&&clearTimeout(s),l=t,a=i||"",N.readyState=e>0?4:0,r&&(w=_n(p,N,r)),e>=200&&300>e||304===e?(p.ifModified&&(T=N.getResponseHeader("Last-Modified"),T&&(b.lastModified[o]=T),T=N.getResponseHeader("etag"),T&&(b.etag[o]=T)),204===e?(c=!0,C="nocontent"):304===e?(c=!0,C="notmodified"):(c=Fn(p,w),C=c.state,y=c.data,v=c.error,c=!v)):(v=C,(e||!C)&&(C="error",0>e&&(e=0))),N.status=e,N.statusText=(n||C)+"",c?h.resolveWith(f,[y,C,N]):h.rejectWith(f,[N,C,v]),N.statusCode(m),m=t,u&&d.trigger(c?"ajaxSuccess":"ajaxError",[N,p,c?y:v]),g.fireWith(f,[N,C]),u&&(d.trigger("ajaxComplete",[N,p]),--b.active||b.event.trigger("ajaxStop")))}return N},getScript:function(e,n){return b.get(e,t,n,"script")},getJSON:function(e,t,n){return b.get(e,t,n,"json")}});function _n(e,n,r){var i,o,a,s,u=e.contents,l=e.dataTypes,c=e.responseFields;for(s in c)s in r&&(n[c[s]]=r[s]);while("*"===l[0])l.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in u)if(u[s]&&u[s].test(o)){l.unshift(s);break}if(l[0]in r)a=l[0];else{for(s in r){if(!l[0]||e.converters[s+" "+l[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==l[0]&&l.unshift(a),r[a]):t}function Fn(e,t){var n,r,i,o,a={},s=0,u=e.dataTypes.slice(),l=u[0];if(e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u[1])for(i in e.converters)a[i.toLowerCase()]=e.converters[i];for(;r=u[++s];)if("*"!==r){if("*"!==l&&l!==r){if(i=a[l+" "+r]||a["* "+r],!i)for(n in a)if(o=n.split(" "),o[1]===r&&(i=a[l+" "+o[0]]||a["* "+o[0]])){i===!0?i=a[n]:a[n]!==!0&&(r=o[0],u.splice(s--,0,r));break}if(i!==!0)if(i&&e["throws"])t=i(t);else try{t=i(t)}catch(c){return{state:"parsererror",error:i?c:"No conversion from "+l+" to "+r}}}l=r}return{state:"success",data:t}}b.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return b.globalEval(e),e}}}),b.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),b.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=o.head||b("head")[0]||o.documentElement;return{send:function(t,i){n=o.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var On=[],Bn=/(=)\?(?=&|$)|\?\?/;b.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=On.pop()||b.expando+"_"+vn++;return this[e]=!0,e}}),b.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,u=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return u||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=b.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,u?n[u]=n[u].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||b.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,On.push(o)),s&&b.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}b.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=b.ajaxSettings.xhr(),b.support.cors=!!Rn&&"withCredentials"in Rn,Rn=b.support.ajax=!!Rn,Rn&&b.ajaxTransport(function(n){if(!n.crossDomain||b.support.cors){var r;return{send:function(i,o){var a,s,u=n.xhr();if(n.username?u.open(n.type,n.url,n.async,n.username,n.password):u.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)u[s]=n.xhrFields[s];n.mimeType&&u.overrideMimeType&&u.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)u.setRequestHeader(s,i[s])}catch(l){}u.send(n.hasContent&&n.data||null),r=function(e,i){var s,l,c,p;try{if(r&&(i||4===u.readyState))if(r=t,a&&(u.onreadystatechange=b.noop,$n&&delete Pn[a]),i)4!==u.readyState&&u.abort();else{p={},s=u.status,l=u.getAllResponseHeaders(),"string"==typeof u.responseText&&(p.text=u.responseText);try{c=u.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,l)},n.async?4===u.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},b(e).unload($n)),Pn[a]=r),u.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+x+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n,r,i=this.createTween(e,t),o=Yn.exec(t),a=i.cur(),s=+a||0,u=1,l=20;if(o){if(n=+o[2],r=o[3]||(b.cssNumber[e]?"":"px"),"px"!==r&&s){s=b.css(i.elem,e,!0)||n||1;do u=u||".5",s/=u,b.style(i.elem,e,s+r);while(u!==(u=i.cur()/a)&&1!==u&&--l)}i.unit=r,i.start=s,i.end=o[1]?s+(o[1]+1)*n:n}return i}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=b.now()}function Zn(e,t){b.each(t,function(t,n){var r=(Qn[t]||[]).concat(Qn["*"]),i=0,o=r.length;for(;o>i;i++)if(r[i].call(e,t,n))return})}function er(e,t,n){var r,i,o=0,a=Gn.length,s=b.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,o=1-r,a=0,u=l.tweens.length;for(;u>a;a++)l.tweens[a].run(o);return s.notifyWith(e,[l,o,n]),1>o&&u?n:(s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:b.extend({},t),opts:b.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=b.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)l.tweens[n].run(1);return t?s.resolveWith(e,[l,t]):s.rejectWith(e,[l,t]),this}}),c=l.props;for(tr(c,l.opts.specialEasing);a>o;o++)if(r=Gn[o].call(l,e,c,l.opts))return r;return Zn(l,c),b.isFunction(l.opts.start)&&l.opts.start.call(e,l),b.fx.timer(b.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function tr(e,t){var n,r,i,o,a;for(i in e)if(r=b.camelCase(i),o=t[r],n=e[i],b.isArray(n)&&(o=n[1],n=e[i]=n[0]),i!==r&&(e[r]=n,delete e[i]),a=b.cssHooks[r],a&&"expand"in a){n=a.expand(n),delete e[r];for(i in n)i in e||(e[i]=n[i],t[i]=o)}else t[r]=o}b.Animation=b.extend(er,{tweener:function(e,t){b.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,u,l,c,p,f=this,d=e.style,h={},g=[],m=e.nodeType&&nn(e);n.queue||(c=b._queueHooks(e,"fx"),null==c.unqueued&&(c.unqueued=0,p=c.empty.fire,c.empty.fire=function(){c.unqueued||p()}),c.unqueued++,f.always(function(){f.always(function(){c.unqueued--,b.queue(e,"fx").length||c.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[d.overflow,d.overflowX,d.overflowY],"inline"===b.css(e,"display")&&"none"===b.css(e,"float")&&(b.support.inlineBlockNeedsLayout&&"inline"!==un(e.nodeName)?d.zoom=1:d.display="inline-block")),n.overflow&&(d.overflow="hidden",b.support.shrinkWrapBlocks||f.always(function(){d.overflow=n.overflow[0],d.overflowX=n.overflow[1],d.overflowY=n.overflow[2]}));for(i in t)if(a=t[i],Vn.exec(a)){if(delete t[i],u=u||"toggle"===a,a===(m?"hide":"show"))continue;g.push(i)}if(o=g.length){s=b._data(e,"fxshow")||b._data(e,"fxshow",{}),"hidden"in s&&(m=s.hidden),u&&(s.hidden=!m),m?b(e).show():f.done(function(){b(e).hide()}),f.done(function(){var t;b._removeData(e,"fxshow");for(t in h)b.style(e,t,h[t])});for(i=0;o>i;i++)r=g[i],l=f.createTween(r,m?s[r]:0),h[r]=s[r]||b.style(e,r),r in s||(s[r]=l.start,m&&(l.end=l.start,l.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}b.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(b.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?b.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=b.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){b.fx.step[e.prop]?b.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[b.cssProps[e.prop]]||b.cssHooks[e.prop])?b.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},b.each(["toggle","show","hide"],function(e,t){var n=b.fn[t];b.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),b.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=b.isEmptyObject(e),o=b.speed(t,n,r),a=function(){var t=er(this,b.extend({},e),o);a.finish=function(){t.stop(!0)},(i||b._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=b.timers,a=b._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&b.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=b._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=b.timers,a=r?r.length:0;for(n.finish=!0,b.queue(this,e,[]),i&&i.cur&&i.cur.finish&&i.cur.finish.call(this),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}b.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){b.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),b.speed=function(e,t,n){var r=e&&"object"==typeof e?b.extend({},e):{complete:n||!n&&t||b.isFunction(e)&&e,duration:e,easing:n&&t||t&&!b.isFunction(t)&&t};return r.duration=b.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in b.fx.speeds?b.fx.speeds[r.duration]:b.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){b.isFunction(r.old)&&r.old.call(this),r.queue&&b.dequeue(this,r.queue)},r},b.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},b.timers=[],b.fx=rr.prototype.init,b.fx.tick=function(){var e,n=b.timers,r=0;for(Xn=b.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||b.fx.stop(),Xn=t},b.fx.timer=function(e){e()&&b.timers.push(e)&&b.fx.start()},b.fx.interval=13,b.fx.start=function(){Un||(Un=setInterval(b.fx.tick,b.fx.interval))},b.fx.stop=function(){clearInterval(Un),Un=null},b.fx.speeds={slow:600,fast:200,_default:400},b.fx.step={},b.expr&&b.expr.filters&&(b.expr.filters.animated=function(e){return b.grep(b.timers,function(t){return e===t.elem}).length}),b.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){b.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,b.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},b.offset={setOffset:function(e,t,n){var r=b.css(e,"position");"static"===r&&(e.style.position="relative");var i=b(e),o=i.offset(),a=b.css(e,"top"),s=b.css(e,"left"),u=("absolute"===r||"fixed"===r)&&b.inArray("auto",[a,s])>-1,l={},c={},p,f;u?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),b.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(l.top=t.top-o.top+p),null!=t.left&&(l.left=t.left-o.left+f),"using"in t?t.using.call(e,l):i.css(l)}},b.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===b.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),b.nodeName(e[0],"html")||(n=e.offset()),n.top+=b.css(e[0],"borderTopWidth",!0),n.left+=b.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-b.css(r,"marginTop",!0),left:t.left-n.left-b.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||o.documentElement;while(e&&!b.nodeName(e,"html")&&"static"===b.css(e,"position"))e=e.offsetParent;return e||o.documentElement})}}),b.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);b.fn[e]=function(i){return b.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?b(a).scrollLeft():o,r?o:b(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return b.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}b.each({Height:"height",Width:"width"},function(e,n){b.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){b.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return b.access(this,function(n,r,i){var o;return b.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?b.css(n,r,s):b.style(n,r,i,s)},n,a?i:t,a,null)}})}),e.jQuery=e.$=b,"function"==typeof define&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return b})})(window);
skin/adminhtml/default/default/sendinblue/js/jquery-ui.min.js ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*! jQuery UI - v1.10.2 - 2013-03-14
2
+ * http://jqueryui.com
3
+ * Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.sortable.js, jquery.ui.effect.js, jquery.ui.accordion.js, jquery.ui.autocomplete.js, jquery.ui.button.js, jquery.ui.datepicker.js, jquery.ui.dialog.js, jquery.ui.effect-blind.js, jquery.ui.effect-bounce.js, jquery.ui.effect-clip.js, jquery.ui.effect-drop.js, jquery.ui.effect-explode.js, jquery.ui.effect-fade.js, jquery.ui.effect-fold.js, jquery.ui.effect-highlight.js, jquery.ui.effect-pulsate.js, jquery.ui.effect-scale.js, jquery.ui.effect-shake.js, jquery.ui.effect-slide.js, jquery.ui.effect-transfer.js, jquery.ui.menu.js, jquery.ui.position.js, jquery.ui.progressbar.js, jquery.ui.slider.js, jquery.ui.spinner.js, jquery.ui.tabs.js, jquery.ui.tooltip.js
4
+ * Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
5
+ (function(t,e){function i(e,i){var n,o,a,r=e.nodeName.toLowerCase();return"area"===r?(n=e.parentNode,o=n.name,e.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap=#"+o+"]")[0],!!a&&s(a)):!1):(/input|select|textarea|button|object/.test(r)?!e.disabled:"a"===r?e.href||i:i)&&s(e)}function s(e){return t.expr.filters.visible(e)&&!t(e).parents().addBack().filter(function(){return"hidden"===t.css(this,"visibility")}).length}var n=0,o=/^ui-id-\d+$/;t.ui=t.ui||{},t.extend(t.ui,{version:"1.10.2",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),t.fn.extend({focus:function(e){return function(i,s){return"number"==typeof i?this.each(function(){var e=this;setTimeout(function(){t(e).focus(),s&&s.call(e)},i)}):e.apply(this,arguments)}}(t.fn.focus),scrollParent:function(){var e;return e=t.ui.ie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(t.css(this,"position"))&&/(auto|scroll)/.test(t.css(this,"overflow")+t.css(this,"overflow-y")+t.css(this,"overflow-x"))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(t.css(this,"overflow")+t.css(this,"overflow-y")+t.css(this,"overflow-x"))}).eq(0),/fixed/.test(this.css("position"))||!e.length?t(document):e},zIndex:function(i){if(i!==e)return this.css("zIndex",i);if(this.length)for(var s,n,o=t(this[0]);o.length&&o[0]!==document;){if(s=o.css("position"),("absolute"===s||"relative"===s||"fixed"===s)&&(n=parseInt(o.css("zIndex"),10),!isNaN(n)&&0!==n))return n;o=o.parent()}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++n)})},removeUniqueId:function(){return this.each(function(){o.test(this.id)&&t(this).removeAttr("id")})}}),t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])},focusable:function(e){return i(e,!isNaN(t.attr(e,"tabindex")))},tabbable:function(e){var s=t.attr(e,"tabindex"),n=isNaN(s);return(n||s>=0)&&i(e,!n)}}),t("<a>").outerWidth(1).jquery||t.each(["Width","Height"],function(i,s){function n(e,i,s,n){return t.each(o,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),n&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var o="Width"===s?["Left","Right"]:["Top","Bottom"],a=s.toLowerCase(),r={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+s]=function(i){return i===e?r["inner"+s].call(this):this.each(function(){t(this).css(a,n(this,i)+"px")})},t.fn["outer"+s]=function(e,i){return"number"!=typeof e?r["outer"+s].call(this,e):this.each(function(){t(this).css(a,n(this,e,!0,i)+"px")})}}),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(t.fn.removeData=function(e){return function(i){return arguments.length?e.call(this,t.camelCase(i)):e.call(this)}}(t.fn.removeData)),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),t.support.selectstart="onselectstart"in document.createElement("div"),t.fn.extend({disableSelection:function(){return this.bind((t.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(t){t.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),t.extend(t.ui,{plugin:{add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i){var s,n=t.plugins[e];if(n&&t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType)for(s=0;n.length>s;s++)t.options[n[s][0]]&&n[s][1].apply(t.element,i)}},hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)}})})(jQuery),function(t,e){var i=0,s=Array.prototype.slice,n=t.cleanData;t.cleanData=function(e){for(var i,s=0;null!=(i=e[s]);s++)try{t(i).triggerHandler("remove")}catch(o){}n(e)},t.widget=function(i,s,n){var o,a,r,h,l={},c=i.split(".")[0];i=i.split(".")[1],o=c+"-"+i,n||(n=s,s=t.Widget),t.expr[":"][o.toLowerCase()]=function(e){return!!t.data(e,o)},t[c]=t[c]||{},a=t[c][i],r=t[c][i]=function(t,i){return this._createWidget?(arguments.length&&this._createWidget(t,i),e):new r(t,i)},t.extend(r,a,{version:n.version,_proto:t.extend({},n),_childConstructors:[]}),h=new s,h.options=t.widget.extend({},h.options),t.each(n,function(i,n){return t.isFunction(n)?(l[i]=function(){var t=function(){return s.prototype[i].apply(this,arguments)},e=function(t){return s.prototype[i].apply(this,t)};return function(){var i,s=this._super,o=this._superApply;return this._super=t,this._superApply=e,i=n.apply(this,arguments),this._super=s,this._superApply=o,i}}(),e):(l[i]=n,e)}),r.prototype=t.widget.extend(h,{widgetEventPrefix:a?h.widgetEventPrefix:i},l,{constructor:r,namespace:c,widgetName:i,widgetFullName:o}),a?(t.each(a._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,r,i._proto)}),delete a._childConstructors):s._childConstructors.push(r),t.widget.bridge(i,r)},t.widget.extend=function(i){for(var n,o,a=s.call(arguments,1),r=0,h=a.length;h>r;r++)for(n in a[r])o=a[r][n],a[r].hasOwnProperty(n)&&o!==e&&(i[n]=t.isPlainObject(o)?t.isPlainObject(i[n])?t.widget.extend({},i[n],o):t.widget.extend({},o):o);return i},t.widget.bridge=function(i,n){var o=n.prototype.widgetFullName||i;t.fn[i]=function(a){var r="string"==typeof a,h=s.call(arguments,1),l=this;return a=!r&&h.length?t.widget.extend.apply(null,[a].concat(h)):a,r?this.each(function(){var s,n=t.data(this,o);return n?t.isFunction(n[a])&&"_"!==a.charAt(0)?(s=n[a].apply(n,h),s!==n&&s!==e?(l=s&&s.jquery?l.pushStack(s.get()):s,!1):e):t.error("no such method '"+a+"' for "+i+" widget instance"):t.error("cannot call methods on "+i+" prior to initialization; "+"attempted to call method '"+a+"'")}):this.each(function(){var e=t.data(this,o);e?e.option(a||{})._init():t.data(this,o,new n(a,this))}),l}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this.bindings=t(),this.hoverable=t(),this.focusable=t(),s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:t.noop,_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(t.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:t.noop,widget:function(){return this.element},option:function(i,s){var n,o,a,r=i;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof i)if(r={},n=i.split("."),i=n.shift(),n.length){for(o=r[i]=t.widget.extend({},this.options[i]),a=0;n.length-1>a;a++)o[n[a]]=o[n[a]]||{},o=o[n[a]];if(i=n.pop(),s===e)return o[i]===e?null:o[i];o[i]=s}else{if(s===e)return this.options[i]===e?null:this.options[i];r[i]=s}return this._setOptions(r),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return this.options[t]=e,"disabled"===t&&(this.widget().toggleClass(this.widgetFullName+"-disabled ui-state-disabled",!!e).attr("aria-disabled",e),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_on:function(i,s,n){var o,a=this;"boolean"!=typeof i&&(n=s,s=i,i=!1),n?(s=o=t(s),this.bindings=this.bindings.add(s)):(n=s,s=this.element,o=this.widget()),t.each(n,function(n,r){function h(){return i||a.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof r?a[r]:r).apply(a,arguments):e}"string"!=typeof r&&(h.guid=r.guid=r.guid||h.guid||t.guid++);var l=n.match(/^(\w+)\s*(.*)$/),c=l[1]+a.eventNamespace,u=l[2];u?o.delegate(u,c,h):s.bind(c,h)})},_off:function(t,e){e=(e||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.unbind(e).undelegate(e)},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){t(e.currentTarget).addClass("ui-state-hover")},mouseleave:function(e){t(e.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){t(e.currentTarget).addClass("ui-state-focus")},focusout:function(e){t(e.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}})}(jQuery),function(t){var e=!1;t(document).mouseup(function(){e=!1}),t.widget("ui.mouse",{version:"1.10.2",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.bind("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).bind("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):undefined}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&t(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(i){if(!e){this._mouseStarted&&this._mouseUp(i),this._mouseDownEvent=i;var s=this,n=1===i.which,o="string"==typeof this.options.cancel&&i.target.nodeName?t(i.target).closest(this.options.cancel).length:!1;return n&&!o&&this._mouseCapture(i)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){s.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(i)&&this._mouseDelayMet(i)&&(this._mouseStarted=this._mouseStart(i)!==!1,!this._mouseStarted)?(i.preventDefault(),!0):(!0===t.data(i.target,this.widgetName+".preventClickEvent")&&t.removeData(i.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return s._mouseMove(t)},this._mouseUpDelegate=function(t){return s._mouseUp(t)},t(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),i.preventDefault(),e=!0,!0)):!0}},_mouseMove:function(e){return t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button?this._mouseUp(e):this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){return t(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),!1},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}})}(jQuery),function(t){t.widget("ui.draggable",t.ui.mouse,{version:"1.10.2",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"!==this.options.helper||/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._mouseInit()},_destroy:function(){this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy()},_mouseCapture:function(e){var i=this.options;return this.helper||i.disabled||t(e.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(e),this.handle?(t(i.iframeFix===!0?"iframe":i.iframeFix).each(function(){t("<div class='ui-draggable-iframeFix' style='background: #fff;'></div>").css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(t(this).offset()).appendTo("body")}),!0):!1)},_mouseStart:function(e){var i=this.options;return this.helper=this._createHelper(e),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),t.ui.ddmanager&&(t.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},t.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(e),this.originalPageX=e.pageX,this.originalPageY=e.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),i.containment&&this._setContainment(),this._trigger("start",e)===!1?(this._clear(),!1):(this._cacheHelperProportions(),t.ui.ddmanager&&!i.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this._mouseDrag(e,!0),t.ui.ddmanager&&t.ui.ddmanager.dragStart(this,e),!0)},_mouseDrag:function(e,i){if(this.position=this._generatePosition(e),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",e,s)===!1)return this._mouseUp({}),!1;this.position=s.position}return this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),!1},_mouseStop:function(e){var i,s=this,n=!1,o=!1;for(t.ui.ddmanager&&!this.options.dropBehaviour&&(o=t.ui.ddmanager.drop(this,e)),this.dropped&&(o=this.dropped,this.dropped=!1),i=this.element[0];i&&(i=i.parentNode);)i===document&&(n=!0);return n||"original"!==this.options.helper?("invalid"===this.options.revert&&!o||"valid"===this.options.revert&&o||this.options.revert===!0||t.isFunction(this.options.revert)&&this.options.revert.call(this.element,o)?t(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){s._trigger("stop",e)!==!1&&s._clear()}):this._trigger("stop",e)!==!1&&this._clear(),!1):!1},_mouseUp:function(e){return t("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),t.ui.ddmanager&&t.ui.ddmanager.dragStop(this,e),t.ui.mouse.prototype._mouseUp.call(this,e)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(e){return this.options.handle?!!t(e.target).closest(this.element.find(this.options.handle)).length:!0},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper)?t(i.helper.apply(this.element[0],[e])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return s.parents("body").length||s.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s[0]===this.element[0]||/(fixed|absolute)/.test(s.css("position"))||s.css("position","absolute"),s},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var e=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===document.body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&t.ui.ie)&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var t=this.element.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options;if("parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=["document"===n.containment?0:t(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,"document"===n.containment?0:t(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,("document"===n.containment?0:t(window).scrollLeft())+t("document"===n.containment?document:window).width()-this.helperProportions.width-this.margins.left,("document"===n.containment?0:t(window).scrollTop())+(t("document"===n.containment?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||n.containment.constructor===Array)n.containment.constructor===Array&&(this.containment=n.containment);else{if(i=t(n.containment),s=i[0],!s)return;e="hidden"!==t(s).css("overflow"),this.containment=[(parseInt(t(s).css("borderLeftWidth"),10)||0)+(parseInt(t(s).css("paddingLeft"),10)||0),(parseInt(t(s).css("borderTopWidth"),10)||0)+(parseInt(t(s).css("paddingTop"),10)||0),(e?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(t(s).css("borderRightWidth"),10)||0)-(parseInt(t(s).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(e?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(t(s).css("borderBottomWidth"),10)||0)-(parseInt(t(s).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=i}},_convertPositionTo:function(e,i){i||(i=this.position);var s="absolute"===e?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())*s}},_generatePosition:function(e){var i,s,n,o,a=this.options,r="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName),l=e.pageX,c=e.pageY;return this.originalPosition&&(this.containment&&(this.relative_container?(s=this.relative_container.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,e.pageX-this.offset.click.left<i[0]&&(l=i[0]+this.offset.click.left),e.pageY-this.offset.click.top<i[1]&&(c=i[1]+this.offset.click.top),e.pageX-this.offset.click.left>i[2]&&(l=i[2]+this.offset.click.left),e.pageY-this.offset.click.top>i[3]&&(c=i[3]+this.offset.click.top)),a.grid&&(n=a.grid[1]?this.originalPageY+Math.round((c-this.originalPageY)/a.grid[1])*a.grid[1]:this.originalPageY,c=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-a.grid[1]:n+a.grid[1]:n,o=a.grid[0]?this.originalPageX+Math.round((l-this.originalPageX)/a.grid[0])*a.grid[0]:this.originalPageX,l=i?o-this.offset.click.left>=i[0]||o-this.offset.click.left>i[2]?o:o-this.offset.click.left>=i[0]?o-a.grid[0]:o+a.grid[0]:o)),{top:c-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:l-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1},_trigger:function(e,i,s){return s=s||this._uiHash(),t.ui.plugin.call(this,e,[i,s]),"drag"===e&&(this.positionAbs=this._convertPositionTo("absolute")),t.Widget.prototype._trigger.call(this,e,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),t.ui.plugin.add("draggable","connectToSortable",{start:function(e,i){var s=t(this).data("ui-draggable"),n=s.options,o=t.extend({},i,{item:s.element});s.sortables=[],t(n.connectToSortable).each(function(){var i=t.data(this,"ui-sortable");i&&!i.options.disabled&&(s.sortables.push({instance:i,shouldRevert:i.options.revert}),i.refreshPositions(),i._trigger("activate",e,o))})},stop:function(e,i){var s=t(this).data("ui-draggable"),n=t.extend({},i,{item:s.element});t.each(s.sortables,function(){this.instance.isOver?(this.instance.isOver=0,s.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=this.shouldRevert),this.instance._mouseStop(e),this.instance.options.helper=this.instance.options._helper,"original"===s.options.helper&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",e,n))})},drag:function(e,i){var s=t(this).data("ui-draggable"),n=this;t.each(s.sortables,function(){var o=!1,a=this;this.instance.positionAbs=s.positionAbs,this.instance.helperProportions=s.helperProportions,this.instance.offset.click=s.offset.click,this.instance._intersectsWith(this.instance.containerCache)&&(o=!0,t.each(s.sortables,function(){return this.instance.positionAbs=s.positionAbs,this.instance.helperProportions=s.helperProportions,this.instance.offset.click=s.offset.click,this!==a&&this.instance._intersectsWith(this.instance.containerCache)&&t.contains(a.instance.element[0],this.instance.element[0])&&(o=!1),o})),o?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=t(n).clone().removeAttr("id").appendTo(this.instance.element).data("ui-sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return i.helper[0]},e.target=this.instance.currentItem[0],this.instance._mouseCapture(e,!0),this.instance._mouseStart(e,!0,!0),this.instance.offset.click.top=s.offset.click.top,this.instance.offset.click.left=s.offset.click.left,this.instance.offset.parent.left-=s.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=s.offset.parent.top-this.instance.offset.parent.top,s._trigger("toSortable",e),s.dropped=this.instance.element,s.currentItem=s.element,this.instance.fromOutside=s),this.instance.currentItem&&this.instance._mouseDrag(e)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",e,this.instance._uiHash(this.instance)),this.instance._mouseStop(e,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),s._trigger("fromSortable",e),s.dropped=!1)})}}),t.ui.plugin.add("draggable","cursor",{start:function(){var e=t("body"),i=t(this).data("ui-draggable").options;e.css("cursor")&&(i._cursor=e.css("cursor")),e.css("cursor",i.cursor)},stop:function(){var e=t(this).data("ui-draggable").options;e._cursor&&t("body").css("cursor",e._cursor)}}),t.ui.plugin.add("draggable","opacity",{start:function(e,i){var s=t(i.helper),n=t(this).data("ui-draggable").options;s.css("opacity")&&(n._opacity=s.css("opacity")),s.css("opacity",n.opacity)},stop:function(e,i){var s=t(this).data("ui-draggable").options;s._opacity&&t(i.helper).css("opacity",s._opacity)}}),t.ui.plugin.add("draggable","scroll",{start:function(){var e=t(this).data("ui-draggable");e.scrollParent[0]!==document&&"HTML"!==e.scrollParent[0].tagName&&(e.overflowOffset=e.scrollParent.offset())},drag:function(e){var i=t(this).data("ui-draggable"),s=i.options,n=!1;i.scrollParent[0]!==document&&"HTML"!==i.scrollParent[0].tagName?(s.axis&&"x"===s.axis||(i.overflowOffset.top+i.scrollParent[0].offsetHeight-e.pageY<s.scrollSensitivity?i.scrollParent[0].scrollTop=n=i.scrollParent[0].scrollTop+s.scrollSpeed:e.pageY-i.overflowOffset.top<s.scrollSensitivity&&(i.scrollParent[0].scrollTop=n=i.scrollParent[0].scrollTop-s.scrollSpeed)),s.axis&&"y"===s.axis||(i.overflowOffset.left+i.scrollParent[0].offsetWidth-e.pageX<s.scrollSensitivity?i.scrollParent[0].scrollLeft=n=i.scrollParent[0].scrollLeft+s.scrollSpeed:e.pageX-i.overflowOffset.left<s.scrollSensitivity&&(i.scrollParent[0].scrollLeft=n=i.scrollParent[0].scrollLeft-s.scrollSpeed))):(s.axis&&"x"===s.axis||(e.pageY-t(document).scrollTop()<s.scrollSensitivity?n=t(document).scrollTop(t(document).scrollTop()-s.scrollSpeed):t(window).height()-(e.pageY-t(document).scrollTop())<s.scrollSensitivity&&(n=t(document).scrollTop(t(document).scrollTop()+s.scrollSpeed))),s.axis&&"y"===s.axis||(e.pageX-t(document).scrollLeft()<s.scrollSensitivity?n=t(document).scrollLeft(t(document).scrollLeft()-s.scrollSpeed):t(window).width()-(e.pageX-t(document).scrollLeft())<s.scrollSensitivity&&(n=t(document).scrollLeft(t(document).scrollLeft()+s.scrollSpeed)))),n!==!1&&t.ui.ddmanager&&!s.dropBehaviour&&t.ui.ddmanager.prepareOffsets(i,e)}}),t.ui.plugin.add("draggable","snap",{start:function(){var e=t(this).data("ui-draggable"),i=e.options;e.snapElements=[],t(i.snap.constructor!==String?i.snap.items||":data(ui-draggable)":i.snap).each(function(){var i=t(this),s=i.offset();this!==e.element[0]&&e.snapElements.push({item:this,width:i.outerWidth(),height:i.outerHeight(),top:s.top,left:s.left})})},drag:function(e,i){var s,n,o,a,r,h,l,c,u,d,p=t(this).data("ui-draggable"),f=p.options,g=f.snapTolerance,m=i.offset.left,v=m+p.helperProportions.width,_=i.offset.top,b=_+p.helperProportions.height;for(u=p.snapElements.length-1;u>=0;u--)r=p.snapElements[u].left,h=r+p.snapElements[u].width,l=p.snapElements[u].top,c=l+p.snapElements[u].height,m>r-g&&h+g>m&&_>l-g&&c+g>_||m>r-g&&h+g>m&&b>l-g&&c+g>b||v>r-g&&h+g>v&&_>l-g&&c+g>_||v>r-g&&h+g>v&&b>l-g&&c+g>b?("inner"!==f.snapMode&&(s=g>=Math.abs(l-b),n=g>=Math.abs(c-_),o=g>=Math.abs(r-v),a=g>=Math.abs(h-m),s&&(i.position.top=p._convertPositionTo("relative",{top:l-p.helperProportions.height,left:0}).top-p.margins.top),n&&(i.position.top=p._convertPositionTo("relative",{top:c,left:0}).top-p.margins.top),o&&(i.position.left=p._convertPositionTo("relative",{top:0,left:r-p.helperProportions.width}).left-p.margins.left),a&&(i.position.left=p._convertPositionTo("relative",{top:0,left:h}).left-p.margins.left)),d=s||n||o||a,"outer"!==f.snapMode&&(s=g>=Math.abs(l-_),n=g>=Math.abs(c-b),o=g>=Math.abs(r-m),a=g>=Math.abs(h-v),s&&(i.position.top=p._convertPositionTo("relative",{top:l,left:0}).top-p.margins.top),n&&(i.position.top=p._convertPositionTo("relative",{top:c-p.helperProportions.height,left:0}).top-p.margins.top),o&&(i.position.left=p._convertPositionTo("relative",{top:0,left:r}).left-p.margins.left),a&&(i.position.left=p._convertPositionTo("relative",{top:0,left:h-p.helperProportions.width}).left-p.margins.left)),!p.snapElements[u].snapping&&(s||n||o||a||d)&&p.options.snap.snap&&p.options.snap.snap.call(p.element,e,t.extend(p._uiHash(),{snapItem:p.snapElements[u].item})),p.snapElements[u].snapping=s||n||o||a||d):(p.snapElements[u].snapping&&p.options.snap.release&&p.options.snap.release.call(p.element,e,t.extend(p._uiHash(),{snapItem:p.snapElements[u].item})),p.snapElements[u].snapping=!1)}}),t.ui.plugin.add("draggable","stack",{start:function(){var e,i=this.data("ui-draggable").options,s=t.makeArray(t(i.stack)).sort(function(e,i){return(parseInt(t(e).css("zIndex"),10)||0)-(parseInt(t(i).css("zIndex"),10)||0)});s.length&&(e=parseInt(t(s[0]).css("zIndex"),10)||0,t(s).each(function(i){t(this).css("zIndex",e+i)}),this.css("zIndex",e+s.length))}}),t.ui.plugin.add("draggable","zIndex",{start:function(e,i){var s=t(i.helper),n=t(this).data("ui-draggable").options;s.css("zIndex")&&(n._zIndex=s.css("zIndex")),s.css("zIndex",n.zIndex)},stop:function(e,i){var s=t(this).data("ui-draggable").options;s._zIndex&&t(i.helper).css("zIndex",s._zIndex)}})}(jQuery),function(t){function e(t,e,i){return t>e&&e+i>t}t.widget("ui.droppable",{version:"1.10.2",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var e=this.options,i=e.accept;this.isover=!1,this.isout=!0,this.accept=t.isFunction(i)?i:function(t){return t.is(i)},this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight},t.ui.ddmanager.droppables[e.scope]=t.ui.ddmanager.droppables[e.scope]||[],t.ui.ddmanager.droppables[e.scope].push(this),e.addClasses&&this.element.addClass("ui-droppable")
6
+ },_destroy:function(){for(var e=0,i=t.ui.ddmanager.droppables[this.options.scope];i.length>e;e++)i[e]===this&&i.splice(e,1);this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(e,i){"accept"===e&&(this.accept=t.isFunction(i)?i:function(t){return t.is(i)}),t.Widget.prototype._setOption.apply(this,arguments)},_activate:function(e){var i=t.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),i&&this._trigger("activate",e,this.ui(i))},_deactivate:function(e){var i=t.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),i&&this._trigger("deactivate",e,this.ui(i))},_over:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",e,this.ui(i)))},_out:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",e,this.ui(i)))},_drop:function(e,i){var s=i||t.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var e=t.data(this,"ui-droppable");return e.options.greedy&&!e.options.disabled&&e.options.scope===s.options.scope&&e.accept.call(e.element[0],s.currentItem||s.element)&&t.ui.intersect(s,t.extend(e,{offset:e.element.offset()}),e.options.tolerance)?(n=!0,!1):undefined}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",e,this.ui(s)),this.element):!1):!1},ui:function(t){return{draggable:t.currentItem||t.element,helper:t.helper,position:t.position,offset:t.positionAbs}}}),t.ui.intersect=function(t,i,s){if(!i.offset)return!1;var n,o,a=(t.positionAbs||t.position.absolute).left,r=a+t.helperProportions.width,h=(t.positionAbs||t.position.absolute).top,l=h+t.helperProportions.height,c=i.offset.left,u=c+i.proportions.width,d=i.offset.top,p=d+i.proportions.height;switch(s){case"fit":return a>=c&&u>=r&&h>=d&&p>=l;case"intersect":return a+t.helperProportions.width/2>c&&u>r-t.helperProportions.width/2&&h+t.helperProportions.height/2>d&&p>l-t.helperProportions.height/2;case"pointer":return n=(t.positionAbs||t.position.absolute).left+(t.clickOffset||t.offset.click).left,o=(t.positionAbs||t.position.absolute).top+(t.clickOffset||t.offset.click).top,e(o,d,i.proportions.height)&&e(n,c,i.proportions.width);case"touch":return(h>=d&&p>=h||l>=d&&p>=l||d>h&&l>p)&&(a>=c&&u>=a||r>=c&&u>=r||c>a&&r>u);default:return!1}},t.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(e,i){var s,n,o=t.ui.ddmanager.droppables[e.options.scope]||[],a=i?i.type:null,r=(e.currentItem||e.element).find(":data(ui-droppable)").addBack();t:for(s=0;o.length>s;s++)if(!(o[s].options.disabled||e&&!o[s].accept.call(o[s].element[0],e.currentItem||e.element))){for(n=0;r.length>n;n++)if(r[n]===o[s].element[0]){o[s].proportions.height=0;continue t}o[s].visible="none"!==o[s].element.css("display"),o[s].visible&&("mousedown"===a&&o[s]._activate.call(o[s],i),o[s].offset=o[s].element.offset(),o[s].proportions={width:o[s].element[0].offsetWidth,height:o[s].element[0].offsetHeight})}},drop:function(e,i){var s=!1;return t.each((t.ui.ddmanager.droppables[e.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&t.ui.intersect(e,this,this.options.tolerance)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(e,i){e.element.parentsUntil("body").bind("scroll.droppable",function(){e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)})},drag:function(e,i){e.options.refreshPositions&&t.ui.ddmanager.prepareOffsets(e,i),t.each(t.ui.ddmanager.droppables[e.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,o,a=t.ui.intersect(e,this,this.options.tolerance),r=!a&&this.isover?"isout":a&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,o=this.element.parents(":data(ui-droppable)").filter(function(){return t.data(this,"ui-droppable").options.scope===n}),o.length&&(s=t.data(o[0],"ui-droppable"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(e,i){e.element.parentsUntil("body").unbind("scroll.droppable"),e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)}}}(jQuery),function(t){function e(t){return parseInt(t,10)||0}function i(t){return!isNaN(parseInt(t,10))}t.widget("ui.resizable",t.ui.mouse,{version:"1.10.2",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_create:function(){var e,i,s,n,o,a=this,r=this.options;if(this.element.addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!r.aspectRatio,aspectRatio:r.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:r.helper||r.ghost||r.animate?r.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(t("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.data("ui-resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=r.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),e=this.handles.split(","),this.handles={},i=0;e.length>i;i++)s=t.trim(e[i]),o="ui-resizable-"+s,n=t("<div class='ui-resizable-handle "+o+"'></div>"),n.css({zIndex:r.zIndex}),"se"===s&&n.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[s]=".ui-resizable-"+s,this.element.append(n);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String&&(this.handles[i]=t(this.handles[i],this.element).show()),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),t(this.handles[i]).length},this._renderAxis(this.element),this._handles=t(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){a.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),a.axis=n&&n[1]?n[1]:"se")}),r.autoHide&&(this._handles.hide(),t(this.element).addClass("ui-resizable-autohide").mouseenter(function(){r.disabled||(t(this).removeClass("ui-resizable-autohide"),a._handles.show())}).mouseleave(function(){r.disabled||a.resizing||(t(this).addClass("ui-resizable-autohide"),a._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(i){var s,n,o,a=this.options,r=this.element.position(),h=this.element;return this.resizing=!0,/absolute/.test(h.css("position"))?h.css({position:"absolute",top:h.css("top"),left:h.css("left")}):h.is(".ui-draggable")&&h.css({position:"absolute",top:r.top,left:r.left}),this._renderProxy(),s=e(this.helper.css("left")),n=e(this.helper.css("top")),a.containment&&(s+=t(a.containment).scrollLeft()||0,n+=t(a.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:s,top:n},this.size=this._helper?{width:h.outerWidth(),height:h.outerHeight()}:{width:h.width(),height:h.height()},this.originalSize=this._helper?{width:h.outerWidth(),height:h.outerHeight()}:{width:h.width(),height:h.height()},this.originalPosition={left:s,top:n},this.sizeDiff={width:h.outerWidth()-h.width(),height:h.outerHeight()-h.height()},this.originalMousePosition={left:i.pageX,top:i.pageY},this.aspectRatio="number"==typeof a.aspectRatio?a.aspectRatio:this.originalSize.width/this.originalSize.height||1,o=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===o?this.axis+"-resize":o),h.addClass("ui-resizable-resizing"),this._propagate("start",i),!0},_mouseDrag:function(e){var i,s=this.helper,n={},o=this.originalMousePosition,a=this.axis,r=this.position.top,h=this.position.left,l=this.size.width,c=this.size.height,u=e.pageX-o.left||0,d=e.pageY-o.top||0,p=this._change[a];return p?(i=p.apply(this,[e,u,d]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),this.position.top!==r&&(n.top=this.position.top+"px"),this.position.left!==h&&(n.left=this.position.left+"px"),this.size.width!==l&&(n.width=this.size.width+"px"),this.size.height!==c&&(n.height=this.size.height+"px"),s.css(n),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(n)||this._trigger("resize",e,this.ui()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&t.ui.hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null,h=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updateVirtualBoundaries:function(t){var e,s,n,o,a,r=this.options;a={minWidth:i(r.minWidth)?r.minWidth:0,maxWidth:i(r.maxWidth)?r.maxWidth:1/0,minHeight:i(r.minHeight)?r.minHeight:0,maxHeight:i(r.maxHeight)?r.maxHeight:1/0},(this._aspectRatio||t)&&(e=a.minHeight*this.aspectRatio,n=a.minWidth/this.aspectRatio,s=a.maxHeight*this.aspectRatio,o=a.maxWidth/this.aspectRatio,e>a.minWidth&&(a.minWidth=e),n>a.minHeight&&(a.minHeight=n),a.maxWidth>s&&(a.maxWidth=s),a.maxHeight>o&&(a.maxHeight=o)),this._vBoundaries=a},_updateCache:function(t){this.offset=this.helper.offset(),i(t.left)&&(this.position.left=t.left),i(t.top)&&(this.position.top=t.top),i(t.height)&&(this.size.height=t.height),i(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,s=this.size,n=this.axis;return i(t.height)?t.width=t.height*this.aspectRatio:i(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===n&&(t.left=e.left+(s.width-t.width),t.top=null),"nw"===n&&(t.top=e.top+(s.height-t.height),t.left=e.left+(s.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,s=this.axis,n=i(t.width)&&e.maxWidth&&e.maxWidth<t.width,o=i(t.height)&&e.maxHeight&&e.maxHeight<t.height,a=i(t.width)&&e.minWidth&&e.minWidth>t.width,r=i(t.height)&&e.minHeight&&e.minHeight>t.height,h=this.originalPosition.left+this.originalSize.width,l=this.position.top+this.size.height,c=/sw|nw|w/.test(s),u=/nw|ne|n/.test(s);return a&&(t.width=e.minWidth),r&&(t.height=e.minHeight),n&&(t.width=e.maxWidth),o&&(t.height=e.maxHeight),a&&c&&(t.left=h-e.minWidth),n&&c&&(t.left=h-e.maxWidth),r&&u&&(t.top=l-e.minHeight),o&&u&&(t.top=l-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_proportionallyResize:function(){if(this._proportionallyResizeElements.length){var t,e,i,s,n,o=this.helper||this.element;for(t=0;this._proportionallyResizeElements.length>t;t++){if(n=this._proportionallyResizeElements[t],!this.borderDif)for(this.borderDif=[],i=[n.css("borderTopWidth"),n.css("borderRightWidth"),n.css("borderBottomWidth"),n.css("borderLeftWidth")],s=[n.css("paddingTop"),n.css("paddingRight"),n.css("paddingBottom"),n.css("paddingLeft")],e=0;i.length>e;e++)this.borderDif[e]=(parseInt(i[e],10)||0)+(parseInt(s[e],10)||0);n.css({height:o.height()-this.borderDif[0]-this.borderDif[2]||0,width:o.width()-this.borderDif[1]-this.borderDif[3]||0})}}},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("<div style='overflow:hidden;'></div>"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).data("ui-resizable"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&t.ui.hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseInt(i.element.css("left"),10)+(i.position.left-i.originalPosition.left)||null,c=parseInt(i.element.css("top"),10)+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseInt(i.element.css("width"),10),height:parseInt(i.element.css("height"),10),top:parseInt(i.element.css("top"),10),left:parseInt(i.element.css("left"),10)};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var i,s,n,o,a,r,h,l=t(this).data("ui-resizable"),c=l.options,u=l.element,d=c.containment,p=d instanceof t?d.get(0):/parent/.test(d)?u.parent().get(0):d;p&&(l.containerElement=t(p),/document/.test(d)||d===document?(l.containerOffset={left:0,top:0},l.containerPosition={left:0,top:0},l.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(i=t(p),s=[],t(["Top","Right","Left","Bottom"]).each(function(t,n){s[t]=e(i.css("padding"+n))}),l.containerOffset=i.offset(),l.containerPosition=i.position(),l.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},n=l.containerOffset,o=l.containerSize.height,a=l.containerSize.width,r=t.ui.hasScroll(p,"left")?p.scrollWidth:a,h=t.ui.hasScroll(p)?p.scrollHeight:o,l.parentData={element:p,left:n.left,top:n.top,width:r,height:h}))},resize:function(e){var i,s,n,o,a=t(this).data("ui-resizable"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio),a.position.top=a._helper?h.top:0),a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top,i=Math.abs((a._helper?a.offset.left-u.left:a.offset.left-u.left)+a.sizeDiff.width),s=Math.abs((a._helper?a.offset.top-u.top:a.offset.top-h.top)+a.sizeDiff.height),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o&&(i-=a.parentData.left),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio))},stop:function(){var e=t(this).data("ui-resizable"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).data("ui-resizable"),i=e.options,s=function(e){t(e).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseInt(e.width(),10),height:parseInt(e.height(),10),left:parseInt(e.css("left"),10),top:parseInt(e.css("top"),10)})})};"object"!=typeof i.alsoResize||i.alsoResize.parentNode?s(i.alsoResize):i.alsoResize.length?(i.alsoResize=i.alsoResize[0],s(i.alsoResize)):t.each(i.alsoResize,function(t){s(t)})},resize:function(e,i){var s=t(this).data("ui-resizable"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0},h=function(e,s){t(e).each(function(){var e=t(this),n=t(this).data("ui-resizable-alsoresize"),o={},a=s&&s.length?s:e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(a,function(t,e){var i=(n[e]||0)+(r[e]||0);i&&i>=0&&(o[e]=i||null)}),e.css(o)})};"object"!=typeof n.alsoResize||n.alsoResize.nodeType?h(n.alsoResize):t.each(n.alsoResize,function(t,e){h(t,e)})},stop:function(){t(this).removeData("resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).data("ui-resizable"),i=e.options,s=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof i.ghost?i.ghost:""),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).data("ui-resizable");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).data("ui-resizable");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e=t(this).data("ui-resizable"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,a=e.axis,r="number"==typeof i.grid?[i.grid,i.grid]:i.grid,h=r[0]||1,l=r[1]||1,c=Math.round((s.width-n.width)/h)*h,u=Math.round((s.height-n.height)/l)*l,d=n.width+c,p=n.height+u,f=i.maxWidth&&d>i.maxWidth,g=i.maxHeight&&p>i.maxHeight,m=i.minWidth&&i.minWidth>d,v=i.minHeight&&i.minHeight>p;i.grid=r,m&&(d+=h),v&&(p+=l),f&&(d-=h),g&&(p-=l),/^(se|s|e)$/.test(a)?(e.size.width=d,e.size.height=p):/^(ne)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.top=o.top-u):/^(sw)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.left=o.left-c):(e.size.width=d,e.size.height=p,e.position.top=o.top-u,e.position.left=o.left-c)}})}(jQuery),function(t){t.widget("ui.selectable",t.ui.mouse,{version:"1.10.2",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var e,i=this;this.element.addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){e=t(i.options.filter,i.element[0]),e.addClass("ui-selectee"),e.each(function(){var e=t(this),i=e.offset();t.data(this,"selectable-item",{element:this,$element:e,left:i.left,top:i.top,right:i.left+e.outerWidth(),bottom:i.top+e.outerHeight(),startselected:!1,selected:e.hasClass("ui-selected"),selecting:e.hasClass("ui-selecting"),unselecting:e.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=e.addClass("ui-selectee"),this._mouseInit(),this.helper=t("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(e){var i=this,s=this.options;this.opos=[e.pageX,e.pageY],this.options.disabled||(this.selectees=t(s.filter,this.element[0]),this._trigger("start",e),t(s.appendTo).append(this.helper),this.helper.css({left:e.pageX,top:e.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=t.data(this,"selectable-item");s.startselected=!0,e.metaKey||e.ctrlKey||(s.$element.removeClass("ui-selected"),s.selected=!1,s.$element.addClass("ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",e,{unselecting:s.element}))}),t(e.target).parents().addBack().each(function(){var s,n=t.data(this,"selectable-item");return n?(s=!e.metaKey&&!e.ctrlKey||!n.$element.hasClass("ui-selected"),n.$element.removeClass(s?"ui-unselecting":"ui-selected").addClass(s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",e,{selecting:n.element}):i._trigger("unselecting",e,{unselecting:n.element}),!1):undefined}))},_mouseDrag:function(e){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,o=this.opos[0],a=this.opos[1],r=e.pageX,h=e.pageY;return o>r&&(i=r,r=o,o=i),a>h&&(i=h,h=a,a=i),this.helper.css({left:o,top:a,width:r-o,height:h-a}),this.selectees.each(function(){var i=t.data(this,"selectable-item"),l=!1;i&&i.element!==s.element[0]&&("touch"===n.tolerance?l=!(i.left>r||o>i.right||i.top>h||a>i.bottom):"fit"===n.tolerance&&(l=i.left>o&&r>i.right&&i.top>a&&h>i.bottom),l?(i.selected&&(i.$element.removeClass("ui-selected"),i.selected=!1),i.unselecting&&(i.$element.removeClass("ui-unselecting"),i.unselecting=!1),i.selecting||(i.$element.addClass("ui-selecting"),i.selecting=!0,s._trigger("selecting",e,{selecting:i.element}))):(i.selecting&&((e.metaKey||e.ctrlKey)&&i.startselected?(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.$element.addClass("ui-selected"),i.selected=!0):(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.startselected&&(i.$element.addClass("ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",e,{unselecting:i.element}))),i.selected&&(e.metaKey||e.ctrlKey||i.startselected||(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",e,{unselecting:i.element})))))}),!1}},_mouseStop:function(e){var i=this;return this.dragged=!1,t(".ui-unselecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");s.$element.removeClass("ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",e,{unselected:s.element})}),t(".ui-selecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");s.$element.removeClass("ui-selecting").addClass("ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",e,{selected:s.element})}),this._trigger("stop",e),this.helper.remove(),!1}})}(jQuery),function(t){function e(t,e,i){return t>e&&e+i>t}function i(t){return/left|right/.test(t.css("float"))||/inline|table-cell/.test(t.css("display"))}t.widget("ui.sortable",t.ui.mouse,{version:"1.10.2",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_create:function(){var t=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?"x"===t.axis||i(this.items[0].item):!1,this.offset=this.element.offset(),this._mouseInit(),this.ready=!0},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var t=this.items.length-1;t>=0;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_setOption:function(e,i){"disabled"===e?(this.options[e]=i,this.widget().toggleClass("ui-sortable-disabled",!!i)):t.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(e,i){var s=null,n=!1,o=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(e),t(e.target).parents().each(function(){return t.data(this,o.widgetName+"-item")===o?(s=t(this),!1):undefined}),t.data(e.target,o.widgetName+"-item")===o&&(s=t(e.target)),s?!this.options.handle||i||(t(this.options.handle,s).find("*").addBack().each(function(){this===e.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(e,i,s){var n,o,a=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(e),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},t.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(e),this.originalPageX=e.pageX,this.originalPageY=e.pageY,a.cursorAt&&this._adjustOffsetFromHelper(a.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),a.containment&&this._setContainment(),a.cursor&&"auto"!==a.cursor&&(o=this.document.find("body"),this.storedCursor=o.css("cursor"),o.css("cursor",a.cursor),this.storedStylesheet=t("<style>*{ cursor: "+a.cursor+" !important; }</style>").appendTo(o)),a.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",a.opacity)),a.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",a.zIndex)),this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",e,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",e,this._uiHash(this));return t.ui.ddmanager&&(t.ui.ddmanager.current=this),t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(e),!0},_mouseDrag:function(e){var i,s,n,o,a=this.options,r=!1;for(this.position=this._generatePosition(e),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-e.pageY<a.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+a.scrollSpeed:e.pageY-this.overflowOffset.top<a.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-a.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-e.pageX<a.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+a.scrollSpeed:e.pageX-this.overflowOffset.left<a.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-a.scrollSpeed)):(e.pageY-t(document).scrollTop()<a.scrollSensitivity?r=t(document).scrollTop(t(document).scrollTop()-a.scrollSpeed):t(window).height()-(e.pageY-t(document).scrollTop())<a.scrollSensitivity&&(r=t(document).scrollTop(t(document).scrollTop()+a.scrollSpeed)),e.pageX-t(document).scrollLeft()<a.scrollSensitivity?r=t(document).scrollLeft(t(document).scrollLeft()-a.scrollSpeed):t(window).width()-(e.pageX-t(document).scrollLeft())<a.scrollSensitivity&&(r=t(document).scrollLeft(t(document).scrollLeft()+a.scrollSpeed))),r!==!1&&t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),i=this.items.length-1;i>=0;i--)if(s=this.items[i],n=s.item[0],o=this._intersectsWithPointer(s),o&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===o?"next":"prev"]()[0]!==n&&!t.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!t.contains(this.element[0],n):!0)){if(this.direction=1===o?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;
7
+ this._rearrange(e,s),this._trigger("change",e,this._uiHash());break}return this._contactContainers(e),t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),this._trigger("sort",e,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(e,i){if(e){if(t.ui.ddmanager&&!this.options.dropBehaviour&&t.ui.ddmanager.drop(this,e),this.options.revert){var s=this,n=this.placeholder.offset(),o=this.options.axis,a={};o&&"x"!==o||(a.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollLeft)),o&&"y"!==o||(a.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,t(this.helper).animate(a,parseInt(this.options.revert,10)||500,function(){s._clear(e)})}else this._clear(e,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null}),"original"===this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var e=this.containers.length-1;e>=0;e--)this.containers[e]._trigger("deactivate",null,this._uiHash(this)),this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",null,this._uiHash(this)),this.containers[e].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),t.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?t(this.domPosition.prev).after(this.currentItem):t(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},t(i).each(function(){var i=(t(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);i&&s.push((e.key||i[1]+"[]")+"="+(e.key&&e.expression?i[1]:i[2]))}),!s.length&&e.key&&s.push(e.key+"="),s.join("&")},toArray:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},i.each(function(){s.push(t(e.item||this).attr(e.attribute||"id")||"")}),s},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,o=t.left,a=o+t.width,r=t.top,h=r+t.height,l=this.offset.click.top,c=this.offset.click.left,u=s+l>r&&h>s+l&&e+c>o&&a>e+c;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>t[this.floating?"width":"height"]?u:e+this.helperProportions.width/2>o&&a>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>n-this.helperProportions.height/2},_intersectsWithPointer:function(t){var i="x"===this.options.axis||e(this.positionAbs.top+this.offset.click.top,t.top,t.height),s="y"===this.options.axis||e(this.positionAbs.left+this.offset.click.left,t.left,t.width),n=i&&s,o=this._getDragVerticalDirection(),a=this._getDragHorizontalDirection();return n?this.floating?a&&"right"===a||"down"===o?2:1:o&&("down"===o?2:1):!1},_intersectsWithSides:function(t){var i=e(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),s=e(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),n=this._getDragVerticalDirection(),o=this._getDragHorizontalDirection();return this.floating&&o?"right"===o&&s||"left"===o&&!s:n&&("down"===n&&i||"up"===n&&!i)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return 0!==t&&(t>0?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!==t&&(t>0?"right":"left")},refresh:function(t){return this._refreshItems(t),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(e){var i,s,n,o,a=[],r=[],h=this._connectWith();if(h&&e)for(i=h.length-1;i>=0;i--)for(n=t(h[i]),s=n.length-1;s>=0;s--)o=t.data(n[s],this.widgetFullName),o&&o!==this&&!o.options.disabled&&r.push([t.isFunction(o.options.items)?o.options.items.call(o.element):t(o.options.items,o.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),o]);for(r.push([t.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):t(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),i=r.length-1;i>=0;i--)r[i][0].each(function(){a.push(this)});return t(a)},_removeCurrentsFromItems:function(){var e=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=t.grep(this.items,function(t){for(var i=0;e.length>i;i++)if(e[i]===t.item[0])return!1;return!0})},_refreshItems:function(e){this.items=[],this.containers=[this];var i,s,n,o,a,r,h,l,c=this.items,u=[[t.isFunction(this.options.items)?this.options.items.call(this.element[0],e,{item:this.currentItem}):t(this.options.items,this.element),this]],d=this._connectWith();if(d&&this.ready)for(i=d.length-1;i>=0;i--)for(n=t(d[i]),s=n.length-1;s>=0;s--)o=t.data(n[s],this.widgetFullName),o&&o!==this&&!o.options.disabled&&(u.push([t.isFunction(o.options.items)?o.options.items.call(o.element[0],e,{item:this.currentItem}):t(o.options.items,o.element),o]),this.containers.push(o));for(i=u.length-1;i>=0;i--)for(a=u[i][1],r=u[i][0],s=0,l=r.length;l>s;s++)h=t(r[s]),h.data(this.widgetName+"-item",a),c.push({item:h,instance:a,width:0,height:0,left:0,top:0})},refreshPositions:function(e){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,o;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?t(this.options.toleranceElement,s.item):s.item,e||(s.width=n.outerWidth(),s.height=n.outerHeight()),o=n.offset(),s.left=o.left,s.top=o.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)o=this.containers[i].element.offset(),this.containers[i].containerCache.left=o.left,this.containers[i].containerCache.top=o.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(e){e=e||this;var i,s=e.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=e.currentItem[0].nodeName.toLowerCase(),n=t(e.document[0].createElement(s)).addClass(i||e.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper");return"tr"===s?n.append("<td colspan='99'>&#160;</td>"):"img"===s&&n.attr("src",e.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(t,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(e.currentItem.innerHeight()-parseInt(e.currentItem.css("paddingTop")||0,10)-parseInt(e.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(e.currentItem.innerWidth()-parseInt(e.currentItem.css("paddingLeft")||0,10)-parseInt(e.currentItem.css("paddingRight")||0,10)))}}),e.placeholder=t(s.placeholder.element.call(e.element,e.currentItem)),e.currentItem.after(e.placeholder),s.placeholder.update(e,e.placeholder)},_contactContainers:function(s){var n,o,a,r,h,l,c,u,d,p,f=null,g=null;for(n=this.containers.length-1;n>=0;n--)if(!t.contains(this.currentItem[0],this.containers[n].element[0]))if(this._intersectsWith(this.containers[n].containerCache)){if(f&&t.contains(this.containers[n].element[0],f.element[0]))continue;f=this.containers[n],g=n}else this.containers[n].containerCache.over&&(this.containers[n]._trigger("out",s,this._uiHash(this)),this.containers[n].containerCache.over=0);if(f)if(1===this.containers.length)this.containers[g].containerCache.over||(this.containers[g]._trigger("over",s,this._uiHash(this)),this.containers[g].containerCache.over=1);else{for(a=1e4,r=null,p=f.floating||i(this.currentItem),h=p?"left":"top",l=p?"width":"height",c=this.positionAbs[h]+this.offset.click[h],o=this.items.length-1;o>=0;o--)t.contains(this.containers[g].element[0],this.items[o].item[0])&&this.items[o].item[0]!==this.currentItem[0]&&(!p||e(this.positionAbs.top+this.offset.click.top,this.items[o].top,this.items[o].height))&&(u=this.items[o].item.offset()[h],d=!1,Math.abs(u-c)>Math.abs(u+this.items[o][l]-c)&&(d=!0,u+=this.items[o][l]),a>Math.abs(u-c)&&(a=Math.abs(u-c),r=this.items[o],this.direction=d?"up":"down"));if(!r&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[g])return;r?this._rearrange(s,r,null,!0):this._rearrange(s,null,this.containers[g].element,!0),this._trigger("change",s,this._uiHash()),this.containers[g]._trigger("change",s,this._uiHash(this)),this.currentContainer=this.containers[g],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[g]._trigger("over",s,this._uiHash(this)),this.containers[g].containerCache.over=1}},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper)?t(i.helper.apply(this.element[0],[e,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||t("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var e=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===document.body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&t.ui.ie)&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var t=this.currentItem.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,t("document"===n.containment?document:window).width()-this.helperProportions.width-this.margins.left,(t("document"===n.containment?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(e=t(n.containment)[0],i=t(n.containment).offset(),s="hidden"!==t(e).css("overflow"),this.containment=[i.left+(parseInt(t(e).css("borderLeftWidth"),10)||0)+(parseInt(t(e).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(t(e).css("borderTopWidth"),10)||0)+(parseInt(t(e).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(e.scrollWidth,e.offsetWidth):e.offsetWidth)-(parseInt(t(e).css("borderLeftWidth"),10)||0)-(parseInt(t(e).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(e.scrollHeight,e.offsetHeight):e.offsetHeight)-(parseInt(t(e).css("borderTopWidth"),10)||0)-(parseInt(t(e).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(e,i){i||(i=this.position);var s="absolute"===e?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())*s}},_generatePosition:function(e){var i,s,n=this.options,o=e.pageX,a=e.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==document&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(e.pageX-this.offset.click.left<this.containment[0]&&(o=this.containment[0]+this.offset.click.left),e.pageY-this.offset.click.top<this.containment[1]&&(a=this.containment[1]+this.offset.click.top),e.pageX-this.offset.click.left>this.containment[2]&&(o=this.containment[2]+this.offset.click.left),e.pageY-this.offset.click.top>this.containment[3]&&(a=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((a-this.originalPageY)/n.grid[1])*n.grid[1],a=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((o-this.originalPageX)/n.grid[0])*n.grid[0],o=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:a-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){this.reverting=!1;var i,s=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(i in this._storedCSS)("auto"===this._storedCSS[i]||"static"===this._storedCSS[i])&&(this._storedCSS[i]="");this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!e&&s.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||s.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(s.push(function(t){this._trigger("remove",t,this._uiHash())}),s.push(function(t){return function(e){t._trigger("receive",e,this._uiHash(this))}}.call(this,this.currentContainer)),s.push(function(t){return function(e){t._trigger("update",e,this._uiHash(this))}}.call(this,this.currentContainer)))),i=this.containers.length-1;i>=0;i--)e||s.push(function(t){return function(e){t._trigger("deactivate",e,this._uiHash(this))}}.call(this,this.containers[i])),this.containers[i].containerCache.over&&(s.push(function(t){return function(e){t._trigger("out",e,this._uiHash(this))}}.call(this,this.containers[i])),this.containers[i].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,this.cancelHelperRemoval){if(!e){for(this._trigger("beforeStop",t,this._uiHash()),i=0;s.length>i;i++)s[i].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!1}if(e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null,!e){for(i=0;s.length>i;i++)s[i].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!0},_trigger:function(){t.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(e){var i=e||this;return{helper:i.helper,placeholder:i.placeholder||t([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:e?e.element:null}}})}(jQuery),function(t,e){var i="ui-effects-";t.effects={effect:{}},function(t,e){function i(t,e,i){var s=u[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:0>t?0:t>s.max?s.max:t)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(t,o){var a,r=o.re.exec(i),h=r&&o.parse(r),l=o.space||"rgba";return h?(a=s[l](h),s[c[l].cache]=a[c[l].cache],n=s._rgba=a._rgba,!1):e}),n.length?("0,0,0,0"===n.join()&&t.extend(n,o.transparent),s):o[i]}function n(t,e,i){return i=(i+1)%1,1>6*i?t+6*(e-t)*i:1>2*i?e:2>3*i?t+6*(e-t)*(2/3-i):t}var o,a="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[t[1],t[2],t[3],t[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[2.55*t[1],2.55*t[2],2.55*t[3],t[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(t){return[t[1],t[2]/100,t[3]/100,t[4]]}}],l=t.Color=function(e,i,s,n){return new t.Color.fn.parse(e,i,s,n)},c={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},u={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},d=l.support={},p=t("<p>")[0],f=t.each;p.style.cssText="background-color:rgba(1,1,1,.5)",d.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(c,function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}}),l.fn=t.extend(l.prototype,{parse:function(n,a,r,h){if(n===e)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=t(n).css(a),a=e);var u=this,d=t.type(n),p=this._rgba=[];return a!==e&&(n=[n,a,r,h],d="array"),"string"===d?this.parse(s(n)||o._default):"array"===d?(f(c.rgba.props,function(t,e){p[e.idx]=i(n[e.idx],e)}),this):"object"===d?(n instanceof l?f(c,function(t,e){n[e.cache]&&(u[e.cache]=n[e.cache].slice())}):f(c,function(e,s){var o=s.cache;f(s.props,function(t,e){if(!u[o]&&s.to){if("alpha"===t||null==n[t])return;u[o]=s.to(u._rgba)}u[o][e.idx]=i(n[t],e,!0)}),u[o]&&0>t.inArray(null,u[o].slice(0,3))&&(u[o][3]=1,s.from&&(u._rgba=s.from(u[o])))}),this):e},is:function(t){var i=l(t),s=!0,n=this;return f(c,function(t,o){var a,r=i[o.cache];return r&&(a=n[o.cache]||o.to&&o.to(n._rgba)||[],f(o.props,function(t,i){return null!=r[i.idx]?s=r[i.idx]===a[i.idx]:e})),s}),s},_space:function(){var t=[],e=this;return f(c,function(i,s){e[s.cache]&&t.push(i)}),t.pop()},transition:function(t,e){var s=l(t),n=s._space(),o=c[n],a=0===this.alpha()?l("transparent"):this,r=a[o.cache]||o.to(a._rgba),h=r.slice();return s=s[o.cache],f(o.props,function(t,n){var o=n.idx,a=r[o],l=s[o],c=u[n.type]||{};null!==l&&(null===a?h[o]=l:(c.mod&&(l-a>c.mod/2?a+=c.mod:a-l>c.mod/2&&(a-=c.mod)),h[o]=i((l-a)*e+a,n)))}),this[n](h)},blend:function(e){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(e)._rgba;return l(t.map(i,function(t,e){return(1-s)*n[e]+s*t}))},toRgbaString:function(){var e="rgba(",i=t.map(this._rgba,function(t,e){return null==t?e>2?1:0:t});return 1===i[3]&&(i.pop(),e="rgb("),e+i.join()+")"},toHslaString:function(){var e="hsla(",i=t.map(this.hsla(),function(t,e){return null==t&&(t=e>2?1:0),e&&3>e&&(t=Math.round(100*t)+"%"),t});return 1===i[3]&&(i.pop(),e="hsl("),e+i.join()+")"},toHexString:function(e){var i=this._rgba.slice(),s=i.pop();return e&&i.push(~~(255*s)),"#"+t.map(i,function(t){return t=(t||0).toString(16),1===t.length?"0"+t:t}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,c.hsla.to=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e,i,s=t[0]/255,n=t[1]/255,o=t[2]/255,a=t[3],r=Math.max(s,n,o),h=Math.min(s,n,o),l=r-h,c=r+h,u=.5*c;return e=h===r?0:s===r?60*(n-o)/l+360:n===r?60*(o-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=u?l/c:l/(2-c),[Math.round(e)%360,i,u,null==a?1:a]},c.hsla.from=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/360,i=t[1],s=t[2],o=t[3],a=.5>=s?s*(1+i):s+i-s*i,r=2*s-a;return[Math.round(255*n(r,a,e+1/3)),Math.round(255*n(r,a,e)),Math.round(255*n(r,a,e-1/3)),o]},f(c,function(s,n){var o=n.props,a=n.cache,h=n.to,c=n.from;l.fn[s]=function(s){if(h&&!this[a]&&(this[a]=h(this._rgba)),s===e)return this[a].slice();var n,r=t.type(s),u="array"===r||"object"===r?s:arguments,d=this[a].slice();return f(o,function(t,e){var s=u["object"===r?t:e.idx];null==s&&(s=d[e.idx]),d[e.idx]=i(s,e)}),c?(n=l(c(d)),n[a]=d,n):l(d)},f(o,function(e,i){l.fn[e]||(l.fn[e]=function(n){var o,a=t.type(n),h="alpha"===e?this._hsla?"hsla":"rgba":s,l=this[h](),c=l[i.idx];return"undefined"===a?c:("function"===a&&(n=n.call(this,c),a=t.type(n)),null==n&&i.empty?this:("string"===a&&(o=r.exec(n),o&&(n=c+parseFloat(o[2])*("+"===o[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(e){var i=e.split(" ");f(i,function(e,i){t.cssHooks[i]={set:function(e,n){var o,a,r="";if("transparent"!==n&&("string"!==t.type(n)||(o=s(n)))){if(n=l(o||n),!d.rgba&&1!==n._rgba[3]){for(a="backgroundColor"===i?e.parentNode:e;(""===r||"transparent"===r)&&a&&a.style;)try{r=t.css(a,"backgroundColor"),a=a.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{e.style[i]=n}catch(h){}}},t.fx.step[i]=function(e){e.colorInit||(e.start=l(e.elem,i),e.end=l(e.end),e.colorInit=!0),t.cssHooks[i].set(e.elem,e.start.transition(e.end,e.pos))}})},l.hook(a),t.cssHooks.borderColor={expand:function(t){var e={};return f(["Top","Right","Bottom","Left"],function(i,s){e["border"+s+"Color"]=t}),e}},o=t.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(jQuery),function(){function i(e){var i,s,n=e.ownerDocument.defaultView?e.ownerDocument.defaultView.getComputedStyle(e,null):e.currentStyle,o={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(o[t.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(o[i]=n[i]);return o}function s(e,i){var s,n,a={};for(s in i)n=i[s],e[s]!==n&&(o[s]||(t.fx.step[s]||!isNaN(parseFloat(n)))&&(a[s]=n));return a}var n=["add","remove","toggle"],o={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};t.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(e,i){t.fx.step[i]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(jQuery.style(t.elem,i,t.end),t.setAttr=!0)}}),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.effects.animateClass=function(e,o,a,r){var h=t.speed(o,a,r);return this.queue(function(){var o,a=t(this),r=a.attr("class")||"",l=h.children?a.find("*").addBack():a;l=l.map(function(){var e=t(this);return{el:e,start:i(this)}}),o=function(){t.each(n,function(t,i){e[i]&&a[i+"Class"](e[i])})},o(),l=l.map(function(){return this.end=i(this.el[0]),this.diff=s(this.start,this.end),this}),a.attr("class",r),l=l.map(function(){var e=this,i=t.Deferred(),s=t.extend({},h,{queue:!1,complete:function(){i.resolve(e)}});return this.el.animate(this.diff,s),i.promise()}),t.when.apply(t,l.get()).done(function(){o(),t.each(arguments,function(){var e=this.el;t.each(this.diff,function(t){e.css(t,"")})}),h.complete.call(a[0])})})},t.fn.extend({addClass:function(e){return function(i,s,n,o){return s?t.effects.animateClass.call(this,{add:i},s,n,o):e.apply(this,arguments)}}(t.fn.addClass),removeClass:function(e){return function(i,s,n,o){return arguments.length>1?t.effects.animateClass.call(this,{remove:i},s,n,o):e.apply(this,arguments)}}(t.fn.removeClass),toggleClass:function(i){return function(s,n,o,a,r){return"boolean"==typeof n||n===e?o?t.effects.animateClass.call(this,n?{add:s}:{remove:s},o,a,r):i.apply(this,arguments):t.effects.animateClass.call(this,{toggle:s},n,o,a)}}(t.fn.toggleClass),switchClass:function(e,i,s,n,o){return t.effects.animateClass.call(this,{add:i,remove:e},s,n,o)}})}(),function(){function s(e,i,s,n){return t.isPlainObject(e)&&(i=e,e=e.effect),e={effect:e},null==i&&(i={}),t.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||t.fx.speeds[i])&&(n=s,s=i,i={}),t.isFunction(s)&&(n=s,s=null),i&&t.extend(e,i),s=s||i.duration,e.duration=t.fx.off?0:"number"==typeof s?s:s in t.fx.speeds?t.fx.speeds[s]:t.fx.speeds._default,e.complete=n||i.complete,e}function n(e){return!e||"number"==typeof e||t.fx.speeds[e]?!0:"string"!=typeof e||t.effects.effect[e]?t.isFunction(e)?!0:"object"!=typeof e||e.effect?!1:!0:!0}t.extend(t.effects,{version:"1.10.2",save:function(t,e){for(var s=0;e.length>s;s++)null!==e[s]&&t.data(i+e[s],t[0].style[e[s]])},restore:function(t,s){var n,o;for(o=0;s.length>o;o++)null!==s[o]&&(n=t.data(i+s[o]),n===e&&(n=""),t.css(s[o],n))},setMode:function(t,e){return"toggle"===e&&(e=t.is(":hidden")?"show":"hide"),e},getBaseline:function(t,e){var i,s;switch(t[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=t[0]/e.height}switch(t[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=t[1]/e.width}return{x:s,y:i}},createWrapper:function(e){if(e.parent().is(".ui-effects-wrapper"))return e.parent();var i={width:e.outerWidth(!0),height:e.outerHeight(!0),"float":e.css("float")},s=t("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:e.width(),height:e.height()},o=document.activeElement;try{o.id}catch(a){o=document.body}return e.wrap(s),(e[0]===o||t.contains(e[0],o))&&t(o).focus(),s=e.parent(),"static"===e.css("position")?(s.css({position:"relative"}),e.css({position:"relative"})):(t.extend(i,{position:e.css("position"),zIndex:e.css("z-index")}),t.each(["top","left","bottom","right"],function(t,s){i[s]=e.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),e.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),e.css(n),s.css(i).show()},removeWrapper:function(e){var i=document.activeElement;return e.parent().is(".ui-effects-wrapper")&&(e.parent().replaceWith(e),(e[0]===i||t.contains(e[0],i))&&t(i).focus()),e},setTransition:function(e,i,s,n){return n=n||{},t.each(i,function(t,i){var o=e.cssUnit(i);o[0]>0&&(n[i]=o[0]*s+o[1])}),n}}),t.fn.extend({effect:function(){function e(e){function s(){t.isFunction(o)&&o.call(n[0]),t.isFunction(e)&&e()}var n=t(this),o=i.complete,r=i.mode;(n.is(":hidden")?"hide"===r:"show"===r)?(n[r](),s()):a.call(n[0],i,s)}var i=s.apply(this,arguments),n=i.mode,o=i.queue,a=t.effects.effect[i.effect];return t.fx.off||!a?n?this[n](i.duration,i.complete):this.each(function(){i.complete&&i.complete.call(this)}):o===!1?this.each(e):this.queue(o||"fx",e)},show:function(t){return function(e){if(n(e))return t.apply(this,arguments);var i=s.apply(this,arguments);return i.mode="show",this.effect.call(this,i)}}(t.fn.show),hide:function(t){return function(e){if(n(e))return t.apply(this,arguments);var i=s.apply(this,arguments);return i.mode="hide",this.effect.call(this,i)}}(t.fn.hide),toggle:function(t){return function(e){if(n(e)||"boolean"==typeof e)return t.apply(this,arguments);var i=s.apply(this,arguments);return i.mode="toggle",this.effect.call(this,i)}}(t.fn.toggle),cssUnit:function(e){var i=this.css(e),s=[];return t.each(["em","px","%","pt"],function(t,e){i.indexOf(e)>0&&(s=[parseFloat(i),e])}),s}})}(),function(){var e={};t.each(["Quad","Cubic","Quart","Quint","Expo"],function(t,i){e[i]=function(e){return Math.pow(e,t+2)}}),t.extend(e,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;((e=Math.pow(2,--i))-1)/11>t;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),t.each(e,function(e,i){t.easing["easeIn"+e]=i,t.easing["easeOut"+e]=function(t){return 1-i(1-t)},t.easing["easeInOut"+e]=function(t){return.5>t?i(2*t)/2:1-i(-2*t+2)/2}})}()}(jQuery),function(t){var e=0,i={},s={};i.height=i.paddingTop=i.paddingBottom=i.borderTopWidth=i.borderBottomWidth="hide",s.height=s.paddingTop=s.paddingBottom=s.borderTopWidth=s.borderBottomWidth="show",t.widget("ui.accordion",{version:"1.10.2",options:{active:0,animate:{},collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},_create:function(){var e=this.options;this.prevShow=this.prevHide=t(),this.element.addClass("ui-accordion ui-widget ui-helper-reset").attr("role","tablist"),e.collapsible||e.active!==!1&&null!=e.active||(e.active=0),this._processPanels(),0>e.active&&(e.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():t(),content:this.active.length?this.active.next():t()}},_createIcons:function(){var e=this.options.icons;e&&(t("<span>").addClass("ui-accordion-header-icon ui-icon "+e.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(e.header).addClass(e.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()
8
+ },_destroy:function(){var t;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){return"active"===t?(this._activate(e),undefined):("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||this.options.active!==!1||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons()),"disabled"===t&&this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!e),undefined)},_keydown:function(e){if(!e.altKey&&!e.ctrlKey){var i=t.ui.keyCode,s=this.headers.length,n=this.headers.index(e.target),o=!1;switch(e.keyCode){case i.RIGHT:case i.DOWN:o=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:o=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(e);break;case i.HOME:o=this.headers[0];break;case i.END:o=this.headers[s-1]}o&&(t(e.target).attr("tabIndex",-1),t(o).attr("tabIndex",0),o.focus(),e.preventDefault())}},_panelKeyDown:function(e){e.keyCode===t.ui.keyCode.UP&&e.ctrlKey&&t(e.currentTarget).prev().focus()},refresh:function(){var e=this.options;this._processPanels(),(e.active===!1&&e.collapsible===!0||!this.headers.length)&&(e.active=!1,this.active=t()),e.active===!1?this._activate(0):this.active.length&&!t.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(e.active=!1,this.active=t()):this._activate(Math.max(0,e.active-1)):e.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){this.headers=this.element.find(this.options.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all"),this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").filter(":not(.ui-accordion-content-active)").hide()},_refresh:function(){var i,s=this.options,n=s.heightStyle,o=this.element.parent(),a=this.accordionId="ui-accordion-"+(this.element.attr("id")||++e);this.active=this._findActive(s.active).addClass("ui-accordion-header-active ui-state-active ui-corner-top").removeClass("ui-corner-all"),this.active.next().addClass("ui-accordion-content-active").show(),this.headers.attr("role","tab").each(function(e){var i=t(this),s=i.attr("id"),n=i.next(),o=n.attr("id");s||(s=a+"-header-"+e,i.attr("id",s)),o||(o=a+"-panel-"+e,n.attr("id",o)),i.attr("aria-controls",o),n.attr("aria-labelledby",s)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false",tabIndex:-1}).next().attr({"aria-expanded":"false","aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true",tabIndex:0}).next().attr({"aria-expanded":"true","aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(s.event),"fill"===n?(i=o.height(),this.element.siblings(":visible").each(function(){var e=t(this),s=e.css("position");"absolute"!==s&&"fixed"!==s&&(i-=e.outerHeight(!0))}),this.headers.each(function(){i-=t(this).outerHeight(!0)}),this.headers.next().each(function(){t(this).height(Math.max(0,i-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===n&&(i=0,this.headers.next().each(function(){i=Math.max(i,t(this).css("height","").height())}).height(i))},_activate:function(e){var i=this._findActive(e)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return"number"==typeof e?this.headers.eq(e):t()},_setupEvents:function(e){var i={keydown:"_keydown"};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(e){var i=this.options,s=this.active,n=t(e.currentTarget),o=n[0]===s[0],a=o&&i.collapsible,r=a?t():n.next(),h=s.next(),l={oldHeader:s,oldPanel:h,newHeader:a?t():n,newPanel:r};e.preventDefault(),o&&!i.collapsible||this._trigger("beforeActivate",e,l)===!1||(i.active=a?!1:this.headers.index(n),this.active=o?t():n,this._toggle(l),s.removeClass("ui-accordion-header-active ui-state-active"),i.icons&&s.children(".ui-accordion-header-icon").removeClass(i.icons.activeHeader).addClass(i.icons.header),o||(n.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),i.icons&&n.children(".ui-accordion-header-icon").removeClass(i.icons.header).addClass(i.icons.activeHeader),n.next().addClass("ui-accordion-content-active")))},_toggle:function(e){var i=e.newPanel,s=this.prevShow.length?this.prevShow:e.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,e):(s.hide(),i.show(),this._toggleComplete(e)),s.attr({"aria-expanded":"false","aria-hidden":"true"}),s.prev().attr("aria-selected","false"),i.length&&s.length?s.prev().attr("tabIndex",-1):i.length&&this.headers.filter(function(){return 0===t(this).attr("tabIndex")}).attr("tabIndex",-1),i.attr({"aria-expanded":"true","aria-hidden":"false"}).prev().attr({"aria-selected":"true",tabIndex:0})},_animate:function(t,e,n){var o,a,r,h=this,l=0,c=t.length&&(!e.length||t.index()<e.index()),u=this.options.animate||{},d=c&&u.down||u,p=function(){h._toggleComplete(n)};return"number"==typeof d&&(r=d),"string"==typeof d&&(a=d),a=a||d.easing||u.easing,r=r||d.duration||u.duration,e.length?t.length?(o=t.show().outerHeight(),e.animate(i,{duration:r,easing:a,step:function(t,e){e.now=Math.round(t)}}),t.hide().animate(s,{duration:r,easing:a,complete:p,step:function(t,i){i.now=Math.round(t),"height"!==i.prop?l+=i.now:"content"!==h.options.heightStyle&&(i.now=Math.round(o-e.outerHeight()-l),l=0)}}),undefined):e.animate(i,r,a,p):t.animate(s,r,a,p)},_toggleComplete:function(t){var e=t.oldPanel;e.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"),e.length&&(e.parent()[0].className=e.parent()[0].className),this._trigger("activate",null,t)}})}(jQuery),function(t){var e=0;t.widget("ui.autocomplete",{version:"1.10.2",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),o="textarea"===n,a="input"===n;this.isMultiLine=o?!0:a?!1:this.element.prop("isContentEditable"),this.valueMethod=this.element[o||a?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return e=!0,s=!0,i=!0,undefined;e=!1,s=!1,i=!1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",n);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case o.UP:e=!0,this._keyEvent("previous",n);break;case o.DOWN:e=!0,this._keyEvent("next",n);break;case o.ENTER:case o.NUMPAD_ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,s.preventDefault(),undefined;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){return s?(s=!1,t.preventDefault(),undefined):(this._searchTimeout(t),undefined)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,undefined):(clearTimeout(this.searching),this.close(t),this._change(t),undefined)}}),this._initSource(),this.menu=t("<ul>").addClass("ui-autocomplete ui-front").appendTo(this._appendTo()).menu({input:t(),role:null}).hide().data("ui-menu"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var i=this.menu.element[0];t(e.target).closest(".ui-menu-item").length||this._delay(function(){var e=this;this.document.one("mousedown",function(s){s.target===e.element[0]||s.target===i||t.contains(i,s.target)||e.close()})})},menufocus:function(e,i){if(this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type)))return this.menu.blur(),this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)}),undefined;var s=i.item.data("ui-autocomplete-item");!1!==this._trigger("focus",e,{item:s})?e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(s.value):this.liveRegion.text(s.value)},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=t("<span>",{role:"status","aria-live":"polite"}).addClass("ui-helper-hidden-accessible").insertAfter(this.element),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e||(e=this.element.closest(".ui-front")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){this.term!==this._value()&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length<this.options.minLength?this.close(e):this._trigger("search",e)!==!1?this._search(t):undefined},_search:function(t){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:t},this._response())},_response:function(){var t=this,i=++e;return function(s){i===e&&t.__response(s),t.pending--,t.pending||t.element.removeClass("ui-autocomplete-loading")}},__response:function(t){t&&(t=this._normalize(t)),this._trigger("response",null,{content:t}),!this.options.disabled&&t&&t.length&&!this.cancelSearch?(this._suggest(t),this._trigger("open")):this._close()},close:function(t){this.cancelSearch=!0,this._close(t)},_close:function(t){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",t))},_change:function(t){this.previous!==this._value()&&this._trigger("change",t,{item:this.selectedItem})},_normalize:function(e){return e.length&&e[0].label&&e[0].value?e:t.map(e,function(e){return"string"==typeof e?{label:e,value:e}:t.extend({label:e.label||e.value,value:e.value||e.label},e)})},_suggest:function(e){var i=this.menu.element.empty();this._renderMenu(i,e),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(t.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var t=this.menu.element;t.outerWidth(Math.max(t.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(e,i){var s=this;t.each(i,function(t,i){s._renderItemData(e,i)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-autocomplete-item",e)},_renderItem:function(e,i){return t("<li>").append(t("<a>").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this._value(this.term),this.menu.blur(),undefined):(this.menu[t](e),undefined):(this.search(null,e),undefined)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(t){var e;this._superApply(arguments),this.options.disabled||this.cancelSearch||(e=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,this.liveRegion.text(e))}})}(jQuery),function(t){var e,i,s,n,o="ui-button ui-widget ui-state-default ui-corner-all",a="ui-state-hover ui-state-active ",r="ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",h=function(){var e=t(this).find(":ui-button");setTimeout(function(){e.button("refresh")},1)},l=function(e){var i=e.name,s=e.form,n=t([]);return i&&(i=i.replace(/'/g,"\\'"),n=s?t(s).find("[name='"+i+"']"):t("[name='"+i+"']",e.ownerDocument).filter(function(){return!this.form})),n};t.widget("ui.button",{version:"1.10.2",defaultElement:"<button>",options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset"+this.eventNamespace).bind("reset"+this.eventNamespace,h),"boolean"!=typeof this.options.disabled?this.options.disabled=!!this.element.prop("disabled"):this.element.prop("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var a=this,r=this.options,c="checkbox"===this.type||"radio"===this.type,u=c?"":"ui-state-active",d="ui-state-focus";null===r.label&&(r.label="input"===this.type?this.buttonElement.val():this.buttonElement.html()),this._hoverable(this.buttonElement),this.buttonElement.addClass(o).attr("role","button").bind("mouseenter"+this.eventNamespace,function(){r.disabled||this===e&&t(this).addClass("ui-state-active")}).bind("mouseleave"+this.eventNamespace,function(){r.disabled||t(this).removeClass(u)}).bind("click"+this.eventNamespace,function(t){r.disabled&&(t.preventDefault(),t.stopImmediatePropagation())}),this.element.bind("focus"+this.eventNamespace,function(){a.buttonElement.addClass(d)}).bind("blur"+this.eventNamespace,function(){a.buttonElement.removeClass(d)}),c&&(this.element.bind("change"+this.eventNamespace,function(){n||a.refresh()}),this.buttonElement.bind("mousedown"+this.eventNamespace,function(t){r.disabled||(n=!1,i=t.pageX,s=t.pageY)}).bind("mouseup"+this.eventNamespace,function(t){r.disabled||(i!==t.pageX||s!==t.pageY)&&(n=!0)})),"checkbox"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){return r.disabled||n?!1:undefined}):"radio"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){if(r.disabled||n)return!1;t(this).addClass("ui-state-active"),a.buttonElement.attr("aria-pressed","true");var e=a.element[0];l(e).not(e).map(function(){return t(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown"+this.eventNamespace,function(){return r.disabled?!1:(t(this).addClass("ui-state-active"),e=this,a.document.one("mouseup",function(){e=null}),undefined)}).bind("mouseup"+this.eventNamespace,function(){return r.disabled?!1:(t(this).removeClass("ui-state-active"),undefined)}).bind("keydown"+this.eventNamespace,function(e){return r.disabled?!1:((e.keyCode===t.ui.keyCode.SPACE||e.keyCode===t.ui.keyCode.ENTER)&&t(this).addClass("ui-state-active"),undefined)}).bind("keyup"+this.eventNamespace+" blur"+this.eventNamespace,function(){t(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(e){e.keyCode===t.ui.keyCode.SPACE&&t(this).click()})),this._setOption("disabled",r.disabled),this._resetButton()},_determineButtonType:function(){var t,e,i;this.type=this.element.is("[type=checkbox]")?"checkbox":this.element.is("[type=radio]")?"radio":this.element.is("input")?"input":"button","checkbox"===this.type||"radio"===this.type?(t=this.element.parents().last(),e="label[for='"+this.element.attr("id")+"']",this.buttonElement=t.find(e),this.buttonElement.length||(t=t.length?t.siblings():this.element.siblings(),this.buttonElement=t.filter(e),this.buttonElement.length||(this.buttonElement=t.find(e))),this.element.addClass("ui-helper-hidden-accessible"),i=this.element.is(":checked"),i&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.prop("aria-pressed",i)):this.buttonElement=this.element},widget:function(){return this.buttonElement},_destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(o+" "+a+" "+r).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title")},_setOption:function(t,e){return this._super(t,e),"disabled"===t?(e?this.element.prop("disabled",!0):this.element.prop("disabled",!1),undefined):(this._resetButton(),undefined)},refresh:function(){var e=this.element.is("input, button")?this.element.is(":disabled"):this.element.hasClass("ui-button-disabled");e!==this.options.disabled&&this._setOption("disabled",e),"radio"===this.type?l(this.element[0]).each(function(){t(this).is(":checked")?t(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):t(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):"checkbox"===this.type&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){if("input"===this.type)return this.options.label&&this.element.val(this.options.label),undefined;var e=this.buttonElement.removeClass(r),i=t("<span></span>",this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(e.empty()).text(),s=this.options.icons,n=s.primary&&s.secondary,o=[];s.primary||s.secondary?(this.options.text&&o.push("ui-button-text-icon"+(n?"s":s.primary?"-primary":"-secondary")),s.primary&&e.prepend("<span class='ui-button-icon-primary ui-icon "+s.primary+"'></span>"),s.secondary&&e.append("<span class='ui-button-icon-secondary ui-icon "+s.secondary+"'></span>"),this.options.text||(o.push(n?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||e.attr("title",t.trim(i)))):o.push("ui-button-text-only"),e.addClass(o.join(" "))}}),t.widget("ui.buttonset",{version:"1.10.2",options:{items:"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(t,e){"disabled"===t&&this.buttons.button("option",t,e),this._super(t,e)},refresh:function(){var e="rtl"===this.element.css("direction");this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return t(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(e?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(e?"ui-corner-left":"ui-corner-right").end().end()},_destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return t(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy")}})}(jQuery),function(t,e){function i(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},t.extend(this._defaults,this.regional[""]),this.dpDiv=s(t("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function s(e){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return e.delegate(i,"mouseout",function(){t(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).removeClass("ui-datepicker-next-hover")}).delegate(i,"mouseover",function(){t.datepicker._isDisabledDatepicker(o.inline?e.parent()[0]:o.input[0])||(t(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),t(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).addClass("ui-datepicker-next-hover"))})}function n(e,i){t.extend(e,i);for(var s in i)null==i[s]&&(e[s]=i[s]);return e}t.extend(t.ui,{datepicker:{version:"1.10.2"}});var o,a="datepicker",r=(new Date).getTime();t.extend(i.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(t){return n(this._defaults,t||{}),this},_attachDatepicker:function(e,i){var s,n,o;s=e.nodeName.toLowerCase(),n="div"===s||"span"===s,e.id||(this.uuid+=1,e.id="dp"+this.uuid),o=this._newInst(t(e),n),o.settings=t.extend({},i||{}),"input"===s?this._connectDatepicker(e,o):n&&this._inlineDatepicker(e,o)},_newInst:function(e,i){var n=e[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:n,input:e,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?s(t("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(e,i){var s=t(e);i.append=t([]),i.trigger=t([]),s.hasClass(this.markerClassName)||(this._attachments(s,i),s.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp),this._autoSize(i),t.data(e,a,i),i.settings.disabled&&this._disableDatepicker(e))},_attachments:function(e,i){var s,n,o,a=this._get(i,"appendText"),r=this._get(i,"isRTL");i.append&&i.append.remove(),a&&(i.append=t("<span class='"+this._appendClass+"'>"+a+"</span>"),e[r?"before":"after"](i.append)),e.unbind("focus",this._showDatepicker),i.trigger&&i.trigger.remove(),s=this._get(i,"showOn"),("focus"===s||"both"===s)&&e.focus(this._showDatepicker),("button"===s||"both"===s)&&(n=this._get(i,"buttonText"),o=this._get(i,"buttonImage"),i.trigger=t(this._get(i,"buttonImageOnly")?t("<img/>").addClass(this._triggerClass).attr({src:o,alt:n,title:n}):t("<button type='button'></button>").addClass(this._triggerClass).html(o?t("<img/>").attr({src:o,alt:n,title:n}):n)),e[r?"before":"after"](i.trigger),i.trigger.click(function(){return t.datepicker._datepickerShowing&&t.datepicker._lastInput===e[0]?t.datepicker._hideDatepicker():t.datepicker._datepickerShowing&&t.datepicker._lastInput!==e[0]?(t.datepicker._hideDatepicker(),t.datepicker._showDatepicker(e[0])):t.datepicker._showDatepicker(e[0]),!1}))},_autoSize:function(t){if(this._get(t,"autoSize")&&!t.inline){var e,i,s,n,o=new Date(2009,11,20),a=this._get(t,"dateFormat");a.match(/[DM]/)&&(e=function(t){for(i=0,s=0,n=0;t.length>n;n++)t[n].length>i&&(i=t[n].length,s=n);return s},o.setMonth(e(this._get(t,a.match(/MM/)?"monthNames":"monthNamesShort"))),o.setDate(e(this._get(t,a.match(/DD/)?"dayNames":"dayNamesShort"))+20-o.getDay())),t.input.attr("size",this._formatDate(t,o).length)}},_inlineDatepicker:function(e,i){var s=t(e);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),t.data(e,a,i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(e),i.dpDiv.css("display","block"))},_dialogDatepicker:function(e,i,s,o,r){var h,l,c,u,d,p=this._dialogInst;return p||(this.uuid+=1,h="dp"+this.uuid,this._dialogInput=t("<input type='text' id='"+h+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.keydown(this._doKeyDown),t("body").append(this._dialogInput),p=this._dialogInst=this._newInst(this._dialogInput,!1),p.settings={},t.data(this._dialogInput[0],a,p)),n(p.settings,o||{}),i=i&&i.constructor===Date?this._formatDate(p,i):i,this._dialogInput.val(i),this._pos=r?r.length?r:[r.pageX,r.pageY]:null,this._pos||(l=document.documentElement.clientWidth,c=document.documentElement.clientHeight,u=document.documentElement.scrollLeft||document.body.scrollLeft,d=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[l/2-100+u,c/2-150+d]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),p.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),t.blockUI&&t.blockUI(this.dpDiv),t.data(this._dialogInput[0],a,p),this},_destroyDatepicker:function(e){var i,s=t(e),n=t.data(e,a);s.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),t.removeData(e,a),"input"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):("div"===i||"span"===i)&&s.removeClass(this.markerClassName).empty())},_enableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,a);n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!1,o.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}))},_disableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,a);n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!0,o.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}),this._disabledInputs[this._disabledInputs.length]=e)},_isDisabledDatepicker:function(t){if(!t)return!1;for(var e=0;this._disabledInputs.length>e;e++)if(this._disabledInputs[e]===t)return!0;return!1},_getInst:function(e){try{return t.data(e,a)}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(i,s,o){var a,r,h,l,c=this._getInst(i);return 2===arguments.length&&"string"==typeof s?"defaults"===s?t.extend({},t.datepicker._defaults):c?"all"===s?t.extend({},c.settings):this._get(c,s):null:(a=s||{},"string"==typeof s&&(a={},a[s]=o),c&&(this._curInst===c&&this._hideDatepicker(),r=this._getDateDatepicker(i,!0),h=this._getMinMaxDate(c,"min"),l=this._getMinMaxDate(c,"max"),n(c.settings,a),null!==h&&a.dateFormat!==e&&a.minDate===e&&(c.settings.minDate=this._formatDate(c,h)),null!==l&&a.dateFormat!==e&&a.maxDate===e&&(c.settings.maxDate=this._formatDate(c,l)),"disabled"in a&&(a.disabled?this._disableDatepicker(i):this._enableDatepicker(i)),this._attachments(t(i),c),this._autoSize(c),this._setDate(c,r),this._updateAlternate(c),this._updateDatepicker(c)),e)},_changeDatepicker:function(t,e,i){this._optionDatepicker(t,e,i)},_refreshDatepicker:function(t){var e=this._getInst(t);e&&this._updateDatepicker(e)},_setDateDatepicker:function(t,e){var i=this._getInst(t);i&&(this._setDate(i,e),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(t,e){var i=this._getInst(t);return i&&!i.inline&&this._setDateFromField(i,e),i?this._getDate(i):null},_doKeyDown:function(e){var i,s,n,o=t.datepicker._getInst(e.target),a=!0,r=o.dpDiv.is(".ui-datepicker-rtl");if(o._keyEvent=!0,t.datepicker._datepickerShowing)switch(e.keyCode){case 9:t.datepicker._hideDatepicker(),a=!1;break;case 13:return n=t("td."+t.datepicker._dayOverClass+":not(."+t.datepicker._currentClass+")",o.dpDiv),n[0]&&t.datepicker._selectDay(e.target,o.selectedMonth,o.selectedYear,n[0]),i=t.datepicker._get(o,"onSelect"),i?(s=t.datepicker._formatDate(o),i.apply(o.input?o.input[0]:null,[s,o])):t.datepicker._hideDatepicker(),!1;case 27:t.datepicker._hideDatepicker();break;case 33:t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");
9
+ break;case 34:t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 35:(e.ctrlKey||e.metaKey)&&t.datepicker._clearDate(e.target),a=e.ctrlKey||e.metaKey;break;case 36:(e.ctrlKey||e.metaKey)&&t.datepicker._gotoToday(e.target),a=e.ctrlKey||e.metaKey;break;case 37:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?1:-1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 38:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,-7,"D"),a=e.ctrlKey||e.metaKey;break;case 39:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?-1:1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 40:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,7,"D"),a=e.ctrlKey||e.metaKey;break;default:a=!1}else 36===e.keyCode&&e.ctrlKey?t.datepicker._showDatepicker(this):a=!1;a&&(e.preventDefault(),e.stopPropagation())},_doKeyPress:function(i){var s,n,o=t.datepicker._getInst(i.target);return t.datepicker._get(o,"constrainInput")?(s=t.datepicker._possibleChars(t.datepicker._get(o,"dateFormat")),n=String.fromCharCode(null==i.charCode?i.keyCode:i.charCode),i.ctrlKey||i.metaKey||" ">n||!s||s.indexOf(n)>-1):e},_doKeyUp:function(e){var i,s=t.datepicker._getInst(e.target);if(s.input.val()!==s.lastVal)try{i=t.datepicker.parseDate(t.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,t.datepicker._getFormatConfig(s)),i&&(t.datepicker._setDateFromField(s),t.datepicker._updateAlternate(s),t.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(e){if(e=e.target||e,"input"!==e.nodeName.toLowerCase()&&(e=t("input",e.parentNode)[0]),!t.datepicker._isDisabledDatepicker(e)&&t.datepicker._lastInput!==e){var i,s,o,a,r,h,l;i=t.datepicker._getInst(e),t.datepicker._curInst&&t.datepicker._curInst!==i&&(t.datepicker._curInst.dpDiv.stop(!0,!0),i&&t.datepicker._datepickerShowing&&t.datepicker._hideDatepicker(t.datepicker._curInst.input[0])),s=t.datepicker._get(i,"beforeShow"),o=s?s.apply(e,[e,i]):{},o!==!1&&(n(i.settings,o),i.lastVal=null,t.datepicker._lastInput=e,t.datepicker._setDateFromField(i),t.datepicker._inDialog&&(e.value=""),t.datepicker._pos||(t.datepicker._pos=t.datepicker._findPos(e),t.datepicker._pos[1]+=e.offsetHeight),a=!1,t(e).parents().each(function(){return a|="fixed"===t(this).css("position"),!a}),r={left:t.datepicker._pos[0],top:t.datepicker._pos[1]},t.datepicker._pos=null,i.dpDiv.empty(),i.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),t.datepicker._updateDatepicker(i),r=t.datepicker._checkOffset(i,r,a),i.dpDiv.css({position:t.datepicker._inDialog&&t.blockUI?"static":a?"fixed":"absolute",display:"none",left:r.left+"px",top:r.top+"px"}),i.inline||(h=t.datepicker._get(i,"showAnim"),l=t.datepicker._get(i,"duration"),i.dpDiv.zIndex(t(e).zIndex()+1),t.datepicker._datepickerShowing=!0,t.effects&&t.effects.effect[h]?i.dpDiv.show(h,t.datepicker._get(i,"showOptions"),l):i.dpDiv[h||"show"](h?l:null),i.input.is(":visible")&&!i.input.is(":disabled")&&i.input.focus(),t.datepicker._curInst=i))}},_updateDatepicker:function(e){this.maxRows=4,o=e,e.dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e),e.dpDiv.find("."+this._dayOverClass+" a").mouseover();var i,s=this._getNumberOfMonths(e),n=s[1],a=17;e.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),n>1&&e.dpDiv.addClass("ui-datepicker-multi-"+n).css("width",a*n+"em"),e.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),e.dpDiv[(this._get(e,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),e===t.datepicker._curInst&&t.datepicker._datepickerShowing&&e.input&&e.input.is(":visible")&&!e.input.is(":disabled")&&e.input[0]!==document.activeElement&&e.input.focus(),e.yearshtml&&(i=e.yearshtml,setTimeout(function(){i===e.yearshtml&&e.yearshtml&&e.dpDiv.find("select.ui-datepicker-year:first").replaceWith(e.yearshtml),i=e.yearshtml=null},0))},_getBorders:function(t){var e=function(t){return{thin:1,medium:2,thick:3}[t]||t};return[parseFloat(e(t.css("border-left-width"))),parseFloat(e(t.css("border-top-width")))]},_checkOffset:function(e,i,s){var n=e.dpDiv.outerWidth(),o=e.dpDiv.outerHeight(),a=e.input?e.input.outerWidth():0,r=e.input?e.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:t(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:t(document).scrollTop());return i.left-=this._get(e,"isRTL")?n-a:0,i.left-=s&&i.left===e.input.offset().left?t(document).scrollLeft():0,i.top-=s&&i.top===e.input.offset().top+r?t(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>h&&h>n?Math.abs(i.left+n-h):0),i.top-=Math.min(i.top,i.top+o>l&&l>o?Math.abs(o+r):0),i},_findPos:function(e){for(var i,s=this._getInst(e),n=this._get(s,"isRTL");e&&("hidden"===e.type||1!==e.nodeType||t.expr.filters.hidden(e));)e=e[n?"previousSibling":"nextSibling"];return i=t(e).offset(),[i.left,i.top]},_hideDatepicker:function(e){var i,s,n,o,r=this._curInst;!r||e&&r!==t.data(e,a)||this._datepickerShowing&&(i=this._get(r,"showAnim"),s=this._get(r,"duration"),n=function(){t.datepicker._tidyDialog(r)},t.effects&&(t.effects.effect[i]||t.effects[i])?r.dpDiv.hide(i,t.datepicker._get(r,"showOptions"),s,n):r.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,n),i||n(),this._datepickerShowing=!1,o=this._get(r,"onClose"),o&&o.apply(r.input?r.input[0]:null,[r.input?r.input.val():"",r]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),t.blockUI&&(t.unblockUI(),t("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(t){t.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(e){if(t.datepicker._curInst){var i=t(e.target),s=t.datepicker._getInst(i[0]);(i[0].id!==t.datepicker._mainDivId&&0===i.parents("#"+t.datepicker._mainDivId).length&&!i.hasClass(t.datepicker.markerClassName)&&!i.closest("."+t.datepicker._triggerClass).length&&t.datepicker._datepickerShowing&&(!t.datepicker._inDialog||!t.blockUI)||i.hasClass(t.datepicker.markerClassName)&&t.datepicker._curInst!==s)&&t.datepicker._hideDatepicker()}},_adjustDate:function(e,i,s){var n=t(e),o=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(o,i+("M"===s?this._get(o,"showCurrentAtPos"):0),s),this._updateDatepicker(o))},_gotoToday:function(e){var i,s=t(e),n=this._getInst(s[0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(e,i,s){var n=t(e),o=this._getInst(n[0]);o["selected"+("M"===s?"Month":"Year")]=o["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(o),this._adjustDate(n)},_selectDay:function(e,i,s,n){var o,a=t(e);t(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(a[0])||(o=this._getInst(a[0]),o.selectedDay=o.currentDay=t("a",n).html(),o.selectedMonth=o.currentMonth=i,o.selectedYear=o.currentYear=s,this._selectDate(e,this._formatDate(o,o.currentDay,o.currentMonth,o.currentYear)))},_clearDate:function(e){var i=t(e);this._selectDate(i,"")},_selectDate:function(e,i){var s,n=t(e),o=this._getInst(n[0]);i=null!=i?i:this._formatDate(o),o.input&&o.input.val(i),this._updateAlternate(o),s=this._get(o,"onSelect"),s?s.apply(o.input?o.input[0]:null,[i,o]):o.input&&o.input.trigger("change"),o.inline?this._updateDatepicker(o):(this._hideDatepicker(),this._lastInput=o.input[0],"object"!=typeof o.input[0]&&o.input.focus(),this._lastInput=null)},_updateAlternate:function(e){var i,s,n,o=this._get(e,"altField");o&&(i=this._get(e,"altFormat")||this._get(e,"dateFormat"),s=this._getDate(e),n=this.formatDate(i,s,this._getFormatConfig(e)),t(o).each(function(){t(this).val(n)}))},noWeekends:function(t){var e=t.getDay();return[e>0&&6>e,""]},iso8601Week:function(t){var e,i=new Date(t.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),e=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((e-i)/864e5)/7)+1},parseDate:function(i,s,n){if(null==i||null==s)throw"Invalid arguments";if(s="object"==typeof s?""+s:s+"",""===s)return null;var o,a,r,h,l=0,c=(n?n.shortYearCutoff:null)||this._defaults.shortYearCutoff,u="string"!=typeof c?c:(new Date).getFullYear()%100+parseInt(c,10),d=(n?n.dayNamesShort:null)||this._defaults.dayNamesShort,p=(n?n.dayNames:null)||this._defaults.dayNames,f=(n?n.monthNamesShort:null)||this._defaults.monthNamesShort,g=(n?n.monthNames:null)||this._defaults.monthNames,m=-1,v=-1,_=-1,b=-1,y=!1,w=function(t){var e=i.length>o+1&&i.charAt(o+1)===t;return e&&o++,e},k=function(t){var e=w(t),i="@"===t?14:"!"===t?20:"y"===t&&e?4:"o"===t?3:2,n=RegExp("^\\d{1,"+i+"}"),o=s.substring(l).match(n);if(!o)throw"Missing number at position "+l;return l+=o[0].length,parseInt(o[0],10)},x=function(i,n,o){var a=-1,r=t.map(w(i)?o:n,function(t,e){return[[e,t]]}).sort(function(t,e){return-(t[1].length-e[1].length)});if(t.each(r,function(t,i){var n=i[1];return s.substr(l,n.length).toLowerCase()===n.toLowerCase()?(a=i[0],l+=n.length,!1):e}),-1!==a)return a+1;throw"Unknown name at position "+l},D=function(){if(s.charAt(l)!==i.charAt(o))throw"Unexpected literal at position "+l;l++};for(o=0;i.length>o;o++)if(y)"'"!==i.charAt(o)||w("'")?D():y=!1;else switch(i.charAt(o)){case"d":_=k("d");break;case"D":x("D",d,p);break;case"o":b=k("o");break;case"m":v=k("m");break;case"M":v=x("M",f,g);break;case"y":m=k("y");break;case"@":h=new Date(k("@")),m=h.getFullYear(),v=h.getMonth()+1,_=h.getDate();break;case"!":h=new Date((k("!")-this._ticksTo1970)/1e4),m=h.getFullYear(),v=h.getMonth()+1,_=h.getDate();break;case"'":w("'")?D():y=!0;break;default:D()}if(s.length>l&&(r=s.substr(l),!/^\s+/.test(r)))throw"Extra/unparsed characters found in date: "+r;if(-1===m?m=(new Date).getFullYear():100>m&&(m+=(new Date).getFullYear()-(new Date).getFullYear()%100+(u>=m?0:-100)),b>-1)for(v=1,_=b;;){if(a=this._getDaysInMonth(m,v-1),a>=_)break;v++,_-=a}if(h=this._daylightSavingAdjust(new Date(m,v-1,_)),h.getFullYear()!==m||h.getMonth()+1!==v||h.getDate()!==_)throw"Invalid date";return h},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(t,e,i){if(!e)return"";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,o=(i?i.dayNames:null)||this._defaults.dayNames,a=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,h=function(e){var i=t.length>s+1&&t.charAt(s+1)===e;return i&&s++,i},l=function(t,e,i){var s=""+e;if(h(t))for(;i>s.length;)s="0"+s;return s},c=function(t,e,i,s){return h(t)?s[e]:i[e]},u="",d=!1;if(e)for(s=0;t.length>s;s++)if(d)"'"!==t.charAt(s)||h("'")?u+=t.charAt(s):d=!1;else switch(t.charAt(s)){case"d":u+=l("d",e.getDate(),2);break;case"D":u+=c("D",e.getDay(),n,o);break;case"o":u+=l("o",Math.round((new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime()-new Date(e.getFullYear(),0,0).getTime())/864e5),3);break;case"m":u+=l("m",e.getMonth()+1,2);break;case"M":u+=c("M",e.getMonth(),a,r);break;case"y":u+=h("y")?e.getFullYear():(10>e.getYear()%100?"0":"")+e.getYear()%100;break;case"@":u+=e.getTime();break;case"!":u+=1e4*e.getTime()+this._ticksTo1970;break;case"'":h("'")?u+="'":d=!0;break;default:u+=t.charAt(s)}return u},_possibleChars:function(t){var e,i="",s=!1,n=function(i){var s=t.length>e+1&&t.charAt(e+1)===i;return s&&e++,s};for(e=0;t.length>e;e++)if(s)"'"!==t.charAt(e)||n("'")?i+=t.charAt(e):s=!1;else switch(t.charAt(e)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!0;break;default:i+=t.charAt(e)}return i},_get:function(t,i){return t.settings[i]!==e?t.settings[i]:this._defaults[i]},_setDateFromField:function(t,e){if(t.input.val()!==t.lastVal){var i=this._get(t,"dateFormat"),s=t.lastVal=t.input?t.input.val():null,n=this._getDefaultDate(t),o=n,a=this._getFormatConfig(t);try{o=this.parseDate(i,s,a)||n}catch(r){s=e?"":s}t.selectedDay=o.getDate(),t.drawMonth=t.selectedMonth=o.getMonth(),t.drawYear=t.selectedYear=o.getFullYear(),t.currentDay=s?o.getDate():0,t.currentMonth=s?o.getMonth():0,t.currentYear=s?o.getFullYear():0,this._adjustInstDate(t)}},_getDefaultDate:function(t){return this._restrictMinMax(t,this._determineDate(t,this._get(t,"defaultDate"),new Date))},_determineDate:function(e,i,s){var n=function(t){var e=new Date;return e.setDate(e.getDate()+t),e},o=function(i){try{return t.datepicker.parseDate(t.datepicker._get(e,"dateFormat"),i,t.datepicker._getFormatConfig(e))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?t.datepicker._getDate(e):null)||new Date,o=n.getFullYear(),a=n.getMonth(),r=n.getDate(),h=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||"d"){case"d":case"D":r+=parseInt(l[1],10);break;case"w":case"W":r+=7*parseInt(l[1],10);break;case"m":case"M":a+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a));break;case"y":case"Y":o+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a))}l=h.exec(i)}return new Date(o,a,r)},a=null==i||""===i?s:"string"==typeof i?o(i):"number"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return a=a&&"Invalid Date"==""+a?s:a,a&&(a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0)),this._daylightSavingAdjust(a)},_daylightSavingAdjust:function(t){return t?(t.setHours(t.getHours()>12?t.getHours()+2:0),t):null},_setDate:function(t,e,i){var s=!e,n=t.selectedMonth,o=t.selectedYear,a=this._restrictMinMax(t,this._determineDate(t,e,new Date));t.selectedDay=t.currentDay=a.getDate(),t.drawMonth=t.selectedMonth=t.currentMonth=a.getMonth(),t.drawYear=t.selectedYear=t.currentYear=a.getFullYear(),n===t.selectedMonth&&o===t.selectedYear||i||this._notifyChange(t),this._adjustInstDate(t),t.input&&t.input.val(s?"":this._formatDate(t))},_getDate:function(t){var e=!t.currentYear||t.input&&""===t.input.val()?null:this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return e},_attachHandlers:function(e){var i=this._get(e,"stepMonths"),s="#"+e.id.replace(/\\\\/g,"\\");e.dpDiv.find("[data-handler]").map(function(){var e={prev:function(){window["DP_jQuery_"+r].datepicker._adjustDate(s,-i,"M")},next:function(){window["DP_jQuery_"+r].datepicker._adjustDate(s,+i,"M")},hide:function(){window["DP_jQuery_"+r].datepicker._hideDatepicker()},today:function(){window["DP_jQuery_"+r].datepicker._gotoToday(s)},selectDay:function(){return window["DP_jQuery_"+r].datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return window["DP_jQuery_"+r].datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return window["DP_jQuery_"+r].datepicker._selectMonthYear(s,this,"Y"),!1}};t(this).bind(this.getAttribute("data-event"),e[this.getAttribute("data-handler")])})},_generateHTML:function(t){var e,i,s,n,o,a,r,h,l,c,u,d,p,f,g,m,v,_,b,y,w,k,x,D,C,I,P,T,M,S,z,A,H,N,E,W,O,F,R,j=new Date,L=this._daylightSavingAdjust(new Date(j.getFullYear(),j.getMonth(),j.getDate())),Y=this._get(t,"isRTL"),B=this._get(t,"showButtonPanel"),V=this._get(t,"hideIfNoPrevNext"),K=this._get(t,"navigationAsDateFormat"),U=this._getNumberOfMonths(t),q=this._get(t,"showCurrentAtPos"),Q=this._get(t,"stepMonths"),X=1!==U[0]||1!==U[1],$=this._daylightSavingAdjust(t.currentDay?new Date(t.currentYear,t.currentMonth,t.currentDay):new Date(9999,9,9)),G=this._getMinMaxDate(t,"min"),J=this._getMinMaxDate(t,"max"),Z=t.drawMonth-q,te=t.drawYear;if(0>Z&&(Z+=12,te--),J)for(e=this._daylightSavingAdjust(new Date(J.getFullYear(),J.getMonth()-U[0]*U[1]+1,J.getDate())),e=G&&G>e?G:e;this._daylightSavingAdjust(new Date(te,Z,1))>e;)Z--,0>Z&&(Z=11,te--);for(t.drawMonth=Z,t.drawYear=te,i=this._get(t,"prevText"),i=K?this.formatDate(i,this._daylightSavingAdjust(new Date(te,Z-Q,1)),this._getFormatConfig(t)):i,s=this._canAdjustMonth(t,-1,te,Z)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>":V?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>",n=this._get(t,"nextText"),n=K?this.formatDate(n,this._daylightSavingAdjust(new Date(te,Z+Q,1)),this._getFormatConfig(t)):n,o=this._canAdjustMonth(t,1,te,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>":V?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>",a=this._get(t,"currentText"),r=this._get(t,"gotoCurrent")&&t.currentDay?$:L,a=K?this.formatDate(a,r,this._getFormatConfig(t)):a,h=t.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(t,"closeText")+"</button>",l=B?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(Y?h:"")+(this._isInRange(t,r)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+a+"</button>":"")+(Y?"":h)+"</div>":"",c=parseInt(this._get(t,"firstDay"),10),c=isNaN(c)?0:c,u=this._get(t,"showWeek"),d=this._get(t,"dayNames"),p=this._get(t,"dayNamesMin"),f=this._get(t,"monthNames"),g=this._get(t,"monthNamesShort"),m=this._get(t,"beforeShowDay"),v=this._get(t,"showOtherMonths"),_=this._get(t,"selectOtherMonths"),b=this._getDefaultDate(t),y="",k=0;U[0]>k;k++){for(x="",this.maxRows=4,D=0;U[1]>D;D++){if(C=this._daylightSavingAdjust(new Date(te,Z,t.selectedDay)),I=" ui-corner-all",P="",X){if(P+="<div class='ui-datepicker-group",U[1]>1)switch(D){case 0:P+=" ui-datepicker-group-first",I=" ui-corner-"+(Y?"right":"left");break;case U[1]-1:P+=" ui-datepicker-group-last",I=" ui-corner-"+(Y?"left":"right");break;default:P+=" ui-datepicker-group-middle",I=""}P+="'>"}for(P+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+I+"'>"+(/all|left/.test(I)&&0===k?Y?o:s:"")+(/all|right/.test(I)&&0===k?Y?s:o:"")+this._generateMonthYearHeader(t,Z,te,G,J,k>0||D>0,f,g)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",T=u?"<th class='ui-datepicker-week-col'>"+this._get(t,"weekHeader")+"</th>":"",w=0;7>w;w++)M=(w+c)%7,T+="<th"+((w+c+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+d[M]+"'>"+p[M]+"</span></th>";for(P+=T+"</tr></thead><tbody>",S=this._getDaysInMonth(te,Z),te===t.selectedYear&&Z===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,S)),z=(this._getFirstDayOfMonth(te,Z)-c+7)%7,A=Math.ceil((z+S)/7),H=X?this.maxRows>A?this.maxRows:A:A,this.maxRows=H,N=this._daylightSavingAdjust(new Date(te,Z,1-z)),E=0;H>E;E++){for(P+="<tr>",W=u?"<td class='ui-datepicker-week-col'>"+this._get(t,"calculateWeek")(N)+"</td>":"",w=0;7>w;w++)O=m?m.apply(t.input?t.input[0]:null,[N]):[!0,""],F=N.getMonth()!==Z,R=F&&!_||!O[0]||G&&G>N||J&&N>J,W+="<td class='"+((w+c+6)%7>=5?" ui-datepicker-week-end":"")+(F?" ui-datepicker-other-month":"")+(N.getTime()===C.getTime()&&Z===t.selectedMonth&&t._keyEvent||b.getTime()===N.getTime()&&b.getTime()===C.getTime()?" "+this._dayOverClass:"")+(R?" "+this._unselectableClass+" ui-state-disabled":"")+(F&&!v?"":" "+O[1]+(N.getTime()===$.getTime()?" "+this._currentClass:"")+(N.getTime()===L.getTime()?" ui-datepicker-today":""))+"'"+(F&&!v||!O[2]?"":" title='"+O[2].replace(/'/g,"&#39;")+"'")+(R?"":" data-handler='selectDay' data-event='click' data-month='"+N.getMonth()+"' data-year='"+N.getFullYear()+"'")+">"+(F&&!v?"&#xa0;":R?"<span class='ui-state-default'>"+N.getDate()+"</span>":"<a class='ui-state-default"+(N.getTime()===L.getTime()?" ui-state-highlight":"")+(N.getTime()===$.getTime()?" ui-state-active":"")+(F?" ui-priority-secondary":"")+"' href='#'>"+N.getDate()+"</a>")+"</td>",N.setDate(N.getDate()+1),N=this._daylightSavingAdjust(N);P+=W+"</tr>"}Z++,Z>11&&(Z=0,te++),P+="</tbody></table>"+(X?"</div>"+(U[0]>0&&D===U[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),x+=P}y+=x}return y+=l,t._keyEvent=!1,y},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var h,l,c,u,d,p,f,g,m=this._get(t,"changeMonth"),v=this._get(t,"changeYear"),_=this._get(t,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",y="";if(o||!m)y+="<span class='ui-datepicker-month'>"+a[e]+"</span>";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,y+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",c=0;12>c;c++)(!h||c>=s.getMonth())&&(!l||n.getMonth()>=c)&&(y+="<option value='"+c+"'"+(c===e?" selected='selected'":"")+">"+r[c]+"</option>");y+="</select>"}if(_||(b+=y+(!o&&m&&v?"":"&#xa0;")),!t.yearshtml)if(t.yearshtml="",o||!v)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(u=this._get(t,"yearRange").split(":"),d=(new Date).getFullYear(),p=function(t){var e=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?d+parseInt(t,10):parseInt(t,10);return isNaN(e)?d:e},f=p(u[0]),g=Math.max(f,p(u[1]||"")),f=s?Math.max(f,s.getFullYear()):f,g=n?Math.min(g,n.getFullYear()):g,t.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";g>=f;f++)t.yearshtml+="<option value='"+f+"'"+(f===i?" selected='selected'":"")+">"+f+"</option>";t.yearshtml+="</select>",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),_&&(b+=(!o&&m&&v?"":"&#xa0;")+y),b+="</div>"},_adjustInstDate:function(t,e,i){var s=t.drawYear+("Y"===i?e:0),n=t.drawMonth+("M"===i?e:0),o=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),a=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,o)));t.selectedDay=a.getDate(),t.drawMonth=t.selectedMonth=a.getMonth(),t.drawYear=t.selectedYear=a.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),s=this._getMinMaxDate(t,"max"),n=i&&i>e?i:e;return s&&n>s?s:n},_notifyChange:function(t){var e=this._get(t,"onChangeMonthYear");e&&e.apply(t.input?t.input[0]:null,[t.selectedYear,t.selectedMonth+1,t])},_getNumberOfMonths:function(t){var e=this._get(t,"numberOfMonths");return null==e?[1,1]:"number"==typeof e?[1,e]:e},_getMinMaxDate:function(t,e){return this._determineDate(t,this._get(t,e+"Date"),null)},_getDaysInMonth:function(t,e){return 32-this._daylightSavingAdjust(new Date(t,e,32)).getDate()},_getFirstDayOfMonth:function(t,e){return new Date(t,e,1).getDay()},_canAdjustMonth:function(t,e,i,s){var n=this._getNumberOfMonths(t),o=this._daylightSavingAdjust(new Date(i,s+(0>e?e:n[0]*n[1]),1));return 0>e&&o.setDate(this._getDaysInMonth(o.getFullYear(),o.getMonth())),this._isInRange(t,o)},_isInRange:function(t,e){var i,s,n=this._getMinMaxDate(t,"min"),o=this._getMinMaxDate(t,"max"),a=null,r=null,h=this._get(t,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),a=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(a+=s),i[1].match(/[+\-].*/)&&(r+=s)),(!n||e.getTime()>=n.getTime())&&(!o||e.getTime()<=o.getTime())&&(!a||e.getFullYear()>=a)&&(!r||r>=e.getFullYear())},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),{shortYearCutoff:e,dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);var n=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),n,this._getFormatConfig(t))}}),t.fn.datepicker=function(e){if(!this.length)return this;t.datepicker.initialized||(t(document).mousedown(t.datepicker._checkExternalClick),t.datepicker.initialized=!0),0===t("#"+t.datepicker._mainDivId).length&&t("body").append(t.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof e||"isDisabled"!==e&&"getDate"!==e&&"widget"!==e?"option"===e&&2===arguments.length&&"string"==typeof arguments[1]?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof e?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this].concat(i)):t.datepicker._attachDatepicker(this,e)}):t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i))},t.datepicker=new i,t.datepicker.initialized=!1,t.datepicker.uuid=(new Date).getTime(),t.datepicker.version="1.10.2",window["DP_jQuery_"+r]=t}(jQuery),function(t){var e={buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},i={maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0};t.widget("ui.dialog",{version:"1.10.2",options:{appendTo:"body",autoOpen:!0,buttons:[],closeOnEscape:!0,closeText:"close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(e){var i=t(this).css(e).offset().top;0>i&&t(this).css("top",e.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),this.options.title=this.options.title||this.originalTitle,this._createWrapper(),this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(this.uiDialog),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&t.fn.draggable&&this._makeDraggable(),this.options.resizable&&t.fn.resizable&&this._makeResizable(),this._isOpen=!1},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var e=this.options.appendTo;return e&&(e.jquery||e.nodeType)?t(e):this.document.find(e||"body").eq(0)},_destroy:function(){var t,e=this.originalPosition;this._destroyOverlay(),this.element.removeUniqueId().removeClass("ui-dialog-content ui-widget-content").css(this.originalCss).detach(),this.uiDialog.stop(!0,!0).remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),t=e.parent.children().eq(e.index),t.length&&t[0]!==this.element[0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog},disable:t.noop,enable:t.noop,close:function(e){var i=this;this._isOpen&&this._trigger("beforeClose",e)!==!1&&(this._isOpen=!1,this._destroyOverlay(),this.opener.filter(":focusable").focus().length||t(this.document[0].activeElement).blur(),this._hide(this.uiDialog,this.options.hide,function(){i._trigger("close",e)}))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(t,e){var i=!!this.uiDialog.nextAll(":visible").insertBefore(this.uiDialog).length;return i&&!e&&this._trigger("focus",t),i},open:function(){var e=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),undefined):(this._isOpen=!0,this.opener=t(this.document[0].activeElement),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this._show(this.uiDialog,this.options.show,function(){e._focusTabbable(),e._trigger("focus")}),this._trigger("open"),undefined)},_focusTabbable:function(){var t=this.element.find("[autofocus]");t.length||(t=this.element.find(":tabbable")),t.length||(t=this.uiDialogButtonPane.find(":tabbable")),t.length||(t=this.uiDialogTitlebarClose.filter(":tabbable")),t.length||(t=this.uiDialog),t.eq(0).focus()},_keepFocus:function(e){function i(){var e=this.document[0].activeElement,i=this.uiDialog[0]===e||t.contains(this.uiDialog[0],e);i||this._focusTabbable()}e.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=t("<div>").addClass("ui-dialog ui-widget ui-widget-content ui-corner-all ui-front "+this.options.dialogClass).hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._on(this.uiDialog,{keydown:function(e){if(this.options.closeOnEscape&&!e.isDefaultPrevented()&&e.keyCode&&e.keyCode===t.ui.keyCode.ESCAPE)return e.preventDefault(),this.close(e),undefined;if(e.keyCode===t.ui.keyCode.TAB){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");e.target!==n[0]&&e.target!==this.uiDialog[0]||e.shiftKey?e.target!==s[0]&&e.target!==this.uiDialog[0]||!e.shiftKey||(n.focus(1),e.preventDefault()):(s.focus(1),e.preventDefault())}},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var e;this.uiDialogTitlebar=t("<div>").addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(this.uiDialog),this._on(this.uiDialogTitlebar,{mousedown:function(e){t(e.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.focus()}}),this.uiDialogTitlebarClose=t("<button></button>").button({label:this.options.closeText,icons:{primary:"ui-icon-closethick"},text:!1}).addClass("ui-dialog-titlebar-close").appendTo(this.uiDialogTitlebar),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),e=t("<span>").uniqueId().addClass("ui-dialog-title").prependTo(this.uiDialogTitlebar),this._title(e),this.uiDialog.attr({"aria-labelledby":e.attr("id")})},_title:function(t){this.options.title||t.html("&#160;"),t.text(this.options.title)},_createButtonPane:function(){this.uiDialogButtonPane=t("<div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),this.uiButtonSet=t("<div>").addClass("ui-dialog-buttonset").appendTo(this.uiDialogButtonPane),this._createButtons()},_createButtons:function(){var e=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),t.isEmptyObject(i)||t.isArray(i)&&!i.length?(this.uiDialog.removeClass("ui-dialog-buttons"),undefined):(t.each(i,function(i,s){var n,o;s=t.isFunction(s)?{click:s,text:i}:s,s=t.extend({type:"button"},s),n=s.click,s.click=function(){n.apply(e.element[0],arguments)},o={icons:s.icons,text:s.showText},delete s.icons,delete s.showText,t("<button></button>",s).button(o).appendTo(e.uiButtonSet)}),this.uiDialog.addClass("ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),undefined)},_makeDraggable:function(){function e(t){return{position:t.position,offset:t.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(s,n){t(this).addClass("ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,e(n))},drag:function(t,s){i._trigger("drag",t,e(s))},stop:function(n,o){s.position=[o.position.left-i.document.scrollLeft(),o.position.top-i.document.scrollTop()],t(this).removeClass("ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,e(o))
10
+ }})},_makeResizable:function(){function e(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}var i=this,s=this.options,n=s.resizable,o=this.uiDialog.css("position"),a="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:a,start:function(s,n){t(this).addClass("ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,e(n))},resize:function(t,s){i._trigger("resize",t,e(s))},stop:function(n,o){s.height=t(this).height(),s.width=t(this).width(),t(this).removeClass("ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,e(o))}}).css("position",o)},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(s){var n=this,o=!1,a={};t.each(s,function(t,s){n._setOption(t,s),t in e&&(o=!0),t in i&&(a[t]=s)}),o&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",a)},_setOption:function(t,e){var i,s,n=this.uiDialog;"dialogClass"===t&&n.removeClass(this.options.dialogClass).addClass(e),"disabled"!==t&&(this._super(t,e),"appendTo"===t&&this.uiDialog.appendTo(this._appendTo()),"buttons"===t&&this._createButtons(),"closeText"===t&&this.uiDialogTitlebarClose.button({label:""+e}),"draggable"===t&&(i=n.is(":data(ui-draggable)"),i&&!e&&n.draggable("destroy"),!i&&e&&this._makeDraggable()),"position"===t&&this._position(),"resizable"===t&&(s=n.is(":data(ui-resizable)"),s&&!e&&n.resizable("destroy"),s&&"string"==typeof e&&n.resizable("option","handles",e),s||e===!1||this._makeResizable()),"title"===t&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var e=t(this);return t("<div>").css({position:"absolute",width:e.outerWidth(),height:e.outerHeight()}).appendTo(e.parent()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(e){return t(e.target).closest(".ui-dialog").length?!0:!!t(e.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var e=this,i=this.widgetFullName;t.ui.dialog.overlayInstances||this._delay(function(){t.ui.dialog.overlayInstances&&this.document.bind("focusin.dialog",function(s){e._allowInteraction(s)||(s.preventDefault(),t(".ui-dialog:visible:last .ui-dialog-content").data(i)._focusTabbable())})}),this.overlay=t("<div>").addClass("ui-widget-overlay ui-front").appendTo(this._appendTo()),this._on(this.overlay,{mousedown:"_keepFocus"}),t.ui.dialog.overlayInstances++}},_destroyOverlay:function(){this.options.modal&&this.overlay&&(t.ui.dialog.overlayInstances--,t.ui.dialog.overlayInstances||this.document.unbind("focusin.dialog"),this.overlay.remove(),this.overlay=null)}}),t.ui.dialog.overlayInstances=0,t.uiBackCompat!==!1&&t.widget("ui.dialog",t.ui.dialog,{_position:function(){var e,i=this.options.position,s=[],n=[0,0];i?(("string"==typeof i||"object"==typeof i&&"0"in i)&&(s=i.split?i.split(" "):[i[0],i[1]],1===s.length&&(s[1]=s[0]),t.each(["left","top"],function(t,e){+s[t]===s[t]&&(n[t]=s[t],s[t]=e)}),i={my:s[0]+(0>n[0]?n[0]:"+"+n[0])+" "+s[1]+(0>n[1]?n[1]:"+"+n[1]),at:s.join(" ")}),i=t.extend({},t.ui.dialog.prototype.options.position,i)):i=t.ui.dialog.prototype.options.position,e=this.uiDialog.is(":visible"),e||this.uiDialog.show(),this.uiDialog.position(i),e||this.uiDialog.hide()}})}(jQuery),function(t){var e=/up|down|vertical/,i=/up|left|vertical|horizontal/;t.effects.effect.blind=function(s,n){var o,a,r,h=t(this),l=["position","top","bottom","left","right","height","width"],c=t.effects.setMode(h,s.mode||"hide"),u=s.direction||"up",d=e.test(u),p=d?"height":"width",f=d?"top":"left",g=i.test(u),m={},v="show"===c;h.parent().is(".ui-effects-wrapper")?t.effects.save(h.parent(),l):t.effects.save(h,l),h.show(),o=t.effects.createWrapper(h).css({overflow:"hidden"}),a=o[p](),r=parseFloat(o.css(f))||0,m[p]=v?a:0,g||(h.css(d?"bottom":"right",0).css(d?"top":"left","auto").css({position:"absolute"}),m[f]=v?r:a+r),v&&(o.css(p,0),g||o.css(f,r+a)),o.animate(m,{duration:s.duration,easing:s.easing,queue:!1,complete:function(){"hide"===c&&h.hide(),t.effects.restore(h,l),t.effects.removeWrapper(h),n()}})}}(jQuery),function(t){t.effects.effect.bounce=function(e,i){var s,n,o,a=t(this),r=["position","top","bottom","left","right","height","width"],h=t.effects.setMode(a,e.mode||"effect"),l="hide"===h,c="show"===h,u=e.direction||"up",d=e.distance,p=e.times||5,f=2*p+(c||l?1:0),g=e.duration/f,m=e.easing,v="up"===u||"down"===u?"top":"left",_="up"===u||"left"===u,b=a.queue(),y=b.length;for((c||l)&&r.push("opacity"),t.effects.save(a,r),a.show(),t.effects.createWrapper(a),d||(d=a["top"===v?"outerHeight":"outerWidth"]()/3),c&&(o={opacity:1},o[v]=0,a.css("opacity",0).css(v,_?2*-d:2*d).animate(o,g,m)),l&&(d/=Math.pow(2,p-1)),o={},o[v]=0,s=0;p>s;s++)n={},n[v]=(_?"-=":"+=")+d,a.animate(n,g,m).animate(o,g,m),d=l?2*d:d/2;l&&(n={opacity:0},n[v]=(_?"-=":"+=")+d,a.animate(n,g,m)),a.queue(function(){l&&a.hide(),t.effects.restore(a,r),t.effects.removeWrapper(a),i()}),y>1&&b.splice.apply(b,[1,0].concat(b.splice(y,f+1))),a.dequeue()}}(jQuery),function(t){t.effects.effect.clip=function(e,i){var s,n,o,a=t(this),r=["position","top","bottom","left","right","height","width"],h=t.effects.setMode(a,e.mode||"hide"),l="show"===h,c=e.direction||"vertical",u="vertical"===c,d=u?"height":"width",p=u?"top":"left",f={};t.effects.save(a,r),a.show(),s=t.effects.createWrapper(a).css({overflow:"hidden"}),n="IMG"===a[0].tagName?s:a,o=n[d](),l&&(n.css(d,0),n.css(p,o/2)),f[d]=l?o:0,f[p]=l?0:o/2,n.animate(f,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){l||a.hide(),t.effects.restore(a,r),t.effects.removeWrapper(a),i()}})}}(jQuery),function(t){t.effects.effect.drop=function(e,i){var s,n=t(this),o=["position","top","bottom","left","right","opacity","height","width"],a=t.effects.setMode(n,e.mode||"hide"),r="show"===a,h=e.direction||"left",l="up"===h||"down"===h?"top":"left",c="up"===h||"left"===h?"pos":"neg",u={opacity:r?1:0};t.effects.save(n,o),n.show(),t.effects.createWrapper(n),s=e.distance||n["top"===l?"outerHeight":"outerWidth"](!0)/2,r&&n.css("opacity",0).css(l,"pos"===c?-s:s),u[l]=(r?"pos"===c?"+=":"-=":"pos"===c?"-=":"+=")+s,n.animate(u,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){"hide"===a&&n.hide(),t.effects.restore(n,o),t.effects.removeWrapper(n),i()}})}}(jQuery),function(t){t.effects.effect.explode=function(e,i){function s(){b.push(this),b.length===u*d&&n()}function n(){p.css({visibility:"visible"}),t(b).remove(),g||p.hide(),i()}var o,a,r,h,l,c,u=e.pieces?Math.round(Math.sqrt(e.pieces)):3,d=u,p=t(this),f=t.effects.setMode(p,e.mode||"hide"),g="show"===f,m=p.show().css("visibility","hidden").offset(),v=Math.ceil(p.outerWidth()/d),_=Math.ceil(p.outerHeight()/u),b=[];for(o=0;u>o;o++)for(h=m.top+o*_,c=o-(u-1)/2,a=0;d>a;a++)r=m.left+a*v,l=a-(d-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-a*v,top:-o*_}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:v,height:_,left:r+(g?l*v:0),top:h+(g?c*_:0),opacity:g?0:1}).animate({left:r+(g?0:l*v),top:h+(g?0:c*_),opacity:g?1:0},e.duration||500,e.easing,s)}}(jQuery),function(t){t.effects.effect.fade=function(e,i){var s=t(this),n=t.effects.setMode(s,e.mode||"toggle");s.animate({opacity:n},{queue:!1,duration:e.duration,easing:e.easing,complete:i})}}(jQuery),function(t){t.effects.effect.fold=function(e,i){var s,n,o=t(this),a=["position","top","bottom","left","right","height","width"],r=t.effects.setMode(o,e.mode||"hide"),h="show"===r,l="hide"===r,c=e.size||15,u=/([0-9]+)%/.exec(c),d=!!e.horizFirst,p=h!==d,f=p?["width","height"]:["height","width"],g=e.duration/2,m={},v={};t.effects.save(o,a),o.show(),s=t.effects.createWrapper(o).css({overflow:"hidden"}),n=p?[s.width(),s.height()]:[s.height(),s.width()],u&&(c=parseInt(u[1],10)/100*n[l?0:1]),h&&s.css(d?{height:0,width:c}:{height:c,width:0}),m[f[0]]=h?n[0]:c,v[f[1]]=h?n[1]:0,s.animate(m,g,e.easing).animate(v,g,e.easing,function(){l&&o.hide(),t.effects.restore(o,a),t.effects.removeWrapper(o),i()})}}(jQuery),function(t){t.effects.effect.highlight=function(e,i){var s=t(this),n=["backgroundImage","backgroundColor","opacity"],o=t.effects.setMode(s,e.mode||"show"),a={backgroundColor:s.css("backgroundColor")};"hide"===o&&(a.opacity=0),t.effects.save(s,n),s.show().css({backgroundImage:"none",backgroundColor:e.color||"#ffff99"}).animate(a,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){"hide"===o&&s.hide(),t.effects.restore(s,n),i()}})}}(jQuery),function(t){t.effects.effect.pulsate=function(e,i){var s,n=t(this),o=t.effects.setMode(n,e.mode||"show"),a="show"===o,r="hide"===o,h=a||"hide"===o,l=2*(e.times||5)+(h?1:0),c=e.duration/l,u=0,d=n.queue(),p=d.length;for((a||!n.is(":visible"))&&(n.css("opacity",0).show(),u=1),s=1;l>s;s++)n.animate({opacity:u},c,e.easing),u=1-u;n.animate({opacity:u},c,e.easing),n.queue(function(){r&&n.hide(),i()}),p>1&&d.splice.apply(d,[1,0].concat(d.splice(p,l+1))),n.dequeue()}}(jQuery),function(t){t.effects.effect.puff=function(e,i){var s=t(this),n=t.effects.setMode(s,e.mode||"hide"),o="hide"===n,a=parseInt(e.percent,10)||150,r=a/100,h={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()};t.extend(e,{effect:"scale",queue:!1,fade:!0,mode:n,complete:i,percent:o?a:100,from:o?h:{height:h.height*r,width:h.width*r,outerHeight:h.outerHeight*r,outerWidth:h.outerWidth*r}}),s.effect(e)},t.effects.effect.scale=function(e,i){var s=t(this),n=t.extend(!0,{},e),o=t.effects.setMode(s,e.mode||"effect"),a=parseInt(e.percent,10)||(0===parseInt(e.percent,10)?0:"hide"===o?0:100),r=e.direction||"both",h=e.origin,l={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()},c={y:"horizontal"!==r?a/100:1,x:"vertical"!==r?a/100:1};n.effect="size",n.queue=!1,n.complete=i,"effect"!==o&&(n.origin=h||["middle","center"],n.restore=!0),n.from=e.from||("show"===o?{height:0,width:0,outerHeight:0,outerWidth:0}:l),n.to={height:l.height*c.y,width:l.width*c.x,outerHeight:l.outerHeight*c.y,outerWidth:l.outerWidth*c.x},n.fade&&("show"===o&&(n.from.opacity=0,n.to.opacity=1),"hide"===o&&(n.from.opacity=1,n.to.opacity=0)),s.effect(n)},t.effects.effect.size=function(e,i){var s,n,o,a=t(this),r=["position","top","bottom","left","right","width","height","overflow","opacity"],h=["position","top","bottom","left","right","overflow","opacity"],l=["width","height","overflow"],c=["fontSize"],u=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],d=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=t.effects.setMode(a,e.mode||"effect"),f=e.restore||"effect"!==p,g=e.scale||"both",m=e.origin||["middle","center"],v=a.css("position"),_=f?r:h,b={height:0,width:0,outerHeight:0,outerWidth:0};"show"===p&&a.show(),s={height:a.height(),width:a.width(),outerHeight:a.outerHeight(),outerWidth:a.outerWidth()},"toggle"===e.mode&&"show"===p?(a.from=e.to||b,a.to=e.from||s):(a.from=e.from||("show"===p?b:s),a.to=e.to||("hide"===p?b:s)),o={from:{y:a.from.height/s.height,x:a.from.width/s.width},to:{y:a.to.height/s.height,x:a.to.width/s.width}},("box"===g||"both"===g)&&(o.from.y!==o.to.y&&(_=_.concat(u),a.from=t.effects.setTransition(a,u,o.from.y,a.from),a.to=t.effects.setTransition(a,u,o.to.y,a.to)),o.from.x!==o.to.x&&(_=_.concat(d),a.from=t.effects.setTransition(a,d,o.from.x,a.from),a.to=t.effects.setTransition(a,d,o.to.x,a.to))),("content"===g||"both"===g)&&o.from.y!==o.to.y&&(_=_.concat(c).concat(l),a.from=t.effects.setTransition(a,c,o.from.y,a.from),a.to=t.effects.setTransition(a,c,o.to.y,a.to)),t.effects.save(a,_),a.show(),t.effects.createWrapper(a),a.css("overflow","hidden").css(a.from),m&&(n=t.effects.getBaseline(m,s),a.from.top=(s.outerHeight-a.outerHeight())*n.y,a.from.left=(s.outerWidth-a.outerWidth())*n.x,a.to.top=(s.outerHeight-a.to.outerHeight)*n.y,a.to.left=(s.outerWidth-a.to.outerWidth)*n.x),a.css(a.from),("content"===g||"both"===g)&&(u=u.concat(["marginTop","marginBottom"]).concat(c),d=d.concat(["marginLeft","marginRight"]),l=r.concat(u).concat(d),a.find("*[width]").each(function(){var i=t(this),s={height:i.height(),width:i.width(),outerHeight:i.outerHeight(),outerWidth:i.outerWidth()};f&&t.effects.save(i,l),i.from={height:s.height*o.from.y,width:s.width*o.from.x,outerHeight:s.outerHeight*o.from.y,outerWidth:s.outerWidth*o.from.x},i.to={height:s.height*o.to.y,width:s.width*o.to.x,outerHeight:s.height*o.to.y,outerWidth:s.width*o.to.x},o.from.y!==o.to.y&&(i.from=t.effects.setTransition(i,u,o.from.y,i.from),i.to=t.effects.setTransition(i,u,o.to.y,i.to)),o.from.x!==o.to.x&&(i.from=t.effects.setTransition(i,d,o.from.x,i.from),i.to=t.effects.setTransition(i,d,o.to.x,i.to)),i.css(i.from),i.animate(i.to,e.duration,e.easing,function(){f&&t.effects.restore(i,l)})})),a.animate(a.to,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){0===a.to.opacity&&a.css("opacity",a.from.opacity),"hide"===p&&a.hide(),t.effects.restore(a,_),f||("static"===v?a.css({position:"relative",top:a.to.top,left:a.to.left}):t.each(["top","left"],function(t,e){a.css(e,function(e,i){var s=parseInt(i,10),n=t?a.to.left:a.to.top;return"auto"===i?n+"px":s+n+"px"})})),t.effects.removeWrapper(a),i()}})}}(jQuery),function(t){t.effects.effect.shake=function(e,i){var s,n=t(this),o=["position","top","bottom","left","right","height","width"],a=t.effects.setMode(n,e.mode||"effect"),r=e.direction||"left",h=e.distance||20,l=e.times||3,c=2*l+1,u=Math.round(e.duration/c),d="up"===r||"down"===r?"top":"left",p="up"===r||"left"===r,f={},g={},m={},v=n.queue(),_=v.length;for(t.effects.save(n,o),n.show(),t.effects.createWrapper(n),f[d]=(p?"-=":"+=")+h,g[d]=(p?"+=":"-=")+2*h,m[d]=(p?"-=":"+=")+2*h,n.animate(f,u,e.easing),s=1;l>s;s++)n.animate(g,u,e.easing).animate(m,u,e.easing);n.animate(g,u,e.easing).animate(f,u/2,e.easing).queue(function(){"hide"===a&&n.hide(),t.effects.restore(n,o),t.effects.removeWrapper(n),i()}),_>1&&v.splice.apply(v,[1,0].concat(v.splice(_,c+1))),n.dequeue()}}(jQuery),function(t){t.effects.effect.slide=function(e,i){var s,n=t(this),o=["position","top","bottom","left","right","width","height"],a=t.effects.setMode(n,e.mode||"show"),r="show"===a,h=e.direction||"left",l="up"===h||"down"===h?"top":"left",c="up"===h||"left"===h,u={};t.effects.save(n,o),n.show(),s=e.distance||n["top"===l?"outerHeight":"outerWidth"](!0),t.effects.createWrapper(n).css({overflow:"hidden"}),r&&n.css(l,c?isNaN(s)?"-"+s:-s:s),u[l]=(r?c?"+=":"-=":c?"-=":"+=")+s,n.animate(u,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){"hide"===a&&n.hide(),t.effects.restore(n,o),t.effects.removeWrapper(n),i()}})}}(jQuery),function(t){t.effects.effect.transfer=function(e,i){var s=t(this),n=t(e.to),o="fixed"===n.css("position"),a=t("body"),r=o?a.scrollTop():0,h=o?a.scrollLeft():0,l=n.offset(),c={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},u=s.offset(),d=t("<div class='ui-effects-transfer'></div>").appendTo(document.body).addClass(e.className).css({top:u.top-r,left:u.left-h,height:s.innerHeight(),width:s.innerWidth(),position:o?"fixed":"absolute"}).animate(c,e.duration,e.easing,function(){d.remove(),i()})}}(jQuery),function(t){t.widget("ui.menu",{version:"1.10.2",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content ui-corner-all").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}).bind("click"+this.eventNamespace,t.proxy(function(t){this.options.disabled&&t.preventDefault()},this)),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item > a":function(t){t.preventDefault()},"click .ui-state-disabled > a":function(t){t.preventDefault()},"click .ui-menu-item:has(a)":function(e){var i=t(e.target).closest(".ui-menu-item");!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.mouseHandled=!0,this.select(e),i.has(".ui-menu").length?this.expand(e):this.element.is(":focus")||(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){var i=t(e.currentTarget);i.siblings().children(".ui-state-active").removeClass("ui-state-active"),this.focus(e,i)},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.children(".ui-menu-item").eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){t.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(e){t(e.target).closest(".ui-menu").length||this.collapseAll(e),this.mouseHandled=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeClass("ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").children("a").removeUniqueId().removeClass("ui-corner-all ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var e=t(this);e.data("ui-menu-submenu-carat")&&e.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(e){function i(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}var s,n,o,a,r,h=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:h=!1,n=this.previousFilter||"",o=String.fromCharCode(e.keyCode),a=!1,clearTimeout(this.filterTimer),o===n?a=!0:o=n+o,r=RegExp("^"+i(o),"i"),s=this.activeMenu.children(".ui-menu-item").filter(function(){return r.test(t(this).children("a").text())}),s=a&&-1!==s.index(this.active.next())?this.active.nextAll(".ui-menu-item"):s,s.length||(o=String.fromCharCode(e.keyCode),r=RegExp("^"+i(o),"i"),s=this.activeMenu.children(".ui-menu-item").filter(function(){return r.test(t(this).children("a").text())})),s.length?(this.focus(e,s),s.length>1?(this.previousFilter=o,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter):delete this.previousFilter}h&&e.preventDefault()},_activate:function(t){this.active.is(".ui-state-disabled")||(this.active.children("a[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i=this.options.icons.submenu,s=this.element.find(this.options.menus);s.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-corner-all").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),s=e.prev("a"),n=t("<span>").addClass("ui-menu-icon ui-icon "+i).data("ui-menu-submenu-carat",!0);s.attr("aria-haspopup","true").prepend(n),e.attr("aria-labelledby",s.attr("id"))}),e=s.add(this.element),e.children(":not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","presentation").children("a").uniqueId().addClass("ui-corner-all").attr({tabIndex:-1,role:this._itemRole()}),e.children(":not(.ui-menu-item)").each(function(){var e=t(this);/[^\-\u2014\u2013\s]/.test(e.text())||e.addClass("ui-widget-content ui-menu-divider")}),e.children(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){"icons"===t&&this.element.find(".ui-menu-icon").removeClass(this.options.icons.submenu).addClass(e.submenu),this._super(t,e)},focus:function(t,e){var i,s;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children("a").addClass("ui-state-focus"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),this.active.parent().closest(".ui-menu-item").children("a:first").addClass("ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,o,a,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,o=this.activeMenu.scrollTop(),a=this.activeMenu.height(),r=e.height(),0>n?this.activeMenu.scrollTop(o+n):n+r>a&&this.activeMenu.scrollTop(o+n-a+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this.active.children("a").removeClass("ui-state-focus"),this.active=null,this._trigger("blur",t,{item:this.active}))},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find("a.ui-state-active").removeClass("ui-state-active")},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").children(".ui-menu-item").first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.children(".ui-menu-item")[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.children(".ui-menu-item")[this.active?"last":"first"]())),undefined):(this.next(e),undefined)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.children(".ui-menu-item").first())),undefined):(this.next(e),undefined)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(e){this.active=this.active||t(e.target).closest(".ui-menu-item");var i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(e,!0),this._trigger("select",e,i)}})}(jQuery),function(t,e){function i(t,e,i){return[parseFloat(t[0])*(p.test(t[0])?e/100:1),parseFloat(t[1])*(p.test(t[1])?i/100:1)]}function s(e,i){return parseInt(t.css(e,i),10)||0}function n(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}t.ui=t.ui||{};var o,a=Math.max,r=Math.abs,h=Math.round,l=/left|center|right/,c=/top|center|bottom/,u=/[\+\-]\d+(\.[\d]+)?%?/,d=/^\w+/,p=/%$/,f=t.fn.position;t.position={scrollbarWidth:function(){if(o!==e)return o;var i,s,n=t("<div style='display:block;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),a=n.children()[0];return t("body").append(n),i=a.offsetWidth,n.css("overflow","scroll"),s=a.offsetWidth,i===s&&(s=n[0].clientWidth),n.remove(),o=i-s},getScrollInfo:function(e){var i=e.isWindow?"":e.element.css("overflow-x"),s=e.isWindow?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.width<e.element[0].scrollWidth,o="scroll"===s||"auto"===s&&e.height<e.element[0].scrollHeight;return{width:o?t.position.scrollbarWidth():0,height:n?t.position.scrollbarWidth():0}},getWithinInfo:function(e){var i=t(e||window),s=t.isWindow(i[0]);return{element:i,isWindow:s,offset:i.offset()||{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:s?i.width():i.outerWidth(),height:s?i.height():i.outerHeight()}}},t.fn.position=function(e){if(!e||!e.of)return f.apply(this,arguments);e=t.extend({},e);var o,p,g,m,v,_,b=t(e.of),y=t.position.getWithinInfo(e.within),w=t.position.getScrollInfo(y),k=(e.collision||"flip").split(" "),x={};return _=n(b),b[0].preventDefault&&(e.at="left top"),p=_.width,g=_.height,m=_.offset,v=t.extend({},m),t.each(["my","at"],function(){var t,i,s=(e[this]||"").split(" ");1===s.length&&(s=l.test(s[0])?s.concat(["center"]):c.test(s[0])?["center"].concat(s):["center","center"]),s[0]=l.test(s[0])?s[0]:"center",s[1]=c.test(s[1])?s[1]:"center",t=u.exec(s[0]),i=u.exec(s[1]),x[this]=[t?t[0]:0,i?i[0]:0],e[this]=[d.exec(s[0])[0],d.exec(s[1])[0]]}),1===k.length&&(k[1]=k[0]),"right"===e.at[0]?v.left+=p:"center"===e.at[0]&&(v.left+=p/2),"bottom"===e.at[1]?v.top+=g:"center"===e.at[1]&&(v.top+=g/2),o=i(x.at,p,g),v.left+=o[0],v.top+=o[1],this.each(function(){var n,l,c=t(this),u=c.outerWidth(),d=c.outerHeight(),f=s(this,"marginLeft"),_=s(this,"marginTop"),D=u+f+s(this,"marginRight")+w.width,C=d+_+s(this,"marginBottom")+w.height,I=t.extend({},v),P=i(x.my,c.outerWidth(),c.outerHeight());"right"===e.my[0]?I.left-=u:"center"===e.my[0]&&(I.left-=u/2),"bottom"===e.my[1]?I.top-=d:"center"===e.my[1]&&(I.top-=d/2),I.left+=P[0],I.top+=P[1],t.support.offsetFractions||(I.left=h(I.left),I.top=h(I.top)),n={marginLeft:f,marginTop:_},t.each(["left","top"],function(i,s){t.ui.position[k[i]]&&t.ui.position[k[i]][s](I,{targetWidth:p,targetHeight:g,elemWidth:u,elemHeight:d,collisionPosition:n,collisionWidth:D,collisionHeight:C,offset:[o[0]+P[0],o[1]+P[1]],my:e.my,at:e.at,within:y,elem:c})}),e.using&&(l=function(t){var i=m.left-I.left,s=i+p-u,n=m.top-I.top,o=n+g-d,h={target:{element:b,left:m.left,top:m.top,width:p,height:g},element:{element:c,left:I.left,top:I.top,width:u,height:d},horizontal:0>s?"left":i>0?"right":"center",vertical:0>o?"top":n>0?"bottom":"middle"};u>p&&p>r(i+s)&&(h.horizontal="center"),d>g&&g>r(n+o)&&(h.vertical="middle"),h.important=a(r(i),r(s))>a(r(n),r(o))?"horizontal":"vertical",e.using.call(this,t,h)}),c.offset(t.extend(I,{using:l}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,o=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-o-n;e.collisionWidth>o?h>0&&0>=l?(i=t.left+h+e.collisionWidth-o-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+o-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=a(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,o=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-o-n;e.collisionHeight>o?h>0&&0>=l?(i=t.top+h+e.collisionHeight-o-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+o-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=a(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,a=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-a-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-a-o,(0>i||r(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>r(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,a=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-a-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-a-o,t.top+p+f+g>c&&(0>s||r(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-h,t.top+p+f+g>u&&(i>0||u>r(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}},function(){var e,i,s,n,o,a=document.getElementsByTagName("body")[0],r=document.createElement("div");e=document.createElement(a?"div":"body"),s={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},a&&t.extend(s,{position:"absolute",left:"-1000px",top:"-1000px"});for(o in s)e.style[o]=s[o];e.appendChild(r),i=a||document.documentElement,i.insertBefore(e,i.firstChild),r.style.cssText="position: absolute; left: 10.7432222px;",n=t(r).offset().left,t.support.offsetFractions=n>10&&11>n,e.innerHTML="",i.removeChild(e)}()}(jQuery),function(t,e){t.widget("ui.progressbar",{version:"1.10.2",options:{max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min}),this.valueDiv=t("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element),this._refreshValue()
11
+ },_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(t){return t===e?this.options.value:(this.options.value=this._constrainedValue(t),this._refreshValue(),e)},_constrainedValue:function(t){return t===e&&(t=this.options.value),this.indeterminate=t===!1,"number"!=typeof t&&(t=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var e=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||e>this.min).toggleClass("ui-corner-right",e===this.options.max).width(i.toFixed(0)+"%"),this.element.toggleClass("ui-progressbar-indeterminate",this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=t("<div class='ui-progressbar-overlay'></div>").appendTo(this.valueDiv))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":e}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),e===this.options.max&&this._trigger("complete")}})}(jQuery),function(t){var e=5;t.widget("ui.slider",t.ui.mouse,{version:"1.10.2",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"),this._refresh(),this._setOption("disabled",this.options.disabled),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var e,i,s=this.options,n=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),o="<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>",a=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),e=n.length;i>e;e++)a.push(o);this.handles=n.add(t(a.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.each(function(e){t(this).data("ui-slider-handle-index",e)})},_createRange:function(){var e=this.options,i="";e.range?(e.range===!0&&(e.values?e.values.length&&2!==e.values.length?e.values=[e.values[0],e.values[0]]:t.isArray(e.values)&&(e.values=e.values.slice(0)):e.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?this.range.removeClass("ui-slider-range-min ui-slider-range-max").css({left:"",bottom:""}):(this.range=t("<div></div>").appendTo(this.element),i="ui-slider-range ui-widget-header ui-corner-all"),this.range.addClass(i+("min"===e.range||"max"===e.range?" ui-slider-range-"+e.range:""))):this.range=t([])},_setupEvents:function(){var t=this.handles.add(this.range).filter("a");this._off(t),this._on(t,this._handleEvents),this._hoverable(t),this._focusable(t)},_destroy:function(){this.handles.remove(),this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(e){var i,s,n,o,a,r,h,l,c=this,u=this.options;return u.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:e.pageX,y:e.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(e){var i=Math.abs(s-c.values(e));(n>i||n===i&&(e===c._lastChangedValue||c.values(e)===u.min))&&(n=i,o=t(this),a=e)}),r=this._start(e,a),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=a,o.addClass("ui-state-active").focus(),h=o.offset(),l=!t(e.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:e.pageX-h.left-o.width()/2,top:e.pageY-h.top-o.height()/2-(parseInt(o.css("borderTopWidth"),10)||0)-(parseInt(o.css("borderBottomWidth"),10)||0)+(parseInt(o.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(e,a,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,i),!1},_mouseStop:function(t){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e,i,s,n,o;return"horizontal"===this.orientation?(e=this.elementSize.width,i=t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,i=t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/e,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),o=this._valueMin()+s*n,this._trimAlignValue(o)},_start:function(t,e){var i={handle:this.handles[e],value:this.value()};return this.options.values&&this.options.values.length&&(i.value=this.values(e),i.values=this.values()),this._trigger("start",t,i)},_slide:function(t,e,i){var s,n,o;this.options.values&&this.options.values.length?(s=this.values(e?0:1),2===this.options.values.length&&this.options.range===!0&&(0===e&&i>s||1===e&&s>i)&&(i=s),i!==this.values(e)&&(n=this.values(),n[e]=i,o=this._trigger("slide",t,{handle:this.handles[e],value:i,values:n}),s=this.values(e?0:1),o!==!1&&this.values(e,i,!0))):i!==this.value()&&(o=this._trigger("slide",t,{handle:this.handles[e],value:i}),o!==!1&&this.value(i))},_stop:function(t,e){var i={handle:this.handles[e],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(e),i.values=this.values()),this._trigger("stop",t,i)},_change:function(t,e){if(!this._keySliding&&!this._mouseSliding){var i={handle:this.handles[e],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(e),i.values=this.values()),this._lastChangedValue=e,this._trigger("change",t,i)}},value:function(t){return arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),this._change(null,0),undefined):this._value()},values:function(e,i){var s,n,o;if(arguments.length>1)return this.options.values[e]=this._trimAlignValue(i),this._refreshValue(),this._change(null,e),undefined;if(!arguments.length)return this._values();if(!t.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(e):this.value();for(s=this.options.values,n=arguments[0],o=0;s.length>o;o+=1)s[o]=this._trimAlignValue(n[o]),this._change(null,o);this._refreshValue()},_setOption:function(e,i){var s,n=0;switch("range"===e&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),t.isArray(this.options.values)&&(n=this.options.values.length),t.Widget.prototype._setOption.apply(this,arguments),e){case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue();break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=0;n>s;s+=1)this._change(null,s);this._animateOff=!1;break;case"min":case"max":this._animateOff=!0,this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_value:function(){var t=this.options.value;return t=this._trimAlignValue(t)},_values:function(t){var e,i,s;if(arguments.length)return e=this.options.values[t],e=this._trimAlignValue(e);if(this.options.values&&this.options.values.length){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(t){if(this._valueMin()>=t)return this._valueMin();if(t>=this._valueMax())return this._valueMax();var e=this.options.step>0?this.options.step:1,i=(t-this._valueMin())%e,s=t-i;return 2*Math.abs(i)>=e&&(s+=i>0?e:-e),parseFloat(s.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var e,i,s,n,o,a=this.options.range,r=this.options,h=this,l=this._animateOff?!1:r.animate,c={};this.options.values&&this.options.values.length?this.handles.each(function(s){i=100*((h.values(s)-h._valueMin())/(h._valueMax()-h._valueMin())),c["horizontal"===h.orientation?"left":"bottom"]=i+"%",t(this).stop(1,1)[l?"animate":"css"](c,r.animate),h.options.range===!0&&("horizontal"===h.orientation?(0===s&&h.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:r.animate})):(0===s&&h.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:r.animate}))),e=i}):(s=this.value(),n=this._valueMin(),o=this._valueMax(),i=o!==n?100*((s-n)/(o-n)):0,c["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](c,r.animate),"min"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},r.animate),"max"===a&&"horizontal"===this.orientation&&this.range[l?"animate":"css"]({width:100-i+"%"},{queue:!1,duration:r.animate}),"min"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},r.animate),"max"===a&&"vertical"===this.orientation&&this.range[l?"animate":"css"]({height:100-i+"%"},{queue:!1,duration:r.animate}))},_handleEvents:{keydown:function(i){var s,n,o,a,r=t(i.target).data("ui-slider-handle-index");switch(i.keyCode){case t.ui.keyCode.HOME:case t.ui.keyCode.END:case t.ui.keyCode.PAGE_UP:case t.ui.keyCode.PAGE_DOWN:case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(i.preventDefault(),!this._keySliding&&(this._keySliding=!0,t(i.target).addClass("ui-state-active"),s=this._start(i,r),s===!1))return}switch(a=this.options.step,n=o=this.options.values&&this.options.values.length?this.values(r):this.value(),i.keyCode){case t.ui.keyCode.HOME:o=this._valueMin();break;case t.ui.keyCode.END:o=this._valueMax();break;case t.ui.keyCode.PAGE_UP:o=this._trimAlignValue(n+(this._valueMax()-this._valueMin())/e);break;case t.ui.keyCode.PAGE_DOWN:o=this._trimAlignValue(n-(this._valueMax()-this._valueMin())/e);break;case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:if(n===this._valueMax())return;o=this._trimAlignValue(n+a);break;case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(n===this._valueMin())return;o=this._trimAlignValue(n-a)}this._slide(i,r,o)},click:function(t){t.preventDefault()},keyup:function(e){var i=t(e.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(e,i),this._change(e,i),t(e.target).removeClass("ui-state-active"))}}})}(jQuery),function(t){function e(t){return function(){var e=this.element.val();t.apply(this,arguments),this._refresh(),e!==this.element.val()&&this._trigger("change")}}t.widget("ui.spinner",{version:"1.10.2",defaultElement:"<input>",widgetEventPrefix:"spin",options:{culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var e={},i=this.element;return t.each(["min","max","step"],function(t,s){var n=i.attr(s);void 0!==n&&n.length&&(e[s]=n)}),e},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t),void 0)},mousewheel:function(t,e){if(e){if(!this.spinning&&!this._start(t))return!1;this._spin((e>0?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},"mousedown .ui-spinner-button":function(e){function i(){var t=this.element[0]===this.document[0].activeElement;t||(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),e.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(e)!==!1&&this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(e){return t(e.currentTarget).hasClass("ui-state-active")?this._start(e)===!1?!1:(this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_draw:function(){var t=this.uiSpinner=this.element.addClass("ui-spinner-input").attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this.element.attr("role","spinbutton"),this.buttons=t.find(".ui-spinner-button").attr("tabIndex",-1).button().removeClass("ui-corner-all"),this.buttons.height()>Math.ceil(.5*t.height())&&t.height()>0&&t.height(t.height()),this.options.disabled&&this.disable()},_keydown:function(e){var i=this.options,s=t.ui.keyCode;switch(e.keyCode){case s.UP:return this._repeat(null,1,e),!0;case s.DOWN:return this._repeat(null,-1,e),!0;case s.PAGE_UP:return this._repeat(null,i.page,e),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,e),!0}return!1},_uiSpinnerHtml:function(){return"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"},_buttonHtml:function(){return"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'><span class='ui-icon "+this.options.icons.up+"'>&#9650;</span>"+"</a>"+"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>"+"<span class='ui-icon "+this.options.icons.down+"'>&#9660;</span>"+"</a>"},_start:function(t){return this.spinning||this._trigger("start",t)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(t,e,i){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,i)},t),this._spin(e*this.options.step,i)},_spin:function(t,e){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+t*this._increment(this.counter)),this.spinning&&this._trigger("spin",e,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(e){var i=this.options.incremental;return i?t.isFunction(i)?i(e):Math.floor(e*e*e/5e4-e*e/500+17*e/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_adjustValue:function(t){var e,i,s=this.options;return e=null!==s.min?s.min:0,i=t-e,i=Math.round(i/s.step)*s.step,t=e+i,t=parseFloat(t.toFixed(this._precision())),null!==s.max&&t>s.max?s.max:null!==s.min&&s.min>t?s.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",t))},_setOption:function(t,e){if("culture"===t||"numberFormat"===t){var i=this._parse(this.element.val());return this.options[t]=e,this.element.val(this._format(i)),void 0}("max"===t||"min"===t||"step"===t)&&"string"==typeof e&&(e=this._parse(e)),"icons"===t&&(this.buttons.first().find(".ui-icon").removeClass(this.options.icons.up).addClass(e.up),this.buttons.last().find(".ui-icon").removeClass(this.options.icons.down).addClass(e.down)),this._super(t,e),"disabled"===t&&(e?(this.element.prop("disabled",!0),this.buttons.button("disable")):(this.element.prop("disabled",!1),this.buttons.button("enable")))},_setOptions:e(function(t){this._super(t),this._value(this.element.val())}),_parse:function(t){return"string"==typeof t&&""!==t&&(t=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,10,this.options.culture):+t),""===t||isNaN(t)?null:t},_format:function(t){return""===t?"":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},_value:function(t,e){var i;""!==t&&(i=this._parse(t),null!==i&&(e||(i=this._adjustValue(i)),t=this._format(i))),this.element.val(t),this._refresh()},_destroy:function(){this.element.removeClass("ui-spinner-input").prop("disabled",!1).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:e(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||1)*this.options.step),this._stop())},stepDown:e(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||1)*-this.options.step),this._stop())},pageUp:e(function(t){this._stepUp((t||1)*this.options.page)}),pageDown:e(function(t){this._stepDown((t||1)*this.options.page)}),value:function(t){return arguments.length?(e(this._value).call(this,t),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}})}(jQuery),function(t,e){function i(){return++n}function s(t){return t.hash.length>1&&decodeURIComponent(t.href.replace(o,""))===decodeURIComponent(location.href.replace(o,""))}var n=0,o=/#.*$/;t.widget("ui.tabs",{version:"1.10.2",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_create:function(){var e=this,i=this.options;this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",i.collapsible).delegate(".ui-tabs-nav > li","mousedown"+this.eventNamespace,function(e){t(this).is(".ui-state-disabled")&&e.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){t(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this._processTabs(),i.active=this._initialActive(),t.isArray(i.disabled)&&(i.disabled=t.unique(i.disabled.concat(t.map(this.tabs.filter(".ui-state-disabled"),function(t){return e.tabs.index(t)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):t(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var i=this.options.active,s=this.options.collapsible,n=location.hash.substring(1);return null===i&&(n&&this.tabs.each(function(s,o){return t(o).attr("aria-controls")===n?(i=s,!1):e}),null===i&&(i=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===i||-1===i)&&(i=this.tabs.length?0:!1)),i!==!1&&(i=this.tabs.index(this.tabs.eq(i)),-1===i&&(i=s?!1:0)),!s&&i===!1&&this.anchors.length&&(i=0),i},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):t()}},_tabKeydown:function(i){var s=t(this.document[0].activeElement).closest("li"),n=this.tabs.index(s),o=!0;if(!this._handlePageNav(i)){switch(i.keyCode){case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:n++;break;case t.ui.keyCode.UP:case t.ui.keyCode.LEFT:o=!1,n--;break;case t.ui.keyCode.END:n=this.anchors.length-1;break;case t.ui.keyCode.HOME:n=0;break;case t.ui.keyCode.SPACE:return i.preventDefault(),clearTimeout(this.activating),this._activate(n),e;case t.ui.keyCode.ENTER:return i.preventDefault(),clearTimeout(this.activating),this._activate(n===this.options.active?!1:n),e;default:return}i.preventDefault(),clearTimeout(this.activating),n=this._focusNextTab(n,o),i.ctrlKey||(s.attr("aria-selected","false"),this.tabs.eq(n).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",n)},this.delay))}},_panelKeydown:function(e){this._handlePageNav(e)||e.ctrlKey&&e.keyCode===t.ui.keyCode.UP&&(e.preventDefault(),this.active.focus())},_handlePageNav:function(i){return i.altKey&&i.keyCode===t.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):i.altKey&&i.keyCode===t.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):e},_findNextTab:function(e,i){function s(){return e>n&&(e=0),0>e&&(e=n),e}for(var n=this.tabs.length-1;-1!==t.inArray(s(),this.options.disabled);)e=i?e+1:e-1;return e},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).focus(),t},_setOption:function(t,i){return"active"===t?(this._activate(i),e):"disabled"===t?(this._setupDisabled(i),e):(this._super(t,i),"collapsible"===t&&(this.element.toggleClass("ui-tabs-collapsible",i),i||this.options.active!==!1||this._activate(0)),"event"===t&&this._setupEvents(i),"heightStyle"===t&&this._setupHeightStyle(i),e)},_tabId:function(t){return t.attr("aria-controls")||"ui-tabs-"+i()},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var e=this.options,i=this.tablist.children(":has(a[href])");e.disabled=t.map(i.filter(".ui-state-disabled"),function(t){return i.index(t)}),this._processTabs(),e.active!==!1&&this.anchors.length?this.active.length&&!t.contains(this.tablist[0],this.active[0])?this.tabs.length===e.disabled.length?(e.active=!1,this.active=t()):this._activate(this._findNextTab(Math.max(0,e.active-1),!1)):e.active=this.tabs.index(this.active):(e.active=!1,this.active=t()),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-expanded":"false","aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-expanded":"true","aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var e=this;this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist"),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return t("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=t(),this.anchors.each(function(i,n){var o,a,r,h=t(n).uniqueId().attr("id"),l=t(n).closest("li"),c=l.attr("aria-controls");s(n)?(o=n.hash,a=e.element.find(e._sanitizeSelector(o))):(r=e._tabId(l),o="#"+r,a=e.element.find(o),a.length||(a=e._createPanel(r),a.insertAfter(e.panels[i-1]||e.tablist)),a.attr("aria-live","polite")),a.length&&(e.panels=e.panels.add(a)),c&&l.data("ui-tabs-aria-controls",c),l.attr({"aria-controls":o.substring(1),"aria-labelledby":h}),a.attr("aria-labelledby",h)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel")},_getList:function(){return this.element.find("ol,ul").eq(0)},_createPanel:function(e){return t("<div>").attr("id",e).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(e){t.isArray(e)&&(e.length?e.length===this.anchors.length&&(e=!0):e=!1);for(var i,s=0;i=this.tabs[s];s++)e===!0||-1!==t.inArray(s,e)?t(i).addClass("ui-state-disabled").attr("aria-disabled","true"):t(i).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=e},_setupEvents:function(e){var i={click:function(t){t.preventDefault()}};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(e){var i,s=this.element.parent();"fill"===e?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var e=t(this),s=e.css("position");"absolute"!==s&&"fixed"!==s&&(i-=e.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=t(this).outerHeight(!0)}),this.panels.each(function(){t(this).height(Math.max(0,i-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.panels.each(function(){i=Math.max(i,t(this).height("").height())}).height(i))},_eventHandler:function(e){var i=this.options,s=this.active,n=t(e.currentTarget),o=n.closest("li"),a=o[0]===s[0],r=a&&i.collapsible,h=r?t():this._getPanelForTab(o),l=s.length?this._getPanelForTab(s):t(),c={oldTab:s,oldPanel:l,newTab:r?t():o,newPanel:h};e.preventDefault(),o.hasClass("ui-state-disabled")||o.hasClass("ui-tabs-loading")||this.running||a&&!i.collapsible||this._trigger("beforeActivate",e,c)===!1||(i.active=r?!1:this.tabs.index(o),this.active=a?t():o,this.xhr&&this.xhr.abort(),l.length||h.length||t.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(o),e),this._toggle(e,c))},_toggle:function(e,i){function s(){o.running=!1,o._trigger("activate",e,i)}function n(){i.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),a.length&&o.options.show?o._show(a,o.options.show,s):(a.show(),s())}var o=this,a=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),n()}):(i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),r.hide(),n()),r.attr({"aria-expanded":"false","aria-hidden":"true"}),i.oldTab.attr("aria-selected","false"),a.length&&r.length?i.oldTab.attr("tabIndex",-1):a.length&&this.tabs.filter(function(){return 0===t(this).attr("tabIndex")}).attr("tabIndex",-1),a.attr({"aria-expanded":"true","aria-hidden":"false"}),i.newTab.attr({"aria-selected":"true",tabIndex:0})},_activate:function(e){var i,s=this._findActive(e);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return e===!1?t():this.tabs.eq(e)},_getIndex:function(t){return"string"==typeof t&&(t=this.anchors.index(this.anchors.filter("[href$='"+t+"']"))),t},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){t.data(this,"ui-tabs-destroy")?t(this).remove():t(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var e=t(this),i=e.data("ui-tabs-aria-controls");i?e.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):e.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(i){var s=this.options.disabled;s!==!1&&(i===e?s=!1:(i=this._getIndex(i),s=t.isArray(s)?t.map(s,function(t){return t!==i?t:null}):t.map(this.tabs,function(t,e){return e!==i?e:null})),this._setupDisabled(s))},disable:function(i){var s=this.options.disabled;if(s!==!0){if(i===e)s=!0;else{if(i=this._getIndex(i),-1!==t.inArray(i,s))return;s=t.isArray(s)?t.merge([i],s).sort():[i]}this._setupDisabled(s)}},load:function(e,i){e=this._getIndex(e);var n=this,o=this.tabs.eq(e),a=o.find(".ui-tabs-anchor"),r=this._getPanelForTab(o),h={tab:o,panel:r};s(a[0])||(this.xhr=t.ajax(this._ajaxSettings(a,i,h)),this.xhr&&"canceled"!==this.xhr.statusText&&(o.addClass("ui-tabs-loading"),r.attr("aria-busy","true"),this.xhr.success(function(t){setTimeout(function(){r.html(t),n._trigger("load",i,h)},1)}).complete(function(t,e){setTimeout(function(){"abort"===e&&n.panels.stop(!1,!0),o.removeClass("ui-tabs-loading"),r.removeAttr("aria-busy"),t===n.xhr&&delete n.xhr},1)})))},_ajaxSettings:function(e,i,s){var n=this;return{url:e.attr("href"),beforeSend:function(e,o){return n._trigger("beforeLoad",i,t.extend({jqXHR:e,ajaxSettings:o},s))}}},_getPanelForTab:function(e){var i=t(e).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}})}(jQuery),function(t){function e(e,i){var s=(e.attr("aria-describedby")||"").split(/\s+/);s.push(i),e.data("ui-tooltip-id",i).attr("aria-describedby",t.trim(s.join(" ")))}function i(e){var i=e.data("ui-tooltip-id"),s=(e.attr("aria-describedby")||"").split(/\s+/),n=t.inArray(i,s);-1!==n&&s.splice(n,1),e.removeData("ui-tooltip-id"),s=t.trim(s.join(" ")),s?e.attr("aria-describedby",s):e.removeAttr("aria-describedby")}var s=0;t.widget("ui.tooltip",{version:"1.10.2",options:{content:function(){var e=t(this).attr("title")||"";return t("<a>").text(e).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable()},_setOption:function(e,i){var s=this;return"disabled"===e?(this[i?"_disable":"_enable"](),this.options[e]=i,void 0):(this._super(e,i),"content"===e&&t.each(this.tooltips,function(t,e){s._updateContent(e)}),void 0)},_disable:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur");n.target=n.currentTarget=s[0],e.close(n,!0)}),this.element.find(this.options.items).addBack().each(function(){var e=t(this);e.is("[title]")&&e.data("ui-tooltip-title",e.attr("title")).attr("title","")})},_enable:function(){this.element.find(this.options.items).addBack().each(function(){var e=t(this);e.data("ui-tooltip-title")&&e.attr("title",e.data("ui-tooltip-title"))})},open:function(e){var i=this,s=t(e?e.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),e&&"mouseover"===e.type&&s.parents().each(function(){var e,s=t(this);s.data("ui-tooltip-open")&&(e=t.Event("blur"),e.target=e.currentTarget=this,i.close(e,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._updateContent(s,e))},_updateContent:function(t,e){var i,s=this.options.content,n=this,o=e?e.type:null;return"string"==typeof s?this._open(e,t,s):(i=s.call(t[0],function(i){t.data("ui-tooltip-open")&&n._delay(function(){e&&(e.type=o),this._open(e,t,i)
12
+ })}),i&&this._open(e,t,i),void 0)},_open:function(i,s,n){function o(t){l.of=t,a.is(":hidden")||a.position(l)}var a,r,h,l=t.extend({},this.options.position);if(n){if(a=this._find(s),a.length)return a.find(".ui-tooltip-content").html(n),void 0;s.is("[title]")&&(i&&"mouseover"===i.type?s.attr("title",""):s.removeAttr("title")),a=this._tooltip(s),e(s,a.attr("id")),a.find(".ui-tooltip-content").html(n),this.options.track&&i&&/^mouse/.test(i.type)?(this._on(this.document,{mousemove:o}),o(i)):a.position(t.extend({of:s},this.options.position)),a.hide(),this._show(a,this.options.show),this.options.show&&this.options.show.delay&&(h=this.delayedShow=setInterval(function(){a.is(":visible")&&(o(l.of),clearInterval(h))},t.fx.interval)),this._trigger("open",i,{tooltip:a}),r={keyup:function(e){if(e.keyCode===t.ui.keyCode.ESCAPE){var i=t.Event(e);i.currentTarget=s[0],this.close(i,!0)}},remove:function(){this._removeTooltip(a)}},i&&"mouseover"!==i.type||(r.mouseleave="close"),i&&"focusin"!==i.type||(r.focusout="close"),this._on(!0,s,r)}},close:function(e){var s=this,n=t(e?e.currentTarget:this.element),o=this._find(n);this.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&n.attr("title",n.data("ui-tooltip-title")),i(n),o.stop(!0),this._hide(o,this.options.hide,function(){s._removeTooltip(t(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),e&&"mouseleave"===e.type&&t.each(this.parents,function(e,i){t(i.element).attr("title",i.title),delete s.parents[e]}),this.closing=!0,this._trigger("close",e,{tooltip:o}),this.closing=!1)},_tooltip:function(e){var i="ui-tooltip-"+s++,n=t("<div>").attr({id:i,role:"tooltip"}).addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||""));return t("<div>").addClass("ui-tooltip-content").appendTo(n),n.appendTo(this.document[0].body),this.tooltips[i]=e,n},_find:function(e){var i=e.data("ui-tooltip-id");return i?t("#"+i):t()},_removeTooltip:function(t){t.remove(),delete this.tooltips[t.attr("id")]},_destroy:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur");n.target=n.currentTarget=s[0],e.close(n,!0),t("#"+i).remove(),s.data("ui-tooltip-title")&&(s.attr("title",s.data("ui-tooltip-title")),s.removeData("ui-tooltip-title"))})}})}(jQuery);
skin/adminhtml/default/default/sendinblue/js/jquery.multiselect.js ADDED
@@ -0,0 +1,705 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* jshint forin:true, noarg:true, noempty:true, eqeqeq:true, boss:true, undef:true, curly:true, browser:true, jquery:true */
2
+ /*
3
+ * jQuery MultiSelect UI Widget 1.13
4
+ * Copyright (c) 2012 Eric Hynds
5
+ *
6
+ * http://www.erichynds.com/jquery/jquery-ui-multiselect-widget/
7
+ *
8
+ * Depends:
9
+ * - jQuery 1.4.2+
10
+ * - jQuery UI 1.8 widget factory
11
+ *
12
+ * Optional:
13
+ * - jQuery UI effects
14
+ * - jQuery UI position utility
15
+ *
16
+ * Dual licensed under the MIT and GPL licenses:
17
+ * http://www.opensource.org/licenses/mit-license.php
18
+ * http://www.gnu.org/licenses/gpl.html
19
+ *
20
+ */
21
+ (function($, undefined){
22
+
23
+ var multiselectID = 0;
24
+
25
+ $.widget("ech.multiselect", {
26
+
27
+ // default options
28
+ options: {
29
+ header: false,
30
+ height: 175,
31
+ minWidth: 225,
32
+ classes: '',
33
+ checkAllText: 'Check all',
34
+ uncheckAllText: 'Uncheck all',
35
+ noneSelectedText: selectoption,
36
+ selectedText: '# '+selected,
37
+ selectedList: 0,
38
+ show: null,
39
+ hide: null,
40
+ autoOpen: false,
41
+ multiple: true,
42
+ position: {}
43
+ },
44
+
45
+ _create: function(){
46
+ var el = this.element.hide(),
47
+ o = this.options;
48
+
49
+ this.speed = $.fx.speeds._default; // default speed for effects
50
+ this._isOpen = false; // assume no
51
+
52
+ var
53
+ button = (this.button = $('<button type="button"><span class="ui-icon ui-icon-triangle-2-n-s"></span></button>'))
54
+ .addClass('ui-multiselect ui-widget ui-state-default ui-corner-all')
55
+ .addClass( o.classes )
56
+ .attr({ 'title':el.attr('title'), 'aria-haspopup':true, 'tabIndex':el.attr('tabIndex') })
57
+ .insertAfter( el ),
58
+
59
+ buttonlabel = (this.buttonlabel = $('<span />'))
60
+ .html( o.noneSelectedText )
61
+ .appendTo( button ),
62
+
63
+ menu = (this.menu = $('<div />'))
64
+ .addClass('ui-multiselect-menu ui-widget ui-widget-content ui-corner-all')
65
+ .addClass( o.classes )
66
+ .appendTo( document.body ),
67
+
68
+ header = (this.header = $('<div />'))
69
+ .addClass('ui-widget-header ui-corner-all ui-multiselect-header ui-helper-clearfix')
70
+ .appendTo( menu ),
71
+
72
+ headerLinkContainer = (this.headerLinkContainer = $('<ul />'))
73
+ .addClass('ui-helper-reset')
74
+ .html(function(){
75
+ if( o.header === true ){
76
+ return '<li><a class="ui-multiselect-all" href="#"><span class="ui-icon ui-icon-check"></span><span>' + o.checkAllText + '</span></a></li><li><a class="ui-multiselect-none" href="#"><span class="ui-icon ui-icon-closethick"></span><span>' + o.uncheckAllText + '</span></a></li>';
77
+ } else if(typeof o.header === "string"){
78
+ return '<li>' + o.header + '</li>';
79
+ } else {
80
+ return '';
81
+ }
82
+ })
83
+ .append('<li class="ui-multiselect-close"><a href="#" class="ui-multiselect-close"><span class="ui-icon ui-icon-circle-close"></span></a></li>')
84
+ .appendTo( header ),
85
+
86
+ checkboxContainer = (this.checkboxContainer = $('<ul />'))
87
+ .addClass('ui-multiselect-checkboxes ui-helper-reset')
88
+ .appendTo( menu );
89
+
90
+ // perform event bindings
91
+ this._bindEvents();
92
+
93
+ // build menu
94
+ this.refresh( true );
95
+
96
+ // some addl. logic for single selects
97
+ if( !o.multiple ){
98
+ menu.addClass('ui-multiselect-single');
99
+ }
100
+ },
101
+
102
+ _init: function(){
103
+ if( this.options.header === false ){
104
+ this.header.hide();
105
+ }
106
+ if( !this.options.multiple ){
107
+ this.headerLinkContainer.find('.ui-multiselect-all, .ui-multiselect-none').hide();
108
+ }
109
+ if( this.options.autoOpen ){
110
+ this.open();
111
+ }
112
+ if( this.element.is(':disabled') ){
113
+ this.disable();
114
+ }
115
+ },
116
+
117
+ refresh: function( init ){
118
+ var el = this.element,
119
+ o = this.options,
120
+ menu = this.menu,
121
+ checkboxContainer = this.checkboxContainer,
122
+ optgroups = [],
123
+ html = "",
124
+ id = el.attr('id') || multiselectID++; // unique ID for the label & option tags
125
+
126
+ // build items
127
+ el.find('option').each(function( i ){
128
+ var $this = $(this),
129
+ parent = this.parentNode,
130
+ title = this.innerHTML,
131
+ description = this.title,
132
+ value = this.value,
133
+ inputID = 'ui-multiselect-' + (this.id || id + '-option-' + i),
134
+ isDisabled = this.disabled,
135
+ isSelected = this.selected,
136
+ labelClasses = [ 'ui-corner-all' ],
137
+ liClasses = (isDisabled ? 'ui-multiselect-disabled ' : ' ') + this.className,
138
+ optLabel;
139
+
140
+ // is this an optgroup?
141
+ if( parent.tagName === 'OPTGROUP' ){
142
+ optLabel = parent.getAttribute( 'label' );
143
+
144
+ // has this optgroup been added already?
145
+ if( $.inArray(optLabel, optgroups) === -1 ){
146
+ html += '<li class="ui-multiselect-optgroup-label ' + parent.className + '"><a href="#">' + optLabel + '</a></li>';
147
+ optgroups.push( optLabel );
148
+ }
149
+ }
150
+
151
+ if( isDisabled ){
152
+ labelClasses.push( 'ui-state-disabled' );
153
+ }
154
+
155
+ // browsers automatically select the first option
156
+ // by default with single selects
157
+ if( isSelected && !o.multiple ){
158
+ labelClasses.push( 'ui-state-active' );
159
+ }
160
+
161
+ html += '<li class="' + liClasses + '">';
162
+
163
+ // create the label
164
+ html += '<label for="' + inputID + '" title="' + description + '" class="' + labelClasses.join(' ') + '">';
165
+ html += '<input id="' + inputID + '" name="multiselect_' + id + '" type="' + (o.multiple ? "checkbox" : "radio") + '" value="' + value + '" title="' + title + '"';
166
+
167
+ // pre-selected?
168
+ if( isSelected ){
169
+ html += ' checked="checked"';
170
+ html += ' aria-selected="true"';
171
+ }
172
+
173
+ // disabled?
174
+ if( isDisabled ){
175
+ html += ' disabled="disabled"';
176
+ html += ' aria-disabled="true"';
177
+ }
178
+
179
+ // add the title and close everything off
180
+ html += ' /><span>' + title + '</span></label></li>';
181
+ });
182
+
183
+ // insert into the DOM
184
+ checkboxContainer.html( html );
185
+
186
+ // cache some moar useful elements
187
+ this.labels = menu.find('label');
188
+ this.inputs = this.labels.children('input');
189
+
190
+ // set widths
191
+ this._setButtonWidth();
192
+ this._setMenuWidth();
193
+
194
+ // remember default value
195
+ this.button[0].defaultValue = this.update();
196
+
197
+ // broadcast refresh event; useful for widgets
198
+ if( !init ){
199
+ this._trigger('refresh');
200
+ }
201
+ },
202
+
203
+ // updates the button text. call refresh() to rebuild
204
+ update: function(){
205
+ var o = this.options,
206
+ $inputs = this.inputs,
207
+ $checked = $inputs.filter(':checked'),
208
+ numChecked = $checked.length,
209
+ value;
210
+
211
+ if( numChecked === 0 ){
212
+ value = o.noneSelectedText;
213
+ } else {
214
+ if($.isFunction( o.selectedText )){
215
+ value = o.selectedText.call(this, numChecked, $inputs.length, $checked.get());
216
+ } else if( /\d/.test(o.selectedList) && o.selectedList > 0 && numChecked <= o.selectedList){
217
+ value = $checked.map(function(){ return $(this).next().html(); }).get().join(', ');
218
+ } else {
219
+ value = o.selectedText.replace('#', numChecked).replace('#', $inputs.length);
220
+ }
221
+ }
222
+
223
+ this.buttonlabel.html( value );
224
+ return value;
225
+ },
226
+
227
+ // binds events
228
+ _bindEvents: function(){
229
+ var self = this, button = this.button;
230
+
231
+ function clickHandler(){
232
+ self[ self._isOpen ? 'close' : 'open' ]();
233
+ return false;
234
+ }
235
+
236
+ // webkit doesn't like it when you click on the span :(
237
+ button
238
+ .find('span')
239
+ .bind('click.multiselect', clickHandler);
240
+
241
+ // button events
242
+ button.bind({
243
+ click: clickHandler,
244
+ keypress: function( e ){
245
+ switch(e.which){
246
+ case 27: // esc
247
+ case 38: // up
248
+ case 37: // left
249
+ self.close();
250
+ break;
251
+ case 39: // right
252
+ case 40: // down
253
+ self.open();
254
+ break;
255
+ }
256
+ },
257
+ mouseenter: function(){
258
+ if( !button.hasClass('ui-state-disabled') ){
259
+ $(this).addClass('ui-state-hover');
260
+ }
261
+ },
262
+ mouseleave: function(){
263
+ $(this).removeClass('ui-state-hover');
264
+ },
265
+ focus: function(){
266
+ if( !button.hasClass('ui-state-disabled') ){
267
+ $(this).addClass('ui-state-focus');
268
+ }
269
+ },
270
+ blur: function(){
271
+ $(this).removeClass('ui-state-focus');
272
+ }
273
+ });
274
+
275
+ // header links
276
+ this.header
277
+ .delegate('a', 'click.multiselect', function( e ){
278
+ // close link
279
+ if( $(this).hasClass('ui-multiselect-close') ){
280
+ self.close();
281
+
282
+ // check all / uncheck all
283
+ } else {
284
+ self[ $(this).hasClass('ui-multiselect-all') ? 'checkAll' : 'uncheckAll' ]();
285
+ }
286
+
287
+ e.preventDefault();
288
+ });
289
+
290
+ // optgroup label toggle support
291
+ this.menu
292
+ .delegate('li.ui-multiselect-optgroup-label a', 'click.multiselect', function( e ){
293
+ e.preventDefault();
294
+
295
+ var $this = $(this),
296
+ $inputs = $this.parent().nextUntil('li.ui-multiselect-optgroup-label').find('input:visible:not(:disabled)'),
297
+ nodes = $inputs.get(),
298
+ label = $this.parent().text();
299
+
300
+ // trigger event and bail if the return is false
301
+ if( self._trigger('beforeoptgrouptoggle', e, { inputs:nodes, label:label }) === false ){
302
+ return;
303
+ }
304
+
305
+ // toggle inputs
306
+ self._toggleChecked(
307
+ $inputs.filter(':checked').length !== $inputs.length,
308
+ $inputs
309
+ );
310
+
311
+ self._trigger('optgrouptoggle', e, {
312
+ inputs: nodes,
313
+ label: label,
314
+ checked: nodes[0].checked
315
+ });
316
+ })
317
+ .delegate('label', 'mouseenter.multiselect', function(){
318
+ if( !$(this).hasClass('ui-state-disabled') ){
319
+ self.labels.removeClass('ui-state-hover');
320
+ $(this).addClass('ui-state-hover').find('input').focus();
321
+ }
322
+ })
323
+ .delegate('label', 'keydown.multiselect', function( e ){
324
+ e.preventDefault();
325
+
326
+ switch(e.which){
327
+ case 9: // tab
328
+ case 27: // esc
329
+ self.close();
330
+ break;
331
+ case 38: // up
332
+ case 40: // down
333
+ case 37: // left
334
+ case 39: // right
335
+ self._traverse(e.which, this);
336
+ break;
337
+ case 13: // enter
338
+ $(this).find('input')[0].click();
339
+ break;
340
+ }
341
+ })
342
+ .delegate('input[type="checkbox"], input[type="radio"]', 'click.multiselect', function( e ){
343
+ var $this = $(this),
344
+ val = this.value,
345
+ checked = this.checked,
346
+ tags = self.element.find('option');
347
+
348
+ // bail if this input is disabled or the event is cancelled
349
+ if( this.disabled || self._trigger('click', e, { value: val, text: this.title, checked: checked }) === false ){
350
+ e.preventDefault();
351
+ return;
352
+ }
353
+
354
+ // make sure the input has focus. otherwise, the esc key
355
+ // won't close the menu after clicking an item.
356
+ $this.focus();
357
+
358
+ // toggle aria state
359
+ $this.attr('aria-selected', checked);
360
+
361
+ // change state on the original option tags
362
+ tags.each(function(){
363
+ if( this.value === val ){
364
+ this.selected = checked;
365
+ } else if( !self.options.multiple ){
366
+ this.selected = false;
367
+ }
368
+ });
369
+
370
+ // some additional single select-specific logic
371
+ if( !self.options.multiple ){
372
+ self.labels.removeClass('ui-state-active');
373
+ $this.closest('label').toggleClass('ui-state-active', checked );
374
+
375
+ // close menu
376
+ self.close();
377
+ }
378
+
379
+ // fire change on the select box
380
+ self.element.trigger("change");
381
+
382
+ // setTimeout is to fix multiselect issue #14 and #47. caused by jQuery issue #3827
383
+ // http://bugs.jquery.com/ticket/3827
384
+ setTimeout($.proxy(self.update, self), 10);
385
+ });
386
+
387
+ // close each widget when clicking on any other element/anywhere else on the page
388
+ $(document).bind('mousedown.multiselect', function( e ){
389
+ if(self._isOpen && !$.contains(self.menu[0], e.target) && !$.contains(self.button[0], e.target) && e.target !== self.button[0]){
390
+ self.close();
391
+ }
392
+ });
393
+
394
+ // deal with form resets. the problem here is that buttons aren't
395
+ // restored to their defaultValue prop on form reset, and the reset
396
+ // handler fires before the form is actually reset. delaying it a bit
397
+ // gives the form inputs time to clear.
398
+ $(this.element[0].form).bind('reset.multiselect', function(){
399
+ setTimeout($.proxy(self.refresh, self), 10);
400
+ });
401
+ },
402
+
403
+ // set button width
404
+ _setButtonWidth: function(){
405
+ var width = this.element.outerWidth(),
406
+ o = this.options;
407
+
408
+ if( /\d/.test(o.minWidth) && width < o.minWidth){
409
+ width = o.minWidth;
410
+ }
411
+
412
+ // set widths
413
+ this.button.width( width );
414
+ },
415
+
416
+ // set menu width
417
+ _setMenuWidth: function(){
418
+ var m = this.menu,
419
+ width = this.button.outerWidth()-
420
+ parseInt(m.css('padding-left'),10)-
421
+ parseInt(m.css('padding-right'),10)-
422
+ parseInt(m.css('border-right-width'),10)-
423
+ parseInt(m.css('border-left-width'),10);
424
+
425
+ m.width( width || this.button.outerWidth() );
426
+ },
427
+
428
+ // move up or down within the menu
429
+ _traverse: function( which, start ){
430
+ var $start = $(start),
431
+ moveToLast = which === 38 || which === 37,
432
+
433
+ // select the first li that isn't an optgroup label / disabled
434
+ $next = $start.parent()[moveToLast ? 'prevAll' : 'nextAll']('li:not(.ui-multiselect-disabled, .ui-multiselect-optgroup-label)')[ moveToLast ? 'last' : 'first']();
435
+
436
+ // if at the first/last element
437
+ if( !$next.length ){
438
+ var $container = this.menu.find('ul').last();
439
+
440
+ // move to the first/last
441
+ this.menu.find('label')[ moveToLast ? 'last' : 'first' ]().trigger('mouseover');
442
+
443
+ // set scroll position
444
+ $container.scrollTop( moveToLast ? $container.height() : 0 );
445
+
446
+ } else {
447
+ $next.find('label').trigger('mouseover');
448
+ }
449
+ },
450
+
451
+ // This is an internal function to toggle the checked property and
452
+ // other related attributes of a checkbox.
453
+ //
454
+ // The context of this function should be a checkbox; do not proxy it.
455
+ _toggleState: function( prop, flag ){
456
+ return function(){
457
+ if( !this.disabled ) {
458
+ this[ prop ] = flag;
459
+ }
460
+
461
+ if( flag ){
462
+ this.setAttribute('aria-selected', true);
463
+ } else {
464
+ this.removeAttribute('aria-selected');
465
+ }
466
+ };
467
+ },
468
+
469
+ _toggleChecked: function( flag, group ){
470
+ var $inputs = (group && group.length) ? group : this.inputs,
471
+ self = this;
472
+
473
+ // toggle state on inputs
474
+ $inputs.each(this._toggleState('checked', flag));
475
+
476
+ // give the first input focus
477
+ $inputs.eq(0).focus();
478
+
479
+ // update button text
480
+ this.update();
481
+
482
+ // gather an array of the values that actually changed
483
+ var values = $inputs.map(function(){
484
+ return this.value;
485
+ }).get();
486
+
487
+ // toggle state on original option tags
488
+ this.element
489
+ .find('option')
490
+ .each(function(){
491
+ if( !this.disabled && $.inArray(this.value, values) > -1 ){
492
+ self._toggleState('selected', flag).call( this );
493
+ }
494
+ });
495
+
496
+ // trigger the change event on the select
497
+ if( $inputs.length ) {
498
+ this.element.trigger("change");
499
+ }
500
+ },
501
+
502
+ _toggleDisabled: function( flag ){
503
+ this.button
504
+ .attr({ 'disabled':flag, 'aria-disabled':flag })[ flag ? 'addClass' : 'removeClass' ]('ui-state-disabled');
505
+
506
+ var inputs = this.menu.find('input');
507
+ var key = "ech-multiselect-disabled";
508
+
509
+ if(flag) {
510
+ // remember which elements this widget disabled (not pre-disabled)
511
+ // elements, so that they can be restored if the widget is re-enabled.
512
+ inputs = inputs.filter(':enabled')
513
+ .data(key, true)
514
+ } else {
515
+ inputs = inputs.filter(function() {
516
+ return $.data(this, key) === true;
517
+ }).removeData(key);
518
+ }
519
+
520
+ inputs
521
+ .attr({ 'disabled':flag, 'arial-disabled':flag })
522
+ .parent()[ flag ? 'addClass' : 'removeClass' ]('ui-state-disabled');
523
+
524
+ this.element
525
+ .attr({ 'disabled':flag, 'aria-disabled':flag });
526
+ },
527
+
528
+ // open the menu
529
+ open: function( e ){
530
+ var self = this,
531
+ button = this.button,
532
+ menu = this.menu,
533
+ speed = this.speed,
534
+ o = this.options,
535
+ args = [];
536
+
537
+ // bail if the multiselectopen event returns false, this widget is disabled, or is already open
538
+ if( this._trigger('beforeopen') === false || button.hasClass('ui-state-disabled') || this._isOpen ){
539
+ return;
540
+ }
541
+
542
+ var $container = menu.find('ul').last(),
543
+ effect = o.show,
544
+ pos = button.offset();
545
+
546
+ // figure out opening effects/speeds
547
+ if( $.isArray(o.show) ){
548
+ effect = o.show[0];
549
+ speed = o.show[1] || self.speed;
550
+ }
551
+
552
+ // if there's an effect, assume jQuery UI is in use
553
+ // build the arguments to pass to show()
554
+ if( effect ) {
555
+ args = [ effect, speed ];
556
+ }
557
+
558
+ // set the scroll of the checkbox container
559
+ $container.scrollTop(0).height(o.height);
560
+
561
+ // position and show menu
562
+ if( $.ui.position && !$.isEmptyObject(o.position) ){
563
+ o.position.of = o.position.of || button;
564
+
565
+ menu
566
+ .show()
567
+ .position( o.position )
568
+ .hide();
569
+
570
+ // if position utility is not available...
571
+ } else {
572
+ menu.css({
573
+ top: pos.top + button.outerHeight(),
574
+ left: pos.left
575
+ });
576
+ }
577
+
578
+ // show the menu, maybe with a speed/effect combo
579
+ $.fn.show.apply(menu, args);
580
+
581
+ // select the first option
582
+ // triggering both mouseover and mouseover because 1.4.2+ has a bug where triggering mouseover
583
+ // will actually trigger mouseenter. the mouseenter trigger is there for when it's eventually fixed
584
+ this.labels.eq(0).trigger('mouseover').trigger('mouseenter').find('input').trigger('focus');
585
+
586
+ button.addClass('ui-state-active');
587
+ this._isOpen = true;
588
+ this._trigger('open');
589
+ },
590
+
591
+ // close the menu
592
+ close: function(){
593
+ if(this._trigger('beforeclose') === false){
594
+ return;
595
+ }
596
+
597
+ var o = this.options,
598
+ effect = o.hide,
599
+ speed = this.speed,
600
+ args = [];
601
+
602
+ // figure out opening effects/speeds
603
+ if( $.isArray(o.hide) ){
604
+ effect = o.hide[0];
605
+ speed = o.hide[1] || this.speed;
606
+ }
607
+
608
+ if( effect ) {
609
+ args = [ effect, speed ];
610
+ }
611
+
612
+ $.fn.hide.apply(this.menu, args);
613
+ this.button.removeClass('ui-state-active').trigger('blur').trigger('mouseleave');
614
+ this._isOpen = false;
615
+ this._trigger('close');
616
+ },
617
+
618
+ enable: function(){
619
+ this._toggleDisabled(false);
620
+ },
621
+
622
+ disable: function(){
623
+ this._toggleDisabled(true);
624
+ },
625
+
626
+ checkAll: function( e ){
627
+ this._toggleChecked(true);
628
+ this._trigger('checkAll');
629
+ },
630
+
631
+ uncheckAll: function(){
632
+ this._toggleChecked(false);
633
+ this._trigger('uncheckAll');
634
+ },
635
+
636
+ getChecked: function(){
637
+ return this.menu.find('input').filter(':checked');
638
+ },
639
+
640
+ destroy: function(){
641
+ // remove classes + data
642
+ $.Widget.prototype.destroy.call( this );
643
+
644
+ this.button.remove();
645
+ this.menu.remove();
646
+ this.element.show();
647
+
648
+ return this;
649
+ },
650
+
651
+ isOpen: function(){
652
+ return this._isOpen;
653
+ },
654
+
655
+ widget: function(){
656
+ return this.menu;
657
+ },
658
+
659
+ getButton: function(){
660
+ return this.button;
661
+ },
662
+
663
+ // react to option changes after initialization
664
+ _setOption: function( key, value ){
665
+ var menu = this.menu;
666
+
667
+ switch(key){
668
+ case 'header':
669
+ menu.find('div.ui-multiselect-header')[ value ? 'show' : 'hide' ]();
670
+ break;
671
+ case 'checkAllText':
672
+ menu.find('a.ui-multiselect-all span').eq(-1).text(value);
673
+ break;
674
+ case 'uncheckAllText':
675
+ menu.find('a.ui-multiselect-none span').eq(-1).text(value);
676
+ break;
677
+ case 'height':
678
+ menu.find('ul').last().height( parseInt(value,10) );
679
+ break;
680
+ case 'minWidth':
681
+ this.options[ key ] = parseInt(value,10);
682
+ this._setButtonWidth();
683
+ this._setMenuWidth();
684
+ break;
685
+ case 'selectedText':
686
+ case 'selectedList':
687
+ case 'noneSelectedText':
688
+ this.options[key] = value; // these all needs to update immediately for the update() call
689
+ this.update();
690
+ break;
691
+ case 'classes':
692
+ menu.add(this.button).removeClass(this.options.classes).addClass(value);
693
+ break;
694
+ case 'multiple':
695
+ menu.toggleClass('ui-multiselect-single', !value);
696
+ this.options.multiple = value;
697
+ this.element[0].multiple = value;
698
+ this.refresh();
699
+ }
700
+
701
+ $.Widget.prototype._setOption.apply( this, arguments );
702
+ }
703
+ });
704
+
705
+ })(jQuery);
skin/adminhtml/default/default/sendinblue/js/jquery.multiselect.min.js ADDED
@@ -0,0 +1 @@
 
1
+ (function($,undefined){var multiselectID=0;$.widget("ech.multiselect",{options:{header:false,height:175,minWidth:225,classes:"",checkAllText:"Check all",uncheckAllText:"Uncheck all",noneSelectedText:selectoption,selectedText:"# "+selected,selectedList:0,show:null,hide:null,autoOpen:false,multiple:true,position:{}},_create:function(){var el=this.element.hide(),o=this.options;this.speed=$.fx.speeds._default;this._isOpen=false;var button=(this.button=$('<button type="button"><span class="ui-icon ui-icon-triangle-2-n-s"></span></button>')).addClass("ui-multiselect ui-widget ui-state-default ui-corner-all").addClass(o.classes).attr({title:el.attr("title"),"aria-haspopup":true,tabIndex:el.attr("tabIndex")}).insertAfter(el),buttonlabel=(this.buttonlabel=$("<span />")).html(o.noneSelectedText).appendTo(button),menu=(this.menu=$("<div />")).addClass("ui-multiselect-menu ui-widget ui-widget-content ui-corner-all").addClass(o.classes).appendTo(document.body),header=(this.header=$("<div />")).addClass("ui-widget-header ui-corner-all ui-multiselect-header ui-helper-clearfix").appendTo(menu),headerLinkContainer=(this.headerLinkContainer=$("<ul />")).addClass("ui-helper-reset").html(function(){if(o.header===true){return'<li><a class="ui-multiselect-all" href="#"><span class="ui-icon ui-icon-check"></span><span>'+o.checkAllText+'</span></a></li><li><a class="ui-multiselect-none" href="#"><span class="ui-icon ui-icon-closethick"></span><span>'+o.uncheckAllText+"</span></a></li>";}else{if(typeof o.header==="string"){return"<li>"+o.header+"</li>";}else{return"";}}}).append('<li class="ui-multiselect-close"><a href="#" class="ui-multiselect-close"><span class="ui-icon ui-icon-circle-close"></span></a></li>').appendTo(header),checkboxContainer=(this.checkboxContainer=$("<ul />")).addClass("ui-multiselect-checkboxes ui-helper-reset").appendTo(menu);this._bindEvents();this.refresh(true);if(!o.multiple){menu.addClass("ui-multiselect-single");}},_init:function(){if(this.options.header===false){this.header.hide();}if(!this.options.multiple){this.headerLinkContainer.find(".ui-multiselect-all, .ui-multiselect-none").hide();}if(this.options.autoOpen){this.open();}if(this.element.is(":disabled")){this.disable();}},refresh:function(init){var el=this.element,o=this.options,menu=this.menu,checkboxContainer=this.checkboxContainer,optgroups=[],html="",id=el.attr("id")||multiselectID++;el.find("option").each(function(i){var $this=$(this),parent=this.parentNode,title=this.innerHTML,description=this.title,value=this.value,inputID="ui-multiselect-"+(this.id||id+"-option-"+i),isDisabled=this.disabled,isSelected=this.selected,labelClasses=["ui-corner-all"],liClasses=(isDisabled?"ui-multiselect-disabled ":" ")+this.className,optLabel;if(parent.tagName==="OPTGROUP"){optLabel=parent.getAttribute("label");if($.inArray(optLabel,optgroups)===-1){html+='<li class="ui-multiselect-optgroup-label '+parent.className+'"><a href="#">'+optLabel+"</a></li>";optgroups.push(optLabel);}}if(isDisabled){labelClasses.push("ui-state-disabled");}if(isSelected&&!o.multiple){labelClasses.push("ui-state-active");}html+='<li class="'+liClasses+'">';html+='<label for="'+inputID+'" title="'+description+'" class="'+labelClasses.join(" ")+'">';html+='<input id="'+inputID+'" name="multiselect_'+id+'" type="'+(o.multiple?"checkbox":"radio")+'" value="'+value+'" title="'+title+'"';if(isSelected){html+=' checked="checked"';html+=' aria-selected="true"';}if(isDisabled){html+=' disabled="disabled"';html+=' aria-disabled="true"';}html+=" /><span>"+title+"</span></label></li>";});checkboxContainer.html(html);this.labels=menu.find("label");this.inputs=this.labels.children("input");this._setButtonWidth();this._setMenuWidth();this.button[0].defaultValue=this.update();if(!init){this._trigger("refresh");}},update:function(){var o=this.options,$inputs=this.inputs,$checked=$inputs.filter(":checked"),numChecked=$checked.length,value;if(numChecked===0){value=o.noneSelectedText;}else{if($.isFunction(o.selectedText)){value=o.selectedText.call(this,numChecked,$inputs.length,$checked.get());}else{if(/\d/.test(o.selectedList)&&o.selectedList>0&&numChecked<=o.selectedList){value=$checked.map(function(){return $(this).next().html();}).get().join(", ");}else{value=o.selectedText.replace("#",numChecked).replace("#",$inputs.length);}}}this.buttonlabel.html(value);return value;},_bindEvents:function(){var self=this,button=this.button;function clickHandler(){self[self._isOpen?"close":"open"]();return false;}button.find("span").bind("click.multiselect",clickHandler);button.bind({click:clickHandler,keypress:function(e){switch(e.which){case 27:case 38:case 37:self.close();break;case 39:case 40:self.open();break;}},mouseenter:function(){if(!button.hasClass("ui-state-disabled")){$(this).addClass("ui-state-hover");}},mouseleave:function(){$(this).removeClass("ui-state-hover");},focus:function(){if(!button.hasClass("ui-state-disabled")){$(this).addClass("ui-state-focus");}},blur:function(){$(this).removeClass("ui-state-focus");}});this.header.delegate("a","click.multiselect",function(e){if($(this).hasClass("ui-multiselect-close")){self.close();}else{self[$(this).hasClass("ui-multiselect-all")?"checkAll":"uncheckAll"]();}e.preventDefault();});this.menu.delegate("li.ui-multiselect-optgroup-label a","click.multiselect",function(e){e.preventDefault();var $this=$(this),$inputs=$this.parent().nextUntil("li.ui-multiselect-optgroup-label").find("input:visible:not(:disabled)"),nodes=$inputs.get(),label=$this.parent().text();if(self._trigger("beforeoptgrouptoggle",e,{inputs:nodes,label:label})===false){return;}self._toggleChecked($inputs.filter(":checked").length!==$inputs.length,$inputs);self._trigger("optgrouptoggle",e,{inputs:nodes,label:label,checked:nodes[0].checked});}).delegate("label","mouseenter.multiselect",function(){if(!$(this).hasClass("ui-state-disabled")){self.labels.removeClass("ui-state-hover");$(this).addClass("ui-state-hover").find("input").focus();}}).delegate("label","keydown.multiselect",function(e){e.preventDefault();switch(e.which){case 9:case 27:self.close();break;case 38:case 40:case 37:case 39:self._traverse(e.which,this);break;case 13:$(this).find("input")[0].click();break;}}).delegate('input[type="checkbox"], input[type="radio"]',"click.multiselect",function(e){var $this=$(this),val=this.value,checked=this.checked,tags=self.element.find("option");if(this.disabled||self._trigger("click",e,{value:val,text:this.title,checked:checked})===false){e.preventDefault();return;}$this.focus();$this.attr("aria-selected",checked);tags.each(function(){if(this.value===val){this.selected=checked;}else{if(!self.options.multiple){this.selected=false;}}});if(!self.options.multiple){self.labels.removeClass("ui-state-active");$this.closest("label").toggleClass("ui-state-active",checked);self.close();}self.element.trigger("change");setTimeout($.proxy(self.update,self),10);});$(document).bind("mousedown.multiselect",function(e){if(self._isOpen&&!$.contains(self.menu[0],e.target)&&!$.contains(self.button[0],e.target)&&e.target!==self.button[0]){self.close();}});$(this.element[0].form).bind("reset.multiselect",function(){setTimeout($.proxy(self.refresh,self),10);});},_setButtonWidth:function(){var width=this.element.outerWidth(),o=this.options;if(/\d/.test(o.minWidth)&&width<o.minWidth){width=o.minWidth;}this.button.width(width);},_setMenuWidth:function(){var m=this.menu,width=this.button.outerWidth()-parseInt(m.css("padding-left"),10)-parseInt(m.css("padding-right"),10)-parseInt(m.css("border-right-width"),10)-parseInt(m.css("border-left-width"),10);m.width(width||this.button.outerWidth());},_traverse:function(which,start){var $start=$(start),moveToLast=which===38||which===37,$next=$start.parent()[moveToLast?"prevAll":"nextAll"]("li:not(.ui-multiselect-disabled, .ui-multiselect-optgroup-label)")[moveToLast?"last":"first"]();if(!$next.length){var $container=this.menu.find("ul").last();this.menu.find("label")[moveToLast?"last":"first"]().trigger("mouseover");$container.scrollTop(moveToLast?$container.height():0);}else{$next.find("label").trigger("mouseover");}},_toggleState:function(prop,flag){return function(){if(!this.disabled){this[prop]=flag;}if(flag){this.setAttribute("aria-selected",true);}else{this.removeAttribute("aria-selected");}};},_toggleChecked:function(flag,group){var $inputs=(group&&group.length)?group:this.inputs,self=this;$inputs.each(this._toggleState("checked",flag));$inputs.eq(0).focus();this.update();var values=$inputs.map(function(){return this.value;}).get();this.element.find("option").each(function(){if(!this.disabled&&$.inArray(this.value,values)>-1){self._toggleState("selected",flag).call(this);}});if($inputs.length){this.element.trigger("change");}},_toggleDisabled:function(flag){this.button.attr({disabled:flag,"aria-disabled":flag})[flag?"addClass":"removeClass"]("ui-state-disabled");var inputs=this.menu.find("input");var key="ech-multiselect-disabled";if(flag){inputs=inputs.filter(":enabled").data(key,true);}else{inputs=inputs.filter(function(){return $.data(this,key)===true;}).removeData(key);}inputs.attr({disabled:flag,"arial-disabled":flag}).parent()[flag?"addClass":"removeClass"]("ui-state-disabled");this.element.attr({disabled:flag,"aria-disabled":flag});},open:function(e){var self=this,button=this.button,menu=this.menu,speed=this.speed,o=this.options,args=[];if(this._trigger("beforeopen")===false||button.hasClass("ui-state-disabled")||this._isOpen){return;}var $container=menu.find("ul").last(),effect=o.show,pos=button.offset();if($.isArray(o.show)){effect=o.show[0];speed=o.show[1]||self.speed;}if(effect){args=[effect,speed];}$container.scrollTop(0).height(o.height);if($.ui.position&&!$.isEmptyObject(o.position)){o.position.of=o.position.of||button;menu.show().position(o.position).hide();}else{menu.css({top:pos.top+button.outerHeight(),left:pos.left});}$.fn.show.apply(menu,args);this.labels.eq(0).trigger("mouseover").trigger("mouseenter").find("input").trigger("focus");button.addClass("ui-state-active");this._isOpen=true;this._trigger("open");},close:function(){if(this._trigger("beforeclose")===false){return;}var o=this.options,effect=o.hide,speed=this.speed,args=[];if($.isArray(o.hide)){effect=o.hide[0];speed=o.hide[1]||this.speed;}if(effect){args=[effect,speed];}$.fn.hide.apply(this.menu,args);this.button.removeClass("ui-state-active").trigger("blur").trigger("mouseleave");this._isOpen=false;this._trigger("close");},enable:function(){this._toggleDisabled(false);},disable:function(){this._toggleDisabled(true);},checkAll:function(e){this._toggleChecked(true);this._trigger("checkAll");},uncheckAll:function(){this._toggleChecked(false);this._trigger("uncheckAll");},getChecked:function(){return this.menu.find("input").filter(":checked");},destroy:function(){$.Widget.prototype.destroy.call(this);this.button.remove();this.menu.remove();this.element.show();return this;},isOpen:function(){return this._isOpen;},widget:function(){return this.menu;},getButton:function(){return this.button;},_setOption:function(key,value){var menu=this.menu;switch(key){case"header":menu.find("div.ui-multiselect-header")[value?"show":"hide"]();break;case"checkAllText":menu.find("a.ui-multiselect-all span").eq(-1).text(value);break;case"uncheckAllText":menu.find("a.ui-multiselect-none span").eq(-1).text(value);break;case"height":menu.find("ul").last().height(parseInt(value,10));break;case"minWidth":this.options[key]=parseInt(value,10);this._setButtonWidth();this._setMenuWidth();break;case"selectedText":case"selectedList":case"noneSelectedText":this.options[key]=value;this.update();break;case"classes":menu.add(this.button).removeClass(this.options.classes).addClass(value);break;case"multiple":menu.toggleClass("ui-multiselect-single",!value);this.options.multiple=value;this.element[0].multiple=value;this.refresh();}$.Widget.prototype._setOption.apply(this,arguments);}});})(jQuery);
skin/adminhtml/default/default/sendinblue/js/sendinblue.js ADDED
@@ -0,0 +1,870 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * @author Sendinblue plateform <contact@sendinblue.com>
3
+ * @copyright 2013-2014 Sendinblue
4
+ * URL: https:www.sendinblue.com
5
+ * Do not edit or add to this file if you wish to upgrade Sendinblue Magento plugin to newer
6
+ * versions in the future. If you wish to customize Sendinblue magento plugin for your
7
+ * needs then we can't provide a technical support.
8
+ */
9
+
10
+ jQuery.noConflict();
11
+ jQuery(document)
12
+ .ready(
13
+ function() {
14
+
15
+
16
+ var apistatuskey = jQuery('#apistatuskey').val();
17
+
18
+ jQuery("#select").multiselect();
19
+
20
+ jQuery(".sendin_api_status").click(function()
21
+ {
22
+ if (apistatuskey == 1 && jQuery(this).val() == 1)
23
+ {
24
+
25
+ jQuery("#sendin_apikey").show();
26
+ jQuery(".alldiv").show();
27
+ jQuery(".hidetableblock").show();
28
+
29
+ }
30
+ else{
31
+ if(jQuery(this).val() == 1)
32
+ {
33
+ jQuery("#sendin_apikey").show();
34
+ }else{
35
+ jQuery("#sendin_apikey").hide();
36
+ jQuery(".alldiv").hide();
37
+ }
38
+ }
39
+
40
+ });
41
+ function loadData(page) {
42
+ var ajaxcontentUrl = jQuery("#ajaxcontentUrl").val();
43
+ jQuery.ajax({
44
+ type : "POST",
45
+ async : false,
46
+ url : ajaxcontentUrl,
47
+ data : "page=" + page,
48
+ beforeSend : function() {
49
+ jQuery('#ajax-busy').show();
50
+ },
51
+ success : function(msg) {
52
+ jQuery('#ajax-busy').hide();
53
+ jQuery(".midleft").html(msg);
54
+ jQuery(".midleft").ajaxComplete(
55
+ function(event, request, settings){
56
+
57
+ jQuery(".midleft").html(msg);
58
+
59
+ });
60
+ }
61
+ });
62
+
63
+
64
+
65
+ }
66
+
67
+ jQuery('.hdtab').click(function(){
68
+ if(parseInt(jQuery(this).val())) { jQuery('#hidetabselect').css('display','block');}
69
+
70
+ });
71
+
72
+
73
+ jQuery('body').on('click',' .pagination li.active',function() {
74
+ var page = jQuery(this).attr('p');
75
+ jQuery('#pagenumber').val(page);
76
+ loadData(page);
77
+
78
+ });
79
+
80
+
81
+ jQuery('.toolTip').hover(function () {
82
+ var title = jQuery(this).attr('title');
83
+ var offset = jQuery(this).offset();
84
+
85
+ jQuery('body').append(
86
+ '<div id="tipkk" style="top:' + offset.top + 'px; left:' + offset.left + 'px; ">' + title + '</div>');
87
+ var tipContentHeight = jQuery('#tipkk')
88
+ .height() + 25;
89
+ jQuery('#tipkk').css(
90
+ 'top', (offset.top - tipContentHeight) + 'px');
91
+
92
+ }, function () {
93
+ jQuery('#tipkk').remove();
94
+ });
95
+ jQuery('#sender_order').mouseover(function () {
96
+ var val = jQuery(this).val();
97
+ if(isInteger(val) || val == ''){
98
+ jQuery("#sender_order").attr('maxlength','17');
99
+ jQuery('#sender_order_text').text((17 - val.length));
100
+
101
+ }
102
+ else{
103
+ jQuery("#sender_order").attr('maxlength','11');
104
+ var str7 = val.length > 11 ? val.substr(1,11) : val;
105
+ jQuery("#sender_order").val(str7);
106
+ jQuery('#sender_order_text').text((11 - val.length));
107
+
108
+ }
109
+ });
110
+
111
+ jQuery('#sender_order').keyup(function () {
112
+ var val = jQuery(this).val();
113
+ if(isInteger(val) || val == ''){
114
+ jQuery("#sender_order").attr('maxlength','17');
115
+ jQuery('#sender_order_text').text((17 - val.length));
116
+
117
+ }
118
+ else{
119
+ jQuery("#sender_order").attr('maxlength','11');
120
+ var str7 = val.length > 11 ? val.substr(1,11) : val;
121
+ jQuery("#sender_order").val(str7);
122
+ jQuery('#sender_order_text').text((11 - val.length));
123
+
124
+ }
125
+ });
126
+
127
+
128
+
129
+ if(jQuery('#sender_order').val() != '')
130
+ {
131
+ var val = jQuery('#sender_order').val();
132
+ if(isInteger(val)){
133
+ jQuery("#sender_order").attr('maxlength','17');
134
+ jQuery('#sender_order_text').text((17 - val.length));
135
+
136
+ }
137
+ else{
138
+ jQuery("#sender_order").attr('maxlength','11');
139
+ jQuery('#sender_order_text').text((11 - val.length));
140
+
141
+ }
142
+ }
143
+
144
+ jQuery('#sender_order_message').keyup(function () {
145
+
146
+ var chars = this.value.length,
147
+ messages = Math.ceil(chars / 160),
148
+ remaining = messages * 160 - (chars % (messages * 160) || messages * 160);
149
+ if(remaining == 0)
150
+ {
151
+ remaining = 160.
152
+ }
153
+
154
+ jQuery('#sender_order_message_text').text(remaining);
155
+
156
+ jQuery('#sender_order_message_text_count').text(messages);
157
+
158
+ });
159
+
160
+ if(jQuery('#sender_order_message').val() != '')
161
+ {
162
+ var chars = jQuery('#sender_order_message').val().length,
163
+ messages = Math.ceil(chars / 160),
164
+ remaining = messages * 160 - (chars % (messages * 160) || messages * 160);
165
+
166
+ jQuery('#sender_order_message_text').text(remaining);
167
+
168
+ jQuery('#sender_order_message_text_count').text(messages);
169
+ }
170
+
171
+ jQuery('#sender_shipment').mouseover(function () {
172
+ var val = jQuery(this).val();
173
+
174
+ if(isInteger(val) || val == ''){
175
+ jQuery("#sender_shipment").attr('maxlength','17');
176
+ jQuery('#sender_shipment_text').text((17 - val.length));
177
+
178
+ }
179
+ else{
180
+ jQuery("#sender_shipment").attr('maxlength','11');
181
+ var str7 = val.length > 11 ? val.substr(1,11) : val;
182
+ jQuery("#sender_shipment").val(str7);
183
+ jQuery('#sender_shipment_text').text((11 - val.length));
184
+
185
+ }
186
+ });
187
+ jQuery('#sender_shipment').keyup(function () {
188
+ var val = jQuery(this).val();
189
+
190
+ if(isInteger(val) || val == ''){
191
+ jQuery("#sender_shipment").attr('maxlength','17');
192
+ jQuery('#sender_shipment_text').text((17 - val.length));
193
+
194
+ }
195
+ else{
196
+ jQuery("#sender_shipment").attr('maxlength','11');
197
+ var str7 = val.length > 11 ? val.substr(1,11) : val;
198
+ jQuery("#sender_shipment").val(str7);
199
+ jQuery('#sender_shipment_text').text((11 - val.length));
200
+
201
+ }
202
+ });
203
+
204
+ if(jQuery('#sender_shipment').val() != '')
205
+ {
206
+ var val = jQuery('#sender_shipment').val();
207
+ if(isInteger(val)){
208
+ jQuery("#sender_shipment").attr('maxlength','17');
209
+ jQuery('#sender_shipment_text').text((17 - val.length));
210
+
211
+ }
212
+ else{
213
+ jQuery("#sender_shipment").attr('maxlength','11');
214
+ jQuery('#sender_shipment_text').text((11 - val.length));
215
+
216
+ }
217
+ }
218
+
219
+ jQuery('#sender_shipment_message').keyup(function () {
220
+
221
+ var chars = this.value.length,
222
+ messages = Math.ceil(chars / 160),
223
+ remaining = messages * 160 - (chars % (messages * 160) || messages * 160);
224
+ if(remaining == 0)
225
+ {
226
+ remaining = 160.
227
+ }
228
+ jQuery('#sender_shipment_message_text').text(remaining);
229
+
230
+ jQuery('#sender_shipment_message_text_count').text(messages);
231
+
232
+ });
233
+
234
+ if(jQuery('#sender_shipment_message').val() != '')
235
+ {
236
+ var chars = jQuery('#sender_shipment_message').val().length,
237
+ messages = Math.ceil(chars / 160),
238
+ remaining = messages * 160 - (chars % (messages * 160) || messages * 160);
239
+
240
+ jQuery('#sender_shipment_message_text').text(remaining);
241
+
242
+ jQuery('#sender_shipment_message_text_count').text(messages);
243
+ }
244
+
245
+ jQuery('#sender_campaign').mouseover(function () {
246
+ var val = jQuery(this).val();
247
+ if(isInteger(val) || val == ''){
248
+ jQuery("#sender_campaign").attr('maxlength','17');
249
+ jQuery('#sender_campaign_text').text((17 - val.length));
250
+
251
+ }
252
+ else{
253
+ jQuery("#sender_campaign").attr('maxlength','11');
254
+ var str7 = val.length > 11 ? val.substr(1,11) : val;
255
+ jQuery("#sender_campaign").val(str7);
256
+ jQuery('#sender_campaign_text').text((11 - val.length));
257
+
258
+ }
259
+ });
260
+ jQuery('#sender_campaign').keyup(function () {
261
+ var val = jQuery(this).val();
262
+
263
+ if(isInteger(val) || val == ''){
264
+ jQuery("#sender_campaign").attr('maxlength','17');
265
+ jQuery('#sender_campaign_text').text((17 - val.length));
266
+
267
+ }
268
+ else{
269
+ jQuery("#sender_campaign").attr('maxlength','11');
270
+ var str7 = val.length > 11 ? val.substr(1,11) : val;
271
+ jQuery("#sender_campaign").val(str7);
272
+ jQuery('#sender_campaign_text').text((11 - val.length));
273
+
274
+ }
275
+ });
276
+
277
+ if(jQuery('#sender_campaign').val() != '')
278
+ {
279
+ var val = jQuery('#sender_campaign').val();
280
+
281
+ if(isInteger(val)){
282
+ jQuery("#sender_campaign").attr('maxlength','17');
283
+ jQuery('#sender_campaign_text').text((17 - val.length));
284
+ }
285
+ else{
286
+ jQuery("#sender_campaign").attr('maxlength','11');
287
+ jQuery('#sender_campaign_text').text((11 - val.length));
288
+ }
289
+ }
290
+
291
+ jQuery('#sender_campaign_message').keyup(function () {
292
+
293
+ var chars = this.value.length,
294
+ messages = Math.ceil(chars / 160),
295
+ remaining = messages * 160 - (chars % (messages * 160) || messages * 160);
296
+ if(remaining == 0)
297
+ {
298
+ remaining = 160.
299
+ }
300
+ jQuery('#sender_campaign_message_text').text(remaining);
301
+ jQuery('#sender_campaign_message_text_count').text(messages);
302
+
303
+ });
304
+
305
+ if(jQuery('#sender_campaign_message').val() != '')
306
+ {
307
+ var chars = jQuery('#sender_campaign_message').val().length,
308
+ messages = Math.ceil(chars / 160),
309
+ remaining = messages * 160 - (chars % (messages * 160) || messages * 160);
310
+
311
+ jQuery('#sender_campaign_message_text').text(remaining);
312
+
313
+ jQuery('#sender_campaign_message_text_count').text(messages);
314
+ }
315
+
316
+ jQuery(".sms_order_setting").click(function () {
317
+ var orderSetting = jQuery(this).val();
318
+ var orderUrl = jQuery("#order").val();
319
+
320
+ jQuery.ajax({
321
+ type: "POST",
322
+ async: false,
323
+ url: orderUrl,
324
+ data: "orderSetting=" + orderSetting,
325
+ beforeSend: function () {
326
+ jQuery('#ajax-busy').show();
327
+ },
328
+ success: function (msg) {
329
+ jQuery('#ajax-busy').hide();
330
+ if (orderSetting == 1) {
331
+ jQuery(".hideOrder").show();
332
+ } else {
333
+ jQuery(".hideOrder").hide();
334
+ }
335
+ }
336
+ });
337
+
338
+ });
339
+ jQuery(".sms_shiping_setting").click(function () {
340
+ var shipingSetting = jQuery(this).val();
341
+ var shipingUrl = jQuery("#shiping").val();
342
+
343
+ jQuery.ajax({
344
+ type: "POST",
345
+ async: false,
346
+ url: shipingUrl,
347
+ data: "shipingSetting=" + shipingSetting,
348
+ beforeSend: function () {
349
+ jQuery('#ajax-busy').show();
350
+ },
351
+ success: function (msg) {
352
+ jQuery('#ajax-busy').hide();
353
+ if (shipingSetting == 1) {
354
+ jQuery(".hideShiping").show();
355
+ } else {
356
+ jQuery(".hideShiping").hide();
357
+ }
358
+ }
359
+ });
360
+
361
+ });
362
+
363
+ jQuery(".sms_campaign_setting").click(function () {
364
+ var campaignSetting = jQuery(this).val();
365
+ var campaignUrl = jQuery("#campaign").val();
366
+
367
+ jQuery.ajax({
368
+ type: "POST",
369
+ async: false,
370
+ url: campaignUrl,
371
+ data: "campaignSetting=" + campaignSetting,
372
+ beforeSend: function () {
373
+ jQuery('#ajax-busy').show();
374
+ },
375
+ success: function (msg) {
376
+ jQuery('#ajax-busy').hide();
377
+ if (campaignSetting == 1) {
378
+ jQuery(".hideCampaign").show();
379
+ } else {
380
+ jQuery(".hideCampaign").hide();
381
+ }
382
+ }
383
+ });
384
+
385
+ });
386
+
387
+ if (jQuery('input:radio[name=sms_order_setting]:checked').val() == 0)
388
+ {
389
+ jQuery('.hideOrder').hide();
390
+ } else {
391
+ jQuery('.hideOrder').show();
392
+ }
393
+
394
+ jQuery(".Sendin_Sms_Choice").click(function ()
395
+ {
396
+ if (jQuery(this).val() == 1) {
397
+ jQuery(".multiplechoice").hide();
398
+ jQuery(".singlechoice").show();
399
+ } else {
400
+ jQuery(".multiplechoice").show();
401
+ jQuery(".singlechoice").hide();
402
+ }
403
+ });
404
+
405
+ if (jQuery('input:radio[name=Sendin_Sms_Choice]:checked').val() == 0)
406
+ {
407
+ jQuery(".multiplechoice").show();
408
+ jQuery(".singlechoice").hide();
409
+ } else {
410
+ jQuery(".singlechoice").show();
411
+ jQuery(".multiplechoice").hide();
412
+ }
413
+
414
+ jQuery(".sms_shiping_setting").click(function () {
415
+ if (jQuery(this).val() == 1) {
416
+
417
+ jQuery(".hideShiping").show();
418
+ } else {
419
+ jQuery(".hideShiping").hide();
420
+ }
421
+ });
422
+
423
+
424
+ if (jQuery('input:radio[name=sms_credit]:checked').val() == 0)
425
+ jQuery(".hideCredit").hide();
426
+ else
427
+ jQuery(".hideCredit").show();
428
+
429
+
430
+ jQuery(".sms_credit").click(function (){
431
+
432
+ var sms_credit = jQuery(this).val();
433
+ var creditUrl = jQuery("#credits").val();
434
+ var type = 'sms_credit';
435
+ jQuery.ajax({
436
+ type: "POST",
437
+ async: false,
438
+ url: creditUrl,
439
+ data: "sms_credit=" + sms_credit,
440
+ beforeSend: function () {
441
+ jQuery('#ajax-busy').show();
442
+ },
443
+ success: function (msg) {
444
+ jQuery('#ajax-busy').hide();
445
+ if (sms_credit == 1) {
446
+ jQuery(".hideCredit").show();
447
+ } else {
448
+ jQuery(".hideCredit").hide();
449
+ }
450
+ }
451
+ });
452
+
453
+ });
454
+
455
+ if (jQuery('input:radio[name=sms_shiping_setting]:checked').val() == 0) {
456
+ jQuery('.hideShiping').hide();
457
+ } else {
458
+ jQuery('.hideShiping').show();
459
+ }
460
+
461
+ jQuery(".sms_campaign_setting").click(function () {
462
+ if (jQuery(this).val() == 1) {
463
+ jQuery(".hideCampaign").show();
464
+ } else {
465
+ jQuery(".hideCampaign").hide();
466
+ }
467
+ });
468
+
469
+ if (jQuery('input:radio[name=sms_campaign_setting]:checked').val() == 0) {
470
+ jQuery('.hideCampaign').hide();
471
+ } else {
472
+ jQuery('.hideCampaign').show();
473
+ }
474
+
475
+ jQuery("#selectSmsList").multiselect({
476
+ header: false,
477
+ checkall:false
478
+ });
479
+
480
+ jQuery("#tabs li").click(function() {
481
+ // First remove class "active" from currently active tab
482
+ jQuery("#tabs li").removeClass('active');
483
+
484
+ // Now add class "active" to the selected/clicked tab
485
+ jQuery(this).addClass("active");
486
+
487
+ // Hide all tab content
488
+ jQuery(".tab_content").hide();
489
+
490
+ // Here we get the href value of the selected tab
491
+ var selected_tab = jQuery(this).find("a").attr("href");
492
+
493
+ // Show the selected tab content
494
+ jQuery(selected_tab).fadeIn();
495
+
496
+ // At the end, we add return false so that the click on the link is not executed
497
+ return false;
498
+ });
499
+
500
+ function isInteger(val) {
501
+ var numberRegex = /^[+-]?\d+(\.\d+)?([eE][+-]?\d+)?$/;
502
+ if(numberRegex.test(val)) {
503
+ return true
504
+ }
505
+ return false;
506
+ }
507
+
508
+
509
+ jQuery('#showUserlist').click(function(){
510
+
511
+ if(jQuery('.userDetails').is(':hidden'))
512
+ {
513
+ loadData(1);
514
+ jQuery('#Spantextless').show();
515
+ jQuery('#Spantextmore').hide();
516
+ }else
517
+ {
518
+ jQuery('#Spantextmore').show();
519
+ jQuery('#Spantextless').hide();
520
+ }
521
+ jQuery('.userDetails').slideToggle();
522
+ });
523
+
524
+ var base_url = getBaseURL();
525
+
526
+ jQuery(".Tracking").click(function()
527
+ {
528
+ var Tracking = jQuery(this).val();
529
+ var trackingUrl = jQuery("#trackingUrl").val();
530
+ jQuery.ajax({
531
+ type : "POST",
532
+ async : false,
533
+ url : trackingUrl,
534
+ data : "script=" + Tracking,
535
+ beforeSend : function(){
536
+ jQuery('#ajax-busy').show();
537
+ },
538
+ success : function(msg){
539
+ jQuery('#ajax-busy').hide();
540
+ }
541
+ });
542
+ });
543
+
544
+
545
+
546
+
547
+ jQuery(".smtpStatus").click(function() {
548
+
549
+ var smtptest = jQuery(this).val();
550
+ var smtpUrl = jQuery("#smtpUrl").val();
551
+ if (smtptest == 0) {
552
+ jQuery('.smtptest').hide();
553
+ }
554
+ if (smtptest == 1) {
555
+ jQuery('.smtptest').show();
556
+ }
557
+ jQuery.ajax({
558
+ type : "POST",
559
+ async : false,
560
+ url : smtpUrl,
561
+ data : "smtptest=" + smtptest,
562
+ beforeSend : function() {
563
+ jQuery('#ajax-busy').show();
564
+ },
565
+ success : function(msg) {
566
+ jQuery('#ajax-busy').hide();
567
+ }
568
+ });
569
+ });
570
+
571
+
572
+ var skin_url = jQuery('#skin_url').val()
573
+ jQuery('<div id="ajax-busy"/> loading..')
574
+ .css(
575
+ {
576
+ opacity : 0.5,
577
+ position : 'fixed',
578
+ top : 0,
579
+ left : 0,
580
+ width : '100%',
581
+ height : jQuery(window).height() + 'px',
582
+ background : 'white url('+skin_url+'adminhtml/default/default/sendinblue/images/loader.gif) no-repeat center'
583
+ }).hide().appendTo('body');
584
+
585
+ // get site base url
586
+ function getBaseURL() {
587
+ var sBase = location.href.substr(0, location.href.lastIndexOf("/") + 1);
588
+ var sp = sBase.split('/');
589
+ var lastFolder = sp[ sp.length - 2 ];
590
+ return sBase.replace(lastFolder+'/', '');
591
+ }
592
+
593
+
594
+
595
+ jQuery('body').on('click', '.ajax_contacts_href', function (e) {
596
+
597
+ var email = jQuery(this).attr('email');
598
+ var status = jQuery(this).attr('status');
599
+ var ajaxUrl = jQuery("#ajaxUrl").val();
600
+
601
+ jQuery.ajax({
602
+ type : "POST",
603
+ async : false,
604
+ url : ajaxUrl,
605
+ data : {"email":email,"newsletter":status},
606
+ beforeSend : function() {
607
+ jQuery('#ajax-busy').show();
608
+ },
609
+ success : function(msg) {
610
+ jQuery('#ajax-busy').hide();
611
+ }
612
+ });
613
+
614
+ var page_no = jQuery('#pagenumber').val();
615
+ loadData(page_no); // For first time page load
616
+
617
+ });
618
+
619
+ });
620
+
621
+ function testsmssend(sendererr,messageerr,mobileerr) {
622
+ var sender = jQuery('#sender_order').val();
623
+ var message =jQuery('#sender_order_message').val();
624
+ var number = jQuery("#sender_order_number").val();
625
+ var ajaxOrderSmsUrl = jQuery('#ajaxOrderSmsUrl').val();
626
+ var smsCampError = jQuery("#smsCampError").val();
627
+ var smsCampSuccess = jQuery("#smsCampSuccess").val();
628
+ if(sender == '' || isValid(sender) == false)
629
+ {
630
+ alert(sendererr);
631
+ }
632
+ else if( message == '')
633
+ {
634
+ alert(messageerr);
635
+ }
636
+ else if(number == '')
637
+ {
638
+ alert(mobileerr);
639
+ }
640
+ else {
641
+ jQuery.ajax({
642
+ type : "POST",
643
+ async : false,
644
+ url : ajaxOrderSmsUrl,
645
+ data : {"sender":sender,"message":message,"number":number} ,
646
+ beforeSend : function() {
647
+ jQuery('#ajax-busy').show();
648
+ },
649
+ success : function(msg) {
650
+ jQuery('#ajax-busy').hide();
651
+ if(msg.trim() == 'OK')
652
+ { alert(smsCampSuccess); }
653
+ else { alert(smsCampError); }
654
+ }
655
+ });}
656
+ return false;
657
+ }
658
+
659
+ function testShippedSmsSend(sendererr,messageerr,mobileerr) {
660
+
661
+ var sender = jQuery('#sender_shipment').val();
662
+ var message =jQuery('#sender_shipment_message').val();
663
+ var number = jQuery("#sender_shipment_number").val();
664
+ var ajaxOrderShippedUrl = jQuery('#ajaxOrderShippedUrl').val();
665
+ var smsCampError = jQuery("#smsCampError").val();
666
+ var smsCampSuccess = jQuery("#smsCampSuccess").val();
667
+ if(sender == '' || isValid(sender) == false)
668
+ {
669
+ alert(sendererr);
670
+ }
671
+ else if( message == '')
672
+ {
673
+ alert(messageerr);
674
+ }
675
+ else if(number == '')
676
+ {
677
+ alert(mobileerr);
678
+ }
679
+ else {
680
+ jQuery.ajax({
681
+ type : "POST",
682
+ async : false,
683
+ url : ajaxOrderShippedUrl,
684
+ data : {"sender":sender,"message":message,"number":number} ,
685
+ beforeSend : function() {
686
+ jQuery('#ajax-busy').show();
687
+ },
688
+ success : function(msg) {
689
+ jQuery('#ajax-busy').hide();
690
+ if(msg.trim() == 'OK')
691
+ { alert(smsCampSuccess); }
692
+ else { alert(smsCampError); }
693
+ }
694
+ });}
695
+ return false;
696
+ }
697
+ function testCampaignSmsSend(sendererr,messageerr,mobileerr) {
698
+
699
+ var sender = jQuery('#sender_campaign').val();
700
+ var message =jQuery('#sender_campaign_message').val();
701
+ var number = jQuery("#sender_campaigntest_number").val();
702
+ var ajaxSmsCampaignUrl = jQuery('#ajaxSmsCampaignUrl').val();
703
+ var smsCampError = jQuery("#smsCampError").val();
704
+ var smsCampSuccess = jQuery("#smsCampSuccess").val();
705
+
706
+ if(sender == '' || isValid(sender) == false)
707
+ {
708
+ alert(sendererr);
709
+ }
710
+ else if( message == '')
711
+ {
712
+ alert(messageerr);
713
+ }
714
+ else if(number == '' || isMobilevalidation(number) == false)
715
+ {
716
+ alert(mobileerr);
717
+ }
718
+ else {
719
+ jQuery.ajax({
720
+ type : "POST",
721
+ async : false,
722
+ url : ajaxSmsCampaignUrl,
723
+ data : {"sender":sender,"message":message,"number":number} ,
724
+ beforeSend : function() {
725
+ jQuery('#ajax-busy').show();
726
+ },
727
+ success : function(msg) {
728
+ jQuery('#ajax-busy').hide();
729
+ if(msg.trim() == 'OK')
730
+ { alert(smsCampSuccess); }
731
+ else { alert(smsCampError); }
732
+ }
733
+ });}
734
+ return false;
735
+ }
736
+
737
+ function senderOrderSaveValid(sendererr,messageerr)
738
+ {
739
+ var sender = jQuery('#sender_order').val();
740
+ var message =jQuery('#sender_order_message').val();
741
+ if(sender == '' || isValid(sender) == false)
742
+ {
743
+ alert(sendererr);
744
+ return false;
745
+ }
746
+ else if( message == '')
747
+ {
748
+ alert(messageerr);
749
+ return false;
750
+ }
751
+ }
752
+ function senderShipmentSaveValid(sendererr,messageerr)
753
+ {
754
+ var sender = jQuery('#sender_shipment').val();
755
+ var message =jQuery('#sender_shipment_message').val();
756
+ if(sender == '' || isValid(sender) == false)
757
+ {
758
+ alert(sendererr);
759
+ return false;
760
+ }
761
+ else if( message == '')
762
+ {
763
+ alert(messageerr);
764
+ return false;
765
+ }
766
+ }
767
+ function senderCampaignSaveValid(sendererr,messageerr,mobileerr)
768
+ {
769
+ var sender = jQuery('#sender_campaign').val();
770
+ var message =jQuery('#sender_campaign_message').val();
771
+ var number = jQuery("#singlechoice").val();
772
+ var radiovalue = jQuery("input[name=Sendin_Sms_Choice]:checked").val();
773
+ if(radiovalue == 1)
774
+ {
775
+ if(number == '' || isMobilevalidation(number) == false)
776
+ {
777
+ alert(mobileerr);
778
+ return false;
779
+ }
780
+ else if(sender == '' || isValid(sender) == false)
781
+ {
782
+ alert(sendererr);
783
+ return false;
784
+ }
785
+ else if(message == '')
786
+ {
787
+ alert(messageerr);
788
+ return false;
789
+ }
790
+ }
791
+ else{
792
+ if(sender == '' || isValid(sender) == false)
793
+ {
794
+ alert(sendererr);
795
+ return false;
796
+ }
797
+ else if(message == '')
798
+ {
799
+ alert(messageerr);
800
+ return false;
801
+ }
802
+ }
803
+ }
804
+
805
+ function isMobilevalidation(str)
806
+ {
807
+ return /^(?:\+|00)[1-9][0-9]{5,15}$/.test(str);
808
+ }
809
+ function isNormalInteger(str)
810
+ {
811
+ return /^\+?(0|[1-9]\d*)$/.test(str);
812
+ }
813
+ function isValid(str) {
814
+ var iChars = "~`!#$%^&*+=-[]\\\';,/{}|\":<>?";
815
+
816
+ for (var i = 0; i < str.length; i++) {
817
+ if (iChars.indexOf(str.charAt(i)) != -1) {
818
+ return false;
819
+ }
820
+ }
821
+ return true;
822
+ }
823
+ function RegexEmail(email)
824
+ {
825
+ var emailRegexStr = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
826
+ var isvalid = emailRegexStr.test(email);
827
+ return isvalid;
828
+ }
829
+ function validate(emailerr,limiter)
830
+ {
831
+
832
+
833
+ if( document.notify_sms_mail_form.sendin_notify_email.value == "" || RegexEmail(document.notify_sms_mail_form.sendin_notify_email.value) == false )
834
+ {
835
+ alert(emailerr);
836
+ document.notify_sms_mail_form.sendin_notify_email.focus() ;
837
+ return false;
838
+ }
839
+ if( document.notify_sms_mail_form.sendin_notify_value.value == "" ||
840
+ isNormalInteger( document.notify_sms_mail_form.sendin_notify_value.value)== false )
841
+ {
842
+ alert(limiter);
843
+ document.notify_sms_mail_form.sendin_notify_value.focus() ;
844
+ return false;
845
+ }
846
+
847
+ return( true );
848
+ }
849
+ function smtpvalidate(emailerr)
850
+ {
851
+ var email = jQuery('#email').val();
852
+ if(email == "" || RegexEmail(email) == false )
853
+ {
854
+ alert(emailerr);
855
+ jQuery('#email').focus();
856
+ return false;
857
+ }
858
+ }
859
+ function apikvalidate(apierr)
860
+ {
861
+ var sendin_apikey_val = jQuery('#sendin_apikey_val').val();
862
+
863
+ if(sendin_apikey_val.trim() == "")
864
+ {
865
+ alert(apierr);
866
+ jQuery('#sendin_apikey_val').focus();
867
+ return false;
868
+ }
869
+
870
+ }
skin/adminhtml/default/default/sendinblue/js/sendinblue.min.js ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * @author Sendinblue plateform <contact@sendinblue.com>
3
+ * @copyright 2013-2014 Sendinblue
4
+ * URL: https:www.sendinblue.com
5
+ * Do not edit or add to this file if you wish to upgrade Sendinblue Magento plugin to newer
6
+ * versions in the future. If you wish to customize Sendinblue magento plugin for your
7
+ * needs then we can't provide a technical support.
8
+ **/
9
+
10
+ jQuery.noConflict();jQuery(document).ready(function(){var apistatuskey=jQuery("#apistatuskey").val();jQuery("#select").multiselect();jQuery(".sendin_api_status").click(function(){if(apistatuskey==1&&jQuery(this).val()==1){jQuery("#sendin_apikey").show();jQuery(".alldiv").show();jQuery(".hidetableblock").show();}else{if(jQuery(this).val()==1){jQuery("#sendin_apikey").show();}else{jQuery("#sendin_apikey").hide();jQuery(".alldiv").hide();}}});function loadData(page){var ajaxcontentUrl=jQuery("#ajaxcontentUrl").val();jQuery.ajax({type:"POST",async:false,url:ajaxcontentUrl,data:"page="+page,beforeSend:function(){jQuery("#ajax-busy").show();},success:function(msg){jQuery("#ajax-busy").hide();jQuery(".midleft").html(msg);jQuery(".midleft").ajaxComplete(function(event,request,settings){jQuery(".midleft").html(msg);});}});}jQuery(".hdtab").click(function(){if(parseInt(jQuery(this).val())){jQuery("#hidetabselect").css("display","block");}});jQuery("body").on("click"," .pagination li.active",function(){var page=jQuery(this).attr("p");jQuery("#pagenumber").val(page);loadData(page);});jQuery(".toolTip").hover(function(){var title=jQuery(this).attr("title");var offset=jQuery(this).offset();jQuery("body").append('<div id="tipkk" style="top:'+offset.top+"px; left:"+offset.left+'px; ">'+title+"</div>");var tipContentHeight=jQuery("#tipkk").height()+25;jQuery("#tipkk").css("top",(offset.top-tipContentHeight)+"px");},function(){jQuery("#tipkk").remove();});jQuery("#sender_order").mouseover(function(){var val=jQuery(this).val();if(isInteger(val)||val==""){jQuery("#sender_order").attr("maxlength","17");jQuery("#sender_order_text").text((17-val.length));}else{jQuery("#sender_order").attr("maxlength","11");var str7=val.length>11?val.substr(1,11):val;jQuery("#sender_order").val(str7);jQuery("#sender_order_text").text((11-val.length));}});jQuery("#sender_order").keyup(function(){var val=jQuery(this).val();if(isInteger(val)||val==""){jQuery("#sender_order").attr("maxlength","17");jQuery("#sender_order_text").text((17-val.length));}else{jQuery("#sender_order").attr("maxlength","11");var str7=val.length>11?val.substr(1,11):val;jQuery("#sender_order").val(str7);jQuery("#sender_order_text").text((11-val.length));}});if(jQuery("#sender_order").val()!=""){var val=jQuery("#sender_order").val();if(isInteger(val)){jQuery("#sender_order").attr("maxlength","17");jQuery("#sender_order_text").text((17-val.length));}else{jQuery("#sender_order").attr("maxlength","11");jQuery("#sender_order_text").text((11-val.length));}}jQuery("#sender_order_message").keyup(function(){var chars=this.value.length,messages=Math.ceil(chars/160),remaining=messages*160-(chars%(messages*160)||messages*160);if(remaining==0){remaining=160;}jQuery("#sender_order_message_text").text(remaining);jQuery("#sender_order_message_text_count").text(messages);});if(jQuery("#sender_order_message").val()!=""){var chars=jQuery("#sender_order_message").val().length,messages=Math.ceil(chars/160),remaining=messages*160-(chars%(messages*160)||messages*160);jQuery("#sender_order_message_text").text(remaining);jQuery("#sender_order_message_text_count").text(messages);}jQuery("#sender_shipment").mouseover(function(){var val=jQuery(this).val();if(isInteger(val)||val==""){jQuery("#sender_shipment").attr("maxlength","17");jQuery("#sender_shipment_text").text((17-val.length));}else{jQuery("#sender_shipment").attr("maxlength","11");var str7=val.length>11?val.substr(1,11):val;jQuery("#sender_shipment").val(str7);jQuery("#sender_shipment_text").text((11-val.length));}});jQuery("#sender_shipment").keyup(function(){var val=jQuery(this).val();if(isInteger(val)||val==""){jQuery("#sender_shipment").attr("maxlength","17");jQuery("#sender_shipment_text").text((17-val.length));}else{jQuery("#sender_shipment").attr("maxlength","11");var str7=val.length>11?val.substr(1,11):val;jQuery("#sender_shipment").val(str7);jQuery("#sender_shipment_text").text((11-val.length));}});if(jQuery("#sender_shipment").val()!=""){var val=jQuery("#sender_shipment").val();if(isInteger(val)){jQuery("#sender_shipment").attr("maxlength","17");jQuery("#sender_shipment_text").text((17-val.length));}else{jQuery("#sender_shipment").attr("maxlength","11");jQuery("#sender_shipment_text").text((11-val.length));}}jQuery("#sender_shipment_message").keyup(function(){var chars=this.value.length,messages=Math.ceil(chars/160),remaining=messages*160-(chars%(messages*160)||messages*160);if(remaining==0){remaining=160;}jQuery("#sender_shipment_message_text").text(remaining);jQuery("#sender_shipment_message_text_count").text(messages);});if(jQuery("#sender_shipment_message").val()!=""){var chars=jQuery("#sender_shipment_message").val().length,messages=Math.ceil(chars/160),remaining=messages*160-(chars%(messages*160)||messages*160);jQuery("#sender_shipment_message_text").text(remaining);jQuery("#sender_shipment_message_text_count").text(messages);}jQuery("#sender_campaign").mouseover(function(){var val=jQuery(this).val();if(isInteger(val)||val==""){jQuery("#sender_campaign").attr("maxlength","17");jQuery("#sender_campaign_text").text((17-val.length));}else{jQuery("#sender_campaign").attr("maxlength","11");var str7=val.length>11?val.substr(1,11):val;jQuery("#sender_campaign").val(str7);jQuery("#sender_campaign_text").text((11-val.length));}});jQuery("#sender_campaign").keyup(function(){var val=jQuery(this).val();if(isInteger(val)||val==""){jQuery("#sender_campaign").attr("maxlength","17");jQuery("#sender_campaign_text").text((17-val.length));}else{jQuery("#sender_campaign").attr("maxlength","11");var str7=val.length>11?val.substr(1,11):val;jQuery("#sender_campaign").val(str7);jQuery("#sender_campaign_text").text((11-val.length));}});if(jQuery("#sender_campaign").val()!=""){var val=jQuery("#sender_campaign").val();if(isInteger(val)){jQuery("#sender_campaign").attr("maxlength","17");jQuery("#sender_campaign_text").text((17-val.length));}else{jQuery("#sender_campaign").attr("maxlength","11");jQuery("#sender_campaign_text").text((11-val.length));}}jQuery("#sender_campaign_message").keyup(function(){var chars=this.value.length,messages=Math.ceil(chars/160),remaining=messages*160-(chars%(messages*160)||messages*160);if(remaining==0){remaining=160;}jQuery("#sender_campaign_message_text").text(remaining);jQuery("#sender_campaign_message_text_count").text(messages);});if(jQuery("#sender_campaign_message").val()!=""){var chars=jQuery("#sender_campaign_message").val().length,messages=Math.ceil(chars/160),remaining=messages*160-(chars%(messages*160)||messages*160);jQuery("#sender_campaign_message_text").text(remaining);jQuery("#sender_campaign_message_text_count").text(messages);}jQuery(".sms_order_setting").click(function(){var orderSetting=jQuery(this).val();var orderUrl=jQuery("#order").val();jQuery.ajax({type:"POST",async:false,url:orderUrl,data:"orderSetting="+orderSetting,beforeSend:function(){jQuery("#ajax-busy").show();},success:function(msg){jQuery("#ajax-busy").hide();if(orderSetting==1){jQuery(".hideOrder").show();}else{jQuery(".hideOrder").hide();}}});});jQuery(".sms_shiping_setting").click(function(){var shipingSetting=jQuery(this).val();var shipingUrl=jQuery("#shiping").val();jQuery.ajax({type:"POST",async:false,url:shipingUrl,data:"shipingSetting="+shipingSetting,beforeSend:function(){jQuery("#ajax-busy").show();},success:function(msg){jQuery("#ajax-busy").hide();if(shipingSetting==1){jQuery(".hideShiping").show();}else{jQuery(".hideShiping").hide();}}});});jQuery(".sms_campaign_setting").click(function(){var campaignSetting=jQuery(this).val();var campaignUrl=jQuery("#campaign").val();jQuery.ajax({type:"POST",async:false,url:campaignUrl,data:"campaignSetting="+campaignSetting,beforeSend:function(){jQuery("#ajax-busy").show();},success:function(msg){jQuery("#ajax-busy").hide();if(campaignSetting==1){jQuery(".hideCampaign").show();}else{jQuery(".hideCampaign").hide();}}});});if(jQuery("input:radio[name=sms_order_setting]:checked").val()==0){jQuery(".hideOrder").hide();}else{jQuery(".hideOrder").show();}jQuery(".Sendin_Sms_Choice").click(function(){if(jQuery(this).val()==1){jQuery(".multiplechoice").hide();jQuery(".singlechoice").show();}else{jQuery(".multiplechoice").show();jQuery(".singlechoice").hide();}});if(jQuery("input:radio[name=Sendin_Sms_Choice]:checked").val()==0){jQuery(".multiplechoice").show();jQuery(".singlechoice").hide();}else{jQuery(".singlechoice").show();jQuery(".multiplechoice").hide();}jQuery(".sms_shiping_setting").click(function(){if(jQuery(this).val()==1){jQuery(".hideShiping").show();}else{jQuery(".hideShiping").hide();}});if(jQuery("input:radio[name=sms_credit]:checked").val()==0){jQuery(".hideCredit").hide();}else{jQuery(".hideCredit").show();}jQuery(".sms_credit").click(function(){var sms_credit=jQuery(this).val();var creditUrl=jQuery("#credits").val();var type="sms_credit";jQuery.ajax({type:"POST",async:false,url:creditUrl,data:"sms_credit="+sms_credit,beforeSend:function(){jQuery("#ajax-busy").show();},success:function(msg){jQuery("#ajax-busy").hide();if(sms_credit==1){jQuery(".hideCredit").show();}else{jQuery(".hideCredit").hide();}}});});if(jQuery("input:radio[name=sms_shiping_setting]:checked").val()==0){jQuery(".hideShiping").hide();}else{jQuery(".hideShiping").show();}jQuery(".sms_campaign_setting").click(function(){if(jQuery(this).val()==1){jQuery(".hideCampaign").show();}else{jQuery(".hideCampaign").hide();}});if(jQuery("input:radio[name=sms_campaign_setting]:checked").val()==0){jQuery(".hideCampaign").hide();}else{jQuery(".hideCampaign").show();}jQuery("#selectSmsList").multiselect({header:false,checkall:false});jQuery("#tabs li").click(function(){jQuery("#tabs li").removeClass("active");jQuery(this).addClass("active");jQuery(".tab_content").hide();var selected_tab=jQuery(this).find("a").attr("href");jQuery(selected_tab).fadeIn();return false;});function isInteger(val){var numberRegex=/^[+-]?\d+(\.\d+)?([eE][+-]?\d+)?$/;if(numberRegex.test(val)){return true;}return false;}jQuery("#showUserlist").click(function(){if(jQuery(".userDetails").is(":hidden")){loadData(1);jQuery("#Spantextless").show();jQuery("#Spantextmore").hide();}else{jQuery("#Spantextmore").show();jQuery("#Spantextless").hide();}jQuery(".userDetails").slideToggle();});var base_url=getBaseURL();jQuery(".Tracking").click(function(){var Tracking=jQuery(this).val();var trackingUrl=jQuery("#trackingUrl").val();jQuery.ajax({type:"POST",async:false,url:trackingUrl,data:"script="+Tracking,beforeSend:function(){jQuery("#ajax-busy").show();},success:function(msg){jQuery("#ajax-busy").hide();}});});jQuery(".smtpStatus").click(function(){var smtptest=jQuery(this).val();var smtpUrl=jQuery("#smtpUrl").val();if(smtptest==0){jQuery(".smtptest").hide();}if(smtptest==1){jQuery(".smtptest").show();}jQuery.ajax({type:"POST",async:false,url:smtpUrl,data:"smtptest="+smtptest,beforeSend:function(){jQuery("#ajax-busy").show();},success:function(msg){jQuery("#ajax-busy").hide();}});});var skin_url=jQuery("#skin_url").val();jQuery('<div id="ajax-busy"/> loading..').css({opacity:0.5,position:"fixed",top:0,left:0,width:"100%",height:jQuery(window).height()+"px",background:"white url("+skin_url+"adminhtml/default/default/sendinblue/images/loader.gif) no-repeat center"}).hide().appendTo("body");function getBaseURL(){var sBase=location.href.substr(0,location.href.lastIndexOf("/")+1);var sp=sBase.split("/");var lastFolder=sp[sp.length-2];return sBase.replace(lastFolder+"/","");}jQuery("body").on("click",".ajax_contacts_href",function(e){var email=jQuery(this).attr("email");var status=jQuery(this).attr("status");var ajaxUrl=jQuery("#ajaxUrl").val();jQuery.ajax({type:"POST",async:false,url:ajaxUrl,data:{email:email,newsletter:status},beforeSend:function(){jQuery("#ajax-busy").show();},success:function(msg){jQuery("#ajax-busy").hide();}});var page_no=jQuery("#pagenumber").val();loadData(page_no);});});function testsmssend(sendererr,messageerr,mobileerr){var sender=jQuery("#sender_order").val();var message=jQuery("#sender_order_message").val();var number=jQuery("#sender_order_number").val();var ajaxOrderSmsUrl=jQuery("#ajaxOrderSmsUrl").val();var smsCampError=jQuery("#smsCampError").val();var smsCampSuccess=jQuery("#smsCampSuccess").val();if(sender==""||isValid(sender)==false){alert(sendererr);}else{if(message==""){alert(messageerr);}else{if(number==""){alert(mobileerr);}else{jQuery.ajax({type:"POST",async:false,url:ajaxOrderSmsUrl,data:"sender="+sender+"&message="+message+"&number="+number,beforeSend:function(){jQuery("#ajax-busy").show();},success:function(msg){jQuery("#ajax-busy").hide();if(msg.trim()=="OK"){alert(smsCampSuccess);}else{alert(smsCampError);}}});}}}return false;}function testShippedSmsSend(sendererr,messageerr,mobileerr){var sender=jQuery("#sender_shipment").val();var message=jQuery("#sender_shipment_message").val();var number=jQuery("#sender_shipment_number").val();var ajaxOrderShippedUrl=jQuery("#ajaxOrderShippedUrl").val();var smsCampError=jQuery("#smsCampError").val();var smsCampSuccess=jQuery("#smsCampSuccess").val();if(sender==""||isValid(sender)==false){alert(sendererr);}else{if(message==""){alert(messageerr);}else{if(number==""){alert(mobileerr);}else{jQuery.ajax({type:"POST",async:false,url:ajaxOrderShippedUrl,data:"sender="+sender+"&message="+message+"&number="+number,beforeSend:function(){jQuery("#ajax-busy").show();},success:function(msg){jQuery("#ajax-busy").hide();if(msg.trim()=="OK"){alert(smsCampSuccess);}else{alert(smsCampError);}}});}}}return false;}function testCampaignSmsSend(sendererr,messageerr,mobileerr){var sender=jQuery("#sender_campaign").val();var message=jQuery("#sender_campaign_message").val();var number=jQuery("#sender_campaigntest_number").val();var ajaxSmsCampaignUrl=jQuery("#ajaxSmsCampaignUrl").val();var smsCampError=jQuery("#smsCampError").val();var smsCampSuccess=jQuery("#smsCampSuccess").val();if(sender==""||isValid(sender)==false){alert(sendererr);}else{if(message==""){alert(messageerr);}else{if(number==""||isMobilevalidation(number)==false){alert(mobileerr);}else{jQuery.ajax({type:"POST",async:false,url:ajaxSmsCampaignUrl,data:"sender="+sender+"&message="+message+"&number="+number,beforeSend:function(){jQuery("#ajax-busy").show();},success:function(msg){jQuery("#ajax-busy").hide();if(msg.trim()=="OK"){alert(smsCampSuccess);}else{alert(smsCampError);}}});}}}return false;}function senderOrderSaveValid(sendererr,messageerr){var sender=jQuery("#sender_order").val();var message=jQuery("#sender_order_message").val();if(sender==""||isValid(sender)==false){alert(sendererr);return false;}else{if(message==""){alert(messageerr);return false;}}}function senderShipmentSaveValid(sendererr,messageerr){var sender=jQuery("#sender_shipment").val();var message=jQuery("#sender_shipment_message").val();if(sender==""||isValid(sender)==false){alert(sendererr);return false;}else{if(message==""){alert(messageerr);return false;}}}function senderCampaignSaveValid(sendererr,messageerr,mobileerr){var sender=jQuery("#sender_campaign").val();var message=jQuery("#sender_campaign_message").val();var number=jQuery("#singlechoice").val();var radiovalue=jQuery("input[name=Sendin_Sms_Choice]:checked").val();if(radiovalue==1){if(number==""||isMobilevalidation(number)==false){alert(mobileerr);return false;}else{if(sender==""||isValid(sender)==false){alert(sendererr);return false;}else{if(message==""){alert(messageerr);return false;}}}}else{if(sender==""||isValid(sender)==false){alert(sendererr);return false;}else{if(message==""){alert(messageerr);return false;}}}}function isMobilevalidation(str){return/^(?:\+|00)[1-9][0-9]{5,15}$/.test(str);}function isNormalInteger(str){return/^\+?(0|[1-9]\d*)$/.test(str);}function isValid(str){var iChars="~`!#$%^&*+=-[]\\';,/{}|\":<>?";for(var i=0;i<str.length;i++){if(iChars.indexOf(str.charAt(i))!=-1){return false;}}return true;}function RegexEmail(email){var emailRegexStr=/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;var isvalid=emailRegexStr.test(email);return isvalid;}function validate(emailerr,limiter){if(document.notify_sms_mail_form.sendin_notify_email.value==""||RegexEmail(document.notify_sms_mail_form.sendin_notify_email.value)==false){alert(emailerr);document.notify_sms_mail_form.sendin_notify_email.focus();return false;}if(document.notify_sms_mail_form.sendin_notify_value.value==""||isNormalInteger(document.notify_sms_mail_form.sendin_notify_value.value)==false){alert(limiter);document.notify_sms_mail_form.sendin_notify_value.focus();return false;}return(true);}function smtpvalidate(emailerr){var email=jQuery("#email").val();if(email==""||RegexEmail(email)==false){alert(emailerr);jQuery("#email").focus();return false;}}function apikvalidate(apierr){var sendin_apikey_val=jQuery("#sendin_apikey_val").val();if(sendin_apikey_val.trim()==""){alert(apierr);jQuery("#sendin_apikey_val").focus();return false;}}