Browse Source
			
			
			
			
				
		* upstream: (26 commits) Bootstrap widget comment typo fix Bugfix clientOptions and clientEvents yii\bootstrap\* another refactioring Better naming. Additional newline. Doctype tiny fix. MSSQL AR tests. MSSQL initial query builder. Refinements to MSSQL driver classes. jui.effect and jui.position dependencies Fixes #145. Reusable cache dependencies. jui.widget dependency Theme dependencies Datepicker language assets dependencies JQuery UI bundle assets config JQuery UI bundle assets Do comments at "yii\console\controllers\AssetController::saveTargets()" has been adjusted. "yii\console\controllers\AssetController::getAssetManager()" has been updated enforcing 'basePath' and 'baseUrl' config parameters. E_NOTICE at "yii\console\controllers\AssetController::loadBundleDependency()" has been fixed. Method "yii\console\controllers\AssetController::loadBundleDependency()" has been improved allowing dection of the circular dependency. Unit test for "yii\console\controllers\AssetController" has been adjusted. ...tags/2.0.0-beta
				 157 changed files with 20220 additions and 346 deletions
			
			
		@ -0,0 +1,61 @@ | 
				
			|||||||
 | 
					<?php | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @link http://www.yiiframework.com/ | 
				
			||||||
 | 
					 * @copyright Copyright (c) 2008 Yii Software LLC | 
				
			||||||
 | 
					 * @license http://www.yiiframework.com/license/ | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace yii\db\mssql; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * This is an extension of the default PDO class of MSSQL and DBLIB drivers. | 
				
			||||||
 | 
					 * It provides workarounds for improperly implemented functionalities of the MSSQL and DBLIB drivers. | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * @author Timur Ruziev <resurtm@gmail.com> | 
				
			||||||
 | 
					 * @since 2.0 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					class PDO extends \PDO | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * Returns value of the last inserted ID. | 
				
			||||||
 | 
						 * @param string|null $sequence the sequence name. Defaults to null. | 
				
			||||||
 | 
						 * @return integer last inserted ID value. | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						public function lastInsertId($sequence = null) | 
				
			||||||
 | 
						{ | 
				
			||||||
 | 
							return $this->query('SELECT CAST(COALESCE(SCOPE_IDENTITY(), @@IDENTITY) AS bigint)')->fetchColumn(); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * Starts a transaction. It is necessary to override PDO's method as MSSQL PDO driver does not | 
				
			||||||
 | 
						 * natively support transactions. | 
				
			||||||
 | 
						 * @return boolean the result of a transaction start. | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						public function beginTransaction() | 
				
			||||||
 | 
						{ | 
				
			||||||
 | 
							$this->exec('BEGIN TRANSACTION'); | 
				
			||||||
 | 
							return true; | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * Commits a transaction. It is necessary to override PDO's method as MSSQL PDO driver does not | 
				
			||||||
 | 
						 * natively support transactions. | 
				
			||||||
 | 
						 * @return boolean the result of a transaction commit. | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						public function commit() | 
				
			||||||
 | 
						{ | 
				
			||||||
 | 
							$this->exec('COMMIT TRANSACTION'); | 
				
			||||||
 | 
							return true; | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * Rollbacks a transaction. It is necessary to override PDO's method as MSSQL PDO driver does not | 
				
			||||||
 | 
						 * natively support transactions. | 
				
			||||||
 | 
						 * @return boolean the result of a transaction rollback. | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						public function rollBack() | 
				
			||||||
 | 
						{ | 
				
			||||||
 | 
							$this->exec('ROLLBACK TRANSACTION'); | 
				
			||||||
 | 
							return true; | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,81 @@ | 
				
			|||||||
 | 
					<?php | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @link http://www.yiiframework.com/ | 
				
			||||||
 | 
					 * @copyright Copyright (c) 2008 Yii Software LLC | 
				
			||||||
 | 
					 * @license http://www.yiiframework.com/license/ | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace yii\db\mssql; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use yii\base\InvalidParamException; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * QueryBuilder is the query builder for MS SQL Server databases (version 2008 and above). | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * @author Timur Ruziev <resurtm@gmail.com> | 
				
			||||||
 | 
					 * @since 2.0 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					class QueryBuilder extends \yii\db\QueryBuilder | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * @var array mapping from abstract column types (keys) to physical column types (values). | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						public $typeMap = array( | 
				
			||||||
 | 
							Schema::TYPE_PK => 'int IDENTITY PRIMARY KEY', | 
				
			||||||
 | 
							Schema::TYPE_STRING => 'varchar(255)', | 
				
			||||||
 | 
							Schema::TYPE_TEXT => 'text', | 
				
			||||||
 | 
							Schema::TYPE_SMALLINT => 'smallint(6)', | 
				
			||||||
 | 
							Schema::TYPE_INTEGER => 'int(11)', | 
				
			||||||
 | 
							Schema::TYPE_BIGINT => 'bigint(20)', | 
				
			||||||
 | 
							Schema::TYPE_FLOAT => 'float', | 
				
			||||||
 | 
							Schema::TYPE_DECIMAL => 'decimal', | 
				
			||||||
 | 
							Schema::TYPE_DATETIME => 'datetime', | 
				
			||||||
 | 
							Schema::TYPE_TIMESTAMP => 'timestamp', | 
				
			||||||
 | 
							Schema::TYPE_TIME => 'time', | 
				
			||||||
 | 
							Schema::TYPE_DATE => 'date', | 
				
			||||||
 | 
							Schema::TYPE_BINARY => 'binary', | 
				
			||||||
 | 
							Schema::TYPE_BOOLEAN => 'tinyint(1)', | 
				
			||||||
 | 
							Schema::TYPE_MONEY => 'decimal(19,4)', | 
				
			||||||
 | 
						); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//	public function update($table, $columns, $condition, &$params) | 
				
			||||||
 | 
					//	{ | 
				
			||||||
 | 
					//		return ''; | 
				
			||||||
 | 
					//	} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//	public function delete($table, $condition, &$params) | 
				
			||||||
 | 
					//	{ | 
				
			||||||
 | 
					//		return ''; | 
				
			||||||
 | 
					//	} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//	public function buildLimit($limit, $offset) | 
				
			||||||
 | 
					//	{ | 
				
			||||||
 | 
					//		return ''; | 
				
			||||||
 | 
					//	} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//	public function resetSequence($table, $value = null) | 
				
			||||||
 | 
					//	{ | 
				
			||||||
 | 
					//		return ''; | 
				
			||||||
 | 
					//	} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * Builds a SQL statement for enabling or disabling integrity check. | 
				
			||||||
 | 
						 * @param boolean $check whether to turn on or off the integrity check. | 
				
			||||||
 | 
						 * @param string $schema the schema of the tables. Defaults to empty string, meaning the current or default schema. | 
				
			||||||
 | 
						 * @param string $table the table name. Defaults to empty string, meaning that no table will be changed. | 
				
			||||||
 | 
						 * @return string the SQL statement for checking integrity | 
				
			||||||
 | 
						 * @throws InvalidParamException if the table does not exist or there is no sequence associated with the table. | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						public function checkIntegrity($check = true, $schema = '', $table = '') | 
				
			||||||
 | 
						{ | 
				
			||||||
 | 
							if ($schema !== '') { | 
				
			||||||
 | 
								$table = "{$schema}.{$table}"; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							$table = $this->db->quoteTableName($table); | 
				
			||||||
 | 
							if ($this->db->getTableSchema($table) === null) { | 
				
			||||||
 | 
								throw new InvalidParamException("Table not found: $table"); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							$enable = $check ? 'CHECK' : 'NOCHECK'; | 
				
			||||||
 | 
							return "ALTER TABLE {$table} {$enable} CONSTRAINT ALL"; | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,364 @@ | 
				
			|||||||
 | 
					<?php | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @link http://www.yiiframework.com/ | 
				
			||||||
 | 
					 * @copyright Copyright (c) 2008 Yii Software LLC | 
				
			||||||
 | 
					 * @license http://www.yiiframework.com/license/ | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace yii\db\mssql; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use yii\db\TableSchema; | 
				
			||||||
 | 
					use yii\db\ColumnSchema; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * Schema is the class for retrieving metadata from a MS SQL Server databases (version 2008 and above). | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * @author Timur Ruziev <resurtm@gmail.com> | 
				
			||||||
 | 
					 * @since 2.0 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					class Schema extends \yii\db\Schema | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * Default schema name to be used. | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						const DEFAULT_SCHEMA = 'dbo'; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * @var array mapping from physical column types (keys) to abstract column types (values) | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						public $typeMap = array( | 
				
			||||||
 | 
							// exact numerics | 
				
			||||||
 | 
							'bigint' => self::TYPE_BIGINT, | 
				
			||||||
 | 
							'numeric' => self::TYPE_DECIMAL, | 
				
			||||||
 | 
							'bit' => self::TYPE_SMALLINT, | 
				
			||||||
 | 
							'smallint' => self::TYPE_SMALLINT, | 
				
			||||||
 | 
							'decimal' => self::TYPE_DECIMAL, | 
				
			||||||
 | 
							'smallmoney' => self::TYPE_MONEY, | 
				
			||||||
 | 
							'int' => self::TYPE_INTEGER, | 
				
			||||||
 | 
							'tinyint' => self::TYPE_SMALLINT, | 
				
			||||||
 | 
							'money' => self::TYPE_MONEY, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// approximate numerics | 
				
			||||||
 | 
							'float' => self::TYPE_FLOAT, | 
				
			||||||
 | 
							'real' => self::TYPE_FLOAT, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// date and time | 
				
			||||||
 | 
							'date' => self::TYPE_DATE, | 
				
			||||||
 | 
							'datetimeoffset' => self::TYPE_DATETIME, | 
				
			||||||
 | 
							'datetime2' => self::TYPE_DATETIME, | 
				
			||||||
 | 
							'smalldatetime' => self::TYPE_DATETIME, | 
				
			||||||
 | 
							'datetime' => self::TYPE_DATETIME, | 
				
			||||||
 | 
							'time' => self::TYPE_TIME, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// character strings | 
				
			||||||
 | 
							'char' => self::TYPE_STRING, | 
				
			||||||
 | 
							'varchar' => self::TYPE_STRING, | 
				
			||||||
 | 
							'text' => self::TYPE_TEXT, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// unicode character strings | 
				
			||||||
 | 
							'nchar' => self::TYPE_STRING, | 
				
			||||||
 | 
							'nvarchar' => self::TYPE_STRING, | 
				
			||||||
 | 
							'ntext' => self::TYPE_TEXT, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// binary strings | 
				
			||||||
 | 
							'binary' => self::TYPE_BINARY, | 
				
			||||||
 | 
							'varbinary' => self::TYPE_BINARY, | 
				
			||||||
 | 
							'image' => self::TYPE_BINARY, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// other data types | 
				
			||||||
 | 
							// 'cursor' type cannot be used with tables | 
				
			||||||
 | 
							'timestamp' => self::TYPE_TIMESTAMP, | 
				
			||||||
 | 
							'hierarchyid' => self::TYPE_STRING, | 
				
			||||||
 | 
							'uniqueidentifier' => self::TYPE_STRING, | 
				
			||||||
 | 
							'sql_variant' => self::TYPE_STRING, | 
				
			||||||
 | 
							'xml' => self::TYPE_STRING, | 
				
			||||||
 | 
							'table' => self::TYPE_STRING, | 
				
			||||||
 | 
						); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * Quotes a table name for use in a query. | 
				
			||||||
 | 
						 * A simple table name has no schema prefix. | 
				
			||||||
 | 
						 * @param string $name table name. | 
				
			||||||
 | 
						 * @return string the properly quoted table name. | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						public function quoteSimpleTableName($name) | 
				
			||||||
 | 
						{ | 
				
			||||||
 | 
							return strpos($name, '[') === false ? "[{$name}]" : $name; | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * Quotes a column name for use in a query. | 
				
			||||||
 | 
						 * A simple column name has no prefix. | 
				
			||||||
 | 
						 * @param string $name column name. | 
				
			||||||
 | 
						 * @return string the properly quoted column name. | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						public function quoteSimpleColumnName($name) | 
				
			||||||
 | 
						{ | 
				
			||||||
 | 
							return strpos($name, '[') === false && $name !== '*' ? "[{$name}]" : $name; | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * Creates a query builder for the MSSQL database. | 
				
			||||||
 | 
						 * @return QueryBuilder query builder interface. | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						public function createQueryBuilder() | 
				
			||||||
 | 
						{ | 
				
			||||||
 | 
							return new QueryBuilder($this->db); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * Loads the metadata for the specified table. | 
				
			||||||
 | 
						 * @param string $name table name | 
				
			||||||
 | 
						 * @return TableSchema|null driver dependent table metadata. Null if the table does not exist. | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						public function loadTableSchema($name) | 
				
			||||||
 | 
						{ | 
				
			||||||
 | 
							$table = new TableSchema(); | 
				
			||||||
 | 
							$this->resolveTableNames($table, $name); | 
				
			||||||
 | 
							$this->findPrimaryKeys($table); | 
				
			||||||
 | 
							if ($this->findColumns($table)) { | 
				
			||||||
 | 
								$this->findForeignKeys($table); | 
				
			||||||
 | 
								return $table; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * Resolves the table name and schema name (if any). | 
				
			||||||
 | 
						 * @param TableSchema $table the table metadata object | 
				
			||||||
 | 
						 * @param string $name the table name | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						protected function resolveTableNames($table, $name) | 
				
			||||||
 | 
						{ | 
				
			||||||
 | 
							$parts = explode('.', str_replace(array('[', ']'), '', $name)); | 
				
			||||||
 | 
							$partCount = count($parts); | 
				
			||||||
 | 
							if ($partCount == 3) { | 
				
			||||||
 | 
								// catalog name, schema name and table name passed | 
				
			||||||
 | 
								$table->catalogName = $parts[0]; | 
				
			||||||
 | 
								$table->schemaName = $parts[1]; | 
				
			||||||
 | 
								$table->name = $parts[2]; | 
				
			||||||
 | 
							} elseif ($partCount == 2) { | 
				
			||||||
 | 
								// only schema name and table name passed | 
				
			||||||
 | 
								$table->schemaName = $parts[0]; | 
				
			||||||
 | 
								$table->name = $parts[1]; | 
				
			||||||
 | 
							} else { | 
				
			||||||
 | 
								// only schema name passed | 
				
			||||||
 | 
								$table->schemaName = static::DEFAULT_SCHEMA; | 
				
			||||||
 | 
								$table->name = $parts[0]; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * Loads the column information into a [[ColumnSchema]] object. | 
				
			||||||
 | 
						 * @param array $info column information | 
				
			||||||
 | 
						 * @return ColumnSchema the column schema object | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						protected function loadColumnSchema($info) | 
				
			||||||
 | 
						{ | 
				
			||||||
 | 
							$column = new ColumnSchema(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							$column->name = $info['COLUMN_NAME']; | 
				
			||||||
 | 
							$column->allowNull = $info['IS_NULLABLE'] == 'YES'; | 
				
			||||||
 | 
							$column->dbType = $info['DATA_TYPE']; | 
				
			||||||
 | 
							$column->enumValues = array(); // mssql has only vague equivalents to enum | 
				
			||||||
 | 
							$column->isPrimaryKey = null; // primary key will be determined in findColumns() method | 
				
			||||||
 | 
							$column->autoIncrement = $info['IsIdentity'] == 1; | 
				
			||||||
 | 
							$column->unsigned = stripos($column->dbType, 'unsigned') !== false; | 
				
			||||||
 | 
							$column->comment = $info['Comment'] === null ? '' : $column['Comment']; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							$column->type = self::TYPE_STRING; | 
				
			||||||
 | 
							if (preg_match('/^(\w+)(?:\(([^\)]+)\))?/', $column->dbType, $matches)) { | 
				
			||||||
 | 
								$type = $matches[1]; | 
				
			||||||
 | 
								if (isset($this->typeMap[$type])) { | 
				
			||||||
 | 
									$column->type = $this->typeMap[$type]; | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
								if (!empty($matches[2])) { | 
				
			||||||
 | 
									$values = explode(',', $matches[2]); | 
				
			||||||
 | 
									$column->size = $column->precision = (int)$values[0]; | 
				
			||||||
 | 
									if (isset($values[1])) { | 
				
			||||||
 | 
										$column->scale = (int)$values[1]; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
									if ($column->size === 1 && ($type === 'tinyint' || $type === 'bit')) { | 
				
			||||||
 | 
										$column->type = 'boolean'; | 
				
			||||||
 | 
									} elseif ($type === 'bit') { | 
				
			||||||
 | 
										if ($column->size > 32) { | 
				
			||||||
 | 
											$column->type = 'bigint'; | 
				
			||||||
 | 
										} elseif ($column->size === 32) { | 
				
			||||||
 | 
											$column->type = 'integer'; | 
				
			||||||
 | 
										} | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							$column->phpType = $this->getColumnPhpType($column); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ($info['COLUMN_DEFAULT'] == '(NULL)') { | 
				
			||||||
 | 
								$info['COLUMN_DEFAULT'] = null; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							if ($column->type !== 'timestamp' || $info['COLUMN_DEFAULT'] !== 'CURRENT_TIMESTAMP') { | 
				
			||||||
 | 
								$column->defaultValue = $column->typecast($info['COLUMN_DEFAULT']); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return $column; | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * Collects the metadata of table columns. | 
				
			||||||
 | 
						 * @param TableSchema $table the table metadata | 
				
			||||||
 | 
						 * @return boolean whether the table exists in the database | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						protected function findColumns($table) | 
				
			||||||
 | 
						{ | 
				
			||||||
 | 
							$columnsTableName = 'information_schema.columns'; | 
				
			||||||
 | 
							$whereSql = "[t1].[table_name] = '{$table->name}'"; | 
				
			||||||
 | 
							if ($table->catalogName !== null) { | 
				
			||||||
 | 
								$columnsTableName = "{$table->catalogName}.{$columnsTableName}"; | 
				
			||||||
 | 
								$whereSql .= " AND [t1].[table_catalog] = '{$table->catalogName}'"; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							if ($table->schemaName !== null) { | 
				
			||||||
 | 
								$whereSql .= " AND [t1].[table_schema] = '{$table->schemaName}'"; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							$columnsTableName = $this->quoteTableName($columnsTableName); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							$sql = <<<SQL | 
				
			||||||
 | 
					SELECT | 
				
			||||||
 | 
						[t1].*, | 
				
			||||||
 | 
						COLUMNPROPERTY(OBJECT_ID([t1].[table_schema] + '.' + [t1].[table_name]), [t1].[column_name], 'IsIdentity') AS IsIdentity, | 
				
			||||||
 | 
						CONVERT(VARCHAR, [t2].[value]) AS Comment | 
				
			||||||
 | 
					FROM {$columnsTableName} AS [t1] | 
				
			||||||
 | 
					LEFT OUTER JOIN [sys].[extended_properties] AS [t2] ON | 
				
			||||||
 | 
						[t1].[ordinal_position] = [t2].[minor_id] AND | 
				
			||||||
 | 
						OBJECT_NAME([t2].[major_id]) = [t1].[table_name] AND | 
				
			||||||
 | 
						[t2].[class] = 1 AND | 
				
			||||||
 | 
						[t2].[class_desc] = 'OBJECT_OR_COLUMN' AND | 
				
			||||||
 | 
						[t2].[name] = 'MS_Description' | 
				
			||||||
 | 
					WHERE {$whereSql} | 
				
			||||||
 | 
					SQL; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							try { | 
				
			||||||
 | 
								$columns = $this->db->createCommand($sql)->queryAll(); | 
				
			||||||
 | 
							} catch (\Exception $e) { | 
				
			||||||
 | 
								return false; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							foreach ($columns as $column) { | 
				
			||||||
 | 
								$column = $this->loadColumnSchema($column); | 
				
			||||||
 | 
								if (is_array($table->primaryKey)) { | 
				
			||||||
 | 
									foreach ($table->primaryKey as $primaryKeyColumn) { | 
				
			||||||
 | 
										if (strcasecmp($column->name, $primaryKeyColumn) === 0) { | 
				
			||||||
 | 
											$column->isPrimaryKey = true; | 
				
			||||||
 | 
											break; | 
				
			||||||
 | 
										} | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
								} else { | 
				
			||||||
 | 
									$column->isPrimaryKey = strcasecmp($column->name, $table->primaryKey) === 0; | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
								if ($column->isPrimaryKey && $column->autoIncrement) { | 
				
			||||||
 | 
									$table->sequenceName = ''; | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
								$table->columns[$column->name] = $column; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							return true; | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * Collects the primary key column details for the given table. | 
				
			||||||
 | 
						 * @param TableSchema $table the table metadata | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						protected function findPrimaryKeys($table) | 
				
			||||||
 | 
						{ | 
				
			||||||
 | 
							$keyColumnUsageTableName = 'information_schema.key_column_usage'; | 
				
			||||||
 | 
							$tableConstraintsTableName = 'information_schema.table_constraints'; | 
				
			||||||
 | 
							if ($table->catalogName !== null) { | 
				
			||||||
 | 
								$keyColumnUsageTableName = $table->catalogName . '.' . $keyColumnUsageTableName; | 
				
			||||||
 | 
								$tableConstraintsTableName = $table->catalogName . '.' . $tableConstraintsTableName; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							$keyColumnUsageTableName = $this->quoteTableName($keyColumnUsageTableName); | 
				
			||||||
 | 
							$tableConstraintsTableName = $this->quoteTableName($tableConstraintsTableName); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							$sql = <<<SQL | 
				
			||||||
 | 
					SELECT | 
				
			||||||
 | 
						[kcu].[column_name] AS [field_name] | 
				
			||||||
 | 
					FROM {$keyColumnUsageTableName} AS [kcu] | 
				
			||||||
 | 
					LEFT JOIN {$tableConstraintsTableName} AS [tc] ON | 
				
			||||||
 | 
						[kcu].[table_name] = [tc].[table_name] AND | 
				
			||||||
 | 
						[kcu].[constraint_name] = [tc].[constraint_name] | 
				
			||||||
 | 
					WHERE | 
				
			||||||
 | 
						[tc].[constraint_type] = 'PRIMARY KEY' AND | 
				
			||||||
 | 
						[kcu].[table_name] = :tableName AND | 
				
			||||||
 | 
						[kcu].[table_schema] = :schemaName | 
				
			||||||
 | 
					SQL; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							$table->primaryKey = $this->db | 
				
			||||||
 | 
								->createCommand($sql, array(':tableName' => $table->name, ':schemaName' => $table->schemaName)) | 
				
			||||||
 | 
								->queryColumn(); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * Collects the foreign key column details for the given table. | 
				
			||||||
 | 
						 * @param TableSchema $table the table metadata | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						protected function findForeignKeys($table) | 
				
			||||||
 | 
						{ | 
				
			||||||
 | 
							$referentialConstraintsTableName = 'information_schema.referential_constraints'; | 
				
			||||||
 | 
							$keyColumnUsageTableName = 'information_schema.key_column_usage'; | 
				
			||||||
 | 
							if ($table->catalogName !== null) { | 
				
			||||||
 | 
								$referentialConstraintsTableName = $table->catalogName . '.' . $referentialConstraintsTableName; | 
				
			||||||
 | 
								$keyColumnUsageTableName = $table->catalogName . '.' . $keyColumnUsageTableName; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							$referentialConstraintsTableName = $this->quoteTableName($referentialConstraintsTableName); | 
				
			||||||
 | 
							$keyColumnUsageTableName = $this->quoteTableName($keyColumnUsageTableName); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// please refer to the following page for more details: | 
				
			||||||
 | 
							// http://msdn2.microsoft.com/en-us/library/aa175805(SQL.80).aspx | 
				
			||||||
 | 
							$sql = <<<SQL | 
				
			||||||
 | 
					SELECT | 
				
			||||||
 | 
						[kcu1].[column_name] AS [fk_column_name], | 
				
			||||||
 | 
						[kcu2].[table_name] AS [uq_table_name], | 
				
			||||||
 | 
						[kcu2].[column_name] AS [uq_column_name] | 
				
			||||||
 | 
					FROM {$referentialConstraintsTableName} AS [rc] | 
				
			||||||
 | 
					JOIN {$keyColumnUsageTableName} AS [kcu1] ON | 
				
			||||||
 | 
						[kcu1].[constraint_catalog] = [rc].[constraint_catalog] AND | 
				
			||||||
 | 
						[kcu1].[constraint_schema] = [rc].[constraint_schema] AND | 
				
			||||||
 | 
						[kcu1].[constraint_name] = [rc].[constraint_name] | 
				
			||||||
 | 
					JOIN {$keyColumnUsageTableName} AS [kcu2] ON | 
				
			||||||
 | 
						[kcu2].[constraint_catalog] = [rc].[constraint_catalog] AND | 
				
			||||||
 | 
						[kcu2].[constraint_schema] = [rc].[constraint_schema] AND | 
				
			||||||
 | 
						[kcu2].[constraint_name] = [rc].[constraint_name] AND | 
				
			||||||
 | 
						[kcu2].[ordinal_position] = [kcu1].[ordinal_position] | 
				
			||||||
 | 
					WHERE [kcu1].[table_name] = :tableName | 
				
			||||||
 | 
					SQL; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							$rows = $this->db->createCommand($sql, array(':tableName' => $table->name))->queryAll(); | 
				
			||||||
 | 
							$table->foreignKeys = array(); | 
				
			||||||
 | 
							foreach ($rows as $row) { | 
				
			||||||
 | 
								$table->foreignKeys[] = array($row['uq_table_name'], $row['fk_column_name'] => $row['uq_column_name']); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * Returns all table names in the database. | 
				
			||||||
 | 
						 * This method should be overridden by child classes in order to support this feature | 
				
			||||||
 | 
						 * because the default implementation simply throws an exception. | 
				
			||||||
 | 
						 * @param string $schema the schema of the tables. Defaults to empty string, meaning the current or default schema. | 
				
			||||||
 | 
						 * @return array all table names in the database. The names have NO the schema name prefix. | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						protected function findTableNames($schema = '') | 
				
			||||||
 | 
						{ | 
				
			||||||
 | 
							if ($schema === '') { | 
				
			||||||
 | 
								$schema = static::DEFAULT_SCHEMA; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							$sql = <<<SQL | 
				
			||||||
 | 
					SELECT [t].[table] | 
				
			||||||
 | 
					FROM [information_schema].[tables] AS [t] | 
				
			||||||
 | 
					WHERE [t].[table_schema] = :schema AND [t].[table_type] = 'BASE TABLE' | 
				
			||||||
 | 
					SQL; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							$names = $this->db->createCommand($sql, array(':schema' => $schema))->queryColumn(); | 
				
			||||||
 | 
							if ($schema !== static::DEFAULT_SCHEMA) { | 
				
			||||||
 | 
								foreach ($names as $index => $name) { | 
				
			||||||
 | 
									$names[$index] = $schema . '.' . $name; | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							return $names; | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,33 @@ | 
				
			|||||||
 | 
					<?php | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @link http://www.yiiframework.com/ | 
				
			||||||
 | 
					 * @copyright Copyright (c) 2008 Yii Software LLC | 
				
			||||||
 | 
					 * @license http://www.yiiframework.com/license/ | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace yii\db\mssql; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * This is an extension of the default PDO class of SQLSRV driver. | 
				
			||||||
 | 
					 * It provides workarounds for improperly implemented functionalities of the SQLSRV driver. | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * @author Timur Ruziev <resurtm@gmail.com> | 
				
			||||||
 | 
					 * @since 2.0 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					class SqlsrvPDO extends \PDO | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * Returns value of the last inserted ID. | 
				
			||||||
 | 
						 * | 
				
			||||||
 | 
						 * SQLSRV driver implements [[PDO::lastInsertId()]] method but with a single peculiarity: | 
				
			||||||
 | 
						 * when `$sequence` value is a null or an empty string it returns an empty string. | 
				
			||||||
 | 
						 * But when parameter is not specified it works as expected and returns actual | 
				
			||||||
 | 
						 * last inserted ID (like the other PDO drivers). | 
				
			||||||
 | 
						 * @param string|null $sequence the sequence name. Defaults to null. | 
				
			||||||
 | 
						 * @return integer last inserted ID value. | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						public function lastInsertId($sequence = null) | 
				
			||||||
 | 
						{ | 
				
			||||||
 | 
							return !$sequence ? parent::lastInsertId() : parent::lastInsertId($sequence); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,857 @@ | 
				
			|||||||
 | 
					<?php | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return array( | 
				
			||||||
 | 
						'yii/jui/core' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'jquery.ui.core.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jquery'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/widget' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'jquery.ui.widget.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jquery'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/accordion' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'jquery.ui.accordion.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/core', 'yii/jui/widget'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/autocomplete' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'jquery.ui.autocomplete.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/core', 'yii/jui/widget', 'yii/jui/position', 'yii/jui/menu'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/button' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'jquery.ui.button.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/core', 'yii/jui/widget'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'jquery.ui.datepicker.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/core'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/af' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-af.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/ar' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-ar.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/ar_DZ' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-ar-DZ.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/az' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-az.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/be' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-be.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/bg' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-bg.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/bs' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-bs.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/ca' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-ca.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/cs' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-cs.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/cy_GB' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-cy-GB.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/da' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-da.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/de' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-de.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/el' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-el.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/en_AU' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-en-AU.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/en_GB' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-en-GB.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/en_NZ' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-en-NZ.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/eo' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-eo.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/es' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-es.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/et' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-et.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/eu' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-eu.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/fa' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-fa.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/fi' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-fi.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/fo' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-fo.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/fr' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-fr.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/fr_CA' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-fr-CA.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/fr_CH' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-fr-CH.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/gl' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-gl.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/he' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-he.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/hi' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-hi.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/hr' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-hr.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/hu' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-hu.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/hy' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-hy.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/id' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-id.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/is' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-is.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/it' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-it.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/ja' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-ja.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/ka' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-ka.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/kk' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-kk.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/km' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-km.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/ko' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-ko.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/ky' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-ky.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/lb' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-lb.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/lt' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-lt.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/lv' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-lv.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/mk' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-mk.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/ml' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-ml.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-ms.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/nb' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-nb.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/nl' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-nl.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/nl_BE' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-nl-BE.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/nn' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-nn.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/no' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-no.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/pl' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-pl.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/pt' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-pt.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/pt_BR' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-pt-BR.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/rm' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-rm.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/ro' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-ro.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/ru' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-ru.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/sk' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-sk.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/sl' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-sl.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/sq' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-sq.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/sr' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-sr.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/sr_SR' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-sr-SR.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/sv' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-sv.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/ta' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-ta.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/th' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-th.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/tj' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-tj.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/tr' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-tr.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/uk' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-uk.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/vi' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-vi.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/zh_CN' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-zh-CN.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/zh_HK' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-zh-HK.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/datepicker/i18n/zh_TW' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'i18n/jquery.ui.datepicker-zh-TW.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/datepicker'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/dialog' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'jquery.ui.dialog.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/core', 'yii/jui/widget', 'yii/jui/button', 'yii/jui/draggable', 'yii/jui/mouse', 'yii/jui/position', 'yii/jui/resizeable'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/draggable' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'jquery.ui.draggable.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/core', 'yii/jui/widget', 'yii/jui/mouse'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/droppable' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'jquery.ui.droppable.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/draggable'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/effect' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'jquery.ui.effect.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jquery'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/effect/blind' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'jquery.ui.effect-blind.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/effect'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/effect/bounce' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'jquery.ui.effect-bounce.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/effect'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/effect/clip' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'jquery.ui.effect-clip.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/effect'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/effect/drop' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'jquery.ui.effect-drop.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/effect'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/effect/explode' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'jquery.ui.effect-explode.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/effect'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/effect/fade' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'jquery.ui.effect-fade.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/effect'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/effect/fold' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'jquery.ui.effect-fold.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/effect'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/effect/highlight' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'jquery.ui.effect-highlight.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/effect'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/effect/pulsate' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'jquery.ui.effect-pulsate.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/effect'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/effect/scale' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'jquery.ui.effect-scale.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/effect'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/effect/shake' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'jquery.ui.effect-shake.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/effect'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/effect/slide' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'jquery.ui.effect-slide.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/effect'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/effect/transfer' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'jquery.ui.effect-transfer.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/effect'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/menu' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'jquery.ui.menu.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/core', 'yii/jui/widget', 'yii/jui/position'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/mouse' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'jquery.ui.mouse.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/widget'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/position' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'jquery.ui.position.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jquery'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/progressbar' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'jquery.ui.progressbar.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/core', 'yii/jui/widget'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/resizable' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'jquery.ui.resizable.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/core', 'yii/jui/widget', 'yii/jui/mouse'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/selectable' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'jquery.ui.selectable.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/core', 'yii/jui/widget', 'yii/jui/mouse'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/slider' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'jquery.ui.slider.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/core', 'yii/jui/widget', 'yii/jui/mouse'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/sortable' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'jquery.ui.sortable.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/core', 'yii/jui/widget', 'yii/jui/mouse'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/spinner' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'jquery.ui.spinner.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/core', 'yii/jui/widget', 'yii/jui/button'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/tabs' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'jquery.ui.tabs.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/core', 'yii/jui/widget'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/tooltip' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'js' => array( | 
				
			||||||
 | 
								'jquery.ui.tooltip.js', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/core', 'yii/jui/widget', 'yii/jui/position'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/theme/base' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'css' => array( | 
				
			||||||
 | 
								'themes/base/jquery.ui.theme.css', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/theme/base/core' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'css' => array( | 
				
			||||||
 | 
								'themes/base/jquery.ui.core.css', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/theme/base'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/theme/base/accordion' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'css' => array( | 
				
			||||||
 | 
								'themes/base/jquery.ui.accordion.css', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/theme/base/core'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/theme/base/autocomplete' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'css' => array( | 
				
			||||||
 | 
								'themes/base/jquery.ui.autocomplete.css', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/theme/base/core'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/theme/base/button' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'css' => array( | 
				
			||||||
 | 
								'themes/base/jquery.ui.button.css', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/theme/base/core'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/theme/base/datepicker' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'css' => array( | 
				
			||||||
 | 
								'themes/base/jquery.ui.datepicker.css', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/theme/base/core'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/theme/base/dialog' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'css' => array( | 
				
			||||||
 | 
								'themes/base/jquery.ui.dialog.css', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/theme/base/core'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/theme/base/menu' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'css' => array( | 
				
			||||||
 | 
								'themes/base/jquery.ui.menu.css', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/theme/base/core'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/theme/base/progressbar' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'css' => array( | 
				
			||||||
 | 
								'themes/base/jquery.ui.progressbar.css', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/theme/base/core'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/theme/base/resizable' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'css' => array( | 
				
			||||||
 | 
								'themes/base/jquery.ui.resizable.css', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/theme/base/core'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/theme/base/selectable' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'css' => array( | 
				
			||||||
 | 
								'themes/base/jquery.ui.selectable.css', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/theme/base/core'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/theme/base/slider' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'css' => array( | 
				
			||||||
 | 
								'themes/base/jquery.ui.slider.css', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/theme/base/core'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/theme/base/spinner' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'css' => array( | 
				
			||||||
 | 
								'themes/base/jquery.ui.spinner.css', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/theme/base/core'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/theme/base/tabs' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'css' => array( | 
				
			||||||
 | 
								'themes/base/jquery.ui.tabs.css', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/theme/base/core'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
						'yii/jui/theme/base/tooltip' => array( | 
				
			||||||
 | 
							'sourcePath' => __DIR__ . '/assets', | 
				
			||||||
 | 
							'css' => array( | 
				
			||||||
 | 
								'themes/base/jquery.ui.tooltip.css', | 
				
			||||||
 | 
							), | 
				
			||||||
 | 
							'depends' => array('yii/jui/theme/base/core'), | 
				
			||||||
 | 
						), | 
				
			||||||
 | 
					); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Afrikaans initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Renier Pretorius. */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['af'] = { | 
				
			||||||
 | 
							closeText: 'Selekteer', | 
				
			||||||
 | 
							prevText: 'Vorige', | 
				
			||||||
 | 
							nextText: 'Volgende', | 
				
			||||||
 | 
							currentText: 'Vandag', | 
				
			||||||
 | 
							monthNames: ['Januarie','Februarie','Maart','April','Mei','Junie', | 
				
			||||||
 | 
							'Julie','Augustus','September','Oktober','November','Desember'], | 
				
			||||||
 | 
							monthNamesShort: ['Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun', | 
				
			||||||
 | 
							'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Des'], | 
				
			||||||
 | 
							dayNames: ['Sondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrydag', 'Saterdag'], | 
				
			||||||
 | 
							dayNamesShort: ['Son', 'Maa', 'Din', 'Woe', 'Don', 'Vry', 'Sat'], | 
				
			||||||
 | 
							dayNamesMin: ['So','Ma','Di','Wo','Do','Vr','Sa'], | 
				
			||||||
 | 
							weekHeader: 'Wk', | 
				
			||||||
 | 
							dateFormat: 'dd/mm/yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['af']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Algerian Arabic Translation for jQuery UI date picker plugin. (can be used for Tunisia)*/ | 
				
			||||||
 | 
					/* Mohamed Cherif BOUCHELAGHEM -- cherifbouchelaghem@yahoo.fr */ | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['ar-DZ'] = { | 
				
			||||||
 | 
							closeText: 'إغلاق', | 
				
			||||||
 | 
							prevText: '<السابق', | 
				
			||||||
 | 
							nextText: 'التالي>', | 
				
			||||||
 | 
							currentText: 'اليوم', | 
				
			||||||
 | 
							monthNames: ['جانفي', 'فيفري', 'مارس', 'أفريل', 'ماي', 'جوان', | 
				
			||||||
 | 
							'جويلية', 'أوت', 'سبتمبر','أكتوبر', 'نوفمبر', 'ديسمبر'], | 
				
			||||||
 | 
							monthNamesShort: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], | 
				
			||||||
 | 
							dayNames: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], | 
				
			||||||
 | 
							dayNamesShort: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], | 
				
			||||||
 | 
							dayNamesMin: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], | 
				
			||||||
 | 
							weekHeader: 'أسبوع', | 
				
			||||||
 | 
							dateFormat: 'dd/mm/yy', | 
				
			||||||
 | 
							firstDay: 6, | 
				
			||||||
 | 
					  		isRTL: true, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['ar-DZ']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Arabic Translation for jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Khaled Alhourani -- me@khaledalhourani.com */ | 
				
			||||||
 | 
					/* NOTE: monthNames are the original months names and they are the Arabic names, not the new months name فبراير - يناير and there isn't any Arabic roots for these months */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['ar'] = { | 
				
			||||||
 | 
							closeText: 'إغلاق', | 
				
			||||||
 | 
							prevText: '<السابق', | 
				
			||||||
 | 
							nextText: 'التالي>', | 
				
			||||||
 | 
							currentText: 'اليوم', | 
				
			||||||
 | 
							monthNames: ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'مايو', 'حزيران', | 
				
			||||||
 | 
							'تموز', 'آب', 'أيلول',	'تشرين الأول', 'تشرين الثاني', 'كانون الأول'], | 
				
			||||||
 | 
							monthNamesShort: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], | 
				
			||||||
 | 
							dayNames: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], | 
				
			||||||
 | 
							dayNamesShort: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], | 
				
			||||||
 | 
							dayNamesMin: ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], | 
				
			||||||
 | 
							weekHeader: 'أسبوع', | 
				
			||||||
 | 
							dateFormat: 'dd/mm/yy', | 
				
			||||||
 | 
							firstDay: 6, | 
				
			||||||
 | 
					  		isRTL: true, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['ar']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Azerbaijani (UTF-8) initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Jamil Najafov (necefov33@gmail.com). */ | 
				
			||||||
 | 
					jQuery(function($) { | 
				
			||||||
 | 
						$.datepicker.regional['az'] = { | 
				
			||||||
 | 
							closeText: 'Bağla', | 
				
			||||||
 | 
							prevText: '<Geri', | 
				
			||||||
 | 
							nextText: 'İrəli>', | 
				
			||||||
 | 
							currentText: 'Bugün', | 
				
			||||||
 | 
							monthNames: ['Yanvar','Fevral','Mart','Aprel','May','İyun', | 
				
			||||||
 | 
							'İyul','Avqust','Sentyabr','Oktyabr','Noyabr','Dekabr'], | 
				
			||||||
 | 
							monthNamesShort: ['Yan','Fev','Mar','Apr','May','İyun', | 
				
			||||||
 | 
							'İyul','Avq','Sen','Okt','Noy','Dek'], | 
				
			||||||
 | 
							dayNames: ['Bazar','Bazar ertəsi','Çərşənbə axşamı','Çərşənbə','Cümə axşamı','Cümə','Şənbə'], | 
				
			||||||
 | 
							dayNamesShort: ['B','Be','Ça','Ç','Ca','C','Ş'], | 
				
			||||||
 | 
							dayNamesMin: ['B','B','Ç','С','Ç','C','Ş'], | 
				
			||||||
 | 
							weekHeader: 'Hf', | 
				
			||||||
 | 
							dateFormat: 'dd.mm.yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['az']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Belarusian initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Pavel Selitskas <p.selitskas@gmail.com> */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['be'] = { | 
				
			||||||
 | 
							closeText: 'Зачыніць', | 
				
			||||||
 | 
							prevText: '←Папяр.', | 
				
			||||||
 | 
							nextText: 'Наст.→', | 
				
			||||||
 | 
							currentText: 'Сёньня', | 
				
			||||||
 | 
							monthNames: ['Студзень','Люты','Сакавік','Красавік','Травень','Чэрвень', | 
				
			||||||
 | 
							'Ліпень','Жнівень','Верасень','Кастрычнік','Лістапад','Сьнежань'], | 
				
			||||||
 | 
							monthNamesShort: ['Сту','Лют','Сак','Кра','Тра','Чэр', | 
				
			||||||
 | 
							'Ліп','Жні','Вер','Кас','Ліс','Сьн'], | 
				
			||||||
 | 
							dayNames: ['нядзеля','панядзелак','аўторак','серада','чацьвер','пятніца','субота'], | 
				
			||||||
 | 
							dayNamesShort: ['ндз','пнд','аўт','срд','чцв','птн','сбт'], | 
				
			||||||
 | 
							dayNamesMin: ['Нд','Пн','Аў','Ср','Чц','Пт','Сб'], | 
				
			||||||
 | 
							weekHeader: 'Тд', | 
				
			||||||
 | 
							dateFormat: 'dd.mm.yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['be']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,24 @@ | 
				
			|||||||
 | 
					/* Bulgarian initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Stoyan Kyosev (http://svest.org). */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['bg'] = { | 
				
			||||||
 | 
							closeText: 'затвори', | 
				
			||||||
 | 
							prevText: '<назад', | 
				
			||||||
 | 
							nextText: 'напред>', | 
				
			||||||
 | 
							nextBigText: '>>', | 
				
			||||||
 | 
							currentText: 'днес', | 
				
			||||||
 | 
							monthNames: ['Януари','Февруари','Март','Април','Май','Юни', | 
				
			||||||
 | 
							'Юли','Август','Септември','Октомври','Ноември','Декември'], | 
				
			||||||
 | 
							monthNamesShort: ['Яну','Фев','Мар','Апр','Май','Юни', | 
				
			||||||
 | 
							'Юли','Авг','Сеп','Окт','Нов','Дек'], | 
				
			||||||
 | 
							dayNames: ['Неделя','Понеделник','Вторник','Сряда','Четвъртък','Петък','Събота'], | 
				
			||||||
 | 
							dayNamesShort: ['Нед','Пон','Вто','Сря','Чет','Пет','Съб'], | 
				
			||||||
 | 
							dayNamesMin: ['Не','По','Вт','Ср','Че','Пе','Съ'], | 
				
			||||||
 | 
							weekHeader: 'Wk', | 
				
			||||||
 | 
							dateFormat: 'dd.mm.yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['bg']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Bosnian i18n for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Kenan Konjo. */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['bs'] = { | 
				
			||||||
 | 
							closeText: 'Zatvori', | 
				
			||||||
 | 
							prevText: '<', | 
				
			||||||
 | 
							nextText: '>', | 
				
			||||||
 | 
							currentText: 'Danas', | 
				
			||||||
 | 
							monthNames: ['Januar','Februar','Mart','April','Maj','Juni', | 
				
			||||||
 | 
							'Juli','August','Septembar','Oktobar','Novembar','Decembar'], | 
				
			||||||
 | 
							monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', | 
				
			||||||
 | 
							'Jul','Aug','Sep','Okt','Nov','Dec'], | 
				
			||||||
 | 
							dayNames: ['Nedelja','Ponedeljak','Utorak','Srijeda','Četvrtak','Petak','Subota'], | 
				
			||||||
 | 
							dayNamesShort: ['Ned','Pon','Uto','Sri','Čet','Pet','Sub'], | 
				
			||||||
 | 
							dayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'], | 
				
			||||||
 | 
							weekHeader: 'Wk', | 
				
			||||||
 | 
							dateFormat: 'dd.mm.yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['bs']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Inicialització en català per a l'extensió 'UI date picker' per jQuery. */ | 
				
			||||||
 | 
					/* Writers: (joan.leon@gmail.com). */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['ca'] = { | 
				
			||||||
 | 
							closeText: 'Tanca', | 
				
			||||||
 | 
							prevText: 'Anterior', | 
				
			||||||
 | 
							nextText: 'Següent', | 
				
			||||||
 | 
							currentText: 'Avui', | 
				
			||||||
 | 
							monthNames: ['gener','febrer','març','abril','maig','juny', | 
				
			||||||
 | 
							'juliol','agost','setembre','octubre','novembre','desembre'], | 
				
			||||||
 | 
							monthNamesShort: ['gen','feb','març','abr','maig','juny', | 
				
			||||||
 | 
							'jul','ag','set','oct','nov','des'], | 
				
			||||||
 | 
							dayNames: ['diumenge','dilluns','dimarts','dimecres','dijous','divendres','dissabte'], | 
				
			||||||
 | 
							dayNamesShort: ['dg','dl','dt','dc','dj','dv','ds'], | 
				
			||||||
 | 
							dayNamesMin: ['dg','dl','dt','dc','dj','dv','ds'], | 
				
			||||||
 | 
							weekHeader: 'Set', | 
				
			||||||
 | 
							dateFormat: 'dd/mm/yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['ca']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Czech initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Tomas Muller (tomas@tomas-muller.net). */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['cs'] = { | 
				
			||||||
 | 
							closeText: 'Zavřít', | 
				
			||||||
 | 
							prevText: '<Dříve', | 
				
			||||||
 | 
							nextText: 'Později>', | 
				
			||||||
 | 
							currentText: 'Nyní', | 
				
			||||||
 | 
							monthNames: ['leden','únor','březen','duben','květen','červen', | 
				
			||||||
 | 
							'červenec','srpen','září','říjen','listopad','prosinec'], | 
				
			||||||
 | 
							monthNamesShort: ['led','úno','bře','dub','kvě','čer', | 
				
			||||||
 | 
							'čvc','srp','zář','říj','lis','pro'], | 
				
			||||||
 | 
							dayNames: ['neděle', 'pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota'], | 
				
			||||||
 | 
							dayNamesShort: ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'], | 
				
			||||||
 | 
							dayNamesMin: ['ne','po','út','st','čt','pá','so'], | 
				
			||||||
 | 
							weekHeader: 'Týd', | 
				
			||||||
 | 
							dateFormat: 'dd.mm.yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['cs']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Welsh/UK initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by William Griffiths. */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['cy-GB'] = { | 
				
			||||||
 | 
							closeText: 'Done', | 
				
			||||||
 | 
							prevText: 'Prev', | 
				
			||||||
 | 
							nextText: 'Next', | 
				
			||||||
 | 
							currentText: 'Today', | 
				
			||||||
 | 
							monthNames: ['Ionawr','Chwefror','Mawrth','Ebrill','Mai','Mehefin', | 
				
			||||||
 | 
							'Gorffennaf','Awst','Medi','Hydref','Tachwedd','Rhagfyr'], | 
				
			||||||
 | 
							monthNamesShort: ['Ion', 'Chw', 'Maw', 'Ebr', 'Mai', 'Meh', | 
				
			||||||
 | 
							'Gor', 'Aws', 'Med', 'Hyd', 'Tac', 'Rha'], | 
				
			||||||
 | 
							dayNames: ['Dydd Sul', 'Dydd Llun', 'Dydd Mawrth', 'Dydd Mercher', 'Dydd Iau', 'Dydd Gwener', 'Dydd Sadwrn'], | 
				
			||||||
 | 
							dayNamesShort: ['Sul', 'Llu', 'Maw', 'Mer', 'Iau', 'Gwe', 'Sad'], | 
				
			||||||
 | 
							dayNamesMin: ['Su','Ll','Ma','Me','Ia','Gw','Sa'], | 
				
			||||||
 | 
							weekHeader: 'Wy', | 
				
			||||||
 | 
							dateFormat: 'dd/mm/yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['cy-GB']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Danish initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Jan Christensen ( deletestuff@gmail.com). */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['da'] = { | 
				
			||||||
 | 
							closeText: 'Luk', | 
				
			||||||
 | 
							prevText: '<Forrige', | 
				
			||||||
 | 
							nextText: 'Næste>', | 
				
			||||||
 | 
							currentText: 'Idag', | 
				
			||||||
 | 
							monthNames: ['Januar','Februar','Marts','April','Maj','Juni', | 
				
			||||||
 | 
							'Juli','August','September','Oktober','November','December'], | 
				
			||||||
 | 
							monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', | 
				
			||||||
 | 
							'Jul','Aug','Sep','Okt','Nov','Dec'], | 
				
			||||||
 | 
							dayNames: ['Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag'], | 
				
			||||||
 | 
							dayNamesShort: ['Søn','Man','Tir','Ons','Tor','Fre','Lør'], | 
				
			||||||
 | 
							dayNamesMin: ['Sø','Ma','Ti','On','To','Fr','Lø'], | 
				
			||||||
 | 
							weekHeader: 'Uge', | 
				
			||||||
 | 
							dateFormat: 'dd-mm-yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['da']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* German initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Milian Wolff (mail@milianw.de). */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['de'] = { | 
				
			||||||
 | 
							closeText: 'Schließen', | 
				
			||||||
 | 
							prevText: '<Zurück', | 
				
			||||||
 | 
							nextText: 'Vor>', | 
				
			||||||
 | 
							currentText: 'Heute', | 
				
			||||||
 | 
							monthNames: ['Januar','Februar','März','April','Mai','Juni', | 
				
			||||||
 | 
							'Juli','August','September','Oktober','November','Dezember'], | 
				
			||||||
 | 
							monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun', | 
				
			||||||
 | 
							'Jul','Aug','Sep','Okt','Nov','Dez'], | 
				
			||||||
 | 
							dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'], | 
				
			||||||
 | 
							dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'], | 
				
			||||||
 | 
							dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'], | 
				
			||||||
 | 
							weekHeader: 'KW', | 
				
			||||||
 | 
							dateFormat: 'dd.mm.yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['de']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Greek (el) initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Alex Cicovic (http://www.alexcicovic.com) */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['el'] = { | 
				
			||||||
 | 
							closeText: 'Κλείσιμο', | 
				
			||||||
 | 
							prevText: 'Προηγούμενος', | 
				
			||||||
 | 
							nextText: 'Επόμενος', | 
				
			||||||
 | 
							currentText: 'Τρέχων Μήνας', | 
				
			||||||
 | 
							monthNames: ['Ιανουάριος','Φεβρουάριος','Μάρτιος','Απρίλιος','Μάιος','Ιούνιος', | 
				
			||||||
 | 
							'Ιούλιος','Αύγουστος','Σεπτέμβριος','Οκτώβριος','Νοέμβριος','Δεκέμβριος'], | 
				
			||||||
 | 
							monthNamesShort: ['Ιαν','Φεβ','Μαρ','Απρ','Μαι','Ιουν', | 
				
			||||||
 | 
							'Ιουλ','Αυγ','Σεπ','Οκτ','Νοε','Δεκ'], | 
				
			||||||
 | 
							dayNames: ['Κυριακή','Δευτέρα','Τρίτη','Τετάρτη','Πέμπτη','Παρασκευή','Σάββατο'], | 
				
			||||||
 | 
							dayNamesShort: ['Κυρ','Δευ','Τρι','Τετ','Πεμ','Παρ','Σαβ'], | 
				
			||||||
 | 
							dayNamesMin: ['Κυ','Δε','Τρ','Τε','Πε','Πα','Σα'], | 
				
			||||||
 | 
							weekHeader: 'Εβδ', | 
				
			||||||
 | 
							dateFormat: 'dd/mm/yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['el']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* English/Australia initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Based on the en-GB initialisation. */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['en-AU'] = { | 
				
			||||||
 | 
							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: 'dd/mm/yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['en-AU']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* English/UK initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Stuart. */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['en-GB'] = { | 
				
			||||||
 | 
							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: 'dd/mm/yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['en-GB']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* English/New Zealand initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Based on the en-GB initialisation. */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['en-NZ'] = { | 
				
			||||||
 | 
							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: 'dd/mm/yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['en-NZ']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Esperanto initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Olivier M. (olivierweb@ifrance.com). */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['eo'] = { | 
				
			||||||
 | 
							closeText: 'Fermi', | 
				
			||||||
 | 
							prevText: '<Anta', | 
				
			||||||
 | 
							nextText: 'Sekv>', | 
				
			||||||
 | 
							currentText: 'Nuna', | 
				
			||||||
 | 
							monthNames: ['Januaro','Februaro','Marto','Aprilo','Majo','Junio', | 
				
			||||||
 | 
							'Julio','Aŭgusto','Septembro','Oktobro','Novembro','Decembro'], | 
				
			||||||
 | 
							monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', | 
				
			||||||
 | 
							'Jul','Aŭg','Sep','Okt','Nov','Dec'], | 
				
			||||||
 | 
							dayNames: ['Dimanĉo','Lundo','Mardo','Merkredo','Ĵaŭdo','Vendredo','Sabato'], | 
				
			||||||
 | 
							dayNamesShort: ['Dim','Lun','Mar','Mer','Ĵaŭ','Ven','Sab'], | 
				
			||||||
 | 
							dayNamesMin: ['Di','Lu','Ma','Me','Ĵa','Ve','Sa'], | 
				
			||||||
 | 
							weekHeader: 'Sb', | 
				
			||||||
 | 
							dateFormat: 'dd/mm/yy', | 
				
			||||||
 | 
							firstDay: 0, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['eo']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Inicialización en español para la extensión 'UI date picker' para jQuery. */ | 
				
			||||||
 | 
					/* Traducido por Vester (xvester@gmail.com). */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['es'] = { | 
				
			||||||
 | 
							closeText: 'Cerrar', | 
				
			||||||
 | 
							prevText: '<Ant', | 
				
			||||||
 | 
							nextText: 'Sig>', | 
				
			||||||
 | 
							currentText: 'Hoy', | 
				
			||||||
 | 
							monthNames: ['Enero','Febrero','Marzo','Abril','Mayo','Junio', | 
				
			||||||
 | 
							'Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'], | 
				
			||||||
 | 
							monthNamesShort: ['Ene','Feb','Mar','Abr','May','Jun', | 
				
			||||||
 | 
							'Jul','Ago','Sep','Oct','Nov','Dic'], | 
				
			||||||
 | 
							dayNames: ['Domingo','Lunes','Martes','Miércoles','Jueves','Viernes','Sábado'], | 
				
			||||||
 | 
							dayNamesShort: ['Dom','Lun','Mar','Mié','Juv','Vie','Sáb'], | 
				
			||||||
 | 
							dayNamesMin: ['Do','Lu','Ma','Mi','Ju','Vi','Sá'], | 
				
			||||||
 | 
							weekHeader: 'Sm', | 
				
			||||||
 | 
							dateFormat: 'dd/mm/yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['es']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Estonian initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Mart Sõmermaa (mrts.pydev at gmail com). */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['et'] = { | 
				
			||||||
 | 
							closeText: 'Sulge', | 
				
			||||||
 | 
							prevText: 'Eelnev', | 
				
			||||||
 | 
							nextText: 'Järgnev', | 
				
			||||||
 | 
							currentText: 'Täna', | 
				
			||||||
 | 
							monthNames: ['Jaanuar','Veebruar','Märts','Aprill','Mai','Juuni', | 
				
			||||||
 | 
							'Juuli','August','September','Oktoober','November','Detsember'], | 
				
			||||||
 | 
							monthNamesShort: ['Jaan', 'Veebr', 'Märts', 'Apr', 'Mai', 'Juuni', | 
				
			||||||
 | 
							'Juuli', 'Aug', 'Sept', 'Okt', 'Nov', 'Dets'], | 
				
			||||||
 | 
							dayNames: ['Pühapäev', 'Esmaspäev', 'Teisipäev', 'Kolmapäev', 'Neljapäev', 'Reede', 'Laupäev'], | 
				
			||||||
 | 
							dayNamesShort: ['Pühap', 'Esmasp', 'Teisip', 'Kolmap', 'Neljap', 'Reede', 'Laup'], | 
				
			||||||
 | 
							dayNamesMin: ['P','E','T','K','N','R','L'], | 
				
			||||||
 | 
							weekHeader: 'näd', | 
				
			||||||
 | 
							dateFormat: 'dd.mm.yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['et']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Euskarako oinarria 'UI date picker' jquery-ko extentsioarentzat */ | 
				
			||||||
 | 
					/* Karrikas-ek itzulia (karrikas@karrikas.com) */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['eu'] = { | 
				
			||||||
 | 
							closeText: 'Egina', | 
				
			||||||
 | 
							prevText: '<Aur', | 
				
			||||||
 | 
							nextText: 'Hur>', | 
				
			||||||
 | 
							currentText: 'Gaur', | 
				
			||||||
 | 
							monthNames: ['urtarrila','otsaila','martxoa','apirila','maiatza','ekaina', | 
				
			||||||
 | 
								'uztaila','abuztua','iraila','urria','azaroa','abendua'], | 
				
			||||||
 | 
							monthNamesShort: ['urt.','ots.','mar.','api.','mai.','eka.', | 
				
			||||||
 | 
								'uzt.','abu.','ira.','urr.','aza.','abe.'], | 
				
			||||||
 | 
							dayNames: ['igandea','astelehena','asteartea','asteazkena','osteguna','ostirala','larunbata'], | 
				
			||||||
 | 
							dayNamesShort: ['ig.','al.','ar.','az.','og.','ol.','lr.'], | 
				
			||||||
 | 
							dayNamesMin: ['ig','al','ar','az','og','ol','lr'], | 
				
			||||||
 | 
							weekHeader: 'As', | 
				
			||||||
 | 
							dateFormat: 'yy-mm-dd', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['eu']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Finnish initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Harri Kilpiö (harrikilpio@gmail.com). */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['fi'] = { | 
				
			||||||
 | 
							closeText: 'Sulje', | 
				
			||||||
 | 
							prevText: '«Edellinen', | 
				
			||||||
 | 
							nextText: 'Seuraava»', | 
				
			||||||
 | 
							currentText: 'Tänään', | 
				
			||||||
 | 
							monthNames: ['Tammikuu','Helmikuu','Maaliskuu','Huhtikuu','Toukokuu','Kesäkuu', | 
				
			||||||
 | 
							'Heinäkuu','Elokuu','Syyskuu','Lokakuu','Marraskuu','Joulukuu'], | 
				
			||||||
 | 
							monthNamesShort: ['Tammi','Helmi','Maalis','Huhti','Touko','Kesä', | 
				
			||||||
 | 
							'Heinä','Elo','Syys','Loka','Marras','Joulu'], | 
				
			||||||
 | 
							dayNamesShort: ['Su','Ma','Ti','Ke','To','Pe','La'], | 
				
			||||||
 | 
							dayNames: ['Sunnuntai','Maanantai','Tiistai','Keskiviikko','Torstai','Perjantai','Lauantai'], | 
				
			||||||
 | 
							dayNamesMin: ['Su','Ma','Ti','Ke','To','Pe','La'], | 
				
			||||||
 | 
							weekHeader: 'Vk', | 
				
			||||||
 | 
							dateFormat: 'dd.mm.yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['fi']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Faroese initialisation for the jQuery UI date picker plugin */ | 
				
			||||||
 | 
					/* Written by Sverri Mohr Olsen, sverrimo@gmail.com */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['fo'] = { | 
				
			||||||
 | 
							closeText: 'Lat aftur', | 
				
			||||||
 | 
							prevText: '<Fyrra', | 
				
			||||||
 | 
							nextText: 'Næsta>', | 
				
			||||||
 | 
							currentText: 'Í dag', | 
				
			||||||
 | 
							monthNames: ['Januar','Februar','Mars','Apríl','Mei','Juni', | 
				
			||||||
 | 
							'Juli','August','September','Oktober','November','Desember'], | 
				
			||||||
 | 
							monthNamesShort: ['Jan','Feb','Mar','Apr','Mei','Jun', | 
				
			||||||
 | 
							'Jul','Aug','Sep','Okt','Nov','Des'], | 
				
			||||||
 | 
							dayNames: ['Sunnudagur','Mánadagur','Týsdagur','Mikudagur','Hósdagur','Fríggjadagur','Leyardagur'], | 
				
			||||||
 | 
							dayNamesShort: ['Sun','Mán','Týs','Mik','Hós','Frí','Ley'], | 
				
			||||||
 | 
							dayNamesMin: ['Su','Má','Tý','Mi','Hó','Fr','Le'], | 
				
			||||||
 | 
							weekHeader: 'Vk', | 
				
			||||||
 | 
							dateFormat: 'dd-mm-yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['fo']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Canadian-French initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					jQuery(function ($) { | 
				
			||||||
 | 
						$.datepicker.regional['fr-CA'] = { | 
				
			||||||
 | 
							closeText: 'Fermer', | 
				
			||||||
 | 
							prevText: 'Précédent', | 
				
			||||||
 | 
							nextText: 'Suivant', | 
				
			||||||
 | 
							currentText: 'Aujourd\'hui', | 
				
			||||||
 | 
							monthNames: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', | 
				
			||||||
 | 
								'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'], | 
				
			||||||
 | 
							monthNamesShort: ['janv.', 'févr.', 'mars', 'avril', 'mai', 'juin', | 
				
			||||||
 | 
								'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'], | 
				
			||||||
 | 
							dayNames: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], | 
				
			||||||
 | 
							dayNamesShort: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], | 
				
			||||||
 | 
							dayNamesMin: ['D', 'L', 'M', 'M', 'J', 'V', 'S'], | 
				
			||||||
 | 
							weekHeader: 'Sem.', | 
				
			||||||
 | 
							dateFormat: 'yy-mm-dd', | 
				
			||||||
 | 
							firstDay: 0, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: '' | 
				
			||||||
 | 
						}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['fr-CA']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Swiss-French initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written Martin Voelkle (martin.voelkle@e-tc.ch). */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['fr-CH'] = { | 
				
			||||||
 | 
							closeText: 'Fermer', | 
				
			||||||
 | 
							prevText: '<Préc', | 
				
			||||||
 | 
							nextText: 'Suiv>', | 
				
			||||||
 | 
							currentText: 'Courant', | 
				
			||||||
 | 
							monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin', | 
				
			||||||
 | 
							'Juillet','Août','Septembre','Octobre','Novembre','Décembre'], | 
				
			||||||
 | 
							monthNamesShort: ['Jan','Fév','Mar','Avr','Mai','Jun', | 
				
			||||||
 | 
							'Jul','Aoû','Sep','Oct','Nov','Déc'], | 
				
			||||||
 | 
							dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'], | 
				
			||||||
 | 
							dayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'], | 
				
			||||||
 | 
							dayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'], | 
				
			||||||
 | 
							weekHeader: 'Sm', | 
				
			||||||
 | 
							dateFormat: 'dd.mm.yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['fr-CH']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,25 @@ | 
				
			|||||||
 | 
					/* French initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Keith Wood (kbwood{at}iinet.com.au), | 
				
			||||||
 | 
								  Stéphane Nahmani (sholby@sholby.net), | 
				
			||||||
 | 
								  Stéphane Raimbault <stephane.raimbault@gmail.com> */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['fr'] = { | 
				
			||||||
 | 
							closeText: 'Fermer', | 
				
			||||||
 | 
							prevText: 'Précédent', | 
				
			||||||
 | 
							nextText: 'Suivant', | 
				
			||||||
 | 
							currentText: 'Aujourd\'hui', | 
				
			||||||
 | 
							monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin', | 
				
			||||||
 | 
							'Juillet','Août','Septembre','Octobre','Novembre','Décembre'], | 
				
			||||||
 | 
							monthNamesShort: ['Janv.','Févr.','Mars','Avril','Mai','Juin', | 
				
			||||||
 | 
							'Juil.','Août','Sept.','Oct.','Nov.','Déc.'], | 
				
			||||||
 | 
							dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'], | 
				
			||||||
 | 
							dayNamesShort: ['Dim.','Lun.','Mar.','Mer.','Jeu.','Ven.','Sam.'], | 
				
			||||||
 | 
							dayNamesMin: ['D','L','M','M','J','V','S'], | 
				
			||||||
 | 
							weekHeader: 'Sem.', | 
				
			||||||
 | 
							dateFormat: 'dd/mm/yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['fr']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Galician localization for 'UI date picker' jQuery extension. */ | 
				
			||||||
 | 
					/* Translated by Jorge Barreiro <yortx.barry@gmail.com>. */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['gl'] = { | 
				
			||||||
 | 
							closeText: 'Pechar', | 
				
			||||||
 | 
							prevText: '<Ant', | 
				
			||||||
 | 
							nextText: 'Seg>', | 
				
			||||||
 | 
							currentText: 'Hoxe', | 
				
			||||||
 | 
							monthNames: ['Xaneiro','Febreiro','Marzo','Abril','Maio','Xuño', | 
				
			||||||
 | 
							'Xullo','Agosto','Setembro','Outubro','Novembro','Decembro'], | 
				
			||||||
 | 
							monthNamesShort: ['Xan','Feb','Mar','Abr','Mai','Xuñ', | 
				
			||||||
 | 
							'Xul','Ago','Set','Out','Nov','Dec'], | 
				
			||||||
 | 
							dayNames: ['Domingo','Luns','Martes','Mércores','Xoves','Venres','Sábado'], | 
				
			||||||
 | 
							dayNamesShort: ['Dom','Lun','Mar','Mér','Xov','Ven','Sáb'], | 
				
			||||||
 | 
							dayNamesMin: ['Do','Lu','Ma','Mé','Xo','Ve','Sá'], | 
				
			||||||
 | 
							weekHeader: 'Sm', | 
				
			||||||
 | 
							dateFormat: 'dd/mm/yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['gl']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Hebrew initialisation for the UI Datepicker extension. */ | 
				
			||||||
 | 
					/* Written by Amir Hardon (ahardon at gmail dot com). */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['he'] = { | 
				
			||||||
 | 
							closeText: 'סגור', | 
				
			||||||
 | 
							prevText: '<הקודם', | 
				
			||||||
 | 
							nextText: 'הבא>', | 
				
			||||||
 | 
							currentText: 'היום', | 
				
			||||||
 | 
							monthNames: ['ינואר','פברואר','מרץ','אפריל','מאי','יוני', | 
				
			||||||
 | 
							'יולי','אוגוסט','ספטמבר','אוקטובר','נובמבר','דצמבר'], | 
				
			||||||
 | 
							monthNamesShort: ['ינו','פבר','מרץ','אפר','מאי','יוני', | 
				
			||||||
 | 
							'יולי','אוג','ספט','אוק','נוב','דצמ'], | 
				
			||||||
 | 
							dayNames: ['ראשון','שני','שלישי','רביעי','חמישי','שישי','שבת'], | 
				
			||||||
 | 
							dayNamesShort: ['א\'','ב\'','ג\'','ד\'','ה\'','ו\'','שבת'], | 
				
			||||||
 | 
							dayNamesMin: ['א\'','ב\'','ג\'','ד\'','ה\'','ו\'','שבת'], | 
				
			||||||
 | 
							weekHeader: 'Wk', | 
				
			||||||
 | 
							dateFormat: 'dd/mm/yy', | 
				
			||||||
 | 
							firstDay: 0, | 
				
			||||||
 | 
							isRTL: true, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['he']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Croatian i18n for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Vjekoslav Nesek. */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['hr'] = { | 
				
			||||||
 | 
							closeText: 'Zatvori', | 
				
			||||||
 | 
							prevText: '<', | 
				
			||||||
 | 
							nextText: '>', | 
				
			||||||
 | 
							currentText: 'Danas', | 
				
			||||||
 | 
							monthNames: ['Siječanj','Veljača','Ožujak','Travanj','Svibanj','Lipanj', | 
				
			||||||
 | 
							'Srpanj','Kolovoz','Rujan','Listopad','Studeni','Prosinac'], | 
				
			||||||
 | 
							monthNamesShort: ['Sij','Velj','Ožu','Tra','Svi','Lip', | 
				
			||||||
 | 
							'Srp','Kol','Ruj','Lis','Stu','Pro'], | 
				
			||||||
 | 
							dayNames: ['Nedjelja','Ponedjeljak','Utorak','Srijeda','Četvrtak','Petak','Subota'], | 
				
			||||||
 | 
							dayNamesShort: ['Ned','Pon','Uto','Sri','Čet','Pet','Sub'], | 
				
			||||||
 | 
							dayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'], | 
				
			||||||
 | 
							weekHeader: 'Tje', | 
				
			||||||
 | 
							dateFormat: 'dd.mm.yy.', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['hr']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Hungarian initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Istvan Karaszi (jquery@spam.raszi.hu). */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['hu'] = { | 
				
			||||||
 | 
							closeText: 'bezár', | 
				
			||||||
 | 
							prevText: 'vissza', | 
				
			||||||
 | 
							nextText: 'előre', | 
				
			||||||
 | 
							currentText: 'ma', | 
				
			||||||
 | 
							monthNames: ['Január', 'Február', 'Március', 'Április', 'Május', 'Június', | 
				
			||||||
 | 
							'Július', 'Augusztus', 'Szeptember', 'Október', 'November', 'December'], | 
				
			||||||
 | 
							monthNamesShort: ['Jan', 'Feb', 'Már', 'Ápr', 'Máj', 'Jún', | 
				
			||||||
 | 
							'Júl', 'Aug', 'Szep', 'Okt', 'Nov', 'Dec'], | 
				
			||||||
 | 
							dayNames: ['Vasárnap', 'Hétfő', 'Kedd', 'Szerda', 'Csütörtök', 'Péntek', 'Szombat'], | 
				
			||||||
 | 
							dayNamesShort: ['Vas', 'Hét', 'Ked', 'Sze', 'Csü', 'Pén', 'Szo'], | 
				
			||||||
 | 
							dayNamesMin: ['V', 'H', 'K', 'Sze', 'Cs', 'P', 'Szo'], | 
				
			||||||
 | 
							weekHeader: 'Hét', | 
				
			||||||
 | 
							dateFormat: 'yy.mm.dd.', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: true, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['hu']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Armenian(UTF-8) initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Levon Zakaryan (levon.zakaryan@gmail.com)*/ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['hy'] = { | 
				
			||||||
 | 
							closeText: 'Փակել', | 
				
			||||||
 | 
							prevText: '<Նախ.', | 
				
			||||||
 | 
							nextText: 'Հաջ.>', | 
				
			||||||
 | 
							currentText: 'Այսօր', | 
				
			||||||
 | 
							monthNames: ['Հունվար','Փետրվար','Մարտ','Ապրիլ','Մայիս','Հունիս', | 
				
			||||||
 | 
							'Հուլիս','Օգոստոս','Սեպտեմբեր','Հոկտեմբեր','Նոյեմբեր','Դեկտեմբեր'], | 
				
			||||||
 | 
							monthNamesShort: ['Հունվ','Փետր','Մարտ','Ապր','Մայիս','Հունիս', | 
				
			||||||
 | 
							'Հուլ','Օգս','Սեպ','Հոկ','Նոյ','Դեկ'], | 
				
			||||||
 | 
							dayNames: ['կիրակի','եկուշաբթի','երեքշաբթի','չորեքշաբթի','հինգշաբթի','ուրբաթ','շաբաթ'], | 
				
			||||||
 | 
							dayNamesShort: ['կիր','երկ','երք','չրք','հնգ','ուրբ','շբթ'], | 
				
			||||||
 | 
							dayNamesMin: ['կիր','երկ','երք','չրք','հնգ','ուրբ','շբթ'], | 
				
			||||||
 | 
							weekHeader: 'ՇԲՏ', | 
				
			||||||
 | 
							dateFormat: 'dd.mm.yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['hy']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Indonesian initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Deden Fathurahman (dedenf@gmail.com). */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['id'] = { | 
				
			||||||
 | 
							closeText: 'Tutup', | 
				
			||||||
 | 
							prevText: '<mundur', | 
				
			||||||
 | 
							nextText: 'maju>', | 
				
			||||||
 | 
							currentText: 'hari ini', | 
				
			||||||
 | 
							monthNames: ['Januari','Februari','Maret','April','Mei','Juni', | 
				
			||||||
 | 
							'Juli','Agustus','September','Oktober','Nopember','Desember'], | 
				
			||||||
 | 
							monthNamesShort: ['Jan','Feb','Mar','Apr','Mei','Jun', | 
				
			||||||
 | 
							'Jul','Agus','Sep','Okt','Nop','Des'], | 
				
			||||||
 | 
							dayNames: ['Minggu','Senin','Selasa','Rabu','Kamis','Jumat','Sabtu'], | 
				
			||||||
 | 
							dayNamesShort: ['Min','Sen','Sel','Rab','kam','Jum','Sab'], | 
				
			||||||
 | 
							dayNamesMin: ['Mg','Sn','Sl','Rb','Km','jm','Sb'], | 
				
			||||||
 | 
							weekHeader: 'Mg', | 
				
			||||||
 | 
							dateFormat: 'dd/mm/yy', | 
				
			||||||
 | 
							firstDay: 0, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['id']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Icelandic initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Haukur H. Thorsson (haukur@eskill.is). */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['is'] = { | 
				
			||||||
 | 
							closeText: 'Loka', | 
				
			||||||
 | 
							prevText: '< Fyrri', | 
				
			||||||
 | 
							nextText: 'Næsti >', | 
				
			||||||
 | 
							currentText: 'Í dag', | 
				
			||||||
 | 
							monthNames: ['Janúar','Febrúar','Mars','Apríl','Maí','Júní', | 
				
			||||||
 | 
							'Júlí','Ágúst','September','Október','Nóvember','Desember'], | 
				
			||||||
 | 
							monthNamesShort: ['Jan','Feb','Mar','Apr','Maí','Jún', | 
				
			||||||
 | 
							'Júl','Ágú','Sep','Okt','Nóv','Des'], | 
				
			||||||
 | 
							dayNames: ['Sunnudagur','Mánudagur','Þriðjudagur','Miðvikudagur','Fimmtudagur','Föstudagur','Laugardagur'], | 
				
			||||||
 | 
							dayNamesShort: ['Sun','Mán','Þri','Mið','Fim','Fös','Lau'], | 
				
			||||||
 | 
							dayNamesMin: ['Su','Má','Þr','Mi','Fi','Fö','La'], | 
				
			||||||
 | 
							weekHeader: 'Vika', | 
				
			||||||
 | 
							dateFormat: 'dd/mm/yy', | 
				
			||||||
 | 
							firstDay: 0, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['is']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Italian initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Antonello Pasella (antonello.pasella@gmail.com). */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['it'] = { | 
				
			||||||
 | 
							closeText: 'Chiudi', | 
				
			||||||
 | 
							prevText: '<Prec', | 
				
			||||||
 | 
							nextText: 'Succ>', | 
				
			||||||
 | 
							currentText: 'Oggi', | 
				
			||||||
 | 
							monthNames: ['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno', | 
				
			||||||
 | 
								'Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'], | 
				
			||||||
 | 
							monthNamesShort: ['Gen','Feb','Mar','Apr','Mag','Giu', | 
				
			||||||
 | 
								'Lug','Ago','Set','Ott','Nov','Dic'], | 
				
			||||||
 | 
							dayNames: ['Domenica','Lunedì','Martedì','Mercoledì','Giovedì','Venerdì','Sabato'], | 
				
			||||||
 | 
							dayNamesShort: ['Dom','Lun','Mar','Mer','Gio','Ven','Sab'], | 
				
			||||||
 | 
							dayNamesMin: ['Do','Lu','Ma','Me','Gi','Ve','Sa'], | 
				
			||||||
 | 
							weekHeader: 'Sm', | 
				
			||||||
 | 
							dateFormat: 'dd/mm/yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['it']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Japanese initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Kentaro SATO (kentaro@ranvis.com). */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['ja'] = { | 
				
			||||||
 | 
							closeText: '閉じる', | 
				
			||||||
 | 
							prevText: '<前', | 
				
			||||||
 | 
							nextText: '次>', | 
				
			||||||
 | 
							currentText: '今日', | 
				
			||||||
 | 
							monthNames: ['1月','2月','3月','4月','5月','6月', | 
				
			||||||
 | 
							'7月','8月','9月','10月','11月','12月'], | 
				
			||||||
 | 
							monthNamesShort: ['1月','2月','3月','4月','5月','6月', | 
				
			||||||
 | 
							'7月','8月','9月','10月','11月','12月'], | 
				
			||||||
 | 
							dayNames: ['日曜日','月曜日','火曜日','水曜日','木曜日','金曜日','土曜日'], | 
				
			||||||
 | 
							dayNamesShort: ['日','月','火','水','木','金','土'], | 
				
			||||||
 | 
							dayNamesMin: ['日','月','火','水','木','金','土'], | 
				
			||||||
 | 
							weekHeader: '週', | 
				
			||||||
 | 
							dateFormat: 'yy/mm/dd', | 
				
			||||||
 | 
							firstDay: 0, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: true, | 
				
			||||||
 | 
							yearSuffix: '年'}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['ja']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,21 @@ | 
				
			|||||||
 | 
					/* Georgian (UTF-8) initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Lado Lomidze (lado.lomidze@gmail.com). */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['ka'] = { | 
				
			||||||
 | 
							closeText: 'დახურვა', | 
				
			||||||
 | 
							prevText: '< წინა', | 
				
			||||||
 | 
							nextText: 'შემდეგი >', | 
				
			||||||
 | 
							currentText: 'დღეს', | 
				
			||||||
 | 
							monthNames: ['იანვარი','თებერვალი','მარტი','აპრილი','მაისი','ივნისი', 'ივლისი','აგვისტო','სექტემბერი','ოქტომბერი','ნოემბერი','დეკემბერი'], | 
				
			||||||
 | 
							monthNamesShort: ['იან','თებ','მარ','აპრ','მაი','ივნ', 'ივლ','აგვ','სექ','ოქტ','ნოე','დეკ'], | 
				
			||||||
 | 
							dayNames: ['კვირა','ორშაბათი','სამშაბათი','ოთხშაბათი','ხუთშაბათი','პარასკევი','შაბათი'], | 
				
			||||||
 | 
							dayNamesShort: ['კვ','ორშ','სამ','ოთხ','ხუთ','პარ','შაბ'], | 
				
			||||||
 | 
							dayNamesMin: ['კვ','ორშ','სამ','ოთხ','ხუთ','პარ','შაბ'], | 
				
			||||||
 | 
							weekHeader: 'კვირა', | 
				
			||||||
 | 
							dateFormat: 'dd-mm-yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['ka']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Kazakh (UTF-8) initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Dmitriy Karasyov (dmitriy.karasyov@gmail.com). */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['kk'] = { | 
				
			||||||
 | 
							closeText: 'Жабу', | 
				
			||||||
 | 
							prevText: '<Алдыңғы', | 
				
			||||||
 | 
							nextText: 'Келесі>', | 
				
			||||||
 | 
							currentText: 'Бүгін', | 
				
			||||||
 | 
							monthNames: ['Қаңтар','Ақпан','Наурыз','Сәуір','Мамыр','Маусым', | 
				
			||||||
 | 
							'Шілде','Тамыз','Қыркүйек','Қазан','Қараша','Желтоқсан'], | 
				
			||||||
 | 
							monthNamesShort: ['Қаң','Ақп','Нау','Сәу','Мам','Мау', | 
				
			||||||
 | 
							'Шіл','Там','Қыр','Қаз','Қар','Жел'], | 
				
			||||||
 | 
							dayNames: ['Жексенбі','Дүйсенбі','Сейсенбі','Сәрсенбі','Бейсенбі','Жұма','Сенбі'], | 
				
			||||||
 | 
							dayNamesShort: ['жкс','дсн','ссн','срс','бсн','жма','снб'], | 
				
			||||||
 | 
							dayNamesMin: ['Жк','Дс','Сс','Ср','Бс','Жм','Сн'], | 
				
			||||||
 | 
							weekHeader: 'Не', | 
				
			||||||
 | 
							dateFormat: 'dd.mm.yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['kk']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Korean initialisation for the jQuery calendar extension. */ | 
				
			||||||
 | 
					/* Written by DaeKwon Kang (ncrash.dk@gmail.com), Edited by Genie. */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['ko'] = { | 
				
			||||||
 | 
							closeText: '닫기', | 
				
			||||||
 | 
							prevText: '이전달', | 
				
			||||||
 | 
							nextText: '다음달', | 
				
			||||||
 | 
							currentText: '오늘', | 
				
			||||||
 | 
							monthNames: ['1월','2월','3월','4월','5월','6월', | 
				
			||||||
 | 
							'7월','8월','9월','10월','11월','12월'], | 
				
			||||||
 | 
							monthNamesShort: ['1월','2월','3월','4월','5월','6월', | 
				
			||||||
 | 
							'7월','8월','9월','10월','11월','12월'], | 
				
			||||||
 | 
							dayNames: ['일요일','월요일','화요일','수요일','목요일','금요일','토요일'], | 
				
			||||||
 | 
							dayNamesShort: ['일','월','화','수','목','금','토'], | 
				
			||||||
 | 
							dayNamesMin: ['일','월','화','수','목','금','토'], | 
				
			||||||
 | 
							weekHeader: 'Wk', | 
				
			||||||
 | 
							dateFormat: 'yy-mm-dd', | 
				
			||||||
 | 
							firstDay: 0, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: true, | 
				
			||||||
 | 
							yearSuffix: '년'}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['ko']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,24 @@ | 
				
			|||||||
 | 
					/* Kyrgyz (UTF-8) initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Sergey Kartashov (ebishkek@yandex.ru). */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['ky'] = { | 
				
			||||||
 | 
							closeText: 'Жабуу', | 
				
			||||||
 | 
							prevText: '<Мур', | 
				
			||||||
 | 
							nextText: 'Кий>', | 
				
			||||||
 | 
							currentText: 'Бүгүн', | 
				
			||||||
 | 
							monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь', | 
				
			||||||
 | 
							'Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'], | 
				
			||||||
 | 
							monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн', | 
				
			||||||
 | 
							'Июл','Авг','Сен','Окт','Ноя','Дек'], | 
				
			||||||
 | 
							dayNames: ['жекшемби', 'дүйшөмбү', 'шейшемби', 'шаршемби', 'бейшемби', 'жума', 'ишемби'], | 
				
			||||||
 | 
							dayNamesShort: ['жек', 'дүй', 'шей', 'шар', 'бей', 'жум', 'ише'], | 
				
			||||||
 | 
							dayNamesMin: ['Жк','Дш','Шш','Шр','Бш','Жм','Иш'], | 
				
			||||||
 | 
							weekHeader: 'Жум', | 
				
			||||||
 | 
							dateFormat: 'dd.mm.yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: '' | 
				
			||||||
 | 
						}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['ky']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Luxembourgish initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Michel Weimerskirch <michel@weimerskirch.net> */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['lb'] = { | 
				
			||||||
 | 
							closeText: 'Fäerdeg', | 
				
			||||||
 | 
							prevText: 'Zréck', | 
				
			||||||
 | 
							nextText: 'Weider', | 
				
			||||||
 | 
							currentText: 'Haut', | 
				
			||||||
 | 
							monthNames: ['Januar','Februar','Mäerz','Abrëll','Mee','Juni', | 
				
			||||||
 | 
							'Juli','August','September','Oktober','November','Dezember'], | 
				
			||||||
 | 
							monthNamesShort: ['Jan', 'Feb', 'Mäe', 'Abr', 'Mee', 'Jun', | 
				
			||||||
 | 
							'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], | 
				
			||||||
 | 
							dayNames: ['Sonndeg', 'Méindeg', 'Dënschdeg', 'Mëttwoch', 'Donneschdeg', 'Freideg', 'Samschdeg'], | 
				
			||||||
 | 
							dayNamesShort: ['Son', 'Méi', 'Dën', 'Mët', 'Don', 'Fre', 'Sam'], | 
				
			||||||
 | 
							dayNamesMin: ['So','Mé','Dë','Më','Do','Fr','Sa'], | 
				
			||||||
 | 
							weekHeader: 'W', | 
				
			||||||
 | 
							dateFormat: 'dd.mm.yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['lb']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Lithuanian (UTF-8) initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* @author Arturas Paleicikas <arturas@avalon.lt> */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['lt'] = { | 
				
			||||||
 | 
							closeText: 'Uždaryti', | 
				
			||||||
 | 
							prevText: '<Atgal', | 
				
			||||||
 | 
							nextText: 'Pirmyn>', | 
				
			||||||
 | 
							currentText: 'Šiandien', | 
				
			||||||
 | 
							monthNames: ['Sausis','Vasaris','Kovas','Balandis','Gegužė','Birželis', | 
				
			||||||
 | 
							'Liepa','Rugpjūtis','Rugsėjis','Spalis','Lapkritis','Gruodis'], | 
				
			||||||
 | 
							monthNamesShort: ['Sau','Vas','Kov','Bal','Geg','Bir', | 
				
			||||||
 | 
							'Lie','Rugp','Rugs','Spa','Lap','Gru'], | 
				
			||||||
 | 
							dayNames: ['sekmadienis','pirmadienis','antradienis','trečiadienis','ketvirtadienis','penktadienis','šeštadienis'], | 
				
			||||||
 | 
							dayNamesShort: ['sek','pir','ant','tre','ket','pen','šeš'], | 
				
			||||||
 | 
							dayNamesMin: ['Se','Pr','An','Tr','Ke','Pe','Še'], | 
				
			||||||
 | 
							weekHeader: 'Wk', | 
				
			||||||
 | 
							dateFormat: 'yy-mm-dd', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['lt']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Latvian (UTF-8) initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* @author Arturas Paleicikas <arturas.paleicikas@metasite.net> */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['lv'] = { | 
				
			||||||
 | 
							closeText: 'Aizvērt', | 
				
			||||||
 | 
							prevText: 'Iepr', | 
				
			||||||
 | 
							nextText: 'Nāka', | 
				
			||||||
 | 
							currentText: 'Šodien', | 
				
			||||||
 | 
							monthNames: ['Janvāris','Februāris','Marts','Aprīlis','Maijs','Jūnijs', | 
				
			||||||
 | 
							'Jūlijs','Augusts','Septembris','Oktobris','Novembris','Decembris'], | 
				
			||||||
 | 
							monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jūn', | 
				
			||||||
 | 
							'Jūl','Aug','Sep','Okt','Nov','Dec'], | 
				
			||||||
 | 
							dayNames: ['svētdiena','pirmdiena','otrdiena','trešdiena','ceturtdiena','piektdiena','sestdiena'], | 
				
			||||||
 | 
							dayNamesShort: ['svt','prm','otr','tre','ctr','pkt','sst'], | 
				
			||||||
 | 
							dayNamesMin: ['Sv','Pr','Ot','Tr','Ct','Pk','Ss'], | 
				
			||||||
 | 
							weekHeader: 'Nav', | 
				
			||||||
 | 
							dateFormat: 'dd-mm-yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['lv']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Macedonian i18n for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Stojce Slavkovski. */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['mk'] = { | 
				
			||||||
 | 
							closeText: 'Затвори', | 
				
			||||||
 | 
							prevText: '<', | 
				
			||||||
 | 
							nextText: '>', | 
				
			||||||
 | 
							currentText: 'Денес', | 
				
			||||||
 | 
							monthNames: ['Јануари','Февруари','Март','Април','Мај','Јуни', | 
				
			||||||
 | 
							'Јули','Август','Септември','Октомври','Ноември','Декември'], | 
				
			||||||
 | 
							monthNamesShort: ['Јан','Фев','Мар','Апр','Мај','Јун', | 
				
			||||||
 | 
							'Јул','Авг','Сеп','Окт','Ное','Дек'], | 
				
			||||||
 | 
							dayNames: ['Недела','Понеделник','Вторник','Среда','Четврток','Петок','Сабота'], | 
				
			||||||
 | 
							dayNamesShort: ['Нед','Пон','Вто','Сре','Чет','Пет','Саб'], | 
				
			||||||
 | 
							dayNamesMin: ['Не','По','Вт','Ср','Че','Пе','Са'], | 
				
			||||||
 | 
							weekHeader: 'Сед', | 
				
			||||||
 | 
							dateFormat: 'dd.mm.yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['mk']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Malaysian initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Mohd Nawawi Mohamad Jamili (nawawi@ronggeng.net). */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['ms'] = { | 
				
			||||||
 | 
							closeText: 'Tutup', | 
				
			||||||
 | 
							prevText: '<Sebelum', | 
				
			||||||
 | 
							nextText: 'Selepas>', | 
				
			||||||
 | 
							currentText: 'hari ini', | 
				
			||||||
 | 
							monthNames: ['Januari','Februari','Mac','April','Mei','Jun', | 
				
			||||||
 | 
							'Julai','Ogos','September','Oktober','November','Disember'], | 
				
			||||||
 | 
							monthNamesShort: ['Jan','Feb','Mac','Apr','Mei','Jun', | 
				
			||||||
 | 
							'Jul','Ogo','Sep','Okt','Nov','Dis'], | 
				
			||||||
 | 
							dayNames: ['Ahad','Isnin','Selasa','Rabu','Khamis','Jumaat','Sabtu'], | 
				
			||||||
 | 
							dayNamesShort: ['Aha','Isn','Sel','Rab','kha','Jum','Sab'], | 
				
			||||||
 | 
							dayNamesMin: ['Ah','Is','Se','Ra','Kh','Ju','Sa'], | 
				
			||||||
 | 
							weekHeader: 'Mg', | 
				
			||||||
 | 
							dateFormat: 'dd/mm/yy', | 
				
			||||||
 | 
							firstDay: 0, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['ms']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,22 @@ | 
				
			|||||||
 | 
					/* Norwegian Bokmål initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Bjørn Johansen (post@bjornjohansen.no). */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['nb'] = { | 
				
			||||||
 | 
							closeText: 'Lukk', | 
				
			||||||
 | 
							prevText: '«Forrige', | 
				
			||||||
 | 
							nextText: 'Neste»', | 
				
			||||||
 | 
							currentText: 'I dag', | 
				
			||||||
 | 
							monthNames: ['januar','februar','mars','april','mai','juni','juli','august','september','oktober','november','desember'], | 
				
			||||||
 | 
							monthNamesShort: ['jan','feb','mar','apr','mai','jun','jul','aug','sep','okt','nov','des'], | 
				
			||||||
 | 
							dayNamesShort: ['søn','man','tir','ons','tor','fre','lør'], | 
				
			||||||
 | 
							dayNames: ['søndag','mandag','tirsdag','onsdag','torsdag','fredag','lørdag'], | 
				
			||||||
 | 
							dayNamesMin: ['sø','ma','ti','on','to','fr','lø'], | 
				
			||||||
 | 
							weekHeader: 'Uke', | 
				
			||||||
 | 
							dateFormat: 'dd.mm.yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: '' | 
				
			||||||
 | 
						}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['nb']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Dutch (Belgium) initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* David De Sloovere @DavidDeSloovere */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['nl-BE'] = { | 
				
			||||||
 | 
							closeText: 'Sluiten', | 
				
			||||||
 | 
							prevText: '←', | 
				
			||||||
 | 
							nextText: '→', | 
				
			||||||
 | 
							currentText: 'Vandaag', | 
				
			||||||
 | 
							monthNames: ['januari', 'februari', 'maart', 'april', 'mei', 'juni', | 
				
			||||||
 | 
							'juli', 'augustus', 'september', 'oktober', 'november', 'december'], | 
				
			||||||
 | 
							monthNamesShort: ['jan', 'feb', 'mrt', 'apr', 'mei', 'jun', | 
				
			||||||
 | 
							'jul', 'aug', 'sep', 'okt', 'nov', 'dec'], | 
				
			||||||
 | 
							dayNames: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'], | 
				
			||||||
 | 
							dayNamesShort: ['zon', 'maa', 'din', 'woe', 'don', 'vri', 'zat'], | 
				
			||||||
 | 
							dayNamesMin: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], | 
				
			||||||
 | 
							weekHeader: 'Wk', | 
				
			||||||
 | 
							dateFormat: 'dd/mm/yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['nl-BE']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Dutch (UTF-8) initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Mathias Bynens <http://mathiasbynens.be/> */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional.nl = { | 
				
			||||||
 | 
							closeText: 'Sluiten', | 
				
			||||||
 | 
							prevText: '←', | 
				
			||||||
 | 
							nextText: '→', | 
				
			||||||
 | 
							currentText: 'Vandaag', | 
				
			||||||
 | 
							monthNames: ['januari', 'februari', 'maart', 'april', 'mei', 'juni', | 
				
			||||||
 | 
							'juli', 'augustus', 'september', 'oktober', 'november', 'december'], | 
				
			||||||
 | 
							monthNamesShort: ['jan', 'feb', 'mrt', 'apr', 'mei', 'jun', | 
				
			||||||
 | 
							'jul', 'aug', 'sep', 'okt', 'nov', 'dec'], | 
				
			||||||
 | 
							dayNames: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'], | 
				
			||||||
 | 
							dayNamesShort: ['zon', 'maa', 'din', 'woe', 'don', 'vri', 'zat'], | 
				
			||||||
 | 
							dayNamesMin: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], | 
				
			||||||
 | 
							weekHeader: 'Wk', | 
				
			||||||
 | 
							dateFormat: 'dd-mm-yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional.nl); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,22 @@ | 
				
			|||||||
 | 
					/* Norwegian Nynorsk initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Bjørn Johansen (post@bjornjohansen.no). */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['nn'] = { | 
				
			||||||
 | 
							closeText: 'Lukk', | 
				
			||||||
 | 
							prevText: '«Førre', | 
				
			||||||
 | 
							nextText: 'Neste»', | 
				
			||||||
 | 
							currentText: 'I dag', | 
				
			||||||
 | 
							monthNames: ['januar','februar','mars','april','mai','juni','juli','august','september','oktober','november','desember'], | 
				
			||||||
 | 
							monthNamesShort: ['jan','feb','mar','apr','mai','jun','jul','aug','sep','okt','nov','des'], | 
				
			||||||
 | 
							dayNamesShort: ['sun','mån','tys','ons','tor','fre','lau'], | 
				
			||||||
 | 
							dayNames: ['sundag','måndag','tysdag','onsdag','torsdag','fredag','laurdag'], | 
				
			||||||
 | 
							dayNamesMin: ['su','må','ty','on','to','fr','la'], | 
				
			||||||
 | 
							weekHeader: 'Veke', | 
				
			||||||
 | 
							dateFormat: 'dd.mm.yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: '' | 
				
			||||||
 | 
						}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['nn']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Norwegian initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Naimdjon Takhirov (naimdjon@gmail.com). */ | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['no'] = { | 
				
			||||||
 | 
							closeText: 'Lukk', | 
				
			||||||
 | 
							prevText: '«Forrige', | 
				
			||||||
 | 
							nextText: 'Neste»', | 
				
			||||||
 | 
							currentText: 'I dag', | 
				
			||||||
 | 
							monthNames: ['januar','februar','mars','april','mai','juni','juli','august','september','oktober','november','desember'], | 
				
			||||||
 | 
							monthNamesShort: ['jan','feb','mar','apr','mai','jun','jul','aug','sep','okt','nov','des'], | 
				
			||||||
 | 
							dayNamesShort: ['søn','man','tir','ons','tor','fre','lør'], | 
				
			||||||
 | 
							dayNames: ['søndag','mandag','tirsdag','onsdag','torsdag','fredag','lørdag'], | 
				
			||||||
 | 
							dayNamesMin: ['sø','ma','ti','on','to','fr','lø'], | 
				
			||||||
 | 
							weekHeader: 'Uke', | 
				
			||||||
 | 
							dateFormat: 'dd.mm.yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: '' | 
				
			||||||
 | 
						}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['no']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Polish initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Jacek Wysocki (jacek.wysocki@gmail.com). */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['pl'] = { | 
				
			||||||
 | 
							closeText: 'Zamknij', | 
				
			||||||
 | 
							prevText: '<Poprzedni', | 
				
			||||||
 | 
							nextText: 'Następny>', | 
				
			||||||
 | 
							currentText: 'Dziś', | 
				
			||||||
 | 
							monthNames: ['Styczeń','Luty','Marzec','Kwiecień','Maj','Czerwiec', | 
				
			||||||
 | 
							'Lipiec','Sierpień','Wrzesień','Październik','Listopad','Grudzień'], | 
				
			||||||
 | 
							monthNamesShort: ['Sty','Lu','Mar','Kw','Maj','Cze', | 
				
			||||||
 | 
							'Lip','Sie','Wrz','Pa','Lis','Gru'], | 
				
			||||||
 | 
							dayNames: ['Niedziela','Poniedziałek','Wtorek','Środa','Czwartek','Piątek','Sobota'], | 
				
			||||||
 | 
							dayNamesShort: ['Nie','Pn','Wt','Śr','Czw','Pt','So'], | 
				
			||||||
 | 
							dayNamesMin: ['N','Pn','Wt','Śr','Cz','Pt','So'], | 
				
			||||||
 | 
							weekHeader: 'Tydz', | 
				
			||||||
 | 
							dateFormat: 'dd.mm.yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['pl']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Brazilian initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Leonildo Costa Silva (leocsilva@gmail.com). */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['pt-BR'] = { | 
				
			||||||
 | 
							closeText: 'Fechar', | 
				
			||||||
 | 
							prevText: '<Anterior', | 
				
			||||||
 | 
							nextText: 'Próximo>', | 
				
			||||||
 | 
							currentText: 'Hoje', | 
				
			||||||
 | 
							monthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho', | 
				
			||||||
 | 
							'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'], | 
				
			||||||
 | 
							monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun', | 
				
			||||||
 | 
							'Jul','Ago','Set','Out','Nov','Dez'], | 
				
			||||||
 | 
							dayNames: ['Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sábado'], | 
				
			||||||
 | 
							dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'], | 
				
			||||||
 | 
							dayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'], | 
				
			||||||
 | 
							weekHeader: 'Sm', | 
				
			||||||
 | 
							dateFormat: 'dd/mm/yy', | 
				
			||||||
 | 
							firstDay: 0, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['pt-BR']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,22 @@ | 
				
			|||||||
 | 
					/* Portuguese initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['pt'] = { | 
				
			||||||
 | 
							closeText: 'Fechar', | 
				
			||||||
 | 
							prevText: '<Anterior', | 
				
			||||||
 | 
							nextText: 'Seguinte', | 
				
			||||||
 | 
							currentText: 'Hoje', | 
				
			||||||
 | 
							monthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho', | 
				
			||||||
 | 
							'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'], | 
				
			||||||
 | 
							monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun', | 
				
			||||||
 | 
							'Jul','Ago','Set','Out','Nov','Dez'], | 
				
			||||||
 | 
							dayNames: ['Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sábado'], | 
				
			||||||
 | 
							dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'], | 
				
			||||||
 | 
							dayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'], | 
				
			||||||
 | 
							weekHeader: 'Sem', | 
				
			||||||
 | 
							dateFormat: 'dd/mm/yy', | 
				
			||||||
 | 
							firstDay: 0, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['pt']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,21 @@ | 
				
			|||||||
 | 
					/* Romansh initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Yvonne Gienal (yvonne.gienal@educa.ch). */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['rm'] = { | 
				
			||||||
 | 
							closeText: 'Serrar', | 
				
			||||||
 | 
							prevText: '<Suandant', | 
				
			||||||
 | 
							nextText: 'Precedent>', | 
				
			||||||
 | 
							currentText: 'Actual', | 
				
			||||||
 | 
							monthNames: ['Schaner','Favrer','Mars','Avrigl','Matg','Zercladur', 'Fanadur','Avust','Settember','October','November','December'], | 
				
			||||||
 | 
							monthNamesShort: ['Scha','Fev','Mar','Avr','Matg','Zer', 'Fan','Avu','Sett','Oct','Nov','Dec'], | 
				
			||||||
 | 
							dayNames: ['Dumengia','Glindesdi','Mardi','Mesemna','Gievgia','Venderdi','Sonda'], | 
				
			||||||
 | 
							dayNamesShort: ['Dum','Gli','Mar','Mes','Gie','Ven','Som'], | 
				
			||||||
 | 
							dayNamesMin: ['Du','Gl','Ma','Me','Gi','Ve','So'], | 
				
			||||||
 | 
							weekHeader: 'emna', | 
				
			||||||
 | 
							dateFormat: 'dd/mm/yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['rm']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,26 @@ | 
				
			|||||||
 | 
					/* Romanian initialisation for the jQuery UI date picker plugin. | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * Written by Edmond L. (ll_edmond@walla.com) | 
				
			||||||
 | 
					 * and Ionut G. Stan (ionut.g.stan@gmail.com) | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['ro'] = { | 
				
			||||||
 | 
							closeText: 'Închide', | 
				
			||||||
 | 
							prevText: '« Luna precedentă', | 
				
			||||||
 | 
							nextText: 'Luna următoare »', | 
				
			||||||
 | 
							currentText: 'Azi', | 
				
			||||||
 | 
							monthNames: ['Ianuarie','Februarie','Martie','Aprilie','Mai','Iunie', | 
				
			||||||
 | 
							'Iulie','August','Septembrie','Octombrie','Noiembrie','Decembrie'], | 
				
			||||||
 | 
							monthNamesShort: ['Ian', 'Feb', 'Mar', 'Apr', 'Mai', 'Iun', | 
				
			||||||
 | 
							'Iul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], | 
				
			||||||
 | 
							dayNames: ['Duminică', 'Luni', 'Marţi', 'Miercuri', 'Joi', 'Vineri', 'Sâmbătă'], | 
				
			||||||
 | 
							dayNamesShort: ['Dum', 'Lun', 'Mar', 'Mie', 'Joi', 'Vin', 'Sâm'], | 
				
			||||||
 | 
							dayNamesMin: ['Du','Lu','Ma','Mi','Jo','Vi','Sâ'], | 
				
			||||||
 | 
							weekHeader: 'Săpt', | 
				
			||||||
 | 
							dateFormat: 'dd.mm.yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['ro']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Russian (UTF-8) initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Andrew Stromnov (stromnov@gmail.com). */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['ru'] = { | 
				
			||||||
 | 
							closeText: 'Закрыть', | 
				
			||||||
 | 
							prevText: '<Пред', | 
				
			||||||
 | 
							nextText: 'След>', | 
				
			||||||
 | 
							currentText: 'Сегодня', | 
				
			||||||
 | 
							monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь', | 
				
			||||||
 | 
							'Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'], | 
				
			||||||
 | 
							monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн', | 
				
			||||||
 | 
							'Июл','Авг','Сен','Окт','Ноя','Дек'], | 
				
			||||||
 | 
							dayNames: ['воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'], | 
				
			||||||
 | 
							dayNamesShort: ['вск','пнд','втр','срд','чтв','птн','сбт'], | 
				
			||||||
 | 
							dayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'], | 
				
			||||||
 | 
							weekHeader: 'Нед', | 
				
			||||||
 | 
							dateFormat: 'dd.mm.yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['ru']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Slovak initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Vojtech Rinik (vojto@hmm.sk). */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['sk'] = { | 
				
			||||||
 | 
							closeText: 'Zavrieť', | 
				
			||||||
 | 
							prevText: '<Predchádzajúci', | 
				
			||||||
 | 
							nextText: 'Nasledujúci>', | 
				
			||||||
 | 
							currentText: 'Dnes', | 
				
			||||||
 | 
							monthNames: ['január','február','marec','apríl','máj','jún', | 
				
			||||||
 | 
							'júl','august','september','október','november','december'], | 
				
			||||||
 | 
							monthNamesShort: ['Jan','Feb','Mar','Apr','Máj','Jún', | 
				
			||||||
 | 
							'Júl','Aug','Sep','Okt','Nov','Dec'], | 
				
			||||||
 | 
							dayNames: ['nedeľa','pondelok','utorok','streda','štvrtok','piatok','sobota'], | 
				
			||||||
 | 
							dayNamesShort: ['Ned','Pon','Uto','Str','Štv','Pia','Sob'], | 
				
			||||||
 | 
							dayNamesMin: ['Ne','Po','Ut','St','Št','Pia','So'], | 
				
			||||||
 | 
							weekHeader: 'Ty', | 
				
			||||||
 | 
							dateFormat: 'dd.mm.yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['sk']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,24 @@ | 
				
			|||||||
 | 
					/* Slovenian initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Jaka Jancar (jaka@kubje.org). */ | 
				
			||||||
 | 
					/* c = č, s = š z = ž C = Č S = Š Z = Ž */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['sl'] = { | 
				
			||||||
 | 
							closeText: 'Zapri', | 
				
			||||||
 | 
							prevText: '<Prejšnji', | 
				
			||||||
 | 
							nextText: 'Naslednji>', | 
				
			||||||
 | 
							currentText: 'Trenutni', | 
				
			||||||
 | 
							monthNames: ['Januar','Februar','Marec','April','Maj','Junij', | 
				
			||||||
 | 
							'Julij','Avgust','September','Oktober','November','December'], | 
				
			||||||
 | 
							monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', | 
				
			||||||
 | 
							'Jul','Avg','Sep','Okt','Nov','Dec'], | 
				
			||||||
 | 
							dayNames: ['Nedelja','Ponedeljek','Torek','Sreda','Četrtek','Petek','Sobota'], | 
				
			||||||
 | 
							dayNamesShort: ['Ned','Pon','Tor','Sre','Čet','Pet','Sob'], | 
				
			||||||
 | 
							dayNamesMin: ['Ne','Po','To','Sr','Če','Pe','So'], | 
				
			||||||
 | 
							weekHeader: 'Teden', | 
				
			||||||
 | 
							dateFormat: 'dd.mm.yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['sl']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Albanian initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Flakron Bytyqi (flakron@gmail.com). */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['sq'] = { | 
				
			||||||
 | 
							closeText: 'mbylle', | 
				
			||||||
 | 
							prevText: '<mbrapa', | 
				
			||||||
 | 
							nextText: 'Përpara>', | 
				
			||||||
 | 
							currentText: 'sot', | 
				
			||||||
 | 
							monthNames: ['Janar','Shkurt','Mars','Prill','Maj','Qershor', | 
				
			||||||
 | 
							'Korrik','Gusht','Shtator','Tetor','Nëntor','Dhjetor'], | 
				
			||||||
 | 
							monthNamesShort: ['Jan','Shk','Mar','Pri','Maj','Qer', | 
				
			||||||
 | 
							'Kor','Gus','Sht','Tet','Nën','Dhj'], | 
				
			||||||
 | 
							dayNames: ['E Diel','E Hënë','E Martë','E Mërkurë','E Enjte','E Premte','E Shtune'], | 
				
			||||||
 | 
							dayNamesShort: ['Di','Hë','Ma','Më','En','Pr','Sh'], | 
				
			||||||
 | 
							dayNamesMin: ['Di','Hë','Ma','Më','En','Pr','Sh'], | 
				
			||||||
 | 
							weekHeader: 'Ja', | 
				
			||||||
 | 
							dateFormat: 'dd.mm.yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['sq']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Serbian i18n for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Dejan Dimić. */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['sr-SR'] = { | 
				
			||||||
 | 
							closeText: 'Zatvori', | 
				
			||||||
 | 
							prevText: '<', | 
				
			||||||
 | 
							nextText: '>', | 
				
			||||||
 | 
							currentText: 'Danas', | 
				
			||||||
 | 
							monthNames: ['Januar','Februar','Mart','April','Maj','Jun', | 
				
			||||||
 | 
							'Jul','Avgust','Septembar','Oktobar','Novembar','Decembar'], | 
				
			||||||
 | 
							monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', | 
				
			||||||
 | 
							'Jul','Avg','Sep','Okt','Nov','Dec'], | 
				
			||||||
 | 
							dayNames: ['Nedelja','Ponedeljak','Utorak','Sreda','Četvrtak','Petak','Subota'], | 
				
			||||||
 | 
							dayNamesShort: ['Ned','Pon','Uto','Sre','Čet','Pet','Sub'], | 
				
			||||||
 | 
							dayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'], | 
				
			||||||
 | 
							weekHeader: 'Sed', | 
				
			||||||
 | 
							dateFormat: 'dd.mm.yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['sr-SR']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Serbian i18n for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Dejan Dimić. */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['sr'] = { | 
				
			||||||
 | 
							closeText: 'Затвори', | 
				
			||||||
 | 
							prevText: '<', | 
				
			||||||
 | 
							nextText: '>', | 
				
			||||||
 | 
							currentText: 'Данас', | 
				
			||||||
 | 
							monthNames: ['Јануар','Фебруар','Март','Април','Мај','Јун', | 
				
			||||||
 | 
							'Јул','Август','Септембар','Октобар','Новембар','Децембар'], | 
				
			||||||
 | 
							monthNamesShort: ['Јан','Феб','Мар','Апр','Мај','Јун', | 
				
			||||||
 | 
							'Јул','Авг','Сеп','Окт','Нов','Дец'], | 
				
			||||||
 | 
							dayNames: ['Недеља','Понедељак','Уторак','Среда','Четвртак','Петак','Субота'], | 
				
			||||||
 | 
							dayNamesShort: ['Нед','Пон','Уто','Сре','Чет','Пет','Суб'], | 
				
			||||||
 | 
							dayNamesMin: ['Не','По','Ут','Ср','Че','Пе','Су'], | 
				
			||||||
 | 
							weekHeader: 'Сед', | 
				
			||||||
 | 
							dateFormat: 'dd.mm.yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['sr']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Swedish initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Anders Ekdahl ( anders@nomadiz.se). */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['sv'] = { | 
				
			||||||
 | 
							closeText: 'Stäng', | 
				
			||||||
 | 
							prevText: '«Förra', | 
				
			||||||
 | 
							nextText: 'Nästa»', | 
				
			||||||
 | 
							currentText: 'Idag', | 
				
			||||||
 | 
							monthNames: ['Januari','Februari','Mars','April','Maj','Juni', | 
				
			||||||
 | 
							'Juli','Augusti','September','Oktober','November','December'], | 
				
			||||||
 | 
							monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', | 
				
			||||||
 | 
							'Jul','Aug','Sep','Okt','Nov','Dec'], | 
				
			||||||
 | 
							dayNamesShort: ['Sön','Mån','Tis','Ons','Tor','Fre','Lör'], | 
				
			||||||
 | 
							dayNames: ['Söndag','Måndag','Tisdag','Onsdag','Torsdag','Fredag','Lördag'], | 
				
			||||||
 | 
							dayNamesMin: ['Sö','Må','Ti','On','To','Fr','Lö'], | 
				
			||||||
 | 
							weekHeader: 'Ve', | 
				
			||||||
 | 
							dateFormat: 'yy-mm-dd', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['sv']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Tajiki (UTF-8) initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Abdurahmon Saidov (saidovab@gmail.com). */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['tj'] = { | 
				
			||||||
 | 
							closeText: 'Идома', | 
				
			||||||
 | 
							prevText: '<Қафо', | 
				
			||||||
 | 
							nextText: 'Пеш>', | 
				
			||||||
 | 
							currentText: 'Имрӯз', | 
				
			||||||
 | 
							monthNames: ['Январ','Феврал','Март','Апрел','Май','Июн', | 
				
			||||||
 | 
							'Июл','Август','Сентябр','Октябр','Ноябр','Декабр'], | 
				
			||||||
 | 
							monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн', | 
				
			||||||
 | 
							'Июл','Авг','Сен','Окт','Ноя','Дек'], | 
				
			||||||
 | 
							dayNames: ['якшанбе','душанбе','сешанбе','чоршанбе','панҷшанбе','ҷумъа','шанбе'], | 
				
			||||||
 | 
							dayNamesShort: ['якш','душ','сеш','чор','пан','ҷум','шан'], | 
				
			||||||
 | 
							dayNamesMin: ['Як','Дш','Сш','Чш','Пш','Ҷм','Шн'], | 
				
			||||||
 | 
							weekHeader: 'Хф', | 
				
			||||||
 | 
							dateFormat: 'dd.mm.yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['tj']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Turkish initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Izzet Emre Erkan (kara@karalamalar.net). */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['tr'] = { | 
				
			||||||
 | 
							closeText: 'kapat', | 
				
			||||||
 | 
							prevText: '<geri', | 
				
			||||||
 | 
							nextText: 'ileri>', | 
				
			||||||
 | 
							currentText: 'bugün', | 
				
			||||||
 | 
							monthNames: ['Ocak','Şubat','Mart','Nisan','Mayıs','Haziran', | 
				
			||||||
 | 
							'Temmuz','Ağustos','Eylül','Ekim','Kasım','Aralık'], | 
				
			||||||
 | 
							monthNamesShort: ['Oca','Şub','Mar','Nis','May','Haz', | 
				
			||||||
 | 
							'Tem','Ağu','Eyl','Eki','Kas','Ara'], | 
				
			||||||
 | 
							dayNames: ['Pazar','Pazartesi','Salı','Çarşamba','Perşembe','Cuma','Cumartesi'], | 
				
			||||||
 | 
							dayNamesShort: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'], | 
				
			||||||
 | 
							dayNamesMin: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'], | 
				
			||||||
 | 
							weekHeader: 'Hf', | 
				
			||||||
 | 
							dateFormat: 'dd.mm.yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['tr']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,24 @@ | 
				
			|||||||
 | 
					/* Ukrainian (UTF-8) initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Maxim Drogobitskiy (maxdao@gmail.com). */ | 
				
			||||||
 | 
					/* Corrected by Igor Milla (igor.fsp.milla@gmail.com). */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['uk'] = { | 
				
			||||||
 | 
							closeText: 'Закрити', | 
				
			||||||
 | 
							prevText: '<', | 
				
			||||||
 | 
							nextText: '>', | 
				
			||||||
 | 
							currentText: 'Сьогодні', | 
				
			||||||
 | 
							monthNames: ['Січень','Лютий','Березень','Квітень','Травень','Червень', | 
				
			||||||
 | 
							'Липень','Серпень','Вересень','Жовтень','Листопад','Грудень'], | 
				
			||||||
 | 
							monthNamesShort: ['Січ','Лют','Бер','Кві','Тра','Чер', | 
				
			||||||
 | 
							'Лип','Сер','Вер','Жов','Лис','Гру'], | 
				
			||||||
 | 
							dayNames: ['неділя','понеділок','вівторок','середа','четвер','п’ятниця','субота'], | 
				
			||||||
 | 
							dayNamesShort: ['нед','пнд','вів','срд','чтв','птн','сбт'], | 
				
			||||||
 | 
							dayNamesMin: ['Нд','Пн','Вт','Ср','Чт','Пт','Сб'], | 
				
			||||||
 | 
							weekHeader: 'Тиж', | 
				
			||||||
 | 
							dateFormat: 'dd/mm/yy', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['uk']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Vietnamese initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Translated by Le Thanh Huy (lthanhhuy@cit.ctu.edu.vn). */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['vi'] = { | 
				
			||||||
 | 
							closeText: 'Đóng', | 
				
			||||||
 | 
							prevText: '<Trước', | 
				
			||||||
 | 
							nextText: 'Tiếp>', | 
				
			||||||
 | 
							currentText: 'Hôm nay', | 
				
			||||||
 | 
							monthNames: ['Tháng Một', 'Tháng Hai', 'Tháng Ba', 'Tháng Tư', 'Tháng Năm', 'Tháng Sáu', | 
				
			||||||
 | 
							'Tháng Bảy', 'Tháng Tám', 'Tháng Chín', 'Tháng Mười', 'Tháng Mười Một', 'Tháng Mười Hai'], | 
				
			||||||
 | 
							monthNamesShort: ['Tháng 1', 'Tháng 2', 'Tháng 3', 'Tháng 4', 'Tháng 5', 'Tháng 6', | 
				
			||||||
 | 
							'Tháng 7', 'Tháng 8', 'Tháng 9', 'Tháng 10', 'Tháng 11', 'Tháng 12'], | 
				
			||||||
 | 
							dayNames: ['Chủ Nhật', 'Thứ Hai', 'Thứ Ba', 'Thứ Tư', 'Thứ Năm', 'Thứ Sáu', 'Thứ Bảy'], | 
				
			||||||
 | 
							dayNamesShort: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'], | 
				
			||||||
 | 
							dayNamesMin: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'], | 
				
			||||||
 | 
							weekHeader: 'Tu', | 
				
			||||||
 | 
							dateFormat: 'dd/mm/yy', | 
				
			||||||
 | 
							firstDay: 0, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: false, | 
				
			||||||
 | 
							yearSuffix: ''}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['vi']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Chinese initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Cloudream (cloudream@gmail.com). */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['zh-CN'] = { | 
				
			||||||
 | 
							closeText: '关闭', | 
				
			||||||
 | 
							prevText: '<上月', | 
				
			||||||
 | 
							nextText: '下月>', | 
				
			||||||
 | 
							currentText: '今天', | 
				
			||||||
 | 
							monthNames: ['一月','二月','三月','四月','五月','六月', | 
				
			||||||
 | 
							'七月','八月','九月','十月','十一月','十二月'], | 
				
			||||||
 | 
							monthNamesShort: ['一月','二月','三月','四月','五月','六月', | 
				
			||||||
 | 
							'七月','八月','九月','十月','十一月','十二月'], | 
				
			||||||
 | 
							dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'], | 
				
			||||||
 | 
							dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'], | 
				
			||||||
 | 
							dayNamesMin: ['日','一','二','三','四','五','六'], | 
				
			||||||
 | 
							weekHeader: '周', | 
				
			||||||
 | 
							dateFormat: 'yy-mm-dd', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: true, | 
				
			||||||
 | 
							yearSuffix: '年'}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['zh-CN']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Chinese initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by SCCY (samuelcychan@gmail.com). */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['zh-HK'] = { | 
				
			||||||
 | 
							closeText: '關閉', | 
				
			||||||
 | 
							prevText: '<上月', | 
				
			||||||
 | 
							nextText: '下月>', | 
				
			||||||
 | 
							currentText: '今天', | 
				
			||||||
 | 
							monthNames: ['一月','二月','三月','四月','五月','六月', | 
				
			||||||
 | 
							'七月','八月','九月','十月','十一月','十二月'], | 
				
			||||||
 | 
							monthNamesShort: ['一月','二月','三月','四月','五月','六月', | 
				
			||||||
 | 
							'七月','八月','九月','十月','十一月','十二月'], | 
				
			||||||
 | 
							dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'], | 
				
			||||||
 | 
							dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'], | 
				
			||||||
 | 
							dayNamesMin: ['日','一','二','三','四','五','六'], | 
				
			||||||
 | 
							weekHeader: '周', | 
				
			||||||
 | 
							dateFormat: 'dd-mm-yy', | 
				
			||||||
 | 
							firstDay: 0, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: true, | 
				
			||||||
 | 
							yearSuffix: '年'}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['zh-HK']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,23 @@ | 
				
			|||||||
 | 
					/* Chinese initialisation for the jQuery UI date picker plugin. */ | 
				
			||||||
 | 
					/* Written by Ressol (ressol@gmail.com). */ | 
				
			||||||
 | 
					jQuery(function($){ | 
				
			||||||
 | 
						$.datepicker.regional['zh-TW'] = { | 
				
			||||||
 | 
							closeText: '關閉', | 
				
			||||||
 | 
							prevText: '<上月', | 
				
			||||||
 | 
							nextText: '下月>', | 
				
			||||||
 | 
							currentText: '今天', | 
				
			||||||
 | 
							monthNames: ['一月','二月','三月','四月','五月','六月', | 
				
			||||||
 | 
							'七月','八月','九月','十月','十一月','十二月'], | 
				
			||||||
 | 
							monthNamesShort: ['一月','二月','三月','四月','五月','六月', | 
				
			||||||
 | 
							'七月','八月','九月','十月','十一月','十二月'], | 
				
			||||||
 | 
							dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'], | 
				
			||||||
 | 
							dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'], | 
				
			||||||
 | 
							dayNamesMin: ['日','一','二','三','四','五','六'], | 
				
			||||||
 | 
							weekHeader: '周', | 
				
			||||||
 | 
							dateFormat: 'yy/mm/dd', | 
				
			||||||
 | 
							firstDay: 1, | 
				
			||||||
 | 
							isRTL: false, | 
				
			||||||
 | 
							showMonthAfterYear: true, | 
				
			||||||
 | 
							yearSuffix: '年'}; | 
				
			||||||
 | 
						$.datepicker.setDefaults($.datepicker.regional['zh-TW']); | 
				
			||||||
 | 
					}); | 
				
			||||||
@ -0,0 +1,572 @@ | 
				
			|||||||
 | 
					/*! | 
				
			||||||
 | 
					 * jQuery UI Accordion 1.10.3 | 
				
			||||||
 | 
					 * http://jqueryui.com
 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * Copyright 2013 jQuery Foundation and other contributors | 
				
			||||||
 | 
					 * Released under the MIT license. | 
				
			||||||
 | 
					 * http://jquery.org/license
 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * http://api.jqueryui.com/accordion/
 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * Depends: | 
				
			||||||
 | 
					 *	jquery.ui.core.js | 
				
			||||||
 | 
					 *	jquery.ui.widget.js | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					(function( $, undefined ) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var uid = 0, | 
				
			||||||
 | 
						hideProps = {}, | 
				
			||||||
 | 
						showProps = {}; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					hideProps.height = hideProps.paddingTop = hideProps.paddingBottom = | 
				
			||||||
 | 
						hideProps.borderTopWidth = hideProps.borderBottomWidth = "hide"; | 
				
			||||||
 | 
					showProps.height = showProps.paddingTop = showProps.paddingBottom = | 
				
			||||||
 | 
						showProps.borderTopWidth = showProps.borderBottomWidth = "show"; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$.widget( "ui.accordion", { | 
				
			||||||
 | 
						version: "1.10.3", | 
				
			||||||
 | 
						options: { | 
				
			||||||
 | 
							active: 0, | 
				
			||||||
 | 
							animate: {}, | 
				
			||||||
 | 
							collapsible: false, | 
				
			||||||
 | 
							event: "click", | 
				
			||||||
 | 
							header: "> li > :first-child,> :not(li):even", | 
				
			||||||
 | 
							heightStyle: "auto", | 
				
			||||||
 | 
							icons: { | 
				
			||||||
 | 
								activeHeader: "ui-icon-triangle-1-s", | 
				
			||||||
 | 
								header: "ui-icon-triangle-1-e" | 
				
			||||||
 | 
							}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// callbacks
 | 
				
			||||||
 | 
							activate: null, | 
				
			||||||
 | 
							beforeActivate: null | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_create: function() { | 
				
			||||||
 | 
							var options = this.options; | 
				
			||||||
 | 
							this.prevShow = this.prevHide = $(); | 
				
			||||||
 | 
							this.element.addClass( "ui-accordion ui-widget ui-helper-reset" ) | 
				
			||||||
 | 
								// ARIA
 | 
				
			||||||
 | 
								.attr( "role", "tablist" ); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// don't allow collapsible: false and active: false / null
 | 
				
			||||||
 | 
							if ( !options.collapsible && (options.active === false || options.active == null) ) { | 
				
			||||||
 | 
								options.active = 0; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this._processPanels(); | 
				
			||||||
 | 
							// handle negative values
 | 
				
			||||||
 | 
							if ( options.active < 0 ) { | 
				
			||||||
 | 
								options.active += this.headers.length; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							this._refresh(); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_getCreateEventData: function() { | 
				
			||||||
 | 
							return { | 
				
			||||||
 | 
								header: this.active, | 
				
			||||||
 | 
								panel: !this.active.length ? $() : this.active.next(), | 
				
			||||||
 | 
								content: !this.active.length ? $() : this.active.next() | 
				
			||||||
 | 
							}; | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_createIcons: function() { | 
				
			||||||
 | 
							var icons = this.options.icons; | 
				
			||||||
 | 
							if ( icons ) { | 
				
			||||||
 | 
								$( "<span>" ) | 
				
			||||||
 | 
									.addClass( "ui-accordion-header-icon ui-icon " + icons.header ) | 
				
			||||||
 | 
									.prependTo( this.headers ); | 
				
			||||||
 | 
								this.active.children( ".ui-accordion-header-icon" ) | 
				
			||||||
 | 
									.removeClass( icons.header ) | 
				
			||||||
 | 
									.addClass( icons.activeHeader ); | 
				
			||||||
 | 
								this.headers.addClass( "ui-accordion-icons" ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_destroyIcons: function() { | 
				
			||||||
 | 
							this.headers | 
				
			||||||
 | 
								.removeClass( "ui-accordion-icons" ) | 
				
			||||||
 | 
								.children( ".ui-accordion-header-icon" ) | 
				
			||||||
 | 
									.remove(); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_destroy: function() { | 
				
			||||||
 | 
							var contents; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// clean up main element
 | 
				
			||||||
 | 
							this.element | 
				
			||||||
 | 
								.removeClass( "ui-accordion ui-widget ui-helper-reset" ) | 
				
			||||||
 | 
								.removeAttr( "role" ); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// clean up headers
 | 
				
			||||||
 | 
							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() { | 
				
			||||||
 | 
									if ( /^ui-accordion/.test( this.id ) ) { | 
				
			||||||
 | 
										this.removeAttribute( "id" ); | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
								}); | 
				
			||||||
 | 
							this._destroyIcons(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// clean up content panels
 | 
				
			||||||
 | 
							contents = 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() { | 
				
			||||||
 | 
									if ( /^ui-accordion/.test( this.id ) ) { | 
				
			||||||
 | 
										this.removeAttribute( "id" ); | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
								}); | 
				
			||||||
 | 
							if ( this.options.heightStyle !== "content" ) { | 
				
			||||||
 | 
								contents.css( "height", "" ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_setOption: function( key, value ) { | 
				
			||||||
 | 
							if ( key === "active" ) { | 
				
			||||||
 | 
								// _activate() will handle invalid values and update this.options
 | 
				
			||||||
 | 
								this._activate( value ); | 
				
			||||||
 | 
								return; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( key === "event" ) { | 
				
			||||||
 | 
								if ( this.options.event ) { | 
				
			||||||
 | 
									this._off( this.headers, this.options.event ); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
								this._setupEvents( value ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this._super( key, value ); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// setting collapsible: false while collapsed; open first panel
 | 
				
			||||||
 | 
							if ( key === "collapsible" && !value && this.options.active === false ) { | 
				
			||||||
 | 
								this._activate( 0 ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( key === "icons" ) { | 
				
			||||||
 | 
								this._destroyIcons(); | 
				
			||||||
 | 
								if ( value ) { | 
				
			||||||
 | 
									this._createIcons(); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// #5332 - opacity doesn't cascade to positioned elements in IE
 | 
				
			||||||
 | 
							// so we need to add the disabled class to the headers and panels
 | 
				
			||||||
 | 
							if ( key === "disabled" ) { | 
				
			||||||
 | 
								this.headers.add( this.headers.next() ) | 
				
			||||||
 | 
									.toggleClass( "ui-state-disabled", !!value ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_keydown: function( event ) { | 
				
			||||||
 | 
							/*jshint maxcomplexity:15*/ | 
				
			||||||
 | 
							if ( event.altKey || event.ctrlKey ) { | 
				
			||||||
 | 
								return; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							var keyCode = $.ui.keyCode, | 
				
			||||||
 | 
								length = this.headers.length, | 
				
			||||||
 | 
								currentIndex = this.headers.index( event.target ), | 
				
			||||||
 | 
								toFocus = false; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							switch ( event.keyCode ) { | 
				
			||||||
 | 
								case keyCode.RIGHT: | 
				
			||||||
 | 
								case keyCode.DOWN: | 
				
			||||||
 | 
									toFocus = this.headers[ ( currentIndex + 1 ) % length ]; | 
				
			||||||
 | 
									break; | 
				
			||||||
 | 
								case keyCode.LEFT: | 
				
			||||||
 | 
								case keyCode.UP: | 
				
			||||||
 | 
									toFocus = this.headers[ ( currentIndex - 1 + length ) % length ]; | 
				
			||||||
 | 
									break; | 
				
			||||||
 | 
								case keyCode.SPACE: | 
				
			||||||
 | 
								case keyCode.ENTER: | 
				
			||||||
 | 
									this._eventHandler( event ); | 
				
			||||||
 | 
									break; | 
				
			||||||
 | 
								case keyCode.HOME: | 
				
			||||||
 | 
									toFocus = this.headers[ 0 ]; | 
				
			||||||
 | 
									break; | 
				
			||||||
 | 
								case keyCode.END: | 
				
			||||||
 | 
									toFocus = this.headers[ length - 1 ]; | 
				
			||||||
 | 
									break; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( toFocus ) { | 
				
			||||||
 | 
								$( event.target ).attr( "tabIndex", -1 ); | 
				
			||||||
 | 
								$( toFocus ).attr( "tabIndex", 0 ); | 
				
			||||||
 | 
								toFocus.focus(); | 
				
			||||||
 | 
								event.preventDefault(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_panelKeyDown : function( event ) { | 
				
			||||||
 | 
							if ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) { | 
				
			||||||
 | 
								$( event.currentTarget ).prev().focus(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						refresh: function() { | 
				
			||||||
 | 
							var options = this.options; | 
				
			||||||
 | 
							this._processPanels(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// was collapsed or no panel
 | 
				
			||||||
 | 
							if ( ( options.active === false && options.collapsible === true ) || !this.headers.length ) { | 
				
			||||||
 | 
								options.active = false; | 
				
			||||||
 | 
								this.active = $(); | 
				
			||||||
 | 
							// active false only when collapsible is true
 | 
				
			||||||
 | 
							} else if ( options.active === false ) { | 
				
			||||||
 | 
								this._activate( 0 ); | 
				
			||||||
 | 
							// was active, but active panel is gone
 | 
				
			||||||
 | 
							} else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) { | 
				
			||||||
 | 
								// all remaining panel are disabled
 | 
				
			||||||
 | 
								if ( this.headers.length === this.headers.find(".ui-state-disabled").length ) { | 
				
			||||||
 | 
									options.active = false; | 
				
			||||||
 | 
									this.active = $(); | 
				
			||||||
 | 
								// activate previous panel
 | 
				
			||||||
 | 
								} else { | 
				
			||||||
 | 
									this._activate( Math.max( 0, options.active - 1 ) ); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							// was active, active panel still exists
 | 
				
			||||||
 | 
							} else { | 
				
			||||||
 | 
								// make sure active index is correct
 | 
				
			||||||
 | 
								options.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 maxHeight, | 
				
			||||||
 | 
								options = this.options, | 
				
			||||||
 | 
								heightStyle = options.heightStyle, | 
				
			||||||
 | 
								parent = this.element.parent(), | 
				
			||||||
 | 
								accordionId = this.accordionId = "ui-accordion-" + | 
				
			||||||
 | 
									(this.element.attr( "id" ) || ++uid); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this.active = this._findActive( options.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( i ) { | 
				
			||||||
 | 
									var header = $( this ), | 
				
			||||||
 | 
										headerId = header.attr( "id" ), | 
				
			||||||
 | 
										panel = header.next(), | 
				
			||||||
 | 
										panelId = panel.attr( "id" ); | 
				
			||||||
 | 
									if ( !headerId ) { | 
				
			||||||
 | 
										headerId = accordionId + "-header-" + i; | 
				
			||||||
 | 
										header.attr( "id", headerId ); | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
									if ( !panelId ) { | 
				
			||||||
 | 
										panelId = accordionId + "-panel-" + i; | 
				
			||||||
 | 
										panel.attr( "id", panelId ); | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
									header.attr( "aria-controls", panelId ); | 
				
			||||||
 | 
									panel.attr( "aria-labelledby", headerId ); | 
				
			||||||
 | 
								}) | 
				
			||||||
 | 
								.next() | 
				
			||||||
 | 
									.attr( "role", "tabpanel" ); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this.headers | 
				
			||||||
 | 
								.not( this.active ) | 
				
			||||||
 | 
								.attr({ | 
				
			||||||
 | 
									"aria-selected": "false", | 
				
			||||||
 | 
									tabIndex: -1 | 
				
			||||||
 | 
								}) | 
				
			||||||
 | 
								.next() | 
				
			||||||
 | 
									.attr({ | 
				
			||||||
 | 
										"aria-expanded": "false", | 
				
			||||||
 | 
										"aria-hidden": "true" | 
				
			||||||
 | 
									}) | 
				
			||||||
 | 
									.hide(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// make sure at least one header is in the tab order
 | 
				
			||||||
 | 
							if ( !this.active.length ) { | 
				
			||||||
 | 
								this.headers.eq( 0 ).attr( "tabIndex", 0 ); | 
				
			||||||
 | 
							} else { | 
				
			||||||
 | 
								this.active.attr({ | 
				
			||||||
 | 
									"aria-selected": "true", | 
				
			||||||
 | 
									tabIndex: 0 | 
				
			||||||
 | 
								}) | 
				
			||||||
 | 
								.next() | 
				
			||||||
 | 
									.attr({ | 
				
			||||||
 | 
										"aria-expanded": "true", | 
				
			||||||
 | 
										"aria-hidden": "false" | 
				
			||||||
 | 
									}); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this._createIcons(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this._setupEvents( options.event ); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( heightStyle === "fill" ) { | 
				
			||||||
 | 
								maxHeight = parent.height(); | 
				
			||||||
 | 
								this.element.siblings( ":visible" ).each(function() { | 
				
			||||||
 | 
									var elem = $( this ), | 
				
			||||||
 | 
										position = elem.css( "position" ); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									if ( position === "absolute" || position === "fixed" ) { | 
				
			||||||
 | 
										return; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
									maxHeight -= elem.outerHeight( true ); | 
				
			||||||
 | 
								}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								this.headers.each(function() { | 
				
			||||||
 | 
									maxHeight -= $( this ).outerHeight( true ); | 
				
			||||||
 | 
								}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								this.headers.next() | 
				
			||||||
 | 
									.each(function() { | 
				
			||||||
 | 
										$( this ).height( Math.max( 0, maxHeight - | 
				
			||||||
 | 
											$( this ).innerHeight() + $( this ).height() ) ); | 
				
			||||||
 | 
									}) | 
				
			||||||
 | 
									.css( "overflow", "auto" ); | 
				
			||||||
 | 
							} else if ( heightStyle === "auto" ) { | 
				
			||||||
 | 
								maxHeight = 0; | 
				
			||||||
 | 
								this.headers.next() | 
				
			||||||
 | 
									.each(function() { | 
				
			||||||
 | 
										maxHeight = Math.max( maxHeight, $( this ).css( "height", "" ).height() ); | 
				
			||||||
 | 
									}) | 
				
			||||||
 | 
									.height( maxHeight ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_activate: function( index ) { | 
				
			||||||
 | 
							var active = this._findActive( index )[ 0 ]; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// trying to activate the already active panel
 | 
				
			||||||
 | 
							if ( active === this.active[ 0 ] ) { | 
				
			||||||
 | 
								return; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// trying to collapse, simulate a click on the currently active header
 | 
				
			||||||
 | 
							active = active || this.active[ 0 ]; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this._eventHandler({ | 
				
			||||||
 | 
								target: active, | 
				
			||||||
 | 
								currentTarget: active, | 
				
			||||||
 | 
								preventDefault: $.noop | 
				
			||||||
 | 
							}); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_findActive: function( selector ) { | 
				
			||||||
 | 
							return typeof selector === "number" ? this.headers.eq( selector ) : $(); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_setupEvents: function( event ) { | 
				
			||||||
 | 
							var events = { | 
				
			||||||
 | 
								keydown: "_keydown" | 
				
			||||||
 | 
							}; | 
				
			||||||
 | 
							if ( event ) { | 
				
			||||||
 | 
								$.each( event.split(" "), function( index, eventName ) { | 
				
			||||||
 | 
									events[ eventName ] = "_eventHandler"; | 
				
			||||||
 | 
								}); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this._off( this.headers.add( this.headers.next() ) ); | 
				
			||||||
 | 
							this._on( this.headers, events ); | 
				
			||||||
 | 
							this._on( this.headers.next(), { keydown: "_panelKeyDown" }); | 
				
			||||||
 | 
							this._hoverable( this.headers ); | 
				
			||||||
 | 
							this._focusable( this.headers ); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_eventHandler: function( event ) { | 
				
			||||||
 | 
							var options = this.options, | 
				
			||||||
 | 
								active = this.active, | 
				
			||||||
 | 
								clicked = $( event.currentTarget ), | 
				
			||||||
 | 
								clickedIsActive = clicked[ 0 ] === active[ 0 ], | 
				
			||||||
 | 
								collapsing = clickedIsActive && options.collapsible, | 
				
			||||||
 | 
								toShow = collapsing ? $() : clicked.next(), | 
				
			||||||
 | 
								toHide = active.next(), | 
				
			||||||
 | 
								eventData = { | 
				
			||||||
 | 
									oldHeader: active, | 
				
			||||||
 | 
									oldPanel: toHide, | 
				
			||||||
 | 
									newHeader: collapsing ? $() : clicked, | 
				
			||||||
 | 
									newPanel: toShow | 
				
			||||||
 | 
								}; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							event.preventDefault(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( | 
				
			||||||
 | 
									// click on active header, but not collapsible
 | 
				
			||||||
 | 
									( clickedIsActive && !options.collapsible ) || | 
				
			||||||
 | 
									// allow canceling activation
 | 
				
			||||||
 | 
									( this._trigger( "beforeActivate", event, eventData ) === false ) ) { | 
				
			||||||
 | 
								return; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							options.active = collapsing ? false : this.headers.index( clicked ); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// when the call to ._toggle() comes after the class changes
 | 
				
			||||||
 | 
							// it causes a very odd bug in IE 8 (see #6720)
 | 
				
			||||||
 | 
							this.active = clickedIsActive ? $() : clicked; | 
				
			||||||
 | 
							this._toggle( eventData ); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// switch classes
 | 
				
			||||||
 | 
							// corner classes on the previously active header stay after the animation
 | 
				
			||||||
 | 
							active.removeClass( "ui-accordion-header-active ui-state-active" ); | 
				
			||||||
 | 
							if ( options.icons ) { | 
				
			||||||
 | 
								active.children( ".ui-accordion-header-icon" ) | 
				
			||||||
 | 
									.removeClass( options.icons.activeHeader ) | 
				
			||||||
 | 
									.addClass( options.icons.header ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( !clickedIsActive ) { | 
				
			||||||
 | 
								clicked | 
				
			||||||
 | 
									.removeClass( "ui-corner-all" ) | 
				
			||||||
 | 
									.addClass( "ui-accordion-header-active ui-state-active ui-corner-top" ); | 
				
			||||||
 | 
								if ( options.icons ) { | 
				
			||||||
 | 
									clicked.children( ".ui-accordion-header-icon" ) | 
				
			||||||
 | 
										.removeClass( options.icons.header ) | 
				
			||||||
 | 
										.addClass( options.icons.activeHeader ); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								clicked | 
				
			||||||
 | 
									.next() | 
				
			||||||
 | 
									.addClass( "ui-accordion-content-active" ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_toggle: function( data ) { | 
				
			||||||
 | 
							var toShow = data.newPanel, | 
				
			||||||
 | 
								toHide = this.prevShow.length ? this.prevShow : data.oldPanel; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// handle activating a panel during the animation for another activation
 | 
				
			||||||
 | 
							this.prevShow.add( this.prevHide ).stop( true, true ); | 
				
			||||||
 | 
							this.prevShow = toShow; | 
				
			||||||
 | 
							this.prevHide = toHide; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( this.options.animate ) { | 
				
			||||||
 | 
								this._animate( toShow, toHide, data ); | 
				
			||||||
 | 
							} else { | 
				
			||||||
 | 
								toHide.hide(); | 
				
			||||||
 | 
								toShow.show(); | 
				
			||||||
 | 
								this._toggleComplete( data ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							toHide.attr({ | 
				
			||||||
 | 
								"aria-expanded": "false", | 
				
			||||||
 | 
								"aria-hidden": "true" | 
				
			||||||
 | 
							}); | 
				
			||||||
 | 
							toHide.prev().attr( "aria-selected", "false" ); | 
				
			||||||
 | 
							// if we're switching panels, remove the old header from the tab order
 | 
				
			||||||
 | 
							// if we're opening from collapsed state, remove the previous header from the tab order
 | 
				
			||||||
 | 
							// if we're collapsing, then keep the collapsing header in the tab order
 | 
				
			||||||
 | 
							if ( toShow.length && toHide.length ) { | 
				
			||||||
 | 
								toHide.prev().attr( "tabIndex", -1 ); | 
				
			||||||
 | 
							} else if ( toShow.length ) { | 
				
			||||||
 | 
								this.headers.filter(function() { | 
				
			||||||
 | 
									return $( this ).attr( "tabIndex" ) === 0; | 
				
			||||||
 | 
								}) | 
				
			||||||
 | 
								.attr( "tabIndex", -1 ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							toShow | 
				
			||||||
 | 
								.attr({ | 
				
			||||||
 | 
									"aria-expanded": "true", | 
				
			||||||
 | 
									"aria-hidden": "false" | 
				
			||||||
 | 
								}) | 
				
			||||||
 | 
								.prev() | 
				
			||||||
 | 
									.attr({ | 
				
			||||||
 | 
										"aria-selected": "true", | 
				
			||||||
 | 
										tabIndex: 0 | 
				
			||||||
 | 
									}); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_animate: function( toShow, toHide, data ) { | 
				
			||||||
 | 
							var total, easing, duration, | 
				
			||||||
 | 
								that = this, | 
				
			||||||
 | 
								adjust = 0, | 
				
			||||||
 | 
								down = toShow.length && | 
				
			||||||
 | 
									( !toHide.length || ( toShow.index() < toHide.index() ) ), | 
				
			||||||
 | 
								animate = this.options.animate || {}, | 
				
			||||||
 | 
								options = down && animate.down || animate, | 
				
			||||||
 | 
								complete = function() { | 
				
			||||||
 | 
									that._toggleComplete( data ); | 
				
			||||||
 | 
								}; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( typeof options === "number" ) { | 
				
			||||||
 | 
								duration = options; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							if ( typeof options === "string" ) { | 
				
			||||||
 | 
								easing = options; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							// fall back from options to animation in case of partial down settings
 | 
				
			||||||
 | 
							easing = easing || options.easing || animate.easing; | 
				
			||||||
 | 
							duration = duration || options.duration || animate.duration; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( !toHide.length ) { | 
				
			||||||
 | 
								return toShow.animate( showProps, duration, easing, complete ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							if ( !toShow.length ) { | 
				
			||||||
 | 
								return toHide.animate( hideProps, duration, easing, complete ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							total = toShow.show().outerHeight(); | 
				
			||||||
 | 
							toHide.animate( hideProps, { | 
				
			||||||
 | 
								duration: duration, | 
				
			||||||
 | 
								easing: easing, | 
				
			||||||
 | 
								step: function( now, fx ) { | 
				
			||||||
 | 
									fx.now = Math.round( now ); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							}); | 
				
			||||||
 | 
							toShow | 
				
			||||||
 | 
								.hide() | 
				
			||||||
 | 
								.animate( showProps, { | 
				
			||||||
 | 
									duration: duration, | 
				
			||||||
 | 
									easing: easing, | 
				
			||||||
 | 
									complete: complete, | 
				
			||||||
 | 
									step: function( now, fx ) { | 
				
			||||||
 | 
										fx.now = Math.round( now ); | 
				
			||||||
 | 
										if ( fx.prop !== "height" ) { | 
				
			||||||
 | 
											adjust += fx.now; | 
				
			||||||
 | 
										} else if ( that.options.heightStyle !== "content" ) { | 
				
			||||||
 | 
											fx.now = Math.round( total - toHide.outerHeight() - adjust ); | 
				
			||||||
 | 
											adjust = 0; | 
				
			||||||
 | 
										} | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
								}); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_toggleComplete: function( data ) { | 
				
			||||||
 | 
							var toHide = data.oldPanel; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							toHide | 
				
			||||||
 | 
								.removeClass( "ui-accordion-content-active" ) | 
				
			||||||
 | 
								.prev() | 
				
			||||||
 | 
									.removeClass( "ui-corner-top" ) | 
				
			||||||
 | 
									.addClass( "ui-corner-all" ); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Work around for rendering bug in IE (#5421)
 | 
				
			||||||
 | 
							if ( toHide.length ) { | 
				
			||||||
 | 
								toHide.parent()[0].className = toHide.parent()[0].className; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this._trigger( "activate", null, data ); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					})( jQuery ); | 
				
			||||||
@ -0,0 +1,610 @@ | 
				
			|||||||
 | 
					/*! | 
				
			||||||
 | 
					 * jQuery UI Autocomplete 1.10.3 | 
				
			||||||
 | 
					 * http://jqueryui.com
 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * Copyright 2013 jQuery Foundation and other contributors | 
				
			||||||
 | 
					 * Released under the MIT license. | 
				
			||||||
 | 
					 * http://jquery.org/license
 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * http://api.jqueryui.com/autocomplete/
 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * Depends: | 
				
			||||||
 | 
					 *	jquery.ui.core.js | 
				
			||||||
 | 
					 *	jquery.ui.widget.js | 
				
			||||||
 | 
					 *	jquery.ui.position.js | 
				
			||||||
 | 
					 *	jquery.ui.menu.js | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					(function( $, undefined ) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// used to prevent race conditions with remote data sources
 | 
				
			||||||
 | 
					var requestIndex = 0; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$.widget( "ui.autocomplete", { | 
				
			||||||
 | 
						version: "1.10.3", | 
				
			||||||
 | 
						defaultElement: "<input>", | 
				
			||||||
 | 
						options: { | 
				
			||||||
 | 
							appendTo: null, | 
				
			||||||
 | 
							autoFocus: false, | 
				
			||||||
 | 
							delay: 300, | 
				
			||||||
 | 
							minLength: 1, | 
				
			||||||
 | 
							position: { | 
				
			||||||
 | 
								my: "left top", | 
				
			||||||
 | 
								at: "left bottom", | 
				
			||||||
 | 
								collision: "none" | 
				
			||||||
 | 
							}, | 
				
			||||||
 | 
							source: null, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// callbacks
 | 
				
			||||||
 | 
							change: null, | 
				
			||||||
 | 
							close: null, | 
				
			||||||
 | 
							focus: null, | 
				
			||||||
 | 
							open: null, | 
				
			||||||
 | 
							response: null, | 
				
			||||||
 | 
							search: null, | 
				
			||||||
 | 
							select: null | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						pending: 0, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_create: function() { | 
				
			||||||
 | 
							// Some browsers only repeat keydown events, not keypress events,
 | 
				
			||||||
 | 
							// so we use the suppressKeyPress flag to determine if we've already
 | 
				
			||||||
 | 
							// handled the keydown event. #7269
 | 
				
			||||||
 | 
							// Unfortunately the code for & in keypress is the same as the up arrow,
 | 
				
			||||||
 | 
							// so we use the suppressKeyPressRepeat flag to avoid handling keypress
 | 
				
			||||||
 | 
							// events when we know the keydown event was used to modify the
 | 
				
			||||||
 | 
							// search term. #7799
 | 
				
			||||||
 | 
							var suppressKeyPress, suppressKeyPressRepeat, suppressInput, | 
				
			||||||
 | 
								nodeName = this.element[0].nodeName.toLowerCase(), | 
				
			||||||
 | 
								isTextarea = nodeName === "textarea", | 
				
			||||||
 | 
								isInput = nodeName === "input"; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this.isMultiLine = | 
				
			||||||
 | 
								// Textareas are always multi-line
 | 
				
			||||||
 | 
								isTextarea ? true : | 
				
			||||||
 | 
								// Inputs are always single-line, even if inside a contentEditable element
 | 
				
			||||||
 | 
								// IE also treats inputs as contentEditable
 | 
				
			||||||
 | 
								isInput ? false : | 
				
			||||||
 | 
								// All other element types are determined by whether or not they're contentEditable
 | 
				
			||||||
 | 
								this.element.prop( "isContentEditable" ); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this.valueMethod = this.element[ isTextarea || isInput ? "val" : "text" ]; | 
				
			||||||
 | 
							this.isNewMenu = true; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this.element | 
				
			||||||
 | 
								.addClass( "ui-autocomplete-input" ) | 
				
			||||||
 | 
								.attr( "autocomplete", "off" ); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this._on( this.element, { | 
				
			||||||
 | 
								keydown: function( event ) { | 
				
			||||||
 | 
									/*jshint maxcomplexity:15*/ | 
				
			||||||
 | 
									if ( this.element.prop( "readOnly" ) ) { | 
				
			||||||
 | 
										suppressKeyPress = true; | 
				
			||||||
 | 
										suppressInput = true; | 
				
			||||||
 | 
										suppressKeyPressRepeat = true; | 
				
			||||||
 | 
										return; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									suppressKeyPress = false; | 
				
			||||||
 | 
									suppressInput = false; | 
				
			||||||
 | 
									suppressKeyPressRepeat = false; | 
				
			||||||
 | 
									var keyCode = $.ui.keyCode; | 
				
			||||||
 | 
									switch( event.keyCode ) { | 
				
			||||||
 | 
									case keyCode.PAGE_UP: | 
				
			||||||
 | 
										suppressKeyPress = true; | 
				
			||||||
 | 
										this._move( "previousPage", event ); | 
				
			||||||
 | 
										break; | 
				
			||||||
 | 
									case keyCode.PAGE_DOWN: | 
				
			||||||
 | 
										suppressKeyPress = true; | 
				
			||||||
 | 
										this._move( "nextPage", event ); | 
				
			||||||
 | 
										break; | 
				
			||||||
 | 
									case keyCode.UP: | 
				
			||||||
 | 
										suppressKeyPress = true; | 
				
			||||||
 | 
										this._keyEvent( "previous", event ); | 
				
			||||||
 | 
										break; | 
				
			||||||
 | 
									case keyCode.DOWN: | 
				
			||||||
 | 
										suppressKeyPress = true; | 
				
			||||||
 | 
										this._keyEvent( "next", event ); | 
				
			||||||
 | 
										break; | 
				
			||||||
 | 
									case keyCode.ENTER: | 
				
			||||||
 | 
									case keyCode.NUMPAD_ENTER: | 
				
			||||||
 | 
										// when menu is open and has focus
 | 
				
			||||||
 | 
										if ( this.menu.active ) { | 
				
			||||||
 | 
											// #6055 - Opera still allows the keypress to occur
 | 
				
			||||||
 | 
											// which causes forms to submit
 | 
				
			||||||
 | 
											suppressKeyPress = true; | 
				
			||||||
 | 
											event.preventDefault(); | 
				
			||||||
 | 
											this.menu.select( event ); | 
				
			||||||
 | 
										} | 
				
			||||||
 | 
										break; | 
				
			||||||
 | 
									case keyCode.TAB: | 
				
			||||||
 | 
										if ( this.menu.active ) { | 
				
			||||||
 | 
											this.menu.select( event ); | 
				
			||||||
 | 
										} | 
				
			||||||
 | 
										break; | 
				
			||||||
 | 
									case keyCode.ESCAPE: | 
				
			||||||
 | 
										if ( this.menu.element.is( ":visible" ) ) { | 
				
			||||||
 | 
											this._value( this.term ); | 
				
			||||||
 | 
											this.close( event ); | 
				
			||||||
 | 
											// Different browsers have different default behavior for escape
 | 
				
			||||||
 | 
											// Single press can mean undo or clear
 | 
				
			||||||
 | 
											// Double press in IE means clear the whole form
 | 
				
			||||||
 | 
											event.preventDefault(); | 
				
			||||||
 | 
										} | 
				
			||||||
 | 
										break; | 
				
			||||||
 | 
									default: | 
				
			||||||
 | 
										suppressKeyPressRepeat = true; | 
				
			||||||
 | 
										// search timeout should be triggered before the input value is changed
 | 
				
			||||||
 | 
										this._searchTimeout( event ); | 
				
			||||||
 | 
										break; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
								}, | 
				
			||||||
 | 
								keypress: function( event ) { | 
				
			||||||
 | 
									if ( suppressKeyPress ) { | 
				
			||||||
 | 
										suppressKeyPress = false; | 
				
			||||||
 | 
										if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) { | 
				
			||||||
 | 
											event.preventDefault(); | 
				
			||||||
 | 
										} | 
				
			||||||
 | 
										return; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
									if ( suppressKeyPressRepeat ) { | 
				
			||||||
 | 
										return; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									// replicate some key handlers to allow them to repeat in Firefox and Opera
 | 
				
			||||||
 | 
									var keyCode = $.ui.keyCode; | 
				
			||||||
 | 
									switch( event.keyCode ) { | 
				
			||||||
 | 
									case keyCode.PAGE_UP: | 
				
			||||||
 | 
										this._move( "previousPage", event ); | 
				
			||||||
 | 
										break; | 
				
			||||||
 | 
									case keyCode.PAGE_DOWN: | 
				
			||||||
 | 
										this._move( "nextPage", event ); | 
				
			||||||
 | 
										break; | 
				
			||||||
 | 
									case keyCode.UP: | 
				
			||||||
 | 
										this._keyEvent( "previous", event ); | 
				
			||||||
 | 
										break; | 
				
			||||||
 | 
									case keyCode.DOWN: | 
				
			||||||
 | 
										this._keyEvent( "next", event ); | 
				
			||||||
 | 
										break; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
								}, | 
				
			||||||
 | 
								input: function( event ) { | 
				
			||||||
 | 
									if ( suppressInput ) { | 
				
			||||||
 | 
										suppressInput = false; | 
				
			||||||
 | 
										event.preventDefault(); | 
				
			||||||
 | 
										return; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
									this._searchTimeout( event ); | 
				
			||||||
 | 
								}, | 
				
			||||||
 | 
								focus: function() { | 
				
			||||||
 | 
									this.selectedItem = null; | 
				
			||||||
 | 
									this.previous = this._value(); | 
				
			||||||
 | 
								}, | 
				
			||||||
 | 
								blur: function( event ) { | 
				
			||||||
 | 
									if ( this.cancelBlur ) { | 
				
			||||||
 | 
										delete this.cancelBlur; | 
				
			||||||
 | 
										return; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									clearTimeout( this.searching ); | 
				
			||||||
 | 
									this.close( event ); | 
				
			||||||
 | 
									this._change( event ); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this._initSource(); | 
				
			||||||
 | 
							this.menu = $( "<ul>" ) | 
				
			||||||
 | 
								.addClass( "ui-autocomplete ui-front" ) | 
				
			||||||
 | 
								.appendTo( this._appendTo() ) | 
				
			||||||
 | 
								.menu({ | 
				
			||||||
 | 
									// disable ARIA support, the live region takes care of that
 | 
				
			||||||
 | 
									role: null | 
				
			||||||
 | 
								}) | 
				
			||||||
 | 
								.hide() | 
				
			||||||
 | 
								.data( "ui-menu" ); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this._on( this.menu.element, { | 
				
			||||||
 | 
								mousedown: function( event ) { | 
				
			||||||
 | 
									// prevent moving focus out of the text field
 | 
				
			||||||
 | 
									event.preventDefault(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									// IE doesn't prevent moving focus even with event.preventDefault()
 | 
				
			||||||
 | 
									// so we set a flag to know when we should ignore the blur event
 | 
				
			||||||
 | 
									this.cancelBlur = true; | 
				
			||||||
 | 
									this._delay(function() { | 
				
			||||||
 | 
										delete this.cancelBlur; | 
				
			||||||
 | 
									}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									// clicking on the scrollbar causes focus to shift to the body
 | 
				
			||||||
 | 
									// but we can't detect a mouseup or a click immediately afterward
 | 
				
			||||||
 | 
									// so we have to track the next mousedown and close the menu if
 | 
				
			||||||
 | 
									// the user clicks somewhere outside of the autocomplete
 | 
				
			||||||
 | 
									var menuElement = this.menu.element[ 0 ]; | 
				
			||||||
 | 
									if ( !$( event.target ).closest( ".ui-menu-item" ).length ) { | 
				
			||||||
 | 
										this._delay(function() { | 
				
			||||||
 | 
											var that = this; | 
				
			||||||
 | 
											this.document.one( "mousedown", function( event ) { | 
				
			||||||
 | 
												if ( event.target !== that.element[ 0 ] && | 
				
			||||||
 | 
														event.target !== menuElement && | 
				
			||||||
 | 
														!$.contains( menuElement, event.target ) ) { | 
				
			||||||
 | 
													that.close(); | 
				
			||||||
 | 
												} | 
				
			||||||
 | 
											}); | 
				
			||||||
 | 
										}); | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
								}, | 
				
			||||||
 | 
								menufocus: function( event, ui ) { | 
				
			||||||
 | 
									// support: Firefox
 | 
				
			||||||
 | 
									// Prevent accidental activation of menu items in Firefox (#7024 #9118)
 | 
				
			||||||
 | 
									if ( this.isNewMenu ) { | 
				
			||||||
 | 
										this.isNewMenu = false; | 
				
			||||||
 | 
										if ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) { | 
				
			||||||
 | 
											this.menu.blur(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											this.document.one( "mousemove", function() { | 
				
			||||||
 | 
												$( event.target ).trigger( event.originalEvent ); | 
				
			||||||
 | 
											}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											return; | 
				
			||||||
 | 
										} | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									var item = ui.item.data( "ui-autocomplete-item" ); | 
				
			||||||
 | 
									if ( false !== this._trigger( "focus", event, { item: item } ) ) { | 
				
			||||||
 | 
										// use value to match what will end up in the input, if it was a key event
 | 
				
			||||||
 | 
										if ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) { | 
				
			||||||
 | 
											this._value( item.value ); | 
				
			||||||
 | 
										} | 
				
			||||||
 | 
									} else { | 
				
			||||||
 | 
										// Normally the input is populated with the item's value as the
 | 
				
			||||||
 | 
										// menu is navigated, causing screen readers to notice a change and
 | 
				
			||||||
 | 
										// announce the item. Since the focus event was canceled, this doesn't
 | 
				
			||||||
 | 
										// happen, so we update the live region so that screen readers can
 | 
				
			||||||
 | 
										// still notice the change and announce it.
 | 
				
			||||||
 | 
										this.liveRegion.text( item.value ); | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
								}, | 
				
			||||||
 | 
								menuselect: function( event, ui ) { | 
				
			||||||
 | 
									var item = ui.item.data( "ui-autocomplete-item" ), | 
				
			||||||
 | 
										previous = this.previous; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									// only trigger when focus was lost (click on menu)
 | 
				
			||||||
 | 
									if ( this.element[0] !== this.document[0].activeElement ) { | 
				
			||||||
 | 
										this.element.focus(); | 
				
			||||||
 | 
										this.previous = previous; | 
				
			||||||
 | 
										// #6109 - IE triggers two focus events and the second
 | 
				
			||||||
 | 
										// is asynchronous, so we need to reset the previous
 | 
				
			||||||
 | 
										// term synchronously and asynchronously :-(
 | 
				
			||||||
 | 
										this._delay(function() { | 
				
			||||||
 | 
											this.previous = previous; | 
				
			||||||
 | 
											this.selectedItem = item; | 
				
			||||||
 | 
										}); | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									if ( false !== this._trigger( "select", event, { item: item } ) ) { | 
				
			||||||
 | 
										this._value( item.value ); | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
									// reset the term after the select event
 | 
				
			||||||
 | 
									// this allows custom select handling to work properly
 | 
				
			||||||
 | 
									this.term = this._value(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									this.close( event ); | 
				
			||||||
 | 
									this.selectedItem = item; | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this.liveRegion = $( "<span>", { | 
				
			||||||
 | 
									role: "status", | 
				
			||||||
 | 
									"aria-live": "polite" | 
				
			||||||
 | 
								}) | 
				
			||||||
 | 
								.addClass( "ui-helper-hidden-accessible" ) | 
				
			||||||
 | 
								.insertBefore( this.element ); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// turning off autocomplete prevents the browser from remembering the
 | 
				
			||||||
 | 
							// value when navigating through history, so we re-enable autocomplete
 | 
				
			||||||
 | 
							// if the page is unloaded before the widget is destroyed. #7790
 | 
				
			||||||
 | 
							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( key, value ) { | 
				
			||||||
 | 
							this._super( key, value ); | 
				
			||||||
 | 
							if ( key === "source" ) { | 
				
			||||||
 | 
								this._initSource(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							if ( key === "appendTo" ) { | 
				
			||||||
 | 
								this.menu.element.appendTo( this._appendTo() ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							if ( key === "disabled" && value && this.xhr ) { | 
				
			||||||
 | 
								this.xhr.abort(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_appendTo: function() { | 
				
			||||||
 | 
							var element = this.options.appendTo; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( element ) { | 
				
			||||||
 | 
								element = element.jquery || element.nodeType ? | 
				
			||||||
 | 
									$( element ) : | 
				
			||||||
 | 
									this.document.find( element ).eq( 0 ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( !element ) { | 
				
			||||||
 | 
								element = this.element.closest( ".ui-front" ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( !element.length ) { | 
				
			||||||
 | 
								element = this.document[0].body; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return element; | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_initSource: function() { | 
				
			||||||
 | 
							var array, url, | 
				
			||||||
 | 
								that = this; | 
				
			||||||
 | 
							if ( $.isArray(this.options.source) ) { | 
				
			||||||
 | 
								array = this.options.source; | 
				
			||||||
 | 
								this.source = function( request, response ) { | 
				
			||||||
 | 
									response( $.ui.autocomplete.filter( array, request.term ) ); | 
				
			||||||
 | 
								}; | 
				
			||||||
 | 
							} else if ( typeof this.options.source === "string" ) { | 
				
			||||||
 | 
								url = this.options.source; | 
				
			||||||
 | 
								this.source = function( request, response ) { | 
				
			||||||
 | 
									if ( that.xhr ) { | 
				
			||||||
 | 
										that.xhr.abort(); | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
									that.xhr = $.ajax({ | 
				
			||||||
 | 
										url: url, | 
				
			||||||
 | 
										data: request, | 
				
			||||||
 | 
										dataType: "json", | 
				
			||||||
 | 
										success: function( data ) { | 
				
			||||||
 | 
											response( data ); | 
				
			||||||
 | 
										}, | 
				
			||||||
 | 
										error: function() { | 
				
			||||||
 | 
											response( [] ); | 
				
			||||||
 | 
										} | 
				
			||||||
 | 
									}); | 
				
			||||||
 | 
								}; | 
				
			||||||
 | 
							} else { | 
				
			||||||
 | 
								this.source = this.options.source; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_searchTimeout: function( event ) { | 
				
			||||||
 | 
							clearTimeout( this.searching ); | 
				
			||||||
 | 
							this.searching = this._delay(function() { | 
				
			||||||
 | 
								// only search if the value has changed
 | 
				
			||||||
 | 
								if ( this.term !== this._value() ) { | 
				
			||||||
 | 
									this.selectedItem = null; | 
				
			||||||
 | 
									this.search( null, event ); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							}, this.options.delay ); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						search: function( value, event ) { | 
				
			||||||
 | 
							value = value != null ? value : this._value(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// always save the actual value, not the one passed as an argument
 | 
				
			||||||
 | 
							this.term = this._value(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( value.length < this.options.minLength ) { | 
				
			||||||
 | 
								return this.close( event ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( this._trigger( "search", event ) === false ) { | 
				
			||||||
 | 
								return; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return this._search( value ); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_search: function( value ) { | 
				
			||||||
 | 
							this.pending++; | 
				
			||||||
 | 
							this.element.addClass( "ui-autocomplete-loading" ); | 
				
			||||||
 | 
							this.cancelSearch = false; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this.source( { term: value }, this._response() ); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_response: function() { | 
				
			||||||
 | 
							var that = this, | 
				
			||||||
 | 
								index = ++requestIndex; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return function( content ) { | 
				
			||||||
 | 
								if ( index === requestIndex ) { | 
				
			||||||
 | 
									that.__response( content ); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								that.pending--; | 
				
			||||||
 | 
								if ( !that.pending ) { | 
				
			||||||
 | 
									that.element.removeClass( "ui-autocomplete-loading" ); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							}; | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						__response: function( content ) { | 
				
			||||||
 | 
							if ( content ) { | 
				
			||||||
 | 
								content = this._normalize( content ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							this._trigger( "response", null, { content: content } ); | 
				
			||||||
 | 
							if ( !this.options.disabled && content && content.length && !this.cancelSearch ) { | 
				
			||||||
 | 
								this._suggest( content ); | 
				
			||||||
 | 
								this._trigger( "open" ); | 
				
			||||||
 | 
							} else { | 
				
			||||||
 | 
								// use ._close() instead of .close() so we don't cancel future searches
 | 
				
			||||||
 | 
								this._close(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						close: function( event ) { | 
				
			||||||
 | 
							this.cancelSearch = true; | 
				
			||||||
 | 
							this._close( event ); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_close: function( event ) { | 
				
			||||||
 | 
							if ( this.menu.element.is( ":visible" ) ) { | 
				
			||||||
 | 
								this.menu.element.hide(); | 
				
			||||||
 | 
								this.menu.blur(); | 
				
			||||||
 | 
								this.isNewMenu = true; | 
				
			||||||
 | 
								this._trigger( "close", event ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_change: function( event ) { | 
				
			||||||
 | 
							if ( this.previous !== this._value() ) { | 
				
			||||||
 | 
								this._trigger( "change", event, { item: this.selectedItem } ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_normalize: function( items ) { | 
				
			||||||
 | 
							// assume all items have the right format when the first item is complete
 | 
				
			||||||
 | 
							if ( items.length && items[0].label && items[0].value ) { | 
				
			||||||
 | 
								return items; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							return $.map( items, function( item ) { | 
				
			||||||
 | 
								if ( typeof item === "string" ) { | 
				
			||||||
 | 
									return { | 
				
			||||||
 | 
										label: item, | 
				
			||||||
 | 
										value: item | 
				
			||||||
 | 
									}; | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
								return $.extend({ | 
				
			||||||
 | 
									label: item.label || item.value, | 
				
			||||||
 | 
									value: item.value || item.label | 
				
			||||||
 | 
								}, item ); | 
				
			||||||
 | 
							}); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_suggest: function( items ) { | 
				
			||||||
 | 
							var ul = this.menu.element.empty(); | 
				
			||||||
 | 
							this._renderMenu( ul, items ); | 
				
			||||||
 | 
							this.isNewMenu = true; | 
				
			||||||
 | 
							this.menu.refresh(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// size and position menu
 | 
				
			||||||
 | 
							ul.show(); | 
				
			||||||
 | 
							this._resizeMenu(); | 
				
			||||||
 | 
							ul.position( $.extend({ | 
				
			||||||
 | 
								of: this.element | 
				
			||||||
 | 
							}, this.options.position )); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( this.options.autoFocus ) { | 
				
			||||||
 | 
								this.menu.next(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_resizeMenu: function() { | 
				
			||||||
 | 
							var ul = this.menu.element; | 
				
			||||||
 | 
							ul.outerWidth( Math.max( | 
				
			||||||
 | 
								// Firefox wraps long text (possibly a rounding bug)
 | 
				
			||||||
 | 
								// so we add 1px to avoid the wrapping (#7513)
 | 
				
			||||||
 | 
								ul.width( "" ).outerWidth() + 1, | 
				
			||||||
 | 
								this.element.outerWidth() | 
				
			||||||
 | 
							) ); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_renderMenu: function( ul, items ) { | 
				
			||||||
 | 
							var that = this; | 
				
			||||||
 | 
							$.each( items, function( index, item ) { | 
				
			||||||
 | 
								that._renderItemData( ul, item ); | 
				
			||||||
 | 
							}); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_renderItemData: function( ul, item ) { | 
				
			||||||
 | 
							return this._renderItem( ul, item ).data( "ui-autocomplete-item", item ); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_renderItem: function( ul, item ) { | 
				
			||||||
 | 
							return $( "<li>" ) | 
				
			||||||
 | 
								.append( $( "<a>" ).text( item.label ) ) | 
				
			||||||
 | 
								.appendTo( ul ); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_move: function( direction, event ) { | 
				
			||||||
 | 
							if ( !this.menu.element.is( ":visible" ) ) { | 
				
			||||||
 | 
								this.search( null, event ); | 
				
			||||||
 | 
								return; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							if ( this.menu.isFirstItem() && /^previous/.test( direction ) || | 
				
			||||||
 | 
									this.menu.isLastItem() && /^next/.test( direction ) ) { | 
				
			||||||
 | 
								this._value( this.term ); | 
				
			||||||
 | 
								this.menu.blur(); | 
				
			||||||
 | 
								return; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							this.menu[ direction ]( event ); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						widget: function() { | 
				
			||||||
 | 
							return this.menu.element; | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_value: function() { | 
				
			||||||
 | 
							return this.valueMethod.apply( this.element, arguments ); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_keyEvent: function( keyEvent, event ) { | 
				
			||||||
 | 
							if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) { | 
				
			||||||
 | 
								this._move( keyEvent, event ); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// prevents moving cursor to beginning/end of the text field in some browsers
 | 
				
			||||||
 | 
								event.preventDefault(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$.extend( $.ui.autocomplete, { | 
				
			||||||
 | 
						escapeRegex: function( value ) { | 
				
			||||||
 | 
							return value.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&"); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
						filter: function(array, term) { | 
				
			||||||
 | 
							var matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), "i" ); | 
				
			||||||
 | 
							return $.grep( array, function(value) { | 
				
			||||||
 | 
								return matcher.test( value.label || value.value || value ); | 
				
			||||||
 | 
							}); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// live region extension, adding a `messages` option
 | 
				
			||||||
 | 
					// NOTE: This is an experimental API. We are still investigating
 | 
				
			||||||
 | 
					// a full solution for string manipulation and internationalization.
 | 
				
			||||||
 | 
					$.widget( "ui.autocomplete", $.ui.autocomplete, { | 
				
			||||||
 | 
						options: { | 
				
			||||||
 | 
							messages: { | 
				
			||||||
 | 
								noResults: "No search results.", | 
				
			||||||
 | 
								results: function( amount ) { | 
				
			||||||
 | 
									return amount + ( amount > 1 ? " results are" : " result is" ) + | 
				
			||||||
 | 
										" available, use up and down arrow keys to navigate."; | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						__response: function( content ) { | 
				
			||||||
 | 
							var message; | 
				
			||||||
 | 
							this._superApply( arguments ); | 
				
			||||||
 | 
							if ( this.options.disabled || this.cancelSearch ) { | 
				
			||||||
 | 
								return; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							if ( content && content.length ) { | 
				
			||||||
 | 
								message = this.options.messages.results( content.length ); | 
				
			||||||
 | 
							} else { | 
				
			||||||
 | 
								message = this.options.messages.noResults; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							this.liveRegion.text( message ); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}( jQuery )); | 
				
			||||||
@ -0,0 +1,419 @@ | 
				
			|||||||
 | 
					/*! | 
				
			||||||
 | 
					 * jQuery UI Button 1.10.3 | 
				
			||||||
 | 
					 * http://jqueryui.com
 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * Copyright 2013 jQuery Foundation and other contributors | 
				
			||||||
 | 
					 * Released under the MIT license. | 
				
			||||||
 | 
					 * http://jquery.org/license
 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * http://api.jqueryui.com/button/
 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * Depends: | 
				
			||||||
 | 
					 *	jquery.ui.core.js | 
				
			||||||
 | 
					 *	jquery.ui.widget.js | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					(function( $, undefined ) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var lastActive, startXPos, startYPos, clickDragged, | 
				
			||||||
 | 
						baseClasses = "ui-button ui-widget ui-state-default ui-corner-all", | 
				
			||||||
 | 
						stateClasses = "ui-state-hover ui-state-active ", | 
				
			||||||
 | 
						typeClasses = "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", | 
				
			||||||
 | 
						formResetHandler = function() { | 
				
			||||||
 | 
							var form = $( this ); | 
				
			||||||
 | 
							setTimeout(function() { | 
				
			||||||
 | 
								form.find( ":ui-button" ).button( "refresh" ); | 
				
			||||||
 | 
							}, 1 ); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
						radioGroup = function( radio ) { | 
				
			||||||
 | 
							var name = radio.name, | 
				
			||||||
 | 
								form = radio.form, | 
				
			||||||
 | 
								radios = $( [] ); | 
				
			||||||
 | 
							if ( name ) { | 
				
			||||||
 | 
								name = name.replace( /'/g, "\\'" ); | 
				
			||||||
 | 
								if ( form ) { | 
				
			||||||
 | 
									radios = $( form ).find( "[name='" + name + "']" ); | 
				
			||||||
 | 
								} else { | 
				
			||||||
 | 
									radios = $( "[name='" + name + "']", radio.ownerDocument ) | 
				
			||||||
 | 
										.filter(function() { | 
				
			||||||
 | 
											return !this.form; | 
				
			||||||
 | 
										}); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							return radios; | 
				
			||||||
 | 
						}; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$.widget( "ui.button", { | 
				
			||||||
 | 
						version: "1.10.3", | 
				
			||||||
 | 
						defaultElement: "<button>", | 
				
			||||||
 | 
						options: { | 
				
			||||||
 | 
							disabled: null, | 
				
			||||||
 | 
							text: true, | 
				
			||||||
 | 
							label: null, | 
				
			||||||
 | 
							icons: { | 
				
			||||||
 | 
								primary: null, | 
				
			||||||
 | 
								secondary: null | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
						_create: function() { | 
				
			||||||
 | 
							this.element.closest( "form" ) | 
				
			||||||
 | 
								.unbind( "reset" + this.eventNamespace ) | 
				
			||||||
 | 
								.bind( "reset" + this.eventNamespace, formResetHandler ); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( typeof this.options.disabled !== "boolean" ) { | 
				
			||||||
 | 
								this.options.disabled = !!this.element.prop( "disabled" ); | 
				
			||||||
 | 
							} else { | 
				
			||||||
 | 
								this.element.prop( "disabled", this.options.disabled ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this._determineButtonType(); | 
				
			||||||
 | 
							this.hasTitle = !!this.buttonElement.attr( "title" ); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							var that = this, | 
				
			||||||
 | 
								options = this.options, | 
				
			||||||
 | 
								toggleButton = this.type === "checkbox" || this.type === "radio", | 
				
			||||||
 | 
								activeClass = !toggleButton ? "ui-state-active" : "", | 
				
			||||||
 | 
								focusClass = "ui-state-focus"; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( options.label === null ) { | 
				
			||||||
 | 
								options.label = (this.type === "input" ? this.buttonElement.val() : this.buttonElement.html()); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this._hoverable( this.buttonElement ); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this.buttonElement | 
				
			||||||
 | 
								.addClass( baseClasses ) | 
				
			||||||
 | 
								.attr( "role", "button" ) | 
				
			||||||
 | 
								.bind( "mouseenter" + this.eventNamespace, function() { | 
				
			||||||
 | 
									if ( options.disabled ) { | 
				
			||||||
 | 
										return; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
									if ( this === lastActive ) { | 
				
			||||||
 | 
										$( this ).addClass( "ui-state-active" ); | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
								}) | 
				
			||||||
 | 
								.bind( "mouseleave" + this.eventNamespace, function() { | 
				
			||||||
 | 
									if ( options.disabled ) { | 
				
			||||||
 | 
										return; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
									$( this ).removeClass( activeClass ); | 
				
			||||||
 | 
								}) | 
				
			||||||
 | 
								.bind( "click" + this.eventNamespace, function( event ) { | 
				
			||||||
 | 
									if ( options.disabled ) { | 
				
			||||||
 | 
										event.preventDefault(); | 
				
			||||||
 | 
										event.stopImmediatePropagation(); | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
								}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this.element | 
				
			||||||
 | 
								.bind( "focus" + this.eventNamespace, function() { | 
				
			||||||
 | 
									// no need to check disabled, focus won't be triggered anyway
 | 
				
			||||||
 | 
									that.buttonElement.addClass( focusClass ); | 
				
			||||||
 | 
								}) | 
				
			||||||
 | 
								.bind( "blur" + this.eventNamespace, function() { | 
				
			||||||
 | 
									that.buttonElement.removeClass( focusClass ); | 
				
			||||||
 | 
								}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( toggleButton ) { | 
				
			||||||
 | 
								this.element.bind( "change" + this.eventNamespace, function() { | 
				
			||||||
 | 
									if ( clickDragged ) { | 
				
			||||||
 | 
										return; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
									that.refresh(); | 
				
			||||||
 | 
								}); | 
				
			||||||
 | 
								// if mouse moves between mousedown and mouseup (drag) set clickDragged flag
 | 
				
			||||||
 | 
								// prevents issue where button state changes but checkbox/radio checked state
 | 
				
			||||||
 | 
								// does not in Firefox (see ticket #6970)
 | 
				
			||||||
 | 
								this.buttonElement | 
				
			||||||
 | 
									.bind( "mousedown" + this.eventNamespace, function( event ) { | 
				
			||||||
 | 
										if ( options.disabled ) { | 
				
			||||||
 | 
											return; | 
				
			||||||
 | 
										} | 
				
			||||||
 | 
										clickDragged = false; | 
				
			||||||
 | 
										startXPos = event.pageX; | 
				
			||||||
 | 
										startYPos = event.pageY; | 
				
			||||||
 | 
									}) | 
				
			||||||
 | 
									.bind( "mouseup" + this.eventNamespace, function( event ) { | 
				
			||||||
 | 
										if ( options.disabled ) { | 
				
			||||||
 | 
											return; | 
				
			||||||
 | 
										} | 
				
			||||||
 | 
										if ( startXPos !== event.pageX || startYPos !== event.pageY ) { | 
				
			||||||
 | 
											clickDragged = true; | 
				
			||||||
 | 
										} | 
				
			||||||
 | 
								}); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( this.type === "checkbox" ) { | 
				
			||||||
 | 
								this.buttonElement.bind( "click" + this.eventNamespace, function() { | 
				
			||||||
 | 
									if ( options.disabled || clickDragged ) { | 
				
			||||||
 | 
										return false; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
								}); | 
				
			||||||
 | 
							} else if ( this.type === "radio" ) { | 
				
			||||||
 | 
								this.buttonElement.bind( "click" + this.eventNamespace, function() { | 
				
			||||||
 | 
									if ( options.disabled || clickDragged ) { | 
				
			||||||
 | 
										return false; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
									$( this ).addClass( "ui-state-active" ); | 
				
			||||||
 | 
									that.buttonElement.attr( "aria-pressed", "true" ); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									var radio = that.element[ 0 ]; | 
				
			||||||
 | 
									radioGroup( radio ) | 
				
			||||||
 | 
										.not( radio ) | 
				
			||||||
 | 
										.map(function() { | 
				
			||||||
 | 
											return $( this ).button( "widget" )[ 0 ]; | 
				
			||||||
 | 
										}) | 
				
			||||||
 | 
										.removeClass( "ui-state-active" ) | 
				
			||||||
 | 
										.attr( "aria-pressed", "false" ); | 
				
			||||||
 | 
								}); | 
				
			||||||
 | 
							} else { | 
				
			||||||
 | 
								this.buttonElement | 
				
			||||||
 | 
									.bind( "mousedown" + this.eventNamespace, function() { | 
				
			||||||
 | 
										if ( options.disabled ) { | 
				
			||||||
 | 
											return false; | 
				
			||||||
 | 
										} | 
				
			||||||
 | 
										$( this ).addClass( "ui-state-active" ); | 
				
			||||||
 | 
										lastActive = this; | 
				
			||||||
 | 
										that.document.one( "mouseup", function() { | 
				
			||||||
 | 
											lastActive = null; | 
				
			||||||
 | 
										}); | 
				
			||||||
 | 
									}) | 
				
			||||||
 | 
									.bind( "mouseup" + this.eventNamespace, function() { | 
				
			||||||
 | 
										if ( options.disabled ) { | 
				
			||||||
 | 
											return false; | 
				
			||||||
 | 
										} | 
				
			||||||
 | 
										$( this ).removeClass( "ui-state-active" ); | 
				
			||||||
 | 
									}) | 
				
			||||||
 | 
									.bind( "keydown" + this.eventNamespace, function(event) { | 
				
			||||||
 | 
										if ( options.disabled ) { | 
				
			||||||
 | 
											return false; | 
				
			||||||
 | 
										} | 
				
			||||||
 | 
										if ( event.keyCode === $.ui.keyCode.SPACE || event.keyCode === $.ui.keyCode.ENTER ) { | 
				
			||||||
 | 
											$( this ).addClass( "ui-state-active" ); | 
				
			||||||
 | 
										} | 
				
			||||||
 | 
									}) | 
				
			||||||
 | 
									// see #8559, we bind to blur here in case the button element loses
 | 
				
			||||||
 | 
									// focus between keydown and keyup, it would be left in an "active" state
 | 
				
			||||||
 | 
									.bind( "keyup" + this.eventNamespace + " blur" + this.eventNamespace, function() { | 
				
			||||||
 | 
										$( this ).removeClass( "ui-state-active" ); | 
				
			||||||
 | 
									}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if ( this.buttonElement.is("a") ) { | 
				
			||||||
 | 
									this.buttonElement.keyup(function(event) { | 
				
			||||||
 | 
										if ( event.keyCode === $.ui.keyCode.SPACE ) { | 
				
			||||||
 | 
											// TODO pass through original event correctly (just as 2nd argument doesn't work)
 | 
				
			||||||
 | 
											$( this ).click(); | 
				
			||||||
 | 
										} | 
				
			||||||
 | 
									}); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// TODO: pull out $.Widget's handling for the disabled option into
 | 
				
			||||||
 | 
							// $.Widget.prototype._setOptionDisabled so it's easy to proxy and can
 | 
				
			||||||
 | 
							// be overridden by individual plugins
 | 
				
			||||||
 | 
							this._setOption( "disabled", options.disabled ); | 
				
			||||||
 | 
							this._resetButton(); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_determineButtonType: function() { | 
				
			||||||
 | 
							var ancestor, labelSelector, checked; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( this.element.is("[type=checkbox]") ) { | 
				
			||||||
 | 
								this.type = "checkbox"; | 
				
			||||||
 | 
							} else if ( this.element.is("[type=radio]") ) { | 
				
			||||||
 | 
								this.type = "radio"; | 
				
			||||||
 | 
							} else if ( this.element.is("input") ) { | 
				
			||||||
 | 
								this.type = "input"; | 
				
			||||||
 | 
							} else { | 
				
			||||||
 | 
								this.type = "button"; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( this.type === "checkbox" || this.type === "radio" ) { | 
				
			||||||
 | 
								// we don't search against the document in case the element
 | 
				
			||||||
 | 
								// is disconnected from the DOM
 | 
				
			||||||
 | 
								ancestor = this.element.parents().last(); | 
				
			||||||
 | 
								labelSelector = "label[for='" + this.element.attr("id") + "']"; | 
				
			||||||
 | 
								this.buttonElement = ancestor.find( labelSelector ); | 
				
			||||||
 | 
								if ( !this.buttonElement.length ) { | 
				
			||||||
 | 
									ancestor = ancestor.length ? ancestor.siblings() : this.element.siblings(); | 
				
			||||||
 | 
									this.buttonElement = ancestor.filter( labelSelector ); | 
				
			||||||
 | 
									if ( !this.buttonElement.length ) { | 
				
			||||||
 | 
										this.buttonElement = ancestor.find( labelSelector ); | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
								this.element.addClass( "ui-helper-hidden-accessible" ); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								checked = this.element.is( ":checked" ); | 
				
			||||||
 | 
								if ( checked ) { | 
				
			||||||
 | 
									this.buttonElement.addClass( "ui-state-active" ); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
								this.buttonElement.prop( "aria-pressed", checked ); | 
				
			||||||
 | 
							} else { | 
				
			||||||
 | 
								this.buttonElement = this.element; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						widget: function() { | 
				
			||||||
 | 
							return this.buttonElement; | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_destroy: function() { | 
				
			||||||
 | 
							this.element | 
				
			||||||
 | 
								.removeClass( "ui-helper-hidden-accessible" ); | 
				
			||||||
 | 
							this.buttonElement | 
				
			||||||
 | 
								.removeClass( baseClasses + " " + stateClasses + " " + typeClasses ) | 
				
			||||||
 | 
								.removeAttr( "role" ) | 
				
			||||||
 | 
								.removeAttr( "aria-pressed" ) | 
				
			||||||
 | 
								.html( this.buttonElement.find(".ui-button-text").html() ); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( !this.hasTitle ) { | 
				
			||||||
 | 
								this.buttonElement.removeAttr( "title" ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_setOption: function( key, value ) { | 
				
			||||||
 | 
							this._super( key, value ); | 
				
			||||||
 | 
							if ( key === "disabled" ) { | 
				
			||||||
 | 
								if ( value ) { | 
				
			||||||
 | 
									this.element.prop( "disabled", true ); | 
				
			||||||
 | 
								} else { | 
				
			||||||
 | 
									this.element.prop( "disabled", false ); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
								return; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							this._resetButton(); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						refresh: function() { | 
				
			||||||
 | 
							//See #8237 & #8828
 | 
				
			||||||
 | 
							var isDisabled = this.element.is( "input, button" ) ? this.element.is( ":disabled" ) : this.element.hasClass( "ui-button-disabled" ); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( isDisabled !== this.options.disabled ) { | 
				
			||||||
 | 
								this._setOption( "disabled", isDisabled ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							if ( this.type === "radio" ) { | 
				
			||||||
 | 
								radioGroup( this.element[0] ).each(function() { | 
				
			||||||
 | 
									if ( $( this ).is( ":checked" ) ) { | 
				
			||||||
 | 
										$( this ).button( "widget" ) | 
				
			||||||
 | 
											.addClass( "ui-state-active" ) | 
				
			||||||
 | 
											.attr( "aria-pressed", "true" ); | 
				
			||||||
 | 
									} else { | 
				
			||||||
 | 
										$( this ).button( "widget" ) | 
				
			||||||
 | 
											.removeClass( "ui-state-active" ) | 
				
			||||||
 | 
											.attr( "aria-pressed", "false" ); | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
								}); | 
				
			||||||
 | 
							} else if ( this.type === "checkbox" ) { | 
				
			||||||
 | 
								if ( this.element.is( ":checked" ) ) { | 
				
			||||||
 | 
									this.buttonElement | 
				
			||||||
 | 
										.addClass( "ui-state-active" ) | 
				
			||||||
 | 
										.attr( "aria-pressed", "true" ); | 
				
			||||||
 | 
								} else { | 
				
			||||||
 | 
									this.buttonElement | 
				
			||||||
 | 
										.removeClass( "ui-state-active" ) | 
				
			||||||
 | 
										.attr( "aria-pressed", "false" ); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_resetButton: function() { | 
				
			||||||
 | 
							if ( this.type === "input" ) { | 
				
			||||||
 | 
								if ( this.options.label ) { | 
				
			||||||
 | 
									this.element.val( this.options.label ); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
								return; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							var buttonElement = this.buttonElement.removeClass( typeClasses ), | 
				
			||||||
 | 
								buttonText = $( "<span></span>", this.document[0] ) | 
				
			||||||
 | 
									.addClass( "ui-button-text" ) | 
				
			||||||
 | 
									.html( this.options.label ) | 
				
			||||||
 | 
									.appendTo( buttonElement.empty() ) | 
				
			||||||
 | 
									.text(), | 
				
			||||||
 | 
								icons = this.options.icons, | 
				
			||||||
 | 
								multipleIcons = icons.primary && icons.secondary, | 
				
			||||||
 | 
								buttonClasses = []; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( icons.primary || icons.secondary ) { | 
				
			||||||
 | 
								if ( this.options.text ) { | 
				
			||||||
 | 
									buttonClasses.push( "ui-button-text-icon" + ( multipleIcons ? "s" : ( icons.primary ? "-primary" : "-secondary" ) ) ); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if ( icons.primary ) { | 
				
			||||||
 | 
									buttonElement.prepend( "<span class='ui-button-icon-primary ui-icon " + icons.primary + "'></span>" ); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if ( icons.secondary ) { | 
				
			||||||
 | 
									buttonElement.append( "<span class='ui-button-icon-secondary ui-icon " + icons.secondary + "'></span>" ); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if ( !this.options.text ) { | 
				
			||||||
 | 
									buttonClasses.push( multipleIcons ? "ui-button-icons-only" : "ui-button-icon-only" ); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									if ( !this.hasTitle ) { | 
				
			||||||
 | 
										buttonElement.attr( "title", $.trim( buttonText ) ); | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							} else { | 
				
			||||||
 | 
								buttonClasses.push( "ui-button-text-only" ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							buttonElement.addClass( buttonClasses.join( " " ) ); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$.widget( "ui.buttonset", { | 
				
			||||||
 | 
						version: "1.10.3", | 
				
			||||||
 | 
						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( key, value ) { | 
				
			||||||
 | 
							if ( key === "disabled" ) { | 
				
			||||||
 | 
								this.buttons.button( "option", key, value ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this._super( key, value ); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						refresh: function() { | 
				
			||||||
 | 
							var rtl = this.element.css( "direction" ) === "rtl"; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this.buttons = this.element.find( this.options.items ) | 
				
			||||||
 | 
								.filter( ":ui-button" ) | 
				
			||||||
 | 
									.button( "refresh" ) | 
				
			||||||
 | 
								.end() | 
				
			||||||
 | 
								.not( ":ui-button" ) | 
				
			||||||
 | 
									.button() | 
				
			||||||
 | 
								.end() | 
				
			||||||
 | 
								.map(function() { | 
				
			||||||
 | 
									return $( this ).button( "widget" )[ 0 ]; | 
				
			||||||
 | 
								}) | 
				
			||||||
 | 
									.removeClass( "ui-corner-all ui-corner-left ui-corner-right" ) | 
				
			||||||
 | 
									.filter( ":first" ) | 
				
			||||||
 | 
										.addClass( rtl ? "ui-corner-right" : "ui-corner-left" ) | 
				
			||||||
 | 
									.end() | 
				
			||||||
 | 
									.filter( ":last" ) | 
				
			||||||
 | 
										.addClass( rtl ? "ui-corner-left" : "ui-corner-right" ) | 
				
			||||||
 | 
									.end() | 
				
			||||||
 | 
								.end(); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_destroy: function() { | 
				
			||||||
 | 
							this.element.removeClass( "ui-buttonset" ); | 
				
			||||||
 | 
							this.buttons | 
				
			||||||
 | 
								.map(function() { | 
				
			||||||
 | 
									return $( this ).button( "widget" )[ 0 ]; | 
				
			||||||
 | 
								}) | 
				
			||||||
 | 
									.removeClass( "ui-corner-left ui-corner-right" ) | 
				
			||||||
 | 
								.end() | 
				
			||||||
 | 
								.button( "destroy" ); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}( jQuery ) ); | 
				
			||||||
@ -0,0 +1,320 @@ | 
				
			|||||||
 | 
					/*! | 
				
			||||||
 | 
					 * jQuery UI Core 1.10.3 | 
				
			||||||
 | 
					 * http://jqueryui.com
 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * Copyright 2013 jQuery Foundation and other contributors | 
				
			||||||
 | 
					 * Released under the MIT license. | 
				
			||||||
 | 
					 * http://jquery.org/license
 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * http://api.jqueryui.com/category/ui-core/
 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					(function( $, undefined ) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var uuid = 0, | 
				
			||||||
 | 
						runiqueId = /^ui-id-\d+$/; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// $.ui might exist from components with no dependencies, e.g., $.ui.position
 | 
				
			||||||
 | 
					$.ui = $.ui || {}; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$.extend( $.ui, { | 
				
			||||||
 | 
						version: "1.10.3", | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						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 | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// plugins
 | 
				
			||||||
 | 
					$.fn.extend({ | 
				
			||||||
 | 
						focus: (function( orig ) { | 
				
			||||||
 | 
							return function( delay, fn ) { | 
				
			||||||
 | 
								return typeof delay === "number" ? | 
				
			||||||
 | 
									this.each(function() { | 
				
			||||||
 | 
										var elem = this; | 
				
			||||||
 | 
										setTimeout(function() { | 
				
			||||||
 | 
											$( elem ).focus(); | 
				
			||||||
 | 
											if ( fn ) { | 
				
			||||||
 | 
												fn.call( elem ); | 
				
			||||||
 | 
											} | 
				
			||||||
 | 
										}, delay ); | 
				
			||||||
 | 
									}) : | 
				
			||||||
 | 
									orig.apply( this, arguments ); | 
				
			||||||
 | 
							}; | 
				
			||||||
 | 
						})( $.fn.focus ), | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						scrollParent: function() { | 
				
			||||||
 | 
							var scrollParent; | 
				
			||||||
 | 
							if (($.ui.ie && (/(static|relative)/).test(this.css("position"))) || (/absolute/).test(this.css("position"))) { | 
				
			||||||
 | 
								scrollParent = this.parents().filter(function() { | 
				
			||||||
 | 
									return (/(relative|absolute|fixed)/).test($.css(this,"position")) && (/(auto|scroll)/).test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x")); | 
				
			||||||
 | 
								}).eq(0); | 
				
			||||||
 | 
							} else { | 
				
			||||||
 | 
								scrollParent = this.parents().filter(function() { | 
				
			||||||
 | 
									return (/(auto|scroll)/).test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x")); | 
				
			||||||
 | 
								}).eq(0); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return (/fixed/).test(this.css("position")) || !scrollParent.length ? $(document) : scrollParent; | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						zIndex: function( zIndex ) { | 
				
			||||||
 | 
							if ( zIndex !== undefined ) { | 
				
			||||||
 | 
								return this.css( "zIndex", zIndex ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( this.length ) { | 
				
			||||||
 | 
								var elem = $( this[ 0 ] ), position, value; | 
				
			||||||
 | 
								while ( elem.length && elem[ 0 ] !== document ) { | 
				
			||||||
 | 
									// Ignore z-index if position is set to a value where z-index is ignored by the browser
 | 
				
			||||||
 | 
									// This makes behavior of this function consistent across browsers
 | 
				
			||||||
 | 
									// WebKit always returns auto if the element is positioned
 | 
				
			||||||
 | 
									position = elem.css( "position" ); | 
				
			||||||
 | 
									if ( position === "absolute" || position === "relative" || position === "fixed" ) { | 
				
			||||||
 | 
										// IE returns 0 when zIndex is not specified
 | 
				
			||||||
 | 
										// other browsers return a string
 | 
				
			||||||
 | 
										// we ignore the case of nested elements with an explicit value of 0
 | 
				
			||||||
 | 
										// <div style="z-index: -10;"><div style="z-index: 0;"></div></div>
 | 
				
			||||||
 | 
										value = parseInt( elem.css( "zIndex" ), 10 ); | 
				
			||||||
 | 
										if ( !isNaN( value ) && value !== 0 ) { | 
				
			||||||
 | 
											return value; | 
				
			||||||
 | 
										} | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
									elem = elem.parent(); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return 0; | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						uniqueId: function() { | 
				
			||||||
 | 
							return this.each(function() { | 
				
			||||||
 | 
								if ( !this.id ) { | 
				
			||||||
 | 
									this.id = "ui-id-" + (++uuid); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							}); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						removeUniqueId: function() { | 
				
			||||||
 | 
							return this.each(function() { | 
				
			||||||
 | 
								if ( runiqueId.test( this.id ) ) { | 
				
			||||||
 | 
									$( this ).removeAttr( "id" ); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							}); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// selectors
 | 
				
			||||||
 | 
					function focusable( element, isTabIndexNotNaN ) { | 
				
			||||||
 | 
						var map, mapName, img, | 
				
			||||||
 | 
							nodeName = element.nodeName.toLowerCase(); | 
				
			||||||
 | 
						if ( "area" === nodeName ) { | 
				
			||||||
 | 
							map = element.parentNode; | 
				
			||||||
 | 
							mapName = map.name; | 
				
			||||||
 | 
							if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) { | 
				
			||||||
 | 
								return false; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							img = $( "img[usemap=#" + mapName + "]" )[0]; | 
				
			||||||
 | 
							return !!img && visible( img ); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
						return ( /input|select|textarea|button|object/.test( nodeName ) ? | 
				
			||||||
 | 
							!element.disabled : | 
				
			||||||
 | 
							"a" === nodeName ? | 
				
			||||||
 | 
								element.href || isTabIndexNotNaN : | 
				
			||||||
 | 
								isTabIndexNotNaN) && | 
				
			||||||
 | 
							// the element and all of its ancestors must be visible
 | 
				
			||||||
 | 
							visible( element ); | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function visible( element ) { | 
				
			||||||
 | 
						return $.expr.filters.visible( element ) && | 
				
			||||||
 | 
							!$( element ).parents().addBack().filter(function() { | 
				
			||||||
 | 
								return $.css( this, "visibility" ) === "hidden"; | 
				
			||||||
 | 
							}).length; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$.extend( $.expr[ ":" ], { | 
				
			||||||
 | 
						data: $.expr.createPseudo ? | 
				
			||||||
 | 
							$.expr.createPseudo(function( dataName ) { | 
				
			||||||
 | 
								return function( elem ) { | 
				
			||||||
 | 
									return !!$.data( elem, dataName ); | 
				
			||||||
 | 
								}; | 
				
			||||||
 | 
							}) : | 
				
			||||||
 | 
							// support: jQuery <1.8
 | 
				
			||||||
 | 
							function( elem, i, match ) { | 
				
			||||||
 | 
								return !!$.data( elem, match[ 3 ] ); | 
				
			||||||
 | 
							}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						focusable: function( element ) { | 
				
			||||||
 | 
							return focusable( element, !isNaN( $.attr( element, "tabindex" ) ) ); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						tabbable: function( element ) { | 
				
			||||||
 | 
							var tabIndex = $.attr( element, "tabindex" ), | 
				
			||||||
 | 
								isTabIndexNaN = isNaN( tabIndex ); | 
				
			||||||
 | 
							return ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN ); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// support: jQuery <1.8
 | 
				
			||||||
 | 
					if ( !$( "<a>" ).outerWidth( 1 ).jquery ) { | 
				
			||||||
 | 
						$.each( [ "Width", "Height" ], function( i, name ) { | 
				
			||||||
 | 
							var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ], | 
				
			||||||
 | 
								type = name.toLowerCase(), | 
				
			||||||
 | 
								orig = { | 
				
			||||||
 | 
									innerWidth: $.fn.innerWidth, | 
				
			||||||
 | 
									innerHeight: $.fn.innerHeight, | 
				
			||||||
 | 
									outerWidth: $.fn.outerWidth, | 
				
			||||||
 | 
									outerHeight: $.fn.outerHeight | 
				
			||||||
 | 
								}; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							function reduce( elem, size, border, margin ) { | 
				
			||||||
 | 
								$.each( side, function() { | 
				
			||||||
 | 
									size -= parseFloat( $.css( elem, "padding" + this ) ) || 0; | 
				
			||||||
 | 
									if ( border ) { | 
				
			||||||
 | 
										size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
									if ( margin ) { | 
				
			||||||
 | 
										size -= parseFloat( $.css( elem, "margin" + this ) ) || 0; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
								}); | 
				
			||||||
 | 
								return size; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							$.fn[ "inner" + name ] = function( size ) { | 
				
			||||||
 | 
								if ( size === undefined ) { | 
				
			||||||
 | 
									return orig[ "inner" + name ].call( this ); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								return this.each(function() { | 
				
			||||||
 | 
									$( this ).css( type, reduce( this, size ) + "px" ); | 
				
			||||||
 | 
								}); | 
				
			||||||
 | 
							}; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							$.fn[ "outer" + name] = function( size, margin ) { | 
				
			||||||
 | 
								if ( typeof size !== "number" ) { | 
				
			||||||
 | 
									return orig[ "outer" + name ].call( this, size ); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								return this.each(function() { | 
				
			||||||
 | 
									$( this).css( type, reduce( this, size, true, margin ) + "px" ); | 
				
			||||||
 | 
								}); | 
				
			||||||
 | 
							}; | 
				
			||||||
 | 
						}); | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// support: jQuery <1.8
 | 
				
			||||||
 | 
					if ( !$.fn.addBack ) { | 
				
			||||||
 | 
						$.fn.addBack = function( selector ) { | 
				
			||||||
 | 
							return this.add( selector == null ? | 
				
			||||||
 | 
								this.prevObject : this.prevObject.filter( selector ) | 
				
			||||||
 | 
							); | 
				
			||||||
 | 
						}; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// support: jQuery 1.6.1, 1.6.2 (http://bugs.jquery.com/ticket/9413)
 | 
				
			||||||
 | 
					if ( $( "<a>" ).data( "a-b", "a" ).removeData( "a-b" ).data( "a-b" ) ) { | 
				
			||||||
 | 
						$.fn.removeData = (function( removeData ) { | 
				
			||||||
 | 
							return function( key ) { | 
				
			||||||
 | 
								if ( arguments.length ) { | 
				
			||||||
 | 
									return removeData.call( this, $.camelCase( key ) ); | 
				
			||||||
 | 
								} else { | 
				
			||||||
 | 
									return removeData.call( this ); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							}; | 
				
			||||||
 | 
						})( $.fn.removeData ); | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// deprecated
 | 
				
			||||||
 | 
					$.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() ); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$.support.selectstart = "onselectstart" in document.createElement( "div" ); | 
				
			||||||
 | 
					$.fn.extend({ | 
				
			||||||
 | 
						disableSelection: function() { | 
				
			||||||
 | 
							return this.bind( ( $.support.selectstart ? "selectstart" : "mousedown" ) + | 
				
			||||||
 | 
								".ui-disableSelection", function( event ) { | 
				
			||||||
 | 
									event.preventDefault(); | 
				
			||||||
 | 
								}); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						enableSelection: function() { | 
				
			||||||
 | 
							return this.unbind( ".ui-disableSelection" ); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$.extend( $.ui, { | 
				
			||||||
 | 
						// $.ui.plugin is deprecated. Use $.widget() extensions instead.
 | 
				
			||||||
 | 
						plugin: { | 
				
			||||||
 | 
							add: function( module, option, set ) { | 
				
			||||||
 | 
								var i, | 
				
			||||||
 | 
									proto = $.ui[ module ].prototype; | 
				
			||||||
 | 
								for ( i in set ) { | 
				
			||||||
 | 
									proto.plugins[ i ] = proto.plugins[ i ] || []; | 
				
			||||||
 | 
									proto.plugins[ i ].push( [ option, set[ i ] ] ); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							}, | 
				
			||||||
 | 
							call: function( instance, name, args ) { | 
				
			||||||
 | 
								var i, | 
				
			||||||
 | 
									set = instance.plugins[ name ]; | 
				
			||||||
 | 
								if ( !set || !instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType === 11 ) { | 
				
			||||||
 | 
									return; | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								for ( i = 0; i < set.length; i++ ) { | 
				
			||||||
 | 
									if ( instance.options[ set[ i ][ 0 ] ] ) { | 
				
			||||||
 | 
										set[ i ][ 1 ].apply( instance.element, args ); | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// only used by resizable
 | 
				
			||||||
 | 
						hasScroll: function( el, a ) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//If overflow is hidden, the element might have extra content, but the user wants to hide it
 | 
				
			||||||
 | 
							if ( $( el ).css( "overflow" ) === "hidden") { | 
				
			||||||
 | 
								return false; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							var scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop", | 
				
			||||||
 | 
								has = false; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( el[ scroll ] > 0 ) { | 
				
			||||||
 | 
								return true; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// TODO: determine which cases actually cause this to happen
 | 
				
			||||||
 | 
							// if the element doesn't have the scroll set, see if it's possible to
 | 
				
			||||||
 | 
							// set the scroll
 | 
				
			||||||
 | 
							el[ scroll ] = 1; | 
				
			||||||
 | 
							has = ( el[ scroll ] > 0 ); | 
				
			||||||
 | 
							el[ scroll ] = 0; | 
				
			||||||
 | 
							return has; | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					})( jQuery ); | 
				
			||||||
									
										
											File diff suppressed because it is too large
											Load Diff
										
									
								
							
						@ -0,0 +1,808 @@ | 
				
			|||||||
 | 
					/*! | 
				
			||||||
 | 
					 * jQuery UI Dialog 1.10.3 | 
				
			||||||
 | 
					 * http://jqueryui.com
 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * Copyright 2013 jQuery Foundation and other contributors | 
				
			||||||
 | 
					 * Released under the MIT license. | 
				
			||||||
 | 
					 * http://jquery.org/license
 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * http://api.jqueryui.com/dialog/
 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * Depends: | 
				
			||||||
 | 
					 *	jquery.ui.core.js | 
				
			||||||
 | 
					 *	jquery.ui.widget.js | 
				
			||||||
 | 
					 *  jquery.ui.button.js | 
				
			||||||
 | 
					 *	jquery.ui.draggable.js | 
				
			||||||
 | 
					 *	jquery.ui.mouse.js | 
				
			||||||
 | 
					 *	jquery.ui.position.js | 
				
			||||||
 | 
					 *	jquery.ui.resizable.js | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					(function( $, undefined ) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var sizeRelatedOptions = { | 
				
			||||||
 | 
							buttons: true, | 
				
			||||||
 | 
							height: true, | 
				
			||||||
 | 
							maxHeight: true, | 
				
			||||||
 | 
							maxWidth: true, | 
				
			||||||
 | 
							minHeight: true, | 
				
			||||||
 | 
							minWidth: true, | 
				
			||||||
 | 
							width: true | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
						resizableRelatedOptions = { | 
				
			||||||
 | 
							maxHeight: true, | 
				
			||||||
 | 
							maxWidth: true, | 
				
			||||||
 | 
							minHeight: true, | 
				
			||||||
 | 
							minWidth: true | 
				
			||||||
 | 
						}; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$.widget( "ui.dialog", { | 
				
			||||||
 | 
						version: "1.10.3", | 
				
			||||||
 | 
						options: { | 
				
			||||||
 | 
							appendTo: "body", | 
				
			||||||
 | 
							autoOpen: true, | 
				
			||||||
 | 
							buttons: [], | 
				
			||||||
 | 
							closeOnEscape: true, | 
				
			||||||
 | 
							closeText: "close", | 
				
			||||||
 | 
							dialogClass: "", | 
				
			||||||
 | 
							draggable: true, | 
				
			||||||
 | 
							hide: null, | 
				
			||||||
 | 
							height: "auto", | 
				
			||||||
 | 
							maxHeight: null, | 
				
			||||||
 | 
							maxWidth: null, | 
				
			||||||
 | 
							minHeight: 150, | 
				
			||||||
 | 
							minWidth: 150, | 
				
			||||||
 | 
							modal: false, | 
				
			||||||
 | 
							position: { | 
				
			||||||
 | 
								my: "center", | 
				
			||||||
 | 
								at: "center", | 
				
			||||||
 | 
								of: window, | 
				
			||||||
 | 
								collision: "fit", | 
				
			||||||
 | 
								// Ensure the titlebar is always visible
 | 
				
			||||||
 | 
								using: function( pos ) { | 
				
			||||||
 | 
									var topOffset = $( this ).css( pos ).offset().top; | 
				
			||||||
 | 
									if ( topOffset < 0 ) { | 
				
			||||||
 | 
										$( this ).css( "top", pos.top - topOffset ); | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							}, | 
				
			||||||
 | 
							resizable: true, | 
				
			||||||
 | 
							show: null, | 
				
			||||||
 | 
							title: null, | 
				
			||||||
 | 
							width: 300, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// callbacks
 | 
				
			||||||
 | 
							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(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( this.options.draggable && $.fn.draggable ) { | 
				
			||||||
 | 
								this._makeDraggable(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							if ( this.options.resizable && $.fn.resizable ) { | 
				
			||||||
 | 
								this._makeResizable(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this._isOpen = false; | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_init: function() { | 
				
			||||||
 | 
							if ( this.options.autoOpen ) { | 
				
			||||||
 | 
								this.open(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_appendTo: function() { | 
				
			||||||
 | 
							var element = this.options.appendTo; | 
				
			||||||
 | 
							if ( element && (element.jquery || element.nodeType) ) { | 
				
			||||||
 | 
								return $( element ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							return this.document.find( element || "body" ).eq( 0 ); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_destroy: function() { | 
				
			||||||
 | 
							var next, | 
				
			||||||
 | 
								originalPosition = this.originalPosition; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this._destroyOverlay(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this.element | 
				
			||||||
 | 
								.removeUniqueId() | 
				
			||||||
 | 
								.removeClass("ui-dialog-content ui-widget-content") | 
				
			||||||
 | 
								.css( this.originalCss ) | 
				
			||||||
 | 
								// Without detaching first, the following becomes really slow
 | 
				
			||||||
 | 
								.detach(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this.uiDialog.stop( true, true ).remove(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( this.originalTitle ) { | 
				
			||||||
 | 
								this.element.attr( "title", this.originalTitle ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							next = originalPosition.parent.children().eq( originalPosition.index ); | 
				
			||||||
 | 
							// Don't try to place the dialog next to itself (#8613)
 | 
				
			||||||
 | 
							if ( next.length && next[0] !== this.element[0] ) { | 
				
			||||||
 | 
								next.before( this.element ); | 
				
			||||||
 | 
							} else { | 
				
			||||||
 | 
								originalPosition.parent.append( this.element ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						widget: function() { | 
				
			||||||
 | 
							return this.uiDialog; | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						disable: $.noop, | 
				
			||||||
 | 
						enable: $.noop, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						close: function( event ) { | 
				
			||||||
 | 
							var that = this; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( !this._isOpen || this._trigger( "beforeClose", event ) === false ) { | 
				
			||||||
 | 
								return; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this._isOpen = false; | 
				
			||||||
 | 
							this._destroyOverlay(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( !this.opener.filter(":focusable").focus().length ) { | 
				
			||||||
 | 
								// Hiding a focused element doesn't trigger blur in WebKit
 | 
				
			||||||
 | 
								// so in case we have nothing to focus on, explicitly blur the active element
 | 
				
			||||||
 | 
								// https://bugs.webkit.org/show_bug.cgi?id=47182
 | 
				
			||||||
 | 
								$( this.document[0].activeElement ).blur(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this._hide( this.uiDialog, this.options.hide, function() { | 
				
			||||||
 | 
								that._trigger( "close", event ); | 
				
			||||||
 | 
							}); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						isOpen: function() { | 
				
			||||||
 | 
							return this._isOpen; | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						moveToTop: function() { | 
				
			||||||
 | 
							this._moveToTop(); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_moveToTop: function( event, silent ) { | 
				
			||||||
 | 
							var moved = !!this.uiDialog.nextAll(":visible").insertBefore( this.uiDialog ).length; | 
				
			||||||
 | 
							if ( moved && !silent ) { | 
				
			||||||
 | 
								this._trigger( "focus", event ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							return moved; | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						open: function() { | 
				
			||||||
 | 
							var that = this; | 
				
			||||||
 | 
							if ( this._isOpen ) { | 
				
			||||||
 | 
								if ( this._moveToTop() ) { | 
				
			||||||
 | 
									this._focusTabbable(); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
								return; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this._isOpen = true; | 
				
			||||||
 | 
							this.opener = $( this.document[0].activeElement ); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this._size(); | 
				
			||||||
 | 
							this._position(); | 
				
			||||||
 | 
							this._createOverlay(); | 
				
			||||||
 | 
							this._moveToTop( null, true ); | 
				
			||||||
 | 
							this._show( this.uiDialog, this.options.show, function() { | 
				
			||||||
 | 
								that._focusTabbable(); | 
				
			||||||
 | 
								that._trigger("focus"); | 
				
			||||||
 | 
							}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this._trigger("open"); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_focusTabbable: function() { | 
				
			||||||
 | 
							// Set focus to the first match:
 | 
				
			||||||
 | 
							// 1. First element inside the dialog matching [autofocus]
 | 
				
			||||||
 | 
							// 2. Tabbable element inside the content element
 | 
				
			||||||
 | 
							// 3. Tabbable element inside the buttonpane
 | 
				
			||||||
 | 
							// 4. The close button
 | 
				
			||||||
 | 
							// 5. The dialog itself
 | 
				
			||||||
 | 
							var hasFocus = this.element.find("[autofocus]"); | 
				
			||||||
 | 
							if ( !hasFocus.length ) { | 
				
			||||||
 | 
								hasFocus = this.element.find(":tabbable"); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							if ( !hasFocus.length ) { | 
				
			||||||
 | 
								hasFocus = this.uiDialogButtonPane.find(":tabbable"); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							if ( !hasFocus.length ) { | 
				
			||||||
 | 
								hasFocus = this.uiDialogTitlebarClose.filter(":tabbable"); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							if ( !hasFocus.length ) { | 
				
			||||||
 | 
								hasFocus = this.uiDialog; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							hasFocus.eq( 0 ).focus(); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_keepFocus: function( event ) { | 
				
			||||||
 | 
							function checkFocus() { | 
				
			||||||
 | 
								var activeElement = this.document[0].activeElement, | 
				
			||||||
 | 
									isActive = this.uiDialog[0] === activeElement || | 
				
			||||||
 | 
										$.contains( this.uiDialog[0], activeElement ); | 
				
			||||||
 | 
								if ( !isActive ) { | 
				
			||||||
 | 
									this._focusTabbable(); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							event.preventDefault(); | 
				
			||||||
 | 
							checkFocus.call( this ); | 
				
			||||||
 | 
							// support: IE
 | 
				
			||||||
 | 
							// IE <= 8 doesn't prevent moving focus even with event.preventDefault()
 | 
				
			||||||
 | 
							// so we check again later
 | 
				
			||||||
 | 
							this._delay( checkFocus ); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_createWrapper: function() { | 
				
			||||||
 | 
							this.uiDialog = $("<div>") | 
				
			||||||
 | 
								.addClass( "ui-dialog ui-widget ui-widget-content ui-corner-all ui-front " + | 
				
			||||||
 | 
									this.options.dialogClass ) | 
				
			||||||
 | 
								.hide() | 
				
			||||||
 | 
								.attr({ | 
				
			||||||
 | 
									// Setting tabIndex makes the div focusable
 | 
				
			||||||
 | 
									tabIndex: -1, | 
				
			||||||
 | 
									role: "dialog" | 
				
			||||||
 | 
								}) | 
				
			||||||
 | 
								.appendTo( this._appendTo() ); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this._on( this.uiDialog, { | 
				
			||||||
 | 
								keydown: function( event ) { | 
				
			||||||
 | 
									if ( this.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode && | 
				
			||||||
 | 
											event.keyCode === $.ui.keyCode.ESCAPE ) { | 
				
			||||||
 | 
										event.preventDefault(); | 
				
			||||||
 | 
										this.close( event ); | 
				
			||||||
 | 
										return; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									// prevent tabbing out of dialogs
 | 
				
			||||||
 | 
									if ( event.keyCode !== $.ui.keyCode.TAB ) { | 
				
			||||||
 | 
										return; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
									var tabbables = this.uiDialog.find(":tabbable"), | 
				
			||||||
 | 
										first = tabbables.filter(":first"), | 
				
			||||||
 | 
										last  = tabbables.filter(":last"); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									if ( ( event.target === last[0] || event.target === this.uiDialog[0] ) && !event.shiftKey ) { | 
				
			||||||
 | 
										first.focus( 1 ); | 
				
			||||||
 | 
										event.preventDefault(); | 
				
			||||||
 | 
									} else if ( ( event.target === first[0] || event.target === this.uiDialog[0] ) && event.shiftKey ) { | 
				
			||||||
 | 
										last.focus( 1 ); | 
				
			||||||
 | 
										event.preventDefault(); | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
								}, | 
				
			||||||
 | 
								mousedown: function( event ) { | 
				
			||||||
 | 
									if ( this._moveToTop( event ) ) { | 
				
			||||||
 | 
										this._focusTabbable(); | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// We assume that any existing aria-describedby attribute means
 | 
				
			||||||
 | 
							// that the dialog content is marked up properly
 | 
				
			||||||
 | 
							// otherwise we brute force the content as the description
 | 
				
			||||||
 | 
							if ( !this.element.find("[aria-describedby]").length ) { | 
				
			||||||
 | 
								this.uiDialog.attr({ | 
				
			||||||
 | 
									"aria-describedby": this.element.uniqueId().attr("id") | 
				
			||||||
 | 
								}); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_createTitlebar: function() { | 
				
			||||||
 | 
							var uiDialogTitle; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this.uiDialogTitlebar = $("<div>") | 
				
			||||||
 | 
								.addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix") | 
				
			||||||
 | 
								.prependTo( this.uiDialog ); | 
				
			||||||
 | 
							this._on( this.uiDialogTitlebar, { | 
				
			||||||
 | 
								mousedown: function( event ) { | 
				
			||||||
 | 
									// Don't prevent click on close button (#8838)
 | 
				
			||||||
 | 
									// Focusing a dialog that is partially scrolled out of view
 | 
				
			||||||
 | 
									// causes the browser to scroll it into view, preventing the click event
 | 
				
			||||||
 | 
									if ( !$( event.target ).closest(".ui-dialog-titlebar-close") ) { | 
				
			||||||
 | 
										// Dialog isn't getting focus when dragging (#8063)
 | 
				
			||||||
 | 
										this.uiDialog.focus(); | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this.uiDialogTitlebarClose = $("<button></button>") | 
				
			||||||
 | 
								.button({ | 
				
			||||||
 | 
									label: this.options.closeText, | 
				
			||||||
 | 
									icons: { | 
				
			||||||
 | 
										primary: "ui-icon-closethick" | 
				
			||||||
 | 
									}, | 
				
			||||||
 | 
									text: false | 
				
			||||||
 | 
								}) | 
				
			||||||
 | 
								.addClass("ui-dialog-titlebar-close") | 
				
			||||||
 | 
								.appendTo( this.uiDialogTitlebar ); | 
				
			||||||
 | 
							this._on( this.uiDialogTitlebarClose, { | 
				
			||||||
 | 
								click: function( event ) { | 
				
			||||||
 | 
									event.preventDefault(); | 
				
			||||||
 | 
									this.close( event ); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							uiDialogTitle = $("<span>") | 
				
			||||||
 | 
								.uniqueId() | 
				
			||||||
 | 
								.addClass("ui-dialog-title") | 
				
			||||||
 | 
								.prependTo( this.uiDialogTitlebar ); | 
				
			||||||
 | 
							this._title( uiDialogTitle ); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this.uiDialog.attr({ | 
				
			||||||
 | 
								"aria-labelledby": uiDialogTitle.attr("id") | 
				
			||||||
 | 
							}); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_title: function( title ) { | 
				
			||||||
 | 
							if ( !this.options.title ) { | 
				
			||||||
 | 
								title.html(" "); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							title.text( this.options.title ); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_createButtonPane: function() { | 
				
			||||||
 | 
							this.uiDialogButtonPane = $("<div>") | 
				
			||||||
 | 
								.addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this.uiButtonSet = $("<div>") | 
				
			||||||
 | 
								.addClass("ui-dialog-buttonset") | 
				
			||||||
 | 
								.appendTo( this.uiDialogButtonPane ); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this._createButtons(); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_createButtons: function() { | 
				
			||||||
 | 
							var that = this, | 
				
			||||||
 | 
								buttons = this.options.buttons; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// if we already have a button pane, remove it
 | 
				
			||||||
 | 
							this.uiDialogButtonPane.remove(); | 
				
			||||||
 | 
							this.uiButtonSet.empty(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( $.isEmptyObject( buttons ) || ($.isArray( buttons ) && !buttons.length) ) { | 
				
			||||||
 | 
								this.uiDialog.removeClass("ui-dialog-buttons"); | 
				
			||||||
 | 
								return; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							$.each( buttons, function( name, props ) { | 
				
			||||||
 | 
								var click, buttonOptions; | 
				
			||||||
 | 
								props = $.isFunction( props ) ? | 
				
			||||||
 | 
									{ click: props, text: name } : | 
				
			||||||
 | 
									props; | 
				
			||||||
 | 
								// Default to a non-submitting button
 | 
				
			||||||
 | 
								props = $.extend( { type: "button" }, props ); | 
				
			||||||
 | 
								// Change the context for the click callback to be the main element
 | 
				
			||||||
 | 
								click = props.click; | 
				
			||||||
 | 
								props.click = function() { | 
				
			||||||
 | 
									click.apply( that.element[0], arguments ); | 
				
			||||||
 | 
								}; | 
				
			||||||
 | 
								buttonOptions = { | 
				
			||||||
 | 
									icons: props.icons, | 
				
			||||||
 | 
									text: props.showText | 
				
			||||||
 | 
								}; | 
				
			||||||
 | 
								delete props.icons; | 
				
			||||||
 | 
								delete props.showText; | 
				
			||||||
 | 
								$( "<button></button>", props ) | 
				
			||||||
 | 
									.button( buttonOptions ) | 
				
			||||||
 | 
									.appendTo( that.uiButtonSet ); | 
				
			||||||
 | 
							}); | 
				
			||||||
 | 
							this.uiDialog.addClass("ui-dialog-buttons"); | 
				
			||||||
 | 
							this.uiDialogButtonPane.appendTo( this.uiDialog ); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_makeDraggable: function() { | 
				
			||||||
 | 
							var that = this, | 
				
			||||||
 | 
								options = this.options; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							function filteredUi( ui ) { | 
				
			||||||
 | 
								return { | 
				
			||||||
 | 
									position: ui.position, | 
				
			||||||
 | 
									offset: ui.offset | 
				
			||||||
 | 
								}; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this.uiDialog.draggable({ | 
				
			||||||
 | 
								cancel: ".ui-dialog-content, .ui-dialog-titlebar-close", | 
				
			||||||
 | 
								handle: ".ui-dialog-titlebar", | 
				
			||||||
 | 
								containment: "document", | 
				
			||||||
 | 
								start: function( event, ui ) { | 
				
			||||||
 | 
									$( this ).addClass("ui-dialog-dragging"); | 
				
			||||||
 | 
									that._blockFrames(); | 
				
			||||||
 | 
									that._trigger( "dragStart", event, filteredUi( ui ) ); | 
				
			||||||
 | 
								}, | 
				
			||||||
 | 
								drag: function( event, ui ) { | 
				
			||||||
 | 
									that._trigger( "drag", event, filteredUi( ui ) ); | 
				
			||||||
 | 
								}, | 
				
			||||||
 | 
								stop: function( event, ui ) { | 
				
			||||||
 | 
									options.position = [ | 
				
			||||||
 | 
										ui.position.left - that.document.scrollLeft(), | 
				
			||||||
 | 
										ui.position.top - that.document.scrollTop() | 
				
			||||||
 | 
									]; | 
				
			||||||
 | 
									$( this ).removeClass("ui-dialog-dragging"); | 
				
			||||||
 | 
									that._unblockFrames(); | 
				
			||||||
 | 
									that._trigger( "dragStop", event, filteredUi( ui ) ); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							}); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_makeResizable: function() { | 
				
			||||||
 | 
							var that = this, | 
				
			||||||
 | 
								options = this.options, | 
				
			||||||
 | 
								handles = options.resizable, | 
				
			||||||
 | 
								// .ui-resizable has position: relative defined in the stylesheet
 | 
				
			||||||
 | 
								// but dialogs have to use absolute or fixed positioning
 | 
				
			||||||
 | 
								position = this.uiDialog.css("position"), | 
				
			||||||
 | 
								resizeHandles = typeof handles === "string" ? | 
				
			||||||
 | 
									handles	: | 
				
			||||||
 | 
									"n,e,s,w,se,sw,ne,nw"; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							function filteredUi( ui ) { | 
				
			||||||
 | 
								return { | 
				
			||||||
 | 
									originalPosition: ui.originalPosition, | 
				
			||||||
 | 
									originalSize: ui.originalSize, | 
				
			||||||
 | 
									position: ui.position, | 
				
			||||||
 | 
									size: ui.size | 
				
			||||||
 | 
								}; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this.uiDialog.resizable({ | 
				
			||||||
 | 
								cancel: ".ui-dialog-content", | 
				
			||||||
 | 
								containment: "document", | 
				
			||||||
 | 
								alsoResize: this.element, | 
				
			||||||
 | 
								maxWidth: options.maxWidth, | 
				
			||||||
 | 
								maxHeight: options.maxHeight, | 
				
			||||||
 | 
								minWidth: options.minWidth, | 
				
			||||||
 | 
								minHeight: this._minHeight(), | 
				
			||||||
 | 
								handles: resizeHandles, | 
				
			||||||
 | 
								start: function( event, ui ) { | 
				
			||||||
 | 
									$( this ).addClass("ui-dialog-resizing"); | 
				
			||||||
 | 
									that._blockFrames(); | 
				
			||||||
 | 
									that._trigger( "resizeStart", event, filteredUi( ui ) ); | 
				
			||||||
 | 
								}, | 
				
			||||||
 | 
								resize: function( event, ui ) { | 
				
			||||||
 | 
									that._trigger( "resize", event, filteredUi( ui ) ); | 
				
			||||||
 | 
								}, | 
				
			||||||
 | 
								stop: function( event, ui ) { | 
				
			||||||
 | 
									options.height = $( this ).height(); | 
				
			||||||
 | 
									options.width = $( this ).width(); | 
				
			||||||
 | 
									$( this ).removeClass("ui-dialog-resizing"); | 
				
			||||||
 | 
									that._unblockFrames(); | 
				
			||||||
 | 
									that._trigger( "resizeStop", event, filteredUi( ui ) ); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							}) | 
				
			||||||
 | 
							.css( "position", position ); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_minHeight: function() { | 
				
			||||||
 | 
							var options = this.options; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return options.height === "auto" ? | 
				
			||||||
 | 
								options.minHeight : | 
				
			||||||
 | 
								Math.min( options.minHeight, options.height ); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_position: function() { | 
				
			||||||
 | 
							// Need to show the dialog to get the actual offset in the position plugin
 | 
				
			||||||
 | 
							var isVisible = this.uiDialog.is(":visible"); | 
				
			||||||
 | 
							if ( !isVisible ) { | 
				
			||||||
 | 
								this.uiDialog.show(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							this.uiDialog.position( this.options.position ); | 
				
			||||||
 | 
							if ( !isVisible ) { | 
				
			||||||
 | 
								this.uiDialog.hide(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_setOptions: function( options ) { | 
				
			||||||
 | 
							var that = this, | 
				
			||||||
 | 
								resize = false, | 
				
			||||||
 | 
								resizableOptions = {}; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							$.each( options, function( key, value ) { | 
				
			||||||
 | 
								that._setOption( key, value ); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if ( key in sizeRelatedOptions ) { | 
				
			||||||
 | 
									resize = true; | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
								if ( key in resizableRelatedOptions ) { | 
				
			||||||
 | 
									resizableOptions[ key ] = value; | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( resize ) { | 
				
			||||||
 | 
								this._size(); | 
				
			||||||
 | 
								this._position(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							if ( this.uiDialog.is(":data(ui-resizable)") ) { | 
				
			||||||
 | 
								this.uiDialog.resizable( "option", resizableOptions ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_setOption: function( key, value ) { | 
				
			||||||
 | 
							/*jshint maxcomplexity:15*/ | 
				
			||||||
 | 
							var isDraggable, isResizable, | 
				
			||||||
 | 
								uiDialog = this.uiDialog; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( key === "dialogClass" ) { | 
				
			||||||
 | 
								uiDialog | 
				
			||||||
 | 
									.removeClass( this.options.dialogClass ) | 
				
			||||||
 | 
									.addClass( value ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( key === "disabled" ) { | 
				
			||||||
 | 
								return; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this._super( key, value ); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( key === "appendTo" ) { | 
				
			||||||
 | 
								this.uiDialog.appendTo( this._appendTo() ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( key === "buttons" ) { | 
				
			||||||
 | 
								this._createButtons(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( key === "closeText" ) { | 
				
			||||||
 | 
								this.uiDialogTitlebarClose.button({ | 
				
			||||||
 | 
									// Ensure that we always pass a string
 | 
				
			||||||
 | 
									label: "" + value | 
				
			||||||
 | 
								}); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( key === "draggable" ) { | 
				
			||||||
 | 
								isDraggable = uiDialog.is(":data(ui-draggable)"); | 
				
			||||||
 | 
								if ( isDraggable && !value ) { | 
				
			||||||
 | 
									uiDialog.draggable("destroy"); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if ( !isDraggable && value ) { | 
				
			||||||
 | 
									this._makeDraggable(); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( key === "position" ) { | 
				
			||||||
 | 
								this._position(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( key === "resizable" ) { | 
				
			||||||
 | 
								// currently resizable, becoming non-resizable
 | 
				
			||||||
 | 
								isResizable = uiDialog.is(":data(ui-resizable)"); | 
				
			||||||
 | 
								if ( isResizable && !value ) { | 
				
			||||||
 | 
									uiDialog.resizable("destroy"); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// currently resizable, changing handles
 | 
				
			||||||
 | 
								if ( isResizable && typeof value === "string" ) { | 
				
			||||||
 | 
									uiDialog.resizable( "option", "handles", value ); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// currently non-resizable, becoming resizable
 | 
				
			||||||
 | 
								if ( !isResizable && value !== false ) { | 
				
			||||||
 | 
									this._makeResizable(); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( key === "title" ) { | 
				
			||||||
 | 
								this._title( this.uiDialogTitlebar.find(".ui-dialog-title") ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_size: function() { | 
				
			||||||
 | 
							// If the user has resized the dialog, the .ui-dialog and .ui-dialog-content
 | 
				
			||||||
 | 
							// divs will both have width and height set, so we need to reset them
 | 
				
			||||||
 | 
							var nonContentHeight, minContentHeight, maxContentHeight, | 
				
			||||||
 | 
								options = this.options; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Reset content sizing
 | 
				
			||||||
 | 
							this.element.show().css({ | 
				
			||||||
 | 
								width: "auto", | 
				
			||||||
 | 
								minHeight: 0, | 
				
			||||||
 | 
								maxHeight: "none", | 
				
			||||||
 | 
								height: 0 | 
				
			||||||
 | 
							}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( options.minWidth > options.width ) { | 
				
			||||||
 | 
								options.width = options.minWidth; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// reset wrapper sizing
 | 
				
			||||||
 | 
							// determine the height of all the non-content elements
 | 
				
			||||||
 | 
							nonContentHeight = this.uiDialog.css({ | 
				
			||||||
 | 
									height: "auto", | 
				
			||||||
 | 
									width: options.width | 
				
			||||||
 | 
								}) | 
				
			||||||
 | 
								.outerHeight(); | 
				
			||||||
 | 
							minContentHeight = Math.max( 0, options.minHeight - nonContentHeight ); | 
				
			||||||
 | 
							maxContentHeight = typeof options.maxHeight === "number" ? | 
				
			||||||
 | 
								Math.max( 0, options.maxHeight - nonContentHeight ) : | 
				
			||||||
 | 
								"none"; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( options.height === "auto" ) { | 
				
			||||||
 | 
								this.element.css({ | 
				
			||||||
 | 
									minHeight: minContentHeight, | 
				
			||||||
 | 
									maxHeight: maxContentHeight, | 
				
			||||||
 | 
									height: "auto" | 
				
			||||||
 | 
								}); | 
				
			||||||
 | 
							} else { | 
				
			||||||
 | 
								this.element.height( Math.max( 0, options.height - nonContentHeight ) ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (this.uiDialog.is(":data(ui-resizable)") ) { | 
				
			||||||
 | 
								this.uiDialog.resizable( "option", "minHeight", this._minHeight() ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_blockFrames: function() { | 
				
			||||||
 | 
							this.iframeBlocks = this.document.find( "iframe" ).map(function() { | 
				
			||||||
 | 
								var iframe = $( this ); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								return $( "<div>" ) | 
				
			||||||
 | 
									.css({ | 
				
			||||||
 | 
										position: "absolute", | 
				
			||||||
 | 
										width: iframe.outerWidth(), | 
				
			||||||
 | 
										height: iframe.outerHeight() | 
				
			||||||
 | 
									}) | 
				
			||||||
 | 
									.appendTo( iframe.parent() ) | 
				
			||||||
 | 
									.offset( iframe.offset() )[0]; | 
				
			||||||
 | 
							}); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_unblockFrames: function() { | 
				
			||||||
 | 
							if ( this.iframeBlocks ) { | 
				
			||||||
 | 
								this.iframeBlocks.remove(); | 
				
			||||||
 | 
								delete this.iframeBlocks; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_allowInteraction: function( event ) { | 
				
			||||||
 | 
							if ( $( event.target ).closest(".ui-dialog").length ) { | 
				
			||||||
 | 
								return true; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// TODO: Remove hack when datepicker implements
 | 
				
			||||||
 | 
							// the .ui-front logic (#8989)
 | 
				
			||||||
 | 
							return !!$( event.target ).closest(".ui-datepicker").length; | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_createOverlay: function() { | 
				
			||||||
 | 
							if ( !this.options.modal ) { | 
				
			||||||
 | 
								return; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							var that = this, | 
				
			||||||
 | 
								widgetFullName = this.widgetFullName; | 
				
			||||||
 | 
							if ( !$.ui.dialog.overlayInstances ) { | 
				
			||||||
 | 
								// Prevent use of anchors and inputs.
 | 
				
			||||||
 | 
								// We use a delay in case the overlay is created from an
 | 
				
			||||||
 | 
								// event that we're going to be cancelling. (#2804)
 | 
				
			||||||
 | 
								this._delay(function() { | 
				
			||||||
 | 
									// Handle .dialog().dialog("close") (#4065)
 | 
				
			||||||
 | 
									if ( $.ui.dialog.overlayInstances ) { | 
				
			||||||
 | 
										this.document.bind( "focusin.dialog", function( event ) { | 
				
			||||||
 | 
											if ( !that._allowInteraction( event ) ) { | 
				
			||||||
 | 
												event.preventDefault(); | 
				
			||||||
 | 
												$(".ui-dialog:visible:last .ui-dialog-content") | 
				
			||||||
 | 
													.data( widgetFullName )._focusTabbable(); | 
				
			||||||
 | 
											} | 
				
			||||||
 | 
										}); | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
								}); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this.overlay = $("<div>") | 
				
			||||||
 | 
								.addClass("ui-widget-overlay ui-front") | 
				
			||||||
 | 
								.appendTo( this._appendTo() ); | 
				
			||||||
 | 
							this._on( this.overlay, { | 
				
			||||||
 | 
								mousedown: "_keepFocus" | 
				
			||||||
 | 
							}); | 
				
			||||||
 | 
							$.ui.dialog.overlayInstances++; | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_destroyOverlay: function() { | 
				
			||||||
 | 
							if ( !this.options.modal ) { | 
				
			||||||
 | 
								return; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( this.overlay ) { | 
				
			||||||
 | 
								$.ui.dialog.overlayInstances--; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if ( !$.ui.dialog.overlayInstances ) { | 
				
			||||||
 | 
									this.document.unbind( "focusin.dialog" ); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
								this.overlay.remove(); | 
				
			||||||
 | 
								this.overlay = null; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$.ui.dialog.overlayInstances = 0; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// DEPRECATED
 | 
				
			||||||
 | 
					if ( $.uiBackCompat !== false ) { | 
				
			||||||
 | 
						// position option with array notation
 | 
				
			||||||
 | 
						// just override with old implementation
 | 
				
			||||||
 | 
						$.widget( "ui.dialog", $.ui.dialog, { | 
				
			||||||
 | 
							_position: function() { | 
				
			||||||
 | 
								var position = this.options.position, | 
				
			||||||
 | 
									myAt = [], | 
				
			||||||
 | 
									offset = [ 0, 0 ], | 
				
			||||||
 | 
									isVisible; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if ( position ) { | 
				
			||||||
 | 
									if ( typeof position === "string" || (typeof position === "object" && "0" in position ) ) { | 
				
			||||||
 | 
										myAt = position.split ? position.split(" ") : [ position[0], position[1] ]; | 
				
			||||||
 | 
										if ( myAt.length === 1 ) { | 
				
			||||||
 | 
											myAt[1] = myAt[0]; | 
				
			||||||
 | 
										} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										$.each( [ "left", "top" ], function( i, offsetPosition ) { | 
				
			||||||
 | 
											if ( +myAt[ i ] === myAt[ i ] ) { | 
				
			||||||
 | 
												offset[ i ] = myAt[ i ]; | 
				
			||||||
 | 
												myAt[ i ] = offsetPosition; | 
				
			||||||
 | 
											} | 
				
			||||||
 | 
										}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										position = { | 
				
			||||||
 | 
											my: myAt[0] + (offset[0] < 0 ? offset[0] : "+" + offset[0]) + " " + | 
				
			||||||
 | 
												myAt[1] + (offset[1] < 0 ? offset[1] : "+" + offset[1]), | 
				
			||||||
 | 
											at: myAt.join(" ") | 
				
			||||||
 | 
										}; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									position = $.extend( {}, $.ui.dialog.prototype.options.position, position ); | 
				
			||||||
 | 
								} else { | 
				
			||||||
 | 
									position = $.ui.dialog.prototype.options.position; | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// need to show the dialog to get the actual offset in the position plugin
 | 
				
			||||||
 | 
								isVisible = this.uiDialog.is(":visible"); | 
				
			||||||
 | 
								if ( !isVisible ) { | 
				
			||||||
 | 
									this.uiDialog.show(); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
								this.uiDialog.position( position ); | 
				
			||||||
 | 
								if ( !isVisible ) { | 
				
			||||||
 | 
									this.uiDialog.hide(); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						}); | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}( jQuery ) ); | 
				
			||||||
@ -0,0 +1,958 @@ | 
				
			|||||||
 | 
					/*! | 
				
			||||||
 | 
					 * jQuery UI Draggable 1.10.3 | 
				
			||||||
 | 
					 * http://jqueryui.com
 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * Copyright 2013 jQuery Foundation and other contributors | 
				
			||||||
 | 
					 * Released under the MIT license. | 
				
			||||||
 | 
					 * http://jquery.org/license
 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * http://api.jqueryui.com/draggable/
 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * Depends: | 
				
			||||||
 | 
					 *	jquery.ui.core.js | 
				
			||||||
 | 
					 *	jquery.ui.mouse.js | 
				
			||||||
 | 
					 *	jquery.ui.widget.js | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					(function( $, undefined ) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$.widget("ui.draggable", $.ui.mouse, { | 
				
			||||||
 | 
						version: "1.10.3", | 
				
			||||||
 | 
						widgetEventPrefix: "drag", | 
				
			||||||
 | 
						options: { | 
				
			||||||
 | 
							addClasses: true, | 
				
			||||||
 | 
							appendTo: "parent", | 
				
			||||||
 | 
							axis: false, | 
				
			||||||
 | 
							connectToSortable: false, | 
				
			||||||
 | 
							containment: false, | 
				
			||||||
 | 
							cursor: "auto", | 
				
			||||||
 | 
							cursorAt: false, | 
				
			||||||
 | 
							grid: false, | 
				
			||||||
 | 
							handle: false, | 
				
			||||||
 | 
							helper: "original", | 
				
			||||||
 | 
							iframeFix: false, | 
				
			||||||
 | 
							opacity: false, | 
				
			||||||
 | 
							refreshPositions: false, | 
				
			||||||
 | 
							revert: false, | 
				
			||||||
 | 
							revertDuration: 500, | 
				
			||||||
 | 
							scope: "default", | 
				
			||||||
 | 
							scroll: true, | 
				
			||||||
 | 
							scrollSensitivity: 20, | 
				
			||||||
 | 
							scrollSpeed: 20, | 
				
			||||||
 | 
							snap: false, | 
				
			||||||
 | 
							snapMode: "both", | 
				
			||||||
 | 
							snapTolerance: 20, | 
				
			||||||
 | 
							stack: false, | 
				
			||||||
 | 
							zIndex: false, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// callbacks
 | 
				
			||||||
 | 
							drag: null, | 
				
			||||||
 | 
							start: null, | 
				
			||||||
 | 
							stop: null | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
						_create: function() { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (this.options.helper === "original" && !(/^(?:r|a|f)/).test(this.element.css("position"))) { | 
				
			||||||
 | 
								this.element[0].style.position = "relative"; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							if (this.options.addClasses){ | 
				
			||||||
 | 
								this.element.addClass("ui-draggable"); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							if (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(event) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							var o = this.options; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// among others, prevent a drag on a resizable-handle
 | 
				
			||||||
 | 
							if (this.helper || o.disabled || $(event.target).closest(".ui-resizable-handle").length > 0) { | 
				
			||||||
 | 
								return false; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Quit if we're not on a valid handle
 | 
				
			||||||
 | 
							this.handle = this._getHandle(event); | 
				
			||||||
 | 
							if (!this.handle) { | 
				
			||||||
 | 
								return false; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							$(o.iframeFix === true ? "iframe" : o.iframeFix).each(function() { | 
				
			||||||
 | 
								$("<div class='ui-draggable-iframeFix' style='background: #fff;'></div>") | 
				
			||||||
 | 
								.css({ | 
				
			||||||
 | 
									width: this.offsetWidth+"px", height: this.offsetHeight+"px", | 
				
			||||||
 | 
									position: "absolute", opacity: "0.001", zIndex: 1000 | 
				
			||||||
 | 
								}) | 
				
			||||||
 | 
								.css($(this).offset()) | 
				
			||||||
 | 
								.appendTo("body"); | 
				
			||||||
 | 
							}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return true; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_mouseStart: function(event) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							var o = this.options; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Create and append the visible helper
 | 
				
			||||||
 | 
							this.helper = this._createHelper(event); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this.helper.addClass("ui-draggable-dragging"); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Cache the helper size
 | 
				
			||||||
 | 
							this._cacheHelperProportions(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//If ddmanager is used for droppables, set the global draggable
 | 
				
			||||||
 | 
							if($.ui.ddmanager) { | 
				
			||||||
 | 
								$.ui.ddmanager.current = this; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/* | 
				
			||||||
 | 
							 * - Position generation - | 
				
			||||||
 | 
							 * This block generates everything position related - it's the core of draggables. | 
				
			||||||
 | 
							 */ | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Cache the margins of the original element
 | 
				
			||||||
 | 
							this._cacheMargins(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Store the helper's css position
 | 
				
			||||||
 | 
							this.cssPosition = this.helper.css( "position" ); | 
				
			||||||
 | 
							this.scrollParent = this.helper.scrollParent(); | 
				
			||||||
 | 
							this.offsetParent = this.helper.offsetParent(); | 
				
			||||||
 | 
							this.offsetParentCssPosition = this.offsetParent.css( "position" ); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//The element's absolute position on the page minus margins
 | 
				
			||||||
 | 
							this.offset = this.positionAbs = this.element.offset(); | 
				
			||||||
 | 
							this.offset = { | 
				
			||||||
 | 
								top: this.offset.top - this.margins.top, | 
				
			||||||
 | 
								left: this.offset.left - this.margins.left | 
				
			||||||
 | 
							}; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Reset scroll cache
 | 
				
			||||||
 | 
							this.offset.scroll = false; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							$.extend(this.offset, { | 
				
			||||||
 | 
								click: { //Where the click happened, relative to the element
 | 
				
			||||||
 | 
									left: event.pageX - this.offset.left, | 
				
			||||||
 | 
									top: event.pageY - this.offset.top | 
				
			||||||
 | 
								}, | 
				
			||||||
 | 
								parent: this._getParentOffset(), | 
				
			||||||
 | 
								relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper
 | 
				
			||||||
 | 
							}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Generate the original position
 | 
				
			||||||
 | 
							this.originalPosition = this.position = this._generatePosition(event); | 
				
			||||||
 | 
							this.originalPageX = event.pageX; | 
				
			||||||
 | 
							this.originalPageY = event.pageY; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Adjust the mouse offset relative to the helper if "cursorAt" is supplied
 | 
				
			||||||
 | 
							(o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt)); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Set a containment if given in the options
 | 
				
			||||||
 | 
							this._setContainment(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Trigger event + callbacks
 | 
				
			||||||
 | 
							if(this._trigger("start", event) === false) { | 
				
			||||||
 | 
								this._clear(); | 
				
			||||||
 | 
								return false; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Recache the helper size
 | 
				
			||||||
 | 
							this._cacheHelperProportions(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Prepare the droppable offsets
 | 
				
			||||||
 | 
							if ($.ui.ddmanager && !o.dropBehaviour) { | 
				
			||||||
 | 
								$.ui.ddmanager.prepareOffsets(this, event); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003)
 | 
				
			||||||
 | 
							if ( $.ui.ddmanager ) { | 
				
			||||||
 | 
								$.ui.ddmanager.dragStart(this, event); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return true; | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_mouseDrag: function(event, noPropagation) { | 
				
			||||||
 | 
							// reset any necessary cached properties (see #5009)
 | 
				
			||||||
 | 
							if ( this.offsetParentCssPosition === "fixed" ) { | 
				
			||||||
 | 
								this.offset.parent = this._getParentOffset(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Compute the helpers position
 | 
				
			||||||
 | 
							this.position = this._generatePosition(event); | 
				
			||||||
 | 
							this.positionAbs = this._convertPositionTo("absolute"); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Call plugins and callbacks and use the resulting position if something is returned
 | 
				
			||||||
 | 
							if (!noPropagation) { | 
				
			||||||
 | 
								var ui = this._uiHash(); | 
				
			||||||
 | 
								if(this._trigger("drag", event, ui) === false) { | 
				
			||||||
 | 
									this._mouseUp({}); | 
				
			||||||
 | 
									return false; | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
								this.position = ui.position; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if(!this.options.axis || this.options.axis !== "y") { | 
				
			||||||
 | 
								this.helper[0].style.left = this.position.left+"px"; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							if(!this.options.axis || this.options.axis !== "x") { | 
				
			||||||
 | 
								this.helper[0].style.top = this.position.top+"px"; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							if($.ui.ddmanager) { | 
				
			||||||
 | 
								$.ui.ddmanager.drag(this, event); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return false; | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_mouseStop: function(event) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//If we are using droppables, inform the manager about the drop
 | 
				
			||||||
 | 
							var that = this, | 
				
			||||||
 | 
								dropped = false; | 
				
			||||||
 | 
							if ($.ui.ddmanager && !this.options.dropBehaviour) { | 
				
			||||||
 | 
								dropped = $.ui.ddmanager.drop(this, event); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//if a drop comes from outside (a sortable)
 | 
				
			||||||
 | 
							if(this.dropped) { | 
				
			||||||
 | 
								dropped = this.dropped; | 
				
			||||||
 | 
								this.dropped = false; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//if the original element is no longer in the DOM don't bother to continue (see #8269)
 | 
				
			||||||
 | 
							if ( this.options.helper === "original" && !$.contains( this.element[ 0 ].ownerDocument, this.element[ 0 ] ) ) { | 
				
			||||||
 | 
								return false; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if((this.options.revert === "invalid" && !dropped) || (this.options.revert === "valid" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) { | 
				
			||||||
 | 
								$(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() { | 
				
			||||||
 | 
									if(that._trigger("stop", event) !== false) { | 
				
			||||||
 | 
										that._clear(); | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
								}); | 
				
			||||||
 | 
							} else { | 
				
			||||||
 | 
								if(this._trigger("stop", event) !== false) { | 
				
			||||||
 | 
									this._clear(); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return false; | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_mouseUp: function(event) { | 
				
			||||||
 | 
							//Remove frame helpers
 | 
				
			||||||
 | 
							$("div.ui-draggable-iframeFix").each(function() { | 
				
			||||||
 | 
								this.parentNode.removeChild(this); | 
				
			||||||
 | 
							}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003)
 | 
				
			||||||
 | 
							if( $.ui.ddmanager ) { | 
				
			||||||
 | 
								$.ui.ddmanager.dragStop(this, event); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return $.ui.mouse.prototype._mouseUp.call(this, event); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cancel: function() { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if(this.helper.is(".ui-draggable-dragging")) { | 
				
			||||||
 | 
								this._mouseUp({}); | 
				
			||||||
 | 
							} else { | 
				
			||||||
 | 
								this._clear(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return this; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_getHandle: function(event) { | 
				
			||||||
 | 
							return this.options.handle ? | 
				
			||||||
 | 
								!!$( event.target ).closest( this.element.find( this.options.handle ) ).length : | 
				
			||||||
 | 
								true; | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_createHelper: function(event) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							var o = this.options, | 
				
			||||||
 | 
								helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])) : (o.helper === "clone" ? this.element.clone().removeAttr("id") : this.element); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if(!helper.parents("body").length) { | 
				
			||||||
 | 
								helper.appendTo((o.appendTo === "parent" ? this.element[0].parentNode : o.appendTo)); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if(helper[0] !== this.element[0] && !(/(fixed|absolute)/).test(helper.css("position"))) { | 
				
			||||||
 | 
								helper.css("position", "absolute"); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return helper; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_adjustOffsetFromHelper: function(obj) { | 
				
			||||||
 | 
							if (typeof obj === "string") { | 
				
			||||||
 | 
								obj = obj.split(" "); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							if ($.isArray(obj)) { | 
				
			||||||
 | 
								obj = {left: +obj[0], top: +obj[1] || 0}; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							if ("left" in obj) { | 
				
			||||||
 | 
								this.offset.click.left = obj.left + this.margins.left; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							if ("right" in obj) { | 
				
			||||||
 | 
								this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							if ("top" in obj) { | 
				
			||||||
 | 
								this.offset.click.top = obj.top + this.margins.top; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							if ("bottom" in obj) { | 
				
			||||||
 | 
								this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_getParentOffset: function() { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Get the offsetParent and cache its position
 | 
				
			||||||
 | 
							var po = this.offsetParent.offset(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// This is a special case where we need to modify a offset calculated on start, since the following happened:
 | 
				
			||||||
 | 
							// 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent
 | 
				
			||||||
 | 
							// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that
 | 
				
			||||||
 | 
							//    the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag
 | 
				
			||||||
 | 
							if(this.cssPosition === "absolute" && this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) { | 
				
			||||||
 | 
								po.left += this.scrollParent.scrollLeft(); | 
				
			||||||
 | 
								po.top += this.scrollParent.scrollTop(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//This needs to be actually done for all browsers, since pageX/pageY includes this information
 | 
				
			||||||
 | 
							//Ugly IE fix
 | 
				
			||||||
 | 
							if((this.offsetParent[0] === document.body) || | 
				
			||||||
 | 
								(this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() === "html" && $.ui.ie)) { | 
				
			||||||
 | 
								po = { top: 0, left: 0 }; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return { | 
				
			||||||
 | 
								top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0), | 
				
			||||||
 | 
								left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10) || 0) | 
				
			||||||
 | 
							}; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_getRelativeOffset: function() { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if(this.cssPosition === "relative") { | 
				
			||||||
 | 
								var p = this.element.position(); | 
				
			||||||
 | 
								return { | 
				
			||||||
 | 
									top: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(), | 
				
			||||||
 | 
									left: p.left - (parseInt(this.helper.css("left"),10) || 0) + this.scrollParent.scrollLeft() | 
				
			||||||
 | 
								}; | 
				
			||||||
 | 
							} else { | 
				
			||||||
 | 
								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 over, c, ce, | 
				
			||||||
 | 
								o = this.options; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( !o.containment ) { | 
				
			||||||
 | 
								this.containment = null; | 
				
			||||||
 | 
								return; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( o.containment === "window" ) { | 
				
			||||||
 | 
								this.containment = [ | 
				
			||||||
 | 
									$( window ).scrollLeft() - this.offset.relative.left - this.offset.parent.left, | 
				
			||||||
 | 
									$( window ).scrollTop() - this.offset.relative.top - this.offset.parent.top, | 
				
			||||||
 | 
									$( window ).scrollLeft() + $( window ).width() - this.helperProportions.width - this.margins.left, | 
				
			||||||
 | 
									$( window ).scrollTop() + ( $( window ).height() || document.body.parentNode.scrollHeight ) - this.helperProportions.height - this.margins.top | 
				
			||||||
 | 
								]; | 
				
			||||||
 | 
								return; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( o.containment === "document") { | 
				
			||||||
 | 
								this.containment = [ | 
				
			||||||
 | 
									0, | 
				
			||||||
 | 
									0, | 
				
			||||||
 | 
									$( document ).width() - this.helperProportions.width - this.margins.left, | 
				
			||||||
 | 
									( $( document ).height() || document.body.parentNode.scrollHeight ) - this.helperProportions.height - this.margins.top | 
				
			||||||
 | 
								]; | 
				
			||||||
 | 
								return; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( o.containment.constructor === Array ) { | 
				
			||||||
 | 
								this.containment = o.containment; | 
				
			||||||
 | 
								return; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( o.containment === "parent" ) { | 
				
			||||||
 | 
								o.containment = this.helper[ 0 ].parentNode; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							c = $( o.containment ); | 
				
			||||||
 | 
							ce = c[ 0 ]; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if( !ce ) { | 
				
			||||||
 | 
								return; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							over = c.css( "overflow" ) !== "hidden"; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this.containment = [ | 
				
			||||||
 | 
								( parseInt( c.css( "borderLeftWidth" ), 10 ) || 0 ) + ( parseInt( c.css( "paddingLeft" ), 10 ) || 0 ), | 
				
			||||||
 | 
								( parseInt( c.css( "borderTopWidth" ), 10 ) || 0 ) + ( parseInt( c.css( "paddingTop" ), 10 ) || 0 ) , | 
				
			||||||
 | 
								( over ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) - ( parseInt( c.css( "borderRightWidth" ), 10 ) || 0 ) - ( parseInt( c.css( "paddingRight" ), 10 ) || 0 ) - this.helperProportions.width - this.margins.left - this.margins.right, | 
				
			||||||
 | 
								( over ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) - ( parseInt( c.css( "borderBottomWidth" ), 10 ) || 0 ) - ( parseInt( c.css( "paddingBottom" ), 10 ) || 0 ) - this.helperProportions.height - this.margins.top  - this.margins.bottom | 
				
			||||||
 | 
							]; | 
				
			||||||
 | 
							this.relative_container = c; | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_convertPositionTo: function(d, pos) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if(!pos) { | 
				
			||||||
 | 
								pos = this.position; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							var mod = d === "absolute" ? 1 : -1, | 
				
			||||||
 | 
								scroll = this.cssPosition === "absolute" && !( this.scrollParent[ 0 ] !== document && $.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ? this.offsetParent : this.scrollParent; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Cache the scroll
 | 
				
			||||||
 | 
							if (!this.offset.scroll) { | 
				
			||||||
 | 
								this.offset.scroll = {top : scroll.scrollTop(), left : scroll.scrollLeft()}; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return { | 
				
			||||||
 | 
								top: ( | 
				
			||||||
 | 
									pos.top	+																// The absolute mouse position
 | 
				
			||||||
 | 
									this.offset.relative.top * mod +										// Only for relative positioned nodes: Relative offset from element to offset parent
 | 
				
			||||||
 | 
									this.offset.parent.top * mod -										// The offsetParent's offset without borders (offset + border)
 | 
				
			||||||
 | 
									( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : this.offset.scroll.top ) * mod ) | 
				
			||||||
 | 
								), | 
				
			||||||
 | 
								left: ( | 
				
			||||||
 | 
									pos.left +																// The absolute mouse position
 | 
				
			||||||
 | 
									this.offset.relative.left * mod +										// Only for relative positioned nodes: Relative offset from element to offset parent
 | 
				
			||||||
 | 
									this.offset.parent.left * mod	-										// The offsetParent's offset without borders (offset + border)
 | 
				
			||||||
 | 
									( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : this.offset.scroll.left ) * mod ) | 
				
			||||||
 | 
								) | 
				
			||||||
 | 
							}; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_generatePosition: function(event) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							var containment, co, top, left, | 
				
			||||||
 | 
								o = this.options, | 
				
			||||||
 | 
								scroll = this.cssPosition === "absolute" && !( this.scrollParent[ 0 ] !== document && $.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ? this.offsetParent : this.scrollParent, | 
				
			||||||
 | 
								pageX = event.pageX, | 
				
			||||||
 | 
								pageY = event.pageY; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Cache the scroll
 | 
				
			||||||
 | 
							if (!this.offset.scroll) { | 
				
			||||||
 | 
								this.offset.scroll = {top : scroll.scrollTop(), left : scroll.scrollLeft()}; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/* | 
				
			||||||
 | 
							 * - Position constraining - | 
				
			||||||
 | 
							 * Constrain the position to a mix of grid, containment. | 
				
			||||||
 | 
							 */ | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// If we are not dragging yet, we won't check for options
 | 
				
			||||||
 | 
							if ( this.originalPosition ) { | 
				
			||||||
 | 
								if ( this.containment ) { | 
				
			||||||
 | 
									if ( this.relative_container ){ | 
				
			||||||
 | 
										co = this.relative_container.offset(); | 
				
			||||||
 | 
										containment = [ | 
				
			||||||
 | 
											this.containment[ 0 ] + co.left, | 
				
			||||||
 | 
											this.containment[ 1 ] + co.top, | 
				
			||||||
 | 
											this.containment[ 2 ] + co.left, | 
				
			||||||
 | 
											this.containment[ 3 ] + co.top | 
				
			||||||
 | 
										]; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
									else { | 
				
			||||||
 | 
										containment = this.containment; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									if(event.pageX - this.offset.click.left < containment[0]) { | 
				
			||||||
 | 
										pageX = containment[0] + this.offset.click.left; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
									if(event.pageY - this.offset.click.top < containment[1]) { | 
				
			||||||
 | 
										pageY = containment[1] + this.offset.click.top; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
									if(event.pageX - this.offset.click.left > containment[2]) { | 
				
			||||||
 | 
										pageX = containment[2] + this.offset.click.left; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
									if(event.pageY - this.offset.click.top > containment[3]) { | 
				
			||||||
 | 
										pageY = containment[3] + this.offset.click.top; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if(o.grid) { | 
				
			||||||
 | 
									//Check for grid elements set to 0 to prevent divide by 0 error causing invalid argument errors in IE (see ticket #6950)
 | 
				
			||||||
 | 
									top = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY; | 
				
			||||||
 | 
									pageY = containment ? ((top - this.offset.click.top >= containment[1] || top - this.offset.click.top > containment[3]) ? top : ((top - this.offset.click.top >= containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									left = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX; | 
				
			||||||
 | 
									pageX = containment ? ((left - this.offset.click.left >= containment[0] || left - this.offset.click.left > containment[2]) ? left : ((left - this.offset.click.left >= containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left; | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return { | 
				
			||||||
 | 
								top: ( | 
				
			||||||
 | 
									pageY -																	// The absolute mouse position
 | 
				
			||||||
 | 
									this.offset.click.top	-												// Click offset (relative to the element)
 | 
				
			||||||
 | 
									this.offset.relative.top -												// Only for relative positioned nodes: Relative offset from element to offset parent
 | 
				
			||||||
 | 
									this.offset.parent.top +												// The offsetParent's offset without borders (offset + border)
 | 
				
			||||||
 | 
									( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : this.offset.scroll.top ) | 
				
			||||||
 | 
								), | 
				
			||||||
 | 
								left: ( | 
				
			||||||
 | 
									pageX -																	// The absolute mouse position
 | 
				
			||||||
 | 
									this.offset.click.left -												// Click offset (relative to the element)
 | 
				
			||||||
 | 
									this.offset.relative.left -												// Only for relative positioned nodes: Relative offset from element to offset parent
 | 
				
			||||||
 | 
									this.offset.parent.left +												// The offsetParent's offset without borders (offset + border)
 | 
				
			||||||
 | 
									( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : this.offset.scroll.left ) | 
				
			||||||
 | 
								) | 
				
			||||||
 | 
							}; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_clear: function() { | 
				
			||||||
 | 
							this.helper.removeClass("ui-draggable-dragging"); | 
				
			||||||
 | 
							if(this.helper[0] !== this.element[0] && !this.cancelHelperRemoval) { | 
				
			||||||
 | 
								this.helper.remove(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							this.helper = null; | 
				
			||||||
 | 
							this.cancelHelperRemoval = false; | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// From now on bulk stuff - mainly helpers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_trigger: function(type, event, ui) { | 
				
			||||||
 | 
							ui = ui || this._uiHash(); | 
				
			||||||
 | 
							$.ui.plugin.call(this, type, [event, ui]); | 
				
			||||||
 | 
							//The absolute position has to be recalculated after plugins
 | 
				
			||||||
 | 
							if(type === "drag") { | 
				
			||||||
 | 
								this.positionAbs = this._convertPositionTo("absolute"); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							return $.Widget.prototype._trigger.call(this, type, event, ui); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						plugins: {}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_uiHash: function() { | 
				
			||||||
 | 
							return { | 
				
			||||||
 | 
								helper: this.helper, | 
				
			||||||
 | 
								position: this.position, | 
				
			||||||
 | 
								originalPosition: this.originalPosition, | 
				
			||||||
 | 
								offset: this.positionAbs | 
				
			||||||
 | 
							}; | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$.ui.plugin.add("draggable", "connectToSortable", { | 
				
			||||||
 | 
						start: function(event, ui) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							var inst = $(this).data("ui-draggable"), o = inst.options, | 
				
			||||||
 | 
								uiSortable = $.extend({}, ui, { item: inst.element }); | 
				
			||||||
 | 
							inst.sortables = []; | 
				
			||||||
 | 
							$(o.connectToSortable).each(function() { | 
				
			||||||
 | 
								var sortable = $.data(this, "ui-sortable"); | 
				
			||||||
 | 
								if (sortable && !sortable.options.disabled) { | 
				
			||||||
 | 
									inst.sortables.push({ | 
				
			||||||
 | 
										instance: sortable, | 
				
			||||||
 | 
										shouldRevert: sortable.options.revert | 
				
			||||||
 | 
									}); | 
				
			||||||
 | 
									sortable.refreshPositions();	// Call the sortable's refreshPositions at drag start to refresh the containerCache since the sortable container cache is used in drag and needs to be up to date (this will ensure it's initialised as well as being kept in step with any changes that might have happened on the page).
 | 
				
			||||||
 | 
									sortable._trigger("activate", event, uiSortable); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
						stop: function(event, ui) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//If we are still over the sortable, we fake the stop event of the sortable, but also remove helper
 | 
				
			||||||
 | 
							var inst = $(this).data("ui-draggable"), | 
				
			||||||
 | 
								uiSortable = $.extend({}, ui, { item: inst.element }); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							$.each(inst.sortables, function() { | 
				
			||||||
 | 
								if(this.instance.isOver) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									this.instance.isOver = 0; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									inst.cancelHelperRemoval = true; //Don't remove the helper in the draggable instance
 | 
				
			||||||
 | 
									this.instance.cancelHelperRemoval = false; //Remove it in the sortable instance (so sortable plugins like revert still work)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									//The sortable revert is supported, and we have to set a temporary dropped variable on the draggable to support revert: "valid/invalid"
 | 
				
			||||||
 | 
									if(this.shouldRevert) { | 
				
			||||||
 | 
										this.instance.options.revert = this.shouldRevert; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									//Trigger the stop of the sortable
 | 
				
			||||||
 | 
									this.instance._mouseStop(event); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									this.instance.options.helper = this.instance.options._helper; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									//If the helper has been the original item, restore properties in the sortable
 | 
				
			||||||
 | 
									if(inst.options.helper === "original") { | 
				
			||||||
 | 
										this.instance.currentItem.css({ top: "auto", left: "auto" }); | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								} else { | 
				
			||||||
 | 
									this.instance.cancelHelperRemoval = false; //Remove the helper in the sortable instance
 | 
				
			||||||
 | 
									this.instance._trigger("deactivate", event, uiSortable); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
						drag: function(event, ui) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							var inst = $(this).data("ui-draggable"), that = this; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							$.each(inst.sortables, function() { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								var innermostIntersecting = false, | 
				
			||||||
 | 
									thisSortable = this; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								//Copy over some variables to allow calling the sortable's native _intersectsWith
 | 
				
			||||||
 | 
								this.instance.positionAbs = inst.positionAbs; | 
				
			||||||
 | 
								this.instance.helperProportions = inst.helperProportions; | 
				
			||||||
 | 
								this.instance.offset.click = inst.offset.click; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if(this.instance._intersectsWith(this.instance.containerCache)) { | 
				
			||||||
 | 
									innermostIntersecting = true; | 
				
			||||||
 | 
									$.each(inst.sortables, function () { | 
				
			||||||
 | 
										this.instance.positionAbs = inst.positionAbs; | 
				
			||||||
 | 
										this.instance.helperProportions = inst.helperProportions; | 
				
			||||||
 | 
										this.instance.offset.click = inst.offset.click; | 
				
			||||||
 | 
										if (this !== thisSortable && | 
				
			||||||
 | 
											this.instance._intersectsWith(this.instance.containerCache) && | 
				
			||||||
 | 
											$.contains(thisSortable.instance.element[0], this.instance.element[0]) | 
				
			||||||
 | 
										) { | 
				
			||||||
 | 
											innermostIntersecting = false; | 
				
			||||||
 | 
										} | 
				
			||||||
 | 
										return innermostIntersecting; | 
				
			||||||
 | 
									}); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if(innermostIntersecting) { | 
				
			||||||
 | 
									//If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once
 | 
				
			||||||
 | 
									if(!this.instance.isOver) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										this.instance.isOver = 1; | 
				
			||||||
 | 
										//Now we fake the start of dragging for the sortable instance,
 | 
				
			||||||
 | 
										//by cloning the list group item, appending it to the sortable and using it as inst.currentItem
 | 
				
			||||||
 | 
										//We can then fire the start event of the sortable with our passed browser event, and our own helper (so it doesn't create a new one)
 | 
				
			||||||
 | 
										this.instance.currentItem = $(that).clone().removeAttr("id").appendTo(this.instance.element).data("ui-sortable-item", true); | 
				
			||||||
 | 
										this.instance.options._helper = this.instance.options.helper; //Store helper option to later restore it
 | 
				
			||||||
 | 
										this.instance.options.helper = function() { return ui.helper[0]; }; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										event.target = this.instance.currentItem[0]; | 
				
			||||||
 | 
										this.instance._mouseCapture(event, true); | 
				
			||||||
 | 
										this.instance._mouseStart(event, true, true); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										//Because the browser event is way off the new appended portlet, we modify a couple of variables to reflect the changes
 | 
				
			||||||
 | 
										this.instance.offset.click.top = inst.offset.click.top; | 
				
			||||||
 | 
										this.instance.offset.click.left = inst.offset.click.left; | 
				
			||||||
 | 
										this.instance.offset.parent.left -= inst.offset.parent.left - this.instance.offset.parent.left; | 
				
			||||||
 | 
										this.instance.offset.parent.top -= inst.offset.parent.top - this.instance.offset.parent.top; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										inst._trigger("toSortable", event); | 
				
			||||||
 | 
										inst.dropped = this.instance.element; //draggable revert needs that
 | 
				
			||||||
 | 
										//hack so receive/update callbacks work (mostly)
 | 
				
			||||||
 | 
										inst.currentItem = inst.element; | 
				
			||||||
 | 
										this.instance.fromOutside = inst; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									//Provided we did all the previous steps, we can fire the drag event of the sortable on every draggable drag, when it intersects with the sortable
 | 
				
			||||||
 | 
									if(this.instance.currentItem) { | 
				
			||||||
 | 
										this.instance._mouseDrag(event); | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								} else { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									//If it doesn't intersect with the sortable, and it intersected before,
 | 
				
			||||||
 | 
									//we fake the drag stop of the sortable, but make sure it doesn't remove the helper by using cancelHelperRemoval
 | 
				
			||||||
 | 
									if(this.instance.isOver) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										this.instance.isOver = 0; | 
				
			||||||
 | 
										this.instance.cancelHelperRemoval = true; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										//Prevent reverting on this forced stop
 | 
				
			||||||
 | 
										this.instance.options.revert = false; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										// The out event needs to be triggered independently
 | 
				
			||||||
 | 
										this.instance._trigger("out", event, this.instance._uiHash(this.instance)); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										this.instance._mouseStop(event, true); | 
				
			||||||
 | 
										this.instance.options.helper = this.instance.options._helper; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										//Now we remove our currentItem, the list group clone again, and the placeholder, and animate the helper back to it's original size
 | 
				
			||||||
 | 
										this.instance.currentItem.remove(); | 
				
			||||||
 | 
										if(this.instance.placeholder) { | 
				
			||||||
 | 
											this.instance.placeholder.remove(); | 
				
			||||||
 | 
										} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										inst._trigger("fromSortable", event); | 
				
			||||||
 | 
										inst.dropped = false; //draggable revert needs that
 | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$.ui.plugin.add("draggable", "cursor", { | 
				
			||||||
 | 
						start: function() { | 
				
			||||||
 | 
							var t = $("body"), o = $(this).data("ui-draggable").options; | 
				
			||||||
 | 
							if (t.css("cursor")) { | 
				
			||||||
 | 
								o._cursor = t.css("cursor"); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							t.css("cursor", o.cursor); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
						stop: function() { | 
				
			||||||
 | 
							var o = $(this).data("ui-draggable").options; | 
				
			||||||
 | 
							if (o._cursor) { | 
				
			||||||
 | 
								$("body").css("cursor", o._cursor); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$.ui.plugin.add("draggable", "opacity", { | 
				
			||||||
 | 
						start: function(event, ui) { | 
				
			||||||
 | 
							var t = $(ui.helper), o = $(this).data("ui-draggable").options; | 
				
			||||||
 | 
							if(t.css("opacity")) { | 
				
			||||||
 | 
								o._opacity = t.css("opacity"); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							t.css("opacity", o.opacity); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
						stop: function(event, ui) { | 
				
			||||||
 | 
							var o = $(this).data("ui-draggable").options; | 
				
			||||||
 | 
							if(o._opacity) { | 
				
			||||||
 | 
								$(ui.helper).css("opacity", o._opacity); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$.ui.plugin.add("draggable", "scroll", { | 
				
			||||||
 | 
						start: function() { | 
				
			||||||
 | 
							var i = $(this).data("ui-draggable"); | 
				
			||||||
 | 
							if(i.scrollParent[0] !== document && i.scrollParent[0].tagName !== "HTML") { | 
				
			||||||
 | 
								i.overflowOffset = i.scrollParent.offset(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
						drag: function( event ) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							var i = $(this).data("ui-draggable"), o = i.options, scrolled = false; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if(i.scrollParent[0] !== document && i.scrollParent[0].tagName !== "HTML") { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if(!o.axis || o.axis !== "x") { | 
				
			||||||
 | 
									if((i.overflowOffset.top + i.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) { | 
				
			||||||
 | 
										i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop + o.scrollSpeed; | 
				
			||||||
 | 
									} else if(event.pageY - i.overflowOffset.top < o.scrollSensitivity) { | 
				
			||||||
 | 
										i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop - o.scrollSpeed; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if(!o.axis || o.axis !== "y") { | 
				
			||||||
 | 
									if((i.overflowOffset.left + i.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) { | 
				
			||||||
 | 
										i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft + o.scrollSpeed; | 
				
			||||||
 | 
									} else if(event.pageX - i.overflowOffset.left < o.scrollSensitivity) { | 
				
			||||||
 | 
										i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft - o.scrollSpeed; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							} else { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if(!o.axis || o.axis !== "x") { | 
				
			||||||
 | 
									if(event.pageY - $(document).scrollTop() < o.scrollSensitivity) { | 
				
			||||||
 | 
										scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed); | 
				
			||||||
 | 
									} else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) { | 
				
			||||||
 | 
										scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed); | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if(!o.axis || o.axis !== "y") { | 
				
			||||||
 | 
									if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity) { | 
				
			||||||
 | 
										scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed); | 
				
			||||||
 | 
									} else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) { | 
				
			||||||
 | 
										scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed); | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) { | 
				
			||||||
 | 
								$.ui.ddmanager.prepareOffsets(i, event); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$.ui.plugin.add("draggable", "snap", { | 
				
			||||||
 | 
						start: function() { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							var i = $(this).data("ui-draggable"), | 
				
			||||||
 | 
								o = i.options; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							i.snapElements = []; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							$(o.snap.constructor !== String ? ( o.snap.items || ":data(ui-draggable)" ) : o.snap).each(function() { | 
				
			||||||
 | 
								var $t = $(this), | 
				
			||||||
 | 
									$o = $t.offset(); | 
				
			||||||
 | 
								if(this !== i.element[0]) { | 
				
			||||||
 | 
									i.snapElements.push({ | 
				
			||||||
 | 
										item: this, | 
				
			||||||
 | 
										width: $t.outerWidth(), height: $t.outerHeight(), | 
				
			||||||
 | 
										top: $o.top, left: $o.left | 
				
			||||||
 | 
									}); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
						drag: function(event, ui) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							var ts, bs, ls, rs, l, r, t, b, i, first, | 
				
			||||||
 | 
								inst = $(this).data("ui-draggable"), | 
				
			||||||
 | 
								o = inst.options, | 
				
			||||||
 | 
								d = o.snapTolerance, | 
				
			||||||
 | 
								x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width, | 
				
			||||||
 | 
								y1 = ui.offset.top, y2 = y1 + inst.helperProportions.height; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							for (i = inst.snapElements.length - 1; i >= 0; i--){ | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								l = inst.snapElements[i].left; | 
				
			||||||
 | 
								r = l + inst.snapElements[i].width; | 
				
			||||||
 | 
								t = inst.snapElements[i].top; | 
				
			||||||
 | 
								b = t + inst.snapElements[i].height; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if ( x2 < l - d || x1 > r + d || y2 < t - d || y1 > b + d || !$.contains( inst.snapElements[ i ].item.ownerDocument, inst.snapElements[ i ].item ) ) { | 
				
			||||||
 | 
									if(inst.snapElements[i].snapping) { | 
				
			||||||
 | 
										(inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item }))); | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
									inst.snapElements[i].snapping = false; | 
				
			||||||
 | 
									continue; | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if(o.snapMode !== "inner") { | 
				
			||||||
 | 
									ts = Math.abs(t - y2) <= d; | 
				
			||||||
 | 
									bs = Math.abs(b - y1) <= d; | 
				
			||||||
 | 
									ls = Math.abs(l - x2) <= d; | 
				
			||||||
 | 
									rs = Math.abs(r - x1) <= d; | 
				
			||||||
 | 
									if(ts) { | 
				
			||||||
 | 
										ui.position.top = inst._convertPositionTo("relative", { top: t - inst.helperProportions.height, left: 0 }).top - inst.margins.top; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
									if(bs) { | 
				
			||||||
 | 
										ui.position.top = inst._convertPositionTo("relative", { top: b, left: 0 }).top - inst.margins.top; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
									if(ls) { | 
				
			||||||
 | 
										ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l - inst.helperProportions.width }).left - inst.margins.left; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
									if(rs) { | 
				
			||||||
 | 
										ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r }).left - inst.margins.left; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								first = (ts || bs || ls || rs); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if(o.snapMode !== "outer") { | 
				
			||||||
 | 
									ts = Math.abs(t - y1) <= d; | 
				
			||||||
 | 
									bs = Math.abs(b - y2) <= d; | 
				
			||||||
 | 
									ls = Math.abs(l - x1) <= d; | 
				
			||||||
 | 
									rs = Math.abs(r - x2) <= d; | 
				
			||||||
 | 
									if(ts) { | 
				
			||||||
 | 
										ui.position.top = inst._convertPositionTo("relative", { top: t, left: 0 }).top - inst.margins.top; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
									if(bs) { | 
				
			||||||
 | 
										ui.position.top = inst._convertPositionTo("relative", { top: b - inst.helperProportions.height, left: 0 }).top - inst.margins.top; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
									if(ls) { | 
				
			||||||
 | 
										ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l }).left - inst.margins.left; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
									if(rs) { | 
				
			||||||
 | 
										ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r - inst.helperProportions.width }).left - inst.margins.left; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if(!inst.snapElements[i].snapping && (ts || bs || ls || rs || first)) { | 
				
			||||||
 | 
									(inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item }))); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
								inst.snapElements[i].snapping = (ts || bs || ls || rs || first); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$.ui.plugin.add("draggable", "stack", { | 
				
			||||||
 | 
						start: function() { | 
				
			||||||
 | 
							var min, | 
				
			||||||
 | 
								o = this.data("ui-draggable").options, | 
				
			||||||
 | 
								group = $.makeArray($(o.stack)).sort(function(a,b) { | 
				
			||||||
 | 
									return (parseInt($(a).css("zIndex"),10) || 0) - (parseInt($(b).css("zIndex"),10) || 0); | 
				
			||||||
 | 
								}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (!group.length) { return; } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							min = parseInt($(group[0]).css("zIndex"), 10) || 0; | 
				
			||||||
 | 
							$(group).each(function(i) { | 
				
			||||||
 | 
								$(this).css("zIndex", min + i); | 
				
			||||||
 | 
							}); | 
				
			||||||
 | 
							this.css("zIndex", (min + group.length)); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$.ui.plugin.add("draggable", "zIndex", { | 
				
			||||||
 | 
						start: function(event, ui) { | 
				
			||||||
 | 
							var t = $(ui.helper), o = $(this).data("ui-draggable").options; | 
				
			||||||
 | 
							if(t.css("zIndex")) { | 
				
			||||||
 | 
								o._zIndex = t.css("zIndex"); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							t.css("zIndex", o.zIndex); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
						stop: function(event, ui) { | 
				
			||||||
 | 
							var o = $(this).data("ui-draggable").options; | 
				
			||||||
 | 
							if(o._zIndex) { | 
				
			||||||
 | 
								$(ui.helper).css("zIndex", o._zIndex); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					})(jQuery); | 
				
			||||||
@ -0,0 +1,372 @@ | 
				
			|||||||
 | 
					/*! | 
				
			||||||
 | 
					 * jQuery UI Droppable 1.10.3 | 
				
			||||||
 | 
					 * http://jqueryui.com
 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * Copyright 2013 jQuery Foundation and other contributors | 
				
			||||||
 | 
					 * Released under the MIT license. | 
				
			||||||
 | 
					 * http://jquery.org/license
 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * http://api.jqueryui.com/droppable/
 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * Depends: | 
				
			||||||
 | 
					 *	jquery.ui.core.js | 
				
			||||||
 | 
					 *	jquery.ui.widget.js | 
				
			||||||
 | 
					 *	jquery.ui.mouse.js | 
				
			||||||
 | 
					 *	jquery.ui.draggable.js | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					(function( $, undefined ) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function isOverAxis( x, reference, size ) { | 
				
			||||||
 | 
						return ( x > reference ) && ( x < ( reference + size ) ); | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$.widget("ui.droppable", { | 
				
			||||||
 | 
						version: "1.10.3", | 
				
			||||||
 | 
						widgetEventPrefix: "drop", | 
				
			||||||
 | 
						options: { | 
				
			||||||
 | 
							accept: "*", | 
				
			||||||
 | 
							activeClass: false, | 
				
			||||||
 | 
							addClasses: true, | 
				
			||||||
 | 
							greedy: false, | 
				
			||||||
 | 
							hoverClass: false, | 
				
			||||||
 | 
							scope: "default", | 
				
			||||||
 | 
							tolerance: "intersect", | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// callbacks
 | 
				
			||||||
 | 
							activate: null, | 
				
			||||||
 | 
							deactivate: null, | 
				
			||||||
 | 
							drop: null, | 
				
			||||||
 | 
							out: null, | 
				
			||||||
 | 
							over: null | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
						_create: function() { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							var o = this.options, | 
				
			||||||
 | 
								accept = o.accept; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this.isover = false; | 
				
			||||||
 | 
							this.isout = true; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this.accept = $.isFunction(accept) ? accept : function(d) { | 
				
			||||||
 | 
								return d.is(accept); | 
				
			||||||
 | 
							}; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Store the droppable's proportions
 | 
				
			||||||
 | 
							this.proportions = { width: this.element[0].offsetWidth, height: this.element[0].offsetHeight }; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Add the reference and positions to the manager
 | 
				
			||||||
 | 
							$.ui.ddmanager.droppables[o.scope] = $.ui.ddmanager.droppables[o.scope] || []; | 
				
			||||||
 | 
							$.ui.ddmanager.droppables[o.scope].push(this); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							(o.addClasses && this.element.addClass("ui-droppable")); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_destroy: function() { | 
				
			||||||
 | 
							var i = 0, | 
				
			||||||
 | 
								drop = $.ui.ddmanager.droppables[this.options.scope]; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							for ( ; i < drop.length; i++ ) { | 
				
			||||||
 | 
								if ( drop[i] === this ) { | 
				
			||||||
 | 
									drop.splice(i, 1); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this.element.removeClass("ui-droppable ui-droppable-disabled"); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_setOption: function(key, value) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if(key === "accept") { | 
				
			||||||
 | 
								this.accept = $.isFunction(value) ? value : function(d) { | 
				
			||||||
 | 
									return d.is(value); | 
				
			||||||
 | 
								}; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							$.Widget.prototype._setOption.apply(this, arguments); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_activate: function(event) { | 
				
			||||||
 | 
							var draggable = $.ui.ddmanager.current; | 
				
			||||||
 | 
							if(this.options.activeClass) { | 
				
			||||||
 | 
								this.element.addClass(this.options.activeClass); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							if(draggable){ | 
				
			||||||
 | 
								this._trigger("activate", event, this.ui(draggable)); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_deactivate: function(event) { | 
				
			||||||
 | 
							var draggable = $.ui.ddmanager.current; | 
				
			||||||
 | 
							if(this.options.activeClass) { | 
				
			||||||
 | 
								this.element.removeClass(this.options.activeClass); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							if(draggable){ | 
				
			||||||
 | 
								this._trigger("deactivate", event, this.ui(draggable)); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_over: function(event) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							var draggable = $.ui.ddmanager.current; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Bail if draggable and droppable are same element
 | 
				
			||||||
 | 
							if (!draggable || (draggable.currentItem || draggable.element)[0] === this.element[0]) { | 
				
			||||||
 | 
								return; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) { | 
				
			||||||
 | 
								if(this.options.hoverClass) { | 
				
			||||||
 | 
									this.element.addClass(this.options.hoverClass); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
								this._trigger("over", event, this.ui(draggable)); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_out: function(event) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							var draggable = $.ui.ddmanager.current; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Bail if draggable and droppable are same element
 | 
				
			||||||
 | 
							if (!draggable || (draggable.currentItem || draggable.element)[0] === this.element[0]) { | 
				
			||||||
 | 
								return; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) { | 
				
			||||||
 | 
								if(this.options.hoverClass) { | 
				
			||||||
 | 
									this.element.removeClass(this.options.hoverClass); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
								this._trigger("out", event, this.ui(draggable)); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_drop: function(event,custom) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							var draggable = custom || $.ui.ddmanager.current, | 
				
			||||||
 | 
								childrenIntersection = false; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Bail if draggable and droppable are same element
 | 
				
			||||||
 | 
							if (!draggable || (draggable.currentItem || draggable.element)[0] === this.element[0]) { | 
				
			||||||
 | 
								return false; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function() { | 
				
			||||||
 | 
								var inst = $.data(this, "ui-droppable"); | 
				
			||||||
 | 
								if( | 
				
			||||||
 | 
									inst.options.greedy && | 
				
			||||||
 | 
									!inst.options.disabled && | 
				
			||||||
 | 
									inst.options.scope === draggable.options.scope && | 
				
			||||||
 | 
									inst.accept.call(inst.element[0], (draggable.currentItem || draggable.element)) && | 
				
			||||||
 | 
									$.ui.intersect(draggable, $.extend(inst, { offset: inst.element.offset() }), inst.options.tolerance) | 
				
			||||||
 | 
								) { childrenIntersection = true; return false; } | 
				
			||||||
 | 
							}); | 
				
			||||||
 | 
							if(childrenIntersection) { | 
				
			||||||
 | 
								return false; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if(this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) { | 
				
			||||||
 | 
								if(this.options.activeClass) { | 
				
			||||||
 | 
									this.element.removeClass(this.options.activeClass); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
								if(this.options.hoverClass) { | 
				
			||||||
 | 
									this.element.removeClass(this.options.hoverClass); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
								this._trigger("drop", event, this.ui(draggable)); | 
				
			||||||
 | 
								return this.element; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return false; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ui: function(c) { | 
				
			||||||
 | 
							return { | 
				
			||||||
 | 
								draggable: (c.currentItem || c.element), | 
				
			||||||
 | 
								helper: c.helper, | 
				
			||||||
 | 
								position: c.position, | 
				
			||||||
 | 
								offset: c.positionAbs | 
				
			||||||
 | 
							}; | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$.ui.intersect = function(draggable, droppable, toleranceMode) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (!droppable.offset) { | 
				
			||||||
 | 
							return false; | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var draggableLeft, draggableTop, | 
				
			||||||
 | 
							x1 = (draggable.positionAbs || draggable.position.absolute).left, x2 = x1 + draggable.helperProportions.width, | 
				
			||||||
 | 
							y1 = (draggable.positionAbs || draggable.position.absolute).top, y2 = y1 + draggable.helperProportions.height, | 
				
			||||||
 | 
							l = droppable.offset.left, r = l + droppable.proportions.width, | 
				
			||||||
 | 
							t = droppable.offset.top, b = t + droppable.proportions.height; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						switch (toleranceMode) { | 
				
			||||||
 | 
							case "fit": | 
				
			||||||
 | 
								return (l <= x1 && x2 <= r && t <= y1 && y2 <= b); | 
				
			||||||
 | 
							case "intersect": | 
				
			||||||
 | 
								return (l < x1 + (draggable.helperProportions.width / 2) && // Right Half
 | 
				
			||||||
 | 
									x2 - (draggable.helperProportions.width / 2) < r && // Left Half
 | 
				
			||||||
 | 
									t < y1 + (draggable.helperProportions.height / 2) && // Bottom Half
 | 
				
			||||||
 | 
									y2 - (draggable.helperProportions.height / 2) < b ); // Top Half
 | 
				
			||||||
 | 
							case "pointer": | 
				
			||||||
 | 
								draggableLeft = ((draggable.positionAbs || draggable.position.absolute).left + (draggable.clickOffset || draggable.offset.click).left); | 
				
			||||||
 | 
								draggableTop = ((draggable.positionAbs || draggable.position.absolute).top + (draggable.clickOffset || draggable.offset.click).top); | 
				
			||||||
 | 
								return isOverAxis( draggableTop, t, droppable.proportions.height ) && isOverAxis( draggableLeft, l, droppable.proportions.width ); | 
				
			||||||
 | 
							case "touch": | 
				
			||||||
 | 
								return ( | 
				
			||||||
 | 
									(y1 >= t && y1 <= b) ||	// Top edge touching
 | 
				
			||||||
 | 
									(y2 >= t && y2 <= b) ||	// Bottom edge touching
 | 
				
			||||||
 | 
									(y1 < t && y2 > b)		// Surrounded vertically
 | 
				
			||||||
 | 
								) && ( | 
				
			||||||
 | 
									(x1 >= l && x1 <= r) ||	// Left edge touching
 | 
				
			||||||
 | 
									(x2 >= l && x2 <= r) ||	// Right edge touching
 | 
				
			||||||
 | 
									(x1 < l && x2 > r)		// Surrounded horizontally
 | 
				
			||||||
 | 
								); | 
				
			||||||
 | 
							default: | 
				
			||||||
 | 
								return false; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* | 
				
			||||||
 | 
						This manager tracks offsets of draggables and droppables | 
				
			||||||
 | 
					*/ | 
				
			||||||
 | 
					$.ui.ddmanager = { | 
				
			||||||
 | 
						current: null, | 
				
			||||||
 | 
						droppables: { "default": [] }, | 
				
			||||||
 | 
						prepareOffsets: function(t, event) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							var i, j, | 
				
			||||||
 | 
								m = $.ui.ddmanager.droppables[t.options.scope] || [], | 
				
			||||||
 | 
								type = event ? event.type : null, // workaround for #2317
 | 
				
			||||||
 | 
								list = (t.currentItem || t.element).find(":data(ui-droppable)").addBack(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							droppablesLoop: for (i = 0; i < m.length; i++) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								//No disabled and non-accepted
 | 
				
			||||||
 | 
								if(m[i].options.disabled || (t && !m[i].accept.call(m[i].element[0],(t.currentItem || t.element)))) { | 
				
			||||||
 | 
									continue; | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// Filter out elements in the current dragged item
 | 
				
			||||||
 | 
								for (j=0; j < list.length; j++) { | 
				
			||||||
 | 
									if(list[j] === m[i].element[0]) { | 
				
			||||||
 | 
										m[i].proportions.height = 0; | 
				
			||||||
 | 
										continue droppablesLoop; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								m[i].visible = m[i].element.css("display") !== "none"; | 
				
			||||||
 | 
								if(!m[i].visible) { | 
				
			||||||
 | 
									continue; | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								//Activate the droppable if used directly from draggables
 | 
				
			||||||
 | 
								if(type === "mousedown") { | 
				
			||||||
 | 
									m[i]._activate.call(m[i], event); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								m[i].offset = m[i].element.offset(); | 
				
			||||||
 | 
								m[i].proportions = { width: m[i].element[0].offsetWidth, height: m[i].element[0].offsetHeight }; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
						drop: function(draggable, event) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							var dropped = false; | 
				
			||||||
 | 
							// Create a copy of the droppables in case the list changes during the drop (#9116)
 | 
				
			||||||
 | 
							$.each(($.ui.ddmanager.droppables[draggable.options.scope] || []).slice(), function() { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if(!this.options) { | 
				
			||||||
 | 
									return; | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
								if (!this.options.disabled && this.visible && $.ui.intersect(draggable, this, this.options.tolerance)) { | 
				
			||||||
 | 
									dropped = this._drop.call(this, event) || dropped; | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if (!this.options.disabled && this.visible && this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) { | 
				
			||||||
 | 
									this.isout = true; | 
				
			||||||
 | 
									this.isover = false; | 
				
			||||||
 | 
									this._deactivate.call(this, event); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							}); | 
				
			||||||
 | 
							return dropped; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
						dragStart: function( draggable, event ) { | 
				
			||||||
 | 
							//Listen for scrolling so that if the dragging causes scrolling the position of the droppables can be recalculated (see #5003)
 | 
				
			||||||
 | 
							draggable.element.parentsUntil( "body" ).bind( "scroll.droppable", function() { | 
				
			||||||
 | 
								if( !draggable.options.refreshPositions ) { | 
				
			||||||
 | 
									$.ui.ddmanager.prepareOffsets( draggable, event ); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							}); | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
						drag: function(draggable, event) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//If you have a highly dynamic page, you might try this option. It renders positions every time you move the mouse.
 | 
				
			||||||
 | 
							if(draggable.options.refreshPositions) { | 
				
			||||||
 | 
								$.ui.ddmanager.prepareOffsets(draggable, event); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Run through all droppables and check their positions based on specific tolerance options
 | 
				
			||||||
 | 
							$.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if(this.options.disabled || this.greedyChild || !this.visible) { | 
				
			||||||
 | 
									return; | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								var parentInstance, scope, parent, | 
				
			||||||
 | 
									intersects = $.ui.intersect(draggable, this, this.options.tolerance), | 
				
			||||||
 | 
									c = !intersects && this.isover ? "isout" : (intersects && !this.isover ? "isover" : null); | 
				
			||||||
 | 
								if(!c) { | 
				
			||||||
 | 
									return; | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if (this.options.greedy) { | 
				
			||||||
 | 
									// find droppable parents with same scope
 | 
				
			||||||
 | 
									scope = this.options.scope; | 
				
			||||||
 | 
									parent = this.element.parents(":data(ui-droppable)").filter(function () { | 
				
			||||||
 | 
										return $.data(this, "ui-droppable").options.scope === scope; | 
				
			||||||
 | 
									}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									if (parent.length) { | 
				
			||||||
 | 
										parentInstance = $.data(parent[0], "ui-droppable"); | 
				
			||||||
 | 
										parentInstance.greedyChild = (c === "isover"); | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// we just moved into a greedy child
 | 
				
			||||||
 | 
								if (parentInstance && c === "isover") { | 
				
			||||||
 | 
									parentInstance.isover = false; | 
				
			||||||
 | 
									parentInstance.isout = true; | 
				
			||||||
 | 
									parentInstance._out.call(parentInstance, event); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								this[c] = true; | 
				
			||||||
 | 
								this[c === "isout" ? "isover" : "isout"] = false; | 
				
			||||||
 | 
								this[c === "isover" ? "_over" : "_out"].call(this, event); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// we just moved out of a greedy child
 | 
				
			||||||
 | 
								if (parentInstance && c === "isout") { | 
				
			||||||
 | 
									parentInstance.isout = false; | 
				
			||||||
 | 
									parentInstance.isover = true; | 
				
			||||||
 | 
									parentInstance._over.call(parentInstance, event); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}, | 
				
			||||||
 | 
						dragStop: function( draggable, event ) { | 
				
			||||||
 | 
							draggable.element.parentsUntil( "body" ).unbind( "scroll.droppable" ); | 
				
			||||||
 | 
							//Call prepareOffsets one final time since IE does not fire return scroll events when overflow was caused by drag (see #5003)
 | 
				
			||||||
 | 
							if( !draggable.options.refreshPositions ) { | 
				
			||||||
 | 
								$.ui.ddmanager.prepareOffsets( draggable, event ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					}; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					})(jQuery); | 
				
			||||||
@ -0,0 +1,82 @@ | 
				
			|||||||
 | 
					/*! | 
				
			||||||
 | 
					 * jQuery UI Effects Blind 1.10.3 | 
				
			||||||
 | 
					 * http://jqueryui.com
 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * Copyright 2013 jQuery Foundation and other contributors | 
				
			||||||
 | 
					 * Released under the MIT license. | 
				
			||||||
 | 
					 * http://jquery.org/license
 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * http://api.jqueryui.com/blind-effect/
 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * Depends: | 
				
			||||||
 | 
					 *	jquery.ui.effect.js | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					(function( $, undefined ) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var rvertical = /up|down|vertical/, | 
				
			||||||
 | 
						rpositivemotion = /up|left|vertical|horizontal/; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$.effects.effect.blind = function( o, done ) { | 
				
			||||||
 | 
						// Create element
 | 
				
			||||||
 | 
						var el = $( this ), | 
				
			||||||
 | 
							props = [ "position", "top", "bottom", "left", "right", "height", "width" ], | 
				
			||||||
 | 
							mode = $.effects.setMode( el, o.mode || "hide" ), | 
				
			||||||
 | 
							direction = o.direction || "up", | 
				
			||||||
 | 
							vertical = rvertical.test( direction ), | 
				
			||||||
 | 
							ref = vertical ? "height" : "width", | 
				
			||||||
 | 
							ref2 = vertical ? "top" : "left", | 
				
			||||||
 | 
							motion = rpositivemotion.test( direction ), | 
				
			||||||
 | 
							animation = {}, | 
				
			||||||
 | 
							show = mode === "show", | 
				
			||||||
 | 
							wrapper, distance, margin; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// if already wrapped, the wrapper's properties are my property. #6245
 | 
				
			||||||
 | 
						if ( el.parent().is( ".ui-effects-wrapper" ) ) { | 
				
			||||||
 | 
							$.effects.save( el.parent(), props ); | 
				
			||||||
 | 
						} else { | 
				
			||||||
 | 
							$.effects.save( el, props ); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
						el.show(); | 
				
			||||||
 | 
						wrapper = $.effects.createWrapper( el ).css({ | 
				
			||||||
 | 
							overflow: "hidden" | 
				
			||||||
 | 
						}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						distance = wrapper[ ref ](); | 
				
			||||||
 | 
						margin = parseFloat( wrapper.css( ref2 ) ) || 0; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						animation[ ref ] = show ? distance : 0; | 
				
			||||||
 | 
						if ( !motion ) { | 
				
			||||||
 | 
							el | 
				
			||||||
 | 
								.css( vertical ? "bottom" : "right", 0 ) | 
				
			||||||
 | 
								.css( vertical ? "top" : "left", "auto" ) | 
				
			||||||
 | 
								.css({ position: "absolute" }); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							animation[ ref2 ] = show ? margin : distance + margin; | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// start at 0 if we are showing
 | 
				
			||||||
 | 
						if ( show ) { | 
				
			||||||
 | 
							wrapper.css( ref, 0 ); | 
				
			||||||
 | 
							if ( ! motion ) { | 
				
			||||||
 | 
								wrapper.css( ref2, margin + distance ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Animate
 | 
				
			||||||
 | 
						wrapper.animate( animation, { | 
				
			||||||
 | 
							duration: o.duration, | 
				
			||||||
 | 
							easing: o.easing, | 
				
			||||||
 | 
							queue: false, | 
				
			||||||
 | 
							complete: function() { | 
				
			||||||
 | 
								if ( mode === "hide" ) { | 
				
			||||||
 | 
									el.hide(); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
								$.effects.restore( el, props ); | 
				
			||||||
 | 
								$.effects.removeWrapper( el ); | 
				
			||||||
 | 
								done(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					})(jQuery); | 
				
			||||||
@ -0,0 +1,113 @@ | 
				
			|||||||
 | 
					/*! | 
				
			||||||
 | 
					 * jQuery UI Effects Bounce 1.10.3 | 
				
			||||||
 | 
					 * http://jqueryui.com
 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * Copyright 2013 jQuery Foundation and other contributors | 
				
			||||||
 | 
					 * Released under the MIT license. | 
				
			||||||
 | 
					 * http://jquery.org/license
 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * http://api.jqueryui.com/bounce-effect/
 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * Depends: | 
				
			||||||
 | 
					 *	jquery.ui.effect.js | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					(function( $, undefined ) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$.effects.effect.bounce = function( o, done ) { | 
				
			||||||
 | 
						var el = $( this ), | 
				
			||||||
 | 
							props = [ "position", "top", "bottom", "left", "right", "height", "width" ], | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// defaults:
 | 
				
			||||||
 | 
							mode = $.effects.setMode( el, o.mode || "effect" ), | 
				
			||||||
 | 
							hide = mode === "hide", | 
				
			||||||
 | 
							show = mode === "show", | 
				
			||||||
 | 
							direction = o.direction || "up", | 
				
			||||||
 | 
							distance = o.distance, | 
				
			||||||
 | 
							times = o.times || 5, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// number of internal animations
 | 
				
			||||||
 | 
							anims = times * 2 + ( show || hide ? 1 : 0 ), | 
				
			||||||
 | 
							speed = o.duration / anims, | 
				
			||||||
 | 
							easing = o.easing, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// utility:
 | 
				
			||||||
 | 
							ref = ( direction === "up" || direction === "down" ) ? "top" : "left", | 
				
			||||||
 | 
							motion = ( direction === "up" || direction === "left" ), | 
				
			||||||
 | 
							i, | 
				
			||||||
 | 
							upAnim, | 
				
			||||||
 | 
							downAnim, | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// we will need to re-assemble the queue to stack our animations in place
 | 
				
			||||||
 | 
							queue = el.queue(), | 
				
			||||||
 | 
							queuelen = queue.length; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Avoid touching opacity to prevent clearType and PNG issues in IE
 | 
				
			||||||
 | 
						if ( show || hide ) { | 
				
			||||||
 | 
							props.push( "opacity" ); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						$.effects.save( el, props ); | 
				
			||||||
 | 
						el.show(); | 
				
			||||||
 | 
						$.effects.createWrapper( el ); // Create Wrapper
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// default distance for the BIGGEST bounce is the outer Distance / 3
 | 
				
			||||||
 | 
						if ( !distance ) { | 
				
			||||||
 | 
							distance = el[ ref === "top" ? "outerHeight" : "outerWidth" ]() / 3; | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( show ) { | 
				
			||||||
 | 
							downAnim = { opacity: 1 }; | 
				
			||||||
 | 
							downAnim[ ref ] = 0; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// if we are showing, force opacity 0 and set the initial position
 | 
				
			||||||
 | 
							// then do the "first" animation
 | 
				
			||||||
 | 
							el.css( "opacity", 0 ) | 
				
			||||||
 | 
								.css( ref, motion ? -distance * 2 : distance * 2 ) | 
				
			||||||
 | 
								.animate( downAnim, speed, easing ); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// start at the smallest distance if we are hiding
 | 
				
			||||||
 | 
						if ( hide ) { | 
				
			||||||
 | 
							distance = distance / Math.pow( 2, times - 1 ); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						downAnim = {}; | 
				
			||||||
 | 
						downAnim[ ref ] = 0; | 
				
			||||||
 | 
						// Bounces up/down/left/right then back to 0 -- times * 2 animations happen here
 | 
				
			||||||
 | 
						for ( i = 0; i < times; i++ ) { | 
				
			||||||
 | 
							upAnim = {}; | 
				
			||||||
 | 
							upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							el.animate( upAnim, speed, easing ) | 
				
			||||||
 | 
								.animate( downAnim, speed, easing ); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							distance = hide ? distance * 2 : distance / 2; | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Last Bounce when Hiding
 | 
				
			||||||
 | 
						if ( hide ) { | 
				
			||||||
 | 
							upAnim = { opacity: 0 }; | 
				
			||||||
 | 
							upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							el.animate( upAnim, speed, easing ); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						el.queue(function() { | 
				
			||||||
 | 
							if ( hide ) { | 
				
			||||||
 | 
								el.hide(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							$.effects.restore( el, props ); | 
				
			||||||
 | 
							$.effects.removeWrapper( el ); | 
				
			||||||
 | 
							done(); | 
				
			||||||
 | 
						}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// inject all the animations we just queued to be first in line (after "inprogress")
 | 
				
			||||||
 | 
						if ( queuelen > 1) { | 
				
			||||||
 | 
							queue.splice.apply( queue, | 
				
			||||||
 | 
								[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) ); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
						el.dequeue(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					})(jQuery); | 
				
			||||||
@ -0,0 +1,67 @@ | 
				
			|||||||
 | 
					/*! | 
				
			||||||
 | 
					 * jQuery UI Effects Clip 1.10.3 | 
				
			||||||
 | 
					 * http://jqueryui.com
 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * Copyright 2013 jQuery Foundation and other contributors | 
				
			||||||
 | 
					 * Released under the MIT license. | 
				
			||||||
 | 
					 * http://jquery.org/license
 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * http://api.jqueryui.com/clip-effect/
 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * Depends: | 
				
			||||||
 | 
					 *	jquery.ui.effect.js | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					(function( $, undefined ) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$.effects.effect.clip = function( o, done ) { | 
				
			||||||
 | 
						// Create element
 | 
				
			||||||
 | 
						var el = $( this ), | 
				
			||||||
 | 
							props = [ "position", "top", "bottom", "left", "right", "height", "width" ], | 
				
			||||||
 | 
							mode = $.effects.setMode( el, o.mode || "hide" ), | 
				
			||||||
 | 
							show = mode === "show", | 
				
			||||||
 | 
							direction = o.direction || "vertical", | 
				
			||||||
 | 
							vert = direction === "vertical", | 
				
			||||||
 | 
							size = vert ? "height" : "width", | 
				
			||||||
 | 
							position = vert ? "top" : "left", | 
				
			||||||
 | 
							animation = {}, | 
				
			||||||
 | 
							wrapper, animate, distance; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Save & Show
 | 
				
			||||||
 | 
						$.effects.save( el, props ); | 
				
			||||||
 | 
						el.show(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Create Wrapper
 | 
				
			||||||
 | 
						wrapper = $.effects.createWrapper( el ).css({ | 
				
			||||||
 | 
							overflow: "hidden" | 
				
			||||||
 | 
						}); | 
				
			||||||
 | 
						animate = ( el[0].tagName === "IMG" ) ? wrapper : el; | 
				
			||||||
 | 
						distance = animate[ size ](); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Shift
 | 
				
			||||||
 | 
						if ( show ) { | 
				
			||||||
 | 
							animate.css( size, 0 ); | 
				
			||||||
 | 
							animate.css( position, distance / 2 ); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Create Animation Object:
 | 
				
			||||||
 | 
						animation[ size ] = show ? distance : 0; | 
				
			||||||
 | 
						animation[ position ] = show ? 0 : distance / 2; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Animate
 | 
				
			||||||
 | 
						animate.animate( animation, { | 
				
			||||||
 | 
							queue: false, | 
				
			||||||
 | 
							duration: o.duration, | 
				
			||||||
 | 
							easing: o.easing, | 
				
			||||||
 | 
							complete: function() { | 
				
			||||||
 | 
								if ( !show ) { | 
				
			||||||
 | 
									el.hide(); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
								$.effects.restore( el, props ); | 
				
			||||||
 | 
								$.effects.removeWrapper( el ); | 
				
			||||||
 | 
								done(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					})(jQuery); | 
				
			||||||
@ -0,0 +1,65 @@ | 
				
			|||||||
 | 
					/*! | 
				
			||||||
 | 
					 * jQuery UI Effects Drop 1.10.3 | 
				
			||||||
 | 
					 * http://jqueryui.com
 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * Copyright 2013 jQuery Foundation and other contributors | 
				
			||||||
 | 
					 * Released under the MIT license. | 
				
			||||||
 | 
					 * http://jquery.org/license
 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * http://api.jqueryui.com/drop-effect/
 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * Depends: | 
				
			||||||
 | 
					 *	jquery.ui.effect.js | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					(function( $, undefined ) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$.effects.effect.drop = function( o, done ) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var el = $( this ), | 
				
			||||||
 | 
							props = [ "position", "top", "bottom", "left", "right", "opacity", "height", "width" ], | 
				
			||||||
 | 
							mode = $.effects.setMode( el, o.mode || "hide" ), | 
				
			||||||
 | 
							show = mode === "show", | 
				
			||||||
 | 
							direction = o.direction || "left", | 
				
			||||||
 | 
							ref = ( direction === "up" || direction === "down" ) ? "top" : "left", | 
				
			||||||
 | 
							motion = ( direction === "up" || direction === "left" ) ? "pos" : "neg", | 
				
			||||||
 | 
							animation = { | 
				
			||||||
 | 
								opacity: show ? 1 : 0 | 
				
			||||||
 | 
							}, | 
				
			||||||
 | 
							distance; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Adjust
 | 
				
			||||||
 | 
						$.effects.save( el, props ); | 
				
			||||||
 | 
						el.show(); | 
				
			||||||
 | 
						$.effects.createWrapper( el ); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						distance = o.distance || el[ ref === "top" ? "outerHeight": "outerWidth" ]( true ) / 2; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( show ) { | 
				
			||||||
 | 
							el | 
				
			||||||
 | 
								.css( "opacity", 0 ) | 
				
			||||||
 | 
								.css( ref, motion === "pos" ? -distance : distance ); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Animation
 | 
				
			||||||
 | 
						animation[ ref ] = ( show ? | 
				
			||||||
 | 
							( motion === "pos" ? "+=" : "-=" ) : | 
				
			||||||
 | 
							( motion === "pos" ? "-=" : "+=" ) ) + | 
				
			||||||
 | 
							distance; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Animate
 | 
				
			||||||
 | 
						el.animate( animation, { | 
				
			||||||
 | 
							queue: false, | 
				
			||||||
 | 
							duration: o.duration, | 
				
			||||||
 | 
							easing: o.easing, | 
				
			||||||
 | 
							complete: function() { | 
				
			||||||
 | 
								if ( mode === "hide" ) { | 
				
			||||||
 | 
									el.hide(); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
								$.effects.restore( el, props ); | 
				
			||||||
 | 
								$.effects.removeWrapper( el ); | 
				
			||||||
 | 
								done(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						}); | 
				
			||||||
 | 
					}; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					})(jQuery); | 
				
			||||||
@ -0,0 +1,97 @@ | 
				
			|||||||
 | 
					/*! | 
				
			||||||
 | 
					 * jQuery UI Effects Explode 1.10.3 | 
				
			||||||
 | 
					 * http://jqueryui.com
 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * Copyright 2013 jQuery Foundation and other contributors | 
				
			||||||
 | 
					 * Released under the MIT license. | 
				
			||||||
 | 
					 * http://jquery.org/license
 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * http://api.jqueryui.com/explode-effect/
 | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * Depends: | 
				
			||||||
 | 
					 *	jquery.ui.effect.js | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					(function( $, undefined ) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$.effects.effect.explode = function( o, done ) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var rows = o.pieces ? Math.round( Math.sqrt( o.pieces ) ) : 3, | 
				
			||||||
 | 
							cells = rows, | 
				
			||||||
 | 
							el = $( this ), | 
				
			||||||
 | 
							mode = $.effects.setMode( el, o.mode || "hide" ), | 
				
			||||||
 | 
							show = mode === "show", | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// show and then visibility:hidden the element before calculating offset
 | 
				
			||||||
 | 
							offset = el.show().css( "visibility", "hidden" ).offset(), | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// width and height of a piece
 | 
				
			||||||
 | 
							width = Math.ceil( el.outerWidth() / cells ), | 
				
			||||||
 | 
							height = Math.ceil( el.outerHeight() / rows ), | 
				
			||||||
 | 
							pieces = [], | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// loop
 | 
				
			||||||
 | 
							i, j, left, top, mx, my; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// children animate complete:
 | 
				
			||||||
 | 
						function childComplete() { | 
				
			||||||
 | 
							pieces.push( this ); | 
				
			||||||
 | 
							if ( pieces.length === rows * cells ) { | 
				
			||||||
 | 
								animComplete(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// clone the element for each row and cell.
 | 
				
			||||||
 | 
						for( i = 0; i < rows ; i++ ) { // ===>
 | 
				
			||||||
 | 
							top = offset.top + i * height; | 
				
			||||||
 | 
							my = i - ( rows - 1 ) / 2 ; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							for( j = 0; j < cells ; j++ ) { // |||
 | 
				
			||||||
 | 
								left = offset.left + j * width; | 
				
			||||||
 | 
								mx = j - ( cells - 1 ) / 2 ; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// Create a clone of the now hidden main element that will be absolute positioned
 | 
				
			||||||
 | 
								// within a wrapper div off the -left and -top equal to size of our pieces
 | 
				
			||||||
 | 
								el | 
				
			||||||
 | 
									.clone() | 
				
			||||||
 | 
									.appendTo( "body" ) | 
				
			||||||
 | 
									.wrap( "<div></div>" ) | 
				
			||||||
 | 
									.css({ | 
				
			||||||
 | 
										position: "absolute", | 
				
			||||||
 | 
										visibility: "visible", | 
				
			||||||
 | 
										left: -j * width, | 
				
			||||||
 | 
										top: -i * height | 
				
			||||||
 | 
									}) | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// select the wrapper - make it overflow: hidden and absolute positioned based on
 | 
				
			||||||
 | 
								// where the original was located +left and +top equal to the size of pieces
 | 
				
			||||||
 | 
									.parent() | 
				
			||||||
 | 
									.addClass( "ui-effects-explode" ) | 
				
			||||||
 | 
									.css({ | 
				
			||||||
 | 
										position: "absolute", | 
				
			||||||
 | 
										overflow: "hidden", | 
				
			||||||
 | 
										width: width, | 
				
			||||||
 | 
										height: height, | 
				
			||||||
 | 
										left: left + ( show ? mx * width : 0 ), | 
				
			||||||
 | 
										top: top + ( show ? my * height : 0 ), | 
				
			||||||
 | 
										opacity: show ? 0 : 1 | 
				
			||||||
 | 
									}).animate({ | 
				
			||||||
 | 
										left: left + ( show ? 0 : mx * width ), | 
				
			||||||
 | 
										top: top + ( show ? 0 : my * height ), | 
				
			||||||
 | 
										opacity: show ? 1 : 0 | 
				
			||||||
 | 
									}, o.duration || 500, o.easing, childComplete ); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						function animComplete() { | 
				
			||||||
 | 
							el.css({ | 
				
			||||||
 | 
								visibility: "visible" | 
				
			||||||
 | 
							}); | 
				
			||||||
 | 
							$( pieces ).remove(); | 
				
			||||||
 | 
							if ( !show ) { | 
				
			||||||
 | 
								el.hide(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							done(); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					}; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					})(jQuery); | 
				
			||||||
Some files were not shown because too many files have changed in this diff Show More
					Loading…
					
					
				
		Reference in new issue